|
|
|
//
|
|
|
|
// C++ Implementation: kmfnetworkwidget
|
|
|
|
//
|
|
|
|
// Description:
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Author: Christian Hubinger <chubinger@irrsinnig.org>, (C) 2004
|
|
|
|
//
|
|
|
|
// Copyright: See COPYING file that comes with this distribution
|
|
|
|
//
|
|
|
|
//
|
|
|
|
#include "kmfnetworkwidget.h"
|
|
|
|
|
|
|
|
// TQt includes
|
|
|
|
#include <tqlabel.h>
|
|
|
|
#include <tqtextedit.h>
|
|
|
|
#include <tqevent.h>
|
|
|
|
|
|
|
|
// KDE includes
|
|
|
|
#include <kdebug.h>
|
|
|
|
#include <knuminput.h>
|
|
|
|
#include <tdelocale.h>
|
|
|
|
|
|
|
|
// project includes
|
|
|
|
#include "../core/kmfundoengine.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace KMF {
|
|
|
|
KMFNetworkWidget::KMFNetworkWidget(TQWidget *parent, const char *name)
|
|
|
|
: KMyFirewallNetworkWidget(parent, name) {
|
|
|
|
m_allowEdit = true;
|
|
|
|
connect( m_sb_from_1,TQ_SIGNAL( valueChanged( const TQString& ) ),
|
|
|
|
this,TQ_SLOT( slotAddressChanged( const TQString& ) ) );
|
|
|
|
connect( m_sb_from_2,TQ_SIGNAL( valueChanged( const TQString& ) ),
|
|
|
|
this,TQ_SLOT( slotAddressChanged( const TQString& ) ) );
|
|
|
|
connect( m_sb_from_3,TQ_SIGNAL( valueChanged( const TQString& ) ),
|
|
|
|
this,TQ_SLOT( slotAddressChanged( const TQString& ) ) );
|
|
|
|
connect( m_sb_from_4,TQ_SIGNAL( valueChanged( const TQString& ) ),
|
|
|
|
this,TQ_SLOT( slotAddressChanged( const TQString& ) ) );
|
|
|
|
|
|
|
|
connect( m_sb_mask,TQ_SIGNAL( valueChanged( int ) ),
|
|
|
|
this,TQ_SLOT( slotShortMaskChanged( int ) ) );
|
|
|
|
|
|
|
|
connect( m_txt_desc,TQ_SIGNAL( textChanged() ),
|
|
|
|
this,TQ_SLOT( slotDescriptionChanged() ) );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
KMFNetworkWidget::~KMFNetworkWidget() {}
|
|
|
|
|
|
|
|
void KMFNetworkWidget::slotZoneDeleted() {
|
|
|
|
setEnabled( false );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMFNetworkWidget::loadZone( KMFNetZone* zone ) {
|
|
|
|
setEnabled( true );
|
|
|
|
blockAllSignals( true );
|
|
|
|
m_zone = zone;
|
|
|
|
connect( m_zone, TQ_SIGNAL( destroyed() ), this, TQ_SLOT ( slotZoneDeleted() ) );
|
|
|
|
|
|
|
|
m_sb_from_1->setEnabled( true );
|
|
|
|
m_sb_from_2->setEnabled( true );
|
|
|
|
m_sb_from_3->setEnabled( true );
|
|
|
|
m_sb_from_4->setEnabled( true );
|
|
|
|
m_sb_mask->setEnabled( true );
|
|
|
|
|
|
|
|
m_sb_from_1->setValue( zone->address()->getDigit( 0 ) );
|
|
|
|
m_sb_from_2->setValue( zone->address()->getDigit( 1 ) );
|
|
|
|
m_sb_from_3->setValue( zone->address()->getDigit( 2 ) );
|
|
|
|
m_sb_from_4->setValue( zone->address()->getDigit( 3 ) );
|
|
|
|
|
|
|
|
lbl_mask->setText( zone->mask()->toString() );
|
|
|
|
if ( zone->description() != m_txt_desc->text().simplifyWhiteSpace() ) {
|
|
|
|
m_txt_desc->setText( zone->description() );
|
|
|
|
}
|
|
|
|
m_sb_mask->setValue( IPAddress::calcLenthToMask( *zone->mask() ) );
|
|
|
|
blockAllSignals( false );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMFNetworkWidget::slotAddressChanged( const TQString& ) {
|
|
|
|
kdDebug() << "void KMFNetworkWidget::slotAddressChanged( const TQString& )" << endl;
|
|
|
|
if ( ! m_zone ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
blockAllSignals( true );
|
|
|
|
if ( m_allowEdit ) {
|
|
|
|
|
|
|
|
const TQString& newAddr = m_sb_from_1->text() +"."+
|
|
|
|
m_sb_from_2->text() +"."+
|
|
|
|
m_sb_from_3->text() +"."+
|
|
|
|
m_sb_from_4->text();
|
|
|
|
|
|
|
|
if ( newAddr == m_zone->address()->toString() ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
|
|
m_zone->rootZone(),
|
|
|
|
i18n( "Change address of Zone: %1" ).arg( m_zone->guiName() )
|
|
|
|
);
|
|
|
|
|
|
|
|
m_zone->address()->setAddress( m_sb_from_1->value(), m_sb_from_2->value(), m_sb_from_3->value(), m_sb_from_4->value() );
|
|
|
|
m_zone->rootZone()->refreshNetworkTree();
|
|
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
|
|
emit sigZoneChanged( m_zone );
|
|
|
|
}
|
|
|
|
blockAllSignals( false );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMFNetworkWidget::slotShortMaskChanged( int len ) {
|
|
|
|
kdDebug() << "void KMFNetworkWidget::slotShortMaskChanged( const TQString& )" << endl;
|
|
|
|
IPAddress addr = IPAddress::calcNetworkMaskFromLength( len );
|
|
|
|
blockAllSignals( true );
|
|
|
|
lbl_mask->setText( addr.toString() );
|
|
|
|
if ( m_allowEdit && m_zone->maskLength() != len ) {
|
|
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
|
|
m_zone->rootZone(),
|
|
|
|
i18n( "Change mask length of Zone: %1" ).arg( m_zone->guiName() )
|
|
|
|
);
|
|
|
|
m_zone->setMaskLength( len );
|
|
|
|
m_zone->rootZone()->refreshNetworkTree();
|
|
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
|
|
emit sigZoneChanged( m_zone );
|
|
|
|
}
|
|
|
|
blockAllSignals( false );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMFNetworkWidget::slotDescriptionChanged() {
|
|
|
|
kdDebug() << "void KMFNetworkWidget::slotDescriptionChanged( const TQString& )" << endl;
|
|
|
|
if ( ! m_zone ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
TQString newTxt = m_txt_desc->text().simplifyWhiteSpace();
|
|
|
|
if ( m_allowEdit && newTxt != m_zone->description() ) {
|
|
|
|
blockAllSignals( true );
|
|
|
|
KMFUndoEngine::instance()->startTransaction(
|
|
|
|
m_zone,
|
|
|
|
i18n( "Change documentation of Zone: %1" ).arg( m_zone->guiName() )
|
|
|
|
);
|
|
|
|
m_zone->setDescription( newTxt );
|
|
|
|
KMFUndoEngine::instance()->endTransaction();
|
|
|
|
emit sigZoneChanged( m_zone );
|
|
|
|
blockAllSignals( false );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMFNetworkWidget::focusOutEvent( TQFocusEvent * e ) {
|
|
|
|
kdDebug() << "void KMFNetworkWidget::focusOutEvent( TQFocusEvent * e )" << endl;
|
|
|
|
if ( e->lostFocus() && m_txt_desc->text().simplifyWhiteSpace() != m_zone->description() ) {
|
|
|
|
slotDescriptionChanged();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMFNetworkWidget::blockAllSignals( bool onOff ) {
|
|
|
|
m_sb_from_1->blockSignals( onOff );
|
|
|
|
m_sb_from_2->blockSignals( onOff );
|
|
|
|
m_sb_from_3->blockSignals( onOff );
|
|
|
|
m_sb_from_4->blockSignals( onOff );
|
|
|
|
m_txt_desc->blockSignals( onOff );
|
|
|
|
m_sb_mask->blockSignals( onOff );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMFNetworkWidget::allowEdit( bool allow ) {
|
|
|
|
m_allowEdit = allow;
|
|
|
|
m_sb_from_1->setEnabled( allow );
|
|
|
|
m_sb_from_2->setEnabled( allow );
|
|
|
|
m_sb_from_3->setEnabled( allow );
|
|
|
|
m_sb_from_4->setEnabled( allow );
|
|
|
|
m_txt_desc->setEnabled( allow );
|
|
|
|
m_sb_mask->setEnabled( allow );
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "kmfnetworkwidget.moc"
|