Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

PPPDNSedit.cpp

Go to the documentation of this file.
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     // new items in old ?
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           // still in list
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     // old in new ?
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           // still in list
00059           Found = 1;
00060           break;
00061         }
00062       }
00063       if( ! Found ) {
00064         // old obsolete
00065         SM = 1;
00066         delete D.DNS.Servers[j];
00067         for( unsigned i = j+1; i < D.DNS.Servers.size(); i ++ ) {
00068           // compress array
00069           D.DNS.Servers[i-1] = D.DNS.Servers[i];
00070         }
00071         // shrink
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 }

Generated on Sat Nov 5 16:17:56 2005 for OPIE by  doxygen 1.4.2