summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/bluetooth/bluetooth_NN.h6
-rw-r--r--noncore/settings/networksettings2/cable/cable_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/cable/cable_NN.h3
-rw-r--r--noncore/settings/networksettings2/editconnection.cpp12
-rw-r--r--noncore/settings/networksettings2/irda/irda_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/irda/irda_NN.h3
-rw-r--r--noncore/settings/networksettings2/lancard/lancardGUI.ui92
-rw-r--r--noncore/settings/networksettings2/lancard/lancard_NN.cpp11
-rw-r--r--noncore/settings/networksettings2/lancard/lancard_NN.h8
-rw-r--r--noncore/settings/networksettings2/lancard/lancard_NNI.cpp2
-rw-r--r--noncore/settings/networksettings2/lancard/lancardedit.cpp195
-rw-r--r--noncore/settings/networksettings2/lancard/lancardedit.h12
-rw-r--r--noncore/settings/networksettings2/lancard/lancardrun.cpp34
-rw-r--r--noncore/settings/networksettings2/lancard/lancardrun.h6
-rw-r--r--noncore/settings/networksettings2/modem/modem_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/modem/modem_NN.h3
-rw-r--r--noncore/settings/networksettings2/network/networkGUI.ui131
-rw-r--r--noncore/settings/networksettings2/network/network_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/network/network_NN.h3
-rw-r--r--noncore/settings/networksettings2/network/networkedit.cpp66
-rw-r--r--noncore/settings/networksettings2/network/networkedit.h8
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.cpp12
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.h13
-rw-r--r--noncore/settings/networksettings2/networksettings2/resources.cpp8
-rw-r--r--noncore/settings/networksettings2/networksettings2/resources.h2
-rw-r--r--noncore/settings/networksettings2/networksettings2/systemfile.cpp8
-rw-r--r--noncore/settings/networksettings2/nsdata.cpp49
-rw-r--r--noncore/settings/networksettings2/ppp/ppp_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/ppp/ppp_NN.h3
-rw-r--r--noncore/settings/networksettings2/profile/profile_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/profile/profile_NN.h3
-rw-r--r--noncore/settings/networksettings2/usb/usb_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/usb/usb_NN.h3
-rw-r--r--noncore/settings/networksettings2/vpn/vpn_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/vpn/vpn_NN.h3
-rw-r--r--noncore/settings/networksettings2/wlan/wlan_NN.cpp2
-rw-r--r--noncore/settings/networksettings2/wlan/wlan_NN.h3
38 files changed, 554 insertions, 172 deletions
diff --git a/noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp b/noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp
index 4579e37..1d0a0f7 100644
--- a/noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp
+++ b/noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp
@@ -1,50 +1,51 @@
1#include "bluetooth_NN.h" 1#include "bluetooth_NN.h"
2#include "bluetoothBNEP_NNI.h" 2#include "bluetoothBNEP_NNI.h"
3#include "bluetoothRFCOMM_NNI.h" 3#include "bluetoothRFCOMM_NNI.h"
4 4
5// 5//
6// 6//
7// BLUETOOTH PAN/NAP node 7// BLUETOOTH PAN/NAP node
8// 8//
9// 9//
10 10
11static const char * BluetoothBNEPNeeds[] = 11static const char * BluetoothBNEPNeeds[] =
12 { 0 12 { 0
13 }; 13 };
14 14
15/** 15/**
16 * Constructor, find all of the possible interfaces 16 * Constructor, find all of the possible interfaces
17 */ 17 */
18BluetoothBNEPNetNode::BluetoothBNEPNetNode() : ANetNode() { 18BluetoothBNEPNetNode::BluetoothBNEPNetNode() :
19 ANetNode(tr("Bluetooth PAN/NAP")) {
19 InstanceCount = 7; // default 20 InstanceCount = 7; // default
20} 21}
21 22
22/** 23/**
23 * Delete any interfaces that we own. 24 * Delete any interfaces that we own.
24 */ 25 */
25BluetoothBNEPNetNode::~BluetoothBNEPNetNode(){ 26BluetoothBNEPNetNode::~BluetoothBNEPNetNode(){
26} 27}
27 28
28const QString BluetoothBNEPNetNode::nodeDescription(){ 29const QString BluetoothBNEPNetNode::nodeDescription(){
29 return tr("\ 30 return tr("\
30<p>Sets up a bluetooth link using the bluetooth Network profile.</p>\ 31<p>Sets up a bluetooth link using the bluetooth Network profile.</p>\
31<p>Use this to connect two computing devices.</p>\ 32<p>Use this to connect two computing devices.</p>\
32" 33"
33); 34);
34} 35}
35 36
36ANetNodeInstance * BluetoothBNEPNetNode::createInstance( void ) { 37ANetNodeInstance * BluetoothBNEPNetNode::createInstance( void ) {
37 return new ABluetoothBNEP( this ); 38 return new ABluetoothBNEP( this );
38} 39}
39 40
40const char ** BluetoothBNEPNetNode::needs( void ) { 41const char ** BluetoothBNEPNetNode::needs( void ) {
41 return BluetoothBNEPNeeds; 42 return BluetoothBNEPNeeds;
42} 43}
43 44
44const char * BluetoothBNEPNetNode::provides( void ) { 45const char * BluetoothBNEPNetNode::provides( void ) {
45 return "device"; 46 return "device";
46} 47}
47 48
48bool BluetoothBNEPNetNode::generateProperFilesFor( 49bool BluetoothBNEPNetNode::generateProperFilesFor(
49 ANetNodeInstance * ) { 50 ANetNodeInstance * ) {
50 return 1; 51 return 1;
@@ -59,65 +60,66 @@ bool BluetoothBNEPNetNode::generateDeviceDataForCommonFile(
59 long ) { 60 long ) {
60 return 1; 61 return 1;
61} 62}
62 63
63QString BluetoothBNEPNetNode::genNic( long nr ) { 64QString BluetoothBNEPNetNode::genNic( long nr ) {
64 QString S; 65 QString S;
65 return S.sprintf( "bnep%ld", nr ); 66 return S.sprintf( "bnep%ld", nr );
66} 67}
67 68
68 69
69void BluetoothBNEPNetNode::setSpecificAttribute( QString & A, QString & V ) { 70void BluetoothBNEPNetNode::setSpecificAttribute( QString & A, QString & V ) {
70 if( A == "interfacecount" ) { 71 if( A == "interfacecount" ) {
71 InstanceCount = V.toLong(); 72 InstanceCount = V.toLong();
72 } 73 }
73} 74}
74 75
75void BluetoothBNEPNetNode::saveSpecificAttribute( QTextStream & TS) { 76void BluetoothBNEPNetNode::saveSpecificAttribute( QTextStream & TS) {
76 TS << "interfacecount=" 77 TS << "interfacecount="
77 << InstanceCount 78 << InstanceCount
78 << endl; 79 << endl;
79} 80}
80 81
81// 82//
82// 83//
83// BLUETOOTH RFCOMM 84// BLUETOOTH RFCOMM
84// 85//
85// 86//
86 87
87static const char * BluetoothRFCOMMNeeds[] = 88static const char * BluetoothRFCOMMNeeds[] =
88 { 0 89 { 0
89 }; 90 };
90 91
91BluetoothRFCOMMNetNode::BluetoothRFCOMMNetNode() : ANetNode() { 92BluetoothRFCOMMNetNode::BluetoothRFCOMMNetNode() :
93 ANetNode( tr("Bluetooth serial link") ) {
92} 94}
93 95
94BluetoothRFCOMMNetNode::~BluetoothRFCOMMNetNode(){ 96BluetoothRFCOMMNetNode::~BluetoothRFCOMMNetNode(){
95} 97}
96 98
97const QString BluetoothRFCOMMNetNode::nodeDescription(){ 99const QString BluetoothRFCOMMNetNode::nodeDescription(){
98 return tr("\ 100 return tr("\
99<p>Sets up a bluetooth link using the bluetooth serial profile.</p>\ 101<p>Sets up a bluetooth link using the bluetooth serial profile.</p>\
100<p>Use this to connect to a GSM.</p>\ 102<p>Use this to connect to a GSM.</p>\
101" 103"
102); 104);
103} 105}
104 106
105ANetNodeInstance * BluetoothRFCOMMNetNode::createInstance( void ) { 107ANetNodeInstance * BluetoothRFCOMMNetNode::createInstance( void ) {
106 return new ABluetoothRFCOMM( this ); 108 return new ABluetoothRFCOMM( this );
107} 109}
108 110
109const char ** BluetoothRFCOMMNetNode::needs( void ) { 111const char ** BluetoothRFCOMMNetNode::needs( void ) {
110 return BluetoothRFCOMMNeeds; 112 return BluetoothRFCOMMNeeds;
111} 113}
112 114
113const char * BluetoothRFCOMMNetNode::provides( void ) { 115const char * BluetoothRFCOMMNetNode::provides( void ) {
114 return "line"; 116 return "line";
115} 117}
116 118
117bool BluetoothRFCOMMNetNode::generateProperFilesFor( 119bool BluetoothRFCOMMNetNode::generateProperFilesFor(
118 ANetNodeInstance * ) { 120 ANetNodeInstance * ) {
119 return 0; 121 return 0;
120} 122}
121 123
122bool BluetoothRFCOMMNetNode::hasDataFor( const QString & ) { 124bool BluetoothRFCOMMNetNode::hasDataFor( const QString & ) {
123 return 0; 125 return 0;
diff --git a/noncore/settings/networksettings2/bluetooth/bluetooth_NN.h b/noncore/settings/networksettings2/bluetooth/bluetooth_NN.h
index 882d2e3..2e5e1d2 100644
--- a/noncore/settings/networksettings2/bluetooth/bluetooth_NN.h
+++ b/noncore/settings/networksettings2/bluetooth/bluetooth_NN.h
@@ -1,87 +1,81 @@
1#ifndef BLUETOOTH_NETNODE_H 1#ifndef BLUETOOTH_NETNODE_H
2#define BLUETOOTH_NETNODE_H 2#define BLUETOOTH_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class ABluetoothBNEP; 6class ABluetoothBNEP;
7 7
8class BluetoothBNEPNetNode : public ANetNode { 8class BluetoothBNEPNetNode : public ANetNode {
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 BluetoothBNEPNetNode(); 14 BluetoothBNEPNetNode();
15 virtual ~BluetoothBNEPNetNode(); 15 virtual ~BluetoothBNEPNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/bluetooth"; } 18 { return "Devices/bluetooth"; }
19 19
20 virtual const QString nodeName()
21 { return tr("Bluetooth PAN/NAP"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & S ); 28 virtual bool hasDataFor( const QString & S );
32 virtual bool generateDeviceDataForCommonFile( 29 virtual bool generateDeviceDataForCommonFile(
33 SystemFile & , long DevNr ); 30 SystemFile & , long DevNr );
34 31
35 virtual long instanceCount( void ) 32 virtual long instanceCount( void )
36 { return InstanceCount; } 33 { return InstanceCount; }
37 virtual QString genNic( long ); 34 virtual QString genNic( long );
38 35
39private: 36private:
40 37
41 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 38 virtual void setSpecificAttribute( QString & Attr, QString & Value );
42 virtual void saveSpecificAttribute( QTextStream & TS ); 39 virtual void saveSpecificAttribute( QTextStream & TS );
43 40
44 // number of interfaces for this device 41 // number of interfaces for this device
45 long InstanceCount; 42 long InstanceCount;
46 43
47}; 44};
48 45
49class BluetoothRFCOMMNetNode : public ANetNode { 46class BluetoothRFCOMMNetNode : public ANetNode {
50 47
51 Q_OBJECT 48 Q_OBJECT
52 49
53public: 50public:
54 51
55 BluetoothRFCOMMNetNode(); 52 BluetoothRFCOMMNetNode();
56 virtual ~BluetoothRFCOMMNetNode(); 53 virtual ~BluetoothRFCOMMNetNode();
57 54
58 virtual const QString pixmapName() 55 virtual const QString pixmapName()
59 { return "Devices/bluetooth"; } 56 { return "Devices/bluetooth"; }
60 57
61 virtual const QString nodeName()
62 { return tr("Bluetooth serial link"); }
63
64 virtual const QString nodeDescription() ; 58 virtual const QString nodeDescription() ;
65 59
66 virtual ANetNodeInstance * createInstance( void ); 60 virtual ANetNodeInstance * createInstance( void );
67 61
68 virtual const char ** needs( void ); 62 virtual const char ** needs( void );
69 virtual const char * provides( void ); 63 virtual const char * provides( void );
70 64
71 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 65 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
72 virtual bool hasDataFor( const QString & S ); 66 virtual bool hasDataFor( const QString & S );
73 virtual bool generateDeviceDataForCommonFile( 67 virtual bool generateDeviceDataForCommonFile(
74 SystemFile & , long ); 68 SystemFile & , long );
75 69
76private: 70private:
77 71
78 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 72 virtual void setSpecificAttribute( QString & Attr, QString & Value );
79 virtual void saveSpecificAttribute( QTextStream & TS ); 73 virtual void saveSpecificAttribute( QTextStream & TS );
80}; 74};
81 75
82extern "C" 76extern "C"
83{ 77{
84 void create_plugin( QList<ANetNode> & PNN ); 78 void create_plugin( QList<ANetNode> & PNN );
85}; 79};
86 80
87#endif 81#endif
diff --git a/noncore/settings/networksettings2/cable/cable_NN.cpp b/noncore/settings/networksettings2/cable/cable_NN.cpp
index dd41c1f..e95b4f6 100644
--- a/noncore/settings/networksettings2/cable/cable_NN.cpp
+++ b/noncore/settings/networksettings2/cable/cable_NN.cpp
@@ -1,43 +1,43 @@
1#include "cable_NN.h" 1#include "cable_NN.h"
2#include "cable_NNI.h" 2#include "cable_NNI.h"
3 3
4static const char * CableNeeds[] = 4static const char * CableNeeds[] =
5 { 0 5 { 0
6 }; 6 };
7 7
8/** 8/**
9 * Constructor, find all of the possible interfaces 9 * Constructor, find all of the possible interfaces
10 */ 10 */
11CableNetNode::CableNetNode() : ANetNode() { 11CableNetNode::CableNetNode() : ANetNode(tr("Cable Connection")) {
12} 12}
13 13
14/** 14/**
15 * Delete any interfaces that we own. 15 * Delete any interfaces that we own.
16 */ 16 */
17CableNetNode::~CableNetNode(){ 17CableNetNode::~CableNetNode(){
18} 18}
19 19
20const QString CableNetNode::nodeDescription(){ 20const QString CableNetNode::nodeDescription(){
21 return tr("\ 21 return tr("\
22<p>Sets up a wired serial or parallel.</p>\ 22<p>Sets up a wired serial or parallel.</p>\
23" 23"
24); 24);
25} 25}
26 26
27ANetNodeInstance * CableNetNode::createInstance( void ) { 27ANetNodeInstance * CableNetNode::createInstance( void ) {
28 return new ACable( this ); 28 return new ACable( this );
29} 29}
30 30
31const char ** CableNetNode::needs( void ) { 31const char ** CableNetNode::needs( void ) {
32 return CableNeeds; 32 return CableNeeds;
33} 33}
34 34
35const char * CableNetNode::provides( void ) { 35const char * CableNetNode::provides( void ) {
36 return "line"; 36 return "line";
37} 37}
38 38
39bool CableNetNode::generateProperFilesFor( 39bool CableNetNode::generateProperFilesFor(
40 ANetNodeInstance * ) { 40 ANetNodeInstance * ) {
41 return 1; 41 return 1;
42} 42}
43 43
diff --git a/noncore/settings/networksettings2/cable/cable_NN.h b/noncore/settings/networksettings2/cable/cable_NN.h
index b37f31a..c48037a 100644
--- a/noncore/settings/networksettings2/cable/cable_NN.h
+++ b/noncore/settings/networksettings2/cable/cable_NN.h
@@ -1,47 +1,44 @@
1#ifndef CABLE_NETNODE_H 1#ifndef CABLE_NETNODE_H
2#define CABLE_NETNODE_H 2#define CABLE_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class ACable; 6class ACable;
7 7
8class CableNetNode : public ANetNode { 8class CableNetNode : public ANetNode {
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 CableNetNode(); 14 CableNetNode();
15 virtual ~CableNetNode(); 15 virtual ~CableNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/cable"; } 18 { return "Devices/cable"; }
19 19
20 virtual const QString nodeName()
21 { return tr("Cable Connection"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 28 virtual bool hasDataFor( const QString & )
32 { return 0; } 29 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr); 31 SystemFile & SF, long DevNr);
35 32
36private: 33private:
37 34
38 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 35 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS ); 36 virtual void saveSpecificAttribute( QTextStream & TS );
40}; 37};
41 38
42extern "C" 39extern "C"
43{ 40{
44 void create_plugin( QList<ANetNode> & PNN ); 41 void create_plugin( QList<ANetNode> & PNN );
45}; 42};
46 43
47#endif 44#endif
diff --git a/noncore/settings/networksettings2/editconnection.cpp b/noncore/settings/networksettings2/editconnection.cpp
index 4bbe502..77826d1 100644
--- a/noncore/settings/networksettings2/editconnection.cpp
+++ b/noncore/settings/networksettings2/editconnection.cpp
@@ -104,128 +104,128 @@ NodeCollection * EditConnection::getTmpCollection( void ) {
104 return &(TmpCollection); 104 return &(TmpCollection);
105 105
106 // reset collection -> delete all NEW NetNodes 106 // reset collection -> delete all NEW NetNodes
107 for( QListIterator<ANetNodeInstance> it(TmpCollection); 107 for( QListIterator<ANetNodeInstance> it(TmpCollection);
108 it.current(); 108 it.current();
109 ++it ) { 109 ++it ) {
110 if( it.current()->isNew() ) { 110 if( it.current()->isNew() ) {
111 delete it.current(); 111 delete it.current();
112 } 112 }
113 } 113 }
114 TmpCollection.clear(); 114 TmpCollection.clear();
115 115
116 // update content 116 // update content
117 QListViewItem * it = Nodes_LV->firstChild(); 117 QListViewItem * it = Nodes_LV->firstChild();
118 ANetNode * NN; 118 ANetNode * NN;
119 // start iter 119 // start iter
120 ANetNodeInstance * NNI = 120 ANetNodeInstance * NNI =
121 (SelectedNodes) ? SelectedNodes->first() : 0 ; 121 (SelectedNodes) ? SelectedNodes->first() : 0 ;
122 122
123 TmpCollection.setModified( 0 ); 123 TmpCollection.setModified( 0 );
124 124
125 while ( it ) { 125 while ( it ) {
126 NN = (*Mapping)[it]; 126 NN = (*Mapping)[it];
127 if( NN == 0 ) { 127 if( NN == 0 ) {
128 // child is controller -> has sub radio 128 // child is controller -> has sub radio
129 // check if one radio is selected 129 // check if one radio is selected
130 it = it->firstChild(); 130 it = it->firstChild();
131 while( it ) { 131 while( it ) {
132 if( ((QCheckListItem *)it)->isOn() ) { 132 if( ((QCheckListItem *)it)->isOn() ) {
133 // this radio is selected -> go deeper 133 // this radio is selected -> go deeper
134 if( SelectedNodes == 0 || 134 if( SelectedNodes == 0 ||
135 NNI == 0 || 135 NNI == 0 ||
136 NNI->nodeClass()->nodeName() != it->text(0) ) { 136 it->text(0) != NNI->nodeClass()->name() ) {
137 // new item not in previous collection 137 // new item not in previous collection
138 ANetNodeInstance * NNI = (*Mapping)[it]->createInstance(); 138 ANetNodeInstance * NNI = (*Mapping)[it]->createInstance();
139 NNI->initialize(); 139 NNI->initialize();
140 // this node type not in collection 140 // this node type not in collection
141 TmpCollection.append( NNI ); 141 TmpCollection.append( NNI );
142 // master collection changed because new item in it 142 // master collection changed because new item in it
143 TmpCollection.setModified( 1 ); 143 TmpCollection.setModified( 1 );
144 // no more valid items in old list 144 // no more valid items in old list
145 NNI = 0; 145 NNI = 0;
146 } else { 146 } else {
147 // already in list -> copy pointer 147 // already in list -> copy pointer
148 TmpCollection.append( NNI ); 148 TmpCollection.append( NNI );
149 NNI = SelectedNodes->next(); 149 NNI = SelectedNodes->next();
150 } 150 }
151 it = it->firstChild(); 151 it = it->firstChild();
152 // do not bother to check other items 152 // do not bother to check other items
153 break; 153 break;
154 } 154 }
155 it = it->nextSibling(); 155 it = it->nextSibling();
156 } 156 }
157 } else { 157 } else {
158 // check children 158 // check children
159 it = it->firstChild(); 159 it = it->firstChild();
160 } 160 }
161 } 161 }
162 162
163 TmpIsValid = 1; 163 TmpIsValid = 1;
164 return &(TmpCollection); 164 return &(TmpCollection);
165} 165}
166 166
167// pass a connection NodeCollection to be edited 167// pass a connection NodeCollection to be edited
168void EditConnection::setConnection( NodeCollection * NC ) { 168void EditConnection::setConnection( NodeCollection * NC ) {
169 ANetNodeInstance * NNI; 169 ANetNodeInstance * NNI;
170 ANetNode * NN; 170 ANetNode * NN;
171 171
172 SelectedNodes = NC; 172 SelectedNodes = NC;
173 Name_LE->setText( NC->name() ); 173 Name_LE->setText( NC->name() );
174 NNI = NC->first(); 174 NNI = NC->first();
175 175
176 // show configure tabl 176 // show configure tabl
177 Tab_TB->setCurrentPage( 1 ); 177 Tab_TB->setCurrentPage( 1 );
178 178
179 // valid colledction 179 // valid colledction
180 Tab_TB->setTabEnabled( Setup_FRM, FALSE ); 180 Tab_TB->setTabEnabled( Setup_FRM, FALSE );
181 Setup_FRM->setEnabled( FALSE ); 181 Setup_FRM->setEnabled( FALSE );
182 182
183 // select items in collection 183 // select items in collection
184 QListViewItem * it = Nodes_LV->firstChild(); 184 QListViewItem * it = Nodes_LV->firstChild();
185 bool Found; 185 bool Found;
186 186
187 TmpIsValid = 0; 187 TmpIsValid = 0;
188 188
189 while ( it ) { 189 while ( it ) {
190 // listitem corresponds to netnode 190 // listitem corresponds to netnode
191 NN = (*Mapping)[it]; 191 NN = (*Mapping)[it];
192 if( NN == 0 ) { 192 if( NN == 0 ) {
193 // child is controller -> has sub radio 193 // child is controller -> has sub radio
194 QString Ctr = it->text(0); 194 QString Ctr = it->text(0);
195 // check if one radio is selected 195 // check if one radio is selected
196 it = it->firstChild(); 196 it = it->firstChild();
197 Found = 0; 197 Found = 0;
198 while( it ) { 198 while( it ) {
199 if( NNI && NNI->nodeClass()->nodeName() == it->text(0) ) { 199 if( NNI && it->text(0) == NNI->nodeClass()->name() ) {
200 // this radio is part of the collection 200 // this radio is part of the collection
201 ((QCheckListItem *)it)->setOn( 1 ); 201 ((QCheckListItem *)it)->setOn( 1 );
202 updateGUI( it, NNI->nodeClass() ); 202 updateGUI( it, NNI->nodeClass() );
203 // check its children 203 // check its children
204 Found = 1; 204 Found = 1;
205 it = it->firstChild(); 205 it = it->firstChild();
206 NNI = SelectedNodes->next(); 206 NNI = SelectedNodes->next();
207 // do not bother to check other items 207 // do not bother to check other items
208 break; 208 break;
209 } 209 }
210 it = it->nextSibling(); 210 it = it->nextSibling();
211 } 211 }
212 if( ! Found ) { 212 if( ! Found ) {
213 // this means that this level is NOT present in collection 213 // this means that this level is NOT present in collection
214 // probably INCOMPATIBEL collection OR Missing plugin 214 // probably INCOMPATIBEL collection OR Missing plugin
215 QMessageBox::warning( 215 QMessageBox::warning(
216 0, 216 0,
217 tr( "Error presentig Connection" ), 217 tr( "Error presentig Connection" ),
218 tr( "<p>Old connection or missing plugin \"<i>%1</i>\"</p>" ). 218 tr( "<p>Old connection or missing plugin \"<i>%1</i>\"</p>" ).
219 arg(Ctr) ); 219 arg(Ctr) );
220 return; 220 return;
221 } 221 }
222 } else { 222 } else {
223 // automatic item -> check children 223 // automatic item -> check children
224 it = it->firstChild(); 224 it = it->firstChild();
225 } 225 }
226 } 226 }
227} 227}
228 228
229// get result of editing (either new OR updated collection 229// get result of editing (either new OR updated collection
230NodeCollection * EditConnection::connection( void ) { 230NodeCollection * EditConnection::connection( void ) {
231 231
@@ -253,100 +253,100 @@ NodeCollection * EditConnection::connection( void ) {
253 } 253 }
254 254
255 return SelectedNodes; 255 return SelectedNodes;
256} 256}
257 257
258// Build device tree -> start 258// Build device tree -> start
259void EditConnection::buildFullTree( void ) { 259void EditConnection::buildFullTree( void ) {
260 ANetNode * NN; 260 ANetNode * NN;
261 261
262 // toplevel item 262 // toplevel item
263 MyQCheckListItem * TheTop = new MyQCheckListItem( 263 MyQCheckListItem * TheTop = new MyQCheckListItem(
264 Nodes_LV, 264 Nodes_LV,
265 NSResources->netNode2Name("fullsetup"), 265 NSResources->netNode2Name("fullsetup"),
266 QCheckListItem::Controller ); 266 QCheckListItem::Controller );
267 TheTop->setOpen( TRUE ); 267 TheTop->setOpen( TRUE );
268 Description_LBL->setText( 268 Description_LBL->setText(
269 NSResources->netNode2Description( "fullsetup" ) ); 269 NSResources->netNode2Description( "fullsetup" ) );
270 Nodes_LV->setSelected( TheTop, TRUE ); 270 Nodes_LV->setSelected( TheTop, TRUE );
271 271
272 // find all Nodes that care toplevel nodes -> ie provide 272 // find all Nodes that care toplevel nodes -> ie provide
273 // TCP/IP Connection 273 // TCP/IP Connection
274 for( QDictIterator<NetNode_t> Iter(NSResources->netNodes()); 274 for( QDictIterator<NetNode_t> Iter(NSResources->netNodes());
275 Iter.current(); 275 Iter.current();
276 ++Iter ) { 276 ++Iter ) {
277 277
278 NN = Iter.current()->NetNode; 278 NN = Iter.current()->NetNode;
279 279
280 if( ! NN->isToplevel() ) { 280 if( ! NN->isToplevel() ) {
281 continue; 281 continue;
282 } 282 }
283 283
284 MyQCheckListItem * it = new MyQCheckListItem( TheTop, 284 MyQCheckListItem * it = new MyQCheckListItem( TheTop,
285 NN->nodeName(), 285 NN->name(),
286 QCheckListItem::RadioButton ); 286 QCheckListItem::RadioButton );
287 it->setPixmap( 0, NSResources->getPixmap( "Devices/commprofile" ) ); 287 it->setPixmap( 0, NSResources->getPixmap( "Devices/commprofile" ) );
288 // remember that this node maps to this listitem 288 // remember that this node maps to this listitem
289 Mapping->insert( it, NN ); 289 Mapping->insert( it, NN );
290 buildSubTree( it, NN ); 290 buildSubTree( it, NN );
291 } 291 }
292} 292}
293 293
294// Build device tree -> help function 294// Build device tree -> help function
295void EditConnection::buildSubTree( QListViewItem * it, ANetNode *NN ) { 295void EditConnection::buildSubTree( QListViewItem * it, ANetNode *NN ) {
296 ANetNode::NetNodeList & NNL = NN->alternatives(); 296 ANetNode::NetNodeList & NNL = NN->alternatives();
297 297
298 if( NNL.size() > 1 ) { 298 if( NNL.size() > 1 ) {
299 // this node has alternatives -> needs radio buttons 299 // this node has alternatives -> needs radio buttons
300 it = new MyQCheckListItem( 300 it = new MyQCheckListItem(
301 it, 301 it,
302 NSResources->netNode2Name(NNL[0]->provides()), 302 NSResources->netNode2Name(NNL[0]->provides()),
303 QCheckListItem::Controller ); 303 QCheckListItem::Controller );
304 it->setSelectable( FALSE ); 304 it->setSelectable( FALSE );
305 } 305 }
306 306
307 for ( unsigned int i=0; i < NNL.size(); i++ ) { 307 for ( unsigned int i=0; i < NNL.size(); i++ ) {
308 QListViewItem * CI; 308 QListViewItem * CI;
309 if( NNL.size() > 1 ) { 309 if( NNL.size() > 1 ) {
310 // generate radio buttons 310 // generate radio buttons
311 CI = new MyQCheckListItem( 311 CI = new MyQCheckListItem(
312 (QCheckListItem *)it, 312 (QCheckListItem *)it,
313 NNL[i]->nodeName(), QCheckListItem::RadioButton ); 313 NNL[i]->name(), QCheckListItem::RadioButton );
314 // remember that this node maps to this listitem 314 // remember that this node maps to this listitem
315 CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) ); 315 CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) );
316 Mapping->insert( CI, NNL[i] ); 316 Mapping->insert( CI, NNL[i] );
317 CI->setSelectable( FALSE ); 317 CI->setSelectable( FALSE );
318 } else { 318 } else {
319 // Single item 319 // Single item
320 CI = new MyQListViewItem( it, NNL[i]->nodeName() ); 320 CI = new MyQListViewItem( it, NNL[i]->name() );
321 // remember that this node maps to this listitem 321 // remember that this node maps to this listitem
322 Mapping->insert( CI, NNL[i] ); 322 Mapping->insert( CI, NNL[i] );
323 CI->setSelectable( FALSE ); 323 CI->setSelectable( FALSE );
324 CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) ); 324 CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) );
325 } 325 }
326 buildSubTree( CI, NNL[i] ); 326 buildSubTree( CI, NNL[i] );
327 } 327 }
328} 328}
329 329
330// Clicked ok OK button 330// Clicked ok OK button
331void EditConnection::accept( void ) { 331void EditConnection::accept( void ) {
332 if( ! haveCompleteConfig( 0 ) || Name_LE->text().isEmpty() ) { 332 if( ! haveCompleteConfig( 0 ) || Name_LE->text().isEmpty() ) {
333 QMessageBox::warning( 333 QMessageBox::warning(
334 0, 334 0,
335 tr( "Closing Connection Setup" ), 335 tr( "Closing Connection Setup" ),
336 tr( "Definition not complete or no name" ) ); 336 tr( "Definition not complete or no name" ) );
337 return; 337 return;
338 } 338 }
339 339
340 // check if all devices have acceptable input 340 // check if all devices have acceptable input
341 getTmpCollection(); 341 getTmpCollection();
342 { ANetNodeInstance * NNI; 342 { ANetNodeInstance * NNI;
343 QString S; 343 QString S;
344 344
345 for( QListIterator<ANetNodeInstance> it(TmpCollection); 345 for( QListIterator<ANetNodeInstance> it(TmpCollection);
346 it.current(); 346 it.current();
347 ++it ) { 347 ++it ) {
348 NNI = it.current(); 348 NNI = it.current();
349 // widget must show its own problems 349 // widget must show its own problems
350 S = NNI->acceptable(); 350 S = NNI->acceptable();
351 if( ! S.isEmpty() ) { 351 if( ! S.isEmpty() ) {
352 QMessageBox::warning( 352 QMessageBox::warning(
@@ -415,65 +415,65 @@ void EditConnection::SLOT_SelectNode( QListViewItem * it ) {
415 415
416// cliecked on TAB to go to setup 416// cliecked on TAB to go to setup
417void EditConnection::SLOT_AlterTab( const QString & S ) { 417void EditConnection::SLOT_AlterTab( const QString & S ) {
418 if( S == tr( "Setup" ) && Setup_FRM->isEnabled() ) { 418 if( S == tr( "Setup" ) && Setup_FRM->isEnabled() ) {
419 // switched to setup -> update CB and populate ws with 419 // switched to setup -> update CB and populate ws with
420 // forms for devices 420 // forms for devices
421 421
422 if( ! TmpIsValid ) { 422 if( ! TmpIsValid ) {
423 getTmpCollection(); 423 getTmpCollection();
424 424
425 // clear CB and Ws 425 // clear CB and Ws
426 { QWidget * W; 426 { QWidget * W;
427 int i = 0; 427 int i = 0;
428 428
429 Devices_CB->clear(); 429 Devices_CB->clear();
430 while( ( W = Setup_WS->widget( i ) ) ) { 430 while( ( W = Setup_WS->widget( i ) ) ) {
431 Setup_WS->removeWidget( W ); 431 Setup_WS->removeWidget( W );
432 i ++; 432 i ++;
433 } 433 }
434 } 434 }
435 435
436 // update CB 436 // update CB
437 // and populate WidgetStack 437 // and populate WidgetStack
438 { ANetNodeInstance * NNI; 438 { ANetNodeInstance * NNI;
439 QListIterator<ANetNodeInstance> it(TmpCollection); 439 QListIterator<ANetNodeInstance> it(TmpCollection);
440 int i = 0; 440 int i = 0;
441 QWidget * W; 441 QWidget * W;
442 442
443 for ( ; it.current(); ++it ) { 443 for ( ; it.current(); ++it ) {
444 NNI = it.current(); 444 NNI = it.current();
445 Devices_CB->insertItem( 445 Devices_CB->insertItem(
446 NSResources->getPixmap( NNI->nodeClass()->pixmapName() ), 446 NSResources->getPixmap( NNI->nodeClass()->pixmapName() ),
447 NNI->nodeClass()->nodeName() 447 NNI->nodeClass()->name()
448 ); 448 );
449 449
450 // add edit widget 450 // add edit widget
451 W = NNI->edit( Setup_WS ); 451 W = NNI->edit( Setup_WS );
452 if( ! W) { 452 if( ! W) {
453 W = new QLabel( Setup_WS, 453 W = new QLabel( Setup_WS,
454 tr("No configuration required")); 454 tr("No configuration required"));
455 } 455 }
456 Setup_WS->addWidget( W , i ); 456 Setup_WS->addWidget( W , i );
457 i ++; 457 i ++;
458 } 458 }
459 } 459 }
460 Setup_WS->raiseWidget( 0 ); 460 Setup_WS->raiseWidget( 0 );
461 } // still valid 461 } // still valid
462 } 462 }
463} 463}
464 464
465// update visual feedback of selection state 465// update visual feedback of selection state
466void EditConnection::updateGUI( QListViewItem * it, ANetNode * NN ) { 466void EditConnection::updateGUI( QListViewItem * it, ANetNode * NN ) {
467 467
468 bool HCC = haveCompleteConfig( it ); 468 bool HCC = haveCompleteConfig( it );
469 Tab_TB->setTabEnabled( Setup_FRM, HCC ); 469 Tab_TB->setTabEnabled( Setup_FRM, HCC );
470 Setup_FRM->setEnabled( HCC ); 470 Setup_FRM->setEnabled( HCC );
471 471
472 // disable children of all siblings at same level 472 // disable children of all siblings at same level
473 QListViewItem * Sbl = it->parent()->firstChild(); 473 QListViewItem * Sbl = it->parent()->firstChild();
474 while( Sbl ) { 474 while( Sbl ) {
475 if ( Sbl != it ) { 475 if ( Sbl != it ) {
476 disableTree( Sbl->firstChild(), FALSE ); 476 disableTree( Sbl->firstChild(), FALSE );
477 Sbl->setSelectable( TRUE ); 477 Sbl->setSelectable( TRUE );
478 if( AutoCollapse ) 478 if( AutoCollapse )
479 Sbl->setOpen( FALSE ); 479 Sbl->setOpen( FALSE );
diff --git a/noncore/settings/networksettings2/irda/irda_NN.cpp b/noncore/settings/networksettings2/irda/irda_NN.cpp
index 49b7707..f2fda5c 100644
--- a/noncore/settings/networksettings2/irda/irda_NN.cpp
+++ b/noncore/settings/networksettings2/irda/irda_NN.cpp
@@ -1,43 +1,43 @@
1#include "irda_NN.h" 1#include "irda_NN.h"
2#include "irda_NNI.h" 2#include "irda_NNI.h"
3 3
4static const char * IRDANeeds[] = 4static const char * IRDANeeds[] =
5 { 0 5 { 0
6 }; 6 };
7 7
8/** 8/**
9 * Constructor, find all of the possible interfaces 9 * Constructor, find all of the possible interfaces
10 */ 10 */
11IRDANetNode::IRDANetNode() : ANetNode() { 11IRDANetNode::IRDANetNode() : ANetNode(tr("Infrared link")) {
12} 12}
13 13
14/** 14/**
15 * Delete any interfaces that we own. 15 * Delete any interfaces that we own.
16 */ 16 */
17IRDANetNode::~IRDANetNode(){ 17IRDANetNode::~IRDANetNode(){
18} 18}
19 19
20const QString IRDANetNode::nodeDescription(){ 20const QString IRDANetNode::nodeDescription(){
21 return tr("\ 21 return tr("\
22<p>Sets up a infra red serial link.</p>\ 22<p>Sets up a infra red serial link.</p>\
23" 23"
24); 24);
25} 25}
26 26
27ANetNodeInstance * IRDANetNode::createInstance( void ) { 27ANetNodeInstance * IRDANetNode::createInstance( void ) {
28 return new AIRDA( this ); 28 return new AIRDA( this );
29} 29}
30 30
31const char ** IRDANetNode::needs( void ) { 31const char ** IRDANetNode::needs( void ) {
32 return IRDANeeds; 32 return IRDANeeds;
33} 33}
34 34
35const char * IRDANetNode::provides( void ) { 35const char * IRDANetNode::provides( void ) {
36 return "line"; 36 return "line";
37} 37}
38 38
39bool IRDANetNode::generateProperFilesFor( 39bool IRDANetNode::generateProperFilesFor(
40 ANetNodeInstance * ) { 40 ANetNodeInstance * ) {
41 return 1; 41 return 1;
42} 42}
43 43
diff --git a/noncore/settings/networksettings2/irda/irda_NN.h b/noncore/settings/networksettings2/irda/irda_NN.h
index 2dcef74..fa6408d 100644
--- a/noncore/settings/networksettings2/irda/irda_NN.h
+++ b/noncore/settings/networksettings2/irda/irda_NN.h
@@ -1,47 +1,44 @@
1#ifndef IRDA_NETNODE_H 1#ifndef IRDA_NETNODE_H
2#define IRDA_NETNODE_H 2#define IRDA_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class AIRDA; 6class AIRDA;
7 7
8class IRDANetNode : public ANetNode { 8class IRDANetNode : public ANetNode {
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 IRDANetNode(); 14 IRDANetNode();
15 virtual ~IRDANetNode(); 15 virtual ~IRDANetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/irda"; } 18 { return "Devices/irda"; }
19 19
20 virtual const QString nodeName()
21 { return tr("Infrared link"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 28 virtual bool hasDataFor( const QString & )
32 { return 0; } 29 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 31 SystemFile & SF, long DevNr );
35 32
36private: 33private:
37 34
38 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 35 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS ); 36 virtual void saveSpecificAttribute( QTextStream & TS );
40}; 37};
41 38
42extern "C" 39extern "C"
43{ 40{
44 void create_plugin( QList<ANetNode> & PNN ); 41 void create_plugin( QList<ANetNode> & PNN );
45}; 42};
46 43
47#endif 44#endif
diff --git a/noncore/settings/networksettings2/lancard/lancardGUI.ui b/noncore/settings/networksettings2/lancard/lancardGUI.ui
index 8d94816..c407175 100644
--- a/noncore/settings/networksettings2/lancard/lancardGUI.ui
+++ b/noncore/settings/networksettings2/lancard/lancardGUI.ui
@@ -1,129 +1,189 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>LanCardGUI</class> 2<class>LanCardGUI</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>Lancard_FRM</cstring> 7 <cstring>Lancard_FRM</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>362</width> 14 <width>354</width>
15 <height>359</height> 15 <height>359</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>LAN card</string> 20 <string>LAN card</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>2</number> 31 <number>2</number>
32 </property> 32 </property>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>2</number> 35 <number>2</number>
36 </property> 36 </property>
37 <widget> 37 <widget>
38 <class>QCheckBox</class> 38 <class>QCheckBox</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>AnyCard_CB</cstring> 41 <cstring>AnyCard_CB</cstring>
42 </property> 42 </property>
43 <property stdset="1"> 43 <property stdset="1">
44 <name>text</name> 44 <name>text</name>
45 <string>Any available LAN card</string> 45 <string>Any available LAN card</string>
46 </property> 46 </property>
47 <property stdset="1"> 47 <property stdset="1">
48 <name>checked</name> 48 <name>checked</name>
49 <bool>true</bool> 49 <bool>true</bool>
50 </property> 50 </property>
51 </widget> 51 </widget>
52 <widget> 52 <widget>
53 <class>QGroupBox</class> 53 <class>QGroupBox</class>
54 <property stdset="1"> 54 <property stdset="1">
55 <name>name</name> 55 <name>name</name>
56 <cstring>GroupBox1</cstring> 56 <cstring>GroupBox1</cstring>
57 </property> 57 </property>
58 <property stdset="1"> 58 <property stdset="1">
59 <name>enabled</name> 59 <name>enabled</name>
60 <bool>false</bool> 60 <bool>false</bool>
61 </property> 61 </property>
62 <property stdset="1"> 62 <property stdset="1">
63 <name>title</name> 63 <name>title</name>
64 <string>Select Card</string> 64 <string>Select Card</string>
65 </property> 65 </property>
66 <property> 66 <property>
67 <name>layoutMargin</name> 67 <name>layoutMargin</name>
68 </property> 68 </property>
69 <vbox> 69 <vbox>
70 <property stdset="1"> 70 <property stdset="1">
71 <name>margin</name> 71 <name>margin</name>
72 <number>11</number> 72 <number>5</number>
73 </property> 73 </property>
74 <property stdset="1"> 74 <property stdset="1">
75 <name>spacing</name> 75 <name>spacing</name>
76 <number>6</number> 76 <number>6</number>
77 </property> 77 </property>
78 <widget> 78 <widget>
79 <class>QListView</class> 79 <class>QListView</class>
80 <column> 80 <column>
81 <property> 81 <property>
82 <name>text</name> 82 <name>text</name>
83 <string>Name</string>
84 </property>
85 <property>
86 <name>clickable</name>
87 <bool>true</bool>
88 </property>
89 <property>
90 <name>resizeable</name>
91 <bool>true</bool>
92 </property>
93 </column>
94 <column>
95 <property>
96 <name>text</name>
97 <string>MACAddress</string> 83 <string>MACAddress</string>
98 </property> 84 </property>
99 <property> 85 <property>
100 <name>clickable</name> 86 <name>clickable</name>
101 <bool>true</bool> 87 <bool>true</bool>
102 </property> 88 </property>
103 <property> 89 <property>
104 <name>resizeable</name> 90 <name>resizeable</name>
105 <bool>true</bool> 91 <bool>true</bool>
106 </property> 92 </property>
107 </column> 93 </column>
108 <property stdset="1"> 94 <property stdset="1">
109 <name>name</name> 95 <name>name</name>
110 <cstring>LanCards_LV</cstring> 96 <cstring>LanCards_LV</cstring>
111 </property> 97 </property>
112 <property stdset="1"> 98 <property stdset="1">
113 <name>allColumnsShowFocus</name> 99 <name>allColumnsShowFocus</name>
114 <bool>true</bool> 100 <bool>true</bool>
115 </property> 101 </property>
116 </widget> 102 </widget>
103 <widget>
104 <class>QLayoutWidget</class>
105 <property stdset="1">
106 <name>name</name>
107 <cstring>Layout2</cstring>
108 </property>
109 <hbox>
110 <property stdset="1">
111 <name>margin</name>
112 <number>0</number>
113 </property>
114 <property stdset="1">
115 <name>spacing</name>
116 <number>6</number>
117 </property>
118 <widget>
119 <class>QPushButton</class>
120 <property stdset="1">
121 <name>name</name>
122 <cstring>RemoveUnknown_BUT</cstring>
123 </property>
124 <property stdset="1">
125 <name>text</name>
126 <string>Remove Unknown</string>
127 </property>
128 </widget>
129 <spacer>
130 <property>
131 <name>name</name>
132 <cstring>Spacer1</cstring>
133 </property>
134 <property stdset="1">
135 <name>orientation</name>
136 <enum>Horizontal</enum>
137 </property>
138 <property stdset="1">
139 <name>sizeType</name>
140 <enum>Expanding</enum>
141 </property>
142 <property>
143 <name>sizeHint</name>
144 <size>
145 <width>20</width>
146 <height>20</height>
147 </size>
148 </property>
149 </spacer>
150 <widget>
151 <class>QPushButton</class>
152 <property stdset="1">
153 <name>name</name>
154 <cstring>RescanCards_BUT</cstring>
155 </property>
156 <property stdset="1">
157 <name>text</name>
158 <string>Rescan</string>
159 </property>
160 </widget>
161 </hbox>
162 </widget>
117 </vbox> 163 </vbox>
118 </widget> 164 </widget>
119 </vbox> 165 </vbox>
120</widget> 166</widget>
121<connections> 167<connections>
122 <connection> 168 <connection>
123 <sender>AnyCard_CB</sender> 169 <sender>AnyCard_CB</sender>
124 <signal>toggled(bool)</signal> 170 <signal>toggled(bool)</signal>
125 <receiver>GroupBox1</receiver> 171 <receiver>GroupBox1</receiver>
126 <slot>setDisabled(bool)</slot> 172 <slot>setDisabled(bool)</slot>
127 </connection> 173 </connection>
174 <connection>
175 <sender>RescanCards_BUT</sender>
176 <signal>clicked()</signal>
177 <receiver>Lancard_FRM</receiver>
178 <slot>SLOT_ScanCards()</slot>
179 </connection>
180 <connection>
181 <sender>RemoveUnknown_BUT</sender>
182 <signal>clicked()</signal>
183 <receiver>Lancard_FRM</receiver>
184 <slot>SLOT_RemoveUnknown()</slot>
185 </connection>
186 <slot access="public">SLOT_ScanCards()</slot>
187 <slot access="public">SLOT_RemoveUnknown()</slot>
128</connections> 188</connections>
129</UI> 189</UI>
diff --git a/noncore/settings/networksettings2/lancard/lancard_NN.cpp b/noncore/settings/networksettings2/lancard/lancard_NN.cpp
index ba1c1f8..a4afab1 100644
--- a/noncore/settings/networksettings2/lancard/lancard_NN.cpp
+++ b/noncore/settings/networksettings2/lancard/lancard_NN.cpp
@@ -1,85 +1,94 @@
1#include "lancard_NN.h" 1#include "lancard_NN.h"
2#include "lancard_NNI.h" 2#include "lancard_NNI.h"
3 3
4static const char * LanCardNeeds[] = 4static const char * LanCardNeeds[] =
5 { 0 }; 5 { 0 };
6 6
7/** 7/**
8 * Constructor, find all of the possible interfaces 8 * Constructor, find all of the possible interfaces
9 */ 9 */
10LanCardNetNode::LanCardNetNode() : ANetNode() { 10LanCardNetNode::LanCardNetNode() : ANetNode(tr("LAN card")), NICMACAddresses() {
11 InstanceCount = 2; 11 InstanceCount = 2;
12} 12}
13 13
14/** 14/**
15 * Delete any interfaces that we own. 15 * Delete any interfaces that we own.
16 */ 16 */
17LanCardNetNode::~LanCardNetNode(){ 17LanCardNetNode::~LanCardNetNode(){
18} 18}
19 19
20const QString LanCardNetNode::nodeDescription(){ 20const QString LanCardNetNode::nodeDescription(){
21 return tr("\ 21 return tr("\
22<p>Sets up a wired regular LAN card.</p>\ 22<p>Sets up a wired regular LAN card.</p>\
23<p>Use this to set up 10/100/1000 MBit LAN cards.</p>\ 23<p>Use this to set up 10/100/1000 MBit LAN cards.</p>\
24" 24"
25); 25);
26} 26}
27 27
28ANetNodeInstance * LanCardNetNode::createInstance( void ) { 28ANetNodeInstance * LanCardNetNode::createInstance( void ) {
29 return new ALanCard( this ); 29 return new ALanCard( this );
30} 30}
31 31
32 32
33const char ** LanCardNetNode::needs( void ) { 33const char ** LanCardNetNode::needs( void ) {
34 return LanCardNeeds; 34 return LanCardNeeds;
35} 35}
36 36
37const char * LanCardNetNode::provides( void ) { 37const char * LanCardNetNode::provides( void ) {
38 return "device"; 38 return "device";
39} 39}
40 40
41bool LanCardNetNode::generateProperFilesFor( 41bool LanCardNetNode::generateProperFilesFor(
42 ANetNodeInstance * ) { 42 ANetNodeInstance * ) {
43 return 1; 43 return 1;
44} 44}
45 45
46bool LanCardNetNode::hasDataFor( const QString & S ) { 46bool LanCardNetNode::hasDataFor( const QString & S ) {
47 return S == "interfaces"; 47 return S == "interfaces";
48} 48}
49 49
50bool LanCardNetNode::generateDeviceDataForCommonFile( 50bool LanCardNetNode::generateDeviceDataForCommonFile(
51 SystemFile & S , 51 SystemFile & S ,
52 long DevNr ) { 52 long DevNr ) {
53 QString NIC = genNic( DevNr ); 53 QString NIC = genNic( DevNr );
54 54
55 if( S.name() == "interfaces" ) { 55 if( S.name() == "interfaces" ) {
56 // generate mapping stanza for this interface 56 // generate mapping stanza for this interface
57 S << "# check if " << NIC << " can be brought UP" << endl; 57 S << "# check if " << NIC << " can be brought UP" << endl;
58 S << "mapping " << NIC << endl; 58 S << "mapping " << NIC << endl;
59 S << " script networksettings2-request" << endl << endl; 59 S << " script networksettings2-request" << endl << endl;
60 } 60 }
61 return 0; 61 return 0;
62} 62}
63 63
64QString LanCardNetNode::genNic( long nr ) { 64QString LanCardNetNode::genNic( long nr ) {
65 QString S; 65 QString S;
66 return S.sprintf( "eth%ld", nr ); 66 return S.sprintf( "eth%ld", nr );
67} 67}
68 68
69void LanCardNetNode::setSpecificAttribute( QString & A, QString & V ) { 69void LanCardNetNode::setSpecificAttribute( QString & A, QString & V ) {
70 if( A == "interfacecount" ) { 70 if( A == "interfacecount" ) {
71 InstanceCount = V.toLong(); 71 InstanceCount = V.toLong();
72 } else if ( A == "macaddress" ) {
73 NICMACAddresses.append( V );
72 } 74 }
73} 75}
74 76
75void LanCardNetNode::saveSpecificAttribute( QTextStream & TS) { 77void LanCardNetNode::saveSpecificAttribute( QTextStream & TS) {
76 TS << "interfacecount=" 78 TS << "interfacecount="
77 << InstanceCount 79 << InstanceCount
78 << endl; 80 << endl;
81 for( QStringList::Iterator it = NICMACAddresses.begin();
82 it != NICMACAddresses.end();
83 ++it ) {
84 TS << "macaddress="
85 << (*it)
86 << endl;
87 }
79} 88}
80 89
81extern "C" { 90extern "C" {
82void create_plugin( QList<ANetNode> & PNN ) { 91void create_plugin( QList<ANetNode> & PNN ) {
83 PNN.append( new LanCardNetNode() ); 92 PNN.append( new LanCardNetNode() );
84} 93}
85} 94}
diff --git a/noncore/settings/networksettings2/lancard/lancard_NN.h b/noncore/settings/networksettings2/lancard/lancard_NN.h
index 5f2b25d..d58823c 100644
--- a/noncore/settings/networksettings2/lancard/lancard_NN.h
+++ b/noncore/settings/networksettings2/lancard/lancard_NN.h
@@ -1,55 +1,57 @@
1#ifndef LANCARD_NETNODE_H 1#ifndef LANCARD_NETNODE_H
2#define LANCARD_NETNODE_H 2#define LANCARD_NETNODE_H
3 3
4#include <qstringlist.h>
4#include "netnode.h" 5#include "netnode.h"
5 6
6class ALanCard; 7class ALanCard;
7 8
8class LanCardNetNode : public ANetNode{ 9class LanCardNetNode : public ANetNode{
9 10
10 Q_OBJECT 11 Q_OBJECT
11 12
12public: 13public:
13 14
14 LanCardNetNode(); 15 LanCardNetNode();
15 virtual ~LanCardNetNode(); 16 virtual ~LanCardNetNode();
16 17
17 virtual const QString pixmapName() 18 virtual const QString pixmapName()
18 { return "Devices/card"; } 19 { return "Devices/card"; }
19 20
20 virtual const QString nodeName()
21 { return tr("LAN card"); }
22
23 virtual const QString nodeDescription() ; 21 virtual const QString nodeDescription() ;
24 22
25 virtual ANetNodeInstance * createInstance( void ); 23 virtual ANetNodeInstance * createInstance( void );
26 24
27 virtual const char ** needs( void ); 25 virtual const char ** needs( void );
28 virtual const char * provides( void ); 26 virtual const char * provides( void );
29 27
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 28 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & S ); 29 virtual bool hasDataFor( const QString & S );
32 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
33 SystemFile & SF, long DevNr ); 31 SystemFile & SF, long DevNr );
34 32
35 virtual long instanceCount( void ) 33 virtual long instanceCount( void )
36 { return InstanceCount; } 34 { return InstanceCount; }
37 35
38 virtual QString genNic( long ); 36 virtual QString genNic( long );
37 virtual QStringList & addressesOfNIC( void )
38 { return NICMACAddresses; }
39 39
40private: 40private:
41 41
42 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 42 virtual void setSpecificAttribute( QString & Attr, QString & Value );
43 virtual void saveSpecificAttribute( QTextStream & TS ); 43 virtual void saveSpecificAttribute( QTextStream & TS );
44 44
45 // number of interfaces for this device 45 // number of interfaces for this device
46 long InstanceCount; 46 long InstanceCount;
47 47
48 QStringList NICMACAddresses;
49
48}; 50};
49 51
50extern "C" 52extern "C"
51{ 53{
52 void create_plugin( QList<ANetNode> & PNN ); 54 void create_plugin( QList<ANetNode> & PNN );
53}; 55};
54 56
55#endif 57#endif
diff --git a/noncore/settings/networksettings2/lancard/lancard_NNI.cpp b/noncore/settings/networksettings2/lancard/lancard_NNI.cpp
index 5962d52..99c033e 100644
--- a/noncore/settings/networksettings2/lancard/lancard_NNI.cpp
+++ b/noncore/settings/networksettings2/lancard/lancard_NNI.cpp
@@ -1,51 +1,51 @@
1#include "lancardedit.h" 1#include "lancardedit.h"
2#include "lancard_NNI.h" 2#include "lancard_NNI.h"
3#include "lancard_NN.h" 3#include "lancard_NN.h"
4 4
5ALanCard::ALanCard( LanCardNetNode * PNN ) : ANetNodeInstance( PNN ) { 5ALanCard::ALanCard( LanCardNetNode * PNN ) : ANetNodeInstance( PNN ) {
6 6
7 Data.AnyLanCard = 1; 7 Data.AnyLanCard = 1;
8 Data.HWAddresses.clear(); 8 Data.HWAddresses.clear();
9 9
10 GUI = 0; 10 GUI = 0;
11 RT = 0; 11 RT = 0;
12} 12}
13 13
14void ALanCard::setSpecificAttribute( QString & A, QString & V ) { 14void ALanCard::setSpecificAttribute( QString & A, QString & V ) {
15 if( A == "matchanycard" ) { 15 if( A == "matchanycard" ) {
16 Data.AnyLanCard = (V == "yes" ); 16 Data.AnyLanCard = (V == "yes" );
17 } else if( A == "match" ) { 17 } else if( A == "match" ) {
18 Data.HWAddresses.append( V ); 18 Data.HWAddresses.append( V );
19 } 19 }
20} 20}
21 21
22void ALanCard::saveSpecificAttribute( QTextStream & TS) { 22void ALanCard::saveSpecificAttribute( QTextStream & TS) {
23 TS << "matchanycard=" << 23 TS << "matchanycard=" <<
24 ((Data.AnyLanCard) ? "yes" : "no") << endl; 24 ((Data.AnyLanCard) ? "yes" : "no") << endl;
25 for( QStringList::Iterator it = Data.HWAddresses.begin(); 25 for( QStringList::Iterator it = Data.HWAddresses.begin();
26 it != Data.HWAddresses.end(); ++it ) { 26 it != Data.HWAddresses.end(); ++it ) {
27 TS << "match=" << quote( *it ) << endl; 27 TS << "match=" << quote( *it ) << endl;
28 } 28 }
29} 29}
30 30
31QWidget * ALanCard::edit( QWidget * parent ) { 31QWidget * ALanCard::edit( QWidget * parent ) {
32 GUI = new LanCardEdit( parent ); 32 GUI = new LanCardEdit( parent );
33 GUI->showData( Data ); 33 GUI->showData( this );
34 return GUI; 34 return GUI;
35} 35}
36 36
37QString ALanCard::acceptable( void ) { 37QString ALanCard::acceptable( void ) {
38 return ( GUI ) ? GUI->acceptable( ) : QString(); 38 return ( GUI ) ? GUI->acceptable( ) : QString();
39} 39}
40 40
41void ALanCard::commit( void ) { 41void ALanCard::commit( void ) {
42 if( GUI && GUI->commit( Data ) ) 42 if( GUI && GUI->commit( Data ) )
43 setModified( 1 ); 43 setModified( 1 );
44} 44}
45 45
46bool ALanCard::generateDataForCommonFile( 46bool ALanCard::generateDataForCommonFile(
47 SystemFile & , 47 SystemFile & ,
48 long ) { 48 long ) {
49 return 1; 49 return 1;
50} 50}
51 51
diff --git a/noncore/settings/networksettings2/lancard/lancardedit.cpp b/noncore/settings/networksettings2/lancard/lancardedit.cpp
index fa7f6dc..ffe9bf6 100644
--- a/noncore/settings/networksettings2/lancard/lancardedit.cpp
+++ b/noncore/settings/networksettings2/lancard/lancardedit.cpp
@@ -1,95 +1,208 @@
1#include <GUIUtils.h> 1#include <GUIUtils.h>
2#include <resources.h> 2#include <resources.h>
3#include <qarray.h>
3#include <qlistview.h> 4#include <qlistview.h>
4#include <qcheckbox.h> 5#include <qcheckbox.h>
5#include <qheader.h> 6#include <qheader.h>
6#include <qregexp.h> 7#include <qregexp.h>
8
7#include "lancardedit.h" 9#include "lancardedit.h"
10#include "lancard_NN.h"
11#include "lancard_NNI.h"
8 12
9LanCardEdit::LanCardEdit( QWidget * Parent ) : LanCardGUI( Parent ){ 13LanCardEdit::LanCardEdit( QWidget * Parent ) : LanCardGUI( Parent ){
10 System & S = NSResources->system();
11 QRegExp R( "eth[0-9]" );
12 QCheckListItem * CLI;
13
14 LanCards_LV->header()->hide(); 14 LanCards_LV->header()->hide();
15 15
16 // populate with all lancards in system
17 for( QDictIterator<InterfaceInfo> It(S.interfaces());
18 It.current();
19 ++It ) {
20 if( R.match( It.current()->Name ) >= 0 &&
21 It.current()->CardType == ARPHRD_ETHER
22 ) {
23 CLI = new QCheckListItem( LanCards_LV, It.current()->Name,
24 QCheckListItem::CheckBox );
25 CLI->setText( 1, It.current()->MACAddress );
26 }
27 }
28} 16}
29 17
30QString LanCardEdit::acceptable( void ) { 18QString LanCardEdit::acceptable( void ) {
31 return QString(); 19 return QString();
32} 20}
33 21
34
35bool LanCardEdit::commit( LanCardData & Data ) { 22bool LanCardEdit::commit( LanCardData & Data ) {
36 bool SM = 0; 23 bool SM = 0;
37 CBM( Data.AnyLanCard, AnyCard_CB, SM ); 24 CBM( Data.AnyLanCard, AnyCard_CB, SM );
38 25
39 if( ! Data.AnyLanCard ) { 26 if( ! Data.AnyLanCard ) {
40 // collect set of lancards that match 27 // take copy for orig list
28 QStringList NewList( Data.HWAddresses );
29
30 // update HWAddresses to new state
31 // remove item also from NewList
41 int idx; 32 int idx;
42 QCheckListItem * CLI = (QCheckListItem *)LanCards_LV->firstChild(); 33 QCheckListItem * CLI = (QCheckListItem *)LanCards_LV->firstChild();
43 while( CLI ) { 34 while( CLI ) {
44 idx = Data.HWAddresses.findIndex(CLI->text(1)); 35 idx = Data.HWAddresses.findIndex(CLI->text(0));
45 if( CLI->isOn() ) { 36 if( CLI->isOn() ) {
46 if( idx < 0 ) { 37 if( idx < 0 ) {
47 // should be in list 38 // should be in list
48 Data.HWAddresses.append( CLI->text(1) ); 39 Data.HWAddresses.append( CLI->text(0) );
49 SM = 1; 40 SM = 1;
50 } 41 }
51 } else { 42 } else {
52 // should not be in list 43 // should not be in list
53 if( idx >= 0 ) { 44 if( idx >= 0 ) {
54 Data.HWAddresses.remove( Data.HWAddresses.at(idx) ); 45 NewList.remove( CLI->text(0) );
46 Data.HWAddresses.remove( CLI->text(0) );
55 SM = 1; 47 SM = 1;
56 } 48 }
57 } 49 }
58 CLI = (QCheckListItem *)CLI->nextSibling(); 50 CLI = (QCheckListItem *)CLI->nextSibling();
59 } 51 }
52
53 // if newlist still contains items. it were items
54 // that were checked but no longer are present in the system
55 SM |= ( NewList.count() > 0 ) ;
60 } 56 }
61 return SM || ContainedObsoleteMAC ; 57 return SM;
62} 58}
63 59
64void LanCardEdit::showData( LanCardData & Data ) { 60void LanCardEdit::showData( ALanCard * LC ) {
61 NNI = LC;
62 LanCardData & Data = *((LanCardData *)LC->data());
63
65 AnyCard_CB->setChecked( Data.AnyLanCard ); 64 AnyCard_CB->setChecked( Data.AnyLanCard );
66 65
66 // load all cards
67 populateList();
68
69 // set checks
67 QCheckListItem * CLI = (QCheckListItem *)LanCards_LV->firstChild(); 70 QCheckListItem * CLI = (QCheckListItem *)LanCards_LV->firstChild();
71 while( CLI ) {
72 CLI->setOn( Data.HWAddresses.findIndex(CLI->text(0)) >= 0 );
73 CLI = (QCheckListItem *)CLI->nextSibling();
74 }
75}
68 76
69 ContainedObsoleteMAC = 0; 77// load all known cards in list
70 // remove obsolete address 78void LanCardEdit::populateList( void ) {
71 for( QStringList::Iterator it=Data.HWAddresses.begin(); 79 LanCardNetNode *NN = (LanCardNetNode *)NNI->nodeClass();
72 it != Data.HWAddresses.end(); 80 QCheckListItem * CLI;
73 ) { 81 bool Found;
74 CLI = (QCheckListItem *)LanCards_LV->firstChild(); 82
75 while( CLI ) { 83 LanCards_LV->clear();
76 if( CLI->text(1) == (*it) ) 84
77 // still valid 85 for( QStringList::Iterator it = NN->addressesOfNIC().begin();
86 it != NN->addressesOfNIC().end();
87 ++it ) {
88 CLI = new QCheckListItem( LanCards_LV, (*it), QCheckListItem::CheckBox );
89
90 // check interfaces and see if this card is present
91 Found = 0;
92 for( QDictIterator<InterfaceInfo> NIt(NSResources->system().interfaces());
93 NIt.current();
94 ++NIt ) {
95 if( NIt.current()->MACAddress == (*it) ) {
96 Found = 1;
78 break; 97 break;
79 CLI = (QCheckListItem *)CLI->nextSibling(); 98 }
80 } 99 }
81 if( CLI == 0 ) { 100
82 // address not found -> remove 101 CLI->setPixmap( 0, NSResources->getPixmap(
83 ContainedObsoleteMAC = 1; 102 (Found) ? "add" : "remove" ) );
84 Data.HWAddresses.remove( it ); 103 }
85 } else { 104}
86 ++ it; 105
106// rescan system for new cards
107void LanCardEdit::SLOT_ScanCards( void ) {
108 LanCardNetNode *NN = (LanCardNetNode *)NNI->nodeClass();
109
110 // add any NIC that is new and matches our interfacename
111 System & S = NSResources->system();
112 QRegExp R( "eth[0-9]" );
113 // populate with all lancards in system
114 for( QDictIterator<InterfaceInfo> It(S.interfaces());
115 It.current();
116 ++It ) {
117 fprintf( stderr, "TEST %s %s\n",
118 It.current()->Name.latin1(),
119 It.current()->MACAddress.latin1() );
120 if( R.match( It.current()->Name ) >= 0 &&
121 ( It.current()->CardType == ARPHRD_ETHER
122#ifdef ARPHRD_IEEE1394
123 || It.current()->CardType == ARPHRD_IEEE1394
124#endif
125 )
126 ) {
127 // old item ?
128 QCheckListItem * CLI =
129 (QCheckListItem *)LanCards_LV->firstChild();
130 while( CLI ) {
131 if( CLI->text(0) == It.current()->MACAddress ) {
132 break;
133 }
134 CLI = (QCheckListItem *)CLI->nextSibling();
135 }
136
137 if( ! CLI ) {
138 // new item
139 CLI = new QCheckListItem( LanCards_LV,
140 It.current()->MACAddress,
141 QCheckListItem::CheckBox );
142 }
143
144 // mark present
145 CLI->setPixmap( 0, NSResources->getPixmap(
146 "add" ) );
147
148 if( NN->addressesOfNIC().findIndex( It.current()->MACAddress) < 0 ) {
149 // new
150 NN->addressesOfNIC().append( It.current()->MACAddress );
151 }
87 } 152 }
88 } 153 }
89 154
90 // set checks 155}
156
157// remove all cards that are not present -> flagged with 'remove'
158// and unchecked
159void LanCardEdit::SLOT_RemoveUnknown( void ) {
160 QArray<QCheckListItem *> AllItems;
161
162 LanCardNetNode *NN = (LanCardNetNode *)NNI->nodeClass();
163
164 QCheckListItem * CLI = (QCheckListItem *)LanCards_LV->firstChild();
91 while( CLI ) { 165 while( CLI ) {
92 CLI->setOn( Data.HWAddresses.findIndex(CLI->text(1)) >= 0 ); 166 AllItems.resize( AllItems.size()+1 );
167 AllItems[ AllItems.size()-1 ] = CLI;
93 CLI = (QCheckListItem *)CLI->nextSibling(); 168 CLI = (QCheckListItem *)CLI->nextSibling();
94 } 169 }
170
171 // force update of system
172 System & S = NSResources->system();
173 S.probeInterfaces();
174
175 // add any NIC that is new and matches our interfacename
176 QRegExp R( "eth[0-9]" );
177
178
179 for( QDictIterator<InterfaceInfo> It(S.interfaces());
180 It.current();
181 ++It ) {
182 if( R.match( It.current()->Name ) >= 0 &&
183 ( It.current()->CardType == ARPHRD_ETHER
184#ifdef ARPHRD_IEEE1394
185 || It.current()->CardType == ARPHRD_IEEE1394
186#endif
187 )
188 ) {
189
190 for ( unsigned i = 0; i< AllItems.size(); i++ ) {
191 if( AllItems[i] &&
192 AllItems[i]->text(0) == It.current()->MACAddress ) {
193 AllItems[i] = 0;
194 break;
195 }
196 }
197 }
198 }
199
200 // AllItems now contains all cards NOT present
201 // remove all items non null and not ON
202 for ( unsigned i = 0; i< AllItems.size(); i++ ) {
203 if( AllItems[i] && ! AllItems[i]->isOn() ) {
204 NN->addressesOfNIC().remove( AllItems[i]->text(0) );
205 delete AllItems[i];
206 }
207 }
95} 208}
diff --git a/noncore/settings/networksettings2/lancard/lancardedit.h b/noncore/settings/networksettings2/lancard/lancardedit.h
index 8def789..282db1f 100644
--- a/noncore/settings/networksettings2/lancard/lancardedit.h
+++ b/noncore/settings/networksettings2/lancard/lancardedit.h
@@ -1,16 +1,24 @@
1#include "lancarddata.h" 1#include "lancarddata.h"
2#include "lancardGUI.h" 2#include "lancardGUI.h"
3 3
4class ALanCard;
5
4class LanCardEdit : public LanCardGUI { 6class LanCardEdit : public LanCardGUI {
5 7
6public : 8public :
7 9
8 LanCardEdit( QWidget * parent ); 10 LanCardEdit( QWidget * parent );
9 QString acceptable( void ); 11 QString acceptable( void );
10 bool commit( LanCardData & Data ); 12 bool commit( LanCardData & Data );
11 void showData( LanCardData & Data ); 13 void showData( ALanCard * NNI );
14
15public slots :
16
17 void SLOT_ScanCards( void );
18 void SLOT_RemoveUnknown( void );
12 19
13private : 20private :
14 21
15 bool ContainedObsoleteMAC; 22 void populateList( void );
23 ALanCard * NNI;
16}; 24};
diff --git a/noncore/settings/networksettings2/lancard/lancardrun.cpp b/noncore/settings/networksettings2/lancard/lancardrun.cpp
index 951756d..2e4fc43 100644
--- a/noncore/settings/networksettings2/lancard/lancardrun.cpp
+++ b/noncore/settings/networksettings2/lancard/lancardrun.cpp
@@ -1,89 +1,94 @@
1#include <qfile.h> 1#include <qfile.h>
2#include <qtextstream.h> 2#include <qtextstream.h>
3#include <qstringlist.h>
3#include <resources.h> 4#include <resources.h>
4#include "lancardrun.h" 5#include "lancardrun.h"
5 6
6void LanCardRun::detectState( NodeCollection * NC ) { 7void LanCardRun::detectState( NodeCollection * NC ) {
7 8
8 // unavailable : no card found 9 // unavailable : no card found
9 // available : card found and assigned to us or free 10 // available : card found and assigned to us or free
10 // up : card found and assigned to us and up 11 // up : card found and assigned to us and up
11 12
12 QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); 13 QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number());
13 System & Sys = NSResources->system(); 14 System & Sys = NSResources->system();
14 InterfaceInfo * Run; 15 InterfaceInfo * Run;
15 16
16 QFile F( S ); 17 QFile F( S );
17 18
18 if( F.open( IO_ReadOnly ) ) { 19 if( F.open( IO_ReadOnly ) ) {
19 // could open file -> read interface and assign 20 // could open file -> read interface and assign
20 QString X; 21 QString X;
21 QTextStream TS(&F); 22 QTextStream TS(&F);
22 X = TS.readLine(); 23 X = TS.readLine();
23 // find interface 24 // find interface
24 if( handlesInterface( X ) ) { 25 if( handlesInterface( X ) ) {
25 for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); 26 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
26 It.current(); 27 It.current();
27 ++It ) { 28 ++It ) {
28 Run = It.current(); 29 Run = It.current();
29 if( X == Run->Name ) { 30 if( X == Run->Name ) {
30 Run->assignNode( netNode() ); 31 Run->assignNode( netNode() );
31 assignInterface( Run ); 32 assignInterface( Run );
32 NC->setCurrentState( IsUp ); 33 NC->setCurrentState( IsUp );
33 return; 34 return;
34 } 35 }
35 } 36 }
36 } 37 }
37 } 38 }
38 39
39 if( ( Run = assignedInterface() ) ) { 40 if( ( Run = assignedInterface() ) ) {
40 // we already have an interface assigned -> still present ? 41 // we already have an interface assigned -> still present ?
41 if( ! Run->IsUp ) { 42 if( ! Run->IsUp ) {
42 // usb is still free -> keep assignment 43 // usb is still free -> keep assignment
43 NC->setCurrentState( Available ); 44 NC->setCurrentState( Available );
44 return; 45 return;
45 } // else interface is up but NOT us -> some other profile 46 } // else interface is up but NOT us -> some other profile
46 } 47 }
47 48
48 // nothing (valid) assigned to us 49 // nothing (valid) assigned to us
49 assignInterface( 0 ); 50 assignInterface( 0 );
50 51
51 // find possible interface 52 // find possible interface
52 for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); 53 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
53 It.current(); 54 It.current();
54 ++It ) { 55 ++It ) {
55 Run = It.current(); 56 Run = It.current();
56 if( handlesInterface( Run->Name ) && 57 if( handlesInterface( *Run ) &&
57 Run->CardType == ARPHRD_ETHER && 58 ( Run->CardType == ARPHRD_ETHER
59#ifdef ARPHRD_IEEE1394
60 || Run->CardType == ARPHRD_IEEE1394
61#endif
62 ) &&
58 ! Run->IsUp 63 ! Run->IsUp
59 ) { 64 ) {
60 // proper type, and Not UP -> free 65 // proper type, and Not UP -> free
61 NC->setCurrentState( Off ); 66 NC->setCurrentState( Off );
62 return; 67 return;
63 } 68 }
64 } 69 }
65 // no free found 70 // no free found
66 71
67 NC->setCurrentState( Unavailable ); 72 NC->setCurrentState( Unavailable );
68 73
69} 74}
70 75
71bool LanCardRun::setState( NodeCollection * NC, Action_t A ) { 76bool LanCardRun::setState( NodeCollection * NC, Action_t A ) {
72 77
73 // we only handle activate and deactivate 78 // we only handle activate and deactivate
74 switch( A ) { 79 switch( A ) {
75 case Activate : 80 case Activate :
76 { 81 {
77 if( NC->currentState() != Off ) { 82 if( NC->currentState() != Off ) {
78 return 0; 83 return 0;
79 } 84 }
80 InterfaceInfo * N = getInterface(); 85 InterfaceInfo * N = getInterface();
81 if( ! N ) { 86 if( ! N ) {
82 // no interface available 87 // no interface available
83 NC->setCurrentState( Unavailable ); 88 NC->setCurrentState( Unavailable );
84 return 0; 89 return 0;
85 } 90 }
86 // because we were OFF the interface 91 // because we were OFF the interface
87 // we get back is NOT assigned 92 // we get back is NOT assigned
88 N->assignNode( netNode() ); 93 N->assignNode( netNode() );
89 assignInterface( N ); 94 assignInterface( N );
@@ -116,51 +121,72 @@ bool LanCardRun::canSetState( State_t Curr, Action_t A ) {
116 case Activate : 121 case Activate :
117 { // at least available 122 { // at least available
118 if( Curr == Available ) { 123 if( Curr == Available ) {
119 return 1; 124 return 1;
120 } 125 }
121 // or we can make one available 126 // or we can make one available
122 InterfaceInfo * N = getInterface(); 127 InterfaceInfo * N = getInterface();
123 if( ! N || N->assignedNode() != 0 ) { 128 if( ! N || N->assignedNode() != 0 ) {
124 // non available or assigned 129 // non available or assigned
125 return 0; 130 return 0;
126 } 131 }
127 return 1; 132 return 1;
128 } 133 }
129 case Deactivate : 134 case Deactivate :
130 return ( Curr >= Available ); 135 return ( Curr >= Available );
131 default : 136 default :
132 // FT 137 // FT
133 break; 138 break;
134 } 139 }
135 return 0; 140 return 0;
136} 141}
137 142
138// get interface that is free or assigned to us 143// get interface that is free or assigned to us
139InterfaceInfo * LanCardRun::getInterface( void ) { 144InterfaceInfo * LanCardRun::getInterface( void ) {
140 145
141 System & S = NSResources->system(); 146 System & S = NSResources->system();
142 InterfaceInfo * best = 0, * Run; 147 InterfaceInfo * best = 0, * Run;
143 148
144 for( QDictIterator<InterfaceInfo> It(S.interfaces()); 149 for( QDictIterator<InterfaceInfo> It(S.interfaces());
145 It.current(); 150 It.current();
146 ++It ) { 151 ++It ) {
147 Run = It.current(); 152 Run = It.current();
148 if( handlesInterface( Run->Name ) && 153 if( handlesInterface( *Run ) &&
149 Run->CardType == ARPHRD_ETHER 154 ( Run->CardType == ARPHRD_ETHER
155#ifdef ARPHRD_IEEE1394
156 || Run->CardType == ARPHRD_IEEE1394
157#endif
158 )
150 ) { 159 ) {
151 // this is a LAN card 160 // this is a LAN card
152 if( Run->assignedNode() == netNode() ) { 161 if( Run->assignedNode() == netNode() ) {
153 // assigned to us 162 // assigned to us
154 return Run; 163 return Run;
155 } else if( Run->assignedNode() == 0 ) { 164 } else if( Run->assignedNode() == 0 ) {
156 // free 165 // free
157 best = Run; 166 best = Run;
158 } 167 }
159 } 168 }
160 } 169 }
161 return best; // can be 0 170 return best; // can be 0
162} 171}
163 172
164bool LanCardRun::handlesInterface( const QString & S ) { 173bool LanCardRun::handlesInterface( const QString & S ) {
174 InterfaceInfo * II;
175 II = NSResources->system().interface( S );
176 if( ( II = NSResources->system().interface( S ) ) ) {
177 return handlesInterface( *II );
178 }
165 return Pat.match( S ) >= 0; 179 return Pat.match( S ) >= 0;
166} 180}
181
182bool LanCardRun::handlesInterface( const InterfaceInfo & II ) {
183 if( Pat.match( II.Name ) < 0 )
184 return 0;
185
186 if( Data->AnyLanCard ) {
187 return 1;
188 }
189
190 // must also match hardware address
191 return ( Data->HWAddresses.findIndex( II.MACAddress ) >= 0 );
192}
diff --git a/noncore/settings/networksettings2/lancard/lancardrun.h b/noncore/settings/networksettings2/lancard/lancardrun.h
index 499b417..e8a535a 100644
--- a/noncore/settings/networksettings2/lancard/lancardrun.h
+++ b/noncore/settings/networksettings2/lancard/lancardrun.h
@@ -1,37 +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 & Data ) : AsDevice( NNI ), 13 LanCardData & D ) : AsDevice( NNI ),
14 Pat( "eth[0-9]" ) 14 Pat( "eth[0-9]" )
15 { } 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 );
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 31
31private : 32private :
32 33
33 InterfaceInfo * getInterface( void ); 34 InterfaceInfo * getInterface( void );
34 QRegExp Pat; 35 QRegExp Pat;
36 LanCardData * Data;
35 37
36}; 38};
37#endif 39#endif
diff --git a/noncore/settings/networksettings2/modem/modem_NN.cpp b/noncore/settings/networksettings2/modem/modem_NN.cpp
index 1cc8524..9d70d7a 100644
--- a/noncore/settings/networksettings2/modem/modem_NN.cpp
+++ b/noncore/settings/networksettings2/modem/modem_NN.cpp
@@ -1,43 +1,43 @@
1#include "modem_NN.h" 1#include "modem_NN.h"
2#include "modem_NNI.h" 2#include "modem_NNI.h"
3 3
4static const char * ModemNeeds[] = 4static const char * ModemNeeds[] =
5 { "line" 5 { "line"
6 }; 6 };
7 7
8/** 8/**
9 * Constructor, find all of the possible interfaces 9 * Constructor, find all of the possible interfaces
10 */ 10 */
11ModemNetNode::ModemNetNode() : ANetNode() { 11ModemNetNode::ModemNetNode() : ANetNode(tr("Dialup modem")) {
12} 12}
13 13
14/** 14/**
15 * Delete any interfaces that we own. 15 * Delete any interfaces that we own.
16 */ 16 */
17ModemNetNode::~ModemNetNode(){ 17ModemNetNode::~ModemNetNode(){
18} 18}
19 19
20const QString ModemNetNode::nodeDescription(){ 20const QString ModemNetNode::nodeDescription(){
21 return tr("\ 21 return tr("\
22<p>Sets up a dialing procedures.</p>\ 22<p>Sets up a dialing procedures.</p>\
23<p>Use this to dial up over modems, ISDN, GSM, ...</p>\ 23<p>Use this to dial up over modems, ISDN, GSM, ...</p>\
24" 24"
25); 25);
26} 26}
27 27
28ANetNodeInstance * ModemNetNode::createInstance( void ) { 28ANetNodeInstance * ModemNetNode::createInstance( void ) {
29 return new AModem( this ); 29 return new AModem( this );
30} 30}
31 31
32const char ** ModemNetNode::needs( void ) { 32const char ** ModemNetNode::needs( void ) {
33 return ModemNeeds; 33 return ModemNeeds;
34} 34}
35 35
36const char * ModemNetNode::provides( void ) { 36const char * ModemNetNode::provides( void ) {
37 return "line"; 37 return "line";
38} 38}
39 39
40bool ModemNetNode::generateProperFilesFor( 40bool ModemNetNode::generateProperFilesFor(
41 ANetNodeInstance * ) { 41 ANetNodeInstance * ) {
42 return 1; 42 return 1;
43} 43}
diff --git a/noncore/settings/networksettings2/modem/modem_NN.h b/noncore/settings/networksettings2/modem/modem_NN.h
index 849f928..2f496dd 100644
--- a/noncore/settings/networksettings2/modem/modem_NN.h
+++ b/noncore/settings/networksettings2/modem/modem_NN.h
@@ -1,47 +1,44 @@
1#ifndef MODEM_NETNODE_H 1#ifndef MODEM_NETNODE_H
2#define MODEM_NETNODE_H 2#define MODEM_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class AModem; 6class AModem;
7 7
8class ModemNetNode : public ANetNode{ 8class ModemNetNode : public ANetNode{
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 ModemNetNode(); 14 ModemNetNode();
15 virtual ~ModemNetNode(); 15 virtual ~ModemNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/modem"; } 18 { return "Devices/modem"; }
19 19
20 virtual const QString nodeName()
21 { return tr("Dialup modem"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 28 virtual bool hasDataFor( const QString & )
32 { return 0; } 29 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 31 SystemFile & SF, long DevNr );
35 32
36private: 33private:
37 34
38 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 35 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS ); 36 virtual void saveSpecificAttribute( QTextStream & TS );
40}; 37};
41 38
42extern "C" 39extern "C"
43{ 40{
44 void create_plugin( QList<ANetNode> & PNN ); 41 void create_plugin( QList<ANetNode> & PNN );
45}; 42};
46 43
47#endif 44#endif
diff --git a/noncore/settings/networksettings2/network/networkGUI.ui b/noncore/settings/networksettings2/network/networkGUI.ui
index 9115ec0..5f71f82 100644
--- a/noncore/settings/networksettings2/network/networkGUI.ui
+++ b/noncore/settings/networksettings2/network/networkGUI.ui
@@ -1,73 +1,73 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>NetworkGUI</class> 2<class>NetworkGUI</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>NetworkGUI</cstring> 7 <cstring>NetworkGUI</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>293</width> 14 <width>289</width>
15 <height>254</height> 15 <height>254</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>Interface Configuration</string> 20 <string>Interface Configuration</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>0</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>TabWidget11</cstring> 41 <cstring>MainTab_TAB</cstring>
42 </property> 42 </property>
43 <property> 43 <property>
44 <name>layoutMargin</name> 44 <name>layoutMargin</name>
45 </property> 45 </property>
46 <property> 46 <property>
47 <name>layoutSpacing</name> 47 <name>layoutSpacing</name>
48 </property> 48 </property>
49 <widget> 49 <widget>
50 <class>QWidget</class> 50 <class>QWidget</class>
51 <property stdset="1"> 51 <property stdset="1">
52 <name>name</name> 52 <name>name</name>
53 <cstring>tab</cstring> 53 <cstring>tab</cstring>
54 </property> 54 </property>
55 <attribute> 55 <attribute>
56 <name>title</name> 56 <name>title</name>
57 <string>Setup</string> 57 <string>Setup</string>
58 </attribute> 58 </attribute>
59 <vbox> 59 <vbox>
60 <property stdset="1"> 60 <property stdset="1">
61 <name>margin</name> 61 <name>margin</name>
62 <number>0</number> 62 <number>0</number>
63 </property> 63 </property>
64 <property stdset="1"> 64 <property stdset="1">
65 <name>spacing</name> 65 <name>spacing</name>
66 <number>0</number> 66 <number>0</number>
67 </property> 67 </property>
68 <widget> 68 <widget>
69 <class>QCheckBox</class> 69 <class>QCheckBox</class>
70 <property stdset="1"> 70 <property stdset="1">
71 <name>name</name> 71 <name>name</name>
72 <cstring>DHCP_CB</cstring> 72 <cstring>DHCP_CB</cstring>
73 </property> 73 </property>
@@ -454,65 +454,65 @@
454 </vbox> 454 </vbox>
455 </widget> 455 </widget>
456 <widget> 456 <widget>
457 <class>QWidget</class> 457 <class>QWidget</class>
458 <property stdset="1"> 458 <property stdset="1">
459 <name>name</name> 459 <name>name</name>
460 <cstring>tab</cstring> 460 <cstring>tab</cstring>
461 </property> 461 </property>
462 <attribute> 462 <attribute>
463 <name>title</name> 463 <name>title</name>
464 <string>Extra commands</string> 464 <string>Extra commands</string>
465 </attribute> 465 </attribute>
466 <vbox> 466 <vbox>
467 <property stdset="1"> 467 <property stdset="1">
468 <name>margin</name> 468 <name>margin</name>
469 <number>0</number> 469 <number>0</number>
470 </property> 470 </property>
471 <property stdset="1"> 471 <property stdset="1">
472 <name>spacing</name> 472 <name>spacing</name>
473 <number>2</number> 473 <number>2</number>
474 </property> 474 </property>
475 <widget> 475 <widget>
476 <class>QLineEdit</class> 476 <class>QLineEdit</class>
477 <property stdset="1"> 477 <property stdset="1">
478 <name>name</name> 478 <name>name</name>
479 <cstring>Command_LE</cstring> 479 <cstring>Command_LE</cstring>
480 </property> 480 </property>
481 </widget> 481 </widget>
482 <widget> 482 <widget>
483 <class>QTabWidget</class> 483 <class>QTabWidget</class>
484 <property stdset="1"> 484 <property stdset="1">
485 <name>name</name> 485 <name>name</name>
486 <cstring>Tab_TB</cstring> 486 <cstring>Tab_TAB</cstring>
487 </property> 487 </property>
488 <property> 488 <property>
489 <name>layoutMargin</name> 489 <name>layoutMargin</name>
490 </property> 490 </property>
491 <property> 491 <property>
492 <name>layoutSpacing</name> 492 <name>layoutSpacing</name>
493 </property> 493 </property>
494 <widget> 494 <widget>
495 <class>QWidget</class> 495 <class>QWidget</class>
496 <property stdset="1"> 496 <property stdset="1">
497 <name>name</name> 497 <name>name</name>
498 <cstring>tab</cstring> 498 <cstring>tab</cstring>
499 </property> 499 </property>
500 <attribute> 500 <attribute>
501 <name>title</name> 501 <name>title</name>
502 <string>Pre-Up</string> 502 <string>Pre-Up</string>
503 </attribute> 503 </attribute>
504 <hbox> 504 <hbox>
505 <property stdset="1"> 505 <property stdset="1">
506 <name>margin</name> 506 <name>margin</name>
507 <number>0</number> 507 <number>0</number>
508 </property> 508 </property>
509 <property stdset="1"> 509 <property stdset="1">
510 <name>spacing</name> 510 <name>spacing</name>
511 <number>2</number> 511 <number>2</number>
512 </property> 512 </property>
513 <widget> 513 <widget>
514 <class>QListBox</class> 514 <class>QListBox</class>
515 <property stdset="1"> 515 <property stdset="1">
516 <name>name</name> 516 <name>name</name>
517 <cstring>PreUp_LB</cstring> 517 <cstring>PreUp_LB</cstring>
518 </property> 518 </property>
@@ -1029,43 +1029,168 @@
1029 <slot>setDisabled(bool)</slot> 1029 <slot>setDisabled(bool)</slot>
1030 </connection> 1030 </connection>
1031 <connection> 1031 <connection>
1032 <sender>SubnetMask_LE</sender> 1032 <sender>SubnetMask_LE</sender>
1033 <signal>textChanged(const QString&amp;)</signal> 1033 <signal>textChanged(const QString&amp;)</signal>
1034 <receiver>NetworkGUI</receiver> 1034 <receiver>NetworkGUI</receiver>
1035 <slot>SLOT_NetmaskModified( const QString &amp; )</slot> 1035 <slot>SLOT_NetmaskModified( const QString &amp; )</slot>
1036 </connection> 1036 </connection>
1037 <connection> 1037 <connection>
1038 <sender>IPAddress_LE</sender> 1038 <sender>IPAddress_LE</sender>
1039 <signal>textChanged(const QString&amp;)</signal> 1039 <signal>textChanged(const QString&amp;)</signal>
1040 <receiver>NetworkGUI</receiver> 1040 <receiver>NetworkGUI</receiver>
1041 <slot>SLOT_NetmaskModified( const QString &amp; )</slot> 1041 <slot>SLOT_NetmaskModified( const QString &amp; )</slot>
1042 </connection> 1042 </connection>
1043 <connection> 1043 <connection>
1044 <sender>DHCP_CB</sender> 1044 <sender>DHCP_CB</sender>
1045 <signal>toggled(bool)</signal> 1045 <signal>toggled(bool)</signal>
1046 <receiver>Frame27</receiver> 1046 <receiver>Frame27</receiver>
1047 <slot>setEnabled(bool)</slot> 1047 <slot>setEnabled(bool)</slot>
1048 </connection> 1048 </connection>
1049 <connection> 1049 <connection>
1050 <sender>DHCP_CB</sender> 1050 <sender>DHCP_CB</sender>
1051 <signal>toggled(bool)</signal> 1051 <signal>toggled(bool)</signal>
1052 <receiver>TextLabel2_2</receiver> 1052 <receiver>TextLabel2_2</receiver>
1053 <slot>setEnabled(bool)</slot> 1053 <slot>setEnabled(bool)</slot>
1054 </connection> 1054 </connection>
1055 <connection> 1055 <connection>
1056 <sender>SendHostname_CB</sender> 1056 <sender>SendHostname_CB</sender>
1057 <signal>toggled(bool)</signal> 1057 <signal>toggled(bool)</signal>
1058 <receiver>Hostname_LE</receiver> 1058 <receiver>Hostname_LE</receiver>
1059 <slot>setEnabled(bool)</slot> 1059 <slot>setEnabled(bool)</slot>
1060 </connection> 1060 </connection>
1061 <connection>
1062 <sender>AddPreUp_TB</sender>
1063 <signal>clicked()</signal>
1064 <receiver>NetworkGUI</receiver>
1065 <slot>SLOT_Add()</slot>
1066 </connection>
1067 <connection>
1068 <sender>DeletePreUp_TB</sender>
1069 <signal>clicked()</signal>
1070 <receiver>NetworkGUI</receiver>
1071 <slot>SLOT_Remove()</slot>
1072 </connection>
1073 <connection>
1074 <sender>UpPreUp_TB</sender>
1075 <signal>clicked()</signal>
1076 <receiver>NetworkGUI</receiver>
1077 <slot>SLOT_Up()</slot>
1078 </connection>
1079 <connection>
1080 <sender>DownPreUp_TB</sender>
1081 <signal>clicked()</signal>
1082 <receiver>NetworkGUI</receiver>
1083 <slot>SLOT_Down()</slot>
1084 </connection>
1085 <connection>
1086 <sender>AddPostUp_TB</sender>
1087 <signal>clicked()</signal>
1088 <receiver>NetworkGUI</receiver>
1089 <slot>SLOT_Add()</slot>
1090 </connection>
1091 <connection>
1092 <sender>DeletePostUp_TB</sender>
1093 <signal>clicked()</signal>
1094 <receiver>NetworkGUI</receiver>
1095 <slot>SLOT_Remove()</slot>
1096 </connection>
1097 <connection>
1098 <sender>UpPostUp_TB</sender>
1099 <signal>clicked()</signal>
1100 <receiver>NetworkGUI</receiver>
1101 <slot>SLOT_Up()</slot>
1102 </connection>
1103 <connection>
1104 <sender>DownPostUp_TB</sender>
1105 <signal>clicked()</signal>
1106 <receiver>NetworkGUI</receiver>
1107 <slot>SLOT_Down()</slot>
1108 </connection>
1109 <connection>
1110 <sender>AddPreDown_TB</sender>
1111 <signal>clicked()</signal>
1112 <receiver>NetworkGUI</receiver>
1113 <slot>SLOT_Add()</slot>
1114 </connection>
1115 <connection>
1116 <sender>DeletePreDown_TB</sender>
1117 <signal>clicked()</signal>
1118 <receiver>NetworkGUI</receiver>
1119 <slot>SLOT_Remove()</slot>
1120 </connection>
1121 <connection>
1122 <sender>UpPreDown_TB</sender>
1123 <signal>clicked()</signal>
1124 <receiver>NetworkGUI</receiver>
1125 <slot>SLOT_Up()</slot>
1126 </connection>
1127 <connection>
1128 <sender>DownPreDown_TB</sender>
1129 <signal>clicked()</signal>
1130 <receiver>NetworkGUI</receiver>
1131 <slot>SLOT_Down()</slot>
1132 </connection>
1133 <connection>
1134 <sender>AddPostDown_TB</sender>
1135 <signal>clicked()</signal>
1136 <receiver>NetworkGUI</receiver>
1137 <slot>SLOT_Add()</slot>
1138 </connection>
1139 <connection>
1140 <sender>DeletePostDown_TB</sender>
1141 <signal>clicked()</signal>
1142 <receiver>NetworkGUI</receiver>
1143 <slot>SLOT_Remove()</slot>
1144 </connection>
1145 <connection>
1146 <sender>UpPostDown_TB</sender>
1147 <signal>clicked()</signal>
1148 <receiver>NetworkGUI</receiver>
1149 <slot>SLOT_Up()</slot>
1150 </connection>
1151 <connection>
1152 <sender>DownPostDown_TB</sender>
1153 <signal>clicked()</signal>
1154 <receiver>NetworkGUI</receiver>
1155 <slot>SLOT_Down()</slot>
1156 </connection>
1157 <connection>
1158 <sender>PreUp_LB</sender>
1159 <signal>doubleClicked(QListBoxItem*)</signal>
1160 <receiver>NetworkGUI</receiver>
1161 <slot>SLOT_ShowCommand( QListBoxItem *)</slot>
1162 </connection>
1163 <connection>
1164 <sender>PreDown_LB</sender>
1165 <signal>doubleClicked(QListBoxItem*)</signal>
1166 <receiver>NetworkGUI</receiver>
1167 <slot>SLOT_ShowCommand( QListBoxItem *)</slot>
1168 </connection>
1169 <connection>
1170 <sender>PostDown_LB</sender>
1171 <signal>doubleClicked(QListBoxItem*)</signal>
1172 <receiver>NetworkGUI</receiver>
1173 <slot>SLOT_ShowCommand( QListBoxItem *)</slot>
1174 </connection>
1175 <connection>
1176 <sender>PostUp_LB</sender>
1177 <signal>doubleClicked(QListBoxItem*)</signal>
1178 <receiver>NetworkGUI</receiver>
1179 <slot>SLOT_ShowCommand( QListBoxItem *)</slot>
1180 </connection>
1181 <slot access="public">SLOT_Add()</slot>
1182 <slot access="public">SLOT_Down()</slot>
1061 <slot access="public">SLOT_NetmaskModified( const QString &amp; )</slot> 1183 <slot access="public">SLOT_NetmaskModified( const QString &amp; )</slot>
1184 <slot access="public">SLOT_Remove()</slot>
1185 <slot access="public">SLOT_Up()</slot>
1186 <slot access="public">SLOT_ShowCommand( QListBoxItem *)</slot>
1062</connections> 1187</connections>
1063<tabstops> 1188<tabstops>
1064 <tabstop>DHCP_CB</tabstop> 1189 <tabstop>DHCP_CB</tabstop>
1065 <tabstop>IPAddress_LE</tabstop> 1190 <tabstop>IPAddress_LE</tabstop>
1066 <tabstop>SubnetMask_LE</tabstop> 1191 <tabstop>SubnetMask_LE</tabstop>
1067 <tabstop>Gateway_LE</tabstop> 1192 <tabstop>Gateway_LE</tabstop>
1068 <tabstop>DNS1_LE</tabstop> 1193 <tabstop>DNS1_LE</tabstop>
1069 <tabstop>DNS2_LE</tabstop> 1194 <tabstop>DNS2_LE</tabstop>
1070</tabstops> 1195</tabstops>
1071</UI> 1196</UI>
diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp
index d27d54a..b5989df 100644
--- a/noncore/settings/networksettings2/network/network_NN.cpp
+++ b/noncore/settings/networksettings2/network/network_NN.cpp
@@ -1,44 +1,44 @@
1#include "network_NN.h" 1#include "network_NN.h"
2#include "network_NNI.h" 2#include "network_NNI.h"
3 3
4static const char * NetworkNeeds[] = 4static const char * NetworkNeeds[] =
5 { "device", 5 { "device",
6 0 6 0
7 }; 7 };
8 8
9/** 9/**
10 * Constructor, find all of the possible interfaces 10 * Constructor, find all of the possible interfaces
11 */ 11 */
12NetworkNetNode::NetworkNetNode() : ANetNode() { 12NetworkNetNode::NetworkNetNode() : ANetNode(tr("IP Configuration")) {
13} 13}
14 14
15/** 15/**
16 * Delete any interfaces that we own. 16 * Delete any interfaces that we own.
17 */ 17 */
18NetworkNetNode::~NetworkNetNode(){ 18NetworkNetNode::~NetworkNetNode(){
19} 19}
20 20
21const QString NetworkNetNode::nodeDescription(){ 21const QString NetworkNetNode::nodeDescription(){
22 return tr("\ 22 return tr("\
23<p>Sets up TCP/IP options.</p>\ 23<p>Sets up TCP/IP options.</p>\
24<p>Use this to configure the TCP/IP protocol</p>\ 24<p>Use this to configure the TCP/IP protocol</p>\
25" 25"
26); 26);
27} 27}
28 28
29ANetNodeInstance * NetworkNetNode::createInstance( void ) { 29ANetNodeInstance * NetworkNetNode::createInstance( void ) {
30 return new ANetwork( this ); 30 return new ANetwork( this );
31} 31}
32 32
33const char ** NetworkNetNode::needs( void ) { 33const char ** NetworkNetNode::needs( void ) {
34 return NetworkNeeds; 34 return NetworkNeeds;
35} 35}
36 36
37const char * NetworkNetNode::provides( void ) { 37const char * NetworkNetNode::provides( void ) {
38 return "connection"; 38 return "connection";
39} 39}
40 40
41bool NetworkNetNode::generateProperFilesFor( 41bool NetworkNetNode::generateProperFilesFor(
42 ANetNodeInstance * ) { 42 ANetNodeInstance * ) {
43 return 1; 43 return 1;
44} 44}
diff --git a/noncore/settings/networksettings2/network/network_NN.h b/noncore/settings/networksettings2/network/network_NN.h
index 0f87e1b..6548c32 100644
--- a/noncore/settings/networksettings2/network/network_NN.h
+++ b/noncore/settings/networksettings2/network/network_NN.h
@@ -1,47 +1,44 @@
1#ifndef NETWORK_NETNODE_H 1#ifndef NETWORK_NETNODE_H
2#define NETWORK_NETNODE_H 2#define NETWORK_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class ANetwork; 6class ANetwork;
7 7
8class NetworkNetNode : public ANetNode{ 8class NetworkNetNode : public ANetNode{
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 NetworkNetNode(); 14 NetworkNetNode();
15 virtual ~NetworkNetNode(); 15 virtual ~NetworkNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/tcpip"; } 18 { return "Devices/tcpip"; }
19 19
20 virtual const QString nodeName()
21 { return tr("IP Configuration"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 28 virtual bool hasDataFor( const QString & )
32 { return 0; } 29 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 31 SystemFile & SF, long DevNr );
35 32
36private: 33private:
37 34
38 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 35 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS ); 36 virtual void saveSpecificAttribute( QTextStream & TS );
40}; 37};
41 38
42extern "C" 39extern "C"
43{ 40{
44 void create_plugin( QList<ANetNode> & PNN ); 41 void create_plugin( QList<ANetNode> & PNN );
45}; 42};
46 43
47#endif 44#endif
diff --git a/noncore/settings/networksettings2/network/networkedit.cpp b/noncore/settings/networksettings2/network/networkedit.cpp
index 182213b..05110d9 100644
--- a/noncore/settings/networksettings2/network/networkedit.cpp
+++ b/noncore/settings/networksettings2/network/networkedit.cpp
@@ -1,34 +1,35 @@
1#include <qtoolbutton.h> 1#include <qtoolbutton.h>
2#include <qcheckbox.h> 2#include <qcheckbox.h>
3#include <qtabwidget.h>
3#include <qlineedit.h> 4#include <qlineedit.h>
4#include <qlistbox.h> 5#include <qlistbox.h>
5#include <GUIUtils.h> 6#include <GUIUtils.h>
6#include <resources.h> 7#include <resources.h>
7#include "networkedit.h" 8#include "networkedit.h"
8 9
9NetworkEdit::NetworkEdit( QWidget * Parent ) : NetworkGUI( Parent ){ 10NetworkEdit::NetworkEdit( QWidget * Parent ) : NetworkGUI( Parent ){
10 11
11 AddPreDown_TB->setPixmap( NSResources->getPixmap( "add" ) ); 12 AddPreDown_TB->setPixmap( NSResources->getPixmap( "add" ) );
12 AddPreUp_TB->setPixmap( NSResources->getPixmap( "add" ) ); 13 AddPreUp_TB->setPixmap( NSResources->getPixmap( "add" ) );
13 AddPostDown_TB->setPixmap( NSResources->getPixmap( "add" ) ); 14 AddPostDown_TB->setPixmap( NSResources->getPixmap( "add" ) );
14 AddPostUp_TB->setPixmap( NSResources->getPixmap( "add" ) ); 15 AddPostUp_TB->setPixmap( NSResources->getPixmap( "add" ) );
15 16
16 DeletePreDown_TB->setPixmap( NSResources->getPixmap( "remove" ) ); 17 DeletePreDown_TB->setPixmap( NSResources->getPixmap( "remove" ) );
17 DeletePreUp_TB->setPixmap( NSResources->getPixmap( "remove" ) ); 18 DeletePreUp_TB->setPixmap( NSResources->getPixmap( "remove" ) );
18 DeletePostDown_TB->setPixmap( NSResources->getPixmap( "remove" ) ); 19 DeletePostDown_TB->setPixmap( NSResources->getPixmap( "remove" ) );
19 DeletePostUp_TB->setPixmap( NSResources->getPixmap( "remove" ) ); 20 DeletePostUp_TB->setPixmap( NSResources->getPixmap( "remove" ) );
20 21
21 UpPreDown_TB->setPixmap( NSResources->getPixmap( "up" ) ); 22 UpPreDown_TB->setPixmap( NSResources->getPixmap( "up" ) );
22 UpPreUp_TB->setPixmap( NSResources->getPixmap( "up" ) ); 23 UpPreUp_TB->setPixmap( NSResources->getPixmap( "up" ) );
23 UpPostDown_TB->setPixmap( NSResources->getPixmap( "up" ) ); 24 UpPostDown_TB->setPixmap( NSResources->getPixmap( "up" ) );
24 UpPostUp_TB->setPixmap( NSResources->getPixmap( "up" ) ); 25 UpPostUp_TB->setPixmap( NSResources->getPixmap( "up" ) );
25 26
26 DownPreDown_TB->setPixmap( NSResources->getPixmap( "down" ) ); 27 DownPreDown_TB->setPixmap( NSResources->getPixmap( "down" ) );
27 DownPreUp_TB->setPixmap( NSResources->getPixmap( "down" ) ); 28 DownPreUp_TB->setPixmap( NSResources->getPixmap( "down" ) );
28 DownPostDown_TB->setPixmap( NSResources->getPixmap( "down" ) ); 29 DownPostDown_TB->setPixmap( NSResources->getPixmap( "down" ) );
29 DownPostUp_TB->setPixmap( NSResources->getPixmap( "down" ) ); 30 DownPostUp_TB->setPixmap( NSResources->getPixmap( "down" ) );
30 31
31} 32}
32 33
33QString NetworkEdit::acceptable( void ) { 34QString NetworkEdit::acceptable( void ) {
34 if( DHCP_CB->isChecked() ) { 35 if( DHCP_CB->isChecked() ) {
@@ -81,80 +82,143 @@ bool NetworkEdit::commit( NetworkData_t & Data ) {
81 SM |= updateList( Data.PreDown_SL, PreDown_LB ); 82 SM |= updateList( Data.PreDown_SL, PreDown_LB );
82 SM |= updateList( Data.PostDown_SL, PostDown_LB ); 83 SM |= updateList( Data.PostDown_SL, PostDown_LB );
83 84
84 return SM; 85 return SM;
85} 86}
86 87
87void NetworkEdit::showData( NetworkData_t & Data ) { 88void NetworkEdit::showData( NetworkData_t & Data ) {
88 DHCP_CB->setChecked( Data.UseDHCP ); 89 DHCP_CB->setChecked( Data.UseDHCP );
89 SendHostname_CB->setChecked( Data.SendHostname ); 90 SendHostname_CB->setChecked( Data.SendHostname );
90 Hostname_LE->setText( Data.Hostname ); 91 Hostname_LE->setText( Data.Hostname );
91 IPAddress_LE->setText( Data.IPAddress ); 92 IPAddress_LE->setText( Data.IPAddress );
92 Gateway_LE->setText( Data.Gateway ); 93 Gateway_LE->setText( Data.Gateway );
93 SubnetMask_LE->setText( Data.NetMask ); 94 SubnetMask_LE->setText( Data.NetMask );
94 Broadcast_LE->setText( Data.Broadcast ); 95 Broadcast_LE->setText( Data.Broadcast );
95 DNS1_LE->setText( Data.DNS1 ); 96 DNS1_LE->setText( Data.DNS1 );
96 DNS2_LE->setText( Data.DNS2 ); 97 DNS2_LE->setText( Data.DNS2 );
97 98
98 populateList( Data.PreUp_SL, PreUp_LB ); 99 populateList( Data.PreUp_SL, PreUp_LB );
99 populateList( Data.PostUp_SL, PostUp_LB ); 100 populateList( Data.PostUp_SL, PostUp_LB );
100 populateList( Data.PreDown_SL, PreDown_LB ); 101 populateList( Data.PreDown_SL, PreDown_LB );
101 populateList( Data.PostDown_SL, PostDown_LB ); 102 populateList( Data.PostDown_SL, PostDown_LB );
102} 103}
103 104
104bool NetworkEdit::updateList( QStringList & SL, QListBox * LB ) { 105bool NetworkEdit::updateList( QStringList & SL, QListBox * LB ) {
105 bool Changed; 106 bool Changed;
106 QStringList NewSL; 107 QStringList NewSL;
107 108
108 // collect new list 109 // collect new list
109 for( unsigned int i = 0; i < LB->count() ; i ++ ) { 110 for( unsigned int i = 0; i < LB->count() ; i ++ ) {
110 NewSL.append( LB->text(i) ); 111 NewSL.append( LB->text(i) );
111 } 112 }
112 113
113 // check if at least ONE item in new list is NEW 114 if( NewSL.count() != SL.count() ) {
115 // less or more items
116 SL= NewSL;
117 return 1;
118 }
119
120 // Same size -> same content ?
114 Changed = 0; 121 Changed = 0;
115 for ( QStringList::Iterator it = NewSL.begin(); 122 for ( QStringList::Iterator it = NewSL.begin();
116 it != NewSL.end(); 123 it != NewSL.end();
117 ++it ) { 124 ++it ) {
118 if( SL.findIndex( (*it) ) < 0 ) { 125 if( SL.findIndex( (*it) ) < 0 ) {
119 // new or modified item 126 // new or modified item
120 Changed = 1; 127 Changed = 1;
121 SL = NewSL; 128 SL = NewSL;
122 break; 129 break;
123 } 130 }
124 } 131 }
125 return Changed; 132 return Changed;
126} 133}
127 134
128void NetworkEdit::populateList( QStringList & SL, QListBox * LB ) { 135void NetworkEdit::populateList( QStringList & SL, QListBox * LB ) {
129 LB->clear(); 136 LB->clear();
130 for ( QStringList::Iterator it = SL.begin(); 137 for ( QStringList::Iterator it = SL.begin();
131 it != SL.end(); 138 it != SL.end();
132 ++it ) { 139 ++it ) {
133 LB->insertItem( (*it) ); 140 LB->insertItem( (*it) );
134 } 141 }
135} 142}
136 143
137void NetworkEdit::SLOT_NetmaskModified( const QString & ) { 144void NetworkEdit::SLOT_NetmaskModified( const QString & ) {
138 QString IP, SN; 145 QString IP, SN;
139 IP = IPAddress_LE->text(); 146 IP = IPAddress_LE->text();
140 SN = SubnetMask_LE->text(); 147 SN = SubnetMask_LE->text();
141 if( IP.isEmpty() || SN.isEmpty() ) 148 if( IP.isEmpty() || SN.isEmpty() )
142 return; 149 return;
143 150
144 if( ! validIP(IP) || ! validIP( SN ) ) 151 if( ! validIP(IP) || ! validIP( SN ) )
145 return; 152 return;
146 153
147 // if all ones 154 // if all ones
148 // broadcast = (IPAddress | ~netmask ) 155 // broadcast = (IPAddress | ~netmask )
149 { QString NW; 156 { QString NW;
150 QStringList ipal = QStringList::split( '.', IP ); 157 QStringList ipal = QStringList::split( '.', IP );
151 QStringList nmal = QStringList::split( '.', SN ); 158 QStringList nmal = QStringList::split( '.', SN );
152 159
153 NW = QString( "%1.%2.%3.%4" ). 160 NW = QString( "%1.%2.%3.%4" ).
154 arg( ipal[0].toShort() | ( ~ nmal[0].toShort() & 0x00ff) ). 161 arg( ipal[0].toShort() | ( ~ nmal[0].toShort() & 0x00ff) ).
155 arg( ipal[1].toShort() | ( ~ nmal[1].toShort() & 0x00ff) ). 162 arg( ipal[1].toShort() | ( ~ nmal[1].toShort() & 0x00ff) ).
156 arg( ipal[2].toShort() | ( ~ nmal[2].toShort() & 0x00ff) ). 163 arg( ipal[2].toShort() | ( ~ nmal[2].toShort() & 0x00ff) ).
157 arg( ipal[3].toShort() | ( ~ nmal[3].toShort() & 0x00ff) ); 164 arg( ipal[3].toShort() | ( ~ nmal[3].toShort() & 0x00ff) );
158 Broadcast_LE->setText( NW ); 165 Broadcast_LE->setText( NW );
159 } 166 }
160} 167}
168
169QListBox * NetworkEdit::getActiveLB( void ) {
170 switch( Tab_TAB->currentPageIndex() ) {
171 case 0 :
172 return PreUp_LB;
173 case 1 :
174 return PostUp_LB;
175 case 2 :
176 return PreDown_LB;
177 }
178 return PostDown_LB;
179}
180
181void NetworkEdit::SLOT_Add( void ) {
182 if( Command_LE->text().isEmpty() )
183 return;
184 QListBox * LB = getActiveLB();
185
186 LB->insertItem( Command_LE->text() );
187}
188
189void NetworkEdit::SLOT_Remove( void ) {
190 QListBox * LB = getActiveLB();
191 int i;
192
193 if( ( i = LB->currentItem() ) >= 0 ) {
194 LB->removeItem( i );
195 }
196}
197
198void NetworkEdit::SLOT_Up( void ) {
199 QListBox * LB = getActiveLB();
200 int i;
201
202 if( ( i = LB->currentItem() ) > 0 ) {
203 QListBoxItem * LBI = LB->item(i);
204 LB->takeItem( LBI );
205 LB->insertItem( LBI, --i );
206 LB->setCurrentItem( i );
207 }
208}
209
210void NetworkEdit::SLOT_Down( void ) {
211 QListBox * LB = getActiveLB();
212 int i;
213
214 if( ( i = LB->currentItem() ) >= 0 && (unsigned)(i+1) != LB->count() ) {
215 QListBoxItem * LBI = LB->item(i);
216 LB->takeItem( LBI );
217 LB->insertItem( LBI, ++i );
218 LB->setCurrentItem( i );
219 }
220}
221
222void NetworkEdit::SLOT_ShowCommand( QListBoxItem * It ) {
223 Command_LE->setText( It->text() );
224}
diff --git a/noncore/settings/networksettings2/network/networkedit.h b/noncore/settings/networksettings2/network/networkedit.h
index 9ed4e84..adc20e0 100644
--- a/noncore/settings/networksettings2/network/networkedit.h
+++ b/noncore/settings/networksettings2/network/networkedit.h
@@ -1,21 +1,29 @@
1#include "networkdata.h" 1#include "networkdata.h"
2#include "networkGUI.h" 2#include "networkGUI.h"
3 3
4class QListBox;
5
4class NetworkEdit : public NetworkGUI { 6class NetworkEdit : public NetworkGUI {
5 7
6public : 8public :
7 9
8 NetworkEdit( QWidget * parent ); 10 NetworkEdit( QWidget * parent );
9 QString acceptable( void ); 11 QString acceptable( void );
10 bool commit( NetworkData_t & Data ); 12 bool commit( NetworkData_t & Data );
11 void showData( NetworkData_t & Data ); 13 void showData( NetworkData_t & Data );
12 14
13public slots : 15public slots :
14 16
15 void SLOT_NetmaskModified( const QString & S ); 17 void SLOT_NetmaskModified( const QString & S );
18 void SLOT_ShowCommand( QListBoxItem * LBI );
19 void SLOT_Add( void );
20 void SLOT_Remove( void );
21 void SLOT_Up( void );
22 void SLOT_Down( void );
16 23
17private : 24private :
18 25
26 QListBox * getActiveLB( void );
19 bool updateList( QStringList &SL, QListBox * LB ); 27 bool updateList( QStringList &SL, QListBox * LB );
20 void populateList( QStringList &SL, QListBox * LB ); 28 void populateList( QStringList &SL, QListBox * LB );
21}; 29};
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.cpp b/noncore/settings/networksettings2/networksettings2/netnode.cpp
index 3691e5a..417fba8 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.cpp
+++ b/noncore/settings/networksettings2/networksettings2/netnode.cpp
@@ -45,78 +45,78 @@ QString quote( QString X ) {
45 return X; 45 return X;
46} 46}
47 47
48 48
49// 49//
50// 50//
51// ANETNODE 51// ANETNODE
52// 52//
53// 53//
54 54
55void ANetNode::saveAttributes( QTextStream & TS ) { 55void ANetNode::saveAttributes( QTextStream & TS ) {
56 saveSpecificAttribute( TS ); 56 saveSpecificAttribute( TS );
57} 57}
58 58
59void ANetNode::setAttribute( QString & Attr, QString & Value ){ 59void ANetNode::setAttribute( QString & Attr, QString & Value ){
60 setSpecificAttribute( Attr, Value ); 60 setSpecificAttribute( Attr, Value );
61} 61}
62 62
63// 63//
64// 64//
65// ANETNODEINSTANCE 65// ANETNODEINSTANCE
66// 66//
67// 67//
68 68
69long ANetNodeInstance::InstanceCounter = -1; 69long ANetNodeInstance::InstanceCounter = -1;
70 70
71void ANetNodeInstance::initialize( void ) { 71void ANetNodeInstance::initialize( void ) {
72 if( InstanceCounter == -1 ) 72 if( InstanceCounter == -1 )
73 InstanceCounter = time(0); 73 InstanceCounter = time(0);
74 // set name 74 // set name
75 QString N; 75 QString N;
76 N.sprintf( "-%ld", InstanceCounter++ ); 76 N.sprintf( "-%ld", InstanceCounter++ );
77 N.prepend( NodeType->nodeName() ); 77 N.prepend( NodeType->name() );
78 setNodeName( N ); 78 setName( N.latin1() );
79} 79}
80 80
81void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){ 81void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){
82 if( Attr == "name" ) { 82 if( Attr == "name" ) {
83 NodeName = Value; 83 setName( Value.latin1() );
84 } else { 84 } else {
85 setSpecificAttribute( Attr, Value ); 85 setSpecificAttribute( Attr, Value );
86 } 86 }
87} 87}
88 88
89void ANetNodeInstance::saveAttributes( QTextStream & TS ) { 89void ANetNodeInstance::saveAttributes( QTextStream & TS ) {
90 TS << "name=" << quote( NodeName ) << endl; 90 TS << "name=" << name() << endl;
91 saveSpecificAttribute( TS ); 91 saveSpecificAttribute( TS );
92} 92}
93 93
94ANetNodeInstance * ANetNodeInstance::nextNode( void ) { 94ANetNodeInstance * ANetNodeInstance::nextNode( void ) {
95 return connection()->findNext( this ); 95 return connection()->findNext( this );
96} 96}
97 97
98// 98//
99// 99//
100// NODECOLLECTION 100// NODECOLLECTION
101// 101//
102// 102//
103 103
104long NodeCollection::MaxNr = -1; 104long NodeCollection::MaxNr = -1;
105 105
106NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() { 106NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() {
107 IsModified = 0; 107 IsModified = 0;
108 Index = -1; 108 Index = -1;
109 Name=""; 109 Name="";
110 IsNew = 1; 110 IsNew = 1;
111 CurrentState = Unchecked; 111 CurrentState = Unchecked;
112} 112}
113 113
114NodeCollection::NodeCollection( QTextStream & TS ) : 114NodeCollection::NodeCollection( QTextStream & TS ) :
115 QList<ANetNodeInstance>() { 115 QList<ANetNodeInstance>() {
116 long idx; 116 long idx;
117 bool InError = 0; 117 bool InError = 0;
118 QString S, A, N; 118 QString S, A, N;
119 IsModified = 0; 119 IsModified = 0;
120 Index = -1; 120 Index = -1;
121 Name=""; 121 Name="";
122 IsNew = 0; 122 IsNew = 0;
@@ -151,118 +151,118 @@ NodeCollection::NodeCollection( QTextStream & TS ) :
151 append( NSResources->findNodeInstance( N ) ); 151 append( NSResources->findNodeInstance( N ) );
152 } else { 152 } else {
153 // could not find a node type -> collection invalid 153 // could not find a node type -> collection invalid
154 InError = 1; 154 InError = 1;
155 } 155 }
156 } 156 }
157 } while( 1 ); 157 } while( 1 );
158} 158}
159 159
160 160
161NodeCollection::~NodeCollection( void ) { 161NodeCollection::~NodeCollection( void ) {
162} 162}
163 163
164const QString & NodeCollection::description( void ) { 164const QString & NodeCollection::description( void ) {
165 ANetNodeInstance * NNI = getToplevel(); 165 ANetNodeInstance * NNI = getToplevel();
166 return (NNI) ? NNI->runtime()->asFullSetup()->description() : Name; 166 return (NNI) ? NNI->runtime()->asFullSetup()->description() : Name;
167} 167}
168 168
169void NodeCollection::append( ANetNodeInstance * NNI ) { 169void NodeCollection::append( ANetNodeInstance * NNI ) {
170 NNI->setConnection( this ); 170 NNI->setConnection( this );
171 QList<ANetNodeInstance>::append( NNI ); 171 QList<ANetNodeInstance>::append( NNI );
172} 172}
173 173
174void NodeCollection::save( QTextStream & TS ) { 174void NodeCollection::save( QTextStream & TS ) {
175 175
176 TS << "name=" << quote( Name ) << endl; 176 TS << "name=" << quote( Name ) << endl;
177 TS << "number=" << number() << endl; 177 TS << "number=" << number() << endl;
178 ANetNodeInstance * NNI; 178 ANetNodeInstance * NNI;
179 for( QListIterator<ANetNodeInstance> it(*this); 179 for( QListIterator<ANetNodeInstance> it(*this);
180 it.current(); 180 it.current();
181 ++it ) { 181 ++it ) {
182 NNI = it.current(); 182 NNI = it.current();
183 TS << "node=" << quote( NNI->nodeName() ) << endl; 183 TS << "node=" << NNI->name() << endl;
184 } 184 }
185 TS << endl; 185 TS << endl;
186 IsNew = 0; 186 IsNew = 0;
187} 187}
188 188
189ANetNodeInstance * NodeCollection::getToplevel( void ) { 189ANetNodeInstance * NodeCollection::getToplevel( void ) {
190 ANetNodeInstance * NNI = 0; 190 ANetNodeInstance * NNI = 0;
191 for( QListIterator<ANetNodeInstance> it(*this); 191 for( QListIterator<ANetNodeInstance> it(*this);
192 it.current(); 192 it.current();
193 ++it ) { 193 ++it ) {
194 NNI = it.current(); 194 NNI = it.current();
195 if( NNI->nodeClass()->isToplevel() ) 195 if( NNI->nodeClass()->isToplevel() )
196 break; 196 break;
197 } 197 }
198 return NNI; 198 return NNI;
199} 199}
200 200
201ANetNodeInstance * NodeCollection::findByName( const QString & S ) { 201ANetNodeInstance * NodeCollection::findByName( const QString & S ) {
202 ANetNodeInstance * NNI = 0; 202 ANetNodeInstance * NNI = 0;
203 for( QListIterator<ANetNodeInstance> it(*this); 203 for( QListIterator<ANetNodeInstance> it(*this);
204 it.current(); 204 it.current();
205 ++it ) { 205 ++it ) {
206 NNI = it.current(); 206 NNI = it.current();
207 if( NNI->name() == S ) 207 if( NNI->name() == S )
208 break; 208 break;
209 } 209 }
210 return NNI; 210 return NNI;
211} 211}
212 212
213ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) { 213ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) {
214 ANetNodeInstance * NNNI; 214 ANetNodeInstance * NNNI;
215 215
216 if( ! NNI ) 216 if( ! NNI )
217 getToplevel(); 217 getToplevel();
218 218
219 for( QListIterator<ANetNodeInstance> it(*this); 219 for( QListIterator<ANetNodeInstance> it(*this);
220 it.current(); 220 it.current();
221 ++it ) { 221 ++it ) {
222 NNNI = it.current(); 222 NNNI = it.current();
223 if( NNNI == NNI ) { 223 if( NNNI == NNI ) {
224 ++it; 224 ++it;
225 return it.current(); 225 return it.current();
226 } 226 }
227 } 227 }
228 return 0; // no more next 228 return 0; // no more next
229} 229}
230 230
231int NodeCollection::compareItems( QCollection::Item I1, 231int NodeCollection::compareItems( QCollection::Item I1,
232 QCollection::Item I2 ) { 232 QCollection::Item I2 ) {
233 ANetNodeInstance * NNI1, * NNI2; 233 ANetNodeInstance * NNI1, * NNI2;
234 NNI1 = (ANetNodeInstance *)I1; 234 NNI1 = (ANetNodeInstance *)I1;
235 NNI2 = (ANetNodeInstance *)I2; 235 NNI2 = (ANetNodeInstance *)I2;
236 return NNI1->nodeName().compare( NNI2->nodeName() ); 236 return strcmp( NNI1->name(), NNI2->name() );
237} 237}
238 238
239static char * State2PixmapTbl[] = { 239static char * State2PixmapTbl[] = {
240 "NULL", // Unchecked : no pixmap 240 "NULL", // Unchecked : no pixmap
241 "check", // Unknown 241 "check", // Unknown
242 "delete", // unavailable 242 "delete", // unavailable
243 "disabled", // disabled 243 "disabled", // disabled
244 "off", // off 244 "off", // off
245 "disconnected", // available 245 "disconnected", // available
246 "connected" // up 246 "connected" // up
247}; 247};
248 248
249QPixmap NodeCollection::devicePixmap( void ) { 249QPixmap NodeCollection::devicePixmap( void ) {
250 return NSResources->getPixmap( 250 return NSResources->getPixmap(
251 device()->netNode()->pixmapName()+"-large" ); 251 device()->netNode()->pixmapName()+"-large" );
252} 252}
253 253
254QPixmap NodeCollection::statePixmap( State_t S) { 254QPixmap NodeCollection::statePixmap( State_t S) {
255 return NSResources->getPixmap( State2PixmapTbl[S] ); 255 return NSResources->getPixmap( State2PixmapTbl[S] );
256} 256}
257 257
258QString NodeCollection::stateName( State_t S) { 258QString NodeCollection::stateName( State_t S) {
259 switch( S ) { 259 switch( S ) {
260 case Unknown : 260 case Unknown :
261 return qApp->translate( "networksettings2", "Unknown"); 261 return qApp->translate( "networksettings2", "Unknown");
262 case Unavailable : 262 case Unavailable :
263 return qApp->translate( "networksettings2", "Unavailable"); 263 return qApp->translate( "networksettings2", "Unavailable");
264 case Disabled : 264 case Disabled :
265 return qApp->translate( "networksettings2", "Disabled"); 265 return qApp->translate( "networksettings2", "Disabled");
266 case Off : 266 case Off :
267 return qApp->translate( "networksettings2", "Off"); 267 return qApp->translate( "networksettings2", "Off");
268 case Available : 268 case Available :
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.h b/noncore/settings/networksettings2/networksettings2/netnode.h
index 6ec9ef6..27d54f8 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.h
+++ b/noncore/settings/networksettings2/networksettings2/netnode.h
@@ -43,73 +43,70 @@ typedef enum State {
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(){}; 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 // name of this NetNode
82 virtual const QString nodeName() = 0;
83
84 // description for this NetNode 81 // description for this NetNode
85 virtual const QString nodeDescription() = 0; 82 virtual const QString nodeDescription() = 0;
86 83
87 // create a blank instance of a net node 84 // create a blank instance of a net node
88 virtual ANetNodeInstance * createInstance( void ) = 0; 85 virtual ANetNodeInstance * createInstance( void ) = 0;
89 86
90 // return feature this NetNode provides 87 // return feature this NetNode provides
91 virtual const char * provides( void ) = 0; 88 virtual const char * provides( void ) = 0;
92 virtual const char ** needs( void ) = 0; 89 virtual const char ** needs( void ) = 0;
93 90
94 // generate files specific for this node (if any) 91 // generate files specific for this node (if any)
95 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ) = 0; 92 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ) = 0;
96 // 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
97 // with name S 94 // with name S
98 virtual bool hasDataFor( const QString & S ) = 0; 95 virtual bool hasDataFor( const QString & S ) = 0;
99 // generate data specific for the device for the system file S 96 // generate data specific for the device for the system file S
100 // called only IF data was needed 97 // called only IF data was needed
101 virtual bool generateDeviceDataForCommonFile( 98 virtual bool generateDeviceDataForCommonFile(
102 SystemFile & SF, long DevNr ) = 0; 99 SystemFile & SF, long DevNr ) = 0;
103 100
104 // does this Node provide a Connection 101 // does this Node provide a Connection
105 bool isToplevel( void ) 102 bool isToplevel( void )
106 { return strcmp( provides(), "fullsetup") == 0 ; } 103 { return strcmp( provides(), "fullsetup") == 0 ; }
107 104
108 // generate NIC name based on instance nr 105 // generate NIC name based on instance nr
109 // only relevant if node instances are devices 106 // only relevant if node instances are devices
110 virtual QString genNic( long ) 107 virtual QString genNic( long )
111 { return QString(""); } 108 { return QString(""); }
112 109
113 // max number of instances for this node type 110 // max number of instances for this node type
114 // only relevant if node instances are devices 111 // only relevant if node instances are devices
115 virtual long instanceCount( void ) 112 virtual long instanceCount( void )
@@ -155,136 +152,132 @@ public:
155 virtual QWidget * edit( QWidget * parent ) = 0; 152 virtual QWidget * edit( QWidget * parent ) = 0;
156 // is given data acceptable 153 // is given data acceptable
157 virtual QString acceptable( void ) = 0; 154 virtual QString acceptable( void ) = 0;
158 155
159 // return data was modified 156 // return data was modified
160 void setModified( bool M ) 157 void setModified( bool M )
161 { IsModified = M; } 158 { IsModified = M; }
162 bool isModified( void ) 159 bool isModified( void )
163 { return IsModified; } 160 { return IsModified; }
164 161
165 // get data from GUI and store in node 162 // get data from GUI and store in node
166 virtual void commit( void ) = 0; 163 virtual void commit( void ) = 0;
167 164
168 // get next node 165 // get next node
169 ANetNodeInstance * nextNode(); 166 ANetNodeInstance * nextNode();
170 // return NetNode this is an instance of 167 // return NetNode this is an instance of
171 ANetNode * nodeClass( void ) 168 ANetNode * nodeClass( void )
172 { return NodeType; } 169 { return NodeType; }
173 170
174 // intialize am instance of a net node 171 // intialize am instance of a net node
175 void initialize( void ); 172 void initialize( void );
176 173
177 // set the value of an attribute 174 // set the value of an attribute
178 void setAttribute( QString & Attr, QString & Value ) ; 175 void setAttribute( QString & Attr, QString & Value ) ;
179 void saveAttributes( QTextStream & TS ) ; 176 void saveAttributes( QTextStream & TS ) ;
180 177
181 // return true if node isntance is NEW and not loaded 178 // return true if node isntance is NEW and not loaded
182 void setNew( bool IsN ) 179 void setNew( bool IsN )
183 { IsNew = IsN; } 180 { IsNew = IsN; }
184 bool isNew( void ) 181 bool isNew( void )
185 { return IsNew; } 182 { return IsNew; }
186 183
187 // return logical name of this instance
188 QString & nodeName( void )
189 { return NodeName; }
190 void setNodeName( const QString & S )
191 { NodeName = S; }
192 // return description for this instance 184 // return description for this instance
193 QString & description( void ) 185 QString & description( void )
194 { return Description; } 186 { return Description; }
195 void setDescription( const QString & S ) 187 void setDescription( const QString & S )
196 { Description = S; } 188 { Description = S; }
197 189
198 // pixmap for this instance -> from NetNode 190 // pixmap for this instance -> from NetNode
199 const QString pixmapName( void ) 191 const QString pixmapName( void )
200 { return NodeType->pixmapName(); } 192 { return NodeType->pixmapName(); }
201 193
202 const char * provides( void ) 194 const char * provides( void )
203 { return NodeType->provides(); } 195 { return NodeType->provides(); }
204 196
205 const char ** needs( void ) 197 const char ** needs( void )
206 { return NodeType->needs(); } 198 { return NodeType->needs(); }
207 199
208 // returns node specific data -> only useful for 'buddy' 200 // returns node specific data -> only useful for 'buddy'
209 virtual void * data( void ) = 0; 201 virtual void * data( void ) = 0;
210 202
211 // 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
212 // with name S 204 // with name S
213 virtual bool hasDataFor( const QString & S ) = 0; 205 virtual bool hasDataFor( const QString & S ) = 0;
214 206
215 // 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
216 // called only IF data was needed 208 // called only IF data was needed
217 virtual bool generateDataForCommonFile( 209 virtual bool generateDataForCommonFile(
218 SystemFile & SF, long DevNr ) = 0; 210 SystemFile & SF, long DevNr ) = 0;
219 211
220protected : 212protected :
221 213
222 virtual void setSpecificAttribute( QString & , QString & ) = 0; 214 virtual void setSpecificAttribute( QString & , QString & ) = 0;
223 virtual void saveSpecificAttribute( QTextStream & ) = 0; 215 virtual void saveSpecificAttribute( QTextStream & ) = 0;
224 216
225 ANetNode * NodeType; 217 ANetNode * NodeType;
226 // connection to which this node belongs to 218 // connection to which this node belongs to
227 NodeCollection * Connection; 219 NodeCollection * Connection;
228 QString NodeName;
229 QString Description; 220 QString Description;
230 bool IsModified; 221 bool IsModified;
231 bool IsNew; 222 bool IsNew;
232 223
233 static long InstanceCounter; 224 static long InstanceCounter;
234}; 225};
235 226
236class RuntimeInfo : public QObject { 227class RuntimeInfo : public QObject {
237 228
238 Q_OBJECT 229 Q_OBJECT
239 230
240public : 231public :
241 232
242 RuntimeInfo( ANetNodeInstance * TheNNI ) 233 RuntimeInfo( ANetNodeInstance * TheNNI )
243 { NNI = TheNNI; } 234 { NNI = TheNNI; }
244 235
245 // downcast implemented by specify runtime classes 236 // downcast implemented by specify runtime classes
246 virtual AsDevice * asDevice( void ) 237 virtual AsDevice * asDevice( void )
247 { return 0; } 238 { return 0; }
248 virtual AsConnection * asConnection( void ) 239 virtual AsConnection * asConnection( void )
249 { return 0; } 240 { return 0; }
250 virtual AsLine * asLine( void ) 241 virtual AsLine * asLine( void )
251 { return 0; } 242 { return 0; }
252 virtual AsFullSetup * asFullSetup( void ) 243 virtual AsFullSetup * asFullSetup( void )
253 { return 0; } 244 { return 0; }
254 245
255 // does this node handles this interface e.g.eth0 246 // does this node handles this interface e.g.eth0
256 // recurse deeper if this node cannot answer that question 247 // recurse deeper if this node cannot answer that question
257 virtual bool handlesInterface( const QString & ) 248 virtual bool handlesInterface( const QString & )
258 { return 0; } 249 { return 0; }
250 virtual bool handlesInterface( const InterfaceInfo & )
251 { return 0; }
259 virtual InterfaceInfo * assignedInterface( void ); 252 virtual InterfaceInfo * assignedInterface( void );
260 virtual AsDevice * device( void ); 253 virtual AsDevice * device( void );
261 254
262 ANetNodeInstance * netNode() 255 ANetNodeInstance * netNode()
263 { return NNI; } 256 { return NNI; }
264 NodeCollection * connection() 257 NodeCollection * connection()
265 { return NNI->connection(); } 258 { return NNI->connection(); }
266 259
267 virtual void detectState( NodeCollection * NC ) = 0; 260 virtual void detectState( NodeCollection * NC ) = 0;
268 virtual bool setState( NodeCollection * NC, Action_t A ) = 0; 261 virtual bool setState( NodeCollection * NC, Action_t A ) = 0;
269 virtual bool canSetState( State_t Curr, Action_t A ) = 0; 262 virtual bool canSetState( State_t Curr, Action_t A ) = 0;
270 263
271signals : 264signals :
272 265
273 // sent by device if state changes 266 // sent by device if state changes
274 void stateChanged( State_t S, ANetNodeInstance * NNI ); 267 void stateChanged( State_t S, ANetNodeInstance * NNI );
275 268
276protected : 269protected :
277 270
278 // connection this runtime info belongs to 271 // connection this runtime info belongs to
279 ANetNodeInstance * NNI; 272 ANetNodeInstance * NNI;
280}; 273};
281 274
282class NodeCollection : public QList<ANetNodeInstance> { 275class NodeCollection : public QList<ANetNodeInstance> {
283 276
284public : 277public :
285 278
286 NodeCollection( void ); 279 NodeCollection( void );
287 NodeCollection( QTextStream & TS ); 280 NodeCollection( QTextStream & TS );
288 ~NodeCollection( void ); 281 ~NodeCollection( void );
289 282
290 int number( void ) 283 int number( void )
diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp
index e6ce2b7..4b7a62f 100644
--- a/noncore/settings/networksettings2/networksettings2/resources.cpp
+++ b/noncore/settings/networksettings2/networksettings2/resources.cpp
@@ -138,113 +138,113 @@ bool TheNSResources::loadNetNode(
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 AllNodeTypes.insert( NN->NetNode->nodeName(), NN ); 170 printf( "Store %s\n", NN->NetNode->name() );
171 AllNodeTypes.insert( NN->NetNode->name(), NN );
171 } 172 }
172 173
173 return 1; 174 return 1;
174} 175}
175 176
176QPixmap TheNSResources::getPixmap( const QString & QS ) { 177QPixmap TheNSResources::getPixmap( const QString & QS ) {
177 QString S("networksettings2/"); 178 QString S("networksettings2/");
178 S += QS; 179 S += QS;
179 printf( " pixmap %s\n", S.latin1() );
180 return Resource::loadPixmap( QString("networksettings2/")+QS ); 180 return Resource::loadPixmap( QString("networksettings2/")+QS );
181} 181}
182 182
183QString TheNSResources::tr( const char * s ) { 183QString TheNSResources::tr( const char * s ) {
184 return qApp->translate( "resource", s ); 184 return qApp->translate( "resource", s );
185} 185}
186 186
187const QString & TheNSResources::netNode2Name( const char * s ) { 187const QString & TheNSResources::netNode2Name( const char * s ) {
188 return NodeTypeNameMap[s]; 188 return NodeTypeNameMap[s];
189} 189}
190 190
191const QString & TheNSResources::netNode2Description( const char * s ) { 191const QString & TheNSResources::netNode2Description( const char * s ) {
192 return NodeTypeDescriptionMap[s]; 192 return NodeTypeDescriptionMap[s];
193} 193}
194 194
195void TheNSResources::addConnection( NodeCollection * NC ) { 195void TheNSResources::addConnection( NodeCollection * NC ) {
196 ANetNodeInstance * NNI; 196 ANetNodeInstance * NNI;
197 ConnectionsMap.insert( NC->name(), NC ); 197 ConnectionsMap.insert( NC->name(), NC );
198 // add (new) nodes to NodeList 198 // add (new) nodes to NodeList
199 for( QListIterator<ANetNodeInstance> it(*NC); 199 for( QListIterator<ANetNodeInstance> it(*NC);
200 it.current(); 200 it.current();
201 ++it ) { 201 ++it ) {
202 NNI = it.current(); 202 NNI = it.current();
203 if( findNodeInstance( NNI->nodeName() ) == 0 ) { 203 if( findNodeInstance( NNI->name() ) == 0 ) {
204 // new item 204 // new item
205 addNodeInstance( NNI ); 205 addNodeInstance( NNI );
206 } 206 }
207 } 207 }
208} 208}
209 209
210void TheNSResources::removeConnection( const QString & N ) { 210void TheNSResources::removeConnection( const QString & N ) {
211 NodeCollection * NC = findConnection( N ); 211 NodeCollection * NC = findConnection( N );
212 if( ! NC ) 212 if( ! NC )
213 return; 213 return;
214 214
215 // delete netnodes in this connection 215 // delete netnodes in this connection
216 ANetNodeInstance * NNI; 216 ANetNodeInstance * NNI;
217 for( NNI = NC->first(); NNI != 0; NNI = NC->next() ) { 217 for( NNI = NC->first(); NNI != 0; NNI = NC->next() ) {
218 removeNodeInstance( NNI->nodeName() ); 218 removeNodeInstance( NNI->name() );
219 } 219 }
220 ConnectionsMap.remove( N ); 220 ConnectionsMap.remove( N );
221} 221}
222 222
223NodeCollection * TheNSResources::findConnection( const QString & S ) { 223NodeCollection * TheNSResources::findConnection( const QString & S ) {
224 return ConnectionsMap[ S ]; 224 return ConnectionsMap[ S ];
225} 225}
226 226
227void TheNSResources::renumberConnections( void ) { 227void TheNSResources::renumberConnections( void ) {
228 Name2Connection_t & M = NSResources->connections(); 228 Name2Connection_t & M = NSResources->connections();
229 NodeCollection * NC; 229 NodeCollection * NC;
230 230
231 // for all connections 231 // for all connections
232 NodeCollection::resetMaxNr(); 232 NodeCollection::resetMaxNr();
233 for( QDictIterator<NodeCollection> it(M); 233 for( QDictIterator<NodeCollection> it(M);
234 it.current(); 234 it.current();
235 ++it ) { 235 ++it ) {
236 NC = it.current(); 236 NC = it.current();
237 NC->setNumber( NC->maxConnectionNumber()+1 ); 237 NC->setNumber( NC->maxConnectionNumber()+1 );
238 NC->setModified( 1 ); 238 NC->setModified( 1 );
239 } 239 }
240} 240}
241 241
242typedef struct EnvVars { 242typedef struct EnvVars {
243 char * Name; 243 char * Name;
244 int Len; 244 int Len;
245} EnvVar_t; 245} EnvVar_t;
246 246
247#define AnEV(x) x, sizeof(x)-1 247#define AnEV(x) x, sizeof(x)-1
248 248
249static EnvVar_t EV[] = { 249static EnvVar_t EV[] = {
250 // AnEV( "HOME=" ), -> SPECIAL 250 // AnEV( "HOME=" ), -> SPECIAL
diff --git a/noncore/settings/networksettings2/networksettings2/resources.h b/noncore/settings/networksettings2/networksettings2/resources.h
index 7050f10..3d6a44f 100644
--- a/noncore/settings/networksettings2/networksettings2/resources.h
+++ b/noncore/settings/networksettings2/networksettings2/resources.h
@@ -50,65 +50,65 @@ public :
50 { return *TheSystem; } 50 { return *TheSystem; }
51 51
52 QPixmap getPixmap( const QString & Name ); 52 QPixmap getPixmap( const QString & Name );
53 53
54 Name2NetNode_t & netNodes( void ) 54 Name2NetNode_t & netNodes( void )
55 { return AllNodeTypes; } 55 { return AllNodeTypes; }
56 bool netNodeExists( const QString & X ) 56 bool netNodeExists( const QString & X )
57 { return AllNodeTypes.find(X)!=0; } 57 { return AllNodeTypes.find(X)!=0; }
58 ANetNode * findNetNode( const QString & N ) 58 ANetNode * findNetNode( const QString & N )
59 { NetNode_t * NNT = AllNodeTypes.find(N); 59 { NetNode_t * NNT = AllNodeTypes.find(N);
60 return (NNT) ? NNT->NetNode : 0; 60 return (NNT) ? NNT->NetNode : 0;
61 } 61 }
62 62
63 Name2SystemFile_t & systemFiles( void ) 63 Name2SystemFile_t & systemFiles( void )
64 { return SystemFiles; } 64 { return SystemFiles; }
65 void addSystemFile( SystemFile * SF ) 65 void addSystemFile( SystemFile * SF )
66 { SystemFiles.insert( SF->name(), SF ); } 66 { SystemFiles.insert( SF->name(), SF ); }
67 67
68 ANetNodeInstance * createNodeInstance( const QString & S ) 68 ANetNodeInstance * createNodeInstance( const QString & S )
69 { ANetNodeInstance * NNI = 0; 69 { ANetNodeInstance * NNI = 0;
70 NetNode_t * NNT = AllNodeTypes[S]; 70 NetNode_t * NNT = AllNodeTypes[S];
71 if( ! NNT ) { 71 if( ! NNT ) {
72 return 0; 72 return 0;
73 } 73 }
74 NNI = NNT->NetNode->createInstance(); 74 NNI = NNT->NetNode->createInstance();
75 NNI->initialize(); 75 NNI->initialize();
76 return NNI; 76 return NNI;
77 } 77 }
78 78
79 Name2Instance_t & netNodeInstances( void ) 79 Name2Instance_t & netNodeInstances( void )
80 { return AllNodes; } 80 { return AllNodes; }
81 void addNodeInstance( ANetNodeInstance * I ) 81 void addNodeInstance( ANetNodeInstance * I )
82 { AllNodes.insert( I->nodeName(), I ); } 82 { AllNodes.insert( I->name(), I ); }
83 void removeNodeInstance( const QString & N ) 83 void removeNodeInstance( const QString & N )
84 { AllNodes.remove( N );} 84 { AllNodes.remove( N );}
85 ANetNodeInstance * findNodeInstance( const QString & S ) 85 ANetNodeInstance * findNodeInstance( const QString & S )
86 { return (AllNodes.find(S)!=0) ? AllNodes[S] : 0; } 86 { return (AllNodes.find(S)!=0) ? AllNodes[S] : 0; }
87 87
88 const QString & netNode2Name( const char * Type ); 88 const QString & netNode2Name( const char * Type );
89 const QString & netNode2Description( const char * Type ); 89 const QString & netNode2Description( const char * Type );
90 90
91 void renumberConnections( void ); 91 void renumberConnections( void );
92 void addConnection( NodeCollection * NC ); 92 void addConnection( NodeCollection * NC );
93 void removeConnection( const QString & N ); 93 void removeConnection( const QString & N );
94 NodeCollection * findConnection( const QString & N ); 94 NodeCollection * findConnection( const QString & N );
95 Name2Connection_t & connections( void ) 95 Name2Connection_t & connections( void )
96 { return ConnectionsMap; } 96 { return ConnectionsMap; }
97 97
98 CurrentQPEUser & currentUser( void ) 98 CurrentQPEUser & currentUser( void )
99 { return CurrentUser; } 99 { return CurrentUser; }
100 100
101private : 101private :
102 102
103 void detectCurrentUser( void ); 103 void detectCurrentUser( void );
104 QString tr( const char * path ); 104 QString tr( const char * path );
105 void findAvailableNetNodes( const QString &path ); 105 void findAvailableNetNodes( const QString &path );
106 bool loadNetNode( 106 bool loadNetNode(
107 const QString &pluginFileName, 107 const QString &pluginFileName,
108 const QString &resolveString = "create_plugin"); 108 const QString &resolveString = "create_plugin");
109 109
110 QMap< QString, QString> NodeTypeNameMap; 110 QMap< QString, QString> NodeTypeNameMap;
111 QMap< QString, QString> NodeTypeDescriptionMap; 111 QMap< QString, QString> NodeTypeDescriptionMap;
112 Name2Connection_t ConnectionsMap; 112 Name2Connection_t ConnectionsMap;
113 System * TheSystem; 113 System * TheSystem;
114 Name2SystemFile_t SystemFiles; 114 Name2SystemFile_t SystemFiles;
diff --git a/noncore/settings/networksettings2/networksettings2/systemfile.cpp b/noncore/settings/networksettings2/networksettings2/systemfile.cpp
index 62bb6af..b3fc1a5 100644
--- a/noncore/settings/networksettings2/networksettings2/systemfile.cpp
+++ b/noncore/settings/networksettings2/networksettings2/systemfile.cpp
@@ -95,91 +95,91 @@ bool SystemFile::close( void ) {
95bool SystemFile::preSection( void ) { 95bool SystemFile::preSection( void ) {
96 if( hasPreSection ) { 96 if( hasPreSection ) {
97 QFile Fl( TemplDir + Name + "/presection" ); 97 QFile Fl( TemplDir + Name + "/presection" );
98 if( ! Fl.open( IO_ReadOnly ) ) 98 if( ! Fl.open( IO_ReadOnly ) )
99 return 1; // error 99 return 1; // error
100 // copy file to this file 100 // copy file to this file
101 F->writeBlock( Fl.readAll() ); 101 F->writeBlock( Fl.readAll() );
102 } 102 }
103 return 0; 103 return 0;
104} 104}
105 105
106bool SystemFile::postSection( void ) { 106bool SystemFile::postSection( void ) {
107 if( hasPostSection ) { 107 if( hasPostSection ) {
108 QFile Fl( TemplDir + Name + "/postsection" ); 108 QFile Fl( TemplDir + Name + "/postsection" );
109 if( ! Fl.open( IO_ReadOnly ) ) 109 if( ! Fl.open( IO_ReadOnly ) )
110 return 1; // error 110 return 1; // error
111 // copy file to this file 111 // copy file to this file
112 F->writeBlock( Fl.readAll() ); 112 F->writeBlock( Fl.readAll() );
113 } 113 }
114 return 0; 114 return 0;
115} 115}
116 116
117bool SystemFile::preNodeSection( ANetNodeInstance * NNI, long ) { 117bool SystemFile::preNodeSection( ANetNodeInstance * NNI, long ) {
118 if( hasPreNodeSection ) { 118 if( hasPreNodeSection ) {
119 QFile Fl( TemplDir + Name + "/prenodesection" ); 119 QFile Fl( TemplDir + Name + "/prenodesection" );
120 if( ! Fl.open( IO_ReadOnly ) ) 120 if( ! Fl.open( IO_ReadOnly ) )
121 return 1; // error 121 return 1; // error
122 QTextStream TX( &Fl ); 122 QTextStream TX( &Fl );
123 QString Out; 123 QString Out;
124 QString S = TX.readLine(); 124 QString S = TX.readLine();
125 while( ! TX.eof() ) { 125 while( ! TX.eof() ) {
126 Out = S. 126 Out = S.
127 arg(NNI->nodeClass()->nodeName()); 127 arg(NNI->nodeClass()->name());
128 (*this) << Out << endl; 128 (*this) << Out << endl;
129 S = TX.readLine(); 129 S = TX.readLine();
130 } 130 }
131 } 131 }
132 return 0; 132 return 0;
133} 133}
134 134
135bool SystemFile::postNodeSection( ANetNodeInstance * NNI, long ) { 135bool SystemFile::postNodeSection( ANetNodeInstance * NNI, long ) {
136 if( hasPostNodeSection ) { 136 if( hasPostNodeSection ) {
137 QFile Fl( TemplDir + Name + "/postnodesection" ); 137 QFile Fl( TemplDir + Name + "/postnodesection" );
138 if( ! Fl.open( IO_ReadOnly ) ) 138 if( ! Fl.open( IO_ReadOnly ) )
139 return 1; // error 139 return 1; // error
140 QTextStream TX( &Fl ); 140 QTextStream TX( &Fl );
141 QString Out; 141 QString Out;
142 QString S = TX.readLine(); 142 QString S = TX.readLine();
143 while( ! TX.eof() ) { 143 while( ! TX.eof() ) {
144 Out = S. 144 Out = S.
145 arg(NNI->nodeName()); 145 arg(NNI->name());
146 (*this) << Out << endl; 146 (*this) << Out << endl;
147 S = TX.readLine(); 147 S = TX.readLine();
148 } 148 }
149 } 149 }
150 return 0; 150 return 0;
151} 151}
152 152
153bool SystemFile::preDeviceSection( ANetNode * NN ) { 153bool SystemFile::preDeviceSection( ANetNode * NN ) {
154 if( hasPreDeviceSection ) { 154 if( hasPreDeviceSection ) {
155 QFile Fl( TemplDir + Name + "/predevicesection" ); 155 QFile Fl( TemplDir + Name + "/predevicesection" );
156 if( ! Fl.open( IO_ReadOnly ) ) 156 if( ! Fl.open( IO_ReadOnly ) )
157 return 1; // error 157 return 1; // error
158 QTextStream TX( &Fl ); 158 QTextStream TX( &Fl );
159 QString Out; 159 QString Out;
160 QString S = TX.readLine(); 160 QString S = TX.readLine();
161 while( ! TX.eof() ) { 161 while( ! TX.eof() ) {
162 Out = S.arg(NN->nodeName()); 162 Out = S.arg(NN->name());
163 (*this) << Out << endl; 163 (*this) << Out << endl;
164 S = TX.readLine(); 164 S = TX.readLine();
165 } 165 }
166 } 166 }
167 return 0; 167 return 0;
168} 168}
169 169
170bool SystemFile::postDeviceSection( ANetNode * NN ) { 170bool SystemFile::postDeviceSection( ANetNode * NN ) {
171 if( hasPostDeviceSection ) { 171 if( hasPostDeviceSection ) {
172 QFile Fl( TemplDir + Name + "/postdevicesection" ); 172 QFile Fl( TemplDir + Name + "/postdevicesection" );
173 if( ! Fl.open( IO_ReadOnly ) ) 173 if( ! Fl.open( IO_ReadOnly ) )
174 return 1; // error 174 return 1; // error
175 QTextStream TX( &Fl ); 175 QTextStream TX( &Fl );
176 QString Out; 176 QString Out;
177 QString S = TX.readLine(); 177 QString S = TX.readLine();
178 while( ! TX.eof() ) { 178 while( ! TX.eof() ) {
179 Out = S.arg(NN->nodeName()); 179 Out = S.arg(NN->name());
180 (*this) << Out << endl; 180 (*this) << Out << endl;
181 S = TX.readLine(); 181 S = TX.readLine();
182 } 182 }
183 } 183 }
184 return 0; 184 return 0;
185} 185}
diff --git a/noncore/settings/networksettings2/nsdata.cpp b/noncore/settings/networksettings2/nsdata.cpp
index 13979ce..64b83f7 100644
--- a/noncore/settings/networksettings2/nsdata.cpp
+++ b/noncore/settings/networksettings2/nsdata.cpp
@@ -1,221 +1,232 @@
1#include <stdlib.h> 1#include <stdlib.h>
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <qtextstream.h> 3#include <qtextstream.h>
4#include <qdir.h> 4#include <qdir.h>
5#include <qfile.h> 5#include <qfile.h>
6#include <qfileinfo.h> 6#include <qfileinfo.h>
7 7
8#include "nsdata.h" 8#include "nsdata.h"
9#include <asdevice.h> 9#include <asdevice.h>
10#include <resources.h> 10#include <resources.h>
11 11
12static QString CfgFile; 12static QString CfgFile;
13 13
14NetworkSettingsData::NetworkSettingsData( void ) { 14NetworkSettingsData::NetworkSettingsData( void ) {
15 // init global resources structure 15 // init global resources structure
16 new TheNSResources(); 16 new TheNSResources();
17 17
18 CfgFile.sprintf( "%s/NETCONFIG", 18 CfgFile.sprintf( "%s/Settings/NS2.conf",
19 NSResources->currentUser().HomeDir.latin1() ); 19 NSResources->currentUser().HomeDir.latin1() );
20 fprintf( stderr, "Cfg from %s\n", CfgFile.latin1() ); 20 fprintf( stderr, "Cfg from %s\n", CfgFile.latin1() );
21 21
22 // load settings 22 // load settings
23 Force = 0; 23 Force = 0;
24 IsModified = 0; 24 IsModified = 0;
25 loadSettings(); 25 loadSettings();
26} 26}
27 27
28// saving is done by caller 28// saving is done by caller
29NetworkSettingsData::~NetworkSettingsData( void ) { 29NetworkSettingsData::~NetworkSettingsData( void ) {
30 delete NSResources; 30 delete NSResources;
31} 31}
32 32
33void NetworkSettingsData::loadSettings( void ) { 33void NetworkSettingsData::loadSettings( void ) {
34 QString Line, S; 34 QString Line, S;
35 QString Attr, Value; 35 QString Attr, Value;
36 long idx; 36 long idx;
37 37
38 QFile F( CfgFile ); 38 QFile F( CfgFile );
39 QTextStream TS( &F ); 39 QTextStream TS( &F );
40 40
41 do { 41 do {
42 42
43 if( ! F.open(IO_ReadOnly) ) 43 if( ! F.open(IO_ReadOnly) )
44 break; 44 break;
45 45
46 /* load the file -> 46 /* load the file ->
47 47
48 FORMAT : 48 FORMAT :
49 49
50 [NETNODETYPE] 50 [NETNODETYPE]
51 Entries ... 51 Entries ...
52 <EMPTYLINE> 52 <EMPTYLINE>
53 [connection] 53 [connection]
54 Name=Name 54 Name=Name
55 Node=Name 55 Node=Name
56 <EMPTYLINE> 56 <EMPTYLINE>
57 */ 57 */
58 while( ! TS.atEnd() ) { 58 while( ! TS.atEnd() ) {
59 S = Line = TS.readLine(); 59 S = Line = TS.readLine();
60 60
61 if ( S.isEmpty() || S[0] != '[' ) 61 if ( S.isEmpty() || S[0] != '[' )
62 continue; 62 continue;
63 63
64 S = S.mid( 1, S.length()-2 ); 64 S = S.mid( 1, S.length()-2 );
65 65
66 if( ! NSResources ) { 66 if( ! NSResources ) {
67 continue; 67 continue;
68 } 68 }
69 69
70 if( S == "connection" ) { 70 if( S == "connection" ) {
71 // load connections -> collections of nodes 71 // load connections -> collections of nodes
72 NodeCollection * NC = new NodeCollection( TS ); 72 NodeCollection * NC = new NodeCollection( TS );
73 NSResources->addConnection( NC ); 73 NSResources->addConnection( NC );
74 } else { 74 } else {
75 ANetNode * NN = 0; 75 ANetNode * NN = 0;
76 ANetNodeInstance* NNI = 0; 76 ANetNodeInstance* NNI = 0;
77 if( S.startsWith( "nodetype " ) ) { 77 if( S.startsWith( "nodetype " ) ) {
78 S = S.mid( 9, S.length()-9-1 ); 78 S = S.mid( 9, S.length()-9 );
79 fprintf( stderr, "Node %s\n", S.latin1() ); 79 S = deQuote(S);
80 // try to find netnode 80 // try to find netnode
81 NN = NSResources->findNetNode( S ); 81 NN = NSResources->findNetNode( S );
82 fprintf( stderr, "Node %s : %p\n", S.latin1(), NN );
82 } else { 83 } else {
83 // try to find instance 84 // try to find instance
84 NNI = NSResources->createNodeInstance( S ); 85 NNI = NSResources->createNodeInstance( S );
86 fprintf( stderr, "NodeInstance %s : %p\n", S.latin1(), NNI );
87 }
88
89 if( NN == 0 && NNI == 0 ) {
90 LeftOvers.append( Line );
85 } 91 }
86 92
87 do { 93 do {
88 S = TS.readLine(); 94 S = Line = TS.readLine();
89 95
90 if( NN || NNI ) { 96 if( NN || NNI ) {
91 if( S.isEmpty() ) { 97 if( S.isEmpty() ) {
92 // empty line 98 // empty line
93 break; 99 break;
94 } 100 }
95 idx = S.find( '=' ); 101 idx = S.find( '=' );
96 if( idx > 0 ) { 102 if( idx > 0 ) {
97 Attr = S.left( idx ); 103 Attr = S.left( idx );
98 Value = S.mid( idx+1, S.length() ); 104 Value = S.mid( idx+1, S.length() );
99 } else { 105 } else {
100 Value=""; 106 Value="";
101 Attr = S; 107 Attr = S;
102 } 108 }
103 109
104 Value.stripWhiteSpace(); 110 Value.stripWhiteSpace();
105 Attr.stripWhiteSpace(); 111 Attr.stripWhiteSpace();
106 Attr.lower(); 112 Attr.lower();
107 // dequote Attr 113 // dequote Attr
108 Value = deQuote(Value); 114 Value = deQuote(Value);
109 115
110 if( NN ) { 116 if( NN ) {
111 // set the attribute 117 // set the attribute
112 NNI->setAttribute( Attr, Value ); 118 NN->setAttribute( Attr, Value );
113 } else { 119 } else {
114 // set the attribute 120 // set the attribute
115 NNI->setAttribute( Attr, Value ); 121 NNI->setAttribute( Attr, Value );
116 } 122 }
117 } else { 123 } else {
118 LeftOvers.append( Line ); 124 LeftOvers.append( Line );
119 // add empty line too as delimiter 125 // add empty line too as delimiter
120 if( S.isEmpty() ) { 126 if( S.isEmpty() ) {
121 // empty line 127 // empty line
122 break; 128 break;
123 } 129 }
124 } 130 }
125 } while( 1 ); 131 } while( 1 );
132
126 if( NNI ) { 133 if( NNI ) {
127 // loading from file -> exists 134 // loading from file -> exists
128 NNI->setNew( FALSE ); 135 NNI->setNew( FALSE );
129 NSResources->addNodeInstance( NNI ); 136 NSResources->addNodeInstance( NNI );
130 } 137 }
131 } 138 }
132 } 139 }
133 140
134 } while( 0 ); 141 } while( 0 );
135 142
136} 143}
137 144
138QString NetworkSettingsData::saveSettings( void ) { 145QString NetworkSettingsData::saveSettings( void ) {
139 QString ErrS = ""; 146 QString ErrS = "";
140 147
141 if( ! isModified() ) 148 if( ! isModified() )
142 return ErrS; 149 return ErrS;
143 150
144 QString S; 151 QString S;
145 QFile F( CfgFile + ".bup" ); 152 QFile F( CfgFile + ".bup" );
146 153
147 printf( "Saving settings to %s\n", CfgFile.latin1() ); 154 printf( "Saving settings to %s\n", CfgFile.latin1() );
148 if( ! F.open( IO_WriteOnly | IO_Truncate ) ) { 155 if( ! F.open( IO_WriteOnly | IO_Truncate ) ) {
149 ErrS = qApp->translate( "NetworkSettings", 156 ErrS = qApp->translate( "NetworkSettings",
150 "<p>Could not save setup to \"%1\" !</p>" ). 157 "<p>Could not save setup to \"%1\" !</p>" ).
151 arg(CfgFile); 158 arg(CfgFile);
152 // problem 159 // problem
153 return ErrS; 160 return ErrS;
154 } 161 }
155 162
156 QTextStream TS( &F ); 163 QTextStream TS( &F );
157 164
158 // save leftovers 165 // save leftovers
159 for ( QStringList::Iterator it = LeftOvers.begin(); 166 for ( QStringList::Iterator it = LeftOvers.begin();
160 it != LeftOvers.end(); ++it ) { 167 it != LeftOvers.end(); ++it ) {
161 TS << (*it) << endl; 168 TS << (*it) << endl;
162 } 169 }
163 170
164 // save global configs 171 // save global configs
165 for( QDictIterator<NetNode_t> it( NSResources->netNodes() ); 172 for( QDictIterator<NetNode_t> it( NSResources->netNodes() );
166 it.current(); 173 it.current();
167 ++it ) { 174 ++it ) {
168 TS << "[nodetype " 175 TS << "[nodetype "
169 << it.current()->NetNode->name() 176 << quote( QString( it.current()->NetNode->name() ) )
170 << "]" 177 << "]"
171 << endl; 178 << endl;
172 179
173 it.current()->NetNode->saveAttributes( TS ); 180 it.current()->NetNode->saveAttributes( TS );
181 TS << endl;
174 } 182 }
175 183
176 { Name2Connection_t & M = NSResources->connections(); 184 { Name2Connection_t & M = NSResources->connections();
177 ANetNodeInstance * NNI; 185 ANetNodeInstance * NNI;
178 186
179 // for all connections 187 // for all connections
180 for( QDictIterator<NodeCollection> it(M); 188 for( QDictIterator<NodeCollection> it(M);
181 it.current(); 189 it.current();
182 ++it ) { 190 ++it ) {
183 // all nodes in those connections 191 // all nodes in those connections
184 for( QListIterator<ANetNodeInstance> nit(*(it.current())); 192 for( QListIterator<ANetNodeInstance> nit(*(it.current()));
185 nit.current(); 193 nit.current();
186 ++nit ) { 194 ++nit ) {
187 // header 195 // header
188 NNI = nit.current(); 196 NNI = nit.current();
189 TS << '[' <<NNI->nodeClass()->nodeName() << ']' << endl; 197 TS << '['
198 << QString(NNI->nodeClass()->name())
199 << ']'
200 << endl;
190 NNI->saveAttributes( TS ); 201 NNI->saveAttributes( TS );
191 TS << endl; 202 TS << endl;
192 } 203 }
193 204
194 TS << "[connection]" << endl; 205 TS << "[connection]" << endl;
195 it.current()->save(TS); 206 it.current()->save(TS);
196 } 207 }
197 } 208 }
198 209
199 QDir D("."); 210 QDir D(".");
200 D.rename( CfgFile + ".bup", CfgFile ); 211 D.rename( CfgFile + ".bup", CfgFile );
201 212
202 // 213 //
203 // proper files AND system files regenerated 214 // proper files AND system files regenerated
204 // 215 //
205 216
206 setModified( 0 ); 217 setModified( 0 );
207 return ErrS; 218 return ErrS;
208} 219}
209 220
210QString NetworkSettingsData::generateSettings( bool ForceReq ) { 221QString NetworkSettingsData::generateSettings( bool ForceReq ) {
211 bool ForceIt; 222 bool ForceIt;
212 QString S = ""; 223 QString S = "";
213 224
214 // include own force flag 225 // include own force flag
215 ForceIt = (Force) ? 1 : ForceReq; 226 ForceIt = (Force) ? 1 : ForceReq;
216 227
217 if( ! ForceIt && ! isModified() ) 228 if( ! ForceIt && ! isModified() )
218 return S; 229 return S;
219 230
220 // regenerate system files 231 // regenerate system files
221 fprintf( stderr, "Generating settings from %s\n", CfgFile.latin1() ); 232 fprintf( stderr, "Generating settings from %s\n", CfgFile.latin1() );
@@ -266,65 +277,65 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
266 break; 277 break;
267 } 278 }
268 if( needToRegenerate ) 279 if( needToRegenerate )
269 break; 280 break;
270 } 281 }
271 } 282 }
272 283
273 // we cannot renumber with a FORCE request since 284 // we cannot renumber with a FORCE request since
274 // we probably are NOT going to save the config 285 // we probably are NOT going to save the config
275 // e.g. when using --regen option 286 // e.g. when using --regen option
276 if( ! ForceReq && needToRegenerate ) { 287 if( ! ForceReq && needToRegenerate ) {
277 NSResources->renumberConnections(); 288 NSResources->renumberConnections();
278 setModified(1); 289 setModified(1);
279 } 290 }
280 291
281 // 292 //
282 // generate files proper to each netnodeinstance 293 // generate files proper to each netnodeinstance
283 // 294 //
284 { Name2Instance_t & NNIs = NSResources->netNodeInstances(); 295 { Name2Instance_t & NNIs = NSResources->netNodeInstances();
285 296
286 for( QDictIterator<ANetNodeInstance> NNIIt(NNIs); 297 for( QDictIterator<ANetNodeInstance> NNIIt(NNIs);
287 NNIIt.current(); 298 NNIIt.current();
288 ++NNIIt 299 ++NNIIt
289 ){ 300 ){
290 // for all nodes find those that are modified 301 // for all nodes find those that are modified
291 NNI = NNIIt.current(); 302 NNI = NNIIt.current();
292 303
293 if( ForceIt || NNI->isModified() ) { 304 if( ForceIt || NNI->isModified() ) {
294 if( ! NNI->nodeClass()->generateProperFilesFor( NNI ) ) { 305 if( ! NNI->nodeClass()->generateProperFilesFor( NNI ) ) {
295 // problem generating 306 // problem generating
296 S = qApp->translate( "NetworkSettings", 307 S = qApp->translate( "NetworkSettings",
297 "<p>Cannot generate files proper to \"%1\"</p>" ). 308 "<p>Cannot generate files proper to \"%1\"</p>" ).
298 arg(NNI->nodeClass()->nodeName()) ; 309 arg(NNI->nodeClass()->name()) ;
299 return S; 310 return S;
300 } 311 }
301 } 312 }
302 } 313 }
303 } 314 }
304 315
305 // 316 //
306 // generate all system files 317 // generate all system files
307 // 318 //
308 for( QDictIterator<SystemFile> sfit(SFM); 319 for( QDictIterator<SystemFile> sfit(SFM);
309 sfit.current(); 320 sfit.current();
310 ++sfit ) { 321 ++sfit ) {
311 SF = sfit.current(); 322 SF = sfit.current();
312 323
313 fprintf( stderr, "Generating %s\n", SF->name().latin1() ); 324 fprintf( stderr, "Generating %s\n", SF->name().latin1() );
314 SF->open(); 325 SF->open();
315 326
316 do { // so we can break; 327 do { // so we can break;
317 328
318 // global presection for this system file 329 // global presection for this system file
319 if( SF->preSection() ) { 330 if( SF->preSection() ) {
320 S = qApp->translate( "NetworkSettings", 331 S = qApp->translate( "NetworkSettings",
321 "<p>Error in preSection for file \"%1\"</p>" ). 332 "<p>Error in preSection for file \"%1\"</p>" ).
322 arg( SF->name() ); 333 arg( SF->name() );
323 return S; 334 return S;
324 } 335 }
325 336
326 // find all netnodes and figure out if 337 // find all netnodes and figure out if
327 // for that node there are instances 338 // for that node there are instances
328 for( QDictIterator<NetNode_t> nnit( 339 for( QDictIterator<NetNode_t> nnit(
329 NSResources->netNodes() ); 340 NSResources->netNodes() );
330 nnit.current(); 341 nnit.current();
@@ -361,70 +372,69 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
361 if( ! S.isEmpty() ) 372 if( ! S.isEmpty() )
362 return S; 373 return S;
363 } 374 }
364 } 375 }
365 376
366 if( SF->postSection() ) { 377 if( SF->postSection() ) {
367 S = qApp->translate( "NetworkSettings", 378 S = qApp->translate( "NetworkSettings",
368 "<p>Error in postSection for file \"%1\"</p>" ). 379 "<p>Error in postSection for file \"%1\"</p>" ).
369 arg( SF->name() ); 380 arg( SF->name() );
370 return S; 381 return S;
371 } 382 }
372 383
373 } while( 0 ); 384 } while( 0 );
374 SF->close(); 385 SF->close();
375 } 386 }
376 } 387 }
377 Force = 0; 388 Force = 0;
378 return S; 389 return S;
379} 390}
380 391
381QList<NodeCollection> NetworkSettingsData::collectPossible( const char * Interface ) { 392QList<NodeCollection> NetworkSettingsData::collectPossible( const char * Interface ) {
382 // collect connections that can work on top of this interface 393 // collect connections that can work on top of this interface
383 NodeCollection * NC; 394 NodeCollection * NC;
384 QList<NodeCollection> PossibleConnections; 395 QList<NodeCollection> PossibleConnections;
385 Name2Connection_t & M = NSResources->connections(); 396 Name2Connection_t & M = NSResources->connections();
386 397
387 // for all connections 398 // for all connections
388 for( QDictIterator<NodeCollection> it(M); 399 for( QDictIterator<NodeCollection> it(M);
389 it.current(); 400 it.current();
390 ++it ) { 401 ++it ) {
391 NC = it.current(); 402 NC = it.current();
392 // check if this profile handles the requested interface 403 // check if this profile handles the requested interface
393 fprintf( stderr, "check %s\n", NC->name().latin1() );
394 if( NC->handlesInterface( Interface ) && // if different Intf. 404 if( NC->handlesInterface( Interface ) && // if different Intf.
395 NC->state() != Disabled && // if not enabled 405 NC->state() != Disabled && // if not enabled
396 NC->state() != IsUp // if already used 406 NC->state() != IsUp // if already used
397 ) { 407 ) {
398 fprintf( stderr, "Append %s\n", NC->name().latin1() ); 408 fprintf( stderr, "Append %s for %s\n", NC->name().latin1(), Interface);
399 PossibleConnections.append( NC ); 409 PossibleConnections.append( NC );
400 } 410 }
401 } 411 }
402 return PossibleConnections; 412 return PossibleConnections;
403} 413}
404 414
405 415
406/* 416/*
407 Called by the system to see if interface can be brought UP 417 Called by the system to see if interface can be brought UP
408 418
409 if allowed, echo Interface-allowed else Interface-disallowed 419 if allowed, echo Interface-allowed else Interface-disallowed
410*/ 420*/
411 421
412bool NetworkSettingsData::canStart( const char * Interface ) { 422bool NetworkSettingsData::canStart( const char * Interface ) {
413 // load situation 423 // load situation
414 NodeCollection * NC = 0; 424 NodeCollection * NC = 0;
415 QList<NodeCollection> PossibleConnections; 425 QList<NodeCollection> PossibleConnections;
416 426
417 PossibleConnections = collectPossible( Interface ); 427 PossibleConnections = collectPossible( Interface );
418 428
419 fprintf( stderr, "Possiblilies %d\n", 429 fprintf( stderr, "Possiblilies %d\n",
420 PossibleConnections.count() ); 430 PossibleConnections.count() );
421 switch( PossibleConnections.count() ) { 431 switch( PossibleConnections.count() ) {
422 case 0 : // no connections 432 case 0 : // no connections
423 break; 433 break;
424 case 1 : // one connection 434 case 1 : // one connection
425 NC = PossibleConnections.first(); 435 NC = PossibleConnections.first();
426 break; 436 break;
427 default : // need to ask user ? 437 default : // need to ask user ?
428 return 1; 438 return 1;
429 } 439 }
430 440
@@ -457,123 +467,116 @@ bool NetworkSettingsData::canStart( const char * Interface ) {
457 return 0; 467 return 0;
458} 468}
459 469
460/* 470/*
461 Called by the system to regenerate config files 471 Called by the system to regenerate config files
462*/ 472*/
463 473
464bool NetworkSettingsData::regenerate( void ) { 474bool NetworkSettingsData::regenerate( void ) {
465 QString S; 475 QString S;
466 // load situation 476 // load situation
467 S = generateSettings( TRUE ); 477 S = generateSettings( TRUE );
468 if( ! S.isEmpty() ) { 478 if( ! S.isEmpty() ) {
469 fprintf( stdout, "%s\n", S.latin1() ); 479 fprintf( stdout, "%s\n", S.latin1() );
470 return 1; 480 return 1;
471 } 481 }
472 return 0; 482 return 0;
473} 483}
474 484
475QString NetworkSettingsData::generateSystemFileNode( 485QString NetworkSettingsData::generateSystemFileNode(
476 SystemFile &SF, 486 SystemFile &SF,
477 AsDevice * CurDev, 487 AsDevice * CurDev,
478 ANetNodeInstance * DevNNI, 488 ANetNodeInstance * DevNNI,
479 long DevInstNr ) { 489 long DevInstNr ) {
480 490
481 QString S=""; 491 QString S="";
482 ANetNode * CurDevNN = DevNNI->nodeClass(); 492 ANetNode * CurDevNN = DevNNI->nodeClass();
483 Name2Connection_t & M = NSResources->connections(); 493 Name2Connection_t & M = NSResources->connections();
484 494
485 if( SF.preDeviceSection( CurDevNN ) ) { 495 if( SF.preDeviceSection( CurDevNN ) ) {
486 S = qApp->translate( "NetworkSettings", 496 S = qApp->translate( "NetworkSettings",
487 "<p>Error in preDeviceSection for file \"%1\" and nodetype \"%2\"</p>" ). 497 "<p>Error in preDeviceSection for file \"%1\" and nodetype \"%2\"</p>" ).
488 arg( SF.name() ). 498 arg( SF.name() ).
489 arg( CurDevNN->nodeName() ); 499 arg( CurDevNN->name() );
490 return S; 500 return S;
491 } 501 }
492 502
493 if( CurDevNN->hasDataFor( SF.name() ) ) { 503 if( CurDevNN->hasDataFor( SF.name() ) ) {
494 if( CurDevNN->generateDeviceDataForCommonFile( SF, DevInstNr ) ) { 504 if( CurDevNN->generateDeviceDataForCommonFile( SF, DevInstNr ) ) {
495 S = qApp->translate( "NetworkSettings", 505 S = qApp->translate( "NetworkSettings",
496 "<p>Error in node Device part for file \"%1\" and node \"%2\"</p>" ). 506 "<p>Error in node Device part for file \"%1\" and node \"%2\"</p>" ).
497 arg( SF.name() ). 507 arg( SF.name() ).
498 arg( CurDevNN->nodeName() ); 508 arg( CurDevNN->name() );
499 return S; 509 return S;
500 } 510 }
501 } 511 }
502 512
503 if( CurDev )
504 fprintf( stderr, "Cur %s\n", CurDevNN->nodeName().latin1() );
505 else
506 fprintf( stderr, "Cur NO\n" );
507
508 // now generate profile specific data for all 513 // now generate profile specific data for all
509 // connections working on a device of the current 514 // connections working on a device of the current
510 // netnode type 515 // netnode type
511 for( QDictIterator<NodeCollection> ncit(M); 516 for( QDictIterator<NodeCollection> ncit(M);
512 ncit.current(); 517 ncit.current();
513 ++ncit ) { 518 ++ncit ) {
514 NodeCollection * NC = ncit.current(); 519 NodeCollection * NC = ncit.current();
515 520
516 // currenly only those connections that work on 521 // currenly only those connections that work on
517 // the current device (or on no device if no current) 522 // the current device (or on no device if no current)
518 AsDevice * Dev = NC->device(); 523 AsDevice * Dev = NC->device();
519 524
520 fprintf( stderr, "%s\n", Dev->netNode()->nodeName().latin1() );
521 if( CurDev ) { 525 if( CurDev ) {
522 if( CurDevNN != Dev->netNode()->nodeClass() ) { 526 if( CurDevNN != Dev->netNode()->nodeClass() ) {
523 // other device type -> later 527 // other device type -> later
524 fprintf( stderr, "Other Dev type\n" );
525 continue; 528 continue;
526 } 529 }
527 } else { 530 } else {
528 if( Dev ) { 531 if( Dev ) {
529 // other 532 // other
530 continue; 533 continue;
531 } 534 }
532 } 535 }
533 536
534 // generate 'entry' 537 // generate 'entry'
535 if( SF.preNodeSection( DevNNI, DevInstNr ) ) { 538 if( SF.preNodeSection( DevNNI, DevInstNr ) ) {
536 S = qApp->translate( "NetworkSettings", 539 S = qApp->translate( "NetworkSettings",
537 "<p>Error in preNodeSection for file \"%1\" and node \"%2\"</p>" ). 540 "<p>Error in preNodeSection for file \"%1\" and node \"%2\"</p>" ).
538 arg( SF.name() ). 541 arg( SF.name() ).
539 arg( CurDevNN->nodeName() ); 542 arg( CurDevNN->name() );
540 return S; 543 return S;
541 } 544 }
542 545
543 // ask all nodes in connection 546 // ask all nodes in connection
544 for( QListIterator<ANetNodeInstance> cncit(*NC); 547 for( QListIterator<ANetNodeInstance> cncit(*NC);
545 cncit.current(); 548 cncit.current();
546 ++cncit ) { 549 ++cncit ) {
547 ANetNodeInstance * NNI = cncit.current(); 550 ANetNodeInstance * NNI = cncit.current();
548 551
549 if( NNI->hasDataFor( SF.name() ) ) { 552 if( NNI->hasDataFor( SF.name() ) ) {
550 if( NNI->generateDataForCommonFile(SF,DevInstNr) ) { 553 if( NNI->generateDataForCommonFile(SF,DevInstNr) ) {
551 S = qApp->translate( "NetworkSettings", 554 S = qApp->translate( "NetworkSettings",
552 "<p>Error in node part for file \"%1\" and node \"%2\"</p>" ). 555 "<p>Error in node part for file \"%1\" and node \"%2\"</p>" ).
553 arg( SF.name() ). 556 arg( SF.name() ).
554 arg( NNI->nodeClass()->nodeName() ); 557 arg( NNI->nodeClass()->name() );
555 return S; 558 return S;
556 } 559 }
557 } 560 }
558 } 561 }
559 562
560 if( SF.postNodeSection( DevNNI, DevInstNr ) ) { 563 if( SF.postNodeSection( DevNNI, DevInstNr ) ) {
561 S = qApp->translate( "NetworkSettings", 564 S = qApp->translate( "NetworkSettings",
562 "<p>Error in postNodeSection for file \"%1\" and node \"%2\"</p>" ). 565 "<p>Error in postNodeSection for file \"%1\" and node \"%2\"</p>" ).
563 arg( SF.name() ). 566 arg( SF.name() ).
564 arg( CurDevNN->nodeName() ); 567 arg( CurDevNN->name() );
565 return S; 568 return S;
566 } 569 }
567 SF << endl; 570 SF << endl;
568 } 571 }
569 572
570 if( SF.postDeviceSection( CurDevNN ) ) { 573 if( SF.postDeviceSection( CurDevNN ) ) {
571 S = qApp->translate( "NetworkSettings", 574 S = qApp->translate( "NetworkSettings",
572 "<p>Error in postDeviceSection for file \"%1\" and node \"%2\"</p>" ). 575 "<p>Error in postDeviceSection for file \"%1\" and node \"%2\"</p>" ).
573 arg( SF.name() ). 576 arg( SF.name() ).
574 arg( CurDevNN->nodeName() ); 577 arg( CurDevNN->name() );
575 return S; 578 return S;
576 } 579 }
577 580
578 return S; 581 return S;
579} 582}
diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.cpp b/noncore/settings/networksettings2/ppp/ppp_NN.cpp
index 0bf415b..208c7c2 100644
--- a/noncore/settings/networksettings2/ppp/ppp_NN.cpp
+++ b/noncore/settings/networksettings2/ppp/ppp_NN.cpp
@@ -1,45 +1,45 @@
1#include "ppp_NN.h" 1#include "ppp_NN.h"
2#include "ppp_NNI.h" 2#include "ppp_NNI.h"
3 3
4static const char * PPPNeeds[] = 4static const char * PPPNeeds[] =
5 { "line", 5 { "line",
6 "modem", 6 "modem",
7 0 7 0
8 }; 8 };
9 9
10/** 10/**
11 * Constructor, find all of the possible interfaces 11 * Constructor, find all of the possible interfaces
12 */ 12 */
13PPPNetNode::PPPNetNode() : ANetNode() { 13PPPNetNode::PPPNetNode() : ANetNode(tr("PPP Connection")) {
14} 14}
15 15
16/** 16/**
17 * Delete any interfaces that we own. 17 * Delete any interfaces that we own.
18 */ 18 */
19PPPNetNode::~PPPNetNode(){ 19PPPNetNode::~PPPNetNode(){
20} 20}
21 21
22const QString PPPNetNode::nodeDescription(){ 22const QString PPPNetNode::nodeDescription(){
23 return tr("\ 23 return tr("\
24<p>Sets up IP using PPP.</p>\ 24<p>Sets up IP using PPP.</p>\
25<p>Use this for dialup devices or serial setups</p>\ 25<p>Use this for dialup devices or serial setups</p>\
26" 26"
27); 27);
28} 28}
29 29
30ANetNodeInstance * PPPNetNode::createInstance( void ) { 30ANetNodeInstance * PPPNetNode::createInstance( void ) {
31 return new APPP( this ); 31 return new APPP( this );
32} 32}
33 33
34const char ** PPPNetNode::needs( void ) { 34const char ** PPPNetNode::needs( void ) {
35 return PPPNeeds; 35 return PPPNeeds;
36} 36}
37 37
38const char * PPPNetNode::provides( void ) { 38const char * PPPNetNode::provides( void ) {
39 return "connection"; 39 return "connection";
40} 40}
41 41
42bool PPPNetNode::generateProperFilesFor( 42bool PPPNetNode::generateProperFilesFor(
43 ANetNodeInstance * ) { 43 ANetNodeInstance * ) {
44 return 1; 44 return 1;
45} 45}
diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.h b/noncore/settings/networksettings2/ppp/ppp_NN.h
index fbbbbe1..b1483c4 100644
--- a/noncore/settings/networksettings2/ppp/ppp_NN.h
+++ b/noncore/settings/networksettings2/ppp/ppp_NN.h
@@ -1,49 +1,46 @@
1#ifndef PPP_NETNODE_H 1#ifndef PPP_NETNODE_H
2#define PPP_NETNODE_H 2#define PPP_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class APPP; 6class APPP;
7 7
8class PPPNetNode : public ANetNode{ 8class PPPNetNode : public ANetNode{
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 PPPNetNode(); 14 PPPNetNode();
15 virtual ~PPPNetNode(); 15 virtual ~PPPNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/ppp"; } 18 { return "Devices/ppp"; }
19 19
20 virtual const QString nodeName()
21 { return tr("PPP Connection"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 28 virtual bool hasDataFor( const QString & )
32 { return 0; } 29 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 31 SystemFile & SF, long DevNr );
35 32
36 virtual QString genNic( long NicNr ); 33 virtual QString genNic( long NicNr );
37 34
38private: 35private:
39 36
40 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 37 virtual void setSpecificAttribute( QString & Attr, QString & Value );
41 virtual void saveSpecificAttribute( QTextStream & TS ); 38 virtual void saveSpecificAttribute( QTextStream & TS );
42}; 39};
43 40
44extern "C" 41extern "C"
45{ 42{
46 void create_plugin( QList<ANetNode> & PNN ); 43 void create_plugin( QList<ANetNode> & PNN );
47}; 44};
48 45
49#endif 46#endif
diff --git a/noncore/settings/networksettings2/profile/profile_NN.cpp b/noncore/settings/networksettings2/profile/profile_NN.cpp
index 0f71dc7..d06b7ef 100644
--- a/noncore/settings/networksettings2/profile/profile_NN.cpp
+++ b/noncore/settings/networksettings2/profile/profile_NN.cpp
@@ -1,44 +1,44 @@
1#include "profile_NN.h" 1#include "profile_NN.h"
2#include "profile_NNI.h" 2#include "profile_NNI.h"
3 3
4static const char * ProfileNeeds[] = 4static const char * ProfileNeeds[] =
5 { "connection", 5 { "connection",
6 0 6 0
7 }; 7 };
8 8
9/** 9/**
10 * Constructor, find all of the possible interfaces 10 * Constructor, find all of the possible interfaces
11 */ 11 */
12ProfileNetNode::ProfileNetNode() : ANetNode() { 12ProfileNetNode::ProfileNetNode() : ANetNode( tr("Regular profile")) {
13} 13}
14 14
15/** 15/**
16 * Delete any interfaces that we own. 16 * Delete any interfaces that we own.
17 */ 17 */
18ProfileNetNode::~ProfileNetNode(){ 18ProfileNetNode::~ProfileNetNode(){
19} 19}
20 20
21const QString ProfileNetNode::nodeDescription(){ 21const QString ProfileNetNode::nodeDescription(){
22 return tr("\ 22 return tr("\
23<p>Define use of an IP connection.</p>\ 23<p>Define use of an IP connection.</p>\
24<p>Configure if and when this connection needs to be established</p>\ 24<p>Configure if and when this connection needs to be established</p>\
25" 25"
26); 26);
27} 27}
28 28
29ANetNodeInstance * ProfileNetNode::createInstance( void ) { 29ANetNodeInstance * ProfileNetNode::createInstance( void ) {
30 return new AProfile( this ); 30 return new AProfile( this );
31} 31}
32 32
33const char ** ProfileNetNode::needs( void ) { 33const char ** ProfileNetNode::needs( void ) {
34 return ProfileNeeds; 34 return ProfileNeeds;
35} 35}
36 36
37const char * ProfileNetNode::provides( void ) { 37const char * ProfileNetNode::provides( void ) {
38 return "fullsetup"; 38 return "fullsetup";
39} 39}
40 40
41bool ProfileNetNode::generateProperFilesFor( 41bool ProfileNetNode::generateProperFilesFor(
42 ANetNodeInstance * ) { 42 ANetNodeInstance * ) {
43 return 1; 43 return 1;
44} 44}
diff --git a/noncore/settings/networksettings2/profile/profile_NN.h b/noncore/settings/networksettings2/profile/profile_NN.h
index 1313ab2..e602bd7 100644
--- a/noncore/settings/networksettings2/profile/profile_NN.h
+++ b/noncore/settings/networksettings2/profile/profile_NN.h
@@ -1,47 +1,44 @@
1#ifndef PROFILE_NETNODE_H 1#ifndef PROFILE_NETNODE_H
2#define PROFILE_NETNODE_H 2#define PROFILE_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class AProfile; 6class AProfile;
7 7
8class ProfileNetNode : public ANetNode{ 8class ProfileNetNode : public ANetNode{
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 ProfileNetNode(); 14 ProfileNetNode();
15 virtual ~ProfileNetNode(); 15 virtual ~ProfileNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/commprofile"; } 18 { return "Devices/commprofile"; }
19 19
20 virtual const QString nodeName()
21 { return tr("Regular profile"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 28 virtual bool hasDataFor( const QString & )
32 { return 0; } 29 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr); 31 SystemFile & SF, long DevNr);
35 32
36private: 33private:
37 34
38 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 35 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS ); 36 virtual void saveSpecificAttribute( QTextStream & TS );
40}; 37};
41 38
42extern "C" 39extern "C"
43{ 40{
44 void create_plugin( QList<ANetNode> & PNN ); 41 void create_plugin( QList<ANetNode> & PNN );
45}; 42};
46 43
47#endif 44#endif
diff --git a/noncore/settings/networksettings2/usb/usb_NN.cpp b/noncore/settings/networksettings2/usb/usb_NN.cpp
index d5971cf..9101490 100644
--- a/noncore/settings/networksettings2/usb/usb_NN.cpp
+++ b/noncore/settings/networksettings2/usb/usb_NN.cpp
@@ -1,43 +1,43 @@
1#include "usb_NN.h" 1#include "usb_NN.h"
2#include "usb_NNI.h" 2#include "usb_NNI.h"
3 3
4static const char * USBNeeds[] = 4static const char * USBNeeds[] =
5 { 0 5 { 0
6 }; 6 };
7 7
8/** 8/**
9 * Constructor, find all of the possible interfaces 9 * Constructor, find all of the possible interfaces
10 */ 10 */
11USBNetNode::USBNetNode() : ANetNode() { 11USBNetNode::USBNetNode() : ANetNode(tr("USB Cable Connect")) {
12} 12}
13 13
14/** 14/**
15 * Delete any interfaces that we own. 15 * Delete any interfaces that we own.
16 */ 16 */
17USBNetNode::~USBNetNode(){ 17USBNetNode::~USBNetNode(){
18} 18}
19 19
20const QString USBNetNode::nodeDescription(){ 20const QString USBNetNode::nodeDescription(){
21 return tr("\ 21 return tr("\
22<p>Configure Ethernet over USB.</p>\ 22<p>Configure Ethernet over USB.</p>\
23<p>Use this for a computer to computer USB cable connection</p>\ 23<p>Use this for a computer to computer USB cable connection</p>\
24" 24"
25); 25);
26} 26}
27 27
28ANetNodeInstance * USBNetNode::createInstance( void ) { 28ANetNodeInstance * USBNetNode::createInstance( void ) {
29 return new AUSB( this ); 29 return new AUSB( this );
30} 30}
31 31
32const char ** USBNetNode::needs( void ) { 32const char ** USBNetNode::needs( void ) {
33 return USBNeeds; 33 return USBNeeds;
34} 34}
35 35
36const char * USBNetNode::provides( void ) { 36const char * USBNetNode::provides( void ) {
37 return "device"; 37 return "device";
38} 38}
39 39
40bool USBNetNode::generateProperFilesFor( 40bool USBNetNode::generateProperFilesFor(
41 ANetNodeInstance * ) { 41 ANetNodeInstance * ) {
42 return 1; 42 return 1;
43} 43}
diff --git a/noncore/settings/networksettings2/usb/usb_NN.h b/noncore/settings/networksettings2/usb/usb_NN.h
index 0b83ea6..fea89f0 100644
--- a/noncore/settings/networksettings2/usb/usb_NN.h
+++ b/noncore/settings/networksettings2/usb/usb_NN.h
@@ -1,48 +1,45 @@
1#ifndef USB_NETNODE_H 1#ifndef USB_NETNODE_H
2#define USB_NETNODE_H 2#define USB_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class AUSB; 6class AUSB;
7 7
8class USBNetNode : public ANetNode{ 8class USBNetNode : public ANetNode{
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 USBNetNode(); 14 USBNetNode();
15 virtual ~USBNetNode(); 15 virtual ~USBNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/usb"; } 18 { return "Devices/usb"; }
19 19
20 virtual const QString nodeName()
21 { return tr("USB Cable Connect"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & S); 28 virtual bool hasDataFor( const QString & S);
32 virtual bool generateDeviceDataForCommonFile( 29 virtual bool generateDeviceDataForCommonFile(
33 SystemFile & SF, long DevNr ); 30 SystemFile & SF, long DevNr );
34 31
35 virtual QString genNic( long nr ); 32 virtual QString genNic( long nr );
36 33
37private: 34private:
38 35
39 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 36 virtual void setSpecificAttribute( QString & Attr, QString & Value );
40 virtual void saveSpecificAttribute( QTextStream & TS ); 37 virtual void saveSpecificAttribute( QTextStream & TS );
41}; 38};
42 39
43extern "C" 40extern "C"
44{ 41{
45 void create_plugin( QList<ANetNode> & PNN ); 42 void create_plugin( QList<ANetNode> & PNN );
46}; 43};
47 44
48#endif 45#endif
diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.cpp b/noncore/settings/networksettings2/vpn/vpn_NN.cpp
index 307e9dd..bfc30f9 100644
--- a/noncore/settings/networksettings2/vpn/vpn_NN.cpp
+++ b/noncore/settings/networksettings2/vpn/vpn_NN.cpp
@@ -1,44 +1,44 @@
1#include "vpn_NN.h" 1#include "vpn_NN.h"
2#include "vpn_NNI.h" 2#include "vpn_NNI.h"
3 3
4static const char * VPNNeeds[] = 4static const char * VPNNeeds[] =
5 { "connection", 5 { "connection",
6 0 6 0
7 }; 7 };
8 8
9/** 9/**
10 * Constructor, find all of the possible interfaces 10 * Constructor, find all of the possible interfaces
11 */ 11 */
12VPNNetNode::VPNNetNode() : ANetNode() { 12VPNNetNode::VPNNetNode() : ANetNode(tr("VPN Connection")) {
13} 13}
14 14
15/** 15/**
16 * Delete any interfaces that we own. 16 * Delete any interfaces that we own.
17 */ 17 */
18VPNNetNode::~VPNNetNode(){ 18VPNNetNode::~VPNNetNode(){
19} 19}
20 20
21const QString VPNNetNode::nodeDescription(){ 21const QString VPNNetNode::nodeDescription(){
22 return tr("\ 22 return tr("\
23<p>Configure private IP connection.</p>\ 23<p>Configure private IP connection.</p>\
24<p>Defines Secure tunnels over non secure IP sessions</p>\ 24<p>Defines Secure tunnels over non secure IP sessions</p>\
25" 25"
26); 26);
27} 27}
28 28
29ANetNodeInstance * VPNNetNode::createInstance( void ) { 29ANetNodeInstance * VPNNetNode::createInstance( void ) {
30 return new AVPN( this ); 30 return new AVPN( this );
31} 31}
32 32
33const char ** VPNNetNode::needs( void ) { 33const char ** VPNNetNode::needs( void ) {
34 return VPNNeeds; 34 return VPNNeeds;
35} 35}
36 36
37const char * VPNNetNode::provides( void ) { 37const char * VPNNetNode::provides( void ) {
38 return "connection"; 38 return "connection";
39} 39}
40 40
41bool VPNNetNode::generateProperFilesFor( 41bool VPNNetNode::generateProperFilesFor(
42 ANetNodeInstance * ) { 42 ANetNodeInstance * ) {
43 return 1; 43 return 1;
44} 44}
diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.h b/noncore/settings/networksettings2/vpn/vpn_NN.h
index 1cd3fcc..5b6632e 100644
--- a/noncore/settings/networksettings2/vpn/vpn_NN.h
+++ b/noncore/settings/networksettings2/vpn/vpn_NN.h
@@ -1,47 +1,44 @@
1#ifndef VPN_NETNODE_H 1#ifndef VPN_NETNODE_H
2#define VPN_NETNODE_H 2#define VPN_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class AVPN; 6class AVPN;
7 7
8class VPNNetNode : public ANetNode{ 8class VPNNetNode : public ANetNode{
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 VPNNetNode(); 14 VPNNetNode();
15 virtual ~VPNNetNode(); 15 virtual ~VPNNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/vpn"; } 18 { return "Devices/vpn"; }
19 19
20 virtual const QString nodeName()
21 { return tr("VPN Connection"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 28 virtual bool hasDataFor( const QString & )
32 { return 0; } 29 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 31 SystemFile & SF, long DevNr );
35 32
36private: 33private:
37 34
38 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 35 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS ); 36 virtual void saveSpecificAttribute( QTextStream & TS );
40}; 37};
41 38
42extern "C" 39extern "C"
43{ 40{
44 void create_plugin( QList<ANetNode> & PNN ); 41 void create_plugin( QList<ANetNode> & PNN );
45}; 42};
46 43
47#endif 44#endif
diff --git a/noncore/settings/networksettings2/wlan/wlan_NN.cpp b/noncore/settings/networksettings2/wlan/wlan_NN.cpp
index e0c4db2..7a2c1a7 100644
--- a/noncore/settings/networksettings2/wlan/wlan_NN.cpp
+++ b/noncore/settings/networksettings2/wlan/wlan_NN.cpp
@@ -1,43 +1,43 @@
1#include "wlan_NN.h" 1#include "wlan_NN.h"
2#include "wlan_NNI.h" 2#include "wlan_NNI.h"
3 3
4static const char * WLanNeeds[] = 4static const char * WLanNeeds[] =
5 { 0 5 { 0
6 }; 6 };
7 7
8/** 8/**
9 * Constructor, find all of the possible interfaces 9 * Constructor, find all of the possible interfaces
10 */ 10 */
11WLanNetNode::WLanNetNode() : ANetNode() { 11WLanNetNode::WLanNetNode() : ANetNode(tr("WLan Device")) {
12 InstanceCount = 2; 12 InstanceCount = 2;
13} 13}
14 14
15/** 15/**
16 * Delete any interfaces that we own. 16 * Delete any interfaces that we own.
17 */ 17 */
18WLanNetNode::~WLanNetNode(){ 18WLanNetNode::~WLanNetNode(){
19} 19}
20 20
21const QString WLanNetNode::nodeDescription(){ 21const QString WLanNetNode::nodeDescription(){
22 return tr("\ 22 return tr("\
23<p>Configure Wi/Fi or WLan network cards.</p>\ 23<p>Configure Wi/Fi or WLan network cards.</p>\
24<p>Defines Wireless options for those cards</p>\ 24<p>Defines Wireless options for those cards</p>\
25" 25"
26); 26);
27} 27}
28 28
29ANetNodeInstance * WLanNetNode::createInstance( void ) { 29ANetNodeInstance * WLanNetNode::createInstance( void ) {
30 return new AWLan( this ); 30 return new AWLan( this );
31} 31}
32 32
33const char ** WLanNetNode::needs( void ) { 33const char ** WLanNetNode::needs( void ) {
34 return WLanNeeds; 34 return WLanNeeds;
35} 35}
36 36
37const char * WLanNetNode::provides( void ) { 37const char * WLanNetNode::provides( void ) {
38 return "device"; 38 return "device";
39} 39}
40 40
41bool WLanNetNode::generateProperFilesFor( 41bool WLanNetNode::generateProperFilesFor(
42 ANetNodeInstance * ) { 42 ANetNodeInstance * ) {
43 return 1; 43 return 1;
diff --git a/noncore/settings/networksettings2/wlan/wlan_NN.h b/noncore/settings/networksettings2/wlan/wlan_NN.h
index e93a89a..b5ff3fd 100644
--- a/noncore/settings/networksettings2/wlan/wlan_NN.h
+++ b/noncore/settings/networksettings2/wlan/wlan_NN.h
@@ -1,54 +1,51 @@
1#ifndef WLAN_NETNODE_H 1#ifndef WLAN_NETNODE_H
2#define WLAN_NETNODE_H 2#define WLAN_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class AWLan; 6class AWLan;
7 7
8class WLanNetNode : public ANetNode{ 8class WLanNetNode : public ANetNode{
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 WLanNetNode(); 14 WLanNetNode();
15 virtual ~WLanNetNode(); 15 virtual ~WLanNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/wlan"; } 18 { return "Devices/wlan"; }
19 19
20 virtual const QString nodeName()
21 { return tr("WLan Device"); }
22
23 virtual const QString nodeDescription() ; 20 virtual const QString nodeDescription() ;
24 21
25 virtual ANetNodeInstance * createInstance( void ); 22 virtual ANetNodeInstance * createInstance( void );
26 23
27 virtual const char ** needs( void ); 24 virtual const char ** needs( void );
28 virtual const char * provides( void ); 25 virtual const char * provides( void );
29 26
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 27 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 28
32 virtual bool hasDataFor( const QString & S ); 29 virtual bool hasDataFor( const QString & S );
33 virtual bool generateDeviceDataForCommonFile( 30 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 31 SystemFile & SF, long DevNr );
35 32
36 virtual long instanceCount( void ) 33 virtual long instanceCount( void )
37 { return InstanceCount; } 34 { return InstanceCount; }
38 35
39 virtual QString genNic( long ); 36 virtual QString genNic( long );
40 37
41private: 38private:
42 39
43 virtual void setSpecificAttribute( QString & Attr, QString & Value ); 40 virtual void setSpecificAttribute( QString & Attr, QString & Value );
44 virtual void saveSpecificAttribute( QTextStream & TS ); 41 virtual void saveSpecificAttribute( QTextStream & TS );
45 42
46 // number of interfaces for this device 43 // number of interfaces for this device
47 long InstanceCount; 44 long InstanceCount;
48 45
49}; 46};
50 47
51extern "C" 48extern "C"
52{ 49{
53 void create_plugin( QList<ANetNode> & PNN ); 50 void create_plugin( QList<ANetNode> & PNN );
54}; 51};