summaryrefslogtreecommitdiff
authorwimpie <wimpie>2004-04-05 22:58:06 (UTC)
committer wimpie <wimpie>2004-04-05 22:58:06 (UTC)
commit9aeac7cefc3c8baf32944e7275b57e0a0cde1515 (patch) (unidiff)
treedc8161657d98d0e97d5f29554cb35d9b57202c49
parent1d958f56a9e1357c20e76d763579d4dc184978e0 (diff)
downloadopie-9aeac7cefc3c8baf32944e7275b57e0a0cde1515.zip
opie-9aeac7cefc3c8baf32944e7275b57e0a0cde1515.tar.gz
opie-9aeac7cefc3c8baf32944e7275b57e0a0cde1515.tar.bz2
Add save of node specific config data
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp22
-rw-r--r--noncore/settings/networksettings2/bluetooth/bluetooth_NN.h10
-rw-r--r--noncore/settings/networksettings2/cable/cable_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/cable/cable_NN.h2
-rw-r--r--noncore/settings/networksettings2/irda/irda_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/irda/irda_NN.h2
-rw-r--r--noncore/settings/networksettings2/lancard/lancard_NN.cpp13
-rw-r--r--noncore/settings/networksettings2/lancard/lancard_NN.h8
-rw-r--r--noncore/settings/networksettings2/modem/modem_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/modem/modem_NN.h2
-rw-r--r--noncore/settings/networksettings2/network/network_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/network/network_NN.h2
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.cpp47
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.h92
-rw-r--r--noncore/settings/networksettings2/networksettings2/resources.h12
-rw-r--r--noncore/settings/networksettings2/nsdata.cpp67
-rw-r--r--noncore/settings/networksettings2/nsdata.h3
-rw-r--r--noncore/settings/networksettings2/ppp/ppp_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/ppp/ppp_NN.h2
-rw-r--r--noncore/settings/networksettings2/profile/profile_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/profile/profile_NN.h2
-rw-r--r--noncore/settings/networksettings2/usb/usb_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/usb/usb_NN.h2
-rw-r--r--noncore/settings/networksettings2/vpn/vpn_NN.cpp6
-rw-r--r--noncore/settings/networksettings2/vpn/vpn_NN.h2
-rw-r--r--noncore/settings/networksettings2/wlan/wlan_NN.cpp13
-rw-r--r--noncore/settings/networksettings2/wlan/wlan_NN.h8
27 files changed, 224 insertions, 135 deletions
diff --git a/noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp b/noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp
index 3d1aa69..4579e37 100644
--- a/noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp
+++ b/noncore/settings/networksettings2/bluetooth/bluetooth_NN.cpp
@@ -1,123 +1,143 @@
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() : ANetNode() {
19 InstanceCount = 7; // default
19} 20}
20 21
21/** 22/**
22 * Delete any interfaces that we own. 23 * Delete any interfaces that we own.
23 */ 24 */
24BluetoothBNEPNetNode::~BluetoothBNEPNetNode(){ 25BluetoothBNEPNetNode::~BluetoothBNEPNetNode(){
25} 26}
26 27
27const QString BluetoothBNEPNetNode::nodeDescription(){ 28const QString BluetoothBNEPNetNode::nodeDescription(){
28 return tr("\ 29 return tr("\
29<p>Sets up a bluetooth link using the bluetooth Network profile.</p>\ 30<p>Sets up a bluetooth link using the bluetooth Network profile.</p>\
30<p>Use this to connect two computing devices.</p>\ 31<p>Use this to connect two computing devices.</p>\
31" 32"
32); 33);
33} 34}
34 35
35ANetNodeInstance * BluetoothBNEPNetNode::createInstance( void ) { 36ANetNodeInstance * BluetoothBNEPNetNode::createInstance( void ) {
36 return new ABluetoothBNEP( this ); 37 return new ABluetoothBNEP( this );
37} 38}
38 39
39const char ** BluetoothBNEPNetNode::needs( void ) { 40const char ** BluetoothBNEPNetNode::needs( void ) {
40 return BluetoothBNEPNeeds; 41 return BluetoothBNEPNeeds;
41} 42}
42 43
43const char * BluetoothBNEPNetNode::provides( void ) { 44const char * BluetoothBNEPNetNode::provides( void ) {
44 return "device"; 45 return "device";
45} 46}
46 47
47bool BluetoothBNEPNetNode::generateProperFilesFor( 48bool BluetoothBNEPNetNode::generateProperFilesFor(
48 ANetNodeInstance * ) { 49 ANetNodeInstance * ) {
49 return 1; 50 return 1;
50} 51}
51 52
52bool BluetoothBNEPNetNode::hasDataFor( const QString & S ) { 53bool BluetoothBNEPNetNode::hasDataFor( const QString & S ) {
53 return S == "interfaces"; 54 return S == "interfaces";
54} 55}
55 56
56bool BluetoothBNEPNetNode::generateDeviceDataForCommonFile( 57bool BluetoothBNEPNetNode::generateDeviceDataForCommonFile(
57 SystemFile & , 58 SystemFile & ,
58 long ) { 59 long ) {
59 return 1; 60 return 1;
60} 61}
61 62
62QString BluetoothBNEPNetNode::genNic( long nr ) { 63QString BluetoothBNEPNetNode::genNic( long nr ) {
63 QString S; 64 QString S;
64 return S.sprintf( "bnep%ld", nr ); 65 return S.sprintf( "bnep%ld", nr );
65} 66}
66 67
68
69void BluetoothBNEPNetNode::setSpecificAttribute( QString & A, QString & V ) {
70 if( A == "interfacecount" ) {
71 InstanceCount = V.toLong();
72 }
73}
74
75void BluetoothBNEPNetNode::saveSpecificAttribute( QTextStream & TS) {
76 TS << "interfacecount="
77 << InstanceCount
78 << endl;
79}
80
67// 81//
68// 82//
69// BLUETOOTH PAN/NAP node 83// BLUETOOTH RFCOMM
70// 84//
71// 85//
72 86
73static const char * BluetoothRFCOMMNeeds[] = 87static const char * BluetoothRFCOMMNeeds[] =
74 { 0 88 { 0
75 }; 89 };
76 90
77BluetoothRFCOMMNetNode::BluetoothRFCOMMNetNode() : ANetNode() { 91BluetoothRFCOMMNetNode::BluetoothRFCOMMNetNode() : ANetNode() {
78} 92}
79 93
80BluetoothRFCOMMNetNode::~BluetoothRFCOMMNetNode(){ 94BluetoothRFCOMMNetNode::~BluetoothRFCOMMNetNode(){
81} 95}
82 96
83const QString BluetoothRFCOMMNetNode::nodeDescription(){ 97const QString BluetoothRFCOMMNetNode::nodeDescription(){
84 return tr("\ 98 return tr("\
85<p>Sets up a bluetooth link using the bluetooth serial profile.</p>\ 99<p>Sets up a bluetooth link using the bluetooth serial profile.</p>\
86<p>Use this to connect to a GSM.</p>\ 100<p>Use this to connect to a GSM.</p>\
87" 101"
88); 102);
89} 103}
90 104
91ANetNodeInstance * BluetoothRFCOMMNetNode::createInstance( void ) { 105ANetNodeInstance * BluetoothRFCOMMNetNode::createInstance( void ) {
92 return new ABluetoothRFCOMM( this ); 106 return new ABluetoothRFCOMM( this );
93} 107}
94 108
95const char ** BluetoothRFCOMMNetNode::needs( void ) { 109const char ** BluetoothRFCOMMNetNode::needs( void ) {
96 return BluetoothRFCOMMNeeds; 110 return BluetoothRFCOMMNeeds;
97} 111}
98 112
99const char * BluetoothRFCOMMNetNode::provides( void ) { 113const char * BluetoothRFCOMMNetNode::provides( void ) {
100 return "line"; 114 return "line";
101} 115}
102 116
103bool BluetoothRFCOMMNetNode::generateProperFilesFor( 117bool BluetoothRFCOMMNetNode::generateProperFilesFor(
104 ANetNodeInstance * ) { 118 ANetNodeInstance * ) {
105 return 0; 119 return 0;
106} 120}
107 121
108bool BluetoothRFCOMMNetNode::hasDataFor( const QString & ) { 122bool BluetoothRFCOMMNetNode::hasDataFor( const QString & ) {
109 return 0; 123 return 0;
110} 124}
111 125
112bool BluetoothRFCOMMNetNode::generateDeviceDataForCommonFile( 126bool BluetoothRFCOMMNetNode::generateDeviceDataForCommonFile(
113 SystemFile & , 127 SystemFile & ,
114 long ) { 128 long ) {
115 return 0; 129 return 0;
116} 130}
117 131
132void BluetoothRFCOMMNetNode::setSpecificAttribute( QString &, QString & ) {
133}
134
135void BluetoothRFCOMMNetNode::saveSpecificAttribute( QTextStream & ) {
136}
137
118extern "C" { 138extern "C" {
119void create_plugin( QList<ANetNode> & PNN ) { 139void create_plugin( QList<ANetNode> & PNN ) {
120 PNN.append( new BluetoothBNEPNetNode() ); 140 PNN.append( new BluetoothBNEPNetNode() );
121 PNN.append( new BluetoothRFCOMMNetNode() ); 141 PNN.append( new BluetoothRFCOMMNetNode() );
122} 142}
123} 143}
diff --git a/noncore/settings/networksettings2/bluetooth/bluetooth_NN.h b/noncore/settings/networksettings2/bluetooth/bluetooth_NN.h
index 5cd6c52..882d2e3 100644
--- a/noncore/settings/networksettings2/bluetooth/bluetooth_NN.h
+++ b/noncore/settings/networksettings2/bluetooth/bluetooth_NN.h
@@ -1,79 +1,87 @@
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() 20 virtual const QString nodeName()
21 { return tr("Bluetooth PAN/NAP"); } 21 { return tr("Bluetooth PAN/NAP"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & S ); 31 virtual bool hasDataFor( const QString & S );
32 virtual bool generateDeviceDataForCommonFile( 32 virtual bool generateDeviceDataForCommonFile(
33 SystemFile & , long DevNr ); 33 SystemFile & , long DevNr );
34 34
35 virtual long instanceCount( void ) 35 virtual long instanceCount( void )
36 { return 7; } 36 { return InstanceCount; }
37 virtual QString genNic( long ); 37 virtual QString genNic( long );
38 38
39private: 39private:
40 40
41 virtual void setSpecificAttribute( QString & Attr, QString & Value );
42 virtual void saveSpecificAttribute( QTextStream & TS );
43
44 // number of interfaces for this device
45 long InstanceCount;
46
41}; 47};
42 48
43class BluetoothRFCOMMNetNode : public ANetNode { 49class BluetoothRFCOMMNetNode : public ANetNode {
44 50
45 Q_OBJECT 51 Q_OBJECT
46 52
47public: 53public:
48 54
49 BluetoothRFCOMMNetNode(); 55 BluetoothRFCOMMNetNode();
50 virtual ~BluetoothRFCOMMNetNode(); 56 virtual ~BluetoothRFCOMMNetNode();
51 57
52 virtual const QString pixmapName() 58 virtual const QString pixmapName()
53 { return "Devices/bluetooth"; } 59 { return "Devices/bluetooth"; }
54 60
55 virtual const QString nodeName() 61 virtual const QString nodeName()
56 { return tr("Bluetooth serial link"); } 62 { return tr("Bluetooth serial link"); }
57 63
58 virtual const QString nodeDescription() ; 64 virtual const QString nodeDescription() ;
59 65
60 virtual ANetNodeInstance * createInstance( void ); 66 virtual ANetNodeInstance * createInstance( void );
61 67
62 virtual const char ** needs( void ); 68 virtual const char ** needs( void );
63 virtual const char * provides( void ); 69 virtual const char * provides( void );
64 70
65 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 71 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
66 virtual bool hasDataFor( const QString & S ); 72 virtual bool hasDataFor( const QString & S );
67 virtual bool generateDeviceDataForCommonFile( 73 virtual bool generateDeviceDataForCommonFile(
68 SystemFile & , long ); 74 SystemFile & , long );
69 75
70private: 76private:
71 77
78 virtual void setSpecificAttribute( QString & Attr, QString & Value );
79 virtual void saveSpecificAttribute( QTextStream & TS );
72}; 80};
73 81
74extern "C" 82extern "C"
75{ 83{
76 void create_plugin( QList<ANetNode> & PNN ); 84 void create_plugin( QList<ANetNode> & PNN );
77}; 85};
78 86
79#endif 87#endif
diff --git a/noncore/settings/networksettings2/cable/cable_NN.cpp b/noncore/settings/networksettings2/cable/cable_NN.cpp
index a6be4d5..dd41c1f 100644
--- a/noncore/settings/networksettings2/cable/cable_NN.cpp
+++ b/noncore/settings/networksettings2/cable/cable_NN.cpp
@@ -1,54 +1,60 @@
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() {
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
44bool CableNetNode::generateDeviceDataForCommonFile( 44bool CableNetNode::generateDeviceDataForCommonFile(
45 SystemFile & , 45 SystemFile & ,
46 long ) { 46 long ) {
47 return 1; 47 return 1;
48} 48}
49 49
50void CableNetNode::setSpecificAttribute( QString & , QString & ) {
51}
52
53void CableNetNode::saveSpecificAttribute( QTextStream & ) {
54}
55
50extern "C" { 56extern "C" {
51void create_plugin( QList<ANetNode> & PNN ) { 57void create_plugin( QList<ANetNode> & PNN ) {
52 PNN.append( new CableNetNode() ); 58 PNN.append( new CableNetNode() );
53} 59}
54} 60}
diff --git a/noncore/settings/networksettings2/cable/cable_NN.h b/noncore/settings/networksettings2/cable/cable_NN.h
index 83b98e0..b37f31a 100644
--- a/noncore/settings/networksettings2/cable/cable_NN.h
+++ b/noncore/settings/networksettings2/cable/cable_NN.h
@@ -1,45 +1,47 @@
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() 20 virtual const QString nodeName()
21 { return tr("Cable Connection"); } 21 { return tr("Cable Connection"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 31 virtual bool hasDataFor( const QString & )
32 { return 0; } 32 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 33 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr); 34 SystemFile & SF, long DevNr);
35 35
36private: 36private:
37 37
38 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS );
38}; 40};
39 41
40extern "C" 42extern "C"
41{ 43{
42 void create_plugin( QList<ANetNode> & PNN ); 44 void create_plugin( QList<ANetNode> & PNN );
43}; 45};
44 46
45#endif 47#endif
diff --git a/noncore/settings/networksettings2/irda/irda_NN.cpp b/noncore/settings/networksettings2/irda/irda_NN.cpp
index 96327a5..49b7707 100644
--- a/noncore/settings/networksettings2/irda/irda_NN.cpp
+++ b/noncore/settings/networksettings2/irda/irda_NN.cpp
@@ -1,54 +1,60 @@
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() {
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
44bool IRDANetNode::generateDeviceDataForCommonFile( 44bool IRDANetNode::generateDeviceDataForCommonFile(
45 SystemFile & , 45 SystemFile & ,
46 long ) { 46 long ) {
47 return 1; 47 return 1;
48} 48}
49 49
50void IRDANetNode::setSpecificAttribute( QString & , QString & ) {
51}
52
53void IRDANetNode::saveSpecificAttribute( QTextStream & ) {
54}
55
50extern "C" { 56extern "C" {
51void create_plugin( QList<ANetNode> & PNN ) { 57void create_plugin( QList<ANetNode> & PNN ) {
52 PNN.append( new IRDANetNode() ); 58 PNN.append( new IRDANetNode() );
53} 59}
54} 60}
diff --git a/noncore/settings/networksettings2/irda/irda_NN.h b/noncore/settings/networksettings2/irda/irda_NN.h
index a5b6cc5..2dcef74 100644
--- a/noncore/settings/networksettings2/irda/irda_NN.h
+++ b/noncore/settings/networksettings2/irda/irda_NN.h
@@ -1,45 +1,47 @@
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() 20 virtual const QString nodeName()
21 { return tr("Infrared link"); } 21 { return tr("Infrared link"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 31 virtual bool hasDataFor( const QString & )
32 { return 0; } 32 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 33 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 34 SystemFile & SF, long DevNr );
35 35
36private: 36private:
37 37
38 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS );
38}; 40};
39 41
40extern "C" 42extern "C"
41{ 43{
42 void create_plugin( QList<ANetNode> & PNN ); 44 void create_plugin( QList<ANetNode> & PNN );
43}; 45};
44 46
45#endif 47#endif
diff --git a/noncore/settings/networksettings2/lancard/lancard_NN.cpp b/noncore/settings/networksettings2/lancard/lancard_NN.cpp
index 480ddf9..ba1c1f8 100644
--- a/noncore/settings/networksettings2/lancard/lancard_NN.cpp
+++ b/noncore/settings/networksettings2/lancard/lancard_NN.cpp
@@ -1,72 +1,85 @@
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() {
11 InstanceCount = 2;
11} 12}
12 13
13/** 14/**
14 * Delete any interfaces that we own. 15 * Delete any interfaces that we own.
15 */ 16 */
16LanCardNetNode::~LanCardNetNode(){ 17LanCardNetNode::~LanCardNetNode(){
17} 18}
18 19
19const QString LanCardNetNode::nodeDescription(){ 20const QString LanCardNetNode::nodeDescription(){
20 return tr("\ 21 return tr("\
21<p>Sets up a wired regular LAN card.</p>\ 22<p>Sets up a wired regular LAN card.</p>\
22<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>\
23" 24"
24); 25);
25} 26}
26 27
27ANetNodeInstance * LanCardNetNode::createInstance( void ) { 28ANetNodeInstance * LanCardNetNode::createInstance( void ) {
28 return new ALanCard( this ); 29 return new ALanCard( this );
29} 30}
30 31
31 32
32const char ** LanCardNetNode::needs( void ) { 33const char ** LanCardNetNode::needs( void ) {
33 return LanCardNeeds; 34 return LanCardNeeds;
34} 35}
35 36
36const char * LanCardNetNode::provides( void ) { 37const char * LanCardNetNode::provides( void ) {
37 return "device"; 38 return "device";
38} 39}
39 40
40bool LanCardNetNode::generateProperFilesFor( 41bool LanCardNetNode::generateProperFilesFor(
41 ANetNodeInstance * ) { 42 ANetNodeInstance * ) {
42 return 1; 43 return 1;
43} 44}
44 45
45bool LanCardNetNode::hasDataFor( const QString & S ) { 46bool LanCardNetNode::hasDataFor( const QString & S ) {
46 return S == "interfaces"; 47 return S == "interfaces";
47} 48}
48 49
49bool LanCardNetNode::generateDeviceDataForCommonFile( 50bool LanCardNetNode::generateDeviceDataForCommonFile(
50 SystemFile & S , 51 SystemFile & S ,
51 long DevNr ) { 52 long DevNr ) {
52 QString NIC = genNic( DevNr ); 53 QString NIC = genNic( DevNr );
53 54
54 if( S.name() == "interfaces" ) { 55 if( S.name() == "interfaces" ) {
55 // generate mapping stanza for this interface 56 // generate mapping stanza for this interface
56 S << "# check if " << NIC << " can be brought UP" << endl; 57 S << "# check if " << NIC << " can be brought UP" << endl;
57 S << "mapping " << NIC << endl; 58 S << "mapping " << NIC << endl;
58 S << " script networksettings2-request" << endl << endl; 59 S << " script networksettings2-request" << endl << endl;
59 } 60 }
60 return 0; 61 return 0;
61} 62}
62 63
63QString LanCardNetNode::genNic( long nr ) { 64QString LanCardNetNode::genNic( long nr ) {
64 QString S; 65 QString S;
65 return S.sprintf( "eth%ld", nr ); 66 return S.sprintf( "eth%ld", nr );
66} 67}
67 68
69void LanCardNetNode::setSpecificAttribute( QString & A, QString & V ) {
70 if( A == "interfacecount" ) {
71 InstanceCount = V.toLong();
72 }
73}
74
75void LanCardNetNode::saveSpecificAttribute( QTextStream & TS) {
76 TS << "interfacecount="
77 << InstanceCount
78 << endl;
79}
80
68extern "C" { 81extern "C" {
69void create_plugin( QList<ANetNode> & PNN ) { 82void create_plugin( QList<ANetNode> & PNN ) {
70 PNN.append( new LanCardNetNode() ); 83 PNN.append( new LanCardNetNode() );
71} 84}
72} 85}
diff --git a/noncore/settings/networksettings2/lancard/lancard_NN.h b/noncore/settings/networksettings2/lancard/lancard_NN.h
index dcdd0da..5f2b25d 100644
--- a/noncore/settings/networksettings2/lancard/lancard_NN.h
+++ b/noncore/settings/networksettings2/lancard/lancard_NN.h
@@ -1,49 +1,55 @@
1#ifndef LANCARD_NETNODE_H 1#ifndef LANCARD_NETNODE_H
2#define LANCARD_NETNODE_H 2#define LANCARD_NETNODE_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class ALanCard; 6class ALanCard;
7 7
8class LanCardNetNode : public ANetNode{ 8class LanCardNetNode : public ANetNode{
9 9
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 13
14 LanCardNetNode(); 14 LanCardNetNode();
15 virtual ~LanCardNetNode(); 15 virtual ~LanCardNetNode();
16 16
17 virtual const QString pixmapName() 17 virtual const QString pixmapName()
18 { return "Devices/card"; } 18 { return "Devices/card"; }
19 19
20 virtual const QString nodeName() 20 virtual const QString nodeName()
21 { return tr("LAN card"); } 21 { return tr("LAN card"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & S ); 31 virtual bool hasDataFor( const QString & S );
32 virtual bool generateDeviceDataForCommonFile( 32 virtual bool generateDeviceDataForCommonFile(
33 SystemFile & SF, long DevNr ); 33 SystemFile & SF, long DevNr );
34 34
35 virtual long instanceCount( void ) 35 virtual long instanceCount( void )
36 { return 2; } 36 { return InstanceCount; }
37 37
38 virtual QString genNic( long ); 38 virtual QString genNic( long );
39 39
40private: 40private:
41 41
42 virtual void setSpecificAttribute( QString & Attr, QString & Value );
43 virtual void saveSpecificAttribute( QTextStream & TS );
44
45 // number of interfaces for this device
46 long InstanceCount;
47
42}; 48};
43 49
44extern "C" 50extern "C"
45{ 51{
46 void create_plugin( QList<ANetNode> & PNN ); 52 void create_plugin( QList<ANetNode> & PNN );
47}; 53};
48 54
49#endif 55#endif
diff --git a/noncore/settings/networksettings2/modem/modem_NN.cpp b/noncore/settings/networksettings2/modem/modem_NN.cpp
index 65b06ee..1cc8524 100644
--- a/noncore/settings/networksettings2/modem/modem_NN.cpp
+++ b/noncore/settings/networksettings2/modem/modem_NN.cpp
@@ -1,55 +1,61 @@
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() {
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}
44 44
45bool ModemNetNode::generateDeviceDataForCommonFile( 45bool ModemNetNode::generateDeviceDataForCommonFile(
46 SystemFile & , 46 SystemFile & ,
47 long ) { 47 long ) {
48 return 1; 48 return 1;
49} 49}
50 50
51void ModemNetNode::setSpecificAttribute( QString & , QString & ) {
52}
53
54void ModemNetNode::saveSpecificAttribute( QTextStream & ) {
55}
56
51extern "C" { 57extern "C" {
52void create_plugin( QList<ANetNode> & PNN ) { 58void create_plugin( QList<ANetNode> & PNN ) {
53 PNN.append( new ModemNetNode() ); 59 PNN.append( new ModemNetNode() );
54} 60}
55} 61}
diff --git a/noncore/settings/networksettings2/modem/modem_NN.h b/noncore/settings/networksettings2/modem/modem_NN.h
index 49244b2..849f928 100644
--- a/noncore/settings/networksettings2/modem/modem_NN.h
+++ b/noncore/settings/networksettings2/modem/modem_NN.h
@@ -1,45 +1,47 @@
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() 20 virtual const QString nodeName()
21 { return tr("Dialup modem"); } 21 { return tr("Dialup modem"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 31 virtual bool hasDataFor( const QString & )
32 { return 0; } 32 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 33 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 34 SystemFile & SF, long DevNr );
35 35
36private: 36private:
37 37
38 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS );
38}; 40};
39 41
40extern "C" 42extern "C"
41{ 43{
42 void create_plugin( QList<ANetNode> & PNN ); 44 void create_plugin( QList<ANetNode> & PNN );
43}; 45};
44 46
45#endif 47#endif
diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp
index 4a77e6a..d27d54a 100644
--- a/noncore/settings/networksettings2/network/network_NN.cpp
+++ b/noncore/settings/networksettings2/network/network_NN.cpp
@@ -1,56 +1,62 @@
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() {
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}
45 45
46bool NetworkNetNode::generateDeviceDataForCommonFile( 46bool NetworkNetNode::generateDeviceDataForCommonFile(
47 SystemFile & , 47 SystemFile & ,
48 long ) { 48 long ) {
49 return 1; 49 return 1;
50} 50}
51 51
52void NetworkNetNode::setSpecificAttribute( QString & , QString & ) {
53}
54
55void NetworkNetNode::saveSpecificAttribute( QTextStream & ) {
56}
57
52extern "C" { 58extern "C" {
53void create_plugin( QList<ANetNode> & PNN ) { 59void create_plugin( QList<ANetNode> & PNN ) {
54 PNN.append( new NetworkNetNode() ); 60 PNN.append( new NetworkNetNode() );
55} 61}
56} 62}
diff --git a/noncore/settings/networksettings2/network/network_NN.h b/noncore/settings/networksettings2/network/network_NN.h
index 59f0526..0f87e1b 100644
--- a/noncore/settings/networksettings2/network/network_NN.h
+++ b/noncore/settings/networksettings2/network/network_NN.h
@@ -1,45 +1,47 @@
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() 20 virtual const QString nodeName()
21 { return tr("IP Configuration"); } 21 { return tr("IP Configuration"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 31 virtual bool hasDataFor( const QString & )
32 { return 0; } 32 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 33 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 34 SystemFile & SF, long DevNr );
35 35
36private: 36private:
37 37
38 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS );
38}; 40};
39 41
40extern "C" 42extern "C"
41{ 43{
42 void create_plugin( QList<ANetNode> & PNN ); 44 void create_plugin( QList<ANetNode> & PNN );
43}; 45};
44 46
45#endif 47#endif
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.cpp b/noncore/settings/networksettings2/networksettings2/netnode.cpp
index fcc6044..3691e5a 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.cpp
+++ b/noncore/settings/networksettings2/networksettings2/netnode.cpp
@@ -1,302 +1,299 @@
1#include <qpe/qpeapplication.h> 1#include <qpe/qpeapplication.h>
2#include <time.h> 2#include <time.h>
3#include <qtextstream.h> 3#include <qtextstream.h>
4#include <qpixmap.h> 4#include <qpixmap.h>
5 5
6#include "resources.h" 6#include "resources.h"
7#include "netnode.h" 7#include "netnode.h"
8 8
9#include "asdevice.h" 9#include "asdevice.h"
10#include "asline.h" 10#include "asline.h"
11#include "asconnection.h" 11#include "asconnection.h"
12#include "asfullsetup.h" 12#include "asfullsetup.h"
13 13
14QString & deQuote( QString & X ) { 14QString & deQuote( QString & X ) {
15 if( X[0] == '"' ) { 15 if( X[0] == '"' ) {
16 // remove end and trailing "" and \x -> x 16 // remove end and trailing "" and \x -> x
17 QChar R; 17 QChar R;
18 long idx; 18 long idx;
19 idx = X.length()-1; 19 idx = X.length()-1;
20 X = X.mid( 1, idx ); 20 X = X.mid( 1, idx );
21 21
22 idx = 0; 22 idx = 0;
23 while( ( idx = X.find( '\\', idx ) ) >= 0 ) { 23 while( ( idx = X.find( '\\', idx ) ) >= 0 ) {
24 R = X[idx+1]; 24 R = X[idx+1];
25 X.replace( idx, 2, &R, 1 ); 25 X.replace( idx, 2, &R, 1 );
26 } 26 }
27 X = X.left( X.length()-1 ); 27 X = X.left( X.length()-1 );
28 } 28 }
29 return X; 29 return X;
30} 30}
31 31
32QString quote( QString X ) { 32QString quote( QString X ) {
33 if( X.find( QRegExp( "[ \n\"\\\t]" ) ) >= 0 ) { 33 if( X.find( QRegExp( "[ \n\"\\\t]" ) ) >= 0 ) {
34 // need to quote this 34 // need to quote this
35 QString OutString = "\""; 35 QString OutString = "\"";
36 36
37 X.replace( QRegExp("\""), "\\\"" ); 37 X.replace( QRegExp("\""), "\\\"" );
38 X.replace( QRegExp("\\"), "\\\\" ); 38 X.replace( QRegExp("\\"), "\\\\" );
39 X.replace( QRegExp(" "), "\\ " ); 39 X.replace( QRegExp(" "), "\\ " );
40 40
41 OutString += X; 41 OutString += X;
42 OutString += "\""; 42 OutString += "\"";
43 X = OutString; 43 X = OutString;
44 } 44 }
45 return X; 45 return X;
46} 46}
47 47
48
49//
50//
51// ANETNODE
48// 52//
49// 53//
54
55void ANetNode::saveAttributes( QTextStream & TS ) {
56 saveSpecificAttribute( TS );
57}
58
59void ANetNode::setAttribute( QString & Attr, QString & Value ){
60 setSpecificAttribute( Attr, Value );
61}
62
63//
50// 64//
65// ANETNODEINSTANCE
51// 66//
52// 67//
53 68
54long ANetNodeInstance::InstanceCounter = -1; 69long ANetNodeInstance::InstanceCounter = -1;
55 70
56void ANetNodeInstance::initialize( void ) { 71void ANetNodeInstance::initialize( void ) {
57 if( InstanceCounter == -1 ) 72 if( InstanceCounter == -1 )
58 InstanceCounter = time(0); 73 InstanceCounter = time(0);
59 // set name 74 // set name
60 QString N; 75 QString N;
61 N.sprintf( "-%ld", InstanceCounter++ ); 76 N.sprintf( "-%ld", InstanceCounter++ );
62 N.prepend( NodeType->nodeName() ); 77 N.prepend( NodeType->nodeName() );
63 setNodeName( N ); 78 setNodeName( N );
64} 79}
65 80
66void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){ 81void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){
67 if( Attr == "name" ) { 82 if( Attr == "name" ) {
68 NodeName = Value; 83 NodeName = Value;
69 } else { 84 } else {
70 setSpecificAttribute( Attr, Value ); 85 setSpecificAttribute( Attr, Value );
71 } 86 }
72} 87}
73 88
74void ANetNodeInstance::saveAttributes( QTextStream & TS ) { 89void ANetNodeInstance::saveAttributes( QTextStream & TS ) {
75 TS << "name=" << quote( NodeName ) << endl; 90 TS << "name=" << quote( NodeName ) << endl;
76 saveSpecificAttribute( TS ); 91 saveSpecificAttribute( TS );
77} 92}
78 93
79ANetNodeInstance * ANetNodeInstance::nextNode( void ) { 94ANetNodeInstance * ANetNodeInstance::nextNode( void ) {
80 return connection()->findNext( this ); 95 return connection()->findNext( this );
81} 96}
82 97
83// 98//
84// 99//
85// 100// NODECOLLECTION
86// 101//
87// 102//
88 103
89long NodeCollection::MaxNr = -1; 104long NodeCollection::MaxNr = -1;
90 105
91NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() { 106NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() {
92 IsModified = 0; 107 IsModified = 0;
93 Index = -1; 108 Index = -1;
94 Name=""; 109 Name="";
95 IsNew = 1; 110 IsNew = 1;
96 CurrentState = Unchecked; 111 CurrentState = Unchecked;
97} 112}
98 113
99NodeCollection::NodeCollection( QTextStream & TS ) : 114NodeCollection::NodeCollection( QTextStream & TS ) :
100 QList<ANetNodeInstance>() { 115 QList<ANetNodeInstance>() {
101 long idx; 116 long idx;
102 bool InError = 0; 117 bool InError = 0;
103 QString S, A, N; 118 QString S, A, N;
104 IsModified = 0; 119 IsModified = 0;
105 Index = -1; 120 Index = -1;
106 Name=""; 121 Name="";
107 IsNew = 0; 122 IsNew = 0;
108 CurrentState = Unchecked; 123 CurrentState = Unchecked;
109 124
110 do { 125 do {
111 S = TS.readLine(); 126 S = TS.readLine();
112 if( S.isEmpty() ) { 127 if( S.isEmpty() ) {
113 if( InError ) { 128 if( InError ) {
114 // remove all nodes 129 // remove all nodes
115 clear(); 130 clear();
116 } 131 }
117 // empty line 132 // empty line
118 break; 133 break;
119 } 134 }
120 135
121 idx = S.find('='); 136 idx = S.find('=');
122 S.stripWhiteSpace(); 137 S.stripWhiteSpace();
123 A = S.left( idx ); 138 A = S.left( idx );
124 A.lower(); 139 A.lower();
125 N = S.mid( idx+1, S.length() ); 140 N = S.mid( idx+1, S.length() );
126 N.stripWhiteSpace(); 141 N.stripWhiteSpace();
127 N = deQuote( N ); 142 N = deQuote( N );
128 143
129 if( A == "name" ) { 144 if( A == "name" ) {
130 Name = N; 145 Name = N;
131 } else if( A == "number" ) { 146 } else if( A == "number" ) {
132 setNumber( N.toLong() ); 147 setNumber( N.toLong() );
133 } else if( A == "node" ) { 148 } else if( A == "node" ) {
134 ANetNodeInstance * NNI = NSResources->findNodeInstance( N ); 149 ANetNodeInstance * NNI = NSResources->findNodeInstance( N );
135 if( NNI && ! InError ) { 150 if( NNI && ! InError ) {
136 append( NSResources->findNodeInstance( N ) ); 151 append( NSResources->findNodeInstance( N ) );
137 } else { 152 } else {
138 // could not find a node type -> collection invalid 153 // could not find a node type -> collection invalid
139 InError = 1; 154 InError = 1;
140 } 155 }
141 } 156 }
142 } while( 1 ); 157 } while( 1 );
143} 158}
144 159
145 160
146NodeCollection::~NodeCollection( void ) { 161NodeCollection::~NodeCollection( void ) {
147} 162}
148 163
149const QString & NodeCollection::description( void ) { 164const QString & NodeCollection::description( void ) {
150 ANetNodeInstance * NNI = getToplevel(); 165 ANetNodeInstance * NNI = getToplevel();
151 return (NNI) ? NNI->runtime()->asFullSetup()->description() : Name; 166 return (NNI) ? NNI->runtime()->asFullSetup()->description() : Name;
152} 167}
153 168
154void NodeCollection::append( ANetNodeInstance * NNI ) { 169void NodeCollection::append( ANetNodeInstance * NNI ) {
155 NNI->setConnection( this ); 170 NNI->setConnection( this );
156 QList<ANetNodeInstance>::append( NNI ); 171 QList<ANetNodeInstance>::append( NNI );
157} 172}
158 173
159void NodeCollection::save( QTextStream & TS ) { 174void NodeCollection::save( QTextStream & TS ) {
160 175
161 TS << "name=" << quote( Name ) << endl; 176 TS << "name=" << quote( Name ) << endl;
162 TS << "number=" << number() << endl; 177 TS << "number=" << number() << endl;
163 ANetNodeInstance * NNI; 178 ANetNodeInstance * NNI;
164 for( QListIterator<ANetNodeInstance> it(*this); 179 for( QListIterator<ANetNodeInstance> it(*this);
165 it.current(); 180 it.current();
166 ++it ) { 181 ++it ) {
167 NNI = it.current(); 182 NNI = it.current();
168 TS << "node=" << quote( NNI->nodeName() ) << endl; 183 TS << "node=" << quote( NNI->nodeName() ) << endl;
169 } 184 }
170 TS << endl; 185 TS << endl;
171 IsNew = 0; 186 IsNew = 0;
172} 187}
173 188
174ANetNodeInstance * NodeCollection::getToplevel( void ) { 189ANetNodeInstance * NodeCollection::getToplevel( void ) {
175 ANetNodeInstance * NNI = 0; 190 ANetNodeInstance * NNI = 0;
176 for( QListIterator<ANetNodeInstance> it(*this); 191 for( QListIterator<ANetNodeInstance> it(*this);
177 it.current(); 192 it.current();
178 ++it ) { 193 ++it ) {
179 NNI = it.current(); 194 NNI = it.current();
180 if( NNI->nodeClass()->isToplevel() ) 195 if( NNI->nodeClass()->isToplevel() )
181 break; 196 break;
182 } 197 }
183 return NNI; 198 return NNI;
184} 199}
185 200
186ANetNodeInstance * NodeCollection::findByName( const QString & S ) { 201ANetNodeInstance * NodeCollection::findByName( const QString & S ) {
187 ANetNodeInstance * NNI = 0; 202 ANetNodeInstance * NNI = 0;
188 for( QListIterator<ANetNodeInstance> it(*this); 203 for( QListIterator<ANetNodeInstance> it(*this);
189 it.current(); 204 it.current();
190 ++it ) { 205 ++it ) {
191 NNI = it.current(); 206 NNI = it.current();
192 if( NNI->name() == S ) 207 if( NNI->name() == S )
193 break; 208 break;
194 } 209 }
195 return NNI; 210 return NNI;
196} 211}
197 212
198ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) { 213ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) {
199 ANetNodeInstance * NNNI; 214 ANetNodeInstance * NNNI;
200 215
201 if( ! NNI ) 216 if( ! NNI )
202 getToplevel(); 217 getToplevel();
203 218
204 for( QListIterator<ANetNodeInstance> it(*this); 219 for( QListIterator<ANetNodeInstance> it(*this);
205 it.current(); 220 it.current();
206 ++it ) { 221 ++it ) {
207 NNNI = it.current(); 222 NNNI = it.current();
208 if( NNNI == NNI ) { 223 if( NNNI == NNI ) {
209 ++it; 224 ++it;
210 return it.current(); 225 return it.current();
211 } 226 }
212 } 227 }
213 return 0; // no more next 228 return 0; // no more next
214} 229}
215 230
216int NodeCollection::compareItems( QCollection::Item I1, 231int NodeCollection::compareItems( QCollection::Item I1,
217 QCollection::Item I2 ) { 232 QCollection::Item I2 ) {
218 ANetNodeInstance * NNI1, * NNI2; 233 ANetNodeInstance * NNI1, * NNI2;
219 NNI1 = (ANetNodeInstance *)I1; 234 NNI1 = (ANetNodeInstance *)I1;
220 NNI2 = (ANetNodeInstance *)I2; 235 NNI2 = (ANetNodeInstance *)I2;
221 return NNI1->nodeName().compare( NNI2->nodeName() ); 236 return NNI1->nodeName().compare( NNI2->nodeName() );
222} 237}
223 238
224static char * State2PixmapTbl[] = { 239static char * State2PixmapTbl[] = {
225 "NULL", // Unchecked : no pixmap 240 "NULL", // Unchecked : no pixmap
226 "check", // Unknown 241 "check", // Unknown
227 "delete", // unavailable 242 "delete", // unavailable
228 "disabled", // disabled 243 "disabled", // disabled
229 "off", // off 244 "off", // off
230 "disconnected", // available 245 "disconnected", // available
231 "connected" // up 246 "connected" // up
232}; 247};
233 248
234QPixmap NodeCollection::devicePixmap( void ) { 249QPixmap NodeCollection::devicePixmap( void ) {
235 return NSResources->getPixmap( 250 return NSResources->getPixmap(
236 device()->netNode()->pixmapName()+"-large" ); 251 device()->netNode()->pixmapName()+"-large" );
237} 252}
238 253
239QPixmap NodeCollection::statePixmap( State_t S) { 254QPixmap NodeCollection::statePixmap( State_t S) {
240 return NSResources->getPixmap( State2PixmapTbl[S] ); 255 return NSResources->getPixmap( State2PixmapTbl[S] );
241} 256}
242 257
243QString NodeCollection::stateName( State_t S) { 258QString NodeCollection::stateName( State_t S) {
244 switch( S ) { 259 switch( S ) {
245 case Unknown : 260 case Unknown :
246 return qApp->translate( "networksettings2", "Unknown"); 261 return qApp->translate( "networksettings2", "Unknown");
247 case Unavailable : 262 case Unavailable :
248 return qApp->translate( "networksettings2", "Unavailable"); 263 return qApp->translate( "networksettings2", "Unavailable");
249 case Disabled : 264 case Disabled :
250 return qApp->translate( "networksettings2", "Disabled"); 265 return qApp->translate( "networksettings2", "Disabled");
251 case Off : 266 case Off :
252 return qApp->translate( "networksettings2", "Off"); 267 return qApp->translate( "networksettings2", "Off");
253 case Available : 268 case Available :
254 return qApp->translate( "networksettings2", "Available"); 269 return qApp->translate( "networksettings2", "Available");
255 case IsUp : 270 case IsUp :
256 return qApp->translate( "networksettings2", "IsUp"); 271 return qApp->translate( "networksettings2", "IsUp");
257 case Unchecked : /* FT */ 272 case Unchecked : /* FT */
258 default : 273 default :
259 break; 274 break;
260 } 275 }
261 return QString(""); 276 return QString("");
262} 277}
263 278
264void NodeCollection::reassign( void ) { 279void NodeCollection::reassign( void ) {
265 for( QListIterator<ANetNodeInstance> it(*this); 280 for( QListIterator<ANetNodeInstance> it(*this);
266 it.current(); 281 it.current();
267 ++it ) { 282 ++it ) {
268 it.current()->setConnection( this ); 283 it.current()->setConnection( this );
269 } 284 }
270} 285}
271 286
287//
288//
289// RUNTIMEINFO
290//
291//
292
272InterfaceInfo * RuntimeInfo::assignedInterface( void ) { 293InterfaceInfo * RuntimeInfo::assignedInterface( void ) {
273 return netNode()->nextNode()->runtime()->assignedInterface(); 294 return netNode()->nextNode()->runtime()->assignedInterface();
274} 295}
275 296
276AsDevice * RuntimeInfo::device( void ) { 297AsDevice * RuntimeInfo::device( void ) {
277 return netNode()->nextNode()->runtime()->device(); 298 return netNode()->nextNode()->runtime()->device();
278} 299}
279
280ANetNodeInstance * FakeNetNode::createInstance( void ) {
281 return new FakeNetNodeInstance( this );
282}
283
284void FakeNetNodeInstance::setSpecificAttribute(
285 QString & A, QString & V ) {
286 ValAttrPairs.insert( A, new QString(V) );
287}
288
289void FakeNetNodeInstance::saveSpecificAttribute( QTextStream &TS ) {
290 for( QDictIterator<QString> it( ValAttrPairs );
291 it.current();
292 ++ it ) {
293 TS << it.currentKey().latin1()
294 << "="
295 << quote( *(it.current()))
296 << endl ;
297 ++it;
298 }
299}
300
301// collects all info that no plugin acceps
302FakeNetNode * FakeNode = 0;
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.h b/noncore/settings/networksettings2/networksettings2/netnode.h
index 9681c6e..6ec9ef6 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.h
+++ b/noncore/settings/networksettings2/networksettings2/netnode.h
@@ -1,465 +1,389 @@
1#ifndef NETNODE_H 1#ifndef NETNODE_H
2#define NETNODE_H 2#define NETNODE_H
3 3
4#include <qtextstream.h> 4#include <qtextstream.h>
5#include <qlist.h> 5#include <qlist.h>
6#include <qdict.h> 6#include <qdict.h>
7#include <qpixmap.h> 7#include <qpixmap.h>
8#include <qobject.h> 8#include <qobject.h>
9#include <time.h> 9#include <time.h>
10 10
11// difference feature interfaces 11// difference feature interfaces
12class AsDevice; 12class AsDevice;
13class AsLine; 13class AsLine;
14class AsConnection; 14class AsConnection;
15class AsFullSetup; 15class AsFullSetup;
16 16
17// needed for plugin creation function 17// needed for plugin creation function
18#include <qlist.h> 18#include <qlist.h>
19 19
20class ANetNode; 20class ANetNode;
21class ANetNodeInstance; 21class ANetNodeInstance;
22class NodeCollection; 22class NodeCollection;
23class QTextStream; 23class QTextStream;
24class RuntimeInfo; 24class RuntimeInfo;
25class InterfaceInfo; 25class InterfaceInfo;
26 26
27extern QString & deQuote( QString & X ); 27extern QString & deQuote( QString & X );
28extern QString quote( QString X ); 28extern QString quote( QString X );
29 29
30#include "systemfile.h" 30#include "systemfile.h"
31 31
32typedef enum State { 32typedef enum State {
33 // if we have not yet detected the state of the device 33 // if we have not yet detected the state of the device
34 Unchecked = 0, 34 Unchecked = 0,
35 // if we cannot determine the state 35 // if we cannot determine the state
36 Unknown = 1, 36 Unknown = 1,
37 // if connection cannot be established e.g. because 37 // if connection cannot be established e.g. because
38 // the hardware is not available 38 // the hardware is not available
39 Unavailable = 2, 39 Unavailable = 2,
40 // if the connection cannot be establishec but NOT 40 // if the connection cannot be establishec but NOT
41 // because it is physically impossible but because 41 // because it is physically impossible but because
42 // it has been disabled for FUNCTIONAL reasons 42 // it has been disabled for FUNCTIONAL reasons
43 Disabled = 3, 43 Disabled = 3,
44 // if connection is available to is currently down 44 // if connection is available to is currently down
45 // i.e. the corresponding hardware is not activated 45 // i.e. the corresponding hardware is not activated
46 Off = 4, 46 Off = 4,
47 // if connection is available to be used (i.e. the 47 // if connection is available to be used (i.e. the
48 // devices if fully ready to be used 48 // devices if fully ready to be used
49 Available = 5, 49 Available = 5,
50 // if connection is being used 50 // if connection is being used
51 IsUp = 6 51 IsUp = 6
52} State_t; 52} State_t;
53 53
54typedef enum Action { 54typedef enum Action {
55 // to make the device unavailable functionally 55 // to make the device unavailable functionally
56 Disable = 0, 56 Disable = 0,
57 // to make the device available functionally 57 // to make the device available functionally
58 Enable = 1, 58 Enable = 1,
59 // bring the hardware up 59 // bring the hardware up
60 Activate = 2, 60 Activate = 2,
61 // bring the hardware down 61 // bring the hardware down
62 Deactivate = 3, 62 Deactivate = 3,
63 // bring the connection up 63 // bring the connection up
64 Up = 4, 64 Up = 4,
65 // bring the connection down 65 // bring the connection down
66 Down = 5 66 Down = 5
67} Action_t; 67} Action_t;
68 68
69class ANetNode : public QObject{ 69class ANetNode : public QObject{
70 70
71public: 71public:
72 72
73 typedef QArray<ANetNode *> NetNodeList; 73 typedef QArray<ANetNode *> NetNodeList;
74 74
75 ANetNode(){}; 75 ANetNode(){};
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 81 // name of this NetNode
82 virtual const QString nodeName() = 0; 82 virtual const QString nodeName() = 0;
83 83
84 // description for this NetNode 84 // description for this NetNode
85 virtual const QString nodeDescription() = 0; 85 virtual const QString nodeDescription() = 0;
86 86
87 // create a blank instance of a net node 87 // create a blank instance of a net node
88 virtual ANetNodeInstance * createInstance( void ) = 0; 88 virtual ANetNodeInstance * createInstance( void ) = 0;
89 89
90 // return feature this NetNode provides 90 // return feature this NetNode provides
91 virtual const char * provides( void ) = 0; 91 virtual const char * provides( void ) = 0;
92 virtual const char ** needs( void ) = 0; 92 virtual const char ** needs( void ) = 0;
93 93
94 // generate files specific for this node (if any) 94 // generate files specific for this node (if any)
95 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ) = 0; 95 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ) = 0;
96 // return TRUE if this node has data to be inserted in systemfile 96 // return TRUE if this node has data to be inserted in systemfile
97 // with name S 97 // with name S
98 virtual bool hasDataFor( const QString & S ) = 0; 98 virtual bool hasDataFor( const QString & S ) = 0;
99 // generate data specific for the device for the system file S 99 // generate data specific for the device for the system file S
100 // called only IF data was needed 100 // called only IF data was needed
101 virtual bool generateDeviceDataForCommonFile( 101 virtual bool generateDeviceDataForCommonFile(
102 SystemFile & SF, long DevNr ) = 0; 102 SystemFile & SF, long DevNr ) = 0;
103 103
104 // does this Node provide a Connection 104 // does this Node provide a Connection
105 bool isToplevel( void ) 105 bool isToplevel( void )
106 { return strcmp( provides(), "fullsetup") == 0 ; } 106 { return strcmp( provides(), "fullsetup") == 0 ; }
107 107
108 // generate NIC name based on instance nr 108 // generate NIC name based on instance nr
109 // only relevant if node instances are devices 109 // only relevant if node instances are devices
110 virtual QString genNic( long ) 110 virtual QString genNic( long )
111 { return QString(""); } 111 { return QString(""); }
112 112
113 // max number of instances for this node type 113 // max number of instances for this node type
114 // only relevant if node instances are devices 114 // only relevant if node instances are devices
115 virtual long instanceCount( void ) 115 virtual long instanceCount( void )
116 { return 1; } 116 { return 1; }
117 117
118 // set the value of an attribute
119 void setAttribute( QString & Attr, QString & Value ) ;
120 void saveAttributes( QTextStream & TS ) ;
121
118 // compiled references to 'needed' NetNodes -> needs list 122 // compiled references to 'needed' NetNodes -> needs list
119 void setAlternatives( NetNodeList * Alt ) 123 void setAlternatives( NetNodeList * Alt )
120 { Alternatives = Alt; } 124 { Alternatives = Alt; }
121 NetNodeList & alternatives( void ) 125 NetNodeList & alternatives( void )
122 { return *Alternatives; } 126 { return *Alternatives; }
123 127
124protected : 128protected :
125 129
126 NetNodeList * Alternatives; 130 NetNodeList * Alternatives;
127 131
128private : 132private :
133
134 virtual void setSpecificAttribute( QString & , QString & ) = 0;
135 virtual void saveSpecificAttribute( QTextStream & ) = 0;
136
129}; 137};
130 138
131class ANetNodeInstance : public QObject { 139class ANetNodeInstance : public QObject {
132 140
133public: 141public:
134 142
135 ANetNodeInstance( ANetNode * NN ) : QObject() 143 ANetNodeInstance( ANetNode * NN ) : QObject()
136 { IsModified=0; NodeType = NN; IsNew = TRUE; } 144 { IsModified=0; NodeType = NN; IsNew = TRUE; }
137 virtual ~ANetNodeInstance( void ) { } 145 virtual ~ANetNodeInstance( void ) { }
138 146
139 virtual RuntimeInfo * runtime( void ) = 0; 147 virtual RuntimeInfo * runtime( void ) = 0;
140 148
141 void setConnection( NodeCollection * NC ) 149 void setConnection( NodeCollection * NC )
142 { Connection = NC; } 150 { Connection = NC; }
143 NodeCollection * connection( void ) 151 NodeCollection * connection( void )
144 { return Connection; } 152 { return Connection; }
145 153
146 // create edit widget under parent 154 // create edit widget under parent
147 virtual QWidget * edit( QWidget * parent ) = 0; 155 virtual QWidget * edit( QWidget * parent ) = 0;
148 // is given data acceptable 156 // is given data acceptable
149 virtual QString acceptable( void ) = 0; 157 virtual QString acceptable( void ) = 0;
150 158
151 // return data was modified 159 // return data was modified
152 void setModified( bool M ) 160 void setModified( bool M )
153 { IsModified = M; } 161 { IsModified = M; }
154 bool isModified( void ) 162 bool isModified( void )
155 { return IsModified; } 163 { return IsModified; }
156 164
157 // get data from GUI and store in node 165 // get data from GUI and store in node
158 virtual void commit( void ) = 0; 166 virtual void commit( void ) = 0;
159 167
160 // get next node 168 // get next node
161 ANetNodeInstance * nextNode(); 169 ANetNodeInstance * nextNode();
162 // return NetNode this is an instance of 170 // return NetNode this is an instance of
163 ANetNode * nodeClass( void ) 171 ANetNode * nodeClass( void )
164 { return NodeType; } 172 { return NodeType; }
165 173
166 // intialize am instance of a net node 174 // intialize am instance of a net node
167 void initialize( void ); 175 void initialize( void );
168 176
169 // set the value of an attribute 177 // set the value of an attribute
170 void setAttribute( QString & Attr, QString & Value ) ; 178 void setAttribute( QString & Attr, QString & Value ) ;
171 void saveAttributes( QTextStream & TS ) ; 179 void saveAttributes( QTextStream & TS ) ;
172 180
173 // return true if node isntance is NEW and not loaded 181 // return true if node isntance is NEW and not loaded
174 void setNew( bool IsN ) 182 void setNew( bool IsN )
175 { IsNew = IsN; } 183 { IsNew = IsN; }
176 bool isNew( void ) 184 bool isNew( void )
177 { return IsNew; } 185 { return IsNew; }
178 186
179 // return logical name of this instance 187 // return logical name of this instance
180 QString & nodeName( void ) 188 QString & nodeName( void )
181 { return NodeName; } 189 { return NodeName; }
182 void setNodeName( const QString & S ) 190 void setNodeName( const QString & S )
183 { NodeName = S; } 191 { NodeName = S; }
184 // return description for this instance 192 // return description for this instance
185 QString & description( void ) 193 QString & description( void )
186 { return Description; } 194 { return Description; }
187 void setDescription( const QString & S ) 195 void setDescription( const QString & S )
188 { Description = S; } 196 { Description = S; }
189 197
190 // pixmap for this instance -> from NetNode 198 // pixmap for this instance -> from NetNode
191 const QString pixmapName( void ) 199 const QString pixmapName( void )
192 { return NodeType->pixmapName(); } 200 { return NodeType->pixmapName(); }
193 201
194 const char * provides( void ) 202 const char * provides( void )
195 { return NodeType->provides(); } 203 { return NodeType->provides(); }
196 204
197 const char ** needs( void ) 205 const char ** needs( void )
198 { return NodeType->needs(); } 206 { return NodeType->needs(); }
199 207
200 // returns node specific data -> only useful for 'buddy' 208 // returns node specific data -> only useful for 'buddy'
201 virtual void * data( void ) = 0; 209 virtual void * data( void ) = 0;
202 210
203 // return TRUE if this node has data to be inserted in systemfile 211 // return TRUE if this node has data to be inserted in systemfile
204 // with name S 212 // with name S
205 virtual bool hasDataFor( const QString & S ) = 0; 213 virtual bool hasDataFor( const QString & S ) = 0;
206 214
207 // generate data specific for a profile and for the system file S 215 // generate data specific for a profile and for the system file S
208 // called only IF data was needed 216 // called only IF data was needed
209 virtual bool generateDataForCommonFile( 217 virtual bool generateDataForCommonFile(
210 SystemFile & SF, long DevNr ) = 0; 218 SystemFile & SF, long DevNr ) = 0;
211 219
212protected : 220protected :
213 221
214 virtual void setSpecificAttribute( QString & , QString & ) = 0; 222 virtual void setSpecificAttribute( QString & , QString & ) = 0;
215 virtual void saveSpecificAttribute( QTextStream & ) = 0; 223 virtual void saveSpecificAttribute( QTextStream & ) = 0;
216 224
217 ANetNode * NodeType; 225 ANetNode * NodeType;
218 // connection to which this node belongs to 226 // connection to which this node belongs to
219 NodeCollection * Connection; 227 NodeCollection * Connection;
220 QString NodeName; 228 QString NodeName;
221 QString Description; 229 QString Description;
222 bool IsModified; 230 bool IsModified;
223 bool IsNew; 231 bool IsNew;
224 232
225 static long InstanceCounter; 233 static long InstanceCounter;
226}; 234};
227 235
228class RuntimeInfo : public QObject { 236class RuntimeInfo : public QObject {
229 237
230 Q_OBJECT 238 Q_OBJECT
231 239
232public : 240public :
233 241
234 RuntimeInfo( ANetNodeInstance * TheNNI ) 242 RuntimeInfo( ANetNodeInstance * TheNNI )
235 { NNI = TheNNI; } 243 { NNI = TheNNI; }
236 244
237 // downcast implemented by specify runtime classes 245 // downcast implemented by specify runtime classes
238 virtual AsDevice * asDevice( void ) 246 virtual AsDevice * asDevice( void )
239 { return 0; } 247 { return 0; }
240 virtual AsConnection * asConnection( void ) 248 virtual AsConnection * asConnection( void )
241 { return 0; } 249 { return 0; }
242 virtual AsLine * asLine( void ) 250 virtual AsLine * asLine( void )
243 { return 0; } 251 { return 0; }
244 virtual AsFullSetup * asFullSetup( void ) 252 virtual AsFullSetup * asFullSetup( void )
245 { return 0; } 253 { return 0; }
246 254
247 // does this node handles this interface e.g.eth0 255 // does this node handles this interface e.g.eth0
248 // recurse deeper if this node cannot answer that question 256 // recurse deeper if this node cannot answer that question
249 virtual bool handlesInterface( const QString & ) 257 virtual bool handlesInterface( const QString & )
250 { return 0; } 258 { return 0; }
251 virtual InterfaceInfo * assignedInterface( void ); 259 virtual InterfaceInfo * assignedInterface( void );
252 virtual AsDevice * device( void ); 260 virtual AsDevice * device( void );
253 261
254 ANetNodeInstance * netNode() 262 ANetNodeInstance * netNode()
255 { return NNI; } 263 { return NNI; }
256 NodeCollection * connection() 264 NodeCollection * connection()
257 { return NNI->connection(); } 265 { return NNI->connection(); }
258 266
259 virtual void detectState( NodeCollection * NC ) = 0; 267 virtual void detectState( NodeCollection * NC ) = 0;
260 virtual bool setState( NodeCollection * NC, Action_t A ) = 0; 268 virtual bool setState( NodeCollection * NC, Action_t A ) = 0;
261 virtual bool canSetState( State_t Curr, Action_t A ) = 0; 269 virtual bool canSetState( State_t Curr, Action_t A ) = 0;
262 270
263signals : 271signals :
264 272
265 // sent by device if state changes 273 // sent by device if state changes
266 void stateChanged( State_t S, ANetNodeInstance * NNI ); 274 void stateChanged( State_t S, ANetNodeInstance * NNI );
267 275
268protected : 276protected :
269 277
270 // connection this runtime info belongs to 278 // connection this runtime info belongs to
271 ANetNodeInstance * NNI; 279 ANetNodeInstance * NNI;
272}; 280};
273 281
274class NodeCollection : public QList<ANetNodeInstance> { 282class NodeCollection : public QList<ANetNodeInstance> {
275 283
276public : 284public :
277 285
278 NodeCollection( void ); 286 NodeCollection( void );
279 NodeCollection( QTextStream & TS ); 287 NodeCollection( QTextStream & TS );
280 ~NodeCollection( void ); 288 ~NodeCollection( void );
281 289
282 int number( void ) 290 int number( void )
283 { return Number; } 291 { return Number; }
284 void setNumber( int i ) 292 void setNumber( int i )
285 { Number = i; if( MaxNr < i ) MaxNr = i; } 293 { Number = i; if( MaxNr < i ) MaxNr = i; }
286 bool isNew( void ) 294 bool isNew( void )
287 { return IsNew; } 295 { return IsNew; }
288 void setNew( bool N ) 296 void setNew( bool N )
289 { IsNew = N ; } 297 { IsNew = N ; }
290 bool isModified( void ) 298 bool isModified( void )
291 { return IsModified; } 299 { return IsModified; }
292 void setModified( bool N ) 300 void setModified( bool N )
293 { IsModified = N ; } 301 { IsModified = N ; }
294 302
295 bool handlesInterface( const QString & S ) { 303 bool handlesInterface( const QString & S ) {
296 return getToplevel()->runtime()->handlesInterface( S ); 304 return getToplevel()->runtime()->handlesInterface( S );
297 } 305 }
298 306
299 InterfaceInfo * assignedInterface( void ) { 307 InterfaceInfo * assignedInterface( void ) {
300 return getToplevel()->runtime()->assignedInterface(); 308 return getToplevel()->runtime()->assignedInterface();
301 } 309 }
302 310
303 AsDevice * device() { 311 AsDevice * device() {
304 return getToplevel()->runtime()->device(); 312 return getToplevel()->runtime()->device();
305 } 313 }
306 314
307 State_t state( bool Update = 0 ) 315 State_t state( bool Update = 0 )
308 { if( CurrentState == Unchecked || Update ) { 316 { if( CurrentState == Unchecked || Update ) {
309 // need to get current state 317 // need to get current state
310 getToplevel()->runtime()->detectState( this ); 318 getToplevel()->runtime()->detectState( this );
311 } 319 }
312 return CurrentState; 320 return CurrentState;
313 } 321 }
314 322
315 // get the ixmap for this device 323 // get the ixmap for this device
316 QPixmap devicePixmap( void ); 324 QPixmap devicePixmap( void );
317 QPixmap statePixmap( State_t S ); 325 QPixmap statePixmap( State_t S );
318 QPixmap statePixmap( bool Update = 0 ) 326 QPixmap statePixmap( bool Update = 0 )
319 { return statePixmap( state(Update) ); } 327 { return statePixmap( state(Update) ); }
320 QString stateName( State_t ); 328 QString stateName( State_t );
321 QString stateName( bool Update = 0 ) 329 QString stateName( bool Update = 0 )
322 { return stateName( state(Update) ); } 330 { return stateName( state(Update) ); }
323 331
324 bool setState( Action_t A ) 332 bool setState( Action_t A )
325 { return getToplevel()->runtime()->setState( this, A ); } 333 { return getToplevel()->runtime()->setState( this, A ); }
326 bool canSetState( Action_t A ) 334 bool canSetState( Action_t A )
327 { return getToplevel()->runtime()->canSetState( CurrentState, A ); } 335 { return getToplevel()->runtime()->canSetState( CurrentState, A ); }
328 336
329 void save( QTextStream & TS ); 337 void save( QTextStream & TS );
330 338
331 void append( ANetNodeInstance * NNI ); 339 void append( ANetNodeInstance * NNI );
332 340
333 // makes sure that all items in the connection point to 341 // makes sure that all items in the connection point to
334 // that connectoin 342 // that connectoin
335 void reassign( void ); 343 void reassign( void );
336 344
337 ANetNodeInstance * getToplevel( void ); 345 ANetNodeInstance * getToplevel( void );
338 ANetNodeInstance * findNext( ANetNodeInstance * NNI ); 346 ANetNodeInstance * findNext( ANetNodeInstance * NNI );
339 ANetNodeInstance * findByName( const QString & S ); 347 ANetNodeInstance * findByName( const QString & S );
340 348
341 const QString & name() 349 const QString & name()
342 { return Name; } 350 { return Name; }
343 351
344 const QString & description( void ); 352 const QString & description( void );
345 353
346 void setName( const QString & N) 354 void setName( const QString & N)
347 { Name = N; } 355 { Name = N; }
348 356
349 State_t currentState( void ) 357 State_t currentState( void )
350 { return CurrentState; } 358 { return CurrentState; }
351 void setCurrentState( State_t S ) 359 void setCurrentState( State_t S )
352 { CurrentState = S; } 360 { CurrentState = S; }
353 361
354 long maxConnectionNumber( void ) 362 long maxConnectionNumber( void )
355 { return MaxNr; } 363 { return MaxNr; }
356 364
357 static void resetMaxNr( void ) 365 static void resetMaxNr( void )
358 { MaxNr = -1; } 366 { MaxNr = -1; }
359 367
360private : 368private :
361 369
362 int compareItems ( QCollection::Item item1, 370 int compareItems ( QCollection::Item item1,
363 QCollection::Item item2 ); 371 QCollection::Item item2 );
364 372
365 static long MaxNr; 373 static long MaxNr;
366 long Number; 374 long Number;
367 375
368 // state of this connection 376 // state of this connection
369 State_t CurrentState; 377 State_t CurrentState;
370 378
371 QString Name; 379 QString Name;
372 // true if this collection was just created (and not 380 // true if this collection was just created (and not
373 // loaded from file 381 // loaded from file
374 bool IsNew; 382 bool IsNew;
375 // index in listbox 383 // index in listbox
376 int Index; 384 int Index;
377 bool IsModified; 385 bool IsModified;
378 386
379}; 387};
380 388
381//
382// special node that is used to remember entries for plugins
383// that seem missing. This way we never loose data
384//
385
386class FakeNetNode : public ANetNode {
387
388public:
389
390 FakeNetNode( ) { };
391 virtual ~FakeNetNode(){};
392
393 const QString pixmapName()
394 { return QString(""); }
395 const QString nodeName()
396 { return QString("Fake node" ); }
397 const QString nodeDescription()
398 { return QString("Fake node" ); }
399 ANetNodeInstance * createInstance( void );
400 const char * provides( void )
401 { return ""; }
402 virtual const char ** needs( void )
403 { return 0; }
404 virtual bool generateProperFilesFor( ANetNodeInstance * )
405 { return 0; }
406 virtual bool hasDataFor( const QString & )
407 { return 0; }
408 virtual bool generateDeviceDataForCommonFile(
409 SystemFile & , long )
410 {return 1; }
411
412private :
413
414};
415
416class FakeNetNodeInstance : public ANetNodeInstance {
417
418public:
419
420 FakeNetNodeInstance( ANetNode * NN ) :
421 ANetNodeInstance( NN ), ValAttrPairs() { }
422 virtual ~FakeNetNodeInstance( void ) { }
423
424 virtual RuntimeInfo * runtime( void )
425 { return 0; }
426
427 // create edit widget under parent
428 virtual QWidget * edit( QWidget * )
429 { return 0; }
430 // is given data acceptable
431 virtual QString acceptable( void )
432 { return QString(""); }
433
434 // get data from GUI and store in node
435 virtual void commit( void ) {}
436
437 // get next node
438 ANetNodeInstance * nextNode()
439 { return 0; }
440 // return NetNode this is an instance of
441
442 // intialize am instance of a net node
443 void initialize( void ){}
444
445 // returns node specific data -> only useful for 'buddy'
446 virtual void * data( void )
447 { return 0; }
448
449 virtual bool hasDataFor( const QString & )
450 { return 0; }
451
452 virtual bool generateDataForCommonFile( SystemFile & , long )
453 { return 1; }
454
455protected :
456
457 virtual void setSpecificAttribute( QString & , QString & );
458 virtual void saveSpecificAttribute( QTextStream & );
459
460 QDict<QString> ValAttrPairs;
461};
462
463extern FakeNetNode * FakeNode;
464
465#endif 389#endif
diff --git a/noncore/settings/networksettings2/networksettings2/resources.h b/noncore/settings/networksettings2/networksettings2/resources.h
index 3048fb3..7050f10 100644
--- a/noncore/settings/networksettings2/networksettings2/resources.h
+++ b/noncore/settings/networksettings2/networksettings2/resources.h
@@ -1,128 +1,128 @@
1#ifndef __RESOURCES__H 1#ifndef __RESOURCES__H
2#define __RESOURCES__H 2#define __RESOURCES__H
3 3
4#include <qstring.h> 4#include <qstring.h>
5#include <qdict.h> 5#include <qdict.h>
6#include <qmap.h> 6#include <qmap.h>
7#include <qlist.h> 7#include <qlist.h>
8#include "netnode.h" 8#include "netnode.h"
9#include "systemfile.h" 9#include "systemfile.h"
10#include "system.h" 10#include "system.h"
11 11
12class QLibrary; 12class QLibrary;
13class QPixmap; 13class QPixmap;
14class ANetNode; 14class ANetNode;
15class ANetNodeInstance; 15class ANetNodeInstance;
16 16
17typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN ); 17typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN );
18 18
19typedef struct NetNode_S { 19typedef struct NetNode_S {
20 ANetNode * NetNode; 20 ANetNode * NetNode;
21 QLibrary * TheLibrary; 21 QLibrary * TheLibrary;
22 long NodeCountInLib; 22 long NodeCountInLib;
23} NetNode_t; 23} NetNode_t;
24 24
25class CurrentQPEUser { 25class CurrentQPEUser {
26 26
27public : 27public :
28 CurrentQPEUser() : UserName(), HomeDir(), EnvList() {} 28 CurrentQPEUser() : UserName(), HomeDir(), EnvList() {}
29 29
30 QString UserName; 30 QString UserName;
31 QString HomeDir; 31 QString HomeDir;
32 int Uid; 32 int Uid;
33 int Gid; 33 int Gid;
34 QArray<char *> EnvList; 34 QArray<char *> EnvList;
35}; 35};
36 36
37typedef QDict<NetNode_t> Name2NetNode_t; 37typedef QDict<NetNode_t> Name2NetNode_t;
38typedef QDict<ANetNodeInstance > Name2Instance_t; 38typedef QDict<ANetNodeInstance > Name2Instance_t;
39typedef QDict<NodeCollection> Name2Connection_t; 39typedef QDict<NodeCollection> Name2Connection_t;
40typedef QDict<SystemFile> Name2SystemFile_t; 40typedef QDict<SystemFile> Name2SystemFile_t;
41 41
42class TheNSResources { 42class TheNSResources {
43 43
44public : 44public :
45 45
46 TheNSResources( void ); 46 TheNSResources( void );
47 ~TheNSResources( ); 47 ~TheNSResources( );
48 48
49 System & system() 49 System & system()
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 )
59 { NetNode_t * NNT = AllNodeTypes.find(N);
60 return (NNT) ? NNT->NetNode : 0;
61 }
58 62
59 Name2SystemFile_t & systemFiles( void ) 63 Name2SystemFile_t & systemFiles( void )
60 { return SystemFiles; } 64 { return SystemFiles; }
61 void addSystemFile( SystemFile * SF ) 65 void addSystemFile( SystemFile * SF )
62 { SystemFiles.insert( SF->name(), SF ); } 66 { SystemFiles.insert( SF->name(), SF ); }
63 67
64 ANetNodeInstance * createNodeInstance( const QString & S ) 68 ANetNodeInstance * createNodeInstance( const QString & S )
65 { ANetNodeInstance * NNI = 0; 69 { ANetNodeInstance * NNI = 0;
66 NetNode_t * NNT = AllNodeTypes[S]; 70 NetNode_t * NNT = AllNodeTypes[S];
67 ANetNode * NN;
68 if( ! NNT ) { 71 if( ! NNT ) {
69 NN = FakeNode = 72 return 0;
70 ( FakeNode ) ? FakeNode : new FakeNetNode();
71 } else {
72 NN = NNT->NetNode;
73 } 73 }
74 NNI = NN->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->nodeName(), 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;
115 115
116 // all node type classes 116 // all node type classes
117 Name2NetNode_t AllNodeTypes; 117 Name2NetNode_t AllNodeTypes;
118 118
119 // all nodes 119 // all nodes
120 Name2Instance_t AllNodes; 120 Name2Instance_t AllNodes;
121 121
122 CurrentQPEUser CurrentUser; 122 CurrentQPEUser CurrentUser;
123}; 123};
124 124
125extern TheNSResources * _NSResources; 125extern TheNSResources * _NSResources;
126#define NSResources _NSResources 126#define NSResources _NSResources
127 127
128#endif 128#endif
diff --git a/noncore/settings/networksettings2/nsdata.cpp b/noncore/settings/networksettings2/nsdata.cpp
index b4d9aaa..13979ce 100644
--- a/noncore/settings/networksettings2/nsdata.cpp
+++ b/noncore/settings/networksettings2/nsdata.cpp
@@ -1,544 +1,579 @@
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/NETCONFIG",
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 S; 34 QString Line, S;
35 ANetNodeInstance* NNI;
36 QString Attr, Value; 35 QString Attr, Value;
37 long idx; 36 long idx;
38 37
39 QFile F( CfgFile ); 38 QFile F( CfgFile );
40 QTextStream TS( &F ); 39 QTextStream TS( &F );
41 40
42 do { 41 do {
43 42
44 if( ! F.open(IO_ReadOnly) ) 43 if( ! F.open(IO_ReadOnly) )
45 break; 44 break;
46 45
47 /* load the file -> 46 /* load the file ->
48 47
49 FORMAT : 48 FORMAT :
50 49
51 [NETNODETYPE] 50 [NETNODETYPE]
52 Entries ... 51 Entries ...
53 <EMPTYLINE> 52 <EMPTYLINE>
54 [connection] 53 [connection]
55 Name=Name 54 Name=Name
56 Node=Name 55 Node=Name
57 <EMPTYLINE> 56 <EMPTYLINE>
58 */ 57 */
59 while( ! TS.atEnd() ) { 58 while( ! TS.atEnd() ) {
60 S = TS.readLine(); 59 S = Line = TS.readLine();
61 60
62 if ( S.isEmpty() || S[0] != '[' ) 61 if ( S.isEmpty() || S[0] != '[' )
63 continue; 62 continue;
64 63
65 S = S.mid( 1, S.length()-2 ); 64 S = S.mid( 1, S.length()-2 );
66 65
67 if( ! NSResources ) { 66 if( ! NSResources ) {
68 continue; 67 continue;
69 } 68 }
70 69
71 if( S == "connection" ) { 70 if( S == "connection" ) {
72 // load connections -> collections of nodes 71 // load connections -> collections of nodes
73 NodeCollection * NC = new NodeCollection( TS ); 72 NodeCollection * NC = new NodeCollection( TS );
74 NSResources->addConnection( NC ); 73 NSResources->addConnection( NC );
75 } else { 74 } else {
76 // load nodes 75 ANetNode * NN = 0;
77 NNI = NSResources->createNodeInstance( S ); 76 ANetNodeInstance* NNI = 0;
78 if( ! NNI ) { 77 if( S.startsWith( "nodetype " ) ) {
79 printf( "SKIPPING %s\n", S.latin1() ); 78 S = S.mid( 9, S.length()-9-1 );
79 fprintf( stderr, "Node %s\n", S.latin1() );
80 // try to find netnode
81 NN = NSResources->findNetNode( S );
82 } else {
83 // try to find instance
84 NNI = NSResources->createNodeInstance( S );
80 } 85 }
81 86
82 do { 87 do {
83 S = TS.readLine(); 88 S = TS.readLine();
84 if( S.isEmpty() ) { 89
85 // empty line 90 if( NN || NNI ) {
86 break; 91 if( S.isEmpty() ) {
87 } 92 // empty line
88 // node found ? 93 break;
89 if( NNI ) { 94 }
90 idx = S.find( '=' ); 95 idx = S.find( '=' );
91 if( idx > 0 ) { 96 if( idx > 0 ) {
92 Attr = S.left( idx ); 97 Attr = S.left( idx );
93 Value = S.mid( idx+1, S.length() ); 98 Value = S.mid( idx+1, S.length() );
94 } else { 99 } else {
95 Value=""; 100 Value="";
96 Attr = S; 101 Attr = S;
97 } 102 }
98 103
99 Value.stripWhiteSpace(); 104 Value.stripWhiteSpace();
100 Attr.stripWhiteSpace(); 105 Attr.stripWhiteSpace();
101 Attr.lower(); 106 Attr.lower();
102 // dequote Attr 107 // dequote Attr
103 Value = deQuote(Value); 108 Value = deQuote(Value);
104 109
105 // set the attribute 110 if( NN ) {
106 NNI->setAttribute( Attr, Value ); 111 // set the attribute
112 NNI->setAttribute( Attr, Value );
113 } else {
114 // set the attribute
115 NNI->setAttribute( Attr, Value );
116 }
117 } else {
118 LeftOvers.append( Line );
119 // add empty line too as delimiter
120 if( S.isEmpty() ) {
121 // empty line
122 break;
123 }
107 } 124 }
108
109 } while( 1 ); 125 } while( 1 );
110 if( NNI ) { 126 if( NNI ) {
111 // loading from file -> exists 127 // loading from file -> exists
112 NNI->setNew( FALSE ); 128 NNI->setNew( FALSE );
113 NSResources->addNodeInstance( NNI ); 129 NSResources->addNodeInstance( NNI );
114 } 130 }
115 } 131 }
116 } 132 }
117 133
118 } while( 0 ); 134 } while( 0 );
119 135
120} 136}
121 137
122QString NetworkSettingsData::saveSettings( void ) { 138QString NetworkSettingsData::saveSettings( void ) {
123 QString ErrS = ""; 139 QString ErrS = "";
124 140
125 if( ! isModified() ) 141 if( ! isModified() )
126 return ErrS; 142 return ErrS;
127 143
128 QString S; 144 QString S;
129 QFile F( CfgFile + ".bup" ); 145 QFile F( CfgFile + ".bup" );
130 146
131 printf( "Saving settings to %s\n", CfgFile.latin1() ); 147 printf( "Saving settings to %s\n", CfgFile.latin1() );
132 if( ! F.open( IO_WriteOnly | IO_Truncate ) ) { 148 if( ! F.open( IO_WriteOnly | IO_Truncate ) ) {
133 ErrS = qApp->translate( "NetworkSettings", 149 ErrS = qApp->translate( "NetworkSettings",
134 "<p>Could not save setup to \"%1\" !</p>" ). 150 "<p>Could not save setup to \"%1\" !</p>" ).
135 arg(CfgFile); 151 arg(CfgFile);
136 // problem 152 // problem
137 return ErrS; 153 return ErrS;
138 } 154 }
139 155
140 QTextStream TS( &F ); 156 QTextStream TS( &F );
157
158 // save leftovers
159 for ( QStringList::Iterator it = LeftOvers.begin();
160 it != LeftOvers.end(); ++it ) {
161 TS << (*it) << endl;
162 }
163
164 // save global configs
165 for( QDictIterator<NetNode_t> it( NSResources->netNodes() );
166 it.current();
167 ++it ) {
168 TS << "[nodetype "
169 << it.current()->NetNode->name()
170 << "]"
171 << endl;
172
173 it.current()->NetNode->saveAttributes( TS );
174 }
175
141 { Name2Connection_t & M = NSResources->connections(); 176 { Name2Connection_t & M = NSResources->connections();
142 ANetNodeInstance * NNI; 177 ANetNodeInstance * NNI;
143 178
144 // for all connections 179 // for all connections
145 for( QDictIterator<NodeCollection> it(M); 180 for( QDictIterator<NodeCollection> it(M);
146 it.current(); 181 it.current();
147 ++it ) { 182 ++it ) {
148 // all nodes in those connections 183 // all nodes in those connections
149 for( QListIterator<ANetNodeInstance> nit(*(it.current())); 184 for( QListIterator<ANetNodeInstance> nit(*(it.current()));
150 nit.current(); 185 nit.current();
151 ++nit ) { 186 ++nit ) {
152 // header 187 // header
153 NNI = nit.current(); 188 NNI = nit.current();
154 TS << '[' <<NNI->nodeClass()->nodeName() << ']' << endl; 189 TS << '[' <<NNI->nodeClass()->nodeName() << ']' << endl;
155 NNI->saveAttributes( TS ); 190 NNI->saveAttributes( TS );
156 TS << endl; 191 TS << endl;
157 } 192 }
158 193
159 TS << "[connection]" << endl; 194 TS << "[connection]" << endl;
160 it.current()->save(TS); 195 it.current()->save(TS);
161 } 196 }
162 } 197 }
163 198
164 QDir D("."); 199 QDir D(".");
165 D.rename( CfgFile + ".bup", CfgFile ); 200 D.rename( CfgFile + ".bup", CfgFile );
166 201
167 // 202 //
168 // proper files AND system files regenerated 203 // proper files AND system files regenerated
169 // 204 //
170 205
171 setModified( 0 ); 206 setModified( 0 );
172 return ErrS; 207 return ErrS;
173} 208}
174 209
175QString NetworkSettingsData::generateSettings( bool ForceReq ) { 210QString NetworkSettingsData::generateSettings( bool ForceReq ) {
176 bool ForceIt; 211 bool ForceIt;
177 QString S = ""; 212 QString S = "";
178 213
179 // include own force flag 214 // include own force flag
180 ForceIt = (Force) ? 1 : ForceReq; 215 ForceIt = (Force) ? 1 : ForceReq;
181 216
182 if( ! ForceIt && ! isModified() ) 217 if( ! ForceIt && ! isModified() )
183 return S; 218 return S;
184 219
185 // regenerate system files 220 // regenerate system files
186 fprintf( stderr, "Generating settings from %s\n", CfgFile.latin1() ); 221 fprintf( stderr, "Generating settings from %s\n", CfgFile.latin1() );
187 222
188 { Name2SystemFile_t & SFM = NSResources->systemFiles(); 223 { Name2SystemFile_t & SFM = NSResources->systemFiles();
189 Name2Connection_t & M = NSResources->connections(); 224 Name2Connection_t & M = NSResources->connections();
190 NodeCollection * NC; 225 NodeCollection * NC;
191 ANetNodeInstance * NNI; 226 ANetNodeInstance * NNI;
192 SystemFile * SF; 227 SystemFile * SF;
193 AsDevice * CurDev; 228 AsDevice * CurDev;
194 ANetNode * CurDevNN; 229 ANetNode * CurDevNN;
195 bool needToRegenerate = ForceIt; 230 bool needToRegenerate = ForceIt;
196 231
197 // 232 //
198 // check if we need to generate at least one of the system files 233 // check if we need to generate at least one of the system files
199 // 234 //
200 if( ! ForceIt ) { 235 if( ! ForceIt ) {
201 for( QDictIterator<SystemFile> sfit(SFM); 236 for( QDictIterator<SystemFile> sfit(SFM);
202 sfit.current(); 237 sfit.current();
203 ++sfit ) { 238 ++sfit ) {
204 SF = sfit.current(); 239 SF = sfit.current();
205 240
206 // check if there are nodes that are modified and require 241 // check if there are nodes that are modified and require
207 // data for this system file 242 // data for this system file
208 243
209 // for all connections 244 // for all connections
210 for( QDictIterator<NodeCollection> ncit(M); 245 for( QDictIterator<NodeCollection> ncit(M);
211 ncit.current(); 246 ncit.current();
212 ++ncit ) { 247 ++ncit ) {
213 NC = ncit.current(); 248 NC = ncit.current();
214 249
215 if( NC->isModified() ) { 250 if( NC->isModified() ) {
216 // does this connection 'touch' this system file ? 251 // does this connection 'touch' this system file ?
217 for( QListIterator<ANetNodeInstance> cncit(*NC); 252 for( QListIterator<ANetNodeInstance> cncit(*NC);
218 cncit.current(); 253 cncit.current();
219 ++cncit ) { 254 ++cncit ) {
220 NNI = cncit.current(); 255 NNI = cncit.current();
221 if( ( NNI->nodeClass()->hasDataFor( SF->name() ) || 256 if( ( NNI->nodeClass()->hasDataFor( SF->name() ) ||
222 NNI->hasDataFor( SF->name() ) 257 NNI->hasDataFor( SF->name() )
223 ) && 258 ) &&
224 NNI->isModified() ) { 259 NNI->isModified() ) {
225 needToRegenerate = 1; 260 needToRegenerate = 1;
226 break; 261 break;
227 } 262 }
228 } 263 }
229 } 264 }
230 if( needToRegenerate ) 265 if( needToRegenerate )
231 break; 266 break;
232 } 267 }
233 if( needToRegenerate ) 268 if( needToRegenerate )
234 break; 269 break;
235 } 270 }
236 } 271 }
237 272
238 // we cannot renumber with a FORCE request since 273 // we cannot renumber with a FORCE request since
239 // we probably are NOT going to save the config 274 // we probably are NOT going to save the config
240 // e.g. when using --regen option 275 // e.g. when using --regen option
241 if( ! ForceReq && needToRegenerate ) { 276 if( ! ForceReq && needToRegenerate ) {
242 NSResources->renumberConnections(); 277 NSResources->renumberConnections();
243 setModified(1); 278 setModified(1);
244 } 279 }
245 280
246 // 281 //
247 // generate files proper to each netnodeinstance 282 // generate files proper to each netnodeinstance
248 // 283 //
249 { Name2Instance_t & NNIs = NSResources->netNodeInstances(); 284 { Name2Instance_t & NNIs = NSResources->netNodeInstances();
250 285
251 for( QDictIterator<ANetNodeInstance> NNIIt(NNIs); 286 for( QDictIterator<ANetNodeInstance> NNIIt(NNIs);
252 NNIIt.current(); 287 NNIIt.current();
253 ++NNIIt 288 ++NNIIt
254 ){ 289 ){
255 // for all nodes find those that are modified 290 // for all nodes find those that are modified
256 NNI = NNIIt.current(); 291 NNI = NNIIt.current();
257 292
258 if( ForceIt || NNI->isModified() ) { 293 if( ForceIt || NNI->isModified() ) {
259 if( ! NNI->nodeClass()->generateProperFilesFor( NNI ) ) { 294 if( ! NNI->nodeClass()->generateProperFilesFor( NNI ) ) {
260 // problem generating 295 // problem generating
261 S = qApp->translate( "NetworkSettings", 296 S = qApp->translate( "NetworkSettings",
262 "<p>Cannot generate files proper to \"%1\"</p>" ). 297 "<p>Cannot generate files proper to \"%1\"</p>" ).
263 arg(NNI->nodeClass()->nodeName()) ; 298 arg(NNI->nodeClass()->nodeName()) ;
264 return S; 299 return S;
265 } 300 }
266 } 301 }
267 } 302 }
268 } 303 }
269 304
270 // 305 //
271 // generate all system files 306 // generate all system files
272 // 307 //
273 for( QDictIterator<SystemFile> sfit(SFM); 308 for( QDictIterator<SystemFile> sfit(SFM);
274 sfit.current(); 309 sfit.current();
275 ++sfit ) { 310 ++sfit ) {
276 SF = sfit.current(); 311 SF = sfit.current();
277 312
278 fprintf( stderr, "Generating %s\n", SF->name().latin1() ); 313 fprintf( stderr, "Generating %s\n", SF->name().latin1() );
279 SF->open(); 314 SF->open();
280 315
281 do { // so we can break; 316 do { // so we can break;
282 317
283 // global presection for this system file 318 // global presection for this system file
284 if( SF->preSection() ) { 319 if( SF->preSection() ) {
285 S = qApp->translate( "NetworkSettings", 320 S = qApp->translate( "NetworkSettings",
286 "<p>Error in preSection for file \"%1\"</p>" ). 321 "<p>Error in preSection for file \"%1\"</p>" ).
287 arg( SF->name() ); 322 arg( SF->name() );
288 return S; 323 return S;
289 } 324 }
290 325
291 // find all netnodes and figure out if 326 // find all netnodes and figure out if
292 // for that node there are instances 327 // for that node there are instances
293 for( QDictIterator<NetNode_t> nnit( 328 for( QDictIterator<NetNode_t> nnit(
294 NSResources->netNodes() ); 329 NSResources->netNodes() );
295 nnit.current(); 330 nnit.current();
296 ++nnit ) { 331 ++nnit ) {
297 332
298 CurDevNN = nnit.current()->NetNode; 333 CurDevNN = nnit.current()->NetNode;
299 334
300 // are there instances for this netnode ? 335 // are there instances for this netnode ?
301 NNI = 0; 336 NNI = 0;
302 for( QDictIterator<ANetNodeInstance> nniit( 337 for( QDictIterator<ANetNodeInstance> nniit(
303 NSResources->netNodeInstances() ); 338 NSResources->netNodeInstances() );
304 nniit.current(); 339 nniit.current();
305 ++nniit ) { 340 ++nniit ) {
306 if( nniit.current()->nodeClass() == CurDevNN ) { 341 if( nniit.current()->nodeClass() == CurDevNN ) {
307 NNI = nniit.current(); 342 NNI = nniit.current();
308 break; 343 break;
309 } 344 }
310 } 345 }
311 346
312 if( ! NNI ) 347 if( ! NNI )
313 // no instances -> next netnode type 348 // no instances -> next netnode type
314 continue; 349 continue;
315 350
316 // has this node data for this system file ? 351 // has this node data for this system file ?
317 if( (CurDev = NNI->runtime()->asDevice() ) ) { 352 if( (CurDev = NNI->runtime()->asDevice() ) ) {
318 // generate start for this nodetype for all possible devices of this type 353 // generate start for this nodetype for all possible devices of this type
319 for( int i = 0; i < CurDevNN->instanceCount(); i ++ ) { 354 for( int i = 0; i < CurDevNN->instanceCount(); i ++ ) {
320 S = generateSystemFileNode( *SF, CurDev, NNI, i ); 355 S = generateSystemFileNode( *SF, CurDev, NNI, i );
321 if( ! S.isEmpty() ) 356 if( ! S.isEmpty() )
322 return S; 357 return S;
323 } 358 }
324 } else { 359 } else {
325 S = generateSystemFileNode( *SF, 0, NNI, -1 ); 360 S = generateSystemFileNode( *SF, 0, NNI, -1 );
326 if( ! S.isEmpty() ) 361 if( ! S.isEmpty() )
327 return S; 362 return S;
328 } 363 }
329 } 364 }
330 365
331 if( SF->postSection() ) { 366 if( SF->postSection() ) {
332 S = qApp->translate( "NetworkSettings", 367 S = qApp->translate( "NetworkSettings",
333 "<p>Error in postSection for file \"%1\"</p>" ). 368 "<p>Error in postSection for file \"%1\"</p>" ).
334 arg( SF->name() ); 369 arg( SF->name() );
335 return S; 370 return S;
336 } 371 }
337 372
338 } while( 0 ); 373 } while( 0 );
339 SF->close(); 374 SF->close();
340 } 375 }
341 } 376 }
342 Force = 0; 377 Force = 0;
343 return S; 378 return S;
344} 379}
345 380
346QList<NodeCollection> NetworkSettingsData::collectPossible( const char * Interface ) { 381QList<NodeCollection> NetworkSettingsData::collectPossible( const char * Interface ) {
347 // collect connections that can work on top of this interface 382 // collect connections that can work on top of this interface
348 NodeCollection * NC; 383 NodeCollection * NC;
349 QList<NodeCollection> PossibleConnections; 384 QList<NodeCollection> PossibleConnections;
350 Name2Connection_t & M = NSResources->connections(); 385 Name2Connection_t & M = NSResources->connections();
351 386
352 // for all connections 387 // for all connections
353 for( QDictIterator<NodeCollection> it(M); 388 for( QDictIterator<NodeCollection> it(M);
354 it.current(); 389 it.current();
355 ++it ) { 390 ++it ) {
356 NC = it.current(); 391 NC = it.current();
357 // check if this profile handles the requested interface 392 // check if this profile handles the requested interface
358 fprintf( stderr, "check %s\n", NC->name().latin1() ); 393 fprintf( stderr, "check %s\n", NC->name().latin1() );
359 if( NC->handlesInterface( Interface ) && // if different Intf. 394 if( NC->handlesInterface( Interface ) && // if different Intf.
360 NC->state() != Disabled && // if not enabled 395 NC->state() != Disabled && // if not enabled
361 NC->state() != IsUp // if already used 396 NC->state() != IsUp // if already used
362 ) { 397 ) {
363 fprintf( stderr, "Append %s\n", NC->name().latin1() ); 398 fprintf( stderr, "Append %s\n", NC->name().latin1() );
364 PossibleConnections.append( NC ); 399 PossibleConnections.append( NC );
365 } 400 }
366 } 401 }
367 return PossibleConnections; 402 return PossibleConnections;
368} 403}
369 404
370 405
371/* 406/*
372 Called by the system to see if interface can be brought UP 407 Called by the system to see if interface can be brought UP
373 408
374 if allowed, echo Interface-allowed else Interface-disallowed 409 if allowed, echo Interface-allowed else Interface-disallowed
375*/ 410*/
376 411
377bool NetworkSettingsData::canStart( const char * Interface ) { 412bool NetworkSettingsData::canStart( const char * Interface ) {
378 // load situation 413 // load situation
379 NodeCollection * NC = 0; 414 NodeCollection * NC = 0;
380 QList<NodeCollection> PossibleConnections; 415 QList<NodeCollection> PossibleConnections;
381 416
382 PossibleConnections = collectPossible( Interface ); 417 PossibleConnections = collectPossible( Interface );
383 418
384 fprintf( stderr, "Possiblilies %d\n", 419 fprintf( stderr, "Possiblilies %d\n",
385 PossibleConnections.count() ); 420 PossibleConnections.count() );
386 switch( PossibleConnections.count() ) { 421 switch( PossibleConnections.count() ) {
387 case 0 : // no connections 422 case 0 : // no connections
388 break; 423 break;
389 case 1 : // one connection 424 case 1 : // one connection
390 NC = PossibleConnections.first(); 425 NC = PossibleConnections.first();
391 break; 426 break;
392 default : // need to ask user ? 427 default : // need to ask user ?
393 return 1; 428 return 1;
394 } 429 }
395 430
396 if( NC ) { 431 if( NC ) {
397 switch( NC->state() ) { 432 switch( NC->state() ) {
398 case Unchecked : 433 case Unchecked :
399 case Unknown : 434 case Unknown :
400 case Unavailable : 435 case Unavailable :
401 case Disabled : 436 case Disabled :
402 // this profile does not allow interface to be UP 437 // this profile does not allow interface to be UP
403 // -> try others 438 // -> try others
404 break; 439 break;
405 case Off : 440 case Off :
406 // try to UP the device 441 // try to UP the device
407 if( ! NC->setState( Activate ) ) { 442 if( ! NC->setState( Activate ) ) {
408 // cannot bring device Online -> try other alters 443 // cannot bring device Online -> try other alters
409 break; 444 break;
410 } 445 }
411 // FT 446 // FT
412 case Available : 447 case Available :
413 case IsUp : // also called for 'ifdown' 448 case IsUp : // also called for 'ifdown'
414 // device is ready -> done 449 // device is ready -> done
415 printf( "%s-c%d-allowed\n", Interface, NC->number() ); 450 printf( "%s-c%d-allowed\n", Interface, NC->number() );
416 return 0; 451 return 0;
417 } 452 }
418 } 453 }
419 454
420 // if we come here no alternatives are possible 455 // if we come here no alternatives are possible
421 printf( "%s-cnn-disallowed\n", Interface ); 456 printf( "%s-cnn-disallowed\n", Interface );
422 return 0; 457 return 0;
423} 458}
424 459
425/* 460/*
426 Called by the system to regenerate config files 461 Called by the system to regenerate config files
427*/ 462*/
428 463
429bool NetworkSettingsData::regenerate( void ) { 464bool NetworkSettingsData::regenerate( void ) {
430 QString S; 465 QString S;
431 // load situation 466 // load situation
432 S = generateSettings( TRUE ); 467 S = generateSettings( TRUE );
433 if( ! S.isEmpty() ) { 468 if( ! S.isEmpty() ) {
434 fprintf( stdout, "%s\n", S.latin1() ); 469 fprintf( stdout, "%s\n", S.latin1() );
435 return 1; 470 return 1;
436 } 471 }
437 return 0; 472 return 0;
438} 473}
439 474
440QString NetworkSettingsData::generateSystemFileNode( 475QString NetworkSettingsData::generateSystemFileNode(
441 SystemFile &SF, 476 SystemFile &SF,
442 AsDevice * CurDev, 477 AsDevice * CurDev,
443 ANetNodeInstance * DevNNI, 478 ANetNodeInstance * DevNNI,
444 long DevInstNr ) { 479 long DevInstNr ) {
445 480
446 QString S=""; 481 QString S="";
447 ANetNode * CurDevNN = DevNNI->nodeClass(); 482 ANetNode * CurDevNN = DevNNI->nodeClass();
448 Name2Connection_t & M = NSResources->connections(); 483 Name2Connection_t & M = NSResources->connections();
449 484
450 if( SF.preDeviceSection( CurDevNN ) ) { 485 if( SF.preDeviceSection( CurDevNN ) ) {
451 S = qApp->translate( "NetworkSettings", 486 S = qApp->translate( "NetworkSettings",
452 "<p>Error in preDeviceSection for file \"%1\" and nodetype \"%2\"</p>" ). 487 "<p>Error in preDeviceSection for file \"%1\" and nodetype \"%2\"</p>" ).
453 arg( SF.name() ). 488 arg( SF.name() ).
454 arg( CurDevNN->nodeName() ); 489 arg( CurDevNN->nodeName() );
455 return S; 490 return S;
456 } 491 }
457 492
458 if( CurDevNN->hasDataFor( SF.name() ) ) { 493 if( CurDevNN->hasDataFor( SF.name() ) ) {
459 if( CurDevNN->generateDeviceDataForCommonFile( SF, DevInstNr ) ) { 494 if( CurDevNN->generateDeviceDataForCommonFile( SF, DevInstNr ) ) {
460 S = qApp->translate( "NetworkSettings", 495 S = qApp->translate( "NetworkSettings",
461 "<p>Error in node Device part for file \"%1\" and node \"%2\"</p>" ). 496 "<p>Error in node Device part for file \"%1\" and node \"%2\"</p>" ).
462 arg( SF.name() ). 497 arg( SF.name() ).
463 arg( CurDevNN->nodeName() ); 498 arg( CurDevNN->nodeName() );
464 return S; 499 return S;
465 } 500 }
466 } 501 }
467 502
468 if( CurDev ) 503 if( CurDev )
469 fprintf( stderr, "Cur %s\n", CurDevNN->nodeName().latin1() ); 504 fprintf( stderr, "Cur %s\n", CurDevNN->nodeName().latin1() );
470 else 505 else
471 fprintf( stderr, "Cur NO\n" ); 506 fprintf( stderr, "Cur NO\n" );
472 507
473 // now generate profile specific data for all 508 // now generate profile specific data for all
474 // connections working on a device of the current 509 // connections working on a device of the current
475 // netnode type 510 // netnode type
476 for( QDictIterator<NodeCollection> ncit(M); 511 for( QDictIterator<NodeCollection> ncit(M);
477 ncit.current(); 512 ncit.current();
478 ++ncit ) { 513 ++ncit ) {
479 NodeCollection * NC = ncit.current(); 514 NodeCollection * NC = ncit.current();
480 515
481 // currenly only those connections that work on 516 // currenly only those connections that work on
482 // the current device (or on no device if no current) 517 // the current device (or on no device if no current)
483 AsDevice * Dev = NC->device(); 518 AsDevice * Dev = NC->device();
484 519
485 fprintf( stderr, "%s\n", Dev->netNode()->nodeName().latin1() ); 520 fprintf( stderr, "%s\n", Dev->netNode()->nodeName().latin1() );
486 if( CurDev ) { 521 if( CurDev ) {
487 if( CurDevNN != Dev->netNode()->nodeClass() ) { 522 if( CurDevNN != Dev->netNode()->nodeClass() ) {
488 // other device type -> later 523 // other device type -> later
489 fprintf( stderr, "Other Dev type\n" ); 524 fprintf( stderr, "Other Dev type\n" );
490 continue; 525 continue;
491 } 526 }
492 } else { 527 } else {
493 if( Dev ) { 528 if( Dev ) {
494 // other 529 // other
495 continue; 530 continue;
496 } 531 }
497 } 532 }
498 533
499 // generate 'entry' 534 // generate 'entry'
500 if( SF.preNodeSection( DevNNI, DevInstNr ) ) { 535 if( SF.preNodeSection( DevNNI, DevInstNr ) ) {
501 S = qApp->translate( "NetworkSettings", 536 S = qApp->translate( "NetworkSettings",
502 "<p>Error in preNodeSection for file \"%1\" and node \"%2\"</p>" ). 537 "<p>Error in preNodeSection for file \"%1\" and node \"%2\"</p>" ).
503 arg( SF.name() ). 538 arg( SF.name() ).
504 arg( CurDevNN->nodeName() ); 539 arg( CurDevNN->nodeName() );
505 return S; 540 return S;
506 } 541 }
507 542
508 // ask all nodes in connection 543 // ask all nodes in connection
509 for( QListIterator<ANetNodeInstance> cncit(*NC); 544 for( QListIterator<ANetNodeInstance> cncit(*NC);
510 cncit.current(); 545 cncit.current();
511 ++cncit ) { 546 ++cncit ) {
512 ANetNodeInstance * NNI = cncit.current(); 547 ANetNodeInstance * NNI = cncit.current();
513 548
514 if( NNI->hasDataFor( SF.name() ) ) { 549 if( NNI->hasDataFor( SF.name() ) ) {
515 if( NNI->generateDataForCommonFile(SF,DevInstNr) ) { 550 if( NNI->generateDataForCommonFile(SF,DevInstNr) ) {
516 S = qApp->translate( "NetworkSettings", 551 S = qApp->translate( "NetworkSettings",
517 "<p>Error in node part for file \"%1\" and node \"%2\"</p>" ). 552 "<p>Error in node part for file \"%1\" and node \"%2\"</p>" ).
518 arg( SF.name() ). 553 arg( SF.name() ).
519 arg( NNI->nodeClass()->nodeName() ); 554 arg( NNI->nodeClass()->nodeName() );
520 return S; 555 return S;
521 } 556 }
522 } 557 }
523 } 558 }
524 559
525 if( SF.postNodeSection( DevNNI, DevInstNr ) ) { 560 if( SF.postNodeSection( DevNNI, DevInstNr ) ) {
526 S = qApp->translate( "NetworkSettings", 561 S = qApp->translate( "NetworkSettings",
527 "<p>Error in postNodeSection for file \"%1\" and node \"%2\"</p>" ). 562 "<p>Error in postNodeSection for file \"%1\" and node \"%2\"</p>" ).
528 arg( SF.name() ). 563 arg( SF.name() ).
529 arg( CurDevNN->nodeName() ); 564 arg( CurDevNN->nodeName() );
530 return S; 565 return S;
531 } 566 }
532 SF << endl; 567 SF << endl;
533 } 568 }
534 569
535 if( SF.postDeviceSection( CurDevNN ) ) { 570 if( SF.postDeviceSection( CurDevNN ) ) {
536 S = qApp->translate( "NetworkSettings", 571 S = qApp->translate( "NetworkSettings",
537 "<p>Error in postDeviceSection for file \"%1\" and node \"%2\"</p>" ). 572 "<p>Error in postDeviceSection for file \"%1\" and node \"%2\"</p>" ).
538 arg( SF.name() ). 573 arg( SF.name() ).
539 arg( CurDevNN->nodeName() ); 574 arg( CurDevNN->nodeName() );
540 return S; 575 return S;
541 } 576 }
542 577
543 return S; 578 return S;
544} 579}
diff --git a/noncore/settings/networksettings2/nsdata.h b/noncore/settings/networksettings2/nsdata.h
index eb96930..57eb722 100644
--- a/noncore/settings/networksettings2/nsdata.h
+++ b/noncore/settings/networksettings2/nsdata.h
@@ -1,43 +1,46 @@
1#ifndef __NSDATA_H 1#ifndef __NSDATA_H
2#define __NSDATA_H 2#define __NSDATA_H
3 3
4#include "netnode.h" 4#include "netnode.h"
5 5
6class NetworkSettingsData { 6class NetworkSettingsData {
7 7
8public : 8public :
9 9
10 NetworkSettingsData( void ); 10 NetworkSettingsData( void );
11 ~NetworkSettingsData( void ); 11 ~NetworkSettingsData( void );
12 12
13 void loadSettings( void ); 13 void loadSettings( void );
14 QString saveSettings( void ); 14 QString saveSettings( void );
15 15
16 QString generateSettings( bool Force = FALSE ); 16 QString generateSettings( bool Force = FALSE );
17 17
18 bool isModified( void ) 18 bool isModified( void )
19 { return IsModified; } 19 { return IsModified; }
20 void setModified( bool m ) 20 void setModified( bool m )
21 { IsModified = m; } 21 { IsModified = m; }
22 22
23 QList<NodeCollection> collectPossible( const char * Interface ); 23 QList<NodeCollection> collectPossible( const char * Interface );
24 // return TRUE if we need gui to decide 24 // return TRUE if we need gui to decide
25 bool canStart( const char * Interface ); 25 bool canStart( const char * Interface );
26 bool regenerate( void ); 26 bool regenerate( void );
27 27
28 void forceGeneration( bool m ) 28 void forceGeneration( bool m )
29 { Force = m; } 29 { Force = m; }
30 30
31private : 31private :
32 32
33 QString NetworkSettingsData::generateSystemFileNode( 33 QString NetworkSettingsData::generateSystemFileNode(
34 SystemFile & SF, 34 SystemFile & SF,
35 AsDevice * CurDev, 35 AsDevice * CurDev,
36 ANetNodeInstance * DevNNI, 36 ANetNodeInstance * DevNNI,
37 long DevInstNr ); 37 long DevInstNr );
38 bool IsModified; 38 bool IsModified;
39 bool Force; 39 bool Force;
40 40
41 // collect strings in config file nobody wants
42 QStringList LeftOvers;
43
41}; 44};
42 45
43#endif 46#endif
diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.cpp b/noncore/settings/networksettings2/ppp/ppp_NN.cpp
index b3f70c5..0bf415b 100644
--- a/noncore/settings/networksettings2/ppp/ppp_NN.cpp
+++ b/noncore/settings/networksettings2/ppp/ppp_NN.cpp
@@ -1,62 +1,68 @@
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() {
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}
46 46
47bool PPPNetNode::generateDeviceDataForCommonFile( 47bool PPPNetNode::generateDeviceDataForCommonFile(
48 SystemFile & , 48 SystemFile & ,
49 long ) { 49 long ) {
50 return 1; 50 return 1;
51} 51}
52 52
53QString PPPNetNode::genNic( long NicNr ) { 53QString PPPNetNode::genNic( long NicNr ) {
54 QString S; 54 QString S;
55 return S.sprintf( "ppp%ld", NicNr ); 55 return S.sprintf( "ppp%ld", NicNr );
56} 56}
57 57
58void PPPNetNode::setSpecificAttribute( QString & , QString & ) {
59}
60
61void PPPNetNode::saveSpecificAttribute( QTextStream & ) {
62}
63
58extern "C" { 64extern "C" {
59void create_plugin( QList<ANetNode> & PNN ) { 65void create_plugin( QList<ANetNode> & PNN ) {
60 PNN.append( new PPPNetNode() ); 66 PNN.append( new PPPNetNode() );
61} 67}
62} 68}
diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.h b/noncore/settings/networksettings2/ppp/ppp_NN.h
index c33f281..fbbbbe1 100644
--- a/noncore/settings/networksettings2/ppp/ppp_NN.h
+++ b/noncore/settings/networksettings2/ppp/ppp_NN.h
@@ -1,47 +1,49 @@
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() 20 virtual const QString nodeName()
21 { return tr("PPP Connection"); } 21 { return tr("PPP Connection"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 31 virtual bool hasDataFor( const QString & )
32 { return 0; } 32 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 33 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 34 SystemFile & SF, long DevNr );
35 35
36 virtual QString genNic( long NicNr ); 36 virtual QString genNic( long NicNr );
37 37
38private: 38private:
39 39
40 virtual void setSpecificAttribute( QString & Attr, QString & Value );
41 virtual void saveSpecificAttribute( QTextStream & TS );
40}; 42};
41 43
42extern "C" 44extern "C"
43{ 45{
44 void create_plugin( QList<ANetNode> & PNN ); 46 void create_plugin( QList<ANetNode> & PNN );
45}; 47};
46 48
47#endif 49#endif
diff --git a/noncore/settings/networksettings2/profile/profile_NN.cpp b/noncore/settings/networksettings2/profile/profile_NN.cpp
index 7609cdc..0f71dc7 100644
--- a/noncore/settings/networksettings2/profile/profile_NN.cpp
+++ b/noncore/settings/networksettings2/profile/profile_NN.cpp
@@ -1,56 +1,62 @@
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() {
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}
45 45
46bool ProfileNetNode::generateDeviceDataForCommonFile( 46bool ProfileNetNode::generateDeviceDataForCommonFile(
47 SystemFile & , 47 SystemFile & ,
48 long ) { 48 long ) {
49 return 1; 49 return 1;
50} 50}
51 51
52void ProfileNetNode::setSpecificAttribute( QString & , QString & ) {
53}
54
55void ProfileNetNode::saveSpecificAttribute( QTextStream & ) {
56}
57
52extern "C" { 58extern "C" {
53void create_plugin( QList<ANetNode> & PNN ) { 59void create_plugin( QList<ANetNode> & PNN ) {
54 PNN.append( new ProfileNetNode() ); 60 PNN.append( new ProfileNetNode() );
55} 61}
56} 62}
diff --git a/noncore/settings/networksettings2/profile/profile_NN.h b/noncore/settings/networksettings2/profile/profile_NN.h
index f7c2b22..1313ab2 100644
--- a/noncore/settings/networksettings2/profile/profile_NN.h
+++ b/noncore/settings/networksettings2/profile/profile_NN.h
@@ -1,45 +1,47 @@
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() 20 virtual const QString nodeName()
21 { return tr("Regular profile"); } 21 { return tr("Regular profile"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 31 virtual bool hasDataFor( const QString & )
32 { return 0; } 32 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 33 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr); 34 SystemFile & SF, long DevNr);
35 35
36private: 36private:
37 37
38 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS );
38}; 40};
39 41
40extern "C" 42extern "C"
41{ 43{
42 void create_plugin( QList<ANetNode> & PNN ); 44 void create_plugin( QList<ANetNode> & PNN );
43}; 45};
44 46
45#endif 47#endif
diff --git a/noncore/settings/networksettings2/usb/usb_NN.cpp b/noncore/settings/networksettings2/usb/usb_NN.cpp
index 30c72db..d5971cf 100644
--- a/noncore/settings/networksettings2/usb/usb_NN.cpp
+++ b/noncore/settings/networksettings2/usb/usb_NN.cpp
@@ -1,71 +1,77 @@
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() {
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}
44 44
45bool USBNetNode::hasDataFor( const QString & S ) { 45bool USBNetNode::hasDataFor( const QString & S ) {
46 return (S== "interfaces"); 46 return (S== "interfaces");
47} 47}
48 48
49bool USBNetNode::generateDeviceDataForCommonFile( 49bool USBNetNode::generateDeviceDataForCommonFile(
50 SystemFile & S , 50 SystemFile & S ,
51 long DevNr ) { 51 long DevNr ) {
52 QString NIC = genNic( DevNr ); 52 QString NIC = genNic( DevNr );
53 53
54 if( S.name() == "interfaces" ) { 54 if( S.name() == "interfaces" ) {
55 // generate mapping stanza for this interface 55 // generate mapping stanza for this interface
56 S << "# check if " << NIC << " can be brought UP" << endl; 56 S << "# check if " << NIC << " can be brought UP" << endl;
57 S << "mapping " << NIC << endl; 57 S << "mapping " << NIC << endl;
58 S << " script networksettings2-request" << endl << endl; 58 S << " script networksettings2-request" << endl << endl;
59 } 59 }
60 return 0; 60 return 0;
61} 61}
62 62
63QString USBNetNode::genNic( long ) { 63QString USBNetNode::genNic( long ) {
64 return QString( "usbf" ); 64 return QString( "usbf" );
65} 65}
66 66
67void USBNetNode::setSpecificAttribute( QString & , QString & ) {
68}
69
70void USBNetNode::saveSpecificAttribute( QTextStream & ) {
71}
72
67extern "C" { 73extern "C" {
68void create_plugin( QList<ANetNode> & PNN ) { 74void create_plugin( QList<ANetNode> & PNN ) {
69 PNN.append( new USBNetNode() ); 75 PNN.append( new USBNetNode() );
70} 76}
71} 77}
diff --git a/noncore/settings/networksettings2/usb/usb_NN.h b/noncore/settings/networksettings2/usb/usb_NN.h
index ba22b1c..0b83ea6 100644
--- a/noncore/settings/networksettings2/usb/usb_NN.h
+++ b/noncore/settings/networksettings2/usb/usb_NN.h
@@ -1,46 +1,48 @@
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() 20 virtual const QString nodeName()
21 { return tr("USB Cable Connect"); } 21 { return tr("USB Cable Connect"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & S); 31 virtual bool hasDataFor( const QString & S);
32 virtual bool generateDeviceDataForCommonFile( 32 virtual bool generateDeviceDataForCommonFile(
33 SystemFile & SF, long DevNr ); 33 SystemFile & SF, long DevNr );
34 34
35 virtual QString genNic( long nr ); 35 virtual QString genNic( long nr );
36 36
37private: 37private:
38 38
39 virtual void setSpecificAttribute( QString & Attr, QString & Value );
40 virtual void saveSpecificAttribute( QTextStream & TS );
39}; 41};
40 42
41extern "C" 43extern "C"
42{ 44{
43 void create_plugin( QList<ANetNode> & PNN ); 45 void create_plugin( QList<ANetNode> & PNN );
44}; 46};
45 47
46#endif 48#endif
diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.cpp b/noncore/settings/networksettings2/vpn/vpn_NN.cpp
index d9aa892..307e9dd 100644
--- a/noncore/settings/networksettings2/vpn/vpn_NN.cpp
+++ b/noncore/settings/networksettings2/vpn/vpn_NN.cpp
@@ -1,56 +1,62 @@
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() {
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}
45 45
46bool VPNNetNode::generateDeviceDataForCommonFile( 46bool VPNNetNode::generateDeviceDataForCommonFile(
47 SystemFile & , 47 SystemFile & ,
48 long ) { 48 long ) {
49 return 1; 49 return 1;
50} 50}
51 51
52void VPNNetNode::setSpecificAttribute( QString & , QString & ) {
53}
54
55void VPNNetNode::saveSpecificAttribute( QTextStream & ) {
56}
57
52extern "C" { 58extern "C" {
53void create_plugin( QList<ANetNode> & PNN ) { 59void create_plugin( QList<ANetNode> & PNN ) {
54 PNN.append( new VPNNetNode() ); 60 PNN.append( new VPNNetNode() );
55} 61}
56} 62}
diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.h b/noncore/settings/networksettings2/vpn/vpn_NN.h
index 7ce8e3a..1cd3fcc 100644
--- a/noncore/settings/networksettings2/vpn/vpn_NN.h
+++ b/noncore/settings/networksettings2/vpn/vpn_NN.h
@@ -1,45 +1,47 @@
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() 20 virtual const QString nodeName()
21 { return tr("VPN Connection"); } 21 { return tr("VPN Connection"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 virtual bool hasDataFor( const QString & ) 31 virtual bool hasDataFor( const QString & )
32 { return 0; } 32 { return 0; }
33 virtual bool generateDeviceDataForCommonFile( 33 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 34 SystemFile & SF, long DevNr );
35 35
36private: 36private:
37 37
38 virtual void setSpecificAttribute( QString & Attr, QString & Value );
39 virtual void saveSpecificAttribute( QTextStream & TS );
38}; 40};
39 41
40extern "C" 42extern "C"
41{ 43{
42 void create_plugin( QList<ANetNode> & PNN ); 44 void create_plugin( QList<ANetNode> & PNN );
43}; 45};
44 46
45#endif 47#endif
diff --git a/noncore/settings/networksettings2/wlan/wlan_NN.cpp b/noncore/settings/networksettings2/wlan/wlan_NN.cpp
index 4e59ac1..e0c4db2 100644
--- a/noncore/settings/networksettings2/wlan/wlan_NN.cpp
+++ b/noncore/settings/networksettings2/wlan/wlan_NN.cpp
@@ -1,72 +1,85 @@
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() {
12 InstanceCount = 2;
12} 13}
13 14
14/** 15/**
15 * Delete any interfaces that we own. 16 * Delete any interfaces that we own.
16 */ 17 */
17WLanNetNode::~WLanNetNode(){ 18WLanNetNode::~WLanNetNode(){
18} 19}
19 20
20const QString WLanNetNode::nodeDescription(){ 21const QString WLanNetNode::nodeDescription(){
21 return tr("\ 22 return tr("\
22<p>Configure Wi/Fi or WLan network cards.</p>\ 23<p>Configure Wi/Fi or WLan network cards.</p>\
23<p>Defines Wireless options for those cards</p>\ 24<p>Defines Wireless options for those cards</p>\
24" 25"
25); 26);
26} 27}
27 28
28ANetNodeInstance * WLanNetNode::createInstance( void ) { 29ANetNodeInstance * WLanNetNode::createInstance( void ) {
29 return new AWLan( this ); 30 return new AWLan( this );
30} 31}
31 32
32const char ** WLanNetNode::needs( void ) { 33const char ** WLanNetNode::needs( void ) {
33 return WLanNeeds; 34 return WLanNeeds;
34} 35}
35 36
36const char * WLanNetNode::provides( void ) { 37const char * WLanNetNode::provides( void ) {
37 return "device"; 38 return "device";
38} 39}
39 40
40bool WLanNetNode::generateProperFilesFor( 41bool WLanNetNode::generateProperFilesFor(
41 ANetNodeInstance * ) { 42 ANetNodeInstance * ) {
42 return 1; 43 return 1;
43} 44}
44 45
45bool WLanNetNode::hasDataFor( const QString & S ) { 46bool WLanNetNode::hasDataFor( const QString & S ) {
46 return S == "interfaces"; 47 return S == "interfaces";
47} 48}
48 49
49bool WLanNetNode::generateDeviceDataForCommonFile( 50bool WLanNetNode::generateDeviceDataForCommonFile(
50 SystemFile & S, 51 SystemFile & S,
51 long DevNr ) { 52 long DevNr ) {
52 QString NIC = genNic( DevNr ); 53 QString NIC = genNic( DevNr );
53 54
54 if( S.name() == "interfaces" ) { 55 if( S.name() == "interfaces" ) {
55 // generate mapping stanza for this interface 56 // generate mapping stanza for this interface
56 S << "# check if " << NIC << " can be brought UP" << endl; 57 S << "# check if " << NIC << " can be brought UP" << endl;
57 S << "mapping " << NIC << endl; 58 S << "mapping " << NIC << endl;
58 S << " script networksettings2-request" << endl << endl; 59 S << " script networksettings2-request" << endl << endl;
59 } 60 }
60 return 0; 61 return 0;
61} 62}
62 63
63QString WLanNetNode::genNic( long nr ) { 64QString WLanNetNode::genNic( long nr ) {
64 QString S; 65 QString S;
65 return S.sprintf( "wlan%ld", nr ); 66 return S.sprintf( "wlan%ld", nr );
66} 67}
67 68
69void WLanNetNode::setSpecificAttribute( QString & A, QString & V ) {
70 if( A == "interfacecount" ) {
71 InstanceCount = V.toLong();
72 }
73}
74
75void WLanNetNode::saveSpecificAttribute( QTextStream & TS ) {
76 TS << "interfacecount="
77 << InstanceCount
78 << endl;
79}
80
68extern "C" { 81extern "C" {
69void create_plugin( QList<ANetNode> & PNN ) { 82void create_plugin( QList<ANetNode> & PNN ) {
70 PNN.append( new WLanNetNode() ); 83 PNN.append( new WLanNetNode() );
71} 84}
72} 85}
diff --git a/noncore/settings/networksettings2/wlan/wlan_NN.h b/noncore/settings/networksettings2/wlan/wlan_NN.h
index f27e71c..e93a89a 100644
--- a/noncore/settings/networksettings2/wlan/wlan_NN.h
+++ b/noncore/settings/networksettings2/wlan/wlan_NN.h
@@ -1,50 +1,56 @@
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() 20 virtual const QString nodeName()
21 { return tr("WLan Device"); } 21 { return tr("WLan Device"); }
22 22
23 virtual const QString nodeDescription() ; 23 virtual const QString nodeDescription() ;
24 24
25 virtual ANetNodeInstance * createInstance( void ); 25 virtual ANetNodeInstance * createInstance( void );
26 26
27 virtual const char ** needs( void ); 27 virtual const char ** needs( void );
28 virtual const char * provides( void ); 28 virtual const char * provides( void );
29 29
30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); 30 virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
31 31
32 virtual bool hasDataFor( const QString & S ); 32 virtual bool hasDataFor( const QString & S );
33 virtual bool generateDeviceDataForCommonFile( 33 virtual bool generateDeviceDataForCommonFile(
34 SystemFile & SF, long DevNr ); 34 SystemFile & SF, long DevNr );
35 35
36 virtual long instanceCount( void ) 36 virtual long instanceCount( void )
37 { return 2; } 37 { return InstanceCount; }
38 38
39 virtual QString genNic( long ); 39 virtual QString genNic( long );
40 40
41private: 41private:
42 42
43 virtual void setSpecificAttribute( QString & Attr, QString & Value );
44 virtual void saveSpecificAttribute( QTextStream & TS );
45
46 // number of interfaces for this device
47 long InstanceCount;
48
43}; 49};
44 50
45extern "C" 51extern "C"
46{ 52{
47 void create_plugin( QList<ANetNode> & PNN ); 53 void create_plugin( QList<ANetNode> & PNN );
48}; 54};
49 55
50#endif 56#endif