You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
294 lines
9.5 KiB
294 lines
9.5 KiB
//
|
|
// C++ Implementation:
|
|
//
|
|
// Description:
|
|
//
|
|
//
|
|
// Author: Christian Hubinger <chubinger@irrsinnig.org>, (C) 2007
|
|
//
|
|
// Copyright: See COPYING file that comes with this distribution
|
|
//
|
|
//
|
|
|
|
|
|
#include "kmfnethostpropertieswidget.h"
|
|
|
|
// QT includes
|
|
#include <tqlistview.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqspinbox.h>
|
|
#include <tqcombobox.h>
|
|
#include <tqlabel.h>
|
|
#include <tqlayout.h>
|
|
#include <tqgroupbox.h>
|
|
#include <tqwidgetstack.h>
|
|
#include <tqtextedit.h>
|
|
#include <tqframe.h>
|
|
|
|
// KDE includes
|
|
#include <kdebug.h>
|
|
#include <klocale.h>
|
|
#include <klistview.h>
|
|
#include <kcombobox.h>
|
|
#include <kpopupmenu.h>
|
|
#include <kiconloader.h>
|
|
#include <kinputdialog.h>
|
|
#include <knuminput.h>
|
|
|
|
// Project Includes
|
|
#include "../core/kmftarget.h"
|
|
#include "../core/ipaddress.h"
|
|
#include "../core/kmfnethost.h"
|
|
#include "../core/kmfnetzone.h"
|
|
#include "../core/kmfundoengine.h"
|
|
|
|
#include "kmfipv4addresswidget.h"
|
|
namespace KMF {
|
|
KMFNetHostPropertiesWidget::KMFNetHostPropertiesWidget ( TQWidget* parent, const char* name, WFlags fl )
|
|
: KMyFirewallNetHostProperties ( parent,name,fl ) {
|
|
|
|
m_address_widget = new KMFIPv4AddressWidget( m_frameAddress, "m_address_widget" );
|
|
|
|
connect( m_address_widget, TQT_SIGNAL( sigAddressChanged( int, int, int, int ) ),
|
|
this,TQT_SLOT( slotAddressChanged( int, int, int, int ) ) );
|
|
|
|
connect( m_cb_host_limit, TQT_SIGNAL( toggled( bool ) ),
|
|
this, TQT_SLOT( slotHostLimitToggled( bool ) ) );
|
|
|
|
connect( m_sb_host_rate, TQT_SIGNAL( valueChanged( int ) ),
|
|
this, TQT_SLOT( slotHostLimitValueChanged( int ) ) );
|
|
|
|
connect( m_cb_limit_host_interval, TQT_SIGNAL( activated( int ) ),
|
|
this, TQT_SLOT( slotHostLimitScaleChanged( int ) ) );
|
|
|
|
connect( m_cb_host_log, TQT_SIGNAL( toggled( bool ) ),
|
|
this, TQT_SLOT( slotHostLogToggled( bool ) ) );
|
|
|
|
connect( m_host_desc, TQT_SIGNAL( textChanged() ),
|
|
this, TQT_SLOT( slotDescriptionChanged() ) );
|
|
|
|
TQGridLayout *grid = new TQGridLayout( m_frameAddress, 1, 1 );
|
|
grid->addWidget( m_address_widget, 0, 0 );
|
|
m_frameAddress->adjustSize();
|
|
adjustSize();
|
|
}
|
|
|
|
KMFNetHostPropertiesWidget::~KMFNetHostPropertiesWidget() {}
|
|
|
|
void KMFNetHostPropertiesWidget::blockAllSignals( bool onoff ) {
|
|
m_cb_limit_host_interval->blockSignals( onoff );
|
|
m_cb_host_limit->blockSignals( onoff );
|
|
m_sb_host_rate->blockSignals( onoff );
|
|
m_host_desc->blockSignals( onoff );
|
|
}
|
|
|
|
void KMFNetHostPropertiesWidget::slotHostDeleted() {
|
|
setEnabled( false );
|
|
m_host = 0;
|
|
}
|
|
|
|
void KMFNetHostPropertiesWidget::loadHost( KMFNetHost* host ) {
|
|
kdDebug() << "KMFNetHostPropertiesWidget::loadTarget( KMFNetHost* host " << endl;
|
|
if ( ! host ) {
|
|
return;
|
|
}
|
|
|
|
if ( m_host ) {
|
|
disconnect( m_host, TQT_SIGNAL( destroyed() ),
|
|
this,TQT_SLOT( slotHostDeleted() ) );
|
|
}
|
|
|
|
m_host = host;
|
|
connect( m_host, TQT_SIGNAL( destroyed() ),
|
|
this,TQT_SLOT( slotHostDeleted() ) );
|
|
blockAllSignals( true );
|
|
setEnabled( true );
|
|
m_address_widget->loadIPAddress(
|
|
m_host->address()->getDigit( 0 ),
|
|
m_host->address()->getDigit( 1 ),
|
|
m_host->address()->getDigit( 2 ),
|
|
m_host->address()->getDigit( 3 )
|
|
);
|
|
if ( m_host->limit() ) {
|
|
m_cb_host_limit->setChecked( true );
|
|
m_sb_host_rate->setEnabled( true );
|
|
m_cb_limit_host_interval->setEnabled( true );
|
|
m_sb_host_rate->setValue( m_host->limitRate() );
|
|
kdDebug() << "Found host log scale: " << m_host->limitScale() << endl;
|
|
|
|
m_cb_limit_host_interval->blockSignals( true );
|
|
if ( m_host->limitScale() == "second" ) {
|
|
m_cb_limit_host_interval->setCurrentItem( 0 );
|
|
} else if ( m_host->limitScale() == "minute" ) {
|
|
m_cb_limit_host_interval->setCurrentItem( 1 );
|
|
} else if ( m_host->limitScale() == "hour" ) {
|
|
m_cb_limit_host_interval->setCurrentItem( 2 );
|
|
} else {
|
|
kdDebug() << "Found illefal value: " << m_host->limitScale() << endl;
|
|
}
|
|
m_cb_limit_host_interval->blockSignals( false );
|
|
|
|
} else {
|
|
m_cb_host_limit->setChecked( false );
|
|
m_sb_host_rate->setEnabled( false );
|
|
m_cb_limit_host_interval->setEnabled( false );
|
|
}
|
|
|
|
KMFNetZone* parentZone = m_host->zone()->rootZone();
|
|
if ( parentZone->name() == "incoming_world" ) {
|
|
m_cb_host_log->setChecked( m_host->logIncoming() );
|
|
} else if ( parentZone->name() == "outgoing_world" ) {
|
|
m_cb_host_log->setChecked( m_host->logOutgoing() );
|
|
}
|
|
|
|
if ( m_host_desc->text().simplifyWhiteSpace() != m_host->description() ) {
|
|
m_host_desc->blockSignals( true );
|
|
m_host_desc->setText( m_host->description() );
|
|
m_host_desc->blockSignals( false );
|
|
}
|
|
m_host_desc->setReadOnly( false );
|
|
blockAllSignals( false );
|
|
}
|
|
|
|
void KMFNetHostPropertiesWidget::slotAddressChanged( int d0, int d1, int d2, int d3 ) {
|
|
kdDebug() << "KMFNetHostPropertiesWidget::slotAddressChanged( "
|
|
<< d0 << "."
|
|
<< d1 << "."
|
|
<< d2 << "."
|
|
<< d3 << ")" << endl;
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n("Change address of Host: %1.").arg( m_host->guiName() )
|
|
);
|
|
m_host->address()->setAddress( d0, d1, d2, d3 );
|
|
m_host->zone()->rootZone()->placeHostInZone( m_host );
|
|
m_host->zone()->rootZone()->refreshNetworkTree();
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
|
|
emit sigHostAddressChanged( m_host->address()->toString() );
|
|
// emit sigHostChanged( m_host );
|
|
}
|
|
|
|
|
|
void KMFNetHostPropertiesWidget::slotHostLogToggled( bool ) {
|
|
kdDebug() << "void KMFNetHostPropertiesWidget::slotHostLogToggled( bool )" << endl;
|
|
if ( ! m_host )
|
|
return;
|
|
kdDebug() << "Changing host: " << m_host->guiName() << endl;
|
|
|
|
KMFNetZone* parentZone = m_host->zone()->rootZone();
|
|
if ( parentZone->name() == "incoming_world" ) {
|
|
if ( m_host->logIncoming() == m_cb_host_log->isChecked() ) {
|
|
return;
|
|
}
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "%1 logging of incoming packets for host %2." ).arg( m_cb_host_log->isChecked() ? i18n( "Enable" ) : i18n( "Disable" ) ).arg( m_host->guiName() )
|
|
);
|
|
m_host->setLogIncoming( m_cb_host_log->isChecked() );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
} else if ( parentZone->name() == "outgoing_world" ) {
|
|
if ( m_host->logOutgoing() == m_cb_host_log->isChecked() ) {
|
|
return;
|
|
}
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "%1 logging of outgoing packets for host %2." ).arg( m_cb_host_log->isChecked() ? i18n( "Enable" ) : i18n( "Disable" ) ).arg( m_host->guiName() )
|
|
);
|
|
m_host->setLogOutgoing( m_cb_host_log->isChecked() );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
}
|
|
emit sigHostChanged( m_host );
|
|
}
|
|
|
|
void KMFNetHostPropertiesWidget::slotHostLimitToggled( bool on ){
|
|
kdDebug() << "void KMFNetHostPropertiesWidget::slotHostLimitToggled( bool " << on << " )" << endl;
|
|
if ( ! m_host )
|
|
return;
|
|
kdDebug() << "Changing host: " << m_host->guiName() << endl;
|
|
if ( on ) {
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "Enable package limit for host %1." ).arg( m_host->guiName() )
|
|
);
|
|
m_host->setLimit( m_sb_host_rate->value(), m_cb_limit_host_interval->currentText() );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
} else {
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "Disable package limit for host %1." ).arg( m_host->guiName() )
|
|
);
|
|
m_host->setLimit( -1, m_cb_limit_host_interval->currentText() );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
}
|
|
emit sigHostChanged( m_host );
|
|
}
|
|
|
|
void KMFNetHostPropertiesWidget::slotHostLimitValueChanged( int ) {
|
|
kdDebug() << "void KMFNetHostPropertiesWidget::slotHostLimitValueChanged( int )" << endl;
|
|
if ( ! m_host )
|
|
return;
|
|
kdDebug() << "Changing host: " << m_host->guiName() << endl;
|
|
if ( m_cb_host_limit->isChecked() ) {
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "Change package limit for host %1 to %2/%3." ).arg( m_host->guiName() ).arg( m_sb_host_rate->value() ).arg( m_cb_limit_host_interval->currentText() )
|
|
);
|
|
m_host->setLimit( m_sb_host_rate->value(), m_cb_limit_host_interval->currentText() );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
} else {
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "Disable package limit for host %1." ).arg( m_host->guiName() )
|
|
);
|
|
m_host->setLimit( -1, m_cb_limit_host_interval->currentText() );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
}
|
|
emit sigHostChanged( m_host );
|
|
}
|
|
|
|
void KMFNetHostPropertiesWidget::slotHostLimitScaleChanged( int ) {
|
|
kdDebug() << "void KMFGenericInterfaceProtocol::slotHostLimitValueChanged( int )" << endl;
|
|
if ( ! m_host )
|
|
return;
|
|
kdDebug() << "Changing host: " << m_host->guiName() << endl;
|
|
if ( m_cb_host_limit->isChecked() ) {
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "Change package limit for host %1 to %2/%3." ).arg( m_host->guiName() ).arg( m_sb_host_rate->value() ).arg( m_cb_limit_host_interval->currentText() )
|
|
);
|
|
m_host->setLimit( m_sb_host_rate->value(), m_cb_limit_host_interval->currentText() );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
} else {
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "Disable package limit for host %1." ).arg( m_host->guiName() )
|
|
);
|
|
m_host->setLimit( -1, "" );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
}
|
|
emit sigHostChanged( m_host );
|
|
}
|
|
|
|
void KMFNetHostPropertiesWidget::slotDescriptionChanged() {
|
|
kdDebug() << "void KMFNetHostPropertiesWidget::slotDescriptionChanged( const TQString& )" << endl;
|
|
if ( ! m_host ) {
|
|
return;
|
|
}
|
|
TQString newTxt = m_host_desc->text().simplifyWhiteSpace();
|
|
if ( newTxt != m_host->description() ) {
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
m_host,
|
|
i18n( "Change documentation of host: %1" ).arg( m_host->guiName() )
|
|
);
|
|
m_host->setDescription( newTxt );
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
}
|
|
emit sigHostChanged( m_host );
|
|
}
|
|
|
|
}
|
|
|
|
#include "kmfnethostpropertieswidget.moc"
|
|
|