summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h2
-rw-r--r--noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h2
-rw-r--r--noncore/settings/networksettings2/cable/cablerun.cpp2
-rw-r--r--noncore/settings/networksettings2/cable/cablerun.h2
-rw-r--r--noncore/settings/networksettings2/irda/irdarun.h2
-rw-r--r--noncore/settings/networksettings2/lancard/lancardrun.cpp2
-rw-r--r--noncore/settings/networksettings2/lancard/lancardrun.h2
-rw-r--r--noncore/settings/networksettings2/modem/modemrun.h2
-rw-r--r--noncore/settings/networksettings2/network/networkrun.cpp6
-rw-r--r--noncore/settings/networksettings2/network/networkrun.h2
-rw-r--r--noncore/settings/networksettings2/networksettings.cpp28
-rw-r--r--noncore/settings/networksettings2/networksettings.h3
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.cpp17
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.h6
-rw-r--r--noncore/settings/networksettings2/networksettings2/networksettings2.pro2
-rw-r--r--noncore/settings/networksettings2/networksettings2/resources.cpp3
-rw-r--r--noncore/settings/networksettings2/networksettingsGUI.ui207
-rw-r--r--noncore/settings/networksettings2/ppp/ppprun.cpp2
-rw-r--r--noncore/settings/networksettings2/ppp/ppprun.h2
-rw-r--r--noncore/settings/networksettings2/profile/profileedit.cpp13
-rw-r--r--noncore/settings/networksettings2/profile/profileedit.h2
-rw-r--r--noncore/settings/networksettings2/profile/profilerun.cpp2
-rw-r--r--noncore/settings/networksettings2/profile/profilerun.h2
-rw-r--r--noncore/settings/networksettings2/usb/usbrun.cpp2
-rw-r--r--noncore/settings/networksettings2/usb/usbrun.h2
-rw-r--r--noncore/settings/networksettings2/vpn/vpnrun.h2
-rw-r--r--noncore/settings/networksettings2/wlan/wlanGUI.ui480
-rw-r--r--noncore/settings/networksettings2/wlan/wlan_NNI.cpp114
-rw-r--r--noncore/settings/networksettings2/wlan/wlan_NNI.h2
-rw-r--r--noncore/settings/networksettings2/wlan/wlandata.h17
-rw-r--r--noncore/settings/networksettings2/wlan/wlanedit.cpp101
-rw-r--r--noncore/settings/networksettings2/wlan/wlanedit.h22
-rw-r--r--noncore/settings/networksettings2/wlan/wlanrun.cpp180
-rw-r--r--noncore/settings/networksettings2/wlan/wlanrun.h15
34 files changed, 957 insertions, 293 deletions
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h
index 4a773cd..c168429 100644
--- a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h
+++ b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h
@@ -1,31 +1,31 @@
1#include <asdevice.h> 1#include <asdevice.h>
2#include "bluetoothBNEPdata.h" 2#include "bluetoothBNEPdata.h"
3 3
4class BluetoothBNEPRun : public AsDevice { 4class BluetoothBNEPRun : public AsDevice {
5 5
6public : 6public :
7 7
8 BluetoothBNEPRun( ANetNodeInstance * NNI, 8 BluetoothBNEPRun( ANetNodeInstance * NNI,
9 BluetoothBNEPData & Data ) : AsDevice( NNI ) 9 BluetoothBNEPData & Data ) : AsDevice( NNI )
10 { } 10 { }
11 11
12 virtual AsDevice * asDevice( void ) 12 virtual AsDevice * asDevice( void )
13 { return (AsDevice *)this; } 13 { return (AsDevice *)this; }
14 14
15 virtual AsDevice * device( void ) 15 virtual AsDevice * device( void )
16 { return asDevice(); } 16 { return asDevice(); }
17 17
18protected : 18protected :
19 19
20 void detectState( NodeCollection * ) 20 void detectState( NodeCollection * )
21 { } 21 { }
22 22
23 bool setState( NodeCollection * , Action_t ) 23 bool setState( NodeCollection * , Action_t, bool )
24 { return 0; } 24 { return 0; }
25 25
26 bool canSetState( State_t , Action_t ) 26 bool canSetState( State_t , Action_t )
27 { return 0; } 27 { return 0; }
28 28
29 bool handlesInterface( const QString & ) 29 bool handlesInterface( const QString & )
30 { return 0; } 30 { return 0; }
31}; 31};
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h
index 6a7902a..aff1f59 100644
--- a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h
+++ b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h
@@ -1,25 +1,25 @@
1#include <asline.h> 1#include <asline.h>
2#include "bluetoothRFCOMMdata.h" 2#include "bluetoothRFCOMMdata.h"
3 3
4class BluetoothRFCOMMRun : public AsLine { 4class BluetoothRFCOMMRun : public AsLine {
5 5
6public : 6public :
7 7
8 BluetoothRFCOMMRun( ANetNodeInstance * NNI, 8 BluetoothRFCOMMRun( ANetNodeInstance * NNI,
9 BluetoothRFCOMMData & Data ) : AsLine( NNI ) 9 BluetoothRFCOMMData & Data ) : AsLine( NNI )
10 { } 10 { }
11 11
12 virtual AsLine * asLine( void ) 12 virtual AsLine * asLine( void )
13 { return (AsLine *)this; } 13 { return (AsLine *)this; }
14 14
15protected : 15protected :
16 16
17 void detectState( NodeCollection * ) 17 void detectState( NodeCollection * )
18 { } 18 { }
19 19
20 bool setState( NodeCollection * , Action_t ) 20 bool setState( NodeCollection * , Action_t, bool )
21 { return 0; } 21 { return 0; }
22 22
23 bool canSetState( State_t , Action_t ) 23 bool canSetState( State_t , Action_t )
24 { return 0; } 24 { return 0; }
25}; 25};
diff --git a/noncore/settings/networksettings2/cable/cablerun.cpp b/noncore/settings/networksettings2/cable/cablerun.cpp
index edb4b01..5e99237 100644
--- a/noncore/settings/networksettings2/cable/cablerun.cpp
+++ b/noncore/settings/networksettings2/cable/cablerun.cpp
@@ -1,26 +1,26 @@
1#include <fcntl.h> 1#include <fcntl.h>
2#include <unistd.h> 2#include <unistd.h>
3#include "cablerun.h" 3#include "cablerun.h"
4 4
5void CableRun::detectState( NodeCollection * NC ) { 5void CableRun::detectState( NodeCollection * NC ) {
6 6
7 int fd = open( D->Device.latin1(), O_RDWR ); 7 int fd = open( D->Device.latin1(), O_RDWR );
8 8
9 if( fd < 0 ) { 9 if( fd < 0 ) {
10 NC->setCurrentState( Unavailable ); 10 NC->setCurrentState( Unavailable );
11 } 11 }
12 close( fd ); 12 close( fd );
13 NC->setCurrentState( Available ); 13 NC->setCurrentState( Available );
14} 14}
15 15
16bool CableRun::setState( NodeCollection * NC, Action_t A ) { 16bool CableRun::setState( NodeCollection * NC, Action_t A, bool ) {
17 if( A == Activate ) { 17 if( A == Activate ) {
18 detectState(NC); 18 detectState(NC);
19 return (NC->currentState() == Available); 19 return (NC->currentState() == Available);
20 } 20 }
21 return 1; 21 return 1;
22} 22}
23 23
24bool CableRun::canSetState( State_t , Action_t ) { 24bool CableRun::canSetState( State_t , Action_t ) {
25 return 1; 25 return 1;
26} 26}
diff --git a/noncore/settings/networksettings2/cable/cablerun.h b/noncore/settings/networksettings2/cable/cablerun.h
index 7b341c4..c5b59d5 100644
--- a/noncore/settings/networksettings2/cable/cablerun.h
+++ b/noncore/settings/networksettings2/cable/cablerun.h
@@ -1,24 +1,24 @@
1#include <asline.h> 1#include <asline.h>
2#include "cabledata.h" 2#include "cabledata.h"
3 3
4class CableRun : public AsLine { 4class CableRun : public AsLine {
5 5
6public : 6public :
7 7
8 CableRun( ANetNodeInstance * NNI, 8 CableRun( ANetNodeInstance * NNI,
9 CableData & Data ) : AsLine( NNI ) 9 CableData & Data ) : AsLine( NNI )
10 { D = &Data; } 10 { D = &Data; }
11 11
12 virtual AsLine * asLine( void ) 12 virtual AsLine * asLine( void )
13 { return (AsLine *)this; } 13 { return (AsLine *)this; }
14 14
15protected : 15protected :
16 16
17 void detectState( NodeCollection * NC ); 17 void detectState( NodeCollection * NC );
18 bool setState( NodeCollection * NC, Action_t A ); 18 bool setState( NodeCollection * NC, Action_t A, bool Force );
19 bool canSetState( State_t Curr, Action_t A ); 19 bool canSetState( State_t Curr, Action_t A );
20 20
21private : 21private :
22 22
23 CableData_t * D; 23 CableData_t * D;
24}; 24};
diff --git a/noncore/settings/networksettings2/irda/irdarun.h b/noncore/settings/networksettings2/irda/irdarun.h
index d9fe5e8..4c903cc 100644
--- a/noncore/settings/networksettings2/irda/irdarun.h
+++ b/noncore/settings/networksettings2/irda/irdarun.h
@@ -1,25 +1,25 @@
1#include <asline.h> 1#include <asline.h>
2#include "irdadata.h" 2#include "irdadata.h"
3 3
4class IRDARun : public AsLine { 4class IRDARun : public AsLine {
5 5
6public : 6public :
7 7
8 IRDARun( ANetNodeInstance * NNI, 8 IRDARun( ANetNodeInstance * NNI,
9 IRDAData & Data ) : AsLine( NNI ) 9 IRDAData & Data ) : AsLine( NNI )
10 { } 10 { }
11 11
12 virtual AsLine * asLine( void ) 12 virtual AsLine * asLine( void )
13 { return (AsLine *)this; } 13 { return (AsLine *)this; }
14 14
15protected : 15protected :
16 16
17 void detectState( NodeCollection * ) 17 void detectState( NodeCollection * )
18 { } 18 { }
19 19
20 bool setState( NodeCollection * , Action_t ) 20 bool setState( NodeCollection * , Action_t, bool )
21 { return 0; } 21 { return 0; }
22 22
23 bool canSetState( State_t , Action_t ) 23 bool canSetState( State_t , Action_t )
24 { return 0; } 24 { return 0; }
25}; 25};
diff --git a/noncore/settings/networksettings2/lancard/lancardrun.cpp b/noncore/settings/networksettings2/lancard/lancardrun.cpp
index 2e4fc43..1544ddc 100644
--- a/noncore/settings/networksettings2/lancard/lancardrun.cpp
+++ b/noncore/settings/networksettings2/lancard/lancardrun.cpp
@@ -1,192 +1,192 @@
1#include <qfile.h> 1#include <qfile.h>
2#include <qtextstream.h> 2#include <qtextstream.h>
3#include <qstringlist.h> 3#include <qstringlist.h>
4#include <resources.h> 4#include <resources.h>
5#include "lancardrun.h" 5#include "lancardrun.h"
6 6
7void LanCardRun::detectState( NodeCollection * NC ) { 7void LanCardRun::detectState( NodeCollection * NC ) {
8 8
9 // unavailable : no card found 9 // unavailable : no card found
10 // available : card found and assigned to us or free 10 // available : card found and assigned to us or free
11 // up : card found and assigned to us and up 11 // up : card found and assigned to us and up
12 12
13 QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); 13 QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number());
14 System & Sys = NSResources->system(); 14 System & Sys = NSResources->system();
15 InterfaceInfo * Run; 15 InterfaceInfo * Run;
16 16
17 QFile F( S ); 17 QFile F( S );
18 18
19 if( F.open( IO_ReadOnly ) ) { 19 if( F.open( IO_ReadOnly ) ) {
20 // could open file -> read interface and assign 20 // could open file -> read interface and assign
21 QString X; 21 QString X;
22 QTextStream TS(&F); 22 QTextStream TS(&F);
23 X = TS.readLine(); 23 X = TS.readLine();
24 // find interface 24 // find interface
25 if( handlesInterface( X ) ) { 25 if( handlesInterface( X ) ) {
26 for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); 26 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
27 It.current(); 27 It.current();
28 ++It ) { 28 ++It ) {
29 Run = It.current(); 29 Run = It.current();
30 if( X == Run->Name ) { 30 if( X == Run->Name ) {
31 Run->assignNode( netNode() ); 31 Run->assignNode( netNode() );
32 assignInterface( Run ); 32 assignInterface( Run );
33 NC->setCurrentState( IsUp ); 33 NC->setCurrentState( IsUp );
34 return; 34 return;
35 } 35 }
36 } 36 }
37 } 37 }
38 } 38 }
39 39
40 if( ( Run = assignedInterface() ) ) { 40 if( ( Run = assignedInterface() ) ) {
41 // we already have an interface assigned -> still present ? 41 // we already have an interface assigned -> still present ?
42 if( ! Run->IsUp ) { 42 if( ! Run->IsUp ) {
43 // usb is still free -> keep assignment 43 // usb is still free -> keep assignment
44 NC->setCurrentState( Available ); 44 NC->setCurrentState( Available );
45 return; 45 return;
46 } // else interface is up but NOT us -> some other profile 46 } // else interface is up but NOT us -> some other profile
47 } 47 }
48 48
49 // nothing (valid) assigned to us 49 // nothing (valid) assigned to us
50 assignInterface( 0 ); 50 assignInterface( 0 );
51 51
52 // find possible interface 52 // find possible interface
53 for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); 53 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
54 It.current(); 54 It.current();
55 ++It ) { 55 ++It ) {
56 Run = It.current(); 56 Run = It.current();
57 if( handlesInterface( *Run ) && 57 if( handlesInterface( *Run ) &&
58 ( Run->CardType == ARPHRD_ETHER 58 ( Run->CardType == ARPHRD_ETHER
59#ifdef ARPHRD_IEEE1394 59#ifdef ARPHRD_IEEE1394
60 || Run->CardType == ARPHRD_IEEE1394 60 || Run->CardType == ARPHRD_IEEE1394
61#endif 61#endif
62 ) && 62 ) &&
63 ! Run->IsUp 63 ! Run->IsUp
64 ) { 64 ) {
65 // proper type, and Not UP -> free 65 // proper type, and Not UP -> free
66 NC->setCurrentState( Off ); 66 NC->setCurrentState( Off );
67 return; 67 return;
68 } 68 }
69 } 69 }
70 // no free found 70 // no free found
71 71
72 NC->setCurrentState( Unavailable ); 72 NC->setCurrentState( Unavailable );
73 73
74} 74}
75 75
76bool LanCardRun::setState( NodeCollection * NC, Action_t A ) { 76bool LanCardRun::setState( NodeCollection * NC, Action_t A, bool ) {
77 77
78 // we only handle activate and deactivate 78 // we only handle activate and deactivate
79 switch( A ) { 79 switch( A ) {
80 case Activate : 80 case Activate :
81 { 81 {
82 if( NC->currentState() != Off ) { 82 if( NC->currentState() != Off ) {
83 return 0; 83 return 0;
84 } 84 }
85 InterfaceInfo * N = getInterface(); 85 InterfaceInfo * N = getInterface();
86 if( ! N ) { 86 if( ! N ) {
87 // no interface available 87 // no interface available
88 NC->setCurrentState( Unavailable ); 88 NC->setCurrentState( Unavailable );
89 return 0; 89 return 0;
90 } 90 }
91 // because we were OFF the interface 91 // because we were OFF the interface
92 // we get back is NOT assigned 92 // we get back is NOT assigned
93 N->assignNode( netNode() ); 93 N->assignNode( netNode() );
94 assignInterface( N ); 94 assignInterface( N );
95 NC->setCurrentState( Available ); 95 NC->setCurrentState( Available );
96 return 1; 96 return 1;
97 } 97 }
98 case Deactivate : 98 case Deactivate :
99 if( NC->currentState() == IsUp ) { 99 if( NC->currentState() == IsUp ) {
100 // bring down first 100 // bring down first
101 if( ! connection()->setState( Down ) ) 101 if( ! connection()->setState( Down ) )
102 // could not ... 102 // could not ...
103 return 0; 103 return 0;
104 } else if( NC->currentState() != Available ) { 104 } else if( NC->currentState() != Available ) {
105 return 1; 105 return 1;
106 } 106 }
107 assignedInterface()->assignNode( 0 ); // release 107 assignedInterface()->assignNode( 0 ); // release
108 assignInterface( 0 ); 108 assignInterface( 0 );
109 NC->setCurrentState( Off ); 109 NC->setCurrentState( Off );
110 return 1; 110 return 1;
111 default : 111 default :
112 // FT 112 // FT
113 break; 113 break;
114 } 114 }
115 return 0; 115 return 0;
116} 116}
117 117
118bool LanCardRun::canSetState( State_t Curr, Action_t A ) { 118bool LanCardRun::canSetState( State_t Curr, Action_t A ) {
119 // we only handle up down activate and deactivate 119 // we only handle up down activate and deactivate
120 switch( A ) { 120 switch( A ) {
121 case Activate : 121 case Activate :
122 { // at least available 122 { // at least available
123 if( Curr == Available ) { 123 if( Curr == Available ) {
124 return 1; 124 return 1;
125 } 125 }
126 // or we can make one available 126 // or we can make one available
127 InterfaceInfo * N = getInterface(); 127 InterfaceInfo * N = getInterface();
128 if( ! N || N->assignedNode() != 0 ) { 128 if( ! N || N->assignedNode() != 0 ) {
129 // non available or assigned 129 // non available or assigned
130 return 0; 130 return 0;
131 } 131 }
132 return 1; 132 return 1;
133 } 133 }
134 case Deactivate : 134 case Deactivate :
135 return ( Curr >= Available ); 135 return ( Curr >= Available );
136 default : 136 default :
137 // FT 137 // FT
138 break; 138 break;
139 } 139 }
140 return 0; 140 return 0;
141} 141}
142 142
143// get interface that is free or assigned to us 143// get interface that is free or assigned to us
144InterfaceInfo * LanCardRun::getInterface( void ) { 144InterfaceInfo * LanCardRun::getInterface( void ) {
145 145
146 System & S = NSResources->system(); 146 System & S = NSResources->system();
147 InterfaceInfo * best = 0, * Run; 147 InterfaceInfo * best = 0, * Run;
148 148
149 for( QDictIterator<InterfaceInfo> It(S.interfaces()); 149 for( QDictIterator<InterfaceInfo> It(S.interfaces());
150 It.current(); 150 It.current();
151 ++It ) { 151 ++It ) {
152 Run = It.current(); 152 Run = It.current();
153 if( handlesInterface( *Run ) && 153 if( handlesInterface( *Run ) &&
154 ( Run->CardType == ARPHRD_ETHER 154 ( Run->CardType == ARPHRD_ETHER
155#ifdef ARPHRD_IEEE1394 155#ifdef ARPHRD_IEEE1394
156 || Run->CardType == ARPHRD_IEEE1394 156 || Run->CardType == ARPHRD_IEEE1394
157#endif 157#endif
158 ) 158 )
159 ) { 159 ) {
160 // this is a LAN card 160 // this is a LAN card
161 if( Run->assignedNode() == netNode() ) { 161 if( Run->assignedNode() == netNode() ) {
162 // assigned to us 162 // assigned to us
163 return Run; 163 return Run;
164 } else if( Run->assignedNode() == 0 ) { 164 } else if( Run->assignedNode() == 0 ) {
165 // free 165 // free
166 best = Run; 166 best = Run;
167 } 167 }
168 } 168 }
169 } 169 }
170 return best; // can be 0 170 return best; // can be 0
171} 171}
172 172
173bool LanCardRun::handlesInterface( const QString & S ) { 173bool LanCardRun::handlesInterface( const QString & S ) {
174 InterfaceInfo * II; 174 InterfaceInfo * II;
175 II = NSResources->system().interface( S ); 175 II = NSResources->system().interface( S );
176 if( ( II = NSResources->system().interface( S ) ) ) { 176 if( ( II = NSResources->system().interface( S ) ) ) {
177 return handlesInterface( *II ); 177 return handlesInterface( *II );
178 } 178 }
179 return Pat.match( S ) >= 0; 179 return Pat.match( S ) >= 0;
180} 180}
181 181
182bool LanCardRun::handlesInterface( const InterfaceInfo & II ) { 182bool LanCardRun::handlesInterface( const InterfaceInfo & II ) {
183 if( Pat.match( II.Name ) < 0 ) 183 if( Pat.match( II.Name ) < 0 )
184 return 0; 184 return 0;
185 185
186 if( Data->AnyLanCard ) { 186 if( Data->AnyLanCard ) {
187 return 1; 187 return 1;
188 } 188 }
189 189
190 // must also match hardware address 190 // must also match hardware address
191 return ( Data->HWAddresses.findIndex( II.MACAddress ) >= 0 ); 191 return ( Data->HWAddresses.findIndex( II.MACAddress ) >= 0 );
192} 192}
diff --git a/noncore/settings/networksettings2/lancard/lancardrun.h b/noncore/settings/networksettings2/lancard/lancardrun.h
index e8a535a..b28dda7 100644
--- a/noncore/settings/networksettings2/lancard/lancardrun.h
+++ b/noncore/settings/networksettings2/lancard/lancardrun.h
@@ -1,39 +1,39 @@
1#ifndef LANCARDRUN_H 1#ifndef LANCARDRUN_H
2#define LANCARDRUN_H 2#define LANCARDRUN_H
3 3
4#include <asdevice.h> 4#include <asdevice.h>
5#include <qregexp.h> 5#include <qregexp.h>
6#include "lancarddata.h" 6#include "lancarddata.h"
7 7
8class LanCardRun : public AsDevice { 8class LanCardRun : public AsDevice {
9 9
10public : 10public :
11 11
12 LanCardRun( ANetNodeInstance * NNI, 12 LanCardRun( ANetNodeInstance * NNI,
13 LanCardData & D ) : AsDevice( NNI ), 13 LanCardData & D ) : AsDevice( NNI ),
14 Pat( "eth[0-9]" ) 14 Pat( "eth[0-9]" )
15 { Data = &D; } 15 { Data = &D; }
16 16
17 virtual AsDevice * device( void ) 17 virtual AsDevice * device( void )
18 { return (AsDevice *)this; } 18 { return (AsDevice *)this; }
19 19
20 virtual AsDevice * asDevice( void ) 20 virtual AsDevice * asDevice( void )
21 { return (AsDevice *)this; } 21 { return (AsDevice *)this; }
22 22
23protected : 23protected :
24 24
25 void detectState( NodeCollection * NC ); 25 void detectState( NodeCollection * NC );
26 bool setState( NodeCollection * NC, Action_t A ); 26 bool setState( NodeCollection * NC, Action_t A, bool Force );
27 bool canSetState( State_t Curr, Action_t A ); 27 bool canSetState( State_t Curr, Action_t A );
28 28
29 bool handlesInterface( const QString & I ); 29 bool handlesInterface( const QString & I );
30 bool handlesInterface( const InterfaceInfo & II ); 30 bool handlesInterface( const InterfaceInfo & II );
31 31
32private : 32private :
33 33
34 InterfaceInfo * getInterface( void ); 34 InterfaceInfo * getInterface( void );
35 QRegExp Pat; 35 QRegExp Pat;
36 LanCardData * Data; 36 LanCardData * Data;
37 37
38}; 38};
39#endif 39#endif
diff --git a/noncore/settings/networksettings2/modem/modemrun.h b/noncore/settings/networksettings2/modem/modemrun.h
index 6d1662b..336462e 100644
--- a/noncore/settings/networksettings2/modem/modemrun.h
+++ b/noncore/settings/networksettings2/modem/modemrun.h
@@ -1,25 +1,25 @@
1#include <asline.h> 1#include <asline.h>
2#include "modemdata.h" 2#include "modemdata.h"
3 3
4class ModemRun : public AsLine { 4class ModemRun : public AsLine {
5 5
6public : 6public :
7 7
8 ModemRun( ANetNodeInstance * NNI, 8 ModemRun( ANetNodeInstance * NNI,
9 ModemData & Data ) : AsLine ( NNI ) 9 ModemData & Data ) : AsLine ( NNI )
10 { } 10 { }
11 11
12 virtual AsLine * asLine( void ) 12 virtual AsLine * asLine( void )
13 { return (AsLine *)this; } 13 { return (AsLine *)this; }
14 14
15protected : 15protected :
16 16
17 void detectState( NodeCollection * ) 17 void detectState( NodeCollection * )
18 { } 18 { }
19 19
20 bool setState( NodeCollection *, Action_t ) 20 bool setState( NodeCollection *, Action_t, bool )
21 { return 0; } 21 { return 0; }
22 22
23 bool canSetState( State_t, Action_t ) 23 bool canSetState( State_t, Action_t )
24 { return 0; } 24 { return 0; }
25}; 25};
diff --git a/noncore/settings/networksettings2/network/networkrun.cpp b/noncore/settings/networksettings2/network/networkrun.cpp
index c19235a..41e1c53 100644
--- a/noncore/settings/networksettings2/network/networkrun.cpp
+++ b/noncore/settings/networksettings2/network/networkrun.cpp
@@ -1,66 +1,66 @@
1#include <system.h> 1#include <system.h>
2#include <asdevice.h> 2#include <asdevice.h>
3#include "networkrun.h" 3#include "networkrun.h"
4 4
5void NetworkRun::detectState( NodeCollection * NC ) { 5void NetworkRun::detectState( NodeCollection * NC ) {
6 RuntimeInfo * RI = netNode()->nextNode()->runtime(); 6 RuntimeInfo * RI = netNode()->nextNode()->runtime();
7 AsDevice * Next = RI->asDevice(); 7 AsDevice * Next = RI->asDevice();
8 InterfaceInfo * II = Next->assignedInterface(); 8 InterfaceInfo * II = Next->assignedInterface();
9 9
10 if( II ) { 10 if( II ) {
11 // device has assigned interface 11 // device has assigned interface
12 NC->setCurrentState( (( II->IsUp ) ? IsUp : Available) ); 12 NC->setCurrentState( (( II->IsUp ) ? IsUp : Available) );
13 return; 13 return;
14 } 14 }
15 15
16 // has no interface -> delegate 16 // has no interface -> delegate
17 RI->detectState( NC ); 17 RI->detectState( NC );
18} 18}
19 19
20bool NetworkRun::setState( NodeCollection * NC, Action_t A ) { 20bool NetworkRun::setState( NodeCollection * NC, Action_t A, bool Force ) {
21 // we handle UP and DOWN 21 // we handle UP and DOWN
22 RuntimeInfo * RI = netNode()->nextNode()->runtime(); 22 RuntimeInfo * RI = netNode()->nextNode()->runtime();
23 AsDevice * Next = RI->asDevice(); 23 AsDevice * Next = RI->asDevice();
24 InterfaceInfo * II = Next->assignedInterface(); 24 InterfaceInfo * II = Next->assignedInterface();
25 25
26 if( A == Up ) { 26 if( A == Up ) {
27 // we can bring UP if lower level is available 27 // we can bring UP if lower level is available
28 if( NC->currentState() == Available ) { 28 if( NC->currentState() == Available || Force ) {
29 QString S; 29 QString S;
30 S.sprintf( "ifup %s=%s-c%d-allowed", 30 S.sprintf( "ifup %s=%s-c%d-allowed",
31 II->Name.latin1(), II->Name.latin1(), 31 II->Name.latin1(), II->Name.latin1(),
32 connection()->number() ); 32 connection()->number() );
33 NSResources->system().runAsRoot( S ); 33 NSResources->system().runAsRoot( S );
34 } 34 }
35 return 1; 35 return 1;
36 } else if( A == Down ) { 36 } else if( A == Down ) {
37 if( NC->currentState() == IsUp ) { 37 if( NC->currentState() == IsUp || Force ) {
38 QString S; 38 QString S;
39 S.sprintf( "ifdown %s=%s-c%d-allowed", 39 S.sprintf( "ifdown %s=%s-c%d-allowed",
40 II->Name.latin1(), II->Name.latin1(), 40 II->Name.latin1(), II->Name.latin1(),
41 connection()->number() ); 41 connection()->number() );
42 NSResources->system().runAsRoot( S ); 42 NSResources->system().runAsRoot( S );
43 } 43 }
44 return 1; 44 return 1;
45 } 45 }
46 // delegate 46 // delegate
47 return RI->setState( NC, A ); 47 return RI->setState( NC, A );
48} 48}
49 49
50bool NetworkRun::canSetState( State_t Curr, Action_t A ) { 50bool NetworkRun::canSetState( State_t Curr, Action_t A ) {
51 // we handle UP and DOWN 51 // we handle UP and DOWN
52 RuntimeInfo * RI = netNode()->nextNode()->runtime(); 52 RuntimeInfo * RI = netNode()->nextNode()->runtime();
53 53
54 if( A == Up ) { 54 if( A == Up ) {
55 return ( Curr == Available ); 55 return ( Curr == Available );
56 } else if( A == Down ) { 56 } else if( A == Down ) {
57 return ( Curr == IsUp ); 57 return ( Curr == IsUp );
58 } 58 }
59 // delegate 59 // delegate
60 return RI->canSetState( Curr, A ); 60 return RI->canSetState( Curr, A );
61} 61}
62 62
63bool NetworkRun::handlesInterface( const QString & S ) { 63bool NetworkRun::handlesInterface( const QString & S ) {
64 // donno -> pass deeper 64 // donno -> pass deeper
65 return netNode()->nextNode()->runtime()->handlesInterface(S); 65 return netNode()->nextNode()->runtime()->handlesInterface(S);
66} 66}
diff --git a/noncore/settings/networksettings2/network/networkrun.h b/noncore/settings/networksettings2/network/networkrun.h
index fa16365..522a912 100644
--- a/noncore/settings/networksettings2/network/networkrun.h
+++ b/noncore/settings/networksettings2/network/networkrun.h
@@ -1,23 +1,23 @@
1#include <asconnection.h> 1#include <asconnection.h>
2#include "networkdata.h" 2#include "networkdata.h"
3 3
4class NetworkRun : public AsConnection { 4class NetworkRun : public AsConnection {
5 5
6public : 6public :
7 7
8 NetworkRun( ANetNodeInstance * NNI, 8 NetworkRun( ANetNodeInstance * NNI,
9 NetworkData & Data ) : AsConnection( NNI ) 9 NetworkData & Data ) : AsConnection( NNI )
10 { } 10 { }
11 11
12 virtual AsConnection * asConnection( void ) 12 virtual AsConnection * asConnection( void )
13 { return (AsConnection *)this; } 13 { return (AsConnection *)this; }
14 14
15protected : 15protected :
16 16
17 void detectState( NodeCollection * ); 17 void detectState( NodeCollection * );
18 bool setState( NodeCollection * ,Action_t A ); 18 bool setState( NodeCollection * ,Action_t A, bool );
19 bool canSetState( State_t , Action_t A ); 19 bool canSetState( State_t , Action_t A );
20 20
21 bool handlesInterface( const QString & I ); 21 bool handlesInterface( const QString & I );
22 22
23}; 23};
diff --git a/noncore/settings/networksettings2/networksettings.cpp b/noncore/settings/networksettings2/networksettings.cpp
index 3ddcbde..b36c7a0 100644
--- a/noncore/settings/networksettings2/networksettings.cpp
+++ b/noncore/settings/networksettings2/networksettings.cpp
@@ -1,423 +1,449 @@
1#include <stdio.h> 1#include <stdio.h>
2 2
3#include <qpe/qpeapplication.h> 3#include <qpe/qpeapplication.h>
4#include <qlistbox.h> 4#include <qlistbox.h>
5#include <qgroupbox.h> 5#include <qgroupbox.h>
6#include <qtimer.h> 6#include <qtimer.h>
7#include <qlistbox.h> 7#include <qlistbox.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlabel.h> 9#include <qlabel.h>
10#include <qiconview.h> 10#include <qiconview.h>
11#include <qtimer.h> 11#include <qtimer.h>
12#include <qpe/qpeapplication.h> 12#include <qpe/qpeapplication.h>
13#include <qtoolbutton.h> 13#include <qtoolbutton.h>
14 14
15#include <asdevice.h> 15#include <asdevice.h>
16#include "networksettings.h" 16#include "networksettings.h"
17#include "netnode.h" 17#include "netnode.h"
18#include "editconnection.h" 18#include "editconnection.h"
19 19
20NetworkSettings::NetworkSettings( QWidget *parent, 20NetworkSettings::NetworkSettings( QWidget *parent,
21 const char *name, 21 const char *name,
22 WFlags fl ) : NetworkSettingsGUI(parent,name,fl), 22 WFlags fl ) : NetworkSettingsGUI(parent,name,fl),
23 NSD() { 23 NSD() {
24 24
25 UpdateTimer = new QTimer( this ); 25 UpdateTimer = new QTimer( this );
26
26 // set pixmaps 27 // set pixmaps
27 Add_TB->setPixmap( NSResources->getPixmap( "add" ) ); 28 Add_TB->setPixmap( NSResources->getPixmap( "add" ) );
28 Delete_TB->setPixmap( NSResources->getPixmap( "remove" ) ); 29 Delete_TB->setPixmap( NSResources->getPixmap( "remove" ) );
29 CheckState_TB->setPixmap( NSResources->getPixmap( "check" ) ); 30 CheckState_TB->setPixmap( NSResources->getPixmap( "check" ) );
30 Enable_TB->setPixmap( NSResources->getPixmap( "disabled" ) ); 31 Enable_TB->setPixmap( NSResources->getPixmap( "disabled" ) );
31 GenConfig_TB->setPixmap( NSResources->getPixmap( "configure" ) ); 32 GenConfig_TB->setPixmap( NSResources->getPixmap( "configure" ) );
32 33
33 Connect_TB->setPixmap( NSResources->getPixmap( "connected" ) ); 34 Connect_TB->setPixmap( NSResources->getPixmap( "connected" ) );
35 Disconnect_TB->setPixmap( NSResources->getPixmap( "disconnected" ) );
34 36
35 On_TB->setPixmap( NSResources->getPixmap( "off" ) ); 37 On_TB->setPixmap( NSResources->getPixmap( "off" ) );
36 38
39 SLOT_ToProfile();
40
37 // populate main Listbox 41 // populate main Listbox
38 Profiles_LB->clear(); 42 Profiles_LB->clear();
39 { Name2Connection_t & M = NSResources->connections(); 43 { Name2Connection_t & M = NSResources->connections();
40 NodeCollection * NC; 44 NodeCollection * NC;
41 // for all connections 45 // for all connections
42 for( QDictIterator<NodeCollection> it(M); 46 for( QDictIterator<NodeCollection> it(M);
43 it.current(); 47 it.current();
44 ++it ) { 48 ++it ) {
45 NC = it.current(); 49 NC = it.current();
46 Profiles_LB->insertItem( NC->devicePixmap(), 50 Profiles_LB->insertItem( NC->devicePixmap(),
47 NC->name() ); 51 NC->name() );
48 } 52 }
49 } 53 }
50 54
51 if( Profiles_LB->count() ) { 55 if( Profiles_LB->count() ) {
52 Profiles_LB->setSelected( 0, TRUE ); 56 Profiles_LB->setSelected( 0, TRUE );
53 } 57 }
54 58
55 // if no profiles -> auto popup editing 59 // if no profiles -> auto popup editing
56 if( NSResources->connections().count() == 0 ) { 60 if( NSResources->connections().count() == 0 ) {
57 QTimer::singleShot( 100, this, SLOT(SLOT_AddNode() ) ); 61 QTimer::singleShot( 100, this, SLOT(SLOT_AddNode() ) );
58 } 62 }
59 63
60 UpdateTimer->start( 5000 ); 64 UpdateTimer->start( 5000 );
61 connect( UpdateTimer, SIGNAL( timeout() ), 65 connect( UpdateTimer, SIGNAL( timeout() ),
62 this, SLOT( SLOT_RefreshStates() ) ); 66 this, SLOT( SLOT_RefreshStates() ) );
63 67
64 /* Add QCopChannel */ 68 /* Add QCopChannel */
65 connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), 69 connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)),
66 this, SLOT(SLOT_QCopMessage(const QCString&,const QByteArray&)) ); 70 this, SLOT(SLOT_QCopMessage(const QCString&,const QByteArray&)) );
67} 71}
68 72
69NetworkSettings::~NetworkSettings() { 73NetworkSettings::~NetworkSettings() {
70 QString S; 74 QString S;
71 75
72 S = NSD.generateSettings(); 76 S = NSD.generateSettings();
73 if( ! S.isEmpty() ) { 77 if( ! S.isEmpty() ) {
74 QMessageBox::warning( 78 QMessageBox::warning(
75 0, 79 0,
76 tr( "In System Config" ), 80 tr( "In System Config" ),
77 S 81 S
78 ); 82 );
79 } 83 }
80 84
81 S = NSD.saveSettings(); 85 S = NSD.saveSettings();
82 if( ! S.isEmpty() ) { 86 if( ! S.isEmpty() ) {
83 // problem saving 87 // problem saving
84 QMessageBox::warning( 88 QMessageBox::warning(
85 0, 89 0,
86 tr( "Saving setup" ), S ); 90 tr( "Saving setup" ), S );
87 } 91 }
88} 92}
89 93
90void NetworkSettings::SLOT_RefreshStates( void ) { 94void NetworkSettings::SLOT_RefreshStates( void ) {
91 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); // remember 95 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); // remember
92 96
93 if( LBI ) { 97 if( LBI ) {
94 NodeCollection * NC; 98 NodeCollection * NC;
95 NSResources->system().probeInterfaces(); 99 NSResources->system().probeInterfaces();
96 // update current selection only 100 // update current selection only
97 NC = NSResources->findConnection( LBI->text() ); 101 NC = NSResources->findConnection( LBI->text() );
98 if( NC ) { 102 if( NC ) {
99 State_t OldS = NC->state(); 103 State_t OldS = NC->state();
100 State_t NewS = NC->state(1); 104 State_t NewS = NC->state(1);
101 if( OldS != NewS ) { 105 if( OldS != NewS ) {
102 updateProfileState( LBI ); 106 updateProfileState( LBI );
103 } 107 }
104 } 108 }
105 } 109 }
106 110
107 111
108 /* -> LATER !! 112 /* -> LATER !!
109 bool is; 113 bool is;
110 NodeCollection * NC; 114 NodeCollection * NC;
111 115
112 for( unsigned int i = 0; i < Profiles_LB->count() ; i ++ ) { 116 for( unsigned int i = 0; i < Profiles_LB->count() ; i ++ ) {
113 NC = NSResources->findConnection( Profiles_LB->text(i) ); 117 NC = NSResources->findConnection( Profiles_LB->text(i) );
114 if( NC ) { 118 if( NC ) {
115 State_t OldS = NC->state(); 119 State_t OldS = NC->state();
116 State_t NewS = NC->state(1); 120 State_t NewS = NC->state(1);
117 if( OldS != NewS ) { 121 if( OldS != NewS ) {
118 is = Profiles_LB->isSelected(i); 122 is = Profiles_LB->isSelected(i);
119 Profiles_LB->changeItem( NC->statePixmap(NewS), 123 Profiles_LB->changeItem( NC->statePixmap(NewS),
120 NC->name(), 124 NC->name(),
121 i ); 125 i );
122 if( is ) { 126 if( is ) {
123 Profiles_LB->setSelected( i, TRUE ); 127 Profiles_LB->setSelected( i, TRUE );
124 } 128 }
125 } 129 }
126 } 130 }
127 } 131 }
128 if( ci >= 0 ) 132 if( ci >= 0 )
129 Profiles_LB->setCurrentItem( ci ); 133 Profiles_LB->setCurrentItem( ci );
130 */ 134 */
131} 135}
132 136
133void NetworkSettings::SLOT_AddNode( void ) { 137void NetworkSettings::SLOT_AddNode( void ) {
134 SLOT_EditNode( 0 ); 138 SLOT_EditNode( 0 );
135} 139}
136 140
137void NetworkSettings::SLOT_DeleteNode( void ) { 141void NetworkSettings::SLOT_DeleteNode( void ) {
138 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); 142 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() );
139 143
140 if ( ! LBI ) 144 if ( ! LBI )
141 return; 145 return;
142 146
143 if( QMessageBox::warning( 147 if( QMessageBox::warning(
144 0, 148 0,
145 tr( "Removing profile" ), 149 tr( "Removing profile" ),
146 tr( "Remove selected profile ?" ), 150 tr( "Remove selected profile ?" ),
147 1, 0 ) == 1 ) { 151 1, 0 ) == 1 ) {
148 NSResources->removeConnection( LBI->text() ); 152 NSResources->removeConnection( LBI->text() );
149 delete LBI; 153 delete LBI;
150 setModified( 1 ); 154 setModified( 1 );
151 NSD.forceGeneration(1); 155 NSD.forceGeneration(1);
152 } 156 }
153} 157}
154 158
155void NetworkSettings::SLOT_EditNode( QListBoxItem * LBI ) { 159void NetworkSettings::SLOT_EditNode( QListBoxItem * LBI ) {
156 QString OldName = ""; 160 QString OldName = "";
157 EditConnection EC( this ); 161 EditConnection EC( this );
158 162
159 if( LBI ) { 163 if( LBI ) {
160 NodeCollection * NC = NSResources->findConnection( LBI->text() ); 164 NodeCollection * NC = NSResources->findConnection( LBI->text() );
161 if( ! NC ) { 165 if( ! NC ) {
162 return; 166 return;
163 } 167 }
164 OldName = NC->name(); 168 OldName = NC->name();
165 EC.setConnection( NC ); 169 EC.setConnection( NC );
166 } 170 }
167 171
168 EC.showMaximized(); 172 EC.showMaximized();
169 // disable refresh timer 173 // disable refresh timer
170 UpdateTimer->stop(); 174 UpdateTimer->stop();
171 // we need to retry 175 // we need to retry
172 while( 1 ) { 176 while( 1 ) {
173 if( EC.exec() == QDialog::Accepted ) { 177 if( EC.exec() == QDialog::Accepted ) {
174 // toplevel item -> store 178 // toplevel item -> store
175 NodeCollection * NC = EC.connection(); 179 NodeCollection * NC = EC.connection();
176 if( NC->isModified() ) { 180 if( NC->isModified() ) {
177 setModified( 1 ); 181 setModified( 1 );
178 if( LBI ) { 182 if( LBI ) {
179 if( NC->name() != OldName ) { 183 if( NC->name() != OldName ) {
180 // find if new name is free 184 // find if new name is free
181 NodeCollection * LCN = NSResources->findConnection( 185 NodeCollection * LCN = NSResources->findConnection(
182 NC->name() ); 186 NC->name() );
183 if( LCN ) { 187 if( LCN ) {
184 QMessageBox::warning( 188 QMessageBox::warning(
185 0, 189 0,
186 tr( "In System Config" ), 190 tr( "In System Config" ),
187 tr( "Name %1 already exists" ).arg(NC->name()) 191 tr( "Name %1 already exists" ).arg(NC->name())
188 ); 192 );
189 continue; // restart exec 193 continue; // restart exec
190 } // else new name 194 } // else new name
191 // new name -> remove item 195 // new name -> remove item
192 NSResources->removeConnection( OldName ); 196 NSResources->removeConnection( OldName );
193 NSResources->addConnection( NC ); 197 NSResources->addConnection( NC );
194 } // else not changed 198 } // else not changed
195 199
196 // must add it here since change will trigger event 200 // must add it here since change will trigger event
197 Profiles_LB->changeItem( NC->devicePixmap(), 201 Profiles_LB->changeItem( NC->devicePixmap(),
198 NC->name(), 202 NC->name(),
199 Profiles_LB->index( LBI ) 203 Profiles_LB->index( LBI )
200 ); 204 );
201 } else { 205 } else {
202 // new item 206 // new item
203 int ci = Profiles_LB->count(); 207 int ci = Profiles_LB->count();
204 NSResources->addConnection( NC ); 208 NSResources->addConnection( NC );
205 NC->setNumber( NC->maxConnectionNumber()+1 ); 209 NC->setNumber( NC->maxConnectionNumber()+1 );
206 Profiles_LB->insertItem( NC->devicePixmap(), NC->name() ); 210 Profiles_LB->insertItem( NC->devicePixmap(), NC->name() );
207 Profiles_LB->setSelected( ci, TRUE ); 211 Profiles_LB->setSelected( ci, TRUE );
208 } 212 }
209 updateProfileState( LBI ); 213 updateProfileState( LBI );
210 } 214 }
211 } else { 215 } else {
212 // cancelled : reset connection 216 // cancelled : reset connection
213 if( LBI ) { 217 if( LBI ) {
214 NodeCollection * NC = NSResources->findConnection( LBI->text() ); 218 NodeCollection * NC = NSResources->findConnection( LBI->text() );
215 NC->reassign(); 219 NC->reassign();
216 } 220 }
217 } 221 }
218 break; 222 break;
219 } 223 }
220 // reenable 224 // reenable
221 UpdateTimer->start( 5000 ); 225 UpdateTimer->start( 5000 );
222} 226}
223 227
224void NetworkSettings::SLOT_ShowNode( QListBoxItem * LBI ) { 228void NetworkSettings::SLOT_ShowNode( QListBoxItem * LBI ) {
225 if( LBI == 0 ) 229 if( LBI == 0 )
226 return; 230 return;
227 231
228 NodeCollection * NC = NSResources->findConnection( LBI->text() ); 232 NodeCollection * NC = NSResources->findConnection( LBI->text() );
229 233
230 // is button possible 234 // is button possible
231 bool EnabledPossible, OnPossible, ConnectPossible; 235 bool EnabledPossible, OnPossible, ConnectPossible;
232 // is button On or Off 236 // is button On or Off
233 bool DisabledOn, OnOn, ConnectOn; 237 bool DisabledOn, OnOn, ConnectOn;
234 238
235 EnabledPossible = OnPossible = ConnectPossible = 1; 239 EnabledPossible = OnPossible = ConnectPossible = 1;
236 DisabledOn = 1; 240 DisabledOn = 1;
237 OnOn = ConnectOn = 0; 241 OnOn = ConnectOn = 0;
238 242
239 switch( NC->state() ) { 243 switch( NC->state() ) {
240 case Unknown : 244 case Unknown :
241 // cannot occur here 245 // cannot occur here
242 break; 246 break;
243 case Unchecked : 247 case Unchecked :
244 case Unavailable : 248 case Unavailable :
245 // cannot do anything but recheck 249 // cannot do anything but recheck
246 EnabledPossible = OnPossible = ConnectPossible = 0; 250 EnabledPossible = OnPossible = ConnectPossible = 0;
247 break; 251 break;
248 case Disabled : 252 case Disabled :
249 OnPossible = ConnectPossible = 0; 253 OnPossible = ConnectPossible = 0;
250 break; 254 break;
251 case Off : 255 case Off :
252 DisabledOn = 0; 256 DisabledOn = 0;
253 break; 257 break;
254 case Available : 258 case Available :
255 OnOn = 1; 259 OnOn = 1;
256 DisabledOn = 0; 260 DisabledOn = 0;
257 break; 261 break;
258 case IsUp : 262 case IsUp :
259 OnOn = ConnectOn = 1; 263 OnOn = ConnectOn = 1;
260 DisabledOn = 0; 264 DisabledOn = 0;
261 break; 265 break;
262 } 266 }
263 267
264 // set button state 268 // set button state
265 Enable_TB->setEnabled( EnabledPossible ); 269 Enable_TB->setEnabled( EnabledPossible );
266 On_TB->setEnabled( OnPossible ); 270 On_TB->setEnabled( OnPossible );
267 Connect_TB->setEnabled( ConnectPossible ); 271 Connect_TB->setEnabled( ConnectPossible );
268 272
269 Enable_TB->setOn( DisabledOn ); 273 Enable_TB->setOn( DisabledOn );
270 On_TB->setOn( OnOn ); 274 On_TB->setOn( OnOn );
271 Connect_TB->setOn( ConnectOn ); 275 Connect_TB->setOn( ConnectOn );
272 276
273 if( NC->description().isEmpty() ) { 277 if( NC->description().isEmpty() ) {
274 Description_LBL->setText( tr( "No description" ) ); 278 Description_LBL->setText( tr( "No description" ) );
275 } else { 279 } else {
276 Description_LBL->setText( NC->description() ); 280 Description_LBL->setText( NC->description() );
277 } 281 }
278 282
279 CurProfile_GB->setTitle( LBI->text() ); 283 Profile_GB->setTitle( LBI->text() );
280 State_LBL->setText( NC->stateName() ); 284 State_LBL->setText( NC->stateName() );
281} 285}
282 286
283void NetworkSettings::SLOT_CheckState( void ) { 287void NetworkSettings::SLOT_CheckState( void ) {
284 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); 288 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() );
285 if ( ! LBI ) 289 if ( ! LBI )
286 return; 290 return;
287 updateProfileState( LBI ); 291 updateProfileState( LBI );
288} 292}
289 293
290void NetworkSettings::updateProfileState( QListBoxItem * LBI ) { 294void NetworkSettings::updateProfileState( QListBoxItem * LBI ) {
291 if( LBI == Profiles_LB->item( Profiles_LB->currentItem() ) ) { 295 if( LBI == Profiles_LB->item( Profiles_LB->currentItem() ) ) {
292 SLOT_ShowNode( LBI ); 296 SLOT_ShowNode( LBI );
293 } 297 }
294} 298}
295 299
296void NetworkSettings::SLOT_GenerateConfig( void ) { 300void NetworkSettings::SLOT_GenerateConfig( void ) {
297 QString S = NSD.generateSettings( TRUE ); 301 QString S = NSD.generateSettings( TRUE );
298 302
299 if( ! S.isEmpty() ) { 303 if( ! S.isEmpty() ) {
300 QMessageBox::warning( 304 QMessageBox::warning(
301 0, 305 0,
302 tr( "Generating system configuration" ), 306 tr( "Generating system configuration" ),
303 S 307 S
304 ); 308 );
305 } 309 }
306} 310}
307 311
308void NetworkSettings::SLOT_Enable( void ) { 312void NetworkSettings::SLOT_Enable( void ) {
309 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); 313 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() );
310 QString Msg; 314 QString Msg;
311 if ( ! LBI ) 315 if ( ! LBI )
312 return; 316 return;
313 317
314 NodeCollection * NC = 318 NodeCollection * NC =
315 NSResources->findConnection( LBI->text() ); 319 NSResources->findConnection( LBI->text() );
316 320
317 bool rv; 321 bool rv;
318 switch( NC->state() ) { 322 switch( NC->state() ) {
319 case Disabled : 323 case Disabled :
320 Msg = tr( "Cannot enable profile" ); 324 Msg = tr( "Cannot enable profile" );
321 rv = NC->setState( Enable ); 325 rv = NC->setState( Enable );
322 break; 326 break;
323 default : 327 default :
324 Msg = tr( "Cannot disable profile" ); 328 Msg = tr( "Cannot disable profile" );
325 rv = NC->setState( Disable ); 329 rv = NC->setState( Disable );
326 break; 330 break;
327 } 331 }
328 332
329 if( ! rv ) { 333 if( ! rv ) {
330 QMessageBox::warning( 334 QMessageBox::warning(
331 0, 335 0,
332 tr( "Activating profile" ), 336 tr( "Activating profile" ),
333 Msg ); 337 Msg );
334 return; 338 return;
335 } 339 }
336 updateProfileState( LBI ); 340 updateProfileState( LBI );
337} 341}
338 342
339void NetworkSettings::SLOT_On( void ) { 343void NetworkSettings::SLOT_On( void ) {
340 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); 344 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() );
341 345
342 if ( ! LBI ) 346 if ( ! LBI )
343 return; 347 return;
344 348
345 NodeCollection * NC = 349 NodeCollection * NC =
346 NSResources->findConnection( LBI->text() ); 350 NSResources->findConnection( LBI->text() );
347 351
348 bool rv; 352 bool rv;
349 switch( NC->state() ) { 353 switch( NC->state() ) {
350 case Off : 354 case Off :
351 // activate interface 355 // activate interface
352 rv = NC->setState( Activate ); 356 rv = NC->setState( Activate );
353 break; 357 break;
354 case Available : // deactivate 358 case Available : // deactivate
355 case IsUp : // deactivate (will also bring down if needed) 359 case IsUp : // deactivate (will also bring down if needed)
356 rv = NC->setState( Deactivate ); 360 rv = NC->setState( Deactivate );
357 break; 361 break;
358 default : 362 default :
359 // others no change 363 // others no change
360 return; 364 return;
361 } 365 }
362 366
363 if( ! rv ) { 367 if( ! rv ) {
364 QMessageBox::warning( 368 QMessageBox::warning(
365 0, 369 0,
366 tr( "Activating profile" ), 370 tr( "Activating profile" ),
367 tr( "Cannot enable profile" ) ); 371 tr( "Cannot enable profile" ) );
368 return; 372 return;
369 } 373 }
370 updateProfileState( LBI ); 374 updateProfileState( LBI );
371} 375}
372 376
373void NetworkSettings::SLOT_Connect( void ) { 377void NetworkSettings::SLOT_Connect( void ) {
374 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); 378 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() );
375 379
376 if ( ! LBI ) 380 if ( ! LBI )
377 return; 381 return;
378 382
379 NodeCollection * NC = 383 NodeCollection * NC =
380 NSResources->findConnection( LBI->text() ); 384 NSResources->findConnection( LBI->text() );
381 385
382 bool rv = 1 ; 386 bool rv = 1 ;
383 switch( NC->state() ) { 387 switch( NC->state() ) {
384 case IsUp : 388 case IsUp :
385 // down interface 389 // down interface
386 rv = NC->setState( Down ); 390 rv = NC->setState( Down );
387 break; 391 break;
388 case Available : 392 case Available :
389 // up interface 393 // up interface
390 rv = NC->setState( Up ); 394 rv = NC->setState( Up );
391 break; 395 break;
392 case Off : 396 case Off :
393 // activate and bring up 397 // activate and bring up
394 rv = ( NC->setState( Activate ) && 398 rv = ( NC->setState( Activate ) &&
395 NC->setState( Up ) ); 399 NC->setState( Up ) );
396 break; 400 break;
397 default : 401 default :
398 // others no change 402 // others no change
399 break; 403 break;
400 } 404 }
401 405
402 if( ! rv ) { 406 if( ! rv ) {
403 QMessageBox::warning( 407 QMessageBox::warning(
404 0, 408 0,
405 tr( "Activating profile" ), 409 tr( "Activating profile" ),
406 tr( "Cannot enable profile" ) ); 410 tr( "Cannot enable profile" ) );
407 } 411 }
408 412
409 // we do not update the GUI but wait for the REAL upping of the device 413 // we do not update the GUI but wait for the REAL upping of the device
410} 414}
411 415
416void NetworkSettings::SLOT_Disconnect( void ) {
417 QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() );
418
419 if ( ! LBI )
420 return;
421
422 NodeCollection * NC =
423 NSResources->findConnection( LBI->text() );
424
425 NC->setState( Down, 1 );
426}
427
428void NetworkSettings::SLOT_ToMessages( void ) {
429 Profile_GB->hide();
430 Messages_GB->show();
431}
432
433void NetworkSettings::SLOT_ToProfile( void ) {
434 Profile_GB->show();
435 Messages_GB->hide();
436}
437
412void NetworkSettings::SLOT_QCopMessage(const QCString &msg, const QByteArray &data) { 438void NetworkSettings::SLOT_QCopMessage(const QCString &msg, const QByteArray &data) {
413 QDataStream stream( data, IO_ReadOnly ); 439 QDataStream stream( data, IO_ReadOnly );
414 440
415 if( msg == "raise" ) { 441 if( msg == "raise" ) {
416 raise(); 442 raise();
417 return; 443 return;
418 } /* if ( msg == "someMessage(int,int,int)" ) { 444 } /* if ( msg == "someMessage(int,int,int)" ) {
419 int a,b,c; 445 int a,b,c;
420 stream >> a >> b >> c; 446 stream >> a >> b >> c;
421 ... 447 ...
422 } */ 448 } */
423} 449}
diff --git a/noncore/settings/networksettings2/networksettings.h b/noncore/settings/networksettings2/networksettings.h
index d9ea5d4..97852af 100644
--- a/noncore/settings/networksettings2/networksettings.h
+++ b/noncore/settings/networksettings2/networksettings.h
@@ -1,49 +1,52 @@
1#include "nsdata.h" 1#include "nsdata.h"
2#include "networksettingsGUI.h" 2#include "networksettingsGUI.h"
3#include "resources.h" 3#include "resources.h"
4 4
5class ANetNode; 5class ANetNode;
6class ANetNodeInstance; 6class ANetNodeInstance;
7class QTimer; 7class QTimer;
8class QListBoxItem; 8class QListBoxItem;
9 9
10class NetworkSettings : public NetworkSettingsGUI { 10class NetworkSettings : public NetworkSettingsGUI {
11 11
12 Q_OBJECT 12 Q_OBJECT
13 13
14public : 14public :
15 15
16 NetworkSettings( QWidget *parent=0, 16 NetworkSettings( QWidget *parent=0,
17 const char *name=0, 17 const char *name=0,
18 WFlags fl = 0 ); 18 WFlags fl = 0 );
19 ~NetworkSettings( void ); 19 ~NetworkSettings( void );
20 20
21 static QString appName( void ) 21 static QString appName( void )
22 { return QString::fromLatin1("networksettings"); } 22 { return QString::fromLatin1("networksettings"); }
23 23
24 bool isModified( void ) 24 bool isModified( void )
25 { return NSD.isModified(); } 25 { return NSD.isModified(); }
26 void setModified( bool m ) 26 void setModified( bool m )
27 { NSD.setModified( m ); } 27 { NSD.setModified( m ); }
28 28
29public slots : 29public slots :
30 30
31 void SLOT_AddNode( void ); 31 void SLOT_AddNode( void );
32 void SLOT_DeleteNode( void ); 32 void SLOT_DeleteNode( void );
33 void SLOT_ShowNode( QListBoxItem * ); 33 void SLOT_ShowNode( QListBoxItem * );
34 void SLOT_EditNode( QListBoxItem * ); 34 void SLOT_EditNode( QListBoxItem * );
35 void SLOT_CheckState( void ); 35 void SLOT_CheckState( void );
36 void SLOT_Enable( void ); 36 void SLOT_Enable( void );
37 void SLOT_On( void ); 37 void SLOT_On( void );
38 void SLOT_Connect( void ); 38 void SLOT_Connect( void );
39 void SLOT_Disconnect( void );
39 void SLOT_GenerateConfig( void ); 40 void SLOT_GenerateConfig( void );
40 void SLOT_RefreshStates( void ); 41 void SLOT_RefreshStates( void );
41 void SLOT_QCopMessage( const QCString&,const QByteArray& ); 42 void SLOT_QCopMessage( const QCString&,const QByteArray& );
43 void SLOT_ToProfile( void );
44 void SLOT_ToMessages( void );
42 45
43private : 46private :
44 47
45 void updateProfileState( QListBoxItem * it ); 48 void updateProfileState( QListBoxItem * it );
46 QTimer * UpdateTimer; 49 QTimer * UpdateTimer;
47 NetworkSettingsData NSD; 50 NetworkSettingsData NSD;
48 51
49}; 52};
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.cpp b/noncore/settings/networksettings2/networksettings2/netnode.cpp
index dc66aff..1182543 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.cpp
+++ b/noncore/settings/networksettings2/networksettings2/netnode.cpp
@@ -1,299 +1,310 @@
1#include <qpe/qpeapplication.h>
2#include <time.h> 1#include <time.h>
2#include <qpe/qpeapplication.h>
3#include <qpainter.h>
4#include <qbitmap.h>
3#include <qtextstream.h> 5#include <qtextstream.h>
4#include <qpixmap.h> 6#include <qpixmap.h>
5 7
6#include "resources.h" 8#include "resources.h"
7#include "netnode.h" 9#include "netnode.h"
8 10
9#include "asdevice.h" 11#include "asdevice.h"
10#include "asline.h" 12#include "asline.h"
11#include "asconnection.h" 13#include "asconnection.h"
12#include "asfullsetup.h" 14#include "asfullsetup.h"
13 15
14QString & deQuote( QString & X ) { 16QString & deQuote( QString & X ) {
15 if( X[0] == '"' ) { 17 if( X[0] == '"' ) {
16 // remove end and trailing "" and \x -> x 18 // remove end and trailing "" and \x -> x
17 QChar R; 19 QChar R;
18 long idx; 20 long idx;
19 idx = X.length()-1; 21 idx = X.length()-1;
20 X = X.mid( 1, idx ); 22 X = X.mid( 1, idx );
21 23
22 idx = 0; 24 idx = 0;
23 while( ( idx = X.find( '\\', idx ) ) >= 0 ) { 25 while( ( idx = X.find( '\\', idx ) ) >= 0 ) {
24 R = X.at( idx + 1 ); 26 R = X.at( idx + 1 );
25 X.replace( idx, 2, &R, 1 ); 27 X.replace( idx, 2, &R, 1 );
26 } 28 }
27 X = X.left( X.length()-1 ); 29 X = X.left( X.length()-1 );
28 } 30 }
29 return X; 31 return X;
30} 32}
31 33
32QString quote( QString X ) { 34QString quote( QString X ) {
33 if( X.find( QRegExp( "[ \n\"\\\t]" ) ) >= 0 ) { 35 if( X.find( QRegExp( "[ \n\"\\\t]" ) ) >= 0 ) {
34 // need to quote this 36 // need to quote this
35 QString OutString = "\""; 37 QString OutString = "\"";
36 38
37 X.replace( QRegExp("\""), "\\\"" ); 39 X.replace( QRegExp("\""), "\\\"" );
38 X.replace( QRegExp("\\"), "\\\\" ); 40 X.replace( QRegExp("\\"), "\\\\" );
39 X.replace( QRegExp(" "), "\\ " ); 41 X.replace( QRegExp(" "), "\\ " );
40 42
41 OutString += X; 43 OutString += X;
42 OutString += "\""; 44 OutString += "\"";
43 X = OutString; 45 X = OutString;
44 } 46 }
45 return X; 47 return X;
46} 48}
47 49
48 50
49// 51//
50// 52//
51// ANETNODE 53// ANETNODE
52// 54//
53// 55//
54 56
55void ANetNode::saveAttributes( QTextStream & TS ) { 57void ANetNode::saveAttributes( QTextStream & TS ) {
56 saveSpecificAttribute( TS ); 58 saveSpecificAttribute( TS );
57} 59}
58 60
59void ANetNode::setAttribute( QString & Attr, QString & Value ){ 61void ANetNode::setAttribute( QString & Attr, QString & Value ){
60 setSpecificAttribute( Attr, Value ); 62 setSpecificAttribute( Attr, Value );
61} 63}
62 64
63// 65//
64// 66//
65// ANETNODEINSTANCE 67// ANETNODEINSTANCE
66// 68//
67// 69//
68 70
69long ANetNodeInstance::InstanceCounter = -1; 71long ANetNodeInstance::InstanceCounter = -1;
70 72
71void ANetNodeInstance::initialize( void ) { 73void ANetNodeInstance::initialize( void ) {
72 if( InstanceCounter == -1 ) 74 if( InstanceCounter == -1 )
73 InstanceCounter = time(0); 75 InstanceCounter = time(0);
74 // set name 76 // set name
75 QString N; 77 QString N;
76 N.sprintf( "-%ld", InstanceCounter++ ); 78 N.sprintf( "-%ld", InstanceCounter++ );
77 N.prepend( NodeType->name() ); 79 N.prepend( NodeType->name() );
78 setName( N.latin1() ); 80 setName( N.latin1() );
79} 81}
80 82
81void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){ 83void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){
82 if( Attr == "name" ) { 84 if( Attr == "name" ) {
83 setName( Value.latin1() ); 85 setName( Value.latin1() );
84 } else { 86 } else {
85 setSpecificAttribute( Attr, Value ); 87 setSpecificAttribute( Attr, Value );
86 } 88 }
87} 89}
88 90
89void ANetNodeInstance::saveAttributes( QTextStream & TS ) { 91void ANetNodeInstance::saveAttributes( QTextStream & TS ) {
90 TS << "name=" << name() << endl; 92 TS << "name=" << name() << endl;
91 saveSpecificAttribute( TS ); 93 saveSpecificAttribute( TS );
92} 94}
93 95
94ANetNodeInstance * ANetNodeInstance::nextNode( void ) { 96ANetNodeInstance * ANetNodeInstance::nextNode( void ) {
95 return connection()->findNext( this ); 97 return connection()->findNext( this );
96} 98}
97 99
98// 100//
99// 101//
100// NODECOLLECTION 102// NODECOLLECTION
101// 103//
102// 104//
103 105
104long NodeCollection::MaxNr = -1; 106long NodeCollection::MaxNr = -1;
105 107
106NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() { 108NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() {
107 IsModified = 0; 109 IsModified = 0;
108 Index = -1; 110 Index = -1;
109 Name=""; 111 Name="";
110 IsNew = 1; 112 IsNew = 1;
111 CurrentState = Unchecked; 113 CurrentState = Unchecked;
112} 114}
113 115
114NodeCollection::NodeCollection( QTextStream & TS ) : 116NodeCollection::NodeCollection( QTextStream & TS ) :
115 QList<ANetNodeInstance>() { 117 QList<ANetNodeInstance>() {
116 long idx; 118 long idx;
117 bool InError = 0; 119 bool InError = 0;
118 QString S, A, N; 120 QString S, A, N;
119 IsModified = 0; 121 IsModified = 0;
120 Index = -1; 122 Index = -1;
121 Name=""; 123 Name="";
122 IsNew = 0; 124 IsNew = 0;
123 CurrentState = Unchecked; 125 CurrentState = Unchecked;
124 126
125 do { 127 do {
126 S = TS.readLine(); 128 S = TS.readLine();
127 if( S.isEmpty() ) { 129 if( S.isEmpty() ) {
128 if( InError ) { 130 if( InError ) {
129 // remove all nodes 131 // remove all nodes
130 clear(); 132 clear();
131 } 133 }
132 // empty line 134 // empty line
133 break; 135 break;
134 } 136 }
135 137
136 idx = S.find('='); 138 idx = S.find('=');
137 S.stripWhiteSpace(); 139 S.stripWhiteSpace();
138 A = S.left( idx ); 140 A = S.left( idx );
139 A.lower(); 141 A.lower();
140 N = S.mid( idx+1, S.length() ); 142 N = S.mid( idx+1, S.length() );
141 N.stripWhiteSpace(); 143 N.stripWhiteSpace();
142 N = deQuote( N ); 144 N = deQuote( N );
143 145
144 if( A == "name" ) { 146 if( A == "name" ) {
145 Name = N; 147 Name = N;
146 } else if( A == "number" ) { 148 } else if( A == "number" ) {
147 setNumber( N.toLong() ); 149 setNumber( N.toLong() );
148 } else if( A == "node" ) { 150 } else if( A == "node" ) {
149 ANetNodeInstance * NNI = NSResources->findNodeInstance( N ); 151 ANetNodeInstance * NNI = NSResources->findNodeInstance( N );
150 if( NNI && ! InError ) { 152 if( NNI && ! InError ) {
151 append( NSResources->findNodeInstance( N ) ); 153 append( NSResources->findNodeInstance( N ) );
152 } else { 154 } else {
153 // could not find a node type -> collection invalid 155 // could not find a node type -> collection invalid
154 InError = 1; 156 InError = 1;
155 } 157 }
156 } 158 }
157 } while( 1 ); 159 } while( 1 );
158} 160}
159 161
160 162
161NodeCollection::~NodeCollection( void ) { 163NodeCollection::~NodeCollection( void ) {
162} 164}
163 165
164const QString & NodeCollection::description( void ) { 166const QString & NodeCollection::description( void ) {
165 ANetNodeInstance * NNI = getToplevel(); 167 ANetNodeInstance * NNI = getToplevel();
166 return (NNI) ? NNI->runtime()->asFullSetup()->description() : Name; 168 return (NNI) ? NNI->runtime()->asFullSetup()->description() : Name;
167} 169}
168 170
169void NodeCollection::append( ANetNodeInstance * NNI ) { 171void NodeCollection::append( ANetNodeInstance * NNI ) {
170 NNI->setConnection( this ); 172 NNI->setConnection( this );
171 QList<ANetNodeInstance>::append( NNI ); 173 QList<ANetNodeInstance>::append( NNI );
172} 174}
173 175
174void NodeCollection::save( QTextStream & TS ) { 176void NodeCollection::save( QTextStream & TS ) {
175 177
176 TS << "name=" << quote( Name ) << endl; 178 TS << "name=" << quote( Name ) << endl;
177 TS << "number=" << number() << endl; 179 TS << "number=" << number() << endl;
178 ANetNodeInstance * NNI; 180 ANetNodeInstance * NNI;
179 for( QListIterator<ANetNodeInstance> it(*this); 181 for( QListIterator<ANetNodeInstance> it(*this);
180 it.current(); 182 it.current();
181 ++it ) { 183 ++it ) {
182 NNI = it.current(); 184 NNI = it.current();
183 TS << "node=" << NNI->name() << endl; 185 TS << "node=" << NNI->name() << endl;
184 } 186 }
185 TS << endl; 187 TS << endl;
186 IsNew = 0; 188 IsNew = 0;
187} 189}
188 190
189ANetNodeInstance * NodeCollection::getToplevel( void ) { 191ANetNodeInstance * NodeCollection::getToplevel( void ) {
190 ANetNodeInstance * NNI = 0; 192 ANetNodeInstance * NNI = 0;
191 for( QListIterator<ANetNodeInstance> it(*this); 193 for( QListIterator<ANetNodeInstance> it(*this);
192 it.current(); 194 it.current();
193 ++it ) { 195 ++it ) {
194 NNI = it.current(); 196 NNI = it.current();
195 if( NNI->nodeClass()->isToplevel() ) 197 if( NNI->nodeClass()->isToplevel() )
196 break; 198 break;
197 } 199 }
198 return NNI; 200 return NNI;
199} 201}
200 202
201ANetNodeInstance * NodeCollection::findByName( const QString & S ) { 203ANetNodeInstance * NodeCollection::findByName( const QString & S ) {
202 ANetNodeInstance * NNI = 0; 204 ANetNodeInstance * NNI = 0;
203 for( QListIterator<ANetNodeInstance> it(*this); 205 for( QListIterator<ANetNodeInstance> it(*this);
204 it.current(); 206 it.current();
205 ++it ) { 207 ++it ) {
206 NNI = it.current(); 208 NNI = it.current();
207 if( NNI->name() == S ) 209 if( NNI->name() == S )
208 break; 210 break;
209 } 211 }
210 return NNI; 212 return NNI;
211} 213}
212 214
213ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) { 215ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) {
214 ANetNodeInstance * NNNI; 216 ANetNodeInstance * NNNI;
215 217
216 if( ! NNI ) 218 if( ! NNI )
217 getToplevel(); 219 getToplevel();
218 220
219 for( QListIterator<ANetNodeInstance> it(*this); 221 for( QListIterator<ANetNodeInstance> it(*this);
220 it.current(); 222 it.current();
221 ++it ) { 223 ++it ) {
222 NNNI = it.current(); 224 NNNI = it.current();
223 if( NNNI == NNI ) { 225 if( NNNI == NNI ) {
224 ++it; 226 ++it;
225 return it.current(); 227 return it.current();
226 } 228 }
227 } 229 }
228 return 0; // no more next 230 return 0; // no more next
229} 231}
230 232
231int NodeCollection::compareItems( QCollection::Item I1, 233int NodeCollection::compareItems( QCollection::Item I1,
232 QCollection::Item I2 ) { 234 QCollection::Item I2 ) {
233 ANetNodeInstance * NNI1, * NNI2; 235 ANetNodeInstance * NNI1, * NNI2;
234 NNI1 = (ANetNodeInstance *)I1; 236 NNI1 = (ANetNodeInstance *)I1;
235 NNI2 = (ANetNodeInstance *)I2; 237 NNI2 = (ANetNodeInstance *)I2;
236 return strcmp( NNI1->name(), NNI2->name() ); 238 return strcmp( NNI1->name(), NNI2->name() );
237} 239}
238 240
239static char * State2PixmapTbl[] = { 241static char * State2PixmapTbl[] = {
240 "NULL", // Unchecked : no pixmap 242 "NULL", // Unchecked : no pixmap
241 "check", // Unknown 243 "check", // Unknown
242 "delete", // unavailable 244 "delete", // unavailable
243 "disabled", // disabled 245 "disabled", // disabled
244 "off", // off 246 "off", // off
245 "disconnected", // available 247 "disconnected", // available
246 "connected" // up 248 "connected" // up
247}; 249};
248 250
249QPixmap NodeCollection::devicePixmap( void ) { 251QPixmap NodeCollection::devicePixmap( void ) {
250 return NSResources->getPixmap( 252 QPixmap pm = NSResources->getPixmap(
251 device()->netNode()->pixmapName()+"-large" ); 253 getToplevel()->nextNode()->pixmapName()+"-large");
254
255 QPixmap Mini = NSResources->getPixmap( device()->netNode()->pixmapName() );
256
257 QPainter painter( &pm );
258 painter.drawPixmap( pm.width()-Mini.width(),
259 pm.height()-Mini.height(),
260 Mini );
261 pm.setMask( pm.createHeuristicMask( TRUE ) );
262 return pm;
252} 263}
253 264
254QPixmap NodeCollection::statePixmap( State_t S) { 265QPixmap NodeCollection::statePixmap( State_t S) {
255 return NSResources->getPixmap( State2PixmapTbl[S] ); 266 return NSResources->getPixmap( State2PixmapTbl[S] );
256} 267}
257 268
258QString NodeCollection::stateName( State_t S) { 269QString NodeCollection::stateName( State_t S) {
259 switch( S ) { 270 switch( S ) {
260 case Unknown : 271 case Unknown :
261 return qApp->translate( "networksettings2", "Unknown"); 272 return qApp->translate( "networksettings2", "Unknown");
262 case Unavailable : 273 case Unavailable :
263 return qApp->translate( "networksettings2", "Unavailable"); 274 return qApp->translate( "networksettings2", "Unavailable");
264 case Disabled : 275 case Disabled :
265 return qApp->translate( "networksettings2", "Disabled"); 276 return qApp->translate( "networksettings2", "Disabled");
266 case Off : 277 case Off :
267 return qApp->translate( "networksettings2", "Off"); 278 return qApp->translate( "networksettings2", "Off");
268 case Available : 279 case Available :
269 return qApp->translate( "networksettings2", "Available"); 280 return qApp->translate( "networksettings2", "Available");
270 case IsUp : 281 case IsUp :
271 return qApp->translate( "networksettings2", "IsUp"); 282 return qApp->translate( "networksettings2", "IsUp");
272 case Unchecked : /* FT */ 283 case Unchecked : /* FT */
273 default : 284 default :
274 break; 285 break;
275 } 286 }
276 return QString(""); 287 return QString("");
277} 288}
278 289
279void NodeCollection::reassign( void ) { 290void NodeCollection::reassign( void ) {
280 for( QListIterator<ANetNodeInstance> it(*this); 291 for( QListIterator<ANetNodeInstance> it(*this);
281 it.current(); 292 it.current();
282 ++it ) { 293 ++it ) {
283 it.current()->setConnection( this ); 294 it.current()->setConnection( this );
284 } 295 }
285} 296}
286 297
287// 298//
288// 299//
289// RUNTIMEINFO 300// RUNTIMEINFO
290// 301//
291// 302//
292 303
293InterfaceInfo * RuntimeInfo::assignedInterface( void ) { 304InterfaceInfo * RuntimeInfo::assignedInterface( void ) {
294 return netNode()->nextNode()->runtime()->assignedInterface(); 305 return netNode()->nextNode()->runtime()->assignedInterface();
295} 306}
296 307
297AsDevice * RuntimeInfo::device( void ) { 308AsDevice * RuntimeInfo::device( void ) {
298 return netNode()->nextNode()->runtime()->device(); 309 return netNode()->nextNode()->runtime()->device();
299} 310}
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.h b/noncore/settings/networksettings2/networksettings2/netnode.h
index 27d54f8..5e36062 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.h
+++ b/noncore/settings/networksettings2/networksettings2/netnode.h
@@ -1,382 +1,382 @@
1#ifndef NETNODE_H 1#ifndef NETNODE_H
2#define NETNODE_H 2#define NETNODE_H
3 3
4#include <qtextstream.h> 4#include <qtextstream.h>
5#include <qlist.h> 5#include <qlist.h>
6#include <qdict.h> 6#include <qdict.h>
7#include <qpixmap.h> 7#include <qpixmap.h>
8#include <qobject.h> 8#include <qobject.h>
9#include <time.h> 9#include <time.h>
10 10
11// difference feature interfaces 11// difference feature interfaces
12class AsDevice; 12class AsDevice;
13class AsLine; 13class AsLine;
14class AsConnection; 14class AsConnection;
15class AsFullSetup; 15class AsFullSetup;
16 16
17// needed for plugin creation function 17// needed for plugin creation function
18#include <qlist.h> 18#include <qlist.h>
19 19
20class ANetNode; 20class ANetNode;
21class ANetNodeInstance; 21class ANetNodeInstance;
22class NodeCollection; 22class NodeCollection;
23class QTextStream; 23class QTextStream;
24class RuntimeInfo; 24class RuntimeInfo;
25class InterfaceInfo; 25class InterfaceInfo;
26 26
27extern QString & deQuote( QString & X ); 27extern QString & deQuote( QString & X );
28extern QString quote( QString X ); 28extern QString quote( QString X );
29 29
30#include "systemfile.h" 30#include "systemfile.h"
31 31
32typedef enum State { 32typedef enum State {
33 // if we have not yet detected the state of the device 33 // if we have not yet detected the state of the device
34 Unchecked = 0, 34 Unchecked = 0,
35 // if we cannot determine the state 35 // if we cannot determine the state
36 Unknown = 1, 36 Unknown = 1,
37 // if connection cannot be established e.g. because 37 // if connection cannot be established e.g. because
38 // the hardware is not available 38 // the hardware is not available
39 Unavailable = 2, 39 Unavailable = 2,
40 // if the connection cannot be establishec but NOT 40 // if the connection cannot be establishec but NOT
41 // because it is physically impossible but because 41 // because it is physically impossible but because
42 // it has been disabled for FUNCTIONAL reasons 42 // it has been disabled for FUNCTIONAL reasons
43 Disabled = 3, 43 Disabled = 3,
44 // if connection is available to is currently down 44 // if connection is available to is currently down
45 // i.e. the corresponding hardware is not activated 45 // i.e. the corresponding hardware is not activated
46 Off = 4, 46 Off = 4,
47 // if connection is available to be used (i.e. the 47 // if connection is available to be used (i.e. the
48 // devices if fully ready to be used 48 // devices if fully ready to be used
49 Available = 5, 49 Available = 5,
50 // if connection is being used 50 // if connection is being used
51 IsUp = 6 51 IsUp = 6
52} State_t; 52} State_t;
53 53
54typedef enum Action { 54typedef enum Action {
55 // to make the device unavailable functionally 55 // to make the device unavailable functionally
56 Disable = 0, 56 Disable = 0,
57 // to make the device available functionally 57 // to make the device available functionally
58 Enable = 1, 58 Enable = 1,
59 // bring the hardware up 59 // bring the hardware up
60 Activate = 2, 60 Activate = 2,
61 // bring the hardware down 61 // bring the hardware down
62 Deactivate = 3, 62 Deactivate = 3,
63 // bring the connection up 63 // bring the connection up
64 Up = 4, 64 Up = 4,
65 // bring the connection down 65 // bring the connection down
66 Down = 5 66 Down = 5
67} Action_t; 67} Action_t;
68 68
69class ANetNode : public QObject{ 69class ANetNode : public QObject{
70 70
71public: 71public:
72 72
73 typedef QArray<ANetNode *> NetNodeList; 73 typedef QArray<ANetNode *> NetNodeList;
74 74
75 ANetNode( const char * Name ) : QObject( 0, Name ) {} 75 ANetNode( const char * Name ) : QObject( 0, Name ) {}
76 virtual ~ANetNode(){}; 76 virtual ~ANetNode(){};
77 77
78 // pixmap needed for this NetNode 78 // pixmap needed for this NetNode
79 virtual const QString pixmapName() = 0; 79 virtual const QString pixmapName() = 0;
80 80
81 // description for this NetNode 81 // description for this NetNode
82 virtual const QString nodeDescription() = 0; 82 virtual const QString nodeDescription() = 0;
83 83
84 // create a blank instance of a net node 84 // create a blank instance of a net node
85 virtual ANetNodeInstance * createInstance( void ) = 0; 85 virtual ANetNodeInstance * createInstance( void ) = 0;
86 86
87 // return feature this NetNode provides 87 // return feature this NetNode provides
88 virtual const char * provides( void ) = 0; 88 virtual const char * provides( void ) = 0;
89 virtual const char ** needs( void ) = 0; 89 virtual const char ** needs( void ) = 0;
90 90
91 // generate files specific for this node (if any) 91 // generate files specific for this node (if any)
92 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ) = 0; 92 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ) = 0;
93 // return TRUE if this node has data to be inserted in systemfile 93 // return TRUE if this node has data to be inserted in systemfile
94 // with name S 94 // with name S
95 virtual bool hasDataFor( const QString & S ) = 0; 95 virtual bool hasDataFor( const QString & S ) = 0;
96 // generate data specific for the device for the system file S 96 // generate data specific for the device for the system file S
97 // called only IF data was needed 97 // called only IF data was needed
98 virtual bool generateDeviceDataForCommonFile( 98 virtual bool generateDeviceDataForCommonFile(
99 SystemFile & SF, long DevNr ) = 0; 99 SystemFile & SF, long DevNr ) = 0;
100 100
101 // does this Node provide a Connection 101 // does this Node provide a Connection
102 bool isToplevel( void ) 102 bool isToplevel( void )
103 { return strcmp( provides(), "fullsetup") == 0 ; } 103 { return strcmp( provides(), "fullsetup") == 0 ; }
104 104
105 // generate NIC name based on instance nr 105 // generate NIC name based on instance nr
106 // only relevant if node instances are devices 106 // only relevant if node instances are devices
107 virtual QString genNic( long ) 107 virtual QString genNic( long )
108 { return QString(""); } 108 { return QString(""); }
109 109
110 // max number of instances for this node type 110 // max number of instances for this node type
111 // only relevant if node instances are devices 111 // only relevant if node instances are devices
112 virtual long instanceCount( void ) 112 virtual long instanceCount( void )
113 { return 1; } 113 { return 1; }
114 114
115 // set the value of an attribute 115 // set the value of an attribute
116 void setAttribute( QString & Attr, QString & Value ) ; 116 void setAttribute( QString & Attr, QString & Value ) ;
117 void saveAttributes( QTextStream & TS ) ; 117 void saveAttributes( QTextStream & TS ) ;
118 118
119 // compiled references to 'needed' NetNodes -> needs list 119 // compiled references to 'needed' NetNodes -> needs list
120 void setAlternatives( NetNodeList * Alt ) 120 void setAlternatives( NetNodeList * Alt )
121 { Alternatives = Alt; } 121 { Alternatives = Alt; }
122 NetNodeList & alternatives( void ) 122 NetNodeList & alternatives( void )
123 { return *Alternatives; } 123 { return *Alternatives; }
124 124
125protected : 125protected :
126 126
127 NetNodeList * Alternatives; 127 NetNodeList * Alternatives;
128 128
129private : 129private :
130 130
131 virtual void setSpecificAttribute( QString & , QString & ) = 0; 131 virtual void setSpecificAttribute( QString & , QString & ) = 0;
132 virtual void saveSpecificAttribute( QTextStream & ) = 0; 132 virtual void saveSpecificAttribute( QTextStream & ) = 0;
133 133
134}; 134};
135 135
136class ANetNodeInstance : public QObject { 136class ANetNodeInstance : public QObject {
137 137
138public: 138public:
139 139
140 ANetNodeInstance( ANetNode * NN ) : QObject() 140 ANetNodeInstance( ANetNode * NN ) : QObject()
141 { IsModified=0; NodeType = NN; IsNew = TRUE; } 141 { IsModified=0; NodeType = NN; IsNew = TRUE; }
142 virtual ~ANetNodeInstance( void ) { } 142 virtual ~ANetNodeInstance( void ) { }
143 143
144 virtual RuntimeInfo * runtime( void ) = 0; 144 virtual RuntimeInfo * runtime( void ) = 0;
145 145
146 void setConnection( NodeCollection * NC ) 146 void setConnection( NodeCollection * NC )
147 { Connection = NC; } 147 { Connection = NC; }
148 NodeCollection * connection( void ) 148 NodeCollection * connection( void )
149 { return Connection; } 149 { return Connection; }
150 150
151 // create edit widget under parent 151 // create edit widget under parent
152 virtual QWidget * edit( QWidget * parent ) = 0; 152 virtual QWidget * edit( QWidget * parent ) = 0;
153 // is given data acceptable 153 // is given data acceptable
154 virtual QString acceptable( void ) = 0; 154 virtual QString acceptable( void ) = 0;
155 155
156 // return data was modified 156 // return data was modified
157 void setModified( bool M ) 157 void setModified( bool M )
158 { IsModified = M; } 158 { IsModified = M; }
159 bool isModified( void ) 159 bool isModified( void )
160 { return IsModified; } 160 { return IsModified; }
161 161
162 // get data from GUI and store in node 162 // get data from GUI and store in node
163 virtual void commit( void ) = 0; 163 virtual void commit( void ) = 0;
164 164
165 // get next node 165 // get next node
166 ANetNodeInstance * nextNode(); 166 ANetNodeInstance * nextNode();
167 // return NetNode this is an instance of 167 // return NetNode this is an instance of
168 ANetNode * nodeClass( void ) 168 ANetNode * nodeClass( void )
169 { return NodeType; } 169 { return NodeType; }
170 170
171 // intialize am instance of a net node 171 // intialize am instance of a net node
172 void initialize( void ); 172 void initialize( void );
173 173
174 // set the value of an attribute 174 // set the value of an attribute
175 void setAttribute( QString & Attr, QString & Value ) ; 175 void setAttribute( QString & Attr, QString & Value ) ;
176 void saveAttributes( QTextStream & TS ) ; 176 void saveAttributes( QTextStream & TS ) ;
177 177
178 // return true if node isntance is NEW and not loaded 178 // return true if node isntance is NEW and not loaded
179 void setNew( bool IsN ) 179 void setNew( bool IsN )
180 { IsNew = IsN; } 180 { IsNew = IsN; }
181 bool isNew( void ) 181 bool isNew( void )
182 { return IsNew; } 182 { return IsNew; }
183 183
184 // return description for this instance 184 // return description for this instance
185 QString & description( void ) 185 QString & description( void )
186 { return Description; } 186 { return Description; }
187 void setDescription( const QString & S ) 187 void setDescription( const QString & S )
188 { Description = S; } 188 { Description = S; }
189 189
190 // pixmap for this instance -> from NetNode 190 // pixmap for this instance -> from NetNode
191 const QString pixmapName( void ) 191 const QString pixmapName( void )
192 { return NodeType->pixmapName(); } 192 { return NodeType->pixmapName(); }
193 193
194 const char * provides( void ) 194 const char * provides( void )
195 { return NodeType->provides(); } 195 { return NodeType->provides(); }
196 196
197 const char ** needs( void ) 197 const char ** needs( void )
198 { return NodeType->needs(); } 198 { return NodeType->needs(); }
199 199
200 // returns node specific data -> only useful for 'buddy' 200 // returns node specific data -> only useful for 'buddy'
201 virtual void * data( void ) = 0; 201 virtual void * data( void ) = 0;
202 202
203 // return TRUE if this node has data to be inserted in systemfile 203 // return TRUE if this node has data to be inserted in systemfile
204 // with name S 204 // with name S
205 virtual bool hasDataFor( const QString & S ) = 0; 205 virtual bool hasDataFor( const QString & S ) = 0;
206 206
207 // generate data specific for a profile and for the system file S 207 // generate data specific for a profile and for the system file S
208 // called only IF data was needed 208 // called only IF data was needed
209 virtual bool generateDataForCommonFile( 209 virtual bool generateDataForCommonFile(
210 SystemFile & SF, long DevNr ) = 0; 210 SystemFile & SF, long DevNr ) = 0;
211 211
212protected : 212protected :
213 213
214 virtual void setSpecificAttribute( QString & , QString & ) = 0; 214 virtual void setSpecificAttribute( QString & , QString & ) = 0;
215 virtual void saveSpecificAttribute( QTextStream & ) = 0; 215 virtual void saveSpecificAttribute( QTextStream & ) = 0;
216 216
217 ANetNode * NodeType; 217 ANetNode * NodeType;
218 // connection to which this node belongs to 218 // connection to which this node belongs to
219 NodeCollection * Connection; 219 NodeCollection * Connection;
220 QString Description; 220 QString Description;
221 bool IsModified; 221 bool IsModified;
222 bool IsNew; 222 bool IsNew;
223 223
224 static long InstanceCounter; 224 static long InstanceCounter;
225}; 225};
226 226
227class RuntimeInfo : public QObject { 227class RuntimeInfo : public QObject {
228 228
229 Q_OBJECT 229 Q_OBJECT
230 230
231public : 231public :
232 232
233 RuntimeInfo( ANetNodeInstance * TheNNI ) 233 RuntimeInfo( ANetNodeInstance * TheNNI )
234 { NNI = TheNNI; } 234 { NNI = TheNNI; }
235 235
236 // downcast implemented by specify runtime classes 236 // downcast implemented by specify runtime classes
237 virtual AsDevice * asDevice( void ) 237 virtual AsDevice * asDevice( void )
238 { return 0; } 238 { return 0; }
239 virtual AsConnection * asConnection( void ) 239 virtual AsConnection * asConnection( void )
240 { return 0; } 240 { return 0; }
241 virtual AsLine * asLine( void ) 241 virtual AsLine * asLine( void )
242 { return 0; } 242 { return 0; }
243 virtual AsFullSetup * asFullSetup( void ) 243 virtual AsFullSetup * asFullSetup( void )
244 { return 0; } 244 { return 0; }
245 245
246 // does this node handles this interface e.g.eth0 246 // does this node handles this interface e.g.eth0
247 // recurse deeper if this node cannot answer that question 247 // recurse deeper if this node cannot answer that question
248 virtual bool handlesInterface( const QString & ) 248 virtual bool handlesInterface( const QString & )
249 { return 0; } 249 { return 0; }
250 virtual bool handlesInterface( const InterfaceInfo & ) 250 virtual bool handlesInterface( const InterfaceInfo & )
251 { return 0; } 251 { return 0; }
252 virtual InterfaceInfo * assignedInterface( void ); 252 virtual InterfaceInfo * assignedInterface( void );
253 virtual AsDevice * device( void ); 253 virtual AsDevice * device( void );
254 254
255 ANetNodeInstance * netNode() 255 ANetNodeInstance * netNode()
256 { return NNI; } 256 { return NNI; }
257 NodeCollection * connection() 257 NodeCollection * connection()
258 { return NNI->connection(); } 258 { return NNI->connection(); }
259 259
260 virtual void detectState( NodeCollection * NC ) = 0; 260 virtual void detectState( NodeCollection * NC ) = 0;
261 virtual bool setState( NodeCollection * NC, Action_t A ) = 0; 261 virtual bool setState( NodeCollection * NC, Action_t A, bool Force = 0 ) = 0;
262 virtual bool canSetState( State_t Curr, Action_t A ) = 0; 262 virtual bool canSetState( State_t Curr, Action_t A ) = 0;
263 263
264signals : 264signals :
265 265
266 // sent by device if state changes 266 // sent by device if state changes
267 void stateChanged( State_t S, ANetNodeInstance * NNI ); 267 void stateChanged( State_t S, ANetNodeInstance * NNI );
268 268
269protected : 269protected :
270 270
271 // connection this runtime info belongs to 271 // connection this runtime info belongs to
272 ANetNodeInstance * NNI; 272 ANetNodeInstance * NNI;
273}; 273};
274 274
275class NodeCollection : public QList<ANetNodeInstance> { 275class NodeCollection : public QList<ANetNodeInstance> {
276 276
277public : 277public :
278 278
279 NodeCollection( void ); 279 NodeCollection( void );
280 NodeCollection( QTextStream & TS ); 280 NodeCollection( QTextStream & TS );
281 ~NodeCollection( void ); 281 ~NodeCollection( void );
282 282
283 int number( void ) 283 int number( void )
284 { return Number; } 284 { return Number; }
285 void setNumber( int i ) 285 void setNumber( int i )
286 { Number = i; if( MaxNr < i ) MaxNr = i; } 286 { Number = i; if( MaxNr < i ) MaxNr = i; }
287 bool isNew( void ) 287 bool isNew( void )
288 { return IsNew; } 288 { return IsNew; }
289 void setNew( bool N ) 289 void setNew( bool N )
290 { IsNew = N ; } 290 { IsNew = N ; }
291 bool isModified( void ) 291 bool isModified( void )
292 { return IsModified; } 292 { return IsModified; }
293 void setModified( bool N ) 293 void setModified( bool N )
294 { IsModified = N ; } 294 { IsModified = N ; }
295 295
296 bool handlesInterface( const QString & S ) { 296 bool handlesInterface( const QString & S ) {
297 return getToplevel()->runtime()->handlesInterface( S ); 297 return getToplevel()->runtime()->handlesInterface( S );
298 } 298 }
299 299
300 InterfaceInfo * assignedInterface( void ) { 300 InterfaceInfo * assignedInterface( void ) {
301 return getToplevel()->runtime()->assignedInterface(); 301 return getToplevel()->runtime()->assignedInterface();
302 } 302 }
303 303
304 AsDevice * device() { 304 AsDevice * device() {
305 return getToplevel()->runtime()->device(); 305 return getToplevel()->runtime()->device();
306 } 306 }
307 307
308 State_t state( bool Update = 0 ) 308 State_t state( bool Update = 0 )
309 { if( CurrentState == Unchecked || Update ) { 309 { if( CurrentState == Unchecked || Update ) {
310 // need to get current state 310 // need to get current state
311 getToplevel()->runtime()->detectState( this ); 311 getToplevel()->runtime()->detectState( this );
312 } 312 }
313 return CurrentState; 313 return CurrentState;
314 } 314 }
315 315
316 // get the ixmap for this device 316 // get the ixmap for this device
317 QPixmap devicePixmap( void ); 317 QPixmap devicePixmap( void );
318 QPixmap statePixmap( State_t S ); 318 QPixmap statePixmap( State_t S );
319 QPixmap statePixmap( bool Update = 0 ) 319 QPixmap statePixmap( bool Update = 0 )
320 { return statePixmap( state(Update) ); } 320 { return statePixmap( state(Update) ); }
321 QString stateName( State_t ); 321 QString stateName( State_t );
322 QString stateName( bool Update = 0 ) 322 QString stateName( bool Update = 0 )
323 { return stateName( state(Update) ); } 323 { return stateName( state(Update) ); }
324 324
325 bool setState( Action_t A ) 325 bool setState( Action_t A, bool Force =0 )
326 { return getToplevel()->runtime()->setState( this, A ); } 326 { return getToplevel()->runtime()->setState( this, A, Force ); }
327 bool canSetState( Action_t A ) 327 bool canSetState( Action_t A )
328 { return getToplevel()->runtime()->canSetState( CurrentState, A ); } 328 { return getToplevel()->runtime()->canSetState( CurrentState, A ); }
329 329
330 void save( QTextStream & TS ); 330 void save( QTextStream & TS );
331 331
332 void append( ANetNodeInstance * NNI ); 332 void append( ANetNodeInstance * NNI );
333 333
334 // makes sure that all items in the connection point to 334 // makes sure that all items in the connection point to
335 // that connectoin 335 // that connectoin
336 void reassign( void ); 336 void reassign( void );
337 337
338 ANetNodeInstance * getToplevel( void ); 338 ANetNodeInstance * getToplevel( void );
339 ANetNodeInstance * findNext( ANetNodeInstance * NNI ); 339 ANetNodeInstance * findNext( ANetNodeInstance * NNI );
340 ANetNodeInstance * findByName( const QString & S ); 340 ANetNodeInstance * findByName( const QString & S );
341 341
342 const QString & name() 342 const QString & name()
343 { return Name; } 343 { return Name; }
344 344
345 const QString & description( void ); 345 const QString & description( void );
346 346
347 void setName( const QString & N) 347 void setName( const QString & N)
348 { Name = N; } 348 { Name = N; }
349 349
350 State_t currentState( void ) 350 State_t currentState( void )
351 { return CurrentState; } 351 { return CurrentState; }
352 void setCurrentState( State_t S ) 352 void setCurrentState( State_t S )
353 { CurrentState = S; } 353 { CurrentState = S; }
354 354
355 long maxConnectionNumber( void ) 355 long maxConnectionNumber( void )
356 { return MaxNr; } 356 { return MaxNr; }
357 357
358 static void resetMaxNr( void ) 358 static void resetMaxNr( void )
359 { MaxNr = -1; } 359 { MaxNr = -1; }
360 360
361private : 361private :
362 362
363 int compareItems ( QCollection::Item item1, 363 int compareItems ( QCollection::Item item1,
364 QCollection::Item item2 ); 364 QCollection::Item item2 );
365 365
366 static long MaxNr; 366 static long MaxNr;
367 long Number; 367 long Number;
368 368
369 // state of this connection 369 // state of this connection
370 State_t CurrentState; 370 State_t CurrentState;
371 371
372 QString Name; 372 QString Name;
373 // true if this collection was just created (and not 373 // true if this collection was just created (and not
374 // loaded from file 374 // loaded from file
375 bool IsNew; 375 bool IsNew;
376 // index in listbox 376 // index in listbox
377 int Index; 377 int Index;
378 bool IsModified; 378 bool IsModified;
379 379
380}; 380};
381 381
382#endif 382#endif
diff --git a/noncore/settings/networksettings2/networksettings2/networksettings2.pro b/noncore/settings/networksettings2/networksettings2/networksettings2.pro
index 11b5f84..f97c93b 100644
--- a/noncore/settings/networksettings2/networksettings2/networksettings2.pro
+++ b/noncore/settings/networksettings2/networksettings2/networksettings2.pro
@@ -1,26 +1,28 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3 #CONFIG += qt warn_on debug 3 #CONFIG += qt warn_on debug
4 DESTDIR = $(OPIEDIR)/lib$(PROJMAK) 4 DESTDIR = $(OPIEDIR)/lib$(PROJMAK)
5 HEADERS = netnode.h \ 5 HEADERS = netnode.h \
6 resources.h \ 6 resources.h \
7 system.h \ 7 system.h \
8 asline.h \ 8 asline.h \
9 GUIUtils.h \ 9 GUIUtils.h \
10 asconnection.h \ 10 asconnection.h \
11 asfullsetup.h \ 11 asfullsetup.h \
12 systemfile.h \ 12 systemfile.h \
13 wextensions.h \
13 asdevice.h 14 asdevice.h
14 SOURCES = netnode.cpp \ 15 SOURCES = netnode.cpp \
15 GUIUtils.cpp \ 16 GUIUtils.cpp \
16 system.cpp \ 17 system.cpp \
17 systemfile.cpp \ 18 systemfile.cpp \
19 wextensions.cpp \
18 resources.cpp 20 resources.cpp
19 INCLUDEPATH+= $(OPIEDIR)/include ../networksettings2 21 INCLUDEPATH+= $(OPIEDIR)/include ../networksettings2
20 DEPENDPATH+= $(OPIEDIR)/include 22 DEPENDPATH+= $(OPIEDIR)/include
21LIBS += -lqpe -lopiecore2 23LIBS += -lqpe -lopiecore2
22 INTERFACES= 24 INTERFACES=
23 TARGET = networksettings2 25 TARGET = networksettings2
24 VERSION = 1.0.0 26 VERSION = 1.0.0
25 27
26include ( $(OPIEDIR)/include.pro ) 28include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp
index 4b7a62f..c95ac7f 100644
--- a/noncore/settings/networksettings2/networksettings2/resources.cpp
+++ b/noncore/settings/networksettings2/networksettings2/resources.cpp
@@ -1,369 +1,370 @@
1#include <unistd.h> 1#include <unistd.h>
2#include <errno.h> 2#include <errno.h>
3#include <fcntl.h> 3#include <fcntl.h>
4#include <pwd.h> 4#include <pwd.h>
5#include <qpixmap.h> 5#include <qpixmap.h>
6#include <qdir.h> 6#include <qdir.h>
7#include <qpe/qlibrary.h> 7#include <qpe/qlibrary.h>
8#include <qpe/qpeapplication.h> 8#include <qpe/qpeapplication.h>
9#include <opie2/odebug.h> 9#include <opie2/odebug.h>
10#include <qtopia/resource.h> 10#include <qtopia/resource.h>
11 11
12#include "netnode.h" 12#include "netnode.h"
13#include "resources.h" 13#include "resources.h"
14 14
15#define PLUGINDIR "plugins/networksettings2" 15#define PLUGINDIR "plugins/networksettings2"
16#define ICONDIR "/pics/networksettings2/" 16#define ICONDIR "/pics/networksettings2/"
17 17
18// single resources instance 18// single resources instance
19TheNSResources * _NSResources = 0; 19TheNSResources * _NSResources = 0;
20 20
21TheNSResources::TheNSResources( void ) : NodeTypeNameMap(), 21TheNSResources::TheNSResources( void ) : NodeTypeNameMap(),
22 ConnectionsMap() { 22 ConnectionsMap() {
23 23
24 _NSResources = this; 24 _NSResources = this;
25 25
26 // load available netnodes 26 // load available netnodes
27 findAvailableNetNodes(QPEApplication::qpeDir() + PLUGINDIR ); 27 findAvailableNetNodes(QPEApplication::qpeDir() + PLUGINDIR );
28 28
29 // compile provides and needs lists 29 // compile provides and needs lists
30 { const char ** NeedsRun; 30 { const char ** NeedsRun;
31 QDictIterator<NetNode_t> OuterIt( AllNodeTypes ); 31 QDictIterator<NetNode_t> OuterIt( AllNodeTypes );
32 bool Done; 32 bool Done;
33 33
34 for ( ; OuterIt.current(); ++OuterIt ) { 34 for ( ; OuterIt.current(); ++OuterIt ) {
35 // find needs list 35 // find needs list
36 ANetNode::NetNodeList * NNLP = new ANetNode::NetNodeList; 36 ANetNode::NetNodeList * NNLP = new ANetNode::NetNodeList;
37 ANetNode::NetNodeList & NNL = *(NNLP); 37 ANetNode::NetNodeList & NNL = *(NNLP);
38 38
39 // must iterate this way to avoid duplication pointers 39 // must iterate this way to avoid duplication pointers
40 for ( QDictIterator<NetNode_t> InnerIt( AllNodeTypes ); 40 for ( QDictIterator<NetNode_t> InnerIt( AllNodeTypes );
41 InnerIt.current(); ++InnerIt ) { 41 InnerIt.current(); ++InnerIt ) {
42 if( InnerIt.current() == OuterIt.current() ) 42 if( InnerIt.current() == OuterIt.current() )
43 // avoid recursive 43 // avoid recursive
44 continue; 44 continue;
45 45
46 const char * Provides = InnerIt.current()->NetNode->provides(); 46 const char * Provides = InnerIt.current()->NetNode->provides();
47 NeedsRun = OuterIt.current()->NetNode->needs(); 47 NeedsRun = OuterIt.current()->NetNode->needs();
48 for( ; *NeedsRun; NeedsRun ++ ) { 48 for( ; *NeedsRun; NeedsRun ++ ) {
49 if( strcmp( Provides, *NeedsRun ) == 0 ) { 49 if( strcmp( Provides, *NeedsRun ) == 0 ) {
50 // inner provides what outer needs 50 // inner provides what outer needs
51 NNL.resize( NNL.size() + 1 ); 51 NNL.resize( NNL.size() + 1 );
52 NNL[NNL.size()-1] = InnerIt.current()->NetNode; 52 NNL[NNL.size()-1] = InnerIt.current()->NetNode;
53 Done = 1; // break from 2 loops 53 Done = 1; // break from 2 loops
54 break; 54 break;
55 } 55 }
56 } 56 }
57 } 57 }
58 OuterIt.current()->NetNode->setAlternatives( NNLP ); 58 OuterIt.current()->NetNode->setAlternatives( NNLP );
59 } 59 }
60 } 60 }
61 61
62 // define Node types to Description map 62 // define Node types to Description map
63 NodeTypeNameMap.insert( "device", tr( "Network Device" ) ); 63 NodeTypeNameMap.insert( "device", tr( "Network Device" ) );
64 NodeTypeNameMap.insert( "line", tr( "Character device" ) ); 64 NodeTypeNameMap.insert( "line", tr( "Character device" ) );
65 NodeTypeNameMap.insert( "connection", tr( "IP Connection" ) ); 65 NodeTypeNameMap.insert( "connection", tr( "IP Connection" ) );
66 NodeTypeNameMap.insert( "fullsetup", tr( "Connection Profile" ) ); 66 NodeTypeNameMap.insert( "fullsetup", tr( "Connection Profile" ) );
67 67
68 NodeTypeDescriptionMap.insert( "device", 68 NodeTypeDescriptionMap.insert( "device",
69 tr( "<p>Devices that can handle IP packets</p>" ) ); 69 tr( "<p>Devices that can handle IP packets</p>" ) );
70 NodeTypeDescriptionMap.insert( "line", 70 NodeTypeDescriptionMap.insert( "line",
71 tr( "<p>Devices that can handle single bytes</p>" ) ); 71 tr( "<p>Devices that can handle single bytes</p>" ) );
72 NodeTypeDescriptionMap.insert( "connection", 72 NodeTypeDescriptionMap.insert( "connection",
73 tr( "<p>Nodes that provide working IP connections</p>" ) ); 73 tr( "<p>Nodes that provide working IP connections</p>" ) );
74 NodeTypeDescriptionMap.insert( "fullsetup", 74 NodeTypeDescriptionMap.insert( "fullsetup",
75 tr( "<p>Fully configured connection profile</p>" ) ); 75 tr( "<p>Fully configured connection profile</p>" ) );
76 76
77 // define system files 77 // define system files
78 addSystemFile( new SystemFile( "interfaces", "./interfaces" ) ); 78 addSystemFile( new SystemFile( "interfaces", "./interfaces" ) );
79 79
80 // get access to the system 80 // get access to the system
81 TheSystem = new System(); 81 TheSystem = new System();
82 82
83 detectCurrentUser(); 83 detectCurrentUser();
84} 84}
85 85
86TheNSResources::~TheNSResources( void ) { 86TheNSResources::~TheNSResources( void ) {
87 delete TheSystem; 87 delete TheSystem;
88} 88}
89 89
90/** 90/**
91 * Load all modules that are found in the path 91 * Load all modules that are found in the path
92 * @param path a directory that is scaned for any plugins that can be loaded 92 * @param path a directory that is scaned for any plugins that can be loaded
93 * and attempts to load them 93 * and attempts to load them
94 */ 94 */
95void TheNSResources::findAvailableNetNodes(const QString &path){ 95void TheNSResources::findAvailableNetNodes(const QString &path){
96 96
97 QDir d(path); 97 QDir d(path);
98 if(!d.exists()) 98 if(!d.exists())
99 return; 99 return;
100 100
101 QString lang = ::getenv("LANG"); 101 QString lang = ::getenv("LANG");
102 102
103 // Don't want sym links 103 // Don't want sym links
104 d.setFilter( QDir::Files | QDir::NoSymLinks ); 104 d.setFilter( QDir::Files | QDir::NoSymLinks );
105 const QFileInfoList *list = d.entryInfoList(); 105 const QFileInfoList *list = d.entryInfoList();
106 QFileInfoListIterator it( *list ); 106 QFileInfoListIterator it( *list );
107 QFileInfo *fi; 107 QFileInfo *fi;
108 108
109 while ( (fi=it.current()) ) { 109 while ( (fi=it.current()) ) {
110 110
111 if( fi->fileName().contains(".so")){ 111 if( fi->fileName().contains(".so")){
112 /* if loaded install translation */ 112 /* if loaded install translation */
113 if( loadNetNode(path + "/" + fi->fileName()) ) { 113 if( loadNetNode(path + "/" + fi->fileName()) ) {
114 QTranslator *trans = new QTranslator(qApp); 114 QTranslator *trans = new QTranslator(qApp);
115 QString fn = QPEApplication::qpeDir()+ 115 QString fn = QPEApplication::qpeDir()+
116 "/i18n/"+lang+"/"+ 116 "/i18n/"+lang+"/"+
117 fi->fileName().left( fi->fileName().find(".") )+ 117 fi->fileName().left( fi->fileName().find(".") )+
118 ".qm"; 118 ".qm";
119 119
120 if( trans->load( fn ) ) 120 if( trans->load( fn ) )
121 qApp->installTranslator( trans ); 121 qApp->installTranslator( trans );
122 else 122 else
123 delete trans; 123 delete trans;
124 } 124 }
125 } 125 }
126 ++it; 126 ++it;
127 } 127 }
128} 128}
129 129
130/** 130/**
131 * Attempt to load a function and resolve a function. 131 * Attempt to load a function and resolve a function.
132 * @param pluginFileName - the name of the file in which to attempt to load 132 * @param pluginFileName - the name of the file in which to attempt to load
133 * @param resolveString - function pointer to resolve 133 * @param resolveString - function pointer to resolve
134 * @return true of loading is successful 134 * @return true of loading is successful
135 */ 135 */
136bool TheNSResources::loadNetNode( 136bool TheNSResources::loadNetNode(
137 const QString &pluginFileName, const QString &resolveString){ 137 const QString &pluginFileName, const QString &resolveString){
138 138
139 QLibrary *lib = new QLibrary(pluginFileName); 139 QLibrary *lib = new QLibrary(pluginFileName);
140 void * res = lib->resolve(resolveString); 140 void * res = lib->resolve(resolveString);
141 if( ! res ){ 141 if( ! res ){
142 delete lib; 142 delete lib;
143 return 0; 143 return 0;
144 } 144 }
145 145
146 GetNetNodeListFt_t getNetNodeList = (GetNetNodeListFt_t)res; 146 GetNetNodeListFt_t getNetNodeList = (GetNetNodeListFt_t)res;
147 147
148 // Try to get an object. 148 // Try to get an object.
149 QList<ANetNode> PNN; 149 QList<ANetNode> PNN;
150 150
151 getNetNodeList( PNN ); 151 getNetNodeList( PNN );
152 if( PNN.isEmpty() ) { 152 if( PNN.isEmpty() ) {
153 delete lib; 153 delete lib;
154 return 0; 154 return 0;
155 } 155 }
156 156
157 ANetNode * NNP; 157 ANetNode * NNP;
158 for( QListIterator<ANetNode> it(PNN); 158 for( QListIterator<ANetNode> it(PNN);
159 it.current(); 159 it.current();
160 ++it ) { 160 ++it ) {
161 NetNode_t * NN; 161 NetNode_t * NN;
162 162
163 NNP = it.current(); 163 NNP = it.current();
164 NN = new NetNode_t; 164 NN = new NetNode_t;
165 NN->NetNode = NNP; 165 NN->NetNode = NNP;
166 NN->TheLibrary = lib; 166 NN->TheLibrary = lib;
167 NN->NodeCountInLib = PNN.count(); 167 NN->NodeCountInLib = PNN.count();
168 168
169 // store mapping 169 // store mapping
170 printf( "Store %s\n", NN->NetNode->name() ); 170 printf( "Store %s\n", NN->NetNode->name() );
171 AllNodeTypes.insert( NN->NetNode->name(), NN ); 171 AllNodeTypes.insert( NN->NetNode->name(), NN );
172 } 172 }
173 173
174 return 1; 174 return 1;
175} 175}
176 176
177QPixmap TheNSResources::getPixmap( const QString & QS ) { 177QPixmap TheNSResources::getPixmap( const QString & QS ) {
178 QString S("networksettings2/"); 178 QString S("networksettings2/");
179 S += QS; 179 S += QS;
180 return Resource::loadPixmap( QString("networksettings2/")+QS ); 180 fprintf( stderr, "%s\n", S.latin1() );
181 return Resource::loadPixmap( S );
181} 182}
182 183
183QString TheNSResources::tr( const char * s ) { 184QString TheNSResources::tr( const char * s ) {
184 return qApp->translate( "resource", s ); 185 return qApp->translate( "resource", s );
185} 186}
186 187
187const QString & TheNSResources::netNode2Name( const char * s ) { 188const QString & TheNSResources::netNode2Name( const char * s ) {
188 return NodeTypeNameMap[s]; 189 return NodeTypeNameMap[s];
189} 190}
190 191
191const QString & TheNSResources::netNode2Description( const char * s ) { 192const QString & TheNSResources::netNode2Description( const char * s ) {
192 return NodeTypeDescriptionMap[s]; 193 return NodeTypeDescriptionMap[s];
193} 194}
194 195
195void TheNSResources::addConnection( NodeCollection * NC ) { 196void TheNSResources::addConnection( NodeCollection * NC ) {
196 ANetNodeInstance * NNI; 197 ANetNodeInstance * NNI;
197 ConnectionsMap.insert( NC->name(), NC ); 198 ConnectionsMap.insert( NC->name(), NC );
198 // add (new) nodes to NodeList 199 // add (new) nodes to NodeList
199 for( QListIterator<ANetNodeInstance> it(*NC); 200 for( QListIterator<ANetNodeInstance> it(*NC);
200 it.current(); 201 it.current();
201 ++it ) { 202 ++it ) {
202 NNI = it.current(); 203 NNI = it.current();
203 if( findNodeInstance( NNI->name() ) == 0 ) { 204 if( findNodeInstance( NNI->name() ) == 0 ) {
204 // new item 205 // new item
205 addNodeInstance( NNI ); 206 addNodeInstance( NNI );
206 } 207 }
207 } 208 }
208} 209}
209 210
210void TheNSResources::removeConnection( const QString & N ) { 211void TheNSResources::removeConnection( const QString & N ) {
211 NodeCollection * NC = findConnection( N ); 212 NodeCollection * NC = findConnection( N );
212 if( ! NC ) 213 if( ! NC )
213 return; 214 return;
214 215
215 // delete netnodes in this connection 216 // delete netnodes in this connection
216 ANetNodeInstance * NNI; 217 ANetNodeInstance * NNI;
217 for( NNI = NC->first(); NNI != 0; NNI = NC->next() ) { 218 for( NNI = NC->first(); NNI != 0; NNI = NC->next() ) {
218 removeNodeInstance( NNI->name() ); 219 removeNodeInstance( NNI->name() );
219 } 220 }
220 ConnectionsMap.remove( N ); 221 ConnectionsMap.remove( N );
221} 222}
222 223
223NodeCollection * TheNSResources::findConnection( const QString & S ) { 224NodeCollection * TheNSResources::findConnection( const QString & S ) {
224 return ConnectionsMap[ S ]; 225 return ConnectionsMap[ S ];
225} 226}
226 227
227void TheNSResources::renumberConnections( void ) { 228void TheNSResources::renumberConnections( void ) {
228 Name2Connection_t & M = NSResources->connections(); 229 Name2Connection_t & M = NSResources->connections();
229 NodeCollection * NC; 230 NodeCollection * NC;
230 231
231 // for all connections 232 // for all connections
232 NodeCollection::resetMaxNr(); 233 NodeCollection::resetMaxNr();
233 for( QDictIterator<NodeCollection> it(M); 234 for( QDictIterator<NodeCollection> it(M);
234 it.current(); 235 it.current();
235 ++it ) { 236 ++it ) {
236 NC = it.current(); 237 NC = it.current();
237 NC->setNumber( NC->maxConnectionNumber()+1 ); 238 NC->setNumber( NC->maxConnectionNumber()+1 );
238 NC->setModified( 1 ); 239 NC->setModified( 1 );
239 } 240 }
240} 241}
241 242
242typedef struct EnvVars { 243typedef struct EnvVars {
243 char * Name; 244 char * Name;
244 int Len; 245 int Len;
245} EnvVar_t; 246} EnvVar_t;
246 247
247#define AnEV(x) x, sizeof(x)-1 248#define AnEV(x) x, sizeof(x)-1
248 249
249static EnvVar_t EV[] = { 250static EnvVar_t EV[] = {
250 // AnEV( "HOME=" ), -> SPECIAL 251 // AnEV( "HOME=" ), -> SPECIAL
251 // AnEV( "LOGNAME=" ), -> SPECIAL 252 // AnEV( "LOGNAME=" ), -> SPECIAL
252 AnEV( "USER=" ), 253 AnEV( "USER=" ),
253 AnEV( "LD_LIBRARY_PATH=" ), 254 AnEV( "LD_LIBRARY_PATH=" ),
254 AnEV( "PATH=" ), 255 AnEV( "PATH=" ),
255 AnEV( "QTDIR=" ), 256 AnEV( "QTDIR=" ),
256 AnEV( "OPIEDIR=" ), 257 AnEV( "OPIEDIR=" ),
257 AnEV( "SHELL=" ), 258 AnEV( "SHELL=" ),
258 { NULL, 0 } 259 { NULL, 0 }
259}; 260};
260 261
261void TheNSResources::detectCurrentUser( void ) { 262void TheNSResources::detectCurrentUser( void ) {
262 // find current running qpe 263 // find current running qpe
263 QString QPEEnvFile = ""; 264 QString QPEEnvFile = "";
264 265
265 // open proc dir and find all dirs in it 266 // open proc dir and find all dirs in it
266 { QRegExp R("[0-9]+"); 267 { QRegExp R("[0-9]+");
267 QDir ProcDir( "/proc" ); 268 QDir ProcDir( "/proc" );
268 QString QPELoc = QPEApplication::qpeDir() + "bin/qpe"; 269 QString QPELoc = QPEApplication::qpeDir() + "bin/qpe";
269 QFileInfo FI; 270 QFileInfo FI;
270 QStringList EL = ProcDir.entryList( QDir::Dirs ); 271 QStringList EL = ProcDir.entryList( QDir::Dirs );
271 272
272 // print it out 273 // print it out
273 for ( QStringList::Iterator it = EL.begin(); 274 for ( QStringList::Iterator it = EL.begin();
274 it != EL.end(); 275 it != EL.end();
275 ++it ) { 276 ++it ) {
276 if( R.match( (*it) ) >= 0 ) { 277 if( R.match( (*it) ) >= 0 ) {
277 QString S = ProcDir.path()+"/"+ (*it); 278 QString S = ProcDir.path()+"/"+ (*it);
278 S.append( "/exe" ); 279 S.append( "/exe" );
279 FI.setFile( S ); 280 FI.setFile( S );
280 // get the linke 281 // get the linke
281 S = FI.readLink(); 282 S = FI.readLink();
282 if( S == QPELoc ) { 283 if( S == QPELoc ) {
283 // found running qpe 284 // found running qpe
284 QPEEnvFile.sprintf( ProcDir.path()+ "/" + (*it) + "/environ" ); 285 QPEEnvFile.sprintf( ProcDir.path()+ "/" + (*it) + "/environ" );
285 break; 286 break;
286 } 287 }
287 } 288 }
288 } 289 }
289 } 290 }
290 291
291 if( QPEEnvFile.isEmpty() ) { 292 if( QPEEnvFile.isEmpty() ) {
292 // could not find qpe 293 // could not find qpe
293 fprintf( stderr, "Could not find qpe\n" ); 294 fprintf( stderr, "Could not find qpe\n" );
294 return; 295 return;
295 } 296 }
296 297
297 // FI now contains path ProcDir to the cmd dir 298 // FI now contains path ProcDir to the cmd dir
298 { char * Buf = 0; 299 { char * Buf = 0;
299 char TB[1024]; 300 char TB[1024];
300 long BufSize = 0; 301 long BufSize = 0;
301 int fd; 302 int fd;
302 int rd; 303 int rd;
303 304
304 fd = open( QPEEnvFile.latin1(), O_RDONLY ); 305 fd = open( QPEEnvFile.latin1(), O_RDONLY );
305 if( fd < 0 ) { 306 if( fd < 0 ) {
306 fprintf( stderr, "Could not open %s : %d\n", 307 fprintf( stderr, "Could not open %s : %d\n",
307 QPEEnvFile.latin1(), errno ); 308 QPEEnvFile.latin1(), errno );
308 return; 309 return;
309 } 310 }
310 311
311 while( (rd = read( fd, TB, sizeof(TB) ) ) > 0 ) { 312 while( (rd = read( fd, TB, sizeof(TB) ) ) > 0 ) {
312 Buf = (char *)realloc( Buf, BufSize+rd ); 313 Buf = (char *)realloc( Buf, BufSize+rd );
313 memcpy( Buf+BufSize, TB, rd ); 314 memcpy( Buf+BufSize, TB, rd );
314 BufSize += rd; 315 BufSize += rd;
315 } 316 }
316 317
317 char * Data = Buf; 318 char * Data = Buf;
318 char * DataEnd = Data+BufSize-1; 319 char * DataEnd = Data+BufSize-1;
319 320
320 // get env items out of list 321 // get env items out of list
321 while( Data < DataEnd ) { 322 while( Data < DataEnd ) {
322 if( strncmp( Data, "LOGNAME=", 8 ) == 0 ) { 323 if( strncmp( Data, "LOGNAME=", 8 ) == 0 ) {
323 CurrentUser.UserName = Data+8; 324 CurrentUser.UserName = Data+8;
324 CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); 325 CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
325 CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = 326 CurrentUser.EnvList[CurrentUser.EnvList.size()-1] =
326 strdup( Data ); 327 strdup( Data );
327 } else if( strncmp( Data, "HOME=", 5 ) == 0 ) { 328 } else if( strncmp( Data, "HOME=", 5 ) == 0 ) {
328 CurrentUser.HomeDir = Data+5; 329 CurrentUser.HomeDir = Data+5;
329 CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); 330 CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
330 CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = 331 CurrentUser.EnvList[CurrentUser.EnvList.size()-1] =
331 strdup( Data ); 332 strdup( Data );
332 } else { 333 } else {
333 EnvVar_t * Run = EV; 334 EnvVar_t * Run = EV;
334 while( Run->Name ) { 335 while( Run->Name ) {
335 if( strncmp( Data, Run->Name, Run->Len ) == 0 ) { 336 if( strncmp( Data, Run->Name, Run->Len ) == 0 ) {
336 CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); 337 CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
337 CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = 338 CurrentUser.EnvList[CurrentUser.EnvList.size()-1] =
338 strdup( Data ); 339 strdup( Data );
339 break; 340 break;
340 } 341 }
341 Run ++; 342 Run ++;
342 } 343 }
343 } 344 }
344 345
345 Data += strlen( Data )+1; 346 Data += strlen( Data )+1;
346 } 347 }
347 348
348 free( Buf ); 349 free( Buf );
349 350
350 if( ! CurrentUser.UserName.isEmpty() ) { 351 if( ! CurrentUser.UserName.isEmpty() ) {
351 // find user info 352 // find user info
352 struct passwd pwd; 353 struct passwd pwd;
353 struct passwd * pwdres; 354 struct passwd * pwdres;
354 355
355 if( getpwnam_r( CurrentUser.UserName.latin1(), 356 if( getpwnam_r( CurrentUser.UserName.latin1(),
356 &pwd, TB, sizeof(TB), &pwdres ) || 357 &pwd, TB, sizeof(TB), &pwdres ) ||
357 pwdres == 0 ) { 358 pwdres == 0 ) {
358 fprintf( stderr, "Could not determine user %s : %d\n", 359 fprintf( stderr, "Could not determine user %s : %d\n",
359 CurrentUser.UserName.latin1(), errno ); 360 CurrentUser.UserName.latin1(), errno );
360 return; 361 return;
361 } 362 }
362 CurrentUser.Uid = pwd.pw_uid; 363 CurrentUser.Uid = pwd.pw_uid;
363 CurrentUser.Gid = pwd.pw_gid; 364 CurrentUser.Gid = pwd.pw_gid;
364 } else{ 365 } else{
365 CurrentUser.Uid = 366 CurrentUser.Uid =
366 CurrentUser.Gid = -1; 367 CurrentUser.Gid = -1;
367 } 368 }
368 } 369 }
369} 370}
diff --git a/noncore/settings/networksettings2/networksettingsGUI.ui b/noncore/settings/networksettings2/networksettingsGUI.ui
index 1d79123..7ef2f64 100644
--- a/noncore/settings/networksettings2/networksettingsGUI.ui
+++ b/noncore/settings/networksettings2/networksettingsGUI.ui
@@ -1,457 +1,630 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>NetworkSettingsGUI</class> 2<class>NetworkSettingsGUI</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>NetworkSettingsGUI</cstring> 7 <cstring>NetworkSettingsGUI</cstring>
8 </property> 8 </property>
9 <property stdset="1"> 9 <property stdset="1">
10 <name>geometry</name> 10 <name>geometry</name>
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>399</width> 14 <width>160</width>
15 <height>502</height> 15 <height>260</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Network Settings</string> 20 <string>Network Settings</string>
21 </property> 21 </property>
22 <property> 22 <property>
23 <name>layoutMargin</name> 23 <name>layoutMargin</name>
24 </property> 24 </property>
25 <property> 25 <property>
26 <name>layoutSpacing</name> 26 <name>layoutSpacing</name>
27 </property> 27 </property>
28 <vbox> 28 <vbox>
29 <property stdset="1"> 29 <property stdset="1">
30 <name>margin</name> 30 <name>margin</name>
31 <number>0</number> 31 <number>0</number>
32 </property> 32 </property>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>0</number> 35 <number>2</number>
36 </property> 36 </property>
37 <widget> 37 <widget>
38 <class>QFrame</class> 38 <class>QFrame</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>Frame4</cstring> 41 <cstring>Frame4</cstring>
42 </property> 42 </property>
43 <property stdset="1"> 43 <property stdset="1">
44 <name>sizePolicy</name> 44 <name>sizePolicy</name>
45 <sizepolicy> 45 <sizepolicy>
46 <hsizetype>7</hsizetype> 46 <hsizetype>7</hsizetype>
47 <vsizetype>0</vsizetype> 47 <vsizetype>0</vsizetype>
48 </sizepolicy> 48 </sizepolicy>
49 </property> 49 </property>
50 <property stdset="1"> 50 <property stdset="1">
51 <name>frameShape</name> 51 <name>frameShape</name>
52 <enum>NoFrame</enum> 52 <enum>NoFrame</enum>
53 </property> 53 </property>
54 <property stdset="1"> 54 <property stdset="1">
55 <name>frameShadow</name> 55 <name>frameShadow</name>
56 <enum>Raised</enum> 56 <enum>Raised</enum>
57 </property> 57 </property>
58 <property> 58 <property>
59 <name>layoutMargin</name> 59 <name>layoutMargin</name>
60 </property> 60 </property>
61 <property> 61 <property>
62 <name>layoutSpacing</name> 62 <name>layoutSpacing</name>
63 </property> 63 </property>
64 <hbox> 64 <hbox>
65 <property stdset="1"> 65 <property stdset="1">
66 <name>margin</name> 66 <name>margin</name>
67 <number>0</number> 67 <number>0</number>
68 </property> 68 </property>
69 <property stdset="1"> 69 <property stdset="1">
70 <name>spacing</name> 70 <name>spacing</name>
71 <number>1</number> 71 <number>1</number>
72 </property> 72 </property>
73 <widget> 73 <widget>
74 <class>QToolButton</class> 74 <class>QToolButton</class>
75 <property stdset="1"> 75 <property stdset="1">
76 <name>name</name> 76 <name>name</name>
77 <cstring>Add_TB</cstring> 77 <cstring>Add_TB</cstring>
78 </property> 78 </property>
79 <property stdset="1"> 79 <property stdset="1">
80 <name>sizePolicy</name> 80 <name>sizePolicy</name>
81 <sizepolicy> 81 <sizepolicy>
82 <hsizetype>0</hsizetype> 82 <hsizetype>0</hsizetype>
83 <vsizetype>0</vsizetype> 83 <vsizetype>0</vsizetype>
84 </sizepolicy> 84 </sizepolicy>
85 </property> 85 </property>
86 <property stdset="1"> 86 <property stdset="1">
87 <name>text</name> 87 <name>text</name>
88 <string>...</string> 88 <string>...</string>
89 </property> 89 </property>
90 </widget> 90 </widget>
91 <widget> 91 <widget>
92 <class>QToolButton</class> 92 <class>QToolButton</class>
93 <property stdset="1"> 93 <property stdset="1">
94 <name>name</name> 94 <name>name</name>
95 <cstring>Delete_TB</cstring> 95 <cstring>Delete_TB</cstring>
96 </property> 96 </property>
97 <property stdset="1"> 97 <property stdset="1">
98 <name>sizePolicy</name> 98 <name>sizePolicy</name>
99 <sizepolicy> 99 <sizepolicy>
100 <hsizetype>0</hsizetype> 100 <hsizetype>0</hsizetype>
101 <vsizetype>0</vsizetype> 101 <vsizetype>0</vsizetype>
102 </sizepolicy> 102 </sizepolicy>
103 </property> 103 </property>
104 <property stdset="1"> 104 <property stdset="1">
105 <name>text</name> 105 <name>text</name>
106 <string>...</string> 106 <string>...</string>
107 </property> 107 </property>
108 </widget> 108 </widget>
109 <widget> 109 <widget>
110 <class>QToolButton</class> 110 <class>QToolButton</class>
111 <property stdset="1"> 111 <property stdset="1">
112 <name>name</name> 112 <name>name</name>
113 <cstring>CheckState_TB</cstring> 113 <cstring>CheckState_TB</cstring>
114 </property> 114 </property>
115 <property stdset="1"> 115 <property stdset="1">
116 <name>sizePolicy</name> 116 <name>sizePolicy</name>
117 <sizepolicy> 117 <sizepolicy>
118 <hsizetype>0</hsizetype> 118 <hsizetype>0</hsizetype>
119 <vsizetype>0</vsizetype> 119 <vsizetype>0</vsizetype>
120 </sizepolicy> 120 </sizepolicy>
121 </property> 121 </property>
122 <property stdset="1"> 122 <property stdset="1">
123 <name>text</name> 123 <name>text</name>
124 <string>...</string> 124 <string>...</string>
125 </property> 125 </property>
126 </widget> 126 </widget>
127 <widget> 127 <widget>
128 <class>QToolButton</class> 128 <class>QToolButton</class>
129 <property stdset="1"> 129 <property stdset="1">
130 <name>name</name> 130 <name>name</name>
131 <cstring>GenConfig_TB</cstring> 131 <cstring>GenConfig_TB</cstring>
132 </property> 132 </property>
133 <property stdset="1"> 133 <property stdset="1">
134 <name>sizePolicy</name> 134 <name>sizePolicy</name>
135 <sizepolicy> 135 <sizepolicy>
136 <hsizetype>0</hsizetype> 136 <hsizetype>0</hsizetype>
137 <vsizetype>0</vsizetype> 137 <vsizetype>0</vsizetype>
138 </sizepolicy> 138 </sizepolicy>
139 </property> 139 </property>
140 <property stdset="1"> 140 <property stdset="1">
141 <name>text</name> 141 <name>text</name>
142 <string>...</string> 142 <string>...</string>
143 </property> 143 </property>
144 </widget> 144 </widget>
145 <spacer> 145 <spacer>
146 <property> 146 <property>
147 <name>name</name> 147 <name>name</name>
148 <cstring>Spacer1</cstring> 148 <cstring>Spacer1</cstring>
149 </property> 149 </property>
150 <property stdset="1"> 150 <property stdset="1">
151 <name>orientation</name> 151 <name>orientation</name>
152 <enum>Horizontal</enum> 152 <enum>Horizontal</enum>
153 </property> 153 </property>
154 <property stdset="1"> 154 <property stdset="1">
155 <name>sizeType</name> 155 <name>sizeType</name>
156 <enum>Expanding</enum> 156 <enum>Expanding</enum>
157 </property> 157 </property>
158 <property> 158 <property>
159 <name>sizeHint</name> 159 <name>sizeHint</name>
160 <size> 160 <size>
161 <width>20</width> 161 <width>20</width>
162 <height>20</height> 162 <height>20</height>
163 </size> 163 </size>
164 </property> 164 </property>
165 </spacer> 165 </spacer>
166 <widget> 166 <widget>
167 <class>QToolButton</class> 167 <class>QToolButton</class>
168 <property stdset="1"> 168 <property stdset="1">
169 <name>name</name> 169 <name>name</name>
170 <cstring>On_TB</cstring> 170 <cstring>Enable_TB</cstring>
171 </property> 171 </property>
172 <property stdset="1"> 172 <property stdset="1">
173 <name>sizePolicy</name> 173 <name>sizePolicy</name>
174 <sizepolicy> 174 <sizepolicy>
175 <hsizetype>0</hsizetype> 175 <hsizetype>0</hsizetype>
176 <vsizetype>0</vsizetype> 176 <vsizetype>0</vsizetype>
177 </sizepolicy> 177 </sizepolicy>
178 </property> 178 </property>
179 <property stdset="1"> 179 <property stdset="1">
180 <name>text</name> 180 <name>text</name>
181 <string>...</string> 181 <string>...</string>
182 </property> 182 </property>
183 <property stdset="1"> 183 <property stdset="1">
184 <name>toggleButton</name> 184 <name>toggleButton</name>
185 <bool>true</bool> 185 <bool>true</bool>
186 </property> 186 </property>
187 <property stdset="1"> 187 <property stdset="1">
188 <name>toggleButton</name> 188 <name>toggleButton</name>
189 <bool>true</bool> 189 <bool>true</bool>
190 </property> 190 </property>
191 </widget> 191 </widget>
192 <widget> 192 <widget>
193 <class>QToolButton</class> 193 <class>QToolButton</class>
194 <property stdset="1"> 194 <property stdset="1">
195 <name>name</name> 195 <name>name</name>
196 <cstring>Enable_TB</cstring> 196 <cstring>On_TB</cstring>
197 </property> 197 </property>
198 <property stdset="1"> 198 <property stdset="1">
199 <name>sizePolicy</name> 199 <name>sizePolicy</name>
200 <sizepolicy> 200 <sizepolicy>
201 <hsizetype>0</hsizetype> 201 <hsizetype>0</hsizetype>
202 <vsizetype>0</vsizetype> 202 <vsizetype>0</vsizetype>
203 </sizepolicy> 203 </sizepolicy>
204 </property> 204 </property>
205 <property stdset="1"> 205 <property stdset="1">
206 <name>text</name> 206 <name>text</name>
207 <string>...</string> 207 <string>...</string>
208 </property> 208 </property>
209 <property stdset="1"> 209 <property stdset="1">
210 <name>toggleButton</name> 210 <name>toggleButton</name>
211 <bool>true</bool> 211 <bool>true</bool>
212 </property> 212 </property>
213 <property stdset="1"> 213 <property stdset="1">
214 <name>toggleButton</name> 214 <name>toggleButton</name>
215 <bool>true</bool> 215 <bool>true</bool>
216 </property> 216 </property>
217 </widget> 217 </widget>
218 <widget> 218 <widget>
219 <class>QToolButton</class> 219 <class>QToolButton</class>
220 <property stdset="1"> 220 <property stdset="1">
221 <name>name</name> 221 <name>name</name>
222 <cstring>Connect_TB</cstring> 222 <cstring>Connect_TB</cstring>
223 </property> 223 </property>
224 <property stdset="1"> 224 <property stdset="1">
225 <name>sizePolicy</name> 225 <name>sizePolicy</name>
226 <sizepolicy> 226 <sizepolicy>
227 <hsizetype>0</hsizetype> 227 <hsizetype>0</hsizetype>
228 <vsizetype>0</vsizetype> 228 <vsizetype>0</vsizetype>
229 </sizepolicy> 229 </sizepolicy>
230 </property> 230 </property>
231 <property stdset="1"> 231 <property stdset="1">
232 <name>text</name> 232 <name>text</name>
233 <string>...</string> 233 <string>...</string>
234 </property> 234 </property>
235 <property stdset="1"> 235 <property stdset="1">
236 <name>toggleButton</name> 236 <name>toggleButton</name>
237 <bool>true</bool> 237 <bool>true</bool>
238 </property> 238 </property>
239 <property stdset="1"> 239 <property stdset="1">
240 <name>toggleButton</name> 240 <name>toggleButton</name>
241 <bool>true</bool> 241 <bool>true</bool>
242 </property> 242 </property>
243 </widget> 243 </widget>
244 <widget>
245 <class>QToolButton</class>
246 <property stdset="1">
247 <name>name</name>
248 <cstring>Disconnect_TB</cstring>
249 </property>
250 <property stdset="1">
251 <name>sizePolicy</name>
252 <sizepolicy>
253 <hsizetype>0</hsizetype>
254 <vsizetype>0</vsizetype>
255 </sizepolicy>
256 </property>
257 <property stdset="1">
258 <name>text</name>
259 <string>...</string>
260 </property>
261 <property stdset="1">
262 <name>toggleButton</name>
263 <bool>true</bool>
264 </property>
265 <property stdset="1">
266 <name>toggleButton</name>
267 <bool>true</bool>
268 </property>
269 </widget>
244 </hbox> 270 </hbox>
245 </widget> 271 </widget>
246 <widget> 272 <widget>
247 <class>QListBox</class> 273 <class>QListBox</class>
248 <property stdset="1"> 274 <property stdset="1">
249 <name>name</name> 275 <name>name</name>
250 <cstring>Profiles_LB</cstring> 276 <cstring>Profiles_LB</cstring>
251 </property> 277 </property>
252 </widget> 278 </widget>
253 <widget> 279 <widget>
254 <class>QGroupBox</class> 280 <class>QGroupBox</class>
255 <property stdset="1"> 281 <property stdset="1">
256 <name>name</name> 282 <name>name</name>
257 <cstring>CurProfile_GB</cstring> 283 <cstring>Profile_GB</cstring>
258 </property>
259 <property stdset="1">
260 <name>sizePolicy</name>
261 <sizepolicy>
262 <hsizetype>5</hsizetype>
263 <vsizetype>1</vsizetype>
264 </sizepolicy>
265 </property> 284 </property>
266 <property stdset="1"> 285 <property stdset="1">
267 <name>title</name> 286 <name>title</name>
268 <string></string> 287 <string>Profile</string>
269 </property> 288 </property>
270 <property> 289 <property>
271 <name>layoutMargin</name> 290 <name>layoutMargin</name>
272 </property> 291 </property>
273 <property> 292 <property>
274 <name>layoutSpacing</name> 293 <name>layoutSpacing</name>
275 </property> 294 </property>
276 <vbox> 295 <vbox>
277 <property stdset="1"> 296 <property stdset="1">
278 <name>margin</name> 297 <name>margin</name>
279 <number>4</number> 298 <number>4</number>
280 </property> 299 </property>
281 <property stdset="1"> 300 <property stdset="1">
282 <name>spacing</name> 301 <name>spacing</name>
283 <number>1</number> 302 <number>2</number>
284 </property> 303 </property>
285 <widget> 304 <widget>
286 <class>QLayoutWidget</class> 305 <class>QLayoutWidget</class>
287 <property stdset="1"> 306 <property stdset="1">
288 <name>name</name> 307 <name>name</name>
289 <cstring>Layout3</cstring> 308 <cstring>Layout3</cstring>
290 </property> 309 </property>
291 <hbox> 310 <hbox>
292 <property stdset="1"> 311 <property stdset="1">
293 <name>margin</name> 312 <name>margin</name>
294 <number>0</number> 313 <number>0</number>
295 </property> 314 </property>
296 <property stdset="1"> 315 <property stdset="1">
297 <name>spacing</name> 316 <name>spacing</name>
298 <number>6</number> 317 <number>6</number>
299 </property> 318 </property>
300 <widget> 319 <widget>
301 <class>QLabel</class> 320 <class>QLabel</class>
302 <property stdset="1"> 321 <property stdset="1">
303 <name>name</name> 322 <name>name</name>
304 <cstring>TextLabel2</cstring> 323 <cstring>TextLabel2_2</cstring>
305 </property> 324 </property>
306 <property stdset="1"> 325 <property stdset="1">
307 <name>text</name> 326 <name>text</name>
308 <string>State</string> 327 <string>State</string>
309 </property> 328 </property>
310 </widget> 329 </widget>
311 <widget> 330 <widget>
312 <class>QLabel</class> 331 <class>QLabel</class>
313 <property stdset="1"> 332 <property stdset="1">
314 <name>name</name> 333 <name>name</name>
315 <cstring>State_LBL</cstring> 334 <cstring>State_LBL</cstring>
316 </property> 335 </property>
317 <property stdset="1"> 336 <property stdset="1">
318 <name>text</name> 337 <name>text</name>
319 <string>State</string> 338 <string>State</string>
320 </property> 339 </property>
321 <property stdset="1"> 340 <property stdset="1">
322 <name>indent</name> 341 <name>indent</name>
323 <number>0</number> 342 <number>0</number>
324 </property> 343 </property>
325 </widget> 344 </widget>
326 <spacer> 345 <spacer>
327 <property> 346 <property>
328 <name>name</name> 347 <name>name</name>
329 <cstring>Spacer6</cstring> 348 <cstring>Spacer6_2</cstring>
330 </property> 349 </property>
331 <property stdset="1"> 350 <property stdset="1">
332 <name>orientation</name> 351 <name>orientation</name>
333 <enum>Horizontal</enum> 352 <enum>Horizontal</enum>
334 </property> 353 </property>
335 <property stdset="1"> 354 <property stdset="1">
336 <name>sizeType</name> 355 <name>sizeType</name>
337 <enum>Expanding</enum> 356 <enum>Expanding</enum>
338 </property> 357 </property>
339 <property> 358 <property>
340 <name>sizeHint</name> 359 <name>sizeHint</name>
341 <size> 360 <size>
342 <width>20</width> 361 <width>20</width>
343 <height>20</height> 362 <height>20</height>
344 </size> 363 </size>
345 </property> 364 </property>
346 </spacer> 365 </spacer>
347 </hbox> 366 </hbox>
348 </widget> 367 </widget>
349 <widget> 368 <widget>
350 <class>QLabel</class> 369 <class>QLabel</class>
351 <property stdset="1"> 370 <property stdset="1">
352 <name>name</name> 371 <name>name</name>
353 <cstring>Description_LBL</cstring> 372 <cstring>Description_LBL</cstring>
354 </property> 373 </property>
355 <property stdset="1"> 374 <property stdset="1">
356 <name>sizePolicy</name> 375 <name>sizePolicy</name>
357 <sizepolicy> 376 <sizepolicy>
358 <hsizetype>5</hsizetype> 377 <hsizetype>5</hsizetype>
359 <vsizetype>7</vsizetype> 378 <vsizetype>7</vsizetype>
360 </sizepolicy> 379 </sizepolicy>
361 </property> 380 </property>
362 <property stdset="1"> 381 <property stdset="1">
363 <name>frameShape</name> 382 <name>frameShape</name>
364 <enum>NoFrame</enum> 383 <enum>NoFrame</enum>
365 </property> 384 </property>
366 <property stdset="1"> 385 <property stdset="1">
367 <name>frameShadow</name> 386 <name>frameShadow</name>
368 <enum>Raised</enum> 387 <enum>Raised</enum>
369 </property> 388 </property>
370 <property stdset="1"> 389 <property stdset="1">
371 <name>text</name> 390 <name>text</name>
372 <string></string> 391 <string></string>
373 </property> 392 </property>
374 <property stdset="1"> 393 <property stdset="1">
375 <name>alignment</name> 394 <name>alignment</name>
376 <set>AlignTop|AlignLeft</set> 395 <set>AlignTop|AlignLeft</set>
377 </property> 396 </property>
378 <property> 397 <property>
379 <name>vAlign</name> 398 <name>vAlign</name>
380 </property> 399 </property>
381 </widget> 400 </widget>
401 <widget>
402 <class>QLayoutWidget</class>
403 <property stdset="1">
404 <name>name</name>
405 <cstring>Layout4</cstring>
406 </property>
407 <hbox>
408 <property stdset="1">
409 <name>margin</name>
410 <number>0</number>
411 </property>
412 <property stdset="1">
413 <name>spacing</name>
414 <number>6</number>
415 </property>
416 <spacer>
417 <property>
418 <name>name</name>
419 <cstring>Spacer4</cstring>
420 </property>
421 <property stdset="1">
422 <name>orientation</name>
423 <enum>Horizontal</enum>
424 </property>
425 <property stdset="1">
426 <name>sizeType</name>
427 <enum>Expanding</enum>
428 </property>
429 <property>
430 <name>sizeHint</name>
431 <size>
432 <width>20</width>
433 <height>20</height>
434 </size>
435 </property>
436 </spacer>
437 <widget>
438 <class>QPushButton</class>
439 <property stdset="1">
440 <name>name</name>
441 <cstring>ToMessages_BUT</cstring>
442 </property>
443 <property stdset="1">
444 <name>sizePolicy</name>
445 <sizepolicy>
446 <hsizetype>1</hsizetype>
447 <vsizetype>0</vsizetype>
448 </sizepolicy>
449 </property>
450 <property stdset="1">
451 <name>text</name>
452 <string>Messages ...</string>
453 </property>
454 </widget>
455 </hbox>
456 </widget>
457 </vbox>
458 </widget>
459 <widget>
460 <class>QGroupBox</class>
461 <property stdset="1">
462 <name>name</name>
463 <cstring>Messages_GB</cstring>
464 </property>
465 <property stdset="1">
466 <name>title</name>
467 <string>Messages</string>
468 </property>
469 <property>
470 <name>layoutMargin</name>
471 </property>
472 <property>
473 <name>layoutSpacing</name>
474 </property>
475 <vbox>
476 <property stdset="1">
477 <name>margin</name>
478 <number>4</number>
479 </property>
480 <property stdset="1">
481 <name>spacing</name>
482 <number>2</number>
483 </property>
484 <widget>
485 <class>QListBox</class>
486 <property stdset="1">
487 <name>name</name>
488 <cstring>Mesages_LB</cstring>
489 </property>
490 </widget>
491 <widget>
492 <class>QLayoutWidget</class>
493 <property stdset="1">
494 <name>name</name>
495 <cstring>Layout2</cstring>
496 </property>
497 <hbox>
498 <property stdset="1">
499 <name>margin</name>
500 <number>0</number>
501 </property>
502 <property stdset="1">
503 <name>spacing</name>
504 <number>6</number>
505 </property>
506 <spacer>
507 <property>
508 <name>name</name>
509 <cstring>Spacer3</cstring>
510 </property>
511 <property stdset="1">
512 <name>orientation</name>
513 <enum>Horizontal</enum>
514 </property>
515 <property stdset="1">
516 <name>sizeType</name>
517 <enum>Expanding</enum>
518 </property>
519 <property>
520 <name>sizeHint</name>
521 <size>
522 <width>20</width>
523 <height>20</height>
524 </size>
525 </property>
526 </spacer>
527 <widget>
528 <class>QPushButton</class>
529 <property stdset="1">
530 <name>name</name>
531 <cstring>ToProfile_BUT</cstring>
532 </property>
533 <property stdset="1">
534 <name>text</name>
535 <string>Profile ...</string>
536 </property>
537 </widget>
538 </hbox>
539 </widget>
382 </vbox> 540 </vbox>
383 </widget> 541 </widget>
384 </vbox> 542 </vbox>
385</widget> 543</widget>
386<connections> 544<connections>
387 <connection> 545 <connection>
388 <sender>Add_TB</sender> 546 <sender>Add_TB</sender>
389 <signal>clicked()</signal> 547 <signal>clicked()</signal>
390 <receiver>NetworkSettingsGUI</receiver> 548 <receiver>NetworkSettingsGUI</receiver>
391 <slot>SLOT_AddNode()</slot> 549 <slot>SLOT_AddNode()</slot>
392 </connection> 550 </connection>
393 <connection> 551 <connection>
394 <sender>Delete_TB</sender> 552 <sender>Delete_TB</sender>
395 <signal>clicked()</signal> 553 <signal>clicked()</signal>
396 <receiver>NetworkSettingsGUI</receiver> 554 <receiver>NetworkSettingsGUI</receiver>
397 <slot>SLOT_DeleteNode()</slot> 555 <slot>SLOT_DeleteNode()</slot>
398 </connection> 556 </connection>
399 <connection> 557 <connection>
400 <sender>CheckState_TB</sender> 558 <sender>CheckState_TB</sender>
401 <signal>clicked()</signal> 559 <signal>clicked()</signal>
402 <receiver>NetworkSettingsGUI</receiver> 560 <receiver>NetworkSettingsGUI</receiver>
403 <slot>SLOT_CheckState()</slot> 561 <slot>SLOT_CheckState()</slot>
404 </connection> 562 </connection>
405 <connection> 563 <connection>
406 <sender>Enable_TB</sender> 564 <sender>Enable_TB</sender>
407 <signal>clicked()</signal> 565 <signal>clicked()</signal>
408 <receiver>NetworkSettingsGUI</receiver> 566 <receiver>NetworkSettingsGUI</receiver>
409 <slot>SLOT_Enable()</slot> 567 <slot>SLOT_Enable()</slot>
410 </connection> 568 </connection>
411 <connection> 569 <connection>
412 <sender>Connect_TB</sender> 570 <sender>Connect_TB</sender>
413 <signal>clicked()</signal> 571 <signal>clicked()</signal>
414 <receiver>NetworkSettingsGUI</receiver> 572 <receiver>NetworkSettingsGUI</receiver>
415 <slot>SLOT_Connect()</slot> 573 <slot>SLOT_Connect()</slot>
416 </connection> 574 </connection>
417 <connection> 575 <connection>
418 <sender>On_TB</sender> 576 <sender>On_TB</sender>
419 <signal>clicked()</signal> 577 <signal>clicked()</signal>
420 <receiver>NetworkSettingsGUI</receiver> 578 <receiver>NetworkSettingsGUI</receiver>
421 <slot>SLOT_On()</slot> 579 <slot>SLOT_On()</slot>
422 </connection> 580 </connection>
423 <connection> 581 <connection>
424 <sender>GenConfig_TB</sender> 582 <sender>GenConfig_TB</sender>
425 <signal>clicked()</signal> 583 <signal>clicked()</signal>
426 <receiver>NetworkSettingsGUI</receiver> 584 <receiver>NetworkSettingsGUI</receiver>
427 <slot>SLOT_GenerateConfig()</slot> 585 <slot>SLOT_GenerateConfig()</slot>
428 </connection> 586 </connection>
429 <connection> 587 <connection>
430 <sender>Profiles_LB</sender> 588 <sender>Profiles_LB</sender>
431 <signal>clicked(QListBoxItem*)</signal> 589 <signal>clicked(QListBoxItem*)</signal>
432 <receiver>NetworkSettingsGUI</receiver> 590 <receiver>NetworkSettingsGUI</receiver>
433 <slot>SLOT_ShowNode( QListBoxItem*)</slot> 591 <slot>SLOT_ShowNode( QListBoxItem*)</slot>
434 </connection> 592 </connection>
435 <connection> 593 <connection>
436 <sender>Profiles_LB</sender> 594 <sender>Profiles_LB</sender>
437 <signal>currentChanged(QListBoxItem*)</signal> 595 <signal>currentChanged(QListBoxItem*)</signal>
438 <receiver>NetworkSettingsGUI</receiver> 596 <receiver>NetworkSettingsGUI</receiver>
439 <slot>SLOT_ShowNode( QListBoxItem*)</slot> 597 <slot>SLOT_ShowNode( QListBoxItem*)</slot>
440 </connection> 598 </connection>
441 <connection> 599 <connection>
442 <sender>Profiles_LB</sender> 600 <sender>Profiles_LB</sender>
443 <signal>doubleClicked(QListBoxItem*)</signal> 601 <signal>doubleClicked(QListBoxItem*)</signal>
444 <receiver>NetworkSettingsGUI</receiver> 602 <receiver>NetworkSettingsGUI</receiver>
445 <slot>SLOT_EditNode( QListBoxItem *)</slot> 603 <slot>SLOT_EditNode( QListBoxItem *)</slot>
446 </connection> 604 </connection>
605 <connection>
606 <sender>ToProfile_BUT</sender>
607 <signal>clicked()</signal>
608 <receiver>NetworkSettingsGUI</receiver>
609 <slot>SLOT_ToProfile()</slot>
610 </connection>
611 <connection>
612 <sender>ToMessages_BUT</sender>
613 <signal>clicked()</signal>
614 <receiver>NetworkSettingsGUI</receiver>
615 <slot>SLOT_ToMessages()</slot>
616 </connection>
447 <slot access="public">SLOT_AddNode()</slot> 617 <slot access="public">SLOT_AddNode()</slot>
448 <slot access="public">SLOT_CheckState()</slot> 618 <slot access="public">SLOT_CheckState()</slot>
449 <slot access="public">SLOT_Connect()</slot> 619 <slot access="public">SLOT_Connect()</slot>
450 <slot access="public">SLOT_DeleteNode()</slot> 620 <slot access="public">SLOT_DeleteNode()</slot>
451 <slot access="public">SLOT_EditNode( QListBoxItem *)</slot> 621 <slot access="public">SLOT_EditNode( QListBoxItem *)</slot>
452 <slot access="public">SLOT_Enable()</slot> 622 <slot access="public">SLOT_Enable()</slot>
453 <slot access="public">SLOT_GenerateConfig()</slot> 623 <slot access="public">SLOT_GenerateConfig()</slot>
454 <slot access="public">SLOT_On()</slot> 624 <slot access="public">SLOT_On()</slot>
455 <slot access="public">SLOT_ShowNode( QListBoxItem*)</slot> 625 <slot access="public">SLOT_ShowNode( QListBoxItem*)</slot>
626 <slot access="public">SLOT_ToMessages()</slot>
627 <slot access="public">SLOT_ToProfile()</slot>
628 <slot access="public">SLOT_Disconnect()</slot>
456</connections> 629</connections>
457</UI> 630</UI>
diff --git a/noncore/settings/networksettings2/ppp/ppprun.cpp b/noncore/settings/networksettings2/ppp/ppprun.cpp
index 8c75df3..a8abc50 100644
--- a/noncore/settings/networksettings2/ppp/ppprun.cpp
+++ b/noncore/settings/networksettings2/ppp/ppprun.cpp
@@ -1,82 +1,82 @@
1#include <resources.h> 1#include <resources.h>
2#include "ppprun.h" 2#include "ppprun.h"
3 3
4PPPRun::PPPRun( ANetNodeInstance * NNI, PPPData & Data ) : 4PPPRun::PPPRun( ANetNodeInstance * NNI, PPPData & Data ) :
5 AsConnection( NNI ), AsDevice( NNI ), Pat( "eth[0-9]" ) { 5 AsConnection( NNI ), AsDevice( NNI ), Pat( "eth[0-9]" ) {
6 D = &Data; 6 D = &Data;
7} 7}
8 8
9void PPPRun::detectState( NodeCollection * NC ) { 9void PPPRun::detectState( NodeCollection * NC ) {
10 if( isMyPPPDRunning( ) ) { 10 if( isMyPPPDRunning( ) ) {
11 if( isMyPPPUp() ) { 11 if( isMyPPPUp() ) {
12 NC->setCurrentState( IsUp ); 12 NC->setCurrentState( IsUp );
13 } else { 13 } else {
14 NC->setCurrentState( Available ); 14 NC->setCurrentState( Available );
15 } 15 }
16 } else { 16 } else {
17 NC->setCurrentState( Off ); // at least this 17 NC->setCurrentState( Off ); // at least this
18 // but could also be unavailable 18 // but could also be unavailable
19 AsDevice::netNode()->nextNode()->runtime()->detectState( NC ); 19 AsDevice::netNode()->nextNode()->runtime()->detectState( NC );
20 } 20 }
21} 21}
22 22
23bool PPPRun::setState( NodeCollection * NC, Action_t A ) { 23bool PPPRun::setState( NodeCollection * NC, Action_t A, bool ) {
24 switch( A ) { 24 switch( A ) {
25 case Activate : 25 case Activate :
26 NC->setCurrentState( Available ); 26 NC->setCurrentState( Available );
27 // no 27 // no
28 break; 28 break;
29 case Deactivate : 29 case Deactivate :
30 if( NC->currentState() == IsUp ) { 30 if( NC->currentState() == IsUp ) {
31 NC->state( Down ); 31 NC->state( Down );
32 } 32 }
33 // cannot really disable 33 // cannot really disable
34 NC->setCurrentState( Available ); 34 NC->setCurrentState( Available );
35 break; 35 break;
36 case Up : 36 case Up :
37 if( NC->currentState() != IsUp ) { 37 if( NC->currentState() != IsUp ) {
38 // start my PPPD 38 // start my PPPD
39 NC->setCurrentState( IsUp ); 39 NC->setCurrentState( IsUp );
40 } 40 }
41 break; 41 break;
42 case Down : 42 case Down :
43 if( NC->currentState() == IsUp ) { 43 if( NC->currentState() == IsUp ) {
44 // stop my PPPD 44 // stop my PPPD
45 NC->setCurrentState( Available ); 45 NC->setCurrentState( Available );
46 } 46 }
47 break; 47 break;
48 default : // FT 48 default : // FT
49 break; 49 break;
50 } 50 }
51 return 1; 51 return 1;
52} 52}
53 53
54bool PPPRun::isMyPPPDRunning( void ) { 54bool PPPRun::isMyPPPDRunning( void ) {
55 return 0; 55 return 0;
56} 56}
57 57
58bool PPPRun::isMyPPPUp( void ) { 58bool PPPRun::isMyPPPUp( void ) {
59 System & S = NSResources->system(); 59 System & S = NSResources->system();
60 InterfaceInfo * Run; 60 InterfaceInfo * Run;
61 QRegExp R( "ppp[0-9]" ); 61 QRegExp R( "ppp[0-9]" );
62 62
63 for( QDictIterator<InterfaceInfo> It(S.interfaces()); 63 for( QDictIterator<InterfaceInfo> It(S.interfaces());
64 It.current(); 64 It.current();
65 ++It ) { 65 ++It ) {
66 Run = It.current(); 66 Run = It.current();
67 if( R.match( Run->Name ) >= 0 && 67 if( R.match( Run->Name ) >= 0 &&
68 Run->IsPointToPoint 68 Run->IsPointToPoint
69 ) { 69 ) {
70 // this is a LAN card 70 // this is a LAN card
71 if( Run->assignedNode() == AsDevice::netNode() ) { 71 if( Run->assignedNode() == AsDevice::netNode() ) {
72 // assigned to us 72 // assigned to us
73 return 1; 73 return 1;
74 } 74 }
75 } 75 }
76 } 76 }
77 return 0; 77 return 0;
78} 78}
79 79
80bool PPPRun::handlesInterface( const QString & S ) { 80bool PPPRun::handlesInterface( const QString & S ) {
81 return Pat.match( S ) >= 0; 81 return Pat.match( S ) >= 0;
82} 82}
diff --git a/noncore/settings/networksettings2/ppp/ppprun.h b/noncore/settings/networksettings2/ppp/ppprun.h
index af51fbe..90a3f25 100644
--- a/noncore/settings/networksettings2/ppp/ppprun.h
+++ b/noncore/settings/networksettings2/ppp/ppprun.h
@@ -1,47 +1,47 @@
1#ifndef PPPRUN_H 1#ifndef PPPRUN_H
2#define PPPRUN_H 2#define PPPRUN_H
3 3
4#include <qregexp.h> 4#include <qregexp.h>
5#include <asconnection.h> 5#include <asconnection.h>
6#include <asdevice.h> 6#include <asdevice.h>
7#include "pppdata.h" 7#include "pppdata.h"
8 8
9class PPPRun : public AsConnection, public AsDevice { 9class PPPRun : public AsConnection, public AsDevice {
10 10
11public : 11public :
12 12
13 PPPRun( ANetNodeInstance * NNI, 13 PPPRun( ANetNodeInstance * NNI,
14 PPPData & Data ); 14 PPPData & Data );
15 15
16 virtual AsDevice * asDevice( void ) 16 virtual AsDevice * asDevice( void )
17 { return (AsDevice *)this; } 17 { return (AsDevice *)this; }
18 virtual AsConnection * asConnection( void ) 18 virtual AsConnection * asConnection( void )
19 { return (AsConnection *)this; } 19 { return (AsConnection *)this; }
20 20
21 virtual AsDevice * device( void ) 21 virtual AsDevice * device( void )
22 { return (AsDevice *)this; } 22 { return (AsDevice *)this; }
23 23
24 virtual RuntimeInfo * runtimeInfo( void ) 24 virtual RuntimeInfo * runtimeInfo( void )
25 { return ( AsConnection *)this; } 25 { return ( AsConnection *)this; }
26 26
27 protected : 27 protected :
28 28
29 void detectState( NodeCollection * NC ); 29 void detectState( NodeCollection * NC );
30 bool setState( NodeCollection * NC, Action_t A ); 30 bool setState( NodeCollection * NC, Action_t A, bool );
31 bool canSetState( State_t S, Action_t A ) 31 bool canSetState( State_t S, Action_t A )
32 { return AsDevice::connection()->findNext( 32 { return AsDevice::connection()->findNext(
33 AsDevice::netNode() )->runtime()->canSetState( S,A ); } 33 AsDevice::netNode() )->runtime()->canSetState( S,A ); }
34 34
35 bool handlesInterface( const QString & I ); 35 bool handlesInterface( const QString & I );
36 36
37private : 37private :
38 38
39 bool isMyPPPDRunning( void ); 39 bool isMyPPPDRunning( void );
40 bool isMyPPPUp( void ); 40 bool isMyPPPUp( void );
41 41
42 PPPData_t * D; 42 PPPData_t * D;
43 QRegExp Pat; 43 QRegExp Pat;
44 44
45}; 45};
46 46
47#endif 47#endif
diff --git a/noncore/settings/networksettings2/profile/profileedit.cpp b/noncore/settings/networksettings2/profile/profileedit.cpp
index 3f72c52..c9fb650 100644
--- a/noncore/settings/networksettings2/profile/profileedit.cpp
+++ b/noncore/settings/networksettings2/profile/profileedit.cpp
@@ -1,93 +1,96 @@
1#include <qlabel.h> 1#include <qlabel.h>
2#include <qframe.h> 2#include <qframe.h>
3#include <qcheckbox.h> 3#include <qcheckbox.h>
4#include <qmultilineedit.h> 4#include <qmultilineedit.h>
5#include <qcheckbox.h> 5#include <qcheckbox.h>
6 6
7#include <GUIUtils.h> 7#include <GUIUtils.h>
8#include <asdevice.h> 8#include <asdevice.h>
9#include <resources.h> 9#include <resources.h>
10 10
11#include "profileedit.h" 11#include "profileedit.h"
12 12
13ProfileEdit::ProfileEdit( QWidget * Parent, ANetNodeInstance * TNNI ) : 13ProfileEdit::ProfileEdit( QWidget * Parent, ANetNodeInstance * TNNI ) :
14 ProfileGUI( Parent ), TrafficRefresh(this) { 14 ProfileGUI( Parent ), RefreshTimer(this) {
15 InterfaceInfo * II; 15 InterfaceInfo * II;
16 16
17 NNI = TNNI; 17 NNI = TNNI;
18 Dev = NNI->runtime()->device(); 18 Dev = NNI->runtime()->device();
19 if( ( II = Dev->assignedInterface() ) ) { 19 if( ( II = Dev->assignedInterface() ) ) {
20
20 Refresh_CB->setEnabled( TRUE ); 21 Refresh_CB->setEnabled( TRUE );
21 Snd_GB->setEnabled( TRUE ); 22 Snd_GB->setEnabled( TRUE );
22 Rcv_GB->setEnabled( TRUE ); 23 Rcv_GB->setEnabled( TRUE );
23 Collisions_FRM->setEnabled( TRUE ); 24 Collisions_FRM->setEnabled( TRUE );
25
24 // show current content 26 // show current content
25 SLOT_Refresh(); 27 SLOT_Refresh();
26 28
27 // fill in static data 29 // fill in static data
28 InterfaceName_LBL->setText( II->Name ); 30 InterfaceName_LBL->setText( II->Name );
29 IPAddress_LBL->setText( II->Address ); 31 IPAddress_LBL->setText( II->Address );
30 SubnetMask_LBL->setText( II->Netmask ); 32 SubnetMask_LBL->setText( II->Netmask );
31 Broadcast_LBL->setText( II->BCastAddress ); 33 Broadcast_LBL->setText( II->BCastAddress );
32 MACAddress_LBL->setText( II->MACAddress ); 34 MACAddress_LBL->setText( II->MACAddress );
33 if( II->IsPointToPoint ) { 35 if( II->IsPointToPoint ) {
34 PointToPoint_LBL->setText( II->DstAddress ); 36 PointToPoint_LBL->setText( II->DstAddress );
35 } 37 }
36 QString S; 38 QString S;
37 InterfaceName_LBL->setText( II->Name ); 39 InterfaceName_LBL->setText( II->Name );
38 if( II->HasMulticast ) { 40 if( II->HasMulticast ) {
39 S += "Multicast"; 41 S += "Multicast";
40 } 42 }
41 if( ! S.isEmpty() ) { 43 if( ! S.isEmpty() ) {
42 S.prepend( " : " ); 44 S.prepend( " : " );
43 } 45 }
44 InterfaceOptions_LBL->setText( S ); 46 InterfaceOptions_LBL->setText( S );
47
48 connect( &RefreshTimer, SIGNAL( timeout() ),
49 this, SLOT( SLOT_Refresh() ) );
45 } 50 }
46 51
47 connect( &TrafficRefresh, SIGNAL( timeout() ),
48 this, SLOT( SLOT_Refresh() ) );
49} 52}
50 53
51QString ProfileEdit::acceptable( void ) { 54QString ProfileEdit::acceptable( void ) {
52 return QString(); 55 return QString();
53} 56}
54 57
55void ProfileEdit::showData( ProfileData_t & Data ) { 58void ProfileEdit::showData( ProfileData_t & Data ) {
56 Description_LE->setText( Data.Description ); 59 Description_LE->setText( Data.Description );
57 Automatic_CB->setChecked( Data.Automatic ); 60 Automatic_CB->setChecked( Data.Automatic );
58 Confirm_CB->setChecked( Data.Confirm ); 61 Confirm_CB->setChecked( Data.Confirm );
59 Disabled_CB->setChecked( Data.Disabled ); 62 Disabled_CB->setChecked( Data.Disabled );
60} 63}
61 64
62 65
63bool ProfileEdit::commit( ProfileData_t & Data ) { 66bool ProfileEdit::commit( ProfileData_t & Data ) {
64 bool SM = 0; 67 bool SM = 0;
65 TXTM( Data.Description, Description_LE, SM ); 68 TXTM( Data.Description, Description_LE, SM );
66 69
67 CBM( Data.Automatic, Automatic_CB, SM ); 70 CBM( Data.Automatic, Automatic_CB, SM );
68 CBM( Data.Disabled, Disabled_CB, SM ); 71 CBM( Data.Disabled, Disabled_CB, SM );
69 CBM( Data.Confirm, Confirm_CB, SM ); 72 CBM( Data.Confirm, Confirm_CB, SM );
70 73
71 return SM; 74 return SM;
72} 75}
73 76
74void ProfileEdit::SLOT_Refresh( void ) { 77void ProfileEdit::SLOT_Refresh( void ) {
75 InterfaceInfo * II = Dev->assignedInterface(); 78 InterfaceInfo * II = Dev->assignedInterface();
76 NSResources->system().refreshStatistics( *II ); 79 NSResources->system().refreshStatistics( *II );
77 RcvBytes_LBL->setText( II->RcvBytes ); 80 RcvBytes_LBL->setText( II->RcvBytes );
78 SndBytes_LBL->setText( II->SndBytes ); 81 SndBytes_LBL->setText( II->SndBytes );
79 RcvErrors_LBL->setText( II->RcvErrors ); 82 RcvErrors_LBL->setText( II->RcvErrors );
80 SndErrors_LBL->setText( II->SndErrors ); 83 SndErrors_LBL->setText( II->SndErrors );
81 RcvDropped_LBL->setText( II->RcvDropped ); 84 RcvDropped_LBL->setText( II->RcvDropped );
82 SndDropped_LBL->setText( II->SndDropped ); 85 SndDropped_LBL->setText( II->SndDropped );
83 Collisions_LBL->setText( II->Collisions ); 86 Collisions_LBL->setText( II->Collisions );
84} 87}
85 88
86void ProfileEdit::SLOT_AutoRefresh( bool ar ) { 89void ProfileEdit::SLOT_AutoRefresh( bool ar ) {
87 if( ar ) { 90 if( ar ) {
88 TrafficRefresh.start( 1000 ); 91 RefreshTimer.start( 1000 );
89 SLOT_Refresh(); 92 SLOT_Refresh();
90 } else { 93 } else {
91 TrafficRefresh.stop(); 94 RefreshTimer.stop();
92 } 95 }
93} 96}
diff --git a/noncore/settings/networksettings2/profile/profileedit.h b/noncore/settings/networksettings2/profile/profileedit.h
index 8ca34be..b186b58 100644
--- a/noncore/settings/networksettings2/profile/profileedit.h
+++ b/noncore/settings/networksettings2/profile/profileedit.h
@@ -1,29 +1,29 @@
1#include "profiledata.h" 1#include "profiledata.h"
2#include "profileGUI.h" 2#include "profileGUI.h"
3 3
4#include <qtimer.h> 4#include <qtimer.h>
5class ANetNodeInstance; 5class ANetNodeInstance;
6class AsDevice; 6class AsDevice;
7 7
8class ProfileEdit : public ProfileGUI { 8class ProfileEdit : public ProfileGUI {
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public : 12public :
13 13
14 ProfileEdit( QWidget * parent, ANetNodeInstance * NNI ); 14 ProfileEdit( QWidget * parent, ANetNodeInstance * NNI );
15 QString acceptable( void ); 15 QString acceptable( void );
16 bool commit( ProfileData_t & Data ); 16 bool commit( ProfileData_t & Data );
17 void showData( ProfileData_t & Data ); 17 void showData( ProfileData_t & Data );
18 18
19public slots : 19public slots :
20 20
21 void SLOT_AutoRefresh( bool ); 21 void SLOT_AutoRefresh( bool );
22 void SLOT_Refresh( void ); 22 void SLOT_Refresh( void );
23 23
24private : 24private :
25 25
26 QTimer TrafficRefresh; 26 QTimer RefreshTimer;
27 ANetNodeInstance * NNI; 27 ANetNodeInstance * NNI;
28 AsDevice * Dev; 28 AsDevice * Dev;
29}; 29};
diff --git a/noncore/settings/networksettings2/profile/profilerun.cpp b/noncore/settings/networksettings2/profile/profilerun.cpp
index feebf86..79bb93e 100644
--- a/noncore/settings/networksettings2/profile/profilerun.cpp
+++ b/noncore/settings/networksettings2/profile/profilerun.cpp
@@ -1,65 +1,65 @@
1#include <resources.h> 1#include <resources.h>
2 2
3#include "profilerun.h" 3#include "profilerun.h"
4 4
5void ProfileRun::detectState( NodeCollection * NC ) { 5void ProfileRun::detectState( NodeCollection * NC ) {
6 if( Data->Disabled ) { 6 if( Data->Disabled ) {
7 NC->setCurrentState( Disabled ); 7 NC->setCurrentState( Disabled );
8 } else { 8 } else {
9 // find next item in connection 9 // find next item in connection
10 // convert to runtime and ask to detect the state 10 // convert to runtime and ask to detect the state
11 netNode()->nextNode()->runtime()->detectState( NC ); 11 netNode()->nextNode()->runtime()->detectState( NC );
12 } 12 }
13} 13}
14 14
15bool ProfileRun::setState( NodeCollection * NC, Action_t A ) { 15bool ProfileRun::setState( NodeCollection * NC, Action_t A, bool ) {
16 ANetNodeInstance * NNNI; 16 ANetNodeInstance * NNNI;
17 17
18 NNNI = netNode()->nextNode(); 18 NNNI = netNode()->nextNode();
19 switch ( A ) { 19 switch ( A ) {
20 case Enable : 20 case Enable :
21 if( NC->currentState() == Disabled ) { 21 if( NC->currentState() == Disabled ) {
22 Data->Disabled = 0; 22 Data->Disabled = 0;
23 NC->setCurrentState( Off ); // at least 23 NC->setCurrentState( Off ); // at least
24 // ... but request deeper 24 // ... but request deeper
25 NNNI->runtime()->detectState(NC); 25 NNNI->runtime()->detectState(NC);
26 } 26 }
27 return 1; 27 return 1;
28 case Disable : 28 case Disable :
29 switch( NC->currentState() ) { 29 switch( NC->currentState() ) {
30 case IsUp : 30 case IsUp :
31 case Available : 31 case Available :
32 // bring Deactivate (will bring down) 32 // bring Deactivate (will bring down)
33 if( ! NNNI->runtime()->setState(NC, Deactivate) ) 33 if( ! NNNI->runtime()->setState(NC, Deactivate) )
34 return 0; 34 return 0;
35 default : 35 default :
36 break; 36 break;
37 } 37 }
38 Data->Disabled = 1; 38 Data->Disabled = 1;
39 NC->setCurrentState( Disabled ); 39 NC->setCurrentState( Disabled );
40 return 1; 40 return 1;
41 default : 41 default :
42 break; 42 break;
43 } 43 }
44 return NNNI->runtime()->setState(NC, A); 44 return NNNI->runtime()->setState(NC, A);
45} 45}
46 46
47bool ProfileRun::canSetState( State_t Curr, Action_t A ) { 47bool ProfileRun::canSetState( State_t Curr, Action_t A ) {
48 RuntimeInfo * RI; 48 RuntimeInfo * RI;
49 switch ( A ) { 49 switch ( A ) {
50 case Enable : 50 case Enable :
51 case Disable : 51 case Disable :
52 // always possible 52 // always possible
53 return 1; 53 return 1;
54 default : 54 default :
55 break; 55 break;
56 } 56 }
57 RI = netNode()->nextNode()->runtime(); 57 RI = netNode()->nextNode()->runtime();
58 return ( Curr != Disabled ) ? 58 return ( Curr != Disabled ) ?
59 RI->canSetState(Curr, A) : 0; 59 RI->canSetState(Curr, A) : 0;
60} 60}
61 61
62bool ProfileRun::handlesInterface( const QString & S ) { 62bool ProfileRun::handlesInterface( const QString & S ) {
63 // donno -> pass deeper 63 // donno -> pass deeper
64 return netNode()->nextNode()->runtime()->handlesInterface(S); 64 return netNode()->nextNode()->runtime()->handlesInterface(S);
65} 65}
diff --git a/noncore/settings/networksettings2/profile/profilerun.h b/noncore/settings/networksettings2/profile/profilerun.h
index 6e8385c..c8ea063 100644
--- a/noncore/settings/networksettings2/profile/profilerun.h
+++ b/noncore/settings/networksettings2/profile/profilerun.h
@@ -1,31 +1,31 @@
1#ifndef PROFILERUN_H 1#ifndef PROFILERUN_H
2#define PROFILERUN_H 2#define PROFILERUN_H
3 3
4#include <asfullsetup.h> 4#include <asfullsetup.h>
5#include "profiledata.h" 5#include "profiledata.h"
6 6
7class ProfileRun : public AsFullSetup { 7class ProfileRun : public AsFullSetup {
8 8
9public : 9public :
10 10
11 ProfileRun( ANetNodeInstance * NNI, ProfileData & D ) : 11 ProfileRun( ANetNodeInstance * NNI, ProfileData & D ) :
12 AsFullSetup( NNI ) 12 AsFullSetup( NNI )
13 { Data = &D; } 13 { Data = &D; }
14 14
15 void detectState( NodeCollection * NC ); 15 void detectState( NodeCollection * NC );
16 bool setState( NodeCollection * NC, Action_t A ); 16 bool setState( NodeCollection * NC, Action_t A, bool );
17 bool canSetState( State_t Curr, Action_t A ); 17 bool canSetState( State_t Curr, Action_t A );
18 18
19 bool handlesInterface( const QString & I ); 19 bool handlesInterface( const QString & I );
20 20
21 virtual const QString & description( void ) 21 virtual const QString & description( void )
22 { return Data->Description; } 22 { return Data->Description; }
23 23
24 virtual AsFullSetup * asFullSetup( void ) 24 virtual AsFullSetup * asFullSetup( void )
25 { return (AsFullSetup *)this; } 25 { return (AsFullSetup *)this; }
26private : 26private :
27 27
28 ProfileData * Data; 28 ProfileData * Data;
29 29
30}; 30};
31#endif 31#endif
diff --git a/noncore/settings/networksettings2/usb/usbrun.cpp b/noncore/settings/networksettings2/usb/usbrun.cpp
index 4ce6721..beacd7b 100644
--- a/noncore/settings/networksettings2/usb/usbrun.cpp
+++ b/noncore/settings/networksettings2/usb/usbrun.cpp
@@ -1,176 +1,176 @@
1#include <qfile.h> 1#include <qfile.h>
2#include <qfileinfo.h> 2#include <qfileinfo.h>
3#include <qtextstream.h> 3#include <qtextstream.h>
4#include <resources.h> 4#include <resources.h>
5#include "usbrun.h" 5#include "usbrun.h"
6 6
7void USBRun::detectState( NodeCollection * NC ) { 7void USBRun::detectState( NodeCollection * NC ) {
8 // unavailable : no card found 8 // unavailable : no card found
9 // available : card found and assigned to us or free 9 // available : card found and assigned to us or free
10 // up : card found and assigned to us and up 10 // up : card found and assigned to us and up
11 QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); 11 QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number());
12 System & Sys = NSResources->system(); 12 System & Sys = NSResources->system();
13 InterfaceInfo * Run; 13 InterfaceInfo * Run;
14 QFile F( S ); 14 QFile F( S );
15 15
16 if( F.open( IO_ReadOnly ) ) { 16 if( F.open( IO_ReadOnly ) ) {
17 // could open file -> read interface and assign 17 // could open file -> read interface and assign
18 QString X; 18 QString X;
19 QTextStream TS(&F); 19 QTextStream TS(&F);
20 X = TS.readLine(); 20 X = TS.readLine();
21 // find interface 21 // find interface
22 if( handlesInterface( X ) ) { 22 if( handlesInterface( X ) ) {
23 for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); 23 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
24 It.current(); 24 It.current();
25 ++It ) { 25 ++It ) {
26 Run = It.current(); 26 Run = It.current();
27 if( X == Run->Name ) { 27 if( X == Run->Name ) {
28 Run->assignNode( netNode() ); 28 Run->assignNode( netNode() );
29 assignInterface( Run ); 29 assignInterface( Run );
30 NC->setCurrentState( IsUp ); 30 NC->setCurrentState( IsUp );
31 return; 31 return;
32 } 32 }
33 } 33 }
34 } 34 }
35 } 35 }
36 36
37 fprintf( stderr, "Assigned %p\n", assignedInterface() ); 37 fprintf( stderr, "Assigned %p\n", assignedInterface() );
38 if( ( Run = assignedInterface() ) ) { 38 if( ( Run = assignedInterface() ) ) {
39 // we already have an interface assigned -> still present ? 39 // we already have an interface assigned -> still present ?
40 if( ! Run->IsUp ) { 40 if( ! Run->IsUp ) {
41 // usb is still free -> keep assignment 41 // usb is still free -> keep assignment
42 NC->setCurrentState( Available ); 42 NC->setCurrentState( Available );
43 return; 43 return;
44 } // else interface is up but NOT us -> some other profile 44 } // else interface is up but NOT us -> some other profile
45 } 45 }
46 46
47 // nothing (valid) assigned to us 47 // nothing (valid) assigned to us
48 assignInterface( 0 ); 48 assignInterface( 0 );
49 49
50 // find possible interface 50 // find possible interface
51 for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); 51 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
52 It.current(); 52 It.current();
53 ++It ) { 53 ++It ) {
54 Run = It.current(); 54 Run = It.current();
55 55
56 fprintf( stderr, "%s %d %d=%d %d\n", 56 fprintf( stderr, "%s %d %d=%d %d\n",
57 Run->Name.latin1(), 57 Run->Name.latin1(),
58 handlesInterface( Run->Name ), 58 handlesInterface( Run->Name ),
59 Run->CardType, ARPHRD_ETHER, 59 Run->CardType, ARPHRD_ETHER,
60 ! Run->IsUp ); 60 ! Run->IsUp );
61 61
62 if( handlesInterface( Run->Name ) && 62 if( handlesInterface( Run->Name ) &&
63 Run->CardType == ARPHRD_ETHER && 63 Run->CardType == ARPHRD_ETHER &&
64 ! Run->IsUp 64 ! Run->IsUp
65 ) { 65 ) {
66 fprintf( stderr, "Released(OFF)\n" ); 66 fprintf( stderr, "Released(OFF)\n" );
67 // proper type, and Not UP -> free 67 // proper type, and Not UP -> free
68 NC->setCurrentState( Off ); 68 NC->setCurrentState( Off );
69 return; 69 return;
70 } 70 }
71 } 71 }
72 // no free found 72 // no free found
73 fprintf( stderr, "UNA\n" ); 73 fprintf( stderr, "UNA\n" );
74 74
75 NC->setCurrentState( Unavailable ); 75 NC->setCurrentState( Unavailable );
76} 76}
77 77
78bool USBRun::setState( NodeCollection * NC, Action_t A ) { 78bool USBRun::setState( NodeCollection * NC, Action_t A, bool ) {
79 79
80 // we only handle activate and deactivate 80 // we only handle activate and deactivate
81 switch( A ) { 81 switch( A ) {
82 case Activate : 82 case Activate :
83 { 83 {
84 if( NC->currentState() != Off ) { 84 if( NC->currentState() != Off ) {
85 return 0; 85 return 0;
86 } 86 }
87 InterfaceInfo * N = getInterface(); 87 InterfaceInfo * N = getInterface();
88 if( ! N ) { 88 if( ! N ) {
89 // no interface available 89 // no interface available
90 NC->setCurrentState( Unavailable ); 90 NC->setCurrentState( Unavailable );
91 return 0; 91 return 0;
92 } 92 }
93 // because we were OFF the interface 93 // because we were OFF the interface
94 // we get back is NOT assigned 94 // we get back is NOT assigned
95 N->assignNode( netNode() ); 95 N->assignNode( netNode() );
96 assignInterface( N ); 96 assignInterface( N );
97 fprintf( stderr, "Assing %p\n", N ); 97 fprintf( stderr, "Assing %p\n", N );
98 NC->setCurrentState( Available ); 98 NC->setCurrentState( Available );
99 return 1; 99 return 1;
100 } 100 }
101 case Deactivate : 101 case Deactivate :
102 if( NC->currentState() == IsUp ) { 102 if( NC->currentState() == IsUp ) {
103 // bring down first 103 // bring down first
104 if( ! connection()->setState( Down ) ) 104 if( ! connection()->setState( Down ) )
105 // could not ... 105 // could not ...
106 return 0; 106 return 0;
107 } else if( NC->currentState() != Available ) { 107 } else if( NC->currentState() != Available ) {
108 return 1; 108 return 1;
109 } 109 }
110 assignedInterface()->assignNode( 0 ); // release 110 assignedInterface()->assignNode( 0 ); // release
111 assignInterface( 0 ); 111 assignInterface( 0 );
112 NC->setCurrentState( Off ); 112 NC->setCurrentState( Off );
113 return 1; 113 return 1;
114 default : 114 default :
115 // FT 115 // FT
116 break; 116 break;
117 } 117 }
118 return 0; 118 return 0;
119} 119}
120 120
121bool USBRun::canSetState( State_t Curr, Action_t A ) { 121bool USBRun::canSetState( State_t Curr, Action_t A ) {
122 // we only handle up down activate and deactivate 122 // we only handle up down activate and deactivate
123 switch( A ) { 123 switch( A ) {
124 case Activate : 124 case Activate :
125 { // at least available 125 { // at least available
126 if( Curr == Available ) { 126 if( Curr == Available ) {
127 return 1; 127 return 1;
128 } 128 }
129 // or we can make one available 129 // or we can make one available
130 InterfaceInfo * N = getInterface(); 130 InterfaceInfo * N = getInterface();
131 if( ! N || N->assignedNode() != 0 ) { 131 if( ! N || N->assignedNode() != 0 ) {
132 // non available or assigned 132 // non available or assigned
133 return 0; 133 return 0;
134 } 134 }
135 return 1; 135 return 1;
136 } 136 }
137 case Deactivate : 137 case Deactivate :
138 return ( Curr >= Available ); 138 return ( Curr >= Available );
139 default : 139 default :
140 // FT 140 // FT
141 break; 141 break;
142 } 142 }
143 return 0; 143 return 0;
144} 144}
145 145
146// get interface that is free or assigned to us 146// get interface that is free or assigned to us
147InterfaceInfo * USBRun::getInterface( void ) { 147InterfaceInfo * USBRun::getInterface( void ) {
148 148
149 System & S = NSResources->system(); 149 System & S = NSResources->system();
150 InterfaceInfo * best = 0, * Run; 150 InterfaceInfo * best = 0, * Run;
151 QRegExp R( "usb[0-9abcdef]" ); 151 QRegExp R( "usb[0-9abcdef]" );
152 152
153 for( QDictIterator<InterfaceInfo> It(S.interfaces()); 153 for( QDictIterator<InterfaceInfo> It(S.interfaces());
154 It.current(); 154 It.current();
155 ++It ) { 155 ++It ) {
156 Run = It.current(); 156 Run = It.current();
157 if( handlesInterface( Run->Name ) && 157 if( handlesInterface( Run->Name ) &&
158 Run->CardType == ARPHRD_ETHER 158 Run->CardType == ARPHRD_ETHER
159 ) { 159 ) {
160 // this is a USB card 160 // this is a USB card
161 if( Run->assignedNode() == netNode() ) { 161 if( Run->assignedNode() == netNode() ) {
162 // assigned to us 162 // assigned to us
163 return Run; 163 return Run;
164 } else if( Run->assignedNode() == 0 ) { 164 } else if( Run->assignedNode() == 0 ) {
165 // free 165 // free
166 best = Run; 166 best = Run;
167 } 167 }
168 } 168 }
169 } 169 }
170 return best; // can be 0 170 return best; // can be 0
171} 171}
172 172
173bool USBRun::handlesInterface( const QString & S ) { 173bool USBRun::handlesInterface( const QString & S ) {
174 return Pat.match( S ) >= 0; 174 return Pat.match( S ) >= 0;
175} 175}
176 176
diff --git a/noncore/settings/networksettings2/usb/usbrun.h b/noncore/settings/networksettings2/usb/usbrun.h
index 6c6e4e4..03e21ab 100644
--- a/noncore/settings/networksettings2/usb/usbrun.h
+++ b/noncore/settings/networksettings2/usb/usbrun.h
@@ -1,37 +1,37 @@
1#ifndef USBRUN_H 1#ifndef USBRUN_H
2#define USBRUN_H 2#define USBRUN_H
3 3
4#include <asdevice.h> 4#include <asdevice.h>
5#include <qregexp.h> 5#include <qregexp.h>
6#include "usbdata.h" 6#include "usbdata.h"
7 7
8class USBRun : public AsDevice { 8class USBRun : public AsDevice {
9 9
10public : 10public :
11 11
12 USBRun( ANetNodeInstance * NNI, 12 USBRun( ANetNodeInstance * NNI,
13 USBData & Data ) : 13 USBData & Data ) :
14 AsDevice( NNI ), 14 AsDevice( NNI ),
15 Pat( "usb[0-9abcdef]" ) 15 Pat( "usb[0-9abcdef]" )
16 { } 16 { }
17 17
18 virtual AsDevice * device( void ) 18 virtual AsDevice * device( void )
19 { return (AsDevice *)this; } 19 { return (AsDevice *)this; }
20 20
21 virtual AsDevice * asDevice( void ) 21 virtual AsDevice * asDevice( void )
22 { return (AsDevice *)this; } 22 { return (AsDevice *)this; }
23protected : 23protected :
24 24
25 void detectState( NodeCollection * ); 25 void detectState( NodeCollection * );
26 bool setState( NodeCollection * , Action_t A ); 26 bool setState( NodeCollection * , Action_t A, bool );
27 bool canSetState( State_t , Action_t A ); 27 bool canSetState( State_t , Action_t A );
28 28
29 bool handlesInterface( const QString & I ); 29 bool handlesInterface( const QString & I );
30 30
31private : 31private :
32 32
33 InterfaceInfo * getInterface( void ); 33 InterfaceInfo * getInterface( void );
34 QRegExp Pat; 34 QRegExp Pat;
35 35
36}; 36};
37#endif 37#endif
diff --git a/noncore/settings/networksettings2/vpn/vpnrun.h b/noncore/settings/networksettings2/vpn/vpnrun.h
index 4d26298..c19b609 100644
--- a/noncore/settings/networksettings2/vpn/vpnrun.h
+++ b/noncore/settings/networksettings2/vpn/vpnrun.h
@@ -1,32 +1,32 @@
1#ifndef VPNRUN_H 1#ifndef VPNRUN_H
2#define VPNRUN_H 2#define VPNRUN_H
3 3
4#include <asconnection.h> 4#include <asconnection.h>
5#include "vpndata.h" 5#include "vpndata.h"
6 6
7class VPNRun : public AsConnection { 7class VPNRun : public AsConnection {
8 8
9public : 9public :
10 10
11 VPNRun( ANetNodeInstance * NNI, VPNData & Data ) : 11 VPNRun( ANetNodeInstance * NNI, VPNData & Data ) :
12 AsConnection( NNI ) 12 AsConnection( NNI )
13 { } 13 { }
14 14
15 virtual AsConnection * asConnection( void ) 15 virtual AsConnection * asConnection( void )
16 { return (AsConnection *)this; } 16 { return (AsConnection *)this; }
17protected : 17protected :
18 18
19 void detectState( NodeCollection * ) 19 void detectState( NodeCollection * )
20 { } 20 { }
21 21
22 bool setState( NodeCollection *, Action_t ) 22 bool setState( NodeCollection *, Action_t, bool )
23 { return 0; } 23 { return 0; }
24 24
25 bool canSetState( State_t, Action_t ) 25 bool canSetState( State_t, Action_t )
26 { return 0; } 26 { return 0; }
27 27
28 bool handlesInterface( const QString & I ); 28 bool handlesInterface( const QString & I );
29 29
30}; 30};
31 31
32#endif 32#endif
diff --git a/noncore/settings/networksettings2/wlan/wlanGUI.ui b/noncore/settings/networksettings2/wlan/wlanGUI.ui
index 9614369..1aec138 100644
--- a/noncore/settings/networksettings2/wlan/wlanGUI.ui
+++ b/noncore/settings/networksettings2/wlan/wlanGUI.ui
@@ -1,975 +1,1021 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>WLanGUI</class> 2<class>WLanGUI</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>WLanGUI</cstring> 7 <cstring>WLanGUI</cstring>
8 </property> 8 </property>
9 <property stdset="1"> 9 <property stdset="1">
10 <name>geometry</name> 10 <name>geometry</name>
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>192</width> 14 <width>209</width>
15 <height>329</height> 15 <height>307</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Form1</string> 20 <string>Form1</string>
21 </property> 21 </property>
22 <property> 22 <property>
23 <name>layoutMargin</name> 23 <name>layoutMargin</name>
24 </property> 24 </property>
25 <property> 25 <property>
26 <name>layoutSpacing</name> 26 <name>layoutSpacing</name>
27 </property> 27 </property>
28 <vbox> 28 <vbox>
29 <property stdset="1"> 29 <property stdset="1">
30 <name>margin</name> 30 <name>margin</name>
31 <number>0</number> 31 <number>0</number>
32 </property> 32 </property>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>0</number> 35 <number>1</number>
36 </property> 36 </property>
37 <widget> 37 <widget>
38 <class>QTabWidget</class> 38 <class>QTabWidget</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>WLan_TAB</cstring> 41 <cstring>WLan_TAB</cstring>
42 </property> 42 </property>
43 <property stdset="1"> 43 <property stdset="1">
44 <name>enabled</name> 44 <name>enabled</name>
45 <bool>true</bool> 45 <bool>true</bool>
46 </property> 46 </property>
47 <property> 47 <property>
48 <name>layoutMargin</name> 48 <name>layoutMargin</name>
49 </property> 49 </property>
50 <property> 50 <property>
51 <name>layoutSpacing</name> 51 <name>layoutSpacing</name>
52 </property> 52 </property>
53 <widget> 53 <widget>
54 <class>QWidget</class> 54 <class>QWidget</class>
55 <property stdset="1"> 55 <property stdset="1">
56 <name>name</name> 56 <name>name</name>
57 <cstring>ConfigPage</cstring> 57 <cstring>ConfigPage</cstring>
58 </property> 58 </property>
59 <attribute> 59 <attribute>
60 <name>title</name> 60 <name>title</name>
61 <string>General</string> 61 <string>General</string>
62 </attribute> 62 </attribute>
63 <vbox> 63 <vbox>
64 <property stdset="1"> 64 <property stdset="1">
65 <name>margin</name> 65 <name>margin</name>
66 <number>0</number> 66 <number>0</number>
67 </property> 67 </property>
68 <property stdset="1"> 68 <property stdset="1">
69 <name>spacing</name> 69 <name>spacing</name>
70 <number>2</number> 70 <number>2</number>
71 </property> 71 </property>
72 <widget> 72 <widget>
73 <class>QLayoutWidget</class> 73 <class>QLayoutWidget</class>
74 <property stdset="1"> 74 <property stdset="1">
75 <name>name</name> 75 <name>name</name>
76 <cstring>Layout6</cstring> 76 <cstring>Layout11</cstring>
77 </property> 77 </property>
78 <property> 78 <property>
79 <name>layoutMargin</name> 79 <name>layoutSpacing</name>
80 </property> 80 </property>
81 <grid> 81 <grid>
82 <property stdset="1"> 82 <property stdset="1">
83 <name>margin</name> 83 <name>margin</name>
84 <number>1</number> 84 <number>0</number>
85 </property> 85 </property>
86 <property stdset="1"> 86 <property stdset="1">
87 <name>spacing</name> 87 <name>spacing</name>
88 <number>6</number> 88 <number>1</number>
89 </property> 89 </property>
90 <widget row="1" column="0" > 90 <widget row="0" column="1" >
91 <class>QLabel</class> 91 <class>QComboBox</class>
92 <item>
93 <property>
94 <name>text</name>
95 <string>Auto</string>
96 </property>
97 </item>
98 <item>
99 <property>
100 <name>text</name>
101 <string>Managed</string>
102 </property>
103 </item>
104 <item>
105 <property>
106 <name>text</name>
107 <string>Ad-Hoc</string>
108 </property>
109 </item>
92 <property stdset="1"> 110 <property stdset="1">
93 <name>name</name> 111 <name>name</name>
94 <cstring>essidLabel</cstring> 112 <cstring>Mode_CB</cstring>
95 </property> 113 </property>
96 <property stdset="1"> 114 <property stdset="1">
97 <name>enabled</name> 115 <name>enabled</name>
98 <bool>true</bool> 116 <bool>true</bool>
99 </property> 117 </property>
100 <property stdset="1"> 118 <property stdset="1">
101 <name>sizePolicy</name> 119 <name>sizePolicy</name>
102 <sizepolicy> 120 <sizepolicy>
103 <hsizetype>1</hsizetype> 121 <hsizetype>1</hsizetype>
104 <vsizetype>1</vsizetype> 122 <vsizetype>0</vsizetype>
105 </sizepolicy> 123 </sizepolicy>
106 </property> 124 </property>
107 <property stdset="1">
108 <name>text</name>
109 <string>ESS-ID</string>
110 </property>
111 </widget> 125 </widget>
112 <widget row="1" column="1" > 126 <widget row="2" column="0" >
113 <class>QComboBox</class> 127 <class>QLabel</class>
114 <item>
115 <property>
116 <name>text</name>
117 <string>any</string>
118 </property>
119 </item>
120 <property stdset="1"> 128 <property stdset="1">
121 <name>name</name> 129 <name>name</name>
122 <cstring>ESSID_CB</cstring> 130 <cstring>essidLabel_2</cstring>
123 </property>
124 <property stdset="1">
125 <name>sizePolicy</name>
126 <sizepolicy>
127 <hsizetype>7</hsizetype>
128 <vsizetype>0</vsizetype>
129 </sizepolicy>
130 </property> 131 </property>
131 <property stdset="1"> 132 <property stdset="1">
132 <name>editable</name> 133 <name>enabled</name>
133 <bool>true</bool> 134 <bool>true</bool>
134 </property> 135 </property>
135 <property stdset="1"> 136 <property stdset="1">
136 <name>currentItem</name> 137 <name>sizePolicy</name>
137 <number>0</number> 138 <sizepolicy>
138 </property> 139 <hsizetype>1</hsizetype>
139 <property stdset="1"> 140 <vsizetype>1</vsizetype>
140 <name>sizeLimit</name> 141 </sizepolicy>
141 <number>5</number>
142 </property>
143 <property stdset="1">
144 <name>autoCompletion</name>
145 <bool>true</bool>
146 </property> 142 </property>
147 <property stdset="1"> 143 <property stdset="1">
148 <name>duplicatesEnabled</name> 144 <name>text</name>
149 <bool>false</bool> 145 <string>Name</string>
150 </property> 146 </property>
151 </widget> 147 </widget>
152 <widget row="0" column="0" > 148 <widget row="0" column="0" >
153 <class>QLabel</class> 149 <class>QLabel</class>
154 <property stdset="1"> 150 <property stdset="1">
155 <name>name</name> 151 <name>name</name>
156 <cstring>modeLabel</cstring> 152 <cstring>modeLabel</cstring>
157 </property> 153 </property>
158 <property stdset="1"> 154 <property stdset="1">
159 <name>enabled</name> 155 <name>enabled</name>
160 <bool>true</bool> 156 <bool>true</bool>
161 </property> 157 </property>
162 <property stdset="1"> 158 <property stdset="1">
163 <name>sizePolicy</name> 159 <name>sizePolicy</name>
164 <sizepolicy> 160 <sizepolicy>
165 <hsizetype>1</hsizetype> 161 <hsizetype>1</hsizetype>
166 <vsizetype>1</vsizetype> 162 <vsizetype>1</vsizetype>
167 </sizepolicy> 163 </sizepolicy>
168 </property> 164 </property>
169 <property stdset="1"> 165 <property stdset="1">
170 <name>text</name> 166 <name>text</name>
171 <string>Mode</string> 167 <string>Mode</string>
172 </property> 168 </property>
173 </widget> 169 </widget>
174 <widget row="0" column="1" > 170 <widget row="1" column="1" >
175 <class>QComboBox</class> 171 <class>QLineEdit</class>
176 <item>
177 <property>
178 <name>text</name>
179 <string>Infrastructure</string>
180 </property>
181 </item>
182 <item>
183 <property>
184 <name>text</name>
185 <string>Auto</string>
186 </property>
187 </item>
188 <item>
189 <property>
190 <name>text</name>
191 <string>Managed</string>
192 </property>
193 </item>
194 <item>
195 <property>
196 <name>text</name>
197 <string>Ad-Hoc</string>
198 </property>
199 </item>
200 <property stdset="1"> 172 <property stdset="1">
201 <name>name</name> 173 <name>name</name>
202 <cstring>Mode_CB</cstring> 174 <cstring>ESSID_LE</cstring>
175 </property>
176 </widget>
177 <widget row="1" column="0" >
178 <class>QLabel</class>
179 <property stdset="1">
180 <name>name</name>
181 <cstring>essidLabel</cstring>
203 </property> 182 </property>
204 <property stdset="1"> 183 <property stdset="1">
205 <name>enabled</name> 184 <name>enabled</name>
206 <bool>true</bool> 185 <bool>true</bool>
207 </property> 186 </property>
208 <property stdset="1"> 187 <property stdset="1">
209 <name>sizePolicy</name> 188 <name>sizePolicy</name>
210 <sizepolicy> 189 <sizepolicy>
211 <hsizetype>1</hsizetype> 190 <hsizetype>1</hsizetype>
212 <vsizetype>0</vsizetype> 191 <vsizetype>1</vsizetype>
213 </sizepolicy> 192 </sizepolicy>
214 </property> 193 </property>
194 <property stdset="1">
195 <name>text</name>
196 <string>ESS-ID</string>
197 </property>
198 </widget>
199 <widget row="2" column="1" >
200 <class>QLineEdit</class>
201 <property stdset="1">
202 <name>name</name>
203 <cstring>NodeName_LE</cstring>
204 </property>
205 <property stdset="1">
206 <name>text</name>
207 <string>&lt;UseHostName&gt;</string>
208 </property>
215 </widget> 209 </widget>
216 </grid> 210 </grid>
217 </widget> 211 </widget>
218 <widget> 212 <widget>
219 <class>QLayoutWidget</class> 213 <class>QLayoutWidget</class>
220 <property stdset="1"> 214 <property stdset="1">
221 <name>name</name> 215 <name>name</name>
222 <cstring>Layout8</cstring> 216 <cstring>Layout8</cstring>
223 </property> 217 </property>
224 <property> 218 <property>
225 <name>layoutMargin</name> 219 <name>layoutMargin</name>
226 </property> 220 </property>
227 <property> 221 <property>
228 <name>layoutSpacing</name> 222 <name>layoutSpacing</name>
229 </property> 223 </property>
230 <grid> 224 <grid>
231 <property stdset="1"> 225 <property stdset="1">
232 <name>margin</name> 226 <name>margin</name>
233 <number>1</number> 227 <number>1</number>
234 </property> 228 </property>
235 <property stdset="1"> 229 <property stdset="1">
236 <name>spacing</name> 230 <name>spacing</name>
237 <number>2</number> 231 <number>2</number>
238 </property> 232 </property>
239 <widget row="0" column="0" rowspan="1" colspan="3" > 233 <widget row="0" column="0" rowspan="1" colspan="3" >
240 <class>QCheckBox</class> 234 <class>QCheckBox</class>
241 <property stdset="1"> 235 <property stdset="1">
242 <name>name</name> 236 <name>name</name>
243 <cstring>SpecifyAP_CB</cstring> 237 <cstring>SpecifyAP_CB</cstring>
244 </property> 238 </property>
245 <property stdset="1"> 239 <property stdset="1">
246 <name>text</name> 240 <name>text</name>
247 <string>Specify &amp;Access Point</string> 241 <string>Specify Access Point</string>
248 </property> 242 </property>
249 </widget> 243 </widget>
250 <widget row="1" column="1" > 244 <widget row="1" column="1" >
251 <class>QLabel</class> 245 <class>QLabel</class>
252 <property stdset="1"> 246 <property stdset="1">
253 <name>name</name> 247 <name>name</name>
254 <cstring>macLabel</cstring> 248 <cstring>macLabel</cstring>
255 </property> 249 </property>
256 <property stdset="1"> 250 <property stdset="1">
257 <name>enabled</name> 251 <name>enabled</name>
258 <bool>false</bool> 252 <bool>false</bool>
259 </property> 253 </property>
260 <property stdset="1"> 254 <property stdset="1">
261 <name>sizePolicy</name> 255 <name>sizePolicy</name>
262 <sizepolicy> 256 <sizepolicy>
263 <hsizetype>0</hsizetype> 257 <hsizetype>0</hsizetype>
264 <vsizetype>1</vsizetype> 258 <vsizetype>1</vsizetype>
265 </sizepolicy> 259 </sizepolicy>
266 </property> 260 </property>
267 <property stdset="1"> 261 <property stdset="1">
268 <name>text</name> 262 <name>text</name>
269 <string>MAC</string> 263 <string>MAC</string>
270 </property> 264 </property>
271 </widget> 265 </widget>
272 <widget row="1" column="2" > 266 <widget row="1" column="2" >
273 <class>QLineEdit</class> 267 <class>QLineEdit</class>
274 <property stdset="1"> 268 <property stdset="1">
275 <name>name</name> 269 <name>name</name>
276 <cstring>APMac_LE</cstring> 270 <cstring>APMac_LE</cstring>
277 </property> 271 </property>
278 <property stdset="1"> 272 <property stdset="1">
279 <name>enabled</name> 273 <name>enabled</name>
280 <bool>false</bool> 274 <bool>false</bool>
281 </property> 275 </property>
282 <property stdset="1"> 276 <property stdset="1">
283 <name>sizePolicy</name> 277 <name>sizePolicy</name>
284 <sizepolicy> 278 <sizepolicy>
285 <hsizetype>7</hsizetype> 279 <hsizetype>7</hsizetype>
286 <vsizetype>1</vsizetype> 280 <vsizetype>1</vsizetype>
287 </sizepolicy> 281 </sizepolicy>
288 </property> 282 </property>
289 </widget> 283 </widget>
290 <spacer row="1" column="0" > 284 <spacer row="1" column="0" >
291 <property> 285 <property>
292 <name>name</name> 286 <name>name</name>
293 <cstring>Spacer8</cstring> 287 <cstring>Spacer8</cstring>
294 </property> 288 </property>
295 <property stdset="1"> 289 <property stdset="1">
296 <name>orientation</name> 290 <name>orientation</name>
297 <enum>Horizontal</enum> 291 <enum>Horizontal</enum>
298 </property> 292 </property>
299 <property stdset="1"> 293 <property stdset="1">
300 <name>sizeType</name> 294 <name>sizeType</name>
301 <enum>Fixed</enum> 295 <enum>Fixed</enum>
302 </property> 296 </property>
303 <property> 297 <property>
304 <name>sizeHint</name> 298 <name>sizeHint</name>
305 <size> 299 <size>
306 <width>20</width> 300 <width>20</width>
307 <height>20</height> 301 <height>20</height>
308 </size> 302 </size>
309 </property> 303 </property>
310 </spacer> 304 </spacer>
311 </grid> 305 </grid>
312 </widget> 306 </widget>
313 <widget>
314 <class>QLayoutWidget</class>
315 <property stdset="1">
316 <name>name</name>
317 <cstring>Layout7</cstring>
318 </property>
319 <property>
320 <name>layoutMargin</name>
321 </property>
322 <hbox>
323 <property stdset="1">
324 <name>margin</name>
325 <number>1</number>
326 </property>
327 <property stdset="1">
328 <name>spacing</name>
329 <number>6</number>
330 </property>
331 <widget>
332 <class>QCheckBox</class>
333 <property stdset="1">
334 <name>name</name>
335 <cstring>SpecifyChannel_CB</cstring>
336 </property>
337 <property stdset="1">
338 <name>text</name>
339 <string>Specific &amp;Channel</string>
340 </property>
341 </widget>
342 <widget>
343 <class>QSpinBox</class>
344 <property stdset="1">
345 <name>name</name>
346 <cstring>ChannelNr_SB</cstring>
347 </property>
348 <property stdset="1">
349 <name>enabled</name>
350 <bool>false</bool>
351 </property>
352 <property stdset="1">
353 <name>maxValue</name>
354 <number>15</number>
355 </property>
356 <property stdset="1">
357 <name>minValue</name>
358 <number>1</number>
359 </property>
360 <property stdset="1">
361 <name>value</name>
362 <number>1</number>
363 </property>
364 </widget>
365 </hbox>
366 </widget>
367 <spacer> 307 <spacer>
368 <property> 308 <property>
369 <name>name</name> 309 <name>name</name>
370 <cstring>Spacer7</cstring> 310 <cstring>Spacer7</cstring>
371 </property> 311 </property>
372 <property stdset="1"> 312 <property stdset="1">
373 <name>orientation</name> 313 <name>orientation</name>
374 <enum>Vertical</enum> 314 <enum>Vertical</enum>
375 </property> 315 </property>
376 <property stdset="1"> 316 <property stdset="1">
377 <name>sizeType</name> 317 <name>sizeType</name>
378 <enum>Expanding</enum> 318 <enum>Expanding</enum>
379 </property> 319 </property>
380 <property> 320 <property>
381 <name>sizeHint</name> 321 <name>sizeHint</name>
382 <size> 322 <size>
383 <width>20</width> 323 <width>20</width>
384 <height>20</height> 324 <height>20</height>
385 </size> 325 </size>
386 </property> 326 </property>
387 </spacer> 327 </spacer>
388 </vbox> 328 </vbox>
389 </widget> 329 </widget>
390 <widget> 330 <widget>
391 <class>QWidget</class> 331 <class>QWidget</class>
392 <property stdset="1"> 332 <property stdset="1">
393 <name>name</name> 333 <name>name</name>
394 <cstring>WepPage</cstring> 334 <cstring>WepPage</cstring>
395 </property> 335 </property>
396 <attribute> 336 <attribute>
397 <name>title</name> 337 <name>title</name>
398 <string>Encryption</string> 338 <string>Encryption</string>
399 </attribute> 339 </attribute>
400 <vbox> 340 <vbox>
401 <property stdset="1"> 341 <property stdset="1">
402 <name>margin</name> 342 <name>margin</name>
403 <number>2</number> 343 <number>2</number>
404 </property> 344 </property>
405 <property stdset="1"> 345 <property stdset="1">
406 <name>spacing</name> 346 <name>spacing</name>
407 <number>2</number> 347 <number>2</number>
408 </property> 348 </property>
409 <widget> 349 <widget>
410 <class>QCheckBox</class> 350 <class>QCheckBox</class>
411 <property stdset="1"> 351 <property stdset="1">
412 <name>name</name> 352 <name>name</name>
413 <cstring>EnableWEB_CB</cstring> 353 <cstring>EnableWEP_CB</cstring>
414 </property> 354 </property>
415 <property stdset="1"> 355 <property stdset="1">
416 <name>text</name> 356 <name>text</name>
417 <string>&amp;Enable Encryption</string> 357 <string>&amp;Enable Encryption</string>
418 </property> 358 </property>
419 </widget> 359 </widget>
420 <widget> 360 <widget>
421 <class>QButtonGroup</class> 361 <class>QButtonGroup</class>
422 <property stdset="1"> 362 <property stdset="1">
423 <name>name</name> 363 <name>name</name>
424 <cstring>KeyButtonGroup</cstring> 364 <cstring>KeyButtonGroup</cstring>
425 </property> 365 </property>
426 <property stdset="1"> 366 <property stdset="1">
427 <name>enabled</name> 367 <name>enabled</name>
428 <bool>false</bool> 368 <bool>false</bool>
429 </property> 369 </property>
430 <property stdset="1"> 370 <property stdset="1">
431 <name>title</name> 371 <name>title</name>
432 <string>&amp;Key Setting</string> 372 <string>&amp;Key Setting</string>
433 </property> 373 </property>
434 <property> 374 <property>
435 <name>layoutMargin</name> 375 <name>layoutMargin</name>
436 </property> 376 </property>
437 <property> 377 <property>
438 <name>layoutSpacing</name> 378 <name>layoutSpacing</name>
439 </property> 379 </property>
440 <grid> 380 <grid>
441 <property stdset="1"> 381 <property stdset="1">
442 <name>margin</name> 382 <name>margin</name>
443 <number>2</number> 383 <number>2</number>
444 </property> 384 </property>
445 <property stdset="1"> 385 <property stdset="1">
446 <name>spacing</name> 386 <name>spacing</name>
447 <number>2</number> 387 <number>2</number>
448 </property> 388 </property>
449 <widget row="0" column="0" > 389 <widget row="0" column="0" >
450 <class>QRadioButton</class> 390 <class>QRadioButton</class>
451 <property stdset="1"> 391 <property stdset="1">
452 <name>name</name> 392 <name>name</name>
453 <cstring>Key1_RB</cstring> 393 <cstring>Key1_RB</cstring>
454 </property> 394 </property>
455 <property stdset="1"> 395 <property stdset="1">
456 <name>text</name> 396 <name>text</name>
457 <string>Key &amp;1</string> 397 <string>Key &amp;1</string>
458 </property> 398 </property>
459 <property stdset="1"> 399 <property stdset="1">
460 <name>checked</name> 400 <name>checked</name>
461 <bool>true</bool> 401 <bool>true</bool>
462 </property> 402 </property>
463 </widget> 403 </widget>
464 <widget row="3" column="0" > 404 <widget row="3" column="0" >
465 <class>QRadioButton</class> 405 <class>QRadioButton</class>
466 <property stdset="1"> 406 <property stdset="1">
467 <name>name</name> 407 <name>name</name>
468 <cstring>Key4_RB</cstring> 408 <cstring>Key4_RB</cstring>
469 </property> 409 </property>
470 <property stdset="1"> 410 <property stdset="1">
471 <name>text</name> 411 <name>text</name>
472 <string>Key &amp;4</string> 412 <string>Key &amp;4</string>
473 </property> 413 </property>
474 </widget> 414 </widget>
475 <widget row="0" column="1" > 415 <widget row="0" column="1" >
476 <class>QLineEdit</class> 416 <class>QLineEdit</class>
477 <property stdset="1"> 417 <property stdset="1">
478 <name>name</name> 418 <name>name</name>
479 <cstring>Key1_LE</cstring> 419 <cstring>Key1_LE</cstring>
480 </property> 420 </property>
481 <property stdset="1"> 421 <property stdset="1">
482 <name>frame</name> 422 <name>frame</name>
483 <bool>true</bool> 423 <bool>true</bool>
484 </property> 424 </property>
485 </widget> 425 </widget>
486 <widget row="1" column="0" > 426 <widget row="1" column="0" >
487 <class>QRadioButton</class> 427 <class>QRadioButton</class>
488 <property stdset="1"> 428 <property stdset="1">
489 <name>name</name> 429 <name>name</name>
490 <cstring>Key2_RB</cstring> 430 <cstring>Key2_RB</cstring>
491 </property> 431 </property>
492 <property stdset="1"> 432 <property stdset="1">
493 <name>text</name> 433 <name>text</name>
494 <string>Key &amp;2</string> 434 <string>Key &amp;2</string>
495 </property> 435 </property>
496 </widget> 436 </widget>
497 <widget row="2" column="0" > 437 <widget row="2" column="0" >
498 <class>QRadioButton</class> 438 <class>QRadioButton</class>
499 <property stdset="1"> 439 <property stdset="1">
500 <name>name</name> 440 <name>name</name>
501 <cstring>Key3_RB</cstring> 441 <cstring>Key3_RB</cstring>
502 </property> 442 </property>
503 <property stdset="1"> 443 <property stdset="1">
504 <name>text</name> 444 <name>text</name>
505 <string>Key &amp;3</string> 445 <string>Key &amp;3</string>
506 </property> 446 </property>
507 </widget> 447 </widget>
508 <widget row="1" column="1" > 448 <widget row="1" column="1" >
509 <class>QLineEdit</class> 449 <class>QLineEdit</class>
510 <property stdset="1"> 450 <property stdset="1">
511 <name>name</name> 451 <name>name</name>
512 <cstring>Key2_LE</cstring> 452 <cstring>Key2_LE</cstring>
513 </property> 453 </property>
454 <property stdset="1">
455 <name>enabled</name>
456 <bool>false</bool>
457 </property>
514 </widget> 458 </widget>
515 <widget row="3" column="1" > 459 <widget row="3" column="1" >
516 <class>QLineEdit</class> 460 <class>QLineEdit</class>
517 <property stdset="1"> 461 <property stdset="1">
518 <name>name</name> 462 <name>name</name>
519 <cstring>Key4_LE</cstring> 463 <cstring>Key4_LE</cstring>
520 </property> 464 </property>
465 <property stdset="1">
466 <name>enabled</name>
467 <bool>false</bool>
468 </property>
521 </widget> 469 </widget>
522 <widget row="2" column="1" > 470 <widget row="2" column="1" >
523 <class>QLineEdit</class> 471 <class>QLineEdit</class>
524 <property stdset="1"> 472 <property stdset="1">
525 <name>name</name> 473 <name>name</name>
526 <cstring>Key3_LE</cstring> 474 <cstring>Key3_LE</cstring>
527 </property> 475 </property>
476 <property stdset="1">
477 <name>enabled</name>
478 <bool>false</bool>
479 </property>
528 </widget> 480 </widget>
529 </grid> 481 </grid>
530 </widget> 482 </widget>
531 <widget> 483 <widget>
532 <class>QCheckBox</class> 484 <class>QCheckBox</class>
533 <property stdset="1"> 485 <property stdset="1">
534 <name>name</name> 486 <name>name</name>
535 <cstring>CheckBox4</cstring> 487 <cstring>AcceptNonEncrypted_CB</cstring>
536 </property> 488 </property>
537 <property stdset="1"> 489 <property stdset="1">
538 <name>enabled</name> 490 <name>enabled</name>
539 <bool>false</bool> 491 <bool>false</bool>
540 </property> 492 </property>
541 <property stdset="1"> 493 <property stdset="1">
542 <name>text</name> 494 <name>text</name>
543 <string>Accept Non-Encrypted packets</string> 495 <string>Accept Non-Encrypted packets</string>
544 </property> 496 </property>
545 </widget> 497 </widget>
546 <spacer> 498 <spacer>
547 <property> 499 <property>
548 <name>name</name> 500 <name>name</name>
549 <cstring>Spacer30</cstring> 501 <cstring>Spacer30</cstring>
550 </property> 502 </property>
551 <property stdset="1"> 503 <property stdset="1">
552 <name>orientation</name> 504 <name>orientation</name>
553 <enum>Vertical</enum> 505 <enum>Vertical</enum>
554 </property> 506 </property>
555 <property stdset="1"> 507 <property stdset="1">
556 <name>sizeType</name> 508 <name>sizeType</name>
557 <enum>Expanding</enum> 509 <enum>Expanding</enum>
558 </property> 510 </property>
559 <property> 511 <property>
560 <name>sizeHint</name> 512 <name>sizeHint</name>
561 <size> 513 <size>
562 <width>20</width> 514 <width>20</width>
563 <height>20</height> 515 <height>20</height>
564 </size> 516 </size>
565 </property> 517 </property>
566 </spacer> 518 </spacer>
567 </vbox> 519 </vbox>
568 </widget> 520 </widget>
569 <widget> 521 <widget>
570 <class>QWidget</class> 522 <class>QWidget</class>
571 <property stdset="1"> 523 <property stdset="1">
572 <name>name</name> 524 <name>name</name>
573 <cstring>tab</cstring> 525 <cstring>tab</cstring>
574 </property> 526 </property>
575 <attribute> 527 <attribute>
576 <name>title</name> 528 <name>title</name>
577 <string>State</string> 529 <string>State</string>
578 </attribute> 530 </attribute>
579 <vbox> 531 <vbox>
580 <property stdset="1"> 532 <property stdset="1">
581 <name>margin</name> 533 <name>margin</name>
582 <number>0</number> 534 <number>0</number>
583 </property> 535 </property>
584 <property stdset="1"> 536 <property stdset="1">
585 <name>spacing</name> 537 <name>spacing</name>
586 <number>2</number> 538 <number>2</number>
587 </property> 539 </property>
588 <widget> 540 <widget>
589 <class>QLayoutWidget</class> 541 <class>QLayoutWidget</class>
590 <property stdset="1"> 542 <property stdset="1">
591 <name>name</name> 543 <name>name</name>
592 <cstring>Layout12</cstring> 544 <cstring>Layout13</cstring>
593 </property> 545 </property>
594 <property> 546 <property>
595 <name>layoutSpacing</name> 547 <name>layoutSpacing</name>
596 </property> 548 </property>
597 <grid> 549 <grid>
598 <property stdset="1"> 550 <property stdset="1">
599 <name>margin</name> 551 <name>margin</name>
600 <number>0</number> 552 <number>0</number>
601 </property> 553 </property>
602 <property stdset="1"> 554 <property stdset="1">
603 <name>spacing</name> 555 <name>spacing</name>
604 <number>2</number> 556 <number>2</number>
605 </property> 557 </property>
606 <widget row="0" column="0" > 558 <widget row="4" column="1" >
607 <class>QLabel</class>
608 <property stdset="1">
609 <name>name</name>
610 <cstring>TextLabel1_3</cstring>
611 </property>
612 <property stdset="1">
613 <name>text</name>
614 <string>Station</string>
615 </property>
616 </widget>
617 <widget row="3" column="1" >
618 <class>QLabel</class> 559 <class>QLabel</class>
619 <property stdset="1"> 560 <property stdset="1">
620 <name>name</name> 561 <name>name</name>
621 <cstring>Channel_LBL</cstring> 562 <cstring>Frequency_LBL</cstring>
622 </property> 563 </property>
623 <property stdset="1"> 564 <property stdset="1">
624 <name>frameShape</name> 565 <name>frameShape</name>
625 <enum>Panel</enum> 566 <enum>Box</enum>
626 </property> 567 </property>
627 <property stdset="1"> 568 <property stdset="1">
628 <name>frameShadow</name> 569 <name>frameShadow</name>
629 <enum>Plain</enum> 570 <enum>Plain</enum>
630 </property> 571 </property>
631 <property stdset="1"> 572 <property stdset="1">
632 <name>indent</name> 573 <name>indent</name>
633 <number>0</number> 574 <number>0</number>
634 </property> 575 </property>
635 </widget> 576 </widget>
636 <widget row="3" column="0" >
637 <class>QLabel</class>
638 <property stdset="1">
639 <name>name</name>
640 <cstring>TextLabel4_3</cstring>
641 </property>
642 <property stdset="1">
643 <name>text</name>
644 <string>Channel</string>
645 </property>
646 </widget>
647 <widget row="2" column="0" > 577 <widget row="2" column="0" >
648 <class>QLabel</class> 578 <class>QLabel</class>
649 <property stdset="1"> 579 <property stdset="1">
650 <name>name</name> 580 <name>name</name>
651 <cstring>TextLabel3_3</cstring> 581 <cstring>TextLabel9_2</cstring>
652 </property> 582 </property>
653 <property stdset="1"> 583 <property stdset="1">
654 <name>text</name> 584 <name>text</name>
655 <string>Mode</string> 585 <string>AP</string>
656 </property> 586 </property>
657 </widget> 587 </widget>
658 <widget row="1" column="0" > 588 <widget row="5" column="1" >
659 <class>QLabel</class> 589 <class>QLabel</class>
660 <property stdset="1"> 590 <property stdset="1">
661 <name>name</name> 591 <name>name</name>
662 <cstring>TextLabel2_3</cstring> 592 <cstring>Channel_LBL</cstring>
663 </property> 593 </property>
664 <property stdset="1"> 594 <property stdset="1">
665 <name>text</name> 595 <name>frameShape</name>
666 <string>ESSID</string> 596 <enum>Box</enum>
667 </property> 597 </property>
668 </widget>
669 <widget row="4" column="0" >
670 <class>QLabel</class>
671 <property stdset="1"> 598 <property stdset="1">
672 <name>name</name> 599 <name>frameShadow</name>
673 <cstring>TextLabel9_2</cstring> 600 <enum>Plain</enum>
674 </property> 601 </property>
675 <property stdset="1"> 602 <property stdset="1">
676 <name>text</name> 603 <name>indent</name>
677 <string>AP</string> 604 <number>0</number>
678 </property> 605 </property>
679 </widget> 606 </widget>
680 <widget row="0" column="1" > 607 <widget row="0" column="1" >
681 <class>QLabel</class> 608 <class>QLabel</class>
682 <property stdset="1"> 609 <property stdset="1">
683 <name>name</name> 610 <name>name</name>
684 <cstring>Station_LBL</cstring> 611 <cstring>Station_LBL</cstring>
685 </property> 612 </property>
686 <property stdset="1"> 613 <property stdset="1">
687 <name>frameShape</name> 614 <name>frameShape</name>
688 <enum>Panel</enum> 615 <enum>Box</enum>
689 </property> 616 </property>
690 <property stdset="1"> 617 <property stdset="1">
691 <name>frameShadow</name> 618 <name>frameShadow</name>
692 <enum>Plain</enum> 619 <enum>Plain</enum>
693 </property> 620 </property>
694 <property stdset="1"> 621 <property stdset="1">
695 <name>indent</name> 622 <name>indent</name>
696 <number>0</number> 623 <number>0</number>
697 </property> 624 </property>
698 </widget> 625 </widget>
699 <widget row="5" column="1" > 626 <widget row="6" column="0" >
627 <class>QLabel</class>
628 <property stdset="1">
629 <name>name</name>
630 <cstring>TextLabel4_2_2</cstring>
631 </property>
632 <property stdset="1">
633 <name>text</name>
634 <string>Rate</string>
635 </property>
636 </widget>
637 <widget row="6" column="1" >
700 <class>QLabel</class> 638 <class>QLabel</class>
701 <property stdset="1"> 639 <property stdset="1">
702 <name>name</name> 640 <name>name</name>
703 <cstring>Rate_LBL</cstring> 641 <cstring>Rate_LBL</cstring>
704 </property> 642 </property>
705 <property stdset="1"> 643 <property stdset="1">
706 <name>sizePolicy</name> 644 <name>sizePolicy</name>
707 <sizepolicy> 645 <sizepolicy>
708 <hsizetype>7</hsizetype> 646 <hsizetype>7</hsizetype>
709 <vsizetype>1</vsizetype> 647 <vsizetype>1</vsizetype>
710 </sizepolicy> 648 </sizepolicy>
711 </property> 649 </property>
712 <property stdset="1"> 650 <property stdset="1">
713 <name>frameShape</name> 651 <name>frameShape</name>
714 <enum>Panel</enum> 652 <enum>Box</enum>
715 </property> 653 </property>
716 <property stdset="1"> 654 <property stdset="1">
717 <name>frameShadow</name> 655 <name>frameShadow</name>
718 <enum>Plain</enum> 656 <enum>Plain</enum>
719 </property> 657 </property>
720 <property stdset="1"> 658 <property stdset="1">
721 <name>indent</name> 659 <name>indent</name>
722 <number>0</number> 660 <number>0</number>
723 </property> 661 </property>
724 </widget> 662 </widget>
725 <widget row="5" column="0" > 663 <widget row="2" column="1" >
726 <class>QLabel</class> 664 <class>QLabel</class>
727 <property stdset="1"> 665 <property stdset="1">
728 <name>name</name> 666 <name>name</name>
729 <cstring>TextLabel4_2_2</cstring> 667 <cstring>AP_LBL</cstring>
730 </property> 668 </property>
731 <property stdset="1"> 669 <property stdset="1">
732 <name>text</name> 670 <name>frameShape</name>
733 <string>Rate</string> 671 <enum>Box</enum>
672 </property>
673 <property stdset="1">
674 <name>frameShadow</name>
675 <enum>Plain</enum>
676 </property>
677 <property stdset="1">
678 <name>indent</name>
679 <number>0</number>
734 </property> 680 </property>
735 </widget> 681 </widget>
736 <widget row="4" column="1" > 682 <widget row="3" column="1" >
737 <class>QLabel</class> 683 <class>QLabel</class>
738 <property stdset="1"> 684 <property stdset="1">
739 <name>name</name> 685 <name>name</name>
740 <cstring>AP_LBL</cstring> 686 <cstring>Mode_LBL</cstring>
741 </property> 687 </property>
742 <property stdset="1"> 688 <property stdset="1">
743 <name>frameShape</name> 689 <name>frameShape</name>
744 <enum>Panel</enum> 690 <enum>Box</enum>
745 </property> 691 </property>
746 <property stdset="1"> 692 <property stdset="1">
747 <name>frameShadow</name> 693 <name>frameShadow</name>
748 <enum>Plain</enum> 694 <enum>Plain</enum>
749 </property> 695 </property>
750 <property stdset="1"> 696 <property stdset="1">
751 <name>indent</name> 697 <name>indent</name>
752 <number>0</number> 698 <number>0</number>
753 </property> 699 </property>
754 </widget> 700 </widget>
755 <widget row="1" column="1" > 701 <widget row="1" column="1" >
756 <class>QLabel</class> 702 <class>QLabel</class>
757 <property stdset="1"> 703 <property stdset="1">
758 <name>name</name> 704 <name>name</name>
759 <cstring>ESSID_LBL</cstring> 705 <cstring>ESSID_LBL</cstring>
760 </property> 706 </property>
761 <property stdset="1"> 707 <property stdset="1">
762 <name>frameShape</name> 708 <name>frameShape</name>
763 <enum>Panel</enum> 709 <enum>Box</enum>
764 </property> 710 </property>
765 <property stdset="1"> 711 <property stdset="1">
766 <name>frameShadow</name> 712 <name>frameShadow</name>
767 <enum>Plain</enum> 713 <enum>Plain</enum>
768 </property> 714 </property>
769 <property stdset="1"> 715 <property stdset="1">
770 <name>indent</name> 716 <name>indent</name>
771 <number>0</number> 717 <number>0</number>
772 </property> 718 </property>
773 </widget> 719 </widget>
774 <widget row="2" column="1" > 720 <widget row="3" column="0" >
775 <class>QLabel</class> 721 <class>QLabel</class>
776 <property stdset="1"> 722 <property stdset="1">
777 <name>name</name> 723 <name>name</name>
778 <cstring>Mode_LBL</cstring> 724 <cstring>TextLabel3_3</cstring>
779 </property> 725 </property>
780 <property stdset="1"> 726 <property stdset="1">
781 <name>frameShape</name> 727 <name>text</name>
782 <enum>Panel</enum> 728 <string>Mode</string>
783 </property> 729 </property>
730 </widget>
731 <widget row="5" column="0" >
732 <class>QLabel</class>
784 <property stdset="1"> 733 <property stdset="1">
785 <name>frameShadow</name> 734 <name>name</name>
786 <enum>Plain</enum> 735 <cstring>TextLabel4_3</cstring>
787 </property> 736 </property>
788 <property stdset="1"> 737 <property stdset="1">
789 <name>indent</name> 738 <name>text</name>
790 <number>0</number> 739 <string>Channel</string>
740 </property>
741 </widget>
742 <widget row="0" column="0" >
743 <class>QLabel</class>
744 <property stdset="1">
745 <name>name</name>
746 <cstring>TextLabel1_3</cstring>
747 </property>
748 <property stdset="1">
749 <name>text</name>
750 <string>Station</string>
751 </property>
752 </widget>
753 <widget row="1" column="0" >
754 <class>QLabel</class>
755 <property stdset="1">
756 <name>name</name>
757 <cstring>TextLabel2_3</cstring>
758 </property>
759 <property stdset="1">
760 <name>text</name>
761 <string>ESSID</string>
762 </property>
763 </widget>
764 <widget row="4" column="0" >
765 <class>QLabel</class>
766 <property stdset="1">
767 <name>name</name>
768 <cstring>TextLabel4_3_2</cstring>
769 </property>
770 <property stdset="1">
771 <name>text</name>
772 <string>Frequency</string>
791 </property> 773 </property>
792 </widget> 774 </widget>
793 </grid> 775 </grid>
794 </widget> 776 </widget>
795 <widget> 777 <widget>
796 <class>QGroupBox</class> 778 <class>QGroupBox</class>
797 <property stdset="1"> 779 <property stdset="1">
798 <name>name</name> 780 <name>name</name>
799 <cstring>GroupBox1</cstring> 781 <cstring>GroupBox1</cstring>
800 </property> 782 </property>
801 <property stdset="1"> 783 <property stdset="1">
784 <name>margin</name>
785 <number>0</number>
786 </property>
787 <property stdset="1">
802 <name>title</name> 788 <name>title</name>
803 <string>Link Quality</string> 789 <string>Link Quality</string>
804 </property> 790 </property>
805 <property> 791 <property>
806 <name>layoutMargin</name> 792 <name>layoutMargin</name>
807 </property> 793 </property>
808 <property> 794 <property>
809 <name>layoutSpacing</name> 795 <name>layoutSpacing</name>
810 </property> 796 </property>
811 <grid> 797 <grid>
812 <property stdset="1"> 798 <property stdset="1">
813 <name>margin</name> 799 <name>margin</name>
814 <number>2</number> 800 <number>2</number>
815 </property> 801 </property>
816 <property stdset="1"> 802 <property stdset="1">
817 <name>spacing</name> 803 <name>spacing</name>
818 <number>2</number> 804 <number>0</number>
819 </property> 805 </property>
820 <widget row="1" column="0" > 806 <widget row="1" column="0" >
821 <class>QLabel</class> 807 <class>QLabel</class>
822 <property stdset="1"> 808 <property stdset="1">
823 <name>name</name> 809 <name>name</name>
824 <cstring>TextLabel2_2_2</cstring> 810 <cstring>TextLabel2_2_2</cstring>
825 </property> 811 </property>
826 <property stdset="1"> 812 <property stdset="1">
827 <name>text</name> 813 <name>text</name>
828 <string>Noise</string> 814 <string>Noise</string>
829 </property> 815 </property>
830 </widget> 816 </widget>
831 <widget row="2" column="0" > 817 <widget row="2" column="0" >
832 <class>QLabel</class> 818 <class>QLabel</class>
833 <property stdset="1"> 819 <property stdset="1">
834 <name>name</name> 820 <name>name</name>
835 <cstring>TextLabel3_2_2</cstring> 821 <cstring>TextLabel3_2_2</cstring>
836 </property> 822 </property>
837 <property stdset="1"> 823 <property stdset="1">
838 <name>text</name> 824 <name>text</name>
839 <string>Quality</string> 825 <string>Quality</string>
840 </property> 826 </property>
841 </widget> 827 </widget>
842 <widget row="1" column="2" > 828 <widget row="1" column="2" >
843 <class>QProgressBar</class> 829 <class>QProgressBar</class>
844 <property stdset="1"> 830 <property stdset="1">
845 <name>name</name> 831 <name>name</name>
846 <cstring>Noise_PB</cstring> 832 <cstring>Noise_PB</cstring>
847 </property> 833 </property>
848 <property stdset="1"> 834 <property stdset="1">
849 <name>progress</name> 835 <name>progress</name>
850 <number>0</number> 836 <number>10</number>
851 </property> 837 </property>
852 </widget> 838 </widget>
853 <widget row="2" column="2" > 839 <widget row="2" column="2" >
854 <class>QProgressBar</class> 840 <class>QProgressBar</class>
855 <property stdset="1"> 841 <property stdset="1">
856 <name>name</name> 842 <name>name</name>
857 <cstring>Quality_PB</cstring> 843 <cstring>Quality_PB</cstring>
858 </property> 844 </property>
859 <property stdset="1"> 845 <property stdset="1">
860 <name>progress</name> 846 <name>progress</name>
861 <number>0</number> 847 <number>10</number>
862 </property> 848 </property>
863 </widget> 849 </widget>
864 <widget row="0" column="0" > 850 <widget row="0" column="0" >
865 <class>QLabel</class> 851 <class>QLabel</class>
866 <property stdset="1"> 852 <property stdset="1">
867 <name>name</name> 853 <name>name</name>
868 <cstring>TextLabel1_2_2</cstring> 854 <cstring>TextLabel1_2_2</cstring>
869 </property> 855 </property>
870 <property stdset="1"> 856 <property stdset="1">
871 <name>text</name> 857 <name>text</name>
872 <string>Signal</string> 858 <string>Signal</string>
873 </property> 859 </property>
874 </widget> 860 </widget>
875 <spacer row="0" column="1" >
876 <property>
877 <name>name</name>
878 <cstring>Spacer28</cstring>
879 </property>
880 <property stdset="1">
881 <name>orientation</name>
882 <enum>Horizontal</enum>
883 </property>
884 <property stdset="1">
885 <name>sizeType</name>
886 <enum>Fixed</enum>
887 </property>
888 <property>
889 <name>sizeHint</name>
890 <size>
891 <width>16</width>
892 <height>20</height>
893 </size>
894 </property>
895 </spacer>
896 <widget row="0" column="2" > 861 <widget row="0" column="2" >
897 <class>QProgressBar</class> 862 <class>QProgressBar</class>
898 <property stdset="1"> 863 <property stdset="1">
899 <name>name</name> 864 <name>name</name>
900 <cstring>Signal_PB</cstring> 865 <cstring>Signal_PB</cstring>
901 </property> 866 </property>
902 <property stdset="1"> 867 <property stdset="1">
903 <name>frameShadow</name> 868 <name>frameShadow</name>
904 <enum>Plain</enum> 869 <enum>Plain</enum>
905 </property> 870 </property>
906 <property stdset="1"> 871 <property stdset="1">
907 <name>lineWidth</name> 872 <name>lineWidth</name>
908 <number>1</number> 873 <number>1</number>
909 </property> 874 </property>
910 <property stdset="1"> 875 <property stdset="1">
911 <name>progress</name> 876 <name>progress</name>
912 <number>0</number> 877 <number>10</number>
913 </property> 878 </property>
914 </widget> 879 </widget>
915 </grid> 880 </grid>
916 </widget> 881 </widget>
917 <spacer> 882 <spacer>
918 <property> 883 <property>
919 <name>name</name> 884 <name>name</name>
920 <cstring>Spacer11</cstring> 885 <cstring>Spacer11</cstring>
921 </property> 886 </property>
922 <property stdset="1"> 887 <property stdset="1">
923 <name>orientation</name> 888 <name>orientation</name>
924 <enum>Vertical</enum> 889 <enum>Vertical</enum>
925 </property> 890 </property>
926 <property stdset="1"> 891 <property stdset="1">
927 <name>sizeType</name> 892 <name>sizeType</name>
928 <enum>Expanding</enum> 893 <enum>Expanding</enum>
929 </property> 894 </property>
930 <property> 895 <property>
931 <name>sizeHint</name> 896 <name>sizeHint</name>
932 <size> 897 <size>
933 <width>20</width> 898 <width>20</width>
934 <height>20</height> 899 <height>20</height>
935 </size> 900 </size>
936 </property> 901 </property>
937 </spacer> 902 </spacer>
903 <widget>
904 <class>QLayoutWidget</class>
905 <property stdset="1">
906 <name>name</name>
907 <cstring>Layout21</cstring>
908 </property>
909 <hbox>
910 <property stdset="1">
911 <name>margin</name>
912 <number>0</number>
913 </property>
914 <property stdset="1">
915 <name>spacing</name>
916 <number>6</number>
917 </property>
918 <widget>
919 <class>QCheckBox</class>
920 <property stdset="1">
921 <name>name</name>
922 <cstring>Refresh_CB</cstring>
923 </property>
924 <property stdset="1">
925 <name>sizePolicy</name>
926 <sizepolicy>
927 <hsizetype>1</hsizetype>
928 <vsizetype>5</vsizetype>
929 </sizepolicy>
930 </property>
931 <property stdset="1">
932 <name>text</name>
933 <string>Live feed </string>
934 </property>
935 </widget>
936 <spacer>
937 <property>
938 <name>name</name>
939 <cstring>Spacer16</cstring>
940 </property>
941 <property stdset="1">
942 <name>orientation</name>
943 <enum>Horizontal</enum>
944 </property>
945 <property stdset="1">
946 <name>sizeType</name>
947 <enum>Expanding</enum>
948 </property>
949 <property>
950 <name>sizeHint</name>
951 <size>
952 <width>20</width>
953 <height>20</height>
954 </size>
955 </property>
956 </spacer>
957 </hbox>
958 </widget>
938 </vbox> 959 </vbox>
939 </widget> 960 </widget>
940 </widget> 961 </widget>
941 </vbox> 962 </vbox>
942</widget> 963</widget>
943<connections> 964<connections>
944 <connection> 965 <connection>
945 <sender>EnableWEB_CB</sender> 966 <sender>EnableWEP_CB</sender>
946 <signal>toggled(bool)</signal> 967 <signal>toggled(bool)</signal>
947 <receiver>KeyButtonGroup</receiver> 968 <receiver>KeyButtonGroup</receiver>
948 <slot>setEnabled(bool)</slot> 969 <slot>setEnabled(bool)</slot>
949 </connection> 970 </connection>
950 <connection> 971 <connection>
951 <sender>SpecifyAP_CB</sender> 972 <sender>SpecifyAP_CB</sender>
952 <signal>toggled(bool)</signal> 973 <signal>toggled(bool)</signal>
953 <receiver>APMac_LE</receiver> 974 <receiver>APMac_LE</receiver>
954 <slot>setEnabled(bool)</slot> 975 <slot>setEnabled(bool)</slot>
955 </connection> 976 </connection>
956 <connection> 977 <connection>
957 <sender>SpecifyAP_CB</sender> 978 <sender>SpecifyAP_CB</sender>
958 <signal>toggled(bool)</signal> 979 <signal>toggled(bool)</signal>
959 <receiver>macLabel</receiver> 980 <receiver>macLabel</receiver>
960 <slot>setEnabled(bool)</slot> 981 <slot>setEnabled(bool)</slot>
961 </connection> 982 </connection>
962 <connection> 983 <connection>
963 <sender>SpecifyChannel_CB</sender> 984 <sender>EnableWEP_CB</sender>
985 <signal>toggled(bool)</signal>
986 <receiver>AcceptNonEncrypted_CB</receiver>
987 <slot>setEnabled(bool)</slot>
988 </connection>
989 <connection>
990 <sender>Key1_RB</sender>
991 <signal>toggled(bool)</signal>
992 <receiver>Key1_LE</receiver>
993 <slot>setEnabled(bool)</slot>
994 </connection>
995 <connection>
996 <sender>Key2_RB</sender>
997 <signal>toggled(bool)</signal>
998 <receiver>Key2_LE</receiver>
999 <slot>setEnabled(bool)</slot>
1000 </connection>
1001 <connection>
1002 <sender>Key3_RB</sender>
964 <signal>toggled(bool)</signal> 1003 <signal>toggled(bool)</signal>
965 <receiver>ChannelNr_SB</receiver> 1004 <receiver>Key3_LE</receiver>
966 <slot>setEnabled(bool)</slot> 1005 <slot>setEnabled(bool)</slot>
967 </connection> 1006 </connection>
968 <connection> 1007 <connection>
969 <sender>EnableWEB_CB</sender> 1008 <sender>Key4_RB</sender>
970 <signal>toggled(bool)</signal> 1009 <signal>toggled(bool)</signal>
971 <receiver>CheckBox4</receiver> 1010 <receiver>Key4_LE</receiver>
972 <slot>setEnabled(bool)</slot> 1011 <slot>setEnabled(bool)</slot>
973 </connection> 1012 </connection>
1013 <connection>
1014 <sender>Refresh_CB</sender>
1015 <signal>toggled(bool)</signal>
1016 <receiver>WLanGUI</receiver>
1017 <slot>SLOT_AutoRefresh(bool)</slot>
1018 </connection>
1019 <slot access="public">SLOT_AutoRefresh(bool)</slot>
974</connections> 1020</connections>
975</UI> 1021</UI>
diff --git a/noncore/settings/networksettings2/wlan/wlan_NNI.cpp b/noncore/settings/networksettings2/wlan/wlan_NNI.cpp
index 78e756c..61969f2 100644
--- a/noncore/settings/networksettings2/wlan/wlan_NNI.cpp
+++ b/noncore/settings/networksettings2/wlan/wlan_NNI.cpp
@@ -1,36 +1,140 @@
1#include <unistd.h>
1#include "wlanedit.h" 2#include "wlanedit.h"
2#include "wlan_NNI.h" 3#include "wlan_NNI.h"
3#include "wlan_NN.h" 4#include "wlan_NN.h"
4 5
5AWLan::AWLan( WLanNetNode * PNN ) : ANetNodeInstance( PNN ) { 6AWLan::AWLan( WLanNetNode * PNN ) : ANetNodeInstance( PNN ) {
6 GUI = 0; 7 GUI = 0;
7 RT = 0; 8 RT = 0;
9 Data.ESSID = "";
10 Data.NodeName = tr("<UseHostName>");
11 Data.Mode = 0;
12 Data.SpecificAP = 0;
13 Data.APMac = "";
14 Data.Encrypted = 0;
15 Data.AcceptNonEncrypted = 0;
16 Data.Key[0] = "";
17 Data.Key[1] = "";
18 Data.Key[2] = "";
19 Data.Key[3] = "";
8} 20}
9 21
10void AWLan::setSpecificAttribute( QString & , QString & ) { 22void AWLan::setSpecificAttribute( QString & A, QString & V ) {
23 if( A == "essid" ) {
24 Data.ESSID = V;
25 } else if( A == "nodename" ) {
26 Data.NodeName = V;
27 } else if( A == "mode" ) {
28 Data.Mode = V.toShort();
29 } else if( A == "specificap" ) {
30 Data.SpecificAP = (V=="yes");
31 } else if( A == "apmac" ) {
32 Data.APMac = V;
33 } else if( A == "encrypted" ) {
34 Data.Encrypted = (V=="yes");
35 } else if( A == "acceptnonencrypted" ) {
36 Data.AcceptNonEncrypted = (V=="yes");
37 } else if( A == "key0" ) {
38 Data.Key[0] = V;
39 } else if( A == "key1" ) {
40 Data.Key[1] = V;
41 } else if( A == "key2" ) {
42 Data.Key[2] = V;
43 } else if( A == "key3" ) {
44 Data.Key[3] = V;
45 }
11} 46}
12 47
13void AWLan::saveSpecificAttribute( QTextStream & ) { 48void AWLan::saveSpecificAttribute( QTextStream & S ) {
49 S << "essid=" << quote( Data.ESSID ) << endl;
50 S << "nodename=" << quote( Data.NodeName ) << endl;
51 S << "mode=" << Data.Mode << endl;
52 S << "specificap="
53 << ((Data.SpecificAP) ? "yes" : "no")
54 << endl;
55 S << "apmac=" << Data.APMac << endl;
56 S << "encrypted="
57 << ((Data.Encrypted) ? "yes" : "no")
58 << endl;
59 S << "acceptnonencrypted="
60 << ((Data.AcceptNonEncrypted) ? "yes" : "no")
61 << endl;
62 for( int i = 0 ;i < 4 ; i ++ ) {
63 S << "key" << i << "=" << Data.Key[i] << endl;
64 }
14} 65}
15 66
16QWidget * AWLan::edit( QWidget * parent ) { 67QWidget * AWLan::edit( QWidget * parent ) {
17 GUI = new WLanEdit( parent ); 68 GUI = new WLanEdit( parent, this );
18 GUI->showData( Data ); 69 GUI->showData( Data );
19 return GUI; 70 return GUI;
20} 71}
21 72
22QString AWLan::acceptable( void ) { 73QString AWLan::acceptable( void ) {
23 return ( GUI ) ? GUI->acceptable( ) : QString(); 74 return ( GUI ) ? GUI->acceptable( ) : QString();
24} 75}
25 76
26void AWLan::commit( void ) { 77void AWLan::commit( void ) {
27 if( GUI && GUI->commit( Data ) ) 78 if( GUI && GUI->commit( Data ) )
28 setModified( 1 ); 79 setModified( 1 );
29} 80}
30 81
31bool AWLan::generateDataForCommonFile( 82bool AWLan::generateDataForCommonFile(
32 SystemFile &, 83 SystemFile & S,
33 long ) { 84 long ) {
34 return 1; 85
86 S << " wireless_essid \""
87 << Data.ESSID
88 << "\""
89 << endl;
90
91 if( ! Data.NodeName.isEmpty() ) {
92 if( Data.NodeName == tr("<UseHostName>") ) {
93 char Buf[100];
94 if( gethostname(Buf, sizeof(Buf) ) == 0 ) {
95 Buf[99] = '\0'; // just to make sure
96 S << " wireless_nick "
97 << Buf
98 << endl;
99 }
100 } else {
101 S << " wireless_nick \""
102 << Data.NodeName
103 << "\""
104 << endl;
105 }
106 }
107
108 char * M;
109 switch ( Data.Mode ) {
110 case 0 :
111 M = "Auto";
112 break;
113 case 1 :
114 M = "Managed";
115 break;
116 case 2 :
117 M = "Ad-Hoc";
118 break;
119 }
120
121 S << " wireless_mode "
122 << M
123 << endl;
124 if( Data.Encrypted ) {
125 for( int i = 0; i < 4; i ++ ) {
126 if( ! Data.Key[i].isEmpty() ) {
127 S << " wireless_key"
128 << i
129 << " "
130 << Data.Key[i]
131 << endl;
132 }
133 }
134 S << " wireless_keymode "
135 << ((Data.AcceptNonEncrypted) ? "open" : "restricted")
136 << endl;
137 }
138 return 0;
35} 139}
36 140
diff --git a/noncore/settings/networksettings2/wlan/wlan_NNI.h b/noncore/settings/networksettings2/wlan/wlan_NNI.h
index d861d13..2211c47 100644
--- a/noncore/settings/networksettings2/wlan/wlan_NNI.h
+++ b/noncore/settings/networksettings2/wlan/wlan_NNI.h
@@ -1,47 +1,47 @@
1#ifndef WLAN_H 1#ifndef WLAN_H
2#define WLAN_H 2#define WLAN_H
3 3
4#include <netnode.h> 4#include <netnode.h>
5#include "wlandata.h" 5#include "wlandata.h"
6#include "wlanrun.h" 6#include "wlanrun.h"
7 7
8class WLanNetNode; 8class WLanNetNode;
9class WLanEdit; 9class WLanEdit;
10 10
11class AWLan : public ANetNodeInstance { 11class AWLan : public ANetNodeInstance {
12 12
13public : 13public :
14 14
15 AWLan( WLanNetNode * PNN ); 15 AWLan( WLanNetNode * PNN );
16 16
17 QWidget * edit( QWidget * parent ); 17 QWidget * edit( QWidget * parent );
18 QString acceptable( void ); 18 QString acceptable( void );
19 void commit( void ); 19 void commit( void );
20 20
21 RuntimeInfo * runtime( void ) 21 RuntimeInfo * runtime( void )
22 { if( RT == 0 ) 22 { if( RT == 0 )
23 RT = new WLanRun( this, Data ); 23 RT = new WLanRun( this, Data );
24 return RT; 24 return RT;
25 } 25 }
26 26
27 virtual void * data( void ) 27 virtual void * data( void )
28 { return (void *)&Data; } 28 { return (void *)&Data; }
29 29
30 virtual bool hasDataFor( const QString & ) 30 virtual bool hasDataFor( const QString & )
31 { return 0; } 31 { return 1; }
32 virtual bool generateDataForCommonFile( 32 virtual bool generateDataForCommonFile(
33 SystemFile & SF, long DevNr ); 33 SystemFile & SF, long DevNr );
34protected : 34protected :
35 35
36 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 36 virtual void setSpecificAttribute( QString & Attr, QString & Value );
37 virtual void saveSpecificAttribute( QTextStream & TS ); 37 virtual void saveSpecificAttribute( QTextStream & TS );
38 38
39private : 39private :
40 40
41 WLanEdit * GUI; 41 WLanEdit * GUI;
42 WLanData Data; 42 WLanData Data;
43 WLanRun * RT; 43 WLanRun * RT;
44 44
45}; 45};
46 46
47#endif 47#endif
diff --git a/noncore/settings/networksettings2/wlan/wlandata.h b/noncore/settings/networksettings2/wlan/wlandata.h
index ba1f2c2..36990a9 100644
--- a/noncore/settings/networksettings2/wlan/wlandata.h
+++ b/noncore/settings/networksettings2/wlan/wlandata.h
@@ -1,17 +1,16 @@
1#ifndef WLAN_DATA_H 1#ifndef WLAN_DATA_H
2#define WLAN_DATA_H 2#define WLAN_DATA_H
3 3
4#include <qstring.h> 4#include <qstring.h>
5typedef struct WLanData { 5typedef struct WLanData {
6 QString Device; 6 QString ESSID;
7 QString LockFile; 7 QString NodeName;
8 long Speed; 8 short Mode;
9 short Parity; 9 bool SpecificAP;
10 short DataBits; 10 QString APMac;
11 short StopBits; 11 bool Encrypted;
12 bool HardwareControl; 12 QString Key[4];
13 bool SoftwareControl; 13 bool AcceptNonEncrypted;
14
15} WLanData_t; 14} WLanData_t;
16 15
17#endif 16#endif
diff --git a/noncore/settings/networksettings2/wlan/wlanedit.cpp b/noncore/settings/networksettings2/wlan/wlanedit.cpp
index c884886..8d3979e 100644
--- a/noncore/settings/networksettings2/wlan/wlanedit.cpp
+++ b/noncore/settings/networksettings2/wlan/wlanedit.cpp
@@ -1,16 +1,115 @@
1#include <qlineedit.h>
2#include <qprogressbar.h>
3#include <qcombobox.h>
4#include <qlabel.h>
5#include <qregexp.h>
6#include <qcheckbox.h>
1#include <GUIUtils.h> 7#include <GUIUtils.h>
8#include <resources.h>
9#include <wextensions.h>
10
2#include "wlanedit.h" 11#include "wlanedit.h"
12#include "wlan_NN.h"
13#include "wlan_NNI.h"
14
15WLanEdit::WLanEdit( QWidget * Parent, ANetNodeInstance * TNNI ) :
16 WLanGUI( Parent ), RefreshTimer(this){
17
18 InterfaceInfo * II;
19
20 NNI = TNNI;
21 Dev = NNI->runtime()->device();
22 WE = 0;
23 if( ( II = Dev->assignedInterface() ) ) {
24 // show data
25 WE = new WExtensions( II->Name );
26
27 if( WE->doesHaveWirelessExtensions() ) {
28 QString S;
29 Station_LBL->setText( WE->station() );
30 ESSID_LBL->setText( WE->essid() );
31 Mode_LBL->setText( WE->mode() );
32 S.setNum( WE->frequency() );
33 Frequency_LBL->setText( S );
34 S.setNum( WE->channel() );
35 Channel_LBL->setText( S );
36 S.setNum( WE->rate() );
37 Rate_LBL->setText( S );
38 AP_LBL->setText( WE->ap() );
39
40 SLOT_Refresh();
41
42 connect( &RefreshTimer, SIGNAL( timeout() ),
43 this, SLOT( SLOT_Refresh() ) );
44 }
45 }
46}
3 47
4WLanEdit::WLanEdit( QWidget * Parent ) : WLanGUI( Parent ){ 48WLanEdit::~WLanEdit( void ) {
49 if( WE )
50 delete WE;
5} 51}
6 52
7QString WLanEdit::acceptable( void ) { 53QString WLanEdit::acceptable( void ) {
54 if( ESSID_LE->text().isEmpty() ) {
55 return QString("ESSID is mandatory");
56 }
57 if( SpecifyAP_CB->isChecked() &&
58 APMac_LE->text().isEmpty() ) {
59 return QString("APMac must have value");
60 }
8 return QString(); 61 return QString();
9} 62}
10 63
11void WLanEdit::showData( WLanData_t & Data ) { 64void WLanEdit::showData( WLanData_t & Data ) {
65 Mode_CB->setCurrentItem( Data.Mode );
66 ESSID_LE->setText( Data.ESSID );
67 NodeName_LE->setText( Data.NodeName );
68 SpecifyAP_CB->setChecked( Data.SpecificAP );
69 APMac_LE->setText( Data.APMac );
70
71 EnableWEP_CB->setChecked( Data.Encrypted );
72 AcceptNonEncrypted_CB->setChecked( Data.AcceptNonEncrypted );
73 Key1_LE->setText( Data.Key[0] );
74 Key2_LE->setText( Data.Key[1] );
75 Key3_LE->setText( Data.Key[2] );
76 Key4_LE->setText( Data.Key[3] );
12} 77}
13 78
14bool WLanEdit::commit( WLanData_t & Data ) { 79bool WLanEdit::commit( WLanData_t & Data ) {
80 bool SM = 0;
81
82 TXTM( Data.ESSID, ESSID_LE, SM );
83 TXTM( Data.NodeName, NodeName_LE, SM );
84 TXTM( Data.APMac, APMac_LE, SM );
85 TXTM( Data.Key[0], Key1_LE, SM );
86 TXTM( Data.Key[1], Key2_LE, SM );
87 TXTM( Data.Key[2], Key3_LE, SM );
88 TXTM( Data.Key[3], Key4_LE, SM );
89 CBM( Data.SpecificAP, SpecifyAP_CB, SM );
90 CBM( Data.Encrypted, EnableWEP_CB, SM );
91 CBM( Data.AcceptNonEncrypted, AcceptNonEncrypted_CB, SM );
92 CIM( Data.Mode, Mode_CB, SM );
15 return 0; 93 return 0;
16} 94}
95
96void WLanEdit::SLOT_Refresh( void ) {
97 if( WE ) {
98 int signal, noise, quality;
99 WE->stats( signal, noise, quality);
100
101 Signal_PB->setProgress( signal );
102 Noise_PB->setProgress( noise );
103 Quality_PB->setProgress( quality );
104 }
105}
106
107void WLanEdit::SLOT_AutoRefresh( bool ar ) {
108 if( ar ) {
109 RefreshTimer.start( 1000 );
110 SLOT_Refresh();
111 } else {
112 RefreshTimer.stop();
113 }
114}
115
diff --git a/noncore/settings/networksettings2/wlan/wlanedit.h b/noncore/settings/networksettings2/wlan/wlanedit.h
index b7442d5..e550c14 100644
--- a/noncore/settings/networksettings2/wlan/wlanedit.h
+++ b/noncore/settings/networksettings2/wlan/wlanedit.h
@@ -1,12 +1,32 @@
1#include <qtimer.h>
2#include <wextensions.h>
1#include "wlandata.h" 3#include "wlandata.h"
2#include "wlanGUI.h" 4#include "wlanGUI.h"
3 5
6class ANetNodeInstance;
7class AsDevice;
8class WExtensions;
9
4class WLanEdit : public WLanGUI { 10class WLanEdit : public WLanGUI {
5 11
6public : 12public :
7 13
8 WLanEdit( QWidget * parent ); 14 WLanEdit( QWidget * parent, ANetNodeInstance * NNI );
15 ~WLanEdit( void );
9 QString acceptable( void ); 16 QString acceptable( void );
10 void showData( WLanData_t & Data ); 17 void showData( WLanData_t & Data );
11 bool commit( WLanData_t & Data ); 18 bool commit( WLanData_t & Data );
19
20public slots :
21
22 void SLOT_AutoRefresh( bool );
23 void SLOT_Refresh( void );
24
25private :
26
27 ANetNodeInstance * NNI;
28 AsDevice * Dev;
29 QTimer RefreshTimer;
30 WExtensions * WE;
31
12}; 32};
diff --git a/noncore/settings/networksettings2/wlan/wlanrun.cpp b/noncore/settings/networksettings2/wlan/wlanrun.cpp
index 79f11f7..3f1d4a9 100644
--- a/noncore/settings/networksettings2/wlan/wlanrun.cpp
+++ b/noncore/settings/networksettings2/wlan/wlanrun.cpp
@@ -1,5 +1,185 @@
1
2#include <qfile.h>
3#include <qtextstream.h>
4#include <qstringlist.h>
5#include <resources.h>
1#include "wlanrun.h" 6#include "wlanrun.h"
2 7
8void WLanRun::detectState( NodeCollection * NC ) {
9
10 // unavailable : no card found
11 // available : card found and assigned to us or free
12 // up : card found and assigned to us and up
13
14 QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number());
15 System & Sys = NSResources->system();
16 InterfaceInfo * Run;
17
18 QFile F( S );
19
20 if( F.open( IO_ReadOnly ) ) {
21 // could open file -> read interface and assign
22 QString X;
23 QTextStream TS(&F);
24 X = TS.readLine();
25 // find interface
26 if( handlesInterface( X ) ) {
27 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
28 It.current();
29 ++It ) {
30 Run = It.current();
31 if( X == Run->Name ) {
32 Run->assignNode( netNode() );
33 assignInterface( Run );
34 NC->setCurrentState( IsUp );
35 return;
36 }
37 }
38 }
39 }
40
41 if( ( Run = assignedInterface() ) ) {
42 // we already have an interface assigned -> still present ?
43 if( ! Run->IsUp ) {
44 // usb is still free -> keep assignment
45 NC->setCurrentState( Available );
46 return;
47 } // else interface is up but NOT us -> some other profile
48 }
49
50 // nothing (valid) assigned to us
51 assignInterface( 0 );
52
53 // find possible interface
54 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
55 It.current();
56 ++It ) {
57 Run = It.current();
58 if( handlesInterface( *Run ) &&
59 ( Run->CardType == ARPHRD_ETHER
60#ifdef ARPHRD_IEEE1394
61 || Run->CardType == ARPHRD_IEEE1394
62#endif
63 ) &&
64 ! Run->IsUp
65 ) {
66 // proper type, and Not UP -> free
67 NC->setCurrentState( Off );
68 return;
69 }
70 }
71 // no free found
72
73 NC->setCurrentState( Unavailable );
74
75}
76
77bool WLanRun::setState( NodeCollection * NC, Action_t A, bool ) {
78
79 // we only handle activate and deactivate
80 switch( A ) {
81 case Activate :
82 {
83 if( NC->currentState() != Off ) {
84 return 0;
85 }
86 InterfaceInfo * N = getInterface();
87 if( ! N ) {
88 // no interface available
89 NC->setCurrentState( Unavailable );
90 return 0;
91 }
92 // because we were OFF the interface
93 // we get back is NOT assigned
94 N->assignNode( netNode() );
95 assignInterface( N );
96 NC->setCurrentState( Available );
97 return 1;
98 }
99 case Deactivate :
100 if( NC->currentState() == IsUp ) {
101 // bring down first
102 if( ! connection()->setState( Down ) )
103 // could not ...
104 return 0;
105 } else if( NC->currentState() != Available ) {
106 return 1;
107 }
108 assignedInterface()->assignNode( 0 ); // release
109 assignInterface( 0 );
110 NC->setCurrentState( Off );
111 return 1;
112 default :
113 // FT
114 break;
115 }
116 return 0;
117}
118
119bool WLanRun::canSetState( State_t Curr, Action_t A ) {
120 // we only handle up down activate and deactivate
121 switch( A ) {
122 case Activate :
123 { // at least available
124 if( Curr == Available ) {
125 return 1;
126 }
127 // or we can make one available
128 InterfaceInfo * N = getInterface();
129 if( ! N || N->assignedNode() != 0 ) {
130 // non available or assigned
131 return 0;
132 }
133 return 1;
134 }
135 case Deactivate :
136 return ( Curr >= Available );
137 default :
138 // FT
139 break;
140 }
141 return 0;
142}
143
144// get interface that is free or assigned to us
145InterfaceInfo * WLanRun::getInterface( void ) {
146
147 System & S = NSResources->system();
148 InterfaceInfo * best = 0, * Run;
149
150 for( QDictIterator<InterfaceInfo> It(S.interfaces());
151 It.current();
152 ++It ) {
153 Run = It.current();
154 if( handlesInterface( *Run ) &&
155 ( Run->CardType == ARPHRD_ETHER
156#ifdef ARPHRD_IEEE1394
157 || Run->CardType == ARPHRD_IEEE1394
158#endif
159 )
160 ) {
161 // this is a LAN card
162 if( Run->assignedNode() == netNode() ) {
163 // assigned to us
164 return Run;
165 } else if( Run->assignedNode() == 0 ) {
166 // free
167 best = Run;
168 }
169 }
170 }
171 return best; // can be 0
172}
173
3bool WLanRun::handlesInterface( const QString & S ) { 174bool WLanRun::handlesInterface( const QString & S ) {
175 InterfaceInfo * II;
176 II = NSResources->system().interface( S );
177 if( ( II = NSResources->system().interface( S ) ) ) {
178 return handlesInterface( *II );
179 }
4 return Pat.match( S ) >= 0; 180 return Pat.match( S ) >= 0;
5} 181}
182
183bool WLanRun::handlesInterface( const InterfaceInfo & II ) {
184 return ( Pat.match( II.Name ) < 0 );
185}
diff --git a/noncore/settings/networksettings2/wlan/wlanrun.h b/noncore/settings/networksettings2/wlan/wlanrun.h
index f46bcb7..25d5b96 100644
--- a/noncore/settings/networksettings2/wlan/wlanrun.h
+++ b/noncore/settings/networksettings2/wlan/wlanrun.h
@@ -1,40 +1,37 @@
1#ifndef WLANRUN_H 1#ifndef WLANRUN_H
2#define WLANRUN_H 2#define WLANRUN_H
3 3
4#include <qregexp.h> 4#include <qregexp.h>
5#include <asdevice.h> 5#include <asdevice.h>
6#include "wlandata.h" 6#include "wlandata.h"
7 7
8class WLanRun : public AsDevice { 8class WLanRun : public AsDevice {
9 9
10public : 10public :
11 11
12 WLanRun( ANetNodeInstance * NNI, WLanData & Data ) : 12 WLanRun( ANetNodeInstance * NNI, WLanData & Data ) :
13 AsDevice( NNI ), 13 AsDevice( NNI ),
14 Pat( "wlan[0-9]" ) 14 Pat( "wlan[0-9]" )
15 { } 15 { }
16 16
17 virtual AsDevice * device( void ) 17 virtual AsDevice * device( void )
18 { return (AsDevice *)this; } 18 { return (AsDevice *)this; }
19 virtual AsDevice * asDevice( void ) 19 virtual AsDevice * asDevice( void )
20 { return (AsDevice *)this; } 20 { return (AsDevice *)this; }
21 21
22protected : 22protected :
23 23
24 void detectState( NodeCollection * ) 24 void detectState( NodeCollection * );
25 { } 25 bool setState( NodeCollection *, Action_t, bool );
26 26 bool canSetState( State_t, Action_t );
27 bool setState( NodeCollection *, Action_t )
28 { return 0; }
29
30 bool canSetState( State_t, Action_t )
31 { return 0; }
32
33 bool handlesInterface( const QString & I ); 27 bool handlesInterface( const QString & I );
28 bool handlesInterface( const InterfaceInfo & II );
34 29
35private : 30private :
36 31
32 InterfaceInfo * getInterface( void );
37 QRegExp Pat; 33 QRegExp Pat;
34 WLanData * Data;
38}; 35};
39 36
40#endif 37#endif