author | wimpie <wimpie> | 2005-01-11 21:42:31 (UTC) |
---|---|---|
committer | wimpie <wimpie> | 2005-01-11 21:42:31 (UTC) |
commit | 96678694f8952f60d0a895cede2b621404b4bfb8 (patch) (unidiff) | |
tree | 7138e554e5ba200b8f9ca8b51c89b47531dc34f2 | |
parent | f89120a7a1a3d0bf9c0805456490906ca914e560 (diff) | |
download | opie-96678694f8952f60d0a895cede2b621404b4bfb8.zip opie-96678694f8952f60d0a895cede2b621404b4bfb8.tar.gz opie-96678694f8952f60d0a895cede2b621404b4bfb8.tar.bz2 |
Major rename of NodeCollection to NetworkSetup
this commit is broken (missing symbols)
58 files changed, 393 insertions, 373 deletions
diff --git a/noncore/settings/networksettings2/activateprofile.cpp b/noncore/settings/networksettings2/activateprofile.cpp index e4064e3..fe98fc4 100644 --- a/noncore/settings/networksettings2/activateprofile.cpp +++ b/noncore/settings/networksettings2/activateprofile.cpp | |||
@@ -1,31 +1,31 @@ | |||
1 | #include <qlistbox.h> | 1 | #include <qlistbox.h> |
2 | #include <qlabel.h> | 2 | #include <qlabel.h> |
3 | #include "activateprofile.h" | 3 | #include "activateprofile.h" |
4 | 4 | ||
5 | ActivateProfile::ActivateProfile( const char * Interface ) : | 5 | ActivateProfile::ActivateProfile( const char * Interface ) : |
6 | ActivateProfileGUI( 0, 0, TRUE ), NSD() { | 6 | ActivateProfileGUI( 0, 0, TRUE ), NSD() { |
7 | 7 | ||
8 | Possible = NSD.collectPossible( Interface ); | 8 | Possible = NSD.collectPossible( Interface ); |
9 | 9 | ||
10 | DeviceName_LBL->setText( Interface ); | 10 | DeviceName_LBL->setText( Interface ); |
11 | Profiles_LB->clear(); | 11 | Profiles_LB->clear(); |
12 | for( NodeCollection * NC = Possible.first(); | 12 | for( NetworkSetup * NC = Possible.first(); |
13 | NC; | 13 | NC; |
14 | NC = Possible.next() ) { | 14 | NC = Possible.next() ) { |
15 | Profiles_LB->insertItem( NC->devicePixmap(), | 15 | Profiles_LB->insertItem( NC->devicePixmap(), |
16 | NC->name() ); | 16 | NC->name() ); |
17 | } | 17 | } |
18 | } | 18 | } |
19 | 19 | ||
20 | ActivateProfile::~ActivateProfile( void ) { | 20 | ActivateProfile::~ActivateProfile( void ) { |
21 | } | 21 | } |
22 | 22 | ||
23 | long ActivateProfile::selectedProfile( void ) { | 23 | long ActivateProfile::selectedProfile( void ) { |
24 | for( unsigned int i = 0 ; i < Profiles_LB->count(); i ++ ) { | 24 | for( unsigned int i = 0 ; i < Profiles_LB->count(); i ++ ) { |
25 | if( Profiles_LB->isSelected(i) ) { | 25 | if( Profiles_LB->isSelected(i) ) { |
26 | return Possible.at(i)->number(); | 26 | return Possible.at(i)->number(); |
27 | 27 | ||
28 | } | 28 | } |
29 | } | 29 | } |
30 | return -1; | 30 | return -1; |
31 | } | 31 | } |
diff --git a/noncore/settings/networksettings2/activateprofile.h b/noncore/settings/networksettings2/activateprofile.h index dedeb51..385c665 100644 --- a/noncore/settings/networksettings2/activateprofile.h +++ b/noncore/settings/networksettings2/activateprofile.h | |||
@@ -1,19 +1,19 @@ | |||
1 | #include "activateprofileGUI.h" | 1 | #include "activateprofileGUI.h" |
2 | #include "nsdata.h" | 2 | #include "nsdata.h" |
3 | 3 | ||
4 | class ActivateProfile : public ActivateProfileGUI { | 4 | class ActivateProfile : public ActivateProfileGUI { |
5 | 5 | ||
6 | Q_OBJECT | 6 | Q_OBJECT |
7 | 7 | ||
8 | public : | 8 | public : |
9 | 9 | ||
10 | ActivateProfile( const char * interface ); | 10 | ActivateProfile( const char * interface ); |
11 | ~ActivateProfile( void ); | 11 | ~ActivateProfile( void ); |
12 | 12 | ||
13 | long selectedProfile( void ); | 13 | long selectedProfile( void ); |
14 | 14 | ||
15 | private : | 15 | private : |
16 | 16 | ||
17 | NetworkSettingsData NSD; | 17 | NetworkSettingsData NSD; |
18 | QList<NodeCollection> Possible; | 18 | QList<NetworkSetup> Possible; |
19 | }; | 19 | }; |
diff --git a/noncore/settings/networksettings2/activatevpn.cpp b/noncore/settings/networksettings2/activatevpn.cpp index 768a031..35a881b 100644 --- a/noncore/settings/networksettings2/activatevpn.cpp +++ b/noncore/settings/networksettings2/activatevpn.cpp | |||
@@ -1,48 +1,48 @@ | |||
1 | #include <qlistview.h> | 1 | #include <qlistview.h> |
2 | #include <qheader.h> | 2 | #include <qheader.h> |
3 | #include <resources.h> | 3 | #include <resources.h> |
4 | #include "activatevpn.h" | 4 | #include "activatevpn.h" |
5 | 5 | ||
6 | class MyCheckListItem : public QCheckListItem { | 6 | class MyCheckListItem : public QCheckListItem { |
7 | 7 | ||
8 | public : | 8 | public : |
9 | 9 | ||
10 | MyCheckListItem( NodeCollection * N, QListView * V ); | 10 | MyCheckListItem( NetworkSetup * N, QListView * V ); |
11 | 11 | ||
12 | NodeCollection * NC; | 12 | NetworkSetup * NC; |
13 | 13 | ||
14 | }; | 14 | }; |
15 | 15 | ||
16 | MyCheckListItem::MyCheckListItem( NodeCollection * N, QListView * V ): | 16 | MyCheckListItem::MyCheckListItem( NetworkSetup * N, QListView * V ): |
17 | QCheckListItem( V, N->name() ) { | 17 | QCheckListItem( V, N->name() ) { |
18 | NC = N; | 18 | NC = N; |
19 | } | 19 | } |
20 | 20 | ||
21 | ActivateVPN::ActivateVPN( const QString & I ) : | 21 | ActivateVPN::ActivateVPN( const QString & I ) : |
22 | ActivateVPNGUI( 0, 0, TRUE ), NSD() { | 22 | ActivateVPNGUI( 0, 0, TRUE ), NSD() { |
23 | 23 | ||
24 | QCheckListItem * CI; | 24 | QCheckListItem * CI; |
25 | VPN_LV->clear(); | 25 | VPN_LV->clear(); |
26 | VPN_LV->header()->hide(); | 26 | VPN_LV->header()->hide(); |
27 | 27 | ||
28 | // find all connections that want to be triggered by this interface | 28 | // find all NetworkSetups that want to be triggered by this interface |
29 | for( QDictIterator<NodeCollection> it(NSResources->connections()); | 29 | for( QDictIterator<NetworkSetup> it(NSResources->networkSetups()); |
30 | it.current(); | 30 | it.current(); |
31 | ++it ) { | 31 | ++it ) { |
32 | if( it.current()->triggeredBy( I ) ) { | 32 | if( it.current()->triggeredBy( I ) ) { |
33 | CI = new MyCheckListItem( it.current(), VPN_LV ); | 33 | CI = new MyCheckListItem( it.current(), VPN_LV ); |
34 | } | 34 | } |
35 | } | 35 | } |
36 | } | 36 | } |
37 | 37 | ||
38 | ActivateVPN::~ActivateVPN( void ) { | 38 | ActivateVPN::~ActivateVPN( void ) { |
39 | } | 39 | } |
40 | 40 | ||
41 | void ActivateVPN::SLOT_ChangedVPNSetting( QListViewItem * I ) { | 41 | void ActivateVPN::SLOT_ChangedVPNSetting( QListViewItem * I ) { |
42 | 42 | ||
43 | MyCheckListItem * MI = (MyCheckListItem *)I; | 43 | MyCheckListItem * MI = (MyCheckListItem *)I; |
44 | 44 | ||
45 | printf( "%s : %d\n", | 45 | printf( "%s : %d\n", |
46 | MI->text(0).latin1(), | 46 | MI->text(0).latin1(), |
47 | MI->isOn() ); | 47 | MI->isOn() ); |
48 | } | 48 | } |
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.cpp b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.cpp index 5c937a1..5c71a0a 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.cpp +++ b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.cpp | |||
@@ -1,165 +1,165 @@ | |||
1 | #include <qfile.h> | 1 | #include <qfile.h> |
2 | #include <qfileinfo.h> | 2 | #include <qfileinfo.h> |
3 | #include <qtextstream.h> | 3 | #include <qtextstream.h> |
4 | #include <resources.h> | 4 | #include <resources.h> |
5 | #include "bluetoothBNEPrun.h" | 5 | #include "bluetoothBNEPrun.h" |
6 | 6 | ||
7 | using Opietooth2::OTGateway; | 7 | using Opietooth2::OTGateway; |
8 | using Opietooth2::OTPANConnection; | 8 | using Opietooth2::OTPANNetworkSetup; |
9 | using Opietooth2::PANConnectionVector; | 9 | using Opietooth2::PANNetworkSetupVector; |
10 | 10 | ||
11 | BluetoothBNEPRun::BluetoothBNEPRun( ANetNodeInstance * NNI, | 11 | BluetoothBNEPRun::BluetoothBNEPRun( ANetNodeInstance * NNI, |
12 | BluetoothBNEPData & D ) : | 12 | BluetoothBNEPData & D ) : |
13 | RuntimeInfo( NNI ), | 13 | RuntimeInfo( NNI ), |
14 | Data( D), | 14 | Data( D), |
15 | Pat( "bnep[0-6]" ) { | 15 | Pat( "bnep[0-6]" ) { |
16 | OT = 0; | 16 | OT = 0; |
17 | } | 17 | } |
18 | 18 | ||
19 | BluetoothBNEPRun::~BluetoothBNEPRun( void ) { | 19 | BluetoothBNEPRun::~BluetoothBNEPRun( void ) { |
20 | if( OT ) { | 20 | if( OT ) { |
21 | OTGateway::releaseOTGateway(); | 21 | OTGateway::releaseOTGateway(); |
22 | } | 22 | } |
23 | } | 23 | } |
24 | 24 | ||
25 | State_t BluetoothBNEPRun::detectState( void ) { | 25 | State_t BluetoothBNEPRun::detectState( void ) { |
26 | 26 | ||
27 | /* | 27 | /* |
28 | 28 | ||
29 | need to detect | 29 | need to detect |
30 | 30 | ||
31 | 1. for any PAN connection that is found if that | 31 | 1. for any PAN NetworkSetup that is found if that |
32 | PAN is connected. | 32 | PAN is connected. |
33 | 33 | ||
34 | if it is connected it is not available (since we do | 34 | if it is connected it is not available (since we do |
35 | not manage IP settings and we are called to detect | 35 | not manage IP settings and we are called to detect |
36 | the state we knwo that we do not have an UP connection) | 36 | the state we knwo that we do not have an UP NetworkSetup) |
37 | 37 | ||
38 | 2. if it not connected and we allow any connection we | 38 | 2. if it not connected and we allow any NetworkSetup we |
39 | are available or if that PAN connection is to a device | 39 | are available or if that PAN NetworkSetup is to a device |
40 | with a correct address | 40 | with a correct address |
41 | 41 | ||
42 | 3. if it is not connected and the address do not match or | 42 | 3. if it is not connected and the address do not match or |
43 | we do not accept any address, we are Unavailable but | 43 | we do not accept any address, we are Unavailable but |
44 | not DOWN. I.e a new connection could perhaps be created | 44 | not DOWN. I.e a new NetworkSetup could perhaps be created |
45 | 45 | ||
46 | */ | 46 | */ |
47 | 47 | ||
48 | if( ! OT ) { | 48 | if( ! OT ) { |
49 | OT = OTGateway::getOTGateway(); | 49 | OT = OTGateway::getOTGateway(); |
50 | } | 50 | } |
51 | 51 | ||
52 | if( ! OT->isEnabled() ) { | 52 | if( ! OT->isEnabled() ) { |
53 | return Unavailable; | 53 | return Unavailable; |
54 | } | 54 | } |
55 | 55 | ||
56 | // if there is a PAN connection that is UP but not | 56 | // if there is a PAN NetworkSetup that is UP but not |
57 | // yet configured (no ifup) the we are available | 57 | // yet configured (no ifup) the we are available |
58 | return ( hasFreePANConnection() ) ? Available : Unknown; | 58 | return ( hasFreePANNetworkSetup() ) ? Available : Unknown; |
59 | } | 59 | } |
60 | 60 | ||
61 | QString BluetoothBNEPRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 61 | QString BluetoothBNEPRun::setMyState( NetworkSetup * NC, Action_t A, bool ) { |
62 | 62 | ||
63 | if( A == Activate ) { | 63 | if( A == Activate ) { |
64 | if( hasFreePANConnection( 1 ) ) { | 64 | if( hasFreePANNetworkSetup( 1 ) ) { |
65 | // we have now an assignedinterface | 65 | // we have now an assignedinterface |
66 | } else { | 66 | } else { |
67 | return QString("TODO : Start PAND"); | 67 | return QString("TODO : Start PAND"); |
68 | } | 68 | } |
69 | 69 | ||
70 | Log(( "Assigned interface" )); | 70 | Log(( "Assigned interface" )); |
71 | NC->setCurrentState( Available ); | 71 | NC->setCurrentState( Available ); |
72 | 72 | ||
73 | return QString(); | 73 | return QString(); |
74 | } | 74 | } |
75 | 75 | ||
76 | if( A == Deactivate ) { | 76 | if( A == Deactivate ) { |
77 | // nothing to do | 77 | // nothing to do |
78 | NC->setCurrentState( Off ); | 78 | NC->setCurrentState( Off ); |
79 | return QString(); | 79 | return QString(); |
80 | } | 80 | } |
81 | return QString(); | 81 | return QString(); |
82 | } | 82 | } |
83 | 83 | ||
84 | bool BluetoothBNEPRun::handlesInterface( const QString & S ) { | 84 | bool BluetoothBNEPRun::handlesInterface( const QString & S ) { |
85 | return Pat.match( S ) >= 0; | 85 | return Pat.match( S ) >= 0; |
86 | } | 86 | } |
87 | 87 | ||
88 | bool BluetoothBNEPRun::handlesInterface( InterfaceInfo * I ) { | 88 | bool BluetoothBNEPRun::handlesInterface( InterfaceInfo * I ) { |
89 | return handlesInterface( I->Name ); | 89 | return handlesInterface( I->Name ); |
90 | } | 90 | } |
91 | 91 | ||
92 | bool BluetoothBNEPRun::hasFreePANConnection( bool Grab ) { | 92 | bool BluetoothBNEPRun::hasFreePANNetworkSetup( bool Grab ) { |
93 | 93 | ||
94 | if( ! OT ) { | 94 | if( ! OT ) { |
95 | OT = OTGateway::getOTGateway(); | 95 | OT = OTGateway::getOTGateway(); |
96 | } | 96 | } |
97 | 97 | ||
98 | // load PAN connections | 98 | // load PAN NetworkSetups |
99 | OTPANConnection * C; | 99 | OTPANNetworkSetup * C; |
100 | InterfaceInfo * Run; | 100 | InterfaceInfo * Run; |
101 | InterfaceInfo * Candidate = 0; // reuse this interface | 101 | InterfaceInfo * Candidate = 0; // reuse this interface |
102 | PANConnectionVector Conns = OT->getPANConnections(); | 102 | PANNetworkSetupVector Conns = OT->getPANNetworkSetups(); |
103 | System & Sys = NSResources->system(); | 103 | System & Sys = NSResources->system(); |
104 | bool IsValid; | 104 | bool IsValid; |
105 | 105 | ||
106 | for( unsigned int i = 0; | 106 | for( unsigned int i = 0; |
107 | i < Conns.count(); | 107 | i < Conns.count(); |
108 | i ++ ) { | 108 | i ++ ) { |
109 | C = Conns[i]; | 109 | C = Conns[i]; |
110 | 110 | ||
111 | if( Data.AllowAll ) { | 111 | if( Data.AllowAll ) { |
112 | // we allow all | 112 | // we allow all |
113 | IsValid = 1; | 113 | IsValid = 1; |
114 | } else { | 114 | } else { |
115 | // is this PAN connection connecting to a Peer | 115 | // is this PAN NetworkSetup connecting to a Peer |
116 | // we allow ? | 116 | // we allow ? |
117 | IsValid = 0; | 117 | IsValid = 0; |
118 | for ( QStringList::Iterator it = Data.BDAddress.begin(); | 118 | for ( QStringList::Iterator it = Data.BDAddress.begin(); |
119 | it != Data.BDAddress.end(); | 119 | it != Data.BDAddress.end(); |
120 | ++ it ) { | 120 | ++ it ) { |
121 | if( C->ConnectedTo == (*it) ) { | 121 | if( C->ConnectedTo == (*it) ) { |
122 | // this is a connection we could accept | 122 | // this is a NetworkSetup we could accept |
123 | IsValid = 1; | 123 | IsValid = 1; |
124 | break; | 124 | break; |
125 | } | 125 | } |
126 | } | 126 | } |
127 | } | 127 | } |
128 | 128 | ||
129 | if( ! IsValid ) { | 129 | if( ! IsValid ) { |
130 | Log(("%s to %s not acceptable\n", | 130 | Log(("%s to %s not acceptable\n", |
131 | C->Device.latin1(), | 131 | C->Device.latin1(), |
132 | C->ConnectedTo.latin1() )); | 132 | C->ConnectedTo.latin1() )); |
133 | // don't bother checking this address | 133 | // don't bother checking this address |
134 | // it is not acceptable | 134 | // it is not acceptable |
135 | continue; | 135 | continue; |
136 | } | 136 | } |
137 | 137 | ||
138 | // is this PAN connection available to us ? | 138 | // is this PAN NetworkSetup available to us ? |
139 | Run = Sys.findInterface( C->Device ); | 139 | Run = Sys.findInterface( C->Device ); |
140 | 140 | ||
141 | if( Run && Run->IsUp ) { | 141 | if( Run && Run->IsUp ) { |
142 | // this PAN connection is up | 142 | // this PAN NetworkSetup is up |
143 | Log(("%s acceptable but unavailable\n", | 143 | Log(("%s acceptable but unavailable\n", |
144 | C->Device.latin1() )); | 144 | C->Device.latin1() )); |
145 | // find others | 145 | // find others |
146 | continue; | 146 | continue; |
147 | } | 147 | } |
148 | 148 | ||
149 | // we at least have a possible interface | 149 | // we at least have a possible interface |
150 | if( ! Candidate ) { | 150 | if( ! Candidate ) { |
151 | Candidate = Run; | 151 | Candidate = Run; |
152 | } | 152 | } |
153 | } | 153 | } |
154 | 154 | ||
155 | if( Candidate ) { | 155 | if( Candidate ) { |
156 | if ( Grab ) { | 156 | if ( Grab ) { |
157 | netNode()->connection()->assignInterface( Candidate ); | 157 | netNode()->networkSetup()->assignInterface( Candidate ); |
158 | } | 158 | } |
159 | return 1; | 159 | return 1; |
160 | } | 160 | } |
161 | 161 | ||
162 | // no free PAN | 162 | // no free PAN |
163 | return 0; | 163 | return 0; |
164 | } | 164 | } |
165 | 165 | ||
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h index 8551a2e..7346a8d 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h +++ b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h | |||
@@ -1,34 +1,34 @@ | |||
1 | #include <netnode.h> | 1 | #include <netnode.h> |
2 | #include "bluetoothBNEPdata.h" | 2 | #include "bluetoothBNEPdata.h" |
3 | 3 | ||
4 | #include <OTGateway.h> | 4 | #include <OTGateway.h> |
5 | 5 | ||
6 | class BluetoothBNEPRun : public RuntimeInfo { | 6 | class BluetoothBNEPRun : public RuntimeInfo { |
7 | 7 | ||
8 | public : | 8 | public : |
9 | 9 | ||
10 | BluetoothBNEPRun( ANetNodeInstance * NNI, | 10 | BluetoothBNEPRun( ANetNodeInstance * NNI, |
11 | BluetoothBNEPData & D ); | 11 | BluetoothBNEPData & D ); |
12 | virtual ~BluetoothBNEPRun( void ); | 12 | virtual ~BluetoothBNEPRun( void ); |
13 | 13 | ||
14 | // i am a device | 14 | // i am a device |
15 | virtual RuntimeInfo * device( void ) | 15 | virtual RuntimeInfo * device( void ) |
16 | { return this; } | 16 | { return this; } |
17 | 17 | ||
18 | bool handlesInterface( const QString & ); | 18 | bool handlesInterface( const QString & ); |
19 | bool handlesInterface( InterfaceInfo * ); | 19 | bool handlesInterface( InterfaceInfo * ); |
20 | 20 | ||
21 | State_t detectState( void ); | 21 | State_t detectState( void ); |
22 | 22 | ||
23 | protected : | 23 | protected : |
24 | 24 | ||
25 | QString setMyState( NodeCollection * , Action_t, bool ); | 25 | QString setMyState( NetworkSetup * , Action_t, bool ); |
26 | 26 | ||
27 | private : | 27 | private : |
28 | 28 | ||
29 | bool hasFreePANConnection( bool Grab = 0 ); | 29 | bool hasFreePANNetworkSetup( bool Grab = 0 ); |
30 | 30 | ||
31 | BluetoothBNEPData & Data; | 31 | BluetoothBNEPData & Data; |
32 | Opietooth2::OTGateway * OT; | 32 | Opietooth2::OTGateway * OT; |
33 | QRegExp Pat; | 33 | QRegExp Pat; |
34 | }; | 34 | }; |
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp index 3df7f5c..cd7bb4a 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp +++ b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp | |||
@@ -1,164 +1,164 @@ | |||
1 | #include <qapplication.h> | 1 | #include <qapplication.h> |
2 | #include <resources.h> | 2 | #include <resources.h> |
3 | #include <OTDevice.h> | 3 | #include <OTDevice.h> |
4 | #include <OTGateway.h> | 4 | #include <OTGateway.h> |
5 | #include "bluetoothRFCOMMrun.h" | 5 | #include "bluetoothRFCOMMrun.h" |
6 | 6 | ||
7 | using Opietooth2::OTGateway; | 7 | using Opietooth2::OTGateway; |
8 | using Opietooth2::OTDevice; | 8 | using Opietooth2::OTDevice; |
9 | using Opietooth2::OTDeviceAddress; | 9 | using Opietooth2::OTDeviceAddress; |
10 | 10 | ||
11 | BluetoothRFCOMMRun::~BluetoothRFCOMMRun( void ) { | 11 | BluetoothRFCOMMRun::~BluetoothRFCOMMRun( void ) { |
12 | if( OT ) { | 12 | if( OT ) { |
13 | OTGateway::releaseOTGateway(); | 13 | OTGateway::releaseOTGateway(); |
14 | } | 14 | } |
15 | } | 15 | } |
16 | 16 | ||
17 | State_t BluetoothRFCOMMRun::detectState( void ) { | 17 | State_t BluetoothRFCOMMRun::detectState( void ) { |
18 | 18 | ||
19 | if( ! OT ) { | 19 | if( ! OT ) { |
20 | OT = OTGateway::getOTGateway(); | 20 | OT = OTGateway::getOTGateway(); |
21 | } | 21 | } |
22 | 22 | ||
23 | if( deviceNrOfConnection() >= 0 ) { | 23 | if( deviceNrOfNetworkSetup() >= 0 ) { |
24 | return Available; | 24 | return Available; |
25 | } | 25 | } |
26 | 26 | ||
27 | odebug << "Bluetooth " | 27 | odebug << "Bluetooth " |
28 | << OT->isEnabled() | 28 | << OT->isEnabled() |
29 | << oendl; | 29 | << oendl; |
30 | 30 | ||
31 | return ( OT->isEnabled() ) ? Off : Unavailable; | 31 | return ( OT->isEnabled() ) ? Off : Unavailable; |
32 | } | 32 | } |
33 | 33 | ||
34 | QString BluetoothRFCOMMRun::setMyState( NodeCollection *, | 34 | QString BluetoothRFCOMMRun::setMyState( NetworkSetup *, |
35 | Action_t A, | 35 | Action_t A, |
36 | bool ) { | 36 | bool ) { |
37 | 37 | ||
38 | if( OT ) { | 38 | if( OT ) { |
39 | OTGateway::getOTGateway(); | 39 | OTGateway::getOTGateway(); |
40 | } | 40 | } |
41 | 41 | ||
42 | if( A == Activate ) { | 42 | if( A == Activate ) { |
43 | // from OFF to Available | 43 | // from OFF to Available |
44 | RFCOMMChannel * Ch = getChannel( ); | 44 | RFCOMMChannel * Ch = getChannel( ); |
45 | System & Sys = NSResources->system(); | 45 | System & Sys = NSResources->system(); |
46 | 46 | ||
47 | if( Ch ) { | 47 | if( Ch ) { |
48 | // connect to this peer | 48 | // connect to this peer |
49 | DeviceNr = OT->getFreeRFCommDevice(); | 49 | DeviceNr = OT->getFreeRFCommDevice(); |
50 | QStringList S; | 50 | QStringList S; |
51 | 51 | ||
52 | S << "rfcomm" | 52 | S << "rfcomm" |
53 | << "bind" | 53 | << "bind" |
54 | << QString().setNum( DeviceNr ) | 54 | << QString().setNum( DeviceNr ) |
55 | << Ch->BDAddress | 55 | << Ch->BDAddress |
56 | << QString().setNum( Ch->Channel ); | 56 | << QString().setNum( Ch->Channel ); |
57 | 57 | ||
58 | if( Sys.runAsRoot( S ) ) { | 58 | if( Sys.runAsRoot( S ) ) { |
59 | return QString( "Error starting %1").arg(S.join(" ")); | 59 | return QString( "Error starting %1").arg(S.join(" ")); |
60 | } | 60 | } |
61 | 61 | ||
62 | // here rfcomm should be running -> we will detect state later | 62 | // here rfcomm should be running -> we will detect state later |
63 | return QString(); | 63 | return QString(); |
64 | } else { | 64 | } else { |
65 | Log(( "No channel selected -> cancel\n" )); | 65 | Log(( "No channel selected -> cancel\n" )); |
66 | return QString( "No channel selected. Operation cancelled" ); | 66 | return QString( "No channel selected. Operation cancelled" ); |
67 | } | 67 | } |
68 | } | 68 | } |
69 | 69 | ||
70 | if( A == Deactivate ) { | 70 | if( A == Deactivate ) { |
71 | if( DeviceNr >= 0 ) { | 71 | if( DeviceNr >= 0 ) { |
72 | if( OT->releaseRFCommDevice( DeviceNr ) ) { | 72 | if( OT->releaseRFCommDevice( DeviceNr ) ) { |
73 | return QString( "Cannot release RFCOMM connection" ); | 73 | return QString( "Cannot release RFCOMM NetworkSetup" ); |
74 | } | 74 | } |
75 | DeviceNr = -1; | 75 | DeviceNr = -1; |
76 | } | 76 | } |
77 | } | 77 | } |
78 | return QString(); | 78 | return QString(); |
79 | } | 79 | } |
80 | 80 | ||
81 | #include <qlistbox.h> | 81 | #include <qlistbox.h> |
82 | #include <qframe.h> | 82 | #include <qframe.h> |
83 | #include <qlabel.h> | 83 | #include <qlabel.h> |
84 | #include <qlayout.h> | 84 | #include <qlayout.h> |
85 | #include <qdialog.h> | 85 | #include <qdialog.h> |
86 | 86 | ||
87 | RFCOMMChannel * BluetoothRFCOMMRun::getChannel( void ) { | 87 | RFCOMMChannel * BluetoothRFCOMMRun::getChannel( void ) { |
88 | 88 | ||
89 | if( Data->Devices.count() == 1 ) { | 89 | if( Data->Devices.count() == 1 ) { |
90 | // only one device -> return channel | 90 | // only one device -> return channel |
91 | return Data->Devices[0]; | 91 | return Data->Devices[0]; |
92 | } | 92 | } |
93 | 93 | ||
94 | RFCOMMChannel * Ch = 0; | 94 | RFCOMMChannel * Ch = 0; |
95 | QDialog * Dlg = new QDialog( qApp->mainWidget(), 0, TRUE ); | 95 | QDialog * Dlg = new QDialog( qApp->mainWidget(), 0, TRUE ); |
96 | QVBoxLayout * V = new QVBoxLayout( Dlg ); | 96 | QVBoxLayout * V = new QVBoxLayout( Dlg ); |
97 | 97 | ||
98 | QLabel * L = new QLabel( | 98 | QLabel * L = new QLabel( |
99 | qApp->translate( "BluetoothRFCOMMRun", | 99 | qApp->translate( "BluetoothRFCOMMRun", |
100 | "Select device to connect to"), | 100 | "Select device to connect to"), |
101 | Dlg ); | 101 | Dlg ); |
102 | QListBox * LB = new QListBox( Dlg ); | 102 | QListBox * LB = new QListBox( Dlg ); |
103 | 103 | ||
104 | for( unsigned int i = 0; i < Data->Devices.count(); i ++ ) { | 104 | for( unsigned int i = 0; i < Data->Devices.count(); i ++ ) { |
105 | LB->insertItem( QString( "%1 (%2 Chnl %3)" ). | 105 | LB->insertItem( QString( "%1 (%2 Chnl %3)" ). |
106 | arg( Data->Devices[i]->Name ). | 106 | arg( Data->Devices[i]->Name ). |
107 | arg( Data->Devices[i]->BDAddress ). | 107 | arg( Data->Devices[i]->BDAddress ). |
108 | arg( Data->Devices[i]->Channel ) ); | 108 | arg( Data->Devices[i]->Channel ) ); |
109 | } | 109 | } |
110 | 110 | ||
111 | V->addWidget( L ); | 111 | V->addWidget( L ); |
112 | V->addWidget( LB ); | 112 | V->addWidget( LB ); |
113 | 113 | ||
114 | Dlg->resize( 100, 100 ); | 114 | Dlg->resize( 100, 100 ); |
115 | Dlg->move( 20, | 115 | Dlg->move( 20, |
116 | (qApp->desktop()->height()-100)/2 ); | 116 | (qApp->desktop()->height()-100)/2 ); |
117 | 117 | ||
118 | if( Dlg->exec() == QDialog::Accepted ) { | 118 | if( Dlg->exec() == QDialog::Accepted ) { |
119 | unsigned int i = 0; | 119 | unsigned int i = 0; |
120 | for( i = 0; i < Data->Devices.count(); i ++ ) { | 120 | for( i = 0; i < Data->Devices.count(); i ++ ) { |
121 | if( LB->isSelected(i) ) { | 121 | if( LB->isSelected(i) ) { |
122 | odebug << "Selected " << Data->Devices[i]->Name << oendl; | 122 | odebug << "Selected " << Data->Devices[i]->Name << oendl; |
123 | Ch = Data->Devices[i]; | 123 | Ch = Data->Devices[i]; |
124 | break; | 124 | break; |
125 | } | 125 | } |
126 | } | 126 | } |
127 | } | 127 | } |
128 | 128 | ||
129 | delete Dlg; | 129 | delete Dlg; |
130 | return Ch; | 130 | return Ch; |
131 | } | 131 | } |
132 | 132 | ||
133 | QString BluetoothRFCOMMRun::deviceFile( void ) { | 133 | QString BluetoothRFCOMMRun::deviceFile( void ) { |
134 | if( deviceNrOfConnection() >= 0 ) { | 134 | if( deviceNrOfNetworkSetup() >= 0 ) { |
135 | OTDevice * OTD = OT->getOTDevice(); | 135 | OTDevice * OTD = OT->getOTDevice(); |
136 | // there is a connection | 136 | // there is a NetworkSetup |
137 | return OTD->getRFCommDevicePattern().arg(DeviceNr); | 137 | return OTD->getRFCommDevicePattern().arg(DeviceNr); |
138 | } | 138 | } |
139 | return QString(); | 139 | return QString(); |
140 | } | 140 | } |
141 | 141 | ||
142 | int BluetoothRFCOMMRun::deviceNrOfConnection( void ) { | 142 | int BluetoothRFCOMMRun::deviceNrOfNetworkSetup( void ) { |
143 | 143 | ||
144 | if( ! OT ) { | 144 | if( ! OT ) { |
145 | OT = OTGateway::getOTGateway(); | 145 | OT = OTGateway::getOTGateway(); |
146 | } | 146 | } |
147 | 147 | ||
148 | DeviceNr = -1; | 148 | DeviceNr = -1; |
149 | for( unsigned int i = 0; i < Data->Devices.count(); i ++ ) { | 149 | for( unsigned int i = 0; i < Data->Devices.count(); i ++ ) { |
150 | odebug << "Check for rfcomm on " | 150 | odebug << "Check for rfcomm on " |
151 | << Data->Devices[i]->BDAddress | 151 | << Data->Devices[i]->BDAddress |
152 | << " " | 152 | << " " |
153 | << Data->Devices[i]->Channel | 153 | << Data->Devices[i]->Channel |
154 | << oendl; | 154 | << oendl; |
155 | if( ( DeviceNr = OT->connectedToRFCommChannel( | 155 | if( ( DeviceNr = OT->connectedToRFCommChannel( |
156 | OTDeviceAddress( Data->Devices[i]->BDAddress ), | 156 | OTDeviceAddress( Data->Devices[i]->BDAddress ), |
157 | Data->Devices[i]->Channel ) ) >= 0 ) { | 157 | Data->Devices[i]->Channel ) ) >= 0 ) { |
158 | odebug << "Up " | 158 | odebug << "Up " |
159 | << oendl; | 159 | << oendl; |
160 | break; | 160 | break; |
161 | } | 161 | } |
162 | } | 162 | } |
163 | return DeviceNr; | 163 | return DeviceNr; |
164 | } | 164 | } |
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h index 5a31a94..32986d3 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h +++ b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h | |||
@@ -1,32 +1,32 @@ | |||
1 | #include <netnode.h> | 1 | #include <netnode.h> |
2 | #include "bluetoothRFCOMMdata.h" | 2 | #include "bluetoothRFCOMMdata.h" |
3 | 3 | ||
4 | #include <OTGateway.h> | 4 | #include <OTGateway.h> |
5 | 5 | ||
6 | class BluetoothRFCOMMRun : public RuntimeInfo { | 6 | class BluetoothRFCOMMRun : public RuntimeInfo { |
7 | 7 | ||
8 | public : | 8 | public : |
9 | 9 | ||
10 | BluetoothRFCOMMRun( ANetNodeInstance * NNI, | 10 | BluetoothRFCOMMRun( ANetNodeInstance * NNI, |
11 | BluetoothRFCOMMData & D ) : RuntimeInfo( NNI ) | 11 | BluetoothRFCOMMData & D ) : RuntimeInfo( NNI ) |
12 | { DeviceNr = -1; Data = &D; OT = 0; } | 12 | { DeviceNr = -1; Data = &D; OT = 0; } |
13 | virtual ~BluetoothRFCOMMRun( void ); | 13 | virtual ~BluetoothRFCOMMRun( void ); |
14 | 14 | ||
15 | virtual RuntimeInfo * line( void ) | 15 | virtual RuntimeInfo * line( void ) |
16 | { return this; } | 16 | { return this; } |
17 | virtual QString deviceFile( void ); | 17 | virtual QString deviceFile( void ); |
18 | 18 | ||
19 | State_t detectState( void ); | 19 | State_t detectState( void ); |
20 | 20 | ||
21 | protected : | 21 | protected : |
22 | 22 | ||
23 | QString setMyState( NodeCollection * , Action_t, bool ); | 23 | QString setMyState( NetworkSetup * , Action_t, bool ); |
24 | 24 | ||
25 | private : | 25 | private : |
26 | 26 | ||
27 | int deviceNrOfConnection( void ); | 27 | int deviceNrOfNetworkSetup( void ); |
28 | RFCOMMChannel * getChannel( void ); | 28 | RFCOMMChannel * getChannel( void ); |
29 | BluetoothRFCOMMData * Data; | 29 | BluetoothRFCOMMData * Data; |
30 | Opietooth2::OTGateway * OT; | 30 | Opietooth2::OTGateway * OT; |
31 | int DeviceNr; // cached from detection | 31 | int DeviceNr; // cached from detection |
32 | }; | 32 | }; |
diff --git a/noncore/settings/networksettings2/cable/cable_NN.cpp b/noncore/settings/networksettings2/cable/cable_NN.cpp index 58237a1..3f34bb2 100644 --- a/noncore/settings/networksettings2/cable/cable_NN.cpp +++ b/noncore/settings/networksettings2/cable/cable_NN.cpp | |||
@@ -1,52 +1,52 @@ | |||
1 | #include "cable_NN.h" | 1 | #include "cable_NN.h" |
2 | #include "cable_NNI.h" | 2 | #include "cable_NNI.h" |
3 | 3 | ||
4 | #include "netnodeinterface.h" | 4 | #include "netnodeinterface.h" |
5 | 5 | ||
6 | static const char * CableNeeds[] = | 6 | static const char * CableNeeds[] = |
7 | { 0 | 7 | { 0 |
8 | }; | 8 | }; |
9 | 9 | ||
10 | static const char * CableProvides[] = | 10 | static const char * CableProvides[] = |
11 | { "line", | 11 | { "line", |
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 | */ |
18 | CableNetNode::CableNetNode() : ANetNode(tr("Cable Connection")) { | 18 | CableNetNode::CableNetNode() : ANetNode(tr("Cable NetworkSetup")) { |
19 | } | 19 | } |
20 | 20 | ||
21 | /** | 21 | /** |
22 | * Delete any interfaces that we own. | 22 | * Delete any interfaces that we own. |
23 | */ | 23 | */ |
24 | CableNetNode::~CableNetNode(){ | 24 | CableNetNode::~CableNetNode(){ |
25 | } | 25 | } |
26 | 26 | ||
27 | const QString CableNetNode::nodeDescription(){ | 27 | const QString CableNetNode::nodeDescription(){ |
28 | return tr("\ | 28 | return tr("\ |
29 | <p>Sets up a wired serial or parallel.</p>\ | 29 | <p>Sets up a wired serial or parallel.</p>\ |
30 | " | 30 | " |
31 | ); | 31 | ); |
32 | } | 32 | } |
33 | 33 | ||
34 | ANetNodeInstance * CableNetNode::createInstance( void ) { | 34 | ANetNodeInstance * CableNetNode::createInstance( void ) { |
35 | return new ACable( this ); | 35 | return new ACable( this ); |
36 | } | 36 | } |
37 | 37 | ||
38 | const char ** CableNetNode::needs( void ) { | 38 | const char ** CableNetNode::needs( void ) { |
39 | return CableNeeds; | 39 | return CableNeeds; |
40 | } | 40 | } |
41 | 41 | ||
42 | const char ** CableNetNode::provides( void ) { | 42 | const char ** CableNetNode::provides( void ) { |
43 | return CableProvides; | 43 | return CableProvides; |
44 | } | 44 | } |
45 | 45 | ||
46 | void CableNetNode::setSpecificAttribute( QString & , QString & ) { | 46 | void CableNetNode::setSpecificAttribute( QString & , QString & ) { |
47 | } | 47 | } |
48 | 48 | ||
49 | void CableNetNode::saveSpecificAttribute( QTextStream & ) { | 49 | void CableNetNode::saveSpecificAttribute( QTextStream & ) { |
50 | } | 50 | } |
51 | 51 | ||
52 | OPIE_NS2_PLUGIN( NetNodeInterface_T<CableNetNode> ) | 52 | OPIE_NS2_PLUGIN( NetNodeInterface_T<CableNetNode> ) |
diff --git a/noncore/settings/networksettings2/cable/cablerun.cpp b/noncore/settings/networksettings2/cable/cablerun.cpp index 7a8deb9..edbeb89 100644 --- a/noncore/settings/networksettings2/cable/cablerun.cpp +++ b/noncore/settings/networksettings2/cable/cablerun.cpp | |||
@@ -1,22 +1,22 @@ | |||
1 | #include <fcntl.h> | 1 | #include <fcntl.h> |
2 | #include <unistd.h> | 2 | #include <unistd.h> |
3 | #include "cablerun.h" | 3 | #include "cablerun.h" |
4 | 4 | ||
5 | State_t CableRun::detectState( void ) { | 5 | State_t CableRun::detectState( void ) { |
6 | 6 | ||
7 | int fd = open( Data->Device.latin1(), O_RDWR ); | 7 | int fd = open( Data->Device.latin1(), O_RDWR ); |
8 | 8 | ||
9 | if( fd < 0 ) { | 9 | if( fd < 0 ) { |
10 | return Unavailable; | 10 | return Unavailable; |
11 | } | 11 | } |
12 | close( fd ); | 12 | close( fd ); |
13 | return Available; | 13 | return Available; |
14 | } | 14 | } |
15 | 15 | ||
16 | QString CableRun::setMyState( NodeCollection *, Action_t , bool ) { | 16 | QString CableRun::setMyState( NetworkSetup *, Action_t , bool ) { |
17 | return QString(); | 17 | return QString(); |
18 | } | 18 | } |
19 | 19 | ||
20 | QString CableRun::deviceFile( void ) { | 20 | QString CableRun::deviceFile( void ) { |
21 | return Data->Device; | 21 | return Data->Device; |
22 | } | 22 | } |
diff --git a/noncore/settings/networksettings2/cable/cablerun.h b/noncore/settings/networksettings2/cable/cablerun.h index 41aea01..6a457c4 100644 --- a/noncore/settings/networksettings2/cable/cablerun.h +++ b/noncore/settings/networksettings2/cable/cablerun.h | |||
@@ -1,26 +1,26 @@ | |||
1 | #include <netnode.h> | 1 | #include <netnode.h> |
2 | #include "cabledata.h" | 2 | #include "cabledata.h" |
3 | 3 | ||
4 | class CableRun : public RuntimeInfo { | 4 | class CableRun : public RuntimeInfo { |
5 | 5 | ||
6 | public : | 6 | public : |
7 | 7 | ||
8 | CableRun( ANetNodeInstance * NNI, | 8 | CableRun( ANetNodeInstance * NNI, |
9 | CableData & D ) : RuntimeInfo( NNI ) | 9 | CableData & D ) : RuntimeInfo( NNI ) |
10 | { Data = &D; } | 10 | { Data = &D; } |
11 | 11 | ||
12 | virtual RuntimeInfo * line( void ) | 12 | virtual RuntimeInfo * line( void ) |
13 | { return this; } | 13 | { return this; } |
14 | 14 | ||
15 | virtual QString deviceFile( void ); | 15 | virtual QString deviceFile( void ); |
16 | 16 | ||
17 | State_t detectState( void ); | 17 | State_t detectState( void ); |
18 | 18 | ||
19 | protected : | 19 | protected : |
20 | 20 | ||
21 | QString setMyState( NodeCollection * , Action_t, bool ); | 21 | QString setMyState( NetworkSetup * , Action_t, bool ); |
22 | 22 | ||
23 | private : | 23 | private : |
24 | 24 | ||
25 | CableData * Data; | 25 | CableData * Data; |
26 | }; | 26 | }; |
diff --git a/noncore/settings/networksettings2/editconnection.cpp b/noncore/settings/networksettings2/editconnection.cpp index 717d9e9..6ab2dd6 100644 --- a/noncore/settings/networksettings2/editconnection.cpp +++ b/noncore/settings/networksettings2/editconnection.cpp | |||
@@ -1,629 +1,631 @@ | |||
1 | #include <opie2/odebug.h> | 1 | #include <opie2/odebug.h> |
2 | #include <qlistview.h> | 2 | #include <qlistview.h> |
3 | #include <qwidgetstack.h> | 3 | #include <qwidgetstack.h> |
4 | #include <qframe.h> | 4 | #include <qframe.h> |
5 | #include <qcombobox.h> | 5 | #include <qcombobox.h> |
6 | #include <qtabwidget.h> | 6 | #include <qtabwidget.h> |
7 | #include <qmessagebox.h> | 7 | #include <qmessagebox.h> |
8 | #include <qpushbutton.h> | 8 | #include <qpushbutton.h> |
9 | #include <qlineedit.h> | 9 | #include <qlineedit.h> |
10 | #include <qheader.h> | 10 | #include <qheader.h> |
11 | #include <qpainter.h> | 11 | #include <qpainter.h> |
12 | #include <qcheckbox.h> | 12 | #include <qcheckbox.h> |
13 | #include <qlabel.h> | 13 | #include <qlabel.h> |
14 | 14 | ||
15 | #include "editconnection.h" | 15 | #include "editconnection.h" |
16 | #include "resources.h" | 16 | #include "resources.h" |
17 | #include "netnode.h" | 17 | #include "netnode.h" |
18 | 18 | ||
19 | // | 19 | // |
20 | // | 20 | // |
21 | // THESE TO GIVE BETTER FEEDBACK ABOUT DISABLED ITEMS | 21 | // THESE TO GIVE BETTER FEEDBACK ABOUT DISABLED ITEMS |
22 | // | 22 | // |
23 | // | 23 | // |
24 | 24 | ||
25 | class MyQCheckListItem : public QCheckListItem | 25 | class MyQCheckListItem : public QCheckListItem |
26 | { | 26 | { |
27 | public: | 27 | public: |
28 | MyQCheckListItem( QListView *parent, const QString & S, Type T ) : | 28 | MyQCheckListItem( QListView *parent, const QString & S, Type T ) : |
29 | QCheckListItem( parent, S, T ) { } | 29 | QCheckListItem( parent, S, T ) { } |
30 | MyQCheckListItem( QCheckListItem *parent, const QString & S, Type T ) : | 30 | MyQCheckListItem( QCheckListItem *parent, const QString & S, Type T ) : |
31 | QCheckListItem( parent, S, T ) { } | 31 | QCheckListItem( parent, S, T ) { } |
32 | MyQCheckListItem( QListViewItem *parent, const QString & S, Type T ) : | 32 | MyQCheckListItem( QListViewItem *parent, const QString & S, Type T ) : |
33 | QCheckListItem( parent, S, T ) { } | 33 | QCheckListItem( parent, S, T ) { } |
34 | 34 | ||
35 | MyQCheckListItem( QListView *parent, const QString & S ) : | 35 | MyQCheckListItem( QListView *parent, const QString & S ) : |
36 | QCheckListItem( parent, S, QCheckListItem::Controller ) { } | 36 | QCheckListItem( parent, S, QCheckListItem::Controller ) { } |
37 | MyQCheckListItem( QCheckListItem *parent, const QString & S ) : | 37 | MyQCheckListItem( QCheckListItem *parent, const QString & S ) : |
38 | QCheckListItem( parent, S, QCheckListItem::Controller ) { } | 38 | QCheckListItem( parent, S, QCheckListItem::Controller ) { } |
39 | MyQCheckListItem( QListViewItem *parent, const QString & S ) : | 39 | MyQCheckListItem( QListViewItem *parent, const QString & S ) : |
40 | QCheckListItem( parent, S, QCheckListItem::Controller ) { } | 40 | QCheckListItem( parent, S, QCheckListItem::Controller ) { } |
41 | 41 | ||
42 | virtual void paintCell( QPainter *p, const QColorGroup &cg, | 42 | virtual void paintCell( QPainter *p, const QColorGroup &cg, |
43 | int column, int width, int alignment ); | 43 | int column, int width, int alignment ); |
44 | 44 | ||
45 | }; | 45 | }; |
46 | 46 | ||
47 | void MyQCheckListItem::paintCell( QPainter *p, const QColorGroup &cg, | 47 | void MyQCheckListItem::paintCell( QPainter *p, const QColorGroup &cg, |
48 | int column, int width, int alignment ) | 48 | int column, int width, int alignment ) |
49 | { | 49 | { |
50 | QColorGroup _cg( cg ); | 50 | QColorGroup _cg( cg ); |
51 | QColor c = _cg.text(); | 51 | QColor c = _cg.text(); |
52 | if ( ! isSelectable() ) | 52 | if ( ! isSelectable() ) |
53 | _cg.setColor( QColorGroup::Text, Qt::lightGray ); | 53 | _cg.setColor( QColorGroup::Text, Qt::lightGray ); |
54 | QCheckListItem::paintCell( p, _cg, column, width, alignment ); | 54 | QCheckListItem::paintCell( p, _cg, column, width, alignment ); |
55 | _cg.setColor( QColorGroup::Text, c ); | 55 | _cg.setColor( QColorGroup::Text, c ); |
56 | } | 56 | } |
57 | 57 | ||
58 | class MyQListViewItem : public QListViewItem | 58 | class MyQListViewItem : public QListViewItem |
59 | { | 59 | { |
60 | public: | 60 | public: |
61 | MyQListViewItem( QListView *parent, const QString & S ) : | 61 | MyQListViewItem( QListView *parent, const QString & S ) : |
62 | QListViewItem( parent, S ) { } | 62 | QListViewItem( parent, S ) { } |
63 | MyQListViewItem( QListViewItem *parent, const QString & S ) : | 63 | MyQListViewItem( QListViewItem *parent, const QString & S ) : |
64 | QListViewItem( parent, S ) { } | 64 | QListViewItem( parent, S ) { } |
65 | 65 | ||
66 | virtual void paintCell( QPainter *p, const QColorGroup &cg, | 66 | virtual void paintCell( QPainter *p, const QColorGroup &cg, |
67 | int column, int width, int alignment ); | 67 | int column, int width, int alignment ); |
68 | 68 | ||
69 | }; | 69 | }; |
70 | 70 | ||
71 | void MyQListViewItem::paintCell( QPainter *p, const QColorGroup &cg, | 71 | void MyQListViewItem::paintCell( QPainter *p, const QColorGroup &cg, |
72 | int column, int width, int alignment ) | 72 | int column, int width, int alignment ) |
73 | { | 73 | { |
74 | QColorGroup _cg( cg ); | 74 | QColorGroup _cg( cg ); |
75 | QColor c = _cg.text(); | 75 | QColor c = _cg.text(); |
76 | if ( ! isSelectable() ) | 76 | if ( ! isSelectable() ) |
77 | _cg.setColor( QColorGroup::Text, Qt::lightGray ); | 77 | _cg.setColor( QColorGroup::Text, Qt::lightGray ); |
78 | QListViewItem::paintCell( p, _cg, column, width, alignment ); | 78 | QListViewItem::paintCell( p, _cg, column, width, alignment ); |
79 | _cg.setColor( QColorGroup::Text, c ); | 79 | _cg.setColor( QColorGroup::Text, c ); |
80 | } | 80 | } |
81 | 81 | ||
82 | // | 82 | // |
83 | // | 83 | // |
84 | // REAL GUI | 84 | // REAL GUI |
85 | // | 85 | // |
86 | // | 86 | // |
87 | 87 | ||
88 | bool EditConnection::AutoCollapse = 1; | 88 | bool EditNetworkSetup::AutoCollapse = 1; |
89 | 89 | ||
90 | EditConnection::EditConnection( QWidget* parent ) : | 90 | EditNetworkSetup::EditNetworkSetup( QWidget* parent ) : |
91 | EditConnectionGUI( parent, 0, TRUE ), TmpCollection() { | 91 | EditNetworkSetupGUI( parent, 0, TRUE ), TmpCollection() { |
92 | 92 | ||
93 | Tab_TB->setTabEnabled( Setup_FRM, FALSE ); | 93 | Tab_TB->setTabEnabled( Setup_FRM, FALSE ); |
94 | Setup_FRM->setEnabled( FALSE ); | 94 | Setup_FRM->setEnabled( FALSE ); |
95 | 95 | ||
96 | TmpIsValid = 0; | 96 | TmpIsValid = 0; |
97 | SelectedNodes = 0; | 97 | SelectedNodes = 0; |
98 | 98 | ||
99 | AutoCollapse_CB->setChecked( AutoCollapse ); | 99 | AutoCollapse_CB->setChecked( AutoCollapse ); |
100 | 100 | ||
101 | Mapping = new QPtrDict<ANetNode>; | 101 | Mapping = new QPtrDict<ANetNode>; |
102 | Mapping->setAutoDelete( FALSE ); | 102 | Mapping->setAutoDelete( FALSE ); |
103 | Nodes_LV->header()->hide(); | 103 | Nodes_LV->header()->hide(); |
104 | // popluate tree with all NetNodes | 104 | // popluate tree with all NetNodes |
105 | buildFullTree(); | 105 | buildFullTree(); |
106 | } | 106 | } |
107 | 107 | ||
108 | NodeCollection * EditConnection::getTmpCollection( void ) { | 108 | NetworkSetup * EditNetworkSetup::getTmpCollection( void ) { |
109 | 109 | ||
110 | if( TmpIsValid ) | 110 | if( TmpIsValid ) |
111 | // content is stil OK | 111 | // content is stil OK |
112 | return &(TmpCollection); | 112 | return &(TmpCollection); |
113 | 113 | ||
114 | // reset collection -> delete all NEW NetNodes | 114 | // reset collection -> delete all NEW NetNodes |
115 | for( QListIterator<ANetNodeInstance> it(TmpCollection); | 115 | for( QListIterator<ANetNodeInstance> it(TmpCollection); |
116 | it.current(); | 116 | it.current(); |
117 | ++it ) { | 117 | ++it ) { |
118 | if( it.current()->isNew() ) { | 118 | if( it.current()->isNew() ) { |
119 | delete it.current(); | 119 | delete it.current(); |
120 | } | 120 | } |
121 | } | 121 | } |
122 | |||
122 | TmpCollection.clear(); | 123 | TmpCollection.clear(); |
124 | TmpCollection.copyFrom( *SelectedNodes ); | ||
123 | 125 | ||
124 | // update content | 126 | // update content |
125 | QListViewItem * it = Nodes_LV->firstChild(); | 127 | QListViewItem * it = Nodes_LV->firstChild(); |
126 | ANetNode * NN; | 128 | ANetNode * NN; |
127 | 129 | ||
128 | // start iter (if there is a collection) | 130 | // start iter (if there is a collection) |
129 | /* | 131 | /* |
130 | 132 | ||
131 | a node collection is sorted from the toplevel | 133 | a node collection is sorted from the toplevel |
132 | node to the deepest node | 134 | node to the deepest node |
133 | 135 | ||
134 | */ | 136 | */ |
135 | ANetNodeInstance * NNI = | 137 | ANetNodeInstance * NNI = |
136 | (SelectedNodes) ? SelectedNodes->first() : 0 ; | 138 | (SelectedNodes) ? SelectedNodes->first() : 0 ; |
137 | 139 | ||
138 | TmpCollection.setModified( 0 ); | 140 | TmpCollection.setModified( 0 ); |
139 | 141 | ||
140 | // the listview always starts with the toplevel | 142 | // the listview always starts with the toplevel |
141 | // hierarchy. This is always a controller item | 143 | // hierarchy. This is always a controller item |
142 | while ( it ) { | 144 | while ( it ) { |
143 | NN = (*Mapping)[it]; | 145 | NN = (*Mapping)[it]; |
144 | if( NN == 0 ) { | 146 | if( NN == 0 ) { |
145 | // this item is a controller -> | 147 | // this item is a controller -> |
146 | // has radio items as children -> | 148 | // has radio items as children -> |
147 | // find selected one | 149 | // find selected one |
148 | it = it->firstChild(); | 150 | it = it->firstChild(); |
149 | while( it ) { | 151 | while( it ) { |
150 | if( ((QCheckListItem *)it)->isOn() ) { | 152 | if( ((QCheckListItem *)it)->isOn() ) { |
151 | // this radio is selected -> go deeper | 153 | // this radio is selected -> go deeper |
152 | break; | 154 | break; |
153 | } | 155 | } |
154 | it = it->nextSibling(); | 156 | it = it->nextSibling(); |
155 | } | 157 | } |
156 | 158 | ||
157 | if( ! it ) { | 159 | if( ! it ) { |
158 | TmpIsValid = 0; | 160 | TmpIsValid = 0; |
159 | return 0; | 161 | return 0; |
160 | } | 162 | } |
161 | 163 | ||
162 | // it now contains selected radio | 164 | // it now contains selected radio |
163 | NN = (*Mapping)[it]; | 165 | NN = (*Mapping)[it]; |
164 | } | 166 | } |
165 | 167 | ||
166 | // NN here contains the netnode of the | 168 | // NN here contains the netnode of the |
167 | // current item -> this node needs to | 169 | // current item -> this node needs to |
168 | // be stored in the collection | 170 | // be stored in the collection |
169 | if( NNI == 0 || | 171 | if( NNI == 0 || |
170 | it->text(0) != NNI->nodeClass()->name() ) { | 172 | it->text(0) != NNI->nodeClass()->name() ) { |
171 | // new item not in previous collection | 173 | // new item not in previous collection |
172 | ANetNodeInstance * NNI = NN->createInstance(); | 174 | ANetNodeInstance * NNI = NN->createInstance(); |
173 | NNI->initialize(); | 175 | NNI->initialize(); |
174 | // this node type not in collection | 176 | // this node type not in collection |
175 | TmpCollection.append( NNI ); | 177 | TmpCollection.append( NNI ); |
176 | // master collection changed because new item in it | 178 | // master collection changed because new item in it |
177 | TmpCollection.setModified( 1 ); | 179 | TmpCollection.setModified( 1 ); |
178 | // no more valid items in old list | 180 | // no more valid items in old list |
179 | NNI = 0; | 181 | NNI = 0; |
180 | } else { | 182 | } else { |
181 | // already in list -> copy pointer | 183 | // already in list -> copy pointer |
182 | TmpCollection.append( NNI ); | 184 | TmpCollection.append( NNI ); |
183 | NNI = SelectedNodes->next(); | 185 | NNI = SelectedNodes->next(); |
184 | } | 186 | } |
185 | 187 | ||
186 | // go deeper to next level | 188 | // go deeper to next level |
187 | // this level is can be a new controller | 189 | // this level is can be a new controller |
188 | // or an item | 190 | // or an item |
189 | it = it->firstChild(); | 191 | it = it->firstChild(); |
190 | } | 192 | } |
191 | 193 | ||
192 | TmpIsValid = 1; | 194 | TmpIsValid = 1; |
193 | return &(TmpCollection); | 195 | return &(TmpCollection); |
194 | } | 196 | } |
195 | 197 | ||
196 | // pass a connection NodeCollection to be edited | 198 | // pass a NetworkSetup NetworkSetup to be edited |
197 | void EditConnection::setConnection( NodeCollection * NC ) { | 199 | void EditNetworkSetup::setNetworkSetup( NetworkSetup * NC ) { |
198 | ANetNodeInstance * NNI; | 200 | ANetNodeInstance * NNI; |
199 | ANetNode * NN; | 201 | ANetNode * NN; |
200 | 202 | ||
201 | SelectedNodes = NC; | 203 | SelectedNodes = NC; |
202 | Name_LE->setText( NC->name() ); | 204 | Name_LE->setText( NC->name() ); |
203 | NNI = NC->first(); | 205 | NNI = NC->first(); |
204 | 206 | ||
205 | // show configure tabl | 207 | // show configure tabl |
206 | Tab_TB->setCurrentPage( 1 ); | 208 | Tab_TB->setCurrentPage( 1 ); |
207 | 209 | ||
208 | // valid colledction | 210 | // valid colledction |
209 | Tab_TB->setTabEnabled( Setup_FRM, FALSE ); | 211 | Tab_TB->setTabEnabled( Setup_FRM, FALSE ); |
210 | Setup_FRM->setEnabled( FALSE ); | 212 | Setup_FRM->setEnabled( FALSE ); |
211 | 213 | ||
212 | // select items in collection | 214 | // select items in collection |
213 | QListViewItem * it = Nodes_LV->firstChild(); | 215 | QListViewItem * it = Nodes_LV->firstChild(); |
214 | bool Found; | 216 | bool Found; |
215 | 217 | ||
216 | TmpIsValid = 0; | 218 | TmpIsValid = 0; |
217 | 219 | ||
218 | while ( it ) { | 220 | while ( it ) { |
219 | NN = (*Mapping)[it]; | 221 | NN = (*Mapping)[it]; |
220 | if( NN == 0 ) { | 222 | if( NN == 0 ) { |
221 | // this item is a controller -> | 223 | // this item is a controller -> |
222 | // has radio items as children -> | 224 | // has radio items as children -> |
223 | // find selected one | 225 | // find selected one |
224 | it = it->firstChild(); | 226 | it = it->firstChild(); |
225 | Found = 0; | 227 | Found = 0; |
226 | while( it ) { | 228 | while( it ) { |
227 | if( NNI && it->text(0) == NNI->nodeClass()->name() ) { | 229 | if( NNI && it->text(0) == NNI->nodeClass()->name() ) { |
228 | // this radio is part of the collection | 230 | // this radio is part of the collection |
229 | ((QCheckListItem *)it)->setOn( 1 ); | 231 | ((QCheckListItem *)it)->setOn( 1 ); |
230 | updateGUI( it, NNI->nodeClass() ); | 232 | updateGUI( it, NNI->nodeClass() ); |
231 | // check its children | 233 | // check its children |
232 | Found = 1; | 234 | Found = 1; |
233 | it = it->firstChild(); | 235 | it = it->firstChild(); |
234 | NNI = SelectedNodes->next(); | 236 | NNI = SelectedNodes->next(); |
235 | // do not bother to check other items | 237 | // do not bother to check other items |
236 | break; | 238 | break; |
237 | } | 239 | } |
238 | it = it->nextSibling(); | 240 | it = it->nextSibling(); |
239 | } | 241 | } |
240 | 242 | ||
241 | if( ! Found ) { | 243 | if( ! Found ) { |
242 | // this means that this level is NOT present in collection | 244 | // this means that this level is NOT present in collection |
243 | // probably INCOMPATIBEL collection OR Missing plugin | 245 | // probably INCOMPATIBEL collection OR Missing plugin |
244 | QMessageBox::warning( | 246 | QMessageBox::warning( |
245 | 0, | 247 | 0, |
246 | tr( "Error presentig Connection" ), | 248 | tr( "Error presentig NetworkSetup" ), |
247 | tr( "<p>Old connection or missing plugin \"<i>%1</i>\"</p>" ). | 249 | tr( "<p>Old NetworkSetup or missing plugin \"<i>%1</i>\"</p>" ). |
248 | arg(NNI->nodeClass()->name()) ); | 250 | arg(NNI->nodeClass()->name()) ); |
249 | return; | 251 | return; |
250 | } | 252 | } |
251 | 253 | ||
252 | // it now contains selected radio | 254 | // it now contains selected radio |
253 | NN = (*Mapping)[it]; | 255 | NN = (*Mapping)[it]; |
254 | } else { | 256 | } else { |
255 | // automatic selection | 257 | // automatic selection |
256 | if( NNI == 0 || it->text(0) != NNI->nodeClass()->name() ) { | 258 | if( NNI == 0 || it->text(0) != NNI->nodeClass()->name() ) { |
257 | // should exist and be the same | 259 | // should exist and be the same |
258 | if( NNI ) { | 260 | if( NNI ) { |
259 | QMessageBox::warning( | 261 | QMessageBox::warning( |
260 | 0, | 262 | 0, |
261 | tr( "Error presentig Connection" ), | 263 | tr( "Error presentig NetworkSetup" ), |
262 | tr( "<p>Old connection or missing plugin \"<i>%1</i>\"</p>" ). | 264 | tr( "<p>Old NetworkSetup or missing plugin \"<i>%1</i>\"</p>" ). |
263 | arg(NNI->nodeClass()->name()) ); | 265 | arg(NNI->nodeClass()->name()) ); |
264 | } else { | 266 | } else { |
265 | QMessageBox::warning( | 267 | QMessageBox::warning( |
266 | 0, | 268 | 0, |
267 | tr( "Error presentig Connection" ), | 269 | tr( "Error presentig NetworkSetup" ), |
268 | tr( "<p>Missing connection\"<i>%1</i>\"</p>" ). | 270 | tr( "<p>Missing NetworkSetup\"<i>%1</i>\"</p>" ). |
269 | arg(it->text(0)) ); | 271 | arg(it->text(0)) ); |
270 | } | 272 | } |
271 | return; | 273 | return; |
272 | } | 274 | } |
273 | it = it->firstChild(); | 275 | it = it->firstChild(); |
274 | } | 276 | } |
275 | } | 277 | } |
276 | } | 278 | } |
277 | 279 | ||
278 | // get result of editing (either new OR updated collection | 280 | // get result of editing (either new OR updated collection |
279 | NodeCollection * EditConnection::connection( void ) { | 281 | NetworkSetup * EditNetworkSetup::networkSetup( void ) { |
280 | 282 | ||
281 | if( SelectedNodes == 0 ) { | 283 | if( SelectedNodes == 0 ) { |
282 | // new collection | 284 | // new collection |
283 | SelectedNodes = new NodeCollection; | 285 | SelectedNodes = new NetworkSetup; |
284 | } | 286 | } |
285 | 287 | ||
286 | // clean out old entries | 288 | // clean out old entries |
287 | SelectedNodes->clear(); | 289 | SelectedNodes->clear(); |
288 | 290 | ||
289 | // transfer | 291 | // transfer |
290 | for( QListIterator<ANetNodeInstance> it(TmpCollection); | 292 | for( QListIterator<ANetNodeInstance> it(TmpCollection); |
291 | it.current(); | 293 | it.current(); |
292 | ++it ) { | 294 | ++it ) { |
293 | SelectedNodes->append( it.current() ); | 295 | SelectedNodes->append( it.current() ); |
294 | } | 296 | } |
295 | 297 | ||
296 | if( TmpCollection.isModified() ) | 298 | if( TmpCollection.isModified() ) |
297 | SelectedNodes->setModified( 1 ); | 299 | SelectedNodes->setModified( 1 ); |
298 | 300 | ||
299 | if( SelectedNodes->name() != Name_LE->text() ) { | 301 | if( SelectedNodes->name() != Name_LE->text() ) { |
300 | SelectedNodes->setName( Name_LE->text() ); | 302 | SelectedNodes->setName( Name_LE->text() ); |
301 | SelectedNodes->setModified( 1 ); | 303 | SelectedNodes->setModified( 1 ); |
302 | } | 304 | } |
303 | 305 | ||
304 | return SelectedNodes; | 306 | return SelectedNodes; |
305 | } | 307 | } |
306 | 308 | ||
307 | // Build device tree -> start | 309 | // Build device tree -> start |
308 | void EditConnection::buildFullTree( void ) { | 310 | void EditNetworkSetup::buildFullTree( void ) { |
309 | ANetNode * NN; | 311 | ANetNode * NN; |
310 | 312 | ||
311 | // toplevel item | 313 | // toplevel item |
312 | MyQCheckListItem * TheTop = new MyQCheckListItem( | 314 | MyQCheckListItem * TheTop = new MyQCheckListItem( |
313 | Nodes_LV, | 315 | Nodes_LV, |
314 | NSResources->netNode2Name("fullsetup"), | 316 | NSResources->netNode2Name("fullsetup"), |
315 | QCheckListItem::Controller ); | 317 | QCheckListItem::Controller ); |
316 | TheTop->setOpen( TRUE ); | 318 | TheTop->setOpen( TRUE ); |
317 | Description_LBL->setText( | 319 | Description_LBL->setText( |
318 | NSResources->netNode2Description( "fullsetup" ) ); | 320 | NSResources->netNode2Description( "fullsetup" ) ); |
319 | Nodes_LV->setSelected( TheTop, TRUE ); | 321 | Nodes_LV->setSelected( TheTop, TRUE ); |
320 | 322 | ||
321 | // find all Nodes that are toplevel nodes -> ie provide | 323 | // find all Nodes that are toplevel nodes -> ie provide |
322 | // TCP/IP Connection | 324 | // TCP/IP NetworkSetup |
323 | for( QDictIterator<ANetNode> Iter(NSResources->netNodes()); | 325 | for( QDictIterator<ANetNode> Iter(NSResources->netNodes()); |
324 | Iter.current(); | 326 | Iter.current(); |
325 | ++Iter ) { | 327 | ++Iter ) { |
326 | NN = Iter.current(); | 328 | NN = Iter.current(); |
327 | 329 | ||
328 | if( ! NN->isToplevel() ) { | 330 | if( ! NN->isToplevel() ) { |
329 | continue; | 331 | continue; |
330 | } | 332 | } |
331 | 333 | ||
332 | MyQCheckListItem * it = new MyQCheckListItem( TheTop, | 334 | MyQCheckListItem * it = new MyQCheckListItem( TheTop, |
333 | NN->name(), | 335 | NN->name(), |
334 | QCheckListItem::RadioButton ); | 336 | QCheckListItem::RadioButton ); |
335 | it->setPixmap( 0, | 337 | it->setPixmap( 0, |
336 | NSResources->getPixmap( NN->pixmapName() ) | 338 | NSResources->getPixmap( NN->pixmapName() ) |
337 | ); | 339 | ); |
338 | // remember that this node maps to this listitem | 340 | // remember that this node maps to this listitem |
339 | Mapping->insert( it, NN ); | 341 | Mapping->insert( it, NN ); |
340 | buildSubTree( it, NN ); | 342 | buildSubTree( it, NN ); |
341 | } | 343 | } |
342 | } | 344 | } |
343 | 345 | ||
344 | // Build device tree -> help function | 346 | // Build device tree -> help function |
345 | void EditConnection::buildSubTree( QListViewItem * it, ANetNode *NN ) { | 347 | void EditNetworkSetup::buildSubTree( QListViewItem * it, ANetNode *NN ) { |
346 | ANetNode::NetNodeList & NNL = NN->alternatives(); | 348 | ANetNode::NetNodeList & NNL = NN->alternatives(); |
347 | 349 | ||
348 | if( NNL.size() > 1 ) { | 350 | if( NNL.size() > 1 ) { |
349 | // this node has alternatives -> needs radio buttons | 351 | // this node has alternatives -> needs radio buttons |
350 | it = new MyQCheckListItem( | 352 | it = new MyQCheckListItem( |
351 | it, | 353 | it, |
352 | NSResources->netNode2Name(NN->needs()[0]), | 354 | NSResources->netNode2Name(NN->needs()[0]), |
353 | QCheckListItem::Controller ); | 355 | QCheckListItem::Controller ); |
354 | it->setSelectable( FALSE ); | 356 | it->setSelectable( FALSE ); |
355 | } | 357 | } |
356 | 358 | ||
357 | for ( unsigned int i=0; i < NNL.size(); i++ ) { | 359 | for ( unsigned int i=0; i < NNL.size(); i++ ) { |
358 | QListViewItem * CI; | 360 | QListViewItem * CI; |
359 | if( NNL.size() > 1 ) { | 361 | if( NNL.size() > 1 ) { |
360 | // generate radio buttons | 362 | // generate radio buttons |
361 | CI = new MyQCheckListItem( | 363 | CI = new MyQCheckListItem( |
362 | (QCheckListItem *)it, | 364 | (QCheckListItem *)it, |
363 | NNL[i]->name(), QCheckListItem::RadioButton ); | 365 | NNL[i]->name(), QCheckListItem::RadioButton ); |
364 | // remember that this node maps to this listitem | 366 | // remember that this node maps to this listitem |
365 | CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) ); | 367 | CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) ); |
366 | Mapping->insert( CI, NNL[i] ); | 368 | Mapping->insert( CI, NNL[i] ); |
367 | CI->setSelectable( FALSE ); | 369 | CI->setSelectable( FALSE ); |
368 | } else { | 370 | } else { |
369 | // Single item | 371 | // Single item |
370 | CI = new MyQListViewItem( it, NNL[i]->name() ); | 372 | CI = new MyQListViewItem( it, NNL[i]->name() ); |
371 | // remember that this node maps to this listitem | 373 | // remember that this node maps to this listitem |
372 | Mapping->insert( CI, NNL[i] ); | 374 | Mapping->insert( CI, NNL[i] ); |
373 | CI->setSelectable( FALSE ); | 375 | CI->setSelectable( FALSE ); |
374 | CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) ); | 376 | CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) ); |
375 | } | 377 | } |
376 | buildSubTree( CI, NNL[i] ); | 378 | buildSubTree( CI, NNL[i] ); |
377 | } | 379 | } |
378 | } | 380 | } |
379 | 381 | ||
380 | // Clicked ok OK button | 382 | // Clicked ok OK button |
381 | void EditConnection::accept( void ) { | 383 | void EditNetworkSetup::accept( void ) { |
382 | if( ! haveCompleteConfig( 0 ) || Name_LE->text().isEmpty() ) { | 384 | if( ! haveCompleteConfig( 0 ) || Name_LE->text().isEmpty() ) { |
383 | QMessageBox::warning( | 385 | QMessageBox::warning( |
384 | 0, | 386 | 0, |
385 | tr( "Closing Connection Setup" ), | 387 | tr( "Closing NetworkSetup Setup" ), |
386 | tr( "Definition not complete or no name" ) ); | 388 | tr( "Definition not complete or no name" ) ); |
387 | return; | 389 | return; |
388 | } | 390 | } |
389 | 391 | ||
390 | // check if all devices have acceptable input | 392 | // check if all devices have acceptable input |
391 | getTmpCollection(); | 393 | getTmpCollection(); |
392 | { ANetNodeInstance * NNI; | 394 | { ANetNodeInstance * NNI; |
393 | QString S; | 395 | QString S; |
394 | 396 | ||
395 | for( QListIterator<ANetNodeInstance> it(TmpCollection); | 397 | for( QListIterator<ANetNodeInstance> it(TmpCollection); |
396 | it.current(); | 398 | it.current(); |
397 | ++it ) { | 399 | ++it ) { |
398 | NNI = it.current(); | 400 | NNI = it.current(); |
399 | // widget must show its own problems | 401 | // widget must show its own problems |
400 | S = NNI->acceptable(); | 402 | S = NNI->acceptable(); |
401 | if( ! S.isEmpty() ) { | 403 | if( ! S.isEmpty() ) { |
402 | QMessageBox::warning( | 404 | QMessageBox::warning( |
403 | 0, | 405 | 0, |
404 | tr( "Cannot save" ), | 406 | tr( "Cannot save" ), |
405 | S ); | 407 | S ); |
406 | return; | 408 | return; |
407 | } | 409 | } |
408 | NNI->commit(); | 410 | NNI->commit(); |
409 | 411 | ||
410 | if( NNI->isModified() ) { | 412 | if( NNI->isModified() ) { |
411 | TmpCollection.setModified( 1 ); | 413 | TmpCollection.setModified( 1 ); |
412 | // commit the data | 414 | // commit the data |
413 | } | 415 | } |
414 | } | 416 | } |
415 | } | 417 | } |
416 | 418 | ||
417 | QDialog::accept(); | 419 | QDialog::accept(); |
418 | } | 420 | } |
419 | 421 | ||
420 | // triggered by CB | 422 | // triggered by CB |
421 | void EditConnection::SLOT_AutoCollapse( bool b ) { | 423 | void EditNetworkSetup::SLOT_AutoCollapse( bool b ) { |
422 | AutoCollapse = b; | 424 | AutoCollapse = b; |
423 | } | 425 | } |
424 | 426 | ||
425 | // clicked on node in tree -> update GUI | 427 | // clicked on node in tree -> update GUI |
426 | void EditConnection::SLOT_SelectNode( QListViewItem * it ) { | 428 | void EditNetworkSetup::SLOT_SelectNode( QListViewItem * it ) { |
427 | ANetNode * NN; | 429 | ANetNode * NN; |
428 | if( it == 0 || it->depth() == 0 ) { | 430 | if( it == 0 || it->depth() == 0 ) { |
429 | Description_LBL->setText( | 431 | Description_LBL->setText( |
430 | NSResources->netNode2Description( "fullsetup" ) ); | 432 | NSResources->netNode2Description( "fullsetup" ) ); |
431 | // topevel or no selection | 433 | // topevel or no selection |
432 | return; | 434 | return; |
433 | } | 435 | } |
434 | 436 | ||
435 | // store conversion from lvitem to node | 437 | // store conversion from lvitem to node |
436 | NN = (*Mapping)[ it ]; | 438 | NN = (*Mapping)[ it ]; |
437 | 439 | ||
438 | if( ! NN ) { | 440 | if( ! NN ) { |
439 | // intermediate node | 441 | // intermediate node |
440 | NN = (*Mapping)[ it->parent() ]; | 442 | NN = (*Mapping)[ it->parent() ]; |
441 | if( NN ) { | 443 | if( NN ) { |
442 | // figure out type of this node -> produce mesage | 444 | // figure out type of this node -> produce mesage |
443 | Description_LBL->setText( NSResources->netNode2Description( | 445 | Description_LBL->setText( NSResources->netNode2Description( |
444 | NN->needs()[0]) ); | 446 | NN->needs()[0]) ); |
445 | } else { | 447 | } else { |
446 | Description_LBL->setText( "" ); | 448 | Description_LBL->setText( "" ); |
447 | } | 449 | } |
448 | return; | 450 | return; |
449 | } | 451 | } |
450 | 452 | ||
451 | Description_LBL->setText( NN->nodeDescription() ); | 453 | Description_LBL->setText( NN->nodeDescription() ); |
452 | 454 | ||
453 | if( ! it->isSelectable() ) { | 455 | if( ! it->isSelectable() ) { |
454 | return; | 456 | return; |
455 | } | 457 | } |
456 | 458 | ||
457 | if( ! ((QCheckListItem *)it)->isOn() ) { | 459 | if( ! ((QCheckListItem *)it)->isOn() ) { |
458 | // clicked on line but NOT on Check or Radio item | 460 | // clicked on line but NOT on Check or Radio item |
459 | return; | 461 | return; |
460 | } | 462 | } |
461 | 463 | ||
462 | // item has really changed -> update | 464 | // item has really changed -> update |
463 | TmpIsValid = 0; | 465 | TmpIsValid = 0; |
464 | updateGUI( it, NN ); | 466 | updateGUI( it, NN ); |
465 | } | 467 | } |
466 | 468 | ||
467 | // cliecked on TAB to go to setup | 469 | // cliecked on TAB to go to setup |
468 | void EditConnection::SLOT_AlterTab( const QString & S ) { | 470 | void EditNetworkSetup::SLOT_AlterTab( const QString & S ) { |
469 | if( S == tr( "Setup" ) && Setup_FRM->isEnabled() ) { | 471 | if( S == tr( "Setup" ) && Setup_FRM->isEnabled() ) { |
470 | // switched to setup -> update CB and populate ws with | 472 | // switched to setup -> update CB and populate ws with |
471 | // forms for devices | 473 | // forms for devices |
472 | 474 | ||
473 | if( ! TmpIsValid ) { | 475 | if( ! TmpIsValid ) { |
474 | getTmpCollection(); | 476 | getTmpCollection(); |
475 | 477 | ||
476 | // clear CB and Ws | 478 | // clear CB and Ws |
477 | { QWidget * W; | 479 | { QWidget * W; |
478 | int i = 0; | 480 | int i = 0; |
479 | 481 | ||
480 | Devices_CB->clear(); | 482 | Devices_CB->clear(); |
481 | while( ( W = Setup_WS->widget( i ) ) ) { | 483 | while( ( W = Setup_WS->widget( i ) ) ) { |
482 | Setup_WS->removeWidget( W ); | 484 | Setup_WS->removeWidget( W ); |
483 | i ++; | 485 | i ++; |
484 | } | 486 | } |
485 | } | 487 | } |
486 | 488 | ||
487 | // update CB | 489 | // update CB |
488 | // and populate WidgetStack | 490 | // and populate WidgetStack |
489 | { ANetNodeInstance * NNI; | 491 | { ANetNodeInstance * NNI; |
490 | QListIterator<ANetNodeInstance> it(TmpCollection); | 492 | QListIterator<ANetNodeInstance> it(TmpCollection); |
491 | int i = 0; | 493 | int i = 0; |
492 | QWidget * W; | 494 | QWidget * W; |
493 | 495 | ||
494 | for ( ; it.current(); ++it ) { | 496 | for ( ; it.current(); ++it ) { |
495 | NNI = it.current(); | 497 | NNI = it.current(); |
496 | Devices_CB->insertItem( | 498 | Devices_CB->insertItem( |
497 | NSResources->getPixmap( NNI->nodeClass()->pixmapName() ), | 499 | NSResources->getPixmap( NNI->nodeClass()->pixmapName() ), |
498 | NNI->nodeClass()->name() | 500 | NNI->nodeClass()->name() |
499 | ); | 501 | ); |
500 | 502 | ||
501 | // add edit widget | 503 | // add edit widget |
502 | W = NNI->edit( Setup_WS ); | 504 | W = NNI->edit( Setup_WS ); |
503 | if( ! W) { | 505 | if( ! W) { |
504 | W = new QLabel( Setup_WS, | 506 | W = new QLabel( Setup_WS, |
505 | tr("No configuration required")); | 507 | tr("No configuration required")); |
506 | } | 508 | } |
507 | Setup_WS->addWidget( W , i ); | 509 | Setup_WS->addWidget( W , i ); |
508 | i ++; | 510 | i ++; |
509 | } | 511 | } |
510 | } | 512 | } |
511 | Setup_WS->raiseWidget( 0 ); | 513 | Setup_WS->raiseWidget( 0 ); |
512 | } // still valid | 514 | } // still valid |
513 | } | 515 | } |
514 | } | 516 | } |
515 | 517 | ||
516 | // update visual feedback of selection state | 518 | // update visual feedback of selection state |
517 | void EditConnection::updateGUI( QListViewItem * it, ANetNode * NN ) { | 519 | void EditNetworkSetup::updateGUI( QListViewItem * it, ANetNode * NN ) { |
518 | 520 | ||
519 | bool HCC = haveCompleteConfig( it ); | 521 | bool HCC = haveCompleteConfig( it ); |
520 | Tab_TB->setTabEnabled( Setup_FRM, HCC ); | 522 | Tab_TB->setTabEnabled( Setup_FRM, HCC ); |
521 | Setup_FRM->setEnabled( HCC ); | 523 | Setup_FRM->setEnabled( HCC ); |
522 | 524 | ||
523 | // disable children of all siblings at same level | 525 | // disable children of all siblings at same level |
524 | QListViewItem * Sbl = it->parent()->firstChild(); | 526 | QListViewItem * Sbl = it->parent()->firstChild(); |
525 | while( Sbl ) { | 527 | while( Sbl ) { |
526 | if ( Sbl != it ) { | 528 | if ( Sbl != it ) { |
527 | disableTree( Sbl->firstChild(), FALSE ); | 529 | disableTree( Sbl->firstChild(), FALSE ); |
528 | Sbl->setSelectable( TRUE ); | 530 | Sbl->setSelectable( TRUE ); |
529 | if( AutoCollapse ) | 531 | if( AutoCollapse ) |
530 | Sbl->setOpen( FALSE ); | 532 | Sbl->setOpen( FALSE ); |
531 | } | 533 | } |
532 | Sbl = Sbl->nextSibling(); | 534 | Sbl = Sbl->nextSibling(); |
533 | } | 535 | } |
534 | 536 | ||
535 | // enable selected path (as deep as it goes | 537 | // enable selected path (as deep as it goes |
536 | it->setOpen( TRUE ); | 538 | it->setOpen( TRUE ); |
537 | enablePath( it->firstChild(), | 539 | enablePath( it->firstChild(), |
538 | (it->depth()==1) ? | 540 | (it->depth()==1) ? |
539 | 1 : // toplevel always alternatives | 541 | 1 : // toplevel always alternatives |
540 | (NN->alternatives().size() > 1) ); | 542 | (NN->alternatives().size() > 1) ); |
541 | } | 543 | } |
542 | 544 | ||
543 | void EditConnection::disableTree( QListViewItem * it, bool Mode ) { | 545 | void EditNetworkSetup::disableTree( QListViewItem * it, bool Mode ) { |
544 | while( it ) { | 546 | while( it ) { |
545 | // disable sbl's chidren | 547 | // disable sbl's chidren |
546 | it->setSelectable( Mode ); | 548 | it->setSelectable( Mode ); |
547 | if( AutoCollapse ) | 549 | if( AutoCollapse ) |
548 | it->setOpen( Mode ); | 550 | it->setOpen( Mode ); |
549 | disableTree( it->firstChild(), Mode ); | 551 | disableTree( it->firstChild(), Mode ); |
550 | it = it->nextSibling(); | 552 | it = it->nextSibling(); |
551 | } | 553 | } |
552 | } | 554 | } |
553 | 555 | ||
554 | // pah : ParentHasAlternatives | 556 | // pah : ParentHasAlternatives |
555 | void EditConnection::enablePath( QListViewItem * it, bool pha ) { | 557 | void EditNetworkSetup::enablePath( QListViewItem * it, bool pha ) { |
556 | while( it ) { | 558 | while( it ) { |
557 | ANetNode * NN; | 559 | ANetNode * NN; |
558 | NN = (*Mapping)[it]; | 560 | NN = (*Mapping)[it]; |
559 | if( NN ) { | 561 | if( NN ) { |
560 | if( pha ) { | 562 | if( pha ) { |
561 | bool doOn = ((QCheckListItem *)it)->isOn(); | 563 | bool doOn = ((QCheckListItem *)it)->isOn(); |
562 | // we are a checklistitem for sure | 564 | // we are a checklistitem for sure |
563 | it->setSelectable( TRUE ); | 565 | it->setSelectable( TRUE ); |
564 | if( AutoCollapse && ! doOn ) | 566 | if( AutoCollapse && ! doOn ) |
565 | it->setOpen( doOn ); | 567 | it->setOpen( doOn ); |
566 | if( doOn ) { | 568 | if( doOn ) { |
567 | // selected alternative | 569 | // selected alternative |
568 | enablePath( it->firstChild(), | 570 | enablePath( it->firstChild(), |
569 | NN->alternatives().size() > 1); | 571 | NN->alternatives().size() > 1); |
570 | } else { | 572 | } else { |
571 | // non-selected alternative | 573 | // non-selected alternative |
572 | disableTree( it->firstChild(), FALSE); | 574 | disableTree( it->firstChild(), FALSE); |
573 | } | 575 | } |
574 | } else { | 576 | } else { |
575 | // we are single subitem | 577 | // we are single subitem |
576 | it->setSelectable( TRUE ); | 578 | it->setSelectable( TRUE ); |
577 | it->setOpen( TRUE ); | 579 | it->setOpen( TRUE ); |
578 | enablePath( it->firstChild(), | 580 | enablePath( it->firstChild(), |
579 | NN->alternatives().size() > 1); | 581 | NN->alternatives().size() > 1); |
580 | } | 582 | } |
581 | } else { | 583 | } else { |
582 | // controller node | 584 | // controller node |
583 | it->setSelectable( TRUE ); | 585 | it->setSelectable( TRUE ); |
584 | it->setOpen( TRUE ); | 586 | it->setOpen( TRUE ); |
585 | enablePath( it->firstChild(), pha ); | 587 | enablePath( it->firstChild(), pha ); |
586 | } | 588 | } |
587 | it = it->nextSibling(); | 589 | it = it->nextSibling(); |
588 | } | 590 | } |
589 | } | 591 | } |
590 | 592 | ||
591 | // do we have a complete configuration (all needs are provided for ?) | 593 | // do we have a complete configuration (all needs are provided for ?) |
592 | bool EditConnection::haveCompleteConfig( QListViewItem * it ) { | 594 | bool EditNetworkSetup::haveCompleteConfig( QListViewItem * it ) { |
593 | 595 | ||
594 | // check if all below this level is selected | 596 | // check if all below this level is selected |
595 | it = ( it ) ?it : Nodes_LV->firstChild(); | 597 | it = ( it ) ?it : Nodes_LV->firstChild(); |
596 | ANetNode *NN; | 598 | ANetNode *NN; |
597 | bool Found; | 599 | bool Found; |
598 | 600 | ||
599 | while ( it ) { | 601 | while ( it ) { |
600 | NN = (*Mapping)[it]; | 602 | NN = (*Mapping)[it]; |
601 | if( NN == 0 ) { | 603 | if( NN == 0 ) { |
602 | // this item is a controller -> | 604 | // this item is a controller -> |
603 | // has radio items as children -> | 605 | // has radio items as children -> |
604 | // find selected one | 606 | // find selected one |
605 | it = it->firstChild(); | 607 | it = it->firstChild(); |
606 | Found = 0; | 608 | Found = 0; |
607 | while( it ) { | 609 | while( it ) { |
608 | if( ((QCheckListItem *)it)->isOn() ) { | 610 | if( ((QCheckListItem *)it)->isOn() ) { |
609 | Found = 1; | 611 | Found = 1; |
610 | // go deeper | 612 | // go deeper |
611 | it = it->firstChild(); | 613 | it = it->firstChild(); |
612 | break; | 614 | break; |
613 | } | 615 | } |
614 | it = it->nextSibling(); | 616 | it = it->nextSibling(); |
615 | } | 617 | } |
616 | 618 | ||
617 | if( ! Found ) { | 619 | if( ! Found ) { |
618 | return 0; // no not complete -> a radio should have been chkd | 620 | return 0; // no not complete -> a radio should have been chkd |
619 | } | 621 | } |
620 | 622 | ||
621 | // it now contains selected radio | 623 | // it now contains selected radio |
622 | NN = (*Mapping)[it]; | 624 | NN = (*Mapping)[it]; |
623 | } else { | 625 | } else { |
624 | // automatic selection | 626 | // automatic selection |
625 | it = it->firstChild(); | 627 | it = it->firstChild(); |
626 | } | 628 | } |
627 | } | 629 | } |
628 | return 1; | 630 | return 1; |
629 | } | 631 | } |
diff --git a/noncore/settings/networksettings2/editconnection.h b/noncore/settings/networksettings2/editconnection.h index e8d7a2c..c2fc643 100644 --- a/noncore/settings/networksettings2/editconnection.h +++ b/noncore/settings/networksettings2/editconnection.h | |||
@@ -1,49 +1,49 @@ | |||
1 | #include "editconnectionGUI.h" | 1 | #include "editconnectionGUI.h" |
2 | 2 | ||
3 | #include <qptrdict.h> | 3 | #include <qptrdict.h> |
4 | #include <qvector.h> | 4 | #include <qvector.h> |
5 | #include "netnode.h" | 5 | #include "netnode.h" |
6 | 6 | ||
7 | class ANetNodeInstance; | 7 | class ANetNodeInstance; |
8 | class ANetNode; | 8 | class ANetNode; |
9 | class QListViewItem; | 9 | class QListViewItem; |
10 | class NetNodeLVI; | 10 | class NetNodeLVI; |
11 | class QCloseEvent; | 11 | class QCloseEvent; |
12 | 12 | ||
13 | class EditConnection : public EditConnectionGUI { | 13 | class EditNetworkSetup : public EditNetworkSetupGUI { |
14 | 14 | ||
15 | Q_OBJECT | 15 | Q_OBJECT |
16 | 16 | ||
17 | public : | 17 | public : |
18 | 18 | ||
19 | EditConnection( QWidget * P ); | 19 | EditNetworkSetup( QWidget * P ); |
20 | 20 | ||
21 | ANetNodeInstance * netNodeInstance( void ); | 21 | ANetNodeInstance * netNodeInstance( void ); |
22 | void setConnection( NodeCollection * NC ); | 22 | void setNetworkSetup( NetworkSetup * NC ); |
23 | NodeCollection * connection( void ); | 23 | NetworkSetup * networkSetup( void ); |
24 | 24 | ||
25 | public slots : | 25 | public slots : |
26 | 26 | ||
27 | void SLOT_AutoCollapse( bool ); | 27 | void SLOT_AutoCollapse( bool ); |
28 | void SLOT_SelectNode( QListViewItem * it ); | 28 | void SLOT_SelectNode( QListViewItem * it ); |
29 | void SLOT_AlterTab( const QString & S ); | 29 | void SLOT_AlterTab( const QString & S ); |
30 | virtual void accept( void ); | 30 | virtual void accept( void ); |
31 | 31 | ||
32 | private : | 32 | private : |
33 | 33 | ||
34 | NodeCollection * getTmpCollection( void ); | 34 | NetworkSetup * getTmpCollection( void ); |
35 | void updateGUI( QListViewItem * it, ANetNode * NN ); | 35 | void updateGUI( QListViewItem * it, ANetNode * NN ); |
36 | void buildFullTree( void ); | 36 | void buildFullTree( void ); |
37 | void buildSubTree( QListViewItem * Parent, ANetNode * NN ); | 37 | void buildSubTree( QListViewItem * Parent, ANetNode * NN ); |
38 | void disableTree( QListViewItem * it, bool Mode); | 38 | void disableTree( QListViewItem * it, bool Mode); |
39 | void enablePath( QListViewItem * it, bool pha); | 39 | void enablePath( QListViewItem * it, bool pha); |
40 | 40 | ||
41 | bool haveCompleteConfig( QListViewItem * it ); | 41 | bool haveCompleteConfig( QListViewItem * it ); |
42 | QPtrDict<ANetNode> * Mapping; | 42 | QPtrDict<ANetNode> * Mapping; |
43 | NodeCollection * SelectedNodes; | 43 | NetworkSetup * SelectedNodes; |
44 | bool TmpIsValid; | 44 | bool TmpIsValid; |
45 | NodeCollection TmpCollection; | 45 | NetworkSetup TmpCollection; |
46 | 46 | ||
47 | static bool AutoCollapse; | 47 | static bool AutoCollapse; |
48 | 48 | ||
49 | }; | 49 | }; |
diff --git a/noncore/settings/networksettings2/editconnectionGUI.ui b/noncore/settings/networksettings2/editconnectionGUI.ui index dfb2596..5e50490 100644 --- a/noncore/settings/networksettings2/editconnectionGUI.ui +++ b/noncore/settings/networksettings2/editconnectionGUI.ui | |||
@@ -1,406 +1,406 @@ | |||
1 | <!DOCTYPE UI><UI> | 1 | <!DOCTYPE UI><UI> |
2 | <class>EditConnectionGUI</class> | 2 | <class>EditNetworkSetupGUI</class> |
3 | <widget> | 3 | <widget> |
4 | <class>QDialog</class> | 4 | <class>QDialog</class> |
5 | <property stdset="1"> | 5 | <property stdset="1"> |
6 | <name>name</name> | 6 | <name>name</name> |
7 | <cstring>EditConnectionGUI</cstring> | 7 | <cstring>EditNetworkSetupGUI</cstring> |
8 | </property> | 8 | </property> |
9 | <property stdset="1"> | 9 | <property stdset="1"> |
10 | <name>geometry</name> | 10 | <name>geometry</name> |
11 | <rect> | 11 | <rect> |
12 | <x>0</x> | 12 | <x>0</x> |
13 | <y>0</y> | 13 | <y>0</y> |
14 | <width>427</width> | 14 | <width>427</width> |
15 | <height>523</height> | 15 | <height>523</height> |
16 | </rect> | 16 | </rect> |
17 | </property> | 17 | </property> |
18 | <property stdset="1"> | 18 | <property stdset="1"> |
19 | <name>sizePolicy</name> | 19 | <name>sizePolicy</name> |
20 | <sizepolicy> | 20 | <sizepolicy> |
21 | <hsizetype>7</hsizetype> | 21 | <hsizetype>7</hsizetype> |
22 | <vsizetype>7</vsizetype> | 22 | <vsizetype>7</vsizetype> |
23 | </sizepolicy> | 23 | </sizepolicy> |
24 | </property> | 24 | </property> |
25 | <property stdset="1"> | 25 | <property stdset="1"> |
26 | <name>minimumSize</name> | 26 | <name>minimumSize</name> |
27 | <size> | 27 | <size> |
28 | <width>0</width> | 28 | <width>0</width> |
29 | <height>70</height> | 29 | <height>70</height> |
30 | </size> | 30 | </size> |
31 | </property> | 31 | </property> |
32 | <property stdset="1"> | 32 | <property stdset="1"> |
33 | <name>caption</name> | 33 | <name>caption</name> |
34 | <string>Edit profile</string> | 34 | <string>Edit profile</string> |
35 | </property> | 35 | </property> |
36 | <property> | 36 | <property> |
37 | <name>layoutMargin</name> | 37 | <name>layoutMargin</name> |
38 | </property> | 38 | </property> |
39 | <property> | 39 | <property> |
40 | <name>layoutSpacing</name> | 40 | <name>layoutSpacing</name> |
41 | </property> | 41 | </property> |
42 | <vbox> | 42 | <vbox> |
43 | <property stdset="1"> | 43 | <property stdset="1"> |
44 | <name>margin</name> | 44 | <name>margin</name> |
45 | <number>2</number> | 45 | <number>2</number> |
46 | </property> | 46 | </property> |
47 | <property stdset="1"> | 47 | <property stdset="1"> |
48 | <name>spacing</name> | 48 | <name>spacing</name> |
49 | <number>2</number> | 49 | <number>2</number> |
50 | </property> | 50 | </property> |
51 | <widget> | 51 | <widget> |
52 | <class>QTabWidget</class> | 52 | <class>QTabWidget</class> |
53 | <property stdset="1"> | 53 | <property stdset="1"> |
54 | <name>name</name> | 54 | <name>name</name> |
55 | <cstring>Tab_TB</cstring> | 55 | <cstring>Tab_TB</cstring> |
56 | </property> | 56 | </property> |
57 | <property> | 57 | <property> |
58 | <name>layoutMargin</name> | 58 | <name>layoutMargin</name> |
59 | </property> | 59 | </property> |
60 | <property> | 60 | <property> |
61 | <name>layoutSpacing</name> | 61 | <name>layoutSpacing</name> |
62 | </property> | 62 | </property> |
63 | <widget> | 63 | <widget> |
64 | <class>QWidget</class> | 64 | <class>QWidget</class> |
65 | <property stdset="1"> | 65 | <property stdset="1"> |
66 | <name>name</name> | 66 | <name>name</name> |
67 | <cstring>tab</cstring> | 67 | <cstring>tab</cstring> |
68 | </property> | 68 | </property> |
69 | <attribute> | 69 | <attribute> |
70 | <name>title</name> | 70 | <name>title</name> |
71 | <string>Device Tree</string> | 71 | <string>Device Tree</string> |
72 | </attribute> | 72 | </attribute> |
73 | <vbox> | 73 | <vbox> |
74 | <property stdset="1"> | 74 | <property stdset="1"> |
75 | <name>margin</name> | 75 | <name>margin</name> |
76 | <number>0</number> | 76 | <number>0</number> |
77 | </property> | 77 | </property> |
78 | <property stdset="1"> | 78 | <property stdset="1"> |
79 | <name>spacing</name> | 79 | <name>spacing</name> |
80 | <number>2</number> | 80 | <number>2</number> |
81 | </property> | 81 | </property> |
82 | <widget> | 82 | <widget> |
83 | <class>QLayoutWidget</class> | 83 | <class>QLayoutWidget</class> |
84 | <property stdset="1"> | 84 | <property stdset="1"> |
85 | <name>name</name> | 85 | <name>name</name> |
86 | <cstring>Layout2</cstring> | 86 | <cstring>Layout2</cstring> |
87 | </property> | 87 | </property> |
88 | <hbox> | 88 | <hbox> |
89 | <property stdset="1"> | 89 | <property stdset="1"> |
90 | <name>margin</name> | 90 | <name>margin</name> |
91 | <number>0</number> | 91 | <number>0</number> |
92 | </property> | 92 | </property> |
93 | <property stdset="1"> | 93 | <property stdset="1"> |
94 | <name>spacing</name> | 94 | <name>spacing</name> |
95 | <number>6</number> | 95 | <number>6</number> |
96 | </property> | 96 | </property> |
97 | <widget> | 97 | <widget> |
98 | <class>QLabel</class> | 98 | <class>QLabel</class> |
99 | <property stdset="1"> | 99 | <property stdset="1"> |
100 | <name>name</name> | 100 | <name>name</name> |
101 | <cstring>Header_LBL</cstring> | 101 | <cstring>Header_LBL</cstring> |
102 | </property> | 102 | </property> |
103 | <property stdset="1"> | 103 | <property stdset="1"> |
104 | <name>sizePolicy</name> | 104 | <name>sizePolicy</name> |
105 | <sizepolicy> | 105 | <sizepolicy> |
106 | <hsizetype>1</hsizetype> | 106 | <hsizetype>1</hsizetype> |
107 | <vsizetype>1</vsizetype> | 107 | <vsizetype>1</vsizetype> |
108 | </sizepolicy> | 108 | </sizepolicy> |
109 | </property> | 109 | </property> |
110 | <property stdset="1"> | 110 | <property stdset="1"> |
111 | <name>frameShape</name> | 111 | <name>frameShape</name> |
112 | <enum>MShape</enum> | 112 | <enum>MShape</enum> |
113 | </property> | 113 | </property> |
114 | <property stdset="1"> | 114 | <property stdset="1"> |
115 | <name>frameShadow</name> | 115 | <name>frameShadow</name> |
116 | <enum>MShadow</enum> | 116 | <enum>MShadow</enum> |
117 | </property> | 117 | </property> |
118 | <property stdset="1"> | 118 | <property stdset="1"> |
119 | <name>text</name> | 119 | <name>text</name> |
120 | <string>Connection profile</string> | 120 | <string>NetworkSetup profile</string> |
121 | </property> | 121 | </property> |
122 | <property stdset="1"> | 122 | <property stdset="1"> |
123 | <name>alignment</name> | 123 | <name>alignment</name> |
124 | <set>AlignVCenter|AlignLeft</set> | 124 | <set>AlignVCenter|AlignLeft</set> |
125 | </property> | 125 | </property> |
126 | <property> | 126 | <property> |
127 | <name>vAlign</name> | 127 | <name>vAlign</name> |
128 | </property> | 128 | </property> |
129 | </widget> | 129 | </widget> |
130 | <widget> | 130 | <widget> |
131 | <class>QLineEdit</class> | 131 | <class>QLineEdit</class> |
132 | <property stdset="1"> | 132 | <property stdset="1"> |
133 | <name>name</name> | 133 | <name>name</name> |
134 | <cstring>Name_LE</cstring> | 134 | <cstring>Name_LE</cstring> |
135 | </property> | 135 | </property> |
136 | </widget> | 136 | </widget> |
137 | </hbox> | 137 | </hbox> |
138 | </widget> | 138 | </widget> |
139 | <widget> | 139 | <widget> |
140 | <class>QListView</class> | 140 | <class>QListView</class> |
141 | <column> | 141 | <column> |
142 | <property> | 142 | <property> |
143 | <name>text</name> | 143 | <name>text</name> |
144 | <string>Column 1</string> | 144 | <string>Column 1</string> |
145 | </property> | 145 | </property> |
146 | <property> | 146 | <property> |
147 | <name>clickable</name> | 147 | <name>clickable</name> |
148 | <bool>true</bool> | 148 | <bool>true</bool> |
149 | </property> | 149 | </property> |
150 | <property> | 150 | <property> |
151 | <name>resizeable</name> | 151 | <name>resizeable</name> |
152 | <bool>true</bool> | 152 | <bool>true</bool> |
153 | </property> | 153 | </property> |
154 | </column> | 154 | </column> |
155 | <property stdset="1"> | 155 | <property stdset="1"> |
156 | <name>name</name> | 156 | <name>name</name> |
157 | <cstring>Nodes_LV</cstring> | 157 | <cstring>Nodes_LV</cstring> |
158 | </property> | 158 | </property> |
159 | <property stdset="1"> | 159 | <property stdset="1"> |
160 | <name>sizePolicy</name> | 160 | <name>sizePolicy</name> |
161 | <sizepolicy> | 161 | <sizepolicy> |
162 | <hsizetype>7</hsizetype> | 162 | <hsizetype>7</hsizetype> |
163 | <vsizetype>7</vsizetype> | 163 | <vsizetype>7</vsizetype> |
164 | </sizepolicy> | 164 | </sizepolicy> |
165 | </property> | 165 | </property> |
166 | <property stdset="1"> | 166 | <property stdset="1"> |
167 | <name>minimumSize</name> | 167 | <name>minimumSize</name> |
168 | <size> | 168 | <size> |
169 | <width>0</width> | 169 | <width>0</width> |
170 | <height>0</height> | 170 | <height>0</height> |
171 | </size> | 171 | </size> |
172 | </property> | 172 | </property> |
173 | <property stdset="1"> | 173 | <property stdset="1"> |
174 | <name>maximumSize</name> | 174 | <name>maximumSize</name> |
175 | <size> | 175 | <size> |
176 | <width>32767</width> | 176 | <width>32767</width> |
177 | <height>32767</height> | 177 | <height>32767</height> |
178 | </size> | 178 | </size> |
179 | </property> | 179 | </property> |
180 | <property stdset="1"> | 180 | <property stdset="1"> |
181 | <name>rootIsDecorated</name> | 181 | <name>rootIsDecorated</name> |
182 | <bool>true</bool> | 182 | <bool>true</bool> |
183 | </property> | 183 | </property> |
184 | </widget> | 184 | </widget> |
185 | <widget> | 185 | <widget> |
186 | <class>QLayoutWidget</class> | 186 | <class>QLayoutWidget</class> |
187 | <property stdset="1"> | 187 | <property stdset="1"> |
188 | <name>name</name> | 188 | <name>name</name> |
189 | <cstring>Layout4</cstring> | 189 | <cstring>Layout4</cstring> |
190 | </property> | 190 | </property> |
191 | <hbox> | 191 | <hbox> |
192 | <property stdset="1"> | 192 | <property stdset="1"> |
193 | <name>margin</name> | 193 | <name>margin</name> |
194 | <number>0</number> | 194 | <number>0</number> |
195 | </property> | 195 | </property> |
196 | <property stdset="1"> | 196 | <property stdset="1"> |
197 | <name>spacing</name> | 197 | <name>spacing</name> |
198 | <number>6</number> | 198 | <number>6</number> |
199 | </property> | 199 | </property> |
200 | <spacer> | 200 | <spacer> |
201 | <property> | 201 | <property> |
202 | <name>name</name> | 202 | <name>name</name> |
203 | <cstring>Spacer1</cstring> | 203 | <cstring>Spacer1</cstring> |
204 | </property> | 204 | </property> |
205 | <property stdset="1"> | 205 | <property stdset="1"> |
206 | <name>orientation</name> | 206 | <name>orientation</name> |
207 | <enum>Horizontal</enum> | 207 | <enum>Horizontal</enum> |
208 | </property> | 208 | </property> |
209 | <property stdset="1"> | 209 | <property stdset="1"> |
210 | <name>sizeType</name> | 210 | <name>sizeType</name> |
211 | <enum>Expanding</enum> | 211 | <enum>Expanding</enum> |
212 | </property> | 212 | </property> |
213 | <property> | 213 | <property> |
214 | <name>sizeHint</name> | 214 | <name>sizeHint</name> |
215 | <size> | 215 | <size> |
216 | <width>20</width> | 216 | <width>20</width> |
217 | <height>20</height> | 217 | <height>20</height> |
218 | </size> | 218 | </size> |
219 | </property> | 219 | </property> |
220 | </spacer> | 220 | </spacer> |
221 | <widget> | 221 | <widget> |
222 | <class>QCheckBox</class> | 222 | <class>QCheckBox</class> |
223 | <property stdset="1"> | 223 | <property stdset="1"> |
224 | <name>name</name> | 224 | <name>name</name> |
225 | <cstring>AutoCollapse_CB</cstring> | 225 | <cstring>AutoCollapse_CB</cstring> |
226 | </property> | 226 | </property> |
227 | <property stdset="1"> | 227 | <property stdset="1"> |
228 | <name>text</name> | 228 | <name>text</name> |
229 | <string>Auto collapse</string> | 229 | <string>Auto collapse</string> |
230 | </property> | 230 | </property> |
231 | <property stdset="1"> | 231 | <property stdset="1"> |
232 | <name>checked</name> | 232 | <name>checked</name> |
233 | <bool>true</bool> | 233 | <bool>true</bool> |
234 | </property> | 234 | </property> |
235 | </widget> | 235 | </widget> |
236 | </hbox> | 236 | </hbox> |
237 | </widget> | 237 | </widget> |
238 | <widget> | 238 | <widget> |
239 | <class>QLabel</class> | 239 | <class>QLabel</class> |
240 | <property stdset="1"> | 240 | <property stdset="1"> |
241 | <name>name</name> | 241 | <name>name</name> |
242 | <cstring>Description_LBL</cstring> | 242 | <cstring>Description_LBL</cstring> |
243 | </property> | 243 | </property> |
244 | <property stdset="1"> | 244 | <property stdset="1"> |
245 | <name>sizePolicy</name> | 245 | <name>sizePolicy</name> |
246 | <sizepolicy> | 246 | <sizepolicy> |
247 | <hsizetype>7</hsizetype> | 247 | <hsizetype>7</hsizetype> |
248 | <vsizetype>5</vsizetype> | 248 | <vsizetype>5</vsizetype> |
249 | </sizepolicy> | 249 | </sizepolicy> |
250 | </property> | 250 | </property> |
251 | <property stdset="1"> | 251 | <property stdset="1"> |
252 | <name>frameShape</name> | 252 | <name>frameShape</name> |
253 | <enum>Box</enum> | 253 | <enum>Box</enum> |
254 | </property> | 254 | </property> |
255 | <property stdset="1"> | 255 | <property stdset="1"> |
256 | <name>frameShadow</name> | 256 | <name>frameShadow</name> |
257 | <enum>Raised</enum> | 257 | <enum>Raised</enum> |
258 | </property> | 258 | </property> |
259 | <property stdset="1"> | 259 | <property stdset="1"> |
260 | <name>text</name> | 260 | <name>text</name> |
261 | <string></string> | 261 | <string></string> |
262 | </property> | 262 | </property> |
263 | <property stdset="1"> | 263 | <property stdset="1"> |
264 | <name>alignment</name> | 264 | <name>alignment</name> |
265 | <set>AlignTop|AlignLeft</set> | 265 | <set>AlignTop|AlignLeft</set> |
266 | </property> | 266 | </property> |
267 | <property> | 267 | <property> |
268 | <name>vAlign</name> | 268 | <name>vAlign</name> |
269 | </property> | 269 | </property> |
270 | </widget> | 270 | </widget> |
271 | </vbox> | 271 | </vbox> |
272 | </widget> | 272 | </widget> |
273 | <widget> | 273 | <widget> |
274 | <class>QWidget</class> | 274 | <class>QWidget</class> |
275 | <property stdset="1"> | 275 | <property stdset="1"> |
276 | <name>name</name> | 276 | <name>name</name> |
277 | <cstring>tab</cstring> | 277 | <cstring>tab</cstring> |
278 | </property> | 278 | </property> |
279 | <attribute> | 279 | <attribute> |
280 | <name>title</name> | 280 | <name>title</name> |
281 | <string>Setup</string> | 281 | <string>Setup</string> |
282 | </attribute> | 282 | </attribute> |
283 | <vbox> | 283 | <vbox> |
284 | <property stdset="1"> | 284 | <property stdset="1"> |
285 | <name>margin</name> | 285 | <name>margin</name> |
286 | <number>0</number> | 286 | <number>0</number> |
287 | </property> | 287 | </property> |
288 | <property stdset="1"> | 288 | <property stdset="1"> |
289 | <name>spacing</name> | 289 | <name>spacing</name> |
290 | <number>0</number> | 290 | <number>0</number> |
291 | </property> | 291 | </property> |
292 | <widget> | 292 | <widget> |
293 | <class>QFrame</class> | 293 | <class>QFrame</class> |
294 | <property stdset="1"> | 294 | <property stdset="1"> |
295 | <name>name</name> | 295 | <name>name</name> |
296 | <cstring>Setup_FRM</cstring> | 296 | <cstring>Setup_FRM</cstring> |
297 | </property> | 297 | </property> |
298 | <property stdset="1"> | 298 | <property stdset="1"> |
299 | <name>frameShape</name> | 299 | <name>frameShape</name> |
300 | <enum>NoFrame</enum> | 300 | <enum>NoFrame</enum> |
301 | </property> | 301 | </property> |
302 | <property stdset="1"> | 302 | <property stdset="1"> |
303 | <name>frameShadow</name> | 303 | <name>frameShadow</name> |
304 | <enum>Plain</enum> | 304 | <enum>Plain</enum> |
305 | </property> | 305 | </property> |
306 | <property stdset="1"> | 306 | <property stdset="1"> |
307 | <name>lineWidth</name> | 307 | <name>lineWidth</name> |
308 | <number>0</number> | 308 | <number>0</number> |
309 | </property> | 309 | </property> |
310 | <property stdset="1"> | 310 | <property stdset="1"> |
311 | <name>margin</name> | 311 | <name>margin</name> |
312 | <number>0</number> | 312 | <number>0</number> |
313 | </property> | 313 | </property> |
314 | <property stdset="1"> | 314 | <property stdset="1"> |
315 | <name>midLineWidth</name> | 315 | <name>midLineWidth</name> |
316 | <number>0</number> | 316 | <number>0</number> |
317 | </property> | 317 | </property> |
318 | <property> | 318 | <property> |
319 | <name>layoutMargin</name> | 319 | <name>layoutMargin</name> |
320 | </property> | 320 | </property> |
321 | <property> | 321 | <property> |
322 | <name>layoutSpacing</name> | 322 | <name>layoutSpacing</name> |
323 | </property> | 323 | </property> |
324 | <vbox> | 324 | <vbox> |
325 | <property stdset="1"> | 325 | <property stdset="1"> |
326 | <name>margin</name> | 326 | <name>margin</name> |
327 | <number>2</number> | 327 | <number>2</number> |
328 | </property> | 328 | </property> |
329 | <property stdset="1"> | 329 | <property stdset="1"> |
330 | <name>spacing</name> | 330 | <name>spacing</name> |
331 | <number>4</number> | 331 | <number>4</number> |
332 | </property> | 332 | </property> |
333 | <widget> | 333 | <widget> |
334 | <class>QComboBox</class> | 334 | <class>QComboBox</class> |
335 | <property stdset="1"> | 335 | <property stdset="1"> |
336 | <name>name</name> | 336 | <name>name</name> |
337 | <cstring>Devices_CB</cstring> | 337 | <cstring>Devices_CB</cstring> |
338 | </property> | 338 | </property> |
339 | </widget> | 339 | </widget> |
340 | <widget> | 340 | <widget> |
341 | <class>QWidgetStack</class> | 341 | <class>QWidgetStack</class> |
342 | <property stdset="1"> | 342 | <property stdset="1"> |
343 | <name>name</name> | 343 | <name>name</name> |
344 | <cstring>Setup_WS</cstring> | 344 | <cstring>Setup_WS</cstring> |
345 | </property> | 345 | </property> |
346 | </widget> | 346 | </widget> |
347 | </vbox> | 347 | </vbox> |
348 | </widget> | 348 | </widget> |
349 | </vbox> | 349 | </vbox> |
350 | </widget> | 350 | </widget> |
351 | </widget> | 351 | </widget> |
352 | </vbox> | 352 | </vbox> |
353 | </widget> | 353 | </widget> |
354 | <customwidgets> | 354 | <customwidgets> |
355 | <customwidget> | 355 | <customwidget> |
356 | <class>QWidgetStack</class> | 356 | <class>QWidgetStack</class> |
357 | <header location="global">qwidgetstack.h</header> | 357 | <header location="global">qwidgetstack.h</header> |
358 | <sizehint> | 358 | <sizehint> |
359 | <width>-1</width> | 359 | <width>-1</width> |
360 | <height>-1</height> | 360 | <height>-1</height> |
361 | </sizehint> | 361 | </sizehint> |
362 | <container>0</container> | 362 | <container>0</container> |
363 | <sizepolicy> | 363 | <sizepolicy> |
364 | <hordata>7</hordata> | 364 | <hordata>7</hordata> |
365 | <verdata>7</verdata> | 365 | <verdata>7</verdata> |
366 | </sizepolicy> | 366 | </sizepolicy> |
367 | <pixmap>image0</pixmap> | 367 | <pixmap>image0</pixmap> |
368 | <slot access="public">raiseWidget( int )</slot> | 368 | <slot access="public">raiseWidget( int )</slot> |
369 | </customwidget> | 369 | </customwidget> |
370 | </customwidgets> | 370 | </customwidgets> |
371 | <images> | 371 | <images> |
372 | <image> | 372 | <image> |
373 | <name>image0</name> | 373 | <name>image0</name> |
374 | <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1ddec44f503c0ae2a154410f53d0ed20e2bf6bdb656dd6861dd23d9a66591b0587fd1654235ebded6f0edcd53e419d87ae7b1f4f9b8f906d0bfe012317426a70b07bdc2f3ec77f8ed6b89559061a0343d06a124cc105596482585094bc0ae599b04646c9018926491b2205e140c485cace25755c175d0a967b622ff900b8cc9c7d29af594ea722d589167f813aa852ba07d94b9dce296e883fe7bb163f23896753</data> | 374 | <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1ddec44f503c0ae2a154410f53d0ed20e2bf6bdb656dd6861dd23d9a66591b0587fd1654235ebded6f0edcd53e419d87ae7b1f4f9b8f906d0bfe012317426a70b07bdc2f3ec77f8ed6b89559061a0343d06a124cc105596482585094bc0ae599b04646c9018926491b2205e140c485cace25755c175d0a967b622ff900b8cc9c7d29af594ea722d589167f813aa852ba07d94b9dce296e883fe7bb163f23896753</data> |
375 | </image> | 375 | </image> |
376 | </images> | 376 | </images> |
377 | <connections> | 377 | <connections> |
378 | <connection> | 378 | <connection> |
379 | <sender>Nodes_LV</sender> | 379 | <sender>Nodes_LV</sender> |
380 | <signal>clicked(QListViewItem*)</signal> | 380 | <signal>clicked(QListViewItem*)</signal> |
381 | <receiver>EditConnectionGUI</receiver> | 381 | <receiver>EditNetworkSetupGUI</receiver> |
382 | <slot>SLOT_SelectNode( QListViewItem *)</slot> | 382 | <slot>SLOT_SelectNode( QListViewItem *)</slot> |
383 | </connection> | 383 | </connection> |
384 | <connection> | 384 | <connection> |
385 | <sender>AutoCollapse_CB</sender> | 385 | <sender>AutoCollapse_CB</sender> |
386 | <signal>toggled(bool)</signal> | 386 | <signal>toggled(bool)</signal> |
387 | <receiver>EditConnectionGUI</receiver> | 387 | <receiver>EditNetworkSetupGUI</receiver> |
388 | <slot>SLOT_AutoCollapse( bool)</slot> | 388 | <slot>SLOT_AutoCollapse( bool)</slot> |
389 | </connection> | 389 | </connection> |
390 | <connection> | 390 | <connection> |
391 | <sender>Devices_CB</sender> | 391 | <sender>Devices_CB</sender> |
392 | <signal>activated(int)</signal> | 392 | <signal>activated(int)</signal> |
393 | <receiver>Setup_WS</receiver> | 393 | <receiver>Setup_WS</receiver> |
394 | <slot>raiseWidget( int )</slot> | 394 | <slot>raiseWidget( int )</slot> |
395 | </connection> | 395 | </connection> |
396 | <connection> | 396 | <connection> |
397 | <sender>Tab_TB</sender> | 397 | <sender>Tab_TB</sender> |
398 | <signal>selected(const QString&)</signal> | 398 | <signal>selected(const QString&)</signal> |
399 | <receiver>EditConnectionGUI</receiver> | 399 | <receiver>EditNetworkSetupGUI</receiver> |
400 | <slot>SLOT_AlterTab( const QString & )</slot> | 400 | <slot>SLOT_AlterTab( const QString & )</slot> |
401 | </connection> | 401 | </connection> |
402 | <slot access="public">SLOT_AlterTab( const QString & )</slot> | 402 | <slot access="public">SLOT_AlterTab( const QString & )</slot> |
403 | <slot access="public">SLOT_AutoCollapse( bool)</slot> | 403 | <slot access="public">SLOT_AutoCollapse( bool)</slot> |
404 | <slot access="public">SLOT_SelectNode( QListViewItem *)</slot> | 404 | <slot access="public">SLOT_SelectNode( QListViewItem *)</slot> |
405 | </connections> | 405 | </connections> |
406 | </UI> | 406 | </UI> |
diff --git a/noncore/settings/networksettings2/gprs/GPRS_NN.cpp b/noncore/settings/networksettings2/gprs/GPRS_NN.cpp index e9553a6..374cf5a 100644 --- a/noncore/settings/networksettings2/gprs/GPRS_NN.cpp +++ b/noncore/settings/networksettings2/gprs/GPRS_NN.cpp | |||
@@ -1,78 +1,78 @@ | |||
1 | #include <resources.h> | 1 | #include <resources.h> |
2 | #include <qpe/qpeapplication.h> | 2 | #include <qpe/qpeapplication.h> |
3 | #include <netnode.h> | 3 | #include <netnode.h> |
4 | #include "GPRS_NN.h" | 4 | #include "GPRS_NN.h" |
5 | #include "GPRS_NNI.h" | 5 | #include "GPRS_NNI.h" |
6 | 6 | ||
7 | #include "netnodeinterface.h" | 7 | #include "netnodeinterface.h" |
8 | 8 | ||
9 | static const char * GPRSNeeds[] = | 9 | static const char * GPRSNeeds[] = |
10 | { "GPRS", | 10 | { "GPRS", |
11 | 0 | 11 | 0 |
12 | }; | 12 | }; |
13 | 13 | ||
14 | static const char * GPRSProvides[] = | 14 | static const char * GPRSProvides[] = |
15 | { "connection", | 15 | { "NetworkSetup", |
16 | 0 | 16 | 0 |
17 | }; | 17 | }; |
18 | 18 | ||
19 | /** | 19 | /** |
20 | * Constructor, find all of the possible interfaces | 20 | * Constructor, find all of the possible interfaces |
21 | */ | 21 | */ |
22 | GPRSNetNode::GPRSNetNode() : ANetNode(tr("GPRS capable device")) { | 22 | GPRSNetNode::GPRSNetNode() : ANetNode(tr("GPRS capable device")) { |
23 | NSResources->addSystemFile( | 23 | NSResources->addSystemFile( |
24 | "pap-secrets", "/etc/ppp/pap-secrets", 0 ); | 24 | "pap-secrets", "/etc/ppp/pap-secrets", 0 ); |
25 | } | 25 | } |
26 | 26 | ||
27 | /** | 27 | /** |
28 | * Delete any interfaces that we own. | 28 | * Delete any interfaces that we own. |
29 | */ | 29 | */ |
30 | GPRSNetNode::~GPRSNetNode(){ | 30 | GPRSNetNode::~GPRSNetNode(){ |
31 | } | 31 | } |
32 | 32 | ||
33 | const QString GPRSNetNode::nodeDescription(){ | 33 | const QString GPRSNetNode::nodeDescription(){ |
34 | return tr("\ | 34 | return tr("\ |
35 | <p>provides access to a GPRS capable device.</p>\ | 35 | <p>provides access to a GPRS capable device.</p>\ |
36 | " | 36 | " |
37 | ); | 37 | ); |
38 | } | 38 | } |
39 | 39 | ||
40 | ANetNodeInstance * GPRSNetNode::createInstance( void ) { | 40 | ANetNodeInstance * GPRSNetNode::createInstance( void ) { |
41 | return new AGPRSDevice( this ); | 41 | return new AGPRSDevice( this ); |
42 | } | 42 | } |
43 | 43 | ||
44 | bool GPRSNetNode::hasDataForFile( SystemFile & S ) { | 44 | bool GPRSNetNode::hasDataForFile( SystemFile & S ) { |
45 | return S.name() == "pap-secrets"; | 45 | return S.name() == "pap-secrets"; |
46 | } | 46 | } |
47 | 47 | ||
48 | short GPRSNetNode::generateFile( SystemFile & , | 48 | short GPRSNetNode::generateFile( SystemFile & , |
49 | ANetNodeInstance * , | 49 | ANetNodeInstance * , |
50 | long ) { | 50 | long ) { |
51 | 51 | ||
52 | return 0; | 52 | return 0; |
53 | } | 53 | } |
54 | 54 | ||
55 | const char ** GPRSNetNode::needs( void ) { | 55 | const char ** GPRSNetNode::needs( void ) { |
56 | return GPRSNeeds; | 56 | return GPRSNeeds; |
57 | } | 57 | } |
58 | 58 | ||
59 | const char ** GPRSNetNode::provides( void ) { | 59 | const char ** GPRSNetNode::provides( void ) { |
60 | return GPRSProvides; | 60 | return GPRSProvides; |
61 | } | 61 | } |
62 | 62 | ||
63 | void GPRSNetNode::setSpecificAttribute( QString & , QString & ) { | 63 | void GPRSNetNode::setSpecificAttribute( QString & , QString & ) { |
64 | } | 64 | } |
65 | 65 | ||
66 | void GPRSNetNode::saveSpecificAttribute( QTextStream & ) { | 66 | void GPRSNetNode::saveSpecificAttribute( QTextStream & ) { |
67 | } | 67 | } |
68 | 68 | ||
69 | QStringList GPRSNetNode::properFiles( void ) { | 69 | QStringList GPRSNetNode::properFiles( void ) { |
70 | QStringList SL; | 70 | QStringList SL; |
71 | 71 | ||
72 | SL << "peers"; | 72 | SL << "peers"; |
73 | SL << "chatscripts"; | 73 | SL << "chatscripts"; |
74 | SL << "extra"; | 74 | SL << "extra"; |
75 | return SL; | 75 | return SL; |
76 | } | 76 | } |
77 | 77 | ||
78 | OPIE_NS2_PLUGIN( NetNodeInterface_T<GPRSNetNode> ) | 78 | OPIE_NS2_PLUGIN( NetNodeInterface_T<GPRSNetNode> ) |
diff --git a/noncore/settings/networksettings2/gprs/GPRS_NNI.cpp b/noncore/settings/networksettings2/gprs/GPRS_NNI.cpp index 2f61cba..bf8cc59 100644 --- a/noncore/settings/networksettings2/gprs/GPRS_NNI.cpp +++ b/noncore/settings/networksettings2/gprs/GPRS_NNI.cpp | |||
@@ -1,231 +1,231 @@ | |||
1 | #include <system.h> | 1 | #include <system.h> |
2 | #include <netnode.h> | 2 | #include <netnode.h> |
3 | #include "GPRSedit.h" | 3 | #include "GPRSedit.h" |
4 | #include "GPRS_NNI.h" | 4 | #include "GPRS_NNI.h" |
5 | #include "GPRS_NN.h" | 5 | #include "GPRS_NN.h" |
6 | 6 | ||
7 | AGPRSDevice::AGPRSDevice( GPRSNetNode * PNN ) : ANetNodeInstance( PNN ) { | 7 | AGPRSDevice::AGPRSDevice( GPRSNetNode * PNN ) : ANetNodeInstance( PNN ) { |
8 | Data.APN = ""; | 8 | Data.APN = ""; |
9 | Data.User = ""; | 9 | Data.User = ""; |
10 | Data.Password = ""; | 10 | Data.Password = ""; |
11 | Data.DefaultGateway = 1; | 11 | Data.DefaultGateway = 1; |
12 | Data.SetIfSet = 0; | 12 | Data.SetIfSet = 0; |
13 | Data.Debug = 0; | 13 | Data.Debug = 0; |
14 | Data.Routing.setAutoDelete( TRUE ); | 14 | Data.Routing.setAutoDelete( TRUE ); |
15 | GUI = 0; | 15 | GUI = 0; |
16 | RT = 0; | 16 | RT = 0; |
17 | } | 17 | } |
18 | 18 | ||
19 | void AGPRSDevice::setSpecificAttribute( QString & A, QString & V ) { | 19 | void AGPRSDevice::setSpecificAttribute( QString & A, QString & V ) { |
20 | if( A == "apn" ) { | 20 | if( A == "apn" ) { |
21 | Data.APN = V; | 21 | Data.APN = V; |
22 | } else if( A == "user" ) { | 22 | } else if( A == "user" ) { |
23 | Data.User = V; | 23 | Data.User = V; |
24 | } else if( A == "password" ) { | 24 | } else if( A == "password" ) { |
25 | Data.Password = V; | 25 | Data.Password = V; |
26 | } else if( A == "dns2" ) { | 26 | } else if( A == "dns2" ) { |
27 | Data.DNS2 = V; | 27 | Data.DNS2 = V; |
28 | } else if( A == "dns1" ) { | 28 | } else if( A == "dns1" ) { |
29 | Data.DNS1 = V; | 29 | Data.DNS1 = V; |
30 | } else if( A == "defaultgateway" ) { | 30 | } else if( A == "defaultgateway" ) { |
31 | Data.DefaultGateway = (V=="yes"); | 31 | Data.DefaultGateway = (V=="yes"); |
32 | } else if( A == "setifset" ) { | 32 | } else if( A == "setifset" ) { |
33 | Data.SetIfSet = (V == "yes"); | 33 | Data.SetIfSet = (V == "yes"); |
34 | } else if( A == "routes" ) { | 34 | } else if( A == "routes" ) { |
35 | Data.Routing.resize( V.toULong() ); | 35 | Data.Routing.resize( V.toULong() ); |
36 | } else if( A.startsWith( "route" ) ) { | 36 | } else if( A.startsWith( "route" ) ) { |
37 | QStringList SL = QStringList::split( "/", V ); | 37 | QStringList SL = QStringList::split( "/", V ); |
38 | GPRSRoutingEntry * E = new GPRSRoutingEntry; | 38 | GPRSRoutingEntry * E = new GPRSRoutingEntry; |
39 | 39 | ||
40 | E->Address = SL[0]; | 40 | E->Address = SL[0]; |
41 | E->Mask = SL[1].toULong(); | 41 | E->Mask = SL[1].toULong(); |
42 | 42 | ||
43 | Data.Routing.insert( A.mid(5).toULong(), E ); | 43 | Data.Routing.insert( A.mid(5).toULong(), E ); |
44 | } else if( A == "debug" ) { | 44 | } else if( A == "debug" ) { |
45 | Data.Debug = V.toShort(); | 45 | Data.Debug = V.toShort(); |
46 | } | 46 | } |
47 | } | 47 | } |
48 | 48 | ||
49 | void AGPRSDevice::saveSpecificAttribute( QTextStream & TS ) { | 49 | void AGPRSDevice::saveSpecificAttribute( QTextStream & TS ) { |
50 | TS << "apn=" << Data.APN << endl; | 50 | TS << "apn=" << Data.APN << endl; |
51 | TS << "user=" << Data.User << endl; | 51 | TS << "user=" << Data.User << endl; |
52 | TS << "password=" << Data.Password << endl; | 52 | TS << "password=" << Data.Password << endl; |
53 | TS << "dns1=" << Data.DNS1 << endl; | 53 | TS << "dns1=" << Data.DNS1 << endl; |
54 | TS << "dns2=" << Data.DNS2 << endl; | 54 | TS << "dns2=" << Data.DNS2 << endl; |
55 | TS << "defaultgateway=" << ( (Data.DefaultGateway) ? "yes" : "no" ) << endl; | 55 | TS << "defaultgateway=" << ( (Data.DefaultGateway) ? "yes" : "no" ) << endl; |
56 | TS << "setifset=" << ((Data.SetIfSet) ? "yes" : "no") << endl; | 56 | TS << "setifset=" << ((Data.SetIfSet) ? "yes" : "no") << endl; |
57 | TS << "debug=" << Data.Debug << endl; | 57 | TS << "debug=" << Data.Debug << endl; |
58 | 58 | ||
59 | TS << "routes=" << Data.Routing.count() << oendl; | 59 | TS << "routes=" << Data.Routing.count() << oendl; |
60 | for( unsigned int i = 0; i < Data.Routing.count(); i ++ ) { | 60 | for( unsigned int i = 0; i < Data.Routing.count(); i ++ ) { |
61 | TS << "route" << i << "=" | 61 | TS << "route" << i << "=" |
62 | << Data.Routing[i]->Address | 62 | << Data.Routing[i]->Address |
63 | << "/" | 63 | << "/" |
64 | << Data.Routing[i]->Mask | 64 | << Data.Routing[i]->Mask |
65 | << oendl; | 65 | << oendl; |
66 | } | 66 | } |
67 | } | 67 | } |
68 | 68 | ||
69 | QWidget * AGPRSDevice::edit( QWidget * parent ) { | 69 | QWidget * AGPRSDevice::edit( QWidget * parent ) { |
70 | GUI = new GPRSEdit( parent ); | 70 | GUI = new GPRSEdit( parent ); |
71 | GUI->showData( Data ); | 71 | GUI->showData( Data ); |
72 | return GUI; | 72 | return GUI; |
73 | } | 73 | } |
74 | 74 | ||
75 | QString AGPRSDevice::acceptable( void ) { | 75 | QString AGPRSDevice::acceptable( void ) { |
76 | return ( GUI ) ? GUI->acceptable( ) : QString(); | 76 | return ( GUI ) ? GUI->acceptable( ) : QString(); |
77 | } | 77 | } |
78 | 78 | ||
79 | void AGPRSDevice::commit( void ) { | 79 | void AGPRSDevice::commit( void ) { |
80 | if( GUI && GUI->commit( Data ) ) | 80 | if( GUI && GUI->commit( Data ) ) |
81 | setModified( 1 ); | 81 | setModified( 1 ); |
82 | } | 82 | } |
83 | 83 | ||
84 | bool AGPRSDevice::hasDataForFile( SystemFile & S ) { | 84 | bool AGPRSDevice::hasDataForFile( SystemFile & S ) { |
85 | return S.name() == "pap-secrets" || | 85 | return S.name() == "pap-secrets" || |
86 | S.name() == "peers" || | 86 | S.name() == "peers" || |
87 | S.name() == "extra" || | 87 | S.name() == "extra" || |
88 | S.name() == "chatscripts" ; | 88 | S.name() == "chatscripts" ; |
89 | } | 89 | } |
90 | 90 | ||
91 | short AGPRSDevice::generateFile( SystemFile & SF, | 91 | short AGPRSDevice::generateFile( SystemFile & SF, |
92 | long | 92 | long |
93 | ) { | 93 | ) { |
94 | 94 | ||
95 | if( SF.name() == "pap-secrets" ) { | 95 | if( SF.name() == "pap-secrets" ) { |
96 | SF << Data.User | 96 | SF << Data.User |
97 | << " * " | 97 | << " * " |
98 | << Data.Password | 98 | << Data.Password |
99 | << " *" | 99 | << " *" |
100 | << endl; | 100 | << endl; |
101 | return 0; | 101 | return 0; |
102 | } else if( SF.name() == "chatscripts" ) { | 102 | } else if( SF.name() == "chatscripts" ) { |
103 | SF << "SAY \"Starting\\n\"" << oendl; | 103 | SF << "SAY \"Starting\\n\"" << oendl; |
104 | SF << "ECHO OFF" << oendl; | 104 | SF << "ECHO OFF" << oendl; |
105 | SF << "ABORT BUSY" << oendl; | 105 | SF << "ABORT BUSY" << oendl; |
106 | SF << "ABORT ERROR" << oendl; | 106 | SF << "ABORT ERROR" << oendl; |
107 | SF << "ABORT VOICE" << oendl; | 107 | SF << "ABORT VOICE" << oendl; |
108 | SF << "ABORT \"NO CARRIER\"" << oendl; | 108 | SF << "ABORT \"NO CARRIER\"" << oendl; |
109 | SF << "ABORT \"NO DIALTONE\"" << oendl; | 109 | SF << "ABORT \"NO DIALTONE\"" << oendl; |
110 | SF << "\"\" AT" << oendl; | 110 | SF << "\"\" AT" << oendl; |
111 | SF << "OK AT+CGATT=1" << oendl; | 111 | SF << "OK AT+CGATT=1" << oendl; |
112 | SF << "OK AT+CGDCONT=1,\"IP\",\"" | 112 | SF << "OK AT+CGDCONT=1,\"IP\",\"" |
113 | << Data.APN | 113 | << Data.APN |
114 | << "\"" | 114 | << "\"" |
115 | << oendl; | 115 | << oendl; |
116 | SF << "OK ATD*99***1#\\n" << oendl; | 116 | SF << "OK ATD*99***1#\\n" << oendl; |
117 | SF << "TIMEOUT 10" << oendl; | 117 | SF << "TIMEOUT 10" << oendl; |
118 | SF << "CONNECT \"\"" << oendl; | 118 | SF << "CONNECT \"\"" << oendl; |
119 | SF << "SAY \"READY\\n\"" << oendl; | 119 | SF << "SAY \"READY\\n\"" << oendl; |
120 | return 0; | 120 | return 0; |
121 | } else if( SF.name() == "peers" ) { | 121 | } else if( SF.name() == "peers" ) { |
122 | SF << "noauth" << oendl; | 122 | SF << "noauth" << oendl; |
123 | SF << "user " << Data.User << oendl; | 123 | SF << "user " << Data.User << oendl; |
124 | SF << "connect \"/usr/sbin/chat -s -v -f /etc/chatscripts/" | 124 | SF << "connect \"/usr/sbin/chat -s -v -f /etc/chatscripts/" |
125 | << removeSpaces( connection()->name() ) | 125 | << removeSpaces( networkSetup()->name() ) |
126 | << "\"" | 126 | << "\"" |
127 | << oendl; | 127 | << oendl; |
128 | SF << "ipcp-accept-local" << oendl; | 128 | SF << "ipcp-accept-local" << oendl; |
129 | SF << "ipcp-accept-remote" << oendl; | 129 | SF << "ipcp-accept-remote" << oendl; |
130 | if( Data.DefaultGateway ) { | 130 | if( Data.DefaultGateway ) { |
131 | SF << "defaultroute" << oendl; | 131 | SF << "defaultroute" << oendl; |
132 | if( Data.SetIfSet ) { | 132 | if( Data.SetIfSet ) { |
133 | SF << "replacedefaultroute" << oendl; | 133 | SF << "replacedefaultroute" << oendl; |
134 | } | 134 | } |
135 | } | 135 | } |
136 | if( Data.Debug ) { | 136 | if( Data.Debug ) { |
137 | SF << "logfile /tmp/" | 137 | SF << "logfile /tmp/" |
138 | << removeSpaces( connection()->name() ) | 138 | << removeSpaces( networkSetup()->name() ) |
139 | << oendl; | 139 | << oendl; |
140 | for( int i = 0; i < Data.Debug; i ++ ) { | 140 | for( int i = 0; i < Data.Debug; i ++ ) { |
141 | SF << "debug" << oendl; | 141 | SF << "debug" << oendl; |
142 | } | 142 | } |
143 | } | 143 | } |
144 | SF << "nocrtscts" << oendl; | 144 | SF << "nocrtscts" << oendl; |
145 | SF << "local" << oendl; | 145 | SF << "local" << oendl; |
146 | SF << "lcp-echo-interval 0" << oendl; | 146 | SF << "lcp-echo-interval 0" << oendl; |
147 | SF << "lcp-echo-failure 0" << oendl; | 147 | SF << "lcp-echo-failure 0" << oendl; |
148 | SF << "usepeerdns" << oendl; | 148 | SF << "usepeerdns" << oendl; |
149 | SF << "linkname " << removeSpaces( connection()->name() ) << oendl; | 149 | SF << "linkname " << removeSpaces( networkSetup()->name() ) << oendl; |
150 | SF << "nopersist" << oendl; | 150 | SF << "nopersist" << oendl; |
151 | SF << "ipparam " << removeSpaces( connection()->name() ) <<oendl; | 151 | SF << "ipparam " << removeSpaces( networkSetup()->name() ) <<oendl; |
152 | SF << "maxfail 1" << oendl; | 152 | SF << "maxfail 1" << oendl; |
153 | return 0; | 153 | return 0; |
154 | } else if( SF.name() == "extra" ) { | 154 | } else if( SF.name() == "extra" ) { |
155 | unsigned long Bits; | 155 | unsigned long Bits; |
156 | // generate 'fixed' settings | 156 | // generate 'fixed' settings |
157 | for( unsigned int i = 0 ; | 157 | for( unsigned int i = 0 ; |
158 | i < Data.Routing.count(); | 158 | i < Data.Routing.count(); |
159 | i ++ ) { | 159 | i ++ ) { |
160 | if( Data.Routing[i]->Mask == 32 ) { | 160 | if( Data.Routing[i]->Mask == 32 ) { |
161 | Bits = 0xffffffff; | 161 | Bits = 0xffffffff; |
162 | } else { | 162 | } else { |
163 | Bits = ~ ((1 << ((32-Data.Routing[i]->Mask))) - 1); | 163 | Bits = ~ ((1 << ((32-Data.Routing[i]->Mask))) - 1); |
164 | } | 164 | } |
165 | SF << "route add -net " | 165 | SF << "route add -net " |
166 | << Data.Routing[i]->Address | 166 | << Data.Routing[i]->Address |
167 | << " netmask " | 167 | << " netmask " |
168 | << ((Bits&0xff000000)>>24) | 168 | << ((Bits&0xff000000)>>24) |
169 | << "." | 169 | << "." |
170 | << ((Bits&0x00ff0000)>>16) | 170 | << ((Bits&0x00ff0000)>>16) |
171 | << "." | 171 | << "." |
172 | << ((Bits&0x0000ff00)>>8) | 172 | << ((Bits&0x0000ff00)>>8) |
173 | << "." | 173 | << "." |
174 | << ((Bits&0x000000ff)) | 174 | << ((Bits&0x000000ff)) |
175 | << " gw $PPP_REMOTE" | 175 | << " gw $PPP_REMOTE" |
176 | << oendl; | 176 | << oendl; |
177 | SF << "route del -net " | 177 | SF << "route del -net " |
178 | << Data.Routing[i]->Address | 178 | << Data.Routing[i]->Address |
179 | << " netmask " | 179 | << " netmask " |
180 | << ((Bits&0xff000000)>>24) | 180 | << ((Bits&0xff000000)>>24) |
181 | << "." | 181 | << "." |
182 | << ((Bits&0x00ff0000)>>16) | 182 | << ((Bits&0x00ff0000)>>16) |
183 | << "." | 183 | << "." |
184 | << ((Bits&0x0000ff00)>>8) | 184 | << ((Bits&0x0000ff00)>>8) |
185 | << "." | 185 | << "." |
186 | << ((Bits&0x000000ff)) | 186 | << ((Bits&0x000000ff)) |
187 | << " gw $PPP_REMOTE" | 187 | << " gw $PPP_REMOTE" |
188 | << oendl; | 188 | << oendl; |
189 | } | 189 | } |
190 | 190 | ||
191 | if( ! Data.DNS1.isEmpty() ) { | 191 | if( ! Data.DNS1.isEmpty() ) { |
192 | SF << "nameserver " | 192 | SF << "nameserver " |
193 | << Data.DNS1 | 193 | << Data.DNS1 |
194 | << " # profile " | 194 | << " # profile " |
195 | << removeSpaces( connection()->name() ) | 195 | << removeSpaces( networkSetup()->name() ) |
196 | <<oendl; | 196 | <<oendl; |
197 | } | 197 | } |
198 | 198 | ||
199 | if( ! Data.DNS2.isEmpty() ) { | 199 | if( ! Data.DNS2.isEmpty() ) { |
200 | SF << "nameserver " | 200 | SF << "nameserver " |
201 | << Data.DNS2 | 201 | << Data.DNS2 |
202 | << " # profile " | 202 | << " # profile " |
203 | << removeSpaces( connection()->name() ) | 203 | << removeSpaces( networkSetup()->name() ) |
204 | <<oendl; | 204 | <<oendl; |
205 | } | 205 | } |
206 | } | 206 | } |
207 | return 1; | 207 | return 1; |
208 | } | 208 | } |
209 | 209 | ||
210 | bool AGPRSDevice::openFile( SystemFile & SF ) { | 210 | bool AGPRSDevice::openFile( SystemFile & SF ) { |
211 | if( SF.name() == "peers" ) { | 211 | if( SF.name() == "peers" ) { |
212 | SF.setPath( | 212 | SF.setPath( |
213 | QString( "/etc/ppp/peers/" ) + | 213 | QString( "/etc/ppp/peers/" ) + |
214 | removeSpaces( connection()->name() ) | 214 | removeSpaces( networkSetup()->name() ) |
215 | ); | 215 | ); |
216 | return 1; | 216 | return 1; |
217 | } else if ( SF.name() == "chatscripts" ) { | 217 | } else if ( SF.name() == "chatscripts" ) { |
218 | SF.setPath( | 218 | SF.setPath( |
219 | QString( "/etc/chatscripts/" ) + | 219 | QString( "/etc/chatscripts/" ) + |
220 | removeSpaces( connection()->name() ) | 220 | removeSpaces( networkSetup()->name() ) |
221 | ); | 221 | ); |
222 | return 1; | 222 | return 1; |
223 | } else if ( SF.name() == "extra" ) { | 223 | } else if ( SF.name() == "extra" ) { |
224 | SF.setPath( | 224 | SF.setPath( |
225 | QString( "/etc/ppp/" ) + | 225 | QString( "/etc/ppp/" ) + |
226 | removeSpaces( connection()->name() ) + ".fixed" | 226 | removeSpaces( networkSetup()->name() ) + ".fixed" |
227 | ); | 227 | ); |
228 | return 1; | 228 | return 1; |
229 | } | 229 | } |
230 | return 0; | 230 | return 0; |
231 | } | 231 | } |
diff --git a/noncore/settings/networksettings2/gprs/GPRSrun.cpp b/noncore/settings/networksettings2/gprs/GPRSrun.cpp index cccc71a..fd61f3a 100644 --- a/noncore/settings/networksettings2/gprs/GPRSrun.cpp +++ b/noncore/settings/networksettings2/gprs/GPRSrun.cpp | |||
@@ -1,105 +1,105 @@ | |||
1 | #include <sys/types.h> | 1 | #include <sys/types.h> |
2 | #include <signal.h> | 2 | #include <signal.h> |
3 | #include <errno.h> | 3 | #include <errno.h> |
4 | #include <qdir.h> | 4 | #include <qdir.h> |
5 | #include <system.h> | 5 | #include <system.h> |
6 | #include <resources.h> | 6 | #include <resources.h> |
7 | #include <netnode.h> | 7 | #include <netnode.h> |
8 | #include "GPRSrun.h" | 8 | #include "GPRSrun.h" |
9 | 9 | ||
10 | State_t GPRSRun::detectState( void ) { | 10 | State_t GPRSRun::detectState( void ) { |
11 | 11 | ||
12 | // is pppd still running ? | 12 | // is pppd still running ? |
13 | // is rfcomm still active | 13 | // is rfcomm still active |
14 | NodeCollection * NC = nodeCollection(); | 14 | NetworkSetup * NC = networkSetup(); |
15 | InterfaceInfo * I = NC->assignedInterface(); | 15 | InterfaceInfo * I = NC->assignedInterface(); |
16 | 16 | ||
17 | QDir D("/var/run"); | 17 | QDir D("/var/run"); |
18 | 18 | ||
19 | if( I ) { | 19 | if( I ) { |
20 | // has some pppx attached | 20 | // has some pppx attached |
21 | return ( I->IsUp ) ? IsUp : Available; | 21 | return ( I->IsUp ) ? IsUp : Available; |
22 | } | 22 | } |
23 | 23 | ||
24 | // check ppp itself and figure out interface | 24 | // check ppp itself and figure out interface |
25 | 25 | ||
26 | odebug << "Check for ppp " << NC->name() << oendl; | 26 | odebug << "Check for ppp " << NC->name() << oendl; |
27 | if( D.exists( QString("ppp-")+removeSpaces(NC->name())+".pid") ) { | 27 | if( D.exists( QString("ppp-")+removeSpaces(NC->name())+".pid") ) { |
28 | // get pid and check if pppd is still running | 28 | // get pid and check if pppd is still running |
29 | QFile F( D.path()+"/ppp-"+removeSpaces(NC->name())+".pid"); | 29 | QFile F( D.path()+"/ppp-"+removeSpaces(NC->name())+".pid"); |
30 | 30 | ||
31 | odebug << "PPP PID " << F.name() << oendl; | 31 | odebug << "PPP PID " << F.name() << oendl; |
32 | if( F.open( IO_ReadOnly ) ) { | 32 | if( F.open( IO_ReadOnly ) ) { |
33 | QTextStream TS(&F); | 33 | QTextStream TS(&F); |
34 | QString X = TS.readLine(); | 34 | QString X = TS.readLine(); |
35 | PPPPid = X.toULong(); | 35 | PPPPid = X.toULong(); |
36 | int rv; | 36 | int rv; |
37 | 37 | ||
38 | rv = ::kill( PPPPid, 0 ); | 38 | rv = ::kill( PPPPid, 0 ); |
39 | if( rv == 0 || | 39 | if( rv == 0 || |
40 | ( rv < 0 && errno == EPERM ) | 40 | ( rv < 0 && errno == EPERM ) |
41 | ) { | 41 | ) { |
42 | // pppd is still up | 42 | // pppd is still up |
43 | X = TS.readLine(); | 43 | X = TS.readLine(); |
44 | I = NSResources->system().findInterface(X); | 44 | I = NSResources->system().findInterface(X); |
45 | 45 | ||
46 | odebug << "ppp running : IFace " << X << " = " << (long)I << oendl; | 46 | odebug << "ppp running : IFace " << X << " = " << (long)I << oendl; |
47 | 47 | ||
48 | if( I ) { | 48 | if( I ) { |
49 | NC->assignInterface( I ); | 49 | NC->assignInterface( I ); |
50 | return (I->IsUp) ? IsUp : Available; | 50 | return (I->IsUp) ? IsUp : Available; |
51 | } | 51 | } |
52 | 52 | ||
53 | return Available; | 53 | return Available; |
54 | 54 | ||
55 | } else { | 55 | } else { |
56 | // pppd is down | 56 | // pppd is down |
57 | PPPPid = 0; | 57 | PPPPid = 0; |
58 | } | 58 | } |
59 | } // else pppd is down | 59 | } // else pppd is down |
60 | } | 60 | } |
61 | NC->assignInterface( 0 ); | 61 | NC->assignInterface( 0 ); |
62 | return Unknown; | 62 | return Unknown; |
63 | } | 63 | } |
64 | 64 | ||
65 | QString GPRSRun::setMyState( NodeCollection * NC, Action_t A , bool ) { | 65 | QString GPRSRun::setMyState( NetworkSetup * NC, Action_t A , bool ) { |
66 | 66 | ||
67 | if( A == Up ) { | 67 | if( A == Up ) { |
68 | // start ppp on deviceFile | 68 | // start ppp on deviceFile |
69 | QStringList SL; | 69 | QStringList SL; |
70 | SL << "pon" | 70 | SL << "pon" |
71 | << removeSpaces( NC->name() ) | 71 | << removeSpaces( NC->name() ) |
72 | << NC->device()->deviceFile(); | 72 | << NC->device()->deviceFile(); |
73 | 73 | ||
74 | if( ! NSResources->system().execAsUser( SL ) ) { | 74 | if( ! NSResources->system().execAsUser( SL ) ) { |
75 | return QString("Cannot start pppd for %1").arg(NC->name()); | 75 | return QString("Cannot start pppd for %1").arg(NC->name()); |
76 | } | 76 | } |
77 | } else if ( A == Down ) { | 77 | } else if ( A == Down ) { |
78 | if( PPPPid == 0 ) { | 78 | if( PPPPid == 0 ) { |
79 | detectState(); | 79 | detectState(); |
80 | } | 80 | } |
81 | if( PPPPid ) { | 81 | if( PPPPid ) { |
82 | QStringList SL; | 82 | QStringList SL; |
83 | 83 | ||
84 | SL << "poff" | 84 | SL << "poff" |
85 | << removeSpaces( NC->name() ); | 85 | << removeSpaces( NC->name() ); |
86 | 86 | ||
87 | if( ! NSResources->system().execAsUser( SL ) ) { | 87 | if( ! NSResources->system().execAsUser( SL ) ) { |
88 | return QString("Cannot terminate pppd for %1").arg(NC->name()); | 88 | return QString("Cannot terminate pppd for %1").arg(NC->name()); |
89 | } | 89 | } |
90 | NC->assignInterface( 0 ); | 90 | NC->assignInterface( 0 ); |
91 | odebug << "ppp stopped " << oendl; | 91 | odebug << "ppp stopped " << oendl; |
92 | PPPPid = 0; | 92 | PPPPid = 0; |
93 | } | 93 | } |
94 | } | 94 | } |
95 | 95 | ||
96 | return QString(); | 96 | return QString(); |
97 | } | 97 | } |
98 | 98 | ||
99 | bool GPRSRun::handlesInterface( const QString & S ) { | 99 | bool GPRSRun::handlesInterface( const QString & S ) { |
100 | return Pat.match( S ) >= 0; | 100 | return Pat.match( S ) >= 0; |
101 | } | 101 | } |
102 | 102 | ||
103 | bool GPRSRun::handlesInterface( InterfaceInfo * I ) { | 103 | bool GPRSRun::handlesInterface( InterfaceInfo * I ) { |
104 | return handlesInterface( I->Name ); | 104 | return handlesInterface( I->Name ); |
105 | } | 105 | } |
diff --git a/noncore/settings/networksettings2/gprs/GPRSrun.h b/noncore/settings/networksettings2/gprs/GPRSrun.h index 817f8a9..c3c2015 100644 --- a/noncore/settings/networksettings2/gprs/GPRSrun.h +++ b/noncore/settings/networksettings2/gprs/GPRSrun.h | |||
@@ -1,34 +1,34 @@ | |||
1 | #include <netnode.h> | 1 | #include <netnode.h> |
2 | #include <qregexp.h> | 2 | #include <qregexp.h> |
3 | #include "GPRSdata.h" | 3 | #include "GPRSdata.h" |
4 | 4 | ||
5 | class GPRSRun : public RuntimeInfo { | 5 | class GPRSRun : public RuntimeInfo { |
6 | 6 | ||
7 | public : | 7 | public : |
8 | 8 | ||
9 | GPRSRun( ANetNodeInstance * NNI, | 9 | GPRSRun( ANetNodeInstance * NNI, |
10 | GPRSData & D ) : RuntimeInfo( NNI ), | 10 | GPRSData & D ) : RuntimeInfo( NNI ), |
11 | Pat( "ppp[0-9]" ) { | 11 | Pat( "ppp[0-9]" ) { |
12 | PPPPid = 0; | 12 | PPPPid = 0; |
13 | } | 13 | } |
14 | 14 | ||
15 | bool handlesInterface( const QString & I ); | 15 | bool handlesInterface( const QString & I ); |
16 | bool handlesInterface( InterfaceInfo * ); | 16 | bool handlesInterface( InterfaceInfo * ); |
17 | 17 | ||
18 | virtual RuntimeInfo * device( void ) | 18 | virtual RuntimeInfo * device( void ) |
19 | { return this; } | 19 | { return this; } |
20 | virtual RuntimeInfo * connection( void ) | 20 | virtual RuntimeInfo * connection( void ) |
21 | { return this; } | 21 | { return this; } |
22 | 22 | ||
23 | State_t detectState( void ); | 23 | State_t detectState( void ); |
24 | 24 | ||
25 | protected : | 25 | protected : |
26 | 26 | ||
27 | QString setMyState( NodeCollection * , Action_t, bool ); | 27 | QString setMyState( NetworkSetup * , Action_t, bool ); |
28 | 28 | ||
29 | private : | 29 | private : |
30 | 30 | ||
31 | QRegExp Pat; | 31 | QRegExp Pat; |
32 | size_t PPPPid; | 32 | size_t PPPPid; |
33 | 33 | ||
34 | }; | 34 | }; |
diff --git a/noncore/settings/networksettings2/irda/irdarun.h b/noncore/settings/networksettings2/irda/irdarun.h index d3b714b..e5ba79a 100644 --- a/noncore/settings/networksettings2/irda/irdarun.h +++ b/noncore/settings/networksettings2/irda/irdarun.h | |||
@@ -1,25 +1,25 @@ | |||
1 | #include <netnode.h> | 1 | #include <netnode.h> |
2 | #include "irdadata.h" | 2 | #include "irdadata.h" |
3 | 3 | ||
4 | class IRDARun : public RuntimeInfo { | 4 | class IRDARun : public RuntimeInfo { |
5 | 5 | ||
6 | public : | 6 | public : |
7 | 7 | ||
8 | IRDARun( ANetNodeInstance * NNI, | 8 | IRDARun( ANetNodeInstance * NNI, |
9 | IRDAData & Data ) : RuntimeInfo( NNI ) | 9 | IRDAData & Data ) : RuntimeInfo( NNI ) |
10 | { } | 10 | { } |
11 | 11 | ||
12 | virtual RuntimeInfo * line( void ) | 12 | virtual RuntimeInfo * line( void ) |
13 | { return this; } | 13 | { return this; } |
14 | 14 | ||
15 | virtual QString deviceFile( void ) | 15 | virtual QString deviceFile( void ) |
16 | { return QString( "/dev/irda" ); } | 16 | { return QString( "/dev/irda" ); } |
17 | 17 | ||
18 | State_t detectState( void ) | 18 | State_t detectState( void ) |
19 | { return Unknown; } | 19 | { return Unknown; } |
20 | 20 | ||
21 | protected : | 21 | protected : |
22 | 22 | ||
23 | QString setMyState( NodeCollection * , Action_t, bool ) | 23 | QString setMyState( NetworkSetup * , Action_t, bool ) |
24 | { return QString(); } | 24 | { return QString(); } |
25 | }; | 25 | }; |
diff --git a/noncore/settings/networksettings2/lancard/lancardrun.cpp b/noncore/settings/networksettings2/lancard/lancardrun.cpp index 8157dce..8a71aa9 100644 --- a/noncore/settings/networksettings2/lancard/lancardrun.cpp +++ b/noncore/settings/networksettings2/lancard/lancardrun.cpp | |||
@@ -1,148 +1,148 @@ | |||
1 | #include <qfile.h> | 1 | #include <qfile.h> |
2 | #include <qtextstream.h> | 2 | #include <qtextstream.h> |
3 | #include <qstringlist.h> | 3 | #include <qstringlist.h> |
4 | #include <resources.h> | 4 | #include <resources.h> |
5 | #include "lancardrun.h" | 5 | #include "lancardrun.h" |
6 | 6 | ||
7 | State_t LanCardRun::detectState( void ) { | 7 | State_t LanCardRun::detectState( void ) { |
8 | 8 | ||
9 | // unavailable : no card found | 9 | // unavailable : no card found |
10 | // available : card found and assigned to us or free | 10 | // available : card found and assigned to us or free |
11 | // up : card found and assigned to us and up | 11 | // up : card found and assigned to us and up |
12 | 12 | ||
13 | NodeCollection * NC = nodeCollection(); | 13 | NetworkSetup * NC = networkSetup(); |
14 | QString S = QString( "/tmp/profile-%1.up" ). | 14 | QString S = QString( "/tmp/profile-%1.up" ). |
15 | arg( NC->number()); | 15 | arg( NC->number()); |
16 | System & Sys = NSResources->system(); | 16 | System & Sys = NSResources->system(); |
17 | InterfaceInfo * Run; | 17 | InterfaceInfo * Run; |
18 | 18 | ||
19 | QFile F( S ); | 19 | QFile F( S ); |
20 | 20 | ||
21 | if( F.open( IO_ReadOnly ) ) { | 21 | if( F.open( IO_ReadOnly ) ) { |
22 | // could open file -> read interface and assign | 22 | // could open file -> read interface and assign |
23 | QString X; | 23 | QString X; |
24 | QTextStream TS(&F); | 24 | QTextStream TS(&F); |
25 | X = TS.readLine(); | 25 | X = TS.readLine(); |
26 | // find interface | 26 | // find interface |
27 | if( handlesInterface( X ) ) { | 27 | if( handlesInterface( X ) ) { |
28 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | 28 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); |
29 | It.current(); | 29 | It.current(); |
30 | ++It ) { | 30 | ++It ) { |
31 | Run = It.current(); | 31 | Run = It.current(); |
32 | if( X == Run->Name ) { | 32 | if( X == Run->Name ) { |
33 | NC->assignInterface( Run ); | 33 | NC->assignInterface( Run ); |
34 | return (Run->IsUp) ? IsUp : Available; | 34 | return (Run->IsUp) ? IsUp : Available; |
35 | } | 35 | } |
36 | } | 36 | } |
37 | } | 37 | } |
38 | } | 38 | } |
39 | 39 | ||
40 | if( ( Run = NC->assignedInterface() ) ) { | 40 | if( ( Run = NC->assignedInterface() ) ) { |
41 | // we already have an interface assigned -> still present ? | 41 | // we already have an interface assigned -> still present ? |
42 | if( ! Run->IsUp ) { | 42 | if( ! Run->IsUp ) { |
43 | // usb is still free -> keep assignment | 43 | // usb is still free -> keep assignment |
44 | return Available; | 44 | return Available; |
45 | } // else interface is up but NOT us -> some other profile | 45 | } // else interface is up but NOT us -> some other profile |
46 | } | 46 | } |
47 | 47 | ||
48 | // nothing (valid) assigned to us | 48 | // nothing (valid) assigned to us |
49 | NC->assignInterface( 0 ); | 49 | NC->assignInterface( 0 ); |
50 | 50 | ||
51 | // find possible interface | 51 | // find possible interface |
52 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | 52 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); |
53 | It.current(); | 53 | It.current(); |
54 | ++It ) { | 54 | ++It ) { |
55 | Run = It.current(); | 55 | Run = It.current(); |
56 | if( handlesInterface( *Run ) && | 56 | if( handlesInterface( *Run ) && |
57 | ( Run->CardType == ARPHRD_ETHER | 57 | ( Run->CardType == ARPHRD_ETHER |
58 | #ifdef ARPHRD_IEEE1394 | 58 | #ifdef ARPHRD_IEEE1394 |
59 | || Run->CardType == ARPHRD_IEEE1394 | 59 | || Run->CardType == ARPHRD_IEEE1394 |
60 | #endif | 60 | #endif |
61 | ) && | 61 | ) && |
62 | ! Run->IsUp | 62 | ! Run->IsUp |
63 | ) { | 63 | ) { |
64 | // proper type, and Not UP -> free | 64 | // proper type, and Not UP -> free |
65 | return Off; | 65 | return Off; |
66 | } | 66 | } |
67 | } | 67 | } |
68 | // no free found | 68 | // no free found |
69 | 69 | ||
70 | return Unavailable; | 70 | return Unavailable; |
71 | } | 71 | } |
72 | 72 | ||
73 | QString LanCardRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 73 | QString LanCardRun::setMyState( NetworkSetup * NC, Action_t A, bool ) { |
74 | 74 | ||
75 | if( A == Activate ) { | 75 | if( A == Activate ) { |
76 | InterfaceInfo * N = getInterface(); | 76 | InterfaceInfo * N = getInterface(); |
77 | 77 | ||
78 | if( ! N ) { | 78 | if( ! N ) { |
79 | // no interface available | 79 | // no interface available |
80 | NC->setCurrentState( Unavailable ); | 80 | NC->setCurrentState( Unavailable ); |
81 | return tr("No interface found"); | 81 | return tr("No interface found"); |
82 | } | 82 | } |
83 | 83 | ||
84 | // because we were OFF the interface | 84 | // because we were OFF the interface |
85 | // we get back is NOT assigned | 85 | // we get back is NOT assigned |
86 | NC->assignInterface( N ); | 86 | NC->assignInterface( N ); |
87 | NC->setCurrentState( Available ); | 87 | NC->setCurrentState( Available ); |
88 | return QString(); | 88 | return QString(); |
89 | } | 89 | } |
90 | 90 | ||
91 | if( A == Deactivate ) { | 91 | if( A == Deactivate ) { |
92 | NC->assignInterface( 0 ); | 92 | NC->assignInterface( 0 ); |
93 | NC->setCurrentState( Off ); | 93 | NC->setCurrentState( Off ); |
94 | } | 94 | } |
95 | 95 | ||
96 | return QString(); | 96 | return QString(); |
97 | } | 97 | } |
98 | 98 | ||
99 | // get interface that is free or assigned to us | 99 | // get interface that is free or assigned to us |
100 | InterfaceInfo * LanCardRun::getInterface( void ) { | 100 | InterfaceInfo * LanCardRun::getInterface( void ) { |
101 | 101 | ||
102 | System & S = NSResources->system(); | 102 | System & S = NSResources->system(); |
103 | InterfaceInfo * best = 0, * Run; | 103 | InterfaceInfo * best = 0, * Run; |
104 | 104 | ||
105 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); | 105 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); |
106 | It.current(); | 106 | It.current(); |
107 | ++It ) { | 107 | ++It ) { |
108 | Run = It.current(); | 108 | Run = It.current(); |
109 | if( handlesInterface( *Run ) && | 109 | if( handlesInterface( *Run ) && |
110 | ( Run->CardType == ARPHRD_ETHER | 110 | ( Run->CardType == ARPHRD_ETHER |
111 | #ifdef ARPHRD_IEEE1394 | 111 | #ifdef ARPHRD_IEEE1394 |
112 | || Run->CardType == ARPHRD_IEEE1394 | 112 | || Run->CardType == ARPHRD_IEEE1394 |
113 | #endif | 113 | #endif |
114 | ) | 114 | ) |
115 | ) { | 115 | ) { |
116 | // this is a LAN card | 116 | // this is a LAN card |
117 | if( Run->assignedConnection() == netNode()->connection() ) { | 117 | if( Run->assignedToNetworkSetup() == netNode()->networkSetup() ) { |
118 | // assigned to us | 118 | // assigned to us |
119 | return Run; | 119 | return Run; |
120 | } else if( Run->assignedConnection() == 0 ) { | 120 | } else if( Run->assignedToNetworkSetup() == 0 ) { |
121 | // free | 121 | // free |
122 | best = Run; | 122 | best = Run; |
123 | } | 123 | } |
124 | } | 124 | } |
125 | } | 125 | } |
126 | return best; // can be 0 | 126 | return best; // can be 0 |
127 | } | 127 | } |
128 | 128 | ||
129 | bool LanCardRun::handlesInterface( const QString & S ) { | 129 | bool LanCardRun::handlesInterface( const QString & S ) { |
130 | InterfaceInfo * II; | 130 | InterfaceInfo * II; |
131 | II = NSResources->system().interface( S ); | 131 | II = NSResources->system().interface( S ); |
132 | if( ( II = NSResources->system().interface( S ) ) ) { | 132 | if( ( II = NSResources->system().interface( S ) ) ) { |
133 | return handlesInterface( *II ); | 133 | return handlesInterface( *II ); |
134 | } | 134 | } |
135 | return Pat.match( S ) >= 0; | 135 | return Pat.match( S ) >= 0; |
136 | } | 136 | } |
137 | 137 | ||
138 | bool LanCardRun::handlesInterface( const InterfaceInfo & II ) { | 138 | bool LanCardRun::handlesInterface( const InterfaceInfo & II ) { |
139 | if( Pat.match( II.Name ) < 0 ) | 139 | if( Pat.match( II.Name ) < 0 ) |
140 | return 0; | 140 | return 0; |
141 | 141 | ||
142 | if( Data->AnyLanCard ) { | 142 | if( Data->AnyLanCard ) { |
143 | return 1; | 143 | return 1; |
144 | } | 144 | } |
145 | 145 | ||
146 | // must also match hardware address | 146 | // must also match hardware address |
147 | return ( Data->HWAddresses.findIndex( II.MACAddress ) >= 0 ); | 147 | return ( Data->HWAddresses.findIndex( II.MACAddress ) >= 0 ); |
148 | } | 148 | } |
diff --git a/noncore/settings/networksettings2/lancard/lancardrun.h b/noncore/settings/networksettings2/lancard/lancardrun.h index 57ef3fb..dfd3d62 100644 --- a/noncore/settings/networksettings2/lancard/lancardrun.h +++ b/noncore/settings/networksettings2/lancard/lancardrun.h | |||
@@ -1,37 +1,37 @@ | |||
1 | #ifndef LANCARDRUN_H | 1 | #ifndef LANCARDRUN_H |
2 | #define LANCARDRUN_H | 2 | #define LANCARDRUN_H |
3 | 3 | ||
4 | #include <netnode.h> | 4 | #include <netnode.h> |
5 | #include <qregexp.h> | 5 | #include <qregexp.h> |
6 | #include "lancarddata.h" | 6 | #include "lancarddata.h" |
7 | 7 | ||
8 | class LanCardRun : public RuntimeInfo { | 8 | class LanCardRun : public RuntimeInfo { |
9 | 9 | ||
10 | public : | 10 | public : |
11 | 11 | ||
12 | LanCardRun( ANetNodeInstance * NNI, | 12 | LanCardRun( ANetNodeInstance * NNI, |
13 | LanCardData & D ) : RuntimeInfo( NNI ), | 13 | LanCardData & D ) : RuntimeInfo( NNI ), |
14 | Pat( "eth[0-9]" ) { | 14 | Pat( "eth[0-9]" ) { |
15 | Data = &D; | 15 | Data = &D; |
16 | } | 16 | } |
17 | 17 | ||
18 | virtual RuntimeInfo * device( void ) | 18 | virtual RuntimeInfo * device( void ) |
19 | { return this; } | 19 | { return this; } |
20 | 20 | ||
21 | bool handlesInterface( const QString & I ); | 21 | bool handlesInterface( const QString & I ); |
22 | bool handlesInterface( const InterfaceInfo & II ); | 22 | bool handlesInterface( const InterfaceInfo & II ); |
23 | 23 | ||
24 | State_t detectState( void ); | 24 | State_t detectState( void ); |
25 | 25 | ||
26 | protected : | 26 | protected : |
27 | 27 | ||
28 | QString setMyState( NodeCollection * , Action_t, bool ); | 28 | QString setMyState( NetworkSetup * , Action_t, bool ); |
29 | 29 | ||
30 | private : | 30 | private : |
31 | 31 | ||
32 | InterfaceInfo * getInterface( void ); | 32 | InterfaceInfo * getInterface( void ); |
33 | QRegExp Pat; | 33 | QRegExp Pat; |
34 | LanCardData * Data; | 34 | LanCardData * Data; |
35 | 35 | ||
36 | }; | 36 | }; |
37 | #endif | 37 | #endif |
diff --git a/noncore/settings/networksettings2/modem/modemrun.h b/noncore/settings/networksettings2/modem/modemrun.h index eb3a193..df6b370 100644 --- a/noncore/settings/networksettings2/modem/modemrun.h +++ b/noncore/settings/networksettings2/modem/modemrun.h | |||
@@ -1,25 +1,25 @@ | |||
1 | #include <netnode.h> | 1 | #include <netnode.h> |
2 | #include "modemdata.h" | 2 | #include "modemdata.h" |
3 | 3 | ||
4 | class ModemRun : public RuntimeInfo { | 4 | class ModemRun : public RuntimeInfo { |
5 | 5 | ||
6 | public : | 6 | public : |
7 | 7 | ||
8 | ModemRun( ANetNodeInstance * NNI, | 8 | ModemRun( ANetNodeInstance * NNI, |
9 | ModemData & Data ) : RuntimeInfo ( NNI ) | 9 | ModemData & Data ) : RuntimeInfo ( NNI ) |
10 | { } | 10 | { } |
11 | 11 | ||
12 | virtual RuntimeInfo * line( void ) | 12 | virtual RuntimeInfo * line( void ) |
13 | { return this; } | 13 | { return this; } |
14 | 14 | ||
15 | virtual QString deviceFile( void ) | 15 | virtual QString deviceFile( void ) |
16 | { return QString("/dev/modem"); } | 16 | { return QString("/dev/modem"); } |
17 | 17 | ||
18 | State_t detectState( void ) | 18 | State_t detectState( void ) |
19 | { return Unknown;} | 19 | { return Unknown;} |
20 | 20 | ||
21 | protected : | 21 | protected : |
22 | 22 | ||
23 | QString setMyState( NodeCollection * , Action_t, bool ) | 23 | QString setMyState( NetworkSetup * , Action_t, bool ) |
24 | { return QString(); } | 24 | { return QString(); } |
25 | }; | 25 | }; |
diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp index 2fa31bd..80a7fac 100644 --- a/noncore/settings/networksettings2/network/network_NN.cpp +++ b/noncore/settings/networksettings2/network/network_NN.cpp | |||
@@ -1,95 +1,95 @@ | |||
1 | #include <qpe/qpeapplication.h> | 1 | #include <qpe/qpeapplication.h> |
2 | #include <resources.h> | 2 | #include <resources.h> |
3 | #include <netnode.h> | 3 | #include <netnode.h> |
4 | #include "network_NN.h" | 4 | #include "network_NN.h" |
5 | #include "network_NNI.h" | 5 | #include "network_NNI.h" |
6 | 6 | ||
7 | #include "netnodeinterface.h" | 7 | #include "netnodeinterface.h" |
8 | 8 | ||
9 | static const char * NetworkNeeds[] = | 9 | static const char * NetworkNeeds[] = |
10 | { "device", | 10 | { "device", |
11 | 0 | 11 | 0 |
12 | }; | 12 | }; |
13 | 13 | ||
14 | static const char * NetworkProvides[] = | 14 | static const char * NetworkProvides[] = |
15 | { "connection", | 15 | { "NetworkSetup", |
16 | 0 | 16 | 0 |
17 | }; | 17 | }; |
18 | 18 | ||
19 | /** | 19 | /** |
20 | * Constructor, find all of the possible interfaces | 20 | * Constructor, find all of the possible interfaces |
21 | */ | 21 | */ |
22 | NetworkNetNode::NetworkNetNode() : ANetNode(tr("IP Configuration")) { | 22 | NetworkNetNode::NetworkNetNode() : ANetNode(tr("IP Configuration")) { |
23 | 23 | ||
24 | NSResources->addSystemFile( | 24 | NSResources->addSystemFile( |
25 | "interfaces", "/etc/network/interfaces", 1 ); | 25 | "interfaces", "/etc/network/interfaces", 1 ); |
26 | } | 26 | } |
27 | 27 | ||
28 | /** | 28 | /** |
29 | * Delete any interfaces that we own. | 29 | * Delete any interfaces that we own. |
30 | */ | 30 | */ |
31 | NetworkNetNode::~NetworkNetNode(){ | 31 | NetworkNetNode::~NetworkNetNode(){ |
32 | } | 32 | } |
33 | 33 | ||
34 | const QString NetworkNetNode::nodeDescription(){ | 34 | const QString NetworkNetNode::nodeDescription(){ |
35 | return tr("\ | 35 | return tr("\ |
36 | <p>Sets up TCP/IP options.</p>\ | 36 | <p>Sets up TCP/IP options.</p>\ |
37 | <p>Use this to configure the TCP/IP protocol</p>\ | 37 | <p>Use this to configure the TCP/IP protocol</p>\ |
38 | " | 38 | " |
39 | ); | 39 | ); |
40 | } | 40 | } |
41 | 41 | ||
42 | ANetNodeInstance * NetworkNetNode::createInstance( void ) { | 42 | ANetNodeInstance * NetworkNetNode::createInstance( void ) { |
43 | return new ANetwork( this ); | 43 | return new ANetwork( this ); |
44 | } | 44 | } |
45 | 45 | ||
46 | bool NetworkNetNode::hasDataForFile( SystemFile & S ) { | 46 | bool NetworkNetNode::hasDataForFile( SystemFile & S ) { |
47 | return S.name() == "interfaces"; | 47 | return S.name() == "interfaces"; |
48 | } | 48 | } |
49 | 49 | ||
50 | short NetworkNetNode::generateFile( SystemFile & SF, | 50 | short NetworkNetNode::generateFile( SystemFile & SF, |
51 | ANetNodeInstance * NNI, | 51 | ANetNodeInstance * NNI, |
52 | long DevNr ) { | 52 | long DevNr ) { |
53 | 53 | ||
54 | if( DevNr < 0 ) { | 54 | if( DevNr < 0 ) { |
55 | // generate device specific but common part | 55 | // generate device specific but common part |
56 | return 1; | 56 | return 1; |
57 | } | 57 | } |
58 | 58 | ||
59 | QString NIC = NNI->runtime()->device()->netNode()->nodeClass()->genNic( DevNr ); | 59 | QString NIC = NNI->runtime()->device()->netNode()->nodeClass()->genNic( DevNr ); |
60 | 60 | ||
61 | if( SF.name() == "interfaces" ) { | 61 | if( SF.name() == "interfaces" ) { |
62 | Log(("Generate entry for %s in %s\n", NIC.latin1(), SF.name().latin1() )); | 62 | Log(("Generate entry for %s in %s\n", NIC.latin1(), SF.name().latin1() )); |
63 | // generate mapping stanza for this interface | 63 | // generate mapping stanza for this interface |
64 | SF << "# check if " | 64 | SF << "# check if " |
65 | << NIC | 65 | << NIC |
66 | << " can be brought UP" | 66 | << " can be brought UP" |
67 | << endl; | 67 | << endl; |
68 | SF << "mapping " | 68 | SF << "mapping " |
69 | << NIC | 69 | << NIC |
70 | << endl; | 70 | << endl; |
71 | SF << " script " | 71 | SF << " script " |
72 | << QPEApplication::qpeDir() | 72 | << QPEApplication::qpeDir() |
73 | << "bin/networksettings2-request" | 73 | << "bin/networksettings2-request" |
74 | << endl | 74 | << endl |
75 | << endl; | 75 | << endl; |
76 | return 0; | 76 | return 0; |
77 | } | 77 | } |
78 | return 1; | 78 | return 1; |
79 | } | 79 | } |
80 | 80 | ||
81 | const char ** NetworkNetNode::needs( void ) { | 81 | const char ** NetworkNetNode::needs( void ) { |
82 | return NetworkNeeds; | 82 | return NetworkNeeds; |
83 | } | 83 | } |
84 | 84 | ||
85 | const char ** NetworkNetNode::provides( void ) { | 85 | const char ** NetworkNetNode::provides( void ) { |
86 | return NetworkProvides; | 86 | return NetworkProvides; |
87 | } | 87 | } |
88 | 88 | ||
89 | void NetworkNetNode::setSpecificAttribute( QString & , QString & ) { | 89 | void NetworkNetNode::setSpecificAttribute( QString & , QString & ) { |
90 | } | 90 | } |
91 | 91 | ||
92 | void NetworkNetNode::saveSpecificAttribute( QTextStream & ) { | 92 | void NetworkNetNode::saveSpecificAttribute( QTextStream & ) { |
93 | } | 93 | } |
94 | 94 | ||
95 | OPIE_NS2_PLUGIN( NetNodeInterface_T<NetworkNetNode> ) | 95 | OPIE_NS2_PLUGIN( NetNodeInterface_T<NetworkNetNode> ) |
diff --git a/noncore/settings/networksettings2/network/network_NNI.cpp b/noncore/settings/networksettings2/network/network_NNI.cpp index 34dac54..c183d5e 100644 --- a/noncore/settings/networksettings2/network/network_NNI.cpp +++ b/noncore/settings/networksettings2/network/network_NNI.cpp | |||
@@ -1,218 +1,218 @@ | |||
1 | #include <system.h> | 1 | #include <system.h> |
2 | #include <netnode.h> | 2 | #include <netnode.h> |
3 | #include "networkedit.h" | 3 | #include "networkedit.h" |
4 | #include "network_NNI.h" | 4 | #include "network_NNI.h" |
5 | #include "network_NN.h" | 5 | #include "network_NN.h" |
6 | 6 | ||
7 | ANetwork::ANetwork( NetworkNetNode * PNN ) : ANetNodeInstance( PNN ) { | 7 | ANetwork::ANetwork( NetworkNetNode * PNN ) : ANetNodeInstance( PNN ) { |
8 | Data.UseDHCP = 1; | 8 | Data.UseDHCP = 1; |
9 | Data.IPAddress = ""; | 9 | Data.IPAddress = ""; |
10 | Data.NetMask = ""; | 10 | Data.NetMask = ""; |
11 | Data.Broadcast = ""; | 11 | Data.Broadcast = ""; |
12 | Data.Gateway = ""; | 12 | Data.Gateway = ""; |
13 | Data.DNS1 = ""; | 13 | Data.DNS1 = ""; |
14 | Data.DNS2 = ""; | 14 | Data.DNS2 = ""; |
15 | Data.SendHostname = 0; | 15 | Data.SendHostname = 0; |
16 | Data.Hostname = ""; | 16 | Data.Hostname = ""; |
17 | Data.PreUp_SL.clear(); | 17 | Data.PreUp_SL.clear(); |
18 | Data.PreDown_SL.clear(); | 18 | Data.PreDown_SL.clear(); |
19 | Data.PostUp_SL.clear(); | 19 | Data.PostUp_SL.clear(); |
20 | Data.PostDown_SL.clear(); | 20 | Data.PostDown_SL.clear(); |
21 | GUI = 0; | 21 | GUI = 0; |
22 | RT = 0; | 22 | RT = 0; |
23 | } | 23 | } |
24 | 24 | ||
25 | void ANetwork::setSpecificAttribute( QString & A, QString & V ) { | 25 | void ANetwork::setSpecificAttribute( QString & A, QString & V ) { |
26 | if( A == "usedhcp" ) { | 26 | if( A == "usedhcp" ) { |
27 | Data.UseDHCP = (V == "yes"); | 27 | Data.UseDHCP = (V == "yes"); |
28 | } else if( A == "sendhostname" ) { | 28 | } else if( A == "sendhostname" ) { |
29 | Data.SendHostname = (V=="yes"); | 29 | Data.SendHostname = (V=="yes"); |
30 | } else if( A == "hostname" ) { | 30 | } else if( A == "hostname" ) { |
31 | Data.Hostname = V; | 31 | Data.Hostname = V; |
32 | } else if( A == "ipaddress" ) { | 32 | } else if( A == "ipaddress" ) { |
33 | Data.IPAddress = V; | 33 | Data.IPAddress = V; |
34 | } else if( A == "netmask" ) { | 34 | } else if( A == "netmask" ) { |
35 | Data.NetMask = V; | 35 | Data.NetMask = V; |
36 | } else if( A == "broadcast" ) { | 36 | } else if( A == "broadcast" ) { |
37 | Data.Broadcast = V; | 37 | Data.Broadcast = V; |
38 | } else if( A == "gateway" ) { | 38 | } else if( A == "gateway" ) { |
39 | Data.Gateway = V; | 39 | Data.Gateway = V; |
40 | } else if( A == "dns1" ) { | 40 | } else if( A == "dns1" ) { |
41 | Data.DNS1 = V; | 41 | Data.DNS1 = V; |
42 | } else if( A == "dns2" ) { | 42 | } else if( A == "dns2" ) { |
43 | Data.DNS2 = V; | 43 | Data.DNS2 = V; |
44 | } else if( A == "preup" ) { | 44 | } else if( A == "preup" ) { |
45 | Data.PreUp_SL.append( V ); | 45 | Data.PreUp_SL.append( V ); |
46 | } else if( A == "predown" ) { | 46 | } else if( A == "predown" ) { |
47 | Data.PreDown_SL.append( V ); | 47 | Data.PreDown_SL.append( V ); |
48 | } else if( A == "postup" ) { | 48 | } else if( A == "postup" ) { |
49 | Data.PostUp_SL.append( V ); | 49 | Data.PostUp_SL.append( V ); |
50 | } else if( A == "postdown" ) { | 50 | } else if( A == "postdown" ) { |
51 | Data.PostDown_SL.append( V ); | 51 | Data.PostDown_SL.append( V ); |
52 | } | 52 | } |
53 | } | 53 | } |
54 | 54 | ||
55 | void ANetwork::saveSpecificAttribute( QTextStream & TS ) { | 55 | void ANetwork::saveSpecificAttribute( QTextStream & TS ) { |
56 | TS << "usedhcp=" << ((Data.UseDHCP) ? "yes" : "no") << endl; | 56 | TS << "usedhcp=" << ((Data.UseDHCP) ? "yes" : "no") << endl; |
57 | TS << "sendhostname=" << ((Data.SendHostname) ? "yes" : "no") << endl; | 57 | TS << "sendhostname=" << ((Data.SendHostname) ? "yes" : "no") << endl; |
58 | TS << "hostname=" << Data.Hostname << endl; | 58 | TS << "hostname=" << Data.Hostname << endl; |
59 | TS << "ipaddress=" << Data.IPAddress << endl; | 59 | TS << "ipaddress=" << Data.IPAddress << endl; |
60 | TS << "netmask=" << Data.NetMask << endl; | 60 | TS << "netmask=" << Data.NetMask << endl; |
61 | TS << "broadcast=" << Data.Broadcast << endl; | 61 | TS << "broadcast=" << Data.Broadcast << endl; |
62 | TS << "gateway=" << Data.Gateway << endl; | 62 | TS << "gateway=" << Data.Gateway << endl; |
63 | TS << "dns1=" << Data.DNS1 << endl; | 63 | TS << "dns1=" << Data.DNS1 << endl; |
64 | TS << "dns2=" << Data.DNS2 << endl; | 64 | TS << "dns2=" << Data.DNS2 << endl; |
65 | for ( QStringList::Iterator it = Data.PreUp_SL.begin(); | 65 | for ( QStringList::Iterator it = Data.PreUp_SL.begin(); |
66 | it != Data.PreUp_SL.end(); | 66 | it != Data.PreUp_SL.end(); |
67 | ++it ) { | 67 | ++it ) { |
68 | TS << "preup=" << quote(*it) << endl; | 68 | TS << "preup=" << quote(*it) << endl; |
69 | } | 69 | } |
70 | for ( QStringList::Iterator it = Data.PreDown_SL.begin(); | 70 | for ( QStringList::Iterator it = Data.PreDown_SL.begin(); |
71 | it != Data.PreDown_SL.end(); | 71 | it != Data.PreDown_SL.end(); |
72 | ++it ) { | 72 | ++it ) { |
73 | TS << "predown=" << quote(*it) << endl; | 73 | TS << "predown=" << quote(*it) << endl; |
74 | } | 74 | } |
75 | for ( QStringList::Iterator it = Data.PostUp_SL.begin(); | 75 | for ( QStringList::Iterator it = Data.PostUp_SL.begin(); |
76 | it != Data.PostUp_SL.end(); | 76 | it != Data.PostUp_SL.end(); |
77 | ++it ) { | 77 | ++it ) { |
78 | TS << "postup=" << quote(*it) << endl; | 78 | TS << "postup=" << quote(*it) << endl; |
79 | } | 79 | } |
80 | for ( QStringList::Iterator it = Data.PostDown_SL.begin(); | 80 | for ( QStringList::Iterator it = Data.PostDown_SL.begin(); |
81 | it != Data.PostDown_SL.end(); | 81 | it != Data.PostDown_SL.end(); |
82 | ++it ) { | 82 | ++it ) { |
83 | TS << "postdown=" << quote(*it) << endl; | 83 | TS << "postdown=" << quote(*it) << endl; |
84 | } | 84 | } |
85 | } | 85 | } |
86 | 86 | ||
87 | QWidget * ANetwork::edit( QWidget * parent ) { | 87 | QWidget * ANetwork::edit( QWidget * parent ) { |
88 | GUI = new NetworkEdit( parent ); | 88 | GUI = new NetworkEdit( parent ); |
89 | GUI->showData( Data ); | 89 | GUI->showData( Data ); |
90 | return GUI; | 90 | return GUI; |
91 | } | 91 | } |
92 | 92 | ||
93 | QString ANetwork::acceptable( void ) { | 93 | QString ANetwork::acceptable( void ) { |
94 | return ( GUI ) ? GUI->acceptable( ) : QString(); | 94 | return ( GUI ) ? GUI->acceptable( ) : QString(); |
95 | } | 95 | } |
96 | 96 | ||
97 | void ANetwork::commit( void ) { | 97 | void ANetwork::commit( void ) { |
98 | if( GUI && GUI->commit( Data ) ) | 98 | if( GUI && GUI->commit( Data ) ) |
99 | setModified( 1 ); | 99 | setModified( 1 ); |
100 | } | 100 | } |
101 | 101 | ||
102 | bool ANetwork::hasDataForFile( SystemFile & S ) { | 102 | bool ANetwork::hasDataForFile( SystemFile & S ) { |
103 | return S.name() == "interfaces"; | 103 | return S.name() == "interfaces"; |
104 | } | 104 | } |
105 | 105 | ||
106 | short ANetwork::generateFile( SystemFile &SF, | 106 | short ANetwork::generateFile( SystemFile &SF, |
107 | long DevNr | 107 | long DevNr |
108 | ) { | 108 | ) { |
109 | 109 | ||
110 | short rvl, rvd ; | 110 | short rvl, rvd ; |
111 | QString NIC = runtime()->device()->netNode()->nodeClass()->genNic( DevNr ); | 111 | QString NIC = runtime()->device()->netNode()->nodeClass()->genNic( DevNr ); |
112 | 112 | ||
113 | rvl = 1; | 113 | rvl = 1; |
114 | if( SF.name() == "interfaces" ) { | 114 | if( SF.name() == "interfaces" ) { |
115 | Log(("Generate Network for %s\n", SF.name().latin1() )); | 115 | Log(("Generate Network for %s\n", SF.name().latin1() )); |
116 | // we can safely call from here since device item is deeper | 116 | // we can safely call from here since device item is deeper |
117 | if( Data.UseDHCP ) { | 117 | if( Data.UseDHCP ) { |
118 | SF << "iface " | 118 | SF << "iface " |
119 | << "A" | 119 | << "A" |
120 | << connection()->number() | 120 | << networkSetup()->number() |
121 | << NIC | 121 | << NIC |
122 | << " inet dhcp" | 122 | << " inet dhcp" |
123 | << endl; | 123 | << endl; |
124 | SF << " up echo \"" | 124 | SF << " up echo \"" |
125 | << NIC | 125 | << NIC |
126 | << "\" > /tmp/profile-" | 126 | << "\" > /tmp/profile-" |
127 | << connection()->number() | 127 | << networkSetup()->number() |
128 | << ".up" | 128 | << ".up" |
129 | << endl; | 129 | << endl; |
130 | if( Data.SendHostname ) { | 130 | if( Data.SendHostname ) { |
131 | SF << " hostname " | 131 | SF << " hostname " |
132 | << Data.Hostname | 132 | << Data.Hostname |
133 | << endl; | 133 | << endl; |
134 | } | 134 | } |
135 | 135 | ||
136 | SF << " down rm -f /tmp/profile-" | 136 | SF << " down rm -f /tmp/profile-" |
137 | << connection()->number() | 137 | << networkSetup()->number() |
138 | << ".up" | 138 | << ".up" |
139 | << endl; | 139 | << endl; |
140 | } else { | 140 | } else { |
141 | SF << "iface " | 141 | SF << "iface " |
142 | << "A" | 142 | << "A" |
143 | << connection()->number() | 143 | << networkSetup()->number() |
144 | << NIC | 144 | << NIC |
145 | << " inet static" | 145 | << " inet static" |
146 | << endl; | 146 | << endl; |
147 | SF << " up echo \"" | 147 | SF << " up echo \"" |
148 | << NIC | 148 | << NIC |
149 | << "\" > /tmp/profile-" | 149 | << "\" > /tmp/profile-" |
150 | << connection()->number() | 150 | << networkSetup()->number() |
151 | << ".up" | 151 | << ".up" |
152 | << endl; | 152 | << endl; |
153 | SF << " down rm -f /tmp/profile-" | 153 | SF << " down rm -f /tmp/profile-" |
154 | << connection()->number() | 154 | << networkSetup()->number() |
155 | << ".up" | 155 | << ".up" |
156 | << endl; | 156 | << endl; |
157 | SF << " address " | 157 | SF << " address " |
158 | << Data.IPAddress | 158 | << Data.IPAddress |
159 | << endl; | 159 | << endl; |
160 | SF << " broadcast " | 160 | SF << " broadcast " |
161 | << Data.Broadcast | 161 | << Data.Broadcast |
162 | << endl; | 162 | << endl; |
163 | SF << " netmask " | 163 | SF << " netmask " |
164 | << Data.NetMask | 164 | << Data.NetMask |
165 | << endl; | 165 | << endl; |
166 | 166 | ||
167 | // derive network address = IPAddress & netmask | 167 | // derive network address = IPAddress & netmask |
168 | { QString NW; | 168 | { QString NW; |
169 | QStringList ipal = QStringList::split( '.', Data.IPAddress ); | 169 | QStringList ipal = QStringList::split( '.', Data.IPAddress ); |
170 | QStringList nmal = QStringList::split( '.', Data.NetMask ); | 170 | QStringList nmal = QStringList::split( '.', Data.NetMask ); |
171 | 171 | ||
172 | NW = QString( "%1.%2.%3.%4" ). | 172 | NW = QString( "%1.%2.%3.%4" ). |
173 | arg( ipal[0].toShort() & nmal[0].toShort() ). | 173 | arg( ipal[0].toShort() & nmal[0].toShort() ). |
174 | arg( ipal[1].toShort() & nmal[1].toShort() ). | 174 | arg( ipal[1].toShort() & nmal[1].toShort() ). |
175 | arg( ipal[2].toShort() & nmal[2].toShort() ). | 175 | arg( ipal[2].toShort() & nmal[2].toShort() ). |
176 | arg( ipal[3].toShort() & nmal[3].toShort() ); | 176 | arg( ipal[3].toShort() & nmal[3].toShort() ); |
177 | SF << " network " | 177 | SF << " network " |
178 | << NW | 178 | << NW |
179 | << endl; | 179 | << endl; |
180 | } | 180 | } |
181 | } | 181 | } |
182 | for ( QStringList::Iterator it = Data.PreUp_SL.begin(); | 182 | for ( QStringList::Iterator it = Data.PreUp_SL.begin(); |
183 | it != Data.PreUp_SL.end(); | 183 | it != Data.PreUp_SL.end(); |
184 | ++it ) { | 184 | ++it ) { |
185 | SF << " pre-up " | 185 | SF << " pre-up " |
186 | << (*it) | 186 | << (*it) |
187 | << endl; | 187 | << endl; |
188 | } | 188 | } |
189 | for ( QStringList::Iterator it = Data.PostUp_SL.begin(); | 189 | for ( QStringList::Iterator it = Data.PostUp_SL.begin(); |
190 | it != Data.PostUp_SL.end(); | 190 | it != Data.PostUp_SL.end(); |
191 | ++it ) { | 191 | ++it ) { |
192 | SF << " up " | 192 | SF << " up " |
193 | << (*it) | 193 | << (*it) |
194 | << endl; | 194 | << endl; |
195 | } | 195 | } |
196 | for ( QStringList::Iterator it = Data.PreDown_SL.begin(); | 196 | for ( QStringList::Iterator it = Data.PreDown_SL.begin(); |
197 | it != Data.PreDown_SL.end(); | 197 | it != Data.PreDown_SL.end(); |
198 | ++it ) { | 198 | ++it ) { |
199 | SF << " down " | 199 | SF << " down " |
200 | << (*it) | 200 | << (*it) |
201 | << endl; | 201 | << endl; |
202 | } | 202 | } |
203 | for ( QStringList::Iterator it = Data.PostDown_SL.begin(); | 203 | for ( QStringList::Iterator it = Data.PostDown_SL.begin(); |
204 | it != Data.PostDown_SL.end(); | 204 | it != Data.PostDown_SL.end(); |
205 | ++it ) { | 205 | ++it ) { |
206 | SF << " post-down " | 206 | SF << " post-down " |
207 | << (*it) | 207 | << (*it) |
208 | << endl; | 208 | << endl; |
209 | } | 209 | } |
210 | rvl = 0; | 210 | rvl = 0; |
211 | } | 211 | } |
212 | 212 | ||
213 | // embed other info in it | 213 | // embed other info in it |
214 | rvd = connection()->getToplevel()->generateFileEmbedded( SF, DevNr ); | 214 | rvd = networkSetup()->getToplevel()->generateFileEmbedded( SF, DevNr ); |
215 | 215 | ||
216 | return (rvd == 2 || rvl == 2 ) ? 2 : | 216 | return (rvd == 2 || rvl == 2 ) ? 2 : |
217 | (rvd == 0 || rvl == 0 ) ? 0 : 1; | 217 | (rvd == 0 || rvl == 0 ) ? 0 : 1; |
218 | } | 218 | } |
diff --git a/noncore/settings/networksettings2/network/networkrun.cpp b/noncore/settings/networksettings2/network/networkrun.cpp index 74467ad..7039a36 100644 --- a/noncore/settings/networksettings2/network/networkrun.cpp +++ b/noncore/settings/networksettings2/network/networkrun.cpp | |||
@@ -1,51 +1,50 @@ | |||
1 | #include <system.h> | 1 | #include <system.h> |
2 | #include <netnode.h> | 2 | #include <netnode.h> |
3 | #include <resources.h> | 3 | #include <resources.h> |
4 | #include "networkrun.h" | 4 | #include "networkrun.h" |
5 | 5 | ||
6 | State_t NetworkRun::detectState( void ) { | 6 | State_t NetworkRun::detectState( void ) { |
7 | InterfaceInfo * II = nodeCollection()->assignedInterface(); | 7 | InterfaceInfo * II = networkSetup()->assignedInterface(); |
8 | 8 | ||
9 | Log(( "Interface %p %p : %d\n", II, nodeCollection(), (II) ? II->IsUp : 0 )); | ||
10 | if( II && II->IsUp ) { | 9 | if( II && II->IsUp ) { |
11 | // device has assigned interface | 10 | // device has assigned interface |
12 | return IsUp; | 11 | return IsUp; |
13 | } | 12 | } |
14 | 13 | ||
15 | // had no interface or interface is no longer up -> release | 14 | // had no interface or interface is no longer up -> release |
16 | nodeCollection()->assignInterface( 0 ); | 15 | networkSetup()->assignInterface( 0 ); |
17 | 16 | ||
18 | return Unknown; | 17 | return Unknown; |
19 | } | 18 | } |
20 | 19 | ||
21 | QString NetworkRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 20 | QString NetworkRun::setMyState( NetworkSetup * NC, Action_t A, bool ) { |
22 | // we handle UP and DOWN | 21 | // we handle UP and DOWN |
23 | InterfaceInfo * II = NC->assignedInterface(); | 22 | InterfaceInfo * II = NC->assignedInterface(); |
24 | 23 | ||
25 | if( ! II ) { | 24 | if( ! II ) { |
26 | Log(( "no interface assigned." )); | 25 | Log(( "no interface assigned." )); |
27 | return QString(); | 26 | return QString(); |
28 | } | 27 | } |
29 | 28 | ||
30 | QStringList SL; | 29 | QStringList SL; |
31 | 30 | ||
32 | if( A == Up ) { | 31 | if( A == Up ) { |
33 | // we can bring UP if lower level is available | 32 | // we can bring UP if lower level is available |
34 | SL << "ifup"; | 33 | SL << "ifup"; |
35 | } else if( A == Down ) { | 34 | } else if( A == Down ) { |
36 | SL << "ifdown"; | 35 | SL << "ifdown"; |
37 | } else { | 36 | } else { |
38 | return QString(); | 37 | return QString(); |
39 | } | 38 | } |
40 | 39 | ||
41 | SL << QString().sprintf( "%s=A%ld%s", | 40 | SL << QString().sprintf( "%s=A%ld%s", |
42 | II->Name.latin1(), | 41 | II->Name.latin1(), |
43 | nodeCollection()->number(), | 42 | networkSetup()->number(), |
44 | II->Name.latin1() ); | 43 | II->Name.latin1() ); |
45 | 44 | ||
46 | if( ! NSResources->system().runAsRoot( SL ) ) { | 45 | if( ! NSResources->system().runAsRoot( SL ) ) { |
47 | return QString("Cannot call %1").arg(SL.join(" ")); | 46 | return QString("Cannot call %1").arg(SL.join(" ")); |
48 | } | 47 | } |
49 | 48 | ||
50 | return QString(); | 49 | return QString(); |
51 | } | 50 | } |
diff --git a/noncore/settings/networksettings2/network/networkrun.h b/noncore/settings/networksettings2/network/networkrun.h index 78a1694..ac186e7 100644 --- a/noncore/settings/networksettings2/network/networkrun.h +++ b/noncore/settings/networksettings2/network/networkrun.h | |||
@@ -1,20 +1,20 @@ | |||
1 | #include <netnode.h> | 1 | #include <netnode.h> |
2 | #include "networkdata.h" | 2 | #include "networkdata.h" |
3 | 3 | ||
4 | class NetworkRun : public RuntimeInfo { | 4 | class NetworkRun : public RuntimeInfo { |
5 | 5 | ||
6 | public : | 6 | public : |
7 | 7 | ||
8 | NetworkRun( ANetNodeInstance * NNI, | 8 | NetworkRun( ANetNodeInstance * NNI, |
9 | NetworkData & Data ) : RuntimeInfo( NNI ) | 9 | NetworkData & Data ) : RuntimeInfo( NNI ) |
10 | { } | 10 | { } |
11 | 11 | ||
12 | virtual RuntimeInfo * connection( void ) | 12 | virtual RuntimeInfo * connection( void ) |
13 | { return this; } | 13 | { return this; } |
14 | 14 | ||
15 | State_t detectState( void ); | 15 | State_t detectState( void ); |
16 | 16 | ||
17 | protected : | 17 | protected : |
18 | 18 | ||
19 | QString setMyState( NodeCollection * , Action_t, bool ); | 19 | QString setMyState( NetworkSetup * , Action_t, bool ); |
20 | }; | 20 | }; |
diff --git a/noncore/settings/networksettings2/networksettings.cpp b/noncore/settings/networksettings2/networksettings.cpp index 78b6cce..80dcb3d 100644 --- a/noncore/settings/networksettings2/networksettings.cpp +++ b/noncore/settings/networksettings2/networksettings.cpp | |||
@@ -1,510 +1,510 @@ | |||
1 | #include <stdio.h> | 1 | #include <stdio.h> |
2 | #include <unistd.h> | 2 | #include <unistd.h> |
3 | #include <errno.h> | 3 | #include <errno.h> |
4 | 4 | ||
5 | #include <opie2/odebug.h> | 5 | #include <opie2/odebug.h> |
6 | #include <opie2/oledbox.h> | 6 | #include <opie2/oledbox.h> |
7 | 7 | ||
8 | #include <qpe/qpeapplication.h> | 8 | #include <qpe/qpeapplication.h> |
9 | #include <qlistbox.h> | 9 | #include <qlistbox.h> |
10 | #include <qlayout.h> | 10 | #include <qlayout.h> |
11 | #include <qgroupbox.h> | 11 | #include <qgroupbox.h> |
12 | #include <qtimer.h> | 12 | #include <qtimer.h> |
13 | #include <qlistbox.h> | 13 | #include <qlistbox.h> |
14 | #include <qmessagebox.h> | 14 | #include <qmessagebox.h> |
15 | #include <qlabel.h> | 15 | #include <qlabel.h> |
16 | #include <qiconview.h> | 16 | #include <qiconview.h> |
17 | #include <qtimer.h> | 17 | #include <qtimer.h> |
18 | #include <qpe/qpeapplication.h> | 18 | #include <qpe/qpeapplication.h> |
19 | #include <qtoolbutton.h> | 19 | #include <qtoolbutton.h> |
20 | #include <qevent.h> | 20 | #include <qevent.h> |
21 | 21 | ||
22 | #include "networksettings.h" | 22 | #include "networksettings.h" |
23 | #include "netnode.h" | 23 | #include "netnode.h" |
24 | #include "editconnection.h" | 24 | #include "editconnection.h" |
25 | 25 | ||
26 | NetworkSettings::NetworkSettings( QWidget *parent, | 26 | NetworkSettings::NetworkSettings( QWidget *parent, |
27 | const char *name, | 27 | const char *name, |
28 | WFlags fl ) : NetworkSettingsGUI(parent,name,fl), | 28 | WFlags fl ) : NetworkSettingsGUI(parent,name,fl), |
29 | NSD() { | 29 | NSD() { |
30 | 30 | ||
31 | UpdateTimer = new QTimer( this ); | 31 | UpdateTimer = new QTimer( this ); |
32 | 32 | ||
33 | // set pixmaps | 33 | // set pixmaps |
34 | Add_TB->setPixmap( NSResources->getPixmap( "add" ) ); | 34 | Add_TB->setPixmap( NSResources->getPixmap( "add" ) ); |
35 | Delete_TB->setPixmap( NSResources->getPixmap( "remove" ) ); | 35 | Delete_TB->setPixmap( NSResources->getPixmap( "remove" ) ); |
36 | CheckState_TB->setPixmap( NSResources->getPixmap( "check" ) ); | 36 | CheckState_TB->setPixmap( NSResources->getPixmap( "check" ) ); |
37 | GenConfig_TB->setPixmap( NSResources->getPixmap( "configure" ) ); | 37 | GenConfig_TB->setPixmap( NSResources->getPixmap( "configure" ) ); |
38 | 38 | ||
39 | Disable_TB->setPixmap( NSResources->getPixmap( "disabled" ) ); | 39 | Disable_TB->setPixmap( NSResources->getPixmap( "disabled" ) ); |
40 | Up_TB->setPixmap( NSResources->getPixmap( "more" ) ); | 40 | Up_TB->setPixmap( NSResources->getPixmap( "more" ) ); |
41 | Down_TB->setPixmap( NSResources->getPixmap( "less" ) ); | 41 | Down_TB->setPixmap( NSResources->getPixmap( "less" ) ); |
42 | 42 | ||
43 | QVBoxLayout* V = new QVBoxLayout( LED_Frm ); | 43 | QVBoxLayout* V = new QVBoxLayout( LED_Frm ); |
44 | QHBoxLayout * H = new QHBoxLayout( 0 ); | 44 | QHBoxLayout * H = new QHBoxLayout( 0 ); |
45 | V->addStretch(1); | 45 | V->addStretch(1); |
46 | V->addLayout( H ); | 46 | V->addLayout( H ); |
47 | Leds[0] = new Opie::Ui::OLedBox( red, LED_Frm ); | 47 | Leds[0] = new Opie::Ui::OLedBox( red, LED_Frm ); |
48 | H->addWidget( Leds[0], 0, Qt::AlignVCenter ); | 48 | H->addWidget( Leds[0], 0, Qt::AlignVCenter ); |
49 | Leds[1] = new Opie::Ui::OLedBox( red, LED_Frm ); | 49 | Leds[1] = new Opie::Ui::OLedBox( red, LED_Frm ); |
50 | H->addWidget( Leds[1], 0, Qt::AlignVCenter ); | 50 | H->addWidget( Leds[1], 0, Qt::AlignVCenter ); |
51 | Leds[2] = new Opie::Ui::OLedBox( red, LED_Frm ); | 51 | Leds[2] = new Opie::Ui::OLedBox( red, LED_Frm ); |
52 | H->addWidget( Leds[2], 0, Qt::AlignVCenter ); | 52 | H->addWidget( Leds[2], 0, Qt::AlignVCenter ); |
53 | V->addStretch(1); | 53 | V->addStretch(1); |
54 | 54 | ||
55 | 55 | ||
56 | SLOT_ToProfile(); | 56 | SLOT_ToProfile(); |
57 | 57 | ||
58 | // populate main Listbox | 58 | // populate main Listbox |
59 | Profiles_LB->clear(); | 59 | Profiles_LB->clear(); |
60 | QPEApplication::setStylusOperation( | 60 | QPEApplication::setStylusOperation( |
61 | Profiles_LB->viewport(), QPEApplication::RightOnHold ); | 61 | Profiles_LB->viewport(), QPEApplication::RightOnHold ); |
62 | 62 | ||
63 | connect( Profiles_LB, | 63 | connect( Profiles_LB, |
64 | SIGNAL(rightButtonPressed(QListBoxItem*,const QPoint&)), | 64 | SIGNAL(rightButtonPressed(QListBoxItem*,const QPoint&)), |
65 | this, SLOT(SLOT_EditNode(QListBoxItem*)) ); | 65 | this, SLOT(SLOT_EditNode(QListBoxItem*)) ); |
66 | 66 | ||
67 | { Name2Connection_t & M = NSResources->connections(); | 67 | { Name2NetworkSetup_t & M = NSResources->networkSetups(); |
68 | NodeCollection * NC; | 68 | NetworkSetup * NC; |
69 | // for all connections | 69 | // for all NetworkSetups |
70 | for( QDictIterator<NodeCollection> it(M); | 70 | for( QDictIterator<NetworkSetup> it(M); |
71 | it.current(); | 71 | it.current(); |
72 | ++it ) { | 72 | ++it ) { |
73 | NC = it.current(); | 73 | NC = it.current(); |
74 | Profiles_LB->insertItem( NC->devicePixmap(), | 74 | Profiles_LB->insertItem( NC->devicePixmap(), |
75 | NC->name() ); | 75 | NC->name() ); |
76 | } | 76 | } |
77 | } | 77 | } |
78 | 78 | ||
79 | if( Profiles_LB->count() ) { | 79 | if( Profiles_LB->count() ) { |
80 | Profiles_LB->setSelected( 0, TRUE ); | 80 | Profiles_LB->setSelected( 0, TRUE ); |
81 | } | 81 | } |
82 | 82 | ||
83 | // if no profiles -> auto popup editing | 83 | // if no profiles -> auto popup editing |
84 | if( NSResources->connections().count() == 0 ) { | 84 | if( NSResources->networkSetups().count() == 0 ) { |
85 | QTimer::singleShot( 100, this, SLOT(SLOT_AddNode() ) ); | 85 | QTimer::singleShot( 100, this, SLOT(SLOT_AddNode() ) ); |
86 | } | 86 | } |
87 | 87 | ||
88 | connect( &(NSResources->system()), | 88 | connect( &(NSResources->system()), |
89 | SIGNAL( stdoutLine(const QString &) ), | 89 | SIGNAL( stdoutLine(const QString &) ), |
90 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); | 90 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); |
91 | 91 | ||
92 | connect( &(NSResources->system()), | 92 | connect( &(NSResources->system()), |
93 | SIGNAL( stderrLine(const QString &) ), | 93 | SIGNAL( stderrLine(const QString &) ), |
94 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); | 94 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); |
95 | 95 | ||
96 | connect( &(NSResources->system()), | 96 | connect( &(NSResources->system()), |
97 | SIGNAL( processEvent(const QString &) ), | 97 | SIGNAL( processEvent(const QString &) ), |
98 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); | 98 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); |
99 | 99 | ||
100 | UpdateTimer->start( 5000 ); | 100 | UpdateTimer->start( 5000 ); |
101 | connect( UpdateTimer, SIGNAL( timeout() ), | 101 | connect( UpdateTimer, SIGNAL( timeout() ), |
102 | this, SLOT( SLOT_RefreshStates() ) ); | 102 | this, SLOT( SLOT_RefreshStates() ) ); |
103 | 103 | ||
104 | /* Add QCopChannel */ | 104 | /* Add QCopChannel */ |
105 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), | 105 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), |
106 | this, SLOT(SLOT_QCopMessage(const QCString&,const QByteArray&)) ); | 106 | this, SLOT(SLOT_QCopMessage(const QCString&,const QByteArray&)) ); |
107 | } | 107 | } |
108 | 108 | ||
109 | NetworkSettings::~NetworkSettings() { | 109 | NetworkSettings::~NetworkSettings() { |
110 | QString S; | 110 | QString S; |
111 | 111 | ||
112 | if( NSD.isModified() ) { | 112 | if( NSD.isModified() ) { |
113 | S = NSD.saveSettings(); | 113 | S = NSD.saveSettings(); |
114 | if( ! S.isEmpty() ) { | 114 | if( ! S.isEmpty() ) { |
115 | S.insert( 0, "<p>" ); | 115 | S.insert( 0, "<p>" ); |
116 | S.append( "</p>" ); | 116 | S.append( "</p>" ); |
117 | // problem saving | 117 | // problem saving |
118 | QMessageBox::warning( | 118 | QMessageBox::warning( |
119 | 0, | 119 | 0, |
120 | tr( "Saving setup" ), S ); | 120 | tr( "Saving setup" ), S ); |
121 | } | 121 | } |
122 | 122 | ||
123 | SLOT_GenerateConfig(); | 123 | SLOT_GenerateConfig(); |
124 | NSD.setModified( 0 ); | 124 | NSD.setModified( 0 ); |
125 | } | 125 | } |
126 | 126 | ||
127 | } | 127 | } |
128 | 128 | ||
129 | void NetworkSettings::SLOT_CmdMessage( const QString & S ) { | 129 | void NetworkSettings::SLOT_CmdMessage( const QString & S ) { |
130 | Messages_LB->insertItem( S ); | 130 | Messages_LB->insertItem( S ); |
131 | Messages_LB->setCurrentItem( Messages_LB->count()-1 ); | 131 | Messages_LB->setCurrentItem( Messages_LB->count()-1 ); |
132 | Messages_LB->ensureCurrentVisible(); | 132 | Messages_LB->ensureCurrentVisible(); |
133 | } | 133 | } |
134 | 134 | ||
135 | void NetworkSettings::SLOT_RefreshStates( void ) { | 135 | void NetworkSettings::SLOT_RefreshStates( void ) { |
136 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); // remember | 136 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); // remember |
137 | 137 | ||
138 | if( LBI ) { | 138 | if( LBI ) { |
139 | NodeCollection * NC; | 139 | NetworkSetup * NC; |
140 | NSResources->system().probeInterfaces(); | 140 | NSResources->system().probeInterfaces(); |
141 | // update current selection only | 141 | // update current selection only |
142 | NC = NSResources->findConnection( LBI->text() ); | 142 | NC = NSResources->findNetworkSetup( LBI->text() ); |
143 | if( NC ) { | 143 | if( NC ) { |
144 | State_t OldS = NC->state(); | 144 | State_t OldS = NC->state(); |
145 | State_t NewS = NC->state(1); | 145 | State_t NewS = NC->state(1); |
146 | if( OldS != NewS ) { | 146 | if( OldS != NewS ) { |
147 | updateProfileState( LBI ); | 147 | updateProfileState( LBI ); |
148 | } | 148 | } |
149 | } | 149 | } |
150 | } | 150 | } |
151 | 151 | ||
152 | 152 | ||
153 | /* -> LATER !! | 153 | /* -> LATER !! |
154 | bool is; | 154 | bool is; |
155 | NodeCollection * NC; | 155 | NetworkSetup * NC; |
156 | 156 | ||
157 | for( unsigned int i = 0; i < Profiles_LB->count() ; i ++ ) { | 157 | for( unsigned int i = 0; i < Profiles_LB->count() ; i ++ ) { |
158 | NC = NSResources->findConnection( Profiles_LB->text(i) ); | 158 | NC = NSResources->findNetworkSetup( Profiles_LB->text(i) ); |
159 | if( NC ) { | 159 | if( NC ) { |
160 | State_t OldS = NC->state(); | 160 | State_t OldS = NC->state(); |
161 | State_t NewS = NC->state(1); | 161 | State_t NewS = NC->state(1); |
162 | if( OldS != NewS ) { | 162 | if( OldS != NewS ) { |
163 | is = Profiles_LB->isSelected(i); | 163 | is = Profiles_LB->isSelected(i); |
164 | Profiles_LB->changeItem( NC->statePixmap(NewS), | 164 | Profiles_LB->changeItem( NC->statePixmap(NewS), |
165 | NC->name(), | 165 | NC->name(), |
166 | i ); | 166 | i ); |
167 | if( is ) { | 167 | if( is ) { |
168 | Profiles_LB->setSelected( i, TRUE ); | 168 | Profiles_LB->setSelected( i, TRUE ); |
169 | } | 169 | } |
170 | } | 170 | } |
171 | } | 171 | } |
172 | } | 172 | } |
173 | if( ci >= 0 ) | 173 | if( ci >= 0 ) |
174 | Profiles_LB->setCurrentItem( ci ); | 174 | Profiles_LB->setCurrentItem( ci ); |
175 | */ | 175 | */ |
176 | } | 176 | } |
177 | 177 | ||
178 | void NetworkSettings::SLOT_AddNode( void ) { | 178 | void NetworkSettings::SLOT_AddNode( void ) { |
179 | SLOT_EditNode( 0 ); | 179 | SLOT_EditNode( 0 ); |
180 | } | 180 | } |
181 | 181 | ||
182 | void NetworkSettings::SLOT_DeleteNode( void ) { | 182 | void NetworkSettings::SLOT_DeleteNode( void ) { |
183 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); | 183 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); |
184 | 184 | ||
185 | if ( ! LBI ) | 185 | if ( ! LBI ) |
186 | return; | 186 | return; |
187 | 187 | ||
188 | if( QMessageBox::warning( | 188 | if( QMessageBox::warning( |
189 | 0, | 189 | 0, |
190 | tr( "Removing profile" ), | 190 | tr( "Removing profile" ), |
191 | tr( "Remove selected profile ?" ), | 191 | tr( "Remove selected profile ?" ), |
192 | 1, 0 ) == 1 ) { | 192 | 1, 0 ) == 1 ) { |
193 | NSResources->removeConnection( LBI->text() ); | 193 | NSResources->removeNetworkSetup( LBI->text() ); |
194 | delete LBI; | 194 | delete LBI; |
195 | NSD.setModified( 1 ); | 195 | NSD.setModified( 1 ); |
196 | } | 196 | } |
197 | } | 197 | } |
198 | 198 | ||
199 | void NetworkSettings::SLOT_EditNode( QListBoxItem * LBI ) { | 199 | void NetworkSettings::SLOT_EditNode( QListBoxItem * LBI ) { |
200 | QString OldName = ""; | 200 | QString OldName = ""; |
201 | 201 | ||
202 | EditConnection EC( this ); | 202 | EditNetworkSetup EC( this ); |
203 | 203 | ||
204 | if( LBI ) { | 204 | if( LBI ) { |
205 | NodeCollection * NC = NSResources->findConnection( LBI->text() ); | 205 | NetworkSetup * NC = NSResources->findNetworkSetup( LBI->text() ); |
206 | if( ! NC ) { | 206 | if( ! NC ) { |
207 | return; | 207 | return; |
208 | } | 208 | } |
209 | OldName = NC->name(); | 209 | OldName = NC->name(); |
210 | EC.setConnection( NC ); | 210 | EC.setNetworkSetup( NC ); |
211 | } | 211 | } |
212 | 212 | ||
213 | EC.showMaximized(); | 213 | EC.showMaximized(); |
214 | // disable refresh timer | 214 | // disable refresh timer |
215 | UpdateTimer->stop(); | 215 | UpdateTimer->stop(); |
216 | 216 | ||
217 | // we need to retry | 217 | // we need to retry |
218 | while( 1 ) { | 218 | while( 1 ) { |
219 | if( EC.exec() == QDialog::Accepted ) { | 219 | if( EC.exec() == QDialog::Accepted ) { |
220 | // toplevel item -> store | 220 | // toplevel item -> store |
221 | NodeCollection * NC = EC.connection(); | 221 | NetworkSetup * NC = EC.networkSetup(); |
222 | if( NC->isModified() ) { | 222 | if( NC->isModified() ) { |
223 | if( LBI ) { | 223 | if( LBI ) { |
224 | if( NC->name() != OldName ) { | 224 | if( NC->name() != OldName ) { |
225 | // find if new name is free | 225 | // find if new name is free |
226 | NodeCollection * LCN = NSResources->findConnection( | 226 | NetworkSetup * LCN = NSResources->findNetworkSetup( |
227 | NC->name() ); | 227 | NC->name() ); |
228 | if( LCN ) { | 228 | if( LCN ) { |
229 | QMessageBox::warning( | 229 | QMessageBox::warning( |
230 | 0, | 230 | 0, |
231 | tr( "In System Config" ), | 231 | tr( "In System Config" ), |
232 | tr( "Name %1 already exists" ).arg(NC->name()) | 232 | tr( "Name %1 already exists" ).arg(NC->name()) |
233 | ); | 233 | ); |
234 | continue; // restart exec | 234 | continue; // restart exec |
235 | } // else new name | 235 | } // else new name |
236 | // new name -> remove item | 236 | // new name -> remove item |
237 | NSResources->removeConnection( OldName ); | 237 | NSResources->removeNetworkSetup( OldName ); |
238 | NSResources->addConnection( NC, 0 ); | 238 | NSResources->addNetworkSetup( NC, 0 ); |
239 | } // else not changed | 239 | } // else not changed |
240 | 240 | ||
241 | // must add it here since change will trigger event | 241 | // must add it here since change will trigger event |
242 | Profiles_LB->changeItem( NC->devicePixmap(), | 242 | Profiles_LB->changeItem( NC->devicePixmap(), |
243 | NC->name(), | 243 | NC->name(), |
244 | Profiles_LB->index( LBI ) | 244 | Profiles_LB->index( LBI ) |
245 | ); | 245 | ); |
246 | } else { | 246 | } else { |
247 | // new item | 247 | // new item |
248 | int ci = Profiles_LB->count(); | 248 | int ci = Profiles_LB->count(); |
249 | NSResources->addConnection( NC, 0 ); | 249 | NSResources->addNetworkSetup( NC, 0 ); |
250 | NC->setNumber( NSResources->assignConnectionNumber() ); | 250 | NC->setNumber( NSResources->assignNetworkSetupNumber() ); |
251 | Profiles_LB->insertItem( NC->devicePixmap(), NC->name() ); | 251 | Profiles_LB->insertItem( NC->devicePixmap(), NC->name() ); |
252 | Profiles_LB->setSelected( ci, TRUE ); | 252 | Profiles_LB->setSelected( ci, TRUE ); |
253 | } | 253 | } |
254 | updateProfileState( LBI ); | 254 | updateProfileState( LBI ); |
255 | } | 255 | } |
256 | } else { | 256 | } else { |
257 | // cancelled : reset connection | 257 | // cancelled : reset NetworkSetup |
258 | if( LBI ) { | 258 | if( LBI ) { |
259 | NodeCollection * NC = NSResources->findConnection( LBI->text() ); | 259 | NetworkSetup * NC = NSResources->findNetworkSetup( LBI->text() ); |
260 | NC->reassign(); | 260 | NC->reassign(); |
261 | } | 261 | } |
262 | } | 262 | } |
263 | break; | 263 | break; |
264 | } | 264 | } |
265 | // reenable | 265 | // reenable |
266 | UpdateTimer->start( 5000 ); | 266 | UpdateTimer->start( 5000 ); |
267 | } | 267 | } |
268 | 268 | ||
269 | void NetworkSettings::SLOT_ShowNode( QListBoxItem * LBI ) { | 269 | void NetworkSettings::SLOT_ShowNode( QListBoxItem * LBI ) { |
270 | if( LBI == 0 ) | 270 | if( LBI == 0 ) |
271 | return; | 271 | return; |
272 | 272 | ||
273 | NodeCollection * NC = NSResources->findConnection( LBI->text() ); | 273 | NetworkSetup * NC = NSResources->findNetworkSetup( LBI->text() ); |
274 | 274 | ||
275 | if( NC->description().isEmpty() ) { | 275 | if( NC->description().isEmpty() ) { |
276 | Description_LBL->setText( tr( "<<No description>>" ) ); | 276 | Description_LBL->setText( tr( "<<No description>>" ) ); |
277 | } else { | 277 | } else { |
278 | Description_LBL->setText( NC->description() ); | 278 | Description_LBL->setText( NC->description() ); |
279 | } | 279 | } |
280 | 280 | ||
281 | Profile_GB->setTitle( LBI->text() + " : " + NC->stateName() ); | 281 | Profile_GB->setTitle( LBI->text() + " : " + NC->stateName() ); |
282 | 282 | ||
283 | bool FrmActive = 1; | 283 | bool FrmActive = 1; |
284 | bool IsEnabled = 1; | 284 | bool IsEnabled = 1; |
285 | int leds = 0; | 285 | int leds = 0; |
286 | 286 | ||
287 | switch( NC->state() ) { | 287 | switch( NC->state() ) { |
288 | case Disabled : // no further work | 288 | case Disabled : // no further work |
289 | IsEnabled = 0; | 289 | IsEnabled = 0; |
290 | FrmActive = 0; | 290 | FrmActive = 0; |
291 | break; | 291 | break; |
292 | case Unknown : | 292 | case Unknown : |
293 | case Unchecked : | 293 | case Unchecked : |
294 | case Unavailable : | 294 | case Unavailable : |
295 | FrmActive = 0; | 295 | FrmActive = 0; |
296 | break; | 296 | break; |
297 | case Off : | 297 | case Off : |
298 | leds = 1; | 298 | leds = 1; |
299 | break; | 299 | break; |
300 | case Available : | 300 | case Available : |
301 | leds = 2; | 301 | leds = 2; |
302 | break; | 302 | break; |
303 | case IsUp : | 303 | case IsUp : |
304 | leds = 3; | 304 | leds = 3; |
305 | break; | 305 | break; |
306 | } | 306 | } |
307 | 307 | ||
308 | Disable_TB->setOn( ! IsEnabled ); | 308 | Disable_TB->setOn( ! IsEnabled ); |
309 | LED_Frm->setEnabled( FrmActive ); | 309 | LED_Frm->setEnabled( FrmActive ); |
310 | 310 | ||
311 | for( int i = 0 ; i < leds; i ++ ) { | 311 | for( int i = 0 ; i < leds; i ++ ) { |
312 | Leds[i]->setColor( red ); | 312 | Leds[i]->setColor( red ); |
313 | Leds[i]->setOn( true ); | 313 | Leds[i]->setOn( true ); |
314 | } | 314 | } |
315 | for( int i = leds ; i < 3; i ++ ) { | 315 | for( int i = leds ; i < 3; i ++ ) { |
316 | Leds[i]->setColor( red ); | 316 | Leds[i]->setColor( red ); |
317 | Leds[i]->setOn( false ); | 317 | Leds[i]->setOn( false ); |
318 | } | 318 | } |
319 | 319 | ||
320 | Up_TB->setEnabled( leds < 3 && leds != 0 ); | 320 | Up_TB->setEnabled( leds < 3 && leds != 0 ); |
321 | Down_TB->setEnabled( leds > 0 ); | 321 | Down_TB->setEnabled( leds > 0 ); |
322 | } | 322 | } |
323 | 323 | ||
324 | void NetworkSettings::SLOT_CheckState( void ) { | 324 | void NetworkSettings::SLOT_CheckState( void ) { |
325 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); | 325 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); |
326 | if ( ! LBI ) | 326 | if ( ! LBI ) |
327 | return; | 327 | return; |
328 | updateProfileState( LBI ); | 328 | updateProfileState( LBI ); |
329 | } | 329 | } |
330 | 330 | ||
331 | void NetworkSettings::updateProfileState( QListBoxItem * LBI ) { | 331 | void NetworkSettings::updateProfileState( QListBoxItem * LBI ) { |
332 | if( LBI == Profiles_LB->item( Profiles_LB->currentItem() ) ) { | 332 | if( LBI == Profiles_LB->item( Profiles_LB->currentItem() ) ) { |
333 | SLOT_ShowNode( LBI ); | 333 | SLOT_ShowNode( LBI ); |
334 | } | 334 | } |
335 | } | 335 | } |
336 | 336 | ||
337 | void NetworkSettings::SLOT_GenerateConfig( void ) { | 337 | void NetworkSettings::SLOT_GenerateConfig( void ) { |
338 | QString S = NSD.generateSettings(); | 338 | QString S = NSD.generateSettings(); |
339 | if( ! S.isEmpty() ) { | 339 | if( ! S.isEmpty() ) { |
340 | S.insert( 0, "<p>" ); | 340 | S.insert( 0, "<p>" ); |
341 | S.append( "</p>" ); | 341 | S.append( "</p>" ); |
342 | QMessageBox::warning( | 342 | QMessageBox::warning( |
343 | 0, | 343 | 0, |
344 | tr( "Generate config" ), | 344 | tr( "Generate config" ), |
345 | S); | 345 | S); |
346 | } | 346 | } |
347 | } | 347 | } |
348 | 348 | ||
349 | void NetworkSettings::SLOT_Disable( bool T ) { | 349 | void NetworkSettings::SLOT_Disable( bool T ) { |
350 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); | 350 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); |
351 | QString Msg; | 351 | QString Msg; |
352 | 352 | ||
353 | if ( ! LBI ) | 353 | if ( ! LBI ) |
354 | return; | 354 | return; |
355 | 355 | ||
356 | NodeCollection * NC = NSResources->findConnection( LBI->text() ); | 356 | NetworkSetup * NC = NSResources->findNetworkSetup( LBI->text() ); |
357 | 357 | ||
358 | Log(( "Prepare to %sable\n", (T) ? "en" : "dis" )); | 358 | Log(( "Prepare to %sable\n", (T) ? "en" : "dis" )); |
359 | Msg = NC->setState( (T) ? Disable : Enable ); | 359 | Msg = NC->setState( (T) ? Disable : Enable ); |
360 | if( ! Msg.isEmpty() ) { | 360 | if( ! Msg.isEmpty() ) { |
361 | Msg.insert( 0, "<p>" ); | 361 | Msg.insert( 0, "<p>" ); |
362 | Msg.append( "</p>" ); | 362 | Msg.append( "</p>" ); |
363 | QMessageBox::warning( | 363 | QMessageBox::warning( |
364 | 0, | 364 | 0, |
365 | tr( "Activating profile" ), | 365 | tr( "Activating profile" ), |
366 | Msg ); | 366 | Msg ); |
367 | return; | 367 | return; |
368 | } | 368 | } |
369 | 369 | ||
370 | // reload new state | 370 | // reload new state |
371 | NC->state( true ); | 371 | NC->state( true ); |
372 | updateProfileState( LBI ); | 372 | updateProfileState( LBI ); |
373 | } | 373 | } |
374 | 374 | ||
375 | void NetworkSettings::SLOT_Up( void ) { | 375 | void NetworkSettings::SLOT_Up( void ) { |
376 | // bring more up | 376 | // bring more up |
377 | 377 | ||
378 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); | 378 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); |
379 | QString Msg; | 379 | QString Msg; |
380 | int led = -1; | 380 | int led = -1; |
381 | 381 | ||
382 | if ( ! LBI ) | 382 | if ( ! LBI ) |
383 | return; | 383 | return; |
384 | 384 | ||
385 | NodeCollection * NC = | 385 | NetworkSetup * NC = |
386 | NSResources->findConnection( LBI->text() ); | 386 | NSResources->findNetworkSetup( LBI->text() ); |
387 | 387 | ||
388 | switch( NC->state() ) { | 388 | switch( NC->state() ) { |
389 | case Disabled : // cannot modify this state | 389 | case Disabled : // cannot modify this state |
390 | case Unknown : // cannot modify this state | 390 | case Unknown : // cannot modify this state |
391 | case Unchecked : // cannot modify this state | 391 | case Unchecked : // cannot modify this state |
392 | case Unavailable : // cannot modify this state | 392 | case Unavailable : // cannot modify this state |
393 | case IsUp : // highest UP state | 393 | case IsUp : // highest UP state |
394 | return; | 394 | return; |
395 | case Off : // -> activate | 395 | case Off : // -> activate |
396 | led = 1; | 396 | led = 1; |
397 | Down_TB->setEnabled( true ); | 397 | Down_TB->setEnabled( true ); |
398 | Log(( "Activate interface %s\n", NC->name().latin1() )); | 398 | Log(( "Activate interface %s\n", NC->name().latin1() )); |
399 | Msg = NC->setState( Activate ); | 399 | Msg = NC->setState( Activate ); |
400 | break; | 400 | break; |
401 | case Available : // -> up | 401 | case Available : // -> up |
402 | led = 2; | 402 | led = 2; |
403 | Log(( "Bring up interface %s\n", NC->name().latin1() )); | 403 | Log(( "Bring up interface %s\n", NC->name().latin1() )); |
404 | Msg = NC->setState( Up ); | 404 | Msg = NC->setState( Up ); |
405 | if( Msg.isEmpty() ) { | 405 | if( Msg.isEmpty() ) { |
406 | Up_TB->setEnabled( false ); | 406 | Up_TB->setEnabled( false ); |
407 | } | 407 | } |
408 | break; | 408 | break; |
409 | } | 409 | } |
410 | 410 | ||
411 | if( ! Msg.isEmpty() ) { | 411 | if( ! Msg.isEmpty() ) { |
412 | Msg.insert( 0, "<p>" ); | 412 | Msg.insert( 0, "<p>" ); |
413 | Msg.append( "</p>" ); | 413 | Msg.append( "</p>" ); |
414 | QMessageBox::warning( | 414 | QMessageBox::warning( |
415 | 0, | 415 | 0, |
416 | tr( "Increase availability" ), | 416 | tr( "Increase availability" ), |
417 | Msg ); | 417 | Msg ); |
418 | return; | 418 | return; |
419 | } | 419 | } |
420 | 420 | ||
421 | updateProfileState( LBI ); | 421 | updateProfileState( LBI ); |
422 | 422 | ||
423 | // set color of led we should change | 423 | // set color of led we should change |
424 | if( led > 0 ) { | 424 | if( led > 0 ) { |
425 | Leds[led]->setColor( blue ); | 425 | Leds[led]->setColor( blue ); |
426 | Leds[led]->setOn( true ); | 426 | Leds[led]->setOn( true ); |
427 | } | 427 | } |
428 | 428 | ||
429 | } | 429 | } |
430 | 430 | ||
431 | void NetworkSettings::SLOT_Down( void ) { | 431 | void NetworkSettings::SLOT_Down( void ) { |
432 | // bring more down | 432 | // bring more down |
433 | 433 | ||
434 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); | 434 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); |
435 | int led = -1; | 435 | int led = -1; |
436 | QString Msg; | 436 | QString Msg; |
437 | 437 | ||
438 | if ( ! LBI ) | 438 | if ( ! LBI ) |
439 | return; | 439 | return; |
440 | 440 | ||
441 | NodeCollection * NC = | 441 | NetworkSetup * NC = |
442 | NSResources->findConnection( LBI->text() ); | 442 | NSResources->findNetworkSetup( LBI->text() ); |
443 | 443 | ||
444 | switch( NC->state() ) { | 444 | switch( NC->state() ) { |
445 | case Disabled : // cannot modify this state | 445 | case Disabled : // cannot modify this state |
446 | case Unknown : // cannot modify this state | 446 | case Unknown : // cannot modify this state |
447 | case Unchecked : // cannot modify this state | 447 | case Unchecked : // cannot modify this state |
448 | case Unavailable : // cannot modify this state | 448 | case Unavailable : // cannot modify this state |
449 | case Off : // highest DOWN state | 449 | case Off : // highest DOWN state |
450 | break; | 450 | break; |
451 | case Available : // -> down | 451 | case Available : // -> down |
452 | led = 0; | 452 | led = 0; |
453 | Log(( "Deactivate interface %s\n", NC->name().latin1() )); | 453 | Log(( "Deactivate interface %s\n", NC->name().latin1() )); |
454 | Msg = NC->setState( Deactivate ); | 454 | Msg = NC->setState( Deactivate ); |
455 | Down_TB->setEnabled( false ); | 455 | Down_TB->setEnabled( false ); |
456 | break; | 456 | break; |
457 | case IsUp : // highest UP state | 457 | case IsUp : // highest UP state |
458 | led = 1; | 458 | led = 1; |
459 | Up_TB->setEnabled( true ); | 459 | Up_TB->setEnabled( true ); |
460 | Log(( "Bring down interface %s\n", NC->name().latin1() )); | 460 | Log(( "Bring down interface %s\n", NC->name().latin1() )); |
461 | Msg = NC->setState( Down, 1 ); | 461 | Msg = NC->setState( Down, 1 ); |
462 | if( Msg.isEmpty() ) { | 462 | if( Msg.isEmpty() ) { |
463 | // remove 'up' file to make sure | 463 | // remove 'up' file to make sure |
464 | unlink ( QString().sprintf( "/tmp/Profile-%d.up", NC->number() ).latin1() );; | 464 | unlink ( QString().sprintf( "/tmp/Profile-%d.up", NC->number() ).latin1() );; |
465 | } | 465 | } |
466 | break; | 466 | break; |
467 | } | 467 | } |
468 | 468 | ||
469 | if( ! Msg.isEmpty() ) { | 469 | if( ! Msg.isEmpty() ) { |
470 | Msg.insert( 0, "<p>" ); | 470 | Msg.insert( 0, "<p>" ); |
471 | Msg.append( "</p>" ); | 471 | Msg.append( "</p>" ); |
472 | QMessageBox::warning( | 472 | QMessageBox::warning( |
473 | 0, | 473 | 0, |
474 | tr( "Decrease availability" ), | 474 | tr( "Decrease availability" ), |
475 | Msg ); | 475 | Msg ); |
476 | return; | 476 | return; |
477 | } | 477 | } |
478 | 478 | ||
479 | updateProfileState( LBI ); | 479 | updateProfileState( LBI ); |
480 | 480 | ||
481 | // set color of led we should change | 481 | // set color of led we should change |
482 | if( led >= 0 ) { | 482 | if( led >= 0 ) { |
483 | Leds[led]->setColor( blue ); | 483 | Leds[led]->setColor( blue ); |
484 | } | 484 | } |
485 | } | 485 | } |
486 | 486 | ||
487 | void NetworkSettings::SLOT_ToMessages( void ) { | 487 | void NetworkSettings::SLOT_ToMessages( void ) { |
488 | Profiles_LB->hide(); | 488 | Profiles_LB->hide(); |
489 | Profile_GB->hide(); | 489 | Profile_GB->hide(); |
490 | Messages_GB->show(); | 490 | Messages_GB->show(); |
491 | } | 491 | } |
492 | 492 | ||
493 | void NetworkSettings::SLOT_ToProfile( void ) { | 493 | void NetworkSettings::SLOT_ToProfile( void ) { |
494 | Profiles_LB->show(); | 494 | Profiles_LB->show(); |
495 | Profile_GB->show(); | 495 | Profile_GB->show(); |
496 | Messages_GB->hide(); | 496 | Messages_GB->hide(); |
497 | } | 497 | } |
498 | 498 | ||
499 | void NetworkSettings::SLOT_QCopMessage(const QCString &msg, const QByteArray &data) { | 499 | void NetworkSettings::SLOT_QCopMessage(const QCString &msg, const QByteArray &data) { |
500 | QDataStream stream( data, IO_ReadOnly ); | 500 | QDataStream stream( data, IO_ReadOnly ); |
501 | 501 | ||
502 | if( msg == "raise" ) { | 502 | if( msg == "raise" ) { |
503 | raise(); | 503 | raise(); |
504 | return; | 504 | return; |
505 | } /* if ( msg == "someMessage(int,int,int)" ) { | 505 | } /* if ( msg == "someMessage(int,int,int)" ) { |
506 | int a,b,c; | 506 | int a,b,c; |
507 | stream >> a >> b >> c; | 507 | stream >> a >> b >> c; |
508 | ... | 508 | ... |
509 | } */ | 509 | } */ |
510 | } | 510 | } |
diff --git a/noncore/settings/networksettings2/networksettings2/asconnection.h b/noncore/settings/networksettings2/networksettings2/asconnection.h index 1ed7e74..eeb0939 100644 --- a/noncore/settings/networksettings2/networksettings2/asconnection.h +++ b/noncore/settings/networksettings2/networksettings2/asconnection.h | |||
@@ -1,18 +1,18 @@ | |||
1 | #ifndef ASCONNECTION_H | 1 | #ifndef ASCONNECTION_H |
2 | #define ASCONNECTION_H | 2 | #define ASCONNECTION_H |
3 | 3 | ||
4 | #include <resources.h> | 4 | #include <resources.h> |
5 | 5 | ||
6 | // pure virtual (component oriented) interface of any | 6 | // pure virtual (component oriented) interface of any |
7 | // plugin that offers a connection | 7 | // plugin that offers a networkSetup |
8 | class AsConnection : public RuntimeInfo { | 8 | class AsNetworkSetup : public RuntimeInfo { |
9 | 9 | ||
10 | public : | 10 | public : |
11 | 11 | ||
12 | AsConnection( ANetNodeInstance * NNI ) : | 12 | AsNetworkSetup( ANetNodeInstance * NNI ) : |
13 | RuntimeInfo( NNI ) { | 13 | RuntimeInfo( NNI ) { |
14 | } | 14 | } |
15 | 15 | ||
16 | }; | 16 | }; |
17 | 17 | ||
18 | #endif | 18 | #endif |
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.cpp b/noncore/settings/networksettings2/networksettings2/netnode.cpp index f00e0b3..0ab0e5b 100644 --- a/noncore/settings/networksettings2/networksettings2/netnode.cpp +++ b/noncore/settings/networksettings2/networksettings2/netnode.cpp | |||
@@ -1,519 +1,528 @@ | |||
1 | #include <time.h> | 1 | #include <time.h> |
2 | #include <qpe/qpeapplication.h> | 2 | #include <qpe/qpeapplication.h> |
3 | #include <qpe/resource.h> | 3 | #include <qpe/resource.h> |
4 | 4 | ||
5 | #include <qpainter.h> | 5 | #include <qpainter.h> |
6 | #include <qbitmap.h> | 6 | #include <qbitmap.h> |
7 | #include <qtextstream.h> | 7 | #include <qtextstream.h> |
8 | #include <qpixmap.h> | 8 | #include <qpixmap.h> |
9 | 9 | ||
10 | #include "resources.h" | 10 | #include "resources.h" |
11 | #include "netnode.h" | 11 | #include "netnode.h" |
12 | 12 | ||
13 | static char * ActionName[] = { | 13 | static char * ActionName[] = { |
14 | "Disable", | 14 | "Disable", |
15 | "Enable", | 15 | "Enable", |
16 | "Activate", | 16 | "Activate", |
17 | "Deactivate", | 17 | "Deactivate", |
18 | "Up", | 18 | "Up", |
19 | "Down" | 19 | "Down" |
20 | }; | 20 | }; |
21 | 21 | ||
22 | static char * StateName[] = { | 22 | static char * StateName[] = { |
23 | "Unchecked", | 23 | "Unchecked", |
24 | "Unknown", | 24 | "Unknown", |
25 | "Unavailable", | 25 | "Unavailable", |
26 | "Disabled", | 26 | "Disabled", |
27 | "Off", | 27 | "Off", |
28 | "Available", | 28 | "Available", |
29 | "IsUp" | 29 | "IsUp" |
30 | }; | 30 | }; |
31 | 31 | ||
32 | QString & deQuote( QString & X ) { | 32 | QString & deQuote( QString & X ) { |
33 | if( X[0] == '"' ) { | 33 | if( X[0] == '"' ) { |
34 | // remove end and trailing "" and \x -> x | 34 | // remove end and trailing "" and \x -> x |
35 | QChar R; | 35 | QChar R; |
36 | long idx; | 36 | long idx; |
37 | idx = X.length()-1; | 37 | idx = X.length()-1; |
38 | X = X.mid( 1, idx ); | 38 | X = X.mid( 1, idx ); |
39 | 39 | ||
40 | idx = 0; | 40 | idx = 0; |
41 | while( ( idx = X.find( '\\', idx ) ) >= 0 ) { | 41 | while( ( idx = X.find( '\\', idx ) ) >= 0 ) { |
42 | R = X.at( idx + 1 ); | 42 | R = X.at( idx + 1 ); |
43 | X.replace( idx, 2, &R, 1 ); | 43 | X.replace( idx, 2, &R, 1 ); |
44 | } | 44 | } |
45 | X = X.left( X.length()-1 ); | 45 | X = X.left( X.length()-1 ); |
46 | } | 46 | } |
47 | return X; | 47 | return X; |
48 | } | 48 | } |
49 | 49 | ||
50 | QString quote( QString X ) { | 50 | QString quote( QString X ) { |
51 | if( X.find( QRegExp( "[ \n\"\\\t]" ) ) >= 0 ) { | 51 | if( X.find( QRegExp( "[ \n\"\\\t]" ) ) >= 0 ) { |
52 | // need to quote this | 52 | // need to quote this |
53 | QString OutString = "\""; | 53 | QString OutString = "\""; |
54 | 54 | ||
55 | X.replace( QRegExp("\""), "\\\"" ); | 55 | X.replace( QRegExp("\""), "\\\"" ); |
56 | X.replace( QRegExp("\\"), "\\\\" ); | 56 | X.replace( QRegExp("\\"), "\\\\" ); |
57 | X.replace( QRegExp(" "), "\\ " ); | 57 | X.replace( QRegExp(" "), "\\ " ); |
58 | 58 | ||
59 | OutString += X; | 59 | OutString += X; |
60 | OutString += "\""; | 60 | OutString += "\""; |
61 | X = OutString; | 61 | X = OutString; |
62 | } | 62 | } |
63 | return X; | 63 | return X; |
64 | } | 64 | } |
65 | 65 | ||
66 | 66 | ||
67 | // | 67 | // |
68 | // | 68 | // |
69 | // ANETNODE | 69 | // ANETNODE |
70 | // | 70 | // |
71 | // | 71 | // |
72 | 72 | ||
73 | void ANetNode::saveAttributes( QTextStream & TS ) { | 73 | void ANetNode::saveAttributes( QTextStream & TS ) { |
74 | saveSpecificAttribute( TS ); | 74 | saveSpecificAttribute( TS ); |
75 | } | 75 | } |
76 | 76 | ||
77 | void ANetNode::setAttribute( QString & Attr, QString & Value ){ | 77 | void ANetNode::setAttribute( QString & Attr, QString & Value ){ |
78 | setSpecificAttribute( Attr, Value ); | 78 | setSpecificAttribute( Attr, Value ); |
79 | } | 79 | } |
80 | 80 | ||
81 | bool ANetNode::isToplevel( void ) { | 81 | bool ANetNode::isToplevel( void ) { |
82 | const char ** P = provides(); | 82 | const char ** P = provides(); |
83 | while( *P ) { | 83 | while( *P ) { |
84 | if( strcmp( *P, "fullsetup") == 0 ) | 84 | if( strcmp( *P, "fullsetup") == 0 ) |
85 | return 1; | 85 | return 1; |
86 | P ++; | 86 | P ++; |
87 | } | 87 | } |
88 | return 0; | 88 | return 0; |
89 | } | 89 | } |
90 | 90 | ||
91 | bool ANetNode::openFile( SystemFile & SF, | 91 | bool ANetNode::openFile( SystemFile & SF, |
92 | ANetNodeInstance * NNI ) { | 92 | ANetNodeInstance * NNI ) { |
93 | return (NNI ) ? NNI->openFile( SF ) : 0 ; | 93 | return (NNI ) ? NNI->openFile( SF ) : 0 ; |
94 | } | 94 | } |
95 | 95 | ||
96 | // | 96 | // |
97 | // | 97 | // |
98 | // ANETNODEINSTANCE | 98 | // ANETNODEINSTANCE |
99 | // | 99 | // |
100 | // | 100 | // |
101 | 101 | ||
102 | long ANetNodeInstance::InstanceCounter = -1; | 102 | long ANetNodeInstance::InstanceCounter = -1; |
103 | 103 | ||
104 | void ANetNodeInstance::initialize( void ) { | 104 | void ANetNodeInstance::initialize( void ) { |
105 | if( InstanceCounter == -1 ) | 105 | if( InstanceCounter == -1 ) |
106 | InstanceCounter = time(0); | 106 | InstanceCounter = time(0); |
107 | // set name | 107 | // set name |
108 | QString N; | 108 | QString N; |
109 | N.sprintf( "-%ld", InstanceCounter++ ); | 109 | N.sprintf( "-%ld", InstanceCounter++ ); |
110 | N.prepend( NodeType->name() ); | 110 | N.prepend( NodeType->name() ); |
111 | setName( N.latin1() ); | 111 | setName( N.latin1() ); |
112 | } | 112 | } |
113 | 113 | ||
114 | void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){ | 114 | void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){ |
115 | if( Attr == "__name" ) { | 115 | if( Attr == "__name" ) { |
116 | setName( Value.latin1() ); | 116 | setName( Value.latin1() ); |
117 | } else { | 117 | } else { |
118 | setSpecificAttribute( Attr, Value ); | 118 | setSpecificAttribute( Attr, Value ); |
119 | } | 119 | } |
120 | } | 120 | } |
121 | 121 | ||
122 | void ANetNodeInstance::saveAttributes( QTextStream & TS ) { | 122 | void ANetNodeInstance::saveAttributes( QTextStream & TS ) { |
123 | TS << "__name=" << name() << endl; | 123 | TS << "__name=" << name() << endl; |
124 | saveSpecificAttribute( TS ); | 124 | saveSpecificAttribute( TS ); |
125 | } | 125 | } |
126 | 126 | ||
127 | ANetNodeInstance * ANetNodeInstance::nextNode( void ) { | 127 | ANetNodeInstance * ANetNodeInstance::nextNode( void ) { |
128 | return connection()->findNext( this ); | 128 | return networkSetup()->findNext( this ); |
129 | } | 129 | } |
130 | 130 | ||
131 | // | 131 | // |
132 | // | 132 | // |
133 | // NODECOLLECTION | 133 | // NODECOLLECTION |
134 | // | 134 | // |
135 | // | 135 | // |
136 | 136 | ||
137 | NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() { | 137 | NetworkSetup::NetworkSetup( void ) : QList<ANetNodeInstance>() { |
138 | IsModified = 0; | 138 | IsModified = 0; |
139 | Index = -1; | 139 | Index = -1; |
140 | Name=""; | 140 | Name=""; |
141 | IsNew = 1; | 141 | IsNew = 1; |
142 | CurrentState = Unchecked; | 142 | CurrentState = Unchecked; |
143 | AssignedInterface = 0; | 143 | AssignedInterface = 0; |
144 | Number = -1; | 144 | Number = -1; |
145 | Done = 0; | 145 | Done = 0; |
146 | } | 146 | } |
147 | 147 | ||
148 | NodeCollection::NodeCollection( QTextStream & TS, bool & Dangling ) : | 148 | NetworkSetup::NetworkSetup( QTextStream & TS, bool & Dangling ) : |
149 | QList<ANetNodeInstance>() { | 149 | QList<ANetNodeInstance>() { |
150 | long idx; | 150 | long idx; |
151 | QString S, A, N; | 151 | QString S, A, N; |
152 | 152 | ||
153 | Number = -1; | 153 | Number = -1; |
154 | Done = 0; | 154 | Done = 0; |
155 | IsModified = 0; | 155 | IsModified = 0; |
156 | Index = -1; | 156 | Index = -1; |
157 | Name=""; | 157 | Name=""; |
158 | IsNew = 0; | 158 | IsNew = 0; |
159 | AssignedInterface = 0; | 159 | AssignedInterface = 0; |
160 | CurrentState = Unchecked; | 160 | CurrentState = Unchecked; |
161 | 161 | ||
162 | Dangling = 0; // by default node collection is ok | 162 | Dangling = 0; // by default node collection is ok |
163 | 163 | ||
164 | do { | 164 | do { |
165 | S = TS.readLine(); | 165 | S = TS.readLine(); |
166 | if( S.isEmpty() ) { | 166 | if( S.isEmpty() ) { |
167 | // empty line | 167 | // empty line |
168 | break; | 168 | break; |
169 | } | 169 | } |
170 | 170 | ||
171 | idx = S.find('='); | 171 | idx = S.find('='); |
172 | S.stripWhiteSpace(); | 172 | S.stripWhiteSpace(); |
173 | A = S.left( idx ); | 173 | A = S.left( idx ); |
174 | A.lower(); | 174 | A.lower(); |
175 | N = S.mid( idx+1, S.length() ); | 175 | N = S.mid( idx+1, S.length() ); |
176 | N.stripWhiteSpace(); | 176 | N.stripWhiteSpace(); |
177 | N = deQuote( N ); | 177 | N = deQuote( N ); |
178 | 178 | ||
179 | if( A == "name" ) { | 179 | if( A == "name" ) { |
180 | Name = N; | 180 | Name = N; |
181 | } else if( A == "number" ) { | 181 | } else if( A == "number" ) { |
182 | setNumber( N.toLong() ); | 182 | setNumber( N.toLong() ); |
183 | } else if( A == "node" ) { | 183 | } else if( A == "node" ) { |
184 | ANetNodeInstance * NNI = NSResources->findNodeInstance( N ); | 184 | ANetNodeInstance * NNI = NSResources->findNodeInstance( N ); |
185 | Log(( "Find node %s : %p\n", N.latin1(), NNI )); | 185 | Log(( "Find node %s : %p\n", N.latin1(), NNI )); |
186 | if( NNI ) { | 186 | if( NNI ) { |
187 | append( NNI ); | 187 | append( NNI ); |
188 | } else { | 188 | } else { |
189 | // could not find a node type -> collection invalid | 189 | // could not find a node type -> collection invalid |
190 | Log(( "Node %s missing -> connection dangling\n", | 190 | Log(( "Node %s missing -> NetworkSetup dangling\n", |
191 | N.latin1() )); | 191 | N.latin1() )); |
192 | // create placeholder for this dangling NNI | 192 | // create placeholder for this dangling NNI |
193 | NNI = new ErrorNNI( N ); | 193 | NNI = new ErrorNNI( N ); |
194 | Dangling = 1; | 194 | Dangling = 1; |
195 | } | 195 | } |
196 | } | 196 | } |
197 | } while( 1 ); | 197 | } while( 1 ); |
198 | 198 | ||
199 | Log(( "Profile number %s : %d nodes\n", | 199 | Log(( "Profile number %s : %d nodes\n", |
200 | Name.latin1(), count() )); | 200 | Name.latin1(), count() )); |
201 | } | 201 | } |
202 | 202 | ||
203 | NodeCollection::~NodeCollection( void ) { | 203 | NetworkSetup::~NetworkSetup( void ) { |
204 | } | 204 | } |
205 | 205 | ||
206 | const QString & NodeCollection::description( void ) { | 206 | const QString & NetworkSetup::description( void ) { |
207 | ANetNodeInstance * NNI = getToplevel(); | 207 | ANetNodeInstance * NNI = getToplevel(); |
208 | return (NNI) ? NNI->runtime()->description() : Name; | 208 | return (NNI) ? NNI->runtime()->description() : Name; |
209 | } | 209 | } |
210 | 210 | ||
211 | void NodeCollection::append( ANetNodeInstance * NNI ) { | 211 | void NetworkSetup::append( ANetNodeInstance * NNI ) { |
212 | NNI->setConnection( this ); | 212 | NNI->setNetworkSetup( this ); |
213 | QList<ANetNodeInstance>::append( NNI ); | 213 | QList<ANetNodeInstance>::append( NNI ); |
214 | } | 214 | } |
215 | 215 | ||
216 | void NodeCollection::save( QTextStream & TS ) { | 216 | void NetworkSetup::save( QTextStream & TS ) { |
217 | 217 | ||
218 | TS << "name=" << quote( Name ) << endl; | 218 | TS << "name=" << quote( Name ) << endl; |
219 | TS << "number=" << number() << endl; | 219 | TS << "number=" << number() << endl; |
220 | ANetNodeInstance * NNI; | 220 | ANetNodeInstance * NNI; |
221 | for( QListIterator<ANetNodeInstance> it(*this); | 221 | for( QListIterator<ANetNodeInstance> it(*this); |
222 | it.current(); | 222 | it.current(); |
223 | ++it ) { | 223 | ++it ) { |
224 | NNI = it.current(); | 224 | NNI = it.current(); |
225 | TS << "node=" << NNI->name() << endl; | 225 | TS << "node=" << NNI->name() << endl; |
226 | } | 226 | } |
227 | TS << endl; | 227 | TS << endl; |
228 | IsNew = 0; | 228 | IsNew = 0; |
229 | } | 229 | } |
230 | 230 | ||
231 | ANetNodeInstance * NodeCollection::getToplevel( void ) { | 231 | ANetNodeInstance * NetworkSetup::getToplevel( void ) { |
232 | ANetNodeInstance * NNI = 0; | 232 | ANetNodeInstance * NNI = 0; |
233 | for( QListIterator<ANetNodeInstance> it(*this); | 233 | for( QListIterator<ANetNodeInstance> it(*this); |
234 | it.current(); | 234 | it.current(); |
235 | ++it ) { | 235 | ++it ) { |
236 | NNI = it.current(); | 236 | NNI = it.current(); |
237 | if( NNI->nodeClass()->isToplevel() ) { | 237 | if( NNI->nodeClass()->isToplevel() ) { |
238 | return NNI; | 238 | return NNI; |
239 | } | 239 | } |
240 | } | 240 | } |
241 | return 0; | 241 | return 0; |
242 | } | 242 | } |
243 | 243 | ||
244 | ANetNodeInstance * NodeCollection::findByName( const QString & S ) { | 244 | ANetNodeInstance * NetworkSetup::findByName( const QString & S ) { |
245 | ANetNodeInstance * NNI = 0; | 245 | ANetNodeInstance * NNI = 0; |
246 | for( QListIterator<ANetNodeInstance> it(*this); | 246 | for( QListIterator<ANetNodeInstance> it(*this); |
247 | it.current(); | 247 | it.current(); |
248 | ++it ) { | 248 | ++it ) { |
249 | NNI = it.current(); | 249 | NNI = it.current(); |
250 | if( NNI->name() == S ) { | 250 | if( NNI->name() == S ) { |
251 | return NNI; | 251 | return NNI; |
252 | } | 252 | } |
253 | } | 253 | } |
254 | return 0; | 254 | return 0; |
255 | } | 255 | } |
256 | 256 | ||
257 | ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) { | 257 | ANetNodeInstance * NetworkSetup::findNext( ANetNodeInstance * NNI ) { |
258 | ANetNodeInstance * NNNI; | 258 | ANetNodeInstance * NNNI; |
259 | 259 | ||
260 | if( ! NNI ) | 260 | if( ! NNI ) |
261 | getToplevel(); | 261 | getToplevel(); |
262 | 262 | ||
263 | for( QListIterator<ANetNodeInstance> it(*this); | 263 | for( QListIterator<ANetNodeInstance> it(*this); |
264 | it.current(); | 264 | it.current(); |
265 | ++it ) { | 265 | ++it ) { |
266 | NNNI = it.current(); | 266 | NNNI = it.current(); |
267 | if( NNNI == NNI ) { | 267 | if( NNNI == NNI ) { |
268 | ++it; | 268 | ++it; |
269 | return it.current(); | 269 | return it.current(); |
270 | } | 270 | } |
271 | } | 271 | } |
272 | return 0; // no more next | 272 | return 0; // no more next |
273 | } | 273 | } |
274 | 274 | ||
275 | int NodeCollection::compareItems( QCollection::Item I1, | 275 | int NetworkSetup::compareItems( QCollection::Item I1, |
276 | QCollection::Item I2 ) { | 276 | QCollection::Item I2 ) { |
277 | ANetNodeInstance * NNI1, * NNI2; | 277 | ANetNodeInstance * NNI1, * NNI2; |
278 | NNI1 = (ANetNodeInstance *)I1; | 278 | NNI1 = (ANetNodeInstance *)I1; |
279 | NNI2 = (ANetNodeInstance *)I2; | 279 | NNI2 = (ANetNodeInstance *)I2; |
280 | return strcmp( NNI1->name(), NNI2->name() ); | 280 | return strcmp( NNI1->name(), NNI2->name() ); |
281 | } | 281 | } |
282 | 282 | ||
283 | static char * State2PixmapTbl[] = { | 283 | static char * State2PixmapTbl[] = { |
284 | "NULL", // Unchecked : no pixmap | 284 | "NULL", // Unchecked : no pixmap |
285 | "check", // Unknown | 285 | "check", // Unknown |
286 | "delete", // unavailable | 286 | "delete", // unavailable |
287 | "disabled", // disabled | 287 | "disabled", // disabled |
288 | "off", // off | 288 | "off", // off |
289 | "disconnected", // available | 289 | "disconnected", // available |
290 | "connected" // up | 290 | "connected" // up |
291 | }; | 291 | }; |
292 | 292 | ||
293 | QPixmap NodeCollection::devicePixmap( void ) { | 293 | QPixmap NetworkSetup::devicePixmap( void ) { |
294 | QPixmap pm = NSResources->getPixmap( | 294 | QPixmap pm = NSResources->getPixmap( |
295 | getToplevel()->nextNode()->pixmapName()+"-large"); | 295 | getToplevel()->nextNode()->pixmapName()+"-large"); |
296 | 296 | ||
297 | QPixmap Mini = NSResources->getPixmap( | 297 | QPixmap Mini = NSResources->getPixmap( |
298 | device()->netNode()->pixmapName() ); | 298 | device()->netNode()->pixmapName() ); |
299 | 299 | ||
300 | if( pm.isNull() || Mini.isNull() ) | 300 | if( pm.isNull() || Mini.isNull() ) |
301 | return Resource::loadPixmap("Unknown"); | 301 | return Resource::loadPixmap("Unknown"); |
302 | 302 | ||
303 | QPainter painter( &pm ); | 303 | QPainter painter( &pm ); |
304 | painter.drawPixmap( pm.width()-Mini.width(), | 304 | painter.drawPixmap( pm.width()-Mini.width(), |
305 | pm.height()-Mini.height(), | 305 | pm.height()-Mini.height(), |
306 | Mini ); | 306 | Mini ); |
307 | pm.setMask( pm.createHeuristicMask( TRUE ) ); | 307 | pm.setMask( pm.createHeuristicMask( TRUE ) ); |
308 | return pm; | 308 | return pm; |
309 | } | 309 | } |
310 | 310 | ||
311 | QPixmap NodeCollection::statePixmap( State_t S) { | 311 | QPixmap NetworkSetup::statePixmap( State_t S) { |
312 | return NSResources->getPixmap( State2PixmapTbl[S] ); | 312 | return NSResources->getPixmap( State2PixmapTbl[S] ); |
313 | } | 313 | } |
314 | 314 | ||
315 | QString NodeCollection::stateName( State_t S) { | 315 | QString NetworkSetup::stateName( State_t S) { |
316 | switch( S ) { | 316 | switch( S ) { |
317 | case Unknown : | 317 | case Unknown : |
318 | return qApp->translate( "networksettings2", "Unknown"); | 318 | return qApp->translate( "networksettings2", "Unknown"); |
319 | case Unavailable : | 319 | case Unavailable : |
320 | return qApp->translate( "networksettings2", "Unavailable"); | 320 | return qApp->translate( "networksettings2", "Unavailable"); |
321 | case Disabled : | 321 | case Disabled : |
322 | return qApp->translate( "networksettings2", "Disabled"); | 322 | return qApp->translate( "networksettings2", "Disabled"); |
323 | case Off : | 323 | case Off : |
324 | return qApp->translate( "networksettings2", "Inactive"); | 324 | return qApp->translate( "networksettings2", "Inactive"); |
325 | case Available : | 325 | case Available : |
326 | return qApp->translate( "networksettings2", "Available"); | 326 | return qApp->translate( "networksettings2", "Available"); |
327 | case IsUp : | 327 | case IsUp : |
328 | return qApp->translate( "networksettings2", "Up"); | 328 | return qApp->translate( "networksettings2", "Up"); |
329 | case Unchecked : /* FT */ | 329 | case Unchecked : /* FT */ |
330 | default : | 330 | default : |
331 | break; | 331 | break; |
332 | } | 332 | } |
333 | return QString(""); | 333 | return QString(""); |
334 | } | 334 | } |
335 | 335 | ||
336 | void NodeCollection::reassign( void ) { | 336 | void NetworkSetup::reassign( void ) { |
337 | for( QListIterator<ANetNodeInstance> it(*this); | 337 | for( QListIterator<ANetNodeInstance> it(*this); |
338 | it.current(); | 338 | it.current(); |
339 | ++it ) { | 339 | ++it ) { |
340 | it.current()->setConnection( this ); | 340 | it.current()->setNetworkSetup( this ); |
341 | } | 341 | } |
342 | } | 342 | } |
343 | 343 | ||
344 | const QStringList & NodeCollection::triggers() { | 344 | const QStringList & NetworkSetup::triggers() { |
345 | return getToplevel()->runtime()->triggers(); | 345 | return getToplevel()->runtime()->triggers(); |
346 | } | 346 | } |
347 | 347 | ||
348 | bool NodeCollection::hasDataForFile( SystemFile & S ) { | 348 | bool NetworkSetup::hasDataForFile( SystemFile & S ) { |
349 | return ( firstWithDataForFile( S ) != 0 ); | 349 | return ( firstWithDataForFile( S ) != 0 ); |
350 | } | 350 | } |
351 | 351 | ||
352 | ANetNodeInstance * NodeCollection::firstWithDataForFile( SystemFile & S ) { | 352 | ANetNodeInstance * NetworkSetup::firstWithDataForFile( SystemFile & S ) { |
353 | for( QListIterator<ANetNodeInstance> it(*this); | 353 | for( QListIterator<ANetNodeInstance> it(*this); |
354 | it.current(); | 354 | it.current(); |
355 | ++it ) { | 355 | ++it ) { |
356 | if( it.current()->hasDataForFile( S ) ) { | 356 | if( it.current()->hasDataForFile( S ) ) { |
357 | return it.current(); | 357 | return it.current(); |
358 | } | 358 | } |
359 | } | 359 | } |
360 | return 0; | 360 | return 0; |
361 | } | 361 | } |
362 | 362 | ||
363 | State_t NodeCollection::state( bool Update ) { | 363 | State_t NetworkSetup::state( bool Update ) { |
364 | State_t NodeState; | 364 | State_t NodeState; |
365 | 365 | ||
366 | if( CurrentState == Unchecked || Update ) { | 366 | if( CurrentState == Unchecked || Update ) { |
367 | // collect states of all nodes until with get the 'higest' | 367 | // collect states of all nodes until with get the 'higest' |
368 | // state possible | 368 | // state possible |
369 | 369 | ||
370 | Log(( "Connection %s state %s\n", | 370 | Log(( "NetworkSetup %s state %s\n", |
371 | Name.latin1(), StateName[CurrentState] )); | 371 | Name.latin1(), StateName[CurrentState] )); |
372 | 372 | ||
373 | CurrentState = Unknown; | 373 | CurrentState = Unknown; |
374 | for( QListIterator<ANetNodeInstance> it(*this); | 374 | for( QListIterator<ANetNodeInstance> it(*this); |
375 | it.current(); | 375 | it.current(); |
376 | ++it ) { | 376 | ++it ) { |
377 | Log(( "-> Detect %s\n", it.current()->name() )); | 377 | Log(( "-> Detect %s\n", it.current()->name() )); |
378 | NodeState = it.current()->runtime()->detectState(); | 378 | NodeState = it.current()->runtime()->detectState(); |
379 | Log(( " state %s\n", StateName[NodeState] )); | 379 | Log(( " state %s\n", StateName[NodeState] )); |
380 | 380 | ||
381 | if( NodeState == Disabled || | 381 | if( NodeState == Disabled || |
382 | NodeState == IsUp ) { | 382 | NodeState == IsUp ) { |
383 | // max | 383 | // max |
384 | CurrentState = NodeState; | 384 | CurrentState = NodeState; |
385 | break; | 385 | break; |
386 | } | 386 | } |
387 | 387 | ||
388 | if( NodeState > CurrentState ) { | 388 | if( NodeState > CurrentState ) { |
389 | // higher | 389 | // higher |
390 | CurrentState = NodeState; | 390 | CurrentState = NodeState; |
391 | } | 391 | } |
392 | } | 392 | } |
393 | } | 393 | } |
394 | 394 | ||
395 | return CurrentState; | 395 | return CurrentState; |
396 | } | 396 | } |
397 | 397 | ||
398 | QString NodeCollection::setState( Action_t A, bool Force ) { | 398 | QString NetworkSetup::setState( Action_t A, bool Force ) { |
399 | 399 | ||
400 | QString msg; | 400 | QString msg; |
401 | Action_t Actions[10]; | 401 | Action_t Actions[10]; |
402 | int NoOfActions = 0; | 402 | int NoOfActions = 0; |
403 | 403 | ||
404 | // get current state | 404 | // get current state |
405 | state( Force ); | 405 | state( Force ); |
406 | 406 | ||
407 | switch( A ) { | 407 | switch( A ) { |
408 | case Disable : | 408 | case Disable : |
409 | if( CurrentState < Disabled ) { | 409 | if( CurrentState < Disabled ) { |
410 | // disabled | 410 | // disabled |
411 | CurrentState = Disabled; | 411 | CurrentState = Disabled; |
412 | return QString(); | 412 | return QString(); |
413 | } | 413 | } |
414 | 414 | ||
415 | if( CurrentState == IsUp ) { | 415 | if( CurrentState == IsUp ) { |
416 | Actions[NoOfActions++] = Down; | 416 | Actions[NoOfActions++] = Down; |
417 | Actions[NoOfActions++] = Deactivate; | 417 | Actions[NoOfActions++] = Deactivate; |
418 | } else if( CurrentState == Available ) { | 418 | } else if( CurrentState == Available ) { |
419 | Actions[NoOfActions++] = Deactivate; | 419 | Actions[NoOfActions++] = Deactivate; |
420 | } | 420 | } |
421 | Actions[NoOfActions++] = Disable; | 421 | Actions[NoOfActions++] = Disable; |
422 | break; | 422 | break; |
423 | case Enable : | 423 | case Enable : |
424 | // always possible -> detected state is new state | 424 | // always possible -> detected state is new state |
425 | Actions[NoOfActions++] = Enable; | 425 | Actions[NoOfActions++] = Enable; |
426 | break; | 426 | break; |
427 | case Activate : | 427 | case Activate : |
428 | if( ! Force ) { | 428 | if( ! Force ) { |
429 | if( CurrentState >= Available ) { | 429 | if( CurrentState >= Available ) { |
430 | // already available | 430 | // already available |
431 | return QString(); | 431 | return QString(); |
432 | } | 432 | } |
433 | 433 | ||
434 | if( CurrentState != Off ) { | 434 | if( CurrentState != Off ) { |
435 | return qApp->translate( "System", | 435 | return qApp->translate( "System", |
436 | "State should be off" ); | 436 | "State should be off" ); |
437 | } | 437 | } |
438 | } | 438 | } |
439 | 439 | ||
440 | Actions[NoOfActions++] = Activate; | 440 | Actions[NoOfActions++] = Activate; |
441 | break; | 441 | break; |
442 | case Deactivate : | 442 | case Deactivate : |
443 | if( ! Force ) { | 443 | if( ! Force ) { |
444 | if( CurrentState < Off ) { | 444 | if( CurrentState < Off ) { |
445 | // already inactive | 445 | // already inactive |
446 | return QString(); | 446 | return QString(); |
447 | } | 447 | } |
448 | } | 448 | } |
449 | 449 | ||
450 | if( CurrentState == IsUp ) { | 450 | if( CurrentState == IsUp ) { |
451 | Actions[NoOfActions++] = Down; | 451 | Actions[NoOfActions++] = Down; |
452 | } | 452 | } |
453 | Actions[NoOfActions++] = Deactivate; | 453 | Actions[NoOfActions++] = Deactivate; |
454 | break; | 454 | break; |
455 | case Up : | 455 | case Up : |
456 | if( ! Force ) { | 456 | if( ! Force ) { |
457 | if( CurrentState == IsUp ) { | 457 | if( CurrentState == IsUp ) { |
458 | return QString(); | 458 | return QString(); |
459 | } | 459 | } |
460 | if( CurrentState < Off ) { | 460 | if( CurrentState < Off ) { |
461 | return qApp->translate( "System", | 461 | return qApp->translate( "System", |
462 | "State should at least be off" ); | 462 | "State should at least be off" ); |
463 | } | 463 | } |
464 | } | 464 | } |
465 | if( CurrentState == Off ) { | 465 | if( CurrentState == Off ) { |
466 | Actions[NoOfActions++] = Activate; | 466 | Actions[NoOfActions++] = Activate; |
467 | } | 467 | } |
468 | Actions[NoOfActions++] = Up; | 468 | Actions[NoOfActions++] = Up; |
469 | break; | 469 | break; |
470 | case Down : | 470 | case Down : |
471 | if( ! Force ) { | 471 | if( ! Force ) { |
472 | if( CurrentState < Available ) { | 472 | if( CurrentState < Available ) { |
473 | // OK | 473 | // OK |
474 | return QString(); | 474 | return QString(); |
475 | } | 475 | } |
476 | } | 476 | } |
477 | Actions[NoOfActions++] = Down; | 477 | Actions[NoOfActions++] = Down; |
478 | break; | 478 | break; |
479 | } | 479 | } |
480 | 480 | ||
481 | // send actions to all nodes | 481 | // send actions to all nodes |
482 | Log(( "Action %s requires %d steps\n", | 482 | Log(( "Action %s requires %d steps\n", |
483 | ActionName[A], NoOfActions )); | 483 | ActionName[A], NoOfActions )); |
484 | 484 | ||
485 | for( int i = 0 ; i < NoOfActions; i ++ ) { | 485 | for( int i = 0 ; i < NoOfActions; i ++ ) { |
486 | // setState recurses through the tree depth first | 486 | // setState recurses through the tree depth first |
487 | msg = getToplevel()->runtime()->setState( this, Actions[i], Force ); | 487 | msg = getToplevel()->runtime()->setState( this, Actions[i], Force ); |
488 | if( ! msg.isEmpty() ) { | 488 | if( ! msg.isEmpty() ) { |
489 | return msg; | 489 | return msg; |
490 | } | 490 | } |
491 | } | 491 | } |
492 | return QString(); | 492 | return QString(); |
493 | } | 493 | } |
494 | 494 | ||
495 | void NetworkSetup::copyFrom( const NetworkSetup & N ) { | ||
496 | Number = N.Number; | ||
497 | CurrentState = N.CurrentState; | ||
498 | Name = N.Name; | ||
499 | IsNew = N.IsNew; | ||
500 | Index = N.Index; | ||
501 | AssignedInterface = N.AssignedInterface; | ||
502 | } | ||
503 | |||
495 | // | 504 | // |
496 | // | 505 | // |
497 | // RuntimeInfo | 506 | // RuntimeInfo |
498 | // | 507 | // |
499 | // | 508 | // |
500 | 509 | ||
501 | QString RuntimeInfo::setState( NodeCollection * NC, | 510 | QString RuntimeInfo::setState( NetworkSetup * NC, |
502 | Action_t A, | 511 | Action_t A, |
503 | bool Force ) { | 512 | bool Force ) { |
504 | QString M; | 513 | QString M; |
505 | RuntimeInfo * Deeper = nextNode(); | 514 | RuntimeInfo * Deeper = nextNode(); |
506 | 515 | ||
507 | if( Deeper ) { | 516 | if( Deeper ) { |
508 | // first go deeper | 517 | // first go deeper |
509 | M = Deeper->setState( NC, A, Force ); | 518 | M = Deeper->setState( NC, A, Force ); |
510 | if( ! M.isEmpty() ) | 519 | if( ! M.isEmpty() ) |
511 | return M; | 520 | return M; |
512 | } | 521 | } |
513 | 522 | ||
514 | // set my own state | 523 | // set my own state |
515 | Log (( "-> Act upon %s\n", netNode()->name() )); | 524 | Log (( "-> Act upon %s\n", netNode()->name() )); |
516 | M = setMyState( NC, A, Force ); | 525 | M = setMyState( NC, A, Force ); |
517 | Log (( " result %s\n", M.latin1() )); | 526 | Log (( " result %s\n", M.latin1() )); |
518 | return M; | 527 | return M; |
519 | } | 528 | } |
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.h b/noncore/settings/networksettings2/networksettings2/netnode.h index 151d546..8aebdc0 100644 --- a/noncore/settings/networksettings2/networksettings2/netnode.h +++ b/noncore/settings/networksettings2/networksettings2/netnode.h | |||
@@ -1,638 +1,641 @@ | |||
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 <qstringlist.h> | 8 | #include <qstringlist.h> |
9 | #include <qobject.h> | 9 | #include <qobject.h> |
10 | #include <time.h> | 10 | #include <time.h> |
11 | 11 | ||
12 | #include <Utils.h> | 12 | #include <Utils.h> |
13 | #include <system.h> | 13 | #include <system.h> |
14 | 14 | ||
15 | // difference feature interfaces | 15 | // difference feature interfaces |
16 | class AsDevice; | 16 | class AsDevice; |
17 | class AsLine; | 17 | class AsLine; |
18 | class AsConnection; | 18 | class AsNetworkSetup; |
19 | class AsFullSetup; | 19 | class AsFullSetup; |
20 | 20 | ||
21 | // needed for plugin creation function | 21 | // needed for plugin creation function |
22 | #include <qlist.h> | 22 | #include <qlist.h> |
23 | 23 | ||
24 | class ANetNode; | 24 | class ANetNode; |
25 | class ANetNodeInstance; | 25 | class ANetNodeInstance; |
26 | class NodeCollection; | 26 | class NetworkSetup; |
27 | class QTextStream; | 27 | class QTextStream; |
28 | class RuntimeInfo; | 28 | class RuntimeInfo; |
29 | class InterfaceInfo; | 29 | class InterfaceInfo; |
30 | class NSResources; | 30 | class NSResources; |
31 | 31 | ||
32 | extern QString & deQuote( QString & X ); | 32 | extern QString & deQuote( QString & X ); |
33 | extern QString quote( QString X ); | 33 | extern QString quote( QString X ); |
34 | 34 | ||
35 | #include "systemfile.h" | 35 | #include "systemfile.h" |
36 | 36 | ||
37 | typedef enum State { | 37 | typedef enum State { |
38 | // if we have not yet detected the state of the device | 38 | // if we have not yet detected the state of the device |
39 | Unchecked = 0, | 39 | Unchecked = 0, |
40 | // if we cannot determine the state | 40 | // if we cannot determine the state |
41 | Unknown = 1, | 41 | Unknown = 1, |
42 | // if connection cannot be established e.g. because | 42 | // if networkSetup cannot be established e.g. because |
43 | // the hardware is not available | 43 | // the hardware is not available |
44 | Unavailable = 2, | 44 | Unavailable = 2, |
45 | // if the connection cannot be establishec but NOT | 45 | // if the networkSetup cannot be establishec but NOT |
46 | // because it is physically impossible but because | 46 | // because it is physically impossible but because |
47 | // it has been disabled for FUNCTIONAL reasons | 47 | // it has been disabled for FUNCTIONAL reasons |
48 | Disabled = 3, | 48 | Disabled = 3, |
49 | // if connection is available to is currently down | 49 | // if networkSetup is available to is currently down |
50 | // i.e. the corresponding hardware is not activated | 50 | // i.e. the corresponding hardware is not activated |
51 | Off = 4, | 51 | Off = 4, |
52 | // if connection is available to be used (i.e. the | 52 | // if networkSetup is available to be used (i.e. the |
53 | // devices if fully ready to be used | 53 | // devices if fully ready to be used |
54 | Available = 5, | 54 | Available = 5, |
55 | // if connection is being used | 55 | // if networkSetup is being used |
56 | IsUp = 6 | 56 | IsUp = 6 |
57 | } State_t; | 57 | } State_t; |
58 | 58 | ||
59 | typedef enum Action { | 59 | typedef enum Action { |
60 | // to make the device unavailable functionally -> to disabled | 60 | // to make the device unavailable functionally -> to disabled |
61 | Disable = 0, | 61 | Disable = 0, |
62 | // to make the device available functionally -> to off | 62 | // to make the device available functionally -> to off |
63 | Enable = 1, | 63 | Enable = 1, |
64 | // bring the hardware up -> to Available | 64 | // bring the hardware up -> to Available |
65 | Activate = 2, | 65 | Activate = 2, |
66 | // bring the hardware down -> to off | 66 | // bring the hardware down -> to off |
67 | Deactivate = 3, | 67 | Deactivate = 3, |
68 | // bring the connection up -> to IsUp | 68 | // bring the networkSetup up -> to IsUp |
69 | Up = 4, | 69 | Up = 4, |
70 | // bring the connection down -> to Available | 70 | // bring the networkSetup down -> to Available |
71 | Down = 5 | 71 | Down = 5 |
72 | } Action_t; | 72 | } Action_t; |
73 | 73 | ||
74 | class ANetNode : public QObject { | 74 | class ANetNode : public QObject { |
75 | 75 | ||
76 | public: | 76 | public: |
77 | 77 | ||
78 | typedef QArray<ANetNode *> NetNodeList; | 78 | typedef QArray<ANetNode *> NetNodeList; |
79 | 79 | ||
80 | ANetNode( const char * Name ) : QObject( 0, Name ) {} | 80 | ANetNode( const char * Name ) : QObject( 0, Name ) {} |
81 | virtual ~ANetNode(){}; | 81 | virtual ~ANetNode(){}; |
82 | 82 | ||
83 | // | 83 | // |
84 | // | 84 | // |
85 | // standard methods with sensible default | 85 | // standard methods with sensible default |
86 | // | 86 | // |
87 | // | 87 | // |
88 | 88 | ||
89 | inline int done( void ) | 89 | inline int done( void ) |
90 | { return Done; } | 90 | { return Done; } |
91 | inline void setDone( int D ) | 91 | inline void setDone( int D ) |
92 | { Done = D; } | 92 | { Done = D; } |
93 | 93 | ||
94 | // does this Node provide a Connection | 94 | // does this Node provide a NetworkSetup |
95 | bool isToplevel( void ); | 95 | bool isToplevel( void ); |
96 | 96 | ||
97 | // set the value of an attribute | 97 | // set the value of an attribute |
98 | void setAttribute( QString & Attr, QString & Value ) ; | 98 | void setAttribute( QString & Attr, QString & Value ) ; |
99 | void saveAttributes( QTextStream & TS ) ; | 99 | void saveAttributes( QTextStream & TS ) ; |
100 | 100 | ||
101 | // compiled references to 'needed' NetNodes -> needs list | 101 | // compiled references to 'needed' NetNodes -> needs list |
102 | inline void setAlternatives( NetNodeList * Alt ) | 102 | inline void setAlternatives( NetNodeList * Alt ) |
103 | { Alternatives = Alt; } | 103 | { Alternatives = Alt; } |
104 | inline NetNodeList & alternatives( void ) | 104 | inline NetNodeList & alternatives( void ) |
105 | { return *Alternatives; } | 105 | { return *Alternatives; } |
106 | 106 | ||
107 | // | 107 | // |
108 | // | 108 | // |
109 | // Virtual methods with sensible default | 109 | // Virtual methods with sensible default |
110 | // | 110 | // |
111 | // | 111 | // |
112 | 112 | ||
113 | // do instances of this noce class have data for this file | 113 | // do instances of this noce class have data for this file |
114 | virtual bool hasDataForFile( SystemFile & ) | 114 | virtual bool hasDataForFile( SystemFile & ) |
115 | { return 0; } | 115 | { return 0; } |
116 | 116 | ||
117 | // open proper file SF identified by S | 117 | // open proper file SF identified by S |
118 | // this method is called by NS2. | 118 | // this method is called by NS2. |
119 | // | 119 | // |
120 | // overrule this ONLY if this proper file is a common file | 120 | // overrule this ONLY if this proper file is a common file |
121 | // for all NNI of this node class and the data generated | 121 | // for all NNI of this node class and the data generated |
122 | // by each of the NNI needs to be put in one file | 122 | // by each of the NNI needs to be put in one file |
123 | // | 123 | // |
124 | // if this is the case the file should be (re)opened in append | 124 | // if this is the case the file should be (re)opened in append |
125 | // return 0 if file cannot be opened | 125 | // return 0 if file cannot be opened |
126 | virtual bool openFile( SystemFile &SF, | 126 | virtual bool openFile( SystemFile &SF, |
127 | ANetNodeInstance * NNI ); | 127 | ANetNodeInstance * NNI ); |
128 | 128 | ||
129 | // generate instance independent stuff | 129 | // generate instance independent stuff |
130 | // 0 : data output, 1 no data, 2 error | 130 | // 0 : data output, 1 no data, 2 error |
131 | virtual short generatePreamble( SystemFile & ) | 131 | virtual short generatePreamble( SystemFile & ) |
132 | { return 1; } | 132 | { return 1; } |
133 | 133 | ||
134 | // generate instance independent stuff | 134 | // generate instance independent stuff |
135 | // 0 : data output, 1 no data, 2 error | 135 | // 0 : data output, 1 no data, 2 error |
136 | virtual short generatePostamble( SystemFile & ) | 136 | virtual short generatePostamble( SystemFile & ) |
137 | { return 1; } | 137 | { return 1; } |
138 | 138 | ||
139 | // generate instance dependent but instance common stuff | 139 | // generate instance dependent but instance common stuff |
140 | // 0 : data output, 1 no data, 2 error | 140 | // 0 : data output, 1 no data, 2 error |
141 | virtual short generateFile( SystemFile &, | 141 | virtual short generateFile( SystemFile &, |
142 | ANetNodeInstance * , | 142 | ANetNodeInstance * , |
143 | long ) | 143 | long ) |
144 | { return 1; } | 144 | { return 1; } |
145 | 145 | ||
146 | // generate NIC name based on instance nr | 146 | // generate NIC name based on instance nr |
147 | // only relevant if node instances are devices | 147 | // only relevant if node instances are devices |
148 | virtual QString genNic( long ) | 148 | virtual QString genNic( long ) |
149 | { return QString(""); } | 149 | { return QString(""); } |
150 | 150 | ||
151 | // max number of instances for this node type | 151 | // max number of instances for this node type |
152 | // only relevant if node instances are devices | 152 | // only relevant if node instances are devices |
153 | virtual long instanceCount( void ) | 153 | virtual long instanceCount( void ) |
154 | { return 1; } | 154 | { return 1; } |
155 | 155 | ||
156 | // return ID list for each file generated specially for | 156 | // return ID list for each file generated specially for |
157 | // this node type | 157 | // this node type |
158 | virtual QStringList properFiles( void ) | 158 | virtual QStringList properFiles( void ) |
159 | { return QStringList(); } | 159 | { return QStringList(); } |
160 | 160 | ||
161 | // | 161 | // |
162 | // | 162 | // |
163 | // pure virtual methods with sensible default | 163 | // pure virtual methods with sensible default |
164 | // | 164 | // |
165 | // | 165 | // |
166 | 166 | ||
167 | // pixmap needed for this NetNode | 167 | // pixmap needed for this NetNode |
168 | virtual const QString pixmapName() = 0; | 168 | virtual const QString pixmapName() = 0; |
169 | 169 | ||
170 | // description for this NetNode | 170 | // description for this NetNode |
171 | virtual const QString nodeDescription() = 0; | 171 | virtual const QString nodeDescription() = 0; |
172 | 172 | ||
173 | // create a blank instance of a net node | 173 | // create a blank instance of a net node |
174 | virtual ANetNodeInstance * createInstance( void ) = 0; | 174 | virtual ANetNodeInstance * createInstance( void ) = 0; |
175 | 175 | ||
176 | // return features this NetNode provides | 176 | // return features this NetNode provides |
177 | virtual const char ** provides( void ) = 0; | 177 | virtual const char ** provides( void ) = 0; |
178 | 178 | ||
179 | // return features this NetNode needs | 179 | // return features this NetNode needs |
180 | virtual const char ** needs( void ) = 0; | 180 | virtual const char ** needs( void ) = 0; |
181 | 181 | ||
182 | protected : | 182 | protected : |
183 | 183 | ||
184 | NetNodeList * Alternatives; | 184 | NetNodeList * Alternatives; |
185 | 185 | ||
186 | private : | 186 | private : |
187 | 187 | ||
188 | virtual void setSpecificAttribute( QString & , QString & ) = 0; | 188 | virtual void setSpecificAttribute( QString & , QString & ) = 0; |
189 | virtual void saveSpecificAttribute( QTextStream & ) = 0; | 189 | virtual void saveSpecificAttribute( QTextStream & ) = 0; |
190 | int Done; | 190 | int Done; |
191 | 191 | ||
192 | }; | 192 | }; |
193 | 193 | ||
194 | class ANetNodeInstance : public QObject { | 194 | class ANetNodeInstance : public QObject { |
195 | 195 | ||
196 | public: | 196 | public: |
197 | 197 | ||
198 | ANetNodeInstance( ANetNode * NN ) : QObject() | 198 | ANetNodeInstance( ANetNode * NN ) : QObject() |
199 | { IsModified=0; NodeType = NN; IsNew = TRUE; } | 199 | { IsModified=0; NodeType = NN; IsNew = TRUE; } |
200 | virtual ~ANetNodeInstance( void ) { } | 200 | virtual ~ANetNodeInstance( void ) { } |
201 | 201 | ||
202 | inline int done( void ) | 202 | inline int done( void ) |
203 | { return Done; } | 203 | { return Done; } |
204 | inline void setDone( int D ) | 204 | inline void setDone( int D ) |
205 | { Done = D; } | 205 | { Done = D; } |
206 | 206 | ||
207 | // return data was modified | 207 | // return data was modified |
208 | inline void setModified( bool M ) | 208 | inline void setModified( bool M ) |
209 | { IsModified = M; } | 209 | { IsModified = M; } |
210 | inline bool isModified( void ) | 210 | inline bool isModified( void ) |
211 | { return IsModified; } | 211 | { return IsModified; } |
212 | 212 | ||
213 | // get next node | 213 | // get next node |
214 | ANetNodeInstance * nextNode(); | 214 | ANetNodeInstance * nextNode(); |
215 | // return NetNode this is an instance of | 215 | // return NetNode this is an instance of |
216 | ANetNode * nodeClass( void ) | 216 | ANetNode * nodeClass( void ) |
217 | { return NodeType; } | 217 | { return NodeType; } |
218 | 218 | ||
219 | // intialize am instance of a net node | 219 | // intialize am instance of a net node |
220 | void initialize( void ); | 220 | void initialize( void ); |
221 | 221 | ||
222 | // set the value of an attribute | 222 | // set the value of an attribute |
223 | void setAttribute( QString & Attr, QString & Value ) ; | 223 | void setAttribute( QString & Attr, QString & Value ) ; |
224 | void saveAttributes( QTextStream & TS ) ; | 224 | void saveAttributes( QTextStream & TS ) ; |
225 | 225 | ||
226 | // return true if node isntance is NEW and not loaded | 226 | // return true if node isntance is NEW and not loaded |
227 | inline void setNew( bool IsN ) | 227 | inline void setNew( bool IsN ) |
228 | { IsNew = IsN; } | 228 | { IsNew = IsN; } |
229 | inline bool isNew( void ) | 229 | inline bool isNew( void ) |
230 | { return IsNew; } | 230 | { return IsNew; } |
231 | 231 | ||
232 | // return description for this instance | 232 | // return description for this instance |
233 | inline QString & description( void ) | 233 | inline QString & description( void ) |
234 | { return Description; } | 234 | { return Description; } |
235 | inline void setDescription( const QString & S ) | 235 | inline void setDescription( const QString & S ) |
236 | { Description = S; } | 236 | { Description = S; } |
237 | 237 | ||
238 | // pixmap for this instance -> from NetNode | 238 | // pixmap for this instance -> from NetNode |
239 | inline const QString pixmapName( void ) | 239 | inline const QString pixmapName( void ) |
240 | { return NodeType->pixmapName(); } | 240 | { return NodeType->pixmapName(); } |
241 | 241 | ||
242 | inline const char ** provides( void ) | 242 | inline const char ** provides( void ) |
243 | { return NodeType->provides(); } | 243 | { return NodeType->provides(); } |
244 | 244 | ||
245 | inline const char ** needs( void ) | 245 | inline const char ** needs( void ) |
246 | { return NodeType->needs(); } | 246 | { return NodeType->needs(); } |
247 | 247 | ||
248 | inline void setConnection( NodeCollection * NC ) | 248 | inline void setNetworkSetup( NetworkSetup * NC ) |
249 | { Connection = NC; } | 249 | { TheNetworkSetup = NC; } |
250 | inline NodeCollection * connection( void ) | 250 | inline NetworkSetup * networkSetup( void ) |
251 | { return Connection; } | 251 | { return TheNetworkSetup; } |
252 | 252 | ||
253 | // | 253 | // |
254 | // | 254 | // |
255 | // Virtual methods with sensible defaults | 255 | // Virtual methods with sensible defaults |
256 | // | 256 | // |
257 | // | 257 | // |
258 | 258 | ||
259 | 259 | ||
260 | 260 | ||
261 | // open proper file identified by S | 261 | // open proper file identified by S |
262 | virtual bool openFile( SystemFile & ) | 262 | virtual bool openFile( SystemFile & ) |
263 | { return 0; } | 263 | { return 0; } |
264 | 264 | ||
265 | // check if this node (or sub nodes) have data for this file | 265 | // check if this node (or sub nodes) have data for this file |
266 | virtual bool hasDataForFile( SystemFile & S ) | 266 | virtual bool hasDataForFile( SystemFile & S ) |
267 | { return nodeClass()->hasDataForFile( S ); } | 267 | { return nodeClass()->hasDataForFile( S ); } |
268 | 268 | ||
269 | // generate code specific for this node but embedded | 269 | // generate code specific for this node but embedded |
270 | // in the section of the parent | 270 | // in the section of the parent |
271 | // this is called within the code of the parent | 271 | // this is called within the code of the parent |
272 | virtual short generateFileEmbedded( SystemFile & SF, | 272 | virtual short generateFileEmbedded( SystemFile & SF, |
273 | long DevNr ) | 273 | long DevNr ) |
274 | { ANetNodeInstance * NNI = nextNode(); | 274 | { ANetNodeInstance * NNI = nextNode(); |
275 | return (NNI) ? NNI->generateFileEmbedded( SF, DevNr ) : 1; | 275 | return (NNI) ? NNI->generateFileEmbedded( SF, DevNr ) : 1; |
276 | } | 276 | } |
277 | 277 | ||
278 | // generate code specific for this node | 278 | // generate code specific for this node |
279 | // (or find the first node that does) | 279 | // (or find the first node that does) |
280 | virtual short generateFile( SystemFile & SF, | 280 | virtual short generateFile( SystemFile & SF, |
281 | long DevNr ) | 281 | long DevNr ) |
282 | { ANetNodeInstance * NNI = nextNode(); | 282 | { ANetNodeInstance * NNI = nextNode(); |
283 | return (NNI) ? NNI->generateFile( SF, DevNr ) : 1; | 283 | return (NNI) ? NNI->generateFile( SF, DevNr ) : 1; |
284 | } | 284 | } |
285 | 285 | ||
286 | // return true if this node instance is triggered by this trigger | 286 | // return true if this node instance is triggered by this trigger |
287 | // could be delegated to deeper instances | 287 | // could be delegated to deeper instances |
288 | virtual bool triggeredBy( const QString & ) | 288 | virtual bool triggeredBy( const QString & ) |
289 | { return 0; } | 289 | { return 0; } |
290 | 290 | ||
291 | // | 291 | // |
292 | // | 292 | // |
293 | // Pure virtual functions | 293 | // Pure virtual functions |
294 | // | 294 | // |
295 | // | 295 | // |
296 | 296 | ||
297 | // return runtime information for this node | 297 | // return runtime information for this node |
298 | virtual RuntimeInfo * runtime( void ) = 0; | 298 | virtual RuntimeInfo * runtime( void ) = 0; |
299 | 299 | ||
300 | // create edit widget under parent | 300 | // create edit widget under parent |
301 | virtual QWidget * edit( QWidget * parent ) = 0; | 301 | virtual QWidget * edit( QWidget * parent ) = 0; |
302 | 302 | ||
303 | // is given data acceptable | 303 | // is given data acceptable |
304 | virtual QString acceptable( void ) = 0; | 304 | virtual QString acceptable( void ) = 0; |
305 | 305 | ||
306 | // get data from GUI and store in node | 306 | // get data from GUI and store in node |
307 | virtual void commit( void ) = 0; | 307 | virtual void commit( void ) = 0; |
308 | 308 | ||
309 | // returns node specific data -> only useful for 'buddy' | 309 | // returns node specific data -> only useful for 'buddy' |
310 | virtual void * data( void ) = 0; | 310 | virtual void * data( void ) = 0; |
311 | 311 | ||
312 | protected : | 312 | protected : |
313 | 313 | ||
314 | virtual void setSpecificAttribute( QString & , QString & ) = 0; | 314 | virtual void setSpecificAttribute( QString & , QString & ) = 0; |
315 | virtual void saveSpecificAttribute( QTextStream & ) = 0; | 315 | virtual void saveSpecificAttribute( QTextStream & ) = 0; |
316 | 316 | ||
317 | ANetNode * NodeType; | 317 | ANetNode * NodeType; |
318 | // connection to which this node belongs to | 318 | // networkSetup to which this node belongs to |
319 | NodeCollection * Connection; | 319 | NetworkSetup * TheNetworkSetup; |
320 | QString Description; | 320 | QString Description; |
321 | bool IsModified; | 321 | bool IsModified; |
322 | // true if this nodeinstance was just created (and not | 322 | // true if this nodeinstance was just created (and not |
323 | // loaded from file | 323 | // loaded from file |
324 | bool IsNew; | 324 | bool IsNew; |
325 | int Done; | 325 | int Done; |
326 | 326 | ||
327 | static long InstanceCounter; | 327 | static long InstanceCounter; |
328 | }; | 328 | }; |
329 | 329 | ||
330 | class ErrorNNI: public ANetNodeInstance { | 330 | class ErrorNNI: public ANetNodeInstance { |
331 | 331 | ||
332 | public: | 332 | public: |
333 | 333 | ||
334 | ErrorNNI( const QString & _Name ) : ANetNodeInstance( 0 ) { | 334 | ErrorNNI( const QString & _Name ) : ANetNodeInstance( 0 ) { |
335 | setName( _Name.latin1() ); | 335 | setName( _Name.latin1() ); |
336 | } | 336 | } |
337 | 337 | ||
338 | RuntimeInfo * runtime( void ) { | 338 | RuntimeInfo * runtime( void ) { |
339 | return 0; | 339 | return 0; |
340 | } | 340 | } |
341 | 341 | ||
342 | // create edit widget under parent | 342 | // create edit widget under parent |
343 | QWidget * edit( QWidget * parent ) { | 343 | QWidget * edit( QWidget * parent ) { |
344 | return 0; | 344 | return 0; |
345 | } | 345 | } |
346 | 346 | ||
347 | // is given data acceptable | 347 | // is given data acceptable |
348 | QString acceptable( void ) { | 348 | QString acceptable( void ) { |
349 | return QString(); | 349 | return QString(); |
350 | } | 350 | } |
351 | 351 | ||
352 | // get data from GUI and store in node | 352 | // get data from GUI and store in node |
353 | void commit( void ) { | 353 | void commit( void ) { |
354 | } | 354 | } |
355 | 355 | ||
356 | // returns node specific data -> only useful for 'buddy' | 356 | // returns node specific data -> only useful for 'buddy' |
357 | void * data( void ) { | 357 | void * data( void ) { |
358 | return 0; | 358 | return 0; |
359 | } | 359 | } |
360 | 360 | ||
361 | protected : | 361 | protected : |
362 | 362 | ||
363 | void setSpecificAttribute( QString & , QString & ) { | 363 | void setSpecificAttribute( QString & , QString & ) { |
364 | } | 364 | } |
365 | 365 | ||
366 | void saveSpecificAttribute( QTextStream & ) { | 366 | void saveSpecificAttribute( QTextStream & ) { |
367 | } | 367 | } |
368 | }; | 368 | }; |
369 | 369 | ||
370 | class RuntimeInfo : public QObject { | 370 | class RuntimeInfo : public QObject { |
371 | 371 | ||
372 | Q_OBJECT | 372 | Q_OBJECT |
373 | 373 | ||
374 | public : | 374 | public : |
375 | 375 | ||
376 | RuntimeInfo( ANetNodeInstance * TheNNI ) | 376 | RuntimeInfo( ANetNodeInstance * TheNNI ) |
377 | { NNI = TheNNI; } | 377 | { NNI = TheNNI; } |
378 | 378 | ||
379 | // | 379 | // |
380 | // | 380 | // |
381 | // methods to be overloaded by connection capable | 381 | // methods to be overloaded by networkSetup capable |
382 | // runtimes | 382 | // runtimes |
383 | // | 383 | // |
384 | // | 384 | // |
385 | 385 | ||
386 | 386 | ||
387 | // | 387 | // |
388 | // | 388 | // |
389 | // methods to be overloaded by device capable | 389 | // methods to be overloaded by device capable |
390 | // runtimes | 390 | // runtimes |
391 | // | 391 | // |
392 | // | 392 | // |
393 | 393 | ||
394 | // does this node handles this interface e.g.eth0 | 394 | // does this node handles this interface e.g.eth0 |
395 | // recurse deeper if this node cannot answer that question | 395 | // recurse deeper if this node cannot answer that question |
396 | virtual bool handlesInterface( const QString & S ) { | 396 | virtual bool handlesInterface( const QString & S ) { |
397 | RuntimeInfo * RI = device(); | 397 | RuntimeInfo * RI = device(); |
398 | if( RI ) { | 398 | if( RI ) { |
399 | return RI->handlesInterface( S ); | 399 | return RI->handlesInterface( S ); |
400 | } | 400 | } |
401 | return 0; | 401 | return 0; |
402 | } | 402 | } |
403 | bool handlesInterface( const InterfaceInfo & I ) { | 403 | bool handlesInterface( const InterfaceInfo & I ) { |
404 | RuntimeInfo * RI = device(); | 404 | RuntimeInfo * RI = device(); |
405 | if( RI ) { | 405 | if( RI ) { |
406 | return RI->handlesInterface( I ); | 406 | return RI->handlesInterface( I ); |
407 | } | 407 | } |
408 | return 0; | 408 | return 0; |
409 | } | 409 | } |
410 | 410 | ||
411 | // | 411 | // |
412 | // | 412 | // |
413 | // methods to be overloaded by full setup capable | 413 | // methods to be overloaded by full setup capable |
414 | // runtimes | 414 | // runtimes |
415 | // | 415 | // |
416 | // | 416 | // |
417 | 417 | ||
418 | // return description for this full setup | 418 | // return description for this full setup |
419 | virtual const QString & description( void ) { | 419 | virtual const QString & description( void ) { |
420 | return fullSetup()->description( ); | 420 | return fullSetup()->description( ); |
421 | } | 421 | } |
422 | // return triggers that should fire when this | 422 | // return triggers that should fire when this |
423 | // setup is brought up | 423 | // setup is brought up |
424 | virtual const QStringList & triggers( void ) { | 424 | virtual const QStringList & triggers( void ) { |
425 | return fullSetup()->triggers( ); | 425 | return fullSetup()->triggers( ); |
426 | } | 426 | } |
427 | 427 | ||
428 | // | 428 | // |
429 | // | 429 | // |
430 | // methods to be overloaded by line capable | 430 | // methods to be overloaded by line capable |
431 | // runtimes | 431 | // runtimes |
432 | // | 432 | // |
433 | // | 433 | // |
434 | 434 | ||
435 | // return the device file ('/dev/xxx') created | 435 | // return the device file ('/dev/xxx') created |
436 | // by this line capable runtime | 436 | // by this line capable runtime |
437 | virtual QString deviceFile( void ) { | 437 | virtual QString deviceFile( void ) { |
438 | RuntimeInfo * RI = line(); | 438 | RuntimeInfo * RI = line(); |
439 | if( RI ) { | 439 | if( RI ) { |
440 | return RI->deviceFile(); | 440 | return RI->deviceFile(); |
441 | } | 441 | } |
442 | return QString(); | 442 | return QString(); |
443 | } | 443 | } |
444 | 444 | ||
445 | // | 445 | // |
446 | // | 446 | // |
447 | // runtime interface | 447 | // runtime interface |
448 | // | 448 | // |
449 | // | 449 | // |
450 | 450 | ||
451 | // return the node that offers device capability | 451 | // return the node that offers device capability |
452 | virtual RuntimeInfo * device( void ) | 452 | virtual RuntimeInfo * device( void ) |
453 | { RuntimeInfo * RI = nextNode(); | 453 | { RuntimeInfo * RI = nextNode(); |
454 | return (RI) ? RI->device() : 0; | 454 | return (RI) ? RI->device() : 0; |
455 | } | 455 | } |
456 | 456 | ||
457 | // return the node that offers connection capability | 457 | // return the node that offers connection capability |
458 | virtual RuntimeInfo * connection( void ) | 458 | virtual RuntimeInfo * connection( void ) |
459 | { RuntimeInfo * RI = nextNode(); | 459 | { RuntimeInfo * RI = nextNode(); |
460 | return (RI) ? RI->connection() : 0; | 460 | return (RI) ? RI->connection() : 0; |
461 | } | 461 | } |
462 | 462 | ||
463 | // return the node that offers line capability | 463 | // return the node that offers line capability |
464 | virtual RuntimeInfo * line( void ) | 464 | virtual RuntimeInfo * line( void ) |
465 | { RuntimeInfo * RI = nextNode(); | 465 | { RuntimeInfo * RI = nextNode(); |
466 | return (RI) ? RI->line() : 0; | 466 | return (RI) ? RI->line() : 0; |
467 | } | 467 | } |
468 | 468 | ||
469 | // return the node that offers full setup capability | 469 | // return the node that offers full setup capability |
470 | virtual RuntimeInfo * fullSetup( void ) | 470 | virtual RuntimeInfo * fullSetup( void ) |
471 | { RuntimeInfo * RI = nextNode(); | 471 | { RuntimeInfo * RI = nextNode(); |
472 | return (RI) ? RI->fullSetup() : 0; | 472 | return (RI) ? RI->fullSetup() : 0; |
473 | } | 473 | } |
474 | 474 | ||
475 | inline ANetNodeInstance * netNode() | 475 | inline ANetNodeInstance * netNode() |
476 | { return NNI; } | 476 | { return NNI; } |
477 | 477 | ||
478 | inline NodeCollection * nodeCollection() | 478 | inline NetworkSetup * networkSetup() |
479 | { return NNI->connection(); } | 479 | { return NNI->networkSetup(); } |
480 | 480 | ||
481 | virtual State_t detectState( void ) = 0; | 481 | virtual State_t detectState( void ) = 0; |
482 | // public API to set the state | 482 | // public API to set the state |
483 | virtual QString setState( NodeCollection * NC, | 483 | virtual QString setState( NetworkSetup * NC, |
484 | Action_t A, | 484 | Action_t A, |
485 | bool Force = 0 ); | 485 | bool Force = 0 ); |
486 | 486 | ||
487 | inline RuntimeInfo * nextNode( void ) { | 487 | inline RuntimeInfo * nextNode( void ) { |
488 | ANetNodeInstance * NNI = netNode()->nextNode(); | 488 | ANetNodeInstance * NNI = netNode()->nextNode(); |
489 | return (NNI) ? NNI->runtime() : 0; | 489 | return (NNI) ? NNI->runtime() : 0; |
490 | } | 490 | } |
491 | 491 | ||
492 | signals : | 492 | signals : |
493 | 493 | ||
494 | // sent by device if state changes | 494 | // sent by device if state changes |
495 | void stateChanged( State_t S, ANetNodeInstance * NNI ); | 495 | void stateChanged( State_t S, ANetNodeInstance * NNI ); |
496 | 496 | ||
497 | protected : | 497 | protected : |
498 | 498 | ||
499 | // set state of this node (private API) | 499 | // set state of this node (private API) |
500 | virtual QString setMyState( NodeCollection * NC, | 500 | virtual QString setMyState( NetworkSetup * NC, |
501 | Action_t A, | 501 | Action_t A, |
502 | bool Force = 0 ) = 0; | 502 | bool Force = 0 ) = 0; |
503 | 503 | ||
504 | // connection this runtime info belongs to | 504 | // networkSetup this runtime info belongs to |
505 | ANetNodeInstance * NNI; | 505 | ANetNodeInstance * NNI; |
506 | }; | 506 | }; |
507 | 507 | ||
508 | class NodeCollection : public QList<ANetNodeInstance> { | 508 | class NetworkSetup : public QList<ANetNodeInstance> { |
509 | 509 | ||
510 | public : | 510 | public : |
511 | 511 | ||
512 | NodeCollection( void ); | 512 | NetworkSetup( void ); |
513 | NodeCollection( QTextStream & TS, bool & Dangling ); | 513 | NetworkSetup( QTextStream & TS, bool & Dangling ); |
514 | ~NodeCollection( void ); | 514 | ~NetworkSetup( void ); |
515 | |||
516 | // copy settings from NC to this | ||
517 | void copyFrom( const NetworkSetup & NC ); | ||
515 | 518 | ||
516 | inline int done( void ) | 519 | inline int done( void ) |
517 | { return Done; } | 520 | { return Done; } |
518 | inline void setDone( int D ) | 521 | inline void setDone( int D ) |
519 | { Done = D; } | 522 | { Done = D; } |
520 | 523 | ||
521 | inline int number( void ) | 524 | inline int number( void ) |
522 | { return Number; } | 525 | { return Number; } |
523 | inline void setNumber( int i ) | 526 | inline void setNumber( int i ) |
524 | { Number = i; } | 527 | { Number = i; } |
525 | inline bool isNew( void ) | 528 | inline bool isNew( void ) |
526 | { return IsNew; } | 529 | { return IsNew; } |
527 | inline void setNew( bool N ) | 530 | inline void setNew( bool N ) |
528 | { IsNew = N ; } | 531 | { IsNew = N ; } |
529 | inline bool isModified( void ) | 532 | inline bool isModified( void ) |
530 | { return IsModified; } | 533 | { return IsModified; } |
531 | inline void setModified( bool N ) | 534 | inline void setModified( bool N ) |
532 | { IsModified = N ; } | 535 | { IsModified = N ; } |
533 | 536 | ||
534 | inline bool handlesInterface( const QString & S ) { | 537 | inline bool handlesInterface( const QString & S ) { |
535 | return getToplevel()->runtime()->handlesInterface( S ); | 538 | return getToplevel()->runtime()->handlesInterface( S ); |
536 | } | 539 | } |
537 | 540 | ||
538 | // return the interface in the OS that is assigned to | 541 | // return the interface in the OS that is assigned to |
539 | // this device | 542 | // this device |
540 | inline InterfaceInfo * assignedInterface( void ) { | 543 | inline InterfaceInfo * assignedInterface( void ) { |
541 | return AssignedInterface; | 544 | return AssignedInterface; |
542 | } | 545 | } |
543 | 546 | ||
544 | // assign the interface to this device | 547 | // assign the interface to this device |
545 | inline void assignInterface( InterfaceInfo * NI ) { | 548 | inline void assignInterface( InterfaceInfo * NI ) { |
546 | if( NI == 0 ) { | 549 | // cleanup previous |
547 | if( AssignedInterface ) { | ||
548 | AssignedInterface->assignConnection( 0 ); | ||
549 | } | ||
550 | } | ||
551 | AssignedInterface = NI; | ||
552 | if( AssignedInterface ) { | 550 | if( AssignedInterface ) { |
553 | AssignedInterface->assignConnection( this ); | 551 | AssignedInterface->assignToNetworkSetup( 0 ); |
554 | } | 552 | } |
553 | if( NI ) { | ||
554 | // assign new | ||
555 | NI->assignToNetworkSetup( this ); | ||
556 | } | ||
557 | AssignedInterface = NI; | ||
555 | } | 558 | } |
556 | 559 | ||
557 | inline RuntimeInfo * device() { | 560 | inline RuntimeInfo * device() { |
558 | return getToplevel()->runtime()->device(); | 561 | return getToplevel()->runtime()->device(); |
559 | } | 562 | } |
560 | 563 | ||
561 | const QStringList & triggers(); | 564 | const QStringList & triggers(); |
562 | 565 | ||
563 | State_t state( bool Update = 0 ); | 566 | State_t state( bool Update = 0 ); |
564 | 567 | ||
565 | // get the ixmap for this device | 568 | // get the ixmap for this device |
566 | QPixmap devicePixmap( void ); | 569 | QPixmap devicePixmap( void ); |
567 | QPixmap statePixmap( State_t S ); | 570 | QPixmap statePixmap( State_t S ); |
568 | inline QPixmap statePixmap( bool Update = 0 ) | 571 | inline QPixmap statePixmap( bool Update = 0 ) |
569 | { return statePixmap( state(Update) ); } | 572 | { return statePixmap( state(Update) ); } |
570 | QString stateName( State_t ); | 573 | QString stateName( State_t ); |
571 | inline QString stateName( bool Update = 0 ) | 574 | inline QString stateName( bool Update = 0 ) |
572 | { return stateName( state(Update) ); } | 575 | { return stateName( state(Update) ); } |
573 | 576 | ||
574 | QString setState( Action_t A, bool Force = 0 ); | 577 | QString setState( Action_t A, bool Force = 0 ); |
575 | 578 | ||
576 | void save( QTextStream & TS ); | 579 | void save( QTextStream & TS ); |
577 | 580 | ||
578 | void append( ANetNodeInstance * NNI ); | 581 | void append( ANetNodeInstance * NNI ); |
579 | 582 | ||
580 | // makes sure that all items in the connection point to | 583 | // makes sure that all items in the networkSetup point to |
581 | // that connectoin | 584 | // that connectoin |
582 | void reassign( void ); | 585 | void reassign( void ); |
583 | 586 | ||
584 | ANetNodeInstance * getToplevel( void ); | 587 | ANetNodeInstance * getToplevel( void ); |
585 | ANetNodeInstance * findNext( ANetNodeInstance * NNI ); | 588 | ANetNodeInstance * findNext( ANetNodeInstance * NNI ); |
586 | ANetNodeInstance * findByName( const QString & S ); | 589 | ANetNodeInstance * findByName( const QString & S ); |
587 | 590 | ||
588 | inline const QString & name() | 591 | inline const QString & name() |
589 | { return Name; } | 592 | { return Name; } |
590 | 593 | ||
591 | const QString & description( void ); | 594 | const QString & description( void ); |
592 | 595 | ||
593 | inline void setName( const QString & N) | 596 | inline void setName( const QString & N) |
594 | { Name = N; } | 597 | { Name = N; } |
595 | 598 | ||
596 | inline State_t currentState( void ) | 599 | inline State_t currentState( void ) |
597 | { return CurrentState; } | 600 | { return CurrentState; } |
598 | inline void setCurrentState( State_t S ) | 601 | inline void setCurrentState( State_t S ) |
599 | { CurrentState = S; } | 602 | { CurrentState = S; } |
600 | 603 | ||
601 | // return TRUE if this node can have data to be inserted in | 604 | // return TRUE if this node can have data to be inserted in |
602 | // file identified by S | 605 | // file identified by S |
603 | bool hasDataForFile( SystemFile & S ); | 606 | bool hasDataForFile( SystemFile & S ); |
604 | ANetNodeInstance * firstWithDataForFile( SystemFile & ); | 607 | ANetNodeInstance * firstWithDataForFile( SystemFile & ); |
605 | 608 | ||
606 | // generate items for this file -> toplevel call | 609 | // generate items for this file -> toplevel call |
607 | short generateFile( SystemFile & SF, | 610 | short generateFile( SystemFile & SF, |
608 | long DN // device number | 611 | long DN // device number |
609 | ) | 612 | ) |
610 | { return getToplevel()->generateFile( SF, DN ); } | 613 | { return getToplevel()->generateFile( SF, DN ); } |
611 | 614 | ||
612 | bool triggeredBy( const QString & Trigger ) | 615 | bool triggeredBy( const QString & Trigger ) |
613 | { return getToplevel()->triggeredBy( Trigger ); } | 616 | { return getToplevel()->triggeredBy( Trigger ); } |
614 | 617 | ||
615 | private : | 618 | private : |
616 | 619 | ||
617 | int compareItems ( QCollection::Item item1, | 620 | int compareItems ( QCollection::Item item1, |
618 | QCollection::Item item2 ); | 621 | QCollection::Item item2 ); |
619 | 622 | ||
620 | long Number; | 623 | long Number; |
621 | 624 | ||
622 | // state of this connection | 625 | // state of this networkSetup |
623 | State_t CurrentState; | 626 | State_t CurrentState; |
624 | 627 | ||
625 | QString Name; | 628 | QString Name; |
626 | // true if this collection was just created (and not | 629 | // true if this collection was just created (and not |
627 | // loaded from file | 630 | // loaded from file |
628 | bool IsNew; | 631 | bool IsNew; |
629 | // index in listbox | 632 | // index in listbox |
630 | int Index; | 633 | int Index; |
631 | bool IsModified; | 634 | bool IsModified; |
632 | int Done; | 635 | int Done; |
633 | 636 | ||
634 | InterfaceInfo * AssignedInterface; | 637 | InterfaceInfo * AssignedInterface; |
635 | 638 | ||
636 | }; | 639 | }; |
637 | 640 | ||
638 | #endif | 641 | #endif |
diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp index b81dcaa..0e72c25 100644 --- a/noncore/settings/networksettings2/networksettings2/resources.cpp +++ b/noncore/settings/networksettings2/networksettings2/resources.cpp | |||
@@ -1,481 +1,481 @@ | |||
1 | #include <unistd.h> | 1 | #include <unistd.h> |
2 | #include <errno.h> | 2 | #include <errno.h> |
3 | #include <fcntl.h> | 3 | #include <fcntl.h> |
4 | #include <pwd.h> | 4 | #include <pwd.h> |
5 | #include <qpixmap.h> | 5 | #include <qpixmap.h> |
6 | #include <qdir.h> | 6 | #include <qdir.h> |
7 | #include <qmessagebox.h> | 7 | #include <qmessagebox.h> |
8 | 8 | ||
9 | #include <qpe/qlibrary.h> | 9 | #include <qpe/qlibrary.h> |
10 | #include <qpe/qpeapplication.h> | 10 | #include <qpe/qpeapplication.h> |
11 | 11 | ||
12 | #include <opie2/odebug.h> | 12 | #include <opie2/odebug.h> |
13 | #include <opie2/opluginloader.h> | 13 | #include <opie2/opluginloader.h> |
14 | 14 | ||
15 | #include <qtopia/resource.h> | 15 | #include <qtopia/resource.h> |
16 | 16 | ||
17 | #include "netnode.h" | 17 | #include "netnode.h" |
18 | #include "resources.h" | 18 | #include "resources.h" |
19 | #include "netnodeinterface.h" | 19 | #include "netnodeinterface.h" |
20 | 20 | ||
21 | #define PLUGINDIR "plugins/networksettings2" | 21 | #define PLUGINDIR "plugins/networksettings2" |
22 | #define ICONDIR "/pics/networksettings2/" | 22 | #define ICONDIR "/pics/networksettings2/" |
23 | 23 | ||
24 | // single resources instance | 24 | // single resources instance |
25 | TheNSResources * _NSResources = 0; | 25 | TheNSResources * _NSResources = 0; |
26 | 26 | ||
27 | TheNSResources::TheNSResources( void ) : NodeTypeNameMap(), | 27 | TheNSResources::TheNSResources( void ) : NodeTypeNameMap(), |
28 | ConnectionsMap(), DanglingConnectionsMap() { | 28 | NetworkSetupsMap(), DanglingNetworkSetupsMap() { |
29 | 29 | ||
30 | _NSResources = this; | 30 | _NSResources = this; |
31 | 31 | ||
32 | detectCurrentUser(); | 32 | detectCurrentUser(); |
33 | 33 | ||
34 | // load available netnodes | 34 | // load available netnodes |
35 | 35 | ||
36 | Plugins = 0; | 36 | Plugins = 0; |
37 | findAvailableNetNodes(); | 37 | findAvailableNetNodes(); |
38 | 38 | ||
39 | // compile provides and needs lists | 39 | // compile provides and needs lists |
40 | { const char ** NeedsRun; | 40 | { const char ** NeedsRun; |
41 | QDictIterator<ANetNode> OuterIt( AllNodeTypes ); | 41 | QDictIterator<ANetNode> OuterIt( AllNodeTypes ); |
42 | bool Done; | 42 | bool Done; |
43 | 43 | ||
44 | for ( ; OuterIt.current(); ++OuterIt ) { | 44 | for ( ; OuterIt.current(); ++OuterIt ) { |
45 | // find needs list | 45 | // find needs list |
46 | ANetNode::NetNodeList * NNLP = new ANetNode::NetNodeList; | 46 | ANetNode::NetNodeList * NNLP = new ANetNode::NetNodeList; |
47 | ANetNode::NetNodeList & NNL = *(NNLP); | 47 | ANetNode::NetNodeList & NNL = *(NNLP); |
48 | 48 | ||
49 | // must iterate this way to avoid duplication pointers | 49 | // must iterate this way to avoid duplication pointers |
50 | for ( QDictIterator<ANetNode> InnerIt( AllNodeTypes ); | 50 | for ( QDictIterator<ANetNode> InnerIt( AllNodeTypes ); |
51 | InnerIt.current(); ++InnerIt ) { | 51 | InnerIt.current(); ++InnerIt ) { |
52 | 52 | ||
53 | if( InnerIt.current() == OuterIt.current() ) | 53 | if( InnerIt.current() == OuterIt.current() ) |
54 | // avoid recursive | 54 | // avoid recursive |
55 | continue; | 55 | continue; |
56 | 56 | ||
57 | const char ** Provides = InnerIt.current()->provides(); | 57 | const char ** Provides = InnerIt.current()->provides(); |
58 | NeedsRun = OuterIt.current()->needs(); | 58 | NeedsRun = OuterIt.current()->needs(); |
59 | 59 | ||
60 | for( ; *NeedsRun; NeedsRun ++ ) { | 60 | for( ; *NeedsRun; NeedsRun ++ ) { |
61 | const char ** PRun; | 61 | const char ** PRun; |
62 | PRun = Provides; | 62 | PRun = Provides; |
63 | for( ; *PRun; PRun ++ ) { | 63 | for( ; *PRun; PRun ++ ) { |
64 | if( strcmp( *PRun, *NeedsRun ) == 0 ) { | 64 | if( strcmp( *PRun, *NeedsRun ) == 0 ) { |
65 | // inner provides what outer needs | 65 | // inner provides what outer needs |
66 | NNL.resize( NNL.size() + 1 ); | 66 | NNL.resize( NNL.size() + 1 ); |
67 | NNL[NNL.size()-1] = InnerIt.current(); | 67 | NNL[NNL.size()-1] = InnerIt.current(); |
68 | Done = 1; // break from 2 loops | 68 | Done = 1; // break from 2 loops |
69 | break; | 69 | break; |
70 | } | 70 | } |
71 | } | 71 | } |
72 | } | 72 | } |
73 | } | 73 | } |
74 | OuterIt.current()->setAlternatives( NNLP ); | 74 | OuterIt.current()->setAlternatives( NNLP ); |
75 | } | 75 | } |
76 | } | 76 | } |
77 | 77 | ||
78 | // define built in Node types to Description map | 78 | // define built in Node types to Description map |
79 | addNodeType( "device", tr( "Network Device" ), | 79 | addNodeType( "device", tr( "Network Device" ), |
80 | tr( "<p>Devices that can handle IP packets</p>" ) ); | 80 | tr( "<p>Devices that can handle IP packets</p>" ) ); |
81 | addNodeType( "line", tr( "Character device" ), | 81 | addNodeType( "line", tr( "Character device" ), |
82 | tr( "<p>Devices that can handle single bytes</p>" ) ); | 82 | tr( "<p>Devices that can handle single bytes</p>" ) ); |
83 | addNodeType( "connection", tr( "IP Connection" ), | 83 | addNodeType( "NetworkSetup", tr( "IP NetworkSetup" ), |
84 | tr( "<p>Nodes that provide working IP connections</p>" ) ); | 84 | tr( "<p>Nodes that provide working IP NetworkSetups</p>" ) ); |
85 | addNodeType( "fullsetup", tr( "Connection Profile" ), | 85 | addNodeType( "fullsetup", tr( "NetworkSetup Profile" ), |
86 | tr( "<p>Fully configured connection profile</p>" ) ); | 86 | tr( "<p>Fully configured NetworkSetup profile</p>" ) ); |
87 | addNodeType( "GPRS", tr( "Connection to GPRS device" ), | 87 | addNodeType( "GPRS", tr( "NetworkSetup to GPRS device" ), |
88 | tr( "<p>Connection to a GPRS capable device</p>" ) ); | 88 | tr( "<p>NetworkSetup to a GPRS capable device</p>" ) ); |
89 | 89 | ||
90 | // get access to the system | 90 | // get access to the system |
91 | TheSystem = new System(); | 91 | TheSystem = new System(); |
92 | 92 | ||
93 | } | 93 | } |
94 | 94 | ||
95 | TheNSResources::~TheNSResources( void ) { | 95 | TheNSResources::~TheNSResources( void ) { |
96 | 96 | ||
97 | if( Plugins ) { | 97 | if( Plugins ) { |
98 | delete Plugins; | 98 | delete Plugins; |
99 | delete PluginManager; | 99 | delete PluginManager; |
100 | } | 100 | } |
101 | delete TheSystem; | 101 | delete TheSystem; |
102 | 102 | ||
103 | } | 103 | } |
104 | 104 | ||
105 | void TheNSResources::addNodeType( const QString & ID, | 105 | void TheNSResources::addNodeType( const QString & ID, |
106 | const QString & Name, | 106 | const QString & Name, |
107 | const QString & Descr ) { | 107 | const QString & Descr ) { |
108 | if( NodeTypeNameMap[ID].isEmpty() ) { | 108 | if( NodeTypeNameMap[ID].isEmpty() ) { |
109 | NodeTypeNameMap.insert( ID, Name ); | 109 | NodeTypeNameMap.insert( ID, Name ); |
110 | NodeTypeDescriptionMap.insert( ID, Descr ); | 110 | NodeTypeDescriptionMap.insert( ID, Descr ); |
111 | } | 111 | } |
112 | } | 112 | } |
113 | 113 | ||
114 | void TheNSResources::addSystemFile( const QString & ID, | 114 | void TheNSResources::addSystemFile( const QString & ID, |
115 | const QString & P, | 115 | const QString & P, |
116 | bool KDI ) { | 116 | bool KDI ) { |
117 | if( ! SystemFiles.find( ID ) ) { | 117 | if( ! SystemFiles.find( ID ) ) { |
118 | // new system file | 118 | // new system file |
119 | SystemFiles.insert( ID, new SystemFile( ID, P, KDI ) ); | 119 | SystemFiles.insert( ID, new SystemFile( ID, P, KDI ) ); |
120 | } // else existed | 120 | } // else existed |
121 | } | 121 | } |
122 | 122 | ||
123 | void TheNSResources::busy( bool ) { | 123 | void TheNSResources::busy( bool ) { |
124 | /* | 124 | /* |
125 | if( B ) { | 125 | if( B ) { |
126 | ShowWait->show(); | 126 | ShowWait->show(); |
127 | qApp->process | 127 | qApp->process |
128 | } else { | 128 | } else { |
129 | ShowWait->hide(); | 129 | ShowWait->hide(); |
130 | } | 130 | } |
131 | */ | 131 | */ |
132 | } | 132 | } |
133 | 133 | ||
134 | void TheNSResources::findAvailableNetNodes( void ){ | 134 | void TheNSResources::findAvailableNetNodes( void ){ |
135 | 135 | ||
136 | Plugins = new OPluginLoader( "networksettings2" ); | 136 | Plugins = new OPluginLoader( "networksettings2" ); |
137 | Plugins->setAutoDelete( true ); | 137 | Plugins->setAutoDelete( true ); |
138 | 138 | ||
139 | PluginManager = new OPluginManager( Plugins ); | 139 | PluginManager = new OPluginManager( Plugins ); |
140 | PluginManager->load(); | 140 | PluginManager->load(); |
141 | 141 | ||
142 | if( Plugins->isInSafeMode() ) { | 142 | if( Plugins->isInSafeMode() ) { |
143 | QMessageBox::information( | 143 | QMessageBox::information( |
144 | 0, | 144 | 0, |
145 | tr( "Today Error"), | 145 | tr( "Today Error"), |
146 | tr( "<qt>The plugin '%1' caused Today to crash." | 146 | tr( "<qt>The plugin '%1' caused Today to crash." |
147 | " It could be that the plugin is not properly" | 147 | " It could be that the plugin is not properly" |
148 | " installed.<br>Today tries to continue loading" | 148 | " installed.<br>Today tries to continue loading" |
149 | " plugins.</qt>" ) | 149 | " plugins.</qt>" ) |
150 | .arg( PluginManager->crashedPlugin().name())); | 150 | .arg( PluginManager->crashedPlugin().name())); |
151 | } | 151 | } |
152 | 152 | ||
153 | // Get All Plugins | 153 | // Get All Plugins |
154 | OPluginLoader::List allplugins = Plugins->filtered(); | 154 | OPluginLoader::List allplugins = Plugins->filtered(); |
155 | QString lang = ::getenv("LANG"); | 155 | QString lang = ::getenv("LANG"); |
156 | 156 | ||
157 | for( OPluginLoader::List::Iterator it = allplugins.begin(); | 157 | for( OPluginLoader::List::Iterator it = allplugins.begin(); |
158 | it != allplugins.end(); | 158 | it != allplugins.end(); |
159 | ++it ) { | 159 | ++it ) { |
160 | 160 | ||
161 | // check if this plugin supports the proper interface | 161 | // check if this plugin supports the proper interface |
162 | NetNodeInterface * interface = | 162 | NetNodeInterface * interface = |
163 | Plugins->load<NetNodeInterface>( *it, IID_NetworkSettings2 ); | 163 | Plugins->load<NetNodeInterface>( *it, IID_NetworkSettings2 ); |
164 | 164 | ||
165 | if( ! interface ) { | 165 | if( ! interface ) { |
166 | Log(( "Plugin %s from %s does not support proper interface\n", | 166 | Log(( "Plugin %s from %s does not support proper interface\n", |
167 | (*it).name().latin1(), (*it).path().latin1() )); | 167 | (*it).name().latin1(), (*it).path().latin1() )); |
168 | continue; | 168 | continue; |
169 | } | 169 | } |
170 | 170 | ||
171 | // add the nodes in this plugin to the dictionary | 171 | // add the nodes in this plugin to the dictionary |
172 | { QList<ANetNode> PNN; | 172 | { QList<ANetNode> PNN; |
173 | 173 | ||
174 | interface->create_plugin( PNN ); | 174 | interface->create_plugin( PNN ); |
175 | 175 | ||
176 | if( PNN.isEmpty() ) { | 176 | if( PNN.isEmpty() ) { |
177 | Log(( "Plugin %s from %s does offer any nodes\n", | 177 | Log(( "Plugin %s from %s does offer any nodes\n", |
178 | (*it).name().latin1(), (*it).path().latin1() )); | 178 | (*it).name().latin1(), (*it).path().latin1() )); |
179 | delete interface; | 179 | delete interface; |
180 | continue; | 180 | continue; |
181 | } | 181 | } |
182 | 182 | ||
183 | // merge this node with global node | 183 | // merge this node with global node |
184 | for( QListIterator<ANetNode> it(PNN); | 184 | for( QListIterator<ANetNode> it(PNN); |
185 | it.current(); | 185 | it.current(); |
186 | ++it ) { | 186 | ++it ) { |
187 | AllNodeTypes.insert( it.current()->name(), it.current() ); | 187 | AllNodeTypes.insert( it.current()->name(), it.current() ); |
188 | } | 188 | } |
189 | } | 189 | } |
190 | 190 | ||
191 | // load the translation | 191 | // load the translation |
192 | QTranslator *trans = new QTranslator(qApp); | 192 | QTranslator *trans = new QTranslator(qApp); |
193 | QString fn = QPEApplication::qpeDir()+ | 193 | QString fn = QPEApplication::qpeDir()+ |
194 | "/i18n/"+lang+"/"+ (*it).name() + ".qm"; | 194 | "/i18n/"+lang+"/"+ (*it).name() + ".qm"; |
195 | 195 | ||
196 | if( trans->load( fn ) ) | 196 | if( trans->load( fn ) ) |
197 | qApp->installTranslator( trans ); | 197 | qApp->installTranslator( trans ); |
198 | else | 198 | else |
199 | delete trans; | 199 | delete trans; |
200 | } | 200 | } |
201 | 201 | ||
202 | } | 202 | } |
203 | 203 | ||
204 | // used to find unique connection number | 204 | // used to find unique NetworkSetup number |
205 | int TheNSResources::assignConnectionNumber( void ) { | 205 | int TheNSResources::assignNetworkSetupNumber( void ) { |
206 | bool found = 1; | 206 | bool found = 1; |
207 | for( int trial = 0; ; trial ++ ) { | 207 | for( int trial = 0; ; trial ++ ) { |
208 | found = 1; | 208 | found = 1; |
209 | for( QDictIterator<NodeCollection> it(ConnectionsMap); | 209 | for( QDictIterator<NetworkSetup> it(NetworkSetupsMap); |
210 | it.current(); | 210 | it.current(); |
211 | ++it ) { | 211 | ++it ) { |
212 | if( it.current()->number() == trial ) { | 212 | if( it.current()->number() == trial ) { |
213 | found = 0; | 213 | found = 0; |
214 | break; | 214 | break; |
215 | } | 215 | } |
216 | } | 216 | } |
217 | 217 | ||
218 | if( found ) { | 218 | if( found ) { |
219 | Log(("Assign profile number %d\n", trial )); | 219 | Log(("Assign profile number %d\n", trial )); |
220 | return trial; | 220 | return trial; |
221 | } | 221 | } |
222 | } | 222 | } |
223 | } | 223 | } |
224 | 224 | ||
225 | QPixmap TheNSResources::getPixmap( const QString & QS ) { | 225 | QPixmap TheNSResources::getPixmap( const QString & QS ) { |
226 | QPixmap P; | 226 | QPixmap P; |
227 | QString S("networksettings2/"); | 227 | QString S("networksettings2/"); |
228 | S += QS; | 228 | S += QS; |
229 | P = Resource::loadPixmap( S ); | 229 | P = Resource::loadPixmap( S ); |
230 | if( P.isNull() ) { | 230 | if( P.isNull() ) { |
231 | Log(( "Cannot load %s\n", S.latin1() )); | 231 | Log(( "Cannot load %s\n", S.latin1() )); |
232 | } | 232 | } |
233 | return ( P.isNull() ) ? QPixmap() : P; | 233 | return ( P.isNull() ) ? QPixmap() : P; |
234 | } | 234 | } |
235 | 235 | ||
236 | QString TheNSResources::tr( const char * s ) { | 236 | QString TheNSResources::tr( const char * s ) { |
237 | return qApp->translate( "resource", s ); | 237 | return qApp->translate( "resource", s ); |
238 | } | 238 | } |
239 | 239 | ||
240 | const QString & TheNSResources::netNode2Name( const char * s ) { | 240 | const QString & TheNSResources::netNode2Name( const char * s ) { |
241 | return NodeTypeNameMap[s]; | 241 | return NodeTypeNameMap[s]; |
242 | } | 242 | } |
243 | 243 | ||
244 | const QString & TheNSResources::netNode2Description( const char * s ) { | 244 | const QString & TheNSResources::netNode2Description( const char * s ) { |
245 | return NodeTypeDescriptionMap[s]; | 245 | return NodeTypeDescriptionMap[s]; |
246 | } | 246 | } |
247 | 247 | ||
248 | void TheNSResources::addConnection( NodeCollection * NC, bool Dangling ) { | 248 | void TheNSResources::addNetworkSetup( NetworkSetup * NC, bool Dangling ) { |
249 | ANetNodeInstance * NNI; | 249 | ANetNodeInstance * NNI; |
250 | Log(( "Add Connection %s, Dangling %d\n", | 250 | Log(( "Add NetworkSetup %s, Dangling %d\n", |
251 | NC->name().latin1(), Dangling )); | 251 | NC->name().latin1(), Dangling )); |
252 | if( Dangling ) { | 252 | if( Dangling ) { |
253 | DanglingConnectionsMap.insert( NC->name(), NC ); | 253 | DanglingNetworkSetupsMap.insert( NC->name(), NC ); |
254 | } else { | 254 | } else { |
255 | ConnectionsMap.insert( NC->name(), NC ); | 255 | NetworkSetupsMap.insert( NC->name(), NC ); |
256 | } | 256 | } |
257 | 257 | ||
258 | // add (new) nodes to NodeList | 258 | // add (new) nodes to NodeList |
259 | for( QListIterator<ANetNodeInstance> it(*NC); | 259 | for( QListIterator<ANetNodeInstance> it(*NC); |
260 | it.current(); | 260 | it.current(); |
261 | ++it ) { | 261 | ++it ) { |
262 | NNI = it.current(); | 262 | NNI = it.current(); |
263 | if( findNodeInstance( NNI->name() ) == 0 ) { | 263 | if( findNodeInstance( NNI->name() ) == 0 ) { |
264 | // new item | 264 | // new item |
265 | addNodeInstance( NNI ); | 265 | addNodeInstance( NNI ); |
266 | } | 266 | } |
267 | } | 267 | } |
268 | } | 268 | } |
269 | 269 | ||
270 | void TheNSResources::removeConnection( const QString & N ) { | 270 | void TheNSResources::removeNetworkSetup( const QString & N ) { |
271 | NodeCollection * NC = findConnection( N ); | 271 | NetworkSetup * NC = findNetworkSetup( N ); |
272 | if( ! NC ) | 272 | if( ! NC ) |
273 | return; | 273 | return; |
274 | 274 | ||
275 | // delete netnodes in this connection | 275 | // delete netnodes in this NetworkSetup |
276 | ANetNodeInstance * NNI; | 276 | ANetNodeInstance * NNI; |
277 | for( NNI = NC->first(); NNI != 0; NNI = NC->next() ) { | 277 | for( NNI = NC->first(); NNI != 0; NNI = NC->next() ) { |
278 | removeNodeInstance( NNI->name() ); | 278 | removeNodeInstance( NNI->name() ); |
279 | } | 279 | } |
280 | if( ConnectionsMap.find( N ) ) { | 280 | if( NetworkSetupsMap.find( N ) ) { |
281 | ConnectionsMap.remove( N ); | 281 | NetworkSetupsMap.remove( N ); |
282 | } else { | 282 | } else { |
283 | DanglingConnectionsMap.remove( N ); | 283 | DanglingNetworkSetupsMap.remove( N ); |
284 | } | 284 | } |
285 | 285 | ||
286 | } | 286 | } |
287 | 287 | ||
288 | // dangling connections are filtered out | 288 | // dangling NetworkSetups are filtered out |
289 | NodeCollection * TheNSResources::findConnection( const QString & S ) { | 289 | NetworkSetup * TheNSResources::findNetworkSetup( const QString & S ) { |
290 | return ConnectionsMap[ S ]; | 290 | return NetworkSetupsMap[ S ]; |
291 | } | 291 | } |
292 | 292 | ||
293 | NodeCollection * TheNSResources::getConnection( int nr ) { | 293 | NetworkSetup * TheNSResources::getNetworkSetup( int nr ) { |
294 | for( QDictIterator<NodeCollection> it(ConnectionsMap); | 294 | for( QDictIterator<NetworkSetup> it(NetworkSetupsMap); |
295 | it.current(); | 295 | it.current(); |
296 | ++it ) { | 296 | ++it ) { |
297 | if( it.current()->number() == nr ) { | 297 | if( it.current()->number() == nr ) { |
298 | return it.current(); | 298 | return it.current(); |
299 | } | 299 | } |
300 | } | 300 | } |
301 | return 0; | 301 | return 0; |
302 | } | 302 | } |
303 | /* | 303 | /* |
304 | void TheNSResources::renumberConnections( void ) { | 304 | void TheNSResources::renumberNetworkSetups( void ) { |
305 | Name2Connection_t & M = NSResources->connections(); | 305 | Name2NetworkSetup_t & M = NSResources->NetworkSetups(); |
306 | NodeCollection * NC; | 306 | NetworkSetup * NC; |
307 | 307 | ||
308 | // for all connections | 308 | // for all NetworkSetups |
309 | NodeCollection::resetMaxNr(); | 309 | NetworkSetup::resetMaxNr(); |
310 | for( QDictIterator<NodeCollection> it(M); | 310 | for( QDictIterator<NetworkSetup> it(M); |
311 | it.current(); | 311 | it.current(); |
312 | ++it ) { | 312 | ++it ) { |
313 | NC = it.current(); | 313 | NC = it.current(); |
314 | NC->setNumber( NC->maxConnectionNumber()+1 ); | 314 | NC->setNumber( NC->maxNetworkSetupNumber()+1 ); |
315 | NC->setModified( 1 ); | 315 | NC->setModified( 1 ); |
316 | } | 316 | } |
317 | } | 317 | } |
318 | */ | 318 | */ |
319 | 319 | ||
320 | typedef struct EnvVars { | 320 | typedef struct EnvVars { |
321 | char * Name; | 321 | char * Name; |
322 | int Len; | 322 | int Len; |
323 | } EnvVar_t; | 323 | } EnvVar_t; |
324 | 324 | ||
325 | #define AnEV(x) x, sizeof(x)-1 | 325 | #define AnEV(x) x, sizeof(x)-1 |
326 | 326 | ||
327 | static EnvVar_t EV[] = { | 327 | static EnvVar_t EV[] = { |
328 | AnEV( "HOME" ), | 328 | AnEV( "HOME" ), |
329 | AnEV( "LOGNAME" ), | 329 | AnEV( "LOGNAME" ), |
330 | AnEV( "USER" ), | 330 | AnEV( "USER" ), |
331 | AnEV( "LD_LIBRARY_PATH" ), | 331 | AnEV( "LD_LIBRARY_PATH" ), |
332 | AnEV( "PATH" ), | 332 | AnEV( "PATH" ), |
333 | AnEV( "QTDIR" ), | 333 | AnEV( "QTDIR" ), |
334 | AnEV( "OPIEDIR" ), | 334 | AnEV( "OPIEDIR" ), |
335 | AnEV( "SHELL" ), | 335 | AnEV( "SHELL" ), |
336 | { NULL, 0 } | 336 | { NULL, 0 } |
337 | }; | 337 | }; |
338 | 338 | ||
339 | void TheNSResources::detectCurrentUser( void ) { | 339 | void TheNSResources::detectCurrentUser( void ) { |
340 | // find current running qpe | 340 | // find current running qpe |
341 | QString QPEEnvFile = ""; | 341 | QString QPEEnvFile = ""; |
342 | 342 | ||
343 | CurrentUser.UserName = ""; | 343 | CurrentUser.UserName = ""; |
344 | CurrentUser.HomeDir = ""; | 344 | CurrentUser.HomeDir = ""; |
345 | 345 | ||
346 | if( getenv( "OPIEDIR" ) == 0 ) { | 346 | if( getenv( "OPIEDIR" ) == 0 ) { |
347 | // nothing known | 347 | // nothing known |
348 | { // open proc dir and find all dirs in it | 348 | { // open proc dir and find all dirs in it |
349 | QRegExp R("[0-9]+"); | 349 | QRegExp R("[0-9]+"); |
350 | QDir ProcDir( "/proc" ); | 350 | QDir ProcDir( "/proc" ); |
351 | QFileInfo FI; | 351 | QFileInfo FI; |
352 | QStringList EL = ProcDir.entryList( QDir::Dirs ); | 352 | QStringList EL = ProcDir.entryList( QDir::Dirs ); |
353 | 353 | ||
354 | // print it out | 354 | // print it out |
355 | for ( QStringList::Iterator it = EL.begin(); | 355 | for ( QStringList::Iterator it = EL.begin(); |
356 | it != EL.end(); | 356 | it != EL.end(); |
357 | ++it ) { | 357 | ++it ) { |
358 | if( R.match( (*it) ) >= 0 ) { | 358 | if( R.match( (*it) ) >= 0 ) { |
359 | QString S = ProcDir.path()+"/"+ (*it); | 359 | QString S = ProcDir.path()+"/"+ (*it); |
360 | S.append( "/exe" ); | 360 | S.append( "/exe" ); |
361 | FI.setFile( S ); | 361 | FI.setFile( S ); |
362 | // get the link | 362 | // get the link |
363 | S = FI.readLink(); | 363 | S = FI.readLink(); |
364 | if( S.right( 8 ) == "/bin/qpe" ) { | 364 | if( S.right( 8 ) == "/bin/qpe" ) { |
365 | // found running qpe | 365 | // found running qpe |
366 | QPEEnvFile.sprintf( ProcDir.path()+ "/" + (*it) + "/environ" ); | 366 | QPEEnvFile.sprintf( ProcDir.path()+ "/" + (*it) + "/environ" ); |
367 | break; | 367 | break; |
368 | } | 368 | } |
369 | } | 369 | } |
370 | } | 370 | } |
371 | } | 371 | } |
372 | 372 | ||
373 | if( QPEEnvFile.isEmpty() ) { | 373 | if( QPEEnvFile.isEmpty() ) { |
374 | // could not find qpe | 374 | // could not find qpe |
375 | Log(("Could not find qpe\n" )); | 375 | Log(("Could not find qpe\n" )); |
376 | return; | 376 | return; |
377 | } | 377 | } |
378 | 378 | ||
379 | // FI now contains path ProcDir to the cmd dir | 379 | // FI now contains path ProcDir to the cmd dir |
380 | { char * Buf = 0; | 380 | { char * Buf = 0; |
381 | char TB[1024]; | 381 | char TB[1024]; |
382 | long BufSize = 0; | 382 | long BufSize = 0; |
383 | int fd; | 383 | int fd; |
384 | int rd; | 384 | int rd; |
385 | 385 | ||
386 | fd = open( QPEEnvFile.latin1(), O_RDONLY ); | 386 | fd = open( QPEEnvFile.latin1(), O_RDONLY ); |
387 | if( fd < 0 ) { | 387 | if( fd < 0 ) { |
388 | Log(("Could not open %s : %d\n", | 388 | Log(("Could not open %s : %d\n", |
389 | QPEEnvFile.latin1(), errno )); | 389 | QPEEnvFile.latin1(), errno )); |
390 | return; | 390 | return; |
391 | } | 391 | } |
392 | 392 | ||
393 | while( (rd = read( fd, TB, sizeof(TB) ) ) > 0 ) { | 393 | while( (rd = read( fd, TB, sizeof(TB) ) ) > 0 ) { |
394 | Buf = (char *)realloc( Buf, BufSize+rd ); | 394 | Buf = (char *)realloc( Buf, BufSize+rd ); |
395 | memcpy( Buf+BufSize, TB, rd ); | 395 | memcpy( Buf+BufSize, TB, rd ); |
396 | BufSize += rd; | 396 | BufSize += rd; |
397 | } | 397 | } |
398 | 398 | ||
399 | char * Data = Buf; | 399 | char * Data = Buf; |
400 | char * DataEnd = Data+BufSize-1; | 400 | char * DataEnd = Data+BufSize-1; |
401 | 401 | ||
402 | // get env items out of list | 402 | // get env items out of list |
403 | while( Data < DataEnd ) { | 403 | while( Data < DataEnd ) { |
404 | 404 | ||
405 | EnvVar_t * Run = EV; | 405 | EnvVar_t * Run = EV; |
406 | while( Run->Name ) { | 406 | while( Run->Name ) { |
407 | if( strncmp( Data, Run->Name, Run->Len ) == 0 && | 407 | if( strncmp( Data, Run->Name, Run->Len ) == 0 && |
408 | Data[Run->Len] == '=' | 408 | Data[Run->Len] == '=' |
409 | ) { | 409 | ) { |
410 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 410 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); |
411 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = | 411 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = |
412 | strdup( Data ); | 412 | strdup( Data ); |
413 | 413 | ||
414 | if( strcmp( Run->Name, "OPIEDIR" ) == 0 ) { | 414 | if( strcmp( Run->Name, "OPIEDIR" ) == 0 ) { |
415 | // put OPIEDIR in env | 415 | // put OPIEDIR in env |
416 | putenv( CurrentUser.EnvList[CurrentUser.EnvList.size()-1] ); | 416 | putenv( CurrentUser.EnvList[CurrentUser.EnvList.size()-1] ); |
417 | } else if( strcmp( Run->Name, "HOME" ) == 0 ) { | 417 | } else if( strcmp( Run->Name, "HOME" ) == 0 ) { |
418 | CurrentUser.HomeDir = Data+5; | 418 | CurrentUser.HomeDir = Data+5; |
419 | } else if( strcmp( Run->Name, "LOGNAME" ) == 0 ) { | 419 | } else if( strcmp( Run->Name, "LOGNAME" ) == 0 ) { |
420 | CurrentUser.UserName = Data+8; | 420 | CurrentUser.UserName = Data+8; |
421 | } | 421 | } |
422 | break; | 422 | break; |
423 | } | 423 | } |
424 | Run ++; | 424 | Run ++; |
425 | } | 425 | } |
426 | 426 | ||
427 | Data += strlen( Data )+1; | 427 | Data += strlen( Data )+1; |
428 | } | 428 | } |
429 | 429 | ||
430 | free( Buf ); | 430 | free( Buf ); |
431 | 431 | ||
432 | if( ! CurrentUser.UserName.isEmpty() ) { | 432 | if( ! CurrentUser.UserName.isEmpty() ) { |
433 | // find user info | 433 | // find user info |
434 | struct passwd pwd; | 434 | struct passwd pwd; |
435 | struct passwd * pwdres; | 435 | struct passwd * pwdres; |
436 | 436 | ||
437 | if( getpwnam_r( CurrentUser.UserName.latin1(), | 437 | if( getpwnam_r( CurrentUser.UserName.latin1(), |
438 | &pwd, TB, sizeof(TB), &pwdres ) || | 438 | &pwd, TB, sizeof(TB), &pwdres ) || |
439 | pwdres == 0 ) { | 439 | pwdres == 0 ) { |
440 | Log(("Could not determine user %s : %d\n", | 440 | Log(("Could not determine user %s : %d\n", |
441 | CurrentUser.UserName.latin1(), errno )); | 441 | CurrentUser.UserName.latin1(), errno )); |
442 | return; | 442 | return; |
443 | } | 443 | } |
444 | CurrentUser.Uid = pwd.pw_uid; | 444 | CurrentUser.Uid = pwd.pw_uid; |
445 | CurrentUser.Gid = pwd.pw_gid; | 445 | CurrentUser.Gid = pwd.pw_gid; |
446 | } else{ | 446 | } else{ |
447 | CurrentUser.Uid = | 447 | CurrentUser.Uid = |
448 | CurrentUser.Gid = -1; | 448 | CurrentUser.Gid = -1; |
449 | } | 449 | } |
450 | } | 450 | } |
451 | 451 | ||
452 | } else { | 452 | } else { |
453 | char * X; | 453 | char * X; |
454 | QString S; | 454 | QString S; |
455 | 455 | ||
456 | EnvVar_t * Run = EV; | 456 | EnvVar_t * Run = EV; |
457 | while( Run->Name ) { | 457 | while( Run->Name ) { |
458 | 458 | ||
459 | if( ( X = getenv( Run->Name ) ) ) { | 459 | if( ( X = getenv( Run->Name ) ) ) { |
460 | Log(( "Env : %s = %s\n", Run->Name, X )); | 460 | Log(( "Env : %s = %s\n", Run->Name, X )); |
461 | 461 | ||
462 | S.sprintf( "%s=%s", Run->Name, X ); | 462 | S.sprintf( "%s=%s", Run->Name, X ); |
463 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); | 463 | CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 ); |
464 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = | 464 | CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = |
465 | strdup( S.latin1() ); | 465 | strdup( S.latin1() ); |
466 | 466 | ||
467 | if( strcmp( Run->Name, "LOGNAME" ) == 0 ) { | 467 | if( strcmp( Run->Name, "LOGNAME" ) == 0 ) { |
468 | CurrentUser.UserName = X; | 468 | CurrentUser.UserName = X; |
469 | } else if( strcmp( Run->Name, "HOME" ) == 0 ) { | 469 | } else if( strcmp( Run->Name, "HOME" ) == 0 ) { |
470 | CurrentUser.HomeDir = X; | 470 | CurrentUser.HomeDir = X; |
471 | } // regulare env var | 471 | } // regulare env var |
472 | } else { | 472 | } else { |
473 | Log(("Could not determine %s\n", Run->Name )); | 473 | Log(("Could not determine %s\n", Run->Name )); |
474 | } | 474 | } |
475 | Run ++; | 475 | Run ++; |
476 | } | 476 | } |
477 | 477 | ||
478 | CurrentUser.Uid = getuid(); | 478 | CurrentUser.Uid = getuid(); |
479 | CurrentUser.Gid = getgid(); | 479 | CurrentUser.Gid = getgid(); |
480 | } | 480 | } |
481 | } | 481 | } |
diff --git a/noncore/settings/networksettings2/networksettings2/resources.h b/noncore/settings/networksettings2/networksettings2/resources.h index 51c4250..f7393d3 100644 --- a/noncore/settings/networksettings2/networksettings2/resources.h +++ b/noncore/settings/networksettings2/networksettings2/resources.h | |||
@@ -1,153 +1,153 @@ | |||
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 | ||
12 | class QLibrary; | 12 | class QLibrary; |
13 | class QPixmap; | 13 | class QPixmap; |
14 | class ANetNode; | 14 | class ANetNode; |
15 | class ANetNodeInstance; | 15 | class ANetNodeInstance; |
16 | 16 | ||
17 | namespace Opie { | 17 | namespace Opie { |
18 | namespace Core { | 18 | namespace Core { |
19 | class OPluginLoader; | 19 | class OPluginLoader; |
20 | class OPluginManager; | 20 | class OPluginManager; |
21 | } | 21 | } |
22 | } | 22 | } |
23 | 23 | ||
24 | typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN ); | 24 | typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN ); |
25 | 25 | ||
26 | class CurrentQPEUser { | 26 | class CurrentQPEUser { |
27 | 27 | ||
28 | public : | 28 | public : |
29 | CurrentQPEUser() : UserName(), HomeDir(), EnvList() {} | 29 | CurrentQPEUser() : UserName(), HomeDir(), EnvList() {} |
30 | 30 | ||
31 | inline bool known( void ) | 31 | inline bool known( void ) |
32 | { return ! HomeDir.isEmpty() && ! UserName.isEmpty(); } | 32 | { return ! HomeDir.isEmpty() && ! UserName.isEmpty(); } |
33 | 33 | ||
34 | QString UserName; | 34 | QString UserName; |
35 | QString HomeDir; | 35 | QString HomeDir; |
36 | int Uid; | 36 | int Uid; |
37 | int Gid; | 37 | int Gid; |
38 | QArray<char *> EnvList; | 38 | QArray<char *> EnvList; |
39 | }; | 39 | }; |
40 | 40 | ||
41 | typedef QDict<ANetNode> Name2NetNode_t; | 41 | typedef QDict<ANetNode> Name2NetNode_t; |
42 | typedef QDict<ANetNodeInstance > Name2Instance_t; | 42 | typedef QDict<ANetNodeInstance > Name2Instance_t; |
43 | typedef QDict<NodeCollection> Name2Connection_t; | 43 | typedef QDict<NetworkSetup> Name2NetworkSetup_t; |
44 | typedef QDict<SystemFile> Name2SystemFile_t; | 44 | typedef QDict<SystemFile> Name2SystemFile_t; |
45 | 45 | ||
46 | class TheNSResources { | 46 | class TheNSResources { |
47 | 47 | ||
48 | public : | 48 | public : |
49 | 49 | ||
50 | TheNSResources( void ); | 50 | TheNSResources( void ); |
51 | ~TheNSResources( ); | 51 | ~TheNSResources( ); |
52 | 52 | ||
53 | // give busy feedback | 53 | // give busy feedback |
54 | void busy( bool B ); | 54 | void busy( bool B ); |
55 | 55 | ||
56 | System & system() | 56 | System & system() |
57 | { return *TheSystem; } | 57 | { return *TheSystem; } |
58 | 58 | ||
59 | int assignConnectionNumber(void); | 59 | int assignNetworkSetupNumber(void); |
60 | QPixmap getPixmap( const QString & Name ); | 60 | QPixmap getPixmap( const QString & Name ); |
61 | 61 | ||
62 | Name2NetNode_t & netNodes( void ) | 62 | Name2NetNode_t & netNodes( void ) |
63 | { return AllNodeTypes; } | 63 | { return AllNodeTypes; } |
64 | bool netNodeExists( const QString & X ) | 64 | bool netNodeExists( const QString & X ) |
65 | { return AllNodeTypes.find(X)!=0; } | 65 | { return AllNodeTypes.find(X)!=0; } |
66 | ANetNode * findNetNode( const QString & N ) | 66 | ANetNode * findNetNode( const QString & N ) |
67 | { return AllNodeTypes.find(N); | 67 | { return AllNodeTypes.find(N); |
68 | } | 68 | } |
69 | // define new plugin (=node) | 69 | // define new plugin (=node) |
70 | void addNodeType( const QString & ID, | 70 | void addNodeType( const QString & ID, |
71 | const QString & LongName, | 71 | const QString & LongName, |
72 | const QString & Description ); | 72 | const QString & Description ); |
73 | 73 | ||
74 | Name2SystemFile_t & systemFiles( void ) | 74 | Name2SystemFile_t & systemFiles( void ) |
75 | { return SystemFiles; } | 75 | { return SystemFiles; } |
76 | void addSystemFile( const QString & ID, | 76 | void addSystemFile( const QString & ID, |
77 | const QString & P, | 77 | const QString & P, |
78 | bool KDI ); | 78 | bool KDI ); |
79 | 79 | ||
80 | ANetNodeInstance * createNodeInstance( const QString & S ) | 80 | ANetNodeInstance * createNodeInstance( const QString & S ) |
81 | { ANetNode * NN = findNetNode( S ); | 81 | { ANetNode * NN = findNetNode( S ); |
82 | 82 | ||
83 | Log(( "Find node type %s : %p\n", S.latin1(), NN )); | 83 | Log(( "Find node type %s : %p\n", S.latin1(), NN )); |
84 | 84 | ||
85 | if( NN == 0 ) | 85 | if( NN == 0 ) |
86 | // type of this instance not found | 86 | // type of this instance not found |
87 | return 0; | 87 | return 0; |
88 | 88 | ||
89 | ANetNodeInstance * NNI = NN->createInstance(); | 89 | ANetNodeInstance * NNI = NN->createInstance(); |
90 | NNI->initialize(); | 90 | NNI->initialize(); |
91 | return NNI; | 91 | return NNI; |
92 | } | 92 | } |
93 | 93 | ||
94 | Name2Instance_t & netNodeInstances( void ) | 94 | Name2Instance_t & netNodeInstances( void ) |
95 | { return AllNodes; } | 95 | { return AllNodes; } |
96 | void addNodeInstance( ANetNodeInstance * I ) | 96 | void addNodeInstance( ANetNodeInstance * I ) |
97 | { AllNodes.insert( I->name(), I ); } | 97 | { AllNodes.insert( I->name(), I ); } |
98 | void removeNodeInstance( const QString & N ) | 98 | void removeNodeInstance( const QString & N ) |
99 | { AllNodes.remove( N );} | 99 | { AllNodes.remove( N );} |
100 | ANetNodeInstance * findNodeInstance( const QString & S ) | 100 | ANetNodeInstance * findNodeInstance( const QString & S ) |
101 | { return AllNodes[S]; } | 101 | { return AllNodes[S]; } |
102 | 102 | ||
103 | const QString & netNode2Name( const char * Type ); | 103 | const QString & netNode2Name( const char * Type ); |
104 | const QString & netNode2Description( const char * Type ); | 104 | const QString & netNode2Description( const char * Type ); |
105 | 105 | ||
106 | void addConnection( NodeCollection * NC, bool Dangling ); | 106 | void addNetworkSetup( NetworkSetup * NC, bool Dangling ); |
107 | void removeConnection( const QString & N ); | 107 | void removeNetworkSetup( const QString & N ); |
108 | NodeCollection * findConnection( const QString & N ); | 108 | NetworkSetup * findNetworkSetup( const QString & N ); |
109 | NodeCollection * getConnection( int nr ); | 109 | NetworkSetup * getNetworkSetup( int nr ); |
110 | Name2Connection_t & connections( void ) | 110 | Name2NetworkSetup_t & networkSetups( void ) |
111 | { return ConnectionsMap; } | 111 | { return NetworkSetupsMap; } |
112 | Name2Connection_t & danglingConnections( void ) | 112 | Name2NetworkSetup_t & danglingNetworkSetups( void ) |
113 | { return DanglingConnectionsMap; } | 113 | { return DanglingNetworkSetupsMap; } |
114 | 114 | ||
115 | inline bool userKnown( void ) | 115 | inline bool userKnown( void ) |
116 | { return CurrentUser.known(); } | 116 | { return CurrentUser.known(); } |
117 | CurrentQPEUser & currentUser( void ) | 117 | CurrentQPEUser & currentUser( void ) |
118 | { return CurrentUser; } | 118 | { return CurrentUser; } |
119 | 119 | ||
120 | private : | 120 | private : |
121 | 121 | ||
122 | void detectCurrentUser( void ); | 122 | void detectCurrentUser( void ); |
123 | QString tr( const char * path ); | 123 | QString tr( const char * path ); |
124 | 124 | ||
125 | void findAvailableNetNodes( void ); | 125 | void findAvailableNetNodes( void ); |
126 | 126 | ||
127 | QMap< QString, QString> NodeTypeNameMap; | 127 | QMap< QString, QString> NodeTypeNameMap; |
128 | QMap< QString, QString> NodeTypeDescriptionMap; | 128 | QMap< QString, QString> NodeTypeDescriptionMap; |
129 | // list of connections that are valid | 129 | // list of networkSetups that are valid |
130 | Name2Connection_t ConnectionsMap; | 130 | Name2NetworkSetup_t NetworkSetupsMap; |
131 | // list of connection configurations that are not valid | 131 | // list of networkSetup configurations that are not valid |
132 | // e.g. because plugins are missing | 132 | // e.g. because plugins are missing |
133 | Name2Connection_t DanglingConnectionsMap; | 133 | Name2NetworkSetup_t DanglingNetworkSetupsMap; |
134 | System * TheSystem; | 134 | System * TheSystem; |
135 | Name2SystemFile_t SystemFiles; | 135 | Name2SystemFile_t SystemFiles; |
136 | 136 | ||
137 | // all node type classes | 137 | // all node type classes |
138 | Name2NetNode_t AllNodeTypes; | 138 | Name2NetNode_t AllNodeTypes; |
139 | 139 | ||
140 | // all nodes | 140 | // all nodes |
141 | Name2Instance_t AllNodes; | 141 | Name2Instance_t AllNodes; |
142 | 142 | ||
143 | CurrentQPEUser CurrentUser; | 143 | CurrentQPEUser CurrentUser; |
144 | 144 | ||
145 | Opie::Core::OPluginLoader * Plugins; | 145 | Opie::Core::OPluginLoader * Plugins; |
146 | Opie::Core::OPluginManager * PluginManager; | 146 | Opie::Core::OPluginManager * PluginManager; |
147 | 147 | ||
148 | }; | 148 | }; |
149 | 149 | ||
150 | extern TheNSResources * _NSResources; | 150 | extern TheNSResources * _NSResources; |
151 | #define NSResources _NSResources | 151 | #define NSResources _NSResources |
152 | 152 | ||
153 | #endif | 153 | #endif |
diff --git a/noncore/settings/networksettings2/networksettings2/system.cpp b/noncore/settings/networksettings2/networksettings2/system.cpp index a290f08..33cc5bd 100644 --- a/noncore/settings/networksettings2/networksettings2/system.cpp +++ b/noncore/settings/networksettings2/networksettings2/system.cpp | |||
@@ -1,603 +1,603 @@ | |||
1 | #include <sys/types.h> | 1 | #include <sys/types.h> |
2 | #include <sys/wait.h> | 2 | #include <sys/wait.h> |
3 | 3 | ||
4 | #include <net/if.h> | 4 | #include <net/if.h> |
5 | #include <net/if_arp.h> | 5 | #include <net/if_arp.h> |
6 | #include <netinet/in.h> | 6 | #include <netinet/in.h> |
7 | #include <arpa/inet.h> | 7 | #include <arpa/inet.h> |
8 | #include <sys/ioctl.h> | 8 | #include <sys/ioctl.h> |
9 | #include <sys/socket.h> | 9 | #include <sys/socket.h> |
10 | #include <stdlib.h> | 10 | #include <stdlib.h> |
11 | #include <stdio.h> | 11 | #include <stdio.h> |
12 | #include <fcntl.h> | 12 | #include <fcntl.h> |
13 | #include <errno.h> | 13 | #include <errno.h> |
14 | #include <unistd.h> | 14 | #include <unistd.h> |
15 | 15 | ||
16 | #include <opie2/oprocess.h> | 16 | #include <opie2/oprocess.h> |
17 | 17 | ||
18 | #include <qdir.h> | 18 | #include <qdir.h> |
19 | #include <qregexp.h> | 19 | #include <qregexp.h> |
20 | #include <qstringlist.h> | 20 | #include <qstringlist.h> |
21 | #include <qfile.h> | 21 | #include <qfile.h> |
22 | #include <qtextstream.h> | 22 | #include <qtextstream.h> |
23 | #include <qapplication.h> | 23 | #include <qapplication.h> |
24 | 24 | ||
25 | #include "resources.h" | 25 | #include "resources.h" |
26 | #include "system.h" | 26 | #include "system.h" |
27 | 27 | ||
28 | #define PROCNETDEV "/proc/net/dev" | 28 | #define PROCNETDEV "/proc/net/dev" |
29 | 29 | ||
30 | #ifndef ARPHRD_IEEE80211 | 30 | #ifndef ARPHRD_IEEE80211 |
31 | #define ARPHRD_IEEE80211 801 | 31 | #define ARPHRD_IEEE80211 801 |
32 | #endif | 32 | #endif |
33 | 33 | ||
34 | static char Dig2Hex[] = { | 34 | static char Dig2Hex[] = { |
35 | '0', '1', '2', '3', | 35 | '0', '1', '2', '3', |
36 | '4', '5', '6', '7', | 36 | '4', '5', '6', '7', |
37 | '8', '9', 'A', 'B', | 37 | '8', '9', 'A', 'B', |
38 | 'C', 'D', 'E', 'F' | 38 | 'C', 'D', 'E', 'F' |
39 | }; | 39 | }; |
40 | 40 | ||
41 | // get HIGH nibble of byte | 41 | // get HIGH nibble of byte |
42 | #define HN(x) Dig2Hex[(((x)&0xf0)>>4)] | 42 | #define HN(x) Dig2Hex[(((x)&0xf0)>>4)] |
43 | // get LOW nibble of byte | 43 | // get LOW nibble of byte |
44 | #define LN(x) Dig2Hex[((x)&0x0f)] | 44 | #define LN(x) Dig2Hex[((x)&0x0f)] |
45 | 45 | ||
46 | System::System( void ) : QObject(), ProbedInterfaces() { | 46 | System::System( void ) : QObject(), ProbedInterfaces() { |
47 | ProcDevNet = 0; | 47 | ProcDevNet = 0; |
48 | } | 48 | } |
49 | 49 | ||
50 | System::~System( void ) { | 50 | System::~System( void ) { |
51 | if( ProcDevNet ) | 51 | if( ProcDevNet ) |
52 | delete ProcDevNet; | 52 | delete ProcDevNet; |
53 | } | 53 | } |
54 | 54 | ||
55 | QDict<InterfaceInfo> & System::interfaces( void ) { | 55 | QDict<InterfaceInfo> & System::interfaces( void ) { |
56 | if( ProbedInterfaces.count() == 0 ) { | 56 | if( ProbedInterfaces.count() == 0 ) { |
57 | probeInterfaces(); | 57 | probeInterfaces(); |
58 | } | 58 | } |
59 | return ProbedInterfaces; | 59 | return ProbedInterfaces; |
60 | } | 60 | } |
61 | 61 | ||
62 | int System::runAsRoot( QStringList & S, MyProcess * Prc ) { | 62 | int System::runAsRoot( QStringList & S, MyProcess * Prc ) { |
63 | char * usr = getenv("USER"); | 63 | char * usr = getenv("USER"); |
64 | 64 | ||
65 | if( S.count() == 0 ) { | 65 | if( S.count() == 0 ) { |
66 | // close loophole to start shell | 66 | // close loophole to start shell |
67 | return 8888; | 67 | return 8888; |
68 | } | 68 | } |
69 | if( usr == 0 || strcmp( usr, "root" ) ) { | 69 | if( usr == 0 || strcmp( usr, "root" ) ) { |
70 | // unknown or non-root user -> use SUDO | 70 | // unknown or non-root user -> use SUDO |
71 | S.prepend( "sudo" ); | 71 | S.prepend( "sudo" ); |
72 | } | 72 | } |
73 | 73 | ||
74 | if( getenv( "NS2TESTMODE" ) ) { | 74 | if( getenv( "NS2TESTMODE" ) ) { |
75 | odebug << "TESTMODE !!! execute " | 75 | odebug << "TESTMODE !!! execute " |
76 | << S.join( " ") | 76 | << S.join( " ") |
77 | << oendl; | 77 | << oendl; |
78 | } else { | 78 | } else { |
79 | MyProcess * P; | 79 | MyProcess * P; |
80 | 80 | ||
81 | if( Prc ) { | 81 | if( Prc ) { |
82 | P = Prc; | 82 | P = Prc; |
83 | } else { | 83 | } else { |
84 | P = new MyProcess(); | 84 | P = new MyProcess(); |
85 | emit processEvent( tr("Command : ") + S.join( " " ) ); | 85 | emit processEvent( tr("Command : ") + S.join( " " ) ); |
86 | 86 | ||
87 | connect( P, | 87 | connect( P, |
88 | SIGNAL( stdoutLine( const QString & ) ), | 88 | SIGNAL( stdoutLine( const QString & ) ), |
89 | this, | 89 | this, |
90 | SIGNAL( stdoutLine( const QString & ) ) ); | 90 | SIGNAL( stdoutLine( const QString & ) ) ); |
91 | 91 | ||
92 | connect( P, | 92 | connect( P, |
93 | SIGNAL( stderrLine( const QString & ) ), | 93 | SIGNAL( stderrLine( const QString & ) ), |
94 | this, | 94 | this, |
95 | SIGNAL( stderrLine( const QString & ) ) ); | 95 | SIGNAL( stderrLine( const QString & ) ) ); |
96 | 96 | ||
97 | connect( P, | 97 | connect( P, |
98 | SIGNAL(processExited(MyProcess*) ), | 98 | SIGNAL(processExited(MyProcess*) ), |
99 | this, SLOT | 99 | this, SLOT |
100 | (SLOT_ProcessExited(MyProcess*) ) ); | 100 | (SLOT_ProcessExited(MyProcess*) ) ); |
101 | } | 101 | } |
102 | 102 | ||
103 | P->process() << S; | 103 | P->process() << S; |
104 | 104 | ||
105 | Log(("Executing %s\n", S.join( " " ).latin1() )); | 105 | Log(("Executing %s\n", S.join( " " ).latin1() )); |
106 | 106 | ||
107 | if( ! P->process().start( OProcess::DontCare, | 107 | if( ! P->process().start( OProcess::DontCare, |
108 | OProcess::AllOutput ) ) { | 108 | OProcess::AllOutput ) ) { |
109 | odebug << "Error starting " << S << oendl; | 109 | odebug << "Error starting " << S << oendl; |
110 | if( ! Prc ) | 110 | if( ! Prc ) |
111 | delete P; | 111 | delete P; |
112 | // error starting app | 112 | // error starting app |
113 | return 0; | 113 | return 0; |
114 | } | 114 | } |
115 | odebug << "Started " << S << oendl; | 115 | odebug << "Started " << S << oendl; |
116 | } | 116 | } |
117 | 117 | ||
118 | // all is fine | 118 | // all is fine |
119 | return 1; | 119 | return 1; |
120 | } | 120 | } |
121 | 121 | ||
122 | int System::execAsUser( QStringList & SL, bool Synchronous ) { | 122 | int System::execAsUser( QStringList & SL, bool Synchronous ) { |
123 | MyProcess * P = new MyProcess(); | 123 | MyProcess * P = new MyProcess(); |
124 | CurrentQPEUser CU = NSResources->currentUser(); | 124 | CurrentQPEUser CU = NSResources->currentUser(); |
125 | char * usr = getenv("USER"); | 125 | char * usr = getenv("USER"); |
126 | 126 | ||
127 | if( usr == 0 || | 127 | if( usr == 0 || |
128 | strcmp( usr, "root" ) == 0 ) { | 128 | strcmp( usr, "root" ) == 0 ) { |
129 | // find user running qpe | 129 | // find user running qpe |
130 | if( CU.UserName.isEmpty() ) { | 130 | if( CU.UserName.isEmpty() ) { |
131 | // if we come here, the exec was not successfull | 131 | // if we come here, the exec was not successfull |
132 | Log(("User not known \n" )); | 132 | Log(("User not known \n" )); |
133 | return 0; | 133 | return 0; |
134 | } | 134 | } |
135 | } | 135 | } |
136 | 136 | ||
137 | // now we are ready to exec the requested command | 137 | // now we are ready to exec the requested command |
138 | setuid( CU.Uid ); | 138 | setuid( CU.Uid ); |
139 | setgid( CU.Gid ); | 139 | setgid( CU.Gid ); |
140 | 140 | ||
141 | for( unsigned int i = 0 ; i < CU.EnvList.count() ; i ++ ) { | 141 | for( unsigned int i = 0 ; i < CU.EnvList.count() ; i ++ ) { |
142 | QString X; | 142 | QString X; |
143 | QStringList SL; | 143 | QStringList SL; |
144 | X = CU.EnvList[i]; | 144 | X = CU.EnvList[i]; |
145 | SL = QStringList::split( "=", X ); | 145 | SL = QStringList::split( "=", X ); |
146 | P->process().setEnvironment( SL[0], SL[1] ); | 146 | P->process().setEnvironment( SL[0], SL[1] ); |
147 | } | 147 | } |
148 | 148 | ||
149 | P->process() << SL; | 149 | P->process() << SL; |
150 | 150 | ||
151 | emit processEvent( tr("Command : ") + SL.join( " " ) ); | 151 | emit processEvent( tr("Command : ") + SL.join( " " ) ); |
152 | 152 | ||
153 | Log(("Executing as user %s : %s\n", | 153 | Log(("Executing as user %s : %s\n", |
154 | CU.UserName.latin1(), | 154 | CU.UserName.latin1(), |
155 | SL.join( " " ).latin1() )); | 155 | SL.join( " " ).latin1() )); |
156 | 156 | ||
157 | P->setEchoMode( Synchronous ); | 157 | P->setEchoMode( Synchronous ); |
158 | 158 | ||
159 | bool rv = P->process().start( | 159 | bool rv = P->process().start( |
160 | (Synchronous) ? OProcess::Block : | 160 | (Synchronous) ? OProcess::Block : |
161 | OProcess::DontCare, | 161 | OProcess::DontCare, |
162 | (Synchronous) ? OProcess::AllOutput : | 162 | (Synchronous) ? OProcess::AllOutput : |
163 | OProcess::NoCommunication ); | 163 | OProcess::NoCommunication ); |
164 | delete P; | 164 | delete P; |
165 | 165 | ||
166 | if( ! rv ) { | 166 | if( ! rv ) { |
167 | // if we come here, the exec was not successfull | 167 | // if we come here, the exec was not successfull |
168 | Log(("Could not exec : %d\n", errno )); | 168 | Log(("Could not exec : %d\n", errno )); |
169 | } | 169 | } |
170 | 170 | ||
171 | return rv; | 171 | return rv; |
172 | } | 172 | } |
173 | 173 | ||
174 | void System::SLOT_ProcessExited( MyProcess * P ) { | 174 | void System::SLOT_ProcessExited( MyProcess * P ) { |
175 | QString R; | 175 | QString R; |
176 | 176 | ||
177 | for( QValueListConstIterator<QCString> it = P->process().args().begin(); | 177 | for( QValueListConstIterator<QCString> it = P->process().args().begin(); |
178 | it != P->process().args().end(); | 178 | it != P->process().args().end(); |
179 | ++it ) { | 179 | ++it ) { |
180 | R += (*it); | 180 | R += (*it); |
181 | R += " "; | 181 | R += " "; |
182 | } | 182 | } |
183 | 183 | ||
184 | R += "Returned with " + QString().setNum( P->process().exitStatus() ); | 184 | R += "Returned with " + QString().setNum( P->process().exitStatus() ); |
185 | emit processEvent( R ); | 185 | emit processEvent( R ); |
186 | delete P; | 186 | delete P; |
187 | } | 187 | } |
188 | 188 | ||
189 | void System::refreshStatistics( InterfaceInfo & I ) { | 189 | void System::refreshStatistics( InterfaceInfo & I ) { |
190 | if( ! ProcDevNet ) { | 190 | if( ! ProcDevNet ) { |
191 | return; | 191 | return; |
192 | } | 192 | } |
193 | // cannot seek on dev | 193 | // cannot seek on dev |
194 | ProcDevNet->close(); | 194 | ProcDevNet->close(); |
195 | ProcDevNet->open( IO_ReadOnly ); | 195 | ProcDevNet->open( IO_ReadOnly ); |
196 | 196 | ||
197 | QString line; | 197 | QString line; |
198 | QTextStream procTs(ProcDevNet); | 198 | QTextStream procTs(ProcDevNet); |
199 | QStringList SL; | 199 | QStringList SL; |
200 | int loc = -1; | 200 | int loc = -1; |
201 | int version; | 201 | int version; |
202 | 202 | ||
203 | procTs.readLine(); | 203 | procTs.readLine(); |
204 | line = procTs.readLine(); | 204 | line = procTs.readLine(); |
205 | // get version | 205 | // get version |
206 | if( line.find("compressed") ) | 206 | if( line.find("compressed") ) |
207 | version = 3; | 207 | version = 3; |
208 | else if( line.find( "bytes" ) ) | 208 | else if( line.find( "bytes" ) ) |
209 | version = 2; | 209 | version = 2; |
210 | else | 210 | else |
211 | version = 1; | 211 | version = 1; |
212 | while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { | 212 | while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { |
213 | if( (loc = line.find(":") ) == -1) { | 213 | if( (loc = line.find(":") ) == -1) { |
214 | continue; | 214 | continue; |
215 | } | 215 | } |
216 | 216 | ||
217 | if( I.Name != line.left(loc) ) | 217 | if( I.Name != line.left(loc) ) |
218 | continue; | 218 | continue; |
219 | 219 | ||
220 | // tokenize | 220 | // tokenize |
221 | SL = QStringList::split( ' ', line, FALSE ); | 221 | SL = QStringList::split( ' ', line, FALSE ); |
222 | 222 | ||
223 | // update data | 223 | // update data |
224 | switch( version ) { | 224 | switch( version ) { |
225 | case 1 : | 225 | case 1 : |
226 | I.RcvBytes = SL[1]; | 226 | I.RcvBytes = SL[1]; |
227 | I.RcvErrors = SL[3]; | 227 | I.RcvErrors = SL[3]; |
228 | I.RcvDropped = SL[4]; | 228 | I.RcvDropped = SL[4]; |
229 | I.SndBytes = SL[6]; | 229 | I.SndBytes = SL[6]; |
230 | I.SndErrors = SL[8]; | 230 | I.SndErrors = SL[8]; |
231 | I.SndDropped = SL[9]; | 231 | I.SndDropped = SL[9]; |
232 | I.Collisions = SL[11]; | 232 | I.Collisions = SL[11]; |
233 | break; | 233 | break; |
234 | case 2 : | 234 | case 2 : |
235 | I.RcvBytes = SL[1]; | 235 | I.RcvBytes = SL[1]; |
236 | I.RcvErrors = SL[3]; | 236 | I.RcvErrors = SL[3]; |
237 | I.RcvDropped = SL[4]; | 237 | I.RcvDropped = SL[4]; |
238 | I.SndBytes = SL[7]; | 238 | I.SndBytes = SL[7]; |
239 | I.SndErrors = SL[9]; | 239 | I.SndErrors = SL[9]; |
240 | I.SndDropped = SL[10]; | 240 | I.SndDropped = SL[10]; |
241 | I.Collisions = SL[12]; | 241 | I.Collisions = SL[12]; |
242 | break; | 242 | break; |
243 | case 3 : | 243 | case 3 : |
244 | I.RcvBytes = SL[1]; | 244 | I.RcvBytes = SL[1]; |
245 | I.RcvErrors = SL[3]; | 245 | I.RcvErrors = SL[3]; |
246 | I.RcvDropped = SL[4]; | 246 | I.RcvDropped = SL[4]; |
247 | I.SndBytes = SL[9]; | 247 | I.SndBytes = SL[9]; |
248 | I.SndErrors = SL[11]; | 248 | I.SndErrors = SL[11]; |
249 | I.SndDropped = SL[12]; | 249 | I.SndDropped = SL[12]; |
250 | I.Collisions = SL[14]; | 250 | I.Collisions = SL[14]; |
251 | break; | 251 | break; |
252 | } | 252 | } |
253 | break; | 253 | break; |
254 | } | 254 | } |
255 | } | 255 | } |
256 | 256 | ||
257 | // | 257 | // |
258 | // THIS UPDATES THE LIST -> INTERFACES ARE NOT DELETED BUT | 258 | // THIS UPDATES THE LIST -> INTERFACES ARE NOT DELETED BUT |
259 | // FLAGGED AS ! 'IsUp' IF NO LONGER PRESENT | 259 | // FLAGGED AS ! 'IsUp' IF NO LONGER PRESENT |
260 | // | 260 | // |
261 | 261 | ||
262 | void System::probeInterfaces( void ) { | 262 | void System::probeInterfaces( void ) { |
263 | 263 | ||
264 | // probe interfaces | 264 | // probe interfaces |
265 | int sockfd; | 265 | int sockfd; |
266 | // get list of all interfaces | 266 | // get list of all interfaces |
267 | struct ifreq ifrs; | 267 | struct ifreq ifrs; |
268 | InterfaceInfo * IFI; | 268 | InterfaceInfo * IFI; |
269 | 269 | ||
270 | // flag all as 'down' | 270 | // flag all as 'down' |
271 | for( QDictIterator<InterfaceInfo> it( ProbedInterfaces ); | 271 | for( QDictIterator<InterfaceInfo> it( ProbedInterfaces ); |
272 | it.current(); | 272 | it.current(); |
273 | ++it ) { | 273 | ++it ) { |
274 | it.current()->IsUp = 0; | 274 | it.current()->IsUp = 0; |
275 | } | 275 | } |
276 | 276 | ||
277 | sockfd = socket(PF_INET, SOCK_DGRAM, 0); | 277 | sockfd = socket(PF_INET, SOCK_DGRAM, 0); |
278 | if(sockfd == -1) { | 278 | if(sockfd == -1) { |
279 | odebug << "Cannot open INET socket " | 279 | odebug << "Cannot open INET socket " |
280 | << errno | 280 | << errno |
281 | << " " | 281 | << " " |
282 | << strerror( errno ) | 282 | << strerror( errno ) |
283 | << oendl; | 283 | << oendl; |
284 | return; | 284 | return; |
285 | } | 285 | } |
286 | 286 | ||
287 | // read interfaces from /proc/dev/net | 287 | // read interfaces from /proc/dev/net |
288 | // SIOCGIFCONF does not return ALL interfaces ???!? | 288 | // SIOCGIFCONF does not return ALL interfaces ???!? |
289 | ProcDevNet = new QFile(PROCNETDEV); | 289 | ProcDevNet = new QFile(PROCNETDEV); |
290 | if( ! ProcDevNet->open(IO_ReadOnly) ) { | 290 | if( ! ProcDevNet->open(IO_ReadOnly) ) { |
291 | odebug << "Cannot open " | 291 | odebug << "Cannot open " |
292 | << PROCNETDEV | 292 | << PROCNETDEV |
293 | << " " | 293 | << " " |
294 | << errno | 294 | << errno |
295 | << " " | 295 | << " " |
296 | << strerror( errno ) | 296 | << strerror( errno ) |
297 | << oendl; | 297 | << oendl; |
298 | delete ProcDevNet; | 298 | delete ProcDevNet; |
299 | ProcDevNet =0; | 299 | ProcDevNet =0; |
300 | ::close( sockfd ); | 300 | ::close( sockfd ); |
301 | return; | 301 | return; |
302 | } | 302 | } |
303 | 303 | ||
304 | QString line; | 304 | QString line; |
305 | QString NicName; | 305 | QString NicName; |
306 | QTextStream procTs(ProcDevNet); | 306 | QTextStream procTs(ProcDevNet); |
307 | int loc = -1; | 307 | int loc = -1; |
308 | 308 | ||
309 | procTs.readLine(); // eat a line | 309 | procTs.readLine(); // eat a line |
310 | procTs.readLine(); // eat a line | 310 | procTs.readLine(); // eat a line |
311 | while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { | 311 | while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { |
312 | if((loc = line.find(":")) == -1) { | 312 | if((loc = line.find(":")) == -1) { |
313 | continue; | 313 | continue; |
314 | } | 314 | } |
315 | 315 | ||
316 | NicName = line.left(loc); | 316 | NicName = line.left(loc); |
317 | 317 | ||
318 | // set name for ioctl | 318 | // set name for ioctl |
319 | strcpy( ifrs.ifr_name, NicName.latin1() ); | 319 | strcpy( ifrs.ifr_name, NicName.latin1() ); |
320 | 320 | ||
321 | if ( ! ( IFI = ProbedInterfaces.find( NicName ) ) ) { | 321 | if ( ! ( IFI = ProbedInterfaces.find( NicName ) ) ) { |
322 | // new nic | 322 | // new nic |
323 | Log(("New NIC found : %s\n", NicName.latin1())); | 323 | Log(("New NIC found : %s\n", NicName.latin1())); |
324 | IFI = new InterfaceInfo; | 324 | IFI = new InterfaceInfo; |
325 | IFI->Name = line.left(loc); | 325 | IFI->Name = line.left(loc); |
326 | IFI->Collection = 0; | 326 | IFI->Collection = 0; |
327 | ProbedInterfaces.insert( IFI->Name, IFI ); | 327 | ProbedInterfaces.insert( IFI->Name, IFI ); |
328 | 328 | ||
329 | // get dynamic info | 329 | // get dynamic info |
330 | if( ioctl(sockfd, SIOCGIFFLAGS, &ifrs) >= 0 ) { | 330 | if( ioctl(sockfd, SIOCGIFFLAGS, &ifrs) >= 0 ) { |
331 | IFI->IsPointToPoint = ((ifrs.ifr_flags & IFF_POINTOPOINT) == IFF_POINTOPOINT); | 331 | IFI->IsPointToPoint = ((ifrs.ifr_flags & IFF_POINTOPOINT) == IFF_POINTOPOINT); |
332 | } else { | 332 | } else { |
333 | IFI->IsPointToPoint = 0; | 333 | IFI->IsPointToPoint = 0; |
334 | } | 334 | } |
335 | 335 | ||
336 | // settings that never change | 336 | // settings that never change |
337 | IFI->DstAddress = ""; | 337 | IFI->DstAddress = ""; |
338 | 338 | ||
339 | if( IFI->IsPointToPoint ) { | 339 | if( IFI->IsPointToPoint ) { |
340 | if( ioctl(sockfd, SIOCGIFDSTADDR, &ifrs) >= 0 ) { | 340 | if( ioctl(sockfd, SIOCGIFDSTADDR, &ifrs) >= 0 ) { |
341 | IFI->DstAddress = | 341 | IFI->DstAddress = |
342 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_dstaddr)->sin_addr); | 342 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_dstaddr)->sin_addr); |
343 | } | 343 | } |
344 | } | 344 | } |
345 | 345 | ||
346 | IFI->CardType = 999999; | 346 | IFI->CardType = 999999; |
347 | IFI->MACAddress = ""; | 347 | IFI->MACAddress = ""; |
348 | 348 | ||
349 | if( ioctl(sockfd, SIOCGIFHWADDR, &ifrs) >= 0 ) { | 349 | if( ioctl(sockfd, SIOCGIFHWADDR, &ifrs) >= 0 ) { |
350 | Log(("Family for NIC %s : %d\n", IFI->Name.latin1(), | 350 | Log(("Family for NIC %s : %d\n", IFI->Name.latin1(), |
351 | ifrs.ifr_hwaddr.sa_family )); | 351 | ifrs.ifr_hwaddr.sa_family )); |
352 | 352 | ||
353 | IFI->CardType = ifrs.ifr_hwaddr.sa_family; | 353 | IFI->CardType = ifrs.ifr_hwaddr.sa_family; |
354 | switch( ifrs.ifr_hwaddr.sa_family ) { | 354 | switch( ifrs.ifr_hwaddr.sa_family ) { |
355 | case ARPHRD_ETHER : // regular MAC address | 355 | case ARPHRD_ETHER : // regular MAC address |
356 | // valid address -> convert to regular ::: format | 356 | // valid address -> convert to regular ::: format |
357 | // length = 6 bytes = 12 DIGITS -> 6 : | 357 | // length = 6 bytes = 12 DIGITS -> 6 : |
358 | IFI->MACAddress.sprintf( | 358 | IFI->MACAddress.sprintf( |
359 | "%c%c:%c%c:%c%c:%c%c:%c%c:%c%c", | 359 | "%c%c:%c%c:%c%c:%c%c:%c%c:%c%c", |
360 | HN( ifrs.ifr_hwaddr.sa_data[0] ), | 360 | HN( ifrs.ifr_hwaddr.sa_data[0] ), |
361 | LN( ifrs.ifr_hwaddr.sa_data[0] ), | 361 | LN( ifrs.ifr_hwaddr.sa_data[0] ), |
362 | HN( ifrs.ifr_hwaddr.sa_data[1] ), | 362 | HN( ifrs.ifr_hwaddr.sa_data[1] ), |
363 | LN( ifrs.ifr_hwaddr.sa_data[1] ), | 363 | LN( ifrs.ifr_hwaddr.sa_data[1] ), |
364 | HN( ifrs.ifr_hwaddr.sa_data[2] ), | 364 | HN( ifrs.ifr_hwaddr.sa_data[2] ), |
365 | LN( ifrs.ifr_hwaddr.sa_data[2] ), | 365 | LN( ifrs.ifr_hwaddr.sa_data[2] ), |
366 | HN( ifrs.ifr_hwaddr.sa_data[3] ), | 366 | HN( ifrs.ifr_hwaddr.sa_data[3] ), |
367 | LN( ifrs.ifr_hwaddr.sa_data[3] ), | 367 | LN( ifrs.ifr_hwaddr.sa_data[3] ), |
368 | HN( ifrs.ifr_hwaddr.sa_data[4] ), | 368 | HN( ifrs.ifr_hwaddr.sa_data[4] ), |
369 | LN( ifrs.ifr_hwaddr.sa_data[4] ), | 369 | LN( ifrs.ifr_hwaddr.sa_data[4] ), |
370 | HN( ifrs.ifr_hwaddr.sa_data[5] ), | 370 | HN( ifrs.ifr_hwaddr.sa_data[5] ), |
371 | LN( ifrs.ifr_hwaddr.sa_data[5] ) | 371 | LN( ifrs.ifr_hwaddr.sa_data[5] ) |
372 | ); | 372 | ); |
373 | break; | 373 | break; |
374 | #ifdef ARPHRD_IEEE1394 | 374 | #ifdef ARPHRD_IEEE1394 |
375 | case ARPHRD_IEEE1394 : // Firewire Eth address | 375 | case ARPHRD_IEEE1394 : // Firewire Eth address |
376 | IFI->MACAddress.sprintf( | 376 | IFI->MACAddress.sprintf( |
377 | "%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-00-00", | 377 | "%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-00-00", |
378 | HN( ifrs.ifr_hwaddr.sa_data[0] ), | 378 | HN( ifrs.ifr_hwaddr.sa_data[0] ), |
379 | LN( ifrs.ifr_hwaddr.sa_data[0] ), | 379 | LN( ifrs.ifr_hwaddr.sa_data[0] ), |
380 | HN( ifrs.ifr_hwaddr.sa_data[1] ), | 380 | HN( ifrs.ifr_hwaddr.sa_data[1] ), |
381 | LN( ifrs.ifr_hwaddr.sa_data[1] ), | 381 | LN( ifrs.ifr_hwaddr.sa_data[1] ), |
382 | HN( ifrs.ifr_hwaddr.sa_data[2] ), | 382 | HN( ifrs.ifr_hwaddr.sa_data[2] ), |
383 | LN( ifrs.ifr_hwaddr.sa_data[2] ), | 383 | LN( ifrs.ifr_hwaddr.sa_data[2] ), |
384 | HN( ifrs.ifr_hwaddr.sa_data[3] ), | 384 | HN( ifrs.ifr_hwaddr.sa_data[3] ), |
385 | LN( ifrs.ifr_hwaddr.sa_data[3] ), | 385 | LN( ifrs.ifr_hwaddr.sa_data[3] ), |
386 | HN( ifrs.ifr_hwaddr.sa_data[4] ), | 386 | HN( ifrs.ifr_hwaddr.sa_data[4] ), |
387 | LN( ifrs.ifr_hwaddr.sa_data[4] ), | 387 | LN( ifrs.ifr_hwaddr.sa_data[4] ), |
388 | HN( ifrs.ifr_hwaddr.sa_data[5] ), | 388 | HN( ifrs.ifr_hwaddr.sa_data[5] ), |
389 | LN( ifrs.ifr_hwaddr.sa_data[5] ), | 389 | LN( ifrs.ifr_hwaddr.sa_data[5] ), |
390 | HN( ifrs.ifr_hwaddr.sa_data[6] ), | 390 | HN( ifrs.ifr_hwaddr.sa_data[6] ), |
391 | LN( ifrs.ifr_hwaddr.sa_data[6] ), | 391 | LN( ifrs.ifr_hwaddr.sa_data[6] ), |
392 | HN( ifrs.ifr_hwaddr.sa_data[7] ), | 392 | HN( ifrs.ifr_hwaddr.sa_data[7] ), |
393 | LN( ifrs.ifr_hwaddr.sa_data[7] ), | 393 | LN( ifrs.ifr_hwaddr.sa_data[7] ), |
394 | HN( ifrs.ifr_hwaddr.sa_data[8] ), | 394 | HN( ifrs.ifr_hwaddr.sa_data[8] ), |
395 | LN( ifrs.ifr_hwaddr.sa_data[8] ), | 395 | LN( ifrs.ifr_hwaddr.sa_data[8] ), |
396 | HN( ifrs.ifr_hwaddr.sa_data[9] ), | 396 | HN( ifrs.ifr_hwaddr.sa_data[9] ), |
397 | LN( ifrs.ifr_hwaddr.sa_data[9] ), | 397 | LN( ifrs.ifr_hwaddr.sa_data[9] ), |
398 | HN( ifrs.ifr_hwaddr.sa_data[10] ), | 398 | HN( ifrs.ifr_hwaddr.sa_data[10] ), |
399 | LN( ifrs.ifr_hwaddr.sa_data[10] ), | 399 | LN( ifrs.ifr_hwaddr.sa_data[10] ), |
400 | HN( ifrs.ifr_hwaddr.sa_data[11] ), | 400 | HN( ifrs.ifr_hwaddr.sa_data[11] ), |
401 | LN( ifrs.ifr_hwaddr.sa_data[11] ), | 401 | LN( ifrs.ifr_hwaddr.sa_data[11] ), |
402 | HN( ifrs.ifr_hwaddr.sa_data[12] ), | 402 | HN( ifrs.ifr_hwaddr.sa_data[12] ), |
403 | LN( ifrs.ifr_hwaddr.sa_data[12] ), | 403 | LN( ifrs.ifr_hwaddr.sa_data[12] ), |
404 | HN( ifrs.ifr_hwaddr.sa_data[13] ), | 404 | HN( ifrs.ifr_hwaddr.sa_data[13] ), |
405 | LN( ifrs.ifr_hwaddr.sa_data[13] ) | 405 | LN( ifrs.ifr_hwaddr.sa_data[13] ) |
406 | ); | 406 | ); |
407 | break; | 407 | break; |
408 | #endif | 408 | #endif |
409 | case ARPHRD_PPP : // PPP | 409 | case ARPHRD_PPP : // PPP |
410 | break; | 410 | break; |
411 | case ARPHRD_IEEE80211 : // WLAN | 411 | case ARPHRD_IEEE80211 : // WLAN |
412 | break; | 412 | break; |
413 | case ARPHRD_IRDA : // IRDA | 413 | case ARPHRD_IRDA : // IRDA |
414 | break; | 414 | break; |
415 | } | 415 | } |
416 | } | 416 | } |
417 | } else // else already probed before -> just update | 417 | } else // else already probed before -> just update |
418 | Log(("Redetected NIC %s\n", NicName.latin1())); | 418 | Log(("Redetected NIC %s\n", NicName.latin1())); |
419 | 419 | ||
420 | // get dynamic info | 420 | // get dynamic info |
421 | if( ioctl(sockfd, SIOCGIFFLAGS, &ifrs) >= 0 ) { | 421 | if( ioctl(sockfd, SIOCGIFFLAGS, &ifrs) >= 0 ) { |
422 | IFI->IsUp = ((ifrs.ifr_flags & IFF_UP) == IFF_UP); | 422 | IFI->IsUp = ((ifrs.ifr_flags & IFF_UP) == IFF_UP); |
423 | IFI->HasMulticast = ((ifrs.ifr_flags & IFF_MULTICAST) == IFF_MULTICAST); | 423 | IFI->HasMulticast = ((ifrs.ifr_flags & IFF_MULTICAST) == IFF_MULTICAST); |
424 | } else { | 424 | } else { |
425 | IFI->IsUp = 0; | 425 | IFI->IsUp = 0; |
426 | IFI->HasMulticast = 0; | 426 | IFI->HasMulticast = 0; |
427 | } | 427 | } |
428 | 428 | ||
429 | if( ioctl(sockfd, SIOCGIFADDR, &ifrs) >= 0 ) { | 429 | if( ioctl(sockfd, SIOCGIFADDR, &ifrs) >= 0 ) { |
430 | IFI->Address = | 430 | IFI->Address = |
431 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_addr)->sin_addr); | 431 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_addr)->sin_addr); |
432 | } else { | 432 | } else { |
433 | IFI->Address = ""; | 433 | IFI->Address = ""; |
434 | IFI->IsUp = 0; | 434 | IFI->IsUp = 0; |
435 | } | 435 | } |
436 | if( ioctl(sockfd, SIOCGIFBRDADDR, &ifrs) >= 0 ) { | 436 | if( ioctl(sockfd, SIOCGIFBRDADDR, &ifrs) >= 0 ) { |
437 | IFI->BCastAddress = | 437 | IFI->BCastAddress = |
438 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_broadaddr)->sin_addr); | 438 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_broadaddr)->sin_addr); |
439 | } else { | 439 | } else { |
440 | IFI->BCastAddress = ""; | 440 | IFI->BCastAddress = ""; |
441 | } | 441 | } |
442 | if( ioctl(sockfd, SIOCGIFNETMASK, &ifrs) >= 0 ) { | 442 | if( ioctl(sockfd, SIOCGIFNETMASK, &ifrs) >= 0 ) { |
443 | IFI->Netmask = | 443 | IFI->Netmask = |
444 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_netmask)->sin_addr); | 444 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_netmask)->sin_addr); |
445 | } else { | 445 | } else { |
446 | IFI->Netmask = ""; | 446 | IFI->Netmask = ""; |
447 | } | 447 | } |
448 | Log(("NIC %s UP ? %d\n", NicName.latin1(), IFI->IsUp )); | 448 | Log(("NIC %s UP ? %d\n", NicName.latin1(), IFI->IsUp )); |
449 | } | 449 | } |
450 | 450 | ||
451 | ::close( sockfd ); | 451 | ::close( sockfd ); |
452 | } | 452 | } |
453 | 453 | ||
454 | InterfaceInfo * System::findInterface( const QString & N ) { | 454 | InterfaceInfo * System::findInterface( const QString & N ) { |
455 | InterfaceInfo * Run; | 455 | InterfaceInfo * Run; |
456 | // has PAN connection UP interface ? | 456 | // has PAN NetworkSetup UP interface ? |
457 | for( QDictIterator<InterfaceInfo> It(ProbedInterfaces); | 457 | for( QDictIterator<InterfaceInfo> It(ProbedInterfaces); |
458 | It.current(); | 458 | It.current(); |
459 | ++It ) { | 459 | ++It ) { |
460 | Run = It.current(); | 460 | Run = It.current(); |
461 | if( N == Run->Name ) { | 461 | if( N == Run->Name ) { |
462 | // this PAN connection is up | 462 | // this PAN NetworkSetup is up |
463 | return Run; | 463 | return Run; |
464 | } | 464 | } |
465 | } | 465 | } |
466 | return 0; | 466 | return 0; |
467 | } | 467 | } |
468 | 468 | ||
469 | #include <stdarg.h> | 469 | #include <stdarg.h> |
470 | static FILE * logf = 0; | 470 | static FILE * logf = 0; |
471 | 471 | ||
472 | void VLog( char * Format, ... ) { | 472 | void VLog( char * Format, ... ) { |
473 | va_list l; | 473 | va_list l; |
474 | 474 | ||
475 | va_start(l, Format ); | 475 | va_start(l, Format ); |
476 | 476 | ||
477 | if( logf == (FILE *)0 ) { | 477 | if( logf == (FILE *)0 ) { |
478 | QString S = getenv("NS2LOG"); | 478 | QString S = getenv("NS2LOG"); |
479 | if( S == "stderr" ) { | 479 | if( S == "stderr" ) { |
480 | logf = stderr; | 480 | logf = stderr; |
481 | } else if( S.isEmpty() ) { | 481 | } else if( S.isEmpty() ) { |
482 | logf = fopen( "/tmp/ns2log", "a" ); | 482 | logf = fopen( "/tmp/ns2log", "a" ); |
483 | } else { | 483 | } else { |
484 | logf = fopen( S, "a" ); | 484 | logf = fopen( S, "a" ); |
485 | } | 485 | } |
486 | 486 | ||
487 | if( ! logf ) { | 487 | if( ! logf ) { |
488 | fprintf( stderr, "Cannot open logfile %s : %d\n", | 488 | fprintf( stderr, "Cannot open logfile %s : %d\n", |
489 | S.latin1(), errno ); | 489 | S.latin1(), errno ); |
490 | logf = (FILE *)1; | 490 | logf = (FILE *)1; |
491 | } else { | 491 | } else { |
492 | fprintf( logf, "____ OPEN LOGFILE ____\n"); | 492 | fprintf( logf, "____ OPEN LOGFILE ____\n"); |
493 | } | 493 | } |
494 | } | 494 | } |
495 | 495 | ||
496 | if( (unsigned long)logf > 1 ) { | 496 | if( (unsigned long)logf > 1 ) { |
497 | vfprintf( logf, Format, l ); | 497 | vfprintf( logf, Format, l ); |
498 | } | 498 | } |
499 | va_end( l ); | 499 | va_end( l ); |
500 | fflush( logf ); | 500 | fflush( logf ); |
501 | 501 | ||
502 | } | 502 | } |
503 | 503 | ||
504 | void LogClose( void ) { | 504 | void LogClose( void ) { |
505 | if( (long)logf > 1 ) { | 505 | if( (long)logf > 1 ) { |
506 | fprintf( logf, "____ CLOSE LOGFILE ____\n"); | 506 | fprintf( logf, "____ CLOSE LOGFILE ____\n"); |
507 | if( logf != stderr ) { | 507 | if( logf != stderr ) { |
508 | fclose( logf ); | 508 | fclose( logf ); |
509 | } | 509 | } |
510 | logf = 0; | 510 | logf = 0; |
511 | } | 511 | } |
512 | } | 512 | } |
513 | 513 | ||
514 | QString removeSpaces( const QString & X ) { | 514 | QString removeSpaces( const QString & X ) { |
515 | QString Y; | 515 | QString Y; |
516 | Y = X.simplifyWhiteSpace(); | 516 | Y = X.simplifyWhiteSpace(); |
517 | Y.replace( QRegExp(" "), "_" ); | 517 | Y.replace( QRegExp(" "), "_" ); |
518 | odebug << X << " **" << Y << "**" << oendl; | 518 | odebug << X << " **" << Y << "**" << oendl; |
519 | return Y; | 519 | return Y; |
520 | } | 520 | } |
521 | 521 | ||
522 | // | 522 | // |
523 | // | 523 | // |
524 | // | 524 | // |
525 | // | 525 | // |
526 | // | 526 | // |
527 | 527 | ||
528 | MyProcess::MyProcess() : QObject(), StdoutBuffer(), StderrBuffer() { | 528 | MyProcess::MyProcess() : QObject(), StdoutBuffer(), StderrBuffer() { |
529 | P = new OProcess(); | 529 | P = new OProcess(); |
530 | connect( P, | 530 | connect( P, |
531 | SIGNAL( receivedStdout(Opie::Core::OProcess*, char*, int ) ), | 531 | SIGNAL( receivedStdout(Opie::Core::OProcess*, char*, int ) ), |
532 | this, | 532 | this, |
533 | SLOT( SLOT_Stdout(Opie::Core::OProcess*,char*,int) ) ); | 533 | SLOT( SLOT_Stdout(Opie::Core::OProcess*,char*,int) ) ); |
534 | 534 | ||
535 | connect( P, | 535 | connect( P, |
536 | SIGNAL( receivedStderr(Opie::Core::OProcess*, char*, int ) ), | 536 | SIGNAL( receivedStderr(Opie::Core::OProcess*, char*, int ) ), |
537 | this, | 537 | this, |
538 | SLOT( SLOT_Stderr(Opie::Core::OProcess*,char*,int) ) ); | 538 | SLOT( SLOT_Stderr(Opie::Core::OProcess*,char*,int) ) ); |
539 | connect( P, | 539 | connect( P, |
540 | SIGNAL( processExited(Opie::Core::OProcess*) ), | 540 | SIGNAL( processExited(Opie::Core::OProcess*) ), |
541 | this, | 541 | this, |
542 | SLOT( SLOT_ProcessExited(Opie::Core::OProcess*) ) ); | 542 | SLOT( SLOT_ProcessExited(Opie::Core::OProcess*) ) ); |
543 | } | 543 | } |
544 | 544 | ||
545 | MyProcess::~MyProcess() { | 545 | MyProcess::~MyProcess() { |
546 | delete P; | 546 | delete P; |
547 | } | 547 | } |
548 | 548 | ||
549 | void MyProcess::SLOT_Stdout( Opie::Core::OProcess * , char * Buf, int len ) { | 549 | void MyProcess::SLOT_Stdout( Opie::Core::OProcess * , char * Buf, int len ) { |
550 | if( EchoMode ) { | 550 | if( EchoMode ) { |
551 | write( 1, Buf, len ); | 551 | write( 1, Buf, len ); |
552 | return; | 552 | return; |
553 | } | 553 | } |
554 | 554 | ||
555 | char * LB = (char *)alloca( len + 1 ); | 555 | char * LB = (char *)alloca( len + 1 ); |
556 | memcpy( LB, Buf, len ); | 556 | memcpy( LB, Buf, len ); |
557 | LB[len] = '\0'; | 557 | LB[len] = '\0'; |
558 | 558 | ||
559 | // now input is zero terminated | 559 | // now input is zero terminated |
560 | StdoutBuffer += LB; | 560 | StdoutBuffer += LB; |
561 | 561 | ||
562 | odebug << "Received " << len << " bytes on stdout" << oendl; | 562 | odebug << "Received " << len << " bytes on stdout" << oendl; |
563 | // see if we have some lines (allow empty lines) | 563 | // see if we have some lines (allow empty lines) |
564 | QStringList SL = QStringList::split( "\n", StdoutBuffer, TRUE ); | 564 | QStringList SL = QStringList::split( "\n", StdoutBuffer, TRUE ); |
565 | 565 | ||
566 | for( unsigned int i = 0; i < SL.count()-1; i ++ ) { | 566 | for( unsigned int i = 0; i < SL.count()-1; i ++ ) { |
567 | Log(( "Stdout : \"%s\"\n", SL[i].latin1() ) ); | 567 | Log(( "Stdout : \"%s\"\n", SL[i].latin1() ) ); |
568 | emit stdoutLine( SL[i] ); | 568 | emit stdoutLine( SL[i] ); |
569 | } | 569 | } |
570 | 570 | ||
571 | // last line is rest | 571 | // last line is rest |
572 | StdoutBuffer = SL[ SL.count()-1 ]; | 572 | StdoutBuffer = SL[ SL.count()-1 ]; |
573 | } | 573 | } |
574 | 574 | ||
575 | void MyProcess::SLOT_Stderr( Opie::Core::OProcess * , char * Buf, int len ) { | 575 | void MyProcess::SLOT_Stderr( Opie::Core::OProcess * , char * Buf, int len ) { |
576 | if( EchoMode ) { | 576 | if( EchoMode ) { |
577 | write( 2, Buf, len ); | 577 | write( 2, Buf, len ); |
578 | return; | 578 | return; |
579 | } | 579 | } |
580 | 580 | ||
581 | char * LB = (char *)alloca( len + 1 ); | 581 | char * LB = (char *)alloca( len + 1 ); |
582 | memcpy( LB, Buf, len ); | 582 | memcpy( LB, Buf, len ); |
583 | LB[len] = '\0'; | 583 | LB[len] = '\0'; |
584 | 584 | ||
585 | // now input is zero terminated | 585 | // now input is zero terminated |
586 | StderrBuffer += LB; | 586 | StderrBuffer += LB; |
587 | 587 | ||
588 | odebug << "Received " << len << " bytes on stderr" << oendl; | 588 | odebug << "Received " << len << " bytes on stderr" << oendl; |
589 | // see if we have some lines (allow empty lines) | 589 | // see if we have some lines (allow empty lines) |
590 | QStringList SL = QStringList::split( "\n", StderrBuffer, TRUE ); | 590 | QStringList SL = QStringList::split( "\n", StderrBuffer, TRUE ); |
591 | 591 | ||
592 | for( unsigned int i = 0; i < SL.count()-1; i ++ ) { | 592 | for( unsigned int i = 0; i < SL.count()-1; i ++ ) { |
593 | Log(( "Stderr : \"%s\"\n", SL[i].latin1() ) ); | 593 | Log(( "Stderr : \"%s\"\n", SL[i].latin1() ) ); |
594 | emit stderrLine( SL[i] ); | 594 | emit stderrLine( SL[i] ); |
595 | } | 595 | } |
596 | 596 | ||
597 | // last line is rest | 597 | // last line is rest |
598 | StderrBuffer = SL[ SL.count()-1 ]; | 598 | StderrBuffer = SL[ SL.count()-1 ]; |
599 | } | 599 | } |
600 | 600 | ||
601 | void MyProcess::SLOT_ProcessExited( Opie::Core::OProcess * ) { | 601 | void MyProcess::SLOT_ProcessExited( Opie::Core::OProcess * ) { |
602 | emit processExited( this ); | 602 | emit processExited( this ); |
603 | } | 603 | } |
diff --git a/noncore/settings/networksettings2/networksettings2/system.h b/noncore/settings/networksettings2/networksettings2/system.h index ebee0d5..794b868 100644 --- a/noncore/settings/networksettings2/networksettings2/system.h +++ b/noncore/settings/networksettings2/networksettings2/system.h | |||
@@ -1,140 +1,140 @@ | |||
1 | #ifndef __SYSTEM__H | 1 | #ifndef __SYSTEM__H |
2 | #define __SYSTEM__H | 2 | #define __SYSTEM__H |
3 | 3 | ||
4 | #include <qstring.h> | 4 | #include <qstring.h> |
5 | 5 | ||
6 | #include <opie2/oprocess.h> | 6 | #include <opie2/oprocess.h> |
7 | 7 | ||
8 | using namespace Opie::Core; | 8 | using namespace Opie::Core; |
9 | 9 | ||
10 | // for hardware types | 10 | // for hardware types |
11 | #include <net/if_arp.h> | 11 | #include <net/if_arp.h> |
12 | #include <qdict.h> | 12 | #include <qdict.h> |
13 | #include <qobject.h> | 13 | #include <qobject.h> |
14 | #include <stdio.h> | 14 | #include <stdio.h> |
15 | 15 | ||
16 | class NodeCollection; | 16 | class NetworkSetup; |
17 | class ANetNodeInstance; | 17 | class ANetNodeInstance; |
18 | class QFile; | 18 | class QFile; |
19 | 19 | ||
20 | class MyProcess : public QObject { | 20 | class MyProcess : public QObject { |
21 | 21 | ||
22 | Q_OBJECT | 22 | Q_OBJECT |
23 | 23 | ||
24 | public : | 24 | public : |
25 | 25 | ||
26 | MyProcess(); | 26 | MyProcess(); |
27 | ~MyProcess(); | 27 | ~MyProcess(); |
28 | 28 | ||
29 | inline OProcess & process() | 29 | inline OProcess & process() |
30 | { return *P; } | 30 | { return *P; } |
31 | 31 | ||
32 | inline void setEchoMode( bool M ) { | 32 | inline void setEchoMode( bool M ) { |
33 | EchoMode = M; | 33 | EchoMode = M; |
34 | } | 34 | } |
35 | 35 | ||
36 | public slots : | 36 | public slots : |
37 | 37 | ||
38 | void SLOT_Stdout( Opie::Core::OProcess * P, char *, int ); | 38 | void SLOT_Stdout( Opie::Core::OProcess * P, char *, int ); |
39 | void SLOT_Stderr( Opie::Core::OProcess * P, char *, int ); | 39 | void SLOT_Stderr( Opie::Core::OProcess * P, char *, int ); |
40 | void SLOT_ProcessExited( Opie::Core::OProcess * P); | 40 | void SLOT_ProcessExited( Opie::Core::OProcess * P); |
41 | 41 | ||
42 | signals : | 42 | signals : |
43 | 43 | ||
44 | void stdoutLine( const QString & ); | 44 | void stdoutLine( const QString & ); |
45 | void stderrLine( const QString & ); | 45 | void stderrLine( const QString & ); |
46 | void processExited( MyProcess * ); | 46 | void processExited( MyProcess * ); |
47 | 47 | ||
48 | private : | 48 | private : |
49 | 49 | ||
50 | QString StdoutBuffer; | 50 | QString StdoutBuffer; |
51 | QString StderrBuffer; | 51 | QString StderrBuffer; |
52 | OProcess * P; | 52 | OProcess * P; |
53 | // output all output to my output | 53 | // output all output to my output |
54 | bool EchoMode; | 54 | bool EchoMode; |
55 | }; | 55 | }; |
56 | 56 | ||
57 | class InterfaceInfo { | 57 | class InterfaceInfo { |
58 | 58 | ||
59 | public : | 59 | public : |
60 | 60 | ||
61 | InterfaceInfo() : | 61 | InterfaceInfo() : |
62 | Name(), | 62 | Name(), |
63 | MACAddress(), | 63 | MACAddress(), |
64 | BCastAddress(), | 64 | BCastAddress(), |
65 | Netmask(), | 65 | Netmask(), |
66 | DstAddress() { | 66 | DstAddress() { |
67 | } | 67 | } |
68 | 68 | ||
69 | NodeCollection * assignedConnection() | 69 | NetworkSetup * assignedToNetworkSetup() |
70 | { return Collection; } | 70 | { return Collection; } |
71 | 71 | ||
72 | void assignConnection( NodeCollection * NNI ) | 72 | void assignToNetworkSetup( NetworkSetup * NNI ) |
73 | { Collection = NNI; } | 73 | { Collection = NNI; } |
74 | 74 | ||
75 | NodeCollection * Collection; // connection taking care of me | 75 | NetworkSetup * Collection; // networkSetup taking care of me |
76 | QString Name; // name of interface | 76 | QString Name; // name of interface |
77 | int CardType; // type of card | 77 | int CardType; // type of card |
78 | QString MACAddress; // MAC address | 78 | QString MACAddress; // MAC address |
79 | QString Address; // IP Address | 79 | QString Address; // IP Address |
80 | QString BCastAddress; // Broadcast Address | 80 | QString BCastAddress; // Broadcast Address |
81 | QString Netmask; // Netmask | 81 | QString Netmask; // Netmask |
82 | QString DstAddress; // Peer address (if P-t-P) | 82 | QString DstAddress; // Peer address (if P-t-P) |
83 | bool IsUp; // interface is UP | 83 | bool IsUp; // interface is UP |
84 | bool HasMulticast; // Supports Multicast | 84 | bool HasMulticast; // Supports Multicast |
85 | bool IsPointToPoint; // IsPointToPoint card | 85 | bool IsPointToPoint; // IsPointToPoint card |
86 | 86 | ||
87 | QString RcvBytes; | 87 | QString RcvBytes; |
88 | QString SndBytes; | 88 | QString SndBytes; |
89 | QString RcvErrors; | 89 | QString RcvErrors; |
90 | QString SndErrors; | 90 | QString SndErrors; |
91 | QString RcvDropped; | 91 | QString RcvDropped; |
92 | QString SndDropped; | 92 | QString SndDropped; |
93 | QString Collisions; | 93 | QString Collisions; |
94 | }; | 94 | }; |
95 | 95 | ||
96 | class System : public QObject { | 96 | class System : public QObject { |
97 | 97 | ||
98 | Q_OBJECT | 98 | Q_OBJECT |
99 | 99 | ||
100 | public : | 100 | public : |
101 | 101 | ||
102 | System( void ); | 102 | System( void ); |
103 | ~System( void ); | 103 | ~System( void ); |
104 | 104 | ||
105 | QDict<InterfaceInfo> & interfaces( void ); | 105 | QDict<InterfaceInfo> & interfaces( void ); |
106 | InterfaceInfo * interface( const QString& N ) | 106 | InterfaceInfo * interface( const QString& N ) |
107 | { return interfaces()[N]; } | 107 | { return interfaces()[N]; } |
108 | 108 | ||
109 | // exec command as root | 109 | // exec command as root |
110 | int runAsRoot( QStringList & S, MyProcess * Prc = 0 ); | 110 | int runAsRoot( QStringList & S, MyProcess * Prc = 0 ); |
111 | 111 | ||
112 | // exec command as user | 112 | // exec command as user |
113 | int execAsUser( QStringList & Cmd, bool Synchronous = 0 ); | 113 | int execAsUser( QStringList & Cmd, bool Synchronous = 0 ); |
114 | 114 | ||
115 | // refresh stats for this interface | 115 | // refresh stats for this interface |
116 | void refreshStatistics( InterfaceInfo & ); | 116 | void refreshStatistics( InterfaceInfo & ); |
117 | 117 | ||
118 | // reloads interfaces | 118 | // reloads interfaces |
119 | void probeInterfaces( void ); | 119 | void probeInterfaces( void ); |
120 | 120 | ||
121 | InterfaceInfo * findInterface( const QString & DevName ); | 121 | InterfaceInfo * findInterface( const QString & DevName ); |
122 | 122 | ||
123 | private slots : | 123 | private slots : |
124 | 124 | ||
125 | void SLOT_ProcessExited( MyProcess * ); | 125 | void SLOT_ProcessExited( MyProcess * ); |
126 | 126 | ||
127 | signals : | 127 | signals : |
128 | 128 | ||
129 | void stdoutLine( const QString & ); | 129 | void stdoutLine( const QString & ); |
130 | void stderrLine( const QString & ); | 130 | void stderrLine( const QString & ); |
131 | void processEvent( const QString & ); | 131 | void processEvent( const QString & ); |
132 | 132 | ||
133 | private : | 133 | private : |
134 | 134 | ||
135 | QDict<InterfaceInfo> ProbedInterfaces; | 135 | QDict<InterfaceInfo> ProbedInterfaces; |
136 | FILE * OutputOfCmd; | 136 | FILE * OutputOfCmd; |
137 | QFile * ProcDevNet; | 137 | QFile * ProcDevNet; |
138 | }; | 138 | }; |
139 | 139 | ||
140 | #endif | 140 | #endif |
diff --git a/noncore/settings/networksettings2/nsdata.cpp b/noncore/settings/networksettings2/nsdata.cpp index 39031ed..b4622fc 100644 --- a/noncore/settings/networksettings2/nsdata.cpp +++ b/noncore/settings/networksettings2/nsdata.cpp | |||
@@ -1,787 +1,787 @@ | |||
1 | #include <stdlib.h> | 1 | #include <stdlib.h> |
2 | #include <opie2/odebug.h> | 2 | #include <opie2/odebug.h> |
3 | #include <qpe/qpeapplication.h> | 3 | #include <qpe/qpeapplication.h> |
4 | #include <qtextstream.h> | 4 | #include <qtextstream.h> |
5 | #include <qdir.h> | 5 | #include <qdir.h> |
6 | #include <qfile.h> | 6 | #include <qfile.h> |
7 | #include <qfileinfo.h> | 7 | #include <qfileinfo.h> |
8 | 8 | ||
9 | #include "nsdata.h" | 9 | #include "nsdata.h" |
10 | #include <netnode.h> | 10 | #include <netnode.h> |
11 | #include <resources.h> | 11 | #include <resources.h> |
12 | 12 | ||
13 | static QString CfgFile; | 13 | static QString CfgFile; |
14 | 14 | ||
15 | NetworkSettingsData::NetworkSettingsData( void ) { | 15 | NetworkSettingsData::NetworkSettingsData( void ) { |
16 | // init global resources structure | 16 | // init global resources structure |
17 | new TheNSResources(); | 17 | new TheNSResources(); |
18 | 18 | ||
19 | if( ! NSResources->userKnown() ) { | 19 | if( ! NSResources->userKnown() ) { |
20 | Log(( "Cannot detect qpe user HOME=\"%s\" USER=\"%s\"\n", | 20 | Log(( "Cannot detect qpe user HOME=\"%s\" USER=\"%s\"\n", |
21 | NSResources->currentUser().HomeDir.latin1(), | 21 | NSResources->currentUser().HomeDir.latin1(), |
22 | NSResources->currentUser().UserName.latin1() )); | 22 | NSResources->currentUser().UserName.latin1() )); |
23 | return; | 23 | return; |
24 | } | 24 | } |
25 | 25 | ||
26 | CfgFile.sprintf( "%s/Settings/NS2.conf", | 26 | CfgFile.sprintf( "%s/Settings/NS2.conf", |
27 | NSResources->currentUser().HomeDir.latin1() ); | 27 | NSResources->currentUser().HomeDir.latin1() ); |
28 | Log(( "Cfg from %s\n", CfgFile.latin1() )); | 28 | Log(( "Cfg from %s\n", CfgFile.latin1() )); |
29 | 29 | ||
30 | // load settings | 30 | // load settings |
31 | loadSettings(); | 31 | loadSettings(); |
32 | 32 | ||
33 | // assign interfaces by scanning /tmp/profile-%s.Up files | 33 | // assign interfaces by scanning /tmp/profile-%s.Up files |
34 | { QDir D( "/tmp" ); | 34 | { QDir D( "/tmp" ); |
35 | QFile * F = new QFile; | 35 | QFile * F = new QFile; |
36 | int profilenr; | 36 | int profilenr; |
37 | QString interfacename; | 37 | QString interfacename; |
38 | QTextStream TS ( F ); | 38 | QTextStream TS ( F ); |
39 | 39 | ||
40 | QStringList SL = D.entryList( "profile-*.up"); | 40 | QStringList SL = D.entryList( "profile-*.up"); |
41 | 41 | ||
42 | Log(( "System reports %d interfaces. Found %d up\n", | 42 | Log(( "System reports %d interfaces. Found %d up\n", |
43 | NSResources->system().interfaces().count(), | 43 | NSResources->system().interfaces().count(), |
44 | SL.count() )); | 44 | SL.count() )); |
45 | 45 | ||
46 | for ( QStringList::Iterator it = SL.begin(); | 46 | for ( QStringList::Iterator it = SL.begin(); |
47 | it != SL.end(); | 47 | it != SL.end(); |
48 | ++it ) { | 48 | ++it ) { |
49 | profilenr = atol( (*it).mid( 8 ).latin1() ); | 49 | profilenr = atol( (*it).mid( 8 ).latin1() ); |
50 | // read the interface store int 'up' | 50 | // read the interface store int 'up' |
51 | F->setName( D.path() + "/" + (*it) ); | 51 | F->setName( D.path() + "/" + (*it) ); |
52 | if( F->open( IO_ReadOnly ) ) { | 52 | if( F->open( IO_ReadOnly ) ) { |
53 | NodeCollection * NC; | 53 | NetworkSetup * NC; |
54 | interfacename = TS.readLine(); | 54 | interfacename = TS.readLine(); |
55 | F->close(); | 55 | F->close(); |
56 | 56 | ||
57 | Log(( "Assign interface %s to Profile nr %d\n", | 57 | Log(( "Assign interface %s to Profile nr %d\n", |
58 | interfacename.latin1(), profilenr )); | 58 | interfacename.latin1(), profilenr )); |
59 | 59 | ||
60 | NC = NSResources->getConnection( profilenr ); | 60 | NC = NSResources->getNetworkSetup( profilenr ); |
61 | if( NC ) { | 61 | if( NC ) { |
62 | NC->assignInterface( | 62 | NC->assignInterface( |
63 | NSResources->system().findInterface( interfacename ) ); | 63 | NSResources->system().findInterface( interfacename ) ); |
64 | Log(( "Assign interface %p\n", | 64 | Log(( "Assign interface %p\n", |
65 | NC->assignedInterface() )); | 65 | NC->assignedInterface() )); |
66 | } else { | 66 | } else { |
67 | Log(( "Profile nr %d no longer defined\n", | 67 | Log(( "Profile nr %d no longer defined\n", |
68 | profilenr )); | 68 | profilenr )); |
69 | } | 69 | } |
70 | } | 70 | } |
71 | } | 71 | } |
72 | } | 72 | } |
73 | } | 73 | } |
74 | 74 | ||
75 | // saving is done by caller | 75 | // saving is done by caller |
76 | NetworkSettingsData::~NetworkSettingsData( void ) { | 76 | NetworkSettingsData::~NetworkSettingsData( void ) { |
77 | delete NSResources; | 77 | delete NSResources; |
78 | } | 78 | } |
79 | 79 | ||
80 | void NetworkSettingsData::loadSettings( void ) { | 80 | void NetworkSettingsData::loadSettings( void ) { |
81 | QString Line, S; | 81 | QString Line, S; |
82 | QString Attr, Value; | 82 | QString Attr, Value; |
83 | long idx; | 83 | long idx; |
84 | 84 | ||
85 | QFile F( CfgFile ); | 85 | QFile F( CfgFile ); |
86 | QTextStream TS( &F ); | 86 | QTextStream TS( &F ); |
87 | 87 | ||
88 | ForceModified = 0; | 88 | ForceModified = 0; |
89 | 89 | ||
90 | do { | 90 | do { |
91 | 91 | ||
92 | if( ! F.open(IO_ReadOnly) ) | 92 | if( ! F.open(IO_ReadOnly) ) |
93 | break; | 93 | break; |
94 | 94 | ||
95 | /* load the file -> | 95 | /* load the file -> |
96 | 96 | ||
97 | FORMAT : | 97 | FORMAT : |
98 | 98 | ||
99 | [NETNODETYPE] | 99 | [NETNODETYPE] |
100 | Entries ... | 100 | Entries ... |
101 | <EMPTYLINE> | 101 | <EMPTYLINE> |
102 | [connection] | 102 | [NetworkSetup] |
103 | Name=Name | 103 | Name=Name |
104 | Node=Name | 104 | Node=Name |
105 | <EMPTYLINE> | 105 | <EMPTYLINE> |
106 | */ | 106 | */ |
107 | while( ! TS.atEnd() ) { | 107 | while( ! TS.atEnd() ) { |
108 | S = Line = TS.readLine(); | 108 | S = Line = TS.readLine(); |
109 | 109 | ||
110 | if ( S.isEmpty() || S[0] != '[' ) | 110 | if ( S.isEmpty() || S[0] != '[' ) |
111 | continue; | 111 | continue; |
112 | 112 | ||
113 | S = S.mid( 1, S.length()-2 ); | 113 | S = S.mid( 1, S.length()-2 ); |
114 | 114 | ||
115 | if( ! NSResources ) { | 115 | if( ! NSResources ) { |
116 | continue; | 116 | continue; |
117 | } | 117 | } |
118 | 118 | ||
119 | if( S == "connection" ) { | 119 | if( S == "NetworkSetup" ) { |
120 | // load connections -> collections of nodes | 120 | // load NetworkSetups -> collections of nodes |
121 | bool Dangling; | 121 | bool Dangling; |
122 | NodeCollection * NC = new NodeCollection( TS, Dangling ); | 122 | NetworkSetup * NC = new NetworkSetup( TS, Dangling ); |
123 | NSResources->addConnection( NC, Dangling ); | 123 | NSResources->addNetworkSetup( NC, Dangling ); |
124 | } else { | 124 | } else { |
125 | ANetNode * NN = 0; | 125 | ANetNode * NN = 0; |
126 | ANetNodeInstance* NNI = 0; | 126 | ANetNodeInstance* NNI = 0; |
127 | if( S.startsWith( "nodetype " ) ) { | 127 | if( S.startsWith( "nodetype " ) ) { |
128 | S = S.mid( 9, S.length()-9 ); | 128 | S = S.mid( 9, S.length()-9 ); |
129 | S = deQuote(S); | 129 | S = deQuote(S); |
130 | // try to find netnode | 130 | // try to find netnode |
131 | NN = NSResources->findNetNode( S ); | 131 | NN = NSResources->findNetNode( S ); |
132 | } else { | 132 | } else { |
133 | // try to find instance | 133 | // try to find instance |
134 | NNI = NSResources->createNodeInstance( S ); | 134 | NNI = NSResources->createNodeInstance( S ); |
135 | } | 135 | } |
136 | 136 | ||
137 | if( NN == 0 && NNI == 0 ) { | 137 | if( NN == 0 && NNI == 0 ) { |
138 | LeftOvers.append( Line ); | 138 | LeftOvers.append( Line ); |
139 | do { | 139 | do { |
140 | Line = TS.readLine(); | 140 | Line = TS.readLine(); |
141 | // store even delimiter | 141 | // store even delimiter |
142 | LeftOvers.append( Line ); | 142 | LeftOvers.append( Line ); |
143 | } while ( ! Line.isEmpty() ); | 143 | } while ( ! Line.isEmpty() ); |
144 | 144 | ||
145 | //next section | 145 | //next section |
146 | continue; | 146 | continue; |
147 | } | 147 | } |
148 | 148 | ||
149 | // read entries of this section | 149 | // read entries of this section |
150 | do { | 150 | do { |
151 | S = Line = TS.readLine(); | 151 | S = Line = TS.readLine(); |
152 | 152 | ||
153 | if( S.isEmpty() ) { | 153 | if( S.isEmpty() ) { |
154 | // empty line | 154 | // empty line |
155 | break; | 155 | break; |
156 | } | 156 | } |
157 | idx = S.find( '=' ); | 157 | idx = S.find( '=' ); |
158 | if( idx > 0 ) { | 158 | if( idx > 0 ) { |
159 | Attr = S.left( idx ); | 159 | Attr = S.left( idx ); |
160 | Value = S.mid( idx+1, S.length() ); | 160 | Value = S.mid( idx+1, S.length() ); |
161 | } else { | 161 | } else { |
162 | Value=""; | 162 | Value=""; |
163 | Attr = S; | 163 | Attr = S; |
164 | } | 164 | } |
165 | 165 | ||
166 | Value.stripWhiteSpace(); | 166 | Value.stripWhiteSpace(); |
167 | Attr.stripWhiteSpace(); | 167 | Attr.stripWhiteSpace(); |
168 | Attr.lower(); | 168 | Attr.lower(); |
169 | // dequote Attr | 169 | // dequote Attr |
170 | Value = deQuote(Value); | 170 | Value = deQuote(Value); |
171 | 171 | ||
172 | if( NN ) { | 172 | if( NN ) { |
173 | // set the attribute | 173 | // set the attribute |
174 | NN->setAttribute( Attr, Value ); | 174 | NN->setAttribute( Attr, Value ); |
175 | } else { | 175 | } else { |
176 | // set the attribute | 176 | // set the attribute |
177 | NNI->setAttribute( Attr, Value ); | 177 | NNI->setAttribute( Attr, Value ); |
178 | } | 178 | } |
179 | } while( 1 ); | 179 | } while( 1 ); |
180 | 180 | ||
181 | if( NNI ) { | 181 | if( NNI ) { |
182 | // loading from file -> exists | 182 | // loading from file -> exists |
183 | Log( ( "NodeInstance %s : %p\n", NNI->name(), NNI )); | 183 | Log( ( "NodeInstance %s : %p\n", NNI->name(), NNI )); |
184 | NNI->setNew( FALSE ); | 184 | NNI->setNew( FALSE ); |
185 | NSResources->addNodeInstance( NNI ); | 185 | NSResources->addNodeInstance( NNI ); |
186 | } | 186 | } |
187 | 187 | ||
188 | if( NN ) { | 188 | if( NN ) { |
189 | Log( ( "Node %s : %p\n", NN->name(), NN ) ); | 189 | Log( ( "Node %s : %p\n", NN->name(), NN ) ); |
190 | } | 190 | } |
191 | } | 191 | } |
192 | } | 192 | } |
193 | 193 | ||
194 | } while( 0 ); | 194 | } while( 0 ); |
195 | 195 | ||
196 | } | 196 | } |
197 | 197 | ||
198 | QString NetworkSettingsData::saveSettings( void ) { | 198 | QString NetworkSettingsData::saveSettings( void ) { |
199 | QString ErrS = ""; | 199 | QString ErrS = ""; |
200 | 200 | ||
201 | if( ! isModified() ) | 201 | if( ! isModified() ) |
202 | return ErrS; | 202 | return ErrS; |
203 | 203 | ||
204 | QString S; | 204 | QString S; |
205 | QFile F( CfgFile + ".bup" ); | 205 | QFile F( CfgFile + ".bup" ); |
206 | 206 | ||
207 | Log( ( "Saving settings to %s\n", CfgFile.latin1() )); | 207 | Log( ( "Saving settings to %s\n", CfgFile.latin1() )); |
208 | if( ! F.open( IO_WriteOnly | IO_Truncate ) ) { | 208 | if( ! F.open( IO_WriteOnly | IO_Truncate ) ) { |
209 | ErrS = qApp->translate( "NetworkSettings", | 209 | ErrS = qApp->translate( "NetworkSettings", |
210 | "<p>Could not save setup to \"%1\" !</p>" ). | 210 | "<p>Could not save setup to \"%1\" !</p>" ). |
211 | arg(CfgFile); | 211 | arg(CfgFile); |
212 | // problem | 212 | // problem |
213 | return ErrS; | 213 | return ErrS; |
214 | } | 214 | } |
215 | 215 | ||
216 | QTextStream TS( &F ); | 216 | QTextStream TS( &F ); |
217 | 217 | ||
218 | // save global configs | 218 | // save global configs |
219 | for( QDictIterator<ANetNode> it( NSResources->netNodes() ); | 219 | for( QDictIterator<ANetNode> it( NSResources->netNodes() ); |
220 | it.current(); | 220 | it.current(); |
221 | ++it ) { | 221 | ++it ) { |
222 | TS << "[nodetype " | 222 | TS << "[nodetype " |
223 | << quote( QString( it.current()->name() ) ) | 223 | << quote( QString( it.current()->name() ) ) |
224 | << "]" | 224 | << "]" |
225 | << endl; | 225 | << endl; |
226 | 226 | ||
227 | it.current()->saveAttributes( TS ); | 227 | it.current()->saveAttributes( TS ); |
228 | TS << endl; | 228 | TS << endl; |
229 | } | 229 | } |
230 | 230 | ||
231 | // save leftovers | 231 | // save leftovers |
232 | for ( QStringList::Iterator it = LeftOvers.begin(); | 232 | for ( QStringList::Iterator it = LeftOvers.begin(); |
233 | it != LeftOvers.end(); ++it ) { | 233 | it != LeftOvers.end(); ++it ) { |
234 | TS << (*it) << endl; | 234 | TS << (*it) << endl; |
235 | } | 235 | } |
236 | 236 | ||
237 | // save all netnode instances | 237 | // save all netnode instances |
238 | { ANetNodeInstance * NNI; | 238 | { ANetNodeInstance * NNI; |
239 | for( QDictIterator<ANetNodeInstance> nit( | 239 | for( QDictIterator<ANetNodeInstance> nit( |
240 | NSResources->netNodeInstances()); | 240 | NSResources->netNodeInstances()); |
241 | nit.current(); | 241 | nit.current(); |
242 | ++nit ) { | 242 | ++nit ) { |
243 | // header | 243 | // header |
244 | NNI = nit.current(); | 244 | NNI = nit.current(); |
245 | TS << '[' | 245 | TS << '[' |
246 | << QString(NNI->nodeClass()->name()) | 246 | << QString(NNI->nodeClass()->name()) |
247 | << ']' | 247 | << ']' |
248 | << endl; | 248 | << endl; |
249 | NNI->saveAttributes( TS ); | 249 | NNI->saveAttributes( TS ); |
250 | TS << endl; | 250 | TS << endl; |
251 | } | 251 | } |
252 | } | 252 | } |
253 | 253 | ||
254 | // good connections | 254 | // good NetworkSetups |
255 | { Name2Connection_t & M = NSResources->connections(); | 255 | { Name2NetworkSetup_t & M = NSResources->networkSetups(); |
256 | 256 | ||
257 | // for all connections | 257 | // for all NetworkSetups |
258 | for( QDictIterator<NodeCollection> it(M); | 258 | for( QDictIterator<NetworkSetup> it(M); |
259 | it.current(); | 259 | it.current(); |
260 | ++it ) { | 260 | ++it ) { |
261 | TS << "[connection]" << endl; | 261 | TS << "[NetworkSetup]" << endl; |
262 | it.current()->save(TS); | 262 | it.current()->save(TS); |
263 | } | 263 | } |
264 | } | 264 | } |
265 | 265 | ||
266 | // save dangling connections | 266 | // save dangling NetworkSetups |
267 | { Name2Connection_t & M = NSResources->danglingConnections(); | 267 | { Name2NetworkSetup_t & M = NSResources->danglingNetworkSetups(); |
268 | 268 | ||
269 | // for all connections | 269 | // for all NetworkSetups |
270 | for( QDictIterator<NodeCollection> it(M); | 270 | for( QDictIterator<NetworkSetup> it(M); |
271 | it.current(); | 271 | it.current(); |
272 | ++it ) { | 272 | ++it ) { |
273 | TS << "[connection]" << endl; | 273 | TS << "[NetworkSetup]" << endl; |
274 | it.current()->save(TS); | 274 | it.current()->save(TS); |
275 | } | 275 | } |
276 | } | 276 | } |
277 | 277 | ||
278 | QDir D("."); | 278 | QDir D("."); |
279 | D.rename( CfgFile + ".bup", CfgFile ); | 279 | D.rename( CfgFile + ".bup", CfgFile ); |
280 | 280 | ||
281 | // | 281 | // |
282 | // proper files AND system files regenerated | 282 | // proper files AND system files regenerated |
283 | // | 283 | // |
284 | 284 | ||
285 | 285 | ||
286 | for( QDictIterator<NodeCollection> it(NSResources->connections()); | 286 | for( QDictIterator<NetworkSetup> it(NSResources->networkSetups()); |
287 | it.current(); | 287 | it.current(); |
288 | ++it ) { | 288 | ++it ) { |
289 | it.current()->setModified( 0 ); | 289 | it.current()->setModified( 0 ); |
290 | } | 290 | } |
291 | 291 | ||
292 | return ErrS; | 292 | return ErrS; |
293 | } | 293 | } |
294 | 294 | ||
295 | QString NetworkSettingsData::generateSettings( void ) { | 295 | QString NetworkSettingsData::generateSettings( void ) { |
296 | QString S = ""; | 296 | QString S = ""; |
297 | Name2SystemFile_t & SFM = NSResources->systemFiles(); | 297 | Name2SystemFile_t & SFM = NSResources->systemFiles(); |
298 | Name2Connection_t & M = NSResources->connections(); | 298 | Name2NetworkSetup_t & M = NSResources->networkSetups(); |
299 | NodeCollection * NC; | 299 | NetworkSetup * NC; |
300 | ANetNodeInstance * NNI; | 300 | ANetNodeInstance * NNI; |
301 | ANetNodeInstance * FirstWithData; | 301 | ANetNodeInstance * FirstWithData; |
302 | RuntimeInfo * CurDev; | 302 | RuntimeInfo * CurDev; |
303 | ANetNode * NN, * CurDevNN = 0; | 303 | ANetNode * NN, * CurDevNN = 0; |
304 | long NoOfDevs; | 304 | long NoOfDevs; |
305 | long DevCtStart; | 305 | long DevCtStart; |
306 | bool needToGenerate; | 306 | bool needToGenerate; |
307 | 307 | ||
308 | // regenerate system files | 308 | // regenerate system files |
309 | Log( ( "Generating settings from %s\n", CfgFile.latin1() )); | 309 | Log( ( "Generating settings from %s\n", CfgFile.latin1() )); |
310 | 310 | ||
311 | for( QDictIterator<ANetNode> nnit( NSResources->netNodes() ); | 311 | for( QDictIterator<ANetNode> nnit( NSResources->netNodes() ); |
312 | nnit.current(); | 312 | nnit.current(); |
313 | ++nnit ) { | 313 | ++nnit ) { |
314 | bool FirstItem = 1; | 314 | bool FirstItem = 1; |
315 | bool Generated = 0; | 315 | bool Generated = 0; |
316 | 316 | ||
317 | CurDevNN = nnit.current(); | 317 | CurDevNN = nnit.current(); |
318 | 318 | ||
319 | { QStringList SL; | 319 | { QStringList SL; |
320 | SL = CurDevNN->properFiles(); | 320 | SL = CurDevNN->properFiles(); |
321 | 321 | ||
322 | for ( QStringList::Iterator it = SL.begin(); | 322 | for ( QStringList::Iterator it = SL.begin(); |
323 | it != SL.end(); | 323 | it != SL.end(); |
324 | ++it ) { | 324 | ++it ) { |
325 | 325 | ||
326 | Generated = 0; | 326 | Generated = 0; |
327 | FirstItem = 1; | 327 | FirstItem = 1; |
328 | // iterate over NNI's of this class | 328 | // iterate over NNI's of this class |
329 | for( QDictIterator<ANetNodeInstance> nniit( | 329 | for( QDictIterator<ANetNodeInstance> nniit( |
330 | NSResources->netNodeInstances() ); | 330 | NSResources->netNodeInstances() ); |
331 | nniit.current(); | 331 | nniit.current(); |
332 | ++nniit ) { | 332 | ++nniit ) { |
333 | if( nniit.current()->nodeClass() != CurDevNN ) | 333 | if( nniit.current()->nodeClass() != CurDevNN ) |
334 | // different class | 334 | // different class |
335 | continue; | 335 | continue; |
336 | 336 | ||
337 | // open proper file | 337 | // open proper file |
338 | { SystemFile SF( (*it) ); | 338 | { SystemFile SF( (*it) ); |
339 | 339 | ||
340 | if( ! CurDevNN->openFile( SF, nniit.current()) ) { | 340 | if( ! CurDevNN->openFile( SF, nniit.current()) ) { |
341 | // cannot open | 341 | // cannot open |
342 | S = qApp->translate( "NetworkSettings", | 342 | S = qApp->translate( "NetworkSettings", |
343 | "<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ). | 343 | "<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ). |
344 | arg( (*it) ).arg( CurDevNN->name() ); | 344 | arg( (*it) ).arg( CurDevNN->name() ); |
345 | return S; | 345 | return S; |
346 | } | 346 | } |
347 | 347 | ||
348 | if( ! SF.open() ) { | 348 | if( ! SF.open() ) { |
349 | S = qApp->translate( "NetworkSettings", | 349 | S = qApp->translate( "NetworkSettings", |
350 | "<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ). | 350 | "<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ). |
351 | arg( (*it) ).arg( CurDevNN->name() ); | 351 | arg( (*it) ).arg( CurDevNN->name() ); |
352 | return S; | 352 | return S; |
353 | } | 353 | } |
354 | 354 | ||
355 | // preamble on first | 355 | // preamble on first |
356 | if( FirstItem ) { | 356 | if( FirstItem ) { |
357 | if( CurDevNN->generatePreamble( SF ) == 2 ) { | 357 | if( CurDevNN->generatePreamble( SF ) == 2 ) { |
358 | S = qApp->translate( "NetworkSettings", | 358 | S = qApp->translate( "NetworkSettings", |
359 | "<p>Error in section \"preamble\" for proper file \"%1\" and node \"%2\"</p>" ). | 359 | "<p>Error in section \"preamble\" for proper file \"%1\" and node \"%2\"</p>" ). |
360 | arg( (*it) ). | 360 | arg( (*it) ). |
361 | arg( CurDevNN->name() ); | 361 | arg( CurDevNN->name() ); |
362 | return S; | 362 | return S; |
363 | } | 363 | } |
364 | } | 364 | } |
365 | FirstItem = 0; | 365 | FirstItem = 0; |
366 | Generated = 1; | 366 | Generated = 1; |
367 | 367 | ||
368 | // item specific | 368 | // item specific |
369 | if( nniit.current()->generateFile( SF, -1 ) == 2 ) { | 369 | if( nniit.current()->generateFile( SF, -1 ) == 2 ) { |
370 | S = qApp->translate( "NetworkSettings", | 370 | S = qApp->translate( "NetworkSettings", |
371 | "<p>Error in section for node \"%1\" for proper file \"%2\" and node class \"%3\"</p>" ). | 371 | "<p>Error in section for node \"%1\" for proper file \"%2\" and node class \"%3\"</p>" ). |
372 | arg( nniit.current()->name() ). | 372 | arg( nniit.current()->name() ). |
373 | arg( (*it) ). | 373 | arg( (*it) ). |
374 | arg( CurDevNN->name() ); | 374 | arg( CurDevNN->name() ); |
375 | return S; | 375 | return S; |
376 | } | 376 | } |
377 | } | 377 | } |
378 | } | 378 | } |
379 | 379 | ||
380 | if( Generated ) { | 380 | if( Generated ) { |
381 | SystemFile SF( (*it) ); | 381 | SystemFile SF( (*it) ); |
382 | 382 | ||
383 | if( CurDevNN->openFile( SF, 0 ) && | 383 | if( CurDevNN->openFile( SF, 0 ) && |
384 | ! SF.path().isEmpty() | 384 | ! SF.path().isEmpty() |
385 | ) { | 385 | ) { |
386 | 386 | ||
387 | if( ! SF.open() ) { | 387 | if( ! SF.open() ) { |
388 | S = qApp->translate( "NetworkSettings", | 388 | S = qApp->translate( "NetworkSettings", |
389 | "<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ). | 389 | "<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ). |
390 | arg( (*it) ).arg( CurDevNN->name() ); | 390 | arg( (*it) ).arg( CurDevNN->name() ); |
391 | return S; | 391 | return S; |
392 | } | 392 | } |
393 | 393 | ||
394 | if( CurDevNN->generatePostamble( SF ) == 2 ) { | 394 | if( CurDevNN->generatePostamble( SF ) == 2 ) { |
395 | S = qApp->translate( "NetworkSettings", | 395 | S = qApp->translate( "NetworkSettings", |
396 | "<p>Error in section \"postamble\" for proper file \"%1\" and node \"%2\"</p>" ). | 396 | "<p>Error in section \"postamble\" for proper file \"%1\" and node \"%2\"</p>" ). |
397 | arg( (*it) ). | 397 | arg( (*it) ). |
398 | arg( CurDevNN->name() ); | 398 | arg( CurDevNN->name() ); |
399 | return S; | 399 | return S; |
400 | } | 400 | } |
401 | } // no postamble | 401 | } // no postamble |
402 | } | 402 | } |
403 | } | 403 | } |
404 | } | 404 | } |
405 | } | 405 | } |
406 | 406 | ||
407 | // | 407 | // |
408 | // generate all registered files | 408 | // generate all registered files |
409 | // | 409 | // |
410 | for( QDictIterator<SystemFile> sfit(SFM); | 410 | for( QDictIterator<SystemFile> sfit(SFM); |
411 | sfit.current(); | 411 | sfit.current(); |
412 | ++sfit ) { | 412 | ++sfit ) { |
413 | SystemFile * SF; | 413 | SystemFile * SF; |
414 | 414 | ||
415 | SF = sfit.current(); | 415 | SF = sfit.current(); |
416 | 416 | ||
417 | // reset all | 417 | // reset all |
418 | for( QDictIterator<ANetNode> nnit( NSResources->netNodes() ); | 418 | for( QDictIterator<ANetNode> nnit( NSResources->netNodes() ); |
419 | nnit.current(); | 419 | nnit.current(); |
420 | ++nnit ) { | 420 | ++nnit ) { |
421 | nnit.current()->setDone(0); | 421 | nnit.current()->setDone(0); |
422 | } | 422 | } |
423 | 423 | ||
424 | for( QDictIterator<ANetNodeInstance> nniit( | 424 | for( QDictIterator<ANetNodeInstance> nniit( |
425 | NSResources->netNodeInstances() ); | 425 | NSResources->netNodeInstances() ); |
426 | nniit.current(); | 426 | nniit.current(); |
427 | ++nniit ) { | 427 | ++nniit ) { |
428 | nniit.current()->setDone(0); | 428 | nniit.current()->setDone(0); |
429 | } | 429 | } |
430 | 430 | ||
431 | for( QDictIterator<NodeCollection> ncit(M); | 431 | for( QDictIterator<NetworkSetup> ncit(M); |
432 | ncit.current(); | 432 | ncit.current(); |
433 | ++ncit ) { | 433 | ++ncit ) { |
434 | ncit.current()->setDone(0); | 434 | ncit.current()->setDone(0); |
435 | } | 435 | } |
436 | 436 | ||
437 | Log( ( "Generating system file %s\n", SF->name().latin1() )); | 437 | Log( ( "Generating system file %s\n", SF->name().latin1() )); |
438 | 438 | ||
439 | needToGenerate = 0; | 439 | needToGenerate = 0; |
440 | 440 | ||
441 | // are there netnodes that have instances and need | 441 | // are there netnodes that have instances and need |
442 | // to write data in this system file ? | 442 | // to write data in this system file ? |
443 | for( QDictIterator<ANetNode> nnit( NSResources->netNodes() ); | 443 | for( QDictIterator<ANetNode> nnit( NSResources->netNodes() ); |
444 | ! needToGenerate && nnit.current(); | 444 | ! needToGenerate && nnit.current(); |
445 | ++nnit ) { | 445 | ++nnit ) { |
446 | 446 | ||
447 | NN = nnit.current(); | 447 | NN = nnit.current(); |
448 | 448 | ||
449 | if( NN->hasDataForFile( *SF ) ) { | 449 | if( NN->hasDataForFile( *SF ) ) { |
450 | // netnode can have data | 450 | // netnode can have data |
451 | 451 | ||
452 | // are there instances of this node ? | 452 | // are there instances of this node ? |
453 | for( QDictIterator<ANetNodeInstance> nniit( | 453 | for( QDictIterator<ANetNodeInstance> nniit( |
454 | NSResources->netNodeInstances() ); | 454 | NSResources->netNodeInstances() ); |
455 | ! needToGenerate && nniit.current(); | 455 | ! needToGenerate && nniit.current(); |
456 | ++nniit ) { | 456 | ++nniit ) { |
457 | if( nniit.current()->nodeClass() == NN ) { | 457 | if( nniit.current()->nodeClass() == NN ) { |
458 | // yes | 458 | // yes |
459 | Log(("Node %s has data\n", | 459 | Log(("Node %s has data\n", |
460 | nniit.current()->name() )); | 460 | nniit.current()->name() )); |
461 | needToGenerate = 1; | 461 | needToGenerate = 1; |
462 | break; | 462 | break; |
463 | } | 463 | } |
464 | } | 464 | } |
465 | } | 465 | } |
466 | } | 466 | } |
467 | 467 | ||
468 | if( ! needToGenerate ) { | 468 | if( ! needToGenerate ) { |
469 | // no instances found that might need to write data | 469 | // no instances found that might need to write data |
470 | // in this systemfile | 470 | // in this systemfile |
471 | Log(("No nodes for systemfile %s\n", SF->name().latin1() )); | 471 | Log(("No nodes for systemfile %s\n", SF->name().latin1() )); |
472 | continue; | 472 | continue; |
473 | } | 473 | } |
474 | 474 | ||
475 | // ok generate this system file | 475 | // ok generate this system file |
476 | if( ! SF->open() ) { | 476 | if( ! SF->open() ) { |
477 | S = qApp->translate( "NetworkSettings", | 477 | S = qApp->translate( "NetworkSettings", |
478 | "<p>Cannot open system file \"%1\"</p>" ). | 478 | "<p>Cannot open system file \"%1\"</p>" ). |
479 | arg( SF->name() ); | 479 | arg( SF->name() ); |
480 | return S; | 480 | return S; |
481 | } | 481 | } |
482 | 482 | ||
483 | // global presection for this system file | 483 | // global presection for this system file |
484 | if( ! SF->preSection() ) { | 484 | if( ! SF->preSection() ) { |
485 | S = qApp->translate( "NetworkSettings", | 485 | S = qApp->translate( "NetworkSettings", |
486 | "<p>Error in section \"Preamble\" for file \"%1\"</p>" ). | 486 | "<p>Error in section \"Preamble\" for file \"%1\"</p>" ). |
487 | arg( SF->name() ); | 487 | arg( SF->name() ); |
488 | return S; | 488 | return S; |
489 | } | 489 | } |
490 | 490 | ||
491 | // find connections that want to write to this file | 491 | // find NetworkSetups that want to write to this file |
492 | for( QDictIterator<NodeCollection> ncit(M); | 492 | for( QDictIterator<NetworkSetup> ncit(M); |
493 | ncit.current(); | 493 | ncit.current(); |
494 | ++ncit ) { | 494 | ++ncit ) { |
495 | 495 | ||
496 | NC = ncit.current(); | 496 | NC = ncit.current(); |
497 | 497 | ||
498 | if( NC->done() ) { | 498 | if( NC->done() ) { |
499 | // already done | 499 | // already done |
500 | continue; | 500 | continue; |
501 | } | 501 | } |
502 | 502 | ||
503 | if( ! NC->hasDataForFile( *SF ) ) { | 503 | if( ! NC->hasDataForFile( *SF ) ) { |
504 | // no data | 504 | // no data |
505 | continue; | 505 | continue; |
506 | } | 506 | } |
507 | 507 | ||
508 | Log(("Generating %s for connection %s\n", | 508 | Log(("Generating %s for NetworkSetup %s\n", |
509 | SF->name().latin1(), NC->name().latin1() )); | 509 | SF->name().latin1(), NC->name().latin1() )); |
510 | // find highest item that wants to write data to this file | 510 | // find highest item that wants to write data to this file |
511 | FirstWithData = NC->firstWithDataForFile( *SF ); | 511 | FirstWithData = NC->firstWithDataForFile( *SF ); |
512 | 512 | ||
513 | // find device on which this connection works | 513 | // find device on which this NetworkSetup works |
514 | CurDev = NC->device(); | 514 | CurDev = NC->device(); |
515 | // class of that node | 515 | // class of that node |
516 | CurDevNN = CurDev->netNode()->nodeClass(); | 516 | CurDevNN = CurDev->netNode()->nodeClass(); |
517 | 517 | ||
518 | if( ! FirstWithData->nodeClass()->done() ) { | 518 | if( ! FirstWithData->nodeClass()->done() ) { |
519 | // generate fixed part | 519 | // generate fixed part |
520 | if( ! SF->preDeviceSection( CurDevNN ) ) { | 520 | if( ! SF->preDeviceSection( CurDevNN ) ) { |
521 | S = qApp->translate( "NetworkSettings", | 521 | S = qApp->translate( "NetworkSettings", |
522 | "<p>Error in section \"Pre-Device\" for file \"%1\"</p>" ). | 522 | "<p>Error in section \"Pre-Device\" for file \"%1\"</p>" ). |
523 | arg( SF->name() ); | 523 | arg( SF->name() ); |
524 | return S; | 524 | return S; |
525 | } | 525 | } |
526 | 526 | ||
527 | if( FirstWithData->nodeClass()->generateFile( | 527 | if( FirstWithData->nodeClass()->generateFile( |
528 | *SF, | 528 | *SF, |
529 | FirstWithData, | 529 | FirstWithData, |
530 | -2 ) == 2 ) { | 530 | -2 ) == 2 ) { |
531 | S = qApp->translate( "NetworkSettings", | 531 | S = qApp->translate( "NetworkSettings", |
532 | "<p>Error in section \"Common\" for file \"%1\" and node \"%2\"</p>" ). | 532 | "<p>Error in section \"Common\" for file \"%1\" and node \"%2\"</p>" ). |
533 | arg( SF->name() ). | 533 | arg( SF->name() ). |
534 | arg( CurDevNN->name() ); | 534 | arg( CurDevNN->name() ); |
535 | return S; | 535 | return S; |
536 | } | 536 | } |
537 | FirstWithData->nodeClass()->setDone( 1 ); | 537 | FirstWithData->nodeClass()->setDone( 1 ); |
538 | Log(( "Systemfile %s for node instance %s is done\n", | 538 | Log(( "Systemfile %s for node instance %s is done\n", |
539 | SF->name().latin1(), | 539 | SF->name().latin1(), |
540 | FirstWithData->name() )); | 540 | FirstWithData->name() )); |
541 | } | 541 | } |
542 | 542 | ||
543 | NoOfDevs = 0; | 543 | NoOfDevs = 0; |
544 | DevCtStart = -1; | 544 | DevCtStart = -1; |
545 | 545 | ||
546 | if( SF->knowsDeviceInstances() ) { | 546 | if( SF->knowsDeviceInstances() ) { |
547 | DevCtStart = 0; | 547 | DevCtStart = 0; |
548 | NoOfDevs = CurDevNN->instanceCount(); | 548 | NoOfDevs = CurDevNN->instanceCount(); |
549 | } | 549 | } |
550 | 550 | ||
551 | if( ! CurDev->netNode()->nodeClass()->done() ) { | 551 | if( ! CurDev->netNode()->nodeClass()->done() ) { |
552 | // first time this device is handled | 552 | // first time this device is handled |
553 | // generate common device specific part | 553 | // generate common device specific part |
554 | for( int i = DevCtStart; i < NoOfDevs ; i ++ ) { | 554 | for( int i = DevCtStart; i < NoOfDevs ; i ++ ) { |
555 | 555 | ||
556 | if( FirstWithData->nodeClass()->generateFile( | 556 | if( FirstWithData->nodeClass()->generateFile( |
557 | *SF, CurDev->netNode(), i ) == 2 ) { | 557 | *SF, CurDev->netNode(), i ) == 2 ) { |
558 | S = qApp->translate( "NetworkSettings", | 558 | S = qApp->translate( "NetworkSettings", |
559 | "<p>Error in section \"Device\" for file \"%1\" and node \"%2\"</p>" ). | 559 | "<p>Error in section \"Device\" for file \"%1\" and node \"%2\"</p>" ). |
560 | arg( SF->name() ). | 560 | arg( SF->name() ). |
561 | arg( CurDevNN->name() ); | 561 | arg( CurDevNN->name() ); |
562 | return S; | 562 | return S; |
563 | } | 563 | } |
564 | } | 564 | } |
565 | CurDev->netNode()->nodeClass()->setDone( 1 ); | 565 | CurDev->netNode()->nodeClass()->setDone( 1 ); |
566 | 566 | ||
567 | Log(( "Systemfile %s for Nodeclass %s is done\n", | 567 | Log(( "Systemfile %s for Nodeclass %s is done\n", |
568 | SF->name().latin1(), | 568 | SF->name().latin1(), |
569 | CurDev->netNode()->nodeClass()->name() | 569 | CurDev->netNode()->nodeClass()->name() |
570 | )); | 570 | )); |
571 | } | 571 | } |
572 | 572 | ||
573 | // generate profile specific info | 573 | // generate profile specific info |
574 | // for all nodeconnections that work on the same device | 574 | // for all nodeNetworkSetups that work on the same device |
575 | for( QDictIterator<NodeCollection> ncit2(M); | 575 | for( QDictIterator<NetworkSetup> ncit2(M); |
576 | ncit2.current(); | 576 | ncit2.current(); |
577 | ++ncit2 ) { | 577 | ++ncit2 ) { |
578 | 578 | ||
579 | if( ncit2.current()->device() != CurDev ) { | 579 | if( ncit2.current()->device() != CurDev ) { |
580 | // different device | 580 | // different device |
581 | continue; | 581 | continue; |
582 | } | 582 | } |
583 | 583 | ||
584 | Log(("Connection %s of family %s\n", | 584 | Log(("NetworkSetup %s of family %s\n", |
585 | ncit2.current()->name().latin1(), | 585 | ncit2.current()->name().latin1(), |
586 | CurDev->name() )); | 586 | CurDev->name() )); |
587 | // generate | 587 | // generate |
588 | NNI = ncit2.current()->firstWithDataForFile( *SF ); | 588 | NNI = ncit2.current()->firstWithDataForFile( *SF ); |
589 | for( int i = DevCtStart; i < NoOfDevs ; i ++ ) { | 589 | for( int i = DevCtStart; i < NoOfDevs ; i ++ ) { |
590 | if( ! SF->preNodeSection( NNI, i ) ) { | 590 | if( ! SF->preNodeSection( NNI, i ) ) { |
591 | S = qApp->translate( "NetworkSettings", | 591 | S = qApp->translate( "NetworkSettings", |
592 | "<p>Error in \"Pre-Node Part\" for file \"%1\" and node \"%2\"</p>" ). | 592 | "<p>Error in \"Pre-Node Part\" for file \"%1\" and node \"%2\"</p>" ). |
593 | arg( SF->name() ). | 593 | arg( SF->name() ). |
594 | arg( CurDevNN->name() ); | 594 | arg( CurDevNN->name() ); |
595 | return S; | 595 | return S; |
596 | } | 596 | } |
597 | 597 | ||
598 | switch( NNI->generateFile( *SF, i ) ) { | 598 | switch( NNI->generateFile( *SF, i ) ) { |
599 | case 0 : | 599 | case 0 : |
600 | (*SF) << endl; | 600 | (*SF) << endl; |
601 | break; | 601 | break; |
602 | case 1 : | 602 | case 1 : |
603 | break; | 603 | break; |
604 | case 2 : | 604 | case 2 : |
605 | S = qApp->translate( "NetworkSettings", | 605 | S = qApp->translate( "NetworkSettings", |
606 | "<p>Error in section \"Node\" for file \"%1\" and node \"%2\"</p>" ). | 606 | "<p>Error in section \"Node\" for file \"%1\" and node \"%2\"</p>" ). |
607 | arg( SF->name() ). | 607 | arg( SF->name() ). |
608 | arg( CurDevNN->name() ); | 608 | arg( CurDevNN->name() ); |
609 | return S; | 609 | return S; |
610 | } | 610 | } |
611 | 611 | ||
612 | if( ! SF->postNodeSection( NNI, i ) ) { | 612 | if( ! SF->postNodeSection( NNI, i ) ) { |
613 | S = qApp->translate( "NetworkSettings", | 613 | S = qApp->translate( "NetworkSettings", |
614 | "<p>Error in \"Post-Node Part\" for file \"%1\" and node \"%2\"</p>" ). | 614 | "<p>Error in \"Post-Node Part\" for file \"%1\" and node \"%2\"</p>" ). |
615 | arg( SF->name() ). | 615 | arg( SF->name() ). |
616 | arg( CurDevNN->name() ); | 616 | arg( CurDevNN->name() ); |
617 | return S; | 617 | return S; |
618 | } | 618 | } |
619 | } | 619 | } |
620 | 620 | ||
621 | ncit2.current()->setDone( 1 ); | 621 | ncit2.current()->setDone( 1 ); |
622 | 622 | ||
623 | } | 623 | } |
624 | } | 624 | } |
625 | 625 | ||
626 | if( ! SF->postDeviceSection( CurDevNN ) ) { | 626 | if( ! SF->postDeviceSection( CurDevNN ) ) { |
627 | S = qApp->translate( "NetworkSettings", | 627 | S = qApp->translate( "NetworkSettings", |
628 | "<p>Error in section \"Post-Device\" for file \"%1\" and node \"%2\"</p>" ). | 628 | "<p>Error in section \"Post-Device\" for file \"%1\" and node \"%2\"</p>" ). |
629 | arg( SF->name() ). | 629 | arg( SF->name() ). |
630 | arg( CurDevNN->name() ); | 630 | arg( CurDevNN->name() ); |
631 | return S; | 631 | return S; |
632 | } | 632 | } |
633 | 633 | ||
634 | 634 | ||
635 | if( ! SF->postSection() ) { | 635 | if( ! SF->postSection() ) { |
636 | S = qApp->translate( "NetworkSettings", | 636 | S = qApp->translate( "NetworkSettings", |
637 | "<p>Error in section \"Closure\" for file \"%1\"</p>" ). | 637 | "<p>Error in section \"Closure\" for file \"%1\"</p>" ). |
638 | arg( SF->name() ); | 638 | arg( SF->name() ); |
639 | return S; | 639 | return S; |
640 | } | 640 | } |
641 | 641 | ||
642 | // end of file | 642 | // end of file |
643 | SF->close(); | 643 | SF->close(); |
644 | } | 644 | } |
645 | return S; | 645 | return S; |
646 | } | 646 | } |
647 | 647 | ||
648 | QList<NodeCollection> NetworkSettingsData::collectPossible( | 648 | QList<NetworkSetup> NetworkSettingsData::collectPossible( |
649 | const QString & Interface ) { | 649 | const QString & Interface ) { |
650 | // collect connections that can work on top of this interface | 650 | // collect NetworkSetups that can work on top of this interface |
651 | NodeCollection * NC; | 651 | NetworkSetup * NC; |
652 | QList<NodeCollection> PossibleConnections; | 652 | QList<NetworkSetup> PossibleNetworkSetups; |
653 | Name2Connection_t & M = NSResources->connections(); | 653 | Name2NetworkSetup_t & M = NSResources->networkSetups(); |
654 | 654 | ||
655 | // for all connections | 655 | // for all NetworkSetups |
656 | for( QDictIterator<NodeCollection> it(M); | 656 | for( QDictIterator<NetworkSetup> it(M); |
657 | it.current(); | 657 | it.current(); |
658 | ++it ) { | 658 | ++it ) { |
659 | NC = it.current(); | 659 | NC = it.current(); |
660 | // check if this profile handles the requested interface | 660 | // check if this profile handles the requested interface |
661 | if( NC->handlesInterface( Interface ) && // if different Intf. | 661 | if( NC->handlesInterface( Interface ) && // if different Intf. |
662 | NC->state() != Disabled && // if enabled | 662 | NC->state() != Disabled && // if enabled |
663 | NC->state() != IsUp // if already used | 663 | NC->state() != IsUp // if already used |
664 | ) { | 664 | ) { |
665 | Log( ( "Append %s for %s\n", | 665 | Log( ( "Append %s for %s\n", |
666 | NC->name().latin1(), Interface.latin1() )); | 666 | NC->name().latin1(), Interface.latin1() )); |
667 | PossibleConnections.append( NC ); | 667 | PossibleNetworkSetups.append( NC ); |
668 | } | 668 | } |
669 | } | 669 | } |
670 | return PossibleConnections; | 670 | return PossibleNetworkSetups; |
671 | } | 671 | } |
672 | 672 | ||
673 | 673 | ||
674 | /* | 674 | /* |
675 | Called by the system to see if interface can be brought UP | 675 | Called by the system to see if interface can be brought UP |
676 | 676 | ||
677 | if allowed, echo Interface-allowed else Interface-disallowed | 677 | if allowed, echo Interface-allowed else Interface-disallowed |
678 | */ | 678 | */ |
679 | 679 | ||
680 | bool NetworkSettingsData::canStart( const QString & Interface ) { | 680 | bool NetworkSettingsData::canStart( const QString & Interface ) { |
681 | // load situation | 681 | // load situation |
682 | NodeCollection * NC = 0; | 682 | NetworkSetup * NC = 0; |
683 | QList<NodeCollection> PossibleConnections; | 683 | QList<NetworkSetup> PossibleNetworkSetups; |
684 | 684 | ||
685 | PossibleConnections = collectPossible( Interface ); | 685 | PossibleNetworkSetups = collectPossible( Interface ); |
686 | 686 | ||
687 | Log( ( "for %s : Possiblilies %d\n", | 687 | Log( ( "for %s : Possiblilies %d\n", |
688 | Interface.latin1(), PossibleConnections.count() )); | 688 | Interface.latin1(), PossibleNetworkSetups.count() )); |
689 | switch( PossibleConnections.count() ) { | 689 | switch( PossibleNetworkSetups.count() ) { |
690 | case 0 : // no connections | 690 | case 0 : // no NetworkSetups |
691 | break; | 691 | break; |
692 | case 1 : // one connection | 692 | case 1 : // one NetworkSetup |
693 | NC = PossibleConnections.first(); | 693 | NC = PossibleNetworkSetups.first(); |
694 | break; | 694 | break; |
695 | default : // need to ask user ? | 695 | default : // need to ask user ? |
696 | return 1; | 696 | return 1; |
697 | } | 697 | } |
698 | 698 | ||
699 | if( NC ) { | 699 | if( NC ) { |
700 | switch( NC->state() ) { | 700 | switch( NC->state() ) { |
701 | case Unchecked : | 701 | case Unchecked : |
702 | case Unknown : | 702 | case Unknown : |
703 | case Unavailable : | 703 | case Unavailable : |
704 | case Disabled : | 704 | case Disabled : |
705 | // this profile does not allow interface to be UP | 705 | // this profile does not allow interface to be UP |
706 | // -> try others | 706 | // -> try others |
707 | break; | 707 | break; |
708 | case Off : | 708 | case Off : |
709 | // try to UP the device | 709 | // try to UP the device |
710 | { QString S= NC->setState( Activate ); | 710 | { QString S= NC->setState( Activate ); |
711 | if( ! S.isEmpty() ) { | 711 | if( ! S.isEmpty() ) { |
712 | // could not bring device Online -> try other alters | 712 | // could not bring device Online -> try other alters |
713 | Log(( "disallow %ld for %s : %s\n", | 713 | Log(( "disallow %ld for %s : %s\n", |
714 | NC->number(), Interface.latin1(), S.latin1() )); | 714 | NC->number(), Interface.latin1(), S.latin1() )); |
715 | break; | 715 | break; |
716 | } | 716 | } |
717 | // interface assigned | 717 | // interface assigned |
718 | } | 718 | } |
719 | // FT | 719 | // FT |
720 | case Available : | 720 | case Available : |
721 | case IsUp : // also called for 'ifdown' | 721 | case IsUp : // also called for 'ifdown' |
722 | // device is ready -> done | 722 | // device is ready -> done |
723 | Log(( "allow %ld for %s\n", NC->number(), Interface.latin1())); | 723 | Log(( "allow %ld for %s\n", NC->number(), Interface.latin1())); |
724 | printf( "A%ld%s\n", NC->number(), Interface.latin1() ); | 724 | printf( "A%ld%s\n", NC->number(), Interface.latin1() ); |
725 | return 0; | 725 | return 0; |
726 | } | 726 | } |
727 | } | 727 | } |
728 | 728 | ||
729 | // if we come here no alternatives are possible | 729 | // if we come here no alternatives are possible |
730 | Log(( "disallow %s\n", Interface.latin1())); | 730 | Log(( "disallow %s\n", Interface.latin1())); |
731 | printf( "D-%s\n", Interface.latin1() ); | 731 | printf( "D-%s\n", Interface.latin1() ); |
732 | return 0; | 732 | return 0; |
733 | } | 733 | } |
734 | 734 | ||
735 | bool NetworkSettingsData::isModified( void ) { | 735 | bool NetworkSettingsData::isModified( void ) { |
736 | if( ForceModified ) | 736 | if( ForceModified ) |
737 | return 1; | 737 | return 1; |
738 | 738 | ||
739 | for( QDictIterator<NodeCollection> it(NSResources->connections()); | 739 | for( QDictIterator<NetworkSetup> it(NSResources->networkSetups()); |
740 | it.current(); | 740 | it.current(); |
741 | ++it ) { | 741 | ++it ) { |
742 | if( it.current()->isModified() ) { | 742 | if( it.current()->isModified() ) { |
743 | return 1; | 743 | return 1; |
744 | } | 744 | } |
745 | } | 745 | } |
746 | return 0; | 746 | return 0; |
747 | } | 747 | } |
748 | 748 | ||
749 | bool NetworkSettingsData::couldBeTriggered( const QString & Interface ) { | 749 | bool NetworkSettingsData::couldBeTriggered( const QString & Interface ) { |
750 | // load situation | 750 | // load situation |
751 | QList<NodeCollection> PossibleTriggered; | 751 | QList<NetworkSetup> PossibleTriggered; |
752 | 752 | ||
753 | PossibleTriggered = collectTriggered( Interface ); | 753 | PossibleTriggered = collectTriggered( Interface ); |
754 | 754 | ||
755 | Log( ( "for %s : Possiblilies %d\n", | 755 | Log( ( "for %s : Possiblilies %d\n", |
756 | Interface.latin1(), PossibleTriggered.count() )); | 756 | Interface.latin1(), PossibleTriggered.count() )); |
757 | 757 | ||
758 | return ( PossibleTriggered.count() ) ? 1 : 0; | 758 | return ( PossibleTriggered.count() ) ? 1 : 0; |
759 | } | 759 | } |
760 | 760 | ||
761 | QList<NodeCollection> NetworkSettingsData::collectTriggered( | 761 | QList<NetworkSetup> NetworkSettingsData::collectTriggered( |
762 | const QString & Interface ) { | 762 | const QString & Interface ) { |
763 | 763 | ||
764 | // collect connections that could be triggered by this interface | 764 | // collect NetworkSetups that could be triggered by this interface |
765 | NodeCollection * NC; | 765 | NetworkSetup * NC; |
766 | QList<NodeCollection> PossibleTriggered; | 766 | QList<NetworkSetup> PossibleTriggered; |
767 | 767 | ||
768 | // for all connections | 768 | // for all NetworkSetups |
769 | Name2Connection_t & M = NSResources->connections(); | 769 | Name2NetworkSetup_t & M = NSResources->networkSetups(); |
770 | 770 | ||
771 | for( QDictIterator<NodeCollection> it(M); | 771 | for( QDictIterator<NetworkSetup> it(M); |
772 | it.current(); | 772 | it.current(); |
773 | ++it ) { | 773 | ++it ) { |
774 | NC = it.current(); | 774 | NC = it.current(); |
775 | // check if this profile handles the requested interface | 775 | // check if this profile handles the requested interface |
776 | if( NC->triggeredBy( Interface ) && // if different Intf. | 776 | if( NC->triggeredBy( Interface ) && // if different Intf. |
777 | NC->state() != Disabled && // if enabled | 777 | NC->state() != Disabled && // if enabled |
778 | NC->state() != IsUp // if already used | 778 | NC->state() != IsUp // if already used |
779 | ) { | 779 | ) { |
780 | Log( ( "Append %s for %s\n", | 780 | Log( ( "Append %s for %s\n", |
781 | NC->name().latin1(), Interface.latin1() )); | 781 | NC->name().latin1(), Interface.latin1() )); |
782 | PossibleTriggered.append( NC ); | 782 | PossibleTriggered.append( NC ); |
783 | } | 783 | } |
784 | } | 784 | } |
785 | return PossibleTriggered; | 785 | return PossibleTriggered; |
786 | } | 786 | } |
787 | 787 | ||
diff --git a/noncore/settings/networksettings2/nsdata.h b/noncore/settings/networksettings2/nsdata.h index 5791c1e..b9c216d 100644 --- a/noncore/settings/networksettings2/nsdata.h +++ b/noncore/settings/networksettings2/nsdata.h | |||
@@ -1,38 +1,38 @@ | |||
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 | ||
6 | class NetworkSettingsData { | 6 | class NetworkSettingsData { |
7 | 7 | ||
8 | public : | 8 | public : |
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( void ); | 16 | QString generateSettings( void ); |
17 | 17 | ||
18 | bool isModified( void ); | 18 | bool isModified( void ); |
19 | inline void setModified( bool M ) | 19 | inline void setModified( bool M ) |
20 | { ForceModified = M; } | 20 | { ForceModified = M; } |
21 | 21 | ||
22 | QList<NodeCollection> collectPossible( const QString & Interface ); | 22 | QList<NetworkSetup> collectPossible( const QString & Interface ); |
23 | // return TRUE if we need gui to decide | 23 | // return TRUE if we need gui to decide |
24 | bool canStart( const QString & Interface ); | 24 | bool canStart( const QString & Interface ); |
25 | // return TRUE if there are vpns that could be triggered | 25 | // return TRUE if there are vpns that could be triggered |
26 | // by this interface | 26 | // by this interface |
27 | bool couldBeTriggered( const QString & Interface ); | 27 | bool couldBeTriggered( const QString & Interface ); |
28 | 28 | ||
29 | private : | 29 | private : |
30 | 30 | ||
31 | QList<NodeCollection> collectTriggered( const QString &Interface ); | 31 | QList<NetworkSetup> collectTriggered( const QString &Interface ); |
32 | bool ForceModified; | 32 | bool ForceModified; |
33 | 33 | ||
34 | // collect strings in config file nobody wants | 34 | // collect strings in config file nobody wants |
35 | QStringList LeftOvers; | 35 | QStringList LeftOvers; |
36 | }; | 36 | }; |
37 | 37 | ||
38 | #endif | 38 | #endif |
diff --git a/noncore/settings/networksettings2/opietooth2/OTDriver.cpp b/noncore/settings/networksettings2/opietooth2/OTDriver.cpp index a7ee662..cfd0491 100644 --- a/noncore/settings/networksettings2/opietooth2/OTDriver.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTDriver.cpp | |||
@@ -1,744 +1,744 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | * Copyright (C) 2003 by Mattia Merzi * | 2 | * Copyright (C) 2003 by Mattia Merzi * |
3 | * ottobit@ferrara.linux.it * | 3 | * ottobit@ferrara.linux.it * |
4 | * * | 4 | * * |
5 | * This program is free software; you can redistribute it and/or modify * | 5 | * This program is free software; you can redistribute it and/or modify * |
6 | * it under the terms of the GNU General Public License as published by * | 6 | * it under the terms of the GNU General Public License as published by * |
7 | * the Free Software Foundation; either version 2 of the License, or * | 7 | * the Free Software Foundation; either version 2 of the License, or * |
8 | * (at your option) any later version. * | 8 | * (at your option) any later version. * |
9 | ***************************************************************************/ | 9 | ***************************************************************************/ |
10 | 10 | ||
11 | #include <opie2/odebug.h> | 11 | #include <opie2/odebug.h> |
12 | #include <qtimer.h> | 12 | #include <qtimer.h> |
13 | 13 | ||
14 | #include <sys/poll.h> | 14 | #include <sys/poll.h> |
15 | #include <bluezlib.h> | 15 | #include <bluezlib.h> |
16 | 16 | ||
17 | #include <OTGateway.h> | 17 | #include <OTGateway.h> |
18 | #include <OTDriver.h> | 18 | #include <OTDriver.h> |
19 | #include <OTHCISocket.h> | 19 | #include <OTHCISocket.h> |
20 | 20 | ||
21 | using namespace Opietooth2; | 21 | using namespace Opietooth2; |
22 | 22 | ||
23 | static struct { | 23 | static struct { |
24 | const char *str; | 24 | const char *str; |
25 | unsigned short rev; | 25 | unsigned short rev; |
26 | } csr_map[] = { | 26 | } csr_map[] = { |
27 | { "HCI 11.2 (bc01b)", 114 }, | 27 | { "HCI 11.2 (bc01b)", 114 }, |
28 | { "HCI 11.3 (bc01b)", 115 }, | 28 | { "HCI 11.3 (bc01b)", 115 }, |
29 | { "HCI 12.1 (bc01b)", 119 }, | 29 | { "HCI 12.1 (bc01b)", 119 }, |
30 | { "HCI 12.3 (bc01b)", 134 }, | 30 | { "HCI 12.3 (bc01b)", 134 }, |
31 | { "HCI 12.7 (bc01b)", 188 }, | 31 | { "HCI 12.7 (bc01b)", 188 }, |
32 | { "HCI 12.8 (bc01b)", 218 }, | 32 | { "HCI 12.8 (bc01b)", 218 }, |
33 | { "HCI 12.9 (bc01b)", 283 }, | 33 | { "HCI 12.9 (bc01b)", 283 }, |
34 | { "HCI 13.10 (bc01b)", 309 }, | 34 | { "HCI 13.10 (bc01b)", 309 }, |
35 | { "HCI 13.11 (bc01b)", 351 }, | 35 | { "HCI 13.11 (bc01b)", 351 }, |
36 | { "HCI 16.4 (bc01b)", 523 }, | 36 | { "HCI 16.4 (bc01b)", 523 }, |
37 | { "HCI 14.3 (bc02x)", 272 }, | 37 | { "HCI 14.3 (bc02x)", 272 }, |
38 | { "HCI 14.6 (bc02x)", 336 }, | 38 | { "HCI 14.6 (bc02x)", 336 }, |
39 | { "HCI 14.7 (bc02x)", 373 }, | 39 | { "HCI 14.7 (bc02x)", 373 }, |
40 | { "HCI 14.8 (bc02x)", 487 }, | 40 | { "HCI 14.8 (bc02x)", 487 }, |
41 | { "HCI 15.3 (bc02x)", 443 }, | 41 | { "HCI 15.3 (bc02x)", 443 }, |
42 | { "HCI 16.4 (bc02x)", 525 }, | 42 | { "HCI 16.4 (bc02x)", 525 }, |
43 | { NULL, 0} | 43 | { NULL, 0} |
44 | }; | 44 | }; |
45 | 45 | ||
46 | static char *services[] = { "Positioning", | 46 | static char *services[] = { "Positioning", |
47 | "Networking", | 47 | "Networking", |
48 | "Rendering", | 48 | "Rendering", |
49 | "Capturing", | 49 | "Capturing", |
50 | "Object Transfer", | 50 | "Object Transfer", |
51 | "Audio", | 51 | "Audio", |
52 | "Telephony", | 52 | "Telephony", |
53 | "Information" }; | 53 | "Information" }; |
54 | 54 | ||
55 | static char *major_devices[] = { "Miscellaneous", | 55 | static char *major_devices[] = { "Miscellaneous", |
56 | "Computer", | 56 | "Computer", |
57 | "Phone", | 57 | "Phone", |
58 | "LAN Access", | 58 | "LAN Access", |
59 | "Audio/Video", | 59 | "Audio/Video", |
60 | "Peripheral", | 60 | "Peripheral", |
61 | "Imaging", | 61 | "Imaging", |
62 | "Uncategorized" }; | 62 | "Uncategorized" }; |
63 | 63 | ||
64 | 64 | ||
65 | typedef struct { | 65 | typedef struct { |
66 | short Minor; | 66 | short Minor; |
67 | const char * Description; | 67 | const char * Description; |
68 | } ClassMap_t; | 68 | } ClassMap_t; |
69 | 69 | ||
70 | static ClassMap_t MapMiscClass[] = { | 70 | static ClassMap_t MapMiscClass[] = { |
71 | { -1, "" } | 71 | { -1, "" } |
72 | }; | 72 | }; |
73 | 73 | ||
74 | static ClassMap_t MapUnclassifiedClass[] = { | 74 | static ClassMap_t MapUnclassifiedClass[] = { |
75 | { -1, "" } | 75 | { -1, "" } |
76 | }; | 76 | }; |
77 | 77 | ||
78 | static ClassMap_t MapComputerClass[] = { | 78 | static ClassMap_t MapComputerClass[] = { |
79 | { 0, "Uncategorized" } , | 79 | { 0, "Uncategorized" } , |
80 | { 1, "Desktop workstation" } , | 80 | { 1, "Desktop workstation" } , |
81 | { 2, "Server" } , | 81 | { 2, "Server" } , |
82 | { 3, "Laptop" } , | 82 | { 3, "Laptop" } , |
83 | { 4, "Handheld" } , | 83 | { 4, "Handheld" } , |
84 | { 5, "Palm" } , | 84 | { 5, "Palm" } , |
85 | { 6, "Wearable" }, | 85 | { 6, "Wearable" }, |
86 | { -1, 0 } | 86 | { -1, 0 } |
87 | }; | 87 | }; |
88 | 88 | ||
89 | static ClassMap_t MapPhoneClass[] = { | 89 | static ClassMap_t MapPhoneClass[] = { |
90 | { 0, "Uncategorized" }, | 90 | { 0, "Uncategorized" }, |
91 | { 1, "Cellular" }, | 91 | { 1, "Cellular" }, |
92 | { 2, "Cordless" }, | 92 | { 2, "Cordless" }, |
93 | { 3, "Smart phone" }, | 93 | { 3, "Smart phone" }, |
94 | { 4, "Wired modem or voice gateway" }, | 94 | { 4, "Wired modem or voice gateway" }, |
95 | { 5, "Common ISDN Access" }, | 95 | { 5, "Common ISDN Access" }, |
96 | { 6, "Sim Card Reader" }, | 96 | { 6, "Sim Card Reader" }, |
97 | { -1, 0 } | 97 | { -1, 0 } |
98 | }; | 98 | }; |
99 | 99 | ||
100 | static ClassMap_t MapAVClass[] = { | 100 | static ClassMap_t MapAVClass[] = { |
101 | { 0, "Uncategorized" }, | 101 | { 0, "Uncategorized" }, |
102 | { 1, "Device conforms to the Headset profile" }, | 102 | { 1, "Device conforms to the Headset profile" }, |
103 | { 2, "Hands-free" }, | 103 | { 2, "Hands-free" }, |
104 | { 3, 0 }, | 104 | { 3, 0 }, |
105 | { 4, "Microphone" }, | 105 | { 4, "Microphone" }, |
106 | { 5, "Loudspeaker" }, | 106 | { 5, "Loudspeaker" }, |
107 | { 6, "Headphones" }, | 107 | { 6, "Headphones" }, |
108 | { 7, "Portable Audio" }, | 108 | { 7, "Portable Audio" }, |
109 | { 8, "Car Audio" }, | 109 | { 8, "Car Audio" }, |
110 | { 9, "Set-top box" }, | 110 | { 9, "Set-top box" }, |
111 | { 10, "HiFi Audio Device" }, | 111 | { 10, "HiFi Audio Device" }, |
112 | { 11, "VCR" }, | 112 | { 11, "VCR" }, |
113 | { 12, "Video Camera" }, | 113 | { 12, "Video Camera" }, |
114 | { 13, "Camcorder" }, | 114 | { 13, "Camcorder" }, |
115 | { 14, "Video Monitor" }, | 115 | { 14, "Video Monitor" }, |
116 | { 15, "Video Display and Loudspeaker" }, | 116 | { 15, "Video Display and Loudspeaker" }, |
117 | { 16, "Video Conferencing" }, | 117 | { 16, "Video Conferencing" }, |
118 | { 17, 0 }, | 118 | { 17, 0 }, |
119 | { 18, "Gaming/Toy" }, | 119 | { 18, "Gaming/Toy" }, |
120 | { -1, 0 } | 120 | { -1, 0 } |
121 | }; | 121 | }; |
122 | 122 | ||
123 | static ClassMap_t MapPeripheralClass[] = { | 123 | static ClassMap_t MapPeripheralClass[] = { |
124 | { 16, "Keyboard" }, | 124 | { 16, "Keyboard" }, |
125 | { 32, "Pointing device" }, | 125 | { 32, "Pointing device" }, |
126 | { 48, "Combo keyboard/pointing device" }, | 126 | { 48, "Combo keyboard/pointing device" }, |
127 | { -1, 0 } | 127 | { -1, 0 } |
128 | }; | 128 | }; |
129 | 129 | ||
130 | typedef struct { | 130 | typedef struct { |
131 | int Major; | 131 | int Major; |
132 | ClassMap_t * Map; | 132 | ClassMap_t * Map; |
133 | } MainClassMap_t; | 133 | } MainClassMap_t; |
134 | 134 | ||
135 | static MainClassMap_t MainClasses[] = { | 135 | static MainClassMap_t MainClasses[] = { |
136 | { 0, MapMiscClass }, | 136 | { 0, MapMiscClass }, |
137 | { 1, MapComputerClass }, | 137 | { 1, MapComputerClass }, |
138 | { 2, MapPhoneClass }, | 138 | { 2, MapPhoneClass }, |
139 | { 3, 0 }, // special case | 139 | { 3, 0 }, // special case |
140 | { 4, MapAVClass }, | 140 | { 4, MapAVClass }, |
141 | { 5, MapPeripheralClass }, | 141 | { 5, MapPeripheralClass }, |
142 | { 6, 0 }, // special case | 142 | { 6, 0 }, // special case |
143 | { 63, MapUnclassifiedClass }, | 143 | { 63, MapUnclassifiedClass }, |
144 | { -1, 0 } | 144 | { -1, 0 } |
145 | }; | 145 | }; |
146 | 146 | ||
147 | OTDriver::OTDriver( OTGateway * _OT, struct hci_dev_info* di) : QObject( _OT ), Address() { | 147 | OTDriver::OTDriver( OTGateway * _OT, struct hci_dev_info* di) : QObject( _OT ), Address() { |
148 | OT = _OT; | 148 | OT = _OT; |
149 | IsUp = 0; | 149 | IsUp = 0; |
150 | Socket = 0; | 150 | Socket = 0; |
151 | 151 | ||
152 | init(di); | 152 | init(di); |
153 | odebug << "Driver " << devname() << oendl; | 153 | odebug << "Driver " << devname() << oendl; |
154 | 154 | ||
155 | AutoClose = new QTimer( this ); | 155 | AutoClose = new QTimer( this ); |
156 | connect( AutoClose, | 156 | connect( AutoClose, |
157 | SIGNAL( timeout() ), | 157 | SIGNAL( timeout() ), |
158 | this, | 158 | this, |
159 | SLOT( SLOT_CloseFd() ) | 159 | SLOT( SLOT_CloseFd() ) |
160 | ); | 160 | ); |
161 | } | 161 | } |
162 | 162 | ||
163 | OTDriver::~OTDriver() { | 163 | OTDriver::~OTDriver() { |
164 | closeSocket(); | 164 | closeSocket(); |
165 | SLOT_CloseFd(); | 165 | SLOT_CloseFd(); |
166 | } | 166 | } |
167 | 167 | ||
168 | void OTDriver::SLOT_CloseFd( void ){ | 168 | void OTDriver::SLOT_CloseFd( void ){ |
169 | if ( isOpen() ) { | 169 | if ( isOpen() ) { |
170 | AutoClose->stop(); | 170 | AutoClose->stop(); |
171 | ::close( fd() ); | 171 | ::close( fd() ); |
172 | setfd( -1 ); | 172 | setfd( -1 ); |
173 | } | 173 | } |
174 | } | 174 | } |
175 | 175 | ||
176 | void OTDriver::init(struct hci_dev_info* di) { | 176 | void OTDriver::init(struct hci_dev_info* di) { |
177 | 177 | ||
178 | Dev = di->name; | 178 | Dev = di->name; |
179 | 179 | ||
180 | setDevId(di->dev_id); | 180 | setDevId(di->dev_id); |
181 | setType(di->type); | 181 | setType(di->type); |
182 | setFlags(di->flags); | 182 | setFlags(di->flags); |
183 | Address.setBDAddr( di->bdaddr ); | 183 | Address.setBDAddr( di->bdaddr ); |
184 | setFeatures(di->features); | 184 | setFeatures(di->features); |
185 | setfd( -1 ); // not open | 185 | setfd( -1 ); // not open |
186 | 186 | ||
187 | Manufacturer = ""; | 187 | Manufacturer = ""; |
188 | } | 188 | } |
189 | 189 | ||
190 | // internal reinitialize | 190 | // internal reinitialize |
191 | void OTDriver::reinit() { | 191 | void OTDriver::reinit() { |
192 | bool Old; | 192 | bool Old; |
193 | Old = IsUp; | 193 | Old = IsUp; |
194 | 194 | ||
195 | if( currentState() < 0 ) | 195 | if( currentState() < 0 ) |
196 | return; | 196 | return; |
197 | 197 | ||
198 | if( Old != IsUp ) { | 198 | if( Old != IsUp ) { |
199 | // state changes | 199 | // state changes |
200 | emit stateChange( this, IsUp ); | 200 | emit stateChange( this, IsUp ); |
201 | } | 201 | } |
202 | } | 202 | } |
203 | 203 | ||
204 | // requested by application | 204 | // requested by application |
205 | int OTDriver::currentState() { | 205 | int OTDriver::currentState() { |
206 | struct hci_dev_info di; | 206 | struct hci_dev_info di; |
207 | 207 | ||
208 | // uint16_t tmp_dev_id = device_info.dev_id; | 208 | // uint16_t tmp_dev_id = device_info.dev_id; |
209 | // bzero(&device_info,sizeof(struct hci_dev_info)); | 209 | // bzero(&device_info,sizeof(struct hci_dev_info)); |
210 | // device_info.dev_id = tmp_dev_id; | 210 | // device_info.dev_id = tmp_dev_id; |
211 | 211 | ||
212 | memset( &di, 0, sizeof( di ) ); | 212 | memset( &di, 0, sizeof( di ) ); |
213 | di.dev_id = Dev_id; | 213 | di.dev_id = Dev_id; |
214 | if( ioctl( OT->getSocket(), HCIGETDEVINFO, (void*)&di) < 0 ) { | 214 | if( ioctl( OT->getSocket(), HCIGETDEVINFO, (void*)&di) < 0 ) { |
215 | SLOT_CloseFd(); | 215 | SLOT_CloseFd(); |
216 | return -1; | 216 | return -1; |
217 | } else { | 217 | } else { |
218 | // load new info | 218 | // load new info |
219 | init(&di); | 219 | init(&di); |
220 | } | 220 | } |
221 | 221 | ||
222 | return IsUp; | 222 | return IsUp; |
223 | } | 223 | } |
224 | 224 | ||
225 | bool OTDriver::open() { | 225 | bool OTDriver::open() { |
226 | 226 | ||
227 | // (re)start single shot close | 227 | // (re)start single shot close |
228 | AutoClose->start( 30000, TRUE ); | 228 | AutoClose->start( 30000, TRUE ); |
229 | 229 | ||
230 | if( isOpen() ) | 230 | if( isOpen() ) |
231 | // is open | 231 | // is open |
232 | return 1; | 232 | return 1; |
233 | 233 | ||
234 | setfd(hci_open_dev(devId())); | 234 | setfd(hci_open_dev(devId())); |
235 | 235 | ||
236 | if (fd() < 0) { | 236 | if (fd() < 0) { |
237 | emit error( tr( "Can't open device %1. %2 : %3" ). | 237 | emit error( tr( "Can't open device %1. %2 : %3" ). |
238 | arg( devname() ). | 238 | arg( devname() ). |
239 | arg( errno ). | 239 | arg( errno ). |
240 | arg( strerror(errno) ) | 240 | arg( strerror(errno) ) |
241 | ); | 241 | ); |
242 | return 0; | 242 | return 0; |
243 | } | 243 | } |
244 | 244 | ||
245 | return 1; | 245 | return 1; |
246 | } | 246 | } |
247 | 247 | ||
248 | QString OTDriver::name() { | 248 | QString OTDriver::name() { |
249 | char name[1000]; | 249 | char name[1000]; |
250 | 250 | ||
251 | if( ! open() ) { | 251 | if( ! open() ) { |
252 | return tr("Cannot open"); | 252 | return tr("Cannot open"); |
253 | } | 253 | } |
254 | 254 | ||
255 | if (hci_read_local_name( fd(), sizeof(name), name, 1000) < 0) { | 255 | if (hci_read_local_name( fd(), sizeof(name), name, 1000) < 0) { |
256 | if (errno != ETIMEDOUT) { | 256 | if (errno != ETIMEDOUT) { |
257 | emit error( tr("Can't read local name on %1. %2 : %3. Default to %4" ). | 257 | emit error( tr("Can't read local name on %1. %2 : %3. Default to %4" ). |
258 | arg( devname() ). | 258 | arg( devname() ). |
259 | arg( errno ). | 259 | arg( errno ). |
260 | arg( strerror(errno) ). | 260 | arg( strerror(errno) ). |
261 | arg( devname() ) | 261 | arg( devname() ) |
262 | ); | 262 | ); |
263 | } // ETIMEDOUT error is quite normal, device is down ... I think ! :) | 263 | } // ETIMEDOUT error is quite normal, device is down ... I think ! :) |
264 | strcpy(name,devname().latin1()); | 264 | strcpy(name,devname().latin1()); |
265 | } | 265 | } |
266 | return QString(name); | 266 | return QString(name); |
267 | } | 267 | } |
268 | 268 | ||
269 | void OTDriver::setFlags(unsigned long flags) { | 269 | void OTDriver::setFlags(unsigned long flags) { |
270 | 270 | ||
271 | // kdDebug() << "Setting OTDriver Values ..." << endl; | 271 | // kdDebug() << "Setting OTDriver Values ..." << endl; |
272 | IsUp = BTVALUE(hci_test_bit(HCI_UP, &flags)); | 272 | IsUp = BTVALUE(hci_test_bit(HCI_UP, &flags)); |
273 | 273 | ||
274 | if (isUp()) { | 274 | if (isUp()) { |
275 | setIScan(BTVALUE(hci_test_bit(HCI_ISCAN, &flags))); | 275 | setIScan(BTVALUE(hci_test_bit(HCI_ISCAN, &flags))); |
276 | setPScan(BTVALUE(hci_test_bit(HCI_PSCAN, &flags))); | 276 | setPScan(BTVALUE(hci_test_bit(HCI_PSCAN, &flags))); |
277 | setAuthentication(BTVALUE(hci_test_bit(HCI_AUTH, &flags))); | 277 | setAuthentication(BTVALUE(hci_test_bit(HCI_AUTH, &flags))); |
278 | setEncryption(BTVALUE(hci_test_bit(HCI_ENCRYPT, &flags))); | 278 | setEncryption(BTVALUE(hci_test_bit(HCI_ENCRYPT, &flags))); |
279 | } else { | 279 | } else { |
280 | setIScan(BT_UNKNOWN); | 280 | setIScan(BT_UNKNOWN); |
281 | setPScan(BT_UNKNOWN); | 281 | setPScan(BT_UNKNOWN); |
282 | setAuthentication(BT_UNKNOWN); | 282 | setAuthentication(BT_UNKNOWN); |
283 | setEncryption(BT_UNKNOWN); | 283 | setEncryption(BT_UNKNOWN); |
284 | } | 284 | } |
285 | } | 285 | } |
286 | 286 | ||
287 | QString OTDriver::revision() { | 287 | QString OTDriver::revision() { |
288 | 288 | ||
289 | struct hci_version ver; | 289 | struct hci_version ver; |
290 | 290 | ||
291 | if( ! open() ) { | 291 | if( ! open() ) { |
292 | return tr("Cannot open"); | 292 | return tr("Cannot open"); |
293 | } | 293 | } |
294 | 294 | ||
295 | if (hci_read_local_version(fd(), &ver, 1000) < 0) { | 295 | if (hci_read_local_version(fd(), &ver, 1000) < 0) { |
296 | emit error( tr( "Can't read revision info on %1. %2 : %3" ). | 296 | emit error( tr( "Can't read revision info on %1. %2 : %3" ). |
297 | arg( devname() ). | 297 | arg( devname() ). |
298 | arg( errno ). | 298 | arg( errno ). |
299 | arg( strerror(errno) ) ); | 299 | arg( strerror(errno) ) ); |
300 | return QString(); | 300 | return QString(); |
301 | } | 301 | } |
302 | 302 | ||
303 | setManufacturer(ver.manufacturer); | 303 | setManufacturer(ver.manufacturer); |
304 | 304 | ||
305 | switch (ver.manufacturer) { | 305 | switch (ver.manufacturer) { |
306 | case 0: | 306 | case 0: |
307 | return getRevEricsson(); | 307 | return getRevEricsson(); |
308 | break; | 308 | break; |
309 | case 10: | 309 | case 10: |
310 | return getRevCsr(ver.hci_rev); | 310 | return getRevCsr(ver.hci_rev); |
311 | break; | 311 | break; |
312 | default: | 312 | default: |
313 | return tr( "Unsupported manufacturer" ); | 313 | return tr( "Unsupported manufacturer" ); |
314 | break; | 314 | break; |
315 | } | 315 | } |
316 | } | 316 | } |
317 | 317 | ||
318 | QString OTDriver::getRevEricsson() { | 318 | QString OTDriver::getRevEricsson() { |
319 | 319 | ||
320 | char revision[102]; | 320 | char revision[102]; |
321 | struct hci_request rq; | 321 | struct hci_request rq; |
322 | 322 | ||
323 | if( ! open() ) { | 323 | if( ! open() ) { |
324 | return QString( "Cannot open" ); | 324 | return QString( "Cannot open" ); |
325 | } | 325 | } |
326 | 326 | ||
327 | memset(&rq, 0, sizeof(rq)); | 327 | memset(&rq, 0, sizeof(rq)); |
328 | rq.ogf = 0x3f; | 328 | rq.ogf = 0x3f; |
329 | rq.ocf = 0x000f; | 329 | rq.ocf = 0x000f; |
330 | rq.cparam = NULL; | 330 | rq.cparam = NULL; |
331 | rq.clen = 0; | 331 | rq.clen = 0; |
332 | rq.rparam = &revision; | 332 | rq.rparam = &revision; |
333 | rq.rlen = sizeof(revision); | 333 | rq.rlen = sizeof(revision); |
334 | 334 | ||
335 | if (hci_send_req(fd(), &rq, 1000) < 0) { | 335 | if (hci_send_req(fd(), &rq, 1000) < 0) { |
336 | emit error( tr( "Can't read revision info on %1. %2 : %3" ). | 336 | emit error( tr( "Can't read revision info on %1. %2 : %3" ). |
337 | arg( devname() ). | 337 | arg( devname() ). |
338 | arg( errno ). | 338 | arg( errno ). |
339 | arg( strerror(errno) ) ); | 339 | arg( strerror(errno) ) ); |
340 | return QString(); | 340 | return QString(); |
341 | } | 341 | } |
342 | 342 | ||
343 | return QString( revision+1 ); | 343 | return QString( revision+1 ); |
344 | } | 344 | } |
345 | 345 | ||
346 | QString OTDriver::getRevCsr( unsigned short rev) { | 346 | QString OTDriver::getRevCsr( unsigned short rev) { |
347 | 347 | ||
348 | int i; | 348 | int i; |
349 | 349 | ||
350 | for (i = 0; csr_map[i].str; i++) | 350 | for (i = 0; csr_map[i].str; i++) |
351 | if (csr_map[i].rev == rev) { | 351 | if (csr_map[i].rev == rev) { |
352 | return QString( csr_map[i].str ); | 352 | return QString( csr_map[i].str ); |
353 | } | 353 | } |
354 | 354 | ||
355 | return tr( "Unknown firmware" ); | 355 | return tr( "Unknown firmware" ); |
356 | } | 356 | } |
357 | 357 | ||
358 | int OTDriver::reset() { | 358 | int OTDriver::reset() { |
359 | 359 | ||
360 | if( ! open() ) { | 360 | if( ! open() ) { |
361 | return 0; | 361 | return 0; |
362 | } | 362 | } |
363 | 363 | ||
364 | if( ioctl(fd(), HCIDEVRESET, devId()) < 0 ) { | 364 | if( ioctl(fd(), HCIDEVRESET, devId()) < 0 ) { |
365 | if( errno != EALREADY ) { | 365 | if( errno != EALREADY ) { |
366 | emit error( tr( "Reset failed for %1. %2 : %3" ). | 366 | emit error( tr( "Reset failed for %1. %2 : %3" ). |
367 | arg( devname() ). | 367 | arg( devname() ). |
368 | arg( errno ). | 368 | arg( errno ). |
369 | arg( strerror(errno) ) ); | 369 | arg( strerror(errno) ) ); |
370 | if (errno == EACCES) { | 370 | if (errno == EACCES) { |
371 | return EACCES; | 371 | return EACCES; |
372 | } | 372 | } |
373 | } | 373 | } |
374 | } | 374 | } |
375 | return 0; | 375 | return 0; |
376 | } | 376 | } |
377 | 377 | ||
378 | void OTDriver::setUp( bool M ) { | 378 | void OTDriver::setUp( bool M ) { |
379 | if( M && ! isUp() ) { | 379 | if( M && ! isUp() ) { |
380 | bringUp(); | 380 | bringUp(); |
381 | } else if( ! M && isUp() ) { | 381 | } else if( ! M && isUp() ) { |
382 | bringDown(); | 382 | bringDown(); |
383 | } | 383 | } |
384 | } | 384 | } |
385 | 385 | ||
386 | void OTDriver::bringUp() { | 386 | void OTDriver::bringUp() { |
387 | 387 | ||
388 | odebug << "bringUp : " << Dev << oendl; | 388 | odebug << "bringUp : " << Dev << oendl; |
389 | 389 | ||
390 | if( ! open() ) { | 390 | if( ! open() ) { |
391 | return; | 391 | return; |
392 | } | 392 | } |
393 | 393 | ||
394 | if (! isUp()) { | 394 | if (! isUp()) { |
395 | if( ioctl(fd(), HCIDEVUP, devId()) < 0 ) { | 395 | if( ioctl(fd(), HCIDEVUP, devId()) < 0 ) { |
396 | if( errno != EALREADY ) { | 396 | if( errno != EALREADY ) { |
397 | emit error( tr( "Cannot bring interface %1 up. %2 : %3" ). | 397 | emit error( tr( "Cannot bring interface %1 up. %2 : %3" ). |
398 | arg( devname() ). | 398 | arg( devname() ). |
399 | arg( errno ). | 399 | arg( errno ). |
400 | arg( strerror(errno) ) ); | 400 | arg( strerror(errno) ) ); |
401 | } | 401 | } |
402 | return; | 402 | return; |
403 | } | 403 | } |
404 | // have to wait a bit for the 'up' to become active | 404 | // have to wait a bit for the 'up' to become active |
405 | QTimer::singleShot( 3000, this, SLOT( reinit() ) ); | 405 | QTimer::singleShot( 3000, this, SLOT( reinit() ) ); |
406 | } | 406 | } |
407 | } | 407 | } |
408 | 408 | ||
409 | void OTDriver::bringDown() { | 409 | void OTDriver::bringDown() { |
410 | 410 | ||
411 | odebug << "bringDown : " << Dev << oendl; | 411 | odebug << "bringDown : " << Dev << oendl; |
412 | 412 | ||
413 | if( ! open() ) { | 413 | if( ! open() ) { |
414 | return; | 414 | return; |
415 | } | 415 | } |
416 | 416 | ||
417 | if ( isUp() ) { | 417 | if ( isUp() ) { |
418 | if( ioctl(fd(), HCIDEVDOWN, devId()) < 0 ) { | 418 | if( ioctl(fd(), HCIDEVDOWN, devId()) < 0 ) { |
419 | if( errno != EALREADY ) { | 419 | if( errno != EALREADY ) { |
420 | emit error( tr( "Cannot bring interface %1 down. %2 : %3" ). | 420 | emit error( tr( "Cannot bring interface %1 down. %2 : %3" ). |
421 | arg( devname() ). | 421 | arg( devname() ). |
422 | arg( errno ). | 422 | arg( errno ). |
423 | arg( strerror(errno) ) ); | 423 | arg( strerror(errno) ) ); |
424 | } | 424 | } |
425 | return; | 425 | return; |
426 | } | 426 | } |
427 | reinit(); | 427 | reinit(); |
428 | } | 428 | } |
429 | } | 429 | } |
430 | 430 | ||
431 | void OTDriver::setScanMode(bool iscan, bool pscan) { | 431 | void OTDriver::setScanMode(bool iscan, bool pscan) { |
432 | 432 | ||
433 | struct hci_dev_req dr; | 433 | struct hci_dev_req dr; |
434 | 434 | ||
435 | if( ! open() ) { | 435 | if( ! open() ) { |
436 | return; | 436 | return; |
437 | } | 437 | } |
438 | 438 | ||
439 | dr.dev_id = devId(); | 439 | dr.dev_id = devId(); |
440 | dr.dev_opt = SCAN_DISABLED; | 440 | dr.dev_opt = SCAN_DISABLED; |
441 | 441 | ||
442 | if( iscan&&(!pscan) ) | 442 | if( iscan&&(!pscan) ) |
443 | dr.dev_opt = SCAN_INQUIRY; | 443 | dr.dev_opt = SCAN_INQUIRY; |
444 | else if( pscan&&(!iscan) ) | 444 | else if( pscan&&(!iscan) ) |
445 | dr.dev_opt = SCAN_PAGE; | 445 | dr.dev_opt = SCAN_PAGE; |
446 | else if( pscan&&iscan ) | 446 | else if( pscan&&iscan ) |
447 | dr.dev_opt = SCAN_PAGE | SCAN_INQUIRY; | 447 | dr.dev_opt = SCAN_PAGE | SCAN_INQUIRY; |
448 | 448 | ||
449 | if( ioctl(fd(), HCISETSCAN, (unsigned long)&dr) < 0 ) { | 449 | if( ioctl(fd(), HCISETSCAN, (unsigned long)&dr) < 0 ) { |
450 | if( errno != EALREADY ) { | 450 | if( errno != EALREADY ) { |
451 | emit error( tr( "Can't set scan mode on %1. %2 : %3" ). | 451 | emit error( tr( "Can't set scan mode on %1. %2 : %3" ). |
452 | arg( devname() ). | 452 | arg( devname() ). |
453 | arg( errno ). | 453 | arg( errno ). |
454 | arg( strerror(errno) ) ); | 454 | arg( strerror(errno) ) ); |
455 | } | 455 | } |
456 | return; | 456 | return; |
457 | } | 457 | } |
458 | 458 | ||
459 | reinit(); | 459 | reinit(); |
460 | } | 460 | } |
461 | 461 | ||
462 | void OTDriver::changeDevName(const char* name) { | 462 | void OTDriver::changeDevName(const char* name) { |
463 | 463 | ||
464 | if( ! open() ) { | 464 | if( ! open() ) { |
465 | return; | 465 | return; |
466 | } | 466 | } |
467 | 467 | ||
468 | if (hci_write_local_name(fd(), name, 1000) < 0) { | 468 | if (hci_write_local_name(fd(), name, 1000) < 0) { |
469 | emit error( tr( "Can't change local name on %1. %2 : %3" ). | 469 | emit error( tr( "Can't change local name on %1. %2 : %3" ). |
470 | arg( devname() ). | 470 | arg( devname() ). |
471 | arg( errno ). | 471 | arg( errno ). |
472 | arg( strerror(errno) ) ); | 472 | arg( strerror(errno) ) ); |
473 | } | 473 | } |
474 | } | 474 | } |
475 | 475 | ||
476 | void OTDriver::changeAuthentication(bool _auth) { | 476 | void OTDriver::changeAuthentication(bool _auth) { |
477 | struct hci_dev_req dr; | 477 | struct hci_dev_req dr; |
478 | 478 | ||
479 | if( ! open() ) { | 479 | if( ! open() ) { |
480 | return; | 480 | return; |
481 | } | 481 | } |
482 | 482 | ||
483 | dr.dev_id = devId(); | 483 | dr.dev_id = devId(); |
484 | dr.dev_opt = _auth?AUTH_ENABLED:AUTH_DISABLED; | 484 | dr.dev_opt = _auth?AUTH_ENABLED:AUTH_DISABLED; |
485 | 485 | ||
486 | if (ioctl(fd(),HCISETAUTH,(unsigned long)&dr) < 0) { | 486 | if (ioctl(fd(),HCISETAUTH,(unsigned long)&dr) < 0) { |
487 | if( errno != EALREADY ) { | 487 | if( errno != EALREADY ) { |
488 | emit error( tr( "Can't change authentication on %1. %2 : %3" ). | 488 | emit error( tr( "Can't change authentication on %1. %2 : %3" ). |
489 | arg( devname() ). | 489 | arg( devname() ). |
490 | arg( errno ). | 490 | arg( errno ). |
491 | arg( strerror(errno) ) ); | 491 | arg( strerror(errno) ) ); |
492 | } | 492 | } |
493 | return; | 493 | return; |
494 | } | 494 | } |
495 | reinit(); | 495 | reinit(); |
496 | } | 496 | } |
497 | 497 | ||
498 | void OTDriver::changeEncryption(bool _encrypt) { | 498 | void OTDriver::changeEncryption(bool _encrypt) { |
499 | struct hci_dev_req dr; | 499 | struct hci_dev_req dr; |
500 | 500 | ||
501 | if( ! open() ) { | 501 | if( ! open() ) { |
502 | return; | 502 | return; |
503 | } | 503 | } |
504 | 504 | ||
505 | dr.dev_id = devId(); | 505 | dr.dev_id = devId(); |
506 | dr.dev_opt = _encrypt?ENCRYPT_P2P:ENCRYPT_DISABLED; | 506 | dr.dev_opt = _encrypt?ENCRYPT_P2P:ENCRYPT_DISABLED; |
507 | 507 | ||
508 | if (ioctl(fd(),HCISETENCRYPT,(unsigned long)&dr) < 0) { | 508 | if (ioctl(fd(),HCISETENCRYPT,(unsigned long)&dr) < 0) { |
509 | if( errno != EALREADY ) { | 509 | if( errno != EALREADY ) { |
510 | emit error( tr( "Can't change encryption on %1. %2 : %3" ). | 510 | emit error( tr( "Can't change encryption on %1. %2 : %3" ). |
511 | arg( devname() ). | 511 | arg( devname() ). |
512 | arg( errno ). | 512 | arg( errno ). |
513 | arg( strerror(errno) ) ); | 513 | arg( strerror(errno) ) ); |
514 | } | 514 | } |
515 | return; | 515 | return; |
516 | } | 516 | } |
517 | 517 | ||
518 | reinit(); | 518 | reinit(); |
519 | } | 519 | } |
520 | 520 | ||
521 | void OTDriver::changeClass ( unsigned char service, | 521 | void OTDriver::changeClass ( unsigned char service, |
522 | unsigned char major, | 522 | unsigned char major, |
523 | unsigned char minor ) { | 523 | unsigned char minor ) { |
524 | unsigned long cod = 0; | 524 | unsigned long cod = 0; |
525 | cod = (service << 16) | | 525 | cod = (service << 16) | |
526 | (major << 8) | | 526 | (major << 8) | |
527 | (minor ) ; | 527 | (minor ) ; |
528 | 528 | ||
529 | if( ! open() ) { | 529 | if( ! open() ) { |
530 | return; | 530 | return; |
531 | } | 531 | } |
532 | 532 | ||
533 | if ( hci_write_class_of_dev(fd(),cod,1000) < 0 ) { | 533 | if ( hci_write_class_of_dev(fd(),cod,1000) < 0 ) { |
534 | emit error( tr( "Can't change class informations for %1. %2 : %3" ). | 534 | emit error( tr( "Can't change class informations for %1. %2 : %3" ). |
535 | arg( devname() ). | 535 | arg( devname() ). |
536 | arg( errno ). | 536 | arg( errno ). |
537 | arg( strerror(errno) ) ); | 537 | arg( strerror(errno) ) ); |
538 | return; | 538 | return; |
539 | } | 539 | } |
540 | } | 540 | } |
541 | 541 | ||
542 | void OTDriver::getClass( QString & service, | 542 | void OTDriver::getClass( QString & service, |
543 | QString & device ) { | 543 | QString & device ) { |
544 | unsigned char cls[3]; | 544 | unsigned char cls[3]; |
545 | 545 | ||
546 | if( ! open() ) { | 546 | if( ! open() ) { |
547 | return; | 547 | return; |
548 | } | 548 | } |
549 | 549 | ||
550 | if ( hci_read_class_of_dev(fd(),cls,1000) < 0 ) { | 550 | if ( hci_read_class_of_dev(fd(),cls,1000) < 0 ) { |
551 | emit error( tr( "Can't read class information for %1. %2 : %3" ). | 551 | emit error( tr( "Can't read class information for %1. %2 : %3" ). |
552 | arg( devname() ). | 552 | arg( devname() ). |
553 | arg( errno ). | 553 | arg( errno ). |
554 | arg( strerror(errno) ) ); | 554 | arg( strerror(errno) ) ); |
555 | return; | 555 | return; |
556 | } | 556 | } |
557 | 557 | ||
558 | if( cls[2] ) { | 558 | if( cls[2] ) { |
559 | int first = 1; | 559 | int first = 1; |
560 | for ( unsigned int s = 0; s < sizeof(*services); s++) { | 560 | for ( unsigned int s = 0; s < sizeof(*services); s++) { |
561 | if (cls[2] & (1 << s)) { | 561 | if (cls[2] & (1 << s)) { |
562 | if( !first ) | 562 | if( !first ) |
563 | service += ", "; | 563 | service += ", "; |
564 | service += services[s]; | 564 | service += services[s]; |
565 | first = 0; | 565 | first = 0; |
566 | } | 566 | } |
567 | } | 567 | } |
568 | } else { | 568 | } else { |
569 | service = "unspecified"; | 569 | service = "unspecified"; |
570 | } | 570 | } |
571 | 571 | ||
572 | MainClassMap_t * MCM = MainClasses; | 572 | MainClassMap_t * MCM = MainClasses; |
573 | int major = cls[1] & 0x1f; | 573 | int major = cls[1] & 0x1f; |
574 | int minor = cls[0] >> 2; | 574 | int minor = cls[0] >> 2; |
575 | 575 | ||
576 | if( (unsigned)(cls[1] & 0x1f) > sizeof(*major_devices)) { | 576 | if( (unsigned)(cls[1] & 0x1f) > sizeof(*major_devices)) { |
577 | device = tr("Invalid Device Class"); | 577 | device = tr("Invalid Device Class"); |
578 | return; | 578 | return; |
579 | } | 579 | } |
580 | 580 | ||
581 | device = major_devices[cls[1] & 0x1f]; | 581 | device = major_devices[cls[1] & 0x1f]; |
582 | 582 | ||
583 | while( MCM->Major != -1 ) { | 583 | while( MCM->Major != -1 ) { |
584 | if( major == MCM->Major ) { | 584 | if( major == MCM->Major ) { |
585 | // this class | 585 | // this class |
586 | ClassMap_t * CM = MCM->Map; | 586 | ClassMap_t * CM = MCM->Map; |
587 | if( MCM->Map ) { | 587 | if( MCM->Map ) { |
588 | while( CM->Minor != -1 ) { | 588 | while( CM->Minor != -1 ) { |
589 | if( minor == CM->Minor ) { | 589 | if( minor == CM->Minor ) { |
590 | break; | 590 | break; |
591 | } | 591 | } |
592 | CM ++; | 592 | CM ++; |
593 | } | 593 | } |
594 | device = CM->Description; | 594 | device = CM->Description; |
595 | } else { | 595 | } else { |
596 | // special case | 596 | // special case |
597 | if( major == 3 ) { | 597 | if( major == 3 ) { |
598 | /* lan access */ | 598 | /* lan access */ |
599 | if( minor == 0 ) { | 599 | if( minor == 0 ) { |
600 | device = "Uncategorized"; | 600 | device = "Uncategorized"; |
601 | } else { | 601 | } else { |
602 | switch( minor / 8 ) { | 602 | switch( minor / 8 ) { |
603 | case 0: | 603 | case 0: |
604 | device = "Fully available"; | 604 | device = "Fully available"; |
605 | break; | 605 | break; |
606 | case 1: | 606 | case 1: |
607 | device = "1-17% utilized"; | 607 | device = "1-17% utilized"; |
608 | break; | 608 | break; |
609 | case 2: | 609 | case 2: |
610 | device = "17-33% utilized"; | 610 | device = "17-33% utilized"; |
611 | break; | 611 | break; |
612 | case 3: | 612 | case 3: |
613 | device = "33-50% utilized"; | 613 | device = "33-50% utilized"; |
614 | break; | 614 | break; |
615 | case 4: | 615 | case 4: |
616 | device = "50-67% utilized"; | 616 | device = "50-67% utilized"; |
617 | break; | 617 | break; |
618 | case 5: | 618 | case 5: |
619 | device = "67-83% utilized"; | 619 | device = "67-83% utilized"; |
620 | break; | 620 | break; |
621 | case 6: | 621 | case 6: |
622 | device = "83-99% utilized"; | 622 | device = "83-99% utilized"; |
623 | break; | 623 | break; |
624 | case 7: | 624 | case 7: |
625 | device = "No service available"; | 625 | device = "No service available"; |
626 | break; | 626 | break; |
627 | } | 627 | } |
628 | } | 628 | } |
629 | } else if( major == 6 ) { /* imaging */ | 629 | } else if( major == 6 ) { /* imaging */ |
630 | if (minor & 4) | 630 | if (minor & 4) |
631 | device = "Display"; | 631 | device = "Display"; |
632 | if (minor & 8) | 632 | if (minor & 8) |
633 | device = "Camera"; | 633 | device = "Camera"; |
634 | if (minor & 16) | 634 | if (minor & 16) |
635 | device = "Scanner"; | 635 | device = "Scanner"; |
636 | if (minor & 32) | 636 | if (minor & 32) |
637 | device = "Printer"; | 637 | device = "Printer"; |
638 | } | 638 | } |
639 | } | 639 | } |
640 | break; | 640 | break; |
641 | } | 641 | } |
642 | MCM ++; | 642 | MCM ++; |
643 | } | 643 | } |
644 | 644 | ||
645 | if( MCM->Major == -1 ) { | 645 | if( MCM->Major == -1 ) { |
646 | device = "Unknown (reserved) minor device class"; | 646 | device = "Unknown (reserved) minor device class"; |
647 | } | 647 | } |
648 | } | 648 | } |
649 | 649 | ||
650 | QString OTDriver::strType() { | 650 | QString OTDriver::strType() { |
651 | return QString( hci_dtypetostr(Type) ); | 651 | return QString( hci_dtypetostr(Type) ); |
652 | } | 652 | } |
653 | 653 | ||
654 | void OTDriver::setFeatures( unsigned char * _f) { | 654 | void OTDriver::setFeatures( unsigned char * _f) { |
655 | Features = lmp_featurestostr(_f, NULL, 255); | 655 | Features = lmp_featurestostr(_f, NULL, 255); |
656 | } | 656 | } |
657 | 657 | ||
658 | void OTDriver::setManufacturer(int compid) { | 658 | void OTDriver::setManufacturer(int compid) { |
659 | Manufacturer = bt_compidtostr(compid); | 659 | Manufacturer = bt_compidtostr(compid); |
660 | } | 660 | } |
661 | 661 | ||
662 | OTHCISocket * OTDriver::openSocket( void ) { | 662 | OTHCISocket * OTDriver::openSocket( void ) { |
663 | if( ! Socket ) { | 663 | if( ! Socket ) { |
664 | odebug << "Open HCI socket to " << devname() << oendl; | 664 | odebug << "Open HCI socket to " << devname() << oendl; |
665 | Socket = new OTHCISocket( this ); | 665 | Socket = new OTHCISocket( this ); |
666 | } | 666 | } |
667 | return Socket; | 667 | return Socket; |
668 | } | 668 | } |
669 | 669 | ||
670 | void OTDriver::closeSocket( void ) { | 670 | void OTDriver::closeSocket( void ) { |
671 | if( Socket ) { | 671 | if( Socket ) { |
672 | odebug << "Close HCI socket to " << devname() << oendl; | 672 | odebug << "Close HCI socket to " << devname() << oendl; |
673 | delete Socket; | 673 | delete Socket; |
674 | Socket = 0; | 674 | Socket = 0; |
675 | } | 675 | } |
676 | } | 676 | } |
677 | 677 | ||
678 | QString OTDriver::getPeerName( const OTDeviceAddress & PAddr ) { | 678 | QString OTDriver::getPeerName( const OTDeviceAddress & PAddr ) { |
679 | QString S; | 679 | QString S; |
680 | char name[100 ]; | 680 | char name[100 ]; |
681 | 681 | ||
682 | if( ! open() ) { | 682 | if( ! open() ) { |
683 | return QString("N/A"); | 683 | return QString("N/A"); |
684 | } | 684 | } |
685 | 685 | ||
686 | if( hci_read_remote_name( fd(), | 686 | if( hci_read_remote_name( fd(), |
687 | &(PAddr.getBDAddr()), | 687 | &(PAddr.getBDAddr()), |
688 | sizeof(name), | 688 | sizeof(name), |
689 | name, | 689 | name, |
690 | 100000 ) < 0 ) { | 690 | 100000 ) < 0 ) { |
691 | return QString( "N/A" ); | 691 | return QString( "N/A" ); |
692 | } | 692 | } |
693 | 693 | ||
694 | return QString( name ); | 694 | return QString( name ); |
695 | } | 695 | } |
696 | 696 | ||
697 | long OTDriver::getLinkQuality( const OTDeviceAddress & Addr ) { | 697 | long OTDriver::getLinkQuality( const OTDeviceAddress & Addr ) { |
698 | struct hci_conn_info_req *cr; | 698 | struct hci_conn_info_req *cr; |
699 | struct hci_request rq; | 699 | struct hci_request rq; |
700 | read_rssi_rp rp; | 700 | read_rssi_rp rp; |
701 | uint16_t handle; | 701 | uint16_t handle; |
702 | 702 | ||
703 | if( ! open() ) { | 703 | if( ! open() ) { |
704 | return 0; | 704 | return 0; |
705 | } | 705 | } |
706 | 706 | ||
707 | cr = (struct hci_conn_info_req *)malloc( | 707 | cr = (struct hci_conn_info_req *)malloc( |
708 | sizeof(*cr) + sizeof(struct hci_conn_info)); | 708 | sizeof(*cr) + sizeof(struct hci_conn_info)); |
709 | if (!cr) | 709 | if (!cr) |
710 | return 0; | 710 | return 0; |
711 | 711 | ||
712 | bacpy( &(cr->bdaddr), &(Addr.getBDAddr()) ); | 712 | bacpy( &(cr->bdaddr), &(Addr.getBDAddr()) ); |
713 | cr->type = ACL_LINK; | 713 | cr->type = ACL_LINK; |
714 | 714 | ||
715 | if (ioctl( fd(), HCIGETCONNINFO, (unsigned long) cr) < 0) { | 715 | if (ioctl( fd(), HCIGETCONNINFO, (unsigned long) cr) < 0) { |
716 | odebug << "Get connection info failed" << oendl; | 716 | odebug << "Get NetworkSetup info failed" << oendl; |
717 | free(cr); | 717 | free(cr); |
718 | return 0; | 718 | return 0; |
719 | } | 719 | } |
720 | 720 | ||
721 | handle = htobs(cr->conn_info->handle); | 721 | handle = htobs(cr->conn_info->handle); |
722 | 722 | ||
723 | free(cr); | 723 | free(cr); |
724 | 724 | ||
725 | memset(&rq, 0, sizeof(rq)); | 725 | memset(&rq, 0, sizeof(rq)); |
726 | rq.ogf = OGF_STATUS_PARAM; | 726 | rq.ogf = OGF_STATUS_PARAM; |
727 | rq.ocf = OCF_READ_RSSI; | 727 | rq.ocf = OCF_READ_RSSI; |
728 | rq.cparam = &handle; | 728 | rq.cparam = &handle; |
729 | rq.clen = 2; | 729 | rq.clen = 2; |
730 | rq.rparam = &rp; | 730 | rq.rparam = &rp; |
731 | rq.rlen = GET_LINK_QUALITY_RP_SIZE; | 731 | rq.rlen = GET_LINK_QUALITY_RP_SIZE; |
732 | 732 | ||
733 | if (hci_send_req( fd(), &rq, 100) < 0) { | 733 | if (hci_send_req( fd(), &rq, 100) < 0) { |
734 | odebug << "Get connection info failed" << oendl; | 734 | odebug << "Get NetworkSetup info failed" << oendl; |
735 | return 0; | 735 | return 0; |
736 | } | 736 | } |
737 | 737 | ||
738 | if( rp.status ) { | 738 | if( rp.status ) { |
739 | odebug << QString().sprintf("HCI get_link_quality cmd failed (0x%2.2X)", rp.status) << oendl; | 739 | odebug << QString().sprintf("HCI get_link_quality cmd failed (0x%2.2X)", rp.status) << oendl; |
740 | return 0; | 740 | return 0; |
741 | } | 741 | } |
742 | 742 | ||
743 | return rp.rssi+50; | 743 | return rp.rssi+50; |
744 | } | 744 | } |
diff --git a/noncore/settings/networksettings2/opietooth2/OTDriver.h b/noncore/settings/networksettings2/opietooth2/OTDriver.h index b54ffdf..899fab4 100644 --- a/noncore/settings/networksettings2/opietooth2/OTDriver.h +++ b/noncore/settings/networksettings2/opietooth2/OTDriver.h | |||
@@ -1,232 +1,232 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | * Copyright (C) 2003 by Mattia Merzi * | 2 | * Copyright (C) 2003 by Mattia Merzi * |
3 | * ottobit@ferrara.linux.it * | 3 | * ottobit@ferrara.linux.it * |
4 | * * | 4 | * * |
5 | * This program is free software; you can redistribute it and/or modify * | 5 | * This program is free software; you can redistribute it and/or modify * |
6 | * it under the terms of the GNU General Public License as published by * | 6 | * it under the terms of the GNU General Public License as published by * |
7 | * the Free Software Foundation; either version 2 of the License, or * | 7 | * the Free Software Foundation; either version 2 of the License, or * |
8 | * (at your option) any later version. * | 8 | * (at your option) any later version. * |
9 | ***************************************************************************/ | 9 | ***************************************************************************/ |
10 | 10 | ||
11 | #ifndef OTDRIVER_H | 11 | #ifndef OTDRIVER_H |
12 | #define OTDRIVER_H | 12 | #define OTDRIVER_H |
13 | 13 | ||
14 | /* | 14 | /* |
15 | * This class handles the connection with the BlueZ libraries, implements | 15 | * This class handles the networkSetup with the BlueZ libraries, implements |
16 | * most of the bluetooth-related functions and owns the KBTDevice class | 16 | * most of the bluetooth-related functions and owns the KBTDevice class |
17 | * that is a single local bluetooth device representation. | 17 | * that is a single local bluetooth device representation. |
18 | * It is used as a Singleton pattern thru the getDefaultConnector() method. | 18 | * It is used as a Singleton pattern thru the getDefaultConnector() method. |
19 | * | 19 | * |
20 | */ | 20 | */ |
21 | #include <qobject.h> | 21 | #include <qobject.h> |
22 | #include <opie2/odebug.h> | 22 | #include <opie2/odebug.h> |
23 | #include <bluezlib.h> | 23 | #include <bluezlib.h> |
24 | 24 | ||
25 | #include <OTDeviceAddress.h> | 25 | #include <OTDeviceAddress.h> |
26 | 26 | ||
27 | namespace Opietooth2 { | 27 | namespace Opietooth2 { |
28 | 28 | ||
29 | class OTGateway; | 29 | class OTGateway; |
30 | class OTHCISocket; | 30 | class OTHCISocket; |
31 | class OTDeviceAddress; | 31 | class OTDeviceAddress; |
32 | class OTPeer; | 32 | class OTPeer; |
33 | 33 | ||
34 | /* | 34 | /* |
35 | * This is the representation of a | 35 | * This is the representation of a |
36 | * Bluetooth device for the local | 36 | * Bluetooth device for the local |
37 | * machine. | 37 | * machine. |
38 | */ | 38 | */ |
39 | class OTDriver : public QObject { | 39 | class OTDriver : public QObject { |
40 | 40 | ||
41 | Q_OBJECT | 41 | Q_OBJECT |
42 | 42 | ||
43 | public: | 43 | public: |
44 | 44 | ||
45 | OTDriver( OTGateway * Ot, struct hci_dev_info* di); | 45 | OTDriver( OTGateway * Ot, struct hci_dev_info* di); |
46 | ~OTDriver(); | 46 | ~OTDriver(); |
47 | 47 | ||
48 | inline OTGateway * gateway() const | 48 | inline OTGateway * gateway() const |
49 | { return OT; } | 49 | { return OT; } |
50 | 50 | ||
51 | /* | 51 | /* |
52 | * Initializes the device using the passed hci_dev_info | 52 | * Initializes the device using the passed hci_dev_info |
53 | * struct, contining the basic information in order to | 53 | * struct, contining the basic information in order to |
54 | * talk with the pyisical device. | 54 | * talk with the pyisical device. |
55 | */ | 55 | */ |
56 | void init(struct hci_dev_info* di); | 56 | void init(struct hci_dev_info* di); |
57 | 57 | ||
58 | /* | 58 | /* |
59 | * Open the device and obtains a file descriptor to id | 59 | * Open the device and obtains a file descriptor to id |
60 | * return if open | 60 | * return if open |
61 | */ | 61 | */ |
62 | bool open(); | 62 | bool open(); |
63 | 63 | ||
64 | OTHCISocket * openSocket(); | 64 | OTHCISocket * openSocket(); |
65 | 65 | ||
66 | void closeSocket(); | 66 | void closeSocket(); |
67 | 67 | ||
68 | /* | 68 | /* |
69 | * Return true if the device is opened. | 69 | * Return true if the device is opened. |
70 | */ | 70 | */ |
71 | int isOpen() | 71 | int isOpen() |
72 | { return Fd != -1; }; | 72 | { return Fd != -1; }; |
73 | 73 | ||
74 | /* | 74 | /* |
75 | * Calls the ioctl(HCIDEVRESET) in order to | 75 | * Calls the ioctl(HCIDEVRESET) in order to |
76 | * reset the device. | 76 | * reset the device. |
77 | */ | 77 | */ |
78 | int reset(); | 78 | int reset(); |
79 | 79 | ||
80 | // set Up if true and not yet up | 80 | // set Up if true and not yet up |
81 | void setUp( bool Mode ); | 81 | void setUp( bool Mode ); |
82 | 82 | ||
83 | /* | 83 | /* |
84 | * Turn the device up and the reinitializes the device. | 84 | * Turn the device up and the reinitializes the device. |
85 | * If the device is already up, nothing is done. | 85 | * If the device is already up, nothing is done. |
86 | */ | 86 | */ |
87 | void bringUp(); | 87 | void bringUp(); |
88 | 88 | ||
89 | /* | 89 | /* |
90 | * Turn the device down and the reinitializes the device. | 90 | * Turn the device down and the reinitializes the device. |
91 | * If the device is already down, nothing is done. | 91 | * If the device is already down, nothing is done. |
92 | */ | 92 | */ |
93 | void bringDown(); | 93 | void bringDown(); |
94 | 94 | ||
95 | // is the device UP now | 95 | // is the device UP now |
96 | bool isUp() const | 96 | bool isUp() const |
97 | { return IsUp; } | 97 | { return IsUp; } |
98 | 98 | ||
99 | // get current state | 99 | // get current state |
100 | // return 1 if UP, 0 if DOWN, -1 if ERROR | 100 | // return 1 if UP, 0 if DOWN, -1 if ERROR |
101 | int currentState(); | 101 | int currentState(); |
102 | 102 | ||
103 | /* | 103 | /* |
104 | * Returns the name of the device. If the device is | 104 | * Returns the name of the device. If the device is |
105 | * down, the device id is returned. | 105 | * down, the device id is returned. |
106 | */ | 106 | */ |
107 | QString name(); | 107 | QString name(); |
108 | 108 | ||
109 | int devId() const | 109 | int devId() const |
110 | { return Dev_id; }; | 110 | { return Dev_id; }; |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * Returns the string representation of the device id, | 113 | * Returns the string representation of the device id, |
114 | * with the same format of the hciconfig tool. | 114 | * with the same format of the hciconfig tool. |
115 | */ | 115 | */ |
116 | QString devname() | 116 | QString devname() |
117 | { return Dev; }; | 117 | { return Dev; }; |
118 | 118 | ||
119 | /* | 119 | /* |
120 | * Returns the file descriptor for the local | 120 | * Returns the file descriptor for the local |
121 | * connection to this device | 121 | * networkSetup to this device |
122 | */ | 122 | */ |
123 | int fd() const | 123 | int fd() const |
124 | { return Fd; }; | 124 | { return Fd; }; |
125 | void setfd(int _fd) | 125 | void setfd(int _fd) |
126 | { Fd = _fd; }; | 126 | { Fd = _fd; }; |
127 | 127 | ||
128 | void setType(int _type) | 128 | void setType(int _type) |
129 | { Type = _type; }; | 129 | { Type = _type; }; |
130 | int type() const | 130 | int type() const |
131 | { return Type; }; | 131 | { return Type; }; |
132 | QString strType(); | 132 | QString strType(); |
133 | 133 | ||
134 | int iscan() const | 134 | int iscan() const |
135 | { return Iscan; } | 135 | { return Iscan; } |
136 | void setIScan(int _iscan) | 136 | void setIScan(int _iscan) |
137 | { Iscan = _iscan; } | 137 | { Iscan = _iscan; } |
138 | 138 | ||
139 | int pscan() const | 139 | int pscan() const |
140 | { return Pscan; } | 140 | { return Pscan; } |
141 | void setPScan(int _pscan) | 141 | void setPScan(int _pscan) |
142 | { Pscan = _pscan; } | 142 | { Pscan = _pscan; } |
143 | 143 | ||
144 | int authentication() const | 144 | int authentication() const |
145 | { return Auth; } | 145 | { return Auth; } |
146 | void setAuthentication(int _auth) | 146 | void setAuthentication(int _auth) |
147 | { Auth = _auth; } | 147 | { Auth = _auth; } |
148 | 148 | ||
149 | int encryption() const | 149 | int encryption() const |
150 | { return Encrypt; } | 150 | { return Encrypt; } |
151 | void setEncryption(int _encrypt) | 151 | void setEncryption(int _encrypt) |
152 | { Encrypt = _encrypt; } | 152 | { Encrypt = _encrypt; } |
153 | 153 | ||
154 | void setDevId(int _dev_id) | 154 | void setDevId(int _dev_id) |
155 | { Dev_id = _dev_id; }; | 155 | { Dev_id = _dev_id; }; |
156 | void setDev(char* _dev) | 156 | void setDev(char* _dev) |
157 | { Dev = _dev; }; | 157 | { Dev = _dev; }; |
158 | 158 | ||
159 | void setFlags( unsigned long flags); | 159 | void setFlags( unsigned long flags); |
160 | 160 | ||
161 | const OTDeviceAddress & address() | 161 | const OTDeviceAddress & address() |
162 | { return Address; } | 162 | { return Address; } |
163 | 163 | ||
164 | void setFeatures( unsigned char * _f); | 164 | void setFeatures( unsigned char * _f); |
165 | QString features() | 165 | QString features() |
166 | { return Features; } | 166 | { return Features; } |
167 | 167 | ||
168 | void setManufacturer(int compid); | 168 | void setManufacturer(int compid); |
169 | QString manufacturer() | 169 | QString manufacturer() |
170 | { return Manufacturer; } | 170 | { return Manufacturer; } |
171 | 171 | ||
172 | QString revision(); | 172 | QString revision(); |
173 | 173 | ||
174 | void setScanMode(bool iscan, bool pscan); | 174 | void setScanMode(bool iscan, bool pscan); |
175 | void setClass(unsigned long cls); | 175 | void setClass(unsigned long cls); |
176 | 176 | ||
177 | void changeDevName(const char* name); | 177 | void changeDevName(const char* name); |
178 | void changeEncryption(bool _encryption); | 178 | void changeEncryption(bool _encryption); |
179 | void changeAuthentication(bool _auth); | 179 | void changeAuthentication(bool _auth); |
180 | 180 | ||
181 | void getClass( QString & service, | 181 | void getClass( QString & service, |
182 | QString & device ); | 182 | QString & device ); |
183 | void changeClass( unsigned char service, | 183 | void changeClass( unsigned char service, |
184 | unsigned char major, | 184 | unsigned char major, |
185 | unsigned char minor); | 185 | unsigned char minor); |
186 | 186 | ||
187 | QString getPeerName( const OTDeviceAddress & PAddr ); | 187 | QString getPeerName( const OTDeviceAddress & PAddr ); |
188 | 188 | ||
189 | // address must be connected to this driver | 189 | // address must be connected to this driver |
190 | long getLinkQuality( const OTDeviceAddress & Address ); | 190 | long getLinkQuality( const OTDeviceAddress & Address ); |
191 | 191 | ||
192 | signals : | 192 | signals : |
193 | 193 | ||
194 | void error( const QString & ); | 194 | void error( const QString & ); |
195 | void stateChange( OTDriver * , bool ); | 195 | void stateChange( OTDriver * , bool ); |
196 | void driverDisappeared( OTDriver * ); | 196 | void driverDisappeared( OTDriver * ); |
197 | 197 | ||
198 | private slots : | 198 | private slots : |
199 | 199 | ||
200 | /* | 200 | /* |
201 | * Reinitializes the device, obtaining a fresh | 201 | * Reinitializes the device, obtaining a fresh |
202 | * hci_dev_info structure. | 202 | * hci_dev_info structure. |
203 | */ | 203 | */ |
204 | void reinit(); | 204 | void reinit(); |
205 | void SLOT_CloseFd(); | 205 | void SLOT_CloseFd(); |
206 | 206 | ||
207 | private: | 207 | private: |
208 | 208 | ||
209 | QString getRevEricsson(); | 209 | QString getRevEricsson(); |
210 | QString getRevCsr(unsigned short rev); | 210 | QString getRevCsr(unsigned short rev); |
211 | 211 | ||
212 | QString Name; | 212 | QString Name; |
213 | QString Dev; | 213 | QString Dev; |
214 | QString Revision; | 214 | QString Revision; |
215 | QString Manufacturer; | 215 | QString Manufacturer; |
216 | OTDeviceAddress Address; | 216 | OTDeviceAddress Address; |
217 | QString Features; | 217 | QString Features; |
218 | QTimer * AutoClose; | 218 | QTimer * AutoClose; |
219 | 219 | ||
220 | int Dev_id,Fd,Type; | 220 | int Dev_id,Fd,Type; |
221 | bool IsUp; | 221 | bool IsUp; |
222 | int Iscan,Pscan,Auth,Encrypt; | 222 | int Iscan,Pscan,Auth,Encrypt; |
223 | 223 | ||
224 | // socket bound to this device | 224 | // socket bound to this device |
225 | OTHCISocket * Socket; | 225 | OTHCISocket * Socket; |
226 | 226 | ||
227 | // backpointer to opietooth system | 227 | // backpointer to opietooth system |
228 | OTGateway * OT; | 228 | OTGateway * OT; |
229 | }; | 229 | }; |
230 | 230 | ||
231 | } | 231 | } |
232 | #endif | 232 | #endif |
diff --git a/noncore/settings/networksettings2/opietooth2/OTGateway.cpp b/noncore/settings/networksettings2/opietooth2/OTGateway.cpp index 1b61a2e..7fc8719 100644 --- a/noncore/settings/networksettings2/opietooth2/OTGateway.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTGateway.cpp | |||
@@ -1,774 +1,774 @@ | |||
1 | #include <qmessagebox.h> | 1 | #include <qmessagebox.h> |
2 | #include <qfile.h> | 2 | #include <qfile.h> |
3 | #include <qdir.h> | 3 | #include <qdir.h> |
4 | #include <qtextstream.h> | 4 | #include <qtextstream.h> |
5 | #include <qpixmap.h> | 5 | #include <qpixmap.h> |
6 | #include <qvector.h> | 6 | #include <qvector.h> |
7 | #include <qpe/resource.h> | 7 | #include <qpe/resource.h> |
8 | 8 | ||
9 | #include <opie2/odebug.h> | 9 | #include <opie2/odebug.h> |
10 | 10 | ||
11 | #include <bluezlib.h> | 11 | #include <bluezlib.h> |
12 | 12 | ||
13 | #include <OTDevice.h> | 13 | #include <OTDevice.h> |
14 | #include <OTDriver.h> | 14 | #include <OTDriver.h> |
15 | #include <OTInquiry.h> | 15 | #include <OTInquiry.h> |
16 | #include <OTDriverList.h> | 16 | #include <OTDriverList.h> |
17 | #include <OTDeviceAddress.h> | 17 | #include <OTDeviceAddress.h> |
18 | #include <OTGateway.h> | 18 | #include <OTGateway.h> |
19 | 19 | ||
20 | using namespace Opietooth2; | 20 | using namespace Opietooth2; |
21 | 21 | ||
22 | // single instance | 22 | // single instance |
23 | OTGateway * OTGateway::SingleGateway = 0; | 23 | OTGateway * OTGateway::SingleGateway = 0; |
24 | int OTGateway::UseCount = 0; | 24 | int OTGateway::UseCount = 0; |
25 | 25 | ||
26 | OTGateway * OTGateway::getOTGateway( void ) { | 26 | OTGateway * OTGateway::getOTGateway( void ) { |
27 | if(SingleGateway == 0 ) { | 27 | if(SingleGateway == 0 ) { |
28 | SingleGateway = new OTGateway(); | 28 | SingleGateway = new OTGateway(); |
29 | } | 29 | } |
30 | 30 | ||
31 | UseCount ++; | 31 | UseCount ++; |
32 | return SingleGateway; | 32 | return SingleGateway; |
33 | } | 33 | } |
34 | 34 | ||
35 | void OTGateway::releaseOTGateway( void ) { | 35 | void OTGateway::releaseOTGateway( void ) { |
36 | UseCount --; | 36 | UseCount --; |
37 | if( UseCount == 0 ) { | 37 | if( UseCount == 0 ) { |
38 | delete SingleGateway; | 38 | delete SingleGateway; |
39 | SingleGateway = 0; | 39 | SingleGateway = 0; |
40 | } | 40 | } |
41 | } | 41 | } |
42 | 42 | ||
43 | // open bluetooth system | 43 | // open bluetooth system |
44 | OTGateway::OTGateway( void ) : QObject( 0, "OTGateway" ), | 44 | OTGateway::OTGateway( void ) : QObject( 0, "OTGateway" ), |
45 | AllDrivers( this ), | 45 | AllDrivers( this ), |
46 | AllPeers() { | 46 | AllPeers() { |
47 | 47 | ||
48 | ErrorConnectCount = 0; | 48 | ErrorConnectCount = 0; |
49 | TheOTDevice = 0; | 49 | TheOTDevice = 0; |
50 | Scanning = 0; | 50 | Scanning = 0; |
51 | AllPeersModified = 0; | 51 | AllPeersModified = 0; |
52 | AllPeers.setAutoDelete( TRUE ); | 52 | AllPeers.setAutoDelete( TRUE ); |
53 | 53 | ||
54 | if ( ( HciCtl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) { | 54 | if ( ( HciCtl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) { |
55 | SLOT_ShowError( tr( "error opening hci socket" ) ); | 55 | SLOT_ShowError( tr( "error opening hci socket" ) ); |
56 | return; | 56 | return; |
57 | } | 57 | } |
58 | 58 | ||
59 | // load all known devices | 59 | // load all known devices |
60 | updateDrivers(); | 60 | updateDrivers(); |
61 | 61 | ||
62 | // load all peers we have ever seen | 62 | // load all peers we have ever seen |
63 | loadKnownPeers(); | 63 | loadKnownPeers(); |
64 | 64 | ||
65 | // iterate over drivers and find active connections | 65 | // iterate over drivers and find active NetworkSetups |
66 | // adding/updating peers | 66 | // adding/updating peers |
67 | loadActiveConnections(); | 67 | loadActiveNetworkSetups(); |
68 | 68 | ||
69 | // check every 4 seconds the state of BT | 69 | // check every 4 seconds the state of BT |
70 | timerEvent(0); | 70 | timerEvent(0); |
71 | RefreshTimer = -1; | 71 | RefreshTimer = -1; |
72 | setRefreshTimer( 4000 ); | 72 | setRefreshTimer( 4000 ); |
73 | 73 | ||
74 | // load known link keys | 74 | // load known link keys |
75 | readLinkKeys(); | 75 | readLinkKeys(); |
76 | } | 76 | } |
77 | 77 | ||
78 | // close bluetooth system | 78 | // close bluetooth system |
79 | OTGateway::~OTGateway( void ) { | 79 | OTGateway::~OTGateway( void ) { |
80 | 80 | ||
81 | if( AllPeersModified ) { | 81 | if( AllPeersModified ) { |
82 | saveKnownPeers(); | 82 | saveKnownPeers(); |
83 | } | 83 | } |
84 | 84 | ||
85 | if( Scanning ) | 85 | if( Scanning ) |
86 | delete Scanning; | 86 | delete Scanning; |
87 | 87 | ||
88 | if( TheOTDevice ) | 88 | if( TheOTDevice ) |
89 | delete TheOTDevice; | 89 | delete TheOTDevice; |
90 | 90 | ||
91 | if( HciCtl >= 0 ) { | 91 | if( HciCtl >= 0 ) { |
92 | ::close( HciCtl ); | 92 | ::close( HciCtl ); |
93 | } | 93 | } |
94 | } | 94 | } |
95 | 95 | ||
96 | void OTGateway::setRefreshTimer( int T ) { | 96 | void OTGateway::setRefreshTimer( int T ) { |
97 | if( RefreshTimer != -1 ) { | 97 | if( RefreshTimer != -1 ) { |
98 | killTimer( RefreshTimer ); | 98 | killTimer( RefreshTimer ); |
99 | } | 99 | } |
100 | 100 | ||
101 | if( T == 0 ) | 101 | if( T == 0 ) |
102 | T = 4000; | 102 | T = 4000; |
103 | RefreshTimer = startTimer( T ); | 103 | RefreshTimer = startTimer( T ); |
104 | } | 104 | } |
105 | 105 | ||
106 | OTDevice * OTGateway::getOTDevice( ) { | 106 | OTDevice * OTGateway::getOTDevice( ) { |
107 | if( TheOTDevice == 0 ) { | 107 | if( TheOTDevice == 0 ) { |
108 | // load bluetooth device and check state | 108 | // load bluetooth device and check state |
109 | TheOTDevice = new OTDevice( this ); | 109 | TheOTDevice = new OTDevice( this ); |
110 | connect( TheOTDevice, | 110 | connect( TheOTDevice, |
111 | SIGNAL( isEnabled( int, bool ) ), | 111 | SIGNAL( isEnabled( int, bool ) ), |
112 | this, | 112 | this, |
113 | SLOT( SLOT_Enabled( int, bool ) ) ); | 113 | SLOT( SLOT_Enabled( int, bool ) ) ); |
114 | 114 | ||
115 | connect( TheOTDevice, | 115 | connect( TheOTDevice, |
116 | SIGNAL( error( const QString & ) ), | 116 | SIGNAL( error( const QString & ) ), |
117 | this, | 117 | this, |
118 | SLOT( SLOT_ShowError( const QString & ) ) ); | 118 | SLOT( SLOT_ShowError( const QString & ) ) ); |
119 | } | 119 | } |
120 | 120 | ||
121 | return TheOTDevice; | 121 | return TheOTDevice; |
122 | } | 122 | } |
123 | 123 | ||
124 | // start bluetooth (if stopped) | 124 | // start bluetooth (if stopped) |
125 | // return TRUE if started | 125 | // return TRUE if started |
126 | void OTGateway::SLOT_SetEnabled( bool Mode ) { | 126 | void OTGateway::SLOT_SetEnabled( bool Mode ) { |
127 | if( Mode ) { | 127 | if( Mode ) { |
128 | SLOT_Enable(); | 128 | SLOT_Enable(); |
129 | return; | 129 | return; |
130 | } | 130 | } |
131 | SLOT_Disable(); | 131 | SLOT_Disable(); |
132 | } | 132 | } |
133 | 133 | ||
134 | void OTGateway::SLOT_Enable() { | 134 | void OTGateway::SLOT_Enable() { |
135 | getOTDevice()->attach(); | 135 | getOTDevice()->attach(); |
136 | } | 136 | } |
137 | 137 | ||
138 | void OTGateway::SLOT_Disable() { | 138 | void OTGateway::SLOT_Disable() { |
139 | getOTDevice()->detach(); | 139 | getOTDevice()->detach(); |
140 | } | 140 | } |
141 | 141 | ||
142 | bool OTGateway::needsEnabling() { | 142 | bool OTGateway::needsEnabling() { |
143 | return getOTDevice()->needsAttach(); | 143 | return getOTDevice()->needsAttach(); |
144 | } | 144 | } |
145 | 145 | ||
146 | bool OTGateway::isEnabled() { | 146 | bool OTGateway::isEnabled() { |
147 | if( getOTDevice()->deviceNr() >= 0 && | 147 | if( getOTDevice()->deviceNr() >= 0 && |
148 | AllDrivers.count() != 0 && | 148 | AllDrivers.count() != 0 && |
149 | driver( getOTDevice()->deviceNr() )->isUp() ) | 149 | driver( getOTDevice()->deviceNr() )->isUp() ) |
150 | return TRUE; | 150 | return TRUE; |
151 | 151 | ||
152 | // else check system | 152 | // else check system |
153 | return getOTDevice()->isAttached(); | 153 | return getOTDevice()->isAttached(); |
154 | } | 154 | } |
155 | 155 | ||
156 | void OTGateway::SLOT_ShowError( const QString & S ) { | 156 | void OTGateway::SLOT_ShowError( const QString & S ) { |
157 | 157 | ||
158 | odebug << S << oendl; | 158 | odebug << S << oendl; |
159 | 159 | ||
160 | if( ErrorConnectCount > 0 ) { | 160 | if( ErrorConnectCount > 0 ) { |
161 | // pass error | 161 | // pass error |
162 | emit error( QString( "<p>" ) + S + "</p>" ); | 162 | emit error( QString( "<p>" ) + S + "</p>" ); |
163 | return; | 163 | return; |
164 | } | 164 | } |
165 | 165 | ||
166 | QMessageBox::warning( 0, | 166 | QMessageBox::warning( 0, |
167 | tr("OTGateway error"), | 167 | tr("OTGateway error"), |
168 | S ); | 168 | S ); |
169 | } | 169 | } |
170 | 170 | ||
171 | void OTGateway::connectNotify( const char * S ) { | 171 | void OTGateway::connectNotify( const char * S ) { |
172 | if( S && strcmp( S, "error(const QString&)" ) == 0 ) { | 172 | if( S && strcmp( S, "error(const QString&)" ) == 0 ) { |
173 | ErrorConnectCount ++; | 173 | ErrorConnectCount ++; |
174 | } | 174 | } |
175 | } | 175 | } |
176 | 176 | ||
177 | void OTGateway::disconnectNotify( const char * S ) { | 177 | void OTGateway::disconnectNotify( const char * S ) { |
178 | if( S && strcmp( S, "error(const QString&)" ) == 0 ) { | 178 | if( S && strcmp( S, "error(const QString&)" ) == 0 ) { |
179 | ErrorConnectCount --; | 179 | ErrorConnectCount --; |
180 | } | 180 | } |
181 | } | 181 | } |
182 | 182 | ||
183 | void OTGateway::timerEvent( QTimerEvent * ) { | 183 | void OTGateway::timerEvent( QTimerEvent * ) { |
184 | 184 | ||
185 | OTDriver * D; | 185 | OTDriver * D; |
186 | unsigned int oldc = AllDrivers.count(); | 186 | unsigned int oldc = AllDrivers.count(); |
187 | bool old; | 187 | bool old; |
188 | 188 | ||
189 | AllDrivers.update(); | 189 | AllDrivers.update(); |
190 | 190 | ||
191 | if( oldc != AllDrivers.count() ) { | 191 | if( oldc != AllDrivers.count() ) { |
192 | updateDrivers(); | 192 | updateDrivers(); |
193 | } else { | 193 | } else { |
194 | for( unsigned int i = 0; | 194 | for( unsigned int i = 0; |
195 | i < AllDrivers.count(); | 195 | i < AllDrivers.count(); |
196 | i ++ ) { | 196 | i ++ ) { |
197 | D = AllDrivers[i]; | 197 | D = AllDrivers[i]; |
198 | old = D->isUp(); | 198 | old = D->isUp(); |
199 | if( D->currentState() >= 0 ) { | 199 | if( D->currentState() >= 0 ) { |
200 | if( old != D->isUp() ) { | 200 | if( old != D->isUp() ) { |
201 | emit stateChange( D, D->isUp() ); | 201 | emit stateChange( D, D->isUp() ); |
202 | } | 202 | } |
203 | } else { | 203 | } else { |
204 | // if one driver is unable to provide info | 204 | // if one driver is unable to provide info |
205 | // we refresh all devices | 205 | // we refresh all devices |
206 | updateDrivers(); | 206 | updateDrivers(); |
207 | return; | 207 | return; |
208 | } | 208 | } |
209 | } | 209 | } |
210 | } | 210 | } |
211 | } | 211 | } |
212 | 212 | ||
213 | void OTGateway::SLOT_Enabled( int id, bool Up ) { | 213 | void OTGateway::SLOT_Enabled( int id, bool Up ) { |
214 | odebug << "device " << id << " state " << Up << oendl; | 214 | odebug << "device " << id << " state " << Up << oendl; |
215 | if( Up ) { | 215 | if( Up ) { |
216 | // device is up -> detect it | 216 | // device is up -> detect it |
217 | updateDrivers(); | 217 | updateDrivers(); |
218 | if( (unsigned)id >= AllDrivers.count() ) { | 218 | if( (unsigned)id >= AllDrivers.count() ) { |
219 | // to make sure that the driver really IS detected | 219 | // to make sure that the driver really IS detected |
220 | AllDrivers[id]->bringUp(); | 220 | AllDrivers[id]->bringUp(); |
221 | } | 221 | } |
222 | } // if DOWN device already down | 222 | } // if DOWN device already down |
223 | emit deviceEnabled( Up ); | 223 | emit deviceEnabled( Up ); |
224 | } | 224 | } |
225 | 225 | ||
226 | void OTGateway::updateDrivers( void ) { | 226 | void OTGateway::updateDrivers( void ) { |
227 | OTDriver * D; | 227 | OTDriver * D; |
228 | 228 | ||
229 | AllDrivers.update(); | 229 | AllDrivers.update(); |
230 | 230 | ||
231 | odebug << "updated drivers. now " << AllDrivers.count() << oendl; | 231 | odebug << "updated drivers. now " << AllDrivers.count() << oendl; |
232 | 232 | ||
233 | // connect signals for each driver | 233 | // connect signals for each driver |
234 | for( unsigned int i = 0; | 234 | for( unsigned int i = 0; |
235 | i < AllDrivers.count(); | 235 | i < AllDrivers.count(); |
236 | i ++ ) { | 236 | i ++ ) { |
237 | D = AllDrivers[i]; | 237 | D = AllDrivers[i]; |
238 | 238 | ||
239 | connect( D, | 239 | connect( D, |
240 | SIGNAL( error( const QString & ) ), | 240 | SIGNAL( error( const QString & ) ), |
241 | this, | 241 | this, |
242 | SLOT( SLOT_ShowError( const QString & ) ) | 242 | SLOT( SLOT_ShowError( const QString & ) ) |
243 | ); | 243 | ); |
244 | 244 | ||
245 | connect( D, | 245 | connect( D, |
246 | SIGNAL( stateChange( OTDriver *, bool ) ), | 246 | SIGNAL( stateChange( OTDriver *, bool ) ), |
247 | this, | 247 | this, |
248 | SIGNAL( stateChange( OTDriver *, bool ) ) | 248 | SIGNAL( stateChange( OTDriver *, bool ) ) |
249 | ); | 249 | ); |
250 | 250 | ||
251 | connect( D, | 251 | connect( D, |
252 | SIGNAL( driverDisappeared( OTDriver * ) ), | 252 | SIGNAL( driverDisappeared( OTDriver * ) ), |
253 | this, | 253 | this, |
254 | SLOT( SLOT_DriverDisappeared( OTDriver * ) ) | 254 | SLOT( SLOT_DriverDisappeared( OTDriver * ) ) |
255 | ); | 255 | ); |
256 | } | 256 | } |
257 | 257 | ||
258 | // verify main device too | 258 | // verify main device too |
259 | if( TheOTDevice ) | 259 | if( TheOTDevice ) |
260 | TheOTDevice->checkAttach(); | 260 | TheOTDevice->checkAttach(); |
261 | 261 | ||
262 | // set to default scanning hardware | 262 | // set to default scanning hardware |
263 | setScanWith( 0 ); | 263 | setScanWith( 0 ); |
264 | 264 | ||
265 | emit driverListChanged(); | 265 | emit driverListChanged(); |
266 | } | 266 | } |
267 | 267 | ||
268 | void OTGateway::SLOT_DriverDisappeared( OTDriver * D ) { | 268 | void OTGateway::SLOT_DriverDisappeared( OTDriver * D ) { |
269 | odebug << "Driver " << D->devname() << " when offline" << oendl; | 269 | odebug << "Driver " << D->devname() << " when offline" << oendl; |
270 | updateDrivers(); | 270 | updateDrivers(); |
271 | } | 271 | } |
272 | 272 | ||
273 | void OTGateway::scanNeighbourhood( OTDriver * D ) { | 273 | void OTGateway::scanNeighbourhood( OTDriver * D ) { |
274 | 274 | ||
275 | if( Scanning ) { | 275 | if( Scanning ) { |
276 | stopScanOfNeighbourhood(); | 276 | stopScanOfNeighbourhood(); |
277 | } | 277 | } |
278 | 278 | ||
279 | if( D ) { | 279 | if( D ) { |
280 | setScanWith( D ); | 280 | setScanWith( D ); |
281 | } | 281 | } |
282 | 282 | ||
283 | Scanning = new OTInquiry( scanWith() ); | 283 | Scanning = new OTInquiry( scanWith() ); |
284 | 284 | ||
285 | connect( Scanning, | 285 | connect( Scanning, |
286 | SIGNAL( peerFound( OTPeer *, bool )), | 286 | SIGNAL( peerFound( OTPeer *, bool )), |
287 | this, | 287 | this, |
288 | SLOT( SLOT_PeerDetected( OTPeer *, bool ) ) | 288 | SLOT( SLOT_PeerDetected( OTPeer *, bool ) ) |
289 | ); | 289 | ); |
290 | connect( Scanning, | 290 | connect( Scanning, |
291 | SIGNAL( finished()), | 291 | SIGNAL( finished()), |
292 | this, | 292 | this, |
293 | SLOT( SLOT_FinishedDetecting() ) | 293 | SLOT( SLOT_FinishedDetecting() ) |
294 | ); | 294 | ); |
295 | 295 | ||
296 | // start scanning | 296 | // start scanning |
297 | Scanning->inquire( 30.0 ); | 297 | Scanning->inquire( 30.0 ); |
298 | } | 298 | } |
299 | 299 | ||
300 | OTPeer* OTGateway::findPeer( const OTDeviceAddress & Addr ) { | 300 | OTPeer* OTGateway::findPeer( const OTDeviceAddress & Addr ) { |
301 | for( unsigned int i = 0 ; i < AllPeers.count(); i ++ ) { | 301 | for( unsigned int i = 0 ; i < AllPeers.count(); i ++ ) { |
302 | if( AllPeers[i]->address() == Addr ) { | 302 | if( AllPeers[i]->address() == Addr ) { |
303 | return AllPeers[i]; | 303 | return AllPeers[i]; |
304 | } | 304 | } |
305 | } | 305 | } |
306 | return 0; | 306 | return 0; |
307 | } | 307 | } |
308 | 308 | ||
309 | OTDriver* OTGateway::findDriver( const OTDeviceAddress & Addr ) { | 309 | OTDriver* OTGateway::findDriver( const OTDeviceAddress & Addr ) { |
310 | for( unsigned int i = 0 ; i < AllDrivers.count(); i ++ ) { | 310 | for( unsigned int i = 0 ; i < AllDrivers.count(); i ++ ) { |
311 | if( AllDrivers[i]->address() == Addr ) { | 311 | if( AllDrivers[i]->address() == Addr ) { |
312 | return AllDrivers[i]; | 312 | return AllDrivers[i]; |
313 | } | 313 | } |
314 | } | 314 | } |
315 | return 0; | 315 | return 0; |
316 | } | 316 | } |
317 | 317 | ||
318 | void OTGateway::SLOT_PeerDetected( OTPeer * P, bool IsNew ) { | 318 | void OTGateway::SLOT_PeerDetected( OTPeer * P, bool IsNew ) { |
319 | 319 | ||
320 | if( IsNew ) { | 320 | if( IsNew ) { |
321 | // new peer | 321 | // new peer |
322 | odebug << "New peer " << P->name() << oendl; | 322 | odebug << "New peer " << P->name() << oendl; |
323 | addPeer( P ); | 323 | addPeer( P ); |
324 | } | 324 | } |
325 | 325 | ||
326 | emit detectedPeer( P, IsNew ); | 326 | emit detectedPeer( P, IsNew ); |
327 | } | 327 | } |
328 | 328 | ||
329 | void OTGateway::addPeer( OTPeer * P ) { | 329 | void OTGateway::addPeer( OTPeer * P ) { |
330 | AllPeers.resize( AllPeers.size()+1); | 330 | AllPeers.resize( AllPeers.size()+1); |
331 | AllPeers.insert( AllPeers.size()-1, P ); | 331 | AllPeers.insert( AllPeers.size()-1, P ); |
332 | AllPeersModified = 1; | 332 | AllPeersModified = 1; |
333 | } | 333 | } |
334 | 334 | ||
335 | void OTGateway::removePeer( OTPeer * P ) { | 335 | void OTGateway::removePeer( OTPeer * P ) { |
336 | int i = AllPeers.find( P ); | 336 | int i = AllPeers.find( P ); |
337 | if( i ) { | 337 | if( i ) { |
338 | AllPeers.remove( i ); | 338 | AllPeers.remove( i ); |
339 | AllPeersModified = 1; | 339 | AllPeersModified = 1; |
340 | } | 340 | } |
341 | } | 341 | } |
342 | 342 | ||
343 | void OTGateway::stopScanOfNeighbourhood( void ) { | 343 | void OTGateway::stopScanOfNeighbourhood( void ) { |
344 | if( Scanning ) { | 344 | if( Scanning ) { |
345 | delete Scanning; | 345 | delete Scanning; |
346 | Scanning = 0; | 346 | Scanning = 0; |
347 | } | 347 | } |
348 | } | 348 | } |
349 | 349 | ||
350 | void OTGateway::SLOT_FinishedDetecting() { | 350 | void OTGateway::SLOT_FinishedDetecting() { |
351 | stopScanOfNeighbourhood(); | 351 | stopScanOfNeighbourhood(); |
352 | emit finishedDetecting(); | 352 | emit finishedDetecting(); |
353 | } | 353 | } |
354 | 354 | ||
355 | const char * OTGateway::deviceTypeToName( int cls ) { | 355 | const char * OTGateway::deviceTypeToName( int cls ) { |
356 | switch ( (cls & 0x001F00) >> 8) { | 356 | switch ( (cls & 0x001F00) >> 8) { |
357 | case 0x00: | 357 | case 0x00: |
358 | return "misc"; | 358 | return "misc"; |
359 | case 0x01: | 359 | case 0x01: |
360 | return "computer"; | 360 | return "computer"; |
361 | case 0x02: | 361 | case 0x02: |
362 | return "phone"; | 362 | return "phone"; |
363 | case 0x03: | 363 | case 0x03: |
364 | return "lan"; | 364 | return "lan"; |
365 | case 0x04: | 365 | case 0x04: |
366 | return "av"; | 366 | return "av"; |
367 | case 0x05: | 367 | case 0x05: |
368 | return "peripheral"; | 368 | return "peripheral"; |
369 | case 0x06: | 369 | case 0x06: |
370 | return "imaging"; | 370 | return "imaging"; |
371 | case 0x07: | 371 | case 0x07: |
372 | default : | 372 | default : |
373 | break; | 373 | break; |
374 | } | 374 | } |
375 | return "unknown"; | 375 | return "unknown"; |
376 | } | 376 | } |
377 | 377 | ||
378 | PANConnectionVector OTGateway::getPANConnections( void ) { | 378 | PANNetworkSetupVector OTGateway::getPANNetworkSetups( void ) { |
379 | PANConnectionVector V; | 379 | PANNetworkSetupVector V; |
380 | 380 | ||
381 | struct bnep_connlist_req req; | 381 | struct bnep_connlist_req req; |
382 | struct bnep_conninfo ci[48]; | 382 | struct bnep_conninfo ci[48]; |
383 | 383 | ||
384 | V.setAutoDelete(TRUE); | 384 | V.setAutoDelete(TRUE); |
385 | 385 | ||
386 | int ctl = socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_BNEP); | 386 | int ctl = socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_BNEP); |
387 | if (ctl < 0) { | 387 | if (ctl < 0) { |
388 | odebug << "Failed to open control socket" << oendl; | 388 | odebug << "Failed to open control socket" << oendl; |
389 | return V; | 389 | return V; |
390 | } | 390 | } |
391 | 391 | ||
392 | req.cnum = 48; | 392 | req.cnum = 48; |
393 | req.ci = ci; | 393 | req.ci = ci; |
394 | if (ioctl(ctl, BNEPGETCONNLIST, &req)) { | 394 | if (ioctl(ctl, BNEPGETCONNLIST, &req)) { |
395 | odebug << "Failed to get connection list" << oendl; | 395 | odebug << "Failed to get NetworkSetup list" << oendl; |
396 | ::close( ctl ); | 396 | ::close( ctl ); |
397 | return V; | 397 | return V; |
398 | } | 398 | } |
399 | 399 | ||
400 | for ( unsigned i=0; i < req.cnum; i++) { | 400 | for ( unsigned i=0; i < req.cnum; i++) { |
401 | V.resize( V.size() + 1 ); | 401 | V.resize( V.size() + 1 ); |
402 | if( ci[i].role == BNEP_SVC_PANU ) { | 402 | if( ci[i].role == BNEP_SVC_PANU ) { |
403 | // we are the client | 403 | // we are the client |
404 | V.insert( V.size()-1, new OTPANConnection( | 404 | V.insert( V.size()-1, new OTPANNetworkSetup( |
405 | ci[i].device, | 405 | ci[i].device, |
406 | batostr((bdaddr_t *) ci[i].dst) | 406 | batostr((bdaddr_t *) ci[i].dst) |
407 | ) ); | 407 | ) ); |
408 | } | 408 | } |
409 | } | 409 | } |
410 | 410 | ||
411 | ::close( ctl ); | 411 | ::close( ctl ); |
412 | return V; | 412 | return V; |
413 | } | 413 | } |
414 | 414 | ||
415 | struct link_key { | 415 | struct link_key { |
416 | bdaddr_t sba; | 416 | bdaddr_t sba; |
417 | bdaddr_t dba; | 417 | bdaddr_t dba; |
418 | uint8_t key[16]; | 418 | uint8_t key[16]; |
419 | uint8_t type; | 419 | uint8_t type; |
420 | time_t time; | 420 | time_t time; |
421 | }; | 421 | }; |
422 | 422 | ||
423 | void OTGateway::readLinkKeys( void ) { | 423 | void OTGateway::readLinkKeys( void ) { |
424 | 424 | ||
425 | struct link_key k; | 425 | struct link_key k; |
426 | int rv; | 426 | int rv; |
427 | 427 | ||
428 | AllKeys.truncate(0); | 428 | AllKeys.truncate(0); |
429 | 429 | ||
430 | QFile F( "/etc/bluetooth/link_key" ); | 430 | QFile F( "/etc/bluetooth/link_key" ); |
431 | 431 | ||
432 | if( ! F.open( IO_ReadOnly ) ) { | 432 | if( ! F.open( IO_ReadOnly ) ) { |
433 | emit error( tr("Cannot open link_key file") ); | 433 | emit error( tr("Cannot open link_key file") ); |
434 | return; | 434 | return; |
435 | } | 435 | } |
436 | 436 | ||
437 | while( 1 ) { | 437 | while( 1 ) { |
438 | rv = F.readBlock( (char *)&k, sizeof( k ) ); | 438 | rv = F.readBlock( (char *)&k, sizeof( k ) ); |
439 | if( rv == 0 ) | 439 | if( rv == 0 ) |
440 | // EOF | 440 | // EOF |
441 | break; | 441 | break; |
442 | 442 | ||
443 | if( rv < 0 ) { | 443 | if( rv < 0 ) { |
444 | emit error( tr("Read error in link key file") ); | 444 | emit error( tr("Read error in link key file") ); |
445 | } | 445 | } |
446 | 446 | ||
447 | AllKeys.resize( AllKeys.size()+1 ); | 447 | AllKeys.resize( AllKeys.size()+1 ); |
448 | AllKeys[ AllKeys.size()-1 ].From.setBDAddr( k.sba ); | 448 | AllKeys[ AllKeys.size()-1 ].From.setBDAddr( k.sba ); |
449 | AllKeys[ AllKeys.size()-1 ].To.setBDAddr( k.dba ); | 449 | AllKeys[ AllKeys.size()-1 ].To.setBDAddr( k.dba ); |
450 | } | 450 | } |
451 | } | 451 | } |
452 | 452 | ||
453 | bool OTGateway::removeLinkKey( unsigned int Index ) { | 453 | bool OTGateway::removeLinkKey( unsigned int Index ) { |
454 | OTLinkKey & LK = AllKeys[Index]; | 454 | OTLinkKey & LK = AllKeys[Index]; |
455 | 455 | ||
456 | struct link_key k; | 456 | struct link_key k; |
457 | int rv; | 457 | int rv; |
458 | 458 | ||
459 | QFile F( "/etc/bluetooth/link_key" ); | 459 | QFile F( "/etc/bluetooth/link_key" ); |
460 | QFile OutF( "/etc/bluetooth/newlink_key" ); | 460 | QFile OutF( "/etc/bluetooth/newlink_key" ); |
461 | 461 | ||
462 | if( ! F.open( IO_ReadOnly ) ) { | 462 | if( ! F.open( IO_ReadOnly ) ) { |
463 | emit error( tr("Cannot open link_key file") ); | 463 | emit error( tr("Cannot open link_key file") ); |
464 | return 0; | 464 | return 0; |
465 | } | 465 | } |
466 | 466 | ||
467 | if( ! OutF.open( IO_WriteOnly | IO_Truncate ) ) { | 467 | if( ! OutF.open( IO_WriteOnly | IO_Truncate ) ) { |
468 | emit error( tr("Cannot open temporary link_key file") ); | 468 | emit error( tr("Cannot open temporary link_key file") ); |
469 | return 0; | 469 | return 0; |
470 | } | 470 | } |
471 | 471 | ||
472 | while( 1 ) { | 472 | while( 1 ) { |
473 | rv = F.readBlock( (char *)&k, sizeof( k ) ); | 473 | rv = F.readBlock( (char *)&k, sizeof( k ) ); |
474 | if( rv == 0 ) | 474 | if( rv == 0 ) |
475 | // EOF | 475 | // EOF |
476 | break; | 476 | break; |
477 | 477 | ||
478 | if( rv < 0 ) { | 478 | if( rv < 0 ) { |
479 | emit error( tr("Read error in link key file") ); | 479 | emit error( tr("Read error in link key file") ); |
480 | return 0; | 480 | return 0; |
481 | } | 481 | } |
482 | 482 | ||
483 | if( LK.from() != OTDeviceAddress( k.sba ) || | 483 | if( LK.from() != OTDeviceAddress( k.sba ) || |
484 | LK.to() != OTDeviceAddress( k.dba ) ) { | 484 | LK.to() != OTDeviceAddress( k.dba ) ) { |
485 | // copy | 485 | // copy |
486 | OutF.writeBlock( (char *)&k, sizeof( k ) ); | 486 | OutF.writeBlock( (char *)&k, sizeof( k ) ); |
487 | } // else remove this key | 487 | } // else remove this key |
488 | } | 488 | } |
489 | 489 | ||
490 | // rename files | 490 | // rename files |
491 | QDir D( "/etc/bluetooth" ); | 491 | QDir D( "/etc/bluetooth" ); |
492 | 492 | ||
493 | D.remove( "link_key" ); | 493 | D.remove( "link_key" ); |
494 | D.rename( "newlink_key", "link_key" ); | 494 | D.rename( "newlink_key", "link_key" ); |
495 | 495 | ||
496 | // restart hcid | 496 | // restart hcid |
497 | system( "/etc/init.d/hcid stop" ); | 497 | system( "/etc/init.d/hcid stop" ); |
498 | system( "/etc/init.d/hcid start" ); | 498 | system( "/etc/init.d/hcid start" ); |
499 | 499 | ||
500 | // remove from table | 500 | // remove from table |
501 | if( Index < (AllKeys.size()-1) ) { | 501 | if( Index < (AllKeys.size()-1) ) { |
502 | // collapse array | 502 | // collapse array |
503 | AllKeys[Index] = AllKeys[AllKeys.size()-1]; | 503 | AllKeys[Index] = AllKeys[AllKeys.size()-1]; |
504 | } | 504 | } |
505 | 505 | ||
506 | // remove last element | 506 | // remove last element |
507 | AllKeys.resize( AllKeys.size()-1 ); | 507 | AllKeys.resize( AllKeys.size()-1 ); |
508 | 508 | ||
509 | return 1; | 509 | return 1; |
510 | } | 510 | } |
511 | 511 | ||
512 | #define MAXCONNECTIONS 10 | 512 | #define MAXCONNECTIONS 10 |
513 | void OTGateway::loadActiveConnections( void ) { | 513 | void OTGateway::loadActiveNetworkSetups( void ) { |
514 | 514 | ||
515 | struct hci_conn_list_req *cl; | 515 | struct hci_conn_list_req *cl; |
516 | struct hci_conn_info *ci; | 516 | struct hci_conn_info *ci; |
517 | OTDeviceAddress Addr; | 517 | OTDeviceAddress Addr; |
518 | OTPeer * P; | 518 | OTPeer * P; |
519 | 519 | ||
520 | if (!(cl = (struct hci_conn_list_req *)malloc( | 520 | if (!(cl = (struct hci_conn_list_req *)malloc( |
521 | MAXCONNECTIONS * sizeof(*ci) + sizeof(*cl)))) { | 521 | MAXCONNECTIONS * sizeof(*ci) + sizeof(*cl)))) { |
522 | emit error( tr("Can't allocate memory") ); | 522 | emit error( tr("Can't allocate memory") ); |
523 | return; | 523 | return; |
524 | } | 524 | } |
525 | memset( cl, 0, MAXCONNECTIONS * sizeof(*ci) + sizeof(*cl) ); | 525 | memset( cl, 0, MAXCONNECTIONS * sizeof(*ci) + sizeof(*cl) ); |
526 | 526 | ||
527 | for( unsigned int i = 0; | 527 | for( unsigned int i = 0; |
528 | i < AllDrivers.count(); | 528 | i < AllDrivers.count(); |
529 | i ++ ) { | 529 | i ++ ) { |
530 | 530 | ||
531 | if( ! AllDrivers[i]->isUp() ) { | 531 | if( ! AllDrivers[i]->isUp() ) { |
532 | continue; | 532 | continue; |
533 | } | 533 | } |
534 | 534 | ||
535 | // driver is up -> check connections | 535 | // driver is up -> check NetworkSetups |
536 | cl->dev_id = AllDrivers[i]->devId(); | 536 | cl->dev_id = AllDrivers[i]->devId(); |
537 | cl->conn_num = MAXCONNECTIONS; | 537 | cl->conn_num = MAXCONNECTIONS; |
538 | ci = cl->conn_info; | 538 | ci = cl->conn_info; |
539 | 539 | ||
540 | if (ioctl( getSocket(), HCIGETCONNLIST, (void *) cl)) { | 540 | if (ioctl( getSocket(), HCIGETCONNLIST, (void *) cl)) { |
541 | emit error( tr("Can't get connection list") ); | 541 | emit error( tr("Can't get NetworkSetup list") ); |
542 | break; | 542 | break; |
543 | } | 543 | } |
544 | 544 | ||
545 | for ( int k = 0; k < cl->conn_num; k++, ci++) { | 545 | for ( int k = 0; k < cl->conn_num; k++, ci++) { |
546 | 546 | ||
547 | if( ci->state != BT_CONNECTED ) { | 547 | if( ci->state != BT_CONNECTED ) { |
548 | // not yet connected | 548 | // not yet connected |
549 | continue; | 549 | continue; |
550 | } | 550 | } |
551 | 551 | ||
552 | Addr.setBDAddr( ci->bdaddr ); | 552 | Addr.setBDAddr( ci->bdaddr ); |
553 | P = findPeer( Addr ); | 553 | P = findPeer( Addr ); |
554 | if( ! P ) { | 554 | if( ! P ) { |
555 | // peer not yet known -> add | 555 | // peer not yet known -> add |
556 | P = new OTPeer( this ); | 556 | P = new OTPeer( this ); |
557 | addPeer( P ); | 557 | addPeer( P ); |
558 | P->setAddress( Addr ); | 558 | P->setAddress( Addr ); |
559 | // infoQueue.push_back(info); | 559 | // infoQueue.push_back(info); |
560 | P->setName( AllDrivers[i]->getPeerName( Addr ) ); | 560 | P->setName( AllDrivers[i]->getPeerName( Addr ) ); |
561 | } | 561 | } |
562 | P->setState( OTPeer::Peer_Up ); | 562 | P->setState( OTPeer::Peer_Up ); |
563 | P->setConnectedTo( AllDrivers[i] ); | 563 | P->setConnectedTo( AllDrivers[i] ); |
564 | } | 564 | } |
565 | } | 565 | } |
566 | 566 | ||
567 | free( cl ); | 567 | free( cl ); |
568 | } | 568 | } |
569 | 569 | ||
570 | void OTGateway::loadKnownPeers( void ) { | 570 | void OTGateway::loadKnownPeers( void ) { |
571 | QDir SaveDir = QDir::home(); | 571 | QDir SaveDir = QDir::home(); |
572 | 572 | ||
573 | if( ! SaveDir.exists( "Settings" ) ) { | 573 | if( ! SaveDir.exists( "Settings" ) ) { |
574 | return; | 574 | return; |
575 | } | 575 | } |
576 | SaveDir.cd( "Settings" ); | 576 | SaveDir.cd( "Settings" ); |
577 | 577 | ||
578 | if( ! SaveDir.exists( "opietooth" ) ) { | 578 | if( ! SaveDir.exists( "opietooth" ) ) { |
579 | return; | 579 | return; |
580 | } | 580 | } |
581 | SaveDir.cd( "opietooth" ); | 581 | SaveDir.cd( "opietooth" ); |
582 | 582 | ||
583 | QFile F( SaveDir.path() + "/SeenDevices.conf" ); | 583 | QFile F( SaveDir.path() + "/SeenDevices.conf" ); |
584 | 584 | ||
585 | if( F.open( IO_ReadOnly ) ) { | 585 | if( F.open( IO_ReadOnly ) ) { |
586 | QTextStream TS(&F); | 586 | QTextStream TS(&F); |
587 | long count; | 587 | long count; |
588 | 588 | ||
589 | count = TS.readLine().toLong(); | 589 | count = TS.readLine().toLong(); |
590 | 590 | ||
591 | while( count > 0 ) { | 591 | while( count > 0 ) { |
592 | addPeer( new OTPeer( TS, this ) ); | 592 | addPeer( new OTPeer( TS, this ) ); |
593 | count --; | 593 | count --; |
594 | } | 594 | } |
595 | } | 595 | } |
596 | 596 | ||
597 | AllPeersModified = 0; | 597 | AllPeersModified = 0; |
598 | } | 598 | } |
599 | 599 | ||
600 | void OTGateway::saveKnownPeers( void ) { | 600 | void OTGateway::saveKnownPeers( void ) { |
601 | QDir SaveDir = QDir::home(); | 601 | QDir SaveDir = QDir::home(); |
602 | 602 | ||
603 | if( ! SaveDir.exists( "Settings" ) ) { | 603 | if( ! SaveDir.exists( "Settings" ) ) { |
604 | SaveDir.mkdir( "Settings" ); | 604 | SaveDir.mkdir( "Settings" ); |
605 | } | 605 | } |
606 | SaveDir.cd( "Settings" ); | 606 | SaveDir.cd( "Settings" ); |
607 | 607 | ||
608 | if( ! SaveDir.exists( "opietooth" ) ) { | 608 | if( ! SaveDir.exists( "opietooth" ) ) { |
609 | SaveDir.mkdir( "opietooth" ); | 609 | SaveDir.mkdir( "opietooth" ); |
610 | } | 610 | } |
611 | SaveDir.cd( "opietooth" ); | 611 | SaveDir.cd( "opietooth" ); |
612 | 612 | ||
613 | QFile F( SaveDir.path() + "/SeenDevices.conf" ); | 613 | QFile F( SaveDir.path() + "/SeenDevices.conf" ); |
614 | 614 | ||
615 | if( F.open( IO_WriteOnly | IO_Truncate ) ) { | 615 | if( F.open( IO_WriteOnly | IO_Truncate ) ) { |
616 | QTextStream TS(&F); | 616 | QTextStream TS(&F); |
617 | QString S; | 617 | QString S; |
618 | 618 | ||
619 | TS << AllPeers.count() << endl; | 619 | TS << AllPeers.count() << endl; |
620 | 620 | ||
621 | for( unsigned int i = 0; | 621 | for( unsigned int i = 0; |
622 | i < AllPeers.count(); | 622 | i < AllPeers.count(); |
623 | i ++ ) { | 623 | i ++ ) { |
624 | AllPeers[i]->save( TS ); | 624 | AllPeers[i]->save( TS ); |
625 | } | 625 | } |
626 | AllPeersModified = 0; | 626 | AllPeersModified = 0; |
627 | } | 627 | } |
628 | AllPeersModified = 0; | 628 | AllPeersModified = 0; |
629 | } | 629 | } |
630 | 630 | ||
631 | int OTGateway::connectedToRFCommChannel( const OTDeviceAddress & Addr, | 631 | int OTGateway::connectedToRFCommChannel( const OTDeviceAddress & Addr, |
632 | int channel ) { | 632 | int channel ) { |
633 | 633 | ||
634 | int s; | 634 | int s; |
635 | 635 | ||
636 | if( (s = ::socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_RFCOMM)) < 0 ) { | 636 | if( (s = ::socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_RFCOMM)) < 0 ) { |
637 | emit error( tr("Can't open RFCOMM control socket") ); | 637 | emit error( tr("Can't open RFCOMM control socket") ); |
638 | return 0; | 638 | return 0; |
639 | } | 639 | } |
640 | 640 | ||
641 | // get all rfcomm devices | 641 | // get all rfcomm devices |
642 | { struct rfcomm_dev_list_req *dl; | 642 | { struct rfcomm_dev_list_req *dl; |
643 | struct rfcomm_dev_info *di, *dr; | 643 | struct rfcomm_dev_info *di, *dr; |
644 | int i; | 644 | int i; |
645 | 645 | ||
646 | dl = (struct rfcomm_dev_list_req *)alloca( | 646 | dl = (struct rfcomm_dev_list_req *)alloca( |
647 | sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di)); | 647 | sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di)); |
648 | memset( dl, 0, sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di) ); | 648 | memset( dl, 0, sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di) ); |
649 | dl->dev_num = RFCOMM_MAX_DEV; | 649 | dl->dev_num = RFCOMM_MAX_DEV; |
650 | di = dl->dev_info; | 650 | di = dl->dev_info; |
651 | 651 | ||
652 | if( ::ioctl(s, RFCOMMGETDEVLIST, (void *) dl) < 0) { | 652 | if( ::ioctl(s, RFCOMMGETDEVLIST, (void *) dl) < 0) { |
653 | emit error( tr("Can't get device list") ); | 653 | emit error( tr("Can't get device list") ); |
654 | ::close( s ); | 654 | ::close( s ); |
655 | return 0; | 655 | return 0; |
656 | } | 656 | } |
657 | 657 | ||
658 | dr = di; | 658 | dr = di; |
659 | for (i = 0; i < dl->dev_num; i++, dr++) { | 659 | for (i = 0; i < dl->dev_num; i++, dr++) { |
660 | // connected to Peer | 660 | // connected to Peer |
661 | if( Addr == OTDeviceAddress( dr->dst ) && | 661 | if( Addr == OTDeviceAddress( dr->dst ) && |
662 | channel == dr->channel && | 662 | channel == dr->channel && |
663 | ( dr->state != 0 ) | 663 | ( dr->state != 0 ) |
664 | ) { | 664 | ) { |
665 | // return device ID | 665 | // return device ID |
666 | return dr->id; | 666 | return dr->id; |
667 | } | 667 | } |
668 | } | 668 | } |
669 | } | 669 | } |
670 | 670 | ||
671 | // no device | 671 | // no device |
672 | return -1; | 672 | return -1; |
673 | } | 673 | } |
674 | 674 | ||
675 | static int byID( struct rfcomm_dev_info * d1, | 675 | static int byID( struct rfcomm_dev_info * d1, |
676 | struct rfcomm_dev_info * d2 ) { | 676 | struct rfcomm_dev_info * d2 ) { |
677 | return d1->id - d2->id; | 677 | return d1->id - d2->id; |
678 | } | 678 | } |
679 | 679 | ||
680 | int OTGateway::getFreeRFCommDevice( void ) { | 680 | int OTGateway::getFreeRFCommDevice( void ) { |
681 | 681 | ||
682 | int s; | 682 | int s; |
683 | 683 | ||
684 | if( (s = ::socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_RFCOMM)) < 0 ) { | 684 | if( (s = ::socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_RFCOMM)) < 0 ) { |
685 | emit error( tr("Can't open RFCOMM control socket") ); | 685 | emit error( tr("Can't open RFCOMM control socket") ); |
686 | return 0; | 686 | return 0; |
687 | } | 687 | } |
688 | 688 | ||
689 | // get all rfcomm devices | 689 | // get all rfcomm devices |
690 | { struct rfcomm_dev_list_req *dl; | 690 | { struct rfcomm_dev_list_req *dl; |
691 | struct rfcomm_dev_info *di, *dr; | 691 | struct rfcomm_dev_info *di, *dr; |
692 | int i; | 692 | int i; |
693 | 693 | ||
694 | dl = (struct rfcomm_dev_list_req *)alloca( | 694 | dl = (struct rfcomm_dev_list_req *)alloca( |
695 | sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di)); | 695 | sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di)); |
696 | 696 | ||
697 | dl->dev_num = RFCOMM_MAX_DEV; | 697 | dl->dev_num = RFCOMM_MAX_DEV; |
698 | di = dl->dev_info; | 698 | di = dl->dev_info; |
699 | 699 | ||
700 | if( ::ioctl(s, RFCOMMGETDEVLIST, (void *) dl) < 0) { | 700 | if( ::ioctl(s, RFCOMMGETDEVLIST, (void *) dl) < 0) { |
701 | emit error( tr("Can't get device list") ); | 701 | emit error( tr("Can't get device list") ); |
702 | ::close( s ); | 702 | ::close( s ); |
703 | return 0; | 703 | return 0; |
704 | } | 704 | } |
705 | 705 | ||
706 | // s | 706 | // s |
707 | if( dl->dev_num ) { | 707 | if( dl->dev_num ) { |
708 | qsort( di, sizeof(struct rfcomm_dev_info), | 708 | qsort( di, sizeof(struct rfcomm_dev_info), |
709 | dl->dev_num, (int(*)(const void*,const void*))byID ); | 709 | dl->dev_num, (int(*)(const void*,const void*))byID ); |
710 | int id = 0; | 710 | int id = 0; |
711 | 711 | ||
712 | dr = di; | 712 | dr = di; |
713 | // find lowest free device number | 713 | // find lowest free device number |
714 | for (i = 0; i < dl->dev_num; i++, dr++) { | 714 | for (i = 0; i < dl->dev_num; i++, dr++) { |
715 | if( id != dr->id ) { | 715 | if( id != dr->id ) { |
716 | return id; | 716 | return id; |
717 | } | 717 | } |
718 | id ++; | 718 | id ++; |
719 | } | 719 | } |
720 | return id; | 720 | return id; |
721 | } else { | 721 | } else { |
722 | return 0; | 722 | return 0; |
723 | } | 723 | } |
724 | } | 724 | } |
725 | } | 725 | } |
726 | 726 | ||
727 | int OTGateway::releaseRFCommDevice( int devnr ) { | 727 | int OTGateway::releaseRFCommDevice( int devnr ) { |
728 | 728 | ||
729 | int s; | 729 | int s; |
730 | 730 | ||
731 | if( (s = ::socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_RFCOMM)) < 0 ) { | 731 | if( (s = ::socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_RFCOMM)) < 0 ) { |
732 | emit error( tr("Can't open RFCOMM control socket") ); | 732 | emit error( tr("Can't open RFCOMM control socket") ); |
733 | return 0; | 733 | return 0; |
734 | } | 734 | } |
735 | 735 | ||
736 | // get all rfcomm devices | 736 | // get all rfcomm devices |
737 | { struct rfcomm_dev_list_req *dl; | 737 | { struct rfcomm_dev_list_req *dl; |
738 | struct rfcomm_dev_info *di, *dr; | 738 | struct rfcomm_dev_info *di, *dr; |
739 | int i; | 739 | int i; |
740 | 740 | ||
741 | dl = (struct rfcomm_dev_list_req *)alloca( | 741 | dl = (struct rfcomm_dev_list_req *)alloca( |
742 | sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di)); | 742 | sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di)); |
743 | memset( dl, 0, sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di) ); | 743 | memset( dl, 0, sizeof(*dl) + RFCOMM_MAX_DEV * sizeof(*di) ); |
744 | dl->dev_num = RFCOMM_MAX_DEV; | 744 | dl->dev_num = RFCOMM_MAX_DEV; |
745 | di = dl->dev_info; | 745 | di = dl->dev_info; |
746 | 746 | ||
747 | if( ::ioctl(s, RFCOMMGETDEVLIST, (void *) dl) < 0) { | 747 | if( ::ioctl(s, RFCOMMGETDEVLIST, (void *) dl) < 0) { |
748 | emit error( tr("Can't get device list") ); | 748 | emit error( tr("Can't get device list") ); |
749 | ::close( s ); | 749 | ::close( s ); |
750 | return 0; | 750 | return 0; |
751 | } | 751 | } |
752 | 752 | ||
753 | dr = di; | 753 | dr = di; |
754 | for (i = 0; i < dl->dev_num; i++, dr++) { | 754 | for (i = 0; i < dl->dev_num; i++, dr++) { |
755 | if( dr->id == devnr ) { | 755 | if( dr->id == devnr ) { |
756 | // still in connection list | 756 | // still in NetworkSetup list |
757 | struct rfcomm_dev_req req; | 757 | struct rfcomm_dev_req req; |
758 | int err; | 758 | int err; |
759 | 759 | ||
760 | memset(&req, 0, sizeof(req)); | 760 | memset(&req, 0, sizeof(req)); |
761 | req.dev_id = devnr; | 761 | req.dev_id = devnr; |
762 | 762 | ||
763 | if ((err = ioctl(s, RFCOMMRELEASEDEV, &req)) < 0 ) { | 763 | if ((err = ioctl(s, RFCOMMRELEASEDEV, &req)) < 0 ) { |
764 | return err; | 764 | return err; |
765 | } | 765 | } |
766 | return 0; | 766 | return 0; |
767 | } | 767 | } |
768 | } | 768 | } |
769 | } | 769 | } |
770 | 770 | ||
771 | // no device -> nothing to release eiterh | 771 | // no device -> nothing to release eiterh |
772 | return 0; | 772 | return 0; |
773 | } | 773 | } |
774 | 774 | ||
diff --git a/noncore/settings/networksettings2/opietooth2/OTGateway.h b/noncore/settings/networksettings2/opietooth2/OTGateway.h index 11c6b30..d0e42db 100644 --- a/noncore/settings/networksettings2/opietooth2/OTGateway.h +++ b/noncore/settings/networksettings2/opietooth2/OTGateway.h | |||
@@ -1,200 +1,200 @@ | |||
1 | #ifndef OTGATEWAY_H | 1 | #ifndef OTGATEWAY_H |
2 | #define OTGATEWAY_H | 2 | #define OTGATEWAY_H |
3 | 3 | ||
4 | #include <qobject.h> | 4 | #include <qobject.h> |
5 | #include <qvector.h> | 5 | #include <qvector.h> |
6 | #include <qmap.h> | 6 | #include <qmap.h> |
7 | 7 | ||
8 | #include <OTDriverList.h> | 8 | #include <OTDriverList.h> |
9 | #include <OTInquiry.h> | 9 | #include <OTInquiry.h> |
10 | 10 | ||
11 | class QPixmap; | 11 | class QPixmap; |
12 | 12 | ||
13 | namespace Opietooth2 { | 13 | namespace Opietooth2 { |
14 | 14 | ||
15 | class OTDriverList; | 15 | class OTDriverList; |
16 | class OTDriver; | 16 | class OTDriver; |
17 | class OTDevice; | 17 | class OTDevice; |
18 | class OTPeer; | 18 | class OTPeer; |
19 | class OTInquiry; | 19 | class OTInquiry; |
20 | class OTPANConnection; | 20 | class OTPANNetworkSetup; |
21 | class OTLinkKey; | 21 | class OTLinkKey; |
22 | 22 | ||
23 | typedef QVector<OTPeer> PeerVector; | 23 | typedef QVector<OTPeer> PeerVector; |
24 | typedef QVector<OTPANConnection> PANConnectionVector; | 24 | typedef QVector<OTPANNetworkSetup> PANNetworkSetupVector; |
25 | typedef QArray<OTLinkKey> LinkKeyArray; | 25 | typedef QArray<OTLinkKey> LinkKeyArray; |
26 | 26 | ||
27 | class OTLinkKey { | 27 | class OTLinkKey { |
28 | 28 | ||
29 | public : | 29 | public : |
30 | 30 | ||
31 | OTLinkKey( const OTDeviceAddress & F, | 31 | OTLinkKey( const OTDeviceAddress & F, |
32 | const OTDeviceAddress & T ) { | 32 | const OTDeviceAddress & T ) { |
33 | From = F; | 33 | From = F; |
34 | To = T; | 34 | To = T; |
35 | } | 35 | } |
36 | 36 | ||
37 | const OTDeviceAddress & to() | 37 | const OTDeviceAddress & to() |
38 | { return To; } | 38 | { return To; } |
39 | const OTDeviceAddress & from() | 39 | const OTDeviceAddress & from() |
40 | { return From; } | 40 | { return From; } |
41 | 41 | ||
42 | OTDeviceAddress From; | 42 | OTDeviceAddress From; |
43 | OTDeviceAddress To; | 43 | OTDeviceAddress To; |
44 | }; | 44 | }; |
45 | 45 | ||
46 | class OTPANConnection { | 46 | class OTPANNetworkSetup { |
47 | 47 | ||
48 | public : | 48 | public : |
49 | 49 | ||
50 | OTPANConnection( const QString & Dev, const QString & CT ) { | 50 | OTPANNetworkSetup( const QString & Dev, const QString & CT ) { |
51 | Device = Dev; | 51 | Device = Dev; |
52 | ConnectedTo = CT; | 52 | ConnectedTo = CT; |
53 | } | 53 | } |
54 | 54 | ||
55 | QString Device; | 55 | QString Device; |
56 | QString ConnectedTo; | 56 | QString ConnectedTo; |
57 | }; | 57 | }; |
58 | 58 | ||
59 | 59 | ||
60 | class OTGateway : public QObject { | 60 | class OTGateway : public QObject { |
61 | 61 | ||
62 | Q_OBJECT | 62 | Q_OBJECT |
63 | 63 | ||
64 | public : | 64 | public : |
65 | 65 | ||
66 | // single instance | 66 | // single instance |
67 | static OTGateway * getOTGateway( void ); | 67 | static OTGateway * getOTGateway( void ); |
68 | static void releaseOTGateway( void ); | 68 | static void releaseOTGateway( void ); |
69 | // convert device type as class to name for that class | 69 | // convert device type as class to name for that class |
70 | static const char * deviceTypeToName( int Cls ); | 70 | static const char * deviceTypeToName( int Cls ); |
71 | 71 | ||
72 | // open bluetooth system | 72 | // open bluetooth system |
73 | OTGateway( void ); | 73 | OTGateway( void ); |
74 | // close bluetooth system | 74 | // close bluetooth system |
75 | ~OTGateway( void ); | 75 | ~OTGateway( void ); |
76 | 76 | ||
77 | // get access to system device | 77 | // get access to system device |
78 | OTDevice * getOTDevice(); | 78 | OTDevice * getOTDevice(); |
79 | 79 | ||
80 | // return true if this device needs enabling of bluetooth | 80 | // return true if this device needs enabling of bluetooth |
81 | bool needsEnabling(); | 81 | bool needsEnabling(); |
82 | // return true if system is running | 82 | // return true if system is running |
83 | bool isEnabled(); | 83 | bool isEnabled(); |
84 | void setRefreshTimer( int MilleSecs ); | 84 | void setRefreshTimer( int MilleSecs ); |
85 | // return socket to HCI raw layer | 85 | // return socket to HCI raw layer |
86 | inline int getSocket() | 86 | inline int getSocket() |
87 | { return HciCtl; } | 87 | { return HciCtl; } |
88 | 88 | ||
89 | OTDriverList & getDriverList() | 89 | OTDriverList & getDriverList() |
90 | { return AllDrivers; } | 90 | { return AllDrivers; } |
91 | OTDriver * driver( int nr ) | 91 | OTDriver * driver( int nr ) |
92 | { return AllDrivers.count() == 0 ? 0 : AllDrivers[nr]; } | 92 | { return AllDrivers.count() == 0 ? 0 : AllDrivers[nr]; } |
93 | void updateDrivers(); | 93 | void updateDrivers(); |
94 | 94 | ||
95 | PANConnectionVector getPANConnections(); | 95 | PANNetworkSetupVector getPANNetworkSetups(); |
96 | 96 | ||
97 | // scan neighbourhood using device | 97 | // scan neighbourhood using device |
98 | void scanNeighbourhood( OTDriver * D = 0 ); | 98 | void scanNeighbourhood( OTDriver * D = 0 ); |
99 | void stopScanOfNeighbourhood(void ); | 99 | void stopScanOfNeighbourhood(void ); |
100 | void setScanWith( OTDriver * D = 0 ) | 100 | void setScanWith( OTDriver * D = 0 ) |
101 | { ScanWith = (D) ? D : | 101 | { ScanWith = (D) ? D : |
102 | (AllDrivers.count() ) ? AllDrivers[0] : 0; } | 102 | (AllDrivers.count() ) ? AllDrivers[0] : 0; } |
103 | OTDriver * scanWith( void ) | 103 | OTDriver * scanWith( void ) |
104 | { return ScanWith; } | 104 | { return ScanWith; } |
105 | 105 | ||
106 | // get list of all detected peers | 106 | // get list of all detected peers |
107 | inline const PeerVector & peers( void ) | 107 | inline const PeerVector & peers( void ) |
108 | { return AllPeers; } | 108 | { return AllPeers; } |
109 | // ping peer to see if it is up | 109 | // ping peer to see if it is up |
110 | bool isPeerUp( const OTDeviceAddress & PAddr, | 110 | bool isPeerUp( const OTDeviceAddress & PAddr, |
111 | int timeoutInSec = 1, | 111 | int timeoutInSec = 1, |
112 | int timeoutInUSec = 0, | 112 | int timeoutInUSec = 0, |
113 | int retry = 1 ); | 113 | int retry = 1 ); |
114 | OTPeer * findPeer( const OTDeviceAddress & Addr ); | 114 | OTPeer * findPeer( const OTDeviceAddress & Addr ); |
115 | void removePeer( OTPeer * P ); | 115 | void removePeer( OTPeer * P ); |
116 | void addPeer( OTPeer * P ); | 116 | void addPeer( OTPeer * P ); |
117 | 117 | ||
118 | OTDriver * findDriver( const OTDeviceAddress & Addr ); | 118 | OTDriver * findDriver( const OTDeviceAddress & Addr ); |
119 | 119 | ||
120 | inline const LinkKeyArray & getLinkKeys() const | 120 | inline const LinkKeyArray & getLinkKeys() const |
121 | { return AllKeys; } | 121 | { return AllKeys; } |
122 | bool removeLinkKey( unsigned int index ); | 122 | bool removeLinkKey( unsigned int index ); |
123 | 123 | ||
124 | // return device number if we are connected over any device | 124 | // return device number if we are connected over any device |
125 | // to the channel | 125 | // to the channel |
126 | // else returns -1 | 126 | // else returns -1 |
127 | int connectedToRFCommChannel( const OTDeviceAddress & Addr, int channel ); | 127 | int connectedToRFCommChannel( const OTDeviceAddress & Addr, int channel ); |
128 | int getFreeRFCommDevice( void ); | 128 | int getFreeRFCommDevice( void ); |
129 | // return 0 if properly released | 129 | // return 0 if properly released |
130 | int releaseRFCommDevice( int DevNr ); | 130 | int releaseRFCommDevice( int DevNr ); |
131 | 131 | ||
132 | public slots : | 132 | public slots : |
133 | 133 | ||
134 | // start bluetooth system | 134 | // start bluetooth system |
135 | void SLOT_SetEnabled( bool ); | 135 | void SLOT_SetEnabled( bool ); |
136 | void SLOT_Enable(); | 136 | void SLOT_Enable(); |
137 | void SLOT_Disable(); | 137 | void SLOT_Disable(); |
138 | 138 | ||
139 | // show error | 139 | // show error |
140 | void SLOT_ShowError( const QString & ); | 140 | void SLOT_ShowError( const QString & ); |
141 | 141 | ||
142 | void SLOT_Enabled( int, bool ); | 142 | void SLOT_Enabled( int, bool ); |
143 | void SLOT_DriverDisappeared( OTDriver * ); | 143 | void SLOT_DriverDisappeared( OTDriver * ); |
144 | void SLOT_PeerDetected( OTPeer *, bool ); | 144 | void SLOT_PeerDetected( OTPeer *, bool ); |
145 | void SLOT_FinishedDetecting(); | 145 | void SLOT_FinishedDetecting(); |
146 | 146 | ||
147 | signals : | 147 | signals : |
148 | 148 | ||
149 | // any error | 149 | // any error |
150 | void error( const QString & ); | 150 | void error( const QString & ); |
151 | 151 | ||
152 | // signal state of bluetooth driver | 152 | // signal state of bluetooth driver |
153 | void stateChange( OTDriver * D, bool State ); | 153 | void stateChange( OTDriver * D, bool State ); |
154 | 154 | ||
155 | // sent when list of drivers changees | 155 | // sent when list of drivers changees |
156 | void driverListChanged(); | 156 | void driverListChanged(); |
157 | 157 | ||
158 | // sent when bluetooth on device is enabled | 158 | // sent when bluetooth on device is enabled |
159 | void deviceEnabled( bool ); | 159 | void deviceEnabled( bool ); |
160 | 160 | ||
161 | // sent when a (new if bool = TRUE) peer is detected | 161 | // sent when a (new if bool = TRUE) peer is detected |
162 | void detectedPeer( OTPeer *, bool ); | 162 | void detectedPeer( OTPeer *, bool ); |
163 | 163 | ||
164 | // end of detection process | 164 | // end of detection process |
165 | void finishedDetecting(); | 165 | void finishedDetecting(); |
166 | 166 | ||
167 | protected : | 167 | protected : |
168 | 168 | ||
169 | void connectNotify( const char * Signal ); | 169 | void connectNotify( const char * Signal ); |
170 | void disconnectNotify( const char * Signal ); | 170 | void disconnectNotify( const char * Signal ); |
171 | 171 | ||
172 | void timerEvent( QTimerEvent * ); | 172 | void timerEvent( QTimerEvent * ); |
173 | 173 | ||
174 | private : | 174 | private : |
175 | 175 | ||
176 | void loadActiveConnections( void ); | 176 | void loadActiveNetworkSetups( void ); |
177 | void loadKnownPeers( void ); | 177 | void loadKnownPeers( void ); |
178 | void saveKnownPeers( void ); | 178 | void saveKnownPeers( void ); |
179 | bool isConnectedTo( int devid, | 179 | bool isConnectedTo( int devid, |
180 | const OTDeviceAddress & Address ); | 180 | const OTDeviceAddress & Address ); |
181 | 181 | ||
182 | void readLinkKeys(); | 182 | void readLinkKeys(); |
183 | 183 | ||
184 | static OTGateway * SingleGateway; | 184 | static OTGateway * SingleGateway; |
185 | static int UseCount; | 185 | static int UseCount; |
186 | 186 | ||
187 | OTDriver * ScanWith; | 187 | OTDriver * ScanWith; |
188 | OTDriverList AllDrivers; | 188 | OTDriverList AllDrivers; |
189 | OTDevice * TheOTDevice; | 189 | OTDevice * TheOTDevice; |
190 | int HciCtl; | 190 | int HciCtl; |
191 | int ErrorConnectCount; | 191 | int ErrorConnectCount; |
192 | int RefreshTimer; | 192 | int RefreshTimer; |
193 | OTInquiry * Scanning; | 193 | OTInquiry * Scanning; |
194 | bool AllPeersModified; | 194 | bool AllPeersModified; |
195 | PeerVector AllPeers; | 195 | PeerVector AllPeers; |
196 | LinkKeyArray AllKeys; | 196 | LinkKeyArray AllKeys; |
197 | }; | 197 | }; |
198 | } | 198 | } |
199 | 199 | ||
200 | #endif | 200 | #endif |
diff --git a/noncore/settings/networksettings2/opietooth2/OTInquiry.h b/noncore/settings/networksettings2/opietooth2/OTInquiry.h index f7bdeec..559af7a 100644 --- a/noncore/settings/networksettings2/opietooth2/OTInquiry.h +++ b/noncore/settings/networksettings2/opietooth2/OTInquiry.h | |||
@@ -1,178 +1,178 @@ | |||
1 | //-*-c++-*- | 1 | //-*-c++-*- |
2 | /*************************************************************************** | 2 | /*************************************************************************** |
3 | * Copyright (C) 2003 by Fred Schaettgen * | 3 | * Copyright (C) 2003 by Fred Schaettgen * |
4 | * kdebluetooth@schaettgen.de * | 4 | * kdebluetooth@schaettgen.de * |
5 | * * | 5 | * * |
6 | * This program is free software; you can redistribute it and/or modify * | 6 | * This program is free software; you can redistribute it and/or modify * |
7 | * it under the terms of the GNU General Public License as published by * | 7 | * it under the terms of the GNU General Public License as published by * |
8 | * the Free Software Foundation; either version 2 of the License, or * | 8 | * the Free Software Foundation; either version 2 of the License, or * |
9 | * (at your option) any later version. * | 9 | * (at your option) any later version. * |
10 | ***************************************************************************/ | 10 | ***************************************************************************/ |
11 | 11 | ||
12 | #ifndef OTINQUIRY_H | 12 | #ifndef OTINQUIRY_H |
13 | #define OTINQUIRY_H | 13 | #define OTINQUIRY_H |
14 | 14 | ||
15 | #include <qstring.h> | 15 | #include <qstring.h> |
16 | #include <qobject.h> | 16 | #include <qobject.h> |
17 | 17 | ||
18 | #include <qguardedptr.h> | 18 | #include <qguardedptr.h> |
19 | #include <qtimer.h> | 19 | #include <qtimer.h> |
20 | 20 | ||
21 | #include <OTPeer.h> | 21 | #include <OTPeer.h> |
22 | 22 | ||
23 | // #include <set> | 23 | // #include <set> |
24 | // #include <deque> | 24 | // #include <deque> |
25 | 25 | ||
26 | namespace Opietooth2 { | 26 | namespace Opietooth2 { |
27 | 27 | ||
28 | class QSocket; | 28 | class QSocket; |
29 | class QDateTime; | 29 | class QDateTime; |
30 | 30 | ||
31 | class OTDriver; | 31 | class OTDriver; |
32 | class OTHCISocket; | 32 | class OTHCISocket; |
33 | 33 | ||
34 | /** Scans for nearby bluetooth devices. | 34 | /** Scans for nearby bluetooth devices. |
35 | * This class provides an asynchronous interface to the | 35 | * This class provides an asynchronous interface to the |
36 | * inquriy HCI command. To scan for other devices, connect | 36 | * inquriy HCI command. To scan for other devices, connect |
37 | * to the signals neighbourFound() and finished() and call | 37 | * to the signals neighbourFound() and finished() and call |
38 | * inquiry(). Inquiry results are signalled as soon as they arrive, | 38 | * inquiry(). Inquiry results are signalled as soon as they arrive, |
39 | * so the information can be displayed before the whole inquiry | 39 | * so the information can be displayed before the whole inquiry |
40 | * process is finished. | 40 | * process is finished. |
41 | * Still no connections should be set up before | 41 | * Still no networkSetups should be set up before |
42 | * the finished() signal was sent (hmm, is this always true..?) | 42 | * the finished() signal was sent (hmm, is this always true..?) |
43 | */ | 43 | */ |
44 | 44 | ||
45 | class OTInquiry : public QObject { | 45 | class OTInquiry : public QObject { |
46 | 46 | ||
47 | Q_OBJECT | 47 | Q_OBJECT |
48 | 48 | ||
49 | public: | 49 | public: |
50 | 50 | ||
51 | /** Constructor. | 51 | /** Constructor. |
52 | @param owner The owning parent object | 52 | @param owner The owning parent object |
53 | */ | 53 | */ |
54 | OTInquiry( OTDriver* Drv ); | 54 | OTInquiry( OTDriver* Drv ); |
55 | 55 | ||
56 | /** Destructor. */ | 56 | /** Destructor. */ |
57 | virtual ~OTInquiry(); | 57 | virtual ~OTInquiry(); |
58 | 58 | ||
59 | // General/Unlimited Inquiry Access Code | 59 | // General/Unlimited Inquiry Access Code |
60 | static const int GIAC = 0x9E8B33; | 60 | static const int GIAC = 0x9E8B33; |
61 | 61 | ||
62 | // Limited Dedicated Inquiry Access Code | 62 | // Limited Dedicated Inquiry Access Code |
63 | static const int LIAC = 0x9E8B00; | 63 | static const int LIAC = 0x9E8B00; |
64 | 64 | ||
65 | /** Starts the inquiry. | 65 | /** Starts the inquiry. |
66 | if you start inquiry several times without calling clear(), | 66 | if you start inquiry several times without calling clear(), |
67 | you will receive each result only once. | 67 | you will receive each result only once. |
68 | @param timeout duration of the inquiry in seconds. | 68 | @param timeout duration of the inquiry in seconds. |
69 | It will be rounded to the next multiple of 1.28 sec, | 69 | It will be rounded to the next multiple of 1.28 sec, |
70 | with a maximum of 61.44 sec. | 70 | with a maximum of 61.44 sec. |
71 | @param lap | 71 | @param lap |
72 | */ | 72 | */ |
73 | bool inquire( double timeout = 8.0, | 73 | bool inquire( double timeout = 8.0, |
74 | int numResponses = 0, | 74 | int numResponses = 0, |
75 | int lap = GIAC); | 75 | int lap = GIAC); |
76 | 76 | ||
77 | void stopInquiring( ); | 77 | void stopInquiring( ); |
78 | 78 | ||
79 | /** Enters periodic inquiry mode. | 79 | /** Enters periodic inquiry mode. |
80 | An inquiry will be started at a random time in the intervall | 80 | An inquiry will be started at a random time in the intervall |
81 | between minduration and maxduration. | 81 | between minduration and maxduration. |
82 | @param minduration minimum time between two inquiries. Rounded to | 82 | @param minduration minimum time between two inquiries. Rounded to |
83 | a multiple of 1.28, (3.84 <= d <= 83884.8) | 83 | a multiple of 1.28, (3.84 <= d <= 83884.8) |
84 | @param maxduration maximum time between two inquiries. Rounded to | 84 | @param maxduration maximum time between two inquiries. Rounded to |
85 | a multiple of 1.28, (3.84 <= d <= 83884.8) | 85 | a multiple of 1.28, (3.84 <= d <= 83884.8) |
86 | @param timeout duration of the inquiry in seconds. | 86 | @param timeout duration of the inquiry in seconds. |
87 | It will be rounded to the next multiple of 1.28 sec, | 87 | It will be rounded to the next multiple of 1.28 sec, |
88 | with a maximum of 61.44 sec. | 88 | with a maximum of 61.44 sec. |
89 | @param numResponses Number of responses after which the inquiry | 89 | @param numResponses Number of responses after which the inquiry |
90 | will be stopped. 0 means no limit. | 90 | will be stopped. 0 means no limit. |
91 | @param lap | 91 | @param lap |
92 | */ | 92 | */ |
93 | /* | 93 | /* |
94 | void inquirePeriodically( double minduration, | 94 | void inquirePeriodically( double minduration, |
95 | double maxduration, | 95 | double maxduration, |
96 | double timeout = 8.0, | 96 | double timeout = 8.0, |
97 | int numResponses = 0, | 97 | int numResponses = 0, |
98 | int lap = LIAC | 98 | int lap = LIAC |
99 | ); | 99 | ); |
100 | */ | 100 | */ |
101 | /** checks if there the inquiry is running currently | 101 | /** checks if there the inquiry is running currently |
102 | @return true if there is an inquiry running | 102 | @return true if there is an inquiry running |
103 | which was started by this object. | 103 | which was started by this object. |
104 | @todo possibility to check for "foreign" inquiries. Deal with | 104 | @todo possibility to check for "foreign" inquiries. Deal with |
105 | the fact that we can receive foreign inquiry results. | 105 | the fact that we can receive foreign inquiry results. |
106 | */ | 106 | */ |
107 | bool isInquiring(); | 107 | bool isInquiring(); |
108 | 108 | ||
109 | /** This function returns true after after an inquiry was | 109 | /** This function returns true after after an inquiry was |
110 | started, results were received and the inquiry ended successfully. | 110 | started, results were received and the inquiry ended successfully. |
111 | This can be the case without calling inquiry() at all, because | 111 | This can be the case without calling inquiry() at all, because |
112 | results of inquiries started by other programs are also processed. | 112 | results of inquiries started by other programs are also processed. |
113 | */ | 113 | */ |
114 | bool isFinished(); | 114 | bool isFinished(); |
115 | 115 | ||
116 | /** Resets the list of received results and sets | 116 | /** Resets the list of received results and sets |
117 | isInquiryComplete() to false. | 117 | isInquiryComplete() to false. |
118 | */ | 118 | */ |
119 | void reset(); | 119 | void reset(); |
120 | 120 | ||
121 | inline OTDriver * driver() const | 121 | inline OTDriver * driver() const |
122 | { return Driver; } | 122 | { return Driver; } |
123 | 123 | ||
124 | protected: | 124 | protected: |
125 | 125 | ||
126 | /** Called when a new neighbour was found. The default | 126 | /** Called when a new neighbour was found. The default |
127 | implementation emits the neighbourFound signal. | 127 | implementation emits the neighbourFound signal. |
128 | @param bdaddr the address found. | 128 | @param bdaddr the address found. |
129 | */ | 129 | */ |
130 | virtual void onPeerFound( OTPeer * Peer, bool ); | 130 | virtual void onPeerFound( OTPeer * Peer, bool ); |
131 | 131 | ||
132 | enum ErrorCode { | 132 | enum ErrorCode { |
133 | InquiryFinishedTimeout = 0x0100 | 133 | InquiryFinishedTimeout = 0x0100 |
134 | }; | 134 | }; |
135 | 135 | ||
136 | signals : | 136 | signals : |
137 | 137 | ||
138 | void peerFound( OTPeer *, bool ); | 138 | void peerFound( OTPeer *, bool ); |
139 | 139 | ||
140 | /** Emitted after an inquiry has finished successfully. | 140 | /** Emitted after an inquiry has finished successfully. |
141 | If the inquiry was canceled, no finished signals is emitted. | 141 | If the inquiry was canceled, no finished signals is emitted. |
142 | This signal can be emitted without having called inquiry, since | 142 | This signal can be emitted without having called inquiry, since |
143 | other processes may have started an inquiry. | 143 | other processes may have started an inquiry. |
144 | */ | 144 | */ |
145 | void finished(); | 145 | void finished(); |
146 | 146 | ||
147 | /** Emitted instead of finished if an error occured after | 147 | /** Emitted instead of finished if an error occured after |
148 | calling inquiry() or periodicInquiryMode() | 148 | calling inquiry() or periodicInquiryMode() |
149 | @param code error code. | 149 | @param code error code. |
150 | @param message Error message | 150 | @param message Error message |
151 | */ | 151 | */ |
152 | void error( QString message ); | 152 | void error( QString message ); |
153 | 153 | ||
154 | private: | 154 | private: |
155 | 155 | ||
156 | // std::set<DeviceAddress> addrCache; | 156 | // std::set<DeviceAddress> addrCache; |
157 | // double currentTimeout; | 157 | // double currentTimeout; |
158 | // QByteArray* buf; | 158 | // QByteArray* buf; |
159 | // QSocket* hciSocket; | 159 | // QSocket* hciSocket; |
160 | QGuardedPtr<OTHCISocket> Socket; | 160 | QGuardedPtr<OTHCISocket> Socket; |
161 | OTDriver * Driver; | 161 | OTDriver * Driver; |
162 | 162 | ||
163 | //QDateTime *startTime; | 163 | //QDateTime *startTime; |
164 | QTimer *InquiryTimeoutTimer; | 164 | QTimer *InquiryTimeoutTimer; |
165 | 165 | ||
166 | // std::deque<InquiryInfo> infoQueue; | 166 | // std::deque<InquiryInfo> infoQueue; |
167 | bool SuccessfullyStarted; | 167 | bool SuccessfullyStarted; |
168 | bool SuccessfullyEnded; | 168 | bool SuccessfullyEnded; |
169 | 169 | ||
170 | private slots: | 170 | private slots: |
171 | 171 | ||
172 | void slotInquiryTimeout(); | 172 | void slotInquiryTimeout(); |
173 | void slotHCIEvent(unsigned char eventCode, QByteArray buf); | 173 | void slotHCIEvent(unsigned char eventCode, QByteArray buf); |
174 | 174 | ||
175 | }; | 175 | }; |
176 | 176 | ||
177 | } | 177 | } |
178 | #endif | 178 | #endif |
diff --git a/noncore/settings/networksettings2/ppp/PPPDialingedit.cpp b/noncore/settings/networksettings2/ppp/PPPDialingedit.cpp index 9264ceb..2b03c73 100644 --- a/noncore/settings/networksettings2/ppp/PPPDialingedit.cpp +++ b/noncore/settings/networksettings2/ppp/PPPDialingedit.cpp | |||
@@ -1,25 +1,24 @@ | |||
1 | #include <stdio.h> | 1 | #include <stdio.h> |
2 | #include <qcombobox.h> | 2 | #include <qcombobox.h> |
3 | #include <qmessagebox.h> | 3 | #include <qmessagebox.h> |
4 | #include <qradiobutton.h> | 4 | #include <qradiobutton.h> |
5 | #include <qlineedit.h> | 5 | #include <qlineedit.h> |
6 | #include <GUIUtils.h> | 6 | #include <GUIUtils.h> |
7 | #include "PPPDialingedit.h" | 7 | #include "PPPDialingedit.h" |
8 | 8 | ||
9 | PPPDialingEdit::PPPDialingEdit( QWidget * Parent ) : | 9 | PPPDialingEdit::PPPDialingEdit( QWidget * Parent ) : |
10 | PPPDialingGUI( Parent ){ | 10 | PPPDialingGUI( Parent ){ |
11 | 11 | ||
12 | // populate widget stack | 12 | // populate widget stack |
13 | } | 13 | } |
14 | 14 | ||
15 | QString PPPDialingEdit::acceptable( void ) { | 15 | QString PPPDialingEdit::acceptable( void ) { |
16 | return QString(); | 16 | return QString(); |
17 | } | 17 | } |
18 | 18 | ||
19 | bool PPPDialingEdit::commit( PPPData & D ) { | 19 | bool PPPDialingEdit::commit( PPPData & ) { |
20 | bool SM; | 20 | return true; |
21 | return SM; | ||
22 | } | 21 | } |
23 | 22 | ||
24 | void PPPDialingEdit::showData( PPPData & D ) { | 23 | void PPPDialingEdit::showData( PPPData & D ) { |
25 | } | 24 | } |
diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.cpp b/noncore/settings/networksettings2/ppp/ppp_NN.cpp index 8c15e9c..884168c 100644 --- a/noncore/settings/networksettings2/ppp/ppp_NN.cpp +++ b/noncore/settings/networksettings2/ppp/ppp_NN.cpp | |||
@@ -1,83 +1,83 @@ | |||
1 | #include <qfile.h> | 1 | #include <qfile.h> |
2 | #include <resources.h> | 2 | #include <resources.h> |
3 | #include <qtextstream.h> | 3 | #include <qtextstream.h> |
4 | #include "ppp_NN.h" | 4 | #include "ppp_NN.h" |
5 | #include "ppp_NNI.h" | 5 | #include "ppp_NNI.h" |
6 | 6 | ||
7 | #include "netnodeinterface.h" | 7 | #include "netnodeinterface.h" |
8 | 8 | ||
9 | QStringList * PPPNetNode::ProperFiles = 0; | 9 | QStringList * PPPNetNode::ProperFiles = 0; |
10 | 10 | ||
11 | static const char * PPPNeeds[] = | 11 | static const char * PPPNeeds[] = |
12 | { "modem", | 12 | { "modem", |
13 | 0 | 13 | 0 |
14 | }; | 14 | }; |
15 | 15 | ||
16 | static const char * PPPProvides[] = | 16 | static const char * PPPProvides[] = |
17 | { "connection", | 17 | { "NetworkSetup", |
18 | 0 | 18 | 0 |
19 | }; | 19 | }; |
20 | 20 | ||
21 | /** | 21 | /** |
22 | * Constructor, find all of the possible interfaces | 22 | * Constructor, find all of the possible interfaces |
23 | */ | 23 | */ |
24 | PPPNetNode::PPPNetNode() : ANetNode(tr("PPP Connection")) { | 24 | PPPNetNode::PPPNetNode() : ANetNode(tr("PPP NetworkSetup")) { |
25 | 25 | ||
26 | NSResources->addSystemFile( | 26 | NSResources->addSystemFile( |
27 | "pap-secrets", "/etc/ppp/pap-secrets", 0 ); | 27 | "pap-secrets", "/etc/ppp/pap-secrets", 0 ); |
28 | NSResources->addSystemFile( | 28 | NSResources->addSystemFile( |
29 | "chap-secrets", "/etc/ppp/chap-secrets", 0 ); | 29 | "chap-secrets", "/etc/ppp/chap-secrets", 0 ); |
30 | } | 30 | } |
31 | 31 | ||
32 | /** | 32 | /** |
33 | * Delete any interfaces that we own. | 33 | * Delete any interfaces that we own. |
34 | */ | 34 | */ |
35 | PPPNetNode::~PPPNetNode(){ | 35 | PPPNetNode::~PPPNetNode(){ |
36 | } | 36 | } |
37 | 37 | ||
38 | const QString PPPNetNode::nodeDescription(){ | 38 | const QString PPPNetNode::nodeDescription(){ |
39 | return tr("\ | 39 | return tr("\ |
40 | <p>Sets up IP using PPP.</p>\ | 40 | <p>Sets up IP using PPP.</p>\ |
41 | <p>Use this for dialup devices or serial setups</p>\ | 41 | <p>Use this for dialup devices or serial setups</p>\ |
42 | " | 42 | " |
43 | ); | 43 | ); |
44 | } | 44 | } |
45 | 45 | ||
46 | ANetNodeInstance * PPPNetNode::createInstance( void ) { | 46 | ANetNodeInstance * PPPNetNode::createInstance( void ) { |
47 | return new APPP( this ); | 47 | return new APPP( this ); |
48 | } | 48 | } |
49 | 49 | ||
50 | const char ** PPPNetNode::needs( void ) { | 50 | const char ** PPPNetNode::needs( void ) { |
51 | return PPPNeeds; | 51 | return PPPNeeds; |
52 | } | 52 | } |
53 | 53 | ||
54 | const char ** PPPNetNode::provides( void ) { | 54 | const char ** PPPNetNode::provides( void ) { |
55 | return PPPProvides; | 55 | return PPPProvides; |
56 | } | 56 | } |
57 | 57 | ||
58 | QStringList PPPNetNode::properFiles( void ) { | 58 | QStringList PPPNetNode::properFiles( void ) { |
59 | QStringList SL; | 59 | QStringList SL; |
60 | SL << "peers" << "chatscripts"; | 60 | SL << "peers" << "chatscripts"; |
61 | return SL; | 61 | return SL; |
62 | } | 62 | } |
63 | 63 | ||
64 | // need to generate : | 64 | // need to generate : |
65 | // /etc/ppp/pap-secrets | 65 | // /etc/ppp/pap-secrets |
66 | // /etc/ppp/pap-secrets | 66 | // /etc/ppp/pap-secrets |
67 | bool PPPNetNode::hasDataForFile( SystemFile & S ) { | 67 | bool PPPNetNode::hasDataForFile( SystemFile & S ) { |
68 | return S.name() == "pap-secrets" || | 68 | return S.name() == "pap-secrets" || |
69 | S.name() == "chap-secrets" ; | 69 | S.name() == "chap-secrets" ; |
70 | } | 70 | } |
71 | 71 | ||
72 | QString PPPNetNode::genNic( long NicNr ) { | 72 | QString PPPNetNode::genNic( long NicNr ) { |
73 | QString S; | 73 | QString S; |
74 | return S.sprintf( "ppp%ld", NicNr ); | 74 | return S.sprintf( "ppp%ld", NicNr ); |
75 | } | 75 | } |
76 | 76 | ||
77 | void PPPNetNode::setSpecificAttribute( QString & , QString & ) { | 77 | void PPPNetNode::setSpecificAttribute( QString & , QString & ) { |
78 | } | 78 | } |
79 | 79 | ||
80 | void PPPNetNode::saveSpecificAttribute( QTextStream & ) { | 80 | void PPPNetNode::saveSpecificAttribute( QTextStream & ) { |
81 | } | 81 | } |
82 | 82 | ||
83 | OPIE_NS2_PLUGIN( NetNodeInterface_T<PPPNetNode> ) | 83 | OPIE_NS2_PLUGIN( NetNodeInterface_T<PPPNetNode> ) |
diff --git a/noncore/settings/networksettings2/ppp/ppp_NNI.cpp b/noncore/settings/networksettings2/ppp/ppp_NNI.cpp index 9e3bb64..7286d96 100644 --- a/noncore/settings/networksettings2/ppp/ppp_NNI.cpp +++ b/noncore/settings/networksettings2/ppp/ppp_NNI.cpp | |||
@@ -1,235 +1,235 @@ | |||
1 | #include <qfile.h> | 1 | #include <qfile.h> |
2 | #include <qfileinfo.h> | 2 | #include <qfileinfo.h> |
3 | #include "PPPedit.h" | 3 | #include "PPPedit.h" |
4 | #include "ppp_NNI.h" | 4 | #include "ppp_NNI.h" |
5 | #include "ppp_NN.h" | 5 | #include "ppp_NN.h" |
6 | 6 | ||
7 | APPP::APPP( PPPNetNode * PNN ) : ANetNodeInstance( PNN ) { | 7 | APPP::APPP( PPPNetNode * PNN ) : ANetNodeInstance( PNN ) { |
8 | Data.DNS.ServerAssigned = 1; | 8 | Data.DNS.ServerAssigned = 1; |
9 | Data.DNS.DomainName = ""; | 9 | Data.DNS.DomainName = ""; |
10 | 10 | ||
11 | Data.Auth.Mode = 0; | 11 | Data.Auth.Mode = 0; |
12 | Data.Auth.Login.Expect = "ogin:"; | 12 | Data.Auth.Login.Expect = "ogin:"; |
13 | Data.Auth.Password.Expect = "assword:"; | 13 | Data.Auth.Password.Expect = "assword:"; |
14 | Data.Auth.PCEMode = 0; | 14 | Data.Auth.PCEMode = 0; |
15 | Data.Auth.Client = "*"; | 15 | Data.Auth.Client = "*"; |
16 | Data.Auth.Server = "*"; | 16 | Data.Auth.Server = "*"; |
17 | Data.Auth.Secret = ""; | 17 | Data.Auth.Secret = ""; |
18 | 18 | ||
19 | Data.IP.LocalAddress = "10.0.0.1"; | 19 | Data.IP.LocalAddress = "10.0.0.1"; |
20 | Data.IP.RemoteAddress = "10.0.0.2"; | 20 | Data.IP.RemoteAddress = "10.0.0.2"; |
21 | Data.IP.LocalOverrule = 1; | 21 | Data.IP.LocalOverrule = 1; |
22 | Data.IP.RemoteOverrule = 1; | 22 | Data.IP.RemoteOverrule = 1; |
23 | 23 | ||
24 | Data.IP.GWAutomatic = 1; | 24 | Data.IP.GWAutomatic = 1; |
25 | Data.IP.GWAddress = ""; | 25 | Data.IP.GWAddress = ""; |
26 | Data.IP.GWIsDefault = 1; | 26 | Data.IP.GWIsDefault = 1; |
27 | Data.IP.GWIfNotSet = 1; | 27 | Data.IP.GWIfNotSet = 1; |
28 | 28 | ||
29 | Data.Run.PreConnect = ""; | 29 | Data.Run.PreConnect = ""; |
30 | Data.Run.PostConnect = ""; | 30 | Data.Run.PostConnect = ""; |
31 | Data.Run.PreDisconnect = ""; | 31 | Data.Run.PreDisconnect = ""; |
32 | Data.Run.PostDisconnect = ""; | 32 | Data.Run.PostDisconnect = ""; |
33 | 33 | ||
34 | GUI = 0; | 34 | GUI = 0; |
35 | RT = 0; | 35 | RT = 0; |
36 | 36 | ||
37 | } | 37 | } |
38 | 38 | ||
39 | void APPP::setSpecificAttribute( QString & A, QString & V ) { | 39 | void APPP::setSpecificAttribute( QString & A, QString & V ) { |
40 | if( A.startsWith( "dns" ) ) { | 40 | if( A.startsWith( "dns" ) ) { |
41 | if( A == "dnsserverassigned" ) { | 41 | if( A == "dnsserverassigned" ) { |
42 | Data.DNS.ServerAssigned = (V == "yes"); | 42 | Data.DNS.ServerAssigned = (V == "yes"); |
43 | } else if( A == "dnsdomainname" ) { | 43 | } else if( A == "dnsdomainname" ) { |
44 | Data.DNS.DomainName = V; | 44 | Data.DNS.DomainName = V; |
45 | } else if( A == "dnsserver" ) { | 45 | } else if( A == "dnsserver" ) { |
46 | Data.DNS.Servers.resize( Data.DNS.Servers.size()+1 ); | 46 | Data.DNS.Servers.resize( Data.DNS.Servers.size()+1 ); |
47 | Data.DNS.Servers[Data.DNS.Servers.size()-1] = | 47 | Data.DNS.Servers[Data.DNS.Servers.size()-1] = |
48 | new QString( V ); | 48 | new QString( V ); |
49 | } | 49 | } |
50 | } else if( A.startsWith( "auth" ) ) { | 50 | } else if( A.startsWith( "auth" ) ) { |
51 | if( A == "authmode" ) { | 51 | if( A == "authmode" ) { |
52 | Data.Auth.Mode = V.toShort(); | 52 | Data.Auth.Mode = V.toShort(); |
53 | } else if( A == "authloginexpect" ) { | 53 | } else if( A == "authloginexpect" ) { |
54 | Data.Auth.Login.Expect = V; | 54 | Data.Auth.Login.Expect = V; |
55 | } else if( A == "authloginsend" ) { | 55 | } else if( A == "authloginsend" ) { |
56 | Data.Auth.Login.Send = V; | 56 | Data.Auth.Login.Send = V; |
57 | } else if( A == "authpasswordexpect" ) { | 57 | } else if( A == "authpasswordexpect" ) { |
58 | Data.Auth.Password.Expect = V; | 58 | Data.Auth.Password.Expect = V; |
59 | } else if( A == "authpasswordsend" ) { | 59 | } else if( A == "authpasswordsend" ) { |
60 | Data.Auth.Password.Send = V; | 60 | Data.Auth.Password.Send = V; |
61 | } else if( A == "authpcemode" ) { | 61 | } else if( A == "authpcemode" ) { |
62 | Data.Auth.PCEMode = V.toShort(); | 62 | Data.Auth.PCEMode = V.toShort(); |
63 | } else if( A == "authclient" ) { | 63 | } else if( A == "authclient" ) { |
64 | Data.Auth.Client = V; | 64 | Data.Auth.Client = V; |
65 | } else if( A == "authserver" ) { | 65 | } else if( A == "authserver" ) { |
66 | Data.Auth.Server = V; | 66 | Data.Auth.Server = V; |
67 | } else if( A == "authsecret" ) { | 67 | } else if( A == "authsecret" ) { |
68 | Data.Auth.Secret = V; | 68 | Data.Auth.Secret = V; |
69 | } | 69 | } |
70 | } else if( A.startsWith( "ip" ) ) { | 70 | } else if( A.startsWith( "ip" ) ) { |
71 | if( A == "iplocaloverrule" ) { | 71 | if( A == "iplocaloverrule" ) { |
72 | Data.IP.LocalOverrule = (V == "yes"); | 72 | Data.IP.LocalOverrule = (V == "yes"); |
73 | } else if( A == "ipremoteoverrule" ) { | 73 | } else if( A == "ipremoteoverrule" ) { |
74 | Data.IP.RemoteOverrule = (V == "yes"); | 74 | Data.IP.RemoteOverrule = (V == "yes"); |
75 | } else if( A == "ipgwautomatic" ) { | 75 | } else if( A == "ipgwautomatic" ) { |
76 | Data.IP.GWAutomatic = (V == "yes"); | 76 | Data.IP.GWAutomatic = (V == "yes"); |
77 | } else if( A == "ipgwisdefault" ) { | 77 | } else if( A == "ipgwisdefault" ) { |
78 | Data.IP.GWIsDefault = (V == "yes"); | 78 | Data.IP.GWIsDefault = (V == "yes"); |
79 | } else if( A == "ipgwifnotset" ) { | 79 | } else if( A == "ipgwifnotset" ) { |
80 | Data.IP.GWIfNotSet = (V == "yes"); | 80 | Data.IP.GWIfNotSet = (V == "yes"); |
81 | } else if( A == "iplocaladdress" ) { | 81 | } else if( A == "iplocaladdress" ) { |
82 | Data.IP.LocalAddress = V; | 82 | Data.IP.LocalAddress = V; |
83 | } else if( A == "ipremoteaddress" ) { | 83 | } else if( A == "ipremoteaddress" ) { |
84 | Data.IP.RemoteAddress = V; | 84 | Data.IP.RemoteAddress = V; |
85 | } else if( A == "ipgwaddress" ) { | 85 | } else if( A == "ipgwaddress" ) { |
86 | Data.IP.GWAddress = V; | 86 | Data.IP.GWAddress = V; |
87 | } | 87 | } |
88 | } else if( A.startsWith( "run" ) ) { | 88 | } else if( A.startsWith( "run" ) ) { |
89 | if( A == "runpreconnect" ) { | 89 | if( A == "runpreconnect" ) { |
90 | Data.Run.PreConnect = V; | 90 | Data.Run.PreConnect = V; |
91 | } else if( A == "runpostconnect" ) { | 91 | } else if( A == "runpostconnect" ) { |
92 | Data.Run.PostConnect = V; | 92 | Data.Run.PostConnect = V; |
93 | } else if( A == "runpredisconnect" ) { | 93 | } else if( A == "runpredisconnect" ) { |
94 | Data.Run.PreDisconnect = V; | 94 | Data.Run.PreDisconnect = V; |
95 | } else if( A == "runpostdisconnect" ) { | 95 | } else if( A == "runpostdisconnect" ) { |
96 | Data.Run.PostDisconnect = V; | 96 | Data.Run.PostDisconnect = V; |
97 | } | 97 | } |
98 | } | 98 | } |
99 | } | 99 | } |
100 | 100 | ||
101 | void APPP::saveSpecificAttribute( QTextStream & TS ) { | 101 | void APPP::saveSpecificAttribute( QTextStream & TS ) { |
102 | TS << "dnsserverassigned=" << | 102 | TS << "dnsserverassigned=" << |
103 | ( ( Data.DNS.ServerAssigned ) ? "yes" : "no" ) << endl; | 103 | ( ( Data.DNS.ServerAssigned ) ? "yes" : "no" ) << endl; |
104 | TS << "dnsdomainname=" << Data.DNS.DomainName << endl; | 104 | TS << "dnsdomainname=" << Data.DNS.DomainName << endl; |
105 | for( unsigned int i = 0; i < Data.DNS.Servers.size(); i ++ ) { | 105 | for( unsigned int i = 0; i < Data.DNS.Servers.size(); i ++ ) { |
106 | TS << "dnsserver=" << *(Data.DNS.Servers[i]) << endl; | 106 | TS << "dnsserver=" << *(Data.DNS.Servers[i]) << endl; |
107 | } | 107 | } |
108 | TS << "authmode=" << Data.Auth.Mode << endl; | 108 | TS << "authmode=" << Data.Auth.Mode << endl; |
109 | TS << "authloginexpect=" << quote( Data.Auth.Login.Expect ) << endl; | 109 | TS << "authloginexpect=" << quote( Data.Auth.Login.Expect ) << endl; |
110 | TS << "authloginsend=" << quote( Data.Auth.Login.Send ) << endl; | 110 | TS << "authloginsend=" << quote( Data.Auth.Login.Send ) << endl; |
111 | TS << "authpasswordexpect=" << quote( Data.Auth.Password.Expect ) << endl; | 111 | TS << "authpasswordexpect=" << quote( Data.Auth.Password.Expect ) << endl; |
112 | TS << "authpasswordsend=" << quote( Data.Auth.Password.Send ) << endl; | 112 | TS << "authpasswordsend=" << quote( Data.Auth.Password.Send ) << endl; |
113 | TS << "authpcemode=" << Data.Auth.PCEMode << endl; | 113 | TS << "authpcemode=" << Data.Auth.PCEMode << endl; |
114 | TS << "authclient=" << Data.Auth.Client << endl; | 114 | TS << "authclient=" << Data.Auth.Client << endl; |
115 | TS << "authserver=" << Data.Auth.Server << endl; | 115 | TS << "authserver=" << Data.Auth.Server << endl; |
116 | TS << "authsecret=" << quote( Data.Auth.Secret ) << endl; | 116 | TS << "authsecret=" << quote( Data.Auth.Secret ) << endl; |
117 | TS << "ipgwautomatic=" << ( ( Data.IP.GWAutomatic ) ? "yes" : "no" ) << endl; | 117 | TS << "ipgwautomatic=" << ( ( Data.IP.GWAutomatic ) ? "yes" : "no" ) << endl; |
118 | TS << "ipgwisdefault=" << ( ( Data.IP.GWIsDefault ) ? "yes" : "no" ) << endl; | 118 | TS << "ipgwisdefault=" << ( ( Data.IP.GWIsDefault ) ? "yes" : "no" ) << endl; |
119 | TS << "ipgwifnotset=" << ( ( Data.IP.GWIfNotSet ) ? "yes" : "no" ) << endl; | 119 | TS << "ipgwifnotset=" << ( ( Data.IP.GWIfNotSet ) ? "yes" : "no" ) << endl; |
120 | TS << "iplocaloverrule=" << ( ( Data.IP.LocalOverrule ) ? "yes" : "no" ) << endl; | 120 | TS << "iplocaloverrule=" << ( ( Data.IP.LocalOverrule ) ? "yes" : "no" ) << endl; |
121 | TS << "ipremoteoverrule=" << ( ( Data.IP.RemoteOverrule ) ? "yes" : "no" ) << endl; | 121 | TS << "ipremoteoverrule=" << ( ( Data.IP.RemoteOverrule ) ? "yes" : "no" ) << endl; |
122 | TS << "iplocaladdress=" << Data.IP.LocalAddress << endl; | 122 | TS << "iplocaladdress=" << Data.IP.LocalAddress << endl; |
123 | TS << "ipremoteaddress=" << Data.IP.RemoteAddress << endl; | 123 | TS << "ipremoteaddress=" << Data.IP.RemoteAddress << endl; |
124 | TS << "ipgwaddress=" << Data.IP.GWAddress << endl; | 124 | TS << "ipgwaddress=" << Data.IP.GWAddress << endl; |
125 | 125 | ||
126 | TS << "runpreconnect=" << Data.Run.PreConnect << endl; | 126 | TS << "runpreconnect=" << Data.Run.PreConnect << endl; |
127 | TS << "runpostconnect=" << Data.Run.PostConnect << endl; | 127 | TS << "runpostconnect=" << Data.Run.PostConnect << endl; |
128 | TS << "runpredisconnect=" << Data.Run.PreDisconnect << endl; | 128 | TS << "runpredisconnect=" << Data.Run.PreDisconnect << endl; |
129 | TS << "runpostdisconnect=" << Data.Run.PostDisconnect << endl; | 129 | TS << "runpostdisconnect=" << Data.Run.PostDisconnect << endl; |
130 | 130 | ||
131 | } | 131 | } |
132 | 132 | ||
133 | QWidget * APPP::edit( QWidget * parent ) { | 133 | QWidget * APPP::edit( QWidget * parent ) { |
134 | GUI = new PPPEdit( parent ); | 134 | GUI = new PPPEdit( parent ); |
135 | GUI->showData( Data ); | 135 | GUI->showData( Data ); |
136 | return GUI; | 136 | return GUI; |
137 | } | 137 | } |
138 | 138 | ||
139 | QString APPP::acceptable( void ) { | 139 | QString APPP::acceptable( void ) { |
140 | return ( GUI ) ? GUI->acceptable( ) : QString(); | 140 | return ( GUI ) ? GUI->acceptable( ) : QString(); |
141 | } | 141 | } |
142 | 142 | ||
143 | void APPP::commit( void ) { | 143 | void APPP::commit( void ) { |
144 | if( GUI && GUI->commit( Data ) ) { | 144 | if( GUI && GUI->commit( Data ) ) { |
145 | setModified( 1 ); | 145 | setModified( 1 ); |
146 | } | 146 | } |
147 | } | 147 | } |
148 | 148 | ||
149 | bool APPP::openFile( SystemFile & SF ) { | 149 | bool APPP::openFile( SystemFile & SF ) { |
150 | if( SF.name() == "peers" ) { | 150 | if( SF.name() == "peers" ) { |
151 | SF.setPath( removeSpaces( | 151 | SF.setPath( removeSpaces( |
152 | QString( "/tmp/ppp/peers/" ) + connection()->name() ) ); | 152 | QString( "/tmp/ppp/peers/" ) + networkSetup()->name() ) ); |
153 | return 1; | 153 | return 1; |
154 | } else if ( SF.name() == "chatscripts" ) { | 154 | } else if ( SF.name() == "chatscripts" ) { |
155 | SF.setPath( removeSpaces( | 155 | SF.setPath( removeSpaces( |
156 | QString( "/tmp/chatscripts/" ) + connection()->name() ) ); | 156 | QString( "/tmp/chatscripts/" ) + networkSetup()->name() ) ); |
157 | return 1; | 157 | return 1; |
158 | } | 158 | } |
159 | return 0; | 159 | return 0; |
160 | } | 160 | } |
161 | 161 | ||
162 | short APPP::generateFile( SystemFile & SF, long DevNr ) { | 162 | short APPP::generateFile( SystemFile & SF, long DevNr ) { |
163 | short rvl, rvd; | 163 | short rvl, rvd; |
164 | 164 | ||
165 | rvl = 1; | 165 | rvl = 1; |
166 | rvd = 1; | 166 | rvd = 1; |
167 | 167 | ||
168 | if( SF.name() == "pap-secrets" ) { | 168 | if( SF.name() == "pap-secrets" ) { |
169 | Log(("Generate PPP for %s\n", SF.name().latin1() )); | 169 | Log(("Generate PPP for %s\n", SF.name().latin1() )); |
170 | 170 | ||
171 | if( Data.Auth.Mode == 1 && Data.Auth.PCEMode == 0 ) { | 171 | if( Data.Auth.Mode == 1 && Data.Auth.PCEMode == 0 ) { |
172 | SF << "# secrets for " | 172 | SF << "# secrets for " |
173 | << connection()->name().latin1() | 173 | << networkSetup()->name().latin1() |
174 | << endl; | 174 | << endl; |
175 | SF << Data.Auth.Client | 175 | SF << Data.Auth.Client |
176 | << " " | 176 | << " " |
177 | << Data.Auth.Server | 177 | << Data.Auth.Server |
178 | << " " | 178 | << " " |
179 | << Data.Auth.Secret | 179 | << Data.Auth.Secret |
180 | << endl; | 180 | << endl; |
181 | rvl = 0; | 181 | rvl = 0; |
182 | rvd = connection()->getToplevel()->generateFileEmbedded( | 182 | rvd = networkSetup()->getToplevel()->generateFileEmbedded( |
183 | SF, DevNr ); | 183 | SF, DevNr ); |
184 | } | 184 | } |
185 | } else if( SF.name() == "chap-secrets" ) { | 185 | } else if( SF.name() == "chap-secrets" ) { |
186 | Log(("Generate PPP for %s\n", SF.name().latin1() )); | 186 | Log(("Generate PPP for %s\n", SF.name().latin1() )); |
187 | if( Data.Auth.Mode == 1 && Data.Auth.PCEMode != 0 ) { | 187 | if( Data.Auth.Mode == 1 && Data.Auth.PCEMode != 0 ) { |
188 | // used for both EAP and Chap | 188 | // used for both EAP and Chap |
189 | SF << "# secrets for " | 189 | SF << "# secrets for " |
190 | << connection()->name().latin1() | 190 | << networkSetup()->name().latin1() |
191 | << endl; | 191 | << endl; |
192 | SF << Data.Auth.Client | 192 | SF << Data.Auth.Client |
193 | << " " | 193 | << " " |
194 | << Data.Auth.Server | 194 | << Data.Auth.Server |
195 | << " " | 195 | << " " |
196 | << Data.Auth.Secret | 196 | << Data.Auth.Secret |
197 | << endl; | 197 | << endl; |
198 | 198 | ||
199 | rvl = 0; | 199 | rvl = 0; |
200 | rvd = connection()->getToplevel()->generateFileEmbedded( | 200 | rvd = networkSetup()->getToplevel()->generateFileEmbedded( |
201 | SF, DevNr ); | 201 | SF, DevNr ); |
202 | } | 202 | } |
203 | } else if ( SF.name() == "peers" ) { | 203 | } else if ( SF.name() == "peers" ) { |
204 | 204 | ||
205 | QFileInfo FI(SF.path()); | 205 | QFileInfo FI(SF.path()); |
206 | Log(("Generate PPP for %s\n", SF.name().latin1() )); | 206 | Log(("Generate PPP for %s\n", SF.name().latin1() )); |
207 | 207 | ||
208 | SF << "connect \"/usr/sbin/chat -v -f /etc/chatscripts/" | 208 | SF << "connect \"/usr/sbin/chat -v -f /etc/chatscripts/" |
209 | << FI.baseName() | 209 | << FI.baseName() |
210 | << "\"" | 210 | << "\"" |
211 | << endl; | 211 | << endl; |
212 | 212 | ||
213 | if( Data.IP.GWIsDefault ) { | 213 | if( Data.IP.GWIsDefault ) { |
214 | SF << "defaultroute" | 214 | SF << "defaultroute" |
215 | << endl; | 215 | << endl; |
216 | } | 216 | } |
217 | 217 | ||
218 | SF << "linkname " | 218 | SF << "linkname " |
219 | << removeSpaces( SF.name().latin1() ) | 219 | << removeSpaces( SF.name().latin1() ) |
220 | << endl; | 220 | << endl; |
221 | 221 | ||
222 | // insert other data here | 222 | // insert other data here |
223 | rvl = 0; | 223 | rvl = 0; |
224 | rvd = connection()->getToplevel()->generateFileEmbedded( | 224 | rvd = networkSetup()->getToplevel()->generateFileEmbedded( |
225 | SF, DevNr ); | 225 | SF, DevNr ); |
226 | } else if ( SF.name() == "chatscripts" ) { | 226 | } else if ( SF.name() == "chatscripts" ) { |
227 | Log(("Generate PPP for %s\n", SF.name().latin1() )); | 227 | Log(("Generate PPP for %s\n", SF.name().latin1() )); |
228 | rvl = 0; | 228 | rvl = 0; |
229 | rvd = connection()->getToplevel()->generateFileEmbedded( | 229 | rvd = networkSetup()->getToplevel()->generateFileEmbedded( |
230 | SF, DevNr ); | 230 | SF, DevNr ); |
231 | } | 231 | } |
232 | 232 | ||
233 | return (rvd == 2 || rvl == 2 ) ? 2 : | 233 | return (rvd == 2 || rvl == 2 ) ? 2 : |
234 | (rvd == 0 || rvl == 0 ) ? 0 : 1; | 234 | (rvd == 0 || rvl == 0 ) ? 0 : 1; |
235 | } | 235 | } |
diff --git a/noncore/settings/networksettings2/ppp/ppprun.cpp b/noncore/settings/networksettings2/ppp/ppprun.cpp index 8403e6d..f548483 100644 --- a/noncore/settings/networksettings2/ppp/ppprun.cpp +++ b/noncore/settings/networksettings2/ppp/ppprun.cpp | |||
@@ -1,52 +1,52 @@ | |||
1 | #include <resources.h> | 1 | #include <resources.h> |
2 | #include "ppprun.h" | 2 | #include "ppprun.h" |
3 | 3 | ||
4 | PPPRun::PPPRun( ANetNodeInstance * NNI, PPPData & Data ) : | 4 | PPPRun::PPPRun( ANetNodeInstance * NNI, PPPData & Data ) : |
5 | RuntimeInfo( NNI ), Pat( "eth[0-9]" ) { | 5 | RuntimeInfo( NNI ), Pat( "eth[0-9]" ) { |
6 | D = &Data; | 6 | D = &Data; |
7 | } | 7 | } |
8 | 8 | ||
9 | State_t PPPRun::detectState( void ) { | 9 | State_t PPPRun::detectState( void ) { |
10 | if( isMyPPPDRunning( ) ) { | 10 | if( isMyPPPDRunning( ) ) { |
11 | return ( isMyPPPUp() ) ? IsUp : Available; | 11 | return ( isMyPPPUp() ) ? IsUp : Available; |
12 | } | 12 | } |
13 | return Off; | 13 | return Off; |
14 | } | 14 | } |
15 | 15 | ||
16 | QString PPPRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 16 | QString PPPRun::setMyState( NetworkSetup * , Action_t , bool ) { |
17 | return QString(); | 17 | return QString(); |
18 | } | 18 | } |
19 | 19 | ||
20 | bool PPPRun::isMyPPPDRunning( void ) { | 20 | bool PPPRun::isMyPPPDRunning( void ) { |
21 | return 0; | 21 | return 0; |
22 | } | 22 | } |
23 | 23 | ||
24 | bool PPPRun::isMyPPPUp( void ) { | 24 | bool PPPRun::isMyPPPUp( void ) { |
25 | System & S = NSResources->system(); | 25 | System & S = NSResources->system(); |
26 | InterfaceInfo * Run; | 26 | InterfaceInfo * Run; |
27 | QRegExp R( "ppp[0-9]" ); | 27 | QRegExp R( "ppp[0-9]" ); |
28 | 28 | ||
29 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); | 29 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); |
30 | It.current(); | 30 | It.current(); |
31 | ++It ) { | 31 | ++It ) { |
32 | Run = It.current(); | 32 | Run = It.current(); |
33 | if( R.match( Run->Name ) >= 0 && | 33 | if( R.match( Run->Name ) >= 0 && |
34 | Run->IsPointToPoint | 34 | Run->IsPointToPoint |
35 | ) { | 35 | ) { |
36 | // this is a LAN card | 36 | // this is a LAN card |
37 | if( Run->assignedConnection() == netNode()->connection() ) { | 37 | if( Run->assignedToNetworkSetup() == netNode()->networkSetup() ) { |
38 | // assigned to us | 38 | // assigned to us |
39 | return 1; | 39 | return 1; |
40 | } | 40 | } |
41 | } | 41 | } |
42 | } | 42 | } |
43 | return 0; | 43 | return 0; |
44 | } | 44 | } |
45 | 45 | ||
46 | bool PPPRun::handlesInterface( const QString & S ) { | 46 | bool PPPRun::handlesInterface( const QString & S ) { |
47 | return Pat.match( S ) >= 0; | 47 | return Pat.match( S ) >= 0; |
48 | } | 48 | } |
49 | 49 | ||
50 | bool PPPRun::handlesInterface( InterfaceInfo * I ) { | 50 | bool PPPRun::handlesInterface( InterfaceInfo * I ) { |
51 | return handlesInterface( I->Name ); | 51 | return handlesInterface( I->Name ); |
52 | } | 52 | } |
diff --git a/noncore/settings/networksettings2/ppp/ppprun.h b/noncore/settings/networksettings2/ppp/ppprun.h index 2990a96..9535382 100644 --- a/noncore/settings/networksettings2/ppp/ppprun.h +++ b/noncore/settings/networksettings2/ppp/ppprun.h | |||
@@ -1,37 +1,37 @@ | |||
1 | #ifndef PPPRUN_H | 1 | #ifndef PPPRUN_H |
2 | #define PPPRUN_H | 2 | #define PPPRUN_H |
3 | 3 | ||
4 | #include <qregexp.h> | 4 | #include <qregexp.h> |
5 | #include <netnode.h> | 5 | #include <netnode.h> |
6 | #include "pppdata.h" | 6 | #include "pppdata.h" |
7 | 7 | ||
8 | class PPPRun : public RuntimeInfo { | 8 | class PPPRun : public RuntimeInfo { |
9 | 9 | ||
10 | public : | 10 | public : |
11 | 11 | ||
12 | PPPRun( ANetNodeInstance * NNI, | 12 | PPPRun( ANetNodeInstance * NNI, |
13 | PPPData & Data ); | 13 | PPPData & Data ); |
14 | 14 | ||
15 | bool handlesInterface( const QString & I ); | 15 | bool handlesInterface( const QString & I ); |
16 | bool handlesInterface( InterfaceInfo * ); | 16 | bool handlesInterface( InterfaceInfo * ); |
17 | 17 | ||
18 | State_t detectState( void ); | 18 | State_t detectState( void ); |
19 | virtual RuntimeInfo * device( void ) | 19 | virtual RuntimeInfo * device( void ) |
20 | { return this; } | 20 | { return this; } |
21 | virtual RuntimeInfo * connection( void ) | 21 | virtual RuntimeInfo * connection( void ) |
22 | { return this; } | 22 | { return this; } |
23 | 23 | ||
24 | protected : | 24 | protected : |
25 | 25 | ||
26 | QString setMyState( NodeCollection * , Action_t, bool ); | 26 | QString setMyState( NetworkSetup * , Action_t, bool ); |
27 | 27 | ||
28 | private : | 28 | private : |
29 | 29 | ||
30 | bool isMyPPPDRunning( void ); | 30 | bool isMyPPPDRunning( void ); |
31 | bool isMyPPPUp( void ); | 31 | bool isMyPPPUp( void ); |
32 | 32 | ||
33 | PPPData * D; | 33 | PPPData * D; |
34 | QRegExp Pat; | 34 | QRegExp Pat; |
35 | }; | 35 | }; |
36 | 36 | ||
37 | #endif | 37 | #endif |
diff --git a/noncore/settings/networksettings2/profile/profile_NN.cpp b/noncore/settings/networksettings2/profile/profile_NN.cpp index 1e6912e..007f4a5 100644 --- a/noncore/settings/networksettings2/profile/profile_NN.cpp +++ b/noncore/settings/networksettings2/profile/profile_NN.cpp | |||
@@ -1,58 +1,58 @@ | |||
1 | #include <resources.h> | 1 | #include <resources.h> |
2 | #include "profile_NN.h" | 2 | #include "profile_NN.h" |
3 | #include "profile_NNI.h" | 3 | #include "profile_NNI.h" |
4 | 4 | ||
5 | #include "netnodeinterface.h" | 5 | #include "netnodeinterface.h" |
6 | 6 | ||
7 | static const char * ProfileNeeds[] = | 7 | static const char * ProfileNeeds[] = |
8 | { "connection", | 8 | { "NetworkSetup", |
9 | 0 | 9 | 0 |
10 | }; | 10 | }; |
11 | static const char * ProfileProvides[] = | 11 | static const char * ProfileProvides[] = |
12 | { "fullsetup", | 12 | { "fullsetup", |
13 | 0 | 13 | 0 |
14 | }; | 14 | }; |
15 | 15 | ||
16 | /** | 16 | /** |
17 | * Constructor, find all of the possible interfaces | 17 | * Constructor, find all of the possible interfaces |
18 | */ | 18 | */ |
19 | ProfileNetNode::ProfileNetNode() : ANetNode( tr("Regular connection profile")) { | 19 | ProfileNetNode::ProfileNetNode() : ANetNode( tr("Regular NetworkSetup profile")) { |
20 | 20 | ||
21 | NSResources->addSystemFile( | 21 | NSResources->addSystemFile( |
22 | "interfaces", "/etc/network/interfaces", 1 ); | 22 | "interfaces", "/etc/network/interfaces", 1 ); |
23 | 23 | ||
24 | } | 24 | } |
25 | 25 | ||
26 | /** | 26 | /** |
27 | * Delete any interfaces that we own. | 27 | * Delete any interfaces that we own. |
28 | */ | 28 | */ |
29 | ProfileNetNode::~ProfileNetNode(){ | 29 | ProfileNetNode::~ProfileNetNode(){ |
30 | } | 30 | } |
31 | 31 | ||
32 | const QString ProfileNetNode::nodeDescription(){ | 32 | const QString ProfileNetNode::nodeDescription(){ |
33 | return tr("\ | 33 | return tr("\ |
34 | <p>Define use of an IP connection.</p>\ | 34 | <p>Define use of an IP NetworkSetup.</p>\ |
35 | <p>Configure if and when this connection needs to be established</p>\ | 35 | <p>Configure if and when this NetworkSetup needs to be established</p>\ |
36 | " | 36 | " |
37 | ); | 37 | ); |
38 | } | 38 | } |
39 | 39 | ||
40 | ANetNodeInstance * ProfileNetNode::createInstance( void ) { | 40 | ANetNodeInstance * ProfileNetNode::createInstance( void ) { |
41 | return new AProfile( this ); | 41 | return new AProfile( this ); |
42 | } | 42 | } |
43 | 43 | ||
44 | const char ** ProfileNetNode::needs( void ) { | 44 | const char ** ProfileNetNode::needs( void ) { |
45 | return ProfileNeeds; | 45 | return ProfileNeeds; |
46 | } | 46 | } |
47 | 47 | ||
48 | const char ** ProfileNetNode::provides( void ) { | 48 | const char ** ProfileNetNode::provides( void ) { |
49 | return ProfileProvides; | 49 | return ProfileProvides; |
50 | } | 50 | } |
51 | 51 | ||
52 | void ProfileNetNode::setSpecificAttribute( QString & , QString & ) { | 52 | void ProfileNetNode::setSpecificAttribute( QString & , QString & ) { |
53 | } | 53 | } |
54 | 54 | ||
55 | void ProfileNetNode::saveSpecificAttribute( QTextStream & ) { | 55 | void ProfileNetNode::saveSpecificAttribute( QTextStream & ) { |
56 | } | 56 | } |
57 | 57 | ||
58 | OPIE_NS2_PLUGIN( NetNodeInterface_T<ProfileNetNode> ) | 58 | OPIE_NS2_PLUGIN( NetNodeInterface_T<ProfileNetNode> ) |
diff --git a/noncore/settings/networksettings2/profile/profiledata.h b/noncore/settings/networksettings2/profile/profiledata.h index c9577e5..2f7060d 100644 --- a/noncore/settings/networksettings2/profile/profiledata.h +++ b/noncore/settings/networksettings2/profile/profiledata.h | |||
@@ -1,17 +1,17 @@ | |||
1 | #ifndef PROFILE_DATA_H | 1 | #ifndef PROFILE_DATA_H |
2 | #define PROFILE_DATA_H | 2 | #define PROFILE_DATA_H |
3 | 3 | ||
4 | #include <qstring.h> | 4 | #include <qstring.h> |
5 | class ProfileData { | 5 | class ProfileData { |
6 | public : | 6 | public : |
7 | QString Description; | 7 | QString Description; |
8 | // start up automatically | 8 | // start up automatically |
9 | bool Automatic; | 9 | bool Automatic; |
10 | // if started up automatically, ask user for confirmation | 10 | // if started up automatically, ask user for confirmation |
11 | bool Confirm; | 11 | bool Confirm; |
12 | // Do not bring this connection up | 12 | // Do not bring this networkSetup up |
13 | bool Disabled; | 13 | bool Disabled; |
14 | bool TriggerVPN; | 14 | bool TriggerVPN; |
15 | } ; | 15 | } ; |
16 | 16 | ||
17 | #endif | 17 | #endif |
diff --git a/noncore/settings/networksettings2/profile/profileedit.cpp b/noncore/settings/networksettings2/profile/profileedit.cpp index 88aab15..ad943fe 100644 --- a/noncore/settings/networksettings2/profile/profileedit.cpp +++ b/noncore/settings/networksettings2/profile/profileedit.cpp | |||
@@ -1,98 +1,102 @@ | |||
1 | #include <qlabel.h> | 1 | #include <qlabel.h> |
2 | #include <qframe.h> | 2 | #include <qframe.h> |
3 | #include <qcheckbox.h> | 3 | #include <qcheckbox.h> |
4 | #include <qmultilineedit.h> | 4 | #include <qmultilineedit.h> |
5 | #include <qcheckbox.h> | 5 | #include <qcheckbox.h> |
6 | 6 | ||
7 | #include <GUIUtils.h> | 7 | #include <GUIUtils.h> |
8 | #include <netnode.h> | 8 | #include <netnode.h> |
9 | #include <resources.h> | 9 | #include <resources.h> |
10 | 10 | ||
11 | #include "profileedit.h" | 11 | #include "profileedit.h" |
12 | 12 | ||
13 | ProfileEdit::ProfileEdit( QWidget * Parent, ANetNodeInstance * TNNI ) : | 13 | ProfileEdit::ProfileEdit( QWidget * Parent, ANetNodeInstance * TNNI ) : |
14 | ProfileGUI( Parent ), RefreshTimer(this) { | 14 | ProfileGUI( Parent ), RefreshTimer(this) { |
15 | InterfaceInfo * II; | 15 | InterfaceInfo * II; |
16 | 16 | ||
17 | II = TNNI->networkSetup()->assignedInterface(); | ||
18 | Log(( "Interface %p %p %p: %d\n", II, | ||
19 | TNNI, TNNI->networkSetup(), (II) ? II->IsUp : 0 )); | ||
20 | |||
17 | NNI = TNNI; | 21 | NNI = TNNI; |
18 | Dev = NNI->runtime()->device(); | 22 | Dev = NNI->runtime()->device(); |
19 | if( ( II = NNI->connection()->assignedInterface() ) ) { | 23 | if( ( II = NNI->networkSetup()->assignedInterface() ) ) { |
20 | 24 | ||
21 | Refresh_CB->setEnabled( TRUE ); | 25 | Refresh_CB->setEnabled( TRUE ); |
22 | Snd_GB->setEnabled( TRUE ); | 26 | Snd_GB->setEnabled( TRUE ); |
23 | Rcv_GB->setEnabled( TRUE ); | 27 | Rcv_GB->setEnabled( TRUE ); |
24 | Collisions_FRM->setEnabled( TRUE ); | 28 | Collisions_FRM->setEnabled( TRUE ); |
25 | 29 | ||
26 | // show current content | 30 | // show current content |
27 | SLOT_Refresh(); | 31 | SLOT_Refresh(); |
28 | 32 | ||
29 | // fill in static data | 33 | // fill in static data |
30 | InterfaceName_LBL->setText( II->Name ); | 34 | InterfaceName_LBL->setText( II->Name ); |
31 | IPAddress_LBL->setText( II->Address ); | 35 | IPAddress_LBL->setText( II->Address ); |
32 | SubnetMask_LBL->setText( II->Netmask ); | 36 | SubnetMask_LBL->setText( II->Netmask ); |
33 | Broadcast_LBL->setText( II->BCastAddress ); | 37 | Broadcast_LBL->setText( II->BCastAddress ); |
34 | MACAddress_LBL->setText( II->MACAddress ); | 38 | MACAddress_LBL->setText( II->MACAddress ); |
35 | if( II->IsPointToPoint ) { | 39 | if( II->IsPointToPoint ) { |
36 | PointToPoint_LBL->setText( II->DstAddress ); | 40 | PointToPoint_LBL->setText( II->DstAddress ); |
37 | } | 41 | } |
38 | QString S; | 42 | QString S; |
39 | InterfaceName_LBL->setText( II->Name ); | 43 | InterfaceName_LBL->setText( II->Name ); |
40 | if( II->HasMulticast ) { | 44 | if( II->HasMulticast ) { |
41 | S += "Multicast"; | 45 | S += "Multicast"; |
42 | } | 46 | } |
43 | if( ! S.isEmpty() ) { | 47 | if( ! S.isEmpty() ) { |
44 | S.prepend( " : " ); | 48 | S.prepend( " : " ); |
45 | } | 49 | } |
46 | InterfaceOptions_LBL->setText( S ); | 50 | InterfaceOptions_LBL->setText( S ); |
47 | 51 | ||
48 | connect( &RefreshTimer, SIGNAL( timeout() ), | 52 | connect( &RefreshTimer, SIGNAL( timeout() ), |
49 | this, SLOT( SLOT_Refresh() ) ); | 53 | this, SLOT( SLOT_Refresh() ) ); |
50 | } | 54 | } |
51 | 55 | ||
52 | } | 56 | } |
53 | 57 | ||
54 | QString ProfileEdit::acceptable( void ) { | 58 | QString ProfileEdit::acceptable( void ) { |
55 | return QString(); | 59 | return QString(); |
56 | } | 60 | } |
57 | 61 | ||
58 | void ProfileEdit::showData( ProfileData & Data ) { | 62 | void ProfileEdit::showData( ProfileData & Data ) { |
59 | Description_LE->setText( Data.Description ); | 63 | Description_LE->setText( Data.Description ); |
60 | Automatic_CB->setChecked( Data.Automatic ); | 64 | Automatic_CB->setChecked( Data.Automatic ); |
61 | TriggersVPN_CB->setChecked( Data.TriggerVPN ); | 65 | TriggersVPN_CB->setChecked( Data.TriggerVPN ); |
62 | Confirm_CB->setChecked( Data.Confirm ); | 66 | Confirm_CB->setChecked( Data.Confirm ); |
63 | Disabled_CB->setChecked( Data.Disabled ); | 67 | Disabled_CB->setChecked( Data.Disabled ); |
64 | } | 68 | } |
65 | 69 | ||
66 | 70 | ||
67 | bool ProfileEdit::commit( ProfileData & Data ) { | 71 | bool ProfileEdit::commit( ProfileData & Data ) { |
68 | bool SM = 0; | 72 | bool SM = 0; |
69 | TXTM( Data.Description, Description_LE, SM ); | 73 | TXTM( Data.Description, Description_LE, SM ); |
70 | 74 | ||
71 | CBM( Data.Automatic, Automatic_CB, SM ); | 75 | CBM( Data.Automatic, Automatic_CB, SM ); |
72 | CBM( Data.TriggerVPN, TriggersVPN_CB, SM ); | 76 | CBM( Data.TriggerVPN, TriggersVPN_CB, SM ); |
73 | CBM( Data.Disabled, Disabled_CB, SM ); | 77 | CBM( Data.Disabled, Disabled_CB, SM ); |
74 | CBM( Data.Confirm, Confirm_CB, SM ); | 78 | CBM( Data.Confirm, Confirm_CB, SM ); |
75 | 79 | ||
76 | return SM; | 80 | return SM; |
77 | } | 81 | } |
78 | 82 | ||
79 | void ProfileEdit::SLOT_Refresh( void ) { | 83 | void ProfileEdit::SLOT_Refresh( void ) { |
80 | InterfaceInfo * II = NNI->connection()->assignedInterface(); | 84 | InterfaceInfo * II = NNI->networkSetup()->assignedInterface(); |
81 | NSResources->system().refreshStatistics( *II ); | 85 | NSResources->system().refreshStatistics( *II ); |
82 | RcvBytes_LBL->setText( II->RcvBytes ); | 86 | RcvBytes_LBL->setText( II->RcvBytes ); |
83 | SndBytes_LBL->setText( II->SndBytes ); | 87 | SndBytes_LBL->setText( II->SndBytes ); |
84 | RcvErrors_LBL->setText( II->RcvErrors ); | 88 | RcvErrors_LBL->setText( II->RcvErrors ); |
85 | SndErrors_LBL->setText( II->SndErrors ); | 89 | SndErrors_LBL->setText( II->SndErrors ); |
86 | RcvDropped_LBL->setText( II->RcvDropped ); | 90 | RcvDropped_LBL->setText( II->RcvDropped ); |
87 | SndDropped_LBL->setText( II->SndDropped ); | 91 | SndDropped_LBL->setText( II->SndDropped ); |
88 | Collisions_LBL->setText( II->Collisions ); | 92 | Collisions_LBL->setText( II->Collisions ); |
89 | } | 93 | } |
90 | 94 | ||
91 | void ProfileEdit::SLOT_AutoRefresh( bool ar ) { | 95 | void ProfileEdit::SLOT_AutoRefresh( bool ar ) { |
92 | if( ar ) { | 96 | if( ar ) { |
93 | RefreshTimer.start( 1000 ); | 97 | RefreshTimer.start( 1000 ); |
94 | SLOT_Refresh(); | 98 | SLOT_Refresh(); |
95 | } else { | 99 | } else { |
96 | RefreshTimer.stop(); | 100 | RefreshTimer.stop(); |
97 | } | 101 | } |
98 | } | 102 | } |
diff --git a/noncore/settings/networksettings2/profile/profilerun.cpp b/noncore/settings/networksettings2/profile/profilerun.cpp index acb67bd..48011ea 100644 --- a/noncore/settings/networksettings2/profile/profilerun.cpp +++ b/noncore/settings/networksettings2/profile/profilerun.cpp | |||
@@ -1,27 +1,31 @@ | |||
1 | #include <resources.h> | 1 | #include <resources.h> |
2 | 2 | ||
3 | #include "profilerun.h" | 3 | #include "profilerun.h" |
4 | 4 | ||
5 | State_t ProfileRun::detectState( void ) { | 5 | State_t ProfileRun::detectState( void ) { |
6 | InterfaceInfo * II = networkSetup()->assignedInterface(); | ||
7 | |||
8 | Log(( "Interface %p %p %p: %d\n", II, | ||
9 | netNode(), netNode()->networkSetup(), (II) ? II->IsUp : 0 )); | ||
6 | if( Data->Disabled ) { | 10 | if( Data->Disabled ) { |
7 | return Disabled; | 11 | return Disabled; |
8 | } | 12 | } |
9 | return Unknown; | 13 | return Unknown; |
10 | } | 14 | } |
11 | 15 | ||
12 | QString ProfileRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 16 | QString ProfileRun::setMyState( NetworkSetup * NC, Action_t A, bool ) { |
13 | odebug << "Profile " << Data->Disabled << oendl; | 17 | odebug << "Profile " << Data->Disabled << oendl; |
14 | if( A == Disable ) { | 18 | if( A == Disable ) { |
15 | if( ! Data->Disabled ) { | 19 | if( ! Data->Disabled ) { |
16 | Data->Disabled = 1; | 20 | Data->Disabled = 1; |
17 | NC->setModified( 1 ); | 21 | NC->setModified( 1 ); |
18 | } | 22 | } |
19 | } else if( A == Enable ) { | 23 | } else if( A == Enable ) { |
20 | if( Data->Disabled ) { | 24 | if( Data->Disabled ) { |
21 | Data->Disabled = 0; | 25 | Data->Disabled = 0; |
22 | NC->setModified( 1 ); | 26 | NC->setModified( 1 ); |
23 | } | 27 | } |
24 | } | 28 | } |
25 | 29 | ||
26 | return QString(); | 30 | return QString(); |
27 | } | 31 | } |
diff --git a/noncore/settings/networksettings2/profile/profilerun.h b/noncore/settings/networksettings2/profile/profilerun.h index 2d48b15..9470c0f 100644 --- a/noncore/settings/networksettings2/profile/profilerun.h +++ b/noncore/settings/networksettings2/profile/profilerun.h | |||
@@ -1,33 +1,33 @@ | |||
1 | #ifndef PROFILERUN_H | 1 | #ifndef PROFILERUN_H |
2 | #define PROFILERUN_H | 2 | #define PROFILERUN_H |
3 | 3 | ||
4 | #include <netnode.h> | 4 | #include <netnode.h> |
5 | #include "profiledata.h" | 5 | #include "profiledata.h" |
6 | 6 | ||
7 | class ProfileRun : public RuntimeInfo { | 7 | class ProfileRun : public RuntimeInfo { |
8 | 8 | ||
9 | public : | 9 | public : |
10 | 10 | ||
11 | ProfileRun( ANetNodeInstance * NNI, ProfileData & D ) : | 11 | ProfileRun( ANetNodeInstance * NNI, ProfileData & D ) : |
12 | RuntimeInfo( NNI ) | 12 | RuntimeInfo( NNI ) |
13 | { Data = &D; } | 13 | { Data = &D; } |
14 | 14 | ||
15 | virtual RuntimeInfo * fullSetup( void ) | 15 | virtual RuntimeInfo * fullSetup( void ) |
16 | { return this; } | 16 | { return this; } |
17 | virtual const QString & description( void ) | 17 | virtual const QString & description( void ) |
18 | { return Data->Description; } | 18 | { return Data->Description; } |
19 | virtual bool triggersVPN( void ) | 19 | virtual bool triggersVPN( void ) |
20 | { return Data->TriggerVPN; } | 20 | { return Data->TriggerVPN; } |
21 | 21 | ||
22 | State_t detectState( void ); | 22 | State_t detectState( void ); |
23 | 23 | ||
24 | protected : | 24 | protected : |
25 | 25 | ||
26 | QString setMyState( NodeCollection * , Action_t, bool ); | 26 | QString setMyState( NetworkSetup * , Action_t, bool ); |
27 | 27 | ||
28 | private : | 28 | private : |
29 | 29 | ||
30 | ProfileData * Data; | 30 | ProfileData * Data; |
31 | 31 | ||
32 | }; | 32 | }; |
33 | #endif | 33 | #endif |
diff --git a/noncore/settings/networksettings2/usb/usb_NN.cpp b/noncore/settings/networksettings2/usb/usb_NN.cpp index 6d90ae0..6e2597c 100644 --- a/noncore/settings/networksettings2/usb/usb_NN.cpp +++ b/noncore/settings/networksettings2/usb/usb_NN.cpp | |||
@@ -1,60 +1,60 @@ | |||
1 | #include <resources.h> | 1 | #include <resources.h> |
2 | #include "usb_NN.h" | 2 | #include "usb_NN.h" |
3 | #include "usb_NNI.h" | 3 | #include "usb_NNI.h" |
4 | 4 | ||
5 | #include "netnodeinterface.h" | 5 | #include "netnodeinterface.h" |
6 | 6 | ||
7 | static const char * USBNeeds[] = | 7 | static const char * USBNeeds[] = |
8 | { 0 | 8 | { 0 |
9 | }; | 9 | }; |
10 | 10 | ||
11 | static const char * USBProvides[] = | 11 | static const char * USBProvides[] = |
12 | { "device", | 12 | { "device", |
13 | 0 | 13 | 0 |
14 | }; | 14 | }; |
15 | 15 | ||
16 | /** | 16 | /** |
17 | * Constructor, find all of the possible interfaces | 17 | * Constructor, find all of the possible interfaces |
18 | */ | 18 | */ |
19 | USBNetNode::USBNetNode() : ANetNode(tr("USB Cable Connect")) { | 19 | USBNetNode::USBNetNode() : ANetNode(tr("USB Cable Connect")) { |
20 | NSResources->addSystemFile( | 20 | NSResources->addSystemFile( |
21 | "interfaces", "/etc/network/interfaces", 1 ); | 21 | "interfaces", "/etc/network/interfaces", 1 ); |
22 | } | 22 | } |
23 | 23 | ||
24 | /** | 24 | /** |
25 | * Delete any interfaces that we own. | 25 | * Delete any interfaces that we own. |
26 | */ | 26 | */ |
27 | USBNetNode::~USBNetNode(){ | 27 | USBNetNode::~USBNetNode(){ |
28 | } | 28 | } |
29 | 29 | ||
30 | const QString USBNetNode::nodeDescription(){ | 30 | const QString USBNetNode::nodeDescription(){ |
31 | return tr("\ | 31 | return tr("\ |
32 | <p>Configure Ethernet over USB.</p>\ | 32 | <p>Configure Ethernet over USB.</p>\ |
33 | <p>Use this for a computer to computer USB cable connection</p>\ | 33 | <p>Use this for a computer to computer USB cable NetworkSetup</p>\ |
34 | " | 34 | " |
35 | ); | 35 | ); |
36 | } | 36 | } |
37 | 37 | ||
38 | ANetNodeInstance * USBNetNode::createInstance( void ) { | 38 | ANetNodeInstance * USBNetNode::createInstance( void ) { |
39 | return new AUSB( this ); | 39 | return new AUSB( this ); |
40 | } | 40 | } |
41 | 41 | ||
42 | const char ** USBNetNode::needs( void ) { | 42 | const char ** USBNetNode::needs( void ) { |
43 | return USBNeeds; | 43 | return USBNeeds; |
44 | } | 44 | } |
45 | 45 | ||
46 | const char ** USBNetNode::provides( void ) { | 46 | const char ** USBNetNode::provides( void ) { |
47 | return USBProvides; | 47 | return USBProvides; |
48 | } | 48 | } |
49 | 49 | ||
50 | QString USBNetNode::genNic( long ) { | 50 | QString USBNetNode::genNic( long ) { |
51 | return QString( "usbf" ); | 51 | return QString( "usbf" ); |
52 | } | 52 | } |
53 | 53 | ||
54 | void USBNetNode::setSpecificAttribute( QString & , QString & ) { | 54 | void USBNetNode::setSpecificAttribute( QString & , QString & ) { |
55 | } | 55 | } |
56 | 56 | ||
57 | void USBNetNode::saveSpecificAttribute( QTextStream & ) { | 57 | void USBNetNode::saveSpecificAttribute( QTextStream & ) { |
58 | } | 58 | } |
59 | 59 | ||
60 | OPIE_NS2_PLUGIN( NetNodeInterface_T<USBNetNode> ) | 60 | OPIE_NS2_PLUGIN( NetNodeInterface_T<USBNetNode> ) |
diff --git a/noncore/settings/networksettings2/usb/usbrun.cpp b/noncore/settings/networksettings2/usb/usbrun.cpp index 763644e..4082f7f 100644 --- a/noncore/settings/networksettings2/usb/usbrun.cpp +++ b/noncore/settings/networksettings2/usb/usbrun.cpp | |||
@@ -1,120 +1,120 @@ | |||
1 | #include <qfile.h> | 1 | #include <qfile.h> |
2 | #include <qfileinfo.h> | 2 | #include <qfileinfo.h> |
3 | #include <qtextstream.h> | 3 | #include <qtextstream.h> |
4 | #include <resources.h> | 4 | #include <resources.h> |
5 | #include "usbrun.h" | 5 | #include "usbrun.h" |
6 | 6 | ||
7 | State_t USBRun::detectState( void ) { | 7 | State_t USBRun::detectState( void ) { |
8 | 8 | ||
9 | // unavailable : no card found | 9 | // unavailable : no card found |
10 | // available : card found and assigned to us or free | 10 | // available : card found and assigned to us or free |
11 | // up : card found and assigned to us and up | 11 | // up : card found and assigned to us and up |
12 | 12 | ||
13 | NodeCollection * NC = nodeCollection(); | 13 | NetworkSetup * NC = networkSetup(); |
14 | QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); | 14 | QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); |
15 | System & Sys = NSResources->system(); | 15 | System & Sys = NSResources->system(); |
16 | InterfaceInfo * Run; | 16 | InterfaceInfo * Run; |
17 | QFile F( S ); | 17 | QFile F( S ); |
18 | Log(("Detecting for %s\n", NC->name().latin1() )); | 18 | Log(("Detecting for %s\n", NC->name().latin1() )); |
19 | 19 | ||
20 | if( F.open( IO_ReadOnly ) ) { | 20 | if( F.open( IO_ReadOnly ) ) { |
21 | // could open file -> read interface and assign | 21 | // could open file -> read interface and assign |
22 | QString X; | 22 | QString X; |
23 | QTextStream TS(&F); | 23 | QTextStream TS(&F); |
24 | X = TS.readLine(); | 24 | X = TS.readLine(); |
25 | Log(("%s exists\n", S.latin1() )); | 25 | Log(("%s exists\n", S.latin1() )); |
26 | // find interface | 26 | // find interface |
27 | if( handlesInterface( X ) ) { | 27 | if( handlesInterface( X ) ) { |
28 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | 28 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); |
29 | It.current(); | 29 | It.current(); |
30 | ++It ) { | 30 | ++It ) { |
31 | Run = It.current(); | 31 | Run = It.current(); |
32 | if( X == Run->Name ) { | 32 | if( X == Run->Name ) { |
33 | NC->assignInterface( Run ); | 33 | NC->assignInterface( Run ); |
34 | return (Run->IsUp) ? IsUp : Available; | 34 | return (Run->IsUp) ? IsUp : Available; |
35 | } | 35 | } |
36 | } | 36 | } |
37 | } | 37 | } |
38 | } | 38 | } |
39 | 39 | ||
40 | Log(("Assigned %p\n", NC->assignedInterface() )); | 40 | Log(("Assigned %p\n", NC->assignedInterface() )); |
41 | 41 | ||
42 | if( ( Run = NC->assignedInterface() ) ) { | 42 | if( ( Run = NC->assignedInterface() ) ) { |
43 | // we already have an interface assigned -> still present ? | 43 | // we already have an interface assigned -> still present ? |
44 | if( ! Run->IsUp ) { | 44 | if( ! Run->IsUp ) { |
45 | // usb is still free -> keep assignment | 45 | // usb is still free -> keep assignment |
46 | return Available; | 46 | return Available; |
47 | } // else interface is up but NOT us -> some other profile | 47 | } // else interface is up but NOT us -> some other profile |
48 | } | 48 | } |
49 | 49 | ||
50 | // nothing (valid) assigned to us | 50 | // nothing (valid) assigned to us |
51 | NC->assignInterface( 0 ); | 51 | NC->assignInterface( 0 ); |
52 | 52 | ||
53 | // find possible interface | 53 | // find possible interface |
54 | if( getInterface() ) { | 54 | if( getInterface() ) { |
55 | // proper type, and Not UP -> free | 55 | // proper type, and Not UP -> free |
56 | // usb cables are currently always available when requested | 56 | // usb cables are currently always available when requested |
57 | // until we can detect if we are plugged in | 57 | // until we can detect if we are plugged in |
58 | return Available; | 58 | return Available; |
59 | } | 59 | } |
60 | 60 | ||
61 | return Unavailable; | 61 | return Unavailable; |
62 | } | 62 | } |
63 | 63 | ||
64 | QString USBRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 64 | QString USBRun::setMyState( NetworkSetup * NC, Action_t, bool ) { |
65 | 65 | ||
66 | InterfaceInfo * I = getInterface(); | 66 | InterfaceInfo * I = getInterface(); |
67 | 67 | ||
68 | if( ! I ) { | 68 | if( ! I ) { |
69 | return QString("No usb device available"); | 69 | return QString("No usb device available"); |
70 | } | 70 | } |
71 | 71 | ||
72 | Log(( "Grabbed USB interface %s\n", I->Name.latin1() )); | 72 | Log(( "Grabbed USB interface %s\n", I->Name.latin1() )); |
73 | // grab this interface | 73 | // grab this interface |
74 | NC->assignInterface( I ); | 74 | NC->assignInterface( I ); |
75 | 75 | ||
76 | return QString(); | 76 | return QString(); |
77 | } | 77 | } |
78 | 78 | ||
79 | // get interface that is free or assigned to us | 79 | // get interface that is free or assigned to us |
80 | InterfaceInfo * USBRun::getInterface( void ) { | 80 | InterfaceInfo * USBRun::getInterface( void ) { |
81 | 81 | ||
82 | System & S = NSResources->system(); | 82 | System & S = NSResources->system(); |
83 | InterfaceInfo * best = 0, * Run; | 83 | InterfaceInfo * best = 0, * Run; |
84 | 84 | ||
85 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); | 85 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); |
86 | It.current(); | 86 | It.current(); |
87 | ++It ) { | 87 | ++It ) { |
88 | Run = It.current(); | 88 | Run = It.current(); |
89 | 89 | ||
90 | Log(("%s %d %d=%d %d\n", | 90 | Log(("%s %d %d=%d %d\n", |
91 | Run->Name.latin1(), | 91 | Run->Name.latin1(), |
92 | handlesInterface( Run->Name ), | 92 | handlesInterface( Run->Name ), |
93 | Run->CardType, ARPHRD_ETHER, | 93 | Run->CardType, ARPHRD_ETHER, |
94 | ! Run->IsUp )); | 94 | ! Run->IsUp )); |
95 | 95 | ||
96 | if( handlesInterface( Run->Name ) && | 96 | if( handlesInterface( Run->Name ) && |
97 | Run->CardType == ARPHRD_ETHER | 97 | Run->CardType == ARPHRD_ETHER |
98 | ) { | 98 | ) { |
99 | // this is a USB card | 99 | // this is a USB card |
100 | if( Run->assignedConnection() == netNode()->connection() ) { | 100 | if( Run->assignedToNetworkSetup() == netNode()->networkSetup() ) { |
101 | // assigned to us | 101 | // assigned to us |
102 | return Run; | 102 | return Run; |
103 | } else if( ! Run->IsUp && | 103 | } else if( ! Run->IsUp && |
104 | Run->assignedConnection() == 0 ) { | 104 | Run->assignedToNetworkSetup() == 0 ) { |
105 | // free | 105 | // free |
106 | best = Run; | 106 | best = Run; |
107 | } // UP or not assigned to us | 107 | } // UP or not assigned to us |
108 | } | 108 | } |
109 | } | 109 | } |
110 | return best; // can be 0 | 110 | return best; // can be 0 |
111 | } | 111 | } |
112 | 112 | ||
113 | bool USBRun::handlesInterface( const QString & S ) { | 113 | bool USBRun::handlesInterface( const QString & S ) { |
114 | return Pat.match( S ) >= 0; | 114 | return Pat.match( S ) >= 0; |
115 | } | 115 | } |
116 | 116 | ||
117 | bool USBRun::handlesInterface( InterfaceInfo * I ) { | 117 | bool USBRun::handlesInterface( InterfaceInfo * I ) { |
118 | return handlesInterface( I->Name ); | 118 | return handlesInterface( I->Name ); |
119 | } | 119 | } |
120 | 120 | ||
diff --git a/noncore/settings/networksettings2/usb/usbrun.h b/noncore/settings/networksettings2/usb/usbrun.h index 6ce4fa2..0872f3d 100644 --- a/noncore/settings/networksettings2/usb/usbrun.h +++ b/noncore/settings/networksettings2/usb/usbrun.h | |||
@@ -1,36 +1,36 @@ | |||
1 | #ifndef USBRUN_H | 1 | #ifndef USBRUN_H |
2 | #define USBRUN_H | 2 | #define USBRUN_H |
3 | 3 | ||
4 | #include <netnode.h> | 4 | #include <netnode.h> |
5 | #include <qregexp.h> | 5 | #include <qregexp.h> |
6 | #include "usbdata.h" | 6 | #include "usbdata.h" |
7 | 7 | ||
8 | class USBRun : public RuntimeInfo { | 8 | class USBRun : public RuntimeInfo { |
9 | 9 | ||
10 | public : | 10 | public : |
11 | 11 | ||
12 | USBRun( ANetNodeInstance * NNI, | 12 | USBRun( ANetNodeInstance * NNI, |
13 | USBData & Data ) : | 13 | USBData & Data ) : |
14 | RuntimeInfo( NNI ), | 14 | RuntimeInfo( NNI ), |
15 | Pat( "usb[0-9abcdef]" ) { | 15 | Pat( "usb[0-9abcdef]" ) { |
16 | } | 16 | } |
17 | 17 | ||
18 | virtual RuntimeInfo * device( void ) | 18 | virtual RuntimeInfo * device( void ) |
19 | { return this; } | 19 | { return this; } |
20 | 20 | ||
21 | bool handlesInterface( const QString & I ); | 21 | bool handlesInterface( const QString & I ); |
22 | bool handlesInterface( InterfaceInfo * ); | 22 | bool handlesInterface( InterfaceInfo * ); |
23 | 23 | ||
24 | State_t detectState( void ); | 24 | State_t detectState( void ); |
25 | 25 | ||
26 | protected : | 26 | protected : |
27 | 27 | ||
28 | QString setMyState( NodeCollection * , Action_t, bool ); | 28 | QString setMyState( NetworkSetup * , Action_t, bool ); |
29 | 29 | ||
30 | private : | 30 | private : |
31 | 31 | ||
32 | InterfaceInfo * getInterface( void ); | 32 | InterfaceInfo * getInterface( void ); |
33 | QRegExp Pat; | 33 | QRegExp Pat; |
34 | 34 | ||
35 | }; | 35 | }; |
36 | #endif | 36 | #endif |
diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.cpp b/noncore/settings/networksettings2/vpn/vpn_NN.cpp index 96e9df2..7c2e77b 100644 --- a/noncore/settings/networksettings2/vpn/vpn_NN.cpp +++ b/noncore/settings/networksettings2/vpn/vpn_NN.cpp | |||
@@ -1,52 +1,52 @@ | |||
1 | #include "vpn_NN.h" | 1 | #include "vpn_NN.h" |
2 | #include "vpn_NNI.h" | 2 | #include "vpn_NNI.h" |
3 | 3 | ||
4 | #include "netnodeinterface.h" | 4 | #include "netnodeinterface.h" |
5 | 5 | ||
6 | static const char * VPNNeeds[] = | 6 | static const char * VPNNeeds[] = |
7 | { 0 | 7 | { 0 |
8 | }; | 8 | }; |
9 | 9 | ||
10 | static const char * VPNProvides[] = | 10 | static const char * VPNProvides[] = |
11 | { "connection", | 11 | { "NetworkSetup", |
12 | 0 | 12 | 0 |
13 | }; | 13 | }; |
14 | /** | 14 | /** |
15 | * Constructor, find all of the possible interfaces | 15 | * Constructor, find all of the possible interfaces |
16 | */ | 16 | */ |
17 | VPNNetNode::VPNNetNode() : ANetNode(tr("VPN Connection")) { | 17 | VPNNetNode::VPNNetNode() : ANetNode(tr("VPN NetworkSetup")) { |
18 | } | 18 | } |
19 | 19 | ||
20 | /** | 20 | /** |
21 | * Delete any interfaces that we own. | 21 | * Delete any interfaces that we own. |
22 | */ | 22 | */ |
23 | VPNNetNode::~VPNNetNode(){ | 23 | VPNNetNode::~VPNNetNode(){ |
24 | } | 24 | } |
25 | 25 | ||
26 | const QString VPNNetNode::nodeDescription(){ | 26 | const QString VPNNetNode::nodeDescription(){ |
27 | return tr("\ | 27 | return tr("\ |
28 | <p>Configure private IP connection.</p>\ | 28 | <p>Configure private IP NetworkSetup.</p>\ |
29 | <p>Defines Secure tunnels over non secure IP sessions</p>\ | 29 | <p>Defines Secure tunnels over non secure IP sessions</p>\ |
30 | " | 30 | " |
31 | ); | 31 | ); |
32 | } | 32 | } |
33 | 33 | ||
34 | ANetNodeInstance * VPNNetNode::createInstance( void ) { | 34 | ANetNodeInstance * VPNNetNode::createInstance( void ) { |
35 | return new AVPN( this ); | 35 | return new AVPN( this ); |
36 | } | 36 | } |
37 | 37 | ||
38 | const char ** VPNNetNode::needs( void ) { | 38 | const char ** VPNNetNode::needs( void ) { |
39 | return VPNNeeds; | 39 | return VPNNeeds; |
40 | } | 40 | } |
41 | 41 | ||
42 | const char ** VPNNetNode::provides( void ) { | 42 | const char ** VPNNetNode::provides( void ) { |
43 | return VPNProvides; | 43 | return VPNProvides; |
44 | } | 44 | } |
45 | 45 | ||
46 | void VPNNetNode::setSpecificAttribute( QString & , QString & ) { | 46 | void VPNNetNode::setSpecificAttribute( QString & , QString & ) { |
47 | } | 47 | } |
48 | 48 | ||
49 | void VPNNetNode::saveSpecificAttribute( QTextStream & ) { | 49 | void VPNNetNode::saveSpecificAttribute( QTextStream & ) { |
50 | } | 50 | } |
51 | 51 | ||
52 | OPIE_NS2_PLUGIN( NetNodeInterface_T<VPNNetNode> ) | 52 | OPIE_NS2_PLUGIN( NetNodeInterface_T<VPNNetNode> ) |
diff --git a/noncore/settings/networksettings2/vpn/vpnrun.h b/noncore/settings/networksettings2/vpn/vpnrun.h index 9a55625..e40aa87 100644 --- a/noncore/settings/networksettings2/vpn/vpnrun.h +++ b/noncore/settings/networksettings2/vpn/vpnrun.h | |||
@@ -1,27 +1,27 @@ | |||
1 | #ifndef VPNRUN_H | 1 | #ifndef VPNRUN_H |
2 | #define VPNRUN_H | 2 | #define VPNRUN_H |
3 | 3 | ||
4 | #include <netnode.h> | 4 | #include <netnode.h> |
5 | #include "vpndata.h" | 5 | #include "vpndata.h" |
6 | 6 | ||
7 | class VPNRun : public RuntimeInfo { | 7 | class VPNRun : public RuntimeInfo { |
8 | 8 | ||
9 | public : | 9 | public : |
10 | 10 | ||
11 | VPNRun( ANetNodeInstance * NNI, VPNData & Data ) : | 11 | VPNRun( ANetNodeInstance * NNI, VPNData & Data ) : |
12 | RuntimeInfo( NNI ) | 12 | RuntimeInfo( NNI ) |
13 | { } | 13 | { } |
14 | 14 | ||
15 | virtual RuntimeInfo * connection( void ) | 15 | virtual RuntimeInfo * connection( void ) |
16 | { return this; } | 16 | { return this; } |
17 | 17 | ||
18 | State_t detectState( void ) | 18 | State_t detectState( void ) |
19 | { return Unknown; } | 19 | { return Unknown; } |
20 | 20 | ||
21 | protected : | 21 | protected : |
22 | 22 | ||
23 | QString setMyState( NodeCollection * , Action_t, bool ) | 23 | QString setMyState( NetworkSetup * , Action_t, bool ) |
24 | { return QString(); } | 24 | { return QString(); } |
25 | }; | 25 | }; |
26 | 26 | ||
27 | #endif | 27 | #endif |
diff --git a/noncore/settings/networksettings2/wlan/wlanedit.cpp b/noncore/settings/networksettings2/wlan/wlanedit.cpp index 74174bf..73c0c7c 100644 --- a/noncore/settings/networksettings2/wlan/wlanedit.cpp +++ b/noncore/settings/networksettings2/wlan/wlanedit.cpp | |||
@@ -1,115 +1,115 @@ | |||
1 | #include <qlineedit.h> | 1 | #include <qlineedit.h> |
2 | #include <qprogressbar.h> | 2 | #include <qprogressbar.h> |
3 | #include <qcombobox.h> | 3 | #include <qcombobox.h> |
4 | #include <qlabel.h> | 4 | #include <qlabel.h> |
5 | #include <qregexp.h> | 5 | #include <qregexp.h> |
6 | #include <qcheckbox.h> | 6 | #include <qcheckbox.h> |
7 | #include <GUIUtils.h> | 7 | #include <GUIUtils.h> |
8 | #include <resources.h> | 8 | #include <resources.h> |
9 | #include <wextensions.h> | 9 | #include <wextensions.h> |
10 | 10 | ||
11 | #include "wlanedit.h" | 11 | #include "wlanedit.h" |
12 | #include "wlan_NN.h" | 12 | #include "wlan_NN.h" |
13 | #include "wlan_NNI.h" | 13 | #include "wlan_NNI.h" |
14 | 14 | ||
15 | WLanEdit::WLanEdit( QWidget * Parent, ANetNodeInstance * TNNI ) : | 15 | WLanEdit::WLanEdit( QWidget * Parent, ANetNodeInstance * TNNI ) : |
16 | WLanGUI( Parent ), RefreshTimer(this){ | 16 | WLanGUI( Parent ), RefreshTimer(this){ |
17 | 17 | ||
18 | InterfaceInfo * II; | 18 | InterfaceInfo * II; |
19 | 19 | ||
20 | NNI = TNNI; | 20 | NNI = TNNI; |
21 | Dev = NNI->runtime()->device(); | 21 | Dev = NNI->runtime()->device(); |
22 | WE = 0; | 22 | WE = 0; |
23 | if( ( II = NNI->connection()->assignedInterface() ) ) { | 23 | if( ( II = NNI->networkSetup()->assignedInterface() ) ) { |
24 | // show data | 24 | // show data |
25 | WE = new WExtensions( II->Name ); | 25 | WE = new WExtensions( II->Name ); |
26 | 26 | ||
27 | if( WE->doesHaveWirelessExtensions() ) { | 27 | if( WE->doesHaveWirelessExtensions() ) { |
28 | QString S; | 28 | QString S; |
29 | Station_LBL->setText( WE->station() ); | 29 | Station_LBL->setText( WE->station() ); |
30 | ESSID_LBL->setText( WE->essid() ); | 30 | ESSID_LBL->setText( WE->essid() ); |
31 | Mode_LBL->setText( WE->mode() ); | 31 | Mode_LBL->setText( WE->mode() ); |
32 | S.setNum( WE->frequency() ); | 32 | S.setNum( WE->frequency() ); |
33 | Frequency_LBL->setText( S ); | 33 | Frequency_LBL->setText( S ); |
34 | S.setNum( WE->channel() ); | 34 | S.setNum( WE->channel() ); |
35 | Channel_LBL->setText( S ); | 35 | Channel_LBL->setText( S ); |
36 | S.setNum( WE->rate() ); | 36 | S.setNum( WE->rate() ); |
37 | Rate_LBL->setText( S ); | 37 | Rate_LBL->setText( S ); |
38 | AP_LBL->setText( WE->ap() ); | 38 | AP_LBL->setText( WE->ap() ); |
39 | 39 | ||
40 | SLOT_Refresh(); | 40 | SLOT_Refresh(); |
41 | 41 | ||
42 | connect( &RefreshTimer, SIGNAL( timeout() ), | 42 | connect( &RefreshTimer, SIGNAL( timeout() ), |
43 | this, SLOT( SLOT_Refresh() ) ); | 43 | this, SLOT( SLOT_Refresh() ) ); |
44 | } | 44 | } |
45 | } | 45 | } |
46 | } | 46 | } |
47 | 47 | ||
48 | WLanEdit::~WLanEdit( void ) { | 48 | WLanEdit::~WLanEdit( void ) { |
49 | if( WE ) | 49 | if( WE ) |
50 | delete WE; | 50 | delete WE; |
51 | } | 51 | } |
52 | 52 | ||
53 | QString WLanEdit::acceptable( void ) { | 53 | QString WLanEdit::acceptable( void ) { |
54 | if( ESSID_LE->text().isEmpty() ) { | 54 | if( ESSID_LE->text().isEmpty() ) { |
55 | return QString("ESSID is mandatory"); | 55 | return QString("ESSID is mandatory"); |
56 | } | 56 | } |
57 | if( SpecifyAP_CB->isChecked() && | 57 | if( SpecifyAP_CB->isChecked() && |
58 | APMac_LE->text().isEmpty() ) { | 58 | APMac_LE->text().isEmpty() ) { |
59 | return QString("APMac must have value"); | 59 | return QString("APMac must have value"); |
60 | } | 60 | } |
61 | return QString(); | 61 | return QString(); |
62 | } | 62 | } |
63 | 63 | ||
64 | void WLanEdit::showData( WLanData & Data ) { | 64 | void WLanEdit::showData( WLanData & Data ) { |
65 | Mode_CB->setCurrentItem( Data.Mode ); | 65 | Mode_CB->setCurrentItem( Data.Mode ); |
66 | ESSID_LE->setText( Data.ESSID ); | 66 | ESSID_LE->setText( Data.ESSID ); |
67 | NodeName_LE->setText( Data.NodeName ); | 67 | NodeName_LE->setText( Data.NodeName ); |
68 | SpecifyAP_CB->setChecked( Data.SpecificAP ); | 68 | SpecifyAP_CB->setChecked( Data.SpecificAP ); |
69 | APMac_LE->setText( Data.APMac ); | 69 | APMac_LE->setText( Data.APMac ); |
70 | 70 | ||
71 | EnableWEP_CB->setChecked( Data.Encrypted ); | 71 | EnableWEP_CB->setChecked( Data.Encrypted ); |
72 | AcceptNonEncrypted_CB->setChecked( Data.AcceptNonEncrypted ); | 72 | AcceptNonEncrypted_CB->setChecked( Data.AcceptNonEncrypted ); |
73 | Key1_LE->setText( Data.Key[0] ); | 73 | Key1_LE->setText( Data.Key[0] ); |
74 | Key2_LE->setText( Data.Key[1] ); | 74 | Key2_LE->setText( Data.Key[1] ); |
75 | Key3_LE->setText( Data.Key[2] ); | 75 | Key3_LE->setText( Data.Key[2] ); |
76 | Key4_LE->setText( Data.Key[3] ); | 76 | Key4_LE->setText( Data.Key[3] ); |
77 | } | 77 | } |
78 | 78 | ||
79 | bool WLanEdit::commit( WLanData & Data ) { | 79 | bool WLanEdit::commit( WLanData & Data ) { |
80 | bool SM = 0; | 80 | bool SM = 0; |
81 | 81 | ||
82 | TXTM( Data.ESSID, ESSID_LE, SM ); | 82 | TXTM( Data.ESSID, ESSID_LE, SM ); |
83 | TXTM( Data.NodeName, NodeName_LE, SM ); | 83 | TXTM( Data.NodeName, NodeName_LE, SM ); |
84 | TXTM( Data.APMac, APMac_LE, SM ); | 84 | TXTM( Data.APMac, APMac_LE, SM ); |
85 | TXTM( Data.Key[0], Key1_LE, SM ); | 85 | TXTM( Data.Key[0], Key1_LE, SM ); |
86 | TXTM( Data.Key[1], Key2_LE, SM ); | 86 | TXTM( Data.Key[1], Key2_LE, SM ); |
87 | TXTM( Data.Key[2], Key3_LE, SM ); | 87 | TXTM( Data.Key[2], Key3_LE, SM ); |
88 | TXTM( Data.Key[3], Key4_LE, SM ); | 88 | TXTM( Data.Key[3], Key4_LE, SM ); |
89 | CBM( Data.SpecificAP, SpecifyAP_CB, SM ); | 89 | CBM( Data.SpecificAP, SpecifyAP_CB, SM ); |
90 | CBM( Data.Encrypted, EnableWEP_CB, SM ); | 90 | CBM( Data.Encrypted, EnableWEP_CB, SM ); |
91 | CBM( Data.AcceptNonEncrypted, AcceptNonEncrypted_CB, SM ); | 91 | CBM( Data.AcceptNonEncrypted, AcceptNonEncrypted_CB, SM ); |
92 | CIM( Data.Mode, Mode_CB, SM ); | 92 | CIM( Data.Mode, Mode_CB, SM ); |
93 | return 0; | 93 | return 0; |
94 | } | 94 | } |
95 | 95 | ||
96 | void WLanEdit::SLOT_Refresh( void ) { | 96 | void WLanEdit::SLOT_Refresh( void ) { |
97 | if( WE ) { | 97 | if( WE ) { |
98 | int signal, noise, quality; | 98 | int signal, noise, quality; |
99 | WE->stats( signal, noise, quality); | 99 | WE->stats( signal, noise, quality); |
100 | 100 | ||
101 | Signal_PB->setProgress( signal ); | 101 | Signal_PB->setProgress( signal ); |
102 | Noise_PB->setProgress( noise ); | 102 | Noise_PB->setProgress( noise ); |
103 | Quality_PB->setProgress( quality ); | 103 | Quality_PB->setProgress( quality ); |
104 | } | 104 | } |
105 | } | 105 | } |
106 | 106 | ||
107 | void WLanEdit::SLOT_AutoRefresh( bool ar ) { | 107 | void WLanEdit::SLOT_AutoRefresh( bool ar ) { |
108 | if( ar ) { | 108 | if( ar ) { |
109 | RefreshTimer.start( 1000 ); | 109 | RefreshTimer.start( 1000 ); |
110 | SLOT_Refresh(); | 110 | SLOT_Refresh(); |
111 | } else { | 111 | } else { |
112 | RefreshTimer.stop(); | 112 | RefreshTimer.stop(); |
113 | } | 113 | } |
114 | } | 114 | } |
115 | 115 | ||
diff --git a/noncore/settings/networksettings2/wlan/wlanrun.cpp b/noncore/settings/networksettings2/wlan/wlanrun.cpp index b15a560..a0c5884 100644 --- a/noncore/settings/networksettings2/wlan/wlanrun.cpp +++ b/noncore/settings/networksettings2/wlan/wlanrun.cpp | |||
@@ -1,120 +1,120 @@ | |||
1 | 1 | ||
2 | #include <qfile.h> | 2 | #include <qfile.h> |
3 | #include <qtextstream.h> | 3 | #include <qtextstream.h> |
4 | #include <qstringlist.h> | 4 | #include <qstringlist.h> |
5 | #include <resources.h> | 5 | #include <resources.h> |
6 | #include "wlanrun.h" | 6 | #include "wlanrun.h" |
7 | 7 | ||
8 | State_t WLanRun::detectState( void ) { | 8 | State_t WLanRun::detectState( void ) { |
9 | 9 | ||
10 | // unavailable : no card found | 10 | // unavailable : no card found |
11 | // available : card found and assigned to us or free | 11 | // available : card found and assigned to us or free |
12 | // up : card found and assigned to us and up | 12 | // up : card found and assigned to us and up |
13 | 13 | ||
14 | NodeCollection * NC = nodeCollection(); | 14 | NetworkSetup * NC = networkSetup(); |
15 | QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); | 15 | QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); |
16 | System & Sys = NSResources->system(); | 16 | System & Sys = NSResources->system(); |
17 | InterfaceInfo * Run; | 17 | InterfaceInfo * Run; |
18 | 18 | ||
19 | QFile F( S ); | 19 | QFile F( S ); |
20 | 20 | ||
21 | if( F.open( IO_ReadOnly ) ) { | 21 | if( F.open( IO_ReadOnly ) ) { |
22 | // could open file -> read interface and assign | 22 | // could open file -> read interface and assign |
23 | QString X; | 23 | QString X; |
24 | QTextStream TS(&F); | 24 | QTextStream TS(&F); |
25 | X = TS.readLine(); | 25 | X = TS.readLine(); |
26 | // find interface | 26 | // find interface |
27 | if( handlesInterface( X ) ) { | 27 | if( handlesInterface( X ) ) { |
28 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | 28 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); |
29 | It.current(); | 29 | It.current(); |
30 | ++It ) { | 30 | ++It ) { |
31 | Run = It.current(); | 31 | Run = It.current(); |
32 | if( X == Run->Name ) { | 32 | if( X == Run->Name ) { |
33 | NC->assignInterface( Run ); | 33 | NC->assignInterface( Run ); |
34 | return (Run->IsUp) ? IsUp : Available; | 34 | return (Run->IsUp) ? IsUp : Available; |
35 | } | 35 | } |
36 | } | 36 | } |
37 | } | 37 | } |
38 | } | 38 | } |
39 | 39 | ||
40 | if( ( Run = NC->assignedInterface() ) ) { | 40 | if( ( Run = NC->assignedInterface() ) ) { |
41 | // we already have an interface assigned -> still present ? | 41 | // we already have an interface assigned -> still present ? |
42 | if( ! Run->IsUp ) { | 42 | if( ! Run->IsUp ) { |
43 | // usb is still free -> keep assignment | 43 | // usb is still free -> keep assignment |
44 | return Available; | 44 | return Available; |
45 | } // else interface is up but NOT us -> some other profile | 45 | } // else interface is up but NOT us -> some other profile |
46 | } | 46 | } |
47 | 47 | ||
48 | // nothing (valid) assigned to us | 48 | // nothing (valid) assigned to us |
49 | NC->assignInterface( 0 ); | 49 | NC->assignInterface( 0 ); |
50 | 50 | ||
51 | // find possible interface | 51 | // find possible interface |
52 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | 52 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); |
53 | It.current(); | 53 | It.current(); |
54 | ++It ) { | 54 | ++It ) { |
55 | Run = It.current(); | 55 | Run = It.current(); |
56 | if( handlesInterface( *Run ) && | 56 | if( handlesInterface( *Run ) && |
57 | ( Run->CardType == ARPHRD_ETHER | 57 | ( Run->CardType == ARPHRD_ETHER |
58 | #ifdef ARPHRD_IEEE1394 | 58 | #ifdef ARPHRD_IEEE1394 |
59 | || Run->CardType == ARPHRD_IEEE1394 | 59 | || Run->CardType == ARPHRD_IEEE1394 |
60 | #endif | 60 | #endif |
61 | ) && | 61 | ) && |
62 | ! Run->IsUp | 62 | ! Run->IsUp |
63 | ) { | 63 | ) { |
64 | // proper type, and Not UP -> free | 64 | // proper type, and Not UP -> free |
65 | return Off; | 65 | return Off; |
66 | } | 66 | } |
67 | } | 67 | } |
68 | 68 | ||
69 | return Unavailable; | 69 | return Unavailable; |
70 | 70 | ||
71 | } | 71 | } |
72 | 72 | ||
73 | QString WLanRun::setMyState( NodeCollection * , Action_t , bool ) { | 73 | QString WLanRun::setMyState( NetworkSetup * , Action_t , bool ) { |
74 | 74 | ||
75 | // we only handle activate and deactivate | 75 | // we only handle activate and deactivate |
76 | return QString(); | 76 | return QString(); |
77 | } | 77 | } |
78 | 78 | ||
79 | // get interface that is free or assigned to us | 79 | // get interface that is free or assigned to us |
80 | InterfaceInfo * WLanRun::getInterface( void ) { | 80 | InterfaceInfo * WLanRun::getInterface( void ) { |
81 | 81 | ||
82 | System & S = NSResources->system(); | 82 | System & S = NSResources->system(); |
83 | InterfaceInfo * best = 0, * Run; | 83 | InterfaceInfo * best = 0, * Run; |
84 | 84 | ||
85 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); | 85 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); |
86 | It.current(); | 86 | It.current(); |
87 | ++It ) { | 87 | ++It ) { |
88 | Run = It.current(); | 88 | Run = It.current(); |
89 | if( handlesInterface( *Run ) && | 89 | if( handlesInterface( *Run ) && |
90 | ( Run->CardType == ARPHRD_ETHER | 90 | ( Run->CardType == ARPHRD_ETHER |
91 | #ifdef ARPHRD_IEEE1394 | 91 | #ifdef ARPHRD_IEEE1394 |
92 | || Run->CardType == ARPHRD_IEEE1394 | 92 | || Run->CardType == ARPHRD_IEEE1394 |
93 | #endif | 93 | #endif |
94 | ) | 94 | ) |
95 | ) { | 95 | ) { |
96 | // this is a LAN card | 96 | // this is a LAN card |
97 | if( Run->assignedConnection() == netNode()->connection() ) { | 97 | if( Run->assignedToNetworkSetup() == netNode()->networkSetup() ) { |
98 | // assigned to us | 98 | // assigned to us |
99 | return Run; | 99 | return Run; |
100 | } else if( Run->assignedConnection() == 0 ) { | 100 | } else if( Run->assignedToNetworkSetup() == 0 ) { |
101 | // free | 101 | // free |
102 | best = Run; | 102 | best = Run; |
103 | } | 103 | } |
104 | } | 104 | } |
105 | } | 105 | } |
106 | return best; // can be 0 | 106 | return best; // can be 0 |
107 | } | 107 | } |
108 | 108 | ||
109 | bool WLanRun::handlesInterface( const QString & S ) { | 109 | bool WLanRun::handlesInterface( const QString & S ) { |
110 | InterfaceInfo * II; | 110 | InterfaceInfo * II; |
111 | II = NSResources->system().interface( S ); | 111 | II = NSResources->system().interface( S ); |
112 | if( ( II = NSResources->system().interface( S ) ) ) { | 112 | if( ( II = NSResources->system().interface( S ) ) ) { |
113 | return handlesInterface( *II ); | 113 | return handlesInterface( *II ); |
114 | } | 114 | } |
115 | return Pat.match( S ) >= 0; | 115 | return Pat.match( S ) >= 0; |
116 | } | 116 | } |
117 | 117 | ||
118 | bool WLanRun::handlesInterface( const InterfaceInfo & II ) { | 118 | bool WLanRun::handlesInterface( const InterfaceInfo & II ) { |
119 | return ( Pat.match( II.Name ) < 0 ); | 119 | return ( Pat.match( II.Name ) < 0 ); |
120 | } | 120 | } |
diff --git a/noncore/settings/networksettings2/wlan/wlanrun.h b/noncore/settings/networksettings2/wlan/wlanrun.h index fd325d4..e3e7735 100644 --- a/noncore/settings/networksettings2/wlan/wlanrun.h +++ b/noncore/settings/networksettings2/wlan/wlanrun.h | |||
@@ -1,36 +1,36 @@ | |||
1 | #ifndef WLANRUN_H | 1 | #ifndef WLANRUN_H |
2 | #define WLANRUN_H | 2 | #define WLANRUN_H |
3 | 3 | ||
4 | #include <qregexp.h> | 4 | #include <qregexp.h> |
5 | #include <netnode.h> | 5 | #include <netnode.h> |
6 | #include "wlandata.h" | 6 | #include "wlandata.h" |
7 | 7 | ||
8 | class WLanRun : public RuntimeInfo { | 8 | class WLanRun : public RuntimeInfo { |
9 | 9 | ||
10 | public : | 10 | public : |
11 | 11 | ||
12 | WLanRun( ANetNodeInstance * NNI, WLanData & Data ) : | 12 | WLanRun( ANetNodeInstance * NNI, WLanData & Data ) : |
13 | RuntimeInfo( NNI ), | 13 | RuntimeInfo( NNI ), |
14 | Pat( "wlan[0-9]" ) { | 14 | Pat( "wlan[0-9]" ) { |
15 | } | 15 | } |
16 | 16 | ||
17 | virtual RuntimeInfo * device( void ) | 17 | virtual RuntimeInfo * device( void ) |
18 | { return this; } | 18 | { return this; } |
19 | 19 | ||
20 | bool handlesInterface( const QString & I ); | 20 | bool handlesInterface( const QString & I ); |
21 | bool handlesInterface( const InterfaceInfo & II ); | 21 | bool handlesInterface( const InterfaceInfo & II ); |
22 | 22 | ||
23 | State_t detectState( void ); | 23 | State_t detectState( void ); |
24 | 24 | ||
25 | protected : | 25 | protected : |
26 | 26 | ||
27 | QString setMyState( NodeCollection * , Action_t, bool ); | 27 | QString setMyState( NetworkSetup * , Action_t, bool ); |
28 | 28 | ||
29 | private : | 29 | private : |
30 | 30 | ||
31 | InterfaceInfo * getInterface( void ); | 31 | InterfaceInfo * getInterface( void ); |
32 | QRegExp Pat; | 32 | QRegExp Pat; |
33 | WLanData * Data; | 33 | WLanData * Data; |
34 | }; | 34 | }; |
35 | 35 | ||
36 | #endif | 36 | #endif |