summaryrefslogtreecommitdiff
authorbenmeyer <benmeyer>2002-10-18 14:28:42 (UTC)
committer benmeyer <benmeyer>2002-10-18 14:28:42 (UTC)
commit88b3a159060ed7057bfee4cc1ccfcf81a63a4780 (patch) (unidiff)
tree3dd78d403f337c73bb3ca9d75ef0a29f2adae9b6
parent461113126af82cd6343eedab36ecabb4253780ee (diff)
downloadopie-88b3a159060ed7057bfee4cc1ccfcf81a63a4780.zip
opie-88b3a159060ed7057bfee4cc1ccfcf81a63a4780.tar.gz
opie-88b3a159060ed7057bfee4cc1ccfcf81a63a4780.tar.bz2
More profile stuff works
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/networksetup/TODO8
-rw-r--r--noncore/net/networksetup/interfaceadvanced.ui4
-rw-r--r--noncore/net/networksetup/interfaceinformation.ui6
-rw-r--r--noncore/net/networksetup/interfaceinformationimp.cpp3
-rw-r--r--noncore/net/networksetup/interfaces.cpp17
-rw-r--r--noncore/net/networksetup/interfaces.h2
-rw-r--r--noncore/net/networksetup/interfacesetup.ui97
-rw-r--r--noncore/net/networksetup/interfacesetupimp.cpp39
-rw-r--r--noncore/net/networksetup/interfacesetupimp.h5
-rw-r--r--noncore/net/networksetup/mainwindow.ui18
-rw-r--r--noncore/net/networksetup/mainwindowimp.cpp89
-rw-r--r--noncore/net/networksetup/wlan/wlanimp.cpp1
-rw-r--r--noncore/net/networksetup/wlan/wlanmodule.cpp2
-rw-r--r--noncore/settings/networksettings/TODO8
-rw-r--r--noncore/settings/networksettings/interfaceadvanced.ui4
-rw-r--r--noncore/settings/networksettings/interfaceinformation.ui6
-rw-r--r--noncore/settings/networksettings/interfaceinformationimp.cpp3
-rw-r--r--noncore/settings/networksettings/interfaces.cpp17
-rw-r--r--noncore/settings/networksettings/interfaces.h2
-rw-r--r--noncore/settings/networksettings/interfacesetup.ui97
-rw-r--r--noncore/settings/networksettings/interfacesetupimp.cpp39
-rw-r--r--noncore/settings/networksettings/interfacesetupimp.h5
-rw-r--r--noncore/settings/networksettings/mainwindow.ui18
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp89
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp.cpp1
-rw-r--r--noncore/settings/networksettings/wlan/wlanmodule.cpp2
26 files changed, 310 insertions, 272 deletions
diff --git a/noncore/net/networksetup/TODO b/noncore/net/networksetup/TODO
index c8e2989..c587f58 100644
--- a/noncore/net/networksetup/TODO
+++ b/noncore/net/networksetup/TODO
@@ -1,10 +1,6 @@
1Write a class that parses /proc and not ifconfig 1Write a class that parses /proc and not ifconfig
2WLAN needs to be re-written to not use Config
3remove WLAN Config item
2 4
3[ ] Wlanmodule needs to check if an interface supports wireless 5[ ] Wlanmodule needs to check if an interface supports wireless
4 extensions. 6 extensions.
5[x] When you set options in wlanmodule, hit OK, it exits all of
6 networksetup, doesnt bring you back to the main screen.
7[x] Wlanmodule isnt writing out wireless.opts
8[ ] Need a means of bringing an interface up and down (calling
9 out ifup/ifdown) from the gui.
10 -Ben- Click information, then click up or down... :-D
diff --git a/noncore/net/networksetup/interfaceadvanced.ui b/noncore/net/networksetup/interfaceadvanced.ui
index efe67b0..0ec67c2 100644
--- a/noncore/net/networksetup/interfaceadvanced.ui
+++ b/noncore/net/networksetup/interfaceadvanced.ui
@@ -1,320 +1,320 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>InterfaceAdvanced</class> 2<class>InterfaceAdvanced</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>InterfaceAdvanced</cstring> 7 <cstring>InterfaceAdvanced</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>214</width> 14 <width>214</width>
15 <height>286</height> 15 <height>286</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>maximumSize</name> 19 <name>maximumSize</name>
20 <size> 20 <size>
21 <width>320</width> 21 <width>240</width>
22 <height>32767</height> 22 <height>32767</height>
23 </size> 23 </size>
24 </property> 24 </property>
25 <property stdset="1"> 25 <property stdset="1">
26 <name>caption</name> 26 <name>caption</name>
27 <string>Advanced Interface Information</string> 27 <string>Advanced Interface Information</string>
28 </property> 28 </property>
29 <grid> 29 <grid>
30 <property stdset="1"> 30 <property stdset="1">
31 <name>margin</name> 31 <name>margin</name>
32 <number>11</number> 32 <number>11</number>
33 </property> 33 </property>
34 <property stdset="1"> 34 <property stdset="1">
35 <name>spacing</name> 35 <name>spacing</name>
36 <number>6</number> 36 <number>6</number>
37 </property> 37 </property>
38 <widget row="1" column="0" > 38 <widget row="1" column="0" >
39 <class>QLabel</class> 39 <class>QLabel</class>
40 <property stdset="1"> 40 <property stdset="1">
41 <name>name</name> 41 <name>name</name>
42 <cstring>TextLabel1</cstring> 42 <cstring>TextLabel1</cstring>
43 </property> 43 </property>
44 <property stdset="1"> 44 <property stdset="1">
45 <name>text</name> 45 <name>text</name>
46 <string>MAC Address</string> 46 <string>MAC Address</string>
47 </property> 47 </property>
48 </widget> 48 </widget>
49 <widget row="0" column="1" > 49 <widget row="0" column="1" >
50 <class>QLabel</class> 50 <class>QLabel</class>
51 <property stdset="1"> 51 <property stdset="1">
52 <name>name</name> 52 <name>name</name>
53 <cstring>interfaceName</cstring> 53 <cstring>interfaceName</cstring>
54 </property> 54 </property>
55 <property stdset="1"> 55 <property stdset="1">
56 <name>frameShape</name> 56 <name>frameShape</name>
57 <enum>Panel</enum> 57 <enum>Panel</enum>
58 </property> 58 </property>
59 <property stdset="1"> 59 <property stdset="1">
60 <name>frameShadow</name> 60 <name>frameShadow</name>
61 <enum>Sunken</enum> 61 <enum>Sunken</enum>
62 </property> 62 </property>
63 <property stdset="1"> 63 <property stdset="1">
64 <name>text</name> 64 <name>text</name>
65 <string>eth0</string> 65 <string>eth0</string>
66 </property> 66 </property>
67 </widget> 67 </widget>
68 <widget row="2" column="0" > 68 <widget row="2" column="0" >
69 <class>QLabel</class> 69 <class>QLabel</class>
70 <property stdset="1"> 70 <property stdset="1">
71 <name>name</name> 71 <name>name</name>
72 <cstring>TextLabel3</cstring> 72 <cstring>TextLabel3</cstring>
73 </property> 73 </property>
74 <property stdset="1"> 74 <property stdset="1">
75 <name>text</name> 75 <name>text</name>
76 <string>IP Address</string> 76 <string>IP Address</string>
77 </property> 77 </property>
78 </widget> 78 </widget>
79 <widget row="1" column="1" > 79 <widget row="1" column="1" >
80 <class>QLabel</class> 80 <class>QLabel</class>
81 <property stdset="1"> 81 <property stdset="1">
82 <name>name</name> 82 <name>name</name>
83 <cstring>macAddressLabel</cstring> 83 <cstring>macAddressLabel</cstring>
84 </property> 84 </property>
85 <property stdset="1"> 85 <property stdset="1">
86 <name>frameShape</name> 86 <name>frameShape</name>
87 <enum>Panel</enum> 87 <enum>Panel</enum>
88 </property> 88 </property>
89 <property stdset="1"> 89 <property stdset="1">
90 <name>frameShadow</name> 90 <name>frameShadow</name>
91 <enum>Sunken</enum> 91 <enum>Sunken</enum>
92 </property> 92 </property>
93 <property stdset="1"> 93 <property stdset="1">
94 <name>text</name> 94 <name>text</name>
95 <string>00:00:00:00:00:00</string> 95 <string>00:00:00:00:00:00</string>
96 </property> 96 </property>
97 </widget> 97 </widget>
98 <widget row="0" column="0" > 98 <widget row="0" column="0" >
99 <class>QLabel</class> 99 <class>QLabel</class>
100 <property stdset="1"> 100 <property stdset="1">
101 <name>name</name> 101 <name>name</name>
102 <cstring>TextLabel7</cstring> 102 <cstring>TextLabel7</cstring>
103 </property> 103 </property>
104 <property stdset="1"> 104 <property stdset="1">
105 <name>text</name> 105 <name>text</name>
106 <string>Interface</string> 106 <string>Interface</string>
107 </property> 107 </property>
108 </widget> 108 </widget>
109 <widget row="4" column="0" > 109 <widget row="4" column="0" >
110 <class>QLabel</class> 110 <class>QLabel</class>
111 <property stdset="1"> 111 <property stdset="1">
112 <name>name</name> 112 <name>name</name>
113 <cstring>TextLabel4</cstring> 113 <cstring>TextLabel4</cstring>
114 </property> 114 </property>
115 <property stdset="1"> 115 <property stdset="1">
116 <name>enabled</name> 116 <name>enabled</name>
117 <bool>true</bool> 117 <bool>true</bool>
118 </property> 118 </property>
119 <property stdset="1"> 119 <property stdset="1">
120 <name>text</name> 120 <name>text</name>
121 <string>Subnet Mask</string> 121 <string>Subnet Mask</string>
122 </property> 122 </property>
123 </widget> 123 </widget>
124 <widget row="2" column="1" > 124 <widget row="2" column="1" >
125 <class>QLabel</class> 125 <class>QLabel</class>
126 <property stdset="1"> 126 <property stdset="1">
127 <name>name</name> 127 <name>name</name>
128 <cstring>ipAddressLabel</cstring> 128 <cstring>ipAddressLabel</cstring>
129 </property> 129 </property>
130 <property stdset="1"> 130 <property stdset="1">
131 <name>frameShape</name> 131 <name>frameShape</name>
132 <enum>Panel</enum> 132 <enum>Panel</enum>
133 </property> 133 </property>
134 <property stdset="1"> 134 <property stdset="1">
135 <name>frameShadow</name> 135 <name>frameShadow</name>
136 <enum>Sunken</enum> 136 <enum>Sunken</enum>
137 </property> 137 </property>
138 <property stdset="1"> 138 <property stdset="1">
139 <name>text</name> 139 <name>text</name>
140 <string>0.0.0.0</string> 140 <string>0.0.0.0</string>
141 </property> 141 </property>
142 </widget> 142 </widget>
143 <widget row="4" column="1" > 143 <widget row="4" column="1" >
144 <class>QLabel</class> 144 <class>QLabel</class>
145 <property stdset="1"> 145 <property stdset="1">
146 <name>name</name> 146 <name>name</name>
147 <cstring>subnetMaskLabel</cstring> 147 <cstring>subnetMaskLabel</cstring>
148 </property> 148 </property>
149 <property stdset="1"> 149 <property stdset="1">
150 <name>frameShape</name> 150 <name>frameShape</name>
151 <enum>Panel</enum> 151 <enum>Panel</enum>
152 </property> 152 </property>
153 <property stdset="1"> 153 <property stdset="1">
154 <name>frameShadow</name> 154 <name>frameShadow</name>
155 <enum>Sunken</enum> 155 <enum>Sunken</enum>
156 </property> 156 </property>
157 <property stdset="1"> 157 <property stdset="1">
158 <name>text</name> 158 <name>text</name>
159 <string>0.0.0.0</string> 159 <string>0.0.0.0</string>
160 </property> 160 </property>
161 </widget> 161 </widget>
162 <widget row="3" column="0" > 162 <widget row="3" column="0" >
163 <class>QLabel</class> 163 <class>QLabel</class>
164 <property stdset="1"> 164 <property stdset="1">
165 <name>name</name> 165 <name>name</name>
166 <cstring>TextLabel2</cstring> 166 <cstring>TextLabel2</cstring>
167 </property> 167 </property>
168 <property stdset="1"> 168 <property stdset="1">
169 <name>text</name> 169 <name>text</name>
170 <string>Broadcast</string> 170 <string>Broadcast</string>
171 </property> 171 </property>
172 </widget> 172 </widget>
173 <widget row="3" column="1" > 173 <widget row="3" column="1" >
174 <class>QLabel</class> 174 <class>QLabel</class>
175 <property stdset="1"> 175 <property stdset="1">
176 <name>name</name> 176 <name>name</name>
177 <cstring>broadcastLabel</cstring> 177 <cstring>broadcastLabel</cstring>
178 </property> 178 </property>
179 <property stdset="1"> 179 <property stdset="1">
180 <name>frameShape</name> 180 <name>frameShape</name>
181 <enum>Panel</enum> 181 <enum>Panel</enum>
182 </property> 182 </property>
183 <property stdset="1"> 183 <property stdset="1">
184 <name>frameShadow</name> 184 <name>frameShadow</name>
185 <enum>Sunken</enum> 185 <enum>Sunken</enum>
186 </property> 186 </property>
187 </widget> 187 </widget>
188 <widget row="5" column="0" rowspan="1" colspan="2" > 188 <widget row="5" column="0" rowspan="1" colspan="2" >
189 <class>QGroupBox</class> 189 <class>QGroupBox</class>
190 <property stdset="1"> 190 <property stdset="1">
191 <name>name</name> 191 <name>name</name>
192 <cstring>GroupBox2</cstring> 192 <cstring>dhcpInformation</cstring>
193 </property> 193 </property>
194 <property stdset="1"> 194 <property stdset="1">
195 <name>title</name> 195 <name>title</name>
196 <string>DHCP Information</string> 196 <string>DHCP Information</string>
197 </property> 197 </property>
198 <grid> 198 <grid>
199 <property stdset="1"> 199 <property stdset="1">
200 <name>margin</name> 200 <name>margin</name>
201 <number>11</number> 201 <number>11</number>
202 </property> 202 </property>
203 <property stdset="1"> 203 <property stdset="1">
204 <name>spacing</name> 204 <name>spacing</name>
205 <number>6</number> 205 <number>6</number>
206 </property> 206 </property>
207 <widget row="0" column="0" > 207 <widget row="0" column="0" >
208 <class>QLabel</class> 208 <class>QLabel</class>
209 <property stdset="1"> 209 <property stdset="1">
210 <name>name</name> 210 <name>name</name>
211 <cstring>TextLabel6</cstring> 211 <cstring>TextLabel6</cstring>
212 </property> 212 </property>
213 <property stdset="1"> 213 <property stdset="1">
214 <name>text</name> 214 <name>text</name>
215 <string>DHCP Server</string> 215 <string>DHCP Server</string>
216 </property> 216 </property>
217 </widget> 217 </widget>
218 <widget row="2" column="1" > 218 <widget row="2" column="1" >
219 <class>QLabel</class> 219 <class>QLabel</class>
220 <property stdset="1"> 220 <property stdset="1">
221 <name>name</name> 221 <name>name</name>
222 <cstring>leaseExpiresLabel</cstring> 222 <cstring>leaseExpiresLabel</cstring>
223 </property> 223 </property>
224 <property stdset="1"> 224 <property stdset="1">
225 <name>frameShape</name> 225 <name>frameShape</name>
226 <enum>Panel</enum> 226 <enum>Panel</enum>
227 </property> 227 </property>
228 <property stdset="1"> 228 <property stdset="1">
229 <name>frameShadow</name> 229 <name>frameShadow</name>
230 <enum>Sunken</enum> 230 <enum>Sunken</enum>
231 </property> 231 </property>
232 <property stdset="1"> 232 <property stdset="1">
233 <name>text</name> 233 <name>text</name>
234 <string></string> 234 <string></string>
235 </property> 235 </property>
236 </widget> 236 </widget>
237 <widget row="1" column="1" > 237 <widget row="1" column="1" >
238 <class>QLabel</class> 238 <class>QLabel</class>
239 <property stdset="1"> 239 <property stdset="1">
240 <name>name</name> 240 <name>name</name>
241 <cstring>leaseObtainedLabel</cstring> 241 <cstring>leaseObtainedLabel</cstring>
242 </property> 242 </property>
243 <property stdset="1"> 243 <property stdset="1">
244 <name>frameShape</name> 244 <name>frameShape</name>
245 <enum>Panel</enum> 245 <enum>Panel</enum>
246 </property> 246 </property>
247 <property stdset="1"> 247 <property stdset="1">
248 <name>frameShadow</name> 248 <name>frameShadow</name>
249 <enum>Sunken</enum> 249 <enum>Sunken</enum>
250 </property> 250 </property>
251 <property stdset="1"> 251 <property stdset="1">
252 <name>text</name> 252 <name>text</name>
253 <string></string> 253 <string></string>
254 </property> 254 </property>
255 </widget> 255 </widget>
256 <widget row="2" column="0" > 256 <widget row="2" column="0" >
257 <class>QLabel</class> 257 <class>QLabel</class>
258 <property stdset="1"> 258 <property stdset="1">
259 <name>name</name> 259 <name>name</name>
260 <cstring>TextLabel9</cstring> 260 <cstring>TextLabel9</cstring>
261 </property> 261 </property>
262 <property stdset="1"> 262 <property stdset="1">
263 <name>text</name> 263 <name>text</name>
264 <string>Lease Expires</string> 264 <string>Lease Expires</string>
265 </property> 265 </property>
266 </widget> 266 </widget>
267 <widget row="1" column="0" > 267 <widget row="1" column="0" >
268 <class>QLabel</class> 268 <class>QLabel</class>
269 <property stdset="1"> 269 <property stdset="1">
270 <name>name</name> 270 <name>name</name>
271 <cstring>TextLabel8</cstring> 271 <cstring>TextLabel8</cstring>
272 </property> 272 </property>
273 <property stdset="1"> 273 <property stdset="1">
274 <name>text</name> 274 <name>text</name>
275 <string>Lease Obtained</string> 275 <string>Lease Obtained</string>
276 </property> 276 </property>
277 </widget> 277 </widget>
278 <widget row="0" column="1" > 278 <widget row="0" column="1" >
279 <class>QLabel</class> 279 <class>QLabel</class>
280 <property stdset="1"> 280 <property stdset="1">
281 <name>name</name> 281 <name>name</name>
282 <cstring>dhcpServerLabel</cstring> 282 <cstring>dhcpServerLabel</cstring>
283 </property> 283 </property>
284 <property stdset="1"> 284 <property stdset="1">
285 <name>frameShape</name> 285 <name>frameShape</name>
286 <enum>Panel</enum> 286 <enum>Panel</enum>
287 </property> 287 </property>
288 <property stdset="1"> 288 <property stdset="1">
289 <name>frameShadow</name> 289 <name>frameShadow</name>
290 <enum>Sunken</enum> 290 <enum>Sunken</enum>
291 </property> 291 </property>
292 <property stdset="1"> 292 <property stdset="1">
293 <name>text</name> 293 <name>text</name>
294 <string></string> 294 <string></string>
295 </property> 295 </property>
296 </widget> 296 </widget>
297 </grid> 297 </grid>
298 </widget> 298 </widget>
299 <spacer row="6" column="1" > 299 <spacer row="6" column="1" >
300 <property> 300 <property>
301 <name>name</name> 301 <name>name</name>
302 <cstring>Spacer2</cstring> 302 <cstring>Spacer2</cstring>
303 </property> 303 </property>
304 <property stdset="1"> 304 <property stdset="1">
305 <name>orientation</name> 305 <name>orientation</name>
306 <enum>Vertical</enum> 306 <enum>Vertical</enum>
307 </property> 307 </property>
308 <property stdset="1"> 308 <property stdset="1">
309 <name>sizeType</name> 309 <name>sizeType</name>
310 <enum>Expanding</enum> 310 <enum>Expanding</enum>
311 </property> 311 </property>
312 <property> 312 <property>
313 <name>sizeHint</name> 313 <name>sizeHint</name>
314 <size> 314 <size>
315 <width>20</width> 315 <width>20</width>
316 <height>20</height> 316 <height>20</height>
317 </size> 317 </size>
318 </property> 318 </property>
319 </spacer> 319 </spacer>
320 </grid> 320 </grid>
diff --git a/noncore/net/networksetup/interfaceinformation.ui b/noncore/net/networksetup/interfaceinformation.ui
index 76af19c..fc99fce 100644
--- a/noncore/net/networksetup/interfaceinformation.ui
+++ b/noncore/net/networksetup/interfaceinformation.ui
@@ -1,143 +1,143 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>InterfaceInformation</class> 2<class>InterfaceInformation</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>InterfaceInformation</cstring> 7 <cstring>InterfaceInformation</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>199</width> 14 <width>219</width>
15 <height>244</height> 15 <height>255</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Interface Information</string> 20 <string>Interface Information</string>
21 </property> 21 </property>
22 <grid> 22 <grid>
23 <property stdset="1"> 23 <property stdset="1">
24 <name>margin</name> 24 <name>margin</name>
25 <number>11</number> 25 <number>11</number>
26 </property> 26 </property>
27 <property stdset="1"> 27 <property stdset="1">
28 <name>spacing</name> 28 <name>spacing</name>
29 <number>6</number> 29 <number>6</number>
30 </property> 30 </property>
31 <widget row="4" column="0" rowspan="1" colspan="2" > 31 <widget row="4" column="0" rowspan="1" colspan="2" >
32 <class>QLayoutWidget</class> 32 <class>QLayoutWidget</class>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>name</name> 34 <name>name</name>
35 <cstring>Layout1</cstring> 35 <cstring>Layout1</cstring>
36 </property> 36 </property>
37 <grid> 37 <grid>
38 <property stdset="1"> 38 <property stdset="1">
39 <name>margin</name> 39 <name>margin</name>
40 <number>0</number> 40 <number>0</number>
41 </property> 41 </property>
42 <property stdset="1"> 42 <property stdset="1">
43 <name>spacing</name> 43 <name>spacing</name>
44 <number>6</number> 44 <number>6</number>
45 </property> 45 </property>
46 <widget row="1" column="0" > 46 <widget row="1" column="0" >
47 <class>QPushButton</class> 47 <class>QPushButton</class>
48 <property stdset="1"> 48 <property stdset="1">
49 <name>name</name> 49 <name>name</name>
50 <cstring>refreshButton</cstring> 50 <cstring>refreshButton</cstring>
51 </property> 51 </property>
52 <property stdset="1"> 52 <property stdset="1">
53 <name>text</name> 53 <name>text</name>
54 <string>Refresh</string> 54 <string>Refresh</string>
55 </property> 55 </property>
56 </widget> 56 </widget>
57 <widget row="0" column="1" > 57 <widget row="0" column="1" >
58 <class>QPushButton</class> 58 <class>QPushButton</class>
59 <property stdset="1"> 59 <property stdset="1">
60 <name>name</name> 60 <name>name</name>
61 <cstring>stopButton</cstring> 61 <cstring>stopButton</cstring>
62 </property> 62 </property>
63 <property stdset="1"> 63 <property stdset="1">
64 <name>text</name> 64 <name>text</name>
65 <string>Stop</string> 65 <string>Stop</string>
66 </property> 66 </property>
67 </widget> 67 </widget>
68 <widget row="1" column="1" > 68 <widget row="1" column="1" >
69 <class>QPushButton</class> 69 <class>QPushButton</class>
70 <property stdset="1"> 70 <property stdset="1">
71 <name>name</name> 71 <name>name</name>
72 <cstring>restartButton</cstring> 72 <cstring>restartButton</cstring>
73 </property> 73 </property>
74 <property stdset="1"> 74 <property stdset="1">
75 <name>text</name> 75 <name>text</name>
76 <string>Restart</string> 76 <string>Restart</string>
77 </property> 77 </property>
78 </widget> 78 </widget>
79 <widget row="0" column="0" > 79 <widget row="0" column="0" >
80 <class>QPushButton</class> 80 <class>QPushButton</class>
81 <property stdset="1"> 81 <property stdset="1">
82 <name>name</name> 82 <name>name</name>
83 <cstring>startButton</cstring> 83 <cstring>startButton</cstring>
84 </property> 84 </property>
85 <property stdset="1"> 85 <property stdset="1">
86 <name>text</name> 86 <name>text</name>
87 <string>Start</string> 87 <string>Start</string>
88 </property> 88 </property>
89 </widget> 89 </widget>
90 </grid> 90 </grid>
91 </widget> 91 </widget>
92 <widget row="0" column="0" > 92 <widget row="0" column="0" >
93 <class>Line</class> 93 <class>Line</class>
94 <property stdset="1"> 94 <property stdset="1">
95 <name>name</name> 95 <name>name</name>
96 <cstring>Line1</cstring> 96 <cstring>Line1</cstring>
97 </property> 97 </property>
98 <property stdset="1"> 98 <property stdset="1">
99 <name>orientation</name> 99 <name>orientation</name>
100 <enum>Horizontal</enum> 100 <enum>Horizontal</enum>
101 </property> 101 </property>
102 </widget> 102 </widget>
103 <widget row="0" column="0" > 103 <widget row="0" column="0" >
104 <class>QLabel</class> 104 <class>QLabel</class>
105 <property stdset="1"> 105 <property stdset="1">
106 <name>name</name> 106 <name>name</name>
107 <cstring>TextLabel22</cstring> 107 <cstring>TextLabel22</cstring>
108 </property> 108 </property>
109 <property stdset="1"> 109 <property stdset="1">
110 <name>text</name> 110 <name>text</name>
111 <string>IP Address</string> 111 <string>IP Address</string>
112 </property> 112 </property>
113 </widget> 113 </widget>
114 <widget row="1" column="0" > 114 <widget row="1" column="0" >
115 <class>QLabel</class> 115 <class>QLabel</class>
116 <property stdset="1"> 116 <property stdset="1">
117 <name>name</name> 117 <name>name</name>
118 <cstring>TextLabel23</cstring> 118 <cstring>TextLabel23</cstring>
119 </property> 119 </property>
120 <property stdset="1"> 120 <property stdset="1">
121 <name>text</name> 121 <name>text</name>
122 <string>Subnet Mask</string> 122 <string>Subnet Mask</string>
123 </property> 123 </property>
124 </widget> 124 </widget>
125 <widget row="2" column="0" > 125 <widget row="2" column="0" >
126 <class>QLabel</class> 126 <class>QLabel</class>
127 <property stdset="1"> 127 <property stdset="1">
128 <name>name</name> 128 <name>name</name>
129 <cstring>TextLabel21</cstring> 129 <cstring>TextLabel21</cstring>
130 </property> 130 </property>
131 <property stdset="1"> 131 <property stdset="1">
132 <name>text</name> 132 <name>text</name>
133 <string>MAC Address</string> 133 <string>MAC Address</string>
134 </property> 134 </property>
135 </widget> 135 </widget>
136 <widget row="3" column="0" > 136 <widget row="3" column="0" >
137 <class>QLabel</class> 137 <class>QLabel</class>
138 <property stdset="1"> 138 <property stdset="1">
139 <name>name</name> 139 <name>name</name>
140 <cstring>TextLabel24</cstring> 140 <cstring>TextLabel24</cstring>
141 </property> 141 </property>
142 <property stdset="1"> 142 <property stdset="1">
143 <name>frameShape</name> 143 <name>frameShape</name>
@@ -208,136 +208,138 @@
208 <name>text</name> 208 <name>text</name>
209 <string></string> 209 <string></string>
210 </property> 210 </property>
211 </widget> 211 </widget>
212 <widget row="0" column="1" > 212 <widget row="0" column="1" >
213 <class>QLabel</class> 213 <class>QLabel</class>
214 <property stdset="1"> 214 <property stdset="1">
215 <name>name</name> 215 <name>name</name>
216 <cstring>ipAddressLabel</cstring> 216 <cstring>ipAddressLabel</cstring>
217 </property> 217 </property>
218 <property stdset="1"> 218 <property stdset="1">
219 <name>frameShape</name> 219 <name>frameShape</name>
220 <enum>Panel</enum> 220 <enum>Panel</enum>
221 </property> 221 </property>
222 <property stdset="1"> 222 <property stdset="1">
223 <name>frameShadow</name> 223 <name>frameShadow</name>
224 <enum>Sunken</enum> 224 <enum>Sunken</enum>
225 </property> 225 </property>
226 <property stdset="1"> 226 <property stdset="1">
227 <name>text</name> 227 <name>text</name>
228 <string>0.0.0.0</string> 228 <string>0.0.0.0</string>
229 </property> 229 </property>
230 </widget> 230 </widget>
231 <spacer row="7" column="1" > 231 <spacer row="7" column="1" >
232 <property> 232 <property>
233 <name>name</name> 233 <name>name</name>
234 <cstring>Spacer18</cstring> 234 <cstring>Spacer18</cstring>
235 </property> 235 </property>
236 <property stdset="1"> 236 <property stdset="1">
237 <name>orientation</name> 237 <name>orientation</name>
238 <enum>Vertical</enum> 238 <enum>Vertical</enum>
239 </property> 239 </property>
240 <property stdset="1"> 240 <property stdset="1">
241 <name>sizeType</name> 241 <name>sizeType</name>
242 <enum>Expanding</enum> 242 <enum>Expanding</enum>
243 </property> 243 </property>
244 <property> 244 <property>
245 <name>sizeHint</name> 245 <name>sizeHint</name>
246 <size> 246 <size>
247 <width>20</width> 247 <width>20</width>
248 <height>20</height> 248 <height>20</height>
249 </size> 249 </size>
250 </property> 250 </property>
251 </spacer> 251 </spacer>
252 <widget row="6" column="0" rowspan="1" colspan="2" > 252 <widget row="6" column="0" rowspan="1" colspan="2" >
253 <class>QLayoutWidget</class> 253 <class>QLayoutWidget</class>
254 <property stdset="1"> 254 <property stdset="1">
255 <name>name</name> 255 <name>name</name>
256 <cstring>Layout2</cstring> 256 <cstring>Layout2</cstring>
257 </property> 257 </property>
258 <hbox> 258 <hbox>
259 <property stdset="1"> 259 <property stdset="1">
260 <name>margin</name> 260 <name>margin</name>
261 <number>0</number> 261 <number>0</number>
262 </property> 262 </property>
263 <property stdset="1"> 263 <property stdset="1">
264 <name>spacing</name> 264 <name>spacing</name>
265 <number>6</number> 265 <number>6</number>
266 </property> 266 </property>
267 <spacer> 267 <spacer>
268 <property> 268 <property>
269 <name>name</name> 269 <name>name</name>
270 <cstring>Spacer10</cstring> 270 <cstring>Spacer10</cstring>
271 </property> 271 </property>
272 <property stdset="1"> 272 <property stdset="1">
273 <name>orientation</name> 273 <name>orientation</name>
274 <enum>Horizontal</enum> 274 <enum>Horizontal</enum>
275 </property> 275 </property>
276 <property stdset="1"> 276 <property stdset="1">
277 <name>sizeType</name> 277 <name>sizeType</name>
278 <enum>Expanding</enum> 278 <enum>Expanding</enum>
279 </property> 279 </property>
280 <property> 280 <property>
281 <name>sizeHint</name> 281 <name>sizeHint</name>
282 <size> 282 <size>
283 <width>20</width> 283 <width>20</width>
284 <height>20</height> 284 <height>20</height>
285 </size> 285 </size>
286 </property> 286 </property>
287 </spacer> 287 </spacer>
288 <widget> 288 <widget>
289 <class>QPushButton</class> 289 <class>QPushButton</class>
290 <property stdset="1"> 290 <property stdset="1">
291 <name>name</name> 291 <name>name</name>
292 <cstring>advancedButton</cstring> 292 <cstring>advancedButton</cstring>
293 </property> 293 </property>
294 <property stdset="1"> 294 <property stdset="1">
295 <name>text</name> 295 <name>text</name>
296 <string>View Advanced Information</string> 296 <string>View Advanced Information</string>
297 </property> 297 </property>
298 </widget> 298 </widget>
299 </hbox> 299 </hbox>
300 </widget> 300 </widget>
301 <widget row="5" column="0" rowspan="1" colspan="2" > 301 <widget row="5" column="0" rowspan="1" colspan="2" >
302 <class>Line</class> 302 <class>Line</class>
303 <property stdset="1"> 303 <property stdset="1">
304 <name>name</name> 304 <name>name</name>
305 <cstring>Line5</cstring> 305 <cstring>Line5</cstring>
306 </property> 306 </property>
307 <property stdset="1"> 307 <property stdset="1">
308 <name>orientation</name> 308 <name>orientation</name>
309 <enum>Horizontal</enum> 309 <enum>Horizontal</enum>
310 </property> 310 </property>
311 </widget> 311 </widget>
312 </grid> 312 </grid>
313</widget> 313</widget>
314<customwidgets> 314<customwidgets>
315 <customwidget> 315 <customwidget>
316 <class>QWidget</class> 316 <class>QWidget</class>
317 <header location="local">qwidget.h</header> 317 <header location="local">qwidget.h</header>
318 <sizehint> 318 <sizehint>
319 <width>100</width> 319 <width>100</width>
320 <height>100</height> 320 <height>100</height>
321 </sizehint> 321 </sizehint>
322 <container>0</container> 322 <container>0</container>
323 <sizepolicy> 323 <sizepolicy>
324 <hordata>7</hordata> 324 <hordata>7</hordata>
325 <verdata>7</verdata> 325 <verdata>7</verdata>
326 </sizepolicy> 326 </sizepolicy>
327 <pixmap>image0</pixmap> 327 <pixmap>image0</pixmap>
328 </customwidget> 328 </customwidget>
329</customwidgets> 329</customwidgets>
330<images> 330<images>
331 <image> 331 <image>
332 <name>image0</name> 332 <name>image0</name>
333 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> 333 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
334 </image> 334 </image>
335</images> 335</images>
336<connections>
337</connections>
336<tabstops> 338<tabstops>
337 <tabstop>startButton</tabstop> 339 <tabstop>startButton</tabstop>
338 <tabstop>stopButton</tabstop> 340 <tabstop>stopButton</tabstop>
339 <tabstop>refreshButton</tabstop> 341 <tabstop>refreshButton</tabstop>
340 <tabstop>restartButton</tabstop> 342 <tabstop>restartButton</tabstop>
341 <tabstop>advancedButton</tabstop> 343 <tabstop>advancedButton</tabstop>
342</tabstops> 344</tabstops>
343</UI> 345</UI>
diff --git a/noncore/net/networksetup/interfaceinformationimp.cpp b/noncore/net/networksetup/interfaceinformationimp.cpp
index 59a6400..43483fb 100644
--- a/noncore/net/networksetup/interfaceinformationimp.cpp
+++ b/noncore/net/networksetup/interfaceinformationimp.cpp
@@ -1,67 +1,70 @@
1#include "interfaceinformationimp.h" 1#include "interfaceinformationimp.h"
2#include "interfaceadvanced.h" 2#include "interfaceadvanced.h"
3 3
4#include <qpushbutton.h> 4#include <qpushbutton.h>
5#include <qlabel.h> 5#include <qlabel.h>
6#include <qgroupbox.h>
6#include <assert.h> 7#include <assert.h>
7 8
8/** 9/**
9 * Constructor for the InterfaceInformationImp class. This class pretty much 10 * Constructor for the InterfaceInformationImp class. This class pretty much
10 * just display's information about the interface that is passed to it. 11 * just display's information about the interface that is passed to it.
11 */ 12 */
12InterfaceInformationImp::InterfaceInformationImp(QWidget *parent, const char *name, Interface *i, WFlags f):InterfaceInformation(parent, name, f){ 13InterfaceInformationImp::InterfaceInformationImp(QWidget *parent, const char *name, Interface *i, WFlags f):InterfaceInformation(parent, name, f){
13 assert(i); 14 assert(i);
14 15
15 interface = i; 16 interface = i;
16 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 17 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
17 updateInterface(interface); 18 updateInterface(interface);
18 connect(startButton, SIGNAL(clicked()), interface, SLOT(start())); 19 connect(startButton, SIGNAL(clicked()), interface, SLOT(start()));
19 connect(stopButton, SIGNAL(clicked()), interface, SLOT(stop())); 20 connect(stopButton, SIGNAL(clicked()), interface, SLOT(stop()));
20 connect(restartButton, SIGNAL(clicked()), interface, SLOT(restart())); 21 connect(restartButton, SIGNAL(clicked()), interface, SLOT(restart()));
21 connect(refreshButton, SIGNAL(clicked()), interface, SLOT(refresh())); 22 connect(refreshButton, SIGNAL(clicked()), interface, SLOT(refresh()));
22 connect(advancedButton, SIGNAL(clicked()), this, SLOT(advanced())); 23 connect(advancedButton, SIGNAL(clicked()), this, SLOT(advanced()));
23 24
24} 25}
25 26
26/** 27/**
27 * Update the interface information and buttons. 28 * Update the interface information and buttons.
28 * @param Intarface *i the interface to update (should be the one we already 29 * @param Intarface *i the interface to update (should be the one we already
29 * know about). 30 * know about).
30 */ 31 */
31void InterfaceInformationImp::updateInterface(Interface *i){ 32void InterfaceInformationImp::updateInterface(Interface *i){
32 if(interface->getStatus()){ 33 if(interface->getStatus()){
33 startButton->setEnabled(false); 34 startButton->setEnabled(false);
34 stopButton->setEnabled(true); 35 stopButton->setEnabled(true);
35 restartButton->setEnabled(true); 36 restartButton->setEnabled(true);
36 } 37 }
37 else{ 38 else{
38 startButton->setEnabled(true); 39 startButton->setEnabled(true);
39 stopButton->setEnabled(false); 40 stopButton->setEnabled(false);
40 restartButton->setEnabled(false); 41 restartButton->setEnabled(false);
41 } 42 }
42 macAddressLabel->setText(interface->getMacAddress()); 43 macAddressLabel->setText(interface->getMacAddress());
43 ipAddressLabel->setText(interface->getIp()); 44 ipAddressLabel->setText(interface->getIp());
44 subnetMaskLabel->setText(interface->getSubnetMask()); 45 subnetMaskLabel->setText(interface->getSubnetMask());
45 broadcastLabel->setText(interface->getBroadcast()); 46 broadcastLabel->setText(interface->getBroadcast());
46} 47}
47 48
48/** 49/**
49 * Create the advanced widget. Fill it with the current interface's information. 50 * Create the advanced widget. Fill it with the current interface's information.
50 * Display it. 51 * Display it.
51 */ 52 */
52void InterfaceInformationImp::advanced(){ 53void InterfaceInformationImp::advanced(){
53 InterfaceAdvanced *a = new InterfaceAdvanced(0, "InterfaceAdvanced"); 54 InterfaceAdvanced *a = new InterfaceAdvanced(0, "InterfaceAdvanced");
54 a->interfaceName->setText(interface->getInterfaceName()); 55 a->interfaceName->setText(interface->getInterfaceName());
55 a->macAddressLabel->setText(interface->getMacAddress()); 56 a->macAddressLabel->setText(interface->getMacAddress());
56 a->ipAddressLabel->setText(interface->getIp()); 57 a->ipAddressLabel->setText(interface->getIp());
57 a->subnetMaskLabel->setText(interface->getSubnetMask()); 58 a->subnetMaskLabel->setText(interface->getSubnetMask());
58 a->broadcastLabel->setText(interface->getBroadcast()); 59 a->broadcastLabel->setText(interface->getBroadcast());
59 a->dhcpServerLabel->setText(interface->getDhcpServerIp()); 60 a->dhcpServerLabel->setText(interface->getDhcpServerIp());
60 a->leaseObtainedLabel->setText(interface->getLeaseObtained()); 61 a->leaseObtainedLabel->setText(interface->getLeaseObtained());
61 a->leaseExpiresLabel->setText(interface->getLeaseExpires()); 62 a->leaseExpiresLabel->setText(interface->getLeaseExpires());
63 a->dhcpInformation->setEnabled(interface->isDhcp());
64
62 a->showMaximized(); 65 a->showMaximized();
63 a->show(); 66 a->show();
64} 67}
65 68
66// infoimp.cpp 69// infoimp.cpp
67 70
diff --git a/noncore/net/networksetup/interfaces.cpp b/noncore/net/networksetup/interfaces.cpp
index 1287d90..eef42df 100644
--- a/noncore/net/networksetup/interfaces.cpp
+++ b/noncore/net/networksetup/interfaces.cpp
@@ -220,318 +220,325 @@ QString Interfaces::getInterfaceFamily(bool &error){
220 return QString(); 220 return QString();
221 } 221 }
222 error = false; 222 error = false;
223 return line.mid(0, findSpace); 223 return line.mid(0, findSpace);
224} 224}
225 225
226/** 226/**
227 * Gets the method of the interface that is currently selected. 227 * Gets the method of the interface that is currently selected.
228 * @return QString name of the method such as staic or dhcp. 228 * @return QString name of the method such as staic or dhcp.
229 * See the man page of interfaces for possible methods depending on the family. 229 * See the man page of interfaces for possible methods depending on the family.
230 * @param error set to true if any error occurs, false otherwise. 230 * @param error set to true if any error occurs, false otherwise.
231 */ 231 */
232QString Interfaces::getInterfaceMethod(bool &error){ 232QString Interfaces::getInterfaceMethod(bool &error){
233 QString name = getInterfaceName(error); 233 QString name = getInterfaceName(error);
234 if(error){ 234 if(error){
235 error = true; 235 error = true;
236 return QString(); 236 return QString();
237 } 237 }
238 QString family = getInterfaceFamily(error); 238 QString family = getInterfaceFamily(error);
239 if(error){ 239 if(error){
240 error = true; 240 error = true;
241 return QString(); 241 return QString();
242 } 242 }
243 QString line = (*currentIface); 243 QString line = (*currentIface);
244 line = line.mid(QString(IFACE).length()+1, line.length()); 244 line = line.mid(QString(IFACE).length()+1, line.length());
245 line = line.mid(name.length()+1, line.length()); 245 line = line.mid(name.length()+1, line.length());
246 line = line.mid(family.length()+1, line.length()); 246 line = line.mid(family.length()+1, line.length());
247 line = line.simplifyWhiteSpace(); 247 line = line.simplifyWhiteSpace();
248 error = false; 248 error = false;
249 return line; 249 return line;
250} 250}
251 251
252/** 252/**
253 * Sets the interface name to newName. 253 * Sets the interface name to newName.
254 * @param newName the new name of the interface. All whitespace is removed. 254 * @param newName the new name of the interface. All whitespace is removed.
255 * @return bool true if successfull. 255 * @return bool true if successfull.
256 */ 256 */
257bool Interfaces::setInterfaceName(QString newName){ 257bool Interfaces::setInterfaceName(QString newName){
258 if(currentIface == interfaces.end()) 258 if(currentIface == interfaces.end())
259 return false; 259 return false;
260 newName = newName.simplifyWhiteSpace(); 260 newName = newName.simplifyWhiteSpace();
261 newName = newName.replace(QRegExp(" "), ""); 261 newName = newName.replace(QRegExp(" "), "");
262 bool returnValue = false; 262 bool returnValue = false;
263 (*currentIface) = QString("iface %1 %2 %3").arg(newName).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue)); 263 (*currentIface) = QString("iface %1 %2 %3").arg(newName).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue));
264 return !returnValue; 264 return !returnValue;
265} 265}
266 266
267/** 267/**
268 * Sets the interface family to newName. 268 * Sets the interface family to newName.
269 * @param newName the new name of the interface. Must be one of the families 269 * @param newName the new name of the interface. Must be one of the families
270 * defined in the interfaces.h file. 270 * defined in the interfaces.h file.
271 * @return bool true if successfull. 271 * @return bool true if successfull.
272 */ 272 */
273bool Interfaces::setInterfaceFamily(QString newName){ 273bool Interfaces::setInterfaceFamily(QString newName){
274 if(currentIface == interfaces.end()) 274 if(currentIface == interfaces.end())
275 return false; 275 return false;
276 if(acceptedFamily.contains(newName)==0) 276 if(acceptedFamily.contains(newName)==0)
277 return false; 277 return false;
278 bool returnValue = false; 278 bool returnValue = false;
279 (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(newName).arg(getInterfaceMethod(returnValue)); 279 (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(newName).arg(getInterfaceMethod(returnValue));
280 return !returnValue; 280 return !returnValue;
281} 281}
282 282
283/** 283/**
284 * Sets the interface method to newName 284 * Sets the interface method to newName
285 * @param newName the new name of the interface 285 * @param newName the new name of the interface
286 * @return bool true if successfull. 286 * @return bool true if successfull.
287 */ 287 */
288bool Interfaces::setInterfaceMethod(QString newName){ 288bool Interfaces::setInterfaceMethod(QString newName){
289 if(currentIface == interfaces.end()) 289 if(currentIface == interfaces.end())
290 return false; 290 return false;
291 bool returnValue = false; 291 bool returnValue = false;
292 (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(getInterfaceFamily(returnValue)).arg(newName); 292 (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(getInterfaceFamily(returnValue)).arg(newName);
293 return !returnValue; 293 return !returnValue;
294} 294}
295 295
296/** 296/**
297 * Get a value for an option in the currently selected interface. For example 297 * Get a value for an option in the currently selected interface. For example
298 * calling getInterfaceOption("address") on the following stanza would 298 * calling getInterfaceOption("address") on the following stanza would
299 * return 192.168.1.1. 299 * return 192.168.1.1.
300 * iface eth0 static 300 * iface eth0 static
301 * address 192.168.1.1 301 * address 192.168.1.1
302 * @param option the options to get the value. 302 * @param option the options to get the value.
303 * @param error set to true if any error occurs, false otherwise. 303 * @param error set to true if any error occurs, false otherwise.
304 * @return QString the options value. QString::null if error == true 304 * @return QString the options value. QString::null if error == true
305 */ 305 */
306QString Interfaces::getInterfaceOption(QString option, bool &error){ 306QString Interfaces::getInterfaceOption(QString option, bool &error){
307 return getOption(currentIface, option, error); 307 return getOption(currentIface, option, error);
308} 308}
309 309
310/** 310/**
311 * Set a value for an option in the currently selected interface. If option 311 * Set a value for an option in the currently selected interface. If option
312 * doesn't exist then it is added along with the value. If value is set to an 312 * doesn't exist then it is added along with the value. If value is set to an
313 * empty string then option is removed. 313 * empty string then option is removed.
314 * @param option the options to set the value. 314 * @param option the options to set the value.
315 * @param value the value that option should be set to. 315 * @param value the value that option should be set to.
316 * @param error set to true if any error occurs, false otherwise. 316 * @param error set to true if any error occurs, false otherwise.
317 * @return QString the options value. QString::null if error == true 317 * @return QString the options value. QString::null if error == true
318 */ 318 */
319bool Interfaces::setInterfaceOption(QString option, QString value){ 319bool Interfaces::setInterfaceOption(QString option, QString value){
320 return setOption(currentIface, option, value); 320 return setOption(currentIface, option, value);
321} 321}
322 322
323/** 323/**
324 * Removes all of the options from the currently selected interface. 324 * Removes all of the options from the currently selected interface.
325 * @return bool error if if successfull 325 * @return bool error if if successfull
326 */ 326 */
327bool Interfaces::removeAllInterfaceOptions(){ 327bool Interfaces::removeAllInterfaceOptions(){
328 return removeAllOptions(currentIface); 328 return removeAllOptions(currentIface);
329} 329}
330 330
331/** 331/**
332 * Set the current map to interface's map. This needs to be done before you 332 * Set the current map to interface's map. This needs to be done before you
333 * can call addMapping(), set/getMap(), and get/setScript(). 333 * can call addMapping(), set/getMap(), and get/setScript().
334 * @param interface the name of the interface to set. All whitespace is 334 * @param interface the name of the interface to set. All whitespace is
335 * removed from the interface name. 335 * removed from the interface name.
336 * @return bool true if it is successfull. 336 * @return bool true if it is successfull.
337 */ 337 */
338bool Interfaces::setMapping(QString interface){ 338bool Interfaces::setMapping(QString interface){
339 interface = interface.simplifyWhiteSpace(); 339 interface = interface.simplifyWhiteSpace();
340 interface = interface.replace(QRegExp(" "), ""); 340 interface = interface.replace(QRegExp(" "), "");
341 return setStanza(MAPPING, interface, currentMapping); 341 return setStanza(MAPPING, interface, currentMapping);
342} 342}
343 343
344/** 344/**
345 * Adds a new Mapping to the interfaces file with interfaces. 345 * Adds a new Mapping to the interfaces file with interfaces.
346 * @param interface the name(s) of the interfaces to set to this mapping 346 * @param interface the name(s) of the interfaces to set to this mapping
347 */ 347 */
348void Interfaces::addMapping(QString interfaces){ 348void Interfaces::addMapping(QString option){
349 interfaces.append(""); 349 interfaces.append("");
350 interfaces.append(QString(MAPPING " %1").arg(interfaces)); 350 interfaces.append(QString(MAPPING " %1").arg(option));
351} 351}
352 352
353/** 353/**
354 * Set a map option within a mapping. 354 * Set a map option within a mapping.
355 * @param map map to use 355 * @param map map to use
356 * @param value value to go with map 356 * @param value value to go with map
357 * @return bool true if it is successfull. 357 * @return bool true if it is successfull.
358 */ 358 */
359bool Interfaces::setMap(QString map, QString value){ 359bool Interfaces::setMap(QString map, QString value){
360 return setOption(currentMapping, map, value); 360 return setOption(currentMapping, map, value);
361} 361}
362 362
363/** 363/**
364 * Get a map value within a mapping. 364 * Get a map value within a mapping.
365 * @param map map to get value of 365 * @param map map to get value of
366 * @param bool true if it is successfull. 366 * @param bool true if it is successfull.
367 * @return value that goes to the map 367 * @return value that goes to the map
368 */ 368 */
369QString Interfaces::getMap(QString map, bool &error){ 369QString Interfaces::getMap(QString map, bool &error){
370 return getOption(currentMapping, map, error); 370 return getOption(currentMapping, map, error);
371} 371}
372 372
373/** 373/**
374 * Sets a script value of the current mapping to argument. 374 * Sets a script value of the current mapping to argument.
375 * @param argument the script name. 375 * @param argument the script name.
376 * @return true if successfull. 376 * @return true if successfull.
377 */ 377 */
378bool Interfaces::setScript(QString argument){ 378bool Interfaces::setScript(QString argument){
379 return setOption(currentMapping, "script", argument); 379 return setOption(currentMapping, "script", argument);
380} 380}
381 381
382/** 382/**
383 * @param error true if could not retrieve the current script argument. 383 * @param error true if could not retrieve the current script argument.
384 * @return QString the argument of the script for the current mapping. 384 * @return QString the argument of the script for the current mapping.
385 */ 385 */
386QString Interfaces::getScript(bool &error){ 386QString Interfaces::getScript(bool &error){
387 return getOption(currentMapping, "script", error); 387 return getOption(currentMapping, "script", error);
388} 388}
389 389
390/** 390/**
391 * Helper function used to parse through the QStringList and put pointers in 391 * Helper function used to parse through the QStringList and put pointers in
392 * the correct place. 392 * the correct place.
393 * @param stanza The stanza (auto, iface, mapping) to look for. 393 * @param stanza The stanza (auto, iface, mapping) to look for.
394 * @param option string that must be in the stanza's main line. 394 * @param option string that must be in the stanza's main line.
395 * @param interator interator to place at location of stanza if successfull. 395 * @param interator interator to place at location of stanza if successfull.
396 * @return bool true if the stanza is found. 396 * @return bool true if the stanza is found.
397 */ 397 */
398bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){ 398bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){
399 bool found = false; 399 bool found = false;
400 iterator = interfaces.end(); 400 iterator = interfaces.end();
401 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { 401 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
402 QString line = (*it).simplifyWhiteSpace(); 402 QString line = (*it).simplifyWhiteSpace();
403 if(line.contains(stanza) && line.contains(option)){ 403 if(line.contains(stanza) && line.contains(option)){
404 if(found == true){ 404 if(found == true){
405 qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1()); 405 qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1());
406 } 406 }
407 qDebug("Found");
407 found = true; 408 found = true;
408 iterator = it; 409 iterator = it;
409 } 410 }
410 } 411 }
411 return !found; 412 return found;
412} 413}
413 414
414/** 415/**
415 * Sets a value of an option in a stanza 416 * Sets a value of an option in a stanza
416 * @param start the start of the stanza 417 * @param start the start of the stanza
417 * @param option the option to use when setting value. 418 * @param option the option to use when setting value.
418 * @return bool true if successfull, false otherwise. 419 * @return bool true if successfull, false otherwise.
419 */ 420 */
420bool Interfaces::setOption(QStringList::Iterator start, QString option, QString value){ 421bool Interfaces::setOption(QStringList::Iterator start, QString option, QString value){
421 if(start == interfaces.end()) 422 if(start == interfaces.end())
422 return false; 423 return false;
423 424
424 bool found = false; 425 bool found = false;
425 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { 426 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) {
426 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ 427 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
427 if(!found && value != ""){ 428 if(!found && value != ""){
428 // Got to the end of the stanza without finding it, so append it. 429 // Got to the end of the stanza without finding it, so append it.
429 interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value)); 430 interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value));
430 } 431 }
432 found = true;
431 break; 433 break;
432 } 434 }
433 if((*it).contains(option)){ 435 if((*it).contains(option) && it != start){
434 // Found it in stanza so replace it. 436 // Found it in stanza so replace it.
435 if(found) 437 if(found)
436 qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); 438 qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1());
437 found = true; 439 found = true;
438 if(value == "") 440 if(value == "")
439 (*it) = ""; 441 (*it) = "";
440 else 442 else
441 (*it) = QString("\t%1 %2").arg(option).arg(value); 443 (*it) = QString("\t%1 %2").arg(option).arg(value);
442 } 444 }
443 } 445 }
444 return true; 446 if(!found){
447 QStringList::Iterator p = start;
448 interfaces.insert(++p, QString("\t%1 %2").arg(option).arg(value));
449 found = true;
450 }
451 return found;
445} 452}
446 453
447/** 454/**
448 * Removes all options in a stanza 455 * Removes all options in a stanza
449 * @param start the start of the stanza 456 * @param start the start of the stanza
450 * @return bool true if successfull, false otherwise. 457 * @return bool true if successfull, false otherwise.
451 */ 458 */
452bool Interfaces::removeAllOptions(QStringList::Iterator start){ 459bool Interfaces::removeAllOptions(QStringList::Iterator start){
453 if(start == interfaces.end()) 460 if(start == interfaces.end())
454 return false; 461 return false;
455 462
456 QStringList::Iterator it = start; 463 QStringList::Iterator it = start;
457 it = ++it; 464 it = ++it;
458 for (it; it != interfaces.end(); ++it ) { 465 for (it; it != interfaces.end(); ++it ) {
459 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ 466 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
460 break; 467 break;
461 } 468 }
462 it = interfaces.remove(it); 469 it = interfaces.remove(it);
463 it = --it; 470 it = --it;
464 } 471 }
465 // Leave a space between this interface and the next. 472 // Leave a space between this interface and the next.
466 interfaces.insert(it, QString("")); 473 interfaces.insert(it, QString(""));
467 return true; 474 return true;
468} 475}
469 476
470/** 477/**
471 * Gets a value of an option in a stanza 478 * Gets a value of an option in a stanza
472 * @param start the start of the stanza 479 * @param start the start of the stanza
473 * @param option the option to use when getting the value. 480 * @param option the option to use when getting the value.
474 * @param bool true if errors false otherwise. 481 * @param bool true if errors false otherwise.
475 * @return QString the value of option QString::null() if error == true. 482 * @return QString the value of option QString::null() if error == true.
476 */ 483 */
477QString Interfaces::getOption(QStringList::Iterator start, QString option, bool &error){ 484QString Interfaces::getOption(QStringList::Iterator start, QString option, bool &error){
478 if(start == interfaces.end()){ 485 if(start == interfaces.end()){
479 error = false; 486 error = false;
480 return QString(); 487 return QString();
481 } 488 }
482 489
483 QString value; 490 QString value;
484 bool found = false; 491 bool found = false;
485 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { 492 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) {
486 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ 493 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
487 break; 494 break;
488 } 495 }
489 if((*it).contains(option)){ 496 if((*it).contains(option)){
490 if(found) 497 if(found)
491 qDebug(QString("Interfaces: Get Options found more then one value: %1 for option: %2 in stanza %3").arg((*it)).arg(option).arg((*start)).latin1()); 498 qDebug(QString("Interfaces: Get Options found more then one value: %1 for option: %2 in stanza %3").arg((*it)).arg(option).arg((*start)).latin1());
492 found = true; 499 found = true;
493 QString line = (*it).simplifyWhiteSpace(); 500 QString line = (*it).simplifyWhiteSpace();
494 int space = line.find(" ", option.length()); 501 int space = line.find(" ", option.length());
495 if(space != -1) 502 if(space != -1)
496 value = line.mid(space+1, line.length()); 503 value = line.mid(space+1, line.length());
497 else 504 else
498 qDebug(QString("Interfaces: Option %1 with no value").arg(option).latin1()); 505 qDebug(QString("Interfaces: Option %1 with no value").arg(option).latin1());
499 } 506 }
500 } 507 }
501 error = !found; 508 error = !found;
502 return value; 509 return value;
503} 510}
504 511
505/** 512/**
506 * Write out the interfaces file to the file passed into the constructor. 513 * Write out the interfaces file to the file passed into the constructor.
507 * Removes any excess blank lines over 1 line long. 514 * Removes any excess blank lines over 1 line long.
508 * @return bool true if successfull, false if not. 515 * @return bool true if successfull, false if not.
509 */ 516 */
510bool Interfaces::write(){ 517bool Interfaces::write(){
511 QFile::remove(interfacesFile); 518 QFile::remove(interfacesFile);
512 QFile file(interfacesFile); 519 QFile file(interfacesFile);
513 520
514 if (!file.open(IO_ReadWrite)){ 521 if (!file.open(IO_ReadWrite)){
515 qDebug(QString("Interfaces: Can't open file: %1 for writing.").arg(interfacesFile).latin1()); 522 qDebug(QString("Interfaces: Can't open file: %1 for writing.").arg(interfacesFile).latin1());
516 return false; 523 return false;
517 } 524 }
518 QTextStream stream( &file ); 525 QTextStream stream( &file );
519 int whiteSpaceCount = 0; 526 int whiteSpaceCount = 0;
520 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { 527 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
521 QString line = (*it).simplifyWhiteSpace(); 528 QString line = (*it).simplifyWhiteSpace();
522 line = line.replace(QRegExp(" "),""); 529 line = line.replace(QRegExp(" "),"");
523 if(line.length() == 0) 530 if(line.length() == 0)
524 whiteSpaceCount++; 531 whiteSpaceCount++;
525 else 532 else
526 whiteSpaceCount = 0; 533 whiteSpaceCount = 0;
527 if(whiteSpaceCount < 2){ 534 if(whiteSpaceCount < 2){
528 qDebug((*it).latin1()); 535 qDebug((*it).latin1());
529 stream << (*it) << '\n'; 536 stream << (*it) << '\n';
530 } 537 }
531 } 538 }
532 file.close(); 539 file.close();
533 return true; 540 return true;
534} 541}
535 542
536// interfaces.cpp 543// interfaces.cpp
537 544
diff --git a/noncore/net/networksetup/interfaces.h b/noncore/net/networksetup/interfaces.h
index 8b4788c..e617c17 100644
--- a/noncore/net/networksetup/interfaces.h
+++ b/noncore/net/networksetup/interfaces.h
@@ -1,71 +1,71 @@
1#ifndef INTERFACES_H 1#ifndef INTERFACES_H
2#define INTERFACES_H 2#define INTERFACES_H
3 3
4#include <qstring.h> 4#include <qstring.h>
5#include <qstringlist.h> 5#include <qstringlist.h>
6 6
7#define INTERFACES_LOOPBACK "loopback" 7#define INTERFACES_LOOPBACK "loopback"
8 8
9#define INTERFACES_FAMILY_INET "inet" 9#define INTERFACES_FAMILY_INET "inet"
10#define INTERFACES_FAMILY_IPX "ipx" 10#define INTERFACES_FAMILY_IPX "ipx"
11#define INTERFACES_FAMILY_INET6 "inet6" 11#define INTERFACES_FAMILY_INET6 "inet6"
12 12
13#define INTERFACES_METHOD_DHCP "dhcp" 13#define INTERFACES_METHOD_DHCP "dhcp"
14#define INTERFACES_METHOD_STATIC "static" 14#define INTERFACES_METHOD_STATIC "static"
15#define INTERFACES_METHOD_PPP "ppp" 15#define INTERFACES_METHOD_PPP "ppp"
16 16
17/** 17/**
18 * This class provides a clean frontend for parsing the network interfaces file. 18 * This class provides a clean frontend for parsing the network interfaces file.
19 * It provides helper functions to minipulate the options within the file. 19 * It provides helper functions to minipulate the options within the file.
20 * See the interfaces man page for the syntax rules. 20 * See the interfaces man page for the syntax rules.
21 */ 21 */
22class Interfaces { 22class Interfaces {
23 23
24public: 24public:
25 Interfaces(QString useInterfacesFile = "/etc/network/interfaces"); 25 Interfaces(QString useInterfacesFile = "/etc/network/interfaces");
26 QStringList getInterfaceList(); 26 QStringList getInterfaceList();
27 27
28 bool isAuto(QString interface); 28 bool isAuto(QString interface);
29 bool setAuto(QString interface, bool setAuto); 29 bool setAuto(QString interface, bool setAuto);
30 30
31 bool removeInterface(); 31 bool removeInterface();
32 bool addInterface(QString interface, QString family, QString method); 32 bool addInterface(QString interface, QString family, QString method);
33 bool setInterface(QString interface); 33 bool setInterface(QString interface);
34 bool isInterfaceSet(); 34 bool isInterfaceSet();
35 QString getInterfaceName(bool &error); 35 QString getInterfaceName(bool &error);
36 bool setInterfaceName(QString newName); 36 bool setInterfaceName(QString newName);
37 QString getInterfaceFamily(bool &error); 37 QString getInterfaceFamily(bool &error);
38 bool setInterfaceFamily(QString newName); 38 bool setInterfaceFamily(QString newName);
39 QString getInterfaceMethod(bool &error); 39 QString getInterfaceMethod(bool &error);
40 bool setInterfaceMethod(QString newName); 40 bool setInterfaceMethod(QString newName);
41 QString getInterfaceOption(QString option, bool &error); 41 QString getInterfaceOption(QString option, bool &error);
42 bool setInterfaceOption(QString option, QString value); 42 bool setInterfaceOption(QString option, QString value);
43 bool removeAllInterfaceOptions(); 43 bool removeAllInterfaceOptions();
44 44
45 bool setMapping(QString interface); 45 bool setMapping(QString interface);
46 void addMapping(QString interfaces); 46 void addMapping(QString options);
47 bool setMap(QString map, QString value); 47 bool setMap(QString map, QString value);
48 QString getMap(QString map, bool &error); 48 QString getMap(QString map, bool &error);
49 bool setScript(QString); 49 bool setScript(QString);
50 QString getScript(bool &error); 50 QString getScript(bool &error);
51 51
52 bool write(); 52 bool write();
53 53
54private: 54private:
55 bool setStanza(QString stanza, QString option,QStringList::Iterator &iterator); 55 bool setStanza(QString stanza, QString option,QStringList::Iterator &iterator);
56 bool setOption(QStringList::Iterator start, QString option, QString value); 56 bool setOption(QStringList::Iterator start, QString option, QString value);
57 QString getOption(QStringList::Iterator start, QString option, bool &error); 57 QString getOption(QStringList::Iterator start, QString option, bool &error);
58 bool removeAllOptions(QStringList::Iterator start); 58 bool removeAllOptions(QStringList::Iterator start);
59 59
60 QString interfacesFile; 60 QString interfacesFile;
61 QStringList interfaces; 61 QStringList interfaces;
62 QStringList::Iterator currentIface; 62 QStringList::Iterator currentIface;
63 QStringList::Iterator currentMapping; 63 QStringList::Iterator currentMapping;
64 64
65 QStringList acceptedFamily; 65 QStringList acceptedFamily;
66}; 66};
67 67
68#endif 68#endif
69 69
70// interfaces 70// interfaces
71 71
diff --git a/noncore/net/networksetup/interfacesetup.ui b/noncore/net/networksetup/interfacesetup.ui
index 3db9a0b..c94b1be 100644
--- a/noncore/net/networksetup/interfacesetup.ui
+++ b/noncore/net/networksetup/interfacesetup.ui
@@ -1,347 +1,284 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>InterfaceSetup</class> 2<class>InterfaceSetup</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>InterfaceSetup</cstring> 7 <cstring>InterfaceSetup</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>267</width> 14 <width>276</width>
15 <height>280</height> 15 <height>280</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Interface Configuration</string> 20 <string>Interface Configuration</string>
21 </property> 21 </property>
22 <vbox> 22 <vbox>
23 <property stdset="1"> 23 <property stdset="1">
24 <name>margin</name> 24 <name>margin</name>
25 <number>11</number> 25 <number>11</number>
26 </property> 26 </property>
27 <property stdset="1"> 27 <property stdset="1">
28 <name>spacing</name> 28 <name>spacing</name>
29 <number>6</number> 29 <number>6</number>
30 </property> 30 </property>
31 <widget> 31 <widget>
32 <class>QCheckBox</class> 32 <class>QCheckBox</class>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>name</name> 34 <name>name</name>
35 <cstring>autoStart</cstring> 35 <cstring>autoStart</cstring>
36 </property> 36 </property>
37 <property stdset="1"> 37 <property stdset="1">
38 <name>text</name> 38 <name>text</name>
39 <string>Automaticly bring up</string> 39 <string>Automaticly bring up</string>
40 </property> 40 </property>
41 </widget> 41 </widget>
42 <widget> 42 <widget>
43 <class>QLayoutWidget</class> 43 <class>QLayoutWidget</class>
44 <property stdset="1"> 44 <property stdset="1">
45 <name>name</name> 45 <name>name</name>
46 <cstring>Layout8</cstring>
47 </property>
48 <hbox>
49 <property stdset="1">
50 <name>margin</name>
51 <number>0</number>
52 </property>
53 <property stdset="1">
54 <name>spacing</name>
55 <number>6</number>
56 </property>
57 <widget>
58 <class>QLabel</class>
59 <property stdset="1">
60 <name>name</name>
61 <cstring>TextLabel1</cstring>
62 </property>
63 <property stdset="1">
64 <name>text</name>
65 <string>Profile</string>
66 </property>
67 </widget>
68 <widget>
69 <class>QComboBox</class>
70 <item>
71 <property>
72 <name>text</name>
73 <string>All</string>
74 </property>
75 </item>
76 <property stdset="1">
77 <name>name</name>
78 <cstring>profileCombo</cstring>
79 </property>
80 </widget>
81 <spacer>
82 <property>
83 <name>name</name>
84 <cstring>Spacer20</cstring>
85 </property>
86 <property stdset="1">
87 <name>orientation</name>
88 <enum>Horizontal</enum>
89 </property>
90 <property stdset="1">
91 <name>sizeType</name>
92 <enum>Expanding</enum>
93 </property>
94 <property>
95 <name>sizeHint</name>
96 <size>
97 <width>20</width>
98 <height>20</height>
99 </size>
100 </property>
101 </spacer>
102 </hbox>
103 </widget>
104 <widget>
105 <class>QLayoutWidget</class>
106 <property stdset="1">
107 <name>name</name>
108 <cstring>Layout9</cstring> 46 <cstring>Layout9</cstring>
109 </property> 47 </property>
110 <hbox> 48 <hbox>
111 <property stdset="1"> 49 <property stdset="1">
112 <name>margin</name> 50 <name>margin</name>
113 <number>0</number> 51 <number>0</number>
114 </property> 52 </property>
115 <property stdset="1"> 53 <property stdset="1">
116 <name>spacing</name> 54 <name>spacing</name>
117 <number>6</number> 55 <number>6</number>
118 </property> 56 </property>
119 <widget> 57 <widget>
120 <class>QCheckBox</class> 58 <class>QCheckBox</class>
121 <property stdset="1"> 59 <property stdset="1">
122 <name>name</name> 60 <name>name</name>
123 <cstring>dhcpCheckBox</cstring> 61 <cstring>dhcpCheckBox</cstring>
124 </property> 62 </property>
125 <property stdset="1"> 63 <property stdset="1">
126 <name>text</name> 64 <name>text</name>
127 <string>DHCP</string> 65 <string>DHCP</string>
128 </property> 66 </property>
129 <property stdset="1"> 67 <property stdset="1">
130 <name>checked</name> 68 <name>checked</name>
131 <bool>true</bool> 69 <bool>true</bool>
132 </property> 70 </property>
133 </widget> 71 </widget>
134 <widget> 72 <widget>
135 <class>QLabel</class> 73 <class>QLabel</class>
136 <property stdset="1"> 74 <property stdset="1">
137 <name>name</name> 75 <name>name</name>
138 <cstring>leaseHoursLabel</cstring> 76 <cstring>leaseHoursLabel</cstring>
139 </property> 77 </property>
140 <property stdset="1"> 78 <property stdset="1">
141 <name>text</name> 79 <name>text</name>
142 <string>Requested Lease</string> 80 <string>Requested Lease</string>
143 </property> 81 </property>
144 </widget> 82 </widget>
145 <widget> 83 <widget>
146 <class>QSpinBox</class> 84 <class>QSpinBox</class>
147 <property stdset="1"> 85 <property stdset="1">
148 <name>name</name> 86 <name>name</name>
149 <cstring>leaseTime</cstring> 87 <cstring>leaseTime</cstring>
150 </property> 88 </property>
151 <property stdset="1"> 89 <property stdset="1">
152 <name>suffix</name> 90 <name>suffix</name>
153 <string> hours</string> 91 <string> hours</string>
154 </property> 92 </property>
155 <property stdset="1"> 93 <property stdset="1">
156 <name>maxValue</name> 94 <name>maxValue</name>
157 <number>336</number> 95 <number>87600</number>
158 </property> 96 </property>
159 <property stdset="1"> 97 <property stdset="1">
160 <name>minValue</name> 98 <name>minValue</name>
161 <number>1</number> 99 <number>1</number>
162 </property> 100 </property>
163 <property stdset="1"> 101 <property stdset="1">
164 <name>value</name> 102 <name>value</name>
165 <number>24</number> 103 <number>168</number>
166 </property> 104 </property>
167 </widget> 105 </widget>
168 </hbox> 106 </hbox>
169 </widget> 107 </widget>
170 <widget> 108 <widget>
171 <class>QGroupBox</class> 109 <class>QGroupBox</class>
172 <property stdset="1"> 110 <property stdset="1">
173 <name>name</name> 111 <name>name</name>
174 <cstring>staticGroupBox</cstring> 112 <cstring>staticGroupBox</cstring>
175 </property> 113 </property>
176 <property stdset="1"> 114 <property stdset="1">
177 <name>enabled</name> 115 <name>enabled</name>
178 <bool>false</bool> 116 <bool>false</bool>
179 </property> 117 </property>
180 <property stdset="1"> 118 <property stdset="1">
181 <name>frameShape</name> 119 <name>frameShape</name>
182 <enum>Box</enum> 120 <enum>Box</enum>
183 </property> 121 </property>
184 <property stdset="1"> 122 <property stdset="1">
185 <name>frameShadow</name> 123 <name>frameShadow</name>
186 <enum>Sunken</enum> 124 <enum>Sunken</enum>
187 </property> 125 </property>
188 <property stdset="1"> 126 <property stdset="1">
189 <name>title</name> 127 <name>title</name>
190 <string>Static Ip Configuration</string> 128 <string>Static Ip Configuration</string>
191 </property> 129 </property>
192 <grid> 130 <grid>
193 <property stdset="1"> 131 <property stdset="1">
194 <name>margin</name> 132 <name>margin</name>
195 <number>11</number> 133 <number>11</number>
196 </property> 134 </property>
197 <property stdset="1"> 135 <property stdset="1">
198 <name>spacing</name> 136 <name>spacing</name>
199 <number>6</number> 137 <number>6</number>
200 </property> 138 </property>
201 <widget row="3" column="1" >
202 <class>QLineEdit</class>
203 <property stdset="1">
204 <name>name</name>
205 <cstring>firstDNSLineEdit</cstring>
206 </property>
207 </widget>
208 <widget row="1" column="0" > 139 <widget row="1" column="0" >
209 <class>QLabel</class> 140 <class>QLabel</class>
210 <property stdset="1"> 141 <property stdset="1">
211 <name>name</name> 142 <name>name</name>
212 <cstring>TextLabel5</cstring> 143 <cstring>TextLabel5</cstring>
213 </property> 144 </property>
214 <property stdset="1"> 145 <property stdset="1">
215 <name>text</name> 146 <name>text</name>
216 <string>Subnet Mask</string> 147 <string>Subnet Mask</string>
217 </property> 148 </property>
218 </widget> 149 </widget>
219 <widget row="2" column="1" > 150 <widget row="2" column="1" >
220 <class>QLineEdit</class> 151 <class>QLineEdit</class>
221 <property stdset="1"> 152 <property stdset="1">
222 <name>name</name> 153 <name>name</name>
223 <cstring>gatewayEdit</cstring> 154 <cstring>gatewayEdit</cstring>
224 </property> 155 </property>
225 </widget> 156 </widget>
226 <widget row="1" column="1" > 157 <widget row="1" column="1" >
227 <class>QLineEdit</class> 158 <class>QLineEdit</class>
228 <property stdset="1"> 159 <property stdset="1">
229 <name>name</name> 160 <name>name</name>
230 <cstring>subnetMaskEdit</cstring> 161 <cstring>subnetMaskEdit</cstring>
231 </property> 162 </property>
232 </widget> 163 </widget>
233 <widget row="0" column="1" > 164 <widget row="0" column="1" >
234 <class>QLineEdit</class> 165 <class>QLineEdit</class>
235 <property stdset="1"> 166 <property stdset="1">
236 <name>name</name> 167 <name>name</name>
237 <cstring>ipAddressEdit</cstring> 168 <cstring>ipAddressEdit</cstring>
238 </property> 169 </property>
239 </widget> 170 </widget>
240 <widget row="3" column="0" > 171 <widget row="3" column="0" >
241 <class>QLabel</class> 172 <class>QLabel</class>
242 <property stdset="1"> 173 <property stdset="1">
243 <name>name</name> 174 <name>name</name>
244 <cstring>TextLabel2</cstring> 175 <cstring>TextLabel2</cstring>
245 </property> 176 </property>
246 <property stdset="1"> 177 <property stdset="1">
247 <name>text</name> 178 <name>text</name>
248 <string>First DNS</string> 179 <string>First DNS</string>
249 </property> 180 </property>
250 </widget> 181 </widget>
251 <widget row="4" column="1" >
252 <class>QLineEdit</class>
253 <property stdset="1">
254 <name>name</name>
255 <cstring>secondDNSLineEdit</cstring>
256 </property>
257 </widget>
258 <widget row="0" column="0" > 182 <widget row="0" column="0" >
259 <class>QLabel</class> 183 <class>QLabel</class>
260 <property stdset="1"> 184 <property stdset="1">
261 <name>name</name> 185 <name>name</name>
262 <cstring>TextLabel4</cstring> 186 <cstring>TextLabel4</cstring>
263 </property> 187 </property>
264 <property stdset="1"> 188 <property stdset="1">
265 <name>text</name> 189 <name>text</name>
266 <string>IP Address</string> 190 <string>IP Address</string>
267 </property> 191 </property>
268 </widget> 192 </widget>
269 <widget row="2" column="0" > 193 <widget row="2" column="0" >
270 <class>QLabel</class> 194 <class>QLabel</class>
271 <property stdset="1"> 195 <property stdset="1">
272 <name>name</name> 196 <name>name</name>
273 <cstring>TextLabel1_2</cstring> 197 <cstring>TextLabel1_2</cstring>
274 </property> 198 </property>
275 <property stdset="1"> 199 <property stdset="1">
276 <name>text</name> 200 <name>text</name>
277 <string>Gateway</string> 201 <string>Gateway</string>
278 </property> 202 </property>
279 </widget> 203 </widget>
280 <widget row="4" column="0" > 204 <widget row="4" column="0" >
281 <class>QLabel</class> 205 <class>QLabel</class>
282 <property stdset="1"> 206 <property stdset="1">
283 <name>name</name> 207 <name>name</name>
284 <cstring>TextLabel3</cstring> 208 <cstring>TextLabel3</cstring>
285 </property> 209 </property>
286 <property stdset="1"> 210 <property stdset="1">
287 <name>text</name> 211 <name>text</name>
288 <string>Second DNS</string> 212 <string>Second DNS</string>
289 </property> 213 </property>
290 </widget> 214 </widget>
215 <widget row="3" column="1" >
216 <class>QLineEdit</class>
217 <property stdset="1">
218 <name>name</name>
219 <cstring>firstDNSLineEdit</cstring>
220 </property>
221 </widget>
222 <widget row="4" column="1" >
223 <class>QLineEdit</class>
224 <property stdset="1">
225 <name>name</name>
226 <cstring>secondDNSLineEdit</cstring>
227 </property>
228 </widget>
291 </grid> 229 </grid>
292 </widget> 230 </widget>
293 <spacer> 231 <spacer>
294 <property> 232 <property>
295 <name>name</name> 233 <name>name</name>
296 <cstring>Spacer9</cstring> 234 <cstring>Spacer9</cstring>
297 </property> 235 </property>
298 <property stdset="1"> 236 <property stdset="1">
299 <name>orientation</name> 237 <name>orientation</name>
300 <enum>Vertical</enum> 238 <enum>Vertical</enum>
301 </property> 239 </property>
302 <property stdset="1"> 240 <property stdset="1">
303 <name>sizeType</name> 241 <name>sizeType</name>
304 <enum>Expanding</enum> 242 <enum>Expanding</enum>
305 </property> 243 </property>
306 <property> 244 <property>
307 <name>sizeHint</name> 245 <name>sizeHint</name>
308 <size> 246 <size>
309 <width>20</width> 247 <width>20</width>
310 <height>20</height> 248 <height>20</height>
311 </size> 249 </size>
312 </property> 250 </property>
313 </spacer> 251 </spacer>
314 </vbox> 252 </vbox>
315</widget> 253</widget>
316<connections> 254<connections>
317 <connection> 255 <connection>
318 <sender>dhcpCheckBox</sender> 256 <sender>dhcpCheckBox</sender>
319 <signal>toggled(bool)</signal> 257 <signal>toggled(bool)</signal>
320 <receiver>leaseHoursLabel</receiver> 258 <receiver>leaseHoursLabel</receiver>
321 <slot>setEnabled(bool)</slot> 259 <slot>setEnabled(bool)</slot>
322 </connection> 260 </connection>
323 <connection> 261 <connection>
324 <sender>dhcpCheckBox</sender> 262 <sender>dhcpCheckBox</sender>
325 <signal>toggled(bool)</signal> 263 <signal>toggled(bool)</signal>
326 <receiver>leaseTime</receiver> 264 <receiver>leaseTime</receiver>
327 <slot>setEnabled(bool)</slot> 265 <slot>setEnabled(bool)</slot>
328 </connection> 266 </connection>
329 <connection> 267 <connection>
330 <sender>dhcpCheckBox</sender> 268 <sender>dhcpCheckBox</sender>
331 <signal>toggled(bool)</signal> 269 <signal>toggled(bool)</signal>
332 <receiver>staticGroupBox</receiver> 270 <receiver>staticGroupBox</receiver>
333 <slot>setDisabled(bool)</slot> 271 <slot>setDisabled(bool)</slot>
334 </connection> 272 </connection>
335</connections> 273</connections>
336<tabstops> 274<tabstops>
337 <tabstop>autoStart</tabstop> 275 <tabstop>autoStart</tabstop>
338 <tabstop>profileCombo</tabstop>
339 <tabstop>dhcpCheckBox</tabstop> 276 <tabstop>dhcpCheckBox</tabstop>
340 <tabstop>leaseTime</tabstop> 277 <tabstop>leaseTime</tabstop>
341 <tabstop>ipAddressEdit</tabstop> 278 <tabstop>ipAddressEdit</tabstop>
342 <tabstop>subnetMaskEdit</tabstop> 279 <tabstop>subnetMaskEdit</tabstop>
343 <tabstop>gatewayEdit</tabstop> 280 <tabstop>gatewayEdit</tabstop>
344 <tabstop>firstDNSLineEdit</tabstop> 281 <tabstop>firstDNSLineEdit</tabstop>
345 <tabstop>secondDNSLineEdit</tabstop> 282 <tabstop>secondDNSLineEdit</tabstop>
346</tabstops> 283</tabstops>
347</UI> 284</UI>
diff --git a/noncore/net/networksetup/interfacesetupimp.cpp b/noncore/net/networksetup/interfacesetupimp.cpp
index 951aeee..c16d821 100644
--- a/noncore/net/networksetup/interfacesetupimp.cpp
+++ b/noncore/net/networksetup/interfacesetupimp.cpp
@@ -1,146 +1,143 @@
1#include "interfacesetupimp.h" 1#include "interfacesetupimp.h"
2#include "interface.h" 2#include "interface.h"
3#include "interfaces.h" 3#include "interfaces.h"
4 4
5#include <qcombobox.h> 5#include <qcombobox.h>
6#include <qcheckbox.h> 6#include <qcheckbox.h>
7#include <qlineedit.h> 7#include <qlineedit.h>
8#include <qspinbox.h> 8#include <qspinbox.h>
9#include <qgroupbox.h> 9#include <qgroupbox.h>
10#include <qlabel.h> 10#include <qlabel.h>
11 11
12#include <qmessagebox.h> 12#include <qmessagebox.h>
13 13
14#include <assert.h> 14#include <assert.h>
15 15
16#define DNSSCRIPT "interfacednsscript" 16#define DNSSCRIPT "interfacednsscript"
17 17
18/** 18/**
19 * Constuctor. Set up the connection and load the first profile. 19 * Constuctor. Set up the connection and load the first profile.
20 */ 20 */
21InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : InterfaceSetup(parent, name, modal, fl){ 21InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : InterfaceSetup(parent, name, modal, fl){
22 assert(i); 22 assert(i);
23 interface = i; 23 interface = i;
24 interfaces = new Interfaces(); 24 interfaces = new Interfaces();
25 changeProfile(profileCombo->currentText());
26 bool error = false; 25 bool error = false;
27 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ 26 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
28 staticGroupBox->hide(); 27 staticGroupBox->hide();
29 dhcpCheckBox->hide(); 28 dhcpCheckBox->hide();
30 leaseTime->hide(); 29 leaseTime->hide();
31 leaseHoursLabel->hide(); 30 leaseHoursLabel->hide();
32 } 31 }
33 connect(profileCombo, SIGNAL(highlighted(const QString &)), this, SLOT(changeProfile(const QString &)));
34} 32}
35 33
36/** 34/**
37 * Save the current settings, then write out the interfaces file and close. 35 * Save the current settings, then write out the interfaces file and close.
38 */ 36 */
39void InterfaceSetupImp::accept(){ 37void InterfaceSetupImp::accept(){
40 if(!saveSettings()) 38 if(!saveSettings())
41 return; 39 return;
42 interfaces->write(); 40 interfaces->write();
43 close(true); 41 close(true);
44} 42}
45 43
46/** 44/**
47 * Save the settings for the current Interface. 45 * Save the settings for the current Interface.
48 * @return bool true if successfull, false otherwise 46 * @return bool true if successfull, false otherwise
49 */ 47 */
50bool InterfaceSetupImp::saveSettings(){ 48bool InterfaceSetupImp::saveSettings(){
51 // eh can't really do anything about it other then return. :-D 49 // eh can't really do anything about it other then return. :-D
52 if(!interfaces->isInterfaceSet()) 50 if(!interfaces->isInterfaceSet())
53 return true; 51 return true;
54 52
55 bool error = false; 53 bool error = false;
56 // Loopback case 54 // Loopback case
57 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ 55 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
58 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); 56 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
59 return true; 57 return true;
60 } 58 }
61 59
62 if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty() || firstDNSLineEdit->text().isEmpty())){ 60 if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty() || firstDNSLineEdit->text().isEmpty())){
63 QMessageBox::information(this, "Empy Fields.", "Please fill in address, subnet,\n gateway and the first dns entries.", "Ok"); 61 QMessageBox::information(this, "Empy Fields.", "Please fill in address, subnet,\n gateway and the first dns entries.", "Ok");
64 return false; 62 return false;
65 } 63 }
66 interfaces->removeAllInterfaceOptions(); 64 interfaces->removeAllInterfaceOptions();
67 65
68 // DHCP 66 // DHCP
69 if(dhcpCheckBox->isChecked()){ 67 if(dhcpCheckBox->isChecked()){
70 interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); 68 interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP);
71 interfaces->setInterfaceOption("leasehours", QString("%1").arg(leaseTime->value())); 69 interfaces->setInterfaceOption("leasehours", QString("%1").arg(leaseTime->value()));
72 interfaces->setInterfaceOption("leasetime", QString("%1").arg(leaseTime->value()*60*60)); 70 interfaces->setInterfaceOption("leasetime", QString("%1").arg(leaseTime->value()*60*60));
73 } 71 }
74 else{ 72 else{
75 interfaces->setInterfaceMethod("static"); 73 interfaces->setInterfaceMethod("static");
76 interfaces->setInterfaceOption("address", ipAddressEdit->text()); 74 interfaces->setInterfaceOption("address", ipAddressEdit->text());
77 interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); 75 interfaces->setInterfaceOption("netmask", subnetMaskEdit->text());
78 interfaces->setInterfaceOption("gateway", gatewayEdit->text()); 76 interfaces->setInterfaceOption("gateway", gatewayEdit->text());
79 QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); 77 QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text();
80 interfaces->setInterfaceOption("up "DNSSCRIPT" add ", dns); 78 interfaces->setInterfaceOption("up "DNSSCRIPT" add ", dns);
81 interfaces->setInterfaceOption("down "DNSSCRIPT" remove ", dns); 79 interfaces->setInterfaceOption("down "DNSSCRIPT" remove ", dns);
82 } 80 }
83 81
84 // IP Information 82 // IP Information
85 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); 83 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
86 return true; 84 return true;
87} 85}
88 86
89/** 87/**
90 * The Profile has changed. 88 * The Profile has changed.
91 * @profile the new profile. 89 * @profile the new profile.
92 */ 90 */
93void InterfaceSetupImp::changeProfile(const QString &profile){ 91void InterfaceSetupImp::setProfile(const QString &profile){
94 QString newInterfaceName; 92 QString newInterfaceName = interface->getInterfaceName() + profile;
95 if(profile.lower() == "all")
96 newInterfaceName = interface->getInterfaceName();
97 else
98 newInterfaceName = interface->getInterfaceName() + "_" + profile;
99 if(newInterfaceName == currentInterfaceName)
100 return;
101 else{
102 saveSettings();
103 currentInterfaceName = newInterfaceName;
104 }
105 bool error = interfaces->setInterface(currentInterfaceName);
106 93
107 // See if we have to make a interface. 94 // See if we have to make a interface.
108 if(error){ 95 if(!interfaces->setInterface(newInterfaceName)){
109 qDebug("InterfaceSetupImp: Adding a new interface from profile change."); 96 interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP);
110 interfaces->addInterface(currentInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP); 97 if(!interfaces->setInterface(newInterfaceName)){
111 error = interfaces->setInterface(currentInterfaceName);
112 if(error){
113 qDebug("InterfaceSetupImp: Added interface, but still can't set."); 98 qDebug("InterfaceSetupImp: Added interface, but still can't set.");
114 return; 99 return;
115 } 100 }
101 // Add making for this new interface if need too
102 if(profile != ""){
103 if(!interfaces->setMapping(interface->getInterfaceName())){
104 interfaces->addMapping(interface->getInterfaceName());
105 if(!interfaces->setMapping(interface->getInterfaceName())){
106 qDebug("InterfaceSetupImp: Added Mapping, but still can't set.");
107 return;
108 }
109 }
110 interfaces->setScript("getprofile.sh");
111 interfaces->setMap("map", newInterfaceName);
112 }
116 } 113 }
117 114
118 //qDebug( currentInterfaceName.latin1() );
119 // We must have a valid interface to get this far so read some settings. 115 // We must have a valid interface to get this far so read some settings.
120 116
121 // DHCP 117 // DHCP
118 bool error = false;
122 if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP) 119 if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP)
123 dhcpCheckBox->setChecked(true); 120 dhcpCheckBox->setChecked(true);
124 else 121 else
125 dhcpCheckBox->setChecked(false); 122 dhcpCheckBox->setChecked(false);
126 leaseTime->setValue(interfaces->getInterfaceOption("leasehours", error).toInt()); 123 leaseTime->setValue(interfaces->getInterfaceOption("leasehours", error).toInt());
127 if(error) 124 if(error)
128 leaseTime->setValue(interfaces->getInterfaceOption("leasetime", error).toInt()/60/60); 125 leaseTime->setValue(interfaces->getInterfaceOption("leasetime", error).toInt()/60/60);
129 if(error) 126 if(error)
130 leaseTime->setValue(24); 127 leaseTime->setValue(24);
131 128
132 // IP Information 129 // IP Information
133 autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName())); 130 autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName()));
134 QString dns = interfaces->getInterfaceOption("up interfacednsscript add", error); 131 QString dns = interfaces->getInterfaceOption("up interfacednsscript add", error);
135 if(dns.contains(" ")){ 132 if(dns.contains(" ")){
136 firstDNSLineEdit->setText(dns.mid(0, dns.find(" "))); 133 firstDNSLineEdit->setText(dns.mid(0, dns.find(" ")));
137 secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length())); 134 secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length()));
138 } 135 }
139 ipAddressEdit->setText(interfaces->getInterfaceOption("address", error)); 136 ipAddressEdit->setText(interfaces->getInterfaceOption("address", error));
140 subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error)); 137 subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error));
141 gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error)); 138 gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error));
142} 139}
143 140
144 141
145// interfacesetup.cpp 142// interfacesetup.cpp
146 143
diff --git a/noncore/net/networksetup/interfacesetupimp.h b/noncore/net/networksetup/interfacesetupimp.h
index 6c34718..7df0d46 100644
--- a/noncore/net/networksetup/interfacesetupimp.h
+++ b/noncore/net/networksetup/interfacesetupimp.h
@@ -1,30 +1,31 @@
1#ifndef INTERFACESETUPIMP_H 1#ifndef INTERFACESETUPIMP_H
2#define INTERFACESETUPIMP_H 2#define INTERFACESETUPIMP_H
3 3
4#include "interfacesetup.h" 4#include "interfacesetup.h"
5 5
6class Interface; 6class Interface;
7class Interfaces; 7class Interfaces;
8 8
9class InterfaceSetupImp : public InterfaceSetup { 9class InterfaceSetupImp : public InterfaceSetup {
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 InterfaceSetupImp( QWidget* parent = 0, const char* name = 0, Interface *i=0, bool modal = FALSE, WFlags fl = 0); 13 InterfaceSetupImp( QWidget* parent = 0, const char* name = 0, Interface *i=0, bool modal = FALSE, WFlags fl = 0);
14 14
15protected slots: 15protected slots:
16 void accept(); 16 void accept();
17 void changeProfile(const QString &profile); 17
18public slots:
19 void setProfile(const QString &profile);
18 20
19private: 21private:
20 bool saveSettings(); 22 bool saveSettings();
21 Interfaces *interfaces; 23 Interfaces *interfaces;
22 Interface *interface; 24 Interface *interface;
23 QString currentInterfaceName;
24 25
25}; 26};
26 27
27#endif 28#endif
28 29
29// interfacesetupimp.h 30// interfacesetupimp.h
30 31
diff --git a/noncore/net/networksetup/mainwindow.ui b/noncore/net/networksetup/mainwindow.ui
index bea999b..3d30994 100644
--- a/noncore/net/networksetup/mainwindow.ui
+++ b/noncore/net/networksetup/mainwindow.ui
@@ -1,233 +1,247 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>MainWindow</class> 2<class>MainWindow</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>MainWindow</cstring> 7 <cstring>MainWindow</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>230</width> 14 <width>240</width>
15 <height>289</height> 15 <height>289</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Network Setup</string> 20 <string>Network Setup</string>
21 </property> 21 </property>
22 <vbox> 22 <vbox>
23 <property stdset="1"> 23 <property stdset="1">
24 <name>margin</name> 24 <name>margin</name>
25 <number>0</number> 25 <number>0</number>
26 </property> 26 </property>
27 <property stdset="1"> 27 <property stdset="1">
28 <name>spacing</name> 28 <name>spacing</name>
29 <number>6</number> 29 <number>6</number>
30 </property> 30 </property>
31 <widget> 31 <widget>
32 <class>QTabWidget</class> 32 <class>QTabWidget</class>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>name</name> 34 <name>name</name>
35 <cstring>tabWidget</cstring> 35 <cstring>tabWidget</cstring>
36 </property> 36 </property>
37 <property> 37 <property>
38 <name>layoutMargin</name> 38 <name>layoutMargin</name>
39 </property> 39 </property>
40 <widget> 40 <widget>
41 <class>QWidget</class> 41 <class>QWidget</class>
42 <property stdset="1"> 42 <property stdset="1">
43 <name>name</name> 43 <name>name</name>
44 <cstring>Widget3</cstring> 44 <cstring>Widget3</cstring>
45 </property> 45 </property>
46 <attribute> 46 <attribute>
47 <name>title</name> 47 <name>title</name>
48 <string>Connections</string> 48 <string>Connections</string>
49 </attribute> 49 </attribute>
50 <vbox> 50 <vbox>
51 <property stdset="1"> 51 <property stdset="1">
52 <name>margin</name> 52 <name>margin</name>
53 <number>0</number> 53 <number>0</number>
54 </property> 54 </property>
55 <property stdset="1"> 55 <property stdset="1">
56 <name>spacing</name> 56 <name>spacing</name>
57 <number>6</number> 57 <number>6</number>
58 </property> 58 </property>
59 <widget> 59 <widget>
60 <class>QListView</class> 60 <class>QListView</class>
61 <column> 61 <column>
62 <property> 62 <property>
63 <name>text</name> 63 <name>text</name>
64 <string>i</string> 64 <string>s</string>
65 </property> 65 </property>
66 <property> 66 <property>
67 <name>clickable</name> 67 <name>clickable</name>
68 <bool>true</bool> 68 <bool>true</bool>
69 </property> 69 </property>
70 <property> 70 <property>
71 <name>resizeable</name> 71 <name>resizeable</name>
72 <bool>true</bool> 72 <bool>true</bool>
73 </property> 73 </property>
74 </column> 74 </column>
75 <column> 75 <column>
76 <property> 76 <property>
77 <name>text</name> 77 <name>text</name>
78 <string>t</string> 78 <string>t</string>
79 </property> 79 </property>
80 <property> 80 <property>
81 <name>clickable</name> 81 <name>clickable</name>
82 <bool>true</bool> 82 <bool>true</bool>
83 </property> 83 </property>
84 <property> 84 <property>
85 <name>resizeable</name> 85 <name>resizeable</name>
86 <bool>true</bool> 86 <bool>true</bool>
87 </property> 87 </property>
88 </column> 88 </column>
89 <column> 89 <column>
90 <property> 90 <property>
91 <name>text</name> 91 <name>text</name>
92 <string>Name</string> 92 <string>Name</string>
93 </property> 93 </property>
94 <property> 94 <property>
95 <name>clickable</name> 95 <name>clickable</name>
96 <bool>true</bool> 96 <bool>true</bool>
97 </property> 97 </property>
98 <property> 98 <property>
99 <name>resizeable</name> 99 <name>resizeable</name>
100 <bool>true</bool> 100 <bool>true</bool>
101 </property> 101 </property>
102 </column> 102 </column>
103 <column> 103 <column>
104 <property> 104 <property>
105 <name>text</name> 105 <name>text</name>
106 <string>in</string>
107 </property>
108 <property>
109 <name>clickable</name>
110 <bool>true</bool>
111 </property>
112 <property>
113 <name>resizeable</name>
114 <bool>true</bool>
115 </property>
116 </column>
117 <column>
118 <property>
119 <name>text</name>
106 <string>IP</string> 120 <string>IP</string>
107 </property> 121 </property>
108 <property> 122 <property>
109 <name>clickable</name> 123 <name>clickable</name>
110 <bool>true</bool> 124 <bool>true</bool>
111 </property> 125 </property>
112 <property> 126 <property>
113 <name>resizeable</name> 127 <name>resizeable</name>
114 <bool>true</bool> 128 <bool>true</bool>
115 </property> 129 </property>
116 </column> 130 </column>
117 <property stdset="1"> 131 <property stdset="1">
118 <name>name</name> 132 <name>name</name>
119 <cstring>connectionList</cstring> 133 <cstring>connectionList</cstring>
120 </property> 134 </property>
121 <property stdset="1"> 135 <property stdset="1">
122 <name>allColumnsShowFocus</name> 136 <name>allColumnsShowFocus</name>
123 <bool>true</bool> 137 <bool>true</bool>
124 </property> 138 </property>
125 </widget> 139 </widget>
126 <widget> 140 <widget>
127 <class>QLayoutWidget</class> 141 <class>QLayoutWidget</class>
128 <property stdset="1"> 142 <property stdset="1">
129 <name>name</name> 143 <name>name</name>
130 <cstring>Layout2</cstring> 144 <cstring>Layout2</cstring>
131 </property> 145 </property>
132 <property> 146 <property>
133 <name>layoutMargin</name> 147 <name>layoutMargin</name>
134 </property> 148 </property>
135 <grid> 149 <grid>
136 <property stdset="1"> 150 <property stdset="1">
137 <name>margin</name> 151 <name>margin</name>
138 <number>5</number> 152 <number>5</number>
139 </property> 153 </property>
140 <property stdset="1"> 154 <property stdset="1">
141 <name>spacing</name> 155 <name>spacing</name>
142 <number>6</number> 156 <number>6</number>
143 </property> 157 </property>
144 <widget row="1" column="0" > 158 <widget row="1" column="0" >
145 <class>QPushButton</class> 159 <class>QPushButton</class>
146 <property stdset="1"> 160 <property stdset="1">
147 <name>name</name> 161 <name>name</name>
148 <cstring>addConnectionButton</cstring> 162 <cstring>addConnectionButton</cstring>
149 </property> 163 </property>
150 <property stdset="1"> 164 <property stdset="1">
151 <name>text</name> 165 <name>text</name>
152 <string>&amp;Add</string> 166 <string>&amp;Add</string>
153 </property> 167 </property>
154 </widget> 168 </widget>
155 <widget row="0" column="0" > 169 <widget row="0" column="0" >
156 <class>QPushButton</class> 170 <class>QPushButton</class>
157 <property stdset="1"> 171 <property stdset="1">
158 <name>name</name> 172 <name>name</name>
159 <cstring>informationConnectionButton</cstring> 173 <cstring>informationConnectionButton</cstring>
160 </property> 174 </property>
161 <property stdset="1"> 175 <property stdset="1">
162 <name>text</name> 176 <name>text</name>
163 <string>&amp;Information</string> 177 <string>&amp;Information</string>
164 </property> 178 </property>
165 </widget> 179 </widget>
166 <widget row="0" column="1" > 180 <widget row="0" column="1" >
167 <class>QPushButton</class> 181 <class>QPushButton</class>
168 <property stdset="1"> 182 <property stdset="1">
169 <name>name</name> 183 <name>name</name>
170 <cstring>configureConnectionButton</cstring> 184 <cstring>configureConnectionButton</cstring>
171 </property> 185 </property>
172 <property stdset="1"> 186 <property stdset="1">
173 <name>text</name> 187 <name>text</name>
174 <string>&amp;Configure</string> 188 <string>&amp;Configure</string>
175 </property> 189 </property>
176 </widget> 190 </widget>
177 <widget row="1" column="1" > 191 <widget row="1" column="1" >
178 <class>QPushButton</class> 192 <class>QPushButton</class>
179 <property stdset="1"> 193 <property stdset="1">
180 <name>name</name> 194 <name>name</name>
181 <cstring>removeConnectionButton</cstring> 195 <cstring>removeConnectionButton</cstring>
182 </property> 196 </property>
183 <property stdset="1"> 197 <property stdset="1">
184 <name>text</name> 198 <name>text</name>
185 <string>&amp;Remove</string> 199 <string>&amp;Remove</string>
186 </property> 200 </property>
187 </widget> 201 </widget>
188 </grid> 202 </grid>
189 </widget> 203 </widget>
190 </vbox> 204 </vbox>
191 </widget> 205 </widget>
192 <widget> 206 <widget>
193 <class>QWidget</class> 207 <class>QWidget</class>
194 <property stdset="1"> 208 <property stdset="1">
195 <name>name</name> 209 <name>name</name>
196 <cstring>tab</cstring> 210 <cstring>tab</cstring>
197 </property> 211 </property>
198 <attribute> 212 <attribute>
199 <name>title</name> 213 <name>title</name>
200 <string>Profiles</string> 214 <string>Profiles</string>
201 </attribute> 215 </attribute>
202 <grid> 216 <grid>
203 <property stdset="1"> 217 <property stdset="1">
204 <name>margin</name> 218 <name>margin</name>
205 <number>11</number> 219 <number>11</number>
206 </property> 220 </property>
207 <property stdset="1"> 221 <property stdset="1">
208 <name>spacing</name> 222 <name>spacing</name>
209 <number>6</number> 223 <number>6</number>
210 </property> 224 </property>
211 <spacer row="7" column="2" > 225 <spacer row="7" column="2" >
212 <property> 226 <property>
213 <name>name</name> 227 <name>name</name>
214 <cstring>Spacer16</cstring> 228 <cstring>Spacer16</cstring>
215 </property> 229 </property>
216 <property stdset="1"> 230 <property stdset="1">
217 <name>orientation</name> 231 <name>orientation</name>
218 <enum>Vertical</enum> 232 <enum>Vertical</enum>
219 </property> 233 </property>
220 <property stdset="1"> 234 <property stdset="1">
221 <name>sizeType</name> 235 <name>sizeType</name>
222 <enum>Expanding</enum> 236 <enum>Expanding</enum>
223 </property> 237 </property>
224 <property> 238 <property>
225 <name>sizeHint</name> 239 <name>sizeHint</name>
226 <size> 240 <size>
227 <width>20</width> 241 <width>20</width>
228 <height>20</height> 242 <height>20</height>
229 </size> 243 </size>
230 </property> 244 </property>
231 </spacer> 245 </spacer>
232 <widget row="0" column="1" > 246 <widget row="0" column="1" >
233 <class>QLabel</class> 247 <class>QLabel</class>
diff --git a/noncore/net/networksetup/mainwindowimp.cpp b/noncore/net/networksetup/mainwindowimp.cpp
index a446d29..3c0af6a 100644
--- a/noncore/net/networksetup/mainwindowimp.cpp
+++ b/noncore/net/networksetup/mainwindowimp.cpp
@@ -1,462 +1,525 @@
1#include "mainwindowimp.h" 1#include "mainwindowimp.h"
2#include "addconnectionimp.h" 2#include "addconnectionimp.h"
3#include "interfaceinformationimp.h" 3#include "interfaceinformationimp.h"
4#include "interfacesetupimp.h" 4#include "interfacesetupimp.h"
5#include "interfaces.h" 5#include "interfaces.h"
6 6
7#include "module.h" 7#include "module.h"
8 8
9#include "kprocess.h" 9#include "kprocess.h"
10 10
11#include <qpushbutton.h> 11#include <qpushbutton.h>
12#include <qtabwidget.h> 12#include <qtabwidget.h>
13#include <qlistbox.h> 13#include <qlistbox.h>
14#include <qlineedit.h> 14#include <qlineedit.h>
15#include <qlistview.h> 15#include <qlistview.h>
16#include <qheader.h> 16#include <qheader.h>
17#include <qlabel.h> 17#include <qlabel.h>
18 18
19#include <qmainwindow.h> 19#include <qmainwindow.h>
20#include <qmessagebox.h> 20#include <qmessagebox.h>
21 21
22#include <qpe/config.h> 22#include <qpe/config.h>
23#include <qpe/qlibrary.h> 23#include <qpe/qlibrary.h>
24#include <qpe/resource.h> 24#include <qpe/resource.h>
25#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26 26
27#include <qlist.h> 27#include <qlist.h>
28#include <qdir.h> 28#include <qdir.h>
29#include <qfile.h> 29#include <qfile.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31 31
32#define TEMP_ALL "/tmp/ifconfig-a" 32#define TEMP_ALL "/tmp/ifconfig-a"
33#define TEMP_UP "/tmp/ifconfig" 33#define TEMP_UP "/tmp/ifconfig"
34 34
35#define SCHEME "/var/lib/pcmcia/scheme"
35MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false){ 36MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false){
36 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); 37 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
37 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); 38 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
38 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); 39 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
39 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); 40 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
40 41
41 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); 42 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
42 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); 43 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
43 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile())); 44 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile()));
44 45
45 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&))); 46 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&)));
46 // Load connections. 47 // Load connections.
47 loadModules(QPEApplication::qpeDir() + "/plugins/networksetup"); 48 loadModules(QPEApplication::qpeDir() + "/plugins/networksetup");
48 getInterfaceList(); 49 getInterfaceList();
49 connectionList->header()->hide(); 50 connectionList->header()->hide();
50 51
51 52
52 Config cfg("NetworkSetup"); 53 Config cfg("NetworkSetup");
53 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); 54 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All"));
54 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) 55 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
55 profilesList->insertItem((*it)); 56 profilesList->insertItem((*it));
57 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All"));
56 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); 58 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false);
59
60 QFile file(SCHEME);
61 if ( file.open(IO_ReadOnly) ) { // file opened successfully
62 QTextStream stream( &file ); // use a text stream
63 while ( !stream.eof() ) { // until end of file...
64 QString line = stream.readLine(); // line of text excluding '\n'
65 if(line.contains("SCHEME")){
66 line = line.mid(7, line.length());
67 currentProfileLabel->setText(line);
68 break;
69 }
70 }
71 file.close();
72 }
57} 73}
58 74
59/** 75/**
60 * Deconstructor. Save profiles. Delete loaded libraries. 76 * Deconstructor. Save profiles. Delete loaded libraries.
61 */ 77 */
62MainWindowImp::~MainWindowImp(){ 78MainWindowImp::~MainWindowImp(){
63 // Save profiles. 79 // Save profiles.
64 if(profiles.count() > 1){ 80 Config cfg("NetworkSetup");
65 Config cfg("NetworkSetup"); 81 cfg.setGroup("General");
66 cfg.setGroup("General"); 82 cfg.writeEntry("Profiles", profiles.join(" "));
67 cfg.writeEntry("Profiles", profiles.join(" ")); 83
68 }
69 // Delete Modules and Libraries 84 // Delete Modules and Libraries
70 QMap<Module*, QLibrary*>::Iterator it; 85 QMap<Module*, QLibrary*>::Iterator it;
71 for( it = libraries.begin(); it != libraries.end(); ++it ){ 86 for( it = libraries.begin(); it != libraries.end(); ++it ){
72 delete it.key(); 87 delete it.key();
73 delete it.data(); 88 delete it.data();
74 } 89 }
75} 90}
76 91
77/** 92/**
78 * Load all modules that are found in the path 93 * Load all modules that are found in the path
79 * @param path a directory that is scaned for any plugins that can be loaded 94 * @param path a directory that is scaned for any plugins that can be loaded
80 * and attempts to load them 95 * and attempts to load them
81 */ 96 */
82void MainWindowImp::loadModules(QString path){ 97void MainWindowImp::loadModules(QString path){
83 qDebug(path.latin1()); 98 qDebug(path.latin1());
84 QDir d(path); 99 QDir d(path);
85 if(!d.exists()) 100 if(!d.exists())
86 return; 101 return;
87 102
88 // Don't want sym links 103 // Don't want sym links
89 d.setFilter( QDir::Files | QDir::NoSymLinks ); 104 d.setFilter( QDir::Files | QDir::NoSymLinks );
90 const QFileInfoList *list = d.entryInfoList(); 105 const QFileInfoList *list = d.entryInfoList();
91 QFileInfoListIterator it( *list ); 106 QFileInfoListIterator it( *list );
92 QFileInfo *fi; 107 QFileInfo *fi;
93 while ( (fi=it.current()) ) { 108 while ( (fi=it.current()) ) {
94 if(fi->fileName().contains(".so")){ 109 if(fi->fileName().contains(".so")){
95 loadPlugin(path + "/" + fi->fileName()); 110 loadPlugin(path + "/" + fi->fileName());
96 } 111 }
97 ++it; 112 ++it;
98 } 113 }
99} 114}
100 115
101/** 116/**
102 * Attempt to load a function and resolve a function. 117 * Attempt to load a function and resolve a function.
103 * @param pluginFileName - the name of the file in which to attempt to load 118 * @param pluginFileName - the name of the file in which to attempt to load
104 * @param resolveString - function pointer to resolve 119 * @param resolveString - function pointer to resolve
105 * @return pointer to the function with name resolveString or NULL 120 * @return pointer to the function with name resolveString or NULL
106 */ 121 */
107Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){ 122Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){
108 qDebug(QString("MainWindowImp::loadPlugin: %1").arg(pluginFileName).latin1()); 123 qDebug(QString("MainWindowImp::loadPlugin: %1").arg(pluginFileName).latin1());
109 QLibrary *lib = new QLibrary(pluginFileName); 124 QLibrary *lib = new QLibrary(pluginFileName);
110 void *functionPointer = lib->resolve(resolveString); 125 void *functionPointer = lib->resolve(resolveString);
111 if( !functionPointer ){ 126 if( !functionPointer ){
112 qDebug(QString("MainWindowImp: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1()); 127 qDebug(QString("MainWindowImp: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1());
113 delete lib; 128 delete lib;
114 return NULL; 129 return NULL;
115 } 130 }
116 131
117 // Try to get an object. 132 // Try to get an object.
118 Module *object = ((Module* (*)()) functionPointer)(); 133 Module *object = ((Module* (*)()) functionPointer)();
119 if(object == NULL){ 134 if(object == NULL){
120 qDebug("MainWindowImp: Couldn't create object, but did load library!"); 135 qDebug("MainWindowImp: Couldn't create object, but did load library!");
121 delete lib; 136 delete lib;
122 return NULL; 137 return NULL;
123 } 138 }
124 139
125 // Store for deletion later 140 // Store for deletion later
126 libraries.insert(object, lib); 141 libraries.insert(object, lib);
127 return object; 142 return object;
128} 143}
129 144
130/** 145/**
131 * The Add button was clicked. Bring up the add dialog and if OK is hit 146 * The Add button was clicked. Bring up the add dialog and if OK is hit
132 * load the plugin and append it to the list 147 * load the plugin and append it to the list
133 */ 148 */
134void MainWindowImp::addClicked(){ 149void MainWindowImp::addClicked(){
135 QMap<Module*, QLibrary*>::Iterator it; 150 QMap<Module*, QLibrary*>::Iterator it;
136 QMap<QString, QString> list; 151 QMap<QString, QString> list;
137 QMap<QString, Module*> newInterfaceOwners; 152 QMap<QString, Module*> newInterfaceOwners;
138 list.insert("USB (PPP) / (ADD_TEST)", "A dialup connection over the USB port"); 153 list.insert("USB (PPP) / (ADD_TEST)", "A dialup connection over the USB port");
139 list.insert("IrDa (PPP) / (ADD_TEST)", "A dialup connection over the IdDa port"); 154 list.insert("IrDa (PPP) / (ADD_TEST)", "A dialup connection over the IdDa port");
140 for( it = libraries.begin(); it != libraries.end(); ++it ){ 155 for( it = libraries.begin(); it != libraries.end(); ++it ){
141 if(it.key()){ 156 if(it.key()){
142 (it.key())->possibleNewInterfaces(list); 157 (it.key())->possibleNewInterfaces(list);
143 } 158 }
144 } 159 }
145 // See if the list has anything that we can add. 160 // See if the list has anything that we can add.
146 if(list.count() == 0){ 161 if(list.count() == 0){
147 QMessageBox::information(this, "Sorry", "Nothing to add.", "Ok"); 162 QMessageBox::information(this, "Sorry", "Nothing to add.", "Ok");
148 return; 163 return;
149 } 164 }
150 AddConnectionImp addNewConnection(this, "AddConnectionImp", true); 165 AddConnectionImp addNewConnection(this, "AddConnectionImp", true);
151 addNewConnection.addConnections(list); 166 addNewConnection.addConnections(list);
152 addNewConnection.showMaximized(); 167 addNewConnection.showMaximized();
153 if(QDialog::Accepted == addNewConnection.exec()){ 168 if(QDialog::Accepted == addNewConnection.exec()){
154 QListViewItem *item = addNewConnection.registeredServicesList->currentItem(); 169 QListViewItem *item = addNewConnection.registeredServicesList->currentItem();
155 if(!item) 170 if(!item)
156 return; 171 return;
157 172
158 for( it = libraries.begin(); it != libraries.end(); ++it ){ 173 for( it = libraries.begin(); it != libraries.end(); ++it ){
159 if(it.key()){ 174 if(it.key()){
160 Interface *i = (it.key())->addNewInterface(item->text(0)); 175 Interface *i = (it.key())->addNewInterface(item->text(0));
161 if(i){ 176 if(i){
162 interfaceNames.insert(i->getInterfaceName(), i); 177 interfaceNames.insert(i->getInterfaceName(), i);
163 updateInterface(i); 178 updateInterface(i);
164 } 179 }
165 } 180 }
166 } 181 }
167 } 182 }
168} 183}
169 184
170/** 185/**
171 * Prompt the user to see if they really want to do this. 186 * Prompt the user to see if they really want to do this.
172 * If they do then remove from the list and unload. 187 * If they do then remove from the list and unload.
173 */ 188 */
174void MainWindowImp::removeClicked(){ 189void MainWindowImp::removeClicked(){
175 QListViewItem *item = connectionList->currentItem(); 190 QListViewItem *item = connectionList->currentItem();
176 if(!item) { 191 if(!item) {
177 QMessageBox::information(this, "Error","Please select an interface.", "Ok"); 192 QMessageBox::information(this, "Error","Please select an interface.", "Ok");
178 return; 193 return;
179 } 194 }
180 195
181 Interface *i = interfaceItems[item]; 196 Interface *i = interfaceItems[item];
182 if(i->getModuleOwner() == NULL){ 197 if(i->getModuleOwner() == NULL){
183 QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", "Ok"); 198 QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", "Ok");
184 } 199 }
185 else{ 200 else{
186 if(!i->getModuleOwner()->remove(i)) 201 if(!i->getModuleOwner()->remove(i))
187 QMessageBox::information(this, "Error", "Unable to remove.", "Ok"); 202 QMessageBox::information(this, "Error", "Unable to remove.", "Ok");
188 else{ 203 else{
189 QMessageBox::information(this, "Success", "Interface was removed.", "Ok"); 204 QMessageBox::information(this, "Success", "Interface was removed.", "Ok");
190 // TODO memory managment.... 205 // TODO memory managment....
191 // who deletes the interface? 206 // who deletes the interface?
192 } 207 }
193 } 208 }
194} 209}
195 210
196/** 211/**
197 * Pull up the configure about the currently selected interface. 212 * Pull up the configure about the currently selected interface.
198 * Report an error if no interface is selected. 213 * Report an error if no interface is selected.
199 * If the interface has a module owner then request its configure with a empty 214 * If the interface has a module owner then request its configure with a empty
200 * tab. If tab is !NULL then append the interfaces setup widget to it. 215 * tab. If tab is !NULL then append the interfaces setup widget to it.
201 */ 216 */
202void MainWindowImp::configureClicked(){ 217void MainWindowImp::configureClicked(){
203 QListViewItem *item = connectionList->currentItem(); 218 QListViewItem *item = connectionList->currentItem();
204 if(!item){ 219 if(!item){
205 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok); 220 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok);
206 return; 221 return;
207 } 222 }
208 223
224 QString currentProfile = currentProfileLabel->text();
225 if(profilesList->count() <= 1 || currentProfile == "All"){
226 currentProfile = "";
227 }
228
209 Interface *i = interfaceItems[item]; 229 Interface *i = interfaceItems[item];
210 if(i->getModuleOwner()){ 230 if(i->getModuleOwner()){
231 i->getModuleOwner()->setProfile(currentProfileLabel->text());
211 QTabWidget *tabWidget = NULL; 232 QTabWidget *tabWidget = NULL;
212 QWidget *moduleConfigure = i->getModuleOwner()->configure(&tabWidget); 233 QWidget *moduleConfigure = i->getModuleOwner()->configure(&tabWidget);
213 if(moduleConfigure != NULL){ 234 if(moduleConfigure != NULL){
214 if(tabWidget != NULL){ 235 if(tabWidget != NULL){
215 InterfaceSetupImp *configure = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, true); 236 InterfaceSetupImp *configure = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, true);
216 tabWidget->insertTab(configure, "TCP/IP"); 237 configure->setProfile(currentProfileLabel->text());
238 tabWidget->insertTab(configure, "TCP/IP");
239
217 } 240 }
218 moduleConfigure->showMaximized(); 241 moduleConfigure->showMaximized();
219 moduleConfigure->show(); 242 moduleConfigure->show();
220 return; 243 return;
221 } 244 }
222 } 245 }
223 246
224 InterfaceSetupImp *configure = new InterfaceSetupImp(0, "InterfaceSetupImp", i, true); 247 InterfaceSetupImp *configure = new InterfaceSetupImp(0, "InterfaceSetupImp", i, true);
248 configure->setProfile(currentProfileLabel->text());
225 configure->showMaximized(); 249 configure->showMaximized();
226 configure->show(); 250 configure->show();
227} 251}
228 252
229/** 253/**
230 * Pull up the information about the currently selected interface. 254 * Pull up the information about the currently selected interface.
231 * Report an error if no interface is selected. 255 * Report an error if no interface is selected.
232 * If the interface has a module owner then request its configure with a empty 256 * If the interface has a module owner then request its configure with a empty
233 * tab. If tab is !NULL then append the interfaces setup widget to it. 257 * tab. If tab is !NULL then append the interfaces setup widget to it.
234 */ 258 */
235void MainWindowImp::informationClicked(){ 259void MainWindowImp::informationClicked(){
236 QListViewItem *item = connectionList->currentItem(); 260 QListViewItem *item = connectionList->currentItem();
237 if(!item){ 261 if(!item){
238 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok); 262 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok);
239 return; 263 return;
240 } 264 }
241 265
242 Interface *i = interfaceItems[item]; 266 Interface *i = interfaceItems[item];
243 if(!i->isAttached()){ 267 if(!i->isAttached()){
244 QMessageBox::information(this, "Error","No information about\na disconnected interface.", QMessageBox::Ok); 268 QMessageBox::information(this, "Error","No information about\na disconnected interface.", QMessageBox::Ok);
245 return; 269 return;
246 } 270 }
271
272 QStringList list;
273 for(uint i = 0; i < profilesList->count(); i++){
274 list.append(profilesList->text(i));
275 }
276
247 if(i->getModuleOwner()){ 277 if(i->getModuleOwner()){
248 QTabWidget *tabWidget = NULL; 278 QTabWidget *tabWidget = NULL;
249 QWidget *moduleInformation = i->getModuleOwner()->information(&tabWidget); 279 QWidget *moduleInformation = i->getModuleOwner()->information(&tabWidget);
250 if(moduleInformation != NULL){ 280 if(moduleInformation != NULL){
251 if(tabWidget != NULL){ 281 if(tabWidget != NULL){
252 InterfaceInformationImp *information = new InterfaceInformationImp(tabWidget, "InterfaceSetupImp", i, true); 282 InterfaceInformationImp *information = new InterfaceInformationImp(tabWidget, "InterfaceSetupImp", i, true);
253 tabWidget->insertTab(information, "TCP/IP"); 283 tabWidget->insertTab(information, "TCP/IP");
254 } 284 }
255 moduleInformation->showMaximized(); 285 moduleInformation->showMaximized();
256 moduleInformation->show(); 286 moduleInformation->show();
257 return; 287 return;
258 } 288 }
259 } 289 }
260 290
261 InterfaceInformationImp *information = new InterfaceInformationImp(0, "InterfaceSetupImp", i, true); 291 InterfaceInformationImp *information = new InterfaceInformationImp(0, "InterfaceSetupImp", i, true);
262 information->showMaximized(); 292 information->showMaximized();
263 information->show(); 293 information->show();
264} 294}
265 295
266/** 296/**
267 * Aquire the list of active interfaces from ifconfig 297 * Aquire the list of active interfaces from ifconfig
268 * Call ifconfig and ifconfig -a 298 * Call ifconfig and ifconfig -a
269 */ 299 */
270void MainWindowImp::getInterfaceList(){ 300void MainWindowImp::getInterfaceList(){
271 KShellProcess *processAll = new KShellProcess(); 301 KShellProcess *processAll = new KShellProcess();
272 *processAll << "/sbin/ifconfig" << "-a" << " > " TEMP_ALL; 302 *processAll << "/sbin/ifconfig" << "-a" << " > " TEMP_ALL;
273 connect(processAll, SIGNAL(processExited(KProcess *)), 303 connect(processAll, SIGNAL(processExited(KProcess *)),
274 this, SLOT(jobDone(KProcess *))); 304 this, SLOT(jobDone(KProcess *)));
275 threads.insert(processAll, TEMP_ALL); 305 threads.insert(processAll, TEMP_ALL);
276 306
277 KShellProcess *process = new KShellProcess(); 307 KShellProcess *process = new KShellProcess();
278 *process << "/sbin/ifconfig" << " > " TEMP_UP; 308 *process << "/sbin/ifconfig" << " > " TEMP_UP;
279 connect(process, SIGNAL(processExited(KProcess *)), 309 connect(process, SIGNAL(processExited(KProcess *)),
280 this, SLOT(jobDone(KProcess *))); 310 this, SLOT(jobDone(KProcess *)));
281 threads.insert(process, TEMP_UP); 311 threads.insert(process, TEMP_UP);
282 312
283 processAll->start(KShellProcess::NotifyOnExit); 313 processAll->start(KShellProcess::NotifyOnExit);
284 process->start(KShellProcess::NotifyOnExit); 314 process->start(KShellProcess::NotifyOnExit);
285} 315}
286 316
287void MainWindowImp::jobDone(KProcess *process){ 317void MainWindowImp::jobDone(KProcess *process){
288 QString fileName = threads[process]; 318 QString fileName = threads[process];
289 threads.remove(process); 319 threads.remove(process);
290 delete process; 320 delete process;
291 321
292 QFile file(fileName); 322 QFile file(fileName);
293 if (!file.open(IO_ReadOnly)){ 323 if (!file.open(IO_ReadOnly)){
294 qDebug(QString("MainWindowImp: Can't open file: %1").arg(fileName).latin1()); 324 qDebug(QString("MainWindowImp: Can't open file: %1").arg(fileName).latin1());
295 return; 325 return;
296 } 326 }
297 327
298 QTextStream stream( &file ); 328 QTextStream stream( &file );
299 QString line; 329 QString line;
300 while ( !stream.eof() ) { 330 while ( !stream.eof() ) {
301 line = stream.readLine(); 331 line = stream.readLine();
302 int space = line.find(" "); 332 int space = line.find(" ");
303 if(space > 1){ 333 if(space > 1){
304 // We have found an interface 334 // We have found an interface
305 QString interfaceName = line.mid(0, space); 335 QString interfaceName = line.mid(0, space);
306 Interface *i; 336 Interface *i;
307 // We have found an interface 337 // We have found an interface
308 //qDebug(QString("MainWindowImp: Found Interface: %1").arg(line).latin1()); 338 //qDebug(QString("MainWindowImp: Found Interface: %1").arg(line).latin1());
309 // See if we already have it 339 // See if we already have it
310 if(interfaceNames.find(interfaceName) == interfaceNames.end()){ 340 if(interfaceNames.find(interfaceName) == interfaceNames.end()){
311 if(fileName == TEMP_ALL) 341 if(fileName == TEMP_ALL)
312 i = new Interface(this, interfaceName, false); 342 i = new Interface(this, interfaceName, false);
313 else 343 else
314 i = new Interface(this, interfaceName, true); 344 i = new Interface(this, interfaceName, true);
315 i->setAttached(true); 345 i->setAttached(true);
316 346
317 QString hardName = "Ethernet"; 347 QString hardName = "Ethernet";
318 int hardwareName = line.find("Link encap:"); 348 int hardwareName = line.find("Link encap:");
319 int macAddress = line.find("HWaddr"); 349 int macAddress = line.find("HWaddr");
320 if(macAddress == -1) 350 if(macAddress == -1)
321 macAddress = line.length(); 351 macAddress = line.length();
322 if(hardwareName != -1) 352 if(hardwareName != -1)
323 i->setHardwareName(line.mid(hardwareName+11, macAddress-(hardwareName+11)) + QString(" (%1)").arg(i->getInterfaceName())); 353 i->setHardwareName(line.mid(hardwareName+11, macAddress-(hardwareName+11)) );
324 354
325 interfaceNames.insert(i->getInterfaceName(), i); 355 interfaceNames.insert(i->getInterfaceName(), i);
326 updateInterface(i); 356 updateInterface(i);
327 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 357 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
328 } 358 }
329 // It was an interface we already had. 359 // It was an interface we already had.
330 else{ 360 else{
331 if(fileName != TEMP_ALL) 361 if(fileName != TEMP_ALL)
332 (interfaceNames[interfaceName])->setStatus(true); 362 (interfaceNames[interfaceName])->setStatus(true);
333 } 363 }
334 } 364 }
335 } 365 }
336 file.close(); 366 file.close();
337 QFile::remove(fileName); 367 QFile::remove(fileName);
338 368
339 if(threads.count() == 0){ 369 if(threads.count() == 0){
340 Interfaces i; 370 Interfaces i;
341 QStringList list = i.getInterfaceList(); 371 QStringList list = i.getInterfaceList();
342 QMap<QString, Interface*>::Iterator it; 372 QMap<QString, Interface*>::Iterator it;
343 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) { 373 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) {
344 bool found = false; 374 bool found = false;
345 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){ 375 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){
346 if(it.key() == (*ni)) 376 if(it.key() == (*ni))
347 found = true; 377 found = true;
348 } 378 }
349 if(!found){ 379 if(!found){
350 Interface *i = new Interface(this, *ni, false); 380 Interface *i = new Interface(this, *ni, false);
351 i->setAttached(false); 381 i->setAttached(false);
352 i->setHardwareName(QString("Disconnected (%1)").arg(*ni)); 382 i->setHardwareName("Disconnected");
353 interfaceNames.insert(i->getInterfaceName(), i); 383 interfaceNames.insert(i->getInterfaceName(), i);
354 updateInterface(i); 384 updateInterface(i);
355 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 385 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
356 } 386 }
357 } 387 }
358 } 388 }
359} 389}
360 390
361/** 391/**
362 * Update this interface. If no QListViewItem exists create one. 392 * Update this interface. If no QListViewItem exists create one.
363 * @param Interface* pointer to the interface that needs to be updated. 393 * @param Interface* pointer to the interface that needs to be updated.
364 */ 394 */
365void MainWindowImp::updateInterface(Interface *i){ 395void MainWindowImp::updateInterface(Interface *i){
366 if(!advancedUserMode){ 396 if(!advancedUserMode){
367 if(i->getInterfaceName() == "lo") 397 if(i->getInterfaceName() == "lo")
368 return; 398 return;
369 } 399 }
370 400
371 QListViewItem *item = NULL; 401 QListViewItem *item = NULL;
372 402
373 // Find the interface, making it if needed. 403 // Find the interface, making it if needed.
374 if(items.find(i) == items.end()){ 404 if(items.find(i) == items.end()){
375 item = new QListViewItem(connectionList, "", "", ""); 405 item = new QListViewItem(connectionList, "", "", "");
376 // See if you can't find a module owner for this interface 406 // See if you can't find a module owner for this interface
377 QMap<Module*, QLibrary*>::Iterator it; 407 QMap<Module*, QLibrary*>::Iterator it;
378 for( it = libraries.begin(); it != libraries.end(); ++it ){ 408 for( it = libraries.begin(); it != libraries.end(); ++it ){
379 if(it.key()->isOwner(i)) 409 if(it.key()->isOwner(i))
380 i->setModuleOwner(it.key()); 410 i->setModuleOwner(it.key());
381 } 411 }
382 items.insert(i, item); 412 items.insert(i, item);
383 interfaceItems.insert(item, i); 413 interfaceItems.insert(item, i);
384 } 414 }
385 else 415 else
386 item = items[i]; 416 item = items[i];
387 417
388 // Update the icons and information 418 // Update the icons and information
389 item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down"))); 419 item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down")));
390 420
391 QString typeName = "lan"; 421 QString typeName = "lan";
392 if(i->getHardwareName().contains("Local Loopback")) 422 if(i->getHardwareName().contains("Local Loopback"))
393 typeName = "lo"; 423 typeName = "lo";
394 if(i->getInterfaceName().contains("irda")) 424 if(i->getInterfaceName().contains("irda"))
395 typeName = "irda"; 425 typeName = "irda";
396 if(i->getInterfaceName().contains("wlan")) 426 if(i->getInterfaceName().contains("wlan"))
397 typeName = "wlan"; 427 typeName = "wlan";
398 if(i->getInterfaceName().contains("usb")) 428 if(i->getInterfaceName().contains("usb"))
399 typeName = "usb"; 429 typeName = "usb";
400 430
401 if(!i->isAttached()) 431 if(!i->isAttached())
402 typeName = "connect_no"; 432 typeName = "connect_no";
403 // Actually try to use the Module 433 // Actually try to use the Module
404 if(i->getModuleOwner() != NULL) 434 if(i->getModuleOwner() != NULL)
405 typeName = i->getModuleOwner()->getPixmapName(i); 435 typeName = i->getModuleOwner()->getPixmapName(i);
406 436
407 item->setPixmap(1, (Resource::loadPixmap(typeName))); 437 item->setPixmap(1, (Resource::loadPixmap(typeName)));
408 item->setText(2, i->getHardwareName()); 438 item->setText(2, i->getHardwareName());
409 item->setText(3, (i->getStatus()) ? i->getIp() : QString("")); 439 item->setText(3, QString("(%1)").arg(i->getInterfaceName()));
440 item->setText(4, (i->getStatus()) ? i->getIp() : QString(""));
410} 441}
411 442
412void MainWindowImp::newProfileChanged(const QString& newText){ 443void MainWindowImp::newProfileChanged(const QString& newText){
413 if(newText.length() > 0) 444 if(newText.length() > 0)
414 newProfileButton->setEnabled(true); 445 newProfileButton->setEnabled(true);
415 else 446 else
416 newProfileButton->setEnabled(false); 447 newProfileButton->setEnabled(false);
417} 448}
418 449
419/** 450/**
420 * Adds a new profile to the list of profiles. 451 * Adds a new profile to the list of profiles.
421 * Don't add profiles that already exists. 452 * Don't add profiles that already exists.
422 * Appends to the list and QStringList 453 * Appends to the list and QStringList
423 */ 454 */
424void MainWindowImp::addProfile(){ 455void MainWindowImp::addProfile(){
425 QString newProfileName = newProfile->text(); 456 QString newProfileName = newProfile->text();
426 if(profiles.grep(newProfileName).count() > 0){ 457 if(profiles.grep(newProfileName).count() > 0){
427 QMessageBox::information(this, "Can't Add","Profile already exists.", "Ok"); 458 QMessageBox::information(this, "Can't Add","Profile already exists.", "Ok");
428 return; 459 return;
429 } 460 }
430 profiles.append(newProfileName); 461 profiles.append(newProfileName);
431 profilesList->insertItem(newProfileName); 462 profilesList->insertItem(newProfileName);
432} 463}
433 464
434/** 465/**
435 * Removes the currently selected profile in the combo. 466 * Removes the currently selected profile in the combo.
436 * Doesn't delete if there are less then 2 profiles. 467 * Doesn't delete if there are less then 2 profiles.
437 */ 468 */
438void MainWindowImp::removeProfile(){ 469void MainWindowImp::removeProfile(){
439 if(profilesList->count() <= 1){ 470 if(profilesList->count() <= 1){
440 QMessageBox::information(this, "Can't remove anything.","Need One Profile.", "Ok"); 471 QMessageBox::information(this, "Can't remove.","At least one profile\nis needed.", "Ok");
441 return; 472 return;
442 } 473 }
443 QString profileToRemove = profilesList->currentText(); 474 QString profileToRemove = profilesList->currentText();
475 if(profileToRemove == "All"){
476 QMessageBox::information(this, "Can't remove.","Can't remove default.", "Ok");
477 return;
478 }
479 // Can't remove the curent profile
480 if(profileToRemove == currentProfileLabel->text()){
481 QMessageBox::information(this, "Can't remove.",QString("%1 is the current profile.").arg(profileToRemove), "Ok");
482 return;
483
484 }
485
444 if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok){ 486 if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok){
445 profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), "")); 487 profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), ""));
446 profilesList->clear(); 488 profilesList->clear();
447 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) 489 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
448 profilesList->insertItem((*it)); 490 profilesList->insertItem((*it));
449 } 491 }
450
451} 492}
452 493
453/** 494/**
454 * A new profile has been selected, change. 495 * A new profile has been selected, change.
455 * @param newProfile the new profile. 496 * @param newProfile the new profile.
456 */ 497 */
457void MainWindowImp::changeProfile(){ 498void MainWindowImp::changeProfile(){
458 currentProfileLabel->setText(profilesList->text(profilesList->currentItem())); 499 if(profilesList->currentItem() == -1){
500 QMessageBox::information(this, "Can't Change.","Please select a profile.", "Ok");
501 return;
502 }
503 QString newProfile = profilesList->text(profilesList->currentItem());
504 if(newProfile != currentProfileLabel->text()){
505 currentProfileLabel->setText(newProfile);
506 QFile file(SCHEME);
507 if ( file.open(IO_ReadWrite) ) {
508 QTextStream stream( &file );
509 stream << QString("SCHEME=%1").arg(newProfile);
510 file.close();
511 }
512 // restart all up devices?
513 if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok){
514 // Go through them one by one
515 QMap<Interface*, QListViewItem*>::Iterator it;
516 for( it = items.begin(); it != items.end(); ++it ){
517 if(it.key()->getStatus() == true)
518 it.key()->restart();
519 }
520 }
521 }
459} 522}
460 523
461// mainwindowimp.cpp 524// mainwindowimp.cpp
462 525
diff --git a/noncore/net/networksetup/wlan/wlanimp.cpp b/noncore/net/networksetup/wlan/wlanimp.cpp
index 74eef5f..517604f 100644
--- a/noncore/net/networksetup/wlan/wlanimp.cpp
+++ b/noncore/net/networksetup/wlan/wlanimp.cpp
@@ -1,228 +1,227 @@
1#include "wlanimp.h" 1#include "wlanimp.h"
2 2
3/* Config class */ 3/* Config class */
4#include <qpe/config.h> 4#include <qpe/config.h>
5/* Global namespace */ 5/* Global namespace */
6#include <qpe/global.h> 6#include <qpe/global.h>
7/* system() */ 7/* system() */
8#include <stdlib.h> 8#include <stdlib.h>
9#include <qfile.h> 9#include <qfile.h>
10#include <qdir.h> 10#include <qdir.h>
11#include <qtextstream.h> 11#include <qtextstream.h>
12#include <qmessagebox.h> 12#include <qmessagebox.h>
13#include <qlineedit.h> 13#include <qlineedit.h>
14#include <qspinbox.h> 14#include <qspinbox.h>
15#include <qradiobutton.h> 15#include <qradiobutton.h>
16#include <qcheckbox.h> 16#include <qcheckbox.h>
17#include <qregexp.h> 17#include <qregexp.h>
18 18
19WLANImp::WLANImp( Config &cfg, QWidget* parent, const char* name):WLAN(parent, name),config(cfg){ 19WLANImp::WLANImp( Config &cfg, QWidget* parent, const char* name):WLAN(parent, name),config(cfg){
20 readConfig(); 20 readConfig();
21} 21}
22 22
23void WLANImp::readConfig() 23void WLANImp::readConfig()
24{ 24{
25 qWarning( "WLANImp::readConfig() called." ); 25 qWarning( "WLANImp::readConfig() called." );
26 config.setGroup( "Properties" ); 26 config.setGroup( "Properties" );
27 QString ssid = config.readEntry( "SSID", "any" ); 27 QString ssid = config.readEntry( "SSID", "any" );
28 if( ssid == "any" || ssid == "ANY" ){ 28 if( ssid == "any" || ssid == "ANY" ){
29 essNon->setChecked( true ); 29 essNon->setChecked( true );
30 } else { 30 } else {
31 essSpecific->setChecked( true ); 31 essSpecific->setChecked( true );
32 essSpecificLineEdit->setText( ssid ); 32 essSpecificLineEdit->setText( ssid );
33 } 33 }
34 QString mode = config.readEntry( "Mode", "Managed" ); 34 QString mode = config.readEntry( "Mode", "Managed" );
35 if( mode == "adhoc" ) { 35 if( mode == "adhoc" ) {
36 network802->setChecked( true ); 36 network802->setChecked( true );
37 } else { 37 } else {
38 networkInfrastructure->setChecked( true ); 38 networkInfrastructure->setChecked( true );
39 } 39 }
40 networkChannel->setValue( config.readNumEntry( "CHANNEL", 1 ) ); 40 networkChannel->setValue( config.readNumEntry( "CHANNEL", 1 ) );
41// config.readEntry( "RATE", "auto" ); 41// config.readEntry( "RATE", "auto" );
42 config.readEntry( "dot11PrivacyInvoked" ) == "true" ? wepEnabled->setChecked( true ) : wepEnabled->setChecked( false ); 42 config.readEntry( "dot11PrivacyInvoked" ) == "true" ? wepEnabled->setChecked( true ) : wepEnabled->setChecked( false );
43 config.readEntry( "AuthType", "opensystem" ); 43 config.readEntry( "AuthType", "opensystem" );
44 config.readEntry( "PRIV_KEY128", "false" ) == "false" ? key40->setChecked( true ) : key128->setChecked( true ); 44 config.readEntry( "PRIV_KEY128", "false" ) == "false" ? key40->setChecked( true ) : key128->setChecked( true );
45 int defaultkey = config.readNumEntry( "dot11WEPDefaultKeyID", 0 ); 45 int defaultkey = config.readNumEntry( "dot11WEPDefaultKeyID", 0 );
46 switch( defaultkey ){ 46 switch( defaultkey ){
47 case 0: 47 case 0:
48 keyRadio0->setChecked( true ); 48 keyRadio0->setChecked( true );
49 break; 49 break;
50 case 1: 50 case 1:
51 keyRadio1->setChecked( true ); 51 keyRadio1->setChecked( true );
52 break; 52 break;
53 case 2: 53 case 2:
54 keyRadio2->setChecked( true ); 54 keyRadio2->setChecked( true );
55 break; 55 break;
56 case 3: 56 case 3:
57 keyRadio3->setChecked( true ); 57 keyRadio3->setChecked( true );
58 break; 58 break;
59 } 59 }
60 keyLineEdit0->setText(config.readEntry( "dot11WEPDefaultKey0" )); 60 keyLineEdit0->setText(config.readEntry( "dot11WEPDefaultKey0" ));
61 keyLineEdit1->setText(config.readEntry( "dot11WEPDefaultKey1" )); 61 keyLineEdit1->setText(config.readEntry( "dot11WEPDefaultKey1" ));
62 keyLineEdit2->setText(config.readEntry( "dot11WEPDefaultKey2" )); 62 keyLineEdit2->setText(config.readEntry( "dot11WEPDefaultKey2" ));
63 keyLineEdit3->setText(config.readEntry( "dot11WEPDefaultKey3" )); 63 keyLineEdit3->setText(config.readEntry( "dot11WEPDefaultKey3" ));
64 return; 64 return;
65} 65}
66 66
67bool WLANImp::writeConfig() 67bool WLANImp::writeConfig()
68{ 68{
69 qWarning( "WLANImp::writeConfig() called." ); 69 qWarning( "WLANImp::writeConfig() called." );
70 config.setGroup( "Properties" ); 70 config.setGroup( "Properties" );
71 if( essNon->isChecked() ) { 71 if( essNon->isChecked() ) {
72 config.writeEntry( "SSID", "any" ); 72 config.writeEntry( "SSID", "any" );
73 } else { 73 } else {
74 config.writeEntry( "SSID", essSpecificLineEdit->text() ); 74 config.writeEntry( "SSID", essSpecificLineEdit->text() );
75 } 75 }
76 if( networkInfrastructure->isChecked() ){ 76 if( networkInfrastructure->isChecked() ){
77 config.writeEntry( "Mode", "Managed" ); 77 config.writeEntry( "Mode", "Managed" );
78 } else if( network802->isChecked() ){ 78 } else if( network802->isChecked() ){
79 config.writeEntry( "Mode", "adhoc" ); 79 config.writeEntry( "Mode", "adhoc" );
80 } 80 }
81 config.writeEntry( "CHANNEL", networkChannel->value() ); 81 config.writeEntry( "CHANNEL", networkChannel->value() );
82// config.readEntry( "RATE", "auto" ); 82// config.readEntry( "RATE", "auto" );
83 wepEnabled->isChecked() ? config.writeEntry( "dot11PrivacyInvoked", "true" ) : config.writeEntry( "dot11PrivacyInvoked", "false" ); 83 wepEnabled->isChecked() ? config.writeEntry( "dot11PrivacyInvoked", "true" ) : config.writeEntry( "dot11PrivacyInvoked", "false" );
84 authOpen->isChecked() ? config.writeEntry( "AuthType", "opensystem" ) : config.writeEntry( "AuthType", "sharedkey" ); 84 authOpen->isChecked() ? config.writeEntry( "AuthType", "opensystem" ) : config.writeEntry( "AuthType", "sharedkey" );
85 key40->isChecked() ? config.writeEntry( "PRIV_KEY128", "false" ) : config.writeEntry( "PRIV_KEY128", "true" ); 85 key40->isChecked() ? config.writeEntry( "PRIV_KEY128", "false" ) : config.writeEntry( "PRIV_KEY128", "true" );
86 if( keyRadio0->isChecked() ){ 86 if( keyRadio0->isChecked() ){
87 config.writeEntry( "dot11WEPDefaultKeyID", 0 ); 87 config.writeEntry( "dot11WEPDefaultKeyID", 0 );
88 } else if( keyRadio1->isChecked() ){ 88 } else if( keyRadio1->isChecked() ){
89 config.writeEntry( "dot11WEPDefaultKeyID", 1 ); 89 config.writeEntry( "dot11WEPDefaultKeyID", 1 );
90 } else if( keyRadio2->isChecked() ){ 90 } else if( keyRadio2->isChecked() ){
91 config.writeEntry( "dot11WEPDefaultKeyID", 2 ); 91 config.writeEntry( "dot11WEPDefaultKeyID", 2 );
92 } else if( keyRadio3->isChecked() ){ 92 } else if( keyRadio3->isChecked() ){
93 config.writeEntry( "dot11WEPDefaultKeyID", 3 ); 93 config.writeEntry( "dot11WEPDefaultKeyID", 3 );
94 } 94 }
95 config.writeEntry( "dot11WEPDefaultKey0", keyLineEdit0->text() ); 95 config.writeEntry( "dot11WEPDefaultKey0", keyLineEdit0->text() );
96 config.writeEntry( "dot11WEPDefaultKey1", keyLineEdit1->text() ); 96 config.writeEntry( "dot11WEPDefaultKey1", keyLineEdit1->text() );
97 config.writeEntry( "dot11WEPDefaultKey2", keyLineEdit2->text() ); 97 config.writeEntry( "dot11WEPDefaultKey2", keyLineEdit2->text() );
98 config.writeEntry( "dot11WEPDefaultKey3", keyLineEdit3->text() ); 98 config.writeEntry( "dot11WEPDefaultKey3", keyLineEdit3->text() );
99 return writeWirelessOpts( config ); 99 return writeWirelessOpts( config );
100// return true;
101} 100}
102 101
103/** 102/**
104 */ 103 */
105void WLANImp::accept() 104void WLANImp::accept()
106{ 105{
107 if ( writeConfig() ) 106 if ( writeConfig() )
108 QDialog::accept(); 107 QDialog::accept();
109} 108}
110 109
111void WLANImp::done ( int r ) 110void WLANImp::done ( int r )
112{ 111{
113 QDialog::done ( r ); 112 QDialog::done ( r );
114 close ( ); 113 close ( );
115} 114}
116 115
117bool WLANImp::writeWirelessOpts( Config &config, QString scheme ) 116bool WLANImp::writeWirelessOpts( Config &config, QString scheme )
118{ 117{
119 qWarning( "WLANImp::writeWirelessOpts entered." ); 118 qWarning( "WLANImp::writeWirelessOpts entered." );
120 QString prev = "/etc/pcmcia/wireless.opts"; 119 QString prev = "/etc/pcmcia/wireless.opts";
121 QFile prevFile(prev); 120 QFile prevFile(prev);
122 if ( !prevFile.open( IO_ReadOnly ) ) 121 if ( !prevFile.open( IO_ReadOnly ) )
123 return false; 122 return false;
124 123
125 QString tmp = "/etc/pcmcia/wireless.opts-qpe-new"; 124 QString tmp = "/etc/pcmcia/wireless.opts-qpe-new";
126 QFile tmpFile(tmp); 125 QFile tmpFile(tmp);
127 if ( !tmpFile.open( IO_WriteOnly ) ) 126 if ( !tmpFile.open( IO_WriteOnly ) )
128 return false; 127 return false;
129 128
130 bool retval = true; 129 bool retval = true;
131 130
132 QTextStream in( &prevFile ); 131 QTextStream in( &prevFile );
133 QTextStream out( &tmpFile ); 132 QTextStream out( &tmpFile );
134 133
135 config.setGroup("Properties"); 134 config.setGroup("Properties");
136 135
137 QString line; 136 QString line;
138 bool found=false; 137 bool found=false;
139 bool done=false; 138 bool done=false;
140 while ( !in.atEnd() ) { 139 while ( !in.atEnd() ) {
141 QString line = in.readLine(); 140 QString line = in.readLine();
142 QString wline = line.simplifyWhiteSpace(); 141 QString wline = line.simplifyWhiteSpace();
143 if ( !done ) { 142 if ( !done ) {
144 if ( found ) { 143 if ( found ) {
145 // skip existing entry for this scheme, and write our own. 144 // skip existing entry for this scheme, and write our own.
146 if ( wline == ";;" ) { 145 if ( wline == ";;" ) {
147 found = false; 146 found = false;
148 continue; 147 continue;
149 } else { 148 } else {
150 continue; 149 continue;
151 } 150 }
152 } else { 151 } else {
153 if ( wline.left(scheme.length()+7) == scheme + ",*,*,*)" ) { 152 if ( wline.left(scheme.length()+7) == scheme + ",*,*,*)" ) {
154 found=true; 153 found=true;
155 continue; // skip this line 154 continue; // skip this line
156 } else if ( wline == "esac" || wline == "*,*,*,*)" ) { 155 } else if ( wline == "esac" || wline == "*,*,*,*)" ) {
157 // end - add new entry 156 // end - add new entry
158 // Not all fields have a GUI, but all are supported 157 // Not all fields have a GUI, but all are supported
159 // in the letwork configuration files. 158 // in the letwork configuration files.
160 static const char* txtfields[] = { 159 static const char* txtfields[] = {
161 0 160 0
162 }; 161 };
163 QString readmode = config.readEntry( "Mode", "Managed" ); 162 QString readmode = config.readEntry( "Mode", "Managed" );
164 QString mode; 163 QString mode;
165 if( readmode == "Managed" ){ 164 if( readmode == "Managed" ){
166 mode = readmode; 165 mode = readmode;
167 } else if( readmode == "adhoc" ){ 166 } else if( readmode == "adhoc" ){
168 mode = "Ad-Hoc"; 167 mode = "Ad-Hoc";
169 } 168 }
170 QString key; 169 QString key;
171 if( wepEnabled->isChecked() ){ 170 if( wepEnabled->isChecked() ){
172 int defaultkey = config.readNumEntry( "dot11WEPDefaultKeyID", 0 ); 171 int defaultkey = config.readNumEntry( "dot11WEPDefaultKeyID", 0 );
173 switch( defaultkey ){ 172 switch( defaultkey ){
174 case 0: 173 case 0:
175 key += keyLineEdit0->text(); 174 key += keyLineEdit0->text();
176 break; 175 break;
177 case 1: 176 case 1:
178 key += keyLineEdit1->text(); 177 key += keyLineEdit1->text();
179 break; 178 break;
180 case 2: 179 case 2:
181 key += keyLineEdit2->text(); 180 key += keyLineEdit2->text();
182 break; 181 break;
183 case 3: 182 case 3:
184 key += keyLineEdit3->text(); 183 key += keyLineEdit3->text();
185 break; 184 break;
186 } 185 }
187 if( config.readEntry( "AuthType", "opensystem" ) == "opensystem") 186 if( config.readEntry( "AuthType", "opensystem" ) == "opensystem")
188 key += " open"; 187 key += " open";
189 } 188 }
190 out << scheme << ",*,*,*)" << "\n" 189 out << scheme << ",*,*,*)" << "\n"
191 << " ESSID=" << Global::shellQuote( config.readEntry( "SSID", "any" ) ) << "\n" 190 << " ESSID=" << Global::shellQuote( config.readEntry( "SSID", "any" ) ) << "\n"
192 << " MODE=" << mode << "\n" 191 << " MODE=" << mode << "\n"
193 << " KEY=" << Global::shellQuote( key ) << "\n" 192 << " KEY=" << Global::shellQuote( key ) << "\n"
194 << " RATE=" << "auto" << "\n" 193 << " RATE=" << "auto" << "\n"
195 ; 194 ;
196 if( mode != "Managed" ) 195 if( mode != "Managed" )
197 out << " CHANNEL=" << config.readNumEntry( "CHANNEL", 1 ) << "\n"; 196 out << " CHANNEL=" << config.readNumEntry( "CHANNEL", 1 ) << "\n";
198 const char** f = txtfields; 197 const char** f = txtfields;
199 while (*f) { 198 while (*f) {
200 out << " " << *f << "=" << config.readEntry(*f,"") << "\n"; 199 out << " " << *f << "=" << config.readEntry(*f,"") << "\n";
201 ++f; 200 ++f;
202 } 201 }
203 out << " ;;\n"; 202 out << " ;;\n";
204 done = true; 203 done = true;
205 } 204 }
206 } 205 }
207 } 206 }
208 out << line << "\n"; 207 out << line << "\n";
209 } 208 }
210 209
211 prevFile.close(); 210 prevFile.close();
212 tmpFile.close(); 211 tmpFile.close();
213 QString initpath; 212 QString initpath;
214 //system("cardctl suspend"); 213 //system("cardctl suspend");
215 if( QDir("/etc/rc.d/init.d").exists() ){ 214 if( QDir("/etc/rc.d/init.d").exists() ){
216 initpath = "/etc/rc.d/init.d"; 215 initpath = "/etc/rc.d/init.d";
217 } else if( QDir("/etc/init.d").exists() ){ 216 } else if( QDir("/etc/init.d").exists() ){
218 initpath = "/etc/init.d"; 217 initpath = "/etc/init.d";
219 } 218 }
220 if( initpath ) 219 if( initpath )
221 system(QString("%1/pcmcia stop").arg(initpath)); 220 system(QString("%1/pcmcia stop").arg(initpath));
222 221
223 if( system( "mv " + tmp + " " + prev ) ) 222 if( system( "mv " + tmp + " " + prev ) )
224 retval = false; 223 retval = false;
225//#ifdef USE_SCHEMES 224//#ifdef USE_SCHEMES
226// if ( retval ) 225// if ( retval )
227 //SchemeChanger::changeScheme(scheme); 226 //SchemeChanger::changeScheme(scheme);
228//#endif 227//#endif
diff --git a/noncore/net/networksetup/wlan/wlanmodule.cpp b/noncore/net/networksetup/wlan/wlanmodule.cpp
index 9d34d75..53b5857 100644
--- a/noncore/net/networksetup/wlan/wlanmodule.cpp
+++ b/noncore/net/networksetup/wlan/wlanmodule.cpp
@@ -1,93 +1,93 @@
1#include "wlanmodule.h" 1#include "wlanmodule.h"
2#include <qpe/config.h> 2#include <qpe/config.h>
3#include "wlanimp.h" 3#include "wlanimp.h"
4 4
5/** 5/**
6 * Constructor, find all of the possible interfaces 6 * Constructor, find all of the possible interfaces
7 */ 7 */
8WLANModule::WLANModule() : Module() { 8WLANModule::WLANModule() : Module() {
9 // get output from iwconfig 9 // get output from iwconfig
10} 10}
11 11
12/** 12/**
13 * Change the current profile 13 * Change the current profile
14 */ 14 */
15void WLANModule::setProfile(QString newProfile){ 15void WLANModule::setProfile(QString newProfile){
16 profile = newProfile; 16 profile = newProfile;
17} 17}
18 18
19/** 19/**
20 * get the icon name for this device. 20 * get the icon name for this device.
21 * @param Interface* can be used in determining the icon. 21 * @param Interface* can be used in determining the icon.
22 * @return QString the icon name (minus .png, .gif etc) 22 * @return QString the icon name (minus .png, .gif etc)
23 */ 23 */
24QString WLANModule::getPixmapName(Interface* ){ 24QString WLANModule::getPixmapName(Interface* ){
25 return "wlan"; 25 return "wlan";
26} 26}
27 27
28/** 28/**
29 * Check to see if the interface i is owned by this module. 29 * Check to see if the interface i is owned by this module.
30 * @param Interface* interface to check against 30 * @param Interface* interface to check against
31 * @return bool true if i is owned by this module, false otherwise. 31 * @return bool true if i is owned by this module, false otherwise.
32 */ 32 */
33bool WLANModule::isOwner(Interface *i){ 33bool WLANModule::isOwner(Interface *i){
34 if(i->getInterfaceName() == "eth0" || i->getInterfaceName() == "wlan0"){ 34 if(i->getInterfaceName() == "eth0" || i->getInterfaceName() == "wlan0"){
35 i->setHardwareName(QString("802.11b (%1)").arg(i->getInterfaceName())); 35 i->setHardwareName("802.11b");
36 return true; 36 return true;
37 } 37 }
38 return false; 38 return false;
39} 39}
40 40
41/** 41/**
42 * Create, set tabWiget and return the WLANConfigure Module 42 * Create, set tabWiget and return the WLANConfigure Module
43 * @param tabWidget a pointer to the tab widget that this configure has. 43 * @param tabWidget a pointer to the tab widget that this configure has.
44 * @return QWidget* pointer to the tab widget in this modules configure. 44 * @return QWidget* pointer to the tab widget in this modules configure.
45 */ 45 */
46QWidget *WLANModule::configure(QTabWidget **tabWidget){ 46QWidget *WLANModule::configure(QTabWidget **tabWidget){
47 Config *cfg = new Config("wireless"); 47 Config *cfg = new Config("wireless");
48 WLANImp *wlanconfig = new WLANImp(*cfg); 48 WLANImp *wlanconfig = new WLANImp(*cfg);
49 (*tabWidget) = wlanconfig->tabWidget; 49 (*tabWidget) = wlanconfig->tabWidget;
50 return wlanconfig; 50 return wlanconfig;
51} 51}
52 52
53/** 53/**
54 * Create, set tabWiget and return the Information Module 54 * Create, set tabWiget and return the Information Module
55 * @param tabWidget a pointer to the tab widget that this information has. 55 * @param tabWidget a pointer to the tab widget that this information has.
56 * @return QWidget* pointer to the tab widget in this modules info. 56 * @return QWidget* pointer to the tab widget in this modules info.
57 */ 57 */
58QWidget *WLANModule::information(QTabWidget **tabWidget){ 58QWidget *WLANModule::information(QTabWidget **tabWidget){
59 return NULL; 59 return NULL;
60} 60}
61 61
62/** 62/**
63 * Get all active (up or down) interfaces 63 * Get all active (up or down) interfaces
64 * @return QList<Interface> A list of interfaces that exsist that havn't 64 * @return QList<Interface> A list of interfaces that exsist that havn't
65 * been called by isOwner() 65 * been called by isOwner()
66 */ 66 */
67QList<Interface> WLANModule::getInterfaces(){ 67QList<Interface> WLANModule::getInterfaces(){
68 return list; 68 return list;
69} 69}
70 70
71/** 71/**
72 * Attempt to add a new interface as defined by name 72 * Attempt to add a new interface as defined by name
73 * @param name the name of the type of interface that should be created given 73 * @param name the name of the type of interface that should be created given
74 * by possibleNewInterfaces(); 74 * by possibleNewInterfaces();
75 * @return Interface* NULL if it was unable to be created. 75 * @return Interface* NULL if it was unable to be created.
76 */ 76 */
77Interface *WLANModule::addNewInterface(QString ){ 77Interface *WLANModule::addNewInterface(QString ){
78 // We can't add a 802.11 interface, either the hardware will be there 78 // We can't add a 802.11 interface, either the hardware will be there
79 // or it wont. 79 // or it wont.
80 return NULL; 80 return NULL;
81} 81}
82 82
83/** 83/**
84 * Attempts to remove the interface, doesn't delete i 84 * Attempts to remove the interface, doesn't delete i
85 * @return bool true if successfull, false otherwise. 85 * @return bool true if successfull, false otherwise.
86 */ 86 */
87bool WLANModule::remove(Interface*){ 87bool WLANModule::remove(Interface*){
88 // Can't remove a hardware device, you can stop it though. 88 // Can't remove a hardware device, you can stop it though.
89 return false; 89 return false;
90} 90}
91 91
92// wlanmodule.cpp 92// wlanmodule.cpp
93 93
diff --git a/noncore/settings/networksettings/TODO b/noncore/settings/networksettings/TODO
index c8e2989..c587f58 100644
--- a/noncore/settings/networksettings/TODO
+++ b/noncore/settings/networksettings/TODO
@@ -1,10 +1,6 @@
1Write a class that parses /proc and not ifconfig 1Write a class that parses /proc and not ifconfig
2WLAN needs to be re-written to not use Config
3remove WLAN Config item
2 4
3[ ] Wlanmodule needs to check if an interface supports wireless 5[ ] Wlanmodule needs to check if an interface supports wireless
4 extensions. 6 extensions.
5[x] When you set options in wlanmodule, hit OK, it exits all of
6 networksetup, doesnt bring you back to the main screen.
7[x] Wlanmodule isnt writing out wireless.opts
8[ ] Need a means of bringing an interface up and down (calling
9 out ifup/ifdown) from the gui.
10 -Ben- Click information, then click up or down... :-D
diff --git a/noncore/settings/networksettings/interfaceadvanced.ui b/noncore/settings/networksettings/interfaceadvanced.ui
index efe67b0..0ec67c2 100644
--- a/noncore/settings/networksettings/interfaceadvanced.ui
+++ b/noncore/settings/networksettings/interfaceadvanced.ui
@@ -1,320 +1,320 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>InterfaceAdvanced</class> 2<class>InterfaceAdvanced</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>InterfaceAdvanced</cstring> 7 <cstring>InterfaceAdvanced</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>214</width> 14 <width>214</width>
15 <height>286</height> 15 <height>286</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>maximumSize</name> 19 <name>maximumSize</name>
20 <size> 20 <size>
21 <width>320</width> 21 <width>240</width>
22 <height>32767</height> 22 <height>32767</height>
23 </size> 23 </size>
24 </property> 24 </property>
25 <property stdset="1"> 25 <property stdset="1">
26 <name>caption</name> 26 <name>caption</name>
27 <string>Advanced Interface Information</string> 27 <string>Advanced Interface Information</string>
28 </property> 28 </property>
29 <grid> 29 <grid>
30 <property stdset="1"> 30 <property stdset="1">
31 <name>margin</name> 31 <name>margin</name>
32 <number>11</number> 32 <number>11</number>
33 </property> 33 </property>
34 <property stdset="1"> 34 <property stdset="1">
35 <name>spacing</name> 35 <name>spacing</name>
36 <number>6</number> 36 <number>6</number>
37 </property> 37 </property>
38 <widget row="1" column="0" > 38 <widget row="1" column="0" >
39 <class>QLabel</class> 39 <class>QLabel</class>
40 <property stdset="1"> 40 <property stdset="1">
41 <name>name</name> 41 <name>name</name>
42 <cstring>TextLabel1</cstring> 42 <cstring>TextLabel1</cstring>
43 </property> 43 </property>
44 <property stdset="1"> 44 <property stdset="1">
45 <name>text</name> 45 <name>text</name>
46 <string>MAC Address</string> 46 <string>MAC Address</string>
47 </property> 47 </property>
48 </widget> 48 </widget>
49 <widget row="0" column="1" > 49 <widget row="0" column="1" >
50 <class>QLabel</class> 50 <class>QLabel</class>
51 <property stdset="1"> 51 <property stdset="1">
52 <name>name</name> 52 <name>name</name>
53 <cstring>interfaceName</cstring> 53 <cstring>interfaceName</cstring>
54 </property> 54 </property>
55 <property stdset="1"> 55 <property stdset="1">
56 <name>frameShape</name> 56 <name>frameShape</name>
57 <enum>Panel</enum> 57 <enum>Panel</enum>
58 </property> 58 </property>
59 <property stdset="1"> 59 <property stdset="1">
60 <name>frameShadow</name> 60 <name>frameShadow</name>
61 <enum>Sunken</enum> 61 <enum>Sunken</enum>
62 </property> 62 </property>
63 <property stdset="1"> 63 <property stdset="1">
64 <name>text</name> 64 <name>text</name>
65 <string>eth0</string> 65 <string>eth0</string>
66 </property> 66 </property>
67 </widget> 67 </widget>
68 <widget row="2" column="0" > 68 <widget row="2" column="0" >
69 <class>QLabel</class> 69 <class>QLabel</class>
70 <property stdset="1"> 70 <property stdset="1">
71 <name>name</name> 71 <name>name</name>
72 <cstring>TextLabel3</cstring> 72 <cstring>TextLabel3</cstring>
73 </property> 73 </property>
74 <property stdset="1"> 74 <property stdset="1">
75 <name>text</name> 75 <name>text</name>
76 <string>IP Address</string> 76 <string>IP Address</string>
77 </property> 77 </property>
78 </widget> 78 </widget>
79 <widget row="1" column="1" > 79 <widget row="1" column="1" >
80 <class>QLabel</class> 80 <class>QLabel</class>
81 <property stdset="1"> 81 <property stdset="1">
82 <name>name</name> 82 <name>name</name>
83 <cstring>macAddressLabel</cstring> 83 <cstring>macAddressLabel</cstring>
84 </property> 84 </property>
85 <property stdset="1"> 85 <property stdset="1">
86 <name>frameShape</name> 86 <name>frameShape</name>
87 <enum>Panel</enum> 87 <enum>Panel</enum>
88 </property> 88 </property>
89 <property stdset="1"> 89 <property stdset="1">
90 <name>frameShadow</name> 90 <name>frameShadow</name>
91 <enum>Sunken</enum> 91 <enum>Sunken</enum>
92 </property> 92 </property>
93 <property stdset="1"> 93 <property stdset="1">
94 <name>text</name> 94 <name>text</name>
95 <string>00:00:00:00:00:00</string> 95 <string>00:00:00:00:00:00</string>
96 </property> 96 </property>
97 </widget> 97 </widget>
98 <widget row="0" column="0" > 98 <widget row="0" column="0" >
99 <class>QLabel</class> 99 <class>QLabel</class>
100 <property stdset="1"> 100 <property stdset="1">
101 <name>name</name> 101 <name>name</name>
102 <cstring>TextLabel7</cstring> 102 <cstring>TextLabel7</cstring>
103 </property> 103 </property>
104 <property stdset="1"> 104 <property stdset="1">
105 <name>text</name> 105 <name>text</name>
106 <string>Interface</string> 106 <string>Interface</string>
107 </property> 107 </property>
108 </widget> 108 </widget>
109 <widget row="4" column="0" > 109 <widget row="4" column="0" >
110 <class>QLabel</class> 110 <class>QLabel</class>
111 <property stdset="1"> 111 <property stdset="1">
112 <name>name</name> 112 <name>name</name>
113 <cstring>TextLabel4</cstring> 113 <cstring>TextLabel4</cstring>
114 </property> 114 </property>
115 <property stdset="1"> 115 <property stdset="1">
116 <name>enabled</name> 116 <name>enabled</name>
117 <bool>true</bool> 117 <bool>true</bool>
118 </property> 118 </property>
119 <property stdset="1"> 119 <property stdset="1">
120 <name>text</name> 120 <name>text</name>
121 <string>Subnet Mask</string> 121 <string>Subnet Mask</string>
122 </property> 122 </property>
123 </widget> 123 </widget>
124 <widget row="2" column="1" > 124 <widget row="2" column="1" >
125 <class>QLabel</class> 125 <class>QLabel</class>
126 <property stdset="1"> 126 <property stdset="1">
127 <name>name</name> 127 <name>name</name>
128 <cstring>ipAddressLabel</cstring> 128 <cstring>ipAddressLabel</cstring>
129 </property> 129 </property>
130 <property stdset="1"> 130 <property stdset="1">
131 <name>frameShape</name> 131 <name>frameShape</name>
132 <enum>Panel</enum> 132 <enum>Panel</enum>
133 </property> 133 </property>
134 <property stdset="1"> 134 <property stdset="1">
135 <name>frameShadow</name> 135 <name>frameShadow</name>
136 <enum>Sunken</enum> 136 <enum>Sunken</enum>
137 </property> 137 </property>
138 <property stdset="1"> 138 <property stdset="1">
139 <name>text</name> 139 <name>text</name>
140 <string>0.0.0.0</string> 140 <string>0.0.0.0</string>
141 </property> 141 </property>
142 </widget> 142 </widget>
143 <widget row="4" column="1" > 143 <widget row="4" column="1" >
144 <class>QLabel</class> 144 <class>QLabel</class>
145 <property stdset="1"> 145 <property stdset="1">
146 <name>name</name> 146 <name>name</name>
147 <cstring>subnetMaskLabel</cstring> 147 <cstring>subnetMaskLabel</cstring>
148 </property> 148 </property>
149 <property stdset="1"> 149 <property stdset="1">
150 <name>frameShape</name> 150 <name>frameShape</name>
151 <enum>Panel</enum> 151 <enum>Panel</enum>
152 </property> 152 </property>
153 <property stdset="1"> 153 <property stdset="1">
154 <name>frameShadow</name> 154 <name>frameShadow</name>
155 <enum>Sunken</enum> 155 <enum>Sunken</enum>
156 </property> 156 </property>
157 <property stdset="1"> 157 <property stdset="1">
158 <name>text</name> 158 <name>text</name>
159 <string>0.0.0.0</string> 159 <string>0.0.0.0</string>
160 </property> 160 </property>
161 </widget> 161 </widget>
162 <widget row="3" column="0" > 162 <widget row="3" column="0" >
163 <class>QLabel</class> 163 <class>QLabel</class>
164 <property stdset="1"> 164 <property stdset="1">
165 <name>name</name> 165 <name>name</name>
166 <cstring>TextLabel2</cstring> 166 <cstring>TextLabel2</cstring>
167 </property> 167 </property>
168 <property stdset="1"> 168 <property stdset="1">
169 <name>text</name> 169 <name>text</name>
170 <string>Broadcast</string> 170 <string>Broadcast</string>
171 </property> 171 </property>
172 </widget> 172 </widget>
173 <widget row="3" column="1" > 173 <widget row="3" column="1" >
174 <class>QLabel</class> 174 <class>QLabel</class>
175 <property stdset="1"> 175 <property stdset="1">
176 <name>name</name> 176 <name>name</name>
177 <cstring>broadcastLabel</cstring> 177 <cstring>broadcastLabel</cstring>
178 </property> 178 </property>
179 <property stdset="1"> 179 <property stdset="1">
180 <name>frameShape</name> 180 <name>frameShape</name>
181 <enum>Panel</enum> 181 <enum>Panel</enum>
182 </property> 182 </property>
183 <property stdset="1"> 183 <property stdset="1">
184 <name>frameShadow</name> 184 <name>frameShadow</name>
185 <enum>Sunken</enum> 185 <enum>Sunken</enum>
186 </property> 186 </property>
187 </widget> 187 </widget>
188 <widget row="5" column="0" rowspan="1" colspan="2" > 188 <widget row="5" column="0" rowspan="1" colspan="2" >
189 <class>QGroupBox</class> 189 <class>QGroupBox</class>
190 <property stdset="1"> 190 <property stdset="1">
191 <name>name</name> 191 <name>name</name>
192 <cstring>GroupBox2</cstring> 192 <cstring>dhcpInformation</cstring>
193 </property> 193 </property>
194 <property stdset="1"> 194 <property stdset="1">
195 <name>title</name> 195 <name>title</name>
196 <string>DHCP Information</string> 196 <string>DHCP Information</string>
197 </property> 197 </property>
198 <grid> 198 <grid>
199 <property stdset="1"> 199 <property stdset="1">
200 <name>margin</name> 200 <name>margin</name>
201 <number>11</number> 201 <number>11</number>
202 </property> 202 </property>
203 <property stdset="1"> 203 <property stdset="1">
204 <name>spacing</name> 204 <name>spacing</name>
205 <number>6</number> 205 <number>6</number>
206 </property> 206 </property>
207 <widget row="0" column="0" > 207 <widget row="0" column="0" >
208 <class>QLabel</class> 208 <class>QLabel</class>
209 <property stdset="1"> 209 <property stdset="1">
210 <name>name</name> 210 <name>name</name>
211 <cstring>TextLabel6</cstring> 211 <cstring>TextLabel6</cstring>
212 </property> 212 </property>
213 <property stdset="1"> 213 <property stdset="1">
214 <name>text</name> 214 <name>text</name>
215 <string>DHCP Server</string> 215 <string>DHCP Server</string>
216 </property> 216 </property>
217 </widget> 217 </widget>
218 <widget row="2" column="1" > 218 <widget row="2" column="1" >
219 <class>QLabel</class> 219 <class>QLabel</class>
220 <property stdset="1"> 220 <property stdset="1">
221 <name>name</name> 221 <name>name</name>
222 <cstring>leaseExpiresLabel</cstring> 222 <cstring>leaseExpiresLabel</cstring>
223 </property> 223 </property>
224 <property stdset="1"> 224 <property stdset="1">
225 <name>frameShape</name> 225 <name>frameShape</name>
226 <enum>Panel</enum> 226 <enum>Panel</enum>
227 </property> 227 </property>
228 <property stdset="1"> 228 <property stdset="1">
229 <name>frameShadow</name> 229 <name>frameShadow</name>
230 <enum>Sunken</enum> 230 <enum>Sunken</enum>
231 </property> 231 </property>
232 <property stdset="1"> 232 <property stdset="1">
233 <name>text</name> 233 <name>text</name>
234 <string></string> 234 <string></string>
235 </property> 235 </property>
236 </widget> 236 </widget>
237 <widget row="1" column="1" > 237 <widget row="1" column="1" >
238 <class>QLabel</class> 238 <class>QLabel</class>
239 <property stdset="1"> 239 <property stdset="1">
240 <name>name</name> 240 <name>name</name>
241 <cstring>leaseObtainedLabel</cstring> 241 <cstring>leaseObtainedLabel</cstring>
242 </property> 242 </property>
243 <property stdset="1"> 243 <property stdset="1">
244 <name>frameShape</name> 244 <name>frameShape</name>
245 <enum>Panel</enum> 245 <enum>Panel</enum>
246 </property> 246 </property>
247 <property stdset="1"> 247 <property stdset="1">
248 <name>frameShadow</name> 248 <name>frameShadow</name>
249 <enum>Sunken</enum> 249 <enum>Sunken</enum>
250 </property> 250 </property>
251 <property stdset="1"> 251 <property stdset="1">
252 <name>text</name> 252 <name>text</name>
253 <string></string> 253 <string></string>
254 </property> 254 </property>
255 </widget> 255 </widget>
256 <widget row="2" column="0" > 256 <widget row="2" column="0" >
257 <class>QLabel</class> 257 <class>QLabel</class>
258 <property stdset="1"> 258 <property stdset="1">
259 <name>name</name> 259 <name>name</name>
260 <cstring>TextLabel9</cstring> 260 <cstring>TextLabel9</cstring>
261 </property> 261 </property>
262 <property stdset="1"> 262 <property stdset="1">
263 <name>text</name> 263 <name>text</name>
264 <string>Lease Expires</string> 264 <string>Lease Expires</string>
265 </property> 265 </property>
266 </widget> 266 </widget>
267 <widget row="1" column="0" > 267 <widget row="1" column="0" >
268 <class>QLabel</class> 268 <class>QLabel</class>
269 <property stdset="1"> 269 <property stdset="1">
270 <name>name</name> 270 <name>name</name>
271 <cstring>TextLabel8</cstring> 271 <cstring>TextLabel8</cstring>
272 </property> 272 </property>
273 <property stdset="1"> 273 <property stdset="1">
274 <name>text</name> 274 <name>text</name>
275 <string>Lease Obtained</string> 275 <string>Lease Obtained</string>
276 </property> 276 </property>
277 </widget> 277 </widget>
278 <widget row="0" column="1" > 278 <widget row="0" column="1" >
279 <class>QLabel</class> 279 <class>QLabel</class>
280 <property stdset="1"> 280 <property stdset="1">
281 <name>name</name> 281 <name>name</name>
282 <cstring>dhcpServerLabel</cstring> 282 <cstring>dhcpServerLabel</cstring>
283 </property> 283 </property>
284 <property stdset="1"> 284 <property stdset="1">
285 <name>frameShape</name> 285 <name>frameShape</name>
286 <enum>Panel</enum> 286 <enum>Panel</enum>
287 </property> 287 </property>
288 <property stdset="1"> 288 <property stdset="1">
289 <name>frameShadow</name> 289 <name>frameShadow</name>
290 <enum>Sunken</enum> 290 <enum>Sunken</enum>
291 </property> 291 </property>
292 <property stdset="1"> 292 <property stdset="1">
293 <name>text</name> 293 <name>text</name>
294 <string></string> 294 <string></string>
295 </property> 295 </property>
296 </widget> 296 </widget>
297 </grid> 297 </grid>
298 </widget> 298 </widget>
299 <spacer row="6" column="1" > 299 <spacer row="6" column="1" >
300 <property> 300 <property>
301 <name>name</name> 301 <name>name</name>
302 <cstring>Spacer2</cstring> 302 <cstring>Spacer2</cstring>
303 </property> 303 </property>
304 <property stdset="1"> 304 <property stdset="1">
305 <name>orientation</name> 305 <name>orientation</name>
306 <enum>Vertical</enum> 306 <enum>Vertical</enum>
307 </property> 307 </property>
308 <property stdset="1"> 308 <property stdset="1">
309 <name>sizeType</name> 309 <name>sizeType</name>
310 <enum>Expanding</enum> 310 <enum>Expanding</enum>
311 </property> 311 </property>
312 <property> 312 <property>
313 <name>sizeHint</name> 313 <name>sizeHint</name>
314 <size> 314 <size>
315 <width>20</width> 315 <width>20</width>
316 <height>20</height> 316 <height>20</height>
317 </size> 317 </size>
318 </property> 318 </property>
319 </spacer> 319 </spacer>
320 </grid> 320 </grid>
diff --git a/noncore/settings/networksettings/interfaceinformation.ui b/noncore/settings/networksettings/interfaceinformation.ui
index 76af19c..fc99fce 100644
--- a/noncore/settings/networksettings/interfaceinformation.ui
+++ b/noncore/settings/networksettings/interfaceinformation.ui
@@ -1,143 +1,143 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>InterfaceInformation</class> 2<class>InterfaceInformation</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>InterfaceInformation</cstring> 7 <cstring>InterfaceInformation</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>199</width> 14 <width>219</width>
15 <height>244</height> 15 <height>255</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Interface Information</string> 20 <string>Interface Information</string>
21 </property> 21 </property>
22 <grid> 22 <grid>
23 <property stdset="1"> 23 <property stdset="1">
24 <name>margin</name> 24 <name>margin</name>
25 <number>11</number> 25 <number>11</number>
26 </property> 26 </property>
27 <property stdset="1"> 27 <property stdset="1">
28 <name>spacing</name> 28 <name>spacing</name>
29 <number>6</number> 29 <number>6</number>
30 </property> 30 </property>
31 <widget row="4" column="0" rowspan="1" colspan="2" > 31 <widget row="4" column="0" rowspan="1" colspan="2" >
32 <class>QLayoutWidget</class> 32 <class>QLayoutWidget</class>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>name</name> 34 <name>name</name>
35 <cstring>Layout1</cstring> 35 <cstring>Layout1</cstring>
36 </property> 36 </property>
37 <grid> 37 <grid>
38 <property stdset="1"> 38 <property stdset="1">
39 <name>margin</name> 39 <name>margin</name>
40 <number>0</number> 40 <number>0</number>
41 </property> 41 </property>
42 <property stdset="1"> 42 <property stdset="1">
43 <name>spacing</name> 43 <name>spacing</name>
44 <number>6</number> 44 <number>6</number>
45 </property> 45 </property>
46 <widget row="1" column="0" > 46 <widget row="1" column="0" >
47 <class>QPushButton</class> 47 <class>QPushButton</class>
48 <property stdset="1"> 48 <property stdset="1">
49 <name>name</name> 49 <name>name</name>
50 <cstring>refreshButton</cstring> 50 <cstring>refreshButton</cstring>
51 </property> 51 </property>
52 <property stdset="1"> 52 <property stdset="1">
53 <name>text</name> 53 <name>text</name>
54 <string>Refresh</string> 54 <string>Refresh</string>
55 </property> 55 </property>
56 </widget> 56 </widget>
57 <widget row="0" column="1" > 57 <widget row="0" column="1" >
58 <class>QPushButton</class> 58 <class>QPushButton</class>
59 <property stdset="1"> 59 <property stdset="1">
60 <name>name</name> 60 <name>name</name>
61 <cstring>stopButton</cstring> 61 <cstring>stopButton</cstring>
62 </property> 62 </property>
63 <property stdset="1"> 63 <property stdset="1">
64 <name>text</name> 64 <name>text</name>
65 <string>Stop</string> 65 <string>Stop</string>
66 </property> 66 </property>
67 </widget> 67 </widget>
68 <widget row="1" column="1" > 68 <widget row="1" column="1" >
69 <class>QPushButton</class> 69 <class>QPushButton</class>
70 <property stdset="1"> 70 <property stdset="1">
71 <name>name</name> 71 <name>name</name>
72 <cstring>restartButton</cstring> 72 <cstring>restartButton</cstring>
73 </property> 73 </property>
74 <property stdset="1"> 74 <property stdset="1">
75 <name>text</name> 75 <name>text</name>
76 <string>Restart</string> 76 <string>Restart</string>
77 </property> 77 </property>
78 </widget> 78 </widget>
79 <widget row="0" column="0" > 79 <widget row="0" column="0" >
80 <class>QPushButton</class> 80 <class>QPushButton</class>
81 <property stdset="1"> 81 <property stdset="1">
82 <name>name</name> 82 <name>name</name>
83 <cstring>startButton</cstring> 83 <cstring>startButton</cstring>
84 </property> 84 </property>
85 <property stdset="1"> 85 <property stdset="1">
86 <name>text</name> 86 <name>text</name>
87 <string>Start</string> 87 <string>Start</string>
88 </property> 88 </property>
89 </widget> 89 </widget>
90 </grid> 90 </grid>
91 </widget> 91 </widget>
92 <widget row="0" column="0" > 92 <widget row="0" column="0" >
93 <class>Line</class> 93 <class>Line</class>
94 <property stdset="1"> 94 <property stdset="1">
95 <name>name</name> 95 <name>name</name>
96 <cstring>Line1</cstring> 96 <cstring>Line1</cstring>
97 </property> 97 </property>
98 <property stdset="1"> 98 <property stdset="1">
99 <name>orientation</name> 99 <name>orientation</name>
100 <enum>Horizontal</enum> 100 <enum>Horizontal</enum>
101 </property> 101 </property>
102 </widget> 102 </widget>
103 <widget row="0" column="0" > 103 <widget row="0" column="0" >
104 <class>QLabel</class> 104 <class>QLabel</class>
105 <property stdset="1"> 105 <property stdset="1">
106 <name>name</name> 106 <name>name</name>
107 <cstring>TextLabel22</cstring> 107 <cstring>TextLabel22</cstring>
108 </property> 108 </property>
109 <property stdset="1"> 109 <property stdset="1">
110 <name>text</name> 110 <name>text</name>
111 <string>IP Address</string> 111 <string>IP Address</string>
112 </property> 112 </property>
113 </widget> 113 </widget>
114 <widget row="1" column="0" > 114 <widget row="1" column="0" >
115 <class>QLabel</class> 115 <class>QLabel</class>
116 <property stdset="1"> 116 <property stdset="1">
117 <name>name</name> 117 <name>name</name>
118 <cstring>TextLabel23</cstring> 118 <cstring>TextLabel23</cstring>
119 </property> 119 </property>
120 <property stdset="1"> 120 <property stdset="1">
121 <name>text</name> 121 <name>text</name>
122 <string>Subnet Mask</string> 122 <string>Subnet Mask</string>
123 </property> 123 </property>
124 </widget> 124 </widget>
125 <widget row="2" column="0" > 125 <widget row="2" column="0" >
126 <class>QLabel</class> 126 <class>QLabel</class>
127 <property stdset="1"> 127 <property stdset="1">
128 <name>name</name> 128 <name>name</name>
129 <cstring>TextLabel21</cstring> 129 <cstring>TextLabel21</cstring>
130 </property> 130 </property>
131 <property stdset="1"> 131 <property stdset="1">
132 <name>text</name> 132 <name>text</name>
133 <string>MAC Address</string> 133 <string>MAC Address</string>
134 </property> 134 </property>
135 </widget> 135 </widget>
136 <widget row="3" column="0" > 136 <widget row="3" column="0" >
137 <class>QLabel</class> 137 <class>QLabel</class>
138 <property stdset="1"> 138 <property stdset="1">
139 <name>name</name> 139 <name>name</name>
140 <cstring>TextLabel24</cstring> 140 <cstring>TextLabel24</cstring>
141 </property> 141 </property>
142 <property stdset="1"> 142 <property stdset="1">
143 <name>frameShape</name> 143 <name>frameShape</name>
@@ -208,136 +208,138 @@
208 <name>text</name> 208 <name>text</name>
209 <string></string> 209 <string></string>
210 </property> 210 </property>
211 </widget> 211 </widget>
212 <widget row="0" column="1" > 212 <widget row="0" column="1" >
213 <class>QLabel</class> 213 <class>QLabel</class>
214 <property stdset="1"> 214 <property stdset="1">
215 <name>name</name> 215 <name>name</name>
216 <cstring>ipAddressLabel</cstring> 216 <cstring>ipAddressLabel</cstring>
217 </property> 217 </property>
218 <property stdset="1"> 218 <property stdset="1">
219 <name>frameShape</name> 219 <name>frameShape</name>
220 <enum>Panel</enum> 220 <enum>Panel</enum>
221 </property> 221 </property>
222 <property stdset="1"> 222 <property stdset="1">
223 <name>frameShadow</name> 223 <name>frameShadow</name>
224 <enum>Sunken</enum> 224 <enum>Sunken</enum>
225 </property> 225 </property>
226 <property stdset="1"> 226 <property stdset="1">
227 <name>text</name> 227 <name>text</name>
228 <string>0.0.0.0</string> 228 <string>0.0.0.0</string>
229 </property> 229 </property>
230 </widget> 230 </widget>
231 <spacer row="7" column="1" > 231 <spacer row="7" column="1" >
232 <property> 232 <property>
233 <name>name</name> 233 <name>name</name>
234 <cstring>Spacer18</cstring> 234 <cstring>Spacer18</cstring>
235 </property> 235 </property>
236 <property stdset="1"> 236 <property stdset="1">
237 <name>orientation</name> 237 <name>orientation</name>
238 <enum>Vertical</enum> 238 <enum>Vertical</enum>
239 </property> 239 </property>
240 <property stdset="1"> 240 <property stdset="1">
241 <name>sizeType</name> 241 <name>sizeType</name>
242 <enum>Expanding</enum> 242 <enum>Expanding</enum>
243 </property> 243 </property>
244 <property> 244 <property>
245 <name>sizeHint</name> 245 <name>sizeHint</name>
246 <size> 246 <size>
247 <width>20</width> 247 <width>20</width>
248 <height>20</height> 248 <height>20</height>
249 </size> 249 </size>
250 </property> 250 </property>
251 </spacer> 251 </spacer>
252 <widget row="6" column="0" rowspan="1" colspan="2" > 252 <widget row="6" column="0" rowspan="1" colspan="2" >
253 <class>QLayoutWidget</class> 253 <class>QLayoutWidget</class>
254 <property stdset="1"> 254 <property stdset="1">
255 <name>name</name> 255 <name>name</name>
256 <cstring>Layout2</cstring> 256 <cstring>Layout2</cstring>
257 </property> 257 </property>
258 <hbox> 258 <hbox>
259 <property stdset="1"> 259 <property stdset="1">
260 <name>margin</name> 260 <name>margin</name>
261 <number>0</number> 261 <number>0</number>
262 </property> 262 </property>
263 <property stdset="1"> 263 <property stdset="1">
264 <name>spacing</name> 264 <name>spacing</name>
265 <number>6</number> 265 <number>6</number>
266 </property> 266 </property>
267 <spacer> 267 <spacer>
268 <property> 268 <property>
269 <name>name</name> 269 <name>name</name>
270 <cstring>Spacer10</cstring> 270 <cstring>Spacer10</cstring>
271 </property> 271 </property>
272 <property stdset="1"> 272 <property stdset="1">
273 <name>orientation</name> 273 <name>orientation</name>
274 <enum>Horizontal</enum> 274 <enum>Horizontal</enum>
275 </property> 275 </property>
276 <property stdset="1"> 276 <property stdset="1">
277 <name>sizeType</name> 277 <name>sizeType</name>
278 <enum>Expanding</enum> 278 <enum>Expanding</enum>
279 </property> 279 </property>
280 <property> 280 <property>
281 <name>sizeHint</name> 281 <name>sizeHint</name>
282 <size> 282 <size>
283 <width>20</width> 283 <width>20</width>
284 <height>20</height> 284 <height>20</height>
285 </size> 285 </size>
286 </property> 286 </property>
287 </spacer> 287 </spacer>
288 <widget> 288 <widget>
289 <class>QPushButton</class> 289 <class>QPushButton</class>
290 <property stdset="1"> 290 <property stdset="1">
291 <name>name</name> 291 <name>name</name>
292 <cstring>advancedButton</cstring> 292 <cstring>advancedButton</cstring>
293 </property> 293 </property>
294 <property stdset="1"> 294 <property stdset="1">
295 <name>text</name> 295 <name>text</name>
296 <string>View Advanced Information</string> 296 <string>View Advanced Information</string>
297 </property> 297 </property>
298 </widget> 298 </widget>
299 </hbox> 299 </hbox>
300 </widget> 300 </widget>
301 <widget row="5" column="0" rowspan="1" colspan="2" > 301 <widget row="5" column="0" rowspan="1" colspan="2" >
302 <class>Line</class> 302 <class>Line</class>
303 <property stdset="1"> 303 <property stdset="1">
304 <name>name</name> 304 <name>name</name>
305 <cstring>Line5</cstring> 305 <cstring>Line5</cstring>
306 </property> 306 </property>
307 <property stdset="1"> 307 <property stdset="1">
308 <name>orientation</name> 308 <name>orientation</name>
309 <enum>Horizontal</enum> 309 <enum>Horizontal</enum>
310 </property> 310 </property>
311 </widget> 311 </widget>
312 </grid> 312 </grid>
313</widget> 313</widget>
314<customwidgets> 314<customwidgets>
315 <customwidget> 315 <customwidget>
316 <class>QWidget</class> 316 <class>QWidget</class>
317 <header location="local">qwidget.h</header> 317 <header location="local">qwidget.h</header>
318 <sizehint> 318 <sizehint>
319 <width>100</width> 319 <width>100</width>
320 <height>100</height> 320 <height>100</height>
321 </sizehint> 321 </sizehint>
322 <container>0</container> 322 <container>0</container>
323 <sizepolicy> 323 <sizepolicy>
324 <hordata>7</hordata> 324 <hordata>7</hordata>
325 <verdata>7</verdata> 325 <verdata>7</verdata>
326 </sizepolicy> 326 </sizepolicy>
327 <pixmap>image0</pixmap> 327 <pixmap>image0</pixmap>
328 </customwidget> 328 </customwidget>
329</customwidgets> 329</customwidgets>
330<images> 330<images>
331 <image> 331 <image>
332 <name>image0</name> 332 <name>image0</name>
333 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> 333 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
334 </image> 334 </image>
335</images> 335</images>
336<connections>
337</connections>
336<tabstops> 338<tabstops>
337 <tabstop>startButton</tabstop> 339 <tabstop>startButton</tabstop>
338 <tabstop>stopButton</tabstop> 340 <tabstop>stopButton</tabstop>
339 <tabstop>refreshButton</tabstop> 341 <tabstop>refreshButton</tabstop>
340 <tabstop>restartButton</tabstop> 342 <tabstop>restartButton</tabstop>
341 <tabstop>advancedButton</tabstop> 343 <tabstop>advancedButton</tabstop>
342</tabstops> 344</tabstops>
343</UI> 345</UI>
diff --git a/noncore/settings/networksettings/interfaceinformationimp.cpp b/noncore/settings/networksettings/interfaceinformationimp.cpp
index 59a6400..43483fb 100644
--- a/noncore/settings/networksettings/interfaceinformationimp.cpp
+++ b/noncore/settings/networksettings/interfaceinformationimp.cpp
@@ -1,67 +1,70 @@
1#include "interfaceinformationimp.h" 1#include "interfaceinformationimp.h"
2#include "interfaceadvanced.h" 2#include "interfaceadvanced.h"
3 3
4#include <qpushbutton.h> 4#include <qpushbutton.h>
5#include <qlabel.h> 5#include <qlabel.h>
6#include <qgroupbox.h>
6#include <assert.h> 7#include <assert.h>
7 8
8/** 9/**
9 * Constructor for the InterfaceInformationImp class. This class pretty much 10 * Constructor for the InterfaceInformationImp class. This class pretty much
10 * just display's information about the interface that is passed to it. 11 * just display's information about the interface that is passed to it.
11 */ 12 */
12InterfaceInformationImp::InterfaceInformationImp(QWidget *parent, const char *name, Interface *i, WFlags f):InterfaceInformation(parent, name, f){ 13InterfaceInformationImp::InterfaceInformationImp(QWidget *parent, const char *name, Interface *i, WFlags f):InterfaceInformation(parent, name, f){
13 assert(i); 14 assert(i);
14 15
15 interface = i; 16 interface = i;
16 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 17 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
17 updateInterface(interface); 18 updateInterface(interface);
18 connect(startButton, SIGNAL(clicked()), interface, SLOT(start())); 19 connect(startButton, SIGNAL(clicked()), interface, SLOT(start()));
19 connect(stopButton, SIGNAL(clicked()), interface, SLOT(stop())); 20 connect(stopButton, SIGNAL(clicked()), interface, SLOT(stop()));
20 connect(restartButton, SIGNAL(clicked()), interface, SLOT(restart())); 21 connect(restartButton, SIGNAL(clicked()), interface, SLOT(restart()));
21 connect(refreshButton, SIGNAL(clicked()), interface, SLOT(refresh())); 22 connect(refreshButton, SIGNAL(clicked()), interface, SLOT(refresh()));
22 connect(advancedButton, SIGNAL(clicked()), this, SLOT(advanced())); 23 connect(advancedButton, SIGNAL(clicked()), this, SLOT(advanced()));
23 24
24} 25}
25 26
26/** 27/**
27 * Update the interface information and buttons. 28 * Update the interface information and buttons.
28 * @param Intarface *i the interface to update (should be the one we already 29 * @param Intarface *i the interface to update (should be the one we already
29 * know about). 30 * know about).
30 */ 31 */
31void InterfaceInformationImp::updateInterface(Interface *i){ 32void InterfaceInformationImp::updateInterface(Interface *i){
32 if(interface->getStatus()){ 33 if(interface->getStatus()){
33 startButton->setEnabled(false); 34 startButton->setEnabled(false);
34 stopButton->setEnabled(true); 35 stopButton->setEnabled(true);
35 restartButton->setEnabled(true); 36 restartButton->setEnabled(true);
36 } 37 }
37 else{ 38 else{
38 startButton->setEnabled(true); 39 startButton->setEnabled(true);
39 stopButton->setEnabled(false); 40 stopButton->setEnabled(false);
40 restartButton->setEnabled(false); 41 restartButton->setEnabled(false);
41 } 42 }
42 macAddressLabel->setText(interface->getMacAddress()); 43 macAddressLabel->setText(interface->getMacAddress());
43 ipAddressLabel->setText(interface->getIp()); 44 ipAddressLabel->setText(interface->getIp());
44 subnetMaskLabel->setText(interface->getSubnetMask()); 45 subnetMaskLabel->setText(interface->getSubnetMask());
45 broadcastLabel->setText(interface->getBroadcast()); 46 broadcastLabel->setText(interface->getBroadcast());
46} 47}
47 48
48/** 49/**
49 * Create the advanced widget. Fill it with the current interface's information. 50 * Create the advanced widget. Fill it with the current interface's information.
50 * Display it. 51 * Display it.
51 */ 52 */
52void InterfaceInformationImp::advanced(){ 53void InterfaceInformationImp::advanced(){
53 InterfaceAdvanced *a = new InterfaceAdvanced(0, "InterfaceAdvanced"); 54 InterfaceAdvanced *a = new InterfaceAdvanced(0, "InterfaceAdvanced");
54 a->interfaceName->setText(interface->getInterfaceName()); 55 a->interfaceName->setText(interface->getInterfaceName());
55 a->macAddressLabel->setText(interface->getMacAddress()); 56 a->macAddressLabel->setText(interface->getMacAddress());
56 a->ipAddressLabel->setText(interface->getIp()); 57 a->ipAddressLabel->setText(interface->getIp());
57 a->subnetMaskLabel->setText(interface->getSubnetMask()); 58 a->subnetMaskLabel->setText(interface->getSubnetMask());
58 a->broadcastLabel->setText(interface->getBroadcast()); 59 a->broadcastLabel->setText(interface->getBroadcast());
59 a->dhcpServerLabel->setText(interface->getDhcpServerIp()); 60 a->dhcpServerLabel->setText(interface->getDhcpServerIp());
60 a->leaseObtainedLabel->setText(interface->getLeaseObtained()); 61 a->leaseObtainedLabel->setText(interface->getLeaseObtained());
61 a->leaseExpiresLabel->setText(interface->getLeaseExpires()); 62 a->leaseExpiresLabel->setText(interface->getLeaseExpires());
63 a->dhcpInformation->setEnabled(interface->isDhcp());
64
62 a->showMaximized(); 65 a->showMaximized();
63 a->show(); 66 a->show();
64} 67}
65 68
66// infoimp.cpp 69// infoimp.cpp
67 70
diff --git a/noncore/settings/networksettings/interfaces.cpp b/noncore/settings/networksettings/interfaces.cpp
index 1287d90..eef42df 100644
--- a/noncore/settings/networksettings/interfaces.cpp
+++ b/noncore/settings/networksettings/interfaces.cpp
@@ -220,318 +220,325 @@ QString Interfaces::getInterfaceFamily(bool &error){
220 return QString(); 220 return QString();
221 } 221 }
222 error = false; 222 error = false;
223 return line.mid(0, findSpace); 223 return line.mid(0, findSpace);
224} 224}
225 225
226/** 226/**
227 * Gets the method of the interface that is currently selected. 227 * Gets the method of the interface that is currently selected.
228 * @return QString name of the method such as staic or dhcp. 228 * @return QString name of the method such as staic or dhcp.
229 * See the man page of interfaces for possible methods depending on the family. 229 * See the man page of interfaces for possible methods depending on the family.
230 * @param error set to true if any error occurs, false otherwise. 230 * @param error set to true if any error occurs, false otherwise.
231 */ 231 */
232QString Interfaces::getInterfaceMethod(bool &error){ 232QString Interfaces::getInterfaceMethod(bool &error){
233 QString name = getInterfaceName(error); 233 QString name = getInterfaceName(error);
234 if(error){ 234 if(error){
235 error = true; 235 error = true;
236 return QString(); 236 return QString();
237 } 237 }
238 QString family = getInterfaceFamily(error); 238 QString family = getInterfaceFamily(error);
239 if(error){ 239 if(error){
240 error = true; 240 error = true;
241 return QString(); 241 return QString();
242 } 242 }
243 QString line = (*currentIface); 243 QString line = (*currentIface);
244 line = line.mid(QString(IFACE).length()+1, line.length()); 244 line = line.mid(QString(IFACE).length()+1, line.length());
245 line = line.mid(name.length()+1, line.length()); 245 line = line.mid(name.length()+1, line.length());
246 line = line.mid(family.length()+1, line.length()); 246 line = line.mid(family.length()+1, line.length());
247 line = line.simplifyWhiteSpace(); 247 line = line.simplifyWhiteSpace();
248 error = false; 248 error = false;
249 return line; 249 return line;
250} 250}
251 251
252/** 252/**
253 * Sets the interface name to newName. 253 * Sets the interface name to newName.
254 * @param newName the new name of the interface. All whitespace is removed. 254 * @param newName the new name of the interface. All whitespace is removed.
255 * @return bool true if successfull. 255 * @return bool true if successfull.
256 */ 256 */
257bool Interfaces::setInterfaceName(QString newName){ 257bool Interfaces::setInterfaceName(QString newName){
258 if(currentIface == interfaces.end()) 258 if(currentIface == interfaces.end())
259 return false; 259 return false;
260 newName = newName.simplifyWhiteSpace(); 260 newName = newName.simplifyWhiteSpace();
261 newName = newName.replace(QRegExp(" "), ""); 261 newName = newName.replace(QRegExp(" "), "");
262 bool returnValue = false; 262 bool returnValue = false;
263 (*currentIface) = QString("iface %1 %2 %3").arg(newName).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue)); 263 (*currentIface) = QString("iface %1 %2 %3").arg(newName).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue));
264 return !returnValue; 264 return !returnValue;
265} 265}
266 266
267/** 267/**
268 * Sets the interface family to newName. 268 * Sets the interface family to newName.
269 * @param newName the new name of the interface. Must be one of the families 269 * @param newName the new name of the interface. Must be one of the families
270 * defined in the interfaces.h file. 270 * defined in the interfaces.h file.
271 * @return bool true if successfull. 271 * @return bool true if successfull.
272 */ 272 */
273bool Interfaces::setInterfaceFamily(QString newName){ 273bool Interfaces::setInterfaceFamily(QString newName){
274 if(currentIface == interfaces.end()) 274 if(currentIface == interfaces.end())
275 return false; 275 return false;
276 if(acceptedFamily.contains(newName)==0) 276 if(acceptedFamily.contains(newName)==0)
277 return false; 277 return false;
278 bool returnValue = false; 278 bool returnValue = false;
279 (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(newName).arg(getInterfaceMethod(returnValue)); 279 (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(newName).arg(getInterfaceMethod(returnValue));
280 return !returnValue; 280 return !returnValue;
281} 281}
282 282
283/** 283/**
284 * Sets the interface method to newName 284 * Sets the interface method to newName
285 * @param newName the new name of the interface 285 * @param newName the new name of the interface
286 * @return bool true if successfull. 286 * @return bool true if successfull.
287 */ 287 */
288bool Interfaces::setInterfaceMethod(QString newName){ 288bool Interfaces::setInterfaceMethod(QString newName){
289 if(currentIface == interfaces.end()) 289 if(currentIface == interfaces.end())
290 return false; 290 return false;
291 bool returnValue = false; 291 bool returnValue = false;
292 (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(getInterfaceFamily(returnValue)).arg(newName); 292 (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(getInterfaceFamily(returnValue)).arg(newName);
293 return !returnValue; 293 return !returnValue;
294} 294}
295 295
296/** 296/**
297 * Get a value for an option in the currently selected interface. For example 297 * Get a value for an option in the currently selected interface. For example
298 * calling getInterfaceOption("address") on the following stanza would 298 * calling getInterfaceOption("address") on the following stanza would
299 * return 192.168.1.1. 299 * return 192.168.1.1.
300 * iface eth0 static 300 * iface eth0 static
301 * address 192.168.1.1 301 * address 192.168.1.1
302 * @param option the options to get the value. 302 * @param option the options to get the value.
303 * @param error set to true if any error occurs, false otherwise. 303 * @param error set to true if any error occurs, false otherwise.
304 * @return QString the options value. QString::null if error == true 304 * @return QString the options value. QString::null if error == true
305 */ 305 */
306QString Interfaces::getInterfaceOption(QString option, bool &error){ 306QString Interfaces::getInterfaceOption(QString option, bool &error){
307 return getOption(currentIface, option, error); 307 return getOption(currentIface, option, error);
308} 308}
309 309
310/** 310/**
311 * Set a value for an option in the currently selected interface. If option 311 * Set a value for an option in the currently selected interface. If option
312 * doesn't exist then it is added along with the value. If value is set to an 312 * doesn't exist then it is added along with the value. If value is set to an
313 * empty string then option is removed. 313 * empty string then option is removed.
314 * @param option the options to set the value. 314 * @param option the options to set the value.
315 * @param value the value that option should be set to. 315 * @param value the value that option should be set to.
316 * @param error set to true if any error occurs, false otherwise. 316 * @param error set to true if any error occurs, false otherwise.
317 * @return QString the options value. QString::null if error == true 317 * @return QString the options value. QString::null if error == true
318 */ 318 */
319bool Interfaces::setInterfaceOption(QString option, QString value){ 319bool Interfaces::setInterfaceOption(QString option, QString value){
320 return setOption(currentIface, option, value); 320 return setOption(currentIface, option, value);
321} 321}
322 322
323/** 323/**
324 * Removes all of the options from the currently selected interface. 324 * Removes all of the options from the currently selected interface.
325 * @return bool error if if successfull 325 * @return bool error if if successfull
326 */ 326 */
327bool Interfaces::removeAllInterfaceOptions(){ 327bool Interfaces::removeAllInterfaceOptions(){
328 return removeAllOptions(currentIface); 328 return removeAllOptions(currentIface);
329} 329}
330 330
331/** 331/**
332 * Set the current map to interface's map. This needs to be done before you 332 * Set the current map to interface's map. This needs to be done before you
333 * can call addMapping(), set/getMap(), and get/setScript(). 333 * can call addMapping(), set/getMap(), and get/setScript().
334 * @param interface the name of the interface to set. All whitespace is 334 * @param interface the name of the interface to set. All whitespace is
335 * removed from the interface name. 335 * removed from the interface name.
336 * @return bool true if it is successfull. 336 * @return bool true if it is successfull.
337 */ 337 */
338bool Interfaces::setMapping(QString interface){ 338bool Interfaces::setMapping(QString interface){
339 interface = interface.simplifyWhiteSpace(); 339 interface = interface.simplifyWhiteSpace();
340 interface = interface.replace(QRegExp(" "), ""); 340 interface = interface.replace(QRegExp(" "), "");
341 return setStanza(MAPPING, interface, currentMapping); 341 return setStanza(MAPPING, interface, currentMapping);
342} 342}
343 343
344/** 344/**
345 * Adds a new Mapping to the interfaces file with interfaces. 345 * Adds a new Mapping to the interfaces file with interfaces.
346 * @param interface the name(s) of the interfaces to set to this mapping 346 * @param interface the name(s) of the interfaces to set to this mapping
347 */ 347 */
348void Interfaces::addMapping(QString interfaces){ 348void Interfaces::addMapping(QString option){
349 interfaces.append(""); 349 interfaces.append("");
350 interfaces.append(QString(MAPPING " %1").arg(interfaces)); 350 interfaces.append(QString(MAPPING " %1").arg(option));
351} 351}
352 352
353/** 353/**
354 * Set a map option within a mapping. 354 * Set a map option within a mapping.
355 * @param map map to use 355 * @param map map to use
356 * @param value value to go with map 356 * @param value value to go with map
357 * @return bool true if it is successfull. 357 * @return bool true if it is successfull.
358 */ 358 */
359bool Interfaces::setMap(QString map, QString value){ 359bool Interfaces::setMap(QString map, QString value){
360 return setOption(currentMapping, map, value); 360 return setOption(currentMapping, map, value);
361} 361}
362 362
363/** 363/**
364 * Get a map value within a mapping. 364 * Get a map value within a mapping.
365 * @param map map to get value of 365 * @param map map to get value of
366 * @param bool true if it is successfull. 366 * @param bool true if it is successfull.
367 * @return value that goes to the map 367 * @return value that goes to the map
368 */ 368 */
369QString Interfaces::getMap(QString map, bool &error){ 369QString Interfaces::getMap(QString map, bool &error){
370 return getOption(currentMapping, map, error); 370 return getOption(currentMapping, map, error);
371} 371}
372 372
373/** 373/**
374 * Sets a script value of the current mapping to argument. 374 * Sets a script value of the current mapping to argument.
375 * @param argument the script name. 375 * @param argument the script name.
376 * @return true if successfull. 376 * @return true if successfull.
377 */ 377 */
378bool Interfaces::setScript(QString argument){ 378bool Interfaces::setScript(QString argument){
379 return setOption(currentMapping, "script", argument); 379 return setOption(currentMapping, "script", argument);
380} 380}
381 381
382/** 382/**
383 * @param error true if could not retrieve the current script argument. 383 * @param error true if could not retrieve the current script argument.
384 * @return QString the argument of the script for the current mapping. 384 * @return QString the argument of the script for the current mapping.
385 */ 385 */
386QString Interfaces::getScript(bool &error){ 386QString Interfaces::getScript(bool &error){
387 return getOption(currentMapping, "script", error); 387 return getOption(currentMapping, "script", error);
388} 388}
389 389
390/** 390/**
391 * Helper function used to parse through the QStringList and put pointers in 391 * Helper function used to parse through the QStringList and put pointers in
392 * the correct place. 392 * the correct place.
393 * @param stanza The stanza (auto, iface, mapping) to look for. 393 * @param stanza The stanza (auto, iface, mapping) to look for.
394 * @param option string that must be in the stanza's main line. 394 * @param option string that must be in the stanza's main line.
395 * @param interator interator to place at location of stanza if successfull. 395 * @param interator interator to place at location of stanza if successfull.
396 * @return bool true if the stanza is found. 396 * @return bool true if the stanza is found.
397 */ 397 */
398bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){ 398bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){
399 bool found = false; 399 bool found = false;
400 iterator = interfaces.end(); 400 iterator = interfaces.end();
401 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { 401 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
402 QString line = (*it).simplifyWhiteSpace(); 402 QString line = (*it).simplifyWhiteSpace();
403 if(line.contains(stanza) && line.contains(option)){ 403 if(line.contains(stanza) && line.contains(option)){
404 if(found == true){ 404 if(found == true){
405 qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1()); 405 qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1());
406 } 406 }
407 qDebug("Found");
407 found = true; 408 found = true;
408 iterator = it; 409 iterator = it;
409 } 410 }
410 } 411 }
411 return !found; 412 return found;
412} 413}
413 414
414/** 415/**
415 * Sets a value of an option in a stanza 416 * Sets a value of an option in a stanza
416 * @param start the start of the stanza 417 * @param start the start of the stanza
417 * @param option the option to use when setting value. 418 * @param option the option to use when setting value.
418 * @return bool true if successfull, false otherwise. 419 * @return bool true if successfull, false otherwise.
419 */ 420 */
420bool Interfaces::setOption(QStringList::Iterator start, QString option, QString value){ 421bool Interfaces::setOption(QStringList::Iterator start, QString option, QString value){
421 if(start == interfaces.end()) 422 if(start == interfaces.end())
422 return false; 423 return false;
423 424
424 bool found = false; 425 bool found = false;
425 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { 426 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) {
426 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ 427 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
427 if(!found && value != ""){ 428 if(!found && value != ""){
428 // Got to the end of the stanza without finding it, so append it. 429 // Got to the end of the stanza without finding it, so append it.
429 interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value)); 430 interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value));
430 } 431 }
432 found = true;
431 break; 433 break;
432 } 434 }
433 if((*it).contains(option)){ 435 if((*it).contains(option) && it != start){
434 // Found it in stanza so replace it. 436 // Found it in stanza so replace it.
435 if(found) 437 if(found)
436 qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); 438 qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1());
437 found = true; 439 found = true;
438 if(value == "") 440 if(value == "")
439 (*it) = ""; 441 (*it) = "";
440 else 442 else
441 (*it) = QString("\t%1 %2").arg(option).arg(value); 443 (*it) = QString("\t%1 %2").arg(option).arg(value);
442 } 444 }
443 } 445 }
444 return true; 446 if(!found){
447 QStringList::Iterator p = start;
448 interfaces.insert(++p, QString("\t%1 %2").arg(option).arg(value));
449 found = true;
450 }
451 return found;
445} 452}
446 453
447/** 454/**
448 * Removes all options in a stanza 455 * Removes all options in a stanza
449 * @param start the start of the stanza 456 * @param start the start of the stanza
450 * @return bool true if successfull, false otherwise. 457 * @return bool true if successfull, false otherwise.
451 */ 458 */
452bool Interfaces::removeAllOptions(QStringList::Iterator start){ 459bool Interfaces::removeAllOptions(QStringList::Iterator start){
453 if(start == interfaces.end()) 460 if(start == interfaces.end())
454 return false; 461 return false;
455 462
456 QStringList::Iterator it = start; 463 QStringList::Iterator it = start;
457 it = ++it; 464 it = ++it;
458 for (it; it != interfaces.end(); ++it ) { 465 for (it; it != interfaces.end(); ++it ) {
459 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ 466 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
460 break; 467 break;
461 } 468 }
462 it = interfaces.remove(it); 469 it = interfaces.remove(it);
463 it = --it; 470 it = --it;
464 } 471 }
465 // Leave a space between this interface and the next. 472 // Leave a space between this interface and the next.
466 interfaces.insert(it, QString("")); 473 interfaces.insert(it, QString(""));
467 return true; 474 return true;
468} 475}
469 476
470/** 477/**
471 * Gets a value of an option in a stanza 478 * Gets a value of an option in a stanza
472 * @param start the start of the stanza 479 * @param start the start of the stanza
473 * @param option the option to use when getting the value. 480 * @param option the option to use when getting the value.
474 * @param bool true if errors false otherwise. 481 * @param bool true if errors false otherwise.
475 * @return QString the value of option QString::null() if error == true. 482 * @return QString the value of option QString::null() if error == true.
476 */ 483 */
477QString Interfaces::getOption(QStringList::Iterator start, QString option, bool &error){ 484QString Interfaces::getOption(QStringList::Iterator start, QString option, bool &error){
478 if(start == interfaces.end()){ 485 if(start == interfaces.end()){
479 error = false; 486 error = false;
480 return QString(); 487 return QString();
481 } 488 }
482 489
483 QString value; 490 QString value;
484 bool found = false; 491 bool found = false;
485 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { 492 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) {
486 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ 493 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
487 break; 494 break;
488 } 495 }
489 if((*it).contains(option)){ 496 if((*it).contains(option)){
490 if(found) 497 if(found)
491 qDebug(QString("Interfaces: Get Options found more then one value: %1 for option: %2 in stanza %3").arg((*it)).arg(option).arg((*start)).latin1()); 498 qDebug(QString("Interfaces: Get Options found more then one value: %1 for option: %2 in stanza %3").arg((*it)).arg(option).arg((*start)).latin1());
492 found = true; 499 found = true;
493 QString line = (*it).simplifyWhiteSpace(); 500 QString line = (*it).simplifyWhiteSpace();
494 int space = line.find(" ", option.length()); 501 int space = line.find(" ", option.length());
495 if(space != -1) 502 if(space != -1)
496 value = line.mid(space+1, line.length()); 503 value = line.mid(space+1, line.length());
497 else 504 else
498 qDebug(QString("Interfaces: Option %1 with no value").arg(option).latin1()); 505 qDebug(QString("Interfaces: Option %1 with no value").arg(option).latin1());
499 } 506 }
500 } 507 }
501 error = !found; 508 error = !found;
502 return value; 509 return value;
503} 510}
504 511
505/** 512/**
506 * Write out the interfaces file to the file passed into the constructor. 513 * Write out the interfaces file to the file passed into the constructor.
507 * Removes any excess blank lines over 1 line long. 514 * Removes any excess blank lines over 1 line long.
508 * @return bool true if successfull, false if not. 515 * @return bool true if successfull, false if not.
509 */ 516 */
510bool Interfaces::write(){ 517bool Interfaces::write(){
511 QFile::remove(interfacesFile); 518 QFile::remove(interfacesFile);
512 QFile file(interfacesFile); 519 QFile file(interfacesFile);
513 520
514 if (!file.open(IO_ReadWrite)){ 521 if (!file.open(IO_ReadWrite)){
515 qDebug(QString("Interfaces: Can't open file: %1 for writing.").arg(interfacesFile).latin1()); 522 qDebug(QString("Interfaces: Can't open file: %1 for writing.").arg(interfacesFile).latin1());
516 return false; 523 return false;
517 } 524 }
518 QTextStream stream( &file ); 525 QTextStream stream( &file );
519 int whiteSpaceCount = 0; 526 int whiteSpaceCount = 0;
520 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { 527 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
521 QString line = (*it).simplifyWhiteSpace(); 528 QString line = (*it).simplifyWhiteSpace();
522 line = line.replace(QRegExp(" "),""); 529 line = line.replace(QRegExp(" "),"");
523 if(line.length() == 0) 530 if(line.length() == 0)
524 whiteSpaceCount++; 531 whiteSpaceCount++;
525 else 532 else
526 whiteSpaceCount = 0; 533 whiteSpaceCount = 0;
527 if(whiteSpaceCount < 2){ 534 if(whiteSpaceCount < 2){
528 qDebug((*it).latin1()); 535 qDebug((*it).latin1());
529 stream << (*it) << '\n'; 536 stream << (*it) << '\n';
530 } 537 }
531 } 538 }
532 file.close(); 539 file.close();
533 return true; 540 return true;
534} 541}
535 542
536// interfaces.cpp 543// interfaces.cpp
537 544
diff --git a/noncore/settings/networksettings/interfaces.h b/noncore/settings/networksettings/interfaces.h
index 8b4788c..e617c17 100644
--- a/noncore/settings/networksettings/interfaces.h
+++ b/noncore/settings/networksettings/interfaces.h
@@ -1,71 +1,71 @@
1#ifndef INTERFACES_H 1#ifndef INTERFACES_H
2#define INTERFACES_H 2#define INTERFACES_H
3 3
4#include <qstring.h> 4#include <qstring.h>
5#include <qstringlist.h> 5#include <qstringlist.h>
6 6
7#define INTERFACES_LOOPBACK "loopback" 7#define INTERFACES_LOOPBACK "loopback"
8 8
9#define INTERFACES_FAMILY_INET "inet" 9#define INTERFACES_FAMILY_INET "inet"
10#define INTERFACES_FAMILY_IPX "ipx" 10#define INTERFACES_FAMILY_IPX "ipx"
11#define INTERFACES_FAMILY_INET6 "inet6" 11#define INTERFACES_FAMILY_INET6 "inet6"
12 12
13#define INTERFACES_METHOD_DHCP "dhcp" 13#define INTERFACES_METHOD_DHCP "dhcp"
14#define INTERFACES_METHOD_STATIC "static" 14#define INTERFACES_METHOD_STATIC "static"
15#define INTERFACES_METHOD_PPP "ppp" 15#define INTERFACES_METHOD_PPP "ppp"
16 16
17/** 17/**
18 * This class provides a clean frontend for parsing the network interfaces file. 18 * This class provides a clean frontend for parsing the network interfaces file.
19 * It provides helper functions to minipulate the options within the file. 19 * It provides helper functions to minipulate the options within the file.
20 * See the interfaces man page for the syntax rules. 20 * See the interfaces man page for the syntax rules.
21 */ 21 */
22class Interfaces { 22class Interfaces {
23 23
24public: 24public:
25 Interfaces(QString useInterfacesFile = "/etc/network/interfaces"); 25 Interfaces(QString useInterfacesFile = "/etc/network/interfaces");
26 QStringList getInterfaceList(); 26 QStringList getInterfaceList();
27 27
28 bool isAuto(QString interface); 28 bool isAuto(QString interface);
29 bool setAuto(QString interface, bool setAuto); 29 bool setAuto(QString interface, bool setAuto);
30 30
31 bool removeInterface(); 31 bool removeInterface();
32 bool addInterface(QString interface, QString family, QString method); 32 bool addInterface(QString interface, QString family, QString method);
33 bool setInterface(QString interface); 33 bool setInterface(QString interface);
34 bool isInterfaceSet(); 34 bool isInterfaceSet();
35 QString getInterfaceName(bool &error); 35 QString getInterfaceName(bool &error);
36 bool setInterfaceName(QString newName); 36 bool setInterfaceName(QString newName);
37 QString getInterfaceFamily(bool &error); 37 QString getInterfaceFamily(bool &error);
38 bool setInterfaceFamily(QString newName); 38 bool setInterfaceFamily(QString newName);
39 QString getInterfaceMethod(bool &error); 39 QString getInterfaceMethod(bool &error);
40 bool setInterfaceMethod(QString newName); 40 bool setInterfaceMethod(QString newName);
41 QString getInterfaceOption(QString option, bool &error); 41 QString getInterfaceOption(QString option, bool &error);
42 bool setInterfaceOption(QString option, QString value); 42 bool setInterfaceOption(QString option, QString value);
43 bool removeAllInterfaceOptions(); 43 bool removeAllInterfaceOptions();
44 44
45 bool setMapping(QString interface); 45 bool setMapping(QString interface);
46 void addMapping(QString interfaces); 46 void addMapping(QString options);
47 bool setMap(QString map, QString value); 47 bool setMap(QString map, QString value);
48 QString getMap(QString map, bool &error); 48 QString getMap(QString map, bool &error);
49 bool setScript(QString); 49 bool setScript(QString);
50 QString getScript(bool &error); 50 QString getScript(bool &error);
51 51
52 bool write(); 52 bool write();
53 53
54private: 54private:
55 bool setStanza(QString stanza, QString option,QStringList::Iterator &iterator); 55 bool setStanza(QString stanza, QString option,QStringList::Iterator &iterator);
56 bool setOption(QStringList::Iterator start, QString option, QString value); 56 bool setOption(QStringList::Iterator start, QString option, QString value);
57 QString getOption(QStringList::Iterator start, QString option, bool &error); 57 QString getOption(QStringList::Iterator start, QString option, bool &error);
58 bool removeAllOptions(QStringList::Iterator start); 58 bool removeAllOptions(QStringList::Iterator start);
59 59
60 QString interfacesFile; 60 QString interfacesFile;
61 QStringList interfaces; 61 QStringList interfaces;
62 QStringList::Iterator currentIface; 62 QStringList::Iterator currentIface;
63 QStringList::Iterator currentMapping; 63 QStringList::Iterator currentMapping;
64 64
65 QStringList acceptedFamily; 65 QStringList acceptedFamily;
66}; 66};
67 67
68#endif 68#endif
69 69
70// interfaces 70// interfaces
71 71
diff --git a/noncore/settings/networksettings/interfacesetup.ui b/noncore/settings/networksettings/interfacesetup.ui
index 3db9a0b..c94b1be 100644
--- a/noncore/settings/networksettings/interfacesetup.ui
+++ b/noncore/settings/networksettings/interfacesetup.ui
@@ -1,347 +1,284 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>InterfaceSetup</class> 2<class>InterfaceSetup</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>InterfaceSetup</cstring> 7 <cstring>InterfaceSetup</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>267</width> 14 <width>276</width>
15 <height>280</height> 15 <height>280</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Interface Configuration</string> 20 <string>Interface Configuration</string>
21 </property> 21 </property>
22 <vbox> 22 <vbox>
23 <property stdset="1"> 23 <property stdset="1">
24 <name>margin</name> 24 <name>margin</name>
25 <number>11</number> 25 <number>11</number>
26 </property> 26 </property>
27 <property stdset="1"> 27 <property stdset="1">
28 <name>spacing</name> 28 <name>spacing</name>
29 <number>6</number> 29 <number>6</number>
30 </property> 30 </property>
31 <widget> 31 <widget>
32 <class>QCheckBox</class> 32 <class>QCheckBox</class>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>name</name> 34 <name>name</name>
35 <cstring>autoStart</cstring> 35 <cstring>autoStart</cstring>
36 </property> 36 </property>
37 <property stdset="1"> 37 <property stdset="1">
38 <name>text</name> 38 <name>text</name>
39 <string>Automaticly bring up</string> 39 <string>Automaticly bring up</string>
40 </property> 40 </property>
41 </widget> 41 </widget>
42 <widget> 42 <widget>
43 <class>QLayoutWidget</class> 43 <class>QLayoutWidget</class>
44 <property stdset="1"> 44 <property stdset="1">
45 <name>name</name> 45 <name>name</name>
46 <cstring>Layout8</cstring>
47 </property>
48 <hbox>
49 <property stdset="1">
50 <name>margin</name>
51 <number>0</number>
52 </property>
53 <property stdset="1">
54 <name>spacing</name>
55 <number>6</number>
56 </property>
57 <widget>
58 <class>QLabel</class>
59 <property stdset="1">
60 <name>name</name>
61 <cstring>TextLabel1</cstring>
62 </property>
63 <property stdset="1">
64 <name>text</name>
65 <string>Profile</string>
66 </property>
67 </widget>
68 <widget>
69 <class>QComboBox</class>
70 <item>
71 <property>
72 <name>text</name>
73 <string>All</string>
74 </property>
75 </item>
76 <property stdset="1">
77 <name>name</name>
78 <cstring>profileCombo</cstring>
79 </property>
80 </widget>
81 <spacer>
82 <property>
83 <name>name</name>
84 <cstring>Spacer20</cstring>
85 </property>
86 <property stdset="1">
87 <name>orientation</name>
88 <enum>Horizontal</enum>
89 </property>
90 <property stdset="1">
91 <name>sizeType</name>
92 <enum>Expanding</enum>
93 </property>
94 <property>
95 <name>sizeHint</name>
96 <size>
97 <width>20</width>
98 <height>20</height>
99 </size>
100 </property>
101 </spacer>
102 </hbox>
103 </widget>
104 <widget>
105 <class>QLayoutWidget</class>
106 <property stdset="1">
107 <name>name</name>
108 <cstring>Layout9</cstring> 46 <cstring>Layout9</cstring>
109 </property> 47 </property>
110 <hbox> 48 <hbox>
111 <property stdset="1"> 49 <property stdset="1">
112 <name>margin</name> 50 <name>margin</name>
113 <number>0</number> 51 <number>0</number>
114 </property> 52 </property>
115 <property stdset="1"> 53 <property stdset="1">
116 <name>spacing</name> 54 <name>spacing</name>
117 <number>6</number> 55 <number>6</number>
118 </property> 56 </property>
119 <widget> 57 <widget>
120 <class>QCheckBox</class> 58 <class>QCheckBox</class>
121 <property stdset="1"> 59 <property stdset="1">
122 <name>name</name> 60 <name>name</name>
123 <cstring>dhcpCheckBox</cstring> 61 <cstring>dhcpCheckBox</cstring>
124 </property> 62 </property>
125 <property stdset="1"> 63 <property stdset="1">
126 <name>text</name> 64 <name>text</name>
127 <string>DHCP</string> 65 <string>DHCP</string>
128 </property> 66 </property>
129 <property stdset="1"> 67 <property stdset="1">
130 <name>checked</name> 68 <name>checked</name>
131 <bool>true</bool> 69 <bool>true</bool>
132 </property> 70 </property>
133 </widget> 71 </widget>
134 <widget> 72 <widget>
135 <class>QLabel</class> 73 <class>QLabel</class>
136 <property stdset="1"> 74 <property stdset="1">
137 <name>name</name> 75 <name>name</name>
138 <cstring>leaseHoursLabel</cstring> 76 <cstring>leaseHoursLabel</cstring>
139 </property> 77 </property>
140 <property stdset="1"> 78 <property stdset="1">
141 <name>text</name> 79 <name>text</name>
142 <string>Requested Lease</string> 80 <string>Requested Lease</string>
143 </property> 81 </property>
144 </widget> 82 </widget>
145 <widget> 83 <widget>
146 <class>QSpinBox</class> 84 <class>QSpinBox</class>
147 <property stdset="1"> 85 <property stdset="1">
148 <name>name</name> 86 <name>name</name>
149 <cstring>leaseTime</cstring> 87 <cstring>leaseTime</cstring>
150 </property> 88 </property>
151 <property stdset="1"> 89 <property stdset="1">
152 <name>suffix</name> 90 <name>suffix</name>
153 <string> hours</string> 91 <string> hours</string>
154 </property> 92 </property>
155 <property stdset="1"> 93 <property stdset="1">
156 <name>maxValue</name> 94 <name>maxValue</name>
157 <number>336</number> 95 <number>87600</number>
158 </property> 96 </property>
159 <property stdset="1"> 97 <property stdset="1">
160 <name>minValue</name> 98 <name>minValue</name>
161 <number>1</number> 99 <number>1</number>
162 </property> 100 </property>
163 <property stdset="1"> 101 <property stdset="1">
164 <name>value</name> 102 <name>value</name>
165 <number>24</number> 103 <number>168</number>
166 </property> 104 </property>
167 </widget> 105 </widget>
168 </hbox> 106 </hbox>
169 </widget> 107 </widget>
170 <widget> 108 <widget>
171 <class>QGroupBox</class> 109 <class>QGroupBox</class>
172 <property stdset="1"> 110 <property stdset="1">
173 <name>name</name> 111 <name>name</name>
174 <cstring>staticGroupBox</cstring> 112 <cstring>staticGroupBox</cstring>
175 </property> 113 </property>
176 <property stdset="1"> 114 <property stdset="1">
177 <name>enabled</name> 115 <name>enabled</name>
178 <bool>false</bool> 116 <bool>false</bool>
179 </property> 117 </property>
180 <property stdset="1"> 118 <property stdset="1">
181 <name>frameShape</name> 119 <name>frameShape</name>
182 <enum>Box</enum> 120 <enum>Box</enum>
183 </property> 121 </property>
184 <property stdset="1"> 122 <property stdset="1">
185 <name>frameShadow</name> 123 <name>frameShadow</name>
186 <enum>Sunken</enum> 124 <enum>Sunken</enum>
187 </property> 125 </property>
188 <property stdset="1"> 126 <property stdset="1">
189 <name>title</name> 127 <name>title</name>
190 <string>Static Ip Configuration</string> 128 <string>Static Ip Configuration</string>
191 </property> 129 </property>
192 <grid> 130 <grid>
193 <property stdset="1"> 131 <property stdset="1">
194 <name>margin</name> 132 <name>margin</name>
195 <number>11</number> 133 <number>11</number>
196 </property> 134 </property>
197 <property stdset="1"> 135 <property stdset="1">
198 <name>spacing</name> 136 <name>spacing</name>
199 <number>6</number> 137 <number>6</number>
200 </property> 138 </property>
201 <widget row="3" column="1" >
202 <class>QLineEdit</class>
203 <property stdset="1">
204 <name>name</name>
205 <cstring>firstDNSLineEdit</cstring>
206 </property>
207 </widget>
208 <widget row="1" column="0" > 139 <widget row="1" column="0" >
209 <class>QLabel</class> 140 <class>QLabel</class>
210 <property stdset="1"> 141 <property stdset="1">
211 <name>name</name> 142 <name>name</name>
212 <cstring>TextLabel5</cstring> 143 <cstring>TextLabel5</cstring>
213 </property> 144 </property>
214 <property stdset="1"> 145 <property stdset="1">
215 <name>text</name> 146 <name>text</name>
216 <string>Subnet Mask</string> 147 <string>Subnet Mask</string>
217 </property> 148 </property>
218 </widget> 149 </widget>
219 <widget row="2" column="1" > 150 <widget row="2" column="1" >
220 <class>QLineEdit</class> 151 <class>QLineEdit</class>
221 <property stdset="1"> 152 <property stdset="1">
222 <name>name</name> 153 <name>name</name>
223 <cstring>gatewayEdit</cstring> 154 <cstring>gatewayEdit</cstring>
224 </property> 155 </property>
225 </widget> 156 </widget>
226 <widget row="1" column="1" > 157 <widget row="1" column="1" >
227 <class>QLineEdit</class> 158 <class>QLineEdit</class>
228 <property stdset="1"> 159 <property stdset="1">
229 <name>name</name> 160 <name>name</name>
230 <cstring>subnetMaskEdit</cstring> 161 <cstring>subnetMaskEdit</cstring>
231 </property> 162 </property>
232 </widget> 163 </widget>
233 <widget row="0" column="1" > 164 <widget row="0" column="1" >
234 <class>QLineEdit</class> 165 <class>QLineEdit</class>
235 <property stdset="1"> 166 <property stdset="1">
236 <name>name</name> 167 <name>name</name>
237 <cstring>ipAddressEdit</cstring> 168 <cstring>ipAddressEdit</cstring>
238 </property> 169 </property>
239 </widget> 170 </widget>
240 <widget row="3" column="0" > 171 <widget row="3" column="0" >
241 <class>QLabel</class> 172 <class>QLabel</class>
242 <property stdset="1"> 173 <property stdset="1">
243 <name>name</name> 174 <name>name</name>
244 <cstring>TextLabel2</cstring> 175 <cstring>TextLabel2</cstring>
245 </property> 176 </property>
246 <property stdset="1"> 177 <property stdset="1">
247 <name>text</name> 178 <name>text</name>
248 <string>First DNS</string> 179 <string>First DNS</string>
249 </property> 180 </property>
250 </widget> 181 </widget>
251 <widget row="4" column="1" >
252 <class>QLineEdit</class>
253 <property stdset="1">
254 <name>name</name>
255 <cstring>secondDNSLineEdit</cstring>
256 </property>
257 </widget>
258 <widget row="0" column="0" > 182 <widget row="0" column="0" >
259 <class>QLabel</class> 183 <class>QLabel</class>
260 <property stdset="1"> 184 <property stdset="1">
261 <name>name</name> 185 <name>name</name>
262 <cstring>TextLabel4</cstring> 186 <cstring>TextLabel4</cstring>
263 </property> 187 </property>
264 <property stdset="1"> 188 <property stdset="1">
265 <name>text</name> 189 <name>text</name>
266 <string>IP Address</string> 190 <string>IP Address</string>
267 </property> 191 </property>
268 </widget> 192 </widget>
269 <widget row="2" column="0" > 193 <widget row="2" column="0" >
270 <class>QLabel</class> 194 <class>QLabel</class>
271 <property stdset="1"> 195 <property stdset="1">
272 <name>name</name> 196 <name>name</name>
273 <cstring>TextLabel1_2</cstring> 197 <cstring>TextLabel1_2</cstring>
274 </property> 198 </property>
275 <property stdset="1"> 199 <property stdset="1">
276 <name>text</name> 200 <name>text</name>
277 <string>Gateway</string> 201 <string>Gateway</string>
278 </property> 202 </property>
279 </widget> 203 </widget>
280 <widget row="4" column="0" > 204 <widget row="4" column="0" >
281 <class>QLabel</class> 205 <class>QLabel</class>
282 <property stdset="1"> 206 <property stdset="1">
283 <name>name</name> 207 <name>name</name>
284 <cstring>TextLabel3</cstring> 208 <cstring>TextLabel3</cstring>
285 </property> 209 </property>
286 <property stdset="1"> 210 <property stdset="1">
287 <name>text</name> 211 <name>text</name>
288 <string>Second DNS</string> 212 <string>Second DNS</string>
289 </property> 213 </property>
290 </widget> 214 </widget>
215 <widget row="3" column="1" >
216 <class>QLineEdit</class>
217 <property stdset="1">
218 <name>name</name>
219 <cstring>firstDNSLineEdit</cstring>
220 </property>
221 </widget>
222 <widget row="4" column="1" >
223 <class>QLineEdit</class>
224 <property stdset="1">
225 <name>name</name>
226 <cstring>secondDNSLineEdit</cstring>
227 </property>
228 </widget>
291 </grid> 229 </grid>
292 </widget> 230 </widget>
293 <spacer> 231 <spacer>
294 <property> 232 <property>
295 <name>name</name> 233 <name>name</name>
296 <cstring>Spacer9</cstring> 234 <cstring>Spacer9</cstring>
297 </property> 235 </property>
298 <property stdset="1"> 236 <property stdset="1">
299 <name>orientation</name> 237 <name>orientation</name>
300 <enum>Vertical</enum> 238 <enum>Vertical</enum>
301 </property> 239 </property>
302 <property stdset="1"> 240 <property stdset="1">
303 <name>sizeType</name> 241 <name>sizeType</name>
304 <enum>Expanding</enum> 242 <enum>Expanding</enum>
305 </property> 243 </property>
306 <property> 244 <property>
307 <name>sizeHint</name> 245 <name>sizeHint</name>
308 <size> 246 <size>
309 <width>20</width> 247 <width>20</width>
310 <height>20</height> 248 <height>20</height>
311 </size> 249 </size>
312 </property> 250 </property>
313 </spacer> 251 </spacer>
314 </vbox> 252 </vbox>
315</widget> 253</widget>
316<connections> 254<connections>
317 <connection> 255 <connection>
318 <sender>dhcpCheckBox</sender> 256 <sender>dhcpCheckBox</sender>
319 <signal>toggled(bool)</signal> 257 <signal>toggled(bool)</signal>
320 <receiver>leaseHoursLabel</receiver> 258 <receiver>leaseHoursLabel</receiver>
321 <slot>setEnabled(bool)</slot> 259 <slot>setEnabled(bool)</slot>
322 </connection> 260 </connection>
323 <connection> 261 <connection>
324 <sender>dhcpCheckBox</sender> 262 <sender>dhcpCheckBox</sender>
325 <signal>toggled(bool)</signal> 263 <signal>toggled(bool)</signal>
326 <receiver>leaseTime</receiver> 264 <receiver>leaseTime</receiver>
327 <slot>setEnabled(bool)</slot> 265 <slot>setEnabled(bool)</slot>
328 </connection> 266 </connection>
329 <connection> 267 <connection>
330 <sender>dhcpCheckBox</sender> 268 <sender>dhcpCheckBox</sender>
331 <signal>toggled(bool)</signal> 269 <signal>toggled(bool)</signal>
332 <receiver>staticGroupBox</receiver> 270 <receiver>staticGroupBox</receiver>
333 <slot>setDisabled(bool)</slot> 271 <slot>setDisabled(bool)</slot>
334 </connection> 272 </connection>
335</connections> 273</connections>
336<tabstops> 274<tabstops>
337 <tabstop>autoStart</tabstop> 275 <tabstop>autoStart</tabstop>
338 <tabstop>profileCombo</tabstop>
339 <tabstop>dhcpCheckBox</tabstop> 276 <tabstop>dhcpCheckBox</tabstop>
340 <tabstop>leaseTime</tabstop> 277 <tabstop>leaseTime</tabstop>
341 <tabstop>ipAddressEdit</tabstop> 278 <tabstop>ipAddressEdit</tabstop>
342 <tabstop>subnetMaskEdit</tabstop> 279 <tabstop>subnetMaskEdit</tabstop>
343 <tabstop>gatewayEdit</tabstop> 280 <tabstop>gatewayEdit</tabstop>
344 <tabstop>firstDNSLineEdit</tabstop> 281 <tabstop>firstDNSLineEdit</tabstop>
345 <tabstop>secondDNSLineEdit</tabstop> 282 <tabstop>secondDNSLineEdit</tabstop>
346</tabstops> 283</tabstops>
347</UI> 284</UI>
diff --git a/noncore/settings/networksettings/interfacesetupimp.cpp b/noncore/settings/networksettings/interfacesetupimp.cpp
index 951aeee..c16d821 100644
--- a/noncore/settings/networksettings/interfacesetupimp.cpp
+++ b/noncore/settings/networksettings/interfacesetupimp.cpp
@@ -1,146 +1,143 @@
1#include "interfacesetupimp.h" 1#include "interfacesetupimp.h"
2#include "interface.h" 2#include "interface.h"
3#include "interfaces.h" 3#include "interfaces.h"
4 4
5#include <qcombobox.h> 5#include <qcombobox.h>
6#include <qcheckbox.h> 6#include <qcheckbox.h>
7#include <qlineedit.h> 7#include <qlineedit.h>
8#include <qspinbox.h> 8#include <qspinbox.h>
9#include <qgroupbox.h> 9#include <qgroupbox.h>
10#include <qlabel.h> 10#include <qlabel.h>
11 11
12#include <qmessagebox.h> 12#include <qmessagebox.h>
13 13
14#include <assert.h> 14#include <assert.h>
15 15
16#define DNSSCRIPT "interfacednsscript" 16#define DNSSCRIPT "interfacednsscript"
17 17
18/** 18/**
19 * Constuctor. Set up the connection and load the first profile. 19 * Constuctor. Set up the connection and load the first profile.
20 */ 20 */
21InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : InterfaceSetup(parent, name, modal, fl){ 21InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : InterfaceSetup(parent, name, modal, fl){
22 assert(i); 22 assert(i);
23 interface = i; 23 interface = i;
24 interfaces = new Interfaces(); 24 interfaces = new Interfaces();
25 changeProfile(profileCombo->currentText());
26 bool error = false; 25 bool error = false;
27 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ 26 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
28 staticGroupBox->hide(); 27 staticGroupBox->hide();
29 dhcpCheckBox->hide(); 28 dhcpCheckBox->hide();
30 leaseTime->hide(); 29 leaseTime->hide();
31 leaseHoursLabel->hide(); 30 leaseHoursLabel->hide();
32 } 31 }
33 connect(profileCombo, SIGNAL(highlighted(const QString &)), this, SLOT(changeProfile(const QString &)));
34} 32}
35 33
36/** 34/**
37 * Save the current settings, then write out the interfaces file and close. 35 * Save the current settings, then write out the interfaces file and close.
38 */ 36 */
39void InterfaceSetupImp::accept(){ 37void InterfaceSetupImp::accept(){
40 if(!saveSettings()) 38 if(!saveSettings())
41 return; 39 return;
42 interfaces->write(); 40 interfaces->write();
43 close(true); 41 close(true);
44} 42}
45 43
46/** 44/**
47 * Save the settings for the current Interface. 45 * Save the settings for the current Interface.
48 * @return bool true if successfull, false otherwise 46 * @return bool true if successfull, false otherwise
49 */ 47 */
50bool InterfaceSetupImp::saveSettings(){ 48bool InterfaceSetupImp::saveSettings(){
51 // eh can't really do anything about it other then return. :-D 49 // eh can't really do anything about it other then return. :-D
52 if(!interfaces->isInterfaceSet()) 50 if(!interfaces->isInterfaceSet())
53 return true; 51 return true;
54 52
55 bool error = false; 53 bool error = false;
56 // Loopback case 54 // Loopback case
57 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ 55 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
58 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); 56 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
59 return true; 57 return true;
60 } 58 }
61 59
62 if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty() || firstDNSLineEdit->text().isEmpty())){ 60 if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty() || firstDNSLineEdit->text().isEmpty())){
63 QMessageBox::information(this, "Empy Fields.", "Please fill in address, subnet,\n gateway and the first dns entries.", "Ok"); 61 QMessageBox::information(this, "Empy Fields.", "Please fill in address, subnet,\n gateway and the first dns entries.", "Ok");
64 return false; 62 return false;
65 } 63 }
66 interfaces->removeAllInterfaceOptions(); 64 interfaces->removeAllInterfaceOptions();
67 65
68 // DHCP 66 // DHCP
69 if(dhcpCheckBox->isChecked()){ 67 if(dhcpCheckBox->isChecked()){
70 interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); 68 interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP);
71 interfaces->setInterfaceOption("leasehours", QString("%1").arg(leaseTime->value())); 69 interfaces->setInterfaceOption("leasehours", QString("%1").arg(leaseTime->value()));
72 interfaces->setInterfaceOption("leasetime", QString("%1").arg(leaseTime->value()*60*60)); 70 interfaces->setInterfaceOption("leasetime", QString("%1").arg(leaseTime->value()*60*60));
73 } 71 }
74 else{ 72 else{
75 interfaces->setInterfaceMethod("static"); 73 interfaces->setInterfaceMethod("static");
76 interfaces->setInterfaceOption("address", ipAddressEdit->text()); 74 interfaces->setInterfaceOption("address", ipAddressEdit->text());
77 interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); 75 interfaces->setInterfaceOption("netmask", subnetMaskEdit->text());
78 interfaces->setInterfaceOption("gateway", gatewayEdit->text()); 76 interfaces->setInterfaceOption("gateway", gatewayEdit->text());
79 QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); 77 QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text();
80 interfaces->setInterfaceOption("up "DNSSCRIPT" add ", dns); 78 interfaces->setInterfaceOption("up "DNSSCRIPT" add ", dns);
81 interfaces->setInterfaceOption("down "DNSSCRIPT" remove ", dns); 79 interfaces->setInterfaceOption("down "DNSSCRIPT" remove ", dns);
82 } 80 }
83 81
84 // IP Information 82 // IP Information
85 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); 83 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
86 return true; 84 return true;
87} 85}
88 86
89/** 87/**
90 * The Profile has changed. 88 * The Profile has changed.
91 * @profile the new profile. 89 * @profile the new profile.
92 */ 90 */
93void InterfaceSetupImp::changeProfile(const QString &profile){ 91void InterfaceSetupImp::setProfile(const QString &profile){
94 QString newInterfaceName; 92 QString newInterfaceName = interface->getInterfaceName() + profile;
95 if(profile.lower() == "all")
96 newInterfaceName = interface->getInterfaceName();
97 else
98 newInterfaceName = interface->getInterfaceName() + "_" + profile;
99 if(newInterfaceName == currentInterfaceName)
100 return;
101 else{
102 saveSettings();
103 currentInterfaceName = newInterfaceName;
104 }
105 bool error = interfaces->setInterface(currentInterfaceName);
106 93
107 // See if we have to make a interface. 94 // See if we have to make a interface.
108 if(error){ 95 if(!interfaces->setInterface(newInterfaceName)){
109 qDebug("InterfaceSetupImp: Adding a new interface from profile change."); 96 interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP);
110 interfaces->addInterface(currentInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP); 97 if(!interfaces->setInterface(newInterfaceName)){
111 error = interfaces->setInterface(currentInterfaceName);
112 if(error){
113 qDebug("InterfaceSetupImp: Added interface, but still can't set."); 98 qDebug("InterfaceSetupImp: Added interface, but still can't set.");
114 return; 99 return;
115 } 100 }
101 // Add making for this new interface if need too
102 if(profile != ""){
103 if(!interfaces->setMapping(interface->getInterfaceName())){
104 interfaces->addMapping(interface->getInterfaceName());
105 if(!interfaces->setMapping(interface->getInterfaceName())){
106 qDebug("InterfaceSetupImp: Added Mapping, but still can't set.");
107 return;
108 }
109 }
110 interfaces->setScript("getprofile.sh");
111 interfaces->setMap("map", newInterfaceName);
112 }
116 } 113 }
117 114
118 //qDebug( currentInterfaceName.latin1() );
119 // We must have a valid interface to get this far so read some settings. 115 // We must have a valid interface to get this far so read some settings.
120 116
121 // DHCP 117 // DHCP
118 bool error = false;
122 if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP) 119 if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP)
123 dhcpCheckBox->setChecked(true); 120 dhcpCheckBox->setChecked(true);
124 else 121 else
125 dhcpCheckBox->setChecked(false); 122 dhcpCheckBox->setChecked(false);
126 leaseTime->setValue(interfaces->getInterfaceOption("leasehours", error).toInt()); 123 leaseTime->setValue(interfaces->getInterfaceOption("leasehours", error).toInt());
127 if(error) 124 if(error)
128 leaseTime->setValue(interfaces->getInterfaceOption("leasetime", error).toInt()/60/60); 125 leaseTime->setValue(interfaces->getInterfaceOption("leasetime", error).toInt()/60/60);
129 if(error) 126 if(error)
130 leaseTime->setValue(24); 127 leaseTime->setValue(24);
131 128
132 // IP Information 129 // IP Information
133 autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName())); 130 autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName()));
134 QString dns = interfaces->getInterfaceOption("up interfacednsscript add", error); 131 QString dns = interfaces->getInterfaceOption("up interfacednsscript add", error);
135 if(dns.contains(" ")){ 132 if(dns.contains(" ")){
136 firstDNSLineEdit->setText(dns.mid(0, dns.find(" "))); 133 firstDNSLineEdit->setText(dns.mid(0, dns.find(" ")));
137 secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length())); 134 secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length()));
138 } 135 }
139 ipAddressEdit->setText(interfaces->getInterfaceOption("address", error)); 136 ipAddressEdit->setText(interfaces->getInterfaceOption("address", error));
140 subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error)); 137 subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error));
141 gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error)); 138 gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error));
142} 139}
143 140
144 141
145// interfacesetup.cpp 142// interfacesetup.cpp
146 143
diff --git a/noncore/settings/networksettings/interfacesetupimp.h b/noncore/settings/networksettings/interfacesetupimp.h
index 6c34718..7df0d46 100644
--- a/noncore/settings/networksettings/interfacesetupimp.h
+++ b/noncore/settings/networksettings/interfacesetupimp.h
@@ -1,30 +1,31 @@
1#ifndef INTERFACESETUPIMP_H 1#ifndef INTERFACESETUPIMP_H
2#define INTERFACESETUPIMP_H 2#define INTERFACESETUPIMP_H
3 3
4#include "interfacesetup.h" 4#include "interfacesetup.h"
5 5
6class Interface; 6class Interface;
7class Interfaces; 7class Interfaces;
8 8
9class InterfaceSetupImp : public InterfaceSetup { 9class InterfaceSetupImp : public InterfaceSetup {
10 Q_OBJECT 10 Q_OBJECT
11 11
12public: 12public:
13 InterfaceSetupImp( QWidget* parent = 0, const char* name = 0, Interface *i=0, bool modal = FALSE, WFlags fl = 0); 13 InterfaceSetupImp( QWidget* parent = 0, const char* name = 0, Interface *i=0, bool modal = FALSE, WFlags fl = 0);
14 14
15protected slots: 15protected slots:
16 void accept(); 16 void accept();
17 void changeProfile(const QString &profile); 17
18public slots:
19 void setProfile(const QString &profile);
18 20
19private: 21private:
20 bool saveSettings(); 22 bool saveSettings();
21 Interfaces *interfaces; 23 Interfaces *interfaces;
22 Interface *interface; 24 Interface *interface;
23 QString currentInterfaceName;
24 25
25}; 26};
26 27
27#endif 28#endif
28 29
29// interfacesetupimp.h 30// interfacesetupimp.h
30 31
diff --git a/noncore/settings/networksettings/mainwindow.ui b/noncore/settings/networksettings/mainwindow.ui
index bea999b..3d30994 100644
--- a/noncore/settings/networksettings/mainwindow.ui
+++ b/noncore/settings/networksettings/mainwindow.ui
@@ -1,233 +1,247 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>MainWindow</class> 2<class>MainWindow</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>MainWindow</cstring> 7 <cstring>MainWindow</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>230</width> 14 <width>240</width>
15 <height>289</height> 15 <height>289</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Network Setup</string> 20 <string>Network Setup</string>
21 </property> 21 </property>
22 <vbox> 22 <vbox>
23 <property stdset="1"> 23 <property stdset="1">
24 <name>margin</name> 24 <name>margin</name>
25 <number>0</number> 25 <number>0</number>
26 </property> 26 </property>
27 <property stdset="1"> 27 <property stdset="1">
28 <name>spacing</name> 28 <name>spacing</name>
29 <number>6</number> 29 <number>6</number>
30 </property> 30 </property>
31 <widget> 31 <widget>
32 <class>QTabWidget</class> 32 <class>QTabWidget</class>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>name</name> 34 <name>name</name>
35 <cstring>tabWidget</cstring> 35 <cstring>tabWidget</cstring>
36 </property> 36 </property>
37 <property> 37 <property>
38 <name>layoutMargin</name> 38 <name>layoutMargin</name>
39 </property> 39 </property>
40 <widget> 40 <widget>
41 <class>QWidget</class> 41 <class>QWidget</class>
42 <property stdset="1"> 42 <property stdset="1">
43 <name>name</name> 43 <name>name</name>
44 <cstring>Widget3</cstring> 44 <cstring>Widget3</cstring>
45 </property> 45 </property>
46 <attribute> 46 <attribute>
47 <name>title</name> 47 <name>title</name>
48 <string>Connections</string> 48 <string>Connections</string>
49 </attribute> 49 </attribute>
50 <vbox> 50 <vbox>
51 <property stdset="1"> 51 <property stdset="1">
52 <name>margin</name> 52 <name>margin</name>
53 <number>0</number> 53 <number>0</number>
54 </property> 54 </property>
55 <property stdset="1"> 55 <property stdset="1">
56 <name>spacing</name> 56 <name>spacing</name>
57 <number>6</number> 57 <number>6</number>
58 </property> 58 </property>
59 <widget> 59 <widget>
60 <class>QListView</class> 60 <class>QListView</class>
61 <column> 61 <column>
62 <property> 62 <property>
63 <name>text</name> 63 <name>text</name>
64 <string>i</string> 64 <string>s</string>
65 </property> 65 </property>
66 <property> 66 <property>
67 <name>clickable</name> 67 <name>clickable</name>
68 <bool>true</bool> 68 <bool>true</bool>
69 </property> 69 </property>
70 <property> 70 <property>
71 <name>resizeable</name> 71 <name>resizeable</name>
72 <bool>true</bool> 72 <bool>true</bool>
73 </property> 73 </property>
74 </column> 74 </column>
75 <column> 75 <column>
76 <property> 76 <property>
77 <name>text</name> 77 <name>text</name>
78 <string>t</string> 78 <string>t</string>
79 </property> 79 </property>
80 <property> 80 <property>
81 <name>clickable</name> 81 <name>clickable</name>
82 <bool>true</bool> 82 <bool>true</bool>
83 </property> 83 </property>
84 <property> 84 <property>
85 <name>resizeable</name> 85 <name>resizeable</name>
86 <bool>true</bool> 86 <bool>true</bool>
87 </property> 87 </property>
88 </column> 88 </column>
89 <column> 89 <column>
90 <property> 90 <property>
91 <name>text</name> 91 <name>text</name>
92 <string>Name</string> 92 <string>Name</string>
93 </property> 93 </property>
94 <property> 94 <property>
95 <name>clickable</name> 95 <name>clickable</name>
96 <bool>true</bool> 96 <bool>true</bool>
97 </property> 97 </property>
98 <property> 98 <property>
99 <name>resizeable</name> 99 <name>resizeable</name>
100 <bool>true</bool> 100 <bool>true</bool>
101 </property> 101 </property>
102 </column> 102 </column>
103 <column> 103 <column>
104 <property> 104 <property>
105 <name>text</name> 105 <name>text</name>
106 <string>in</string>
107 </property>
108 <property>
109 <name>clickable</name>
110 <bool>true</bool>
111 </property>
112 <property>
113 <name>resizeable</name>
114 <bool>true</bool>
115 </property>
116 </column>
117 <column>
118 <property>
119 <name>text</name>
106 <string>IP</string> 120 <string>IP</string>
107 </property> 121 </property>
108 <property> 122 <property>
109 <name>clickable</name> 123 <name>clickable</name>
110 <bool>true</bool> 124 <bool>true</bool>
111 </property> 125 </property>
112 <property> 126 <property>
113 <name>resizeable</name> 127 <name>resizeable</name>
114 <bool>true</bool> 128 <bool>true</bool>
115 </property> 129 </property>
116 </column> 130 </column>
117 <property stdset="1"> 131 <property stdset="1">
118 <name>name</name> 132 <name>name</name>
119 <cstring>connectionList</cstring> 133 <cstring>connectionList</cstring>
120 </property> 134 </property>
121 <property stdset="1"> 135 <property stdset="1">
122 <name>allColumnsShowFocus</name> 136 <name>allColumnsShowFocus</name>
123 <bool>true</bool> 137 <bool>true</bool>
124 </property> 138 </property>
125 </widget> 139 </widget>
126 <widget> 140 <widget>
127 <class>QLayoutWidget</class> 141 <class>QLayoutWidget</class>
128 <property stdset="1"> 142 <property stdset="1">
129 <name>name</name> 143 <name>name</name>
130 <cstring>Layout2</cstring> 144 <cstring>Layout2</cstring>
131 </property> 145 </property>
132 <property> 146 <property>
133 <name>layoutMargin</name> 147 <name>layoutMargin</name>
134 </property> 148 </property>
135 <grid> 149 <grid>
136 <property stdset="1"> 150 <property stdset="1">
137 <name>margin</name> 151 <name>margin</name>
138 <number>5</number> 152 <number>5</number>
139 </property> 153 </property>
140 <property stdset="1"> 154 <property stdset="1">
141 <name>spacing</name> 155 <name>spacing</name>
142 <number>6</number> 156 <number>6</number>
143 </property> 157 </property>
144 <widget row="1" column="0" > 158 <widget row="1" column="0" >
145 <class>QPushButton</class> 159 <class>QPushButton</class>
146 <property stdset="1"> 160 <property stdset="1">
147 <name>name</name> 161 <name>name</name>
148 <cstring>addConnectionButton</cstring> 162 <cstring>addConnectionButton</cstring>
149 </property> 163 </property>
150 <property stdset="1"> 164 <property stdset="1">
151 <name>text</name> 165 <name>text</name>
152 <string>&amp;Add</string> 166 <string>&amp;Add</string>
153 </property> 167 </property>
154 </widget> 168 </widget>
155 <widget row="0" column="0" > 169 <widget row="0" column="0" >
156 <class>QPushButton</class> 170 <class>QPushButton</class>
157 <property stdset="1"> 171 <property stdset="1">
158 <name>name</name> 172 <name>name</name>
159 <cstring>informationConnectionButton</cstring> 173 <cstring>informationConnectionButton</cstring>
160 </property> 174 </property>
161 <property stdset="1"> 175 <property stdset="1">
162 <name>text</name> 176 <name>text</name>
163 <string>&amp;Information</string> 177 <string>&amp;Information</string>
164 </property> 178 </property>
165 </widget> 179 </widget>
166 <widget row="0" column="1" > 180 <widget row="0" column="1" >
167 <class>QPushButton</class> 181 <class>QPushButton</class>
168 <property stdset="1"> 182 <property stdset="1">
169 <name>name</name> 183 <name>name</name>
170 <cstring>configureConnectionButton</cstring> 184 <cstring>configureConnectionButton</cstring>
171 </property> 185 </property>
172 <property stdset="1"> 186 <property stdset="1">
173 <name>text</name> 187 <name>text</name>
174 <string>&amp;Configure</string> 188 <string>&amp;Configure</string>
175 </property> 189 </property>
176 </widget> 190 </widget>
177 <widget row="1" column="1" > 191 <widget row="1" column="1" >
178 <class>QPushButton</class> 192 <class>QPushButton</class>
179 <property stdset="1"> 193 <property stdset="1">
180 <name>name</name> 194 <name>name</name>
181 <cstring>removeConnectionButton</cstring> 195 <cstring>removeConnectionButton</cstring>
182 </property> 196 </property>
183 <property stdset="1"> 197 <property stdset="1">
184 <name>text</name> 198 <name>text</name>
185 <string>&amp;Remove</string> 199 <string>&amp;Remove</string>
186 </property> 200 </property>
187 </widget> 201 </widget>
188 </grid> 202 </grid>
189 </widget> 203 </widget>
190 </vbox> 204 </vbox>
191 </widget> 205 </widget>
192 <widget> 206 <widget>
193 <class>QWidget</class> 207 <class>QWidget</class>
194 <property stdset="1"> 208 <property stdset="1">
195 <name>name</name> 209 <name>name</name>
196 <cstring>tab</cstring> 210 <cstring>tab</cstring>
197 </property> 211 </property>
198 <attribute> 212 <attribute>
199 <name>title</name> 213 <name>title</name>
200 <string>Profiles</string> 214 <string>Profiles</string>
201 </attribute> 215 </attribute>
202 <grid> 216 <grid>
203 <property stdset="1"> 217 <property stdset="1">
204 <name>margin</name> 218 <name>margin</name>
205 <number>11</number> 219 <number>11</number>
206 </property> 220 </property>
207 <property stdset="1"> 221 <property stdset="1">
208 <name>spacing</name> 222 <name>spacing</name>
209 <number>6</number> 223 <number>6</number>
210 </property> 224 </property>
211 <spacer row="7" column="2" > 225 <spacer row="7" column="2" >
212 <property> 226 <property>
213 <name>name</name> 227 <name>name</name>
214 <cstring>Spacer16</cstring> 228 <cstring>Spacer16</cstring>
215 </property> 229 </property>
216 <property stdset="1"> 230 <property stdset="1">
217 <name>orientation</name> 231 <name>orientation</name>
218 <enum>Vertical</enum> 232 <enum>Vertical</enum>
219 </property> 233 </property>
220 <property stdset="1"> 234 <property stdset="1">
221 <name>sizeType</name> 235 <name>sizeType</name>
222 <enum>Expanding</enum> 236 <enum>Expanding</enum>
223 </property> 237 </property>
224 <property> 238 <property>
225 <name>sizeHint</name> 239 <name>sizeHint</name>
226 <size> 240 <size>
227 <width>20</width> 241 <width>20</width>
228 <height>20</height> 242 <height>20</height>
229 </size> 243 </size>
230 </property> 244 </property>
231 </spacer> 245 </spacer>
232 <widget row="0" column="1" > 246 <widget row="0" column="1" >
233 <class>QLabel</class> 247 <class>QLabel</class>
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index a446d29..3c0af6a 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -1,462 +1,525 @@
1#include "mainwindowimp.h" 1#include "mainwindowimp.h"
2#include "addconnectionimp.h" 2#include "addconnectionimp.h"
3#include "interfaceinformationimp.h" 3#include "interfaceinformationimp.h"
4#include "interfacesetupimp.h" 4#include "interfacesetupimp.h"
5#include "interfaces.h" 5#include "interfaces.h"
6 6
7#include "module.h" 7#include "module.h"
8 8
9#include "kprocess.h" 9#include "kprocess.h"
10 10
11#include <qpushbutton.h> 11#include <qpushbutton.h>
12#include <qtabwidget.h> 12#include <qtabwidget.h>
13#include <qlistbox.h> 13#include <qlistbox.h>
14#include <qlineedit.h> 14#include <qlineedit.h>
15#include <qlistview.h> 15#include <qlistview.h>
16#include <qheader.h> 16#include <qheader.h>
17#include <qlabel.h> 17#include <qlabel.h>
18 18
19#include <qmainwindow.h> 19#include <qmainwindow.h>
20#include <qmessagebox.h> 20#include <qmessagebox.h>
21 21
22#include <qpe/config.h> 22#include <qpe/config.h>
23#include <qpe/qlibrary.h> 23#include <qpe/qlibrary.h>
24#include <qpe/resource.h> 24#include <qpe/resource.h>
25#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26 26
27#include <qlist.h> 27#include <qlist.h>
28#include <qdir.h> 28#include <qdir.h>
29#include <qfile.h> 29#include <qfile.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31 31
32#define TEMP_ALL "/tmp/ifconfig-a" 32#define TEMP_ALL "/tmp/ifconfig-a"
33#define TEMP_UP "/tmp/ifconfig" 33#define TEMP_UP "/tmp/ifconfig"
34 34
35#define SCHEME "/var/lib/pcmcia/scheme"
35MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false){ 36MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false){
36 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); 37 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
37 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); 38 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
38 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); 39 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
39 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); 40 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
40 41
41 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); 42 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
42 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); 43 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
43 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile())); 44 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile()));
44 45
45 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&))); 46 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&)));
46 // Load connections. 47 // Load connections.
47 loadModules(QPEApplication::qpeDir() + "/plugins/networksetup"); 48 loadModules(QPEApplication::qpeDir() + "/plugins/networksetup");
48 getInterfaceList(); 49 getInterfaceList();
49 connectionList->header()->hide(); 50 connectionList->header()->hide();
50 51
51 52
52 Config cfg("NetworkSetup"); 53 Config cfg("NetworkSetup");
53 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); 54 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All"));
54 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) 55 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
55 profilesList->insertItem((*it)); 56 profilesList->insertItem((*it));
57 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All"));
56 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); 58 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false);
59
60 QFile file(SCHEME);
61 if ( file.open(IO_ReadOnly) ) { // file opened successfully
62 QTextStream stream( &file ); // use a text stream
63 while ( !stream.eof() ) { // until end of file...
64 QString line = stream.readLine(); // line of text excluding '\n'
65 if(line.contains("SCHEME")){
66 line = line.mid(7, line.length());
67 currentProfileLabel->setText(line);
68 break;
69 }
70 }
71 file.close();
72 }
57} 73}
58 74
59/** 75/**
60 * Deconstructor. Save profiles. Delete loaded libraries. 76 * Deconstructor. Save profiles. Delete loaded libraries.
61 */ 77 */
62MainWindowImp::~MainWindowImp(){ 78MainWindowImp::~MainWindowImp(){
63 // Save profiles. 79 // Save profiles.
64 if(profiles.count() > 1){ 80 Config cfg("NetworkSetup");
65 Config cfg("NetworkSetup"); 81 cfg.setGroup("General");
66 cfg.setGroup("General"); 82 cfg.writeEntry("Profiles", profiles.join(" "));
67 cfg.writeEntry("Profiles", profiles.join(" ")); 83
68 }
69 // Delete Modules and Libraries 84 // Delete Modules and Libraries
70 QMap<Module*, QLibrary*>::Iterator it; 85 QMap<Module*, QLibrary*>::Iterator it;
71 for( it = libraries.begin(); it != libraries.end(); ++it ){ 86 for( it = libraries.begin(); it != libraries.end(); ++it ){
72 delete it.key(); 87 delete it.key();
73 delete it.data(); 88 delete it.data();
74 } 89 }
75} 90}
76 91
77/** 92/**
78 * Load all modules that are found in the path 93 * Load all modules that are found in the path
79 * @param path a directory that is scaned for any plugins that can be loaded 94 * @param path a directory that is scaned for any plugins that can be loaded
80 * and attempts to load them 95 * and attempts to load them
81 */ 96 */
82void MainWindowImp::loadModules(QString path){ 97void MainWindowImp::loadModules(QString path){
83 qDebug(path.latin1()); 98 qDebug(path.latin1());
84 QDir d(path); 99 QDir d(path);
85 if(!d.exists()) 100 if(!d.exists())
86 return; 101 return;
87 102
88 // Don't want sym links 103 // Don't want sym links
89 d.setFilter( QDir::Files | QDir::NoSymLinks ); 104 d.setFilter( QDir::Files | QDir::NoSymLinks );
90 const QFileInfoList *list = d.entryInfoList(); 105 const QFileInfoList *list = d.entryInfoList();
91 QFileInfoListIterator it( *list ); 106 QFileInfoListIterator it( *list );
92 QFileInfo *fi; 107 QFileInfo *fi;
93 while ( (fi=it.current()) ) { 108 while ( (fi=it.current()) ) {
94 if(fi->fileName().contains(".so")){ 109 if(fi->fileName().contains(".so")){
95 loadPlugin(path + "/" + fi->fileName()); 110 loadPlugin(path + "/" + fi->fileName());
96 } 111 }
97 ++it; 112 ++it;
98 } 113 }
99} 114}
100 115
101/** 116/**
102 * Attempt to load a function and resolve a function. 117 * Attempt to load a function and resolve a function.
103 * @param pluginFileName - the name of the file in which to attempt to load 118 * @param pluginFileName - the name of the file in which to attempt to load
104 * @param resolveString - function pointer to resolve 119 * @param resolveString - function pointer to resolve
105 * @return pointer to the function with name resolveString or NULL 120 * @return pointer to the function with name resolveString or NULL
106 */ 121 */
107Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){ 122Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){
108 qDebug(QString("MainWindowImp::loadPlugin: %1").arg(pluginFileName).latin1()); 123 qDebug(QString("MainWindowImp::loadPlugin: %1").arg(pluginFileName).latin1());
109 QLibrary *lib = new QLibrary(pluginFileName); 124 QLibrary *lib = new QLibrary(pluginFileName);
110 void *functionPointer = lib->resolve(resolveString); 125 void *functionPointer = lib->resolve(resolveString);
111 if( !functionPointer ){ 126 if( !functionPointer ){
112 qDebug(QString("MainWindowImp: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1()); 127 qDebug(QString("MainWindowImp: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1());
113 delete lib; 128 delete lib;
114 return NULL; 129 return NULL;
115 } 130 }
116 131
117 // Try to get an object. 132 // Try to get an object.
118 Module *object = ((Module* (*)()) functionPointer)(); 133 Module *object = ((Module* (*)()) functionPointer)();
119 if(object == NULL){ 134 if(object == NULL){
120 qDebug("MainWindowImp: Couldn't create object, but did load library!"); 135 qDebug("MainWindowImp: Couldn't create object, but did load library!");
121 delete lib; 136 delete lib;
122 return NULL; 137 return NULL;
123 } 138 }
124 139
125 // Store for deletion later 140 // Store for deletion later
126 libraries.insert(object, lib); 141 libraries.insert(object, lib);
127 return object; 142 return object;
128} 143}
129 144
130/** 145/**
131 * The Add button was clicked. Bring up the add dialog and if OK is hit 146 * The Add button was clicked. Bring up the add dialog and if OK is hit
132 * load the plugin and append it to the list 147 * load the plugin and append it to the list
133 */ 148 */
134void MainWindowImp::addClicked(){ 149void MainWindowImp::addClicked(){
135 QMap<Module*, QLibrary*>::Iterator it; 150 QMap<Module*, QLibrary*>::Iterator it;
136 QMap<QString, QString> list; 151 QMap<QString, QString> list;
137 QMap<QString, Module*> newInterfaceOwners; 152 QMap<QString, Module*> newInterfaceOwners;
138 list.insert("USB (PPP) / (ADD_TEST)", "A dialup connection over the USB port"); 153 list.insert("USB (PPP) / (ADD_TEST)", "A dialup connection over the USB port");
139 list.insert("IrDa (PPP) / (ADD_TEST)", "A dialup connection over the IdDa port"); 154 list.insert("IrDa (PPP) / (ADD_TEST)", "A dialup connection over the IdDa port");
140 for( it = libraries.begin(); it != libraries.end(); ++it ){ 155 for( it = libraries.begin(); it != libraries.end(); ++it ){
141 if(it.key()){ 156 if(it.key()){
142 (it.key())->possibleNewInterfaces(list); 157 (it.key())->possibleNewInterfaces(list);
143 } 158 }
144 } 159 }
145 // See if the list has anything that we can add. 160 // See if the list has anything that we can add.
146 if(list.count() == 0){ 161 if(list.count() == 0){
147 QMessageBox::information(this, "Sorry", "Nothing to add.", "Ok"); 162 QMessageBox::information(this, "Sorry", "Nothing to add.", "Ok");
148 return; 163 return;
149 } 164 }
150 AddConnectionImp addNewConnection(this, "AddConnectionImp", true); 165 AddConnectionImp addNewConnection(this, "AddConnectionImp", true);
151 addNewConnection.addConnections(list); 166 addNewConnection.addConnections(list);
152 addNewConnection.showMaximized(); 167 addNewConnection.showMaximized();
153 if(QDialog::Accepted == addNewConnection.exec()){ 168 if(QDialog::Accepted == addNewConnection.exec()){
154 QListViewItem *item = addNewConnection.registeredServicesList->currentItem(); 169 QListViewItem *item = addNewConnection.registeredServicesList->currentItem();
155 if(!item) 170 if(!item)
156 return; 171 return;
157 172
158 for( it = libraries.begin(); it != libraries.end(); ++it ){ 173 for( it = libraries.begin(); it != libraries.end(); ++it ){
159 if(it.key()){ 174 if(it.key()){
160 Interface *i = (it.key())->addNewInterface(item->text(0)); 175 Interface *i = (it.key())->addNewInterface(item->text(0));
161 if(i){ 176 if(i){
162 interfaceNames.insert(i->getInterfaceName(), i); 177 interfaceNames.insert(i->getInterfaceName(), i);
163 updateInterface(i); 178 updateInterface(i);
164 } 179 }
165 } 180 }
166 } 181 }
167 } 182 }
168} 183}
169 184
170/** 185/**
171 * Prompt the user to see if they really want to do this. 186 * Prompt the user to see if they really want to do this.
172 * If they do then remove from the list and unload. 187 * If they do then remove from the list and unload.
173 */ 188 */
174void MainWindowImp::removeClicked(){ 189void MainWindowImp::removeClicked(){
175 QListViewItem *item = connectionList->currentItem(); 190 QListViewItem *item = connectionList->currentItem();
176 if(!item) { 191 if(!item) {
177 QMessageBox::information(this, "Error","Please select an interface.", "Ok"); 192 QMessageBox::information(this, "Error","Please select an interface.", "Ok");
178 return; 193 return;
179 } 194 }
180 195
181 Interface *i = interfaceItems[item]; 196 Interface *i = interfaceItems[item];
182 if(i->getModuleOwner() == NULL){ 197 if(i->getModuleOwner() == NULL){
183 QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", "Ok"); 198 QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", "Ok");
184 } 199 }
185 else{ 200 else{
186 if(!i->getModuleOwner()->remove(i)) 201 if(!i->getModuleOwner()->remove(i))
187 QMessageBox::information(this, "Error", "Unable to remove.", "Ok"); 202 QMessageBox::information(this, "Error", "Unable to remove.", "Ok");
188 else{ 203 else{
189 QMessageBox::information(this, "Success", "Interface was removed.", "Ok"); 204 QMessageBox::information(this, "Success", "Interface was removed.", "Ok");
190 // TODO memory managment.... 205 // TODO memory managment....
191 // who deletes the interface? 206 // who deletes the interface?
192 } 207 }
193 } 208 }
194} 209}
195 210
196/** 211/**
197 * Pull up the configure about the currently selected interface. 212 * Pull up the configure about the currently selected interface.
198 * Report an error if no interface is selected. 213 * Report an error if no interface is selected.
199 * If the interface has a module owner then request its configure with a empty 214 * If the interface has a module owner then request its configure with a empty
200 * tab. If tab is !NULL then append the interfaces setup widget to it. 215 * tab. If tab is !NULL then append the interfaces setup widget to it.
201 */ 216 */
202void MainWindowImp::configureClicked(){ 217void MainWindowImp::configureClicked(){
203 QListViewItem *item = connectionList->currentItem(); 218 QListViewItem *item = connectionList->currentItem();
204 if(!item){ 219 if(!item){
205 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok); 220 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok);
206 return; 221 return;
207 } 222 }
208 223
224 QString currentProfile = currentProfileLabel->text();
225 if(profilesList->count() <= 1 || currentProfile == "All"){
226 currentProfile = "";
227 }
228
209 Interface *i = interfaceItems[item]; 229 Interface *i = interfaceItems[item];
210 if(i->getModuleOwner()){ 230 if(i->getModuleOwner()){
231 i->getModuleOwner()->setProfile(currentProfileLabel->text());
211 QTabWidget *tabWidget = NULL; 232 QTabWidget *tabWidget = NULL;
212 QWidget *moduleConfigure = i->getModuleOwner()->configure(&tabWidget); 233 QWidget *moduleConfigure = i->getModuleOwner()->configure(&tabWidget);
213 if(moduleConfigure != NULL){ 234 if(moduleConfigure != NULL){
214 if(tabWidget != NULL){ 235 if(tabWidget != NULL){
215 InterfaceSetupImp *configure = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, true); 236 InterfaceSetupImp *configure = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, true);
216 tabWidget->insertTab(configure, "TCP/IP"); 237 configure->setProfile(currentProfileLabel->text());
238 tabWidget->insertTab(configure, "TCP/IP");
239
217 } 240 }
218 moduleConfigure->showMaximized(); 241 moduleConfigure->showMaximized();
219 moduleConfigure->show(); 242 moduleConfigure->show();
220 return; 243 return;
221 } 244 }
222 } 245 }
223 246
224 InterfaceSetupImp *configure = new InterfaceSetupImp(0, "InterfaceSetupImp", i, true); 247 InterfaceSetupImp *configure = new InterfaceSetupImp(0, "InterfaceSetupImp", i, true);
248 configure->setProfile(currentProfileLabel->text());
225 configure->showMaximized(); 249 configure->showMaximized();
226 configure->show(); 250 configure->show();
227} 251}
228 252
229/** 253/**
230 * Pull up the information about the currently selected interface. 254 * Pull up the information about the currently selected interface.
231 * Report an error if no interface is selected. 255 * Report an error if no interface is selected.
232 * If the interface has a module owner then request its configure with a empty 256 * If the interface has a module owner then request its configure with a empty
233 * tab. If tab is !NULL then append the interfaces setup widget to it. 257 * tab. If tab is !NULL then append the interfaces setup widget to it.
234 */ 258 */
235void MainWindowImp::informationClicked(){ 259void MainWindowImp::informationClicked(){
236 QListViewItem *item = connectionList->currentItem(); 260 QListViewItem *item = connectionList->currentItem();
237 if(!item){ 261 if(!item){
238 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok); 262 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok);
239 return; 263 return;
240 } 264 }
241 265
242 Interface *i = interfaceItems[item]; 266 Interface *i = interfaceItems[item];
243 if(!i->isAttached()){ 267 if(!i->isAttached()){
244 QMessageBox::information(this, "Error","No information about\na disconnected interface.", QMessageBox::Ok); 268 QMessageBox::information(this, "Error","No information about\na disconnected interface.", QMessageBox::Ok);
245 return; 269 return;
246 } 270 }
271
272 QStringList list;
273 for(uint i = 0; i < profilesList->count(); i++){
274 list.append(profilesList->text(i));
275 }
276
247 if(i->getModuleOwner()){ 277 if(i->getModuleOwner()){
248 QTabWidget *tabWidget = NULL; 278 QTabWidget *tabWidget = NULL;
249 QWidget *moduleInformation = i->getModuleOwner()->information(&tabWidget); 279 QWidget *moduleInformation = i->getModuleOwner()->information(&tabWidget);
250 if(moduleInformation != NULL){ 280 if(moduleInformation != NULL){
251 if(tabWidget != NULL){ 281 if(tabWidget != NULL){
252 InterfaceInformationImp *information = new InterfaceInformationImp(tabWidget, "InterfaceSetupImp", i, true); 282 InterfaceInformationImp *information = new InterfaceInformationImp(tabWidget, "InterfaceSetupImp", i, true);
253 tabWidget->insertTab(information, "TCP/IP"); 283 tabWidget->insertTab(information, "TCP/IP");
254 } 284 }
255 moduleInformation->showMaximized(); 285 moduleInformation->showMaximized();
256 moduleInformation->show(); 286 moduleInformation->show();
257 return; 287 return;
258 } 288 }
259 } 289 }
260 290
261 InterfaceInformationImp *information = new InterfaceInformationImp(0, "InterfaceSetupImp", i, true); 291 InterfaceInformationImp *information = new InterfaceInformationImp(0, "InterfaceSetupImp", i, true);
262 information->showMaximized(); 292 information->showMaximized();
263 information->show(); 293 information->show();
264} 294}
265 295
266/** 296/**
267 * Aquire the list of active interfaces from ifconfig 297 * Aquire the list of active interfaces from ifconfig
268 * Call ifconfig and ifconfig -a 298 * Call ifconfig and ifconfig -a
269 */ 299 */
270void MainWindowImp::getInterfaceList(){ 300void MainWindowImp::getInterfaceList(){
271 KShellProcess *processAll = new KShellProcess(); 301 KShellProcess *processAll = new KShellProcess();
272 *processAll << "/sbin/ifconfig" << "-a" << " > " TEMP_ALL; 302 *processAll << "/sbin/ifconfig" << "-a" << " > " TEMP_ALL;
273 connect(processAll, SIGNAL(processExited(KProcess *)), 303 connect(processAll, SIGNAL(processExited(KProcess *)),
274 this, SLOT(jobDone(KProcess *))); 304 this, SLOT(jobDone(KProcess *)));
275 threads.insert(processAll, TEMP_ALL); 305 threads.insert(processAll, TEMP_ALL);
276 306
277 KShellProcess *process = new KShellProcess(); 307 KShellProcess *process = new KShellProcess();
278 *process << "/sbin/ifconfig" << " > " TEMP_UP; 308 *process << "/sbin/ifconfig" << " > " TEMP_UP;
279 connect(process, SIGNAL(processExited(KProcess *)), 309 connect(process, SIGNAL(processExited(KProcess *)),
280 this, SLOT(jobDone(KProcess *))); 310 this, SLOT(jobDone(KProcess *)));
281 threads.insert(process, TEMP_UP); 311 threads.insert(process, TEMP_UP);
282 312
283 processAll->start(KShellProcess::NotifyOnExit); 313 processAll->start(KShellProcess::NotifyOnExit);
284 process->start(KShellProcess::NotifyOnExit); 314 process->start(KShellProcess::NotifyOnExit);
285} 315}
286 316
287void MainWindowImp::jobDone(KProcess *process){ 317void MainWindowImp::jobDone(KProcess *process){
288 QString fileName = threads[process]; 318 QString fileName = threads[process];
289 threads.remove(process); 319 threads.remove(process);
290 delete process; 320 delete process;
291 321
292 QFile file(fileName); 322 QFile file(fileName);
293 if (!file.open(IO_ReadOnly)){ 323 if (!file.open(IO_ReadOnly)){
294 qDebug(QString("MainWindowImp: Can't open file: %1").arg(fileName).latin1()); 324 qDebug(QString("MainWindowImp: Can't open file: %1").arg(fileName).latin1());
295 return; 325 return;
296 } 326 }
297 327
298 QTextStream stream( &file ); 328 QTextStream stream( &file );
299 QString line; 329 QString line;
300 while ( !stream.eof() ) { 330 while ( !stream.eof() ) {
301 line = stream.readLine(); 331 line = stream.readLine();
302 int space = line.find(" "); 332 int space = line.find(" ");
303 if(space > 1){ 333 if(space > 1){
304 // We have found an interface 334 // We have found an interface
305 QString interfaceName = line.mid(0, space); 335 QString interfaceName = line.mid(0, space);
306 Interface *i; 336 Interface *i;
307 // We have found an interface 337 // We have found an interface
308 //qDebug(QString("MainWindowImp: Found Interface: %1").arg(line).latin1()); 338 //qDebug(QString("MainWindowImp: Found Interface: %1").arg(line).latin1());
309 // See if we already have it 339 // See if we already have it
310 if(interfaceNames.find(interfaceName) == interfaceNames.end()){ 340 if(interfaceNames.find(interfaceName) == interfaceNames.end()){
311 if(fileName == TEMP_ALL) 341 if(fileName == TEMP_ALL)
312 i = new Interface(this, interfaceName, false); 342 i = new Interface(this, interfaceName, false);
313 else 343 else
314 i = new Interface(this, interfaceName, true); 344 i = new Interface(this, interfaceName, true);
315 i->setAttached(true); 345 i->setAttached(true);
316 346
317 QString hardName = "Ethernet"; 347 QString hardName = "Ethernet";
318 int hardwareName = line.find("Link encap:"); 348 int hardwareName = line.find("Link encap:");
319 int macAddress = line.find("HWaddr"); 349 int macAddress = line.find("HWaddr");
320 if(macAddress == -1) 350 if(macAddress == -1)
321 macAddress = line.length(); 351 macAddress = line.length();
322 if(hardwareName != -1) 352 if(hardwareName != -1)
323 i->setHardwareName(line.mid(hardwareName+11, macAddress-(hardwareName+11)) + QString(" (%1)").arg(i->getInterfaceName())); 353 i->setHardwareName(line.mid(hardwareName+11, macAddress-(hardwareName+11)) );
324 354
325 interfaceNames.insert(i->getInterfaceName(), i); 355 interfaceNames.insert(i->getInterfaceName(), i);
326 updateInterface(i); 356 updateInterface(i);
327 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 357 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
328 } 358 }
329 // It was an interface we already had. 359 // It was an interface we already had.
330 else{ 360 else{
331 if(fileName != TEMP_ALL) 361 if(fileName != TEMP_ALL)
332 (interfaceNames[interfaceName])->setStatus(true); 362 (interfaceNames[interfaceName])->setStatus(true);
333 } 363 }
334 } 364 }
335 } 365 }
336 file.close(); 366 file.close();
337 QFile::remove(fileName); 367 QFile::remove(fileName);
338 368
339 if(threads.count() == 0){ 369 if(threads.count() == 0){
340 Interfaces i; 370 Interfaces i;
341 QStringList list = i.getInterfaceList(); 371 QStringList list = i.getInterfaceList();
342 QMap<QString, Interface*>::Iterator it; 372 QMap<QString, Interface*>::Iterator it;
343 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) { 373 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) {
344 bool found = false; 374 bool found = false;
345 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){ 375 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){
346 if(it.key() == (*ni)) 376 if(it.key() == (*ni))
347 found = true; 377 found = true;
348 } 378 }
349 if(!found){ 379 if(!found){
350 Interface *i = new Interface(this, *ni, false); 380 Interface *i = new Interface(this, *ni, false);
351 i->setAttached(false); 381 i->setAttached(false);
352 i->setHardwareName(QString("Disconnected (%1)").arg(*ni)); 382 i->setHardwareName("Disconnected");
353 interfaceNames.insert(i->getInterfaceName(), i); 383 interfaceNames.insert(i->getInterfaceName(), i);
354 updateInterface(i); 384 updateInterface(i);
355 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 385 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
356 } 386 }
357 } 387 }
358 } 388 }
359} 389}
360 390
361/** 391/**
362 * Update this interface. If no QListViewItem exists create one. 392 * Update this interface. If no QListViewItem exists create one.
363 * @param Interface* pointer to the interface that needs to be updated. 393 * @param Interface* pointer to the interface that needs to be updated.
364 */ 394 */
365void MainWindowImp::updateInterface(Interface *i){ 395void MainWindowImp::updateInterface(Interface *i){
366 if(!advancedUserMode){ 396 if(!advancedUserMode){
367 if(i->getInterfaceName() == "lo") 397 if(i->getInterfaceName() == "lo")
368 return; 398 return;
369 } 399 }
370 400
371 QListViewItem *item = NULL; 401 QListViewItem *item = NULL;
372 402
373 // Find the interface, making it if needed. 403 // Find the interface, making it if needed.
374 if(items.find(i) == items.end()){ 404 if(items.find(i) == items.end()){
375 item = new QListViewItem(connectionList, "", "", ""); 405 item = new QListViewItem(connectionList, "", "", "");
376 // See if you can't find a module owner for this interface 406 // See if you can't find a module owner for this interface
377 QMap<Module*, QLibrary*>::Iterator it; 407 QMap<Module*, QLibrary*>::Iterator it;
378 for( it = libraries.begin(); it != libraries.end(); ++it ){ 408 for( it = libraries.begin(); it != libraries.end(); ++it ){
379 if(it.key()->isOwner(i)) 409 if(it.key()->isOwner(i))
380 i->setModuleOwner(it.key()); 410 i->setModuleOwner(it.key());
381 } 411 }
382 items.insert(i, item); 412 items.insert(i, item);
383 interfaceItems.insert(item, i); 413 interfaceItems.insert(item, i);
384 } 414 }
385 else 415 else
386 item = items[i]; 416 item = items[i];
387 417
388 // Update the icons and information 418 // Update the icons and information
389 item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down"))); 419 item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down")));
390 420
391 QString typeName = "lan"; 421 QString typeName = "lan";
392 if(i->getHardwareName().contains("Local Loopback")) 422 if(i->getHardwareName().contains("Local Loopback"))
393 typeName = "lo"; 423 typeName = "lo";
394 if(i->getInterfaceName().contains("irda")) 424 if(i->getInterfaceName().contains("irda"))
395 typeName = "irda"; 425 typeName = "irda";
396 if(i->getInterfaceName().contains("wlan")) 426 if(i->getInterfaceName().contains("wlan"))
397 typeName = "wlan"; 427 typeName = "wlan";
398 if(i->getInterfaceName().contains("usb")) 428 if(i->getInterfaceName().contains("usb"))
399 typeName = "usb"; 429 typeName = "usb";
400 430
401 if(!i->isAttached()) 431 if(!i->isAttached())
402 typeName = "connect_no"; 432 typeName = "connect_no";
403 // Actually try to use the Module 433 // Actually try to use the Module
404 if(i->getModuleOwner() != NULL) 434 if(i->getModuleOwner() != NULL)
405 typeName = i->getModuleOwner()->getPixmapName(i); 435 typeName = i->getModuleOwner()->getPixmapName(i);
406 436
407 item->setPixmap(1, (Resource::loadPixmap(typeName))); 437 item->setPixmap(1, (Resource::loadPixmap(typeName)));
408 item->setText(2, i->getHardwareName()); 438 item->setText(2, i->getHardwareName());
409 item->setText(3, (i->getStatus()) ? i->getIp() : QString("")); 439 item->setText(3, QString("(%1)").arg(i->getInterfaceName()));
440 item->setText(4, (i->getStatus()) ? i->getIp() : QString(""));
410} 441}
411 442
412void MainWindowImp::newProfileChanged(const QString& newText){ 443void MainWindowImp::newProfileChanged(const QString& newText){
413 if(newText.length() > 0) 444 if(newText.length() > 0)
414 newProfileButton->setEnabled(true); 445 newProfileButton->setEnabled(true);
415 else 446 else
416 newProfileButton->setEnabled(false); 447 newProfileButton->setEnabled(false);
417} 448}
418 449
419/** 450/**
420 * Adds a new profile to the list of profiles. 451 * Adds a new profile to the list of profiles.
421 * Don't add profiles that already exists. 452 * Don't add profiles that already exists.
422 * Appends to the list and QStringList 453 * Appends to the list and QStringList
423 */ 454 */
424void MainWindowImp::addProfile(){ 455void MainWindowImp::addProfile(){
425 QString newProfileName = newProfile->text(); 456 QString newProfileName = newProfile->text();
426 if(profiles.grep(newProfileName).count() > 0){ 457 if(profiles.grep(newProfileName).count() > 0){
427 QMessageBox::information(this, "Can't Add","Profile already exists.", "Ok"); 458 QMessageBox::information(this, "Can't Add","Profile already exists.", "Ok");
428 return; 459 return;
429 } 460 }
430 profiles.append(newProfileName); 461 profiles.append(newProfileName);
431 profilesList->insertItem(newProfileName); 462 profilesList->insertItem(newProfileName);
432} 463}
433 464
434/** 465/**
435 * Removes the currently selected profile in the combo. 466 * Removes the currently selected profile in the combo.
436 * Doesn't delete if there are less then 2 profiles. 467 * Doesn't delete if there are less then 2 profiles.
437 */ 468 */
438void MainWindowImp::removeProfile(){ 469void MainWindowImp::removeProfile(){
439 if(profilesList->count() <= 1){ 470 if(profilesList->count() <= 1){
440 QMessageBox::information(this, "Can't remove anything.","Need One Profile.", "Ok"); 471 QMessageBox::information(this, "Can't remove.","At least one profile\nis needed.", "Ok");
441 return; 472 return;
442 } 473 }
443 QString profileToRemove = profilesList->currentText(); 474 QString profileToRemove = profilesList->currentText();
475 if(profileToRemove == "All"){
476 QMessageBox::information(this, "Can't remove.","Can't remove default.", "Ok");
477 return;
478 }
479 // Can't remove the curent profile
480 if(profileToRemove == currentProfileLabel->text()){
481 QMessageBox::information(this, "Can't remove.",QString("%1 is the current profile.").arg(profileToRemove), "Ok");
482 return;
483
484 }
485
444 if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok){ 486 if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok){
445 profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), "")); 487 profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), ""));
446 profilesList->clear(); 488 profilesList->clear();
447 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) 489 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
448 profilesList->insertItem((*it)); 490 profilesList->insertItem((*it));
449 } 491 }
450
451} 492}
452 493
453/** 494/**
454 * A new profile has been selected, change. 495 * A new profile has been selected, change.
455 * @param newProfile the new profile. 496 * @param newProfile the new profile.
456 */ 497 */
457void MainWindowImp::changeProfile(){ 498void MainWindowImp::changeProfile(){
458 currentProfileLabel->setText(profilesList->text(profilesList->currentItem())); 499 if(profilesList->currentItem() == -1){
500 QMessageBox::information(this, "Can't Change.","Please select a profile.", "Ok");
501 return;
502 }
503 QString newProfile = profilesList->text(profilesList->currentItem());
504 if(newProfile != currentProfileLabel->text()){
505 currentProfileLabel->setText(newProfile);
506 QFile file(SCHEME);
507 if ( file.open(IO_ReadWrite) ) {
508 QTextStream stream( &file );
509 stream << QString("SCHEME=%1").arg(newProfile);
510 file.close();
511 }
512 // restart all up devices?
513 if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok){
514 // Go through them one by one
515 QMap<Interface*, QListViewItem*>::Iterator it;
516 for( it = items.begin(); it != items.end(); ++it ){
517 if(it.key()->getStatus() == true)
518 it.key()->restart();
519 }
520 }
521 }
459} 522}
460 523
461// mainwindowimp.cpp 524// mainwindowimp.cpp
462 525
diff --git a/noncore/settings/networksettings/wlan/wlanimp.cpp b/noncore/settings/networksettings/wlan/wlanimp.cpp
index 74eef5f..517604f 100644
--- a/noncore/settings/networksettings/wlan/wlanimp.cpp
+++ b/noncore/settings/networksettings/wlan/wlanimp.cpp
@@ -1,228 +1,227 @@
1#include "wlanimp.h" 1#include "wlanimp.h"
2 2
3/* Config class */ 3/* Config class */
4#include <qpe/config.h> 4#include <qpe/config.h>
5/* Global namespace */ 5/* Global namespace */
6#include <qpe/global.h> 6#include <qpe/global.h>
7/* system() */ 7/* system() */
8#include <stdlib.h> 8#include <stdlib.h>
9#include <qfile.h> 9#include <qfile.h>
10#include <qdir.h> 10#include <qdir.h>
11#include <qtextstream.h> 11#include <qtextstream.h>
12#include <qmessagebox.h> 12#include <qmessagebox.h>
13#include <qlineedit.h> 13#include <qlineedit.h>
14#include <qspinbox.h> 14#include <qspinbox.h>
15#include <qradiobutton.h> 15#include <qradiobutton.h>
16#include <qcheckbox.h> 16#include <qcheckbox.h>
17#include <qregexp.h> 17#include <qregexp.h>
18 18
19WLANImp::WLANImp( Config &cfg, QWidget* parent, const char* name):WLAN(parent, name),config(cfg){ 19WLANImp::WLANImp( Config &cfg, QWidget* parent, const char* name):WLAN(parent, name),config(cfg){
20 readConfig(); 20 readConfig();
21} 21}
22 22
23void WLANImp::readConfig() 23void WLANImp::readConfig()
24{ 24{
25 qWarning( "WLANImp::readConfig() called." ); 25 qWarning( "WLANImp::readConfig() called." );
26 config.setGroup( "Properties" ); 26 config.setGroup( "Properties" );
27 QString ssid = config.readEntry( "SSID", "any" ); 27 QString ssid = config.readEntry( "SSID", "any" );
28 if( ssid == "any" || ssid == "ANY" ){ 28 if( ssid == "any" || ssid == "ANY" ){
29 essNon->setChecked( true ); 29 essNon->setChecked( true );
30 } else { 30 } else {
31 essSpecific->setChecked( true ); 31 essSpecific->setChecked( true );
32 essSpecificLineEdit->setText( ssid ); 32 essSpecificLineEdit->setText( ssid );
33 } 33 }
34 QString mode = config.readEntry( "Mode", "Managed" ); 34 QString mode = config.readEntry( "Mode", "Managed" );
35 if( mode == "adhoc" ) { 35 if( mode == "adhoc" ) {
36 network802->setChecked( true ); 36 network802->setChecked( true );
37 } else { 37 } else {
38 networkInfrastructure->setChecked( true ); 38 networkInfrastructure->setChecked( true );
39 } 39 }
40 networkChannel->setValue( config.readNumEntry( "CHANNEL", 1 ) ); 40 networkChannel->setValue( config.readNumEntry( "CHANNEL", 1 ) );
41// config.readEntry( "RATE", "auto" ); 41// config.readEntry( "RATE", "auto" );
42 config.readEntry( "dot11PrivacyInvoked" ) == "true" ? wepEnabled->setChecked( true ) : wepEnabled->setChecked( false ); 42 config.readEntry( "dot11PrivacyInvoked" ) == "true" ? wepEnabled->setChecked( true ) : wepEnabled->setChecked( false );
43 config.readEntry( "AuthType", "opensystem" ); 43 config.readEntry( "AuthType", "opensystem" );
44 config.readEntry( "PRIV_KEY128", "false" ) == "false" ? key40->setChecked( true ) : key128->setChecked( true ); 44 config.readEntry( "PRIV_KEY128", "false" ) == "false" ? key40->setChecked( true ) : key128->setChecked( true );
45 int defaultkey = config.readNumEntry( "dot11WEPDefaultKeyID", 0 ); 45 int defaultkey = config.readNumEntry( "dot11WEPDefaultKeyID", 0 );
46 switch( defaultkey ){ 46 switch( defaultkey ){
47 case 0: 47 case 0:
48 keyRadio0->setChecked( true ); 48 keyRadio0->setChecked( true );
49 break; 49 break;
50 case 1: 50 case 1:
51 keyRadio1->setChecked( true ); 51 keyRadio1->setChecked( true );
52 break; 52 break;
53 case 2: 53 case 2:
54 keyRadio2->setChecked( true ); 54 keyRadio2->setChecked( true );
55 break; 55 break;
56 case 3: 56 case 3:
57 keyRadio3->setChecked( true ); 57 keyRadio3->setChecked( true );
58 break; 58 break;
59 } 59 }
60 keyLineEdit0->setText(config.readEntry( "dot11WEPDefaultKey0" )); 60 keyLineEdit0->setText(config.readEntry( "dot11WEPDefaultKey0" ));
61 keyLineEdit1->setText(config.readEntry( "dot11WEPDefaultKey1" )); 61 keyLineEdit1->setText(config.readEntry( "dot11WEPDefaultKey1" ));
62 keyLineEdit2->setText(config.readEntry( "dot11WEPDefaultKey2" )); 62 keyLineEdit2->setText(config.readEntry( "dot11WEPDefaultKey2" ));
63 keyLineEdit3->setText(config.readEntry( "dot11WEPDefaultKey3" )); 63 keyLineEdit3->setText(config.readEntry( "dot11WEPDefaultKey3" ));
64 return; 64 return;
65} 65}
66 66
67bool WLANImp::writeConfig() 67bool WLANImp::writeConfig()
68{ 68{
69 qWarning( "WLANImp::writeConfig() called." ); 69 qWarning( "WLANImp::writeConfig() called." );
70 config.setGroup( "Properties" ); 70 config.setGroup( "Properties" );
71 if( essNon->isChecked() ) { 71 if( essNon->isChecked() ) {
72 config.writeEntry( "SSID", "any" ); 72 config.writeEntry( "SSID", "any" );
73 } else { 73 } else {
74 config.writeEntry( "SSID", essSpecificLineEdit->text() ); 74 config.writeEntry( "SSID", essSpecificLineEdit->text() );
75 } 75 }
76 if( networkInfrastructure->isChecked() ){ 76 if( networkInfrastructure->isChecked() ){
77 config.writeEntry( "Mode", "Managed" ); 77 config.writeEntry( "Mode", "Managed" );
78 } else if( network802->isChecked() ){ 78 } else if( network802->isChecked() ){
79 config.writeEntry( "Mode", "adhoc" ); 79 config.writeEntry( "Mode", "adhoc" );
80 } 80 }
81 config.writeEntry( "CHANNEL", networkChannel->value() ); 81 config.writeEntry( "CHANNEL", networkChannel->value() );
82// config.readEntry( "RATE", "auto" ); 82// config.readEntry( "RATE", "auto" );
83 wepEnabled->isChecked() ? config.writeEntry( "dot11PrivacyInvoked", "true" ) : config.writeEntry( "dot11PrivacyInvoked", "false" ); 83 wepEnabled->isChecked() ? config.writeEntry( "dot11PrivacyInvoked", "true" ) : config.writeEntry( "dot11PrivacyInvoked", "false" );
84 authOpen->isChecked() ? config.writeEntry( "AuthType", "opensystem" ) : config.writeEntry( "AuthType", "sharedkey" ); 84 authOpen->isChecked() ? config.writeEntry( "AuthType", "opensystem" ) : config.writeEntry( "AuthType", "sharedkey" );
85 key40->isChecked() ? config.writeEntry( "PRIV_KEY128", "false" ) : config.writeEntry( "PRIV_KEY128", "true" ); 85 key40->isChecked() ? config.writeEntry( "PRIV_KEY128", "false" ) : config.writeEntry( "PRIV_KEY128", "true" );
86 if( keyRadio0->isChecked() ){ 86 if( keyRadio0->isChecked() ){
87 config.writeEntry( "dot11WEPDefaultKeyID", 0 ); 87 config.writeEntry( "dot11WEPDefaultKeyID", 0 );
88 } else if( keyRadio1->isChecked() ){ 88 } else if( keyRadio1->isChecked() ){
89 config.writeEntry( "dot11WEPDefaultKeyID", 1 ); 89 config.writeEntry( "dot11WEPDefaultKeyID", 1 );
90 } else if( keyRadio2->isChecked() ){ 90 } else if( keyRadio2->isChecked() ){
91 config.writeEntry( "dot11WEPDefaultKeyID", 2 ); 91 config.writeEntry( "dot11WEPDefaultKeyID", 2 );
92 } else if( keyRadio3->isChecked() ){ 92 } else if( keyRadio3->isChecked() ){
93 config.writeEntry( "dot11WEPDefaultKeyID", 3 ); 93 config.writeEntry( "dot11WEPDefaultKeyID", 3 );
94 } 94 }
95 config.writeEntry( "dot11WEPDefaultKey0", keyLineEdit0->text() ); 95 config.writeEntry( "dot11WEPDefaultKey0", keyLineEdit0->text() );
96 config.writeEntry( "dot11WEPDefaultKey1", keyLineEdit1->text() ); 96 config.writeEntry( "dot11WEPDefaultKey1", keyLineEdit1->text() );
97 config.writeEntry( "dot11WEPDefaultKey2", keyLineEdit2->text() ); 97 config.writeEntry( "dot11WEPDefaultKey2", keyLineEdit2->text() );
98 config.writeEntry( "dot11WEPDefaultKey3", keyLineEdit3->text() ); 98 config.writeEntry( "dot11WEPDefaultKey3", keyLineEdit3->text() );
99 return writeWirelessOpts( config ); 99 return writeWirelessOpts( config );
100// return true;
101} 100}
102 101
103/** 102/**
104 */ 103 */
105void WLANImp::accept() 104void WLANImp::accept()
106{ 105{
107 if ( writeConfig() ) 106 if ( writeConfig() )
108 QDialog::accept(); 107 QDialog::accept();
109} 108}
110 109
111void WLANImp::done ( int r ) 110void WLANImp::done ( int r )
112{ 111{
113 QDialog::done ( r ); 112 QDialog::done ( r );
114 close ( ); 113 close ( );
115} 114}
116 115
117bool WLANImp::writeWirelessOpts( Config &config, QString scheme ) 116bool WLANImp::writeWirelessOpts( Config &config, QString scheme )
118{ 117{
119 qWarning( "WLANImp::writeWirelessOpts entered." ); 118 qWarning( "WLANImp::writeWirelessOpts entered." );
120 QString prev = "/etc/pcmcia/wireless.opts"; 119 QString prev = "/etc/pcmcia/wireless.opts";
121 QFile prevFile(prev); 120 QFile prevFile(prev);
122 if ( !prevFile.open( IO_ReadOnly ) ) 121 if ( !prevFile.open( IO_ReadOnly ) )
123 return false; 122 return false;
124 123
125 QString tmp = "/etc/pcmcia/wireless.opts-qpe-new"; 124 QString tmp = "/etc/pcmcia/wireless.opts-qpe-new";
126 QFile tmpFile(tmp); 125 QFile tmpFile(tmp);
127 if ( !tmpFile.open( IO_WriteOnly ) ) 126 if ( !tmpFile.open( IO_WriteOnly ) )
128 return false; 127 return false;
129 128
130 bool retval = true; 129 bool retval = true;
131 130
132 QTextStream in( &prevFile ); 131 QTextStream in( &prevFile );
133 QTextStream out( &tmpFile ); 132 QTextStream out( &tmpFile );
134 133
135 config.setGroup("Properties"); 134 config.setGroup("Properties");
136 135
137 QString line; 136 QString line;
138 bool found=false; 137 bool found=false;
139 bool done=false; 138 bool done=false;
140 while ( !in.atEnd() ) { 139 while ( !in.atEnd() ) {
141 QString line = in.readLine(); 140 QString line = in.readLine();
142 QString wline = line.simplifyWhiteSpace(); 141 QString wline = line.simplifyWhiteSpace();
143 if ( !done ) { 142 if ( !done ) {
144 if ( found ) { 143 if ( found ) {
145 // skip existing entry for this scheme, and write our own. 144 // skip existing entry for this scheme, and write our own.
146 if ( wline == ";;" ) { 145 if ( wline == ";;" ) {
147 found = false; 146 found = false;
148 continue; 147 continue;
149 } else { 148 } else {
150 continue; 149 continue;
151 } 150 }
152 } else { 151 } else {
153 if ( wline.left(scheme.length()+7) == scheme + ",*,*,*)" ) { 152 if ( wline.left(scheme.length()+7) == scheme + ",*,*,*)" ) {
154 found=true; 153 found=true;
155 continue; // skip this line 154 continue; // skip this line
156 } else if ( wline == "esac" || wline == "*,*,*,*)" ) { 155 } else if ( wline == "esac" || wline == "*,*,*,*)" ) {
157 // end - add new entry 156 // end - add new entry
158 // Not all fields have a GUI, but all are supported 157 // Not all fields have a GUI, but all are supported
159 // in the letwork configuration files. 158 // in the letwork configuration files.
160 static const char* txtfields[] = { 159 static const char* txtfields[] = {
161 0 160 0
162 }; 161 };
163 QString readmode = config.readEntry( "Mode", "Managed" ); 162 QString readmode = config.readEntry( "Mode", "Managed" );
164 QString mode; 163 QString mode;
165 if( readmode == "Managed" ){ 164 if( readmode == "Managed" ){
166 mode = readmode; 165 mode = readmode;
167 } else if( readmode == "adhoc" ){ 166 } else if( readmode == "adhoc" ){
168 mode = "Ad-Hoc"; 167 mode = "Ad-Hoc";
169 } 168 }
170 QString key; 169 QString key;
171 if( wepEnabled->isChecked() ){ 170 if( wepEnabled->isChecked() ){
172 int defaultkey = config.readNumEntry( "dot11WEPDefaultKeyID", 0 ); 171 int defaultkey = config.readNumEntry( "dot11WEPDefaultKeyID", 0 );
173 switch( defaultkey ){ 172 switch( defaultkey ){
174 case 0: 173 case 0:
175 key += keyLineEdit0->text(); 174 key += keyLineEdit0->text();
176 break; 175 break;
177 case 1: 176 case 1:
178 key += keyLineEdit1->text(); 177 key += keyLineEdit1->text();
179 break; 178 break;
180 case 2: 179 case 2:
181 key += keyLineEdit2->text(); 180 key += keyLineEdit2->text();
182 break; 181 break;
183 case 3: 182 case 3:
184 key += keyLineEdit3->text(); 183 key += keyLineEdit3->text();
185 break; 184 break;
186 } 185 }
187 if( config.readEntry( "AuthType", "opensystem" ) == "opensystem") 186 if( config.readEntry( "AuthType", "opensystem" ) == "opensystem")
188 key += " open"; 187 key += " open";
189 } 188 }
190 out << scheme << ",*,*,*)" << "\n" 189 out << scheme << ",*,*,*)" << "\n"
191 << " ESSID=" << Global::shellQuote( config.readEntry( "SSID", "any" ) ) << "\n" 190 << " ESSID=" << Global::shellQuote( config.readEntry( "SSID", "any" ) ) << "\n"
192 << " MODE=" << mode << "\n" 191 << " MODE=" << mode << "\n"
193 << " KEY=" << Global::shellQuote( key ) << "\n" 192 << " KEY=" << Global::shellQuote( key ) << "\n"
194 << " RATE=" << "auto" << "\n" 193 << " RATE=" << "auto" << "\n"
195 ; 194 ;
196 if( mode != "Managed" ) 195 if( mode != "Managed" )
197 out << " CHANNEL=" << config.readNumEntry( "CHANNEL", 1 ) << "\n"; 196 out << " CHANNEL=" << config.readNumEntry( "CHANNEL", 1 ) << "\n";
198 const char** f = txtfields; 197 const char** f = txtfields;
199 while (*f) { 198 while (*f) {
200 out << " " << *f << "=" << config.readEntry(*f,"") << "\n"; 199 out << " " << *f << "=" << config.readEntry(*f,"") << "\n";
201 ++f; 200 ++f;
202 } 201 }
203 out << " ;;\n"; 202 out << " ;;\n";
204 done = true; 203 done = true;
205 } 204 }
206 } 205 }
207 } 206 }
208 out << line << "\n"; 207 out << line << "\n";
209 } 208 }
210 209
211 prevFile.close(); 210 prevFile.close();
212 tmpFile.close(); 211 tmpFile.close();
213 QString initpath; 212 QString initpath;
214 //system("cardctl suspend"); 213 //system("cardctl suspend");
215 if( QDir("/etc/rc.d/init.d").exists() ){ 214 if( QDir("/etc/rc.d/init.d").exists() ){
216 initpath = "/etc/rc.d/init.d"; 215 initpath = "/etc/rc.d/init.d";
217 } else if( QDir("/etc/init.d").exists() ){ 216 } else if( QDir("/etc/init.d").exists() ){
218 initpath = "/etc/init.d"; 217 initpath = "/etc/init.d";
219 } 218 }
220 if( initpath ) 219 if( initpath )
221 system(QString("%1/pcmcia stop").arg(initpath)); 220 system(QString("%1/pcmcia stop").arg(initpath));
222 221
223 if( system( "mv " + tmp + " " + prev ) ) 222 if( system( "mv " + tmp + " " + prev ) )
224 retval = false; 223 retval = false;
225//#ifdef USE_SCHEMES 224//#ifdef USE_SCHEMES
226// if ( retval ) 225// if ( retval )
227 //SchemeChanger::changeScheme(scheme); 226 //SchemeChanger::changeScheme(scheme);
228//#endif 227//#endif
diff --git a/noncore/settings/networksettings/wlan/wlanmodule.cpp b/noncore/settings/networksettings/wlan/wlanmodule.cpp
index 9d34d75..53b5857 100644
--- a/noncore/settings/networksettings/wlan/wlanmodule.cpp
+++ b/noncore/settings/networksettings/wlan/wlanmodule.cpp
@@ -1,93 +1,93 @@
1#include "wlanmodule.h" 1#include "wlanmodule.h"
2#include <qpe/config.h> 2#include <qpe/config.h>
3#include "wlanimp.h" 3#include "wlanimp.h"
4 4
5/** 5/**
6 * Constructor, find all of the possible interfaces 6 * Constructor, find all of the possible interfaces
7 */ 7 */
8WLANModule::WLANModule() : Module() { 8WLANModule::WLANModule() : Module() {
9 // get output from iwconfig 9 // get output from iwconfig
10} 10}
11 11
12/** 12/**
13 * Change the current profile 13 * Change the current profile
14 */ 14 */
15void WLANModule::setProfile(QString newProfile){ 15void WLANModule::setProfile(QString newProfile){
16 profile = newProfile; 16 profile = newProfile;
17} 17}
18 18
19/** 19/**
20 * get the icon name for this device. 20 * get the icon name for this device.
21 * @param Interface* can be used in determining the icon. 21 * @param Interface* can be used in determining the icon.
22 * @return QString the icon name (minus .png, .gif etc) 22 * @return QString the icon name (minus .png, .gif etc)
23 */ 23 */
24QString WLANModule::getPixmapName(Interface* ){ 24QString WLANModule::getPixmapName(Interface* ){
25 return "wlan"; 25 return "wlan";
26} 26}
27 27
28/** 28/**
29 * Check to see if the interface i is owned by this module. 29 * Check to see if the interface i is owned by this module.
30 * @param Interface* interface to check against 30 * @param Interface* interface to check against
31 * @return bool true if i is owned by this module, false otherwise. 31 * @return bool true if i is owned by this module, false otherwise.
32 */ 32 */
33bool WLANModule::isOwner(Interface *i){ 33bool WLANModule::isOwner(Interface *i){
34 if(i->getInterfaceName() == "eth0" || i->getInterfaceName() == "wlan0"){ 34 if(i->getInterfaceName() == "eth0" || i->getInterfaceName() == "wlan0"){
35 i->setHardwareName(QString("802.11b (%1)").arg(i->getInterfaceName())); 35 i->setHardwareName("802.11b");
36 return true; 36 return true;
37 } 37 }
38 return false; 38 return false;
39} 39}
40 40
41/** 41/**
42 * Create, set tabWiget and return the WLANConfigure Module 42 * Create, set tabWiget and return the WLANConfigure Module
43 * @param tabWidget a pointer to the tab widget that this configure has. 43 * @param tabWidget a pointer to the tab widget that this configure has.
44 * @return QWidget* pointer to the tab widget in this modules configure. 44 * @return QWidget* pointer to the tab widget in this modules configure.
45 */ 45 */
46QWidget *WLANModule::configure(QTabWidget **tabWidget){ 46QWidget *WLANModule::configure(QTabWidget **tabWidget){
47 Config *cfg = new Config("wireless"); 47 Config *cfg = new Config("wireless");
48 WLANImp *wlanconfig = new WLANImp(*cfg); 48 WLANImp *wlanconfig = new WLANImp(*cfg);
49 (*tabWidget) = wlanconfig->tabWidget; 49 (*tabWidget) = wlanconfig->tabWidget;
50 return wlanconfig; 50 return wlanconfig;
51} 51}
52 52
53/** 53/**
54 * Create, set tabWiget and return the Information Module 54 * Create, set tabWiget and return the Information Module
55 * @param tabWidget a pointer to the tab widget that this information has. 55 * @param tabWidget a pointer to the tab widget that this information has.
56 * @return QWidget* pointer to the tab widget in this modules info. 56 * @return QWidget* pointer to the tab widget in this modules info.
57 */ 57 */
58QWidget *WLANModule::information(QTabWidget **tabWidget){ 58QWidget *WLANModule::information(QTabWidget **tabWidget){
59 return NULL; 59 return NULL;
60} 60}
61 61
62/** 62/**
63 * Get all active (up or down) interfaces 63 * Get all active (up or down) interfaces
64 * @return QList<Interface> A list of interfaces that exsist that havn't 64 * @return QList<Interface> A list of interfaces that exsist that havn't
65 * been called by isOwner() 65 * been called by isOwner()
66 */ 66 */
67QList<Interface> WLANModule::getInterfaces(){ 67QList<Interface> WLANModule::getInterfaces(){
68 return list; 68 return list;
69} 69}
70 70
71/** 71/**
72 * Attempt to add a new interface as defined by name 72 * Attempt to add a new interface as defined by name
73 * @param name the name of the type of interface that should be created given 73 * @param name the name of the type of interface that should be created given
74 * by possibleNewInterfaces(); 74 * by possibleNewInterfaces();
75 * @return Interface* NULL if it was unable to be created. 75 * @return Interface* NULL if it was unable to be created.
76 */ 76 */
77Interface *WLANModule::addNewInterface(QString ){ 77Interface *WLANModule::addNewInterface(QString ){
78 // We can't add a 802.11 interface, either the hardware will be there 78 // We can't add a 802.11 interface, either the hardware will be there
79 // or it wont. 79 // or it wont.
80 return NULL; 80 return NULL;
81} 81}
82 82
83/** 83/**
84 * Attempts to remove the interface, doesn't delete i 84 * Attempts to remove the interface, doesn't delete i
85 * @return bool true if successfull, false otherwise. 85 * @return bool true if successfull, false otherwise.
86 */ 86 */
87bool WLANModule::remove(Interface*){ 87bool WLANModule::remove(Interface*){
88 // Can't remove a hardware device, you can stop it though. 88 // Can't remove a hardware device, you can stop it though.
89 return false; 89 return false;
90} 90}
91 91
92// wlanmodule.cpp 92// wlanmodule.cpp
93 93