00001 #include <qtoolbutton.h>
00002 #include <qmessagebox.h>
00003 #include <qlistbox.h>
00004 #include <qlineedit.h>
00005 #include <qradiobutton.h>
00006 #include <resources.h>
00007 #include <GUIUtils.h>
00008 #include "PPPDNSedit.h"
00009
00010 PPPDNSEdit::PPPDNSEdit( QWidget * Parent ) : PPPDNSGUI( Parent ){
00011
00012 Add_TB->setPixmap( NSResources->getPixmap( "add" ) );
00013 Remove_TB->setPixmap( NSResources->getPixmap( "remove" ) );
00014 }
00015
00016 QString PPPDNSEdit::acceptable( void ) {
00017 if( DNSFixed_RB->isChecked() ) {
00018 if( DomainName_LE->text().isEmpty() )
00019 tr("Domainname needed");
00020 if( Servers_LB->count() == 0 )
00021 tr("DNS Servers needed");
00022 }
00023 return QString();
00024 }
00025
00026 bool PPPDNSEdit::commit( PPPData & D ) {
00027 bool SM = 0;
00028
00029 CBM( D.DNS.ServerAssigned, DNSServerAssigned_RB, SM );
00030 TXTM( D.DNS.DomainName, DomainName_LE, SM );
00031
00032
00033 for ( unsigned i = 0; i < Servers_LB->count(); i++ ) {
00034 QString S;
00035 bool Found;
00036 Found = 0;
00037 S = Servers_LB->text(i);
00038 for ( unsigned j = 0; j < D.DNS.Servers.size(); j++ ) {
00039 if( *(D.DNS.Servers[i]) == S ) {
00040
00041 Found = 1;
00042 break;
00043 }
00044 }
00045 if( ! Found ) {
00046 SM = 1;
00047 D.DNS.Servers.resize( D.DNS.Servers.size()+1 );
00048 D.DNS.Servers[D.DNS.Servers.size()] = new QString( S );
00049 }
00050 }
00051
00052
00053 for ( unsigned j = 0; j < D.DNS.Servers.size(); j++ ) {
00054 bool Found;
00055 Found = 0;
00056 for ( unsigned i = 0; i < Servers_LB->count(); i++ ) {
00057 if( *(D.DNS.Servers[j]) == Servers_LB->text(i) ) {
00058
00059 Found = 1;
00060 break;
00061 }
00062 }
00063 if( ! Found ) {
00064
00065 SM = 1;
00066 delete D.DNS.Servers[j];
00067 for( unsigned i = j+1; i < D.DNS.Servers.size(); i ++ ) {
00068
00069 D.DNS.Servers[i-1] = D.DNS.Servers[i];
00070 }
00071
00072 D.DNS.Servers.resize( D.DNS.Servers.size()-1 );
00073 }
00074 }
00075 return SM;
00076 }
00077
00078 void PPPDNSEdit::showData( PPPData & D) {
00079
00080 DNSServerAssigned_RB->setChecked( D.DNS.ServerAssigned );
00081
00082 DomainName_LE->setText( D.DNS.DomainName );
00083 for( unsigned i = 0; i < D.DNS.Servers.size(); i ++ ) {
00084 Servers_LB->insertItem( *(D.DNS.Servers[i]) );
00085 }
00086 }
00087
00088 void PPPDNSEdit::SLOT_AddServer( void ) {
00089 if( ServerAddress_LE->text().isEmpty() )
00090 return;
00091
00092 Servers_LB->insertItem( ServerAddress_LE->text() );
00093 ServerAddress_LE->setText( "" );
00094 }
00095
00096 void PPPDNSEdit::SLOT_RemoveServer( void ) {
00097 long i = Servers_LB->currentItem();
00098 if( i < 0 )
00099 return;
00100 Servers_LB->removeItem( i );
00101 if( (unsigned) i >= Servers_LB->count() ) {
00102 i --;
00103 }
00104 if( i >= 0 ) {
00105 Servers_LB->setCurrentItem( i );
00106 }
00107
00108 }