109 files changed, 12061 insertions, 0 deletions
diff --git a/noncore/settings/networksettings2/config.in b/noncore/settings/networksettings2/config.in new file mode 100644 index 0000000..37ce9cf --- a/dev/null +++ b/noncore/settings/networksettings2/config.in | |||
@@ -0,0 +1,22 @@ | |||
1 | config NS2 | ||
2 | boolean "opie-networksettings-2 (TCP/IP network settings)" | ||
3 | default "y" | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE | ||
5 | |||
6 | config NS2CORE | ||
7 | boolean | ||
8 | default "y" if NS2 | ||
9 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && NS2 | ||
10 | |||
11 | source noncore/settings/networksettings2/profile/config.in | ||
12 | source noncore/settings/networksettings2/network/config.in | ||
13 | source noncore/settings/networksettings2/lancard/config.in | ||
14 | source noncore/settings/networksettings2/ppp/config.in | ||
15 | source noncore/settings/networksettings2/wlan/config.in | ||
16 | source noncore/settings/networksettings2/usb/config.in | ||
17 | source noncore/settings/networksettings2/irda/config.in | ||
18 | source noncore/settings/networksettings2/vpn/config.in | ||
19 | source noncore/settings/networksettings2/bluetooth/config.in | ||
20 | source noncore/settings/networksettings2/cable/config.in | ||
21 | source noncore/settings/networksettings2/modem/config.in | ||
22 | source noncore/settings/networksettings2/networksettings2/config.in | ||
diff --git a/noncore/settings/networksettings2/editconnection.cpp b/noncore/settings/networksettings2/editconnection.cpp new file mode 100644 index 0000000..d4b2bb3 --- a/dev/null +++ b/noncore/settings/networksettings2/editconnection.cpp | |||
@@ -0,0 +1,582 @@ | |||
1 | #include <qlistview.h> | ||
2 | #include <qwidgetstack.h> | ||
3 | #include <qframe.h> | ||
4 | #include <qcombobox.h> | ||
5 | #include <qtabwidget.h> | ||
6 | #include <qmessagebox.h> | ||
7 | #include <qpushbutton.h> | ||
8 | #include <qlineedit.h> | ||
9 | #include <qheader.h> | ||
10 | #include <qpainter.h> | ||
11 | #include <qcheckbox.h> | ||
12 | #include <qlabel.h> | ||
13 | |||
14 | #include "editconnection.h" | ||
15 | #include "resources.h" | ||
16 | #include "netnode.h" | ||
17 | |||
18 | // | ||
19 | // | ||
20 | // THESE TO GIVE BETTER FEEDBACK ABOUT DISABLED ITEMS | ||
21 | // | ||
22 | // | ||
23 | |||
24 | class MyQCheckListItem : public QCheckListItem | ||
25 | { | ||
26 | public: | ||
27 | MyQCheckListItem( QListView *parent, const QString & S, Type T ) : | ||
28 | QCheckListItem( parent, S, T ) { } | ||
29 | MyQCheckListItem( QCheckListItem *parent, const QString & S, Type T ) : | ||
30 | QCheckListItem( parent, S, T ) { } | ||
31 | MyQCheckListItem( QListViewItem *parent, const QString & S, Type T ) : | ||
32 | QCheckListItem( parent, S, T ) { } | ||
33 | |||
34 | virtual void paintCell( QPainter *p, const QColorGroup &cg, | ||
35 | int column, int width, int alignment ); | ||
36 | |||
37 | }; | ||
38 | |||
39 | void MyQCheckListItem::paintCell( QPainter *p, const QColorGroup &cg, | ||
40 | int column, int width, int alignment ) | ||
41 | { | ||
42 | QColorGroup _cg( cg ); | ||
43 | QColor c = _cg.text(); | ||
44 | if ( ! isSelectable() ) | ||
45 | _cg.setColor( QColorGroup::Text, Qt::lightGray ); | ||
46 | QCheckListItem::paintCell( p, _cg, column, width, alignment ); | ||
47 | _cg.setColor( QColorGroup::Text, c ); | ||
48 | } | ||
49 | |||
50 | class MyQListViewItem : public QListViewItem | ||
51 | { | ||
52 | public: | ||
53 | MyQListViewItem( QListView *parent, const QString & S ) : | ||
54 | QListViewItem( parent, S ) { } | ||
55 | MyQListViewItem( QListViewItem *parent, const QString & S ) : | ||
56 | QListViewItem( parent, S ) { } | ||
57 | |||
58 | virtual void paintCell( QPainter *p, const QColorGroup &cg, | ||
59 | int column, int width, int alignment ); | ||
60 | |||
61 | }; | ||
62 | |||
63 | void MyQListViewItem::paintCell( QPainter *p, const QColorGroup &cg, | ||
64 | int column, int width, int alignment ) | ||
65 | { | ||
66 | QColorGroup _cg( cg ); | ||
67 | QColor c = _cg.text(); | ||
68 | if ( ! isSelectable() ) | ||
69 | _cg.setColor( QColorGroup::Text, Qt::lightGray ); | ||
70 | QListViewItem::paintCell( p, _cg, column, width, alignment ); | ||
71 | _cg.setColor( QColorGroup::Text, c ); | ||
72 | } | ||
73 | |||
74 | // | ||
75 | // | ||
76 | // REAL GUI | ||
77 | // | ||
78 | // | ||
79 | |||
80 | bool EditConnection::AutoCollapse = 1; | ||
81 | |||
82 | EditConnection::EditConnection( QWidget* parent ) : | ||
83 | EditConnectionGUI( parent, 0, TRUE ), TmpCollection() { | ||
84 | |||
85 | Tab_TB->setTabEnabled( Setup_FRM, FALSE ); | ||
86 | Setup_FRM->setEnabled( FALSE ); | ||
87 | |||
88 | TmpIsValid = 0; | ||
89 | SelectedNodes = 0; | ||
90 | |||
91 | AutoCollapse_CB->setChecked( AutoCollapse ); | ||
92 | |||
93 | Mapping = new QPtrDict<ANetNode>; | ||
94 | Mapping->setAutoDelete( FALSE ); | ||
95 | Nodes_LV->header()->hide(); | ||
96 | // popluate tree with all NetNodes | ||
97 | buildFullTree(); | ||
98 | } | ||
99 | |||
100 | NodeCollection * EditConnection::getTmpCollection( void ) { | ||
101 | |||
102 | if( TmpIsValid ) | ||
103 | // content is stil OK | ||
104 | return &(TmpCollection); | ||
105 | |||
106 | // reset collection -> delete all NEW NetNodes | ||
107 | { ANetNodeInstance * NNI; | ||
108 | for( QListIterator<ANetNodeInstance> it(TmpCollection); | ||
109 | it.current(); | ||
110 | ++it ) { | ||
111 | if( it.current()->isNew() ) { | ||
112 | delete it.current(); | ||
113 | } | ||
114 | } | ||
115 | TmpCollection.clear(); | ||
116 | } | ||
117 | |||
118 | // update content | ||
119 | QListViewItem * it = Nodes_LV->firstChild(); | ||
120 | ANetNode * NN; | ||
121 | // start iter | ||
122 | ANetNodeInstance * NNI = | ||
123 | (SelectedNodes) ? SelectedNodes->first() : 0 ; | ||
124 | |||
125 | TmpCollection.setModified( 0 ); | ||
126 | |||
127 | while ( it ) { | ||
128 | NN = (*Mapping)[it]; | ||
129 | if( NN == 0 ) { | ||
130 | // child is controller -> has sub radio | ||
131 | // check if one radio is selected | ||
132 | it = it->firstChild(); | ||
133 | while( it ) { | ||
134 | if( ((QCheckListItem *)it)->isOn() ) { | ||
135 | // this radio is selected -> go deeper | ||
136 | if( SelectedNodes == 0 || | ||
137 | NNI == 0 || | ||
138 | NNI->netNode()->nodeName() != it->text(0) ) { | ||
139 | // new item not in previous collection | ||
140 | ANetNodeInstance * NNI = (*Mapping)[it]->createInstance(); | ||
141 | NNI->initialize(); | ||
142 | // this node type not in collection | ||
143 | TmpCollection.append( NNI ); | ||
144 | // master collection changed because new item in it | ||
145 | TmpCollection.setModified( 1 ); | ||
146 | // no more valid items in old list | ||
147 | NNI = 0; | ||
148 | } else { | ||
149 | // already in list -> copy pointer | ||
150 | TmpCollection.append( NNI ); | ||
151 | NNI = SelectedNodes->next(); | ||
152 | } | ||
153 | it = it->firstChild(); | ||
154 | // do not bother to check other items | ||
155 | break; | ||
156 | } | ||
157 | it = it->nextSibling(); | ||
158 | } | ||
159 | } else { | ||
160 | // check children | ||
161 | it = it->firstChild(); | ||
162 | } | ||
163 | } | ||
164 | |||
165 | TmpIsValid = 1; | ||
166 | return &(TmpCollection); | ||
167 | } | ||
168 | |||
169 | // pass a connection NodeCollection to be edited | ||
170 | void EditConnection::setConnection( NodeCollection * NC ) { | ||
171 | ANetNodeInstance * NNI; | ||
172 | ANetNode * NN; | ||
173 | |||
174 | SelectedNodes = NC; | ||
175 | Name_LE->setText( NC->name() ); | ||
176 | NNI = NC->first(); | ||
177 | |||
178 | // show configure tabl | ||
179 | Tab_TB->setCurrentPage( 1 ); | ||
180 | |||
181 | // valid colledction | ||
182 | Tab_TB->setTabEnabled( Setup_FRM, FALSE ); | ||
183 | Setup_FRM->setEnabled( FALSE ); | ||
184 | |||
185 | // select items in collection | ||
186 | QListViewItem * it = Nodes_LV->firstChild(); | ||
187 | bool Found; | ||
188 | |||
189 | TmpIsValid = 0; | ||
190 | |||
191 | while ( it ) { | ||
192 | // listitem corresponds to netnode | ||
193 | NN = (*Mapping)[it]; | ||
194 | if( NN == 0 ) { | ||
195 | // child is controller -> has sub radio | ||
196 | QString Ctr = it->text(0); | ||
197 | // check if one radio is selected | ||
198 | it = it->firstChild(); | ||
199 | Found = 0; | ||
200 | while( it ) { | ||
201 | if( NNI && NNI->netNode()->nodeName() == it->text(0) ) { | ||
202 | // this radio is part of the collection | ||
203 | ((QCheckListItem *)it)->setOn( 1 ); | ||
204 | updateGUI( it, NNI->netNode() ); | ||
205 | // check its children | ||
206 | Found = 1; | ||
207 | it = it->firstChild(); | ||
208 | NNI = SelectedNodes->next(); | ||
209 | // do not bother to check other items | ||
210 | break; | ||
211 | } | ||
212 | it = it->nextSibling(); | ||
213 | } | ||
214 | if( ! Found ) { | ||
215 | // this means that this level is NOT present in collection | ||
216 | // probably INCOMPATIBEL collection OR Missing plugin | ||
217 | QMessageBox::warning( | ||
218 | 0, | ||
219 | tr( "Error presentig Connection" ), | ||
220 | tr( "<p>Old connection or missing plugin \"<i>%1</i>\"</p>" ). | ||
221 | arg(Ctr) ); | ||
222 | return; | ||
223 | } | ||
224 | } else { | ||
225 | // automatic item -> check children | ||
226 | it = it->firstChild(); | ||
227 | } | ||
228 | } | ||
229 | } | ||
230 | |||
231 | // get result of editing (either new OR updated collection | ||
232 | NodeCollection * EditConnection::connection( void ) { | ||
233 | |||
234 | if( SelectedNodes == 0 ) { | ||
235 | // new collection | ||
236 | SelectedNodes = new NodeCollection; | ||
237 | } | ||
238 | |||
239 | // clean out old entries | ||
240 | SelectedNodes->clear(); | ||
241 | |||
242 | // transfer | ||
243 | { ANetNodeInstance * NNI; | ||
244 | |||
245 | for( QListIterator<ANetNodeInstance> it(TmpCollection); | ||
246 | it.current(); | ||
247 | ++it ) { | ||
248 | SelectedNodes->append( it.current() ); | ||
249 | } | ||
250 | } | ||
251 | |||
252 | if( TmpCollection.isModified() ) | ||
253 | SelectedNodes->setModified( 1 ); | ||
254 | |||
255 | if( SelectedNodes->name() != Name_LE->text() ) { | ||
256 | SelectedNodes->setName( Name_LE->text() ); | ||
257 | SelectedNodes->setModified( 1 ); | ||
258 | } | ||
259 | |||
260 | return SelectedNodes; | ||
261 | } | ||
262 | |||
263 | // Build device tree -> start | ||
264 | void EditConnection::buildFullTree( void ) { | ||
265 | ANetNode * NN; | ||
266 | |||
267 | // toplevel item | ||
268 | MyQCheckListItem * TheTop = new MyQCheckListItem( | ||
269 | Nodes_LV, | ||
270 | NSResources->netNode2Name("fullsetup"), | ||
271 | QCheckListItem::Controller ); | ||
272 | TheTop->setOpen( TRUE ); | ||
273 | Description_LBL->setText( | ||
274 | NSResources->netNode2Description( "fullsetup" ) ); | ||
275 | Nodes_LV->setSelected( TheTop, TRUE ); | ||
276 | |||
277 | // find all Nodes that care toplevel nodes -> ie provide | ||
278 | // TCP/IP Connection | ||
279 | for( QDictIterator<NetNode_t> Iter(NSResources->netNodes()); | ||
280 | Iter.current(); | ||
281 | ++Iter ) { | ||
282 | |||
283 | NN = Iter.current()->NetNode; | ||
284 | |||
285 | if( ! NN->isToplevel() ) { | ||
286 | continue; | ||
287 | } | ||
288 | |||
289 | MyQCheckListItem * it = new MyQCheckListItem( TheTop, | ||
290 | NN->nodeName(), | ||
291 | QCheckListItem::RadioButton ); | ||
292 | it->setPixmap( 0, NSResources->getPixmap( "commprofile" ) ); | ||
293 | // remember that this node maps to this listitem | ||
294 | Mapping->insert( it, NN ); | ||
295 | buildSubTree( it, NN ); | ||
296 | } | ||
297 | } | ||
298 | |||
299 | // Build device tree -> help function | ||
300 | void EditConnection::buildSubTree( QListViewItem * it, ANetNode *NN ) { | ||
301 | ANetNode::NetNodeList & NNL = NN->alternatives(); | ||
302 | |||
303 | if( NNL.size() > 1 ) { | ||
304 | // this node has alternatives -> needs radio buttons | ||
305 | it = new MyQCheckListItem( | ||
306 | it, | ||
307 | NSResources->netNode2Name(NNL[0]->provides()), | ||
308 | QCheckListItem::Controller ); | ||
309 | it->setSelectable( FALSE ); | ||
310 | } | ||
311 | |||
312 | for ( unsigned int i=0; i < NNL.size(); i++ ) { | ||
313 | QListViewItem * CI; | ||
314 | if( NNL.size() > 1 ) { | ||
315 | // generate radio buttons | ||
316 | CI = new MyQCheckListItem( | ||
317 | (QCheckListItem *)it, | ||
318 | NNL[i]->nodeName(), QCheckListItem::RadioButton ); | ||
319 | // remember that this node maps to this listitem | ||
320 | CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) ); | ||
321 | Mapping->insert( CI, NNL[i] ); | ||
322 | CI->setSelectable( FALSE ); | ||
323 | } else { | ||
324 | // Single item | ||
325 | CI = new MyQListViewItem( it, NNL[i]->nodeName() ); | ||
326 | // remember that this node maps to this listitem | ||
327 | Mapping->insert( CI, NNL[i] ); | ||
328 | CI->setSelectable( FALSE ); | ||
329 | CI->setPixmap( 0, NSResources->getPixmap( NNL[i]->pixmapName() ) ); | ||
330 | } | ||
331 | buildSubTree( CI, NNL[i] ); | ||
332 | } | ||
333 | } | ||
334 | |||
335 | // Clicked ok OK button | ||
336 | void EditConnection::accept( void ) { | ||
337 | if( ! haveCompleteConfig( 0 ) || Name_LE->text().isEmpty() ) { | ||
338 | QMessageBox::warning( | ||
339 | 0, | ||
340 | tr( "Closing Connection Setup" ), | ||
341 | tr( "Definition not complete or no name" ) ); | ||
342 | return; | ||
343 | } | ||
344 | |||
345 | // check if all devices have acceptable input | ||
346 | getTmpCollection(); | ||
347 | { ANetNodeInstance * NNI; | ||
348 | QString S; | ||
349 | |||
350 | for( QListIterator<ANetNodeInstance> it(TmpCollection); | ||
351 | it.current(); | ||
352 | ++it ) { | ||
353 | NNI = it.current(); | ||
354 | // widget must show its own problems | ||
355 | S = NNI->acceptable(); | ||
356 | if( ! S.isEmpty() ) { | ||
357 | QMessageBox::warning( | ||
358 | 0, | ||
359 | tr( "Cannot save" ), | ||
360 | S ); | ||
361 | return; | ||
362 | } | ||
363 | NNI->commit(); | ||
364 | |||
365 | if( NNI->isModified() ) { | ||
366 | TmpCollection.setModified( 1 ); | ||
367 | // commit the data | ||
368 | } | ||
369 | } | ||
370 | } | ||
371 | |||
372 | QDialog::accept(); | ||
373 | } | ||
374 | |||
375 | // triggered by CB | ||
376 | void EditConnection::SLOT_AutoCollapse( bool b ) { | ||
377 | AutoCollapse = b; | ||
378 | } | ||
379 | |||
380 | // clicked on node in tree -> update GUI | ||
381 | void EditConnection::SLOT_SelectNode( QListViewItem * it ) { | ||
382 | ANetNode * NN; | ||
383 | if( it == 0 || it->depth() == 0 ) { | ||
384 | Description_LBL->setText( | ||
385 | NSResources->netNode2Description( "fullsetup" ) ); | ||
386 | // topevel or no selection | ||
387 | return; | ||
388 | } | ||
389 | |||
390 | // store conversion from lvitem to node | ||
391 | NN = (*Mapping)[ it ]; | ||
392 | |||
393 | if( ! NN ) { | ||
394 | // intermediate node | ||
395 | NN = (*Mapping)[ it->firstChild() ]; | ||
396 | if( NN ) { | ||
397 | // figure out type of this node -> produce mesage | ||
398 | Description_LBL->setText( NSResources->netNode2Description(NN->provides()) ); | ||
399 | } else { | ||
400 | Description_LBL->setText( "" ); | ||
401 | } | ||
402 | return; | ||
403 | } | ||
404 | |||
405 | Description_LBL->setText( NN->nodeDescription() ); | ||
406 | |||
407 | if( ! it->isSelectable() ) { | ||
408 | return; | ||
409 | } | ||
410 | |||
411 | if( ! ((QCheckListItem *)it)->isOn() ) { | ||
412 | // clicked on line but NOT on Check or Radio item | ||
413 | return; | ||
414 | } | ||
415 | |||
416 | // item has really changed -> update | ||
417 | TmpIsValid = 0; | ||
418 | updateGUI( it, NN ); | ||
419 | } | ||
420 | |||
421 | // cliecked on TAB to go to setup | ||
422 | void EditConnection::SLOT_AlterTab( const QString & S ) { | ||
423 | if( S == tr( "Setup" ) && Setup_FRM->isEnabled() ) { | ||
424 | // switched to setup -> update CB and populate ws with | ||
425 | // forms for devices | ||
426 | |||
427 | if( ! TmpIsValid ) { | ||
428 | getTmpCollection(); | ||
429 | |||
430 | // clear CB and Ws | ||
431 | { QWidget * W; | ||
432 | int i = 0; | ||
433 | |||
434 | Devices_CB->clear(); | ||
435 | while( ( W = Setup_WS->widget( i ) ) ) { | ||
436 | Setup_WS->removeWidget( W ); | ||
437 | i ++; | ||
438 | } | ||
439 | } | ||
440 | |||
441 | // update CB | ||
442 | // and populate WidgetStack | ||
443 | { ANetNodeInstance * NNI; | ||
444 | QListIterator<ANetNodeInstance> it(TmpCollection); | ||
445 | int i = 0; | ||
446 | QWidget * W; | ||
447 | |||
448 | for ( ; it.current(); ++it ) { | ||
449 | NNI = it.current(); | ||
450 | Devices_CB->insertItem( | ||
451 | NSResources->getPixmap( NNI->netNode()->pixmapName() ), | ||
452 | NNI->netNode()->nodeName() | ||
453 | ); | ||
454 | |||
455 | // add edit widget | ||
456 | W = NNI->edit( Setup_WS ); | ||
457 | if( ! W) { | ||
458 | W = new QLabel( Setup_WS, | ||
459 | tr("No configuration required")); | ||
460 | } | ||
461 | Setup_WS->addWidget( W , i ); | ||
462 | i ++; | ||
463 | } | ||
464 | } | ||
465 | Setup_WS->raiseWidget( 0 ); | ||
466 | } // still valid | ||
467 | } | ||
468 | } | ||
469 | |||
470 | // update visual feedback of selection state | ||
471 | void EditConnection::updateGUI( QListViewItem * it, ANetNode * NN ) { | ||
472 | |||
473 | bool HCC = haveCompleteConfig( it ); | ||
474 | Tab_TB->setTabEnabled( Setup_FRM, HCC ); | ||
475 | Setup_FRM->setEnabled( HCC ); | ||
476 | |||
477 | // disable children of all siblings at same level | ||
478 | QListViewItem * Sbl = it->parent()->firstChild(); | ||
479 | while( Sbl ) { | ||
480 | if ( Sbl != it ) { | ||
481 | disableTree( Sbl->firstChild(), FALSE ); | ||
482 | Sbl->setSelectable( TRUE ); | ||
483 | if( AutoCollapse ) | ||
484 | Sbl->setOpen( FALSE ); | ||
485 | } | ||
486 | Sbl = Sbl->nextSibling(); | ||
487 | } | ||
488 | |||
489 | // enable selected path (as deep as it goes | ||
490 | it->setOpen( TRUE ); | ||
491 | enablePath( it->firstChild(), | ||
492 | (it->depth()==1) ? | ||
493 | 1 : // toplevel always alternatives | ||
494 | (NN->alternatives().size() > 1) ); | ||
495 | } | ||
496 | |||
497 | void EditConnection::disableTree( QListViewItem * it, bool Mode ) { | ||
498 | while( it ) { | ||
499 | // disable sbl's chidren | ||
500 | it->setSelectable( Mode ); | ||
501 | if( AutoCollapse ) | ||
502 | it->setOpen( Mode ); | ||
503 | disableTree( it->firstChild(), Mode ); | ||
504 | it = it->nextSibling(); | ||
505 | } | ||
506 | } | ||
507 | |||
508 | // pah : ParentHasAlternatives | ||
509 | void EditConnection::enablePath( QListViewItem * it, bool pha ) { | ||
510 | while( it ) { | ||
511 | ANetNode * NN; | ||
512 | NN = (*Mapping)[it]; | ||
513 | if( NN ) { | ||
514 | if( pha ) { | ||
515 | bool doOn = ((QCheckListItem *)it)->isOn(); | ||
516 | // we are a checklistitem for sure | ||
517 | it->setSelectable( TRUE ); | ||
518 | if( AutoCollapse && ! doOn ) | ||
519 | it->setOpen( doOn ); | ||
520 | if( doOn ) { | ||
521 | // selected alternative | ||
522 | enablePath( it->firstChild(), | ||
523 | NN->alternatives().size() > 1); | ||
524 | } else { | ||
525 | // non-selected alternative | ||
526 | disableTree( it->firstChild(), FALSE); | ||
527 | } | ||
528 | } else { | ||
529 | // we are single subitem | ||
530 | it->setSelectable( TRUE ); | ||
531 | it->setOpen( TRUE ); | ||
532 | enablePath( it->firstChild(), | ||
533 | NN->alternatives().size() > 1); | ||
534 | } | ||
535 | } else { | ||
536 | // controller node | ||
537 | it->setSelectable( TRUE ); | ||
538 | it->setOpen( TRUE ); | ||
539 | enablePath( it->firstChild(), pha ); | ||
540 | } | ||
541 | it = it->nextSibling(); | ||
542 | } | ||
543 | } | ||
544 | |||
545 | // do we have a complete configuration (all needs are provided for ?) | ||
546 | bool EditConnection::haveCompleteConfig( QListViewItem * it ) { | ||
547 | if( it == 0 || ((QCheckListItem *)it)->isOn() ) { | ||
548 | // check children | ||
549 | it = (it) ? it->firstChild() : Nodes_LV->firstChild() ; | ||
550 | while ( it ) { | ||
551 | if( ((QCheckListItem *)it)->type() == | ||
552 | QCheckListItem::Controller ) { | ||
553 | // child is controller -> has sub radio | ||
554 | // check if one radio is selected | ||
555 | it = it->firstChild(); | ||
556 | while( it ) { | ||
557 | if( ((QCheckListItem *)it)->isOn() ) { | ||
558 | // this radio is selected -> go deeper | ||
559 | it = it->firstChild(); | ||
560 | if( ! it ) { | ||
561 | // was deepest level | ||
562 | return 1; | ||
563 | } | ||
564 | // do not bother to check other items | ||
565 | break; | ||
566 | } | ||
567 | it = it->nextSibling(); | ||
568 | } | ||
569 | if( ! it ) { | ||
570 | // no radio selected | ||
571 | return 0; | ||
572 | } | ||
573 | } else { | ||
574 | // check children | ||
575 | it = it->firstChild(); | ||
576 | } | ||
577 | } | ||
578 | // deepest level -> all is still OK | ||
579 | return 1; | ||
580 | } // was not ON | ||
581 | return 0; | ||
582 | } | ||
diff --git a/noncore/settings/networksettings2/editconnection.h b/noncore/settings/networksettings2/editconnection.h new file mode 100644 index 0000000..e8d7a2c --- a/dev/null +++ b/noncore/settings/networksettings2/editconnection.h | |||
@@ -0,0 +1,49 @@ | |||
1 | #include "editconnectionGUI.h" | ||
2 | |||
3 | #include <qptrdict.h> | ||
4 | #include <qvector.h> | ||
5 | #include "netnode.h" | ||
6 | |||
7 | class ANetNodeInstance; | ||
8 | class ANetNode; | ||
9 | class QListViewItem; | ||
10 | class NetNodeLVI; | ||
11 | class QCloseEvent; | ||
12 | |||
13 | class EditConnection : public EditConnectionGUI { | ||
14 | |||
15 | Q_OBJECT | ||
16 | |||
17 | public : | ||
18 | |||
19 | EditConnection( QWidget * P ); | ||
20 | |||
21 | ANetNodeInstance * netNodeInstance( void ); | ||
22 | void setConnection( NodeCollection * NC ); | ||
23 | NodeCollection * connection( void ); | ||
24 | |||
25 | public slots : | ||
26 | |||
27 | void SLOT_AutoCollapse( bool ); | ||
28 | void SLOT_SelectNode( QListViewItem * it ); | ||
29 | void SLOT_AlterTab( const QString & S ); | ||
30 | virtual void accept( void ); | ||
31 | |||
32 | private : | ||
33 | |||
34 | NodeCollection * getTmpCollection( void ); | ||
35 | void updateGUI( QListViewItem * it, ANetNode * NN ); | ||
36 | void buildFullTree( void ); | ||
37 | void buildSubTree( QListViewItem * Parent, ANetNode * NN ); | ||
38 | void disableTree( QListViewItem * it, bool Mode); | ||
39 | void enablePath( QListViewItem * it, bool pha); | ||
40 | |||
41 | bool haveCompleteConfig( QListViewItem * it ); | ||
42 | QPtrDict<ANetNode> * Mapping; | ||
43 | NodeCollection * SelectedNodes; | ||
44 | bool TmpIsValid; | ||
45 | NodeCollection TmpCollection; | ||
46 | |||
47 | static bool AutoCollapse; | ||
48 | |||
49 | }; | ||
diff --git a/noncore/settings/networksettings2/editconnectionGUI.ui b/noncore/settings/networksettings2/editconnectionGUI.ui new file mode 100644 index 0000000..dfb2596 --- a/dev/null +++ b/noncore/settings/networksettings2/editconnectionGUI.ui | |||
@@ -0,0 +1,406 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>EditConnectionGUI</class> | ||
3 | <widget> | ||
4 | <class>QDialog</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>EditConnectionGUI</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>427</width> | ||
15 | <height>523</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>sizePolicy</name> | ||
20 | <sizepolicy> | ||
21 | <hsizetype>7</hsizetype> | ||
22 | <vsizetype>7</vsizetype> | ||
23 | </sizepolicy> | ||
24 | </property> | ||
25 | <property stdset="1"> | ||
26 | <name>minimumSize</name> | ||
27 | <size> | ||
28 | <width>0</width> | ||
29 | <height>70</height> | ||
30 | </size> | ||
31 | </property> | ||
32 | <property stdset="1"> | ||
33 | <name>caption</name> | ||
34 | <string>Edit profile</string> | ||
35 | </property> | ||
36 | <property> | ||
37 | <name>layoutMargin</name> | ||
38 | </property> | ||
39 | <property> | ||
40 | <name>layoutSpacing</name> | ||
41 | </property> | ||
42 | <vbox> | ||
43 | <property stdset="1"> | ||
44 | <name>margin</name> | ||
45 | <number>2</number> | ||
46 | </property> | ||
47 | <property stdset="1"> | ||
48 | <name>spacing</name> | ||
49 | <number>2</number> | ||
50 | </property> | ||
51 | <widget> | ||
52 | <class>QTabWidget</class> | ||
53 | <property stdset="1"> | ||
54 | <name>name</name> | ||
55 | <cstring>Tab_TB</cstring> | ||
56 | </property> | ||
57 | <property> | ||
58 | <name>layoutMargin</name> | ||
59 | </property> | ||
60 | <property> | ||
61 | <name>layoutSpacing</name> | ||
62 | </property> | ||
63 | <widget> | ||
64 | <class>QWidget</class> | ||
65 | <property stdset="1"> | ||
66 | <name>name</name> | ||
67 | <cstring>tab</cstring> | ||
68 | </property> | ||
69 | <attribute> | ||
70 | <name>title</name> | ||
71 | <string>Device Tree</string> | ||
72 | </attribute> | ||
73 | <vbox> | ||
74 | <property stdset="1"> | ||
75 | <name>margin</name> | ||
76 | <number>0</number> | ||
77 | </property> | ||
78 | <property stdset="1"> | ||
79 | <name>spacing</name> | ||
80 | <number>2</number> | ||
81 | </property> | ||
82 | <widget> | ||
83 | <class>QLayoutWidget</class> | ||
84 | <property stdset="1"> | ||
85 | <name>name</name> | ||
86 | <cstring>Layout2</cstring> | ||
87 | </property> | ||
88 | <hbox> | ||
89 | <property stdset="1"> | ||
90 | <name>margin</name> | ||
91 | <number>0</number> | ||
92 | </property> | ||
93 | <property stdset="1"> | ||
94 | <name>spacing</name> | ||
95 | <number>6</number> | ||
96 | </property> | ||
97 | <widget> | ||
98 | <class>QLabel</class> | ||
99 | <property stdset="1"> | ||
100 | <name>name</name> | ||
101 | <cstring>Header_LBL</cstring> | ||
102 | </property> | ||
103 | <property stdset="1"> | ||
104 | <name>sizePolicy</name> | ||
105 | <sizepolicy> | ||
106 | <hsizetype>1</hsizetype> | ||
107 | <vsizetype>1</vsizetype> | ||
108 | </sizepolicy> | ||
109 | </property> | ||
110 | <property stdset="1"> | ||
111 | <name>frameShape</name> | ||
112 | <enum>MShape</enum> | ||
113 | </property> | ||
114 | <property stdset="1"> | ||
115 | <name>frameShadow</name> | ||
116 | <enum>MShadow</enum> | ||
117 | </property> | ||
118 | <property stdset="1"> | ||
119 | <name>text</name> | ||
120 | <string>Connection profile</string> | ||
121 | </property> | ||
122 | <property stdset="1"> | ||
123 | <name>alignment</name> | ||
124 | <set>AlignVCenter|AlignLeft</set> | ||
125 | </property> | ||
126 | <property> | ||
127 | <name>vAlign</name> | ||
128 | </property> | ||
129 | </widget> | ||
130 | <widget> | ||
131 | <class>QLineEdit</class> | ||
132 | <property stdset="1"> | ||
133 | <name>name</name> | ||
134 | <cstring>Name_LE</cstring> | ||
135 | </property> | ||
136 | </widget> | ||
137 | </hbox> | ||
138 | </widget> | ||
139 | <widget> | ||
140 | <class>QListView</class> | ||
141 | <column> | ||
142 | <property> | ||
143 | <name>text</name> | ||
144 | <string>Column 1</string> | ||
145 | </property> | ||
146 | <property> | ||
147 | <name>clickable</name> | ||
148 | <bool>true</bool> | ||
149 | </property> | ||
150 | <property> | ||
151 | <name>resizeable</name> | ||
152 | <bool>true</bool> | ||
153 | </property> | ||
154 | </column> | ||
155 | <property stdset="1"> | ||
156 | <name>name</name> | ||
157 | <cstring>Nodes_LV</cstring> | ||
158 | </property> | ||
159 | <property stdset="1"> | ||
160 | <name>sizePolicy</name> | ||
161 | <sizepolicy> | ||
162 | <hsizetype>7</hsizetype> | ||
163 | <vsizetype>7</vsizetype> | ||
164 | </sizepolicy> | ||
165 | </property> | ||
166 | <property stdset="1"> | ||
167 | <name>minimumSize</name> | ||
168 | <size> | ||
169 | <width>0</width> | ||
170 | <height>0</height> | ||
171 | </size> | ||
172 | </property> | ||
173 | <property stdset="1"> | ||
174 | <name>maximumSize</name> | ||
175 | <size> | ||
176 | <width>32767</width> | ||
177 | <height>32767</height> | ||
178 | </size> | ||
179 | </property> | ||
180 | <property stdset="1"> | ||
181 | <name>rootIsDecorated</name> | ||
182 | <bool>true</bool> | ||
183 | </property> | ||
184 | </widget> | ||
185 | <widget> | ||
186 | <class>QLayoutWidget</class> | ||
187 | <property stdset="1"> | ||
188 | <name>name</name> | ||
189 | <cstring>Layout4</cstring> | ||
190 | </property> | ||
191 | <hbox> | ||
192 | <property stdset="1"> | ||
193 | <name>margin</name> | ||
194 | <number>0</number> | ||
195 | </property> | ||
196 | <property stdset="1"> | ||
197 | <name>spacing</name> | ||
198 | <number>6</number> | ||
199 | </property> | ||
200 | <spacer> | ||
201 | <property> | ||
202 | <name>name</name> | ||
203 | <cstring>Spacer1</cstring> | ||
204 | </property> | ||
205 | <property stdset="1"> | ||
206 | <name>orientation</name> | ||
207 | <enum>Horizontal</enum> | ||
208 | </property> | ||
209 | <property stdset="1"> | ||
210 | <name>sizeType</name> | ||
211 | <enum>Expanding</enum> | ||
212 | </property> | ||
213 | <property> | ||
214 | <name>sizeHint</name> | ||
215 | <size> | ||
216 | <width>20</width> | ||
217 | <height>20</height> | ||
218 | </size> | ||
219 | </property> | ||
220 | </spacer> | ||
221 | <widget> | ||
222 | <class>QCheckBox</class> | ||
223 | <property stdset="1"> | ||
224 | <name>name</name> | ||
225 | <cstring>AutoCollapse_CB</cstring> | ||
226 | </property> | ||
227 | <property stdset="1"> | ||
228 | <name>text</name> | ||
229 | <string>Auto collapse</string> | ||
230 | </property> | ||
231 | <property stdset="1"> | ||
232 | <name>checked</name> | ||
233 | <bool>true</bool> | ||
234 | </property> | ||
235 | </widget> | ||
236 | </hbox> | ||
237 | </widget> | ||
238 | <widget> | ||
239 | <class>QLabel</class> | ||
240 | <property stdset="1"> | ||
241 | <name>name</name> | ||
242 | <cstring>Description_LBL</cstring> | ||
243 | </property> | ||
244 | <property stdset="1"> | ||
245 | <name>sizePolicy</name> | ||
246 | <sizepolicy> | ||
247 | <hsizetype>7</hsizetype> | ||
248 | <vsizetype>5</vsizetype> | ||
249 | </sizepolicy> | ||
250 | </property> | ||
251 | <property stdset="1"> | ||
252 | <name>frameShape</name> | ||
253 | <enum>Box</enum> | ||
254 | </property> | ||
255 | <property stdset="1"> | ||
256 | <name>frameShadow</name> | ||
257 | <enum>Raised</enum> | ||
258 | </property> | ||
259 | <property stdset="1"> | ||
260 | <name>text</name> | ||
261 | <string></string> | ||
262 | </property> | ||
263 | <property stdset="1"> | ||
264 | <name>alignment</name> | ||
265 | <set>AlignTop|AlignLeft</set> | ||
266 | </property> | ||
267 | <property> | ||
268 | <name>vAlign</name> | ||
269 | </property> | ||
270 | </widget> | ||
271 | </vbox> | ||
272 | </widget> | ||
273 | <widget> | ||
274 | <class>QWidget</class> | ||
275 | <property stdset="1"> | ||
276 | <name>name</name> | ||
277 | <cstring>tab</cstring> | ||
278 | </property> | ||
279 | <attribute> | ||
280 | <name>title</name> | ||
281 | <string>Setup</string> | ||
282 | </attribute> | ||
283 | <vbox> | ||
284 | <property stdset="1"> | ||
285 | <name>margin</name> | ||
286 | <number>0</number> | ||
287 | </property> | ||
288 | <property stdset="1"> | ||
289 | <name>spacing</name> | ||
290 | <number>0</number> | ||
291 | </property> | ||
292 | <widget> | ||
293 | <class>QFrame</class> | ||
294 | <property stdset="1"> | ||
295 | <name>name</name> | ||
296 | <cstring>Setup_FRM</cstring> | ||
297 | </property> | ||
298 | <property stdset="1"> | ||
299 | <name>frameShape</name> | ||
300 | <enum>NoFrame</enum> | ||
301 | </property> | ||
302 | <property stdset="1"> | ||
303 | <name>frameShadow</name> | ||
304 | <enum>Plain</enum> | ||
305 | </property> | ||
306 | <property stdset="1"> | ||
307 | <name>lineWidth</name> | ||
308 | <number>0</number> | ||
309 | </property> | ||
310 | <property stdset="1"> | ||
311 | <name>margin</name> | ||
312 | <number>0</number> | ||
313 | </property> | ||
314 | <property stdset="1"> | ||
315 | <name>midLineWidth</name> | ||
316 | <number>0</number> | ||
317 | </property> | ||
318 | <property> | ||
319 | <name>layoutMargin</name> | ||
320 | </property> | ||
321 | <property> | ||
322 | <name>layoutSpacing</name> | ||
323 | </property> | ||
324 | <vbox> | ||
325 | <property stdset="1"> | ||
326 | <name>margin</name> | ||
327 | <number>2</number> | ||
328 | </property> | ||
329 | <property stdset="1"> | ||
330 | <name>spacing</name> | ||
331 | <number>4</number> | ||
332 | </property> | ||
333 | <widget> | ||
334 | <class>QComboBox</class> | ||
335 | <property stdset="1"> | ||
336 | <name>name</name> | ||
337 | <cstring>Devices_CB</cstring> | ||
338 | </property> | ||
339 | </widget> | ||
340 | <widget> | ||
341 | <class>QWidgetStack</class> | ||
342 | <property stdset="1"> | ||
343 | <name>name</name> | ||
344 | <cstring>Setup_WS</cstring> | ||
345 | </property> | ||
346 | </widget> | ||
347 | </vbox> | ||
348 | </widget> | ||
349 | </vbox> | ||
350 | </widget> | ||
351 | </widget> | ||
352 | </vbox> | ||
353 | </widget> | ||
354 | <customwidgets> | ||
355 | <customwidget> | ||
356 | <class>QWidgetStack</class> | ||
357 | <header location="global">qwidgetstack.h</header> | ||
358 | <sizehint> | ||
359 | <width>-1</width> | ||
360 | <height>-1</height> | ||
361 | </sizehint> | ||
362 | <container>0</container> | ||
363 | <sizepolicy> | ||
364 | <hordata>7</hordata> | ||
365 | <verdata>7</verdata> | ||
366 | </sizepolicy> | ||
367 | <pixmap>image0</pixmap> | ||
368 | <slot access="public">raiseWidget( int )</slot> | ||
369 | </customwidget> | ||
370 | </customwidgets> | ||
371 | <images> | ||
372 | <image> | ||
373 | <name>image0</name> | ||
374 | <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1ddec44f503c0ae2a154410f53d0ed20e2bf6bdb656dd6861dd23d9a66591b0587fd1654235ebded6f0edcd53e419d87ae7b1f4f9b8f906d0bfe012317426a70b07bdc2f3ec77f8ed6b89559061a0343d06a124cc105596482585094bc0ae599b04646c9018926491b2205e140c485cace25755c175d0a967b622ff900b8cc9c7d29af594ea722d589167f813aa852ba07d94b9dce296e883fe7bb163f23896753</data> | ||
375 | </image> | ||
376 | </images> | ||
377 | <connections> | ||
378 | <connection> | ||
379 | <sender>Nodes_LV</sender> | ||
380 | <signal>clicked(QListViewItem*)</signal> | ||
381 | <receiver>EditConnectionGUI</receiver> | ||
382 | <slot>SLOT_SelectNode( QListViewItem *)</slot> | ||
383 | </connection> | ||
384 | <connection> | ||
385 | <sender>AutoCollapse_CB</sender> | ||
386 | <signal>toggled(bool)</signal> | ||
387 | <receiver>EditConnectionGUI</receiver> | ||
388 | <slot>SLOT_AutoCollapse( bool)</slot> | ||
389 | </connection> | ||
390 | <connection> | ||
391 | <sender>Devices_CB</sender> | ||
392 | <signal>activated(int)</signal> | ||
393 | <receiver>Setup_WS</receiver> | ||
394 | <slot>raiseWidget( int )</slot> | ||
395 | </connection> | ||
396 | <connection> | ||
397 | <sender>Tab_TB</sender> | ||
398 | <signal>selected(const QString&)</signal> | ||
399 | <receiver>EditConnectionGUI</receiver> | ||
400 | <slot>SLOT_AlterTab( const QString & )</slot> | ||
401 | </connection> | ||
402 | <slot access="public">SLOT_AlterTab( const QString & )</slot> | ||
403 | <slot access="public">SLOT_AutoCollapse( bool)</slot> | ||
404 | <slot access="public">SLOT_SelectNode( QListViewItem *)</slot> | ||
405 | </connections> | ||
406 | </UI> | ||
diff --git a/noncore/settings/networksettings2/main.cpp b/noncore/settings/networksettings2/main.cpp new file mode 100644 index 0000000..bcef631 --- a/dev/null +++ b/noncore/settings/networksettings2/main.cpp | |||
@@ -0,0 +1,96 @@ | |||
1 | #include "networksettings.h" | ||
2 | #include <qpe/qpeapplication.h> | ||
3 | |||
4 | #include <opie/oapplicationfactory.h> | ||
5 | |||
6 | #ifdef GONE | ||
7 | |||
8 | OPIE_EXPORT_APP( OApplicationFactory<NetworkSettings> ) | ||
9 | |||
10 | #else | ||
11 | |||
12 | #define ACT_GUI 0 | ||
13 | #define ACT_REQUEST 1 | ||
14 | #define ACT_REGEN 2 | ||
15 | |||
16 | int main( int argc, char * argv[] ) { | ||
17 | int rv = 0; | ||
18 | int Action = ACT_GUI; | ||
19 | // could be overruled by -qws | ||
20 | QApplication::Type GuiType = QApplication::GuiClient; | ||
21 | |||
22 | #ifdef _WS_QWS_ | ||
23 | QPEApplication * TheApp; | ||
24 | #else | ||
25 | QApplication * TheApp; | ||
26 | #endif | ||
27 | |||
28 | for ( int i = 1; i < argc; i ++ ) { | ||
29 | int rmv; | ||
30 | rmv = 0; | ||
31 | if( strcmp( argv[i], "--regen" ) == 0 ) { | ||
32 | Action = ACT_REGEN; | ||
33 | GuiType = QApplication::Tty; | ||
34 | rmv = 1; | ||
35 | } | ||
36 | if( rmv ) { | ||
37 | memmove( argv+i, argv+i+rmv, | ||
38 | sizeof( char * ) * (argc-i-rmv) ); | ||
39 | i --; | ||
40 | argc -= rmv; | ||
41 | } | ||
42 | } | ||
43 | |||
44 | if( strstr( argv[0], "-request" ) ) { | ||
45 | // called from system to request something | ||
46 | GuiType = QApplication::Tty; | ||
47 | Action = ACT_REQUEST; | ||
48 | } | ||
49 | |||
50 | // Start Qt | ||
51 | #ifdef _WS_QWS_ | ||
52 | // because QPEApplication does not handle GuiType well | ||
53 | if( GuiType == QApplication::Tty ) { | ||
54 | // this cast is NOT correct but we do not use | ||
55 | // TheApp anymore ... | ||
56 | TheApp = (QPEApplication *)new QApplication( argc, argv, GuiType ); | ||
57 | } else { | ||
58 | TheApp = new QPEApplication( argc, argv, GuiType ); | ||
59 | } | ||
60 | #else | ||
61 | TheApp = new QApplication( argc, argv, GuiType ); | ||
62 | #endif | ||
63 | |||
64 | // init qt with app widget | ||
65 | if( GuiType != QApplication::Tty ) { | ||
66 | QWidget * W = 0; | ||
67 | W = new NetworkSettings(0); | ||
68 | TheApp->setMainWidget( W ); | ||
69 | W->show(); | ||
70 | #ifdef _WS_QWS_ | ||
71 | W->showMaximized(); | ||
72 | #else | ||
73 | W->resize( W->sizeHint() ); | ||
74 | #endif | ||
75 | rv = TheApp->exec(); | ||
76 | delete W; | ||
77 | } else { | ||
78 | switch( Action ) { | ||
79 | case ACT_REQUEST : | ||
80 | NetworkSettings::canStart( argv[1] ); | ||
81 | break; | ||
82 | case ACT_REGEN : | ||
83 | // regen returns 0 if OK | ||
84 | rv = (NetworkSettings::regenerate()) ? 1 : 0; | ||
85 | break; | ||
86 | } | ||
87 | } | ||
88 | |||
89 | return rv; | ||
90 | } | ||
91 | |||
92 | #endif | ||
93 | |||
94 | |||
95 | // main.cpp | ||
96 | |||
diff --git a/noncore/settings/networksettings2/network/config.in b/noncore/settings/networksettings2/network/config.in new file mode 100644 index 0000000..9dab059 --- a/dev/null +++ b/noncore/settings/networksettings2/network/config.in | |||
@@ -0,0 +1,4 @@ | |||
1 | config NS2NS2WORK | ||
2 | boolean "opie-networksettings2plugin-ipsetup (set up TCP/IP)" | ||
3 | default "n" if NS2 | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && NS2 && NS2CORE | ||
diff --git a/noncore/settings/networksettings2/network/network.pro b/noncore/settings/networksettings2/network/network.pro new file mode 100644 index 0000000..f9b2b7f --- a/dev/null +++ b/noncore/settings/networksettings2/network/network.pro | |||
@@ -0,0 +1,18 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG += qt warn_on release | ||
3 | DESTDIR = $(OPIEDIR)/plugins/networksettings2 | ||
4 | HEADERS = network_NN.h \ | ||
5 | network_NNI.h \ | ||
6 | networkedit.h | ||
7 | SOURCES = network_NN.cpp \ | ||
8 | network_NNI.cpp \ | ||
9 | networkedit.cpp \ | ||
10 | networkrun.cpp | ||
11 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
12 | DEPENDPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
13 | LIBS += -lqpe | ||
14 | INTERFACES= networkGUI.ui | ||
15 | TARGET = network | ||
16 | VERSION = 1.0.0 | ||
17 | |||
18 | include ( $(OPIEDIR)/include.pro ) | ||
diff --git a/noncore/settings/networksettings2/network/networkGUI.ui b/noncore/settings/networksettings2/network/networkGUI.ui new file mode 100644 index 0000000..9115ec0 --- a/dev/null +++ b/noncore/settings/networksettings2/network/networkGUI.ui | |||
@@ -0,0 +1,1071 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>NetworkGUI</class> | ||
3 | <widget> | ||
4 | <class>QWidget</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>NetworkGUI</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>293</width> | ||
15 | <height>254</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>caption</name> | ||
20 | <string>Interface Configuration</string> | ||
21 | </property> | ||
22 | <property> | ||
23 | <name>layoutMargin</name> | ||
24 | </property> | ||
25 | <property> | ||
26 | <name>layoutSpacing</name> | ||
27 | </property> | ||
28 | <vbox> | ||
29 | <property stdset="1"> | ||
30 | <name>margin</name> | ||
31 | <number>0</number> | ||
32 | </property> | ||
33 | <property stdset="1"> | ||
34 | <name>spacing</name> | ||
35 | <number>0</number> | ||
36 | </property> | ||
37 | <widget> | ||
38 | <class>QTabWidget</class> | ||
39 | <property stdset="1"> | ||
40 | <name>name</name> | ||
41 | <cstring>TabWidget11</cstring> | ||
42 | </property> | ||
43 | <property> | ||
44 | <name>layoutMargin</name> | ||
45 | </property> | ||
46 | <property> | ||
47 | <name>layoutSpacing</name> | ||
48 | </property> | ||
49 | <widget> | ||
50 | <class>QWidget</class> | ||
51 | <property stdset="1"> | ||
52 | <name>name</name> | ||
53 | <cstring>tab</cstring> | ||
54 | </property> | ||
55 | <attribute> | ||
56 | <name>title</name> | ||
57 | <string>Setup</string> | ||
58 | </attribute> | ||
59 | <vbox> | ||
60 | <property stdset="1"> | ||
61 | <name>margin</name> | ||
62 | <number>0</number> | ||
63 | </property> | ||
64 | <property stdset="1"> | ||
65 | <name>spacing</name> | ||
66 | <number>0</number> | ||
67 | </property> | ||
68 | <widget> | ||
69 | <class>QCheckBox</class> | ||
70 | <property stdset="1"> | ||
71 | <name>name</name> | ||
72 | <cstring>DHCP_CB</cstring> | ||
73 | </property> | ||
74 | <property stdset="1"> | ||
75 | <name>text</name> | ||
76 | <string>Address from server</string> | ||
77 | </property> | ||
78 | <property stdset="1"> | ||
79 | <name>checked</name> | ||
80 | <bool>true</bool> | ||
81 | </property> | ||
82 | </widget> | ||
83 | <widget> | ||
84 | <class>QLayoutWidget</class> | ||
85 | <property stdset="1"> | ||
86 | <name>name</name> | ||
87 | <cstring>Layout3</cstring> | ||
88 | </property> | ||
89 | <hbox> | ||
90 | <property stdset="1"> | ||
91 | <name>margin</name> | ||
92 | <number>0</number> | ||
93 | </property> | ||
94 | <property stdset="1"> | ||
95 | <name>spacing</name> | ||
96 | <number>6</number> | ||
97 | </property> | ||
98 | <spacer> | ||
99 | <property> | ||
100 | <name>name</name> | ||
101 | <cstring>Spacer6</cstring> | ||
102 | </property> | ||
103 | <property stdset="1"> | ||
104 | <name>orientation</name> | ||
105 | <enum>Horizontal</enum> | ||
106 | </property> | ||
107 | <property stdset="1"> | ||
108 | <name>sizeType</name> | ||
109 | <enum>Fixed</enum> | ||
110 | </property> | ||
111 | <property> | ||
112 | <name>sizeHint</name> | ||
113 | <size> | ||
114 | <width>20</width> | ||
115 | <height>20</height> | ||
116 | </size> | ||
117 | </property> | ||
118 | </spacer> | ||
119 | <widget> | ||
120 | <class>QFrame</class> | ||
121 | <property stdset="1"> | ||
122 | <name>name</name> | ||
123 | <cstring>StaticIP_GB</cstring> | ||
124 | </property> | ||
125 | <property stdset="1"> | ||
126 | <name>enabled</name> | ||
127 | <bool>false</bool> | ||
128 | </property> | ||
129 | <property stdset="1"> | ||
130 | <name>sizePolicy</name> | ||
131 | <sizepolicy> | ||
132 | <hsizetype>7</hsizetype> | ||
133 | <vsizetype>5</vsizetype> | ||
134 | </sizepolicy> | ||
135 | </property> | ||
136 | <property stdset="1"> | ||
137 | <name>frameShape</name> | ||
138 | <enum>NoFrame</enum> | ||
139 | </property> | ||
140 | <property stdset="1"> | ||
141 | <name>frameShadow</name> | ||
142 | <enum>Raised</enum> | ||
143 | </property> | ||
144 | <property> | ||
145 | <name>layoutMargin</name> | ||
146 | </property> | ||
147 | <property> | ||
148 | <name>layoutSpacing</name> | ||
149 | </property> | ||
150 | <grid> | ||
151 | <property stdset="1"> | ||
152 | <name>margin</name> | ||
153 | <number>0</number> | ||
154 | </property> | ||
155 | <property stdset="1"> | ||
156 | <name>spacing</name> | ||
157 | <number>1</number> | ||
158 | </property> | ||
159 | <widget row="0" column="0" > | ||
160 | <class>QLabel</class> | ||
161 | <property stdset="1"> | ||
162 | <name>name</name> | ||
163 | <cstring>TextLabel4</cstring> | ||
164 | </property> | ||
165 | <property stdset="1"> | ||
166 | <name>text</name> | ||
167 | <string>IP Address</string> | ||
168 | </property> | ||
169 | <property stdset="1"> | ||
170 | <name>alignment</name> | ||
171 | <set>AlignCenter</set> | ||
172 | </property> | ||
173 | <property> | ||
174 | <name>hAlign</name> | ||
175 | </property> | ||
176 | </widget> | ||
177 | <widget row="1" column="0" > | ||
178 | <class>QLabel</class> | ||
179 | <property stdset="1"> | ||
180 | <name>name</name> | ||
181 | <cstring>TextLabel5</cstring> | ||
182 | </property> | ||
183 | <property stdset="1"> | ||
184 | <name>text</name> | ||
185 | <string>Subnet Mask</string> | ||
186 | </property> | ||
187 | <property stdset="1"> | ||
188 | <name>alignment</name> | ||
189 | <set>AlignCenter</set> | ||
190 | </property> | ||
191 | <property> | ||
192 | <name>hAlign</name> | ||
193 | </property> | ||
194 | </widget> | ||
195 | <widget row="4" column="0" > | ||
196 | <class>QLabel</class> | ||
197 | <property stdset="1"> | ||
198 | <name>name</name> | ||
199 | <cstring>TextLabel2</cstring> | ||
200 | </property> | ||
201 | <property stdset="1"> | ||
202 | <name>text</name> | ||
203 | <string>First DNS</string> | ||
204 | </property> | ||
205 | <property stdset="1"> | ||
206 | <name>alignment</name> | ||
207 | <set>AlignCenter</set> | ||
208 | </property> | ||
209 | <property> | ||
210 | <name>hAlign</name> | ||
211 | </property> | ||
212 | </widget> | ||
213 | <widget row="3" column="0" > | ||
214 | <class>QLabel</class> | ||
215 | <property stdset="1"> | ||
216 | <name>name</name> | ||
217 | <cstring>TextLabel1_2</cstring> | ||
218 | </property> | ||
219 | <property stdset="1"> | ||
220 | <name>text</name> | ||
221 | <string>Gateway</string> | ||
222 | </property> | ||
223 | <property stdset="1"> | ||
224 | <name>alignment</name> | ||
225 | <set>AlignCenter</set> | ||
226 | </property> | ||
227 | <property> | ||
228 | <name>hAlign</name> | ||
229 | </property> | ||
230 | </widget> | ||
231 | <widget row="2" column="0" > | ||
232 | <class>QLabel</class> | ||
233 | <property stdset="1"> | ||
234 | <name>name</name> | ||
235 | <cstring>TextLabel1</cstring> | ||
236 | </property> | ||
237 | <property stdset="1"> | ||
238 | <name>text</name> | ||
239 | <string>Broadcast</string> | ||
240 | </property> | ||
241 | <property stdset="1"> | ||
242 | <name>alignment</name> | ||
243 | <set>AlignCenter</set> | ||
244 | </property> | ||
245 | <property> | ||
246 | <name>hAlign</name> | ||
247 | </property> | ||
248 | </widget> | ||
249 | <widget row="5" column="0" > | ||
250 | <class>QLabel</class> | ||
251 | <property stdset="1"> | ||
252 | <name>name</name> | ||
253 | <cstring>TextLabel3</cstring> | ||
254 | </property> | ||
255 | <property stdset="1"> | ||
256 | <name>text</name> | ||
257 | <string>Second DNS</string> | ||
258 | </property> | ||
259 | <property stdset="1"> | ||
260 | <name>alignment</name> | ||
261 | <set>AlignCenter</set> | ||
262 | </property> | ||
263 | <property> | ||
264 | <name>hAlign</name> | ||
265 | </property> | ||
266 | </widget> | ||
267 | <widget row="0" column="1" > | ||
268 | <class>QLineEdit</class> | ||
269 | <property stdset="1"> | ||
270 | <name>name</name> | ||
271 | <cstring>IPAddress_LE</cstring> | ||
272 | </property> | ||
273 | </widget> | ||
274 | <widget row="1" column="1" > | ||
275 | <class>QLineEdit</class> | ||
276 | <property stdset="1"> | ||
277 | <name>name</name> | ||
278 | <cstring>SubnetMask_LE</cstring> | ||
279 | </property> | ||
280 | <property stdset="1"> | ||
281 | <name>text</name> | ||
282 | <string>255.255.255.0</string> | ||
283 | </property> | ||
284 | </widget> | ||
285 | <widget row="2" column="1" > | ||
286 | <class>QLineEdit</class> | ||
287 | <property stdset="1"> | ||
288 | <name>name</name> | ||
289 | <cstring>Broadcast_LE</cstring> | ||
290 | </property> | ||
291 | </widget> | ||
292 | <widget row="3" column="1" > | ||
293 | <class>QLineEdit</class> | ||
294 | <property stdset="1"> | ||
295 | <name>name</name> | ||
296 | <cstring>Gateway_LE</cstring> | ||
297 | </property> | ||
298 | </widget> | ||
299 | <widget row="4" column="1" > | ||
300 | <class>QLineEdit</class> | ||
301 | <property stdset="1"> | ||
302 | <name>name</name> | ||
303 | <cstring>DNS1_LE</cstring> | ||
304 | </property> | ||
305 | </widget> | ||
306 | <widget row="5" column="1" > | ||
307 | <class>QLineEdit</class> | ||
308 | <property stdset="1"> | ||
309 | <name>name</name> | ||
310 | <cstring>DNS2_LE</cstring> | ||
311 | </property> | ||
312 | </widget> | ||
313 | </grid> | ||
314 | </widget> | ||
315 | </hbox> | ||
316 | </widget> | ||
317 | <widget> | ||
318 | <class>QLabel</class> | ||
319 | <property stdset="1"> | ||
320 | <name>name</name> | ||
321 | <cstring>TextLabel2_2</cstring> | ||
322 | </property> | ||
323 | <property stdset="1"> | ||
324 | <name>text</name> | ||
325 | <string>DHCP Settings</string> | ||
326 | </property> | ||
327 | </widget> | ||
328 | <widget> | ||
329 | <class>QLayoutWidget</class> | ||
330 | <property stdset="1"> | ||
331 | <name>name</name> | ||
332 | <cstring>Layout5</cstring> | ||
333 | </property> | ||
334 | <hbox> | ||
335 | <property stdset="1"> | ||
336 | <name>margin</name> | ||
337 | <number>0</number> | ||
338 | </property> | ||
339 | <property stdset="1"> | ||
340 | <name>spacing</name> | ||
341 | <number>6</number> | ||
342 | </property> | ||
343 | <spacer> | ||
344 | <property> | ||
345 | <name>name</name> | ||
346 | <cstring>Spacer26</cstring> | ||
347 | </property> | ||
348 | <property stdset="1"> | ||
349 | <name>orientation</name> | ||
350 | <enum>Horizontal</enum> | ||
351 | </property> | ||
352 | <property stdset="1"> | ||
353 | <name>sizeType</name> | ||
354 | <enum>Fixed</enum> | ||
355 | </property> | ||
356 | <property> | ||
357 | <name>sizeHint</name> | ||
358 | <size> | ||
359 | <width>20</width> | ||
360 | <height>20</height> | ||
361 | </size> | ||
362 | </property> | ||
363 | </spacer> | ||
364 | <widget> | ||
365 | <class>QFrame</class> | ||
366 | <property stdset="1"> | ||
367 | <name>name</name> | ||
368 | <cstring>Frame27</cstring> | ||
369 | </property> | ||
370 | <property stdset="1"> | ||
371 | <name>sizePolicy</name> | ||
372 | <sizepolicy> | ||
373 | <hsizetype>7</hsizetype> | ||
374 | <vsizetype>5</vsizetype> | ||
375 | </sizepolicy> | ||
376 | </property> | ||
377 | <property stdset="1"> | ||
378 | <name>frameShape</name> | ||
379 | <enum>NoFrame</enum> | ||
380 | </property> | ||
381 | <property stdset="1"> | ||
382 | <name>frameShadow</name> | ||
383 | <enum>Raised</enum> | ||
384 | </property> | ||
385 | <property> | ||
386 | <name>layoutMargin</name> | ||
387 | </property> | ||
388 | <property> | ||
389 | <name>layoutSpacing</name> | ||
390 | </property> | ||
391 | <hbox> | ||
392 | <property stdset="1"> | ||
393 | <name>margin</name> | ||
394 | <number>0</number> | ||
395 | </property> | ||
396 | <property stdset="1"> | ||
397 | <name>spacing</name> | ||
398 | <number>2</number> | ||
399 | </property> | ||
400 | <widget> | ||
401 | <class>QCheckBox</class> | ||
402 | <property stdset="1"> | ||
403 | <name>name</name> | ||
404 | <cstring>SendHostname_CB</cstring> | ||
405 | </property> | ||
406 | <property stdset="1"> | ||
407 | <name>text</name> | ||
408 | <string>Send hostname</string> | ||
409 | </property> | ||
410 | </widget> | ||
411 | <widget> | ||
412 | <class>QLineEdit</class> | ||
413 | <property stdset="1"> | ||
414 | <name>name</name> | ||
415 | <cstring>Hostname_LE</cstring> | ||
416 | </property> | ||
417 | <property stdset="1"> | ||
418 | <name>enabled</name> | ||
419 | <bool>false</bool> | ||
420 | </property> | ||
421 | <property stdset="1"> | ||
422 | <name>sizePolicy</name> | ||
423 | <sizepolicy> | ||
424 | <hsizetype>7</hsizetype> | ||
425 | <vsizetype>0</vsizetype> | ||
426 | </sizepolicy> | ||
427 | </property> | ||
428 | </widget> | ||
429 | </hbox> | ||
430 | </widget> | ||
431 | </hbox> | ||
432 | </widget> | ||
433 | <spacer> | ||
434 | <property> | ||
435 | <name>name</name> | ||
436 | <cstring>Spacer38</cstring> | ||
437 | </property> | ||
438 | <property stdset="1"> | ||
439 | <name>orientation</name> | ||
440 | <enum>Vertical</enum> | ||
441 | </property> | ||
442 | <property stdset="1"> | ||
443 | <name>sizeType</name> | ||
444 | <enum>Expanding</enum> | ||
445 | </property> | ||
446 | <property> | ||
447 | <name>sizeHint</name> | ||
448 | <size> | ||
449 | <width>20</width> | ||
450 | <height>20</height> | ||
451 | </size> | ||
452 | </property> | ||
453 | </spacer> | ||
454 | </vbox> | ||
455 | </widget> | ||
456 | <widget> | ||
457 | <class>QWidget</class> | ||
458 | <property stdset="1"> | ||
459 | <name>name</name> | ||
460 | <cstring>tab</cstring> | ||
461 | </property> | ||
462 | <attribute> | ||
463 | <name>title</name> | ||
464 | <string>Extra commands</string> | ||
465 | </attribute> | ||
466 | <vbox> | ||
467 | <property stdset="1"> | ||
468 | <name>margin</name> | ||
469 | <number>0</number> | ||
470 | </property> | ||
471 | <property stdset="1"> | ||
472 | <name>spacing</name> | ||
473 | <number>2</number> | ||
474 | </property> | ||
475 | <widget> | ||
476 | <class>QLineEdit</class> | ||
477 | <property stdset="1"> | ||
478 | <name>name</name> | ||
479 | <cstring>Command_LE</cstring> | ||
480 | </property> | ||
481 | </widget> | ||
482 | <widget> | ||
483 | <class>QTabWidget</class> | ||
484 | <property stdset="1"> | ||
485 | <name>name</name> | ||
486 | <cstring>Tab_TB</cstring> | ||
487 | </property> | ||
488 | <property> | ||
489 | <name>layoutMargin</name> | ||
490 | </property> | ||
491 | <property> | ||
492 | <name>layoutSpacing</name> | ||
493 | </property> | ||
494 | <widget> | ||
495 | <class>QWidget</class> | ||
496 | <property stdset="1"> | ||
497 | <name>name</name> | ||
498 | <cstring>tab</cstring> | ||
499 | </property> | ||
500 | <attribute> | ||
501 | <name>title</name> | ||
502 | <string>Pre-Up</string> | ||
503 | </attribute> | ||
504 | <hbox> | ||
505 | <property stdset="1"> | ||
506 | <name>margin</name> | ||
507 | <number>0</number> | ||
508 | </property> | ||
509 | <property stdset="1"> | ||
510 | <name>spacing</name> | ||
511 | <number>2</number> | ||
512 | </property> | ||
513 | <widget> | ||
514 | <class>QListBox</class> | ||
515 | <property stdset="1"> | ||
516 | <name>name</name> | ||
517 | <cstring>PreUp_LB</cstring> | ||
518 | </property> | ||
519 | </widget> | ||
520 | <widget> | ||
521 | <class>QFrame</class> | ||
522 | <property stdset="1"> | ||
523 | <name>name</name> | ||
524 | <cstring>Frame5_2</cstring> | ||
525 | </property> | ||
526 | <property stdset="1"> | ||
527 | <name>sizePolicy</name> | ||
528 | <sizepolicy> | ||
529 | <hsizetype>0</hsizetype> | ||
530 | <vsizetype>7</vsizetype> | ||
531 | </sizepolicy> | ||
532 | </property> | ||
533 | <property stdset="1"> | ||
534 | <name>frameShape</name> | ||
535 | <enum>StyledPanel</enum> | ||
536 | </property> | ||
537 | <property stdset="1"> | ||
538 | <name>frameShadow</name> | ||
539 | <enum>Raised</enum> | ||
540 | </property> | ||
541 | <property> | ||
542 | <name>layoutMargin</name> | ||
543 | </property> | ||
544 | <property> | ||
545 | <name>layoutSpacing</name> | ||
546 | </property> | ||
547 | <vbox> | ||
548 | <property stdset="1"> | ||
549 | <name>margin</name> | ||
550 | <number>0</number> | ||
551 | </property> | ||
552 | <property stdset="1"> | ||
553 | <name>spacing</name> | ||
554 | <number>1</number> | ||
555 | </property> | ||
556 | <widget> | ||
557 | <class>QToolButton</class> | ||
558 | <property stdset="1"> | ||
559 | <name>name</name> | ||
560 | <cstring>AddPreUp_TB</cstring> | ||
561 | </property> | ||
562 | <property stdset="1"> | ||
563 | <name>text</name> | ||
564 | <string>...</string> | ||
565 | </property> | ||
566 | </widget> | ||
567 | <widget> | ||
568 | <class>QToolButton</class> | ||
569 | <property stdset="1"> | ||
570 | <name>name</name> | ||
571 | <cstring>DeletePreUp_TB</cstring> | ||
572 | </property> | ||
573 | <property stdset="1"> | ||
574 | <name>text</name> | ||
575 | <string>...</string> | ||
576 | </property> | ||
577 | </widget> | ||
578 | <widget> | ||
579 | <class>QToolButton</class> | ||
580 | <property stdset="1"> | ||
581 | <name>name</name> | ||
582 | <cstring>UpPreUp_TB</cstring> | ||
583 | </property> | ||
584 | <property stdset="1"> | ||
585 | <name>text</name> | ||
586 | <string>...</string> | ||
587 | </property> | ||
588 | </widget> | ||
589 | <widget> | ||
590 | <class>QToolButton</class> | ||
591 | <property stdset="1"> | ||
592 | <name>name</name> | ||
593 | <cstring>DownPreUp_TB</cstring> | ||
594 | </property> | ||
595 | <property stdset="1"> | ||
596 | <name>text</name> | ||
597 | <string>...</string> | ||
598 | </property> | ||
599 | </widget> | ||
600 | <spacer> | ||
601 | <property> | ||
602 | <name>name</name> | ||
603 | <cstring>Spacer5_2_2</cstring> | ||
604 | </property> | ||
605 | <property stdset="1"> | ||
606 | <name>orientation</name> | ||
607 | <enum>Vertical</enum> | ||
608 | </property> | ||
609 | <property stdset="1"> | ||
610 | <name>sizeType</name> | ||
611 | <enum>Expanding</enum> | ||
612 | </property> | ||
613 | <property> | ||
614 | <name>sizeHint</name> | ||
615 | <size> | ||
616 | <width>20</width> | ||
617 | <height>20</height> | ||
618 | </size> | ||
619 | </property> | ||
620 | </spacer> | ||
621 | </vbox> | ||
622 | </widget> | ||
623 | </hbox> | ||
624 | </widget> | ||
625 | <widget> | ||
626 | <class>QWidget</class> | ||
627 | <property stdset="1"> | ||
628 | <name>name</name> | ||
629 | <cstring>tab</cstring> | ||
630 | </property> | ||
631 | <attribute> | ||
632 | <name>title</name> | ||
633 | <string>Post-Up</string> | ||
634 | </attribute> | ||
635 | <hbox> | ||
636 | <property stdset="1"> | ||
637 | <name>margin</name> | ||
638 | <number>0</number> | ||
639 | </property> | ||
640 | <property stdset="1"> | ||
641 | <name>spacing</name> | ||
642 | <number>2</number> | ||
643 | </property> | ||
644 | <widget> | ||
645 | <class>QListBox</class> | ||
646 | <property stdset="1"> | ||
647 | <name>name</name> | ||
648 | <cstring>PostUp_LB</cstring> | ||
649 | </property> | ||
650 | </widget> | ||
651 | <widget> | ||
652 | <class>QFrame</class> | ||
653 | <property stdset="1"> | ||
654 | <name>name</name> | ||
655 | <cstring>Frame5</cstring> | ||
656 | </property> | ||
657 | <property stdset="1"> | ||
658 | <name>sizePolicy</name> | ||
659 | <sizepolicy> | ||
660 | <hsizetype>0</hsizetype> | ||
661 | <vsizetype>7</vsizetype> | ||
662 | </sizepolicy> | ||
663 | </property> | ||
664 | <property stdset="1"> | ||
665 | <name>frameShape</name> | ||
666 | <enum>StyledPanel</enum> | ||
667 | </property> | ||
668 | <property stdset="1"> | ||
669 | <name>frameShadow</name> | ||
670 | <enum>Raised</enum> | ||
671 | </property> | ||
672 | <property> | ||
673 | <name>layoutMargin</name> | ||
674 | </property> | ||
675 | <property> | ||
676 | <name>layoutSpacing</name> | ||
677 | </property> | ||
678 | <vbox> | ||
679 | <property stdset="1"> | ||
680 | <name>margin</name> | ||
681 | <number>0</number> | ||
682 | </property> | ||
683 | <property stdset="1"> | ||
684 | <name>spacing</name> | ||
685 | <number>1</number> | ||
686 | </property> | ||
687 | <widget> | ||
688 | <class>QToolButton</class> | ||
689 | <property stdset="1"> | ||
690 | <name>name</name> | ||
691 | <cstring>AddPostUp_TB</cstring> | ||
692 | </property> | ||
693 | <property stdset="1"> | ||
694 | <name>text</name> | ||
695 | <string>...</string> | ||
696 | </property> | ||
697 | </widget> | ||
698 | <widget> | ||
699 | <class>QToolButton</class> | ||
700 | <property stdset="1"> | ||
701 | <name>name</name> | ||
702 | <cstring>DeletePostUp_TB</cstring> | ||
703 | </property> | ||
704 | <property stdset="1"> | ||
705 | <name>text</name> | ||
706 | <string>...</string> | ||
707 | </property> | ||
708 | </widget> | ||
709 | <widget> | ||
710 | <class>QToolButton</class> | ||
711 | <property stdset="1"> | ||
712 | <name>name</name> | ||
713 | <cstring>UpPostUp_TB</cstring> | ||
714 | </property> | ||
715 | <property stdset="1"> | ||
716 | <name>text</name> | ||
717 | <string>...</string> | ||
718 | </property> | ||
719 | </widget> | ||
720 | <widget> | ||
721 | <class>QToolButton</class> | ||
722 | <property stdset="1"> | ||
723 | <name>name</name> | ||
724 | <cstring>DownPostUp_TB</cstring> | ||
725 | </property> | ||
726 | <property stdset="1"> | ||
727 | <name>text</name> | ||
728 | <string>...</string> | ||
729 | </property> | ||
730 | </widget> | ||
731 | <spacer> | ||
732 | <property> | ||
733 | <name>name</name> | ||
734 | <cstring>Spacer5_5</cstring> | ||
735 | </property> | ||
736 | <property stdset="1"> | ||
737 | <name>orientation</name> | ||
738 | <enum>Vertical</enum> | ||
739 | </property> | ||
740 | <property stdset="1"> | ||
741 | <name>sizeType</name> | ||
742 | <enum>Expanding</enum> | ||
743 | </property> | ||
744 | <property> | ||
745 | <name>sizeHint</name> | ||
746 | <size> | ||
747 | <width>20</width> | ||
748 | <height>20</height> | ||
749 | </size> | ||
750 | </property> | ||
751 | </spacer> | ||
752 | </vbox> | ||
753 | </widget> | ||
754 | </hbox> | ||
755 | </widget> | ||
756 | <widget> | ||
757 | <class>QWidget</class> | ||
758 | <property stdset="1"> | ||
759 | <name>name</name> | ||
760 | <cstring>tab</cstring> | ||
761 | </property> | ||
762 | <attribute> | ||
763 | <name>title</name> | ||
764 | <string>Pre-Down</string> | ||
765 | </attribute> | ||
766 | <hbox> | ||
767 | <property stdset="1"> | ||
768 | <name>margin</name> | ||
769 | <number>0</number> | ||
770 | </property> | ||
771 | <property stdset="1"> | ||
772 | <name>spacing</name> | ||
773 | <number>2</number> | ||
774 | </property> | ||
775 | <widget> | ||
776 | <class>QListBox</class> | ||
777 | <property stdset="1"> | ||
778 | <name>name</name> | ||
779 | <cstring>PreDown_LB</cstring> | ||
780 | </property> | ||
781 | </widget> | ||
782 | <widget> | ||
783 | <class>QFrame</class> | ||
784 | <property stdset="1"> | ||
785 | <name>name</name> | ||
786 | <cstring>Frame5_3</cstring> | ||
787 | </property> | ||
788 | <property stdset="1"> | ||
789 | <name>sizePolicy</name> | ||
790 | <sizepolicy> | ||
791 | <hsizetype>0</hsizetype> | ||
792 | <vsizetype>3</vsizetype> | ||
793 | </sizepolicy> | ||
794 | </property> | ||
795 | <property stdset="1"> | ||
796 | <name>frameShape</name> | ||
797 | <enum>StyledPanel</enum> | ||
798 | </property> | ||
799 | <property stdset="1"> | ||
800 | <name>frameShadow</name> | ||
801 | <enum>Raised</enum> | ||
802 | </property> | ||
803 | <property> | ||
804 | <name>layoutMargin</name> | ||
805 | </property> | ||
806 | <property> | ||
807 | <name>layoutSpacing</name> | ||
808 | </property> | ||
809 | <vbox> | ||
810 | <property stdset="1"> | ||
811 | <name>margin</name> | ||
812 | <number>0</number> | ||
813 | </property> | ||
814 | <property stdset="1"> | ||
815 | <name>spacing</name> | ||
816 | <number>1</number> | ||
817 | </property> | ||
818 | <widget> | ||
819 | <class>QToolButton</class> | ||
820 | <property stdset="1"> | ||
821 | <name>name</name> | ||
822 | <cstring>AddPreDown_TB</cstring> | ||
823 | </property> | ||
824 | <property stdset="1"> | ||
825 | <name>text</name> | ||
826 | <string>...</string> | ||
827 | </property> | ||
828 | </widget> | ||
829 | <widget> | ||
830 | <class>QToolButton</class> | ||
831 | <property stdset="1"> | ||
832 | <name>name</name> | ||
833 | <cstring>DeletePreDown_TB</cstring> | ||
834 | </property> | ||
835 | <property stdset="1"> | ||
836 | <name>text</name> | ||
837 | <string>...</string> | ||
838 | </property> | ||
839 | </widget> | ||
840 | <widget> | ||
841 | <class>QToolButton</class> | ||
842 | <property stdset="1"> | ||
843 | <name>name</name> | ||
844 | <cstring>UpPreDown_TB</cstring> | ||
845 | </property> | ||
846 | <property stdset="1"> | ||
847 | <name>text</name> | ||
848 | <string>...</string> | ||
849 | </property> | ||
850 | </widget> | ||
851 | <widget> | ||
852 | <class>QToolButton</class> | ||
853 | <property stdset="1"> | ||
854 | <name>name</name> | ||
855 | <cstring>DownPreDown_TB</cstring> | ||
856 | </property> | ||
857 | <property stdset="1"> | ||
858 | <name>text</name> | ||
859 | <string>...</string> | ||
860 | </property> | ||
861 | </widget> | ||
862 | <spacer> | ||
863 | <property> | ||
864 | <name>name</name> | ||
865 | <cstring>Spacer5_3_2</cstring> | ||
866 | </property> | ||
867 | <property stdset="1"> | ||
868 | <name>orientation</name> | ||
869 | <enum>Vertical</enum> | ||
870 | </property> | ||
871 | <property stdset="1"> | ||
872 | <name>sizeType</name> | ||
873 | <enum>Expanding</enum> | ||
874 | </property> | ||
875 | <property> | ||
876 | <name>sizeHint</name> | ||
877 | <size> | ||
878 | <width>20</width> | ||
879 | <height>20</height> | ||
880 | </size> | ||
881 | </property> | ||
882 | </spacer> | ||
883 | </vbox> | ||
884 | </widget> | ||
885 | </hbox> | ||
886 | </widget> | ||
887 | <widget> | ||
888 | <class>QWidget</class> | ||
889 | <property stdset="1"> | ||
890 | <name>name</name> | ||
891 | <cstring>tab</cstring> | ||
892 | </property> | ||
893 | <attribute> | ||
894 | <name>title</name> | ||
895 | <string>Post-Down</string> | ||
896 | </attribute> | ||
897 | <hbox> | ||
898 | <property stdset="1"> | ||
899 | <name>margin</name> | ||
900 | <number>0</number> | ||
901 | </property> | ||
902 | <property stdset="1"> | ||
903 | <name>spacing</name> | ||
904 | <number>2</number> | ||
905 | </property> | ||
906 | <widget> | ||
907 | <class>QListBox</class> | ||
908 | <property stdset="1"> | ||
909 | <name>name</name> | ||
910 | <cstring>PostDown_LB</cstring> | ||
911 | </property> | ||
912 | </widget> | ||
913 | <widget> | ||
914 | <class>QFrame</class> | ||
915 | <property stdset="1"> | ||
916 | <name>name</name> | ||
917 | <cstring>Frame5_4</cstring> | ||
918 | </property> | ||
919 | <property stdset="1"> | ||
920 | <name>sizePolicy</name> | ||
921 | <sizepolicy> | ||
922 | <hsizetype>0</hsizetype> | ||
923 | <vsizetype>7</vsizetype> | ||
924 | </sizepolicy> | ||
925 | </property> | ||
926 | <property stdset="1"> | ||
927 | <name>frameShape</name> | ||
928 | <enum>StyledPanel</enum> | ||
929 | </property> | ||
930 | <property stdset="1"> | ||
931 | <name>frameShadow</name> | ||
932 | <enum>Raised</enum> | ||
933 | </property> | ||
934 | <property> | ||
935 | <name>layoutMargin</name> | ||
936 | </property> | ||
937 | <property> | ||
938 | <name>layoutSpacing</name> | ||
939 | </property> | ||
940 | <vbox> | ||
941 | <property stdset="1"> | ||
942 | <name>margin</name> | ||
943 | <number>0</number> | ||
944 | </property> | ||
945 | <property stdset="1"> | ||
946 | <name>spacing</name> | ||
947 | <number>1</number> | ||
948 | </property> | ||
949 | <widget> | ||
950 | <class>QToolButton</class> | ||
951 | <property stdset="1"> | ||
952 | <name>name</name> | ||
953 | <cstring>AddPostDown_TB</cstring> | ||
954 | </property> | ||
955 | <property stdset="1"> | ||
956 | <name>text</name> | ||
957 | <string>...</string> | ||
958 | </property> | ||
959 | </widget> | ||
960 | <widget> | ||
961 | <class>QToolButton</class> | ||
962 | <property stdset="1"> | ||
963 | <name>name</name> | ||
964 | <cstring>DeletePostDown_TB</cstring> | ||
965 | </property> | ||
966 | <property stdset="1"> | ||
967 | <name>text</name> | ||
968 | <string>...</string> | ||
969 | </property> | ||
970 | </widget> | ||
971 | <widget> | ||
972 | <class>QToolButton</class> | ||
973 | <property stdset="1"> | ||
974 | <name>name</name> | ||
975 | <cstring>UpPostDown_TB</cstring> | ||
976 | </property> | ||
977 | <property stdset="1"> | ||
978 | <name>text</name> | ||
979 | <string>...</string> | ||
980 | </property> | ||
981 | </widget> | ||
982 | <widget> | ||
983 | <class>QToolButton</class> | ||
984 | <property stdset="1"> | ||
985 | <name>name</name> | ||
986 | <cstring>DownPostDown_TB</cstring> | ||
987 | </property> | ||
988 | <property stdset="1"> | ||
989 | <name>text</name> | ||
990 | <string>...</string> | ||
991 | </property> | ||
992 | </widget> | ||
993 | <spacer> | ||
994 | <property> | ||
995 | <name>name</name> | ||
996 | <cstring>Spacer5_4</cstring> | ||
997 | </property> | ||
998 | <property stdset="1"> | ||
999 | <name>orientation</name> | ||
1000 | <enum>Vertical</enum> | ||
1001 | </property> | ||
1002 | <property stdset="1"> | ||
1003 | <name>sizeType</name> | ||
1004 | <enum>Expanding</enum> | ||
1005 | </property> | ||
1006 | <property> | ||
1007 | <name>sizeHint</name> | ||
1008 | <size> | ||
1009 | <width>20</width> | ||
1010 | <height>20</height> | ||
1011 | </size> | ||
1012 | </property> | ||
1013 | </spacer> | ||
1014 | </vbox> | ||
1015 | </widget> | ||
1016 | </hbox> | ||
1017 | </widget> | ||
1018 | </widget> | ||
1019 | </vbox> | ||
1020 | </widget> | ||
1021 | </widget> | ||
1022 | </vbox> | ||
1023 | </widget> | ||
1024 | <connections> | ||
1025 | <connection> | ||
1026 | <sender>DHCP_CB</sender> | ||
1027 | <signal>toggled(bool)</signal> | ||
1028 | <receiver>StaticIP_GB</receiver> | ||
1029 | <slot>setDisabled(bool)</slot> | ||
1030 | </connection> | ||
1031 | <connection> | ||
1032 | <sender>SubnetMask_LE</sender> | ||
1033 | <signal>textChanged(const QString&)</signal> | ||
1034 | <receiver>NetworkGUI</receiver> | ||
1035 | <slot>SLOT_NetmaskModified( const QString & )</slot> | ||
1036 | </connection> | ||
1037 | <connection> | ||
1038 | <sender>IPAddress_LE</sender> | ||
1039 | <signal>textChanged(const QString&)</signal> | ||
1040 | <receiver>NetworkGUI</receiver> | ||
1041 | <slot>SLOT_NetmaskModified( const QString & )</slot> | ||
1042 | </connection> | ||
1043 | <connection> | ||
1044 | <sender>DHCP_CB</sender> | ||
1045 | <signal>toggled(bool)</signal> | ||
1046 | <receiver>Frame27</receiver> | ||
1047 | <slot>setEnabled(bool)</slot> | ||
1048 | </connection> | ||
1049 | <connection> | ||
1050 | <sender>DHCP_CB</sender> | ||
1051 | <signal>toggled(bool)</signal> | ||
1052 | <receiver>TextLabel2_2</receiver> | ||
1053 | <slot>setEnabled(bool)</slot> | ||
1054 | </connection> | ||
1055 | <connection> | ||
1056 | <sender>SendHostname_CB</sender> | ||
1057 | <signal>toggled(bool)</signal> | ||
1058 | <receiver>Hostname_LE</receiver> | ||
1059 | <slot>setEnabled(bool)</slot> | ||
1060 | </connection> | ||
1061 | <slot access="public">SLOT_NetmaskModified( const QString & )</slot> | ||
1062 | </connections> | ||
1063 | <tabstops> | ||
1064 | <tabstop>DHCP_CB</tabstop> | ||
1065 | <tabstop>IPAddress_LE</tabstop> | ||
1066 | <tabstop>SubnetMask_LE</tabstop> | ||
1067 | <tabstop>Gateway_LE</tabstop> | ||
1068 | <tabstop>DNS1_LE</tabstop> | ||
1069 | <tabstop>DNS2_LE</tabstop> | ||
1070 | </tabstops> | ||
1071 | </UI> | ||
diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp new file mode 100644 index 0000000..bb371ad --- a/dev/null +++ b/noncore/settings/networksettings2/network/network_NN.cpp | |||
@@ -0,0 +1,64 @@ | |||
1 | #include "network_NN.h" | ||
2 | #include "network_NNI.h" | ||
3 | |||
4 | static const char * NetworkNeeds[] = | ||
5 | { "device", | ||
6 | 0 | ||
7 | }; | ||
8 | |||
9 | /** | ||
10 | * Constructor, find all of the possible interfaces | ||
11 | */ | ||
12 | NetworkNetNode::NetworkNetNode() : ANetNode() { | ||
13 | } | ||
14 | |||
15 | /** | ||
16 | * Delete any interfaces that we own. | ||
17 | */ | ||
18 | NetworkNetNode::~NetworkNetNode(){ | ||
19 | } | ||
20 | |||
21 | const QString NetworkNetNode::nodeDescription(){ | ||
22 | return tr("\ | ||
23 | <p>Sets up TCP/IP options.</p>\ | ||
24 | <p>Use this to configure the TCP/IP protocol</p>\ | ||
25 | " | ||
26 | ); | ||
27 | } | ||
28 | |||
29 | ANetNodeInstance * NetworkNetNode::createInstance( void ) { | ||
30 | return new ANetwork( this ); | ||
31 | } | ||
32 | |||
33 | const char ** NetworkNetNode::needs( void ) { | ||
34 | return NetworkNeeds; | ||
35 | } | ||
36 | |||
37 | const char * NetworkNetNode::provides( void ) { | ||
38 | return "connection"; | ||
39 | } | ||
40 | |||
41 | bool NetworkNetNode::generateProperFilesFor( | ||
42 | ANetNodeInstance * ) { | ||
43 | return 1; | ||
44 | } | ||
45 | |||
46 | bool NetworkNetNode::hasDataFor( const QString & S ) { | ||
47 | if( S == "interfaces" ) { | ||
48 | return 1; | ||
49 | } | ||
50 | return 0; | ||
51 | } | ||
52 | |||
53 | bool NetworkNetNode::generateDataForCommonFile( | ||
54 | SystemFile & S, | ||
55 | long DevNr, | ||
56 | ANetNodeInstance * NNI ) { | ||
57 | return ((ANetwork *)NNI)->generateDataForCommonFile(S, DevNr); | ||
58 | } | ||
59 | |||
60 | extern "C" { | ||
61 | void create_plugin( QList<ANetNode> & PNN ) { | ||
62 | PNN.append( new NetworkNetNode() ); | ||
63 | } | ||
64 | } | ||
diff --git a/noncore/settings/networksettings2/network/network_NN.h b/noncore/settings/networksettings2/network/network_NN.h new file mode 100644 index 0000000..3b0cd64 --- a/dev/null +++ b/noncore/settings/networksettings2/network/network_NN.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef NETWORK_NETNODE_H | ||
2 | #define NETWORK_NETNODE_H | ||
3 | |||
4 | #include "netnode.h" | ||
5 | |||
6 | class ANetwork; | ||
7 | |||
8 | class NetworkNetNode : public ANetNode{ | ||
9 | |||
10 | Q_OBJECT | ||
11 | |||
12 | public: | ||
13 | |||
14 | NetworkNetNode(); | ||
15 | virtual ~NetworkNetNode(); | ||
16 | |||
17 | virtual const QString pixmapName() | ||
18 | { return "tcpip"; } | ||
19 | |||
20 | virtual const QString nodeName() | ||
21 | { return tr("IP Configuration"); } | ||
22 | |||
23 | virtual const QString nodeDescription() ; | ||
24 | |||
25 | virtual ANetNodeInstance * createInstance( void ); | ||
26 | |||
27 | virtual const char ** needs( void ); | ||
28 | virtual const char * provides( void ); | ||
29 | |||
30 | virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); | ||
31 | virtual bool hasDataFor( const QString & S ); | ||
32 | virtual bool generateDataForCommonFile( | ||
33 | SystemFile & SF, long DevNr, ANetNodeInstance * NNI ); | ||
34 | |||
35 | private: | ||
36 | |||
37 | }; | ||
38 | |||
39 | extern "C" | ||
40 | { | ||
41 | void create_plugin( QList<ANetNode> & PNN ); | ||
42 | }; | ||
43 | |||
44 | #endif | ||
diff --git a/noncore/settings/networksettings2/network/network_NNI.cpp b/noncore/settings/networksettings2/network/network_NNI.cpp new file mode 100644 index 0000000..7130764 --- a/dev/null +++ b/noncore/settings/networksettings2/network/network_NNI.cpp | |||
@@ -0,0 +1,170 @@ | |||
1 | #include <system.h> | ||
2 | #include <asdevice.h> | ||
3 | #include "networkedit.h" | ||
4 | #include "network_NNI.h" | ||
5 | #include "network_NN.h" | ||
6 | |||
7 | ANetwork::ANetwork( NetworkNetNode * PNN ) : ANetNodeInstance( PNN ) { | ||
8 | Data.UseDHCP = 1; | ||
9 | Data.IPAddress = ""; | ||
10 | Data.NetMask = ""; | ||
11 | Data.Broadcast = ""; | ||
12 | Data.Gateway = ""; | ||
13 | Data.DNS1 = ""; | ||
14 | Data.DNS2 = ""; | ||
15 | Data.SendHostname = 0; | ||
16 | Data.Hostname = ""; | ||
17 | Data.PreUp_SL.clear(); | ||
18 | Data.PreDown_SL.clear(); | ||
19 | Data.PostUp_SL.clear(); | ||
20 | Data.PostDown_SL.clear(); | ||
21 | GUI = 0; | ||
22 | RT = 0; | ||
23 | } | ||
24 | |||
25 | void ANetwork::setSpecificAttribute( QString & A, QString & V ) { | ||
26 | if( A == "usedhcp" ) { | ||
27 | Data.UseDHCP = (V == "yes"); | ||
28 | } else if( A == "sendhostname" ) { | ||
29 | Data.SendHostname = (V=="yes"); | ||
30 | } else if( A == "hostname" ) { | ||
31 | Data.Hostname = V; | ||
32 | } else if( A == "ipaddress" ) { | ||
33 | Data.IPAddress = V; | ||
34 | } else if( A == "netmask" ) { | ||
35 | Data.NetMask = V; | ||
36 | } else if( A == "broadcast" ) { | ||
37 | Data.Broadcast = V; | ||
38 | } else if( A == "gateway" ) { | ||
39 | Data.Gateway = V; | ||
40 | } else if( A == "dns1" ) { | ||
41 | Data.DNS1 = V; | ||
42 | } else if( A == "dns2" ) { | ||
43 | Data.DNS2 = V; | ||
44 | } else if( A == "preup" ) { | ||
45 | Data.PreUp_SL.append( V ); | ||
46 | } else if( A == "predown" ) { | ||
47 | Data.PreDown_SL.append( V ); | ||
48 | } else if( A == "postup" ) { | ||
49 | Data.PostUp_SL.append( V ); | ||
50 | } else if( A == "postdown" ) { | ||
51 | Data.PostDown_SL.append( V ); | ||
52 | } | ||
53 | } | ||
54 | |||
55 | void ANetwork::saveSpecificAttribute( QTextStream & TS ) { | ||
56 | TS << "usedhcp=" << ((Data.UseDHCP) ? "yes" : "no") << endl; | ||
57 | TS << "sendhostname=" << ((Data.SendHostname) ? "yes" : "no") << endl; | ||
58 | TS << "hostname=" << Data.Hostname << endl; | ||
59 | TS << "ipaddress=" << Data.IPAddress << endl; | ||
60 | TS << "netmask=" << Data.NetMask << endl; | ||
61 | TS << "broadcast=" << Data.Broadcast << endl; | ||
62 | TS << "gateway=" << Data.Gateway << endl; | ||
63 | TS << "dns1=" << Data.DNS1 << endl; | ||
64 | TS << "dns2=" << Data.DNS2 << endl; | ||
65 | for ( QStringList::Iterator it = Data.PreUp_SL.begin(); | ||
66 | it != Data.PreUp_SL.end(); | ||
67 | ++it ) { | ||
68 | TS << "preup=" << quote(*it) << endl; | ||
69 | } | ||
70 | for ( QStringList::Iterator it = Data.PreDown_SL.begin(); | ||
71 | it != Data.PreDown_SL.end(); | ||
72 | ++it ) { | ||
73 | TS << "predown=" << quote(*it) << endl; | ||
74 | } | ||
75 | for ( QStringList::Iterator it = Data.PostUp_SL.begin(); | ||
76 | it != Data.PostUp_SL.end(); | ||
77 | ++it ) { | ||
78 | TS << "postup=" << quote(*it) << endl; | ||
79 | } | ||
80 | for ( QStringList::Iterator it = Data.PostDown_SL.begin(); | ||
81 | it != Data.PostDown_SL.end(); | ||
82 | ++it ) { | ||
83 | TS << "postdown=" << quote(*it) << endl; | ||
84 | } | ||
85 | } | ||
86 | |||
87 | QWidget * ANetwork::edit( QWidget * parent ) { | ||
88 | GUI = new NetworkEdit( parent ); | ||
89 | GUI->showData( Data ); | ||
90 | return GUI; | ||
91 | } | ||
92 | |||
93 | QString ANetwork::acceptable( void ) { | ||
94 | return ( GUI ) ? GUI->acceptable( ) : QString(); | ||
95 | } | ||
96 | |||
97 | void ANetwork::commit( void ) { | ||
98 | if( GUI && GUI->commit( Data ) ) | ||
99 | setModified( 1 ); | ||
100 | } | ||
101 | |||
102 | bool ANetwork::generateDataForCommonFile( SystemFile & S, long DevNr ) { | ||
103 | AsDevice * Dev = runtime()->device(); | ||
104 | QString NIC = Dev->genNic( DevNr ); | ||
105 | |||
106 | if( S.name() == "interfaces" ) { | ||
107 | // generate mapping stanza for this interface | ||
108 | S << "# check if " << NIC << " can be brought UP" << endl; | ||
109 | S << "mapping " << NIC << endl; | ||
110 | S << " script networksettings2-request" << endl << endl; | ||
111 | |||
112 | // we can safely call from here since device item is deeper | ||
113 | if( Data.UseDHCP ) { | ||
114 | S << "iface " << NIC << "-c" << connection()->number() << | ||
115 | "-allowed inet dhcp" << endl; | ||
116 | S << " up echo \"" << NIC << "\" > /tmp/profile-" << connection()->number() << | ||
117 | ".up" << Data.IPAddress << endl; | ||
118 | if( Data.SendHostname ) { | ||
119 | S << " hostname "<< Data.Hostname << endl; | ||
120 | } | ||
121 | |||
122 | S << " down rm -f /tmp/profile-" << connection()->number() << | ||
123 | ".up" << Data.IPAddress << endl; | ||
124 | } else { | ||
125 | S << "iface " << NIC << "-c" << connection()->number() << | ||
126 | "-allowed inet static" << endl; | ||
127 | S << " up echo \"" << NIC << "\" > /tmp/profile-" << connection()->number() << | ||
128 | ".up" << Data.IPAddress << endl; | ||
129 | S << " down rm -f /tmp/profile-" << connection()->number() << | ||
130 | ".up" << Data.IPAddress << endl; | ||
131 | S << " address " << Data.IPAddress << endl; | ||
132 | S << " broadcast " << Data.Broadcast << endl; | ||
133 | S << " netmask " << Data.NetMask << endl; | ||
134 | |||
135 | // derive network address = IPAddress & netmask | ||
136 | { QString NW; | ||
137 | QStringList ipal = QStringList::split( '.', Data.IPAddress ); | ||
138 | QStringList nmal = QStringList::split( '.', Data.NetMask ); | ||
139 | |||
140 | NW = QString( "%1.%2.%3.%4" ). | ||
141 | arg( ipal[0].toShort() & nmal[0].toShort() ). | ||
142 | arg( ipal[1].toShort() & nmal[1].toShort() ). | ||
143 | arg( ipal[2].toShort() & nmal[2].toShort() ). | ||
144 | arg( ipal[3].toShort() & nmal[3].toShort() ); | ||
145 | S << " network " << NW << endl; | ||
146 | } | ||
147 | } | ||
148 | for ( QStringList::Iterator it = Data.PreUp_SL.begin(); | ||
149 | it != Data.PreUp_SL.end(); | ||
150 | ++it ) { | ||
151 | S << " pre-up " << (*it) << endl; | ||
152 | } | ||
153 | for ( QStringList::Iterator it = Data.PostUp_SL.begin(); | ||
154 | it != Data.PostUp_SL.end(); | ||
155 | ++it ) { | ||
156 | S << " up " << (*it) << endl; | ||
157 | } | ||
158 | for ( QStringList::Iterator it = Data.PreDown_SL.begin(); | ||
159 | it != Data.PreDown_SL.end(); | ||
160 | ++it ) { | ||
161 | S << " down " << (*it) << endl; | ||
162 | } | ||
163 | for ( QStringList::Iterator it = Data.PostDown_SL.begin(); | ||
164 | it != Data.PostDown_SL.end(); | ||
165 | ++it ) { | ||
166 | S << " post-down " << (*it) << endl; | ||
167 | } | ||
168 | } | ||
169 | return 0; | ||
170 | } | ||
diff --git a/noncore/settings/networksettings2/network/network_NNI.h b/noncore/settings/networksettings2/network/network_NNI.h new file mode 100644 index 0000000..b98ff6e --- a/dev/null +++ b/noncore/settings/networksettings2/network/network_NNI.h | |||
@@ -0,0 +1,45 @@ | |||
1 | #ifndef NETWORK_H | ||
2 | #define NETWORK_H | ||
3 | |||
4 | #include <netnode.h> | ||
5 | #include "networkdata.h" | ||
6 | #include "networkrun.h" | ||
7 | |||
8 | class NetworkNetNode; | ||
9 | class NetworkEdit; | ||
10 | class SystemFile; | ||
11 | |||
12 | class ANetwork : public ANetNodeInstance{ | ||
13 | |||
14 | public : | ||
15 | |||
16 | ANetwork( NetworkNetNode * PNN ); | ||
17 | |||
18 | QWidget * edit( QWidget * parent ); | ||
19 | QString acceptable( void ); | ||
20 | void commit( void ); | ||
21 | |||
22 | RuntimeInfo * runtime( void ) | ||
23 | { if( RT == 0 ) | ||
24 | RT = new NetworkRun( this, Data ); | ||
25 | return RT; | ||
26 | } | ||
27 | |||
28 | virtual void * data( void ) | ||
29 | { return (void *)&Data; } | ||
30 | |||
31 | bool generateDataForCommonFile( SystemFile & S, long DevNr ); | ||
32 | |||
33 | protected : | ||
34 | |||
35 | virtual void setSpecificAttribute( QString & Attr, QString & Value ); | ||
36 | virtual void saveSpecificAttribute( QTextStream & TS ); | ||
37 | |||
38 | private : | ||
39 | |||
40 | NetworkEdit * GUI; | ||
41 | NetworkData_t Data; | ||
42 | NetworkRun * RT; | ||
43 | }; | ||
44 | |||
45 | #endif | ||
diff --git a/noncore/settings/networksettings2/network/networkdata.h b/noncore/settings/networksettings2/network/networkdata.h new file mode 100644 index 0000000..2c5da37 --- a/dev/null +++ b/noncore/settings/networksettings2/network/networkdata.h | |||
@@ -0,0 +1,22 @@ | |||
1 | #ifndef NETWORK_DATA_H | ||
2 | #define NETWORK_DATA_H | ||
3 | |||
4 | #include <qstring.h> | ||
5 | #include <qstringlist.h> | ||
6 | typedef struct NetworkData { | ||
7 | bool UseDHCP; | ||
8 | QString Hostname; | ||
9 | bool SendHostname; | ||
10 | QString IPAddress; | ||
11 | QString NetMask; | ||
12 | QString Gateway; | ||
13 | QString Broadcast; | ||
14 | QString DNS1; | ||
15 | QString DNS2; | ||
16 | QStringList PreUp_SL; | ||
17 | QStringList PostUp_SL; | ||
18 | QStringList PreDown_SL; | ||
19 | QStringList PostDown_SL; | ||
20 | } NetworkData_t; | ||
21 | |||
22 | #endif | ||
diff --git a/noncore/settings/networksettings2/network/networkedit.cpp b/noncore/settings/networksettings2/network/networkedit.cpp new file mode 100644 index 0000000..b17d745 --- a/dev/null +++ b/noncore/settings/networksettings2/network/networkedit.cpp | |||
@@ -0,0 +1,160 @@ | |||
1 | #include <qtoolbutton.h> | ||
2 | #include <qcheckbox.h> | ||
3 | #include <qlineedit.h> | ||
4 | #include <qlistbox.h> | ||
5 | #include <GUIUtils.h> | ||
6 | #include <resources.h> | ||
7 | #include "networkedit.h" | ||
8 | |||
9 | NetworkEdit::NetworkEdit( QWidget * Parent ) : NetworkGUI( Parent ){ | ||
10 | |||
11 | AddPreDown_TB->setPixmap( NSResources->getPixmap( "add" ) ); | ||
12 | AddPreUp_TB->setPixmap( NSResources->getPixmap( "add" ) ); | ||
13 | AddPostDown_TB->setPixmap( NSResources->getPixmap( "add" ) ); | ||
14 | AddPostUp_TB->setPixmap( NSResources->getPixmap( "add" ) ); | ||
15 | |||
16 | DeletePreDown_TB->setPixmap( NSResources->getPixmap( "remove" ) ); | ||
17 | DeletePreUp_TB->setPixmap( NSResources->getPixmap( "remove" ) ); | ||
18 | DeletePostDown_TB->setPixmap( NSResources->getPixmap( "remove" ) ); | ||
19 | DeletePostUp_TB->setPixmap( NSResources->getPixmap( "remove" ) ); | ||
20 | |||
21 | UpPreDown_TB->setPixmap( NSResources->getPixmap( "up" ) ); | ||
22 | UpPreUp_TB->setPixmap( NSResources->getPixmap( "up" ) ); | ||
23 | UpPostDown_TB->setPixmap( NSResources->getPixmap( "up" ) ); | ||
24 | UpPostUp_TB->setPixmap( NSResources->getPixmap( "up" ) ); | ||
25 | |||
26 | DownPreDown_TB->setPixmap( NSResources->getPixmap( "down" ) ); | ||
27 | DownPreUp_TB->setPixmap( NSResources->getPixmap( "down" ) ); | ||
28 | DownPostDown_TB->setPixmap( NSResources->getPixmap( "down" ) ); | ||
29 | DownPostUp_TB->setPixmap( NSResources->getPixmap( "down" ) ); | ||
30 | |||
31 | } | ||
32 | |||
33 | QString NetworkEdit::acceptable( void ) { | ||
34 | if( DHCP_CB->isChecked() ) { | ||
35 | if( SendHostname_CB->isChecked() ) | ||
36 | if( Hostname_LE->text().isEmpty() ) | ||
37 | return tr("Hostname needed"); | ||
38 | return QString(); | ||
39 | } | ||
40 | |||
41 | if( IPAddress_LE->text().isEmpty() ) | ||
42 | return tr("IPAddress needed"); | ||
43 | if( Broadcast_LE->text().isEmpty() ) | ||
44 | return tr("Broadcast needed"); | ||
45 | if( SubnetMask_LE->text().isEmpty() ) | ||
46 | return tr("Subnet mask needed"); | ||
47 | |||
48 | // valid IP ? | ||
49 | if( ! validIP( IPAddress_LE->text() ) ) | ||
50 | return tr("IPAddress not valid"); | ||
51 | if( ! validIP( SubnetMask_LE->text() ) ) | ||
52 | return tr("Subnet mask not valid"); | ||
53 | if( ! validIP( Broadcast_LE->text() ) ) | ||
54 | return tr("Broadcast address not valid"); | ||
55 | if( Gateway_LE->text().isEmpty() && | ||
56 | ! validIP( Gateway_LE->text() ) ) | ||
57 | return tr("Gateway address not valid"); | ||
58 | if( DNS1_LE->text().isEmpty() && | ||
59 | ! validIP( DNS1_LE->text() ) ) | ||
60 | return tr("DNS1 address not valid"); | ||
61 | if( DNS2_LE->text().isEmpty() && | ||
62 | ! validIP( DNS2_LE->text() ) ) | ||
63 | return tr("DNS2 address not valid"); | ||
64 | return QString(); | ||
65 | } | ||
66 | |||
67 | bool NetworkEdit::commit( NetworkData_t & Data ) { | ||
68 | bool SM = 0; | ||
69 | CBM( Data.UseDHCP, DHCP_CB, SM ); | ||
70 | TXTM( Data.IPAddress, IPAddress_LE, SM ); | ||
71 | CBM( Data.SendHostname, SendHostname_CB, SM ); | ||
72 | TXTM( Data.Hostname, Hostname_LE, SM ); | ||
73 | TXTM( Data.Gateway, Gateway_LE, SM ); | ||
74 | TXTM( Data.Broadcast, Broadcast_LE, SM ); | ||
75 | TXTM( Data.NetMask, SubnetMask_LE, SM ); | ||
76 | TXTM( Data.DNS1, DNS1_LE, SM ); | ||
77 | TXTM( Data.DNS2, DNS2_LE, SM ); | ||
78 | |||
79 | SM |= updateList( Data.PreUp_SL, PreUp_LB ); | ||
80 | SM |= updateList( Data.PostUp_SL, PostUp_LB ); | ||
81 | SM |= updateList( Data.PreDown_SL, PreDown_LB ); | ||
82 | SM |= updateList( Data.PostDown_SL, PostDown_LB ); | ||
83 | |||
84 | return SM; | ||
85 | } | ||
86 | |||
87 | void NetworkEdit::showData( NetworkData_t & Data ) { | ||
88 | DHCP_CB->setChecked( Data.UseDHCP ); | ||
89 | SendHostname_CB->setChecked( Data.SendHostname ); | ||
90 | Hostname_LE->setText( Data.Hostname ); | ||
91 | IPAddress_LE->setText( Data.IPAddress ); | ||
92 | Gateway_LE->setText( Data.Gateway ); | ||
93 | SubnetMask_LE->setText( Data.NetMask ); | ||
94 | Broadcast_LE->setText( Data.Broadcast ); | ||
95 | DNS1_LE->setText( Data.DNS1 ); | ||
96 | DNS2_LE->setText( Data.DNS2 ); | ||
97 | |||
98 | populateList( Data.PreUp_SL, PreUp_LB ); | ||
99 | populateList( Data.PostUp_SL, PostUp_LB ); | ||
100 | populateList( Data.PreDown_SL, PreDown_LB ); | ||
101 | populateList( Data.PostDown_SL, PostDown_LB ); | ||
102 | } | ||
103 | |||
104 | bool NetworkEdit::updateList( QStringList & SL, QListBox * LB ) { | ||
105 | bool Changed; | ||
106 | QStringList NewSL; | ||
107 | |||
108 | // collect new list | ||
109 | for( unsigned int i = 0; i < LB->count() ; i ++ ) { | ||
110 | NewSL.append( LB->text(i) ); | ||
111 | } | ||
112 | |||
113 | // check if at least ONE item in new list is NEW | ||
114 | Changed = 0; | ||
115 | for ( QStringList::Iterator it = NewSL.begin(); | ||
116 | it != NewSL.end(); | ||
117 | ++it ) { | ||
118 | if( SL.findIndex( (*it) ) < 0 ) { | ||
119 | // new or modified item | ||
120 | Changed = 1; | ||
121 | SL = NewSL; | ||
122 | break; | ||
123 | } | ||
124 | } | ||
125 | return Changed; | ||
126 | } | ||
127 | |||
128 | void NetworkEdit::populateList( QStringList & SL, QListBox * LB ) { | ||
129 | LB->clear(); | ||
130 | for ( QStringList::Iterator it = SL.begin(); | ||
131 | it != SL.end(); | ||
132 | ++it ) { | ||
133 | LB->insertItem( (*it) ); | ||
134 | } | ||
135 | } | ||
136 | |||
137 | void NetworkEdit::SLOT_NetmaskModified( const QString & ) { | ||
138 | QString IP, SN; | ||
139 | IP = IPAddress_LE->text(); | ||
140 | SN = SubnetMask_LE->text(); | ||
141 | if( IP.isEmpty() || SN.isEmpty() ) | ||
142 | return; | ||
143 | |||
144 | if( ! validIP(IP) || ! validIP( SN ) ) | ||
145 | return; | ||
146 | |||
147 | // if all ones | ||
148 | // broadcast = (IPAddress | ~netmask ) | ||
149 | { QString NW; | ||
150 | QStringList ipal = QStringList::split( '.', IP ); | ||
151 | QStringList nmal = QStringList::split( '.', SN ); | ||
152 | |||
153 | NW = QString( "%1.%2.%3.%4" ). | ||
154 | arg( ipal[0].toShort() | ( ~ nmal[0].toShort() & 0x00ff) ). | ||
155 | arg( ipal[1].toShort() | ( ~ nmal[1].toShort() & 0x00ff) ). | ||
156 | arg( ipal[2].toShort() | ( ~ nmal[2].toShort() & 0x00ff) ). | ||
157 | arg( ipal[3].toShort() | ( ~ nmal[3].toShort() & 0x00ff) ); | ||
158 | Broadcast_LE->setText( NW ); | ||
159 | } | ||
160 | } | ||
diff --git a/noncore/settings/networksettings2/network/networkedit.h b/noncore/settings/networksettings2/network/networkedit.h new file mode 100644 index 0000000..9ed4e84 --- a/dev/null +++ b/noncore/settings/networksettings2/network/networkedit.h | |||
@@ -0,0 +1,21 @@ | |||
1 | #include "networkdata.h" | ||
2 | #include "networkGUI.h" | ||
3 | |||
4 | class NetworkEdit : public NetworkGUI { | ||
5 | |||
6 | public : | ||
7 | |||
8 | NetworkEdit( QWidget * parent ); | ||
9 | QString acceptable( void ); | ||
10 | bool commit( NetworkData_t & Data ); | ||
11 | void showData( NetworkData_t & Data ); | ||
12 | |||
13 | public slots : | ||
14 | |||
15 | void SLOT_NetmaskModified( const QString & S ); | ||
16 | |||
17 | private : | ||
18 | |||
19 | bool updateList( QStringList &SL, QListBox * LB ); | ||
20 | void populateList( QStringList &SL, QListBox * LB ); | ||
21 | }; | ||
diff --git a/noncore/settings/networksettings2/network/networkrun.cpp b/noncore/settings/networksettings2/network/networkrun.cpp new file mode 100644 index 0000000..e732bfa --- a/dev/null +++ b/noncore/settings/networksettings2/network/networkrun.cpp | |||
@@ -0,0 +1,63 @@ | |||
1 | #include <system.h> | ||
2 | #include <asdevice.h> | ||
3 | #include "networkrun.h" | ||
4 | |||
5 | void NetworkRun::detectState( NodeCollection * NC ) { | ||
6 | RuntimeInfo * RI = netNode()->nextNode()->runtime(); | ||
7 | AsDevice * Next = RI->asDevice(); | ||
8 | InterfaceInfo * II = Next->assignedInterface(); | ||
9 | |||
10 | if( II ) { | ||
11 | // device has assigned interface | ||
12 | NC->setCurrentState( (( II->IsUp ) ? IsUp : Available) ); | ||
13 | } | ||
14 | |||
15 | // has no interface -> delegate | ||
16 | RI->detectState( NC ); | ||
17 | } | ||
18 | |||
19 | bool NetworkRun::setState( NodeCollection * NC, Action_t A ) { | ||
20 | // we handle UP and DOWN | ||
21 | RuntimeInfo * RI = netNode()->nextNode()->runtime(); | ||
22 | AsDevice * Next = RI->asDevice(); | ||
23 | InterfaceInfo * II = Next->assignedInterface(); | ||
24 | |||
25 | if( A == Up ) { | ||
26 | // we can bring UP if lower level is available | ||
27 | if( NC->currentState() == Available ) { | ||
28 | QString S; | ||
29 | S.sprintf( "ifup %s=manual", II->Name.latin1() ); | ||
30 | NSResources->system().execute( S ); | ||
31 | NC->setCurrentState( IsUp ); | ||
32 | } | ||
33 | return 1; | ||
34 | } else if( A == Down ) { | ||
35 | if( NC->currentState() == IsUp ) { | ||
36 | QString S; | ||
37 | S.sprintf( "ifdown %s", II->Name.latin1() ); | ||
38 | NSResources->system().execute( S ); | ||
39 | NC->setCurrentState( Available ); | ||
40 | } | ||
41 | return 1; | ||
42 | } | ||
43 | // delegate | ||
44 | return RI->setState( NC, A ); | ||
45 | } | ||
46 | |||
47 | bool NetworkRun::canSetState( State_t Curr, Action_t A ) { | ||
48 | // we handle UP and DOWN | ||
49 | RuntimeInfo * RI = netNode()->nextNode()->runtime(); | ||
50 | |||
51 | if( A == Up ) { | ||
52 | return ( Curr == Available ); | ||
53 | } else if( A == Down ) { | ||
54 | return ( Curr == IsUp ); | ||
55 | } | ||
56 | // delegate | ||
57 | return RI->canSetState( Curr, A ); | ||
58 | } | ||
59 | |||
60 | bool NetworkRun::handlesInterface( const QString & S ) { | ||
61 | // donno -> pass deeper | ||
62 | return netNode()->nextNode()->runtime()->handlesInterface(S); | ||
63 | } | ||
diff --git a/noncore/settings/networksettings2/network/networkrun.h b/noncore/settings/networksettings2/network/networkrun.h new file mode 100644 index 0000000..f3d840e --- a/dev/null +++ b/noncore/settings/networksettings2/network/networkrun.h | |||
@@ -0,0 +1,20 @@ | |||
1 | #include <asconnection.h> | ||
2 | #include "networkdata.h" | ||
3 | |||
4 | class NetworkRun : public AsConnection { | ||
5 | |||
6 | public : | ||
7 | |||
8 | NetworkRun( ANetNodeInstance * NNI, | ||
9 | NetworkData & Data ) : AsConnection( NNI ) | ||
10 | { } | ||
11 | |||
12 | protected : | ||
13 | |||
14 | void detectState( NodeCollection * ); | ||
15 | bool setState( NodeCollection * ,Action_t A ); | ||
16 | bool canSetState( State_t , Action_t A ); | ||
17 | |||
18 | bool handlesInterface( const QString & I ); | ||
19 | |||
20 | }; | ||
diff --git a/noncore/settings/networksettings2/networksettings.cpp b/noncore/settings/networksettings2/networksettings.cpp new file mode 100644 index 0000000..ffe130c --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings.cpp | |||
@@ -0,0 +1,820 @@ | |||
1 | #include <stdio.h> | ||
2 | |||
3 | #include <qpe/qpeapplication.h> | ||
4 | #include <qiconset.h> | ||
5 | #include <qgroupbox.h> | ||
6 | #include <qtimer.h> | ||
7 | #include <qlistbox.h> | ||
8 | #include <qmessagebox.h> | ||
9 | #include <qlabel.h> | ||
10 | #include <qiconview.h> | ||
11 | #include <qtextstream.h> | ||
12 | #include <qdir.h> | ||
13 | #include <qfile.h> | ||
14 | #include <qfileinfo.h> | ||
15 | #include <qtimer.h> | ||
16 | #include <qpe/qpeapplication.h> | ||
17 | #include <qtoolbutton.h> | ||
18 | |||
19 | #include <asdevice.h> | ||
20 | #include "networksettings.h" | ||
21 | #include "netnode.h" | ||
22 | #include "editconnection.h" | ||
23 | |||
24 | static QString CfgFile; | ||
25 | |||
26 | NetworkSettingsData::NetworkSettingsData( void ) { | ||
27 | // init global resources structure | ||
28 | new TheNSResources(); | ||
29 | |||
30 | CfgFile.sprintf( "%s/NETCONFIG", getenv("HOME") ); | ||
31 | |||
32 | // load settings | ||
33 | Force = 0; | ||
34 | loadSettings(); | ||
35 | } | ||
36 | |||
37 | // saving is done by caller | ||
38 | NetworkSettingsData::~NetworkSettingsData( void ) { | ||
39 | delete NSResources; | ||
40 | } | ||
41 | |||
42 | void NetworkSettingsData::loadSettings( void ) { | ||
43 | QString S; | ||
44 | ANetNodeInstance* NNI; | ||
45 | QString Attr, Value; | ||
46 | long idx; | ||
47 | |||
48 | QFile F( CfgFile ); | ||
49 | QTextStream TS( &F ); | ||
50 | |||
51 | do { | ||
52 | |||
53 | if( ! F.open(IO_ReadOnly) ) | ||
54 | break; | ||
55 | |||
56 | /* load the file -> | ||
57 | |||
58 | FORMAT : | ||
59 | |||
60 | [NETNODETYPE] | ||
61 | Entries ... | ||
62 | <EMPTYLINE> | ||
63 | [connection] | ||
64 | Name=Name | ||
65 | Node=Name | ||
66 | <EMPTYLINE> | ||
67 | */ | ||
68 | while( ! TS.atEnd() ) { | ||
69 | S = TS.readLine(); | ||
70 | |||
71 | if ( S.isEmpty() || S[0] != '[' ) | ||
72 | continue; | ||
73 | |||
74 | S = S.mid( 1, S.length()-2 ); | ||
75 | |||
76 | if( ! NSResources ) { | ||
77 | continue; | ||
78 | } | ||
79 | |||
80 | if( S == "connection" ) { | ||
81 | // load connections -> collections of nodes | ||
82 | NodeCollection * NC = new NodeCollection( TS ); | ||
83 | if ( NC->count() == 0 ) { | ||
84 | if( QMessageBox::warning( | ||
85 | 0, | ||
86 | qApp->translate( "NetworkSettings2", "Invalid connection" ), | ||
87 | qApp->translate( "NetworkSettings2", | ||
88 | "<p>Connection %1 contains unrecognized nodes and cannot be loaded</p>" ).arg(NC->name()), | ||
89 | qApp->translate( "NetworkSettings2", | ||
90 | "Remove node"), | ||
91 | qApp->translate( "NetworkSettings2", | ||
92 | "Exit program") ) == 1 ) { | ||
93 | exit( 0 ); | ||
94 | } | ||
95 | delete NC; | ||
96 | } else | ||
97 | NSResources->addConnection( NC ); | ||
98 | } else { | ||
99 | // load nodes | ||
100 | NNI = NSResources->createNodeInstance( S ); | ||
101 | if( ! NNI ) { | ||
102 | printf( "SKIPPING %s\n", S.latin1() ); | ||
103 | } | ||
104 | |||
105 | do { | ||
106 | S = TS.readLine(); | ||
107 | if( S.isEmpty() ) { | ||
108 | // empty line | ||
109 | break; | ||
110 | } | ||
111 | // node found ? | ||
112 | if( NNI ) { | ||
113 | idx = S.find( '=' ); | ||
114 | if( idx > 0 ) { | ||
115 | Attr = S.left( idx ); | ||
116 | Value = S.mid( idx+1, S.length() ); | ||
117 | } else { | ||
118 | Value=""; | ||
119 | Attr = S; | ||
120 | } | ||
121 | |||
122 | Value.stripWhiteSpace(); | ||
123 | Attr.stripWhiteSpace(); | ||
124 | Attr.lower(); | ||
125 | // dequote Attr | ||
126 | Value = deQuote(Value); | ||
127 | |||
128 | // set the attribute | ||
129 | NNI->setAttribute( Attr, Value ); | ||
130 | } | ||
131 | |||
132 | } while( 1 ); | ||
133 | if( NNI ) { | ||
134 | // loading from file -> exists | ||
135 | NNI->setNew( FALSE ); | ||
136 | NSResources->addNodeInstance( NNI ); | ||
137 | } | ||
138 | } | ||
139 | } | ||
140 | |||
141 | } while( 0 ); | ||
142 | |||
143 | } | ||
144 | |||
145 | QString NetworkSettingsData::saveSettings( void ) { | ||
146 | QString ErrS = ""; | ||
147 | |||
148 | if( ! isModified() ) | ||
149 | return ErrS; | ||
150 | |||
151 | QString S; | ||
152 | QFile F( CfgFile + ".bup" ); | ||
153 | |||
154 | printf( "Saving settings to %s\n", CfgFile.latin1() ); | ||
155 | if( ! F.open( IO_WriteOnly | IO_Truncate ) ) { | ||
156 | ErrS = qApp->translate( "NetworkSettings", | ||
157 | "<p>Could not save setup to %1 !</p>" ). | ||
158 | arg(CfgFile); | ||
159 | // problem | ||
160 | return ErrS; | ||
161 | } | ||
162 | |||
163 | QTextStream TS( &F ); | ||
164 | { Name2Connection_t & M = NSResources->connections(); | ||
165 | ANetNodeInstance * NNI; | ||
166 | |||
167 | // for all connections | ||
168 | for( QDictIterator<NodeCollection> it(M); | ||
169 | it.current(); | ||
170 | ++it ) { | ||
171 | // all nodes in those connections | ||
172 | for( QListIterator<ANetNodeInstance> nit(*(it.current())); | ||
173 | nit.current(); | ||
174 | ++nit ) { | ||
175 | // header | ||
176 | NNI = nit.current(); | ||
177 | TS << '[' <<NNI->netNode()->nodeName() << ']' << endl; | ||
178 | NNI->saveAttributes( TS ); | ||
179 | TS << endl; | ||
180 | } | ||
181 | |||
182 | TS << "[connection]" << endl; | ||
183 | it.current()->save(TS); | ||
184 | } | ||
185 | } | ||
186 | |||
187 | QDir D("."); | ||
188 | D.rename( CfgFile + ".bup", CfgFile ); | ||
189 | |||
190 | // | ||
191 | // proper files AND system files regenerated | ||
192 | // | ||
193 | |||
194 | setModified( 0 ); | ||
195 | return ErrS; | ||
196 | } | ||
197 | |||
198 | QString NetworkSettingsData::generateSettings( bool ForceReq ) { | ||
199 | bool ForceIt; | ||
200 | QString S = ""; | ||
201 | |||
202 | // include own force flag | ||
203 | ForceIt = (Force) ? 1 : ForceReq; | ||
204 | |||
205 | if( ! ForceIt && ! isModified() ) | ||
206 | return S; | ||
207 | |||
208 | // regenerate system files | ||
209 | printf( "Generating settings from %s\n", CfgFile.latin1() ); | ||
210 | |||
211 | { Name2SystemFile_t & SFM = NSResources->systemFiles(); | ||
212 | Name2Connection_t & M = NSResources->connections(); | ||
213 | NodeCollection * NC; | ||
214 | ANetNodeInstance * NNI; | ||
215 | SystemFile * SF; | ||
216 | bool needToRegenerate = ForceIt; | ||
217 | |||
218 | // | ||
219 | // check if we need to generate at least one of the system files | ||
220 | // | ||
221 | if( ! ForceIt ) { | ||
222 | for( QDictIterator<SystemFile> sfit(SFM); | ||
223 | sfit.current(); | ||
224 | ++sfit ) { | ||
225 | SF = sfit.current(); | ||
226 | |||
227 | // check if there are nodes that are modified and require | ||
228 | // data for this system file | ||
229 | |||
230 | // for all connections | ||
231 | for( QDictIterator<NodeCollection> ncit(M); | ||
232 | ncit.current(); | ||
233 | ++ncit ) { | ||
234 | NC = ncit.current(); | ||
235 | |||
236 | if( NC->isModified() ) { | ||
237 | // does this connection 'touch' this system file ? | ||
238 | for( QListIterator<ANetNodeInstance> cncit(*NC); | ||
239 | cncit.current(); | ||
240 | ++cncit ) { | ||
241 | NNI = cncit.current(); | ||
242 | if( NNI->netNode()->hasDataFor( SF->name() ) && | ||
243 | NNI->isModified() ) { | ||
244 | needToRegenerate = 1; | ||
245 | break; | ||
246 | } | ||
247 | } | ||
248 | } | ||
249 | if( needToRegenerate ) | ||
250 | break; | ||
251 | } | ||
252 | if( needToRegenerate ) | ||
253 | break; | ||
254 | } | ||
255 | } | ||
256 | |||
257 | // we cannot renumber with a FORCE request since | ||
258 | // we probably are NOT going to save the config | ||
259 | // e.g. when using --regen option | ||
260 | if( ! ForceReq && needToRegenerate ) { | ||
261 | NSResources->renumberConnections(); | ||
262 | setModified(1); | ||
263 | } | ||
264 | |||
265 | // | ||
266 | // generate files proper to each netnodeinstance | ||
267 | // | ||
268 | { Name2Instance_t & NNIs = NSResources->netNodeInstances(); | ||
269 | ANetNodeInstance * NNI; | ||
270 | |||
271 | for( QDictIterator<ANetNodeInstance> NNIIt(NNIs); | ||
272 | NNIIt.current(); | ||
273 | ++NNIIt | ||
274 | ){ | ||
275 | // for all nodes find those that are modified | ||
276 | NNI = NNIIt.current(); | ||
277 | |||
278 | if( ForceIt || NNI->isModified() ) { | ||
279 | if( ! NNI->netNode()->generateProperFilesFor( NNI ) ) { | ||
280 | // problem generating | ||
281 | S = qApp->translate( "NetworkSettings", | ||
282 | "<p>Cannot generate files proper to %1</p>" ). | ||
283 | arg(NNI->netNode()->nodeName()) ; | ||
284 | return S; | ||
285 | } | ||
286 | } | ||
287 | } | ||
288 | } | ||
289 | |||
290 | // | ||
291 | // generate system files | ||
292 | // | ||
293 | for( QDictIterator<SystemFile> sfit(SFM); | ||
294 | sfit.current(); | ||
295 | ++sfit ) { | ||
296 | SF = sfit.current(); | ||
297 | |||
298 | // | ||
299 | // regenerate current file | ||
300 | // | ||
301 | printf( "Generating %s\n", SF->name().latin1() ); | ||
302 | SF->open(); | ||
303 | |||
304 | do { // so we can break; | ||
305 | |||
306 | if( SF->preSection() ) { | ||
307 | S = qApp->translate( "NetworkSettings", | ||
308 | "<p>Error in preSection for file %1</p>" ). | ||
309 | arg( SF->name() ); | ||
310 | return S; | ||
311 | } | ||
312 | |||
313 | for( QDictIterator<NodeCollection> ncit(M); | ||
314 | ncit.current(); | ||
315 | ++ncit ) { | ||
316 | NC = ncit.current(); | ||
317 | |||
318 | // get the netnode that serves as the device for this | ||
319 | // connection | ||
320 | AsDevice * Dev = NC->device(); | ||
321 | |||
322 | // generate 'entry' for every possible device this profile handles | ||
323 | |||
324 | for( QListIterator<ANetNodeInstance> cncit(*NC); | ||
325 | cncit.current(); | ||
326 | ++cncit ) { | ||
327 | NNI = cncit.current(); | ||
328 | for( int i = 0; i < Dev->count(); i ++ ) { | ||
329 | if( NNI->netNode()->hasDataFor( SF->name() ) ) { | ||
330 | if( SF->preNodeSection( NNI, i ) ) { | ||
331 | S = qApp->translate( "NetworkSettings", | ||
332 | "<p>Error in preNodeSection for file %1 and node %2</p>" ). | ||
333 | arg( SF->name() ). | ||
334 | arg( NNI->netNode()->nodeName() ); | ||
335 | return S; | ||
336 | } | ||
337 | |||
338 | if( NNI->netNode()->generateDataForCommonFile(*SF,i,NNI) ) { | ||
339 | S = qApp->translate( "NetworkSettings", | ||
340 | "<p>Error in node part for file %1 and node %2</p>" ). | ||
341 | arg( SF->name() ). | ||
342 | arg( NNI->netNode()->nodeName() ); | ||
343 | return S; | ||
344 | } | ||
345 | |||
346 | if( SF->postNodeSection( NNI, i ) ) { | ||
347 | S = qApp->translate( "NetworkSettings", | ||
348 | "<p>Error in postNodeSection for file %1 and node %2</p>" ). | ||
349 | arg( SF->name() ). | ||
350 | arg( NNI->netNode()->nodeName() ); | ||
351 | return S; | ||
352 | } | ||
353 | } | ||
354 | } | ||
355 | } | ||
356 | *SF << endl; | ||
357 | } | ||
358 | |||
359 | if( SF->postSection() ) { | ||
360 | S = qApp->translate( "NetworkSettings", | ||
361 | "<p>Error in postSection for file %1</p>" ). | ||
362 | arg( SF->name() ); | ||
363 | return S; | ||
364 | } | ||
365 | } while( 0 ); | ||
366 | SF->close(); | ||
367 | } | ||
368 | } | ||
369 | Force = 0; | ||
370 | return S; | ||
371 | } | ||
372 | |||
373 | // | ||
374 | // GUI part | ||
375 | // | ||
376 | |||
377 | NetworkSettings::NetworkSettings( QWidget *parent, | ||
378 | const char *name, | ||
379 | WFlags fl ) : NetworkSettingsGUI(parent,name,fl), | ||
380 | NSD() { | ||
381 | |||
382 | UpdateTimer = new QTimer( this ); | ||
383 | // set pixmaps | ||
384 | Add_TB->setPixmap( NSResources->getPixmap( "add" ) ); | ||
385 | Delete_TB->setPixmap( NSResources->getPixmap( "remove" ) ); | ||
386 | CheckState_TB->setPixmap( NSResources->getPixmap( "check" ) ); | ||
387 | Enable_TB->setPixmap( NSResources->getPixmap( "disabled" ) ); | ||
388 | GenConfig_TB->setPixmap( NSResources->getPixmap( "configure" ) ); | ||
389 | |||
390 | Connect_TB->setPixmap( NSResources->getPixmap( "connected" ) ); | ||
391 | |||
392 | On_TB->setPixmap( NSResources->getPixmap( "off" ) ); | ||
393 | |||
394 | // populate main Listbox | ||
395 | Profiles_IV->clear(); | ||
396 | { Name2Connection_t & M = NSResources->connections(); | ||
397 | NodeCollection * NC; | ||
398 | QIconViewItem * IVI; | ||
399 | |||
400 | // for all connections | ||
401 | for( QDictIterator<NodeCollection> it(M); | ||
402 | it.current(); | ||
403 | ++it ) { | ||
404 | NC = it.current(); | ||
405 | IVI = new QIconViewItem( Profiles_IV, | ||
406 | NC->name(), | ||
407 | NC->devicePixmap() ); | ||
408 | } | ||
409 | } | ||
410 | |||
411 | if( Profiles_IV->count() ) { | ||
412 | Profiles_IV->setSelected( Profiles_IV->firstItem(), TRUE ); | ||
413 | } | ||
414 | |||
415 | // if no profiles -> auto popup editing | ||
416 | if( NSResources->connections().count() == 0 ) { | ||
417 | QTimer::singleShot( 100, this, SLOT(SLOT_AddNode() ) ); | ||
418 | } | ||
419 | |||
420 | UpdateTimer->start( 5000 ); | ||
421 | connect( UpdateTimer, SIGNAL( timeout() ), | ||
422 | this, SLOT( SLOT_RefreshStates() ) ); | ||
423 | } | ||
424 | |||
425 | NetworkSettings::~NetworkSettings() { | ||
426 | QString S; | ||
427 | |||
428 | S = NSD.generateSettings(); | ||
429 | if( ! S.isEmpty() ) { | ||
430 | QMessageBox::warning( | ||
431 | 0, | ||
432 | tr( "Generating system configuration" ), | ||
433 | S | ||
434 | ); | ||
435 | } | ||
436 | |||
437 | S = NSD.saveSettings(); | ||
438 | if( ! S.isEmpty() ) { | ||
439 | // problem saving | ||
440 | QMessageBox::warning( | ||
441 | 0, | ||
442 | tr( "Saving setup" ), S ); | ||
443 | } | ||
444 | } | ||
445 | |||
446 | void NetworkSettings::SLOT_RefreshStates( void ) { | ||
447 | QIconViewItem * IVI = Profiles_IV->currentItem(); // remeber | ||
448 | |||
449 | if( IVI ) { | ||
450 | NodeCollection * NC; | ||
451 | NSResources->system().probeInterfaces(); | ||
452 | // update current selection only | ||
453 | NC = NSResources->findConnection( IVI->text() ); | ||
454 | if( NC ) { | ||
455 | State_t OldS = NC->state(); | ||
456 | State_t NewS = NC->state(1); | ||
457 | if( OldS != NewS ) { | ||
458 | updateProfileState( IVI ); | ||
459 | } | ||
460 | } | ||
461 | } | ||
462 | |||
463 | |||
464 | /* -> LATER !! | ||
465 | bool is; | ||
466 | NodeCollection * NC; | ||
467 | |||
468 | for( unsigned int i = 0; i < Profiles_LB->count() ; i ++ ) { | ||
469 | NC = NSResources->findConnection( Profiles_LB->text(i) ); | ||
470 | if( NC ) { | ||
471 | State_t OldS = NC->state(); | ||
472 | State_t NewS = NC->state(1); | ||
473 | if( OldS != NewS ) { | ||
474 | is = Profiles_LB->isSelected(i); | ||
475 | Profiles_LB->changeItem( NC->statePixmap(NewS), | ||
476 | NC->name(), | ||
477 | i ); | ||
478 | if( is ) { | ||
479 | Profiles_LB->setSelected( i, TRUE ); | ||
480 | } | ||
481 | } | ||
482 | } | ||
483 | } | ||
484 | if( ci >= 0 ) | ||
485 | Profiles_LB->setCurrentItem( ci ); | ||
486 | */ | ||
487 | } | ||
488 | |||
489 | void NetworkSettings::SLOT_AddNode( void ) { | ||
490 | SLOT_EditNode( 0 ); | ||
491 | } | ||
492 | |||
493 | void NetworkSettings::SLOT_DeleteNode( void ) { | ||
494 | QIconViewItem * IVI = Profiles_IV->currentItem(); | ||
495 | |||
496 | if ( ! IVI ) | ||
497 | return; | ||
498 | |||
499 | if( QMessageBox::warning( | ||
500 | 0, | ||
501 | tr( "Removing profile" ), | ||
502 | tr( "Remove selected profile ?" ), | ||
503 | 1, 0 ) == 1 ) { | ||
504 | NSResources->removeConnection( IVI->text() ); | ||
505 | delete IVI; | ||
506 | setModified( 1 ); | ||
507 | NSD.forceGeneration(1); | ||
508 | } | ||
509 | } | ||
510 | |||
511 | void NetworkSettings::SLOT_EditNode( QIconViewItem * IVI ) { | ||
512 | QString OldName = ""; | ||
513 | EditConnection EC( this ); | ||
514 | |||
515 | if( IVI ) { | ||
516 | NodeCollection * NC = NSResources->findConnection( IVI->text() ); | ||
517 | if( ! NC ) { | ||
518 | return; | ||
519 | } | ||
520 | OldName = NC->name(); | ||
521 | EC.setConnection( NC ); | ||
522 | } | ||
523 | |||
524 | EC.showMaximized(); | ||
525 | // disable refresh timer | ||
526 | UpdateTimer->stop(); | ||
527 | if( EC.exec() == QDialog::Accepted ) { | ||
528 | // toplevel item -> store | ||
529 | NodeCollection * NC = EC.connection(); | ||
530 | if( NC->isModified() ) { | ||
531 | setModified( 1 ); | ||
532 | if( IVI ) { | ||
533 | // new name -> remove item | ||
534 | NSResources->removeConnection( OldName ); | ||
535 | // must add it here since change will trigger event | ||
536 | NSResources->addConnection( NC ); | ||
537 | IVI->setText( NC->name() ); | ||
538 | IVI->setPixmap( NC->devicePixmap() ); | ||
539 | } else { | ||
540 | // new item | ||
541 | NSResources->addConnection( NC ); | ||
542 | NC->setNumber( NC->maxConnectionNumber()+1 ); | ||
543 | IVI = new QIconViewItem( Profiles_IV, | ||
544 | NC->name(), | ||
545 | NC->devicePixmap() | ||
546 | ); | ||
547 | Profiles_IV->setSelected( IVI, TRUE ); | ||
548 | } | ||
549 | updateProfileState( IVI ); | ||
550 | } | ||
551 | } else { | ||
552 | // cancelled : reset connection | ||
553 | if( IVI ) { | ||
554 | NodeCollection * NC = NSResources->findConnection( IVI->text() ); | ||
555 | NC->reassign(); | ||
556 | } | ||
557 | } | ||
558 | // reenable | ||
559 | UpdateTimer->start( 5000 ); | ||
560 | } | ||
561 | |||
562 | void NetworkSettings::SLOT_ShowNode( QIconViewItem * IVI ) { | ||
563 | if( IVI == 0 ) | ||
564 | return; | ||
565 | |||
566 | NodeCollection * NC = NSResources->findConnection( IVI->text() ); | ||
567 | |||
568 | // is button possible | ||
569 | bool EnabledPossible, OnPossible, ConnectPossible; | ||
570 | // is button On or Off | ||
571 | bool DisabledOn, OnOn, ConnectOn; | ||
572 | |||
573 | EnabledPossible = OnPossible = ConnectPossible = 1; | ||
574 | DisabledOn = 1; | ||
575 | OnOn = ConnectOn = 0; | ||
576 | |||
577 | switch( NC->state() ) { | ||
578 | case Unknown : | ||
579 | // cannot occur here | ||
580 | break; | ||
581 | case Unchecked : | ||
582 | case Unavailable : | ||
583 | // cannot do anything but recheck | ||
584 | EnabledPossible = OnPossible = ConnectPossible = 0; | ||
585 | break; | ||
586 | case Disabled : | ||
587 | OnPossible = ConnectPossible = 0; | ||
588 | break; | ||
589 | case Off : | ||
590 | DisabledOn = 0; | ||
591 | break; | ||
592 | case Available : | ||
593 | OnOn = 1; | ||
594 | DisabledOn = 0; | ||
595 | break; | ||
596 | case IsUp : | ||
597 | OnOn = ConnectOn = 1; | ||
598 | DisabledOn = 0; | ||
599 | break; | ||
600 | } | ||
601 | |||
602 | // set button state | ||
603 | Enable_TB->setEnabled( EnabledPossible ); | ||
604 | On_TB->setEnabled( OnPossible ); | ||
605 | Connect_TB->setEnabled( ConnectPossible ); | ||
606 | |||
607 | Enable_TB->setOn( DisabledOn ); | ||
608 | On_TB->setOn( OnOn ); | ||
609 | Connect_TB->setOn( ConnectOn ); | ||
610 | |||
611 | if( NC->description().isEmpty() ) { | ||
612 | Description_LBL->setText( tr( "No description" ) ); | ||
613 | } else { | ||
614 | Description_LBL->setText( NC->description() ); | ||
615 | } | ||
616 | |||
617 | CurProfile_GB->setTitle( IVI->text() ); | ||
618 | State_LBL->setText( NC->stateName() ); | ||
619 | } | ||
620 | |||
621 | void NetworkSettings::SLOT_CheckState( void ) { | ||
622 | QIconViewItem * IVI = Profiles_IV->currentItem(); | ||
623 | if ( ! IVI ) | ||
624 | return; | ||
625 | updateProfileState( IVI ); | ||
626 | } | ||
627 | |||
628 | void NetworkSettings::updateProfileState( QIconViewItem * IVI ) { | ||
629 | if( IVI == Profiles_IV->currentItem() ) { | ||
630 | SLOT_ShowNode( IVI ); | ||
631 | } | ||
632 | } | ||
633 | |||
634 | void NetworkSettings::SLOT_GenerateConfig( void ) { | ||
635 | QString S = NSD.generateSettings( TRUE ); | ||
636 | |||
637 | if( ! S.isEmpty() ) { | ||
638 | QMessageBox::warning( | ||
639 | 0, | ||
640 | tr( "Generating system configuration" ), | ||
641 | S | ||
642 | ); | ||
643 | } | ||
644 | } | ||
645 | |||
646 | void NetworkSettings::SLOT_Enable( void ) { | ||
647 | QIconViewItem * IVI = Profiles_IV->currentItem(); | ||
648 | QString Msg; | ||
649 | if ( ! IVI ) | ||
650 | return; | ||
651 | |||
652 | NodeCollection * NC = | ||
653 | NSResources->findConnection( IVI->text() ); | ||
654 | |||
655 | bool rv; | ||
656 | switch( NC->state() ) { | ||
657 | case Disabled : | ||
658 | Msg = tr( "Cannot enable profile" ); | ||
659 | rv = NC->setState( Enable ); | ||
660 | break; | ||
661 | default : | ||
662 | Msg = tr( "Cannot disable profile" ); | ||
663 | rv = NC->setState( Disable ); | ||
664 | break; | ||
665 | } | ||
666 | |||
667 | if( ! rv ) { | ||
668 | QMessageBox::warning( | ||
669 | 0, | ||
670 | tr( "Activating profile" ), | ||
671 | Msg ); | ||
672 | return; | ||
673 | } | ||
674 | updateProfileState( IVI ); | ||
675 | } | ||
676 | |||
677 | void NetworkSettings::SLOT_On( void ) { | ||
678 | QIconViewItem * IVI = Profiles_IV->currentItem(); | ||
679 | |||
680 | if ( ! IVI ) | ||
681 | return; | ||
682 | |||
683 | NodeCollection * NC = | ||
684 | NSResources->findConnection( IVI->text() ); | ||
685 | |||
686 | bool rv; | ||
687 | switch( NC->state() ) { | ||
688 | case Off : | ||
689 | // activate interface | ||
690 | rv = NC->setState( Activate ); | ||
691 | break; | ||
692 | case Available : | ||
693 | // deactivate | ||
694 | rv = NC->setState( Deactivate ); | ||
695 | break; | ||
696 | case IsUp : | ||
697 | // bring down and deactivate | ||
698 | rv = ( NC->setState( Down ) && | ||
699 | NC->setState( Deactivate ) ); | ||
700 | break; | ||
701 | default : | ||
702 | // others no change | ||
703 | return; | ||
704 | } | ||
705 | |||
706 | if( ! rv ) { | ||
707 | QMessageBox::warning( | ||
708 | 0, | ||
709 | tr( "Activating profile" ), | ||
710 | tr( "Cannot enable profile" ) ); | ||
711 | return; | ||
712 | } | ||
713 | updateProfileState( IVI ); | ||
714 | } | ||
715 | |||
716 | void NetworkSettings::SLOT_Connect( void ) { | ||
717 | QIconViewItem * IVI = Profiles_IV->currentItem(); | ||
718 | |||
719 | if ( ! IVI ) | ||
720 | return; | ||
721 | |||
722 | NodeCollection * NC = | ||
723 | NSResources->findConnection( IVI->text() ); | ||
724 | |||
725 | bool rv; | ||
726 | switch( NC->state() ) { | ||
727 | case IsUp : | ||
728 | // down interface | ||
729 | rv = NC->setState( Down ); | ||
730 | break; | ||
731 | case Available : | ||
732 | // up interface | ||
733 | rv = NC->setState( Up ); | ||
734 | break; | ||
735 | case Off : | ||
736 | // activate and bring up | ||
737 | rv = ( NC->setState( Activate ) && | ||
738 | NC->setState( Up ) ); | ||
739 | break; | ||
740 | default : | ||
741 | // others no change | ||
742 | return; | ||
743 | } | ||
744 | |||
745 | if( ! rv ) { | ||
746 | QMessageBox::warning( | ||
747 | 0, | ||
748 | tr( "Activating profile" ), | ||
749 | tr( "Cannot enable profile" ) ); | ||
750 | return; | ||
751 | } | ||
752 | |||
753 | // we do not update the GUI but wait for the REAL upping of the device | ||
754 | } | ||
755 | |||
756 | /* | ||
757 | Called by the system to see if interface can be brought UP | ||
758 | |||
759 | if allowed, echo Interface-allowed else Interface-disallowed | ||
760 | */ | ||
761 | |||
762 | void NetworkSettings::canStart( const char * Interface ) { | ||
763 | // load situation | ||
764 | NetworkSettingsData NSD; | ||
765 | |||
766 | { Name2Connection_t & M = NSResources->connections(); | ||
767 | NodeCollection * NC; | ||
768 | |||
769 | // for all connections | ||
770 | for( QDictIterator<NodeCollection> it(M); | ||
771 | it.current(); | ||
772 | ++it ) { | ||
773 | NC = it.current(); | ||
774 | // check if this profile handles the requested interface | ||
775 | if( NC->handlesInterface( Interface ) ) { | ||
776 | switch( NC->state() ) { | ||
777 | case Unchecked : | ||
778 | case Unknown : | ||
779 | case Unavailable : | ||
780 | case Disabled : | ||
781 | // this profile does not allow interface to be UP | ||
782 | // -> try others | ||
783 | break; | ||
784 | case Off : | ||
785 | // try to UP the device | ||
786 | if( ! NC->setState( Activate ) ) { | ||
787 | // cannot bring device Online -> try other alters | ||
788 | break; | ||
789 | } | ||
790 | // FT | ||
791 | case Available : | ||
792 | case IsUp : // also called for 'down' | ||
793 | // device is ready -> done | ||
794 | printf( "%s-c%d-allowed\n", | ||
795 | Interface, NC->number() ); | ||
796 | return; | ||
797 | } | ||
798 | } | ||
799 | } | ||
800 | } | ||
801 | // if we come here no alternatives are possible | ||
802 | printf( "%s-cnn-disallowed\n", Interface ); | ||
803 | } | ||
804 | |||
805 | /* | ||
806 | Called by the system to regenerate config files | ||
807 | */ | ||
808 | |||
809 | bool NetworkSettings::regenerate( void ) { | ||
810 | QString S; | ||
811 | // load situation | ||
812 | NetworkSettingsData NSD; | ||
813 | |||
814 | S = NSD.generateSettings( TRUE ); | ||
815 | if( ! S.isEmpty() ) { | ||
816 | fprintf( stdout, "%s\n", S.latin1() ); | ||
817 | return 1; | ||
818 | } | ||
819 | return 0; | ||
820 | } | ||
diff --git a/noncore/settings/networksettings2/networksettings.h b/noncore/settings/networksettings2/networksettings.h new file mode 100644 index 0000000..eb475a3 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings.h | |||
@@ -0,0 +1,77 @@ | |||
1 | #include "networksettingsGUI.h" | ||
2 | #include "resources.h" | ||
3 | |||
4 | class ANetNode; | ||
5 | class ANetNodeInstance; | ||
6 | class QTimer; | ||
7 | class QIconViewItem; | ||
8 | |||
9 | class NetworkSettingsData { | ||
10 | |||
11 | public : | ||
12 | |||
13 | NetworkSettingsData( void ); | ||
14 | ~NetworkSettingsData( void ); | ||
15 | |||
16 | void loadSettings( void ); | ||
17 | QString saveSettings( void ); | ||
18 | |||
19 | QString generateSettings( bool Force = FALSE ); | ||
20 | |||
21 | bool isModified( void ) | ||
22 | { return IsModified; } | ||
23 | void setModified( bool m ) | ||
24 | { IsModified = m; } | ||
25 | |||
26 | void forceGeneration( bool m ) | ||
27 | { Force = m; } | ||
28 | |||
29 | private : | ||
30 | |||
31 | bool IsModified; | ||
32 | bool Force; | ||
33 | |||
34 | }; | ||
35 | |||
36 | class NetworkSettings : public NetworkSettingsGUI { | ||
37 | |||
38 | Q_OBJECT | ||
39 | |||
40 | public : | ||
41 | |||
42 | NetworkSettings( QWidget *parent=0, | ||
43 | const char *name=0, | ||
44 | WFlags fl = 0 ); | ||
45 | ~NetworkSettings( void ); | ||
46 | |||
47 | static QString appName( void ) | ||
48 | { return QString::fromLatin1("networksettings"); } | ||
49 | |||
50 | static void canStart( const char * Interface ); | ||
51 | static bool regenerate( void ); | ||
52 | |||
53 | bool isModified( void ) | ||
54 | { return NSD.isModified(); } | ||
55 | void setModified( bool m ) | ||
56 | { NSD.setModified( m ); } | ||
57 | |||
58 | public slots : | ||
59 | |||
60 | void SLOT_AddNode( void ); | ||
61 | void SLOT_DeleteNode( void ); | ||
62 | void SLOT_ShowNode( QIconViewItem * ); | ||
63 | void SLOT_EditNode( QIconViewItem * ); | ||
64 | void SLOT_CheckState( void ); | ||
65 | void SLOT_Enable( void ); | ||
66 | void SLOT_On( void ); | ||
67 | void SLOT_Connect( void ); | ||
68 | void SLOT_GenerateConfig( void ); | ||
69 | void SLOT_RefreshStates( void ); | ||
70 | |||
71 | private : | ||
72 | |||
73 | void updateProfileState( QIconViewItem * it ); | ||
74 | QTimer * UpdateTimer; | ||
75 | NetworkSettingsData NSD; | ||
76 | |||
77 | }; | ||
diff --git a/noncore/settings/networksettings2/networksettings.pro b/noncore/settings/networksettings2/networksettings.pro new file mode 100644 index 0000000..fb1f2cf --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings.pro | |||
@@ -0,0 +1,16 @@ | |||
1 | # | ||
2 | CONFIG = qt warn_on debug quick-app | ||
3 | #CONFIG = qt warn_on release | ||
4 | HEADERS = networksettings.h \ | ||
5 | editconnection.h | ||
6 | SOURCES = main.cpp \ | ||
7 | networksettings.cpp \ | ||
8 | editconnection.cpp | ||
9 | INCLUDEPATH += $(OPIEDIR)/include networksettings2/ | ||
10 | DEPENDPATH += $(OPIEDIR)/include networksettings2/ | ||
11 | LIBS += -lqpe -L$(OPIEDIR)/plugins/networksettings2 -lnetworksettings2 -lopie | ||
12 | INTERFACES = networksettingsGUI.ui editconnectionGUI.ui | ||
13 | TARGET = networksettings2 | ||
14 | |||
15 | |||
16 | include ( $(OPIEDIR)/include.pro ) | ||
diff --git a/noncore/settings/networksettings2/networksettings2/GUIUtils.cpp b/noncore/settings/networksettings2/networksettings2/GUIUtils.cpp new file mode 100644 index 0000000..a98c303 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/GUIUtils.cpp | |||
@@ -0,0 +1,27 @@ | |||
1 | #include <qstringlist.h> | ||
2 | #include "GUIUtils.h" | ||
3 | |||
4 | bool validIP( const QString & S ) { | ||
5 | |||
6 | QStringList SL = QStringList::split( '.', S, TRUE ); | ||
7 | if( SL.count() != 4 ) | ||
8 | return 0; | ||
9 | |||
10 | for( int i = 0; i < 4 ; i ++ ) { | ||
11 | if( SL[i].isEmpty() ) | ||
12 | return 0; | ||
13 | } | ||
14 | |||
15 | short x = SL[0].toShort(); | ||
16 | |||
17 | if( x < 1 || x > 255 ) | ||
18 | return 0; | ||
19 | |||
20 | for( int i = 1; i < 4 ; i ++ ) { | ||
21 | x = SL[i].toShort(); | ||
22 | if( x < 0 || x > 255 ) | ||
23 | return 0; | ||
24 | } | ||
25 | return 1; | ||
26 | |||
27 | } | ||
diff --git a/noncore/settings/networksettings2/networksettings2/GUIUtils.h b/noncore/settings/networksettings2/networksettings2/GUIUtils.h new file mode 100644 index 0000000..23290a9 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/GUIUtils.h | |||
@@ -0,0 +1,36 @@ | |||
1 | #ifndef __GUIUTILS_H | ||
2 | #define __GUIUTILS_H | ||
3 | |||
4 | #include <qstring.h> | ||
5 | |||
6 | // if TEXT capable widget has changed | ||
7 | #define TXTM( Data, Wdg, FL ) \ | ||
8 | if( Wdg->text() != Data ) { \ | ||
9 | FL = 1; \ | ||
10 | Data = Wdg->text(); \ | ||
11 | } | ||
12 | |||
13 | // if IsChecked capable widget has changed | ||
14 | #define CBM(Data,Wdg,FL) \ | ||
15 | if( Wdg->isChecked() != Data) { \ | ||
16 | FL = 1; \ | ||
17 | Data = Wdg->isChecked(); \ | ||
18 | } | ||
19 | |||
20 | // if Value capable widget has changed | ||
21 | #define SBM(Data,Wdg,FL) \ | ||
22 | if( Wdg->value() != Data) { \ | ||
23 | FL = 1; \ | ||
24 | Data = Wdg->value(); \ | ||
25 | } | ||
26 | |||
27 | // if currentItem capable widget has changed | ||
28 | #define CIM(Data,Wdg,FL) \ | ||
29 | if( Wdg->currentItem() != Data) { \ | ||
30 | FL = 1; \ | ||
31 | Data = Wdg->currentItem(); \ | ||
32 | } | ||
33 | |||
34 | extern bool validIP( const QString & S ); | ||
35 | |||
36 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettings2/asconnection.h b/noncore/settings/networksettings2/networksettings2/asconnection.h new file mode 100644 index 0000000..1ed7e74 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/asconnection.h | |||
@@ -0,0 +1,18 @@ | |||
1 | #ifndef ASCONNECTION_H | ||
2 | #define ASCONNECTION_H | ||
3 | |||
4 | #include <resources.h> | ||
5 | |||
6 | // pure virtual (component oriented) interface of any | ||
7 | // plugin that offers a connection | ||
8 | class AsConnection : public RuntimeInfo { | ||
9 | |||
10 | public : | ||
11 | |||
12 | AsConnection( ANetNodeInstance * NNI ) : | ||
13 | RuntimeInfo( NNI ) { | ||
14 | } | ||
15 | |||
16 | }; | ||
17 | |||
18 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettings2/asdevice.h b/noncore/settings/networksettings2/networksettings2/asdevice.h new file mode 100644 index 0000000..058fc4c --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/asdevice.h | |||
@@ -0,0 +1,37 @@ | |||
1 | #ifndef ASDEVICE_H | ||
2 | #define ASDEVICE_H | ||
3 | |||
4 | #include "system.h" | ||
5 | #include "netnode.h" | ||
6 | |||
7 | // pure virtual (component oriented) interface of any | ||
8 | // plugin that offers a device | ||
9 | class AsDevice : public RuntimeInfo { | ||
10 | |||
11 | public : | ||
12 | |||
13 | AsDevice( ANetNodeInstance * NNI ) : | ||
14 | RuntimeInfo( NNI ) { | ||
15 | AssignedInterface = 0; | ||
16 | } | ||
17 | |||
18 | // return the interface assigned to this device | ||
19 | // e.g eth0, wlan, ... | ||
20 | InterfaceInfo * assignedInterface( void ) | ||
21 | { return AssignedInterface; } | ||
22 | virtual void assignInterface( InterfaceInfo * NI ) | ||
23 | { AssignedInterface = NI; } | ||
24 | |||
25 | // number of device to configure for this Device type | ||
26 | virtual long count( void ) | ||
27 | { return 1; } | ||
28 | // generate NIC name of device number ... | ||
29 | virtual QString genNic( long NicNr ) = 0; | ||
30 | |||
31 | private : | ||
32 | |||
33 | InterfaceInfo * AssignedInterface; | ||
34 | |||
35 | }; | ||
36 | |||
37 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettings2/asfullsetup.h b/noncore/settings/networksettings2/networksettings2/asfullsetup.h new file mode 100644 index 0000000..e358a83 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/asfullsetup.h | |||
@@ -0,0 +1,20 @@ | |||
1 | #ifndef ASFULLSETUP_H | ||
2 | #define ASFULLSETUP_H | ||
3 | |||
4 | #include <netnode.h> | ||
5 | |||
6 | // pure virtual (component oriented) interface of any | ||
7 | // plugin that offers a full setup | ||
8 | class AsFullSetup : public RuntimeInfo { | ||
9 | |||
10 | public : | ||
11 | |||
12 | AsFullSetup( ANetNodeInstance * NNI ) : | ||
13 | RuntimeInfo( NNI ) { | ||
14 | } | ||
15 | |||
16 | virtual const QString & description( void ) = 0; | ||
17 | |||
18 | }; | ||
19 | |||
20 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettings2/asline.h b/noncore/settings/networksettings2/networksettings2/asline.h new file mode 100644 index 0000000..6bd93ec --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/asline.h | |||
@@ -0,0 +1,18 @@ | |||
1 | #ifndef ASLINE_H | ||
2 | #define ASLINE_H | ||
3 | |||
4 | #include <netnode.h> | ||
5 | |||
6 | // pure virtual (component oriented) interface of any | ||
7 | // plugin that offers a line | ||
8 | class AsLine : public RuntimeInfo { | ||
9 | |||
10 | public : | ||
11 | |||
12 | AsLine( ANetNodeInstance * NNI ) : | ||
13 | RuntimeInfo( NNI ) { | ||
14 | } | ||
15 | |||
16 | }; | ||
17 | |||
18 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettings2/config.in b/noncore/settings/networksettings2/networksettings2/config.in new file mode 100644 index 0000000..4f1dd5b --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/config.in | |||
@@ -0,0 +1,4 @@ | |||
1 | config NS2MAIN | ||
2 | boolean | ||
3 | default "y" if NS2 | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && NS2 | ||
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.cpp b/noncore/settings/networksettings2/networksettings2/netnode.cpp new file mode 100644 index 0000000..a5b572b --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/netnode.cpp | |||
@@ -0,0 +1,278 @@ | |||
1 | #include <qpe/qpeapplication.h> | ||
2 | #include <time.h> | ||
3 | #include <qtextstream.h> | ||
4 | #include <qpixmap.h> | ||
5 | |||
6 | #include "resources.h" | ||
7 | #include "netnode.h" | ||
8 | |||
9 | #include "asdevice.h" | ||
10 | #include "asline.h" | ||
11 | #include "asconnection.h" | ||
12 | #include "asfullsetup.h" | ||
13 | |||
14 | QString & deQuote( QString & X ) { | ||
15 | if( X[0] == '"' ) { | ||
16 | // remove end and trailing "" and \x -> x | ||
17 | QChar R; | ||
18 | long idx; | ||
19 | idx = X.length()-1; | ||
20 | X = X.mid( 1, idx ); | ||
21 | |||
22 | idx = 0; | ||
23 | while( ( idx = X.find( '\\', idx ) ) >= 0 ) { | ||
24 | R = X[idx+1]; | ||
25 | X.replace( idx, 2, &R, 1 ); | ||
26 | } | ||
27 | X = X.left( X.length()-1 ); | ||
28 | } | ||
29 | return X; | ||
30 | } | ||
31 | |||
32 | QString quote( QString X ) { | ||
33 | if( X.find( QRegExp( "[ \n\"\\\t]" ) ) >= 0 ) { | ||
34 | // need to quote this | ||
35 | QString OutString = "\""; | ||
36 | |||
37 | X.replace( QRegExp("\""), "\\\"" ); | ||
38 | X.replace( QRegExp("\\"), "\\\\" ); | ||
39 | X.replace( QRegExp(" "), "\\ " ); | ||
40 | |||
41 | OutString += X; | ||
42 | OutString += "\""; | ||
43 | X = OutString; | ||
44 | } | ||
45 | return X; | ||
46 | } | ||
47 | |||
48 | // | ||
49 | // | ||
50 | // | ||
51 | // | ||
52 | // | ||
53 | |||
54 | long ANetNodeInstance::InstanceCounter = -1; | ||
55 | |||
56 | void ANetNodeInstance::initialize( void ) { | ||
57 | if( InstanceCounter == -1 ) | ||
58 | InstanceCounter = time(0); | ||
59 | // set name | ||
60 | QString N; | ||
61 | N.sprintf( "-%ld", InstanceCounter++ ); | ||
62 | N.prepend( NodeType->nodeName() ); | ||
63 | setNodeName( N ); | ||
64 | } | ||
65 | |||
66 | void ANetNodeInstance::setAttribute( QString & Attr, QString & Value ){ | ||
67 | if( Attr == "name" ) { | ||
68 | NodeName = Value; | ||
69 | } else { | ||
70 | setSpecificAttribute( Attr, Value ); | ||
71 | } | ||
72 | } | ||
73 | |||
74 | void ANetNodeInstance::saveAttributes( QTextStream & TS ) { | ||
75 | TS << "name=" << quote( NodeName ) << endl; | ||
76 | saveSpecificAttribute( TS ); | ||
77 | } | ||
78 | |||
79 | ANetNodeInstance * ANetNodeInstance::nextNode( void ) { | ||
80 | return connection()->findNext( this ); | ||
81 | } | ||
82 | |||
83 | // | ||
84 | // | ||
85 | // | ||
86 | // | ||
87 | // | ||
88 | |||
89 | long NodeCollection::MaxNr = -1; | ||
90 | |||
91 | NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() { | ||
92 | IsModified = 0; | ||
93 | Index = -1; | ||
94 | Name=""; | ||
95 | IsNew = 1; | ||
96 | CurrentState = Unchecked; | ||
97 | } | ||
98 | |||
99 | NodeCollection::NodeCollection( QTextStream & TS ) : | ||
100 | QList<ANetNodeInstance>() { | ||
101 | long idx; | ||
102 | bool InError = 0; | ||
103 | QString S, A, N; | ||
104 | IsModified = 0; | ||
105 | Index = -1; | ||
106 | Name=""; | ||
107 | IsNew = 0; | ||
108 | CurrentState = Unchecked; | ||
109 | |||
110 | do { | ||
111 | S = TS.readLine(); | ||
112 | if( S.isEmpty() ) { | ||
113 | if( InError ) { | ||
114 | // remove all nodes | ||
115 | clear(); | ||
116 | } | ||
117 | // empty line | ||
118 | break; | ||
119 | } | ||
120 | |||
121 | idx = S.find('='); | ||
122 | S.stripWhiteSpace(); | ||
123 | A = S.left( idx ); | ||
124 | A.lower(); | ||
125 | N = S.mid( idx+1, S.length() ); | ||
126 | N.stripWhiteSpace(); | ||
127 | N = deQuote( N ); | ||
128 | |||
129 | if( A == "name" ) { | ||
130 | Name = N; | ||
131 | } else if( A == "number" ) { | ||
132 | setNumber( N.toLong() ); | ||
133 | } else if( A == "node" ) { | ||
134 | ANetNodeInstance * NNI = NSResources->findNodeInstance( N ); | ||
135 | if( NNI && ! InError ) { | ||
136 | append( NSResources->findNodeInstance( N ) ); | ||
137 | } else { | ||
138 | // could not find a node type -> collection invalid | ||
139 | InError = 1; | ||
140 | } | ||
141 | } | ||
142 | } while( 1 ); | ||
143 | } | ||
144 | |||
145 | |||
146 | NodeCollection::~NodeCollection( void ) { | ||
147 | } | ||
148 | |||
149 | const QString & NodeCollection::description( void ) { | ||
150 | ANetNodeInstance * NNI = getToplevel(); | ||
151 | return (NNI) ? NNI->runtime()->asFullSetup()->description() : Name; | ||
152 | } | ||
153 | |||
154 | void NodeCollection::append( ANetNodeInstance * NNI ) { | ||
155 | NNI->setConnection( this ); | ||
156 | QList<ANetNodeInstance>::append( NNI ); | ||
157 | } | ||
158 | |||
159 | void NodeCollection::save( QTextStream & TS ) { | ||
160 | |||
161 | TS << "name=" << quote( Name ) << endl; | ||
162 | TS << "number=" << number() << endl; | ||
163 | ANetNodeInstance * NNI; | ||
164 | for( QListIterator<ANetNodeInstance> it(*this); | ||
165 | it.current(); | ||
166 | ++it ) { | ||
167 | NNI = it.current(); | ||
168 | TS << "node=" << quote( NNI->nodeName() ) << endl; | ||
169 | } | ||
170 | TS << endl; | ||
171 | IsNew = 0; | ||
172 | } | ||
173 | |||
174 | ANetNodeInstance * NodeCollection::getToplevel( void ) { | ||
175 | ANetNodeInstance * NNI = 0; | ||
176 | for( QListIterator<ANetNodeInstance> it(*this); | ||
177 | it.current(); | ||
178 | ++it ) { | ||
179 | NNI = it.current(); | ||
180 | if( NNI->netNode()->isToplevel() ) | ||
181 | break; | ||
182 | } | ||
183 | return NNI; | ||
184 | } | ||
185 | |||
186 | ANetNodeInstance * NodeCollection::findByName( const QString & S ) { | ||
187 | ANetNodeInstance * NNI = 0; | ||
188 | for( QListIterator<ANetNodeInstance> it(*this); | ||
189 | it.current(); | ||
190 | ++it ) { | ||
191 | NNI = it.current(); | ||
192 | if( NNI->name() == S ) | ||
193 | break; | ||
194 | } | ||
195 | return NNI; | ||
196 | } | ||
197 | |||
198 | ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) { | ||
199 | ANetNodeInstance * NNNI; | ||
200 | |||
201 | if( ! NNI ) | ||
202 | getToplevel(); | ||
203 | |||
204 | for( QListIterator<ANetNodeInstance> it(*this); | ||
205 | it.current(); | ||
206 | ++it ) { | ||
207 | NNNI = it.current(); | ||
208 | if( NNNI == NNI ) { | ||
209 | ++it; | ||
210 | return it.current(); | ||
211 | } | ||
212 | } | ||
213 | return 0; // no more next | ||
214 | } | ||
215 | |||
216 | int NodeCollection::compareItems( QCollection::Item I1, | ||
217 | QCollection::Item I2 ) { | ||
218 | ANetNodeInstance * NNI1, * NNI2; | ||
219 | NNI1 = (ANetNodeInstance *)I1; | ||
220 | NNI2 = (ANetNodeInstance *)I2; | ||
221 | return NNI1->nodeName().compare( NNI2->nodeName() ); | ||
222 | } | ||
223 | |||
224 | static char * State2PixmapTbl[] = { | ||
225 | "NULL", // Unchecked : no pixmap | ||
226 | "check", // Unknown | ||
227 | "delete", // unavailable | ||
228 | "disabled", // disabled | ||
229 | "off", // off | ||
230 | "disconnected", // available | ||
231 | "connected" // up | ||
232 | }; | ||
233 | |||
234 | QPixmap NodeCollection::devicePixmap( void ) { | ||
235 | return NSResources->getPixmap( | ||
236 | device()->netNode()->pixmapName()+"-large" ); | ||
237 | } | ||
238 | |||
239 | QPixmap NodeCollection::statePixmap( State_t S) { | ||
240 | return NSResources->getPixmap( State2PixmapTbl[S] ); | ||
241 | } | ||
242 | |||
243 | QString NodeCollection::stateName( State_t S) { | ||
244 | switch( S ) { | ||
245 | case Unknown : | ||
246 | return qApp->translate( "networksettings2", "Unknown"); | ||
247 | case Unavailable : | ||
248 | return qApp->translate( "networksettings2", "Unavailable"); | ||
249 | case Disabled : | ||
250 | return qApp->translate( "networksettings2", "Disabled"); | ||
251 | case Off : | ||
252 | return qApp->translate( "networksettings2", "Off"); | ||
253 | case Available : | ||
254 | return qApp->translate( "networksettings2", "Available"); | ||
255 | case IsUp : | ||
256 | return qApp->translate( "networksettings2", "IsUp"); | ||
257 | case Unchecked : /* FT */ | ||
258 | default : | ||
259 | break; | ||
260 | } | ||
261 | return QString(""); | ||
262 | } | ||
263 | |||
264 | void NodeCollection::reassign( void ) { | ||
265 | for( QListIterator<ANetNodeInstance> it(*this); | ||
266 | it.current(); | ||
267 | ++it ) { | ||
268 | it.current()->setConnection( this ); | ||
269 | } | ||
270 | } | ||
271 | |||
272 | InterfaceInfo * RuntimeInfo::assignedInterface( void ) { | ||
273 | return netNode()->nextNode()->runtime()->assignedInterface(); | ||
274 | } | ||
275 | |||
276 | AsDevice * RuntimeInfo::device( void ) { | ||
277 | return netNode()->nextNode()->runtime()->device(); | ||
278 | } | ||
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.h b/noncore/settings/networksettings2/networksettings2/netnode.h new file mode 100644 index 0000000..0ecd64e --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/netnode.h | |||
@@ -0,0 +1,361 @@ | |||
1 | #ifndef NETNODE_H | ||
2 | #define NETNODE_H | ||
3 | |||
4 | #include <qtextstream.h> | ||
5 | #include <qlist.h> | ||
6 | #include <qpixmap.h> | ||
7 | #include <qobject.h> | ||
8 | #include <time.h> | ||
9 | |||
10 | // difference feature interfaces | ||
11 | class AsDevice; | ||
12 | class AsLine; | ||
13 | class AsConnection; | ||
14 | class AsFullSetup; | ||
15 | |||
16 | // needed for plugin creation function | ||
17 | #include <qlist.h> | ||
18 | |||
19 | class ANetNode; | ||
20 | class ANetNodeInstance; | ||
21 | class NodeCollection; | ||
22 | class QTextStream; | ||
23 | class RuntimeInfo; | ||
24 | class InterfaceInfo; | ||
25 | |||
26 | extern QString & deQuote( QString & X ); | ||
27 | extern QString quote( QString X ); | ||
28 | |||
29 | #include "systemfile.h" | ||
30 | |||
31 | typedef enum State { | ||
32 | // if we have not yet detected the state of the device | ||
33 | Unchecked = 0, | ||
34 | // if we cannot determine the state | ||
35 | Unknown = 1, | ||
36 | // if connection cannot be established e.g. because | ||
37 | // the hardware is not available | ||
38 | Unavailable = 2, | ||
39 | // if the connection cannot be establishec but NOT | ||
40 | // because it is physically impossible but because | ||
41 | // it has been disabled for FUNCTIONAL reasons | ||
42 | Disabled = 3, | ||
43 | // if connection is available to is currently down | ||
44 | // i.e. the corresponding hardware is not activated | ||
45 | Off = 4, | ||
46 | // if connection is available to be used (i.e. the | ||
47 | // devices if fully ready to be used | ||
48 | Available = 5, | ||
49 | // if connection is being used | ||
50 | IsUp = 6 | ||
51 | } State_t; | ||
52 | |||
53 | typedef enum Action { | ||
54 | // to make the device unavailable functionally | ||
55 | Disable = 0, | ||
56 | // to make the device available functionally | ||
57 | Enable = 1, | ||
58 | // bring the hardware up | ||
59 | Activate = 2, | ||
60 | // bring the hardware down | ||
61 | Deactivate = 3, | ||
62 | // bring the connection up | ||
63 | Up = 4, | ||
64 | // bring the connection down | ||
65 | Down = 5 | ||
66 | } Action_t; | ||
67 | |||
68 | class ANetNode : public QObject{ | ||
69 | |||
70 | public: | ||
71 | |||
72 | typedef QArray<ANetNode *> NetNodeList; | ||
73 | |||
74 | ANetNode(){}; | ||
75 | virtual ~ANetNode(){}; | ||
76 | |||
77 | // pixmap needed for this NetNode | ||
78 | virtual const QString pixmapName() = 0; | ||
79 | |||
80 | // name of this NetNode | ||
81 | virtual const QString nodeName() = 0; | ||
82 | |||
83 | // description for this NetNode | ||
84 | virtual const QString nodeDescription() = 0; | ||
85 | |||
86 | // create a blank instance of a net node | ||
87 | virtual ANetNodeInstance * createInstance( void ) = 0; | ||
88 | |||
89 | // return feature this NetNode provides | ||
90 | virtual const char * provides( void ) = 0; | ||
91 | virtual const char ** needs( void ) = 0; | ||
92 | |||
93 | // generate files specific for this node (if any) | ||
94 | virtual bool generateProperFilesFor( ANetNodeInstance * NNI ) = 0; | ||
95 | // return TRUE if this node has data to be inserted in systemfile | ||
96 | // with name S | ||
97 | virtual bool hasDataFor( const QString & S ) = 0; | ||
98 | // generate data specific for the system file S | ||
99 | // called only IF data was needed | ||
100 | virtual bool generateDataForCommonFile( | ||
101 | SystemFile & SF, long DevNr, ANetNodeInstance * NNI ) = 0; | ||
102 | |||
103 | // does this Node provide a Connection | ||
104 | bool isToplevel( void ) | ||
105 | { return strcmp( provides(), "fullsetup") == 0 ; } | ||
106 | |||
107 | // compiled references to 'needed' NetNodes -> needs list | ||
108 | void setAlternatives( NetNodeList * Alt ) | ||
109 | { Alternatives = Alt; } | ||
110 | NetNodeList & alternatives( void ) | ||
111 | { return *Alternatives; } | ||
112 | |||
113 | protected : | ||
114 | |||
115 | NetNodeList * Alternatives; | ||
116 | |||
117 | private : | ||
118 | }; | ||
119 | |||
120 | class ANetNodeInstance : public QObject { | ||
121 | |||
122 | public: | ||
123 | |||
124 | ANetNodeInstance( ANetNode * NN ) : QObject() | ||
125 | { IsModified=0; NodeType = NN; IsNew = TRUE; } | ||
126 | virtual ~ANetNodeInstance( void ) { } | ||
127 | |||
128 | virtual RuntimeInfo * runtime( void ) = 0; | ||
129 | |||
130 | void setConnection( NodeCollection * NC ) | ||
131 | { Connection = NC; } | ||
132 | NodeCollection * connection( void ) | ||
133 | { return Connection; } | ||
134 | |||
135 | // create edit widget under parent | ||
136 | virtual QWidget * edit( QWidget * parent ) = 0; | ||
137 | // is given data acceptable | ||
138 | virtual QString acceptable( void ) = 0; | ||
139 | |||
140 | // return data was modified | ||
141 | void setModified( bool M ) | ||
142 | { IsModified = M; } | ||
143 | bool isModified( void ) | ||
144 | { return IsModified; } | ||
145 | |||
146 | // get data from GUI and store in node | ||
147 | virtual void commit( void ) = 0; | ||
148 | |||
149 | // get next node | ||
150 | ANetNodeInstance * nextNode(); | ||
151 | // return NetNode this is an instance of | ||
152 | ANetNode * netNode( void ) | ||
153 | { return NodeType; } | ||
154 | |||
155 | // intialize am instance of a net node | ||
156 | void initialize( void ); | ||
157 | |||
158 | // set the value of an attribute | ||
159 | void setAttribute( QString & Attr, QString & Value ) ; | ||
160 | void saveAttributes( QTextStream & TS ) ; | ||
161 | |||
162 | // return true if node isntance is NEW and not loaded | ||
163 | void setNew( bool IsN ) | ||
164 | { IsNew = IsN; } | ||
165 | bool isNew( void ) | ||
166 | { return IsNew; } | ||
167 | |||
168 | // return logical name of this instance | ||
169 | QString & nodeName( void ) | ||
170 | { return NodeName; } | ||
171 | void setNodeName( const QString & S ) | ||
172 | { NodeName = S; } | ||
173 | // return description for this instance | ||
174 | QString & description( void ) | ||
175 | { return Description; } | ||
176 | void setDescription( const QString & S ) | ||
177 | { Description = S; } | ||
178 | |||
179 | // pixmap for this instance -> from NetNode | ||
180 | const QString pixmapName( void ) | ||
181 | { return NodeType->pixmapName(); } | ||
182 | |||
183 | const char * provides( void ) | ||
184 | { return NodeType->provides(); } | ||
185 | |||
186 | const char ** needs( void ) | ||
187 | { return NodeType->needs(); } | ||
188 | |||
189 | // returns node specific data -> only useful for 'buddy' | ||
190 | virtual void * data( void ) = 0; | ||
191 | |||
192 | protected : | ||
193 | |||
194 | virtual void setSpecificAttribute( QString & , QString & ) = 0; | ||
195 | virtual void saveSpecificAttribute( QTextStream & ) = 0; | ||
196 | |||
197 | ANetNode * NodeType; | ||
198 | // connection to which this node belongs to | ||
199 | NodeCollection * Connection; | ||
200 | QString NodeName; | ||
201 | QString Description; | ||
202 | bool IsModified; | ||
203 | bool IsNew; | ||
204 | |||
205 | static long InstanceCounter; | ||
206 | }; | ||
207 | |||
208 | class RuntimeInfo : public QObject { | ||
209 | |||
210 | Q_OBJECT | ||
211 | |||
212 | public : | ||
213 | |||
214 | RuntimeInfo( ANetNodeInstance * TheNNI ) | ||
215 | { NNI = TheNNI; } | ||
216 | |||
217 | // downcast | ||
218 | AsDevice * asDevice( void ) | ||
219 | { return (AsDevice *)this; } | ||
220 | AsConnection * asConnection( void ) | ||
221 | { return (AsConnection *)this; } | ||
222 | AsLine * asLine( void ) | ||
223 | { return (AsLine *)this; } | ||
224 | AsFullSetup * asFullSetup( void ) | ||
225 | { return (AsFullSetup *)this; } | ||
226 | |||
227 | // does this node handles this interface e.g.eth0 | ||
228 | // recurse deeper if this node cannot answer that question | ||
229 | virtual bool handlesInterface( const QString & ) | ||
230 | { return 0; } | ||
231 | virtual InterfaceInfo * assignedInterface( void ); | ||
232 | virtual AsDevice * device( void ); | ||
233 | |||
234 | ANetNodeInstance * netNode() | ||
235 | { return NNI; } | ||
236 | NodeCollection * connection() | ||
237 | { return NNI->connection(); } | ||
238 | |||
239 | virtual void detectState( NodeCollection * NC ) = 0; | ||
240 | virtual bool setState( NodeCollection * NC, Action_t A ) = 0; | ||
241 | virtual bool canSetState( State_t Curr, Action_t A ) = 0; | ||
242 | |||
243 | signals : | ||
244 | |||
245 | // sent by device if state changes | ||
246 | void stateChanged( State_t S, ANetNodeInstance * NNI ); | ||
247 | |||
248 | protected : | ||
249 | |||
250 | // connection this runtime info belongs to | ||
251 | ANetNodeInstance * NNI; | ||
252 | }; | ||
253 | |||
254 | class NodeCollection : public QList<ANetNodeInstance> { | ||
255 | |||
256 | public : | ||
257 | |||
258 | NodeCollection( void ); | ||
259 | NodeCollection( QTextStream & TS ); | ||
260 | ~NodeCollection( void ); | ||
261 | |||
262 | int number( void ) | ||
263 | { return Number; } | ||
264 | void setNumber( int i ) | ||
265 | { Number = i; if( MaxNr < i ) MaxNr = i; } | ||
266 | bool isNew( void ) | ||
267 | { return IsNew; } | ||
268 | void setNew( bool N ) | ||
269 | { IsNew = N ; } | ||
270 | bool isModified( void ) | ||
271 | { return IsModified; } | ||
272 | void setModified( bool N ) | ||
273 | { IsModified = N ; } | ||
274 | |||
275 | bool handlesInterface( const QString & S ) { | ||
276 | return getToplevel()->runtime()->handlesInterface( S ); | ||
277 | } | ||
278 | |||
279 | InterfaceInfo * assignedInterface( void ) { | ||
280 | return getToplevel()->runtime()->assignedInterface(); | ||
281 | } | ||
282 | |||
283 | AsDevice * device() { | ||
284 | return getToplevel()->runtime()->device(); | ||
285 | } | ||
286 | |||
287 | State_t state( bool Update = 0 ) | ||
288 | { if( CurrentState == Unchecked || Update ) { | ||
289 | // need to get current state | ||
290 | getToplevel()->runtime()->detectState( this ); | ||
291 | } | ||
292 | return CurrentState; | ||
293 | } | ||
294 | |||
295 | // get the ixmap for this device | ||
296 | QPixmap devicePixmap( void ); | ||
297 | QPixmap statePixmap( State_t S ); | ||
298 | QPixmap statePixmap( bool Update = 0 ) | ||
299 | { return statePixmap( state(Update) ); } | ||
300 | QString stateName( State_t ); | ||
301 | QString stateName( bool Update = 0 ) | ||
302 | { return stateName( state(Update) ); } | ||
303 | |||
304 | bool setState( Action_t A ) | ||
305 | { return getToplevel()->runtime()->setState( this, A ); } | ||
306 | bool canSetState( Action_t A ) | ||
307 | { return getToplevel()->runtime()->canSetState( CurrentState, A ); } | ||
308 | |||
309 | void save( QTextStream & TS ); | ||
310 | |||
311 | void append( ANetNodeInstance * NNI ); | ||
312 | |||
313 | // makes sure that all items in the connection point to | ||
314 | // that connectoin | ||
315 | void reassign( void ); | ||
316 | |||
317 | ANetNodeInstance * getToplevel( void ); | ||
318 | ANetNodeInstance * findNext( ANetNodeInstance * NNI ); | ||
319 | ANetNodeInstance * findByName( const QString & S ); | ||
320 | |||
321 | const QString & name() | ||
322 | { return Name; } | ||
323 | |||
324 | const QString & description( void ); | ||
325 | |||
326 | void setName( const QString & N) | ||
327 | { Name = N; } | ||
328 | |||
329 | State_t currentState( void ) | ||
330 | { return CurrentState; } | ||
331 | void setCurrentState( State_t S ) | ||
332 | { CurrentState = S; } | ||
333 | |||
334 | long maxConnectionNumber( void ) | ||
335 | { return MaxNr; } | ||
336 | |||
337 | static void resetMaxNr( void ) | ||
338 | { MaxNr = -1; } | ||
339 | |||
340 | private : | ||
341 | |||
342 | int compareItems ( QCollection::Item item1, | ||
343 | QCollection::Item item2 ); | ||
344 | |||
345 | static long MaxNr; | ||
346 | long Number; | ||
347 | |||
348 | // state of this connection | ||
349 | State_t CurrentState; | ||
350 | |||
351 | QString Name; | ||
352 | // true if this collection was just created (and not | ||
353 | // loaded from file | ||
354 | bool IsNew; | ||
355 | // index in listbox | ||
356 | int Index; | ||
357 | bool IsModified; | ||
358 | |||
359 | }; | ||
360 | |||
361 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettings2/networksettings2.pro b/noncore/settings/networksettings2/networksettings2/networksettings2.pro new file mode 100644 index 0000000..c9945ff --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/networksettings2.pro | |||
@@ -0,0 +1,26 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG += qt warn_on release | ||
3 | #CONFIG += qt warn_on debug | ||
4 | DESTDIR = $(OPIEDIR)/lib$(PROJMAK) | ||
5 | HEADERS = netnode.h \ | ||
6 | resources.h \ | ||
7 | system.h \ | ||
8 | asline.h \ | ||
9 | GUIUtils.h \ | ||
10 | asconnection.h \ | ||
11 | asfullsetup.h \ | ||
12 | systemfile.h \ | ||
13 | asdevice.h | ||
14 | SOURCES = netnode.cpp \ | ||
15 | GUIUtils.cpp \ | ||
16 | system.cpp \ | ||
17 | systemfile.cpp \ | ||
18 | resources.cpp | ||
19 | INCLUDEPATH+= $(OPIEDIR)/include ../networksettings2 | ||
20 | DEPENDPATH+= $(OPIEDIR)/include | ||
21 | LIBS += -lqpe -lopie | ||
22 | INTERFACES= | ||
23 | TARGET = networksettings2 | ||
24 | VERSION = 1.0.0 | ||
25 | |||
26 | include ( $(OPIEDIR)/include.pro ) | ||
diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp new file mode 100644 index 0000000..ff6e457 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/resources.cpp | |||
@@ -0,0 +1,236 @@ | |||
1 | #include <qpixmap.h> | ||
2 | #include <qpe/qlibrary.h> | ||
3 | #include <qpe/qpeapplication.h> | ||
4 | #include <qdir.h> | ||
5 | #include <qtopia/resource.h> | ||
6 | |||
7 | #include "netnode.h" | ||
8 | #include "resources.h" | ||
9 | |||
10 | #define PLUGINDIR "plugins/networksettings2" | ||
11 | #define ICONDIR "/pics/networksettings2/" | ||
12 | |||
13 | // single resources instance | ||
14 | TheNSResources * _NSResources = 0; | ||
15 | |||
16 | TheNSResources::TheNSResources( void ) : NodeTypeNameMap(), | ||
17 | ConnectionsMap() { | ||
18 | |||
19 | _NSResources = this; | ||
20 | |||
21 | // load available netnodes | ||
22 | findAvailableNetNodes(QPEApplication::qpeDir() + PLUGINDIR ); | ||
23 | |||
24 | // compile provides and needs lists | ||
25 | { const char ** NeedsRun; | ||
26 | QDictIterator<NetNode_t> OuterIt( AllNodeTypes ); | ||
27 | bool Done; | ||
28 | |||
29 | for ( ; OuterIt.current(); ++OuterIt ) { | ||
30 | // find needs list | ||
31 | ANetNode::NetNodeList * NNLP = new ANetNode::NetNodeList; | ||
32 | ANetNode::NetNodeList & NNL = *(NNLP); | ||
33 | |||
34 | // must iterate this way to avoid duplication pointers | ||
35 | for ( QDictIterator<NetNode_t> InnerIt( AllNodeTypes ); | ||
36 | InnerIt.current(); ++InnerIt ) { | ||
37 | if( InnerIt.current() == OuterIt.current() ) | ||
38 | // avoid recursive | ||
39 | continue; | ||
40 | |||
41 | const char * Provides = InnerIt.current()->NetNode->provides(); | ||
42 | NeedsRun = OuterIt.current()->NetNode->needs(); | ||
43 | for( ; *NeedsRun; NeedsRun ++ ) { | ||
44 | if( strcmp( Provides, *NeedsRun ) == 0 ) { | ||
45 | // inner provides what outer needs | ||
46 | NNL.resize( NNL.size() + 1 ); | ||
47 | NNL[NNL.size()-1] = InnerIt.current()->NetNode; | ||
48 | Done = 1; // break from 2 loops | ||
49 | break; | ||
50 | } | ||
51 | } | ||
52 | } | ||
53 | OuterIt.current()->NetNode->setAlternatives( NNLP ); | ||
54 | } | ||
55 | } | ||
56 | |||
57 | // define Node types to Description map | ||
58 | NodeTypeNameMap.insert( "device", tr( "Network Device" ) ); | ||
59 | NodeTypeNameMap.insert( "line", tr( "Character device" ) ); | ||
60 | NodeTypeNameMap.insert( "connection", tr( "IP Connection" ) ); | ||
61 | NodeTypeNameMap.insert( "fullsetup", tr( "Connection Profile" ) ); | ||
62 | |||
63 | NodeTypeDescriptionMap.insert( "device", | ||
64 | tr( "<p>Devices that can handle IP packets</p>" ) ); | ||
65 | NodeTypeDescriptionMap.insert( "line", | ||
66 | tr( "<p>Devices that can handle single bytes</p>" ) ); | ||
67 | NodeTypeDescriptionMap.insert( "connection", | ||
68 | tr( "<p>Nodes that provide working IP connections</p>" ) ); | ||
69 | NodeTypeDescriptionMap.insert( "fullsetup", | ||
70 | tr( "<p>Fully configured connection profile</p>" ) ); | ||
71 | |||
72 | // define system files | ||
73 | addSystemFile( new SystemFile( "interfaces", "./interfaces" ) ); | ||
74 | |||
75 | // get access to the system | ||
76 | TheSystem = new System(); | ||
77 | } | ||
78 | |||
79 | TheNSResources::~TheNSResources( void ) { | ||
80 | delete TheSystem; | ||
81 | } | ||
82 | |||
83 | /** | ||
84 | * Load all modules that are found in the path | ||
85 | * @param path a directory that is scaned for any plugins that can be loaded | ||
86 | * and attempts to load them | ||
87 | */ | ||
88 | void TheNSResources::findAvailableNetNodes(const QString &path){ | ||
89 | |||
90 | QDir d(path); | ||
91 | if(!d.exists()) | ||
92 | return; | ||
93 | |||
94 | QString lang = ::getenv("LANG"); | ||
95 | |||
96 | // Don't want sym links | ||
97 | d.setFilter( QDir::Files | QDir::NoSymLinks ); | ||
98 | const QFileInfoList *list = d.entryInfoList(); | ||
99 | QFileInfoListIterator it( *list ); | ||
100 | QFileInfo *fi; | ||
101 | |||
102 | while ( (fi=it.current()) ) { | ||
103 | |||
104 | if( fi->fileName().contains(".so")){ | ||
105 | /* if loaded install translation */ | ||
106 | if( loadNetNode(path + "/" + fi->fileName()) ) { | ||
107 | QTranslator *trans = new QTranslator(qApp); | ||
108 | QString fn = QPEApplication::qpeDir()+ | ||
109 | "/i18n/"+lang+"/"+ | ||
110 | fi->fileName().left( fi->fileName().find(".") )+ | ||
111 | ".qm"; | ||
112 | |||
113 | if( trans->load( fn ) ) | ||
114 | qApp->installTranslator( trans ); | ||
115 | else | ||
116 | delete trans; | ||
117 | } | ||
118 | } | ||
119 | ++it; | ||
120 | } | ||
121 | } | ||
122 | |||
123 | /** | ||
124 | * Attempt to load a function and resolve a function. | ||
125 | * @param pluginFileName - the name of the file in which to attempt to load | ||
126 | * @param resolveString - function pointer to resolve | ||
127 | * @return true of loading is successful | ||
128 | */ | ||
129 | bool TheNSResources::loadNetNode( | ||
130 | const QString &pluginFileName, const QString &resolveString){ | ||
131 | |||
132 | QLibrary *lib = new QLibrary(pluginFileName); | ||
133 | void * res = lib->resolve(resolveString); | ||
134 | if( ! res ){ | ||
135 | #ifdef DEBUG | ||
136 | qDebug("loadNetNode: Warning: %s is not a plugin", pluginFileName.latin1()); | ||
137 | #endif | ||
138 | delete lib; | ||
139 | return 0; | ||
140 | } | ||
141 | |||
142 | GetNetNodeListFt_t getNetNodeList = (GetNetNodeListFt_t)res; | ||
143 | |||
144 | // Try to get an object. | ||
145 | QList<ANetNode> PNN; | ||
146 | |||
147 | getNetNodeList( PNN ); | ||
148 | if( PNN.isEmpty() ) { | ||
149 | #ifdef DEBUG | ||
150 | qDebug("loadNetNode: Couldn't get node list, but did load library!"); | ||
151 | #endif | ||
152 | delete lib; | ||
153 | return 0; | ||
154 | } | ||
155 | |||
156 | ANetNode * NNP; | ||
157 | for( QListIterator<ANetNode> it(PNN); | ||
158 | it.current(); | ||
159 | ++it ) { | ||
160 | NetNode_t * NN; | ||
161 | |||
162 | NNP = it.current(); | ||
163 | NN = new NetNode_t; | ||
164 | NN->NetNode = NNP; | ||
165 | NN->TheLibrary = lib; | ||
166 | NN->NodeCountInLib = PNN.count(); | ||
167 | |||
168 | // store mapping | ||
169 | AllNodeTypes.insert( NN->NetNode->nodeName(), NN ); | ||
170 | } | ||
171 | |||
172 | return 1; | ||
173 | } | ||
174 | |||
175 | QPixmap TheNSResources::getPixmap( const QString & QS ) { | ||
176 | return Resource::loadPixmap( QString("networksettings2")+QS ); | ||
177 | } | ||
178 | |||
179 | QString TheNSResources::tr( const char * s ) { | ||
180 | return qApp->translate( "resource", s ); | ||
181 | } | ||
182 | |||
183 | const QString & TheNSResources::netNode2Name( const char * s ) { | ||
184 | return NodeTypeNameMap[s]; | ||
185 | } | ||
186 | |||
187 | const QString & TheNSResources::netNode2Description( const char * s ) { | ||
188 | return NodeTypeDescriptionMap[s]; | ||
189 | } | ||
190 | |||
191 | void TheNSResources::addConnection( NodeCollection * NC ) { | ||
192 | ANetNodeInstance * NNI; | ||
193 | ConnectionsMap.insert( NC->name(), NC ); | ||
194 | // add (new) nodes to NodeList | ||
195 | for( QListIterator<ANetNodeInstance> it(*NC); | ||
196 | it.current(); | ||
197 | ++it ) { | ||
198 | NNI = it.current(); | ||
199 | if( findNodeInstance( NNI->nodeName() ) == 0 ) { | ||
200 | // new item | ||
201 | addNodeInstance( NNI ); | ||
202 | } | ||
203 | } | ||
204 | } | ||
205 | |||
206 | void TheNSResources::removeConnection( const QString & N ) { | ||
207 | NodeCollection * NC = findConnection( N ); | ||
208 | if( ! NC ) | ||
209 | return; | ||
210 | |||
211 | // delete netnodes in this connection | ||
212 | ANetNodeInstance * NNI; | ||
213 | for( NNI = NC->first(); NNI != 0; NNI = NC->next() ) { | ||
214 | removeNodeInstance( NNI->nodeName() ); | ||
215 | } | ||
216 | ConnectionsMap.remove( N ); | ||
217 | } | ||
218 | |||
219 | NodeCollection * TheNSResources::findConnection( const QString & S ) { | ||
220 | return ConnectionsMap[ S ]; | ||
221 | } | ||
222 | |||
223 | void TheNSResources::renumberConnections( void ) { | ||
224 | Name2Connection_t & M = NSResources->connections(); | ||
225 | NodeCollection * NC; | ||
226 | |||
227 | // for all connections | ||
228 | NodeCollection::resetMaxNr(); | ||
229 | for( QDictIterator<NodeCollection> it(M); | ||
230 | it.current(); | ||
231 | ++it ) { | ||
232 | NC = it.current(); | ||
233 | NC->setNumber( NC->maxConnectionNumber()+1 ); | ||
234 | NC->setModified( 1 ); | ||
235 | } | ||
236 | } | ||
diff --git a/noncore/settings/networksettings2/networksettings2/resources.h b/noncore/settings/networksettings2/networksettings2/resources.h new file mode 100644 index 0000000..cfa0b7a --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/resources.h | |||
@@ -0,0 +1,105 @@ | |||
1 | #ifndef __RESOURCES__H | ||
2 | #define __RESOURCES__H | ||
3 | |||
4 | #include <qstring.h> | ||
5 | #include <qdict.h> | ||
6 | #include <qmap.h> | ||
7 | #include <qlist.h> | ||
8 | #include "netnode.h" | ||
9 | #include "systemfile.h" | ||
10 | #include "system.h" | ||
11 | |||
12 | class QLibrary; | ||
13 | class QPixmap; | ||
14 | class ANetNode; | ||
15 | class ANetNodeInstance; | ||
16 | |||
17 | typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN ); | ||
18 | |||
19 | typedef struct NetNode_S { | ||
20 | ANetNode * NetNode; | ||
21 | QLibrary * TheLibrary; | ||
22 | long NodeCountInLib; | ||
23 | } NetNode_t; | ||
24 | |||
25 | typedef QDict<NetNode_t> Name2NetNode_t; | ||
26 | typedef QDict<ANetNodeInstance > Name2Instance_t; | ||
27 | typedef QDict<NodeCollection> Name2Connection_t; | ||
28 | typedef QDict<SystemFile> Name2SystemFile_t; | ||
29 | |||
30 | class TheNSResources { | ||
31 | |||
32 | public : | ||
33 | |||
34 | TheNSResources( void ); | ||
35 | ~TheNSResources( ); | ||
36 | |||
37 | System & system() | ||
38 | { return *TheSystem; } | ||
39 | |||
40 | QPixmap getPixmap( const QString & Name ); | ||
41 | |||
42 | Name2NetNode_t & netNodes( void ) | ||
43 | { return AllNodeTypes; } | ||
44 | bool netNodeExists( const QString & X ) | ||
45 | { return AllNodeTypes.find(X)!=0; } | ||
46 | |||
47 | Name2SystemFile_t & systemFiles( void ) | ||
48 | { return SystemFiles; } | ||
49 | void addSystemFile( SystemFile * SF ) | ||
50 | { SystemFiles.insert( SF->name(), SF ); } | ||
51 | |||
52 | ANetNodeInstance * createNodeInstance( const QString & S ) | ||
53 | { ANetNodeInstance * NNI = 0; | ||
54 | NetNode_t * NNT = AllNodeTypes[S]; | ||
55 | if( NNT ) { | ||
56 | NNI = NNT->NetNode->createInstance(); | ||
57 | NNI->initialize(); | ||
58 | } | ||
59 | return NNI; | ||
60 | } | ||
61 | |||
62 | Name2Instance_t & netNodeInstances( void ) | ||
63 | { return AllNodes; } | ||
64 | void addNodeInstance( ANetNodeInstance * I ) | ||
65 | { AllNodes.insert( I->nodeName(), I ); } | ||
66 | void removeNodeInstance( const QString & N ) | ||
67 | { AllNodes.remove( N );} | ||
68 | ANetNodeInstance * findNodeInstance( const QString & S ) | ||
69 | { return (AllNodes.find(S)!=0) ? AllNodes[S] : 0; } | ||
70 | |||
71 | const QString & netNode2Name( const char * Type ); | ||
72 | const QString & netNode2Description( const char * Type ); | ||
73 | |||
74 | void renumberConnections( void ); | ||
75 | void addConnection( NodeCollection * NC ); | ||
76 | void removeConnection( const QString & N ); | ||
77 | NodeCollection * findConnection( const QString & N ); | ||
78 | Name2Connection_t & connections( void ) | ||
79 | { return ConnectionsMap; } | ||
80 | |||
81 | private : | ||
82 | |||
83 | QString tr( const char * path ); | ||
84 | void findAvailableNetNodes( const QString &path ); | ||
85 | bool loadNetNode( | ||
86 | const QString &pluginFileName, | ||
87 | const QString &resolveString = "create_plugin"); | ||
88 | |||
89 | QMap< QString, QString> NodeTypeNameMap; | ||
90 | QMap< QString, QString> NodeTypeDescriptionMap; | ||
91 | Name2Connection_t ConnectionsMap; | ||
92 | System * TheSystem; | ||
93 | Name2SystemFile_t SystemFiles; | ||
94 | |||
95 | // all node type classes | ||
96 | Name2NetNode_t AllNodeTypes; | ||
97 | |||
98 | // all nodes | ||
99 | Name2Instance_t AllNodes; | ||
100 | }; | ||
101 | |||
102 | extern TheNSResources * _NSResources; | ||
103 | #define NSResources _NSResources | ||
104 | |||
105 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettings2/system.cpp b/noncore/settings/networksettings2/networksettings2/system.cpp new file mode 100644 index 0000000..99f642e --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/system.cpp | |||
@@ -0,0 +1,318 @@ | |||
1 | #include <stdlib.h> | ||
2 | #include <sys/types.h> | ||
3 | #include <sys/wait.h> | ||
4 | #include <qfile.h> | ||
5 | #include <qtextstream.h> | ||
6 | #include <net/if.h> | ||
7 | #include <net/if_arp.h> | ||
8 | #include <netinet/in.h> | ||
9 | #include <arpa/inet.h> | ||
10 | #include <sys/ioctl.h> | ||
11 | #include <sys/socket.h> | ||
12 | |||
13 | #include "resources.h" | ||
14 | #include "system.h" | ||
15 | |||
16 | #define PROCNETDEV "/proc/net/dev" | ||
17 | |||
18 | static char Dig2Hex[] = { | ||
19 | '0', '1', '2', '3', | ||
20 | '4', '5', '6', '7', | ||
21 | '8', '9', 'A', 'B', | ||
22 | 'C', 'D', 'E', 'F' | ||
23 | }; | ||
24 | |||
25 | // get HIGH nibble of byte | ||
26 | #define HN(x) Dig2Hex[(((x)&0xf0)>>4)] | ||
27 | // get LOW nibble of byte | ||
28 | #define LN(x) Dig2Hex[((x)&0x0f)] | ||
29 | |||
30 | System::System( void ) : ProbedInterfaces() { | ||
31 | probeInterfaces(); | ||
32 | } | ||
33 | |||
34 | System::~System( void ) { | ||
35 | if( ProcDevNet ) | ||
36 | delete ProcDevNet; | ||
37 | } | ||
38 | |||
39 | int System::execute( const QString & S ) { | ||
40 | QString MyS = S; | ||
41 | int rv; | ||
42 | |||
43 | if( S.isEmpty() ) { | ||
44 | // loophole to start shell | ||
45 | return 8888; | ||
46 | } | ||
47 | if( getenv("USER") != "root" ) { | ||
48 | // use SUDO | ||
49 | MyS.prepend( "sudo " ); | ||
50 | } | ||
51 | |||
52 | fprintf( stderr, "Executing %s\n", MyS.latin1() ); | ||
53 | |||
54 | rv = system( MyS.latin1() ) ; | ||
55 | switch( rv ) { | ||
56 | case -1 : | ||
57 | // cannot fork | ||
58 | return 1; | ||
59 | case 127 : | ||
60 | // cannot start shell | ||
61 | return 2; | ||
62 | default : | ||
63 | if( WEXITSTATUS(rv) != 0 ) { | ||
64 | // error in command | ||
65 | return 3; | ||
66 | } | ||
67 | } | ||
68 | // all is fine | ||
69 | return 0; | ||
70 | } | ||
71 | |||
72 | void System::refreshStatistics( InterfaceInfo & I ) { | ||
73 | if( ! ProcDevNet ) { | ||
74 | return; | ||
75 | } | ||
76 | // cannot seek on dev | ||
77 | ProcDevNet->close(); | ||
78 | ProcDevNet->open( IO_ReadOnly ); | ||
79 | |||
80 | QString line; | ||
81 | QTextStream procTs(ProcDevNet); | ||
82 | QStringList SL; | ||
83 | int loc = -1; | ||
84 | int version; | ||
85 | |||
86 | procTs.readLine(); | ||
87 | line = procTs.readLine(); | ||
88 | // get version | ||
89 | if( line.find("compressed") ) | ||
90 | version = 3; | ||
91 | else if( line.find( "bytes" ) ) | ||
92 | version = 2; | ||
93 | else | ||
94 | version = 1; | ||
95 | while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { | ||
96 | if( (loc = line.find(":") ) == -1) { | ||
97 | continue; | ||
98 | } | ||
99 | |||
100 | if( I.Name != line.left(loc) ) | ||
101 | continue; | ||
102 | |||
103 | // tokenize | ||
104 | SL = QStringList::split( ' ', line, FALSE ); | ||
105 | |||
106 | // update data | ||
107 | switch( version ) { | ||
108 | case 1 : | ||
109 | I.RcvBytes = SL[1]; | ||
110 | I.RcvErrors = SL[3]; | ||
111 | I.RcvDropped = SL[4]; | ||
112 | I.SndBytes = SL[6]; | ||
113 | I.SndErrors = SL[8]; | ||
114 | I.SndDropped = SL[9]; | ||
115 | I.Collisions = SL[11]; | ||
116 | break; | ||
117 | case 2 : | ||
118 | I.RcvBytes = SL[1]; | ||
119 | I.RcvErrors = SL[3]; | ||
120 | I.RcvDropped = SL[4]; | ||
121 | I.SndBytes = SL[7]; | ||
122 | I.SndErrors = SL[9]; | ||
123 | I.SndDropped = SL[10]; | ||
124 | I.Collisions = SL[12]; | ||
125 | break; | ||
126 | case 3 : | ||
127 | I.RcvBytes = SL[1]; | ||
128 | I.RcvErrors = SL[3]; | ||
129 | I.RcvDropped = SL[4]; | ||
130 | I.SndBytes = SL[9]; | ||
131 | I.SndErrors = SL[11]; | ||
132 | I.SndDropped = SL[12]; | ||
133 | I.Collisions = SL[14]; | ||
134 | break; | ||
135 | } | ||
136 | break; | ||
137 | } | ||
138 | } | ||
139 | |||
140 | // | ||
141 | // THIS UPDATES THE LIST -> INTERFACES ARE NOT DELETED BUT | ||
142 | // FLAGGED AS ! 'IsUp' IF NO LONGER PRESENT | ||
143 | // | ||
144 | |||
145 | void System::probeInterfaces( void ) { | ||
146 | |||
147 | // probe interfaces | ||
148 | int sockfd; | ||
149 | // get list of all interfaces | ||
150 | struct ifreq ifrs; | ||
151 | InterfaceInfo * IFI; | ||
152 | |||
153 | // flag all as 'down' | ||
154 | for( QDictIterator<InterfaceInfo> it( ProbedInterfaces ); | ||
155 | it.current(); | ||
156 | ++it ) { | ||
157 | it.current()->IsUp = 0; | ||
158 | } | ||
159 | |||
160 | sockfd = socket(PF_INET, SOCK_DGRAM, 0); | ||
161 | if(sockfd == -1) | ||
162 | return; | ||
163 | |||
164 | // read interfaces from /proc/dev/net | ||
165 | // SIOCGIFCONF does not return ALL interfaces ???!? | ||
166 | ProcDevNet = new QFile(PROCNETDEV); | ||
167 | if( ! ProcDevNet->open(IO_ReadOnly) ) { | ||
168 | delete ProcDevNet; | ||
169 | ProcDevNet =0; | ||
170 | return; | ||
171 | } | ||
172 | |||
173 | QString line; | ||
174 | QString NicName; | ||
175 | QTextStream procTs(ProcDevNet); | ||
176 | int loc = -1; | ||
177 | |||
178 | procTs.readLine(); // eat a line | ||
179 | procTs.readLine(); // eat a line | ||
180 | while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { | ||
181 | if((loc = line.find(":")) == -1) { | ||
182 | continue; | ||
183 | } | ||
184 | |||
185 | NicName = line.left(loc); | ||
186 | |||
187 | // set name for ioctl | ||
188 | strcpy( ifrs.ifr_name, NicName.latin1() ); | ||
189 | |||
190 | if ( ! ( IFI = ProbedInterfaces.find( NicName ) ) ) { | ||
191 | // new nic | ||
192 | fprintf( stderr, "NEWNIC %s\n", NicName.latin1()); | ||
193 | IFI = new InterfaceInfo; | ||
194 | IFI->Name = line.left(loc); | ||
195 | IFI->NetNode = 0; | ||
196 | ProbedInterfaces.insert( IFI->Name, IFI ); | ||
197 | |||
198 | // get dynamic info | ||
199 | if( ioctl(sockfd, SIOCGIFFLAGS, &ifrs) >= 0 ) { | ||
200 | IFI->IsPointToPoint = ((ifrs.ifr_flags & IFF_POINTOPOINT) == IFF_POINTOPOINT); | ||
201 | } else { | ||
202 | IFI->IsPointToPoint = 0; | ||
203 | } | ||
204 | |||
205 | // settings that never change | ||
206 | IFI->DstAddress = ""; | ||
207 | |||
208 | if( IFI->IsPointToPoint ) { | ||
209 | if( ioctl(sockfd, SIOCGIFDSTADDR, &ifrs) >= 0 ) { | ||
210 | IFI->DstAddress = | ||
211 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_dstaddr)->sin_addr); | ||
212 | } | ||
213 | } | ||
214 | |||
215 | IFI->CardType = 999999; | ||
216 | IFI->MACAddress = ""; | ||
217 | |||
218 | if( ioctl(sockfd, SIOCGIFHWADDR, &ifrs) >= 0 ) { | ||
219 | fprintf( stderr, "%s = %d\n", IFI->Name.latin1(), | ||
220 | ifrs.ifr_hwaddr.sa_family ); | ||
221 | |||
222 | IFI->CardType = ifrs.ifr_hwaddr.sa_family; | ||
223 | switch( ifrs.ifr_hwaddr.sa_family ) { | ||
224 | case ARPHRD_ETHER : // regular MAC address | ||
225 | // valid address -> convert to regular ::: format | ||
226 | // length = 6 bytes = 12 DIGITS -> 6 : | ||
227 | IFI->MACAddress.sprintf( | ||
228 | "%c%c:%c%c:%c%c:%c%c:%c%c:%c%c", | ||
229 | HN( ifrs.ifr_hwaddr.sa_data[0] ), | ||
230 | LN( ifrs.ifr_hwaddr.sa_data[0] ), | ||
231 | HN( ifrs.ifr_hwaddr.sa_data[1] ), | ||
232 | LN( ifrs.ifr_hwaddr.sa_data[1] ), | ||
233 | HN( ifrs.ifr_hwaddr.sa_data[2] ), | ||
234 | LN( ifrs.ifr_hwaddr.sa_data[2] ), | ||
235 | HN( ifrs.ifr_hwaddr.sa_data[3] ), | ||
236 | LN( ifrs.ifr_hwaddr.sa_data[3] ), | ||
237 | HN( ifrs.ifr_hwaddr.sa_data[4] ), | ||
238 | LN( ifrs.ifr_hwaddr.sa_data[4] ), | ||
239 | HN( ifrs.ifr_hwaddr.sa_data[5] ), | ||
240 | LN( ifrs.ifr_hwaddr.sa_data[5] ) | ||
241 | ); | ||
242 | break; | ||
243 | #ifdef ARPHRD_IEEE1394 | ||
244 | case ARPHRD_IEEE1394 : // Firewire Eth address | ||
245 | IFI->MACAddress.sprintf( | ||
246 | "%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-00-00", | ||
247 | HN( ifrs.ifr_hwaddr.sa_data[0] ), | ||
248 | LN( ifrs.ifr_hwaddr.sa_data[0] ), | ||
249 | HN( ifrs.ifr_hwaddr.sa_data[1] ), | ||
250 | LN( ifrs.ifr_hwaddr.sa_data[1] ), | ||
251 | HN( ifrs.ifr_hwaddr.sa_data[2] ), | ||
252 | LN( ifrs.ifr_hwaddr.sa_data[2] ), | ||
253 | HN( ifrs.ifr_hwaddr.sa_data[3] ), | ||
254 | LN( ifrs.ifr_hwaddr.sa_data[3] ), | ||
255 | HN( ifrs.ifr_hwaddr.sa_data[4] ), | ||
256 | LN( ifrs.ifr_hwaddr.sa_data[4] ), | ||
257 | HN( ifrs.ifr_hwaddr.sa_data[5] ), | ||
258 | LN( ifrs.ifr_hwaddr.sa_data[5] ), | ||
259 | HN( ifrs.ifr_hwaddr.sa_data[6] ), | ||
260 | LN( ifrs.ifr_hwaddr.sa_data[6] ), | ||
261 | HN( ifrs.ifr_hwaddr.sa_data[7] ), | ||
262 | LN( ifrs.ifr_hwaddr.sa_data[7] ), | ||
263 | HN( ifrs.ifr_hwaddr.sa_data[8] ), | ||
264 | LN( ifrs.ifr_hwaddr.sa_data[8] ), | ||
265 | HN( ifrs.ifr_hwaddr.sa_data[9] ), | ||
266 | LN( ifrs.ifr_hwaddr.sa_data[9] ), | ||
267 | HN( ifrs.ifr_hwaddr.sa_data[10] ), | ||
268 | LN( ifrs.ifr_hwaddr.sa_data[10] ), | ||
269 | HN( ifrs.ifr_hwaddr.sa_data[11] ), | ||
270 | LN( ifrs.ifr_hwaddr.sa_data[11] ), | ||
271 | HN( ifrs.ifr_hwaddr.sa_data[12] ), | ||
272 | LN( ifrs.ifr_hwaddr.sa_data[12] ), | ||
273 | HN( ifrs.ifr_hwaddr.sa_data[13] ), | ||
274 | LN( ifrs.ifr_hwaddr.sa_data[13] ) | ||
275 | ); | ||
276 | break; | ||
277 | #endif | ||
278 | case ARPHRD_PPP : // PPP | ||
279 | break; | ||
280 | case ARPHRD_IEEE80211 : // WLAN | ||
281 | break; | ||
282 | case ARPHRD_IRDA : // IRDA | ||
283 | break; | ||
284 | } | ||
285 | } | ||
286 | } else // else already probed before -> just update | ||
287 | fprintf( stderr, "OLDNIC %s\n", NicName.latin1()); | ||
288 | |||
289 | // get dynamic info | ||
290 | if( ioctl(sockfd, SIOCGIFFLAGS, &ifrs) >= 0 ) { | ||
291 | IFI->IsUp = ((ifrs.ifr_flags & IFF_UP) == IFF_UP); | ||
292 | IFI->HasMulticast = ((ifrs.ifr_flags & IFF_MULTICAST) == IFF_MULTICAST); | ||
293 | } else { | ||
294 | IFI->IsUp = 0; | ||
295 | IFI->HasMulticast = 0; | ||
296 | } | ||
297 | |||
298 | if( ioctl(sockfd, SIOCGIFADDR, &ifrs) >= 0 ) { | ||
299 | IFI->Address = | ||
300 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_addr)->sin_addr); | ||
301 | } else { | ||
302 | IFI->Address = ""; | ||
303 | IFI->IsUp = 0; | ||
304 | } | ||
305 | if( ioctl(sockfd, SIOCGIFBRDADDR, &ifrs) >= 0 ) { | ||
306 | IFI->BCastAddress = | ||
307 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_broadaddr)->sin_addr); | ||
308 | } else { | ||
309 | IFI->BCastAddress = ""; | ||
310 | } | ||
311 | if( ioctl(sockfd, SIOCGIFNETMASK, &ifrs) >= 0 ) { | ||
312 | IFI->Netmask = | ||
313 | inet_ntoa(((struct sockaddr_in*)&ifrs.ifr_netmask)->sin_addr); | ||
314 | } else { | ||
315 | IFI->Netmask = ""; | ||
316 | } | ||
317 | } | ||
318 | } | ||
diff --git a/noncore/settings/networksettings2/networksettings2/system.h b/noncore/settings/networksettings2/networksettings2/system.h new file mode 100644 index 0000000..f89fe5d --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/system.h | |||
@@ -0,0 +1,76 @@ | |||
1 | #ifndef __SYSTEM__H | ||
2 | #define __SYSTEM__H | ||
3 | |||
4 | // for hardware types | ||
5 | #include <net/if_arp.h> | ||
6 | #include <qdict.h> | ||
7 | |||
8 | class ANetNodeInstance; | ||
9 | class QFile; | ||
10 | |||
11 | class InterfaceInfo { | ||
12 | |||
13 | public : | ||
14 | |||
15 | InterfaceInfo() : | ||
16 | Name(), | ||
17 | MACAddress(), | ||
18 | BCastAddress(), | ||
19 | Netmask(), | ||
20 | DstAddress() { | ||
21 | } | ||
22 | |||
23 | ANetNodeInstance * assignedNode() | ||
24 | { return NetNode; } | ||
25 | |||
26 | void assignNode( ANetNodeInstance * NNI ) | ||
27 | { NetNode = NNI; } | ||
28 | |||
29 | ANetNodeInstance * NetNode; // netnode taking care of me | ||
30 | QString Name; // name of interface | ||
31 | int CardType; // type of card | ||
32 | QString MACAddress; // MAC address | ||
33 | QString Address; // IP Address | ||
34 | QString BCastAddress; // Broadcast Address | ||
35 | QString Netmask; // Netmask | ||
36 | QString DstAddress; // Peer address (if P-t-P) | ||
37 | bool IsUp; // interface is UP | ||
38 | bool HasMulticast; // Supports Multicast | ||
39 | bool IsPointToPoint; // IsPointToPoint card | ||
40 | |||
41 | QString RcvBytes; | ||
42 | QString SndBytes; | ||
43 | QString RcvErrors; | ||
44 | QString SndErrors; | ||
45 | QString RcvDropped; | ||
46 | QString SndDropped; | ||
47 | QString Collisions; | ||
48 | }; | ||
49 | |||
50 | class System { | ||
51 | |||
52 | public : | ||
53 | |||
54 | System( void ); | ||
55 | ~System( void ); | ||
56 | |||
57 | QDict<InterfaceInfo> & interfaces( void ) | ||
58 | { return ProbedInterfaces; } | ||
59 | InterfaceInfo * interface( const QString& N ) | ||
60 | { return ProbedInterfaces[N]; } | ||
61 | |||
62 | int execute( const QString & S ); | ||
63 | // refresh stats for this interface | ||
64 | void refreshStatistics( InterfaceInfo & ); | ||
65 | |||
66 | // reloads interfaces | ||
67 | void probeInterfaces( void ); | ||
68 | |||
69 | private : | ||
70 | |||
71 | QDict<InterfaceInfo> ProbedInterfaces; | ||
72 | QFile * ProcDevNet; | ||
73 | |||
74 | }; | ||
75 | |||
76 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettings2/systemfile.cpp b/noncore/settings/networksettings2/networksettings2/systemfile.cpp new file mode 100644 index 0000000..7249976 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/systemfile.cpp | |||
@@ -0,0 +1,144 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <qpe/qpeapplication.h> | ||
3 | #include <qfileinfo.h> | ||
4 | #include <qmessagebox.h> | ||
5 | #include <qfile.h> | ||
6 | #include <qtextstream.h> | ||
7 | |||
8 | #include "resources.h" | ||
9 | #include "systemfile.h" | ||
10 | |||
11 | #define TEMPLATEDIR "networktemplates/" | ||
12 | QString TemplDir; | ||
13 | |||
14 | SystemFile::SystemFile( const QString & N, const QString & P ){ | ||
15 | Name = N; | ||
16 | Path = P; | ||
17 | F = 0; | ||
18 | // get template info | ||
19 | { QString S; | ||
20 | QFileInfo FI; | ||
21 | |||
22 | // find location of templates | ||
23 | TemplDir = QPEApplication::qpeDir() + "etc/" + TEMPLATEDIR; | ||
24 | FI.setFile( TemplDir ); | ||
25 | if( ! FI.isDir() ) { | ||
26 | // try current dir | ||
27 | TemplDir = "./" TEMPLATEDIR; | ||
28 | FI.setFile( TemplDir ); | ||
29 | if( ! FI.isDir() ) { | ||
30 | hasPreSection = | ||
31 | hasPostSection = | ||
32 | hasPreNodeSection = | ||
33 | hasPostNodeSection = 0; | ||
34 | return; | ||
35 | } | ||
36 | } | ||
37 | |||
38 | // have found location | ||
39 | S = TemplDir + Name + "/presection"; | ||
40 | FI.setFile( S ); | ||
41 | hasPreSection = ( FI.exists() && FI.isReadable() ); | ||
42 | S = TemplDir + Name + "/postsection"; | ||
43 | FI.setFile( S ); | ||
44 | hasPostSection = ( FI.exists() && FI.isReadable() ); | ||
45 | S = TemplDir + Name + "/prenodesection"; | ||
46 | FI.setFile( S ); | ||
47 | hasPreNodeSection = ( FI.exists() && FI.isReadable() ); | ||
48 | S = TemplDir + Name + "/postnodesection"; | ||
49 | FI.setFile( S ); | ||
50 | hasPostNodeSection = ( FI.exists() && FI.isReadable() ); | ||
51 | } | ||
52 | } | ||
53 | |||
54 | SystemFile::~SystemFile( void ) { | ||
55 | if( F ) | ||
56 | delete F; | ||
57 | } | ||
58 | |||
59 | bool SystemFile::open( void ) { | ||
60 | if( F ) { | ||
61 | F->close(); | ||
62 | delete F; | ||
63 | } | ||
64 | |||
65 | F = new QFile( Path + "bup" ); | ||
66 | if( ! F->open( IO_WriteOnly ) ) { | ||
67 | return 0; | ||
68 | } | ||
69 | setDevice( F ); | ||
70 | return 1; | ||
71 | } | ||
72 | |||
73 | bool SystemFile::close( void ) { | ||
74 | if( ! F ) { | ||
75 | return 1 ; | ||
76 | } | ||
77 | |||
78 | QString OldP = Path + "bup"; | ||
79 | |||
80 | F->close(); | ||
81 | delete F; | ||
82 | F = 0; | ||
83 | |||
84 | return ( rename( OldP.latin1(), Path.latin1() ) >= 0 ); | ||
85 | } | ||
86 | |||
87 | bool SystemFile::preSection( void ) { | ||
88 | if( hasPreSection ) { | ||
89 | QFile Fl( TemplDir + Name + "/presection" ); | ||
90 | if( ! Fl.open( IO_ReadOnly ) ) | ||
91 | return 1; // error | ||
92 | // copy file to this file | ||
93 | F->writeBlock( Fl.readAll() ); | ||
94 | } | ||
95 | return 0; | ||
96 | } | ||
97 | |||
98 | bool SystemFile::postSection( void ) { | ||
99 | if( hasPostSection ) { | ||
100 | QFile Fl( TemplDir + Name + "/postsection" ); | ||
101 | if( ! Fl.open( IO_ReadOnly ) ) | ||
102 | return 1; // error | ||
103 | // copy file to this file | ||
104 | F->writeBlock( Fl.readAll() ); | ||
105 | } | ||
106 | return 0; | ||
107 | } | ||
108 | |||
109 | bool SystemFile::preNodeSection( ANetNodeInstance * NNI, long ) { | ||
110 | if( hasPreNodeSection ) { | ||
111 | QFile Fl( TemplDir + Name + "/prenodesectoin" ); | ||
112 | if( ! Fl.open( IO_ReadOnly ) ) | ||
113 | return 1; // error | ||
114 | QTextStream TX( &Fl ); | ||
115 | QString Out; | ||
116 | QString S = TX.readLine(); | ||
117 | while( ! TX.eof() ) { | ||
118 | Out = S. | ||
119 | arg(NNI->netNode()->nodeName()); | ||
120 | (*this) << Out << endl; | ||
121 | S = TX.readLine(); | ||
122 | } | ||
123 | } | ||
124 | return 0; | ||
125 | } | ||
126 | |||
127 | bool SystemFile::postNodeSection( ANetNodeInstance * NNI, long DevNr ) { | ||
128 | if( hasPostNodeSection ) { | ||
129 | QFile Fl( TemplDir + Name + "/postnodesectoin" ); | ||
130 | if( ! Fl.open( IO_ReadOnly ) ) | ||
131 | return 1; // error | ||
132 | QTextStream TX( &Fl ); | ||
133 | QString Out; | ||
134 | QString S = TX.readLine(); | ||
135 | while( ! TX.eof() ) { | ||
136 | Out = S. | ||
137 | arg(NNI->nodeName()); | ||
138 | (*this) << Out << endl; | ||
139 | S = TX.readLine(); | ||
140 | } | ||
141 | } | ||
142 | return 0; | ||
143 | } | ||
144 | |||
diff --git a/noncore/settings/networksettings2/networksettings2/systemfile.h b/noncore/settings/networksettings2/networksettings2/systemfile.h new file mode 100644 index 0000000..8b6bcb9 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/systemfile.h | |||
@@ -0,0 +1,39 @@ | |||
1 | #ifndef __SYSTEMFILE__H | ||
2 | #define __SYSTEMFILE__H | ||
3 | |||
4 | #include <qstring.h> | ||
5 | #include <qtextstream.h> | ||
6 | |||
7 | class QFile; | ||
8 | class ANetNodeInstance; | ||
9 | |||
10 | class SystemFile : public QTextStream { | ||
11 | |||
12 | public : | ||
13 | |||
14 | SystemFile( const QString & Name, const QString & Path ); | ||
15 | ~SystemFile( void ); | ||
16 | |||
17 | const QString & name( void ) | ||
18 | { return Name; } | ||
19 | |||
20 | bool open( void ); | ||
21 | bool close( void ); | ||
22 | |||
23 | bool preSection( void ); | ||
24 | bool postSection( void ); | ||
25 | bool preNodeSection( ANetNodeInstance * NNI, long DevNr ); | ||
26 | bool postNodeSection( ANetNodeInstance * NNI, long DevNr ); | ||
27 | |||
28 | private : | ||
29 | |||
30 | QString Name; | ||
31 | QString Path; | ||
32 | QFile * F; | ||
33 | bool hasPreSection; | ||
34 | bool hasPreNodeSection; | ||
35 | bool hasPostSection; | ||
36 | bool hasPostNodeSection; | ||
37 | |||
38 | }; | ||
39 | #endif | ||
diff --git a/noncore/settings/networksettings2/networksettingsGUI.ui b/noncore/settings/networksettings2/networksettingsGUI.ui new file mode 100644 index 0000000..d457c35 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettingsGUI.ui | |||
@@ -0,0 +1,598 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>NetworkSettingsGUI</class> | ||
3 | <widget> | ||
4 | <class>QWidget</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>NetworkSettingsGUI</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>403</width> | ||
15 | <height>502</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>caption</name> | ||
20 | <string>Network Settings</string> | ||
21 | </property> | ||
22 | <property> | ||
23 | <name>layoutMargin</name> | ||
24 | </property> | ||
25 | <property> | ||
26 | <name>layoutSpacing</name> | ||
27 | </property> | ||
28 | <vbox> | ||
29 | <property stdset="1"> | ||
30 | <name>margin</name> | ||
31 | <number>0</number> | ||
32 | </property> | ||
33 | <property stdset="1"> | ||
34 | <name>spacing</name> | ||
35 | <number>2</number> | ||
36 | </property> | ||
37 | <widget> | ||
38 | <class>QFrame</class> | ||
39 | <property stdset="1"> | ||
40 | <name>name</name> | ||
41 | <cstring>Frame4</cstring> | ||
42 | </property> | ||
43 | <property stdset="1"> | ||
44 | <name>sizePolicy</name> | ||
45 | <sizepolicy> | ||
46 | <hsizetype>7</hsizetype> | ||
47 | <vsizetype>0</vsizetype> | ||
48 | </sizepolicy> | ||
49 | </property> | ||
50 | <property stdset="1"> | ||
51 | <name>frameShape</name> | ||
52 | <enum>NoFrame</enum> | ||
53 | </property> | ||
54 | <property stdset="1"> | ||
55 | <name>frameShadow</name> | ||
56 | <enum>Raised</enum> | ||
57 | </property> | ||
58 | <property> | ||
59 | <name>layoutMargin</name> | ||
60 | </property> | ||
61 | <property> | ||
62 | <name>layoutSpacing</name> | ||
63 | </property> | ||
64 | <hbox> | ||
65 | <property stdset="1"> | ||
66 | <name>margin</name> | ||
67 | <number>0</number> | ||
68 | </property> | ||
69 | <property stdset="1"> | ||
70 | <name>spacing</name> | ||
71 | <number>1</number> | ||
72 | </property> | ||
73 | <widget> | ||
74 | <class>QToolButton</class> | ||
75 | <property stdset="1"> | ||
76 | <name>name</name> | ||
77 | <cstring>Add_TB</cstring> | ||
78 | </property> | ||
79 | <property stdset="1"> | ||
80 | <name>sizePolicy</name> | ||
81 | <sizepolicy> | ||
82 | <hsizetype>0</hsizetype> | ||
83 | <vsizetype>0</vsizetype> | ||
84 | </sizepolicy> | ||
85 | </property> | ||
86 | <property stdset="1"> | ||
87 | <name>text</name> | ||
88 | <string>...</string> | ||
89 | </property> | ||
90 | </widget> | ||
91 | <widget> | ||
92 | <class>QToolButton</class> | ||
93 | <property stdset="1"> | ||
94 | <name>name</name> | ||
95 | <cstring>Delete_TB</cstring> | ||
96 | </property> | ||
97 | <property stdset="1"> | ||
98 | <name>sizePolicy</name> | ||
99 | <sizepolicy> | ||
100 | <hsizetype>0</hsizetype> | ||
101 | <vsizetype>0</vsizetype> | ||
102 | </sizepolicy> | ||
103 | </property> | ||
104 | <property stdset="1"> | ||
105 | <name>text</name> | ||
106 | <string>...</string> | ||
107 | </property> | ||
108 | </widget> | ||
109 | <widget> | ||
110 | <class>QToolButton</class> | ||
111 | <property stdset="1"> | ||
112 | <name>name</name> | ||
113 | <cstring>CheckState_TB</cstring> | ||
114 | </property> | ||
115 | <property stdset="1"> | ||
116 | <name>sizePolicy</name> | ||
117 | <sizepolicy> | ||
118 | <hsizetype>0</hsizetype> | ||
119 | <vsizetype>0</vsizetype> | ||
120 | </sizepolicy> | ||
121 | </property> | ||
122 | <property stdset="1"> | ||
123 | <name>text</name> | ||
124 | <string>...</string> | ||
125 | </property> | ||
126 | </widget> | ||
127 | <widget> | ||
128 | <class>QToolButton</class> | ||
129 | <property stdset="1"> | ||
130 | <name>name</name> | ||
131 | <cstring>GenConfig_TB</cstring> | ||
132 | </property> | ||
133 | <property stdset="1"> | ||
134 | <name>sizePolicy</name> | ||
135 | <sizepolicy> | ||
136 | <hsizetype>0</hsizetype> | ||
137 | <vsizetype>0</vsizetype> | ||
138 | </sizepolicy> | ||
139 | </property> | ||
140 | <property stdset="1"> | ||
141 | <name>text</name> | ||
142 | <string>...</string> | ||
143 | </property> | ||
144 | </widget> | ||
145 | <spacer> | ||
146 | <property> | ||
147 | <name>name</name> | ||
148 | <cstring>Spacer1</cstring> | ||
149 | </property> | ||
150 | <property stdset="1"> | ||
151 | <name>orientation</name> | ||
152 | <enum>Horizontal</enum> | ||
153 | </property> | ||
154 | <property stdset="1"> | ||
155 | <name>sizeType</name> | ||
156 | <enum>Expanding</enum> | ||
157 | </property> | ||
158 | <property> | ||
159 | <name>sizeHint</name> | ||
160 | <size> | ||
161 | <width>20</width> | ||
162 | <height>20</height> | ||
163 | </size> | ||
164 | </property> | ||
165 | </spacer> | ||
166 | <widget> | ||
167 | <class>QToolButton</class> | ||
168 | <property stdset="1"> | ||
169 | <name>name</name> | ||
170 | <cstring>On_TB</cstring> | ||
171 | </property> | ||
172 | <property stdset="1"> | ||
173 | <name>sizePolicy</name> | ||
174 | <sizepolicy> | ||
175 | <hsizetype>0</hsizetype> | ||
176 | <vsizetype>0</vsizetype> | ||
177 | </sizepolicy> | ||
178 | </property> | ||
179 | <property stdset="1"> | ||
180 | <name>text</name> | ||
181 | <string>...</string> | ||
182 | </property> | ||
183 | <property stdset="1"> | ||
184 | <name>toggleButton</name> | ||
185 | <bool>true</bool> | ||
186 | </property> | ||
187 | <property stdset="1"> | ||
188 | <name>toggleButton</name> | ||
189 | <bool>true</bool> | ||
190 | </property> | ||
191 | </widget> | ||
192 | <widget> | ||
193 | <class>QToolButton</class> | ||
194 | <property stdset="1"> | ||
195 | <name>name</name> | ||
196 | <cstring>Enable_TB</cstring> | ||
197 | </property> | ||
198 | <property stdset="1"> | ||
199 | <name>sizePolicy</name> | ||
200 | <sizepolicy> | ||
201 | <hsizetype>0</hsizetype> | ||
202 | <vsizetype>0</vsizetype> | ||
203 | </sizepolicy> | ||
204 | </property> | ||
205 | <property stdset="1"> | ||
206 | <name>text</name> | ||
207 | <string>...</string> | ||
208 | </property> | ||
209 | <property stdset="1"> | ||
210 | <name>toggleButton</name> | ||
211 | <bool>true</bool> | ||
212 | </property> | ||
213 | <property stdset="1"> | ||
214 | <name>toggleButton</name> | ||
215 | <bool>true</bool> | ||
216 | </property> | ||
217 | </widget> | ||
218 | <widget> | ||
219 | <class>QToolButton</class> | ||
220 | <property stdset="1"> | ||
221 | <name>name</name> | ||
222 | <cstring>Connect_TB</cstring> | ||
223 | </property> | ||
224 | <property stdset="1"> | ||
225 | <name>sizePolicy</name> | ||
226 | <sizepolicy> | ||
227 | <hsizetype>0</hsizetype> | ||
228 | <vsizetype>0</vsizetype> | ||
229 | </sizepolicy> | ||
230 | </property> | ||
231 | <property stdset="1"> | ||
232 | <name>text</name> | ||
233 | <string>...</string> | ||
234 | </property> | ||
235 | <property stdset="1"> | ||
236 | <name>toggleButton</name> | ||
237 | <bool>true</bool> | ||
238 | </property> | ||
239 | <property stdset="1"> | ||
240 | <name>toggleButton</name> | ||
241 | <bool>true</bool> | ||
242 | </property> | ||
243 | </widget> | ||
244 | </hbox> | ||
245 | </widget> | ||
246 | <widget> | ||
247 | <class>QIconView</class> | ||
248 | <item> | ||
249 | <property> | ||
250 | <name>text</name> | ||
251 | <string>New Item</string> | ||
252 | </property> | ||
253 | <property> | ||
254 | <name>pixmap</name> | ||
255 | <pixmap>image0</pixmap> | ||
256 | </property> | ||
257 | </item> | ||
258 | <item> | ||
259 | <property> | ||
260 | <name>text</name> | ||
261 | <string>New Item</string> | ||
262 | </property> | ||
263 | <property> | ||
264 | <name>pixmap</name> | ||
265 | <pixmap>image0</pixmap> | ||
266 | </property> | ||
267 | </item> | ||
268 | <item> | ||
269 | <property> | ||
270 | <name>text</name> | ||
271 | <string>New Item</string> | ||
272 | </property> | ||
273 | <property> | ||
274 | <name>pixmap</name> | ||
275 | <pixmap>image0</pixmap> | ||
276 | </property> | ||
277 | </item> | ||
278 | <item> | ||
279 | <property> | ||
280 | <name>text</name> | ||
281 | <string>New Item</string> | ||
282 | </property> | ||
283 | <property> | ||
284 | <name>pixmap</name> | ||
285 | <pixmap>image0</pixmap> | ||
286 | </property> | ||
287 | </item> | ||
288 | <item> | ||
289 | <property> | ||
290 | <name>text</name> | ||
291 | <string>New Item</string> | ||
292 | </property> | ||
293 | <property> | ||
294 | <name>pixmap</name> | ||
295 | <pixmap>image0</pixmap> | ||
296 | </property> | ||
297 | </item> | ||
298 | <item> | ||
299 | <property> | ||
300 | <name>text</name> | ||
301 | <string>New Item</string> | ||
302 | </property> | ||
303 | <property> | ||
304 | <name>pixmap</name> | ||
305 | <pixmap>image0</pixmap> | ||
306 | </property> | ||
307 | </item> | ||
308 | <item> | ||
309 | <property> | ||
310 | <name>text</name> | ||
311 | <string>New Item</string> | ||
312 | </property> | ||
313 | <property> | ||
314 | <name>pixmap</name> | ||
315 | <pixmap>image0</pixmap> | ||
316 | </property> | ||
317 | </item> | ||
318 | <item> | ||
319 | <property> | ||
320 | <name>text</name> | ||
321 | <string>New Item</string> | ||
322 | </property> | ||
323 | <property> | ||
324 | <name>pixmap</name> | ||
325 | <pixmap>image0</pixmap> | ||
326 | </property> | ||
327 | </item> | ||
328 | <item> | ||
329 | <property> | ||
330 | <name>text</name> | ||
331 | <string>New Item</string> | ||
332 | </property> | ||
333 | <property> | ||
334 | <name>pixmap</name> | ||
335 | <pixmap>image0</pixmap> | ||
336 | </property> | ||
337 | </item> | ||
338 | <item> | ||
339 | <property> | ||
340 | <name>text</name> | ||
341 | <string>New Item</string> | ||
342 | </property> | ||
343 | <property> | ||
344 | <name>pixmap</name> | ||
345 | <pixmap>image0</pixmap> | ||
346 | </property> | ||
347 | </item> | ||
348 | <item> | ||
349 | <property> | ||
350 | <name>text</name> | ||
351 | <string>New Item</string> | ||
352 | </property> | ||
353 | <property> | ||
354 | <name>pixmap</name> | ||
355 | <pixmap>image0</pixmap> | ||
356 | </property> | ||
357 | </item> | ||
358 | <item> | ||
359 | <property> | ||
360 | <name>text</name> | ||
361 | <string>New Item</string> | ||
362 | </property> | ||
363 | <property> | ||
364 | <name>pixmap</name> | ||
365 | <pixmap>image0</pixmap> | ||
366 | </property> | ||
367 | </item> | ||
368 | <item> | ||
369 | <property> | ||
370 | <name>text</name> | ||
371 | <string>New Item</string> | ||
372 | </property> | ||
373 | <property> | ||
374 | <name>pixmap</name> | ||
375 | <pixmap>image0</pixmap> | ||
376 | </property> | ||
377 | </item> | ||
378 | <property stdset="1"> | ||
379 | <name>name</name> | ||
380 | <cstring>Profiles_IV</cstring> | ||
381 | </property> | ||
382 | <property stdset="1"> | ||
383 | <name>spacing</name> | ||
384 | <number>5</number> | ||
385 | </property> | ||
386 | <property stdset="1"> | ||
387 | <name>itemsMovable</name> | ||
388 | <bool>false</bool> | ||
389 | </property> | ||
390 | <property stdset="1"> | ||
391 | <name>showToolTips</name> | ||
392 | <bool>false</bool> | ||
393 | </property> | ||
394 | </widget> | ||
395 | <widget> | ||
396 | <class>QGroupBox</class> | ||
397 | <property stdset="1"> | ||
398 | <name>name</name> | ||
399 | <cstring>CurProfile_GB</cstring> | ||
400 | </property> | ||
401 | <property stdset="1"> | ||
402 | <name>title</name> | ||
403 | <string></string> | ||
404 | </property> | ||
405 | <property> | ||
406 | <name>layoutMargin</name> | ||
407 | </property> | ||
408 | <property> | ||
409 | <name>layoutSpacing</name> | ||
410 | </property> | ||
411 | <vbox> | ||
412 | <property stdset="1"> | ||
413 | <name>margin</name> | ||
414 | <number>4</number> | ||
415 | </property> | ||
416 | <property stdset="1"> | ||
417 | <name>spacing</name> | ||
418 | <number>1</number> | ||
419 | </property> | ||
420 | <widget> | ||
421 | <class>QLayoutWidget</class> | ||
422 | <property stdset="1"> | ||
423 | <name>name</name> | ||
424 | <cstring>Layout3</cstring> | ||
425 | </property> | ||
426 | <hbox> | ||
427 | <property stdset="1"> | ||
428 | <name>margin</name> | ||
429 | <number>0</number> | ||
430 | </property> | ||
431 | <property stdset="1"> | ||
432 | <name>spacing</name> | ||
433 | <number>6</number> | ||
434 | </property> | ||
435 | <widget> | ||
436 | <class>QLabel</class> | ||
437 | <property stdset="1"> | ||
438 | <name>name</name> | ||
439 | <cstring>TextLabel2</cstring> | ||
440 | </property> | ||
441 | <property stdset="1"> | ||
442 | <name>text</name> | ||
443 | <string>State</string> | ||
444 | </property> | ||
445 | </widget> | ||
446 | <widget> | ||
447 | <class>QLabel</class> | ||
448 | <property stdset="1"> | ||
449 | <name>name</name> | ||
450 | <cstring>State_LBL</cstring> | ||
451 | </property> | ||
452 | <property stdset="1"> | ||
453 | <name>text</name> | ||
454 | <string>State</string> | ||
455 | </property> | ||
456 | <property stdset="1"> | ||
457 | <name>indent</name> | ||
458 | <number>0</number> | ||
459 | </property> | ||
460 | </widget> | ||
461 | <spacer> | ||
462 | <property> | ||
463 | <name>name</name> | ||
464 | <cstring>Spacer6</cstring> | ||
465 | </property> | ||
466 | <property stdset="1"> | ||
467 | <name>orientation</name> | ||
468 | <enum>Horizontal</enum> | ||
469 | </property> | ||
470 | <property stdset="1"> | ||
471 | <name>sizeType</name> | ||
472 | <enum>Expanding</enum> | ||
473 | </property> | ||
474 | <property> | ||
475 | <name>sizeHint</name> | ||
476 | <size> | ||
477 | <width>20</width> | ||
478 | <height>20</height> | ||
479 | </size> | ||
480 | </property> | ||
481 | </spacer> | ||
482 | </hbox> | ||
483 | </widget> | ||
484 | <widget> | ||
485 | <class>QLabel</class> | ||
486 | <property stdset="1"> | ||
487 | <name>name</name> | ||
488 | <cstring>Description_LBL</cstring> | ||
489 | </property> | ||
490 | <property stdset="1"> | ||
491 | <name>sizePolicy</name> | ||
492 | <sizepolicy> | ||
493 | <hsizetype>5</hsizetype> | ||
494 | <vsizetype>7</vsizetype> | ||
495 | </sizepolicy> | ||
496 | </property> | ||
497 | <property stdset="1"> | ||
498 | <name>frameShape</name> | ||
499 | <enum>NoFrame</enum> | ||
500 | </property> | ||
501 | <property stdset="1"> | ||
502 | <name>frameShadow</name> | ||
503 | <enum>Raised</enum> | ||
504 | </property> | ||
505 | <property stdset="1"> | ||
506 | <name>text</name> | ||
507 | <string></string> | ||
508 | </property> | ||
509 | <property stdset="1"> | ||
510 | <name>alignment</name> | ||
511 | <set>AlignTop|AlignLeft</set> | ||
512 | </property> | ||
513 | <property> | ||
514 | <name>vAlign</name> | ||
515 | </property> | ||
516 | </widget> | ||
517 | </vbox> | ||
518 | </widget> | ||
519 | </vbox> | ||
520 | </widget> | ||
521 | <images> | ||
522 | <image> | ||
523 | <name>image0</name> | ||
524 | <data format="XPM.GZ" length="1347">789c7dd3c14ac4301405d07dbf22f4ed8a743ace0882f8098a4b415ca4c92475310a3a2e44fc777393a64df2dabed7452e1c6eb368778d787e7a10cdaefabac8cb9b126a909fa2d1dfe7f3cfcbebfd6f551fae857bf69dd8d75755dd0a251e3fde4f38933b53e707b10f518df18478e8b08803e271c21af1e6168b681165e7f688681055874594211a13a242347efc95da9688dad58946ca75e58d6be9e5ba0a46e92d351a952aa2d3b2495459989849f949546632b5688c32c65aeadde428ed0132da23306e4c5863f1ba017042738f6fc138a5fdbd0a135b2203ec7bca7b723022e23d19628601cb0d6f59e8612dce0c2b2641658fb5650b375a0795a2c2b8afcaaba4859ba852c4cda4364da9964daed64caa60c2475d9a590503c54d54d1d0a2096abb67541bf79955fc0debbfbbea1f81b84f0e</data> | ||
525 | </image> | ||
526 | </images> | ||
527 | <connections> | ||
528 | <connection> | ||
529 | <sender>Add_TB</sender> | ||
530 | <signal>clicked()</signal> | ||
531 | <receiver>NetworkSettingsGUI</receiver> | ||
532 | <slot>SLOT_AddNode()</slot> | ||
533 | </connection> | ||
534 | <connection> | ||
535 | <sender>Delete_TB</sender> | ||
536 | <signal>clicked()</signal> | ||
537 | <receiver>NetworkSettingsGUI</receiver> | ||
538 | <slot>SLOT_DeleteNode()</slot> | ||
539 | </connection> | ||
540 | <connection> | ||
541 | <sender>CheckState_TB</sender> | ||
542 | <signal>clicked()</signal> | ||
543 | <receiver>NetworkSettingsGUI</receiver> | ||
544 | <slot>SLOT_CheckState()</slot> | ||
545 | </connection> | ||
546 | <connection> | ||
547 | <sender>Enable_TB</sender> | ||
548 | <signal>clicked()</signal> | ||
549 | <receiver>NetworkSettingsGUI</receiver> | ||
550 | <slot>SLOT_Enable()</slot> | ||
551 | </connection> | ||
552 | <connection> | ||
553 | <sender>Connect_TB</sender> | ||
554 | <signal>clicked()</signal> | ||
555 | <receiver>NetworkSettingsGUI</receiver> | ||
556 | <slot>SLOT_Connect()</slot> | ||
557 | </connection> | ||
558 | <connection> | ||
559 | <sender>On_TB</sender> | ||
560 | <signal>clicked()</signal> | ||
561 | <receiver>NetworkSettingsGUI</receiver> | ||
562 | <slot>SLOT_On()</slot> | ||
563 | </connection> | ||
564 | <connection> | ||
565 | <sender>GenConfig_TB</sender> | ||
566 | <signal>clicked()</signal> | ||
567 | <receiver>NetworkSettingsGUI</receiver> | ||
568 | <slot>SLOT_GenerateConfig()</slot> | ||
569 | </connection> | ||
570 | <connection> | ||
571 | <sender>Profiles_IV</sender> | ||
572 | <signal>selectionChanged(QIconViewItem*)</signal> | ||
573 | <receiver>NetworkSettingsGUI</receiver> | ||
574 | <slot>SLOT_ShowNode( QIconViewItem*)</slot> | ||
575 | </connection> | ||
576 | <connection> | ||
577 | <sender>Profiles_IV</sender> | ||
578 | <signal>doubleClicked(QIconViewItem*)</signal> | ||
579 | <receiver>NetworkSettingsGUI</receiver> | ||
580 | <slot>SLOT_EditNode( QIconViewItem*)</slot> | ||
581 | </connection> | ||
582 | <connection> | ||
583 | <sender>Profiles_IV</sender> | ||
584 | <signal>currentChanged(QIconViewItem*)</signal> | ||
585 | <receiver>NetworkSettingsGUI</receiver> | ||
586 | <slot>SLOT_ShowNode( QIconViewItem*)</slot> | ||
587 | </connection> | ||
588 | <slot access="public">SLOT_AddNode()</slot> | ||
589 | <slot access="public">SLOT_CheckState()</slot> | ||
590 | <slot access="public">SLOT_Connect()</slot> | ||
591 | <slot access="public">SLOT_DeleteNode()</slot> | ||
592 | <slot access="public">SLOT_EditNode( QIconViewItem*)</slot> | ||
593 | <slot access="public">SLOT_Enable()</slot> | ||
594 | <slot access="public">SLOT_GenerateConfig()</slot> | ||
595 | <slot access="public">SLOT_On()</slot> | ||
596 | <slot access="public">SLOT_ShowNode( QIconViewItem*)</slot> | ||
597 | </connections> | ||
598 | </UI> | ||
diff --git a/noncore/settings/networksettings2/networktemplates/interfaces/presection b/noncore/settings/networksettings2/networktemplates/interfaces/presection new file mode 100644 index 0000000..1fe8396 --- a/dev/null +++ b/noncore/settings/networksettings2/networktemplates/interfaces/presection | |||
@@ -0,0 +1,5 @@ | |||
1 | auto lo | ||
2 | |||
3 | # The loopback interface | ||
4 | iface lo inet loopback | ||
5 | |||
diff --git a/noncore/settings/networksettings2/opie-networksettings.control b/noncore/settings/networksettings2/opie-networksettings.control new file mode 100644 index 0000000..82aac2a --- a/dev/null +++ b/noncore/settings/networksettings2/opie-networksettings.control | |||
@@ -0,0 +1,10 @@ | |||
1 | Package: opie-networksettings | ||
2 | Files: plugins/application/libnetworksettings.so* bin/networksettings apps/Settings/networksettings.desktop pics/networksettings/* pics/Network/PPPConnect.png $OPIEDIR/lib/libinterfaces.so* root/usr/bin/changedns bin/getprofile | ||
3 | Priority: optional | ||
4 | Section: opie/settings | ||
5 | Maintainer: Patrick S. Vogt <tille@handhelds.org> | ||
6 | Architecture: arm | ||
7 | Depends: task-opie-minimal | ||
8 | Description: Network settings. | ||
9 | Replaces: opie-networksetup | ||
10 | Version: $QPE_VERSION$EXTRAVERSION | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPAuthGUI.ui b/noncore/settings/networksettings2/ppp/PPPAuthGUI.ui new file mode 100644 index 0000000..826843a --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPAuthGUI.ui | |||
@@ -0,0 +1,432 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>PPPAuthGUI</class> | ||
3 | <widget> | ||
4 | <class>QWidget</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>PPPAuthGUI</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>249</width> | ||
15 | <height>209</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>caption</name> | ||
20 | <string>PPPAuth</string> | ||
21 | </property> | ||
22 | <property> | ||
23 | <name>layoutMargin</name> | ||
24 | </property> | ||
25 | <property> | ||
26 | <name>layoutSpacing</name> | ||
27 | </property> | ||
28 | <vbox> | ||
29 | <property stdset="1"> | ||
30 | <name>margin</name> | ||
31 | <number>0</number> | ||
32 | </property> | ||
33 | <property stdset="1"> | ||
34 | <name>spacing</name> | ||
35 | <number>0</number> | ||
36 | </property> | ||
37 | <widget> | ||
38 | <class>QButtonGroup</class> | ||
39 | <property stdset="1"> | ||
40 | <name>name</name> | ||
41 | <cstring>ButtonGroup1</cstring> | ||
42 | </property> | ||
43 | <property stdset="1"> | ||
44 | <name>frameShape</name> | ||
45 | <enum>NoFrame</enum> | ||
46 | </property> | ||
47 | <property stdset="1"> | ||
48 | <name>title</name> | ||
49 | <string></string> | ||
50 | </property> | ||
51 | <property> | ||
52 | <name>layoutMargin</name> | ||
53 | </property> | ||
54 | <property> | ||
55 | <name>layoutSpacing</name> | ||
56 | </property> | ||
57 | <vbox> | ||
58 | <property stdset="1"> | ||
59 | <name>margin</name> | ||
60 | <number>0</number> | ||
61 | </property> | ||
62 | <property stdset="1"> | ||
63 | <name>spacing</name> | ||
64 | <number>0</number> | ||
65 | </property> | ||
66 | <widget> | ||
67 | <class>QRadioButton</class> | ||
68 | <property stdset="1"> | ||
69 | <name>name</name> | ||
70 | <cstring>Login_RB</cstring> | ||
71 | </property> | ||
72 | <property stdset="1"> | ||
73 | <name>text</name> | ||
74 | <string>Login</string> | ||
75 | </property> | ||
76 | <property stdset="1"> | ||
77 | <name>checked</name> | ||
78 | <bool>true</bool> | ||
79 | </property> | ||
80 | </widget> | ||
81 | <widget> | ||
82 | <class>QLayoutWidget</class> | ||
83 | <property stdset="1"> | ||
84 | <name>name</name> | ||
85 | <cstring>Layout3</cstring> | ||
86 | </property> | ||
87 | <hbox> | ||
88 | <property stdset="1"> | ||
89 | <name>margin</name> | ||
90 | <number>0</number> | ||
91 | </property> | ||
92 | <property stdset="1"> | ||
93 | <name>spacing</name> | ||
94 | <number>6</number> | ||
95 | </property> | ||
96 | <spacer> | ||
97 | <property> | ||
98 | <name>name</name> | ||
99 | <cstring>Spacer3</cstring> | ||
100 | </property> | ||
101 | <property stdset="1"> | ||
102 | <name>orientation</name> | ||
103 | <enum>Horizontal</enum> | ||
104 | </property> | ||
105 | <property stdset="1"> | ||
106 | <name>sizeType</name> | ||
107 | <enum>Fixed</enum> | ||
108 | </property> | ||
109 | <property> | ||
110 | <name>sizeHint</name> | ||
111 | <size> | ||
112 | <width>16</width> | ||
113 | <height>20</height> | ||
114 | </size> | ||
115 | </property> | ||
116 | </spacer> | ||
117 | <widget> | ||
118 | <class>QGroupBox</class> | ||
119 | <property stdset="1"> | ||
120 | <name>name</name> | ||
121 | <cstring>GroupBox1</cstring> | ||
122 | </property> | ||
123 | <property stdset="1"> | ||
124 | <name>sizePolicy</name> | ||
125 | <sizepolicy> | ||
126 | <hsizetype>7</hsizetype> | ||
127 | <vsizetype>5</vsizetype> | ||
128 | </sizepolicy> | ||
129 | </property> | ||
130 | <property stdset="1"> | ||
131 | <name>frameShape</name> | ||
132 | <enum>NoFrame</enum> | ||
133 | </property> | ||
134 | <property stdset="1"> | ||
135 | <name>title</name> | ||
136 | <string></string> | ||
137 | </property> | ||
138 | <property> | ||
139 | <name>layoutMargin</name> | ||
140 | </property> | ||
141 | <property> | ||
142 | <name>layoutSpacing</name> | ||
143 | </property> | ||
144 | <grid> | ||
145 | <property stdset="1"> | ||
146 | <name>margin</name> | ||
147 | <number>2</number> | ||
148 | </property> | ||
149 | <property stdset="1"> | ||
150 | <name>spacing</name> | ||
151 | <number>1</number> | ||
152 | </property> | ||
153 | <widget row="0" column="0" > | ||
154 | <class>QLineEdit</class> | ||
155 | <property stdset="1"> | ||
156 | <name>name</name> | ||
157 | <cstring>LoginExpect_LE</cstring> | ||
158 | </property> | ||
159 | <property stdset="1"> | ||
160 | <name>text</name> | ||
161 | <string>ogin:</string> | ||
162 | </property> | ||
163 | </widget> | ||
164 | <widget row="0" column="1" > | ||
165 | <class>QLineEdit</class> | ||
166 | <property stdset="1"> | ||
167 | <name>name</name> | ||
168 | <cstring>LoginSend_LE</cstring> | ||
169 | </property> | ||
170 | </widget> | ||
171 | <widget row="1" column="0" > | ||
172 | <class>QLineEdit</class> | ||
173 | <property stdset="1"> | ||
174 | <name>name</name> | ||
175 | <cstring>PasswordExpect_LE</cstring> | ||
176 | </property> | ||
177 | <property stdset="1"> | ||
178 | <name>text</name> | ||
179 | <string>assword:</string> | ||
180 | </property> | ||
181 | </widget> | ||
182 | <widget row="1" column="1" > | ||
183 | <class>QLineEdit</class> | ||
184 | <property stdset="1"> | ||
185 | <name>name</name> | ||
186 | <cstring>PasswordSend_LE</cstring> | ||
187 | </property> | ||
188 | </widget> | ||
189 | </grid> | ||
190 | </widget> | ||
191 | </hbox> | ||
192 | </widget> | ||
193 | <widget> | ||
194 | <class>QRadioButton</class> | ||
195 | <property stdset="1"> | ||
196 | <name>name</name> | ||
197 | <cstring>PapChap_RB</cstring> | ||
198 | </property> | ||
199 | <property stdset="1"> | ||
200 | <name>text</name> | ||
201 | <string>Pap/Chap/EAP</string> | ||
202 | </property> | ||
203 | </widget> | ||
204 | <widget> | ||
205 | <class>QLayoutWidget</class> | ||
206 | <property stdset="1"> | ||
207 | <name>name</name> | ||
208 | <cstring>Layout5</cstring> | ||
209 | </property> | ||
210 | <hbox> | ||
211 | <property stdset="1"> | ||
212 | <name>margin</name> | ||
213 | <number>0</number> | ||
214 | </property> | ||
215 | <property stdset="1"> | ||
216 | <name>spacing</name> | ||
217 | <number>6</number> | ||
218 | </property> | ||
219 | <spacer> | ||
220 | <property> | ||
221 | <name>name</name> | ||
222 | <cstring>Spacer3_2</cstring> | ||
223 | </property> | ||
224 | <property stdset="1"> | ||
225 | <name>orientation</name> | ||
226 | <enum>Horizontal</enum> | ||
227 | </property> | ||
228 | <property stdset="1"> | ||
229 | <name>sizeType</name> | ||
230 | <enum>Fixed</enum> | ||
231 | </property> | ||
232 | <property> | ||
233 | <name>sizeHint</name> | ||
234 | <size> | ||
235 | <width>16</width> | ||
236 | <height>20</height> | ||
237 | </size> | ||
238 | </property> | ||
239 | </spacer> | ||
240 | <widget> | ||
241 | <class>QGroupBox</class> | ||
242 | <property stdset="1"> | ||
243 | <name>name</name> | ||
244 | <cstring>GroupBox3</cstring> | ||
245 | </property> | ||
246 | <property stdset="1"> | ||
247 | <name>enabled</name> | ||
248 | <bool>false</bool> | ||
249 | </property> | ||
250 | <property stdset="1"> | ||
251 | <name>sizePolicy</name> | ||
252 | <sizepolicy> | ||
253 | <hsizetype>7</hsizetype> | ||
254 | <vsizetype>5</vsizetype> | ||
255 | </sizepolicy> | ||
256 | </property> | ||
257 | <property stdset="1"> | ||
258 | <name>frameShape</name> | ||
259 | <enum>NoFrame</enum> | ||
260 | </property> | ||
261 | <property stdset="1"> | ||
262 | <name>title</name> | ||
263 | <string></string> | ||
264 | </property> | ||
265 | <property> | ||
266 | <name>layoutMargin</name> | ||
267 | </property> | ||
268 | <property> | ||
269 | <name>layoutSpacing</name> | ||
270 | </property> | ||
271 | <grid> | ||
272 | <property stdset="1"> | ||
273 | <name>margin</name> | ||
274 | <number>2</number> | ||
275 | </property> | ||
276 | <property stdset="1"> | ||
277 | <name>spacing</name> | ||
278 | <number>1</number> | ||
279 | </property> | ||
280 | <widget row="2" column="0" > | ||
281 | <class>QLabel</class> | ||
282 | <property stdset="1"> | ||
283 | <name>name</name> | ||
284 | <cstring>TextLabel1_2</cstring> | ||
285 | </property> | ||
286 | <property stdset="1"> | ||
287 | <name>text</name> | ||
288 | <string>Server</string> | ||
289 | </property> | ||
290 | </widget> | ||
291 | <widget row="3" column="0" > | ||
292 | <class>QLabel</class> | ||
293 | <property stdset="1"> | ||
294 | <name>name</name> | ||
295 | <cstring>TextLabel1_3</cstring> | ||
296 | </property> | ||
297 | <property stdset="1"> | ||
298 | <name>text</name> | ||
299 | <string>Secret</string> | ||
300 | </property> | ||
301 | </widget> | ||
302 | <widget row="0" column="1" > | ||
303 | <class>QComboBox</class> | ||
304 | <item> | ||
305 | <property> | ||
306 | <name>text</name> | ||
307 | <string>PAP</string> | ||
308 | </property> | ||
309 | </item> | ||
310 | <item> | ||
311 | <property> | ||
312 | <name>text</name> | ||
313 | <string>CHAP</string> | ||
314 | </property> | ||
315 | </item> | ||
316 | <item> | ||
317 | <property> | ||
318 | <name>text</name> | ||
319 | <string>EAP</string> | ||
320 | </property> | ||
321 | </item> | ||
322 | <property stdset="1"> | ||
323 | <name>name</name> | ||
324 | <cstring>AuthMethod_CB</cstring> | ||
325 | </property> | ||
326 | </widget> | ||
327 | <widget row="1" column="0" > | ||
328 | <class>QLabel</class> | ||
329 | <property stdset="1"> | ||
330 | <name>name</name> | ||
331 | <cstring>TextLabel1</cstring> | ||
332 | </property> | ||
333 | <property stdset="1"> | ||
334 | <name>text</name> | ||
335 | <string>Client</string> | ||
336 | </property> | ||
337 | </widget> | ||
338 | <widget row="0" column="0" > | ||
339 | <class>QLabel</class> | ||
340 | <property stdset="1"> | ||
341 | <name>name</name> | ||
342 | <cstring>TextLabel1_4</cstring> | ||
343 | </property> | ||
344 | <property stdset="1"> | ||
345 | <name>text</name> | ||
346 | <string>Method</string> | ||
347 | </property> | ||
348 | </widget> | ||
349 | <widget row="1" column="1" rowspan="1" colspan="2" > | ||
350 | <class>QLineEdit</class> | ||
351 | <property stdset="1"> | ||
352 | <name>name</name> | ||
353 | <cstring>Client_LE</cstring> | ||
354 | </property> | ||
355 | <property stdset="1"> | ||
356 | <name>text</name> | ||
357 | <string>*</string> | ||
358 | </property> | ||
359 | </widget> | ||
360 | <widget row="2" column="1" rowspan="1" colspan="2" > | ||
361 | <class>QLineEdit</class> | ||
362 | <property stdset="1"> | ||
363 | <name>name</name> | ||
364 | <cstring>Server_LE</cstring> | ||
365 | </property> | ||
366 | <property stdset="1"> | ||
367 | <name>text</name> | ||
368 | <string>*</string> | ||
369 | </property> | ||
370 | </widget> | ||
371 | <widget row="3" column="1" rowspan="1" colspan="2" > | ||
372 | <class>QLineEdit</class> | ||
373 | <property stdset="1"> | ||
374 | <name>name</name> | ||
375 | <cstring>Secret_LE</cstring> | ||
376 | </property> | ||
377 | </widget> | ||
378 | <spacer row="0" column="2" > | ||
379 | <property> | ||
380 | <name>name</name> | ||
381 | <cstring>Spacer7</cstring> | ||
382 | </property> | ||
383 | <property stdset="1"> | ||
384 | <name>orientation</name> | ||
385 | <enum>Horizontal</enum> | ||
386 | </property> | ||
387 | <property stdset="1"> | ||
388 | <name>sizeType</name> | ||
389 | <enum>Expanding</enum> | ||
390 | </property> | ||
391 | <property> | ||
392 | <name>sizeHint</name> | ||
393 | <size> | ||
394 | <width>20</width> | ||
395 | <height>20</height> | ||
396 | </size> | ||
397 | </property> | ||
398 | </spacer> | ||
399 | </grid> | ||
400 | </widget> | ||
401 | </hbox> | ||
402 | </widget> | ||
403 | <widget> | ||
404 | <class>QRadioButton</class> | ||
405 | <property stdset="1"> | ||
406 | <name>name</name> | ||
407 | <cstring>Terminal_RB</cstring> | ||
408 | </property> | ||
409 | <property stdset="1"> | ||
410 | <name>text</name> | ||
411 | <string>Terminal</string> | ||
412 | </property> | ||
413 | </widget> | ||
414 | </vbox> | ||
415 | </widget> | ||
416 | </vbox> | ||
417 | </widget> | ||
418 | <connections> | ||
419 | <connection> | ||
420 | <sender>PapChap_RB</sender> | ||
421 | <signal>toggled(bool)</signal> | ||
422 | <receiver>GroupBox3</receiver> | ||
423 | <slot>setEnabled(bool)</slot> | ||
424 | </connection> | ||
425 | <connection> | ||
426 | <sender>Login_RB</sender> | ||
427 | <signal>toggled(bool)</signal> | ||
428 | <receiver>GroupBox1</receiver> | ||
429 | <slot>setEnabled(bool)</slot> | ||
430 | </connection> | ||
431 | </connections> | ||
432 | </UI> | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPAuthedit.cpp b/noncore/settings/networksettings2/ppp/PPPAuthedit.cpp new file mode 100644 index 0000000..f305cc4 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPAuthedit.cpp | |||
@@ -0,0 +1,85 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <qcombobox.h> | ||
3 | #include <qmessagebox.h> | ||
4 | #include <qradiobutton.h> | ||
5 | #include <qlineedit.h> | ||
6 | #include <GUIUtils.h> | ||
7 | #include "PPPAuthedit.h" | ||
8 | |||
9 | PPPAuthEdit::PPPAuthEdit( QWidget * Parent ) : PPPAuthGUI( Parent ){ | ||
10 | } | ||
11 | |||
12 | QString PPPAuthEdit::acceptable( void ) { | ||
13 | if( Login_RB->isChecked() ) { | ||
14 | if( LoginSend_LE->text().isEmpty() ) | ||
15 | return tr("Login send missing"); | ||
16 | if( LoginExpect_LE->text().isEmpty() ) | ||
17 | return tr("Login expect missing"); | ||
18 | if( PasswordSend_LE->text().isEmpty() ) | ||
19 | return tr("Password send missing"); | ||
20 | if( PasswordExpect_LE->text().isEmpty() ) | ||
21 | return tr("Password expect missing"); | ||
22 | } else if( PapChap_RB->isChecked() ) { | ||
23 | if( Client_LE->text().isEmpty() ) | ||
24 | return tr("Pap/Chap/EAP client id missing"); | ||
25 | if( Server_LE->text().isEmpty() ) | ||
26 | return tr("Pap/Chap/EAP server id missing"); | ||
27 | if( Secret_LE->text().isEmpty() ) | ||
28 | return tr("Pap/Chap/EAP secret id missing"); | ||
29 | } | ||
30 | return QString(); | ||
31 | } | ||
32 | |||
33 | bool PPPAuthEdit::commit( PPPData_t & D ) { | ||
34 | bool SM = 0; | ||
35 | |||
36 | if( ( D.Auth.Mode == 0 && ! Login_RB->isChecked() ) || | ||
37 | ( D.Auth.Mode == 1 && ! PapChap_RB->isChecked() ) || | ||
38 | ( D.Auth.Mode == 2 && ! Terminal_RB->isChecked() ) ) { | ||
39 | // mode modifed | ||
40 | SM = 1; | ||
41 | D.Auth.Mode = ( Login_RB->isChecked() ) ? | ||
42 | 0 : | ||
43 | ( ( PapChap_RB->isChecked() ) ? | ||
44 | 1 : 2 ); | ||
45 | } | ||
46 | |||
47 | if( Login_RB->isChecked() ) { | ||
48 | TXTM( D.Auth.Login.Expect, LoginExpect_LE, SM ); | ||
49 | TXTM( D.Auth.Login.Send, LoginSend_LE, SM ); | ||
50 | TXTM( D.Auth.Password.Expect, PasswordExpect_LE, SM ); | ||
51 | TXTM( D.Auth.Password.Send, PasswordSend_LE, SM ); | ||
52 | } else if( PapChap_RB->isChecked() ) { | ||
53 | TXTM( D.Auth.Client, Client_LE, SM ); | ||
54 | TXTM( D.Auth.Server, Server_LE, SM ); | ||
55 | TXTM( D.Auth.Secret, Secret_LE, SM ); | ||
56 | CIM( D.Auth.PCEMode, AuthMethod_CB, SM ); | ||
57 | } | ||
58 | return SM; | ||
59 | } | ||
60 | |||
61 | void PPPAuthEdit::showData( PPPData_t & D ) { | ||
62 | |||
63 | switch( D.Auth.Mode ) { | ||
64 | case 0 : | ||
65 | Login_RB->isChecked(); | ||
66 | break; | ||
67 | case 1 : | ||
68 | PapChap_RB->isChecked(); | ||
69 | break; | ||
70 | case 2 : | ||
71 | Terminal_RB->isChecked(); | ||
72 | break; | ||
73 | } | ||
74 | |||
75 | LoginExpect_LE->setText( D.Auth.Login.Expect ); | ||
76 | PasswordExpect_LE->setText( D.Auth.Password.Expect ); | ||
77 | LoginSend_LE->setText( D.Auth.Login.Send ); | ||
78 | PasswordSend_LE->setText( D.Auth.Password.Send ); | ||
79 | |||
80 | Client_LE->setText( D.Auth.Client ); | ||
81 | Server_LE->setText( D.Auth.Server ); | ||
82 | Secret_LE->setText( D.Auth.Secret ); | ||
83 | |||
84 | AuthMethod_CB->setCurrentItem( D.Auth.PCEMode ); | ||
85 | } | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPAuthedit.h b/noncore/settings/networksettings2/ppp/PPPAuthedit.h new file mode 100644 index 0000000..cbd540e --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPAuthedit.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #include "pppdata.h" | ||
2 | #include "PPPAuthGUI.h" | ||
3 | |||
4 | class PPPAuthEdit : public PPPAuthGUI { | ||
5 | |||
6 | public : | ||
7 | |||
8 | PPPAuthEdit( QWidget * parent ); | ||
9 | QString acceptable( void ); | ||
10 | bool commit( PPPData_t & Data ); | ||
11 | void showData( PPPData_t & Data ); | ||
12 | |||
13 | private : | ||
14 | |||
15 | }; | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPDNSGUI.ui b/noncore/settings/networksettings2/ppp/PPPDNSGUI.ui new file mode 100644 index 0000000..0ed136f --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPDNSGUI.ui | |||
@@ -0,0 +1,340 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>PPPDNSGUI</class> | ||
3 | <widget> | ||
4 | <class>QWidget</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>PPPDNSGUI</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>228</width> | ||
15 | <height>169</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>caption</name> | ||
20 | <string>PPPDNS</string> | ||
21 | </property> | ||
22 | <property> | ||
23 | <name>layoutMargin</name> | ||
24 | </property> | ||
25 | <property> | ||
26 | <name>layoutSpacing</name> | ||
27 | </property> | ||
28 | <vbox> | ||
29 | <property stdset="1"> | ||
30 | <name>margin</name> | ||
31 | <number>2</number> | ||
32 | </property> | ||
33 | <property stdset="1"> | ||
34 | <name>spacing</name> | ||
35 | <number>2</number> | ||
36 | </property> | ||
37 | <widget> | ||
38 | <class>QButtonGroup</class> | ||
39 | <property stdset="1"> | ||
40 | <name>name</name> | ||
41 | <cstring>ButtonGroup18</cstring> | ||
42 | </property> | ||
43 | <property stdset="1"> | ||
44 | <name>frameShape</name> | ||
45 | <enum>NoFrame</enum> | ||
46 | </property> | ||
47 | <property stdset="1"> | ||
48 | <name>title</name> | ||
49 | <string></string> | ||
50 | </property> | ||
51 | <property> | ||
52 | <name>layoutMargin</name> | ||
53 | </property> | ||
54 | <property> | ||
55 | <name>layoutSpacing</name> | ||
56 | </property> | ||
57 | <vbox> | ||
58 | <property stdset="1"> | ||
59 | <name>margin</name> | ||
60 | <number>2</number> | ||
61 | </property> | ||
62 | <property stdset="1"> | ||
63 | <name>spacing</name> | ||
64 | <number>2</number> | ||
65 | </property> | ||
66 | <widget> | ||
67 | <class>QRadioButton</class> | ||
68 | <property stdset="1"> | ||
69 | <name>name</name> | ||
70 | <cstring>DNSServerAssigned_RB</cstring> | ||
71 | </property> | ||
72 | <property stdset="1"> | ||
73 | <name>text</name> | ||
74 | <string>Server assigned</string> | ||
75 | </property> | ||
76 | <property stdset="1"> | ||
77 | <name>checked</name> | ||
78 | <bool>true</bool> | ||
79 | </property> | ||
80 | </widget> | ||
81 | <widget> | ||
82 | <class>QRadioButton</class> | ||
83 | <property stdset="1"> | ||
84 | <name>name</name> | ||
85 | <cstring>DNSFixed_RB</cstring> | ||
86 | </property> | ||
87 | <property stdset="1"> | ||
88 | <name>text</name> | ||
89 | <string>Fixed</string> | ||
90 | </property> | ||
91 | </widget> | ||
92 | <widget> | ||
93 | <class>QLayoutWidget</class> | ||
94 | <property stdset="1"> | ||
95 | <name>name</name> | ||
96 | <cstring>Layout13</cstring> | ||
97 | </property> | ||
98 | <hbox> | ||
99 | <property stdset="1"> | ||
100 | <name>margin</name> | ||
101 | <number>0</number> | ||
102 | </property> | ||
103 | <property stdset="1"> | ||
104 | <name>spacing</name> | ||
105 | <number>6</number> | ||
106 | </property> | ||
107 | <spacer> | ||
108 | <property> | ||
109 | <name>name</name> | ||
110 | <cstring>Spacer29</cstring> | ||
111 | </property> | ||
112 | <property stdset="1"> | ||
113 | <name>orientation</name> | ||
114 | <enum>Horizontal</enum> | ||
115 | </property> | ||
116 | <property stdset="1"> | ||
117 | <name>sizeType</name> | ||
118 | <enum>Fixed</enum> | ||
119 | </property> | ||
120 | <property> | ||
121 | <name>sizeHint</name> | ||
122 | <size> | ||
123 | <width>20</width> | ||
124 | <height>20</height> | ||
125 | </size> | ||
126 | </property> | ||
127 | </spacer> | ||
128 | <widget> | ||
129 | <class>QFrame</class> | ||
130 | <property stdset="1"> | ||
131 | <name>name</name> | ||
132 | <cstring>Frame21</cstring> | ||
133 | </property> | ||
134 | <property stdset="1"> | ||
135 | <name>enabled</name> | ||
136 | <bool>false</bool> | ||
137 | </property> | ||
138 | <property stdset="1"> | ||
139 | <name>sizePolicy</name> | ||
140 | <sizepolicy> | ||
141 | <hsizetype>7</hsizetype> | ||
142 | <vsizetype>5</vsizetype> | ||
143 | </sizepolicy> | ||
144 | </property> | ||
145 | <property stdset="1"> | ||
146 | <name>frameShape</name> | ||
147 | <enum>NoFrame</enum> | ||
148 | </property> | ||
149 | <property stdset="1"> | ||
150 | <name>frameShadow</name> | ||
151 | <enum>Raised</enum> | ||
152 | </property> | ||
153 | <property> | ||
154 | <name>layoutMargin</name> | ||
155 | </property> | ||
156 | <property> | ||
157 | <name>layoutSpacing</name> | ||
158 | </property> | ||
159 | <grid> | ||
160 | <property stdset="1"> | ||
161 | <name>margin</name> | ||
162 | <number>2</number> | ||
163 | </property> | ||
164 | <property stdset="1"> | ||
165 | <name>spacing</name> | ||
166 | <number>2</number> | ||
167 | </property> | ||
168 | <widget row="0" column="0" > | ||
169 | <class>QLabel</class> | ||
170 | <property stdset="1"> | ||
171 | <name>name</name> | ||
172 | <cstring>TextLabel5</cstring> | ||
173 | </property> | ||
174 | <property stdset="1"> | ||
175 | <name>text</name> | ||
176 | <string>DomainName</string> | ||
177 | </property> | ||
178 | </widget> | ||
179 | <widget row="1" column="0" > | ||
180 | <class>QLabel</class> | ||
181 | <property stdset="1"> | ||
182 | <name>name</name> | ||
183 | <cstring>TextLabel6</cstring> | ||
184 | </property> | ||
185 | <property stdset="1"> | ||
186 | <name>text</name> | ||
187 | <string>Address</string> | ||
188 | </property> | ||
189 | </widget> | ||
190 | <widget row="0" column="1" > | ||
191 | <class>QLineEdit</class> | ||
192 | <property stdset="1"> | ||
193 | <name>name</name> | ||
194 | <cstring>DomainName_LE</cstring> | ||
195 | </property> | ||
196 | </widget> | ||
197 | <widget row="1" column="1" > | ||
198 | <class>QLineEdit</class> | ||
199 | <property stdset="1"> | ||
200 | <name>name</name> | ||
201 | <cstring>ServerAddress_LE</cstring> | ||
202 | </property> | ||
203 | </widget> | ||
204 | <widget row="3" column="1" > | ||
205 | <class>QListBox</class> | ||
206 | <property stdset="1"> | ||
207 | <name>name</name> | ||
208 | <cstring>Servers_LB</cstring> | ||
209 | </property> | ||
210 | </widget> | ||
211 | <widget row="2" column="1" > | ||
212 | <class>QFrame</class> | ||
213 | <property stdset="1"> | ||
214 | <name>name</name> | ||
215 | <cstring>Frame22</cstring> | ||
216 | </property> | ||
217 | <property stdset="1"> | ||
218 | <name>sizePolicy</name> | ||
219 | <sizepolicy> | ||
220 | <hsizetype>7</hsizetype> | ||
221 | <vsizetype>0</vsizetype> | ||
222 | </sizepolicy> | ||
223 | </property> | ||
224 | <property stdset="1"> | ||
225 | <name>frameShape</name> | ||
226 | <enum>NoFrame</enum> | ||
227 | </property> | ||
228 | <property stdset="1"> | ||
229 | <name>frameShadow</name> | ||
230 | <enum>Raised</enum> | ||
231 | </property> | ||
232 | <property> | ||
233 | <name>layoutMargin</name> | ||
234 | </property> | ||
235 | <property> | ||
236 | <name>layoutSpacing</name> | ||
237 | </property> | ||
238 | <hbox> | ||
239 | <property stdset="1"> | ||
240 | <name>margin</name> | ||
241 | <number>0</number> | ||
242 | </property> | ||
243 | <property stdset="1"> | ||
244 | <name>spacing</name> | ||
245 | <number>0</number> | ||
246 | </property> | ||
247 | <widget> | ||
248 | <class>QToolButton</class> | ||
249 | <property stdset="1"> | ||
250 | <name>name</name> | ||
251 | <cstring>Add_TB</cstring> | ||
252 | </property> | ||
253 | <property stdset="1"> | ||
254 | <name>text</name> | ||
255 | <string>...</string> | ||
256 | </property> | ||
257 | </widget> | ||
258 | <spacer> | ||
259 | <property> | ||
260 | <name>name</name> | ||
261 | <cstring>Spacer2</cstring> | ||
262 | </property> | ||
263 | <property stdset="1"> | ||
264 | <name>orientation</name> | ||
265 | <enum>Horizontal</enum> | ||
266 | </property> | ||
267 | <property stdset="1"> | ||
268 | <name>sizeType</name> | ||
269 | <enum>Expanding</enum> | ||
270 | </property> | ||
271 | <property> | ||
272 | <name>sizeHint</name> | ||
273 | <size> | ||
274 | <width>20</width> | ||
275 | <height>20</height> | ||
276 | </size> | ||
277 | </property> | ||
278 | </spacer> | ||
279 | <widget> | ||
280 | <class>QToolButton</class> | ||
281 | <property stdset="1"> | ||
282 | <name>name</name> | ||
283 | <cstring>Remove_TB</cstring> | ||
284 | </property> | ||
285 | <property stdset="1"> | ||
286 | <name>text</name> | ||
287 | <string>...</string> | ||
288 | </property> | ||
289 | </widget> | ||
290 | </hbox> | ||
291 | </widget> | ||
292 | <widget row="3" column="0" > | ||
293 | <class>QLabel</class> | ||
294 | <property stdset="1"> | ||
295 | <name>name</name> | ||
296 | <cstring>TextLabel7</cstring> | ||
297 | </property> | ||
298 | <property stdset="1"> | ||
299 | <name>text</name> | ||
300 | <string>List</string> | ||
301 | </property> | ||
302 | <property stdset="1"> | ||
303 | <name>alignment</name> | ||
304 | <set>AlignTop|AlignLeft</set> | ||
305 | </property> | ||
306 | <property> | ||
307 | <name>vAlign</name> | ||
308 | </property> | ||
309 | </widget> | ||
310 | </grid> | ||
311 | </widget> | ||
312 | </hbox> | ||
313 | </widget> | ||
314 | </vbox> | ||
315 | </widget> | ||
316 | </vbox> | ||
317 | </widget> | ||
318 | <connections> | ||
319 | <connection> | ||
320 | <sender>DNSFixed_RB</sender> | ||
321 | <signal>toggled(bool)</signal> | ||
322 | <receiver>Frame21</receiver> | ||
323 | <slot>setEnabled(bool)</slot> | ||
324 | </connection> | ||
325 | <connection> | ||
326 | <sender>Add_TB</sender> | ||
327 | <signal>clicked()</signal> | ||
328 | <receiver>PPPDNSGUI</receiver> | ||
329 | <slot>SLOT_AddServer()</slot> | ||
330 | </connection> | ||
331 | <connection> | ||
332 | <sender>Remove_TB</sender> | ||
333 | <signal>clicked()</signal> | ||
334 | <receiver>PPPDNSGUI</receiver> | ||
335 | <slot>SLOT_RemoveServer()</slot> | ||
336 | </connection> | ||
337 | <slot access="public">SLOT_AddServer()</slot> | ||
338 | <slot access="public">SLOT_RemoveServer()</slot> | ||
339 | </connections> | ||
340 | </UI> | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPDNSedit.cpp b/noncore/settings/networksettings2/ppp/PPPDNSedit.cpp new file mode 100644 index 0000000..22f8e59 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPDNSedit.cpp | |||
@@ -0,0 +1,108 @@ | |||
1 | #include <qtoolbutton.h> | ||
2 | #include <qmessagebox.h> | ||
3 | #include <qlistbox.h> | ||
4 | #include <qlineedit.h> | ||
5 | #include <qradiobutton.h> | ||
6 | #include <resources.h> | ||
7 | #include <GUIUtils.h> | ||
8 | #include "PPPDNSedit.h" | ||
9 | |||
10 | PPPDNSEdit::PPPDNSEdit( QWidget * Parent ) : PPPDNSGUI( Parent ){ | ||
11 | |||
12 | Add_TB->setPixmap( NSResources->getPixmap( "add" ) ); | ||
13 | Remove_TB->setPixmap( NSResources->getPixmap( "remove" ) ); | ||
14 | } | ||
15 | |||
16 | QString PPPDNSEdit::acceptable( void ) { | ||
17 | if( DNSFixed_RB->isChecked() ) { | ||
18 | if( DomainName_LE->text().isEmpty() ) | ||
19 | tr("Domainname needed"); | ||
20 | if( Servers_LB->count() == 0 ) | ||
21 | tr("DNS Servers needed"); | ||
22 | } | ||
23 | return QString(); | ||
24 | } | ||
25 | |||
26 | bool PPPDNSEdit::commit( PPPData_t & D ) { | ||
27 | bool SM = 0; | ||
28 | |||
29 | CBM( D.DNS.ServerAssigned, DNSServerAssigned_RB, SM ); | ||
30 | TXTM( D.DNS.DomainName, DomainName_LE, SM ); | ||
31 | |||
32 | // new items in old ? | ||
33 | for ( unsigned i = 0; i < Servers_LB->count(); i++ ) { | ||
34 | QString S; | ||
35 | bool Found; | ||
36 | Found = 0; | ||
37 | S = Servers_LB->text(i); | ||
38 | for ( unsigned j = 0; j < D.DNS.Servers.size(); j++ ) { | ||
39 | if( *(D.DNS.Servers[i]) == S ) { | ||
40 | // still in list | ||
41 | Found = 1; | ||
42 | break; | ||
43 | } | ||
44 | } | ||
45 | if( ! Found ) { | ||
46 | SM = 1; | ||
47 | D.DNS.Servers.resize( D.DNS.Servers.size()+1 ); | ||
48 | D.DNS.Servers[D.DNS.Servers.size()] = new QString( S ); | ||
49 | } | ||
50 | } | ||
51 | |||
52 | // old in new ? | ||
53 | for ( unsigned j = 0; j < D.DNS.Servers.size(); j++ ) { | ||
54 | bool Found; | ||
55 | Found = 0; | ||
56 | for ( unsigned i = 0; i < Servers_LB->count(); i++ ) { | ||
57 | if( *(D.DNS.Servers[j]) == Servers_LB->text(i) ) { | ||
58 | // still in list | ||
59 | Found = 1; | ||
60 | break; | ||
61 | } | ||
62 | } | ||
63 | if( ! Found ) { | ||
64 | // old obsolete | ||
65 | SM = 1; | ||
66 | delete D.DNS.Servers[j]; | ||
67 | for( unsigned i = j+1; i < D.DNS.Servers.size(); i ++ ) { | ||
68 | // compress array | ||
69 | D.DNS.Servers[i-1] = D.DNS.Servers[i]; | ||
70 | } | ||
71 | // shrink | ||
72 | D.DNS.Servers.resize( D.DNS.Servers.size()-1 ); | ||
73 | } | ||
74 | } | ||
75 | return SM; | ||
76 | } | ||
77 | |||
78 | void PPPDNSEdit::showData( PPPData_t & D) { | ||
79 | |||
80 | DNSServerAssigned_RB->setChecked( D.DNS.ServerAssigned ); | ||
81 | |||
82 | DomainName_LE->setText( D.DNS.DomainName ); | ||
83 | for( unsigned i = 0; i < D.DNS.Servers.size(); i ++ ) { | ||
84 | Servers_LB->insertItem( *(D.DNS.Servers[i]) ); | ||
85 | } | ||
86 | } | ||
87 | |||
88 | void PPPDNSEdit::SLOT_AddServer( void ) { | ||
89 | if( ServerAddress_LE->text().isEmpty() ) | ||
90 | return; | ||
91 | |||
92 | Servers_LB->insertItem( ServerAddress_LE->text() ); | ||
93 | ServerAddress_LE->setText( "" ); | ||
94 | } | ||
95 | |||
96 | void PPPDNSEdit::SLOT_RemoveServer( void ) { | ||
97 | long i = Servers_LB->currentItem(); | ||
98 | if( i < 0 ) | ||
99 | return; | ||
100 | Servers_LB->removeItem( i ); | ||
101 | if( (unsigned) i >= Servers_LB->count() ) { | ||
102 | i --; | ||
103 | } | ||
104 | if( i >= 0 ) { | ||
105 | Servers_LB->setCurrentItem( i ); | ||
106 | } | ||
107 | |||
108 | } | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPDNSedit.h b/noncore/settings/networksettings2/ppp/PPPDNSedit.h new file mode 100644 index 0000000..43e0067 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPDNSedit.h | |||
@@ -0,0 +1,20 @@ | |||
1 | #include "pppdata.h" | ||
2 | #include "PPPDNSGUI.h" | ||
3 | |||
4 | class PPPDNSEdit : public PPPDNSGUI { | ||
5 | |||
6 | public : | ||
7 | |||
8 | PPPDNSEdit( QWidget * parent ); | ||
9 | QString acceptable( void ); | ||
10 | bool commit( PPPData_t & Data ); | ||
11 | void showData( PPPData_t & Data ); | ||
12 | |||
13 | public slots : | ||
14 | |||
15 | void SLOT_AddServer( void ); | ||
16 | void SLOT_RemoveServer( void ); | ||
17 | |||
18 | private : | ||
19 | |||
20 | }; | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPGUI.ui b/noncore/settings/networksettings2/ppp/PPPGUI.ui new file mode 100644 index 0000000..777e4a9 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPGUI.ui | |||
@@ -0,0 +1,103 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>PPPGUI</class> | ||
3 | <widget> | ||
4 | <class>QWidget</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>PPPGUI</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>124</width> | ||
15 | <height>29</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>caption</name> | ||
20 | <string>PPP</string> | ||
21 | </property> | ||
22 | <property> | ||
23 | <name>layoutMargin</name> | ||
24 | </property> | ||
25 | <property> | ||
26 | <name>layoutSpacing</name> | ||
27 | </property> | ||
28 | <vbox> | ||
29 | <property stdset="1"> | ||
30 | <name>margin</name> | ||
31 | <number>2</number> | ||
32 | </property> | ||
33 | <property stdset="1"> | ||
34 | <name>spacing</name> | ||
35 | <number>2</number> | ||
36 | </property> | ||
37 | <widget> | ||
38 | <class>QComboBox</class> | ||
39 | <item> | ||
40 | <property> | ||
41 | <name>text</name> | ||
42 | <string>Authentication</string> | ||
43 | </property> | ||
44 | </item> | ||
45 | <item> | ||
46 | <property> | ||
47 | <name>text</name> | ||
48 | <string>IP settings</string> | ||
49 | </property> | ||
50 | </item> | ||
51 | <item> | ||
52 | <property> | ||
53 | <name>text</name> | ||
54 | <string>DNS Settings</string> | ||
55 | </property> | ||
56 | </item> | ||
57 | <property stdset="1"> | ||
58 | <name>name</name> | ||
59 | <cstring>PPPOptions_CB</cstring> | ||
60 | </property> | ||
61 | </widget> | ||
62 | <widget> | ||
63 | <class>QWidgetStack</class> | ||
64 | <property stdset="1"> | ||
65 | <name>name</name> | ||
66 | <cstring>Options_WS</cstring> | ||
67 | </property> | ||
68 | </widget> | ||
69 | </vbox> | ||
70 | </widget> | ||
71 | <customwidgets> | ||
72 | <customwidget> | ||
73 | <class>QWidgetStack</class> | ||
74 | <header location="global">qwidgetstack.h</header> | ||
75 | <sizehint> | ||
76 | <width>-1</width> | ||
77 | <height>-1</height> | ||
78 | </sizehint> | ||
79 | <container>0</container> | ||
80 | <sizepolicy> | ||
81 | <hordata>7</hordata> | ||
82 | <verdata>7</verdata> | ||
83 | </sizepolicy> | ||
84 | <pixmap>image0</pixmap> | ||
85 | <slot access="public">raiseWidget( int )</slot> | ||
86 | </customwidget> | ||
87 | </customwidgets> | ||
88 | <images> | ||
89 | <image> | ||
90 | <name>image0</name> | ||
91 | <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1ddec44f503c0ae2a154410f53d0ed20e2bf6bdb656dd6861dd23d9a66591b0587fd1654235ebded6f0edcd53e419d87ae7b1f4f9b8f906d0bfe012317426a70b07bdc2f3ec77f8ed6b89559061a0343d06a124cc105596482585094bc0ae599b04646c9018926491b2205e140c485cace25755c175d0a967b622ff900b8cc9c7d29af594ea722d589167f813aa852ba07d94b9dce296e883fe7bb163f23896753</data> | ||
92 | </image> | ||
93 | </images> | ||
94 | <connections> | ||
95 | <connection> | ||
96 | <sender>PPPOptions_CB</sender> | ||
97 | <signal>activated(int)</signal> | ||
98 | <receiver>PPPGUI</receiver> | ||
99 | <slot>SLOT_SelectTopic( int )</slot> | ||
100 | </connection> | ||
101 | <slot access="public">SLOT_SelectTopic( int )</slot> | ||
102 | </connections> | ||
103 | </UI> | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPIPGUI.ui b/noncore/settings/networksettings2/ppp/PPPIPGUI.ui new file mode 100644 index 0000000..f3d5019 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPIPGUI.ui | |||
@@ -0,0 +1,444 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>PPPIPGUI</class> | ||
3 | <widget> | ||
4 | <class>QWidget</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>PPPIPGUI</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>133</width> | ||
15 | <height>235</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>caption</name> | ||
20 | <string>PPPIP</string> | ||
21 | </property> | ||
22 | <property> | ||
23 | <name>layoutMargin</name> | ||
24 | </property> | ||
25 | <property> | ||
26 | <name>layoutSpacing</name> | ||
27 | </property> | ||
28 | <vbox> | ||
29 | <property stdset="1"> | ||
30 | <name>margin</name> | ||
31 | <number>3</number> | ||
32 | </property> | ||
33 | <property stdset="1"> | ||
34 | <name>spacing</name> | ||
35 | <number>2</number> | ||
36 | </property> | ||
37 | <widget> | ||
38 | <class>QButtonGroup</class> | ||
39 | <property stdset="1"> | ||
40 | <name>name</name> | ||
41 | <cstring>ButtonGroup4</cstring> | ||
42 | </property> | ||
43 | <property stdset="1"> | ||
44 | <name>frameShape</name> | ||
45 | <enum>Box</enum> | ||
46 | </property> | ||
47 | <property stdset="1"> | ||
48 | <name>title</name> | ||
49 | <string>IP</string> | ||
50 | </property> | ||
51 | <property> | ||
52 | <name>layoutMargin</name> | ||
53 | </property> | ||
54 | <property> | ||
55 | <name>layoutSpacing</name> | ||
56 | </property> | ||
57 | <vbox> | ||
58 | <property stdset="1"> | ||
59 | <name>margin</name> | ||
60 | <number>2</number> | ||
61 | </property> | ||
62 | <property stdset="1"> | ||
63 | <name>spacing</name> | ||
64 | <number>2</number> | ||
65 | </property> | ||
66 | <widget> | ||
67 | <class>QRadioButton</class> | ||
68 | <property stdset="1"> | ||
69 | <name>name</name> | ||
70 | <cstring>IPServerAssigned_RB</cstring> | ||
71 | </property> | ||
72 | <property stdset="1"> | ||
73 | <name>text</name> | ||
74 | <string>Server assigned</string> | ||
75 | </property> | ||
76 | <property stdset="1"> | ||
77 | <name>checked</name> | ||
78 | <bool>true</bool> | ||
79 | </property> | ||
80 | </widget> | ||
81 | <widget> | ||
82 | <class>QRadioButton</class> | ||
83 | <property stdset="1"> | ||
84 | <name>name</name> | ||
85 | <cstring>IPFixed_RB</cstring> | ||
86 | </property> | ||
87 | <property stdset="1"> | ||
88 | <name>text</name> | ||
89 | <string>Fixed</string> | ||
90 | </property> | ||
91 | </widget> | ||
92 | <widget> | ||
93 | <class>QLayoutWidget</class> | ||
94 | <property stdset="1"> | ||
95 | <name>name</name> | ||
96 | <cstring>Layout11</cstring> | ||
97 | </property> | ||
98 | <hbox> | ||
99 | <property stdset="1"> | ||
100 | <name>margin</name> | ||
101 | <number>0</number> | ||
102 | </property> | ||
103 | <property stdset="1"> | ||
104 | <name>spacing</name> | ||
105 | <number>6</number> | ||
106 | </property> | ||
107 | <spacer> | ||
108 | <property> | ||
109 | <name>name</name> | ||
110 | <cstring>Spacer8</cstring> | ||
111 | </property> | ||
112 | <property stdset="1"> | ||
113 | <name>orientation</name> | ||
114 | <enum>Horizontal</enum> | ||
115 | </property> | ||
116 | <property stdset="1"> | ||
117 | <name>sizeType</name> | ||
118 | <enum>Fixed</enum> | ||
119 | </property> | ||
120 | <property> | ||
121 | <name>sizeHint</name> | ||
122 | <size> | ||
123 | <width>20</width> | ||
124 | <height>20</height> | ||
125 | </size> | ||
126 | </property> | ||
127 | <property> | ||
128 | <name>layoutMargin</name> | ||
129 | </property> | ||
130 | <property> | ||
131 | <name>layoutSpacing</name> | ||
132 | </property> | ||
133 | </spacer> | ||
134 | <widget> | ||
135 | <class>QFrame</class> | ||
136 | <property stdset="1"> | ||
137 | <name>name</name> | ||
138 | <cstring>Frame8</cstring> | ||
139 | </property> | ||
140 | <property stdset="1"> | ||
141 | <name>enabled</name> | ||
142 | <bool>false</bool> | ||
143 | </property> | ||
144 | <property stdset="1"> | ||
145 | <name>sizePolicy</name> | ||
146 | <sizepolicy> | ||
147 | <hsizetype>7</hsizetype> | ||
148 | <vsizetype>5</vsizetype> | ||
149 | </sizepolicy> | ||
150 | </property> | ||
151 | <property stdset="1"> | ||
152 | <name>frameShape</name> | ||
153 | <enum>NoFrame</enum> | ||
154 | </property> | ||
155 | <property stdset="1"> | ||
156 | <name>frameShadow</name> | ||
157 | <enum>Raised</enum> | ||
158 | </property> | ||
159 | <property> | ||
160 | <name>layoutMargin</name> | ||
161 | </property> | ||
162 | <property> | ||
163 | <name>layoutSpacing</name> | ||
164 | </property> | ||
165 | <grid> | ||
166 | <property stdset="1"> | ||
167 | <name>margin</name> | ||
168 | <number>2</number> | ||
169 | </property> | ||
170 | <property stdset="1"> | ||
171 | <name>spacing</name> | ||
172 | <number>2</number> | ||
173 | </property> | ||
174 | <widget row="0" column="1" > | ||
175 | <class>QLineEdit</class> | ||
176 | <property stdset="1"> | ||
177 | <name>name</name> | ||
178 | <cstring>IPAddress_LE</cstring> | ||
179 | </property> | ||
180 | </widget> | ||
181 | <widget row="1" column="0" > | ||
182 | <class>QLabel</class> | ||
183 | <property stdset="1"> | ||
184 | <name>name</name> | ||
185 | <cstring>TextLabel3</cstring> | ||
186 | </property> | ||
187 | <property stdset="1"> | ||
188 | <name>text</name> | ||
189 | <string>Subnetmask</string> | ||
190 | </property> | ||
191 | </widget> | ||
192 | <widget row="0" column="0" > | ||
193 | <class>QLabel</class> | ||
194 | <property stdset="1"> | ||
195 | <name>name</name> | ||
196 | <cstring>TextLabel2</cstring> | ||
197 | </property> | ||
198 | <property stdset="1"> | ||
199 | <name>text</name> | ||
200 | <string>Address</string> | ||
201 | </property> | ||
202 | </widget> | ||
203 | <widget row="1" column="1" > | ||
204 | <class>QLineEdit</class> | ||
205 | <property stdset="1"> | ||
206 | <name>name</name> | ||
207 | <cstring>IPSubMask_LE</cstring> | ||
208 | </property> | ||
209 | </widget> | ||
210 | </grid> | ||
211 | </widget> | ||
212 | </hbox> | ||
213 | </widget> | ||
214 | </vbox> | ||
215 | </widget> | ||
216 | <widget> | ||
217 | <class>QButtonGroup</class> | ||
218 | <property stdset="1"> | ||
219 | <name>name</name> | ||
220 | <cstring>ButtonGroup5</cstring> | ||
221 | </property> | ||
222 | <property stdset="1"> | ||
223 | <name>title</name> | ||
224 | <string>Gateway</string> | ||
225 | </property> | ||
226 | <property> | ||
227 | <name>layoutMargin</name> | ||
228 | </property> | ||
229 | <property> | ||
230 | <name>layoutSpacing</name> | ||
231 | </property> | ||
232 | <vbox> | ||
233 | <property stdset="1"> | ||
234 | <name>margin</name> | ||
235 | <number>2</number> | ||
236 | </property> | ||
237 | <property stdset="1"> | ||
238 | <name>spacing</name> | ||
239 | <number>2</number> | ||
240 | </property> | ||
241 | <widget> | ||
242 | <class>QRadioButton</class> | ||
243 | <property stdset="1"> | ||
244 | <name>name</name> | ||
245 | <cstring>GWServerAssigned_RB</cstring> | ||
246 | </property> | ||
247 | <property stdset="1"> | ||
248 | <name>text</name> | ||
249 | <string>Server assigned</string> | ||
250 | </property> | ||
251 | <property stdset="1"> | ||
252 | <name>checked</name> | ||
253 | <bool>true</bool> | ||
254 | </property> | ||
255 | <property> | ||
256 | <name>layoutMargin</name> | ||
257 | </property> | ||
258 | <property> | ||
259 | <name>layoutSpacing</name> | ||
260 | </property> | ||
261 | </widget> | ||
262 | <widget> | ||
263 | <class>QRadioButton</class> | ||
264 | <property stdset="1"> | ||
265 | <name>name</name> | ||
266 | <cstring>GWFixed_RB</cstring> | ||
267 | </property> | ||
268 | <property stdset="1"> | ||
269 | <name>text</name> | ||
270 | <string>Fixed</string> | ||
271 | </property> | ||
272 | </widget> | ||
273 | <widget> | ||
274 | <class>QLayoutWidget</class> | ||
275 | <property stdset="1"> | ||
276 | <name>name</name> | ||
277 | <cstring>Layout12</cstring> | ||
278 | </property> | ||
279 | <property> | ||
280 | <name>layoutMargin</name> | ||
281 | </property> | ||
282 | <property> | ||
283 | <name>layoutSpacing</name> | ||
284 | </property> | ||
285 | <hbox> | ||
286 | <property stdset="1"> | ||
287 | <name>margin</name> | ||
288 | <number>0</number> | ||
289 | </property> | ||
290 | <property stdset="1"> | ||
291 | <name>spacing</name> | ||
292 | <number>6</number> | ||
293 | </property> | ||
294 | <spacer> | ||
295 | <property> | ||
296 | <name>name</name> | ||
297 | <cstring>Spacer9</cstring> | ||
298 | </property> | ||
299 | <property stdset="1"> | ||
300 | <name>orientation</name> | ||
301 | <enum>Horizontal</enum> | ||
302 | </property> | ||
303 | <property stdset="1"> | ||
304 | <name>sizeType</name> | ||
305 | <enum>Fixed</enum> | ||
306 | </property> | ||
307 | <property> | ||
308 | <name>sizeHint</name> | ||
309 | <size> | ||
310 | <width>20</width> | ||
311 | <height>20</height> | ||
312 | </size> | ||
313 | </property> | ||
314 | </spacer> | ||
315 | <widget> | ||
316 | <class>QFrame</class> | ||
317 | <property stdset="1"> | ||
318 | <name>name</name> | ||
319 | <cstring>Frame9</cstring> | ||
320 | </property> | ||
321 | <property stdset="1"> | ||
322 | <name>enabled</name> | ||
323 | <bool>false</bool> | ||
324 | </property> | ||
325 | <property stdset="1"> | ||
326 | <name>sizePolicy</name> | ||
327 | <sizepolicy> | ||
328 | <hsizetype>7</hsizetype> | ||
329 | <vsizetype>5</vsizetype> | ||
330 | </sizepolicy> | ||
331 | </property> | ||
332 | <property stdset="1"> | ||
333 | <name>frameShape</name> | ||
334 | <enum>NoFrame</enum> | ||
335 | </property> | ||
336 | <property stdset="1"> | ||
337 | <name>frameShadow</name> | ||
338 | <enum>Raised</enum> | ||
339 | </property> | ||
340 | <property> | ||
341 | <name>layoutMargin</name> | ||
342 | </property> | ||
343 | <property> | ||
344 | <name>layoutSpacing</name> | ||
345 | </property> | ||
346 | <grid> | ||
347 | <property stdset="1"> | ||
348 | <name>margin</name> | ||
349 | <number>2</number> | ||
350 | </property> | ||
351 | <property stdset="1"> | ||
352 | <name>spacing</name> | ||
353 | <number>2</number> | ||
354 | </property> | ||
355 | <widget row="0" column="0" > | ||
356 | <class>QLabel</class> | ||
357 | <property stdset="1"> | ||
358 | <name>name</name> | ||
359 | <cstring>TextLabel4</cstring> | ||
360 | </property> | ||
361 | <property stdset="1"> | ||
362 | <name>text</name> | ||
363 | <string>Address</string> | ||
364 | </property> | ||
365 | </widget> | ||
366 | <widget row="0" column="1" > | ||
367 | <class>QLineEdit</class> | ||
368 | <property stdset="1"> | ||
369 | <name>name</name> | ||
370 | <cstring>GWAddress_LE</cstring> | ||
371 | </property> | ||
372 | </widget> | ||
373 | </grid> | ||
374 | </widget> | ||
375 | </hbox> | ||
376 | </widget> | ||
377 | <widget> | ||
378 | <class>QLayoutWidget</class> | ||
379 | <property stdset="1"> | ||
380 | <name>name</name> | ||
381 | <cstring>Layout3</cstring> | ||
382 | </property> | ||
383 | <hbox> | ||
384 | <property stdset="1"> | ||
385 | <name>margin</name> | ||
386 | <number>0</number> | ||
387 | </property> | ||
388 | <property stdset="1"> | ||
389 | <name>spacing</name> | ||
390 | <number>6</number> | ||
391 | </property> | ||
392 | <spacer> | ||
393 | <property> | ||
394 | <name>name</name> | ||
395 | <cstring>Spacer3</cstring> | ||
396 | </property> | ||
397 | <property stdset="1"> | ||
398 | <name>orientation</name> | ||
399 | <enum>Horizontal</enum> | ||
400 | </property> | ||
401 | <property stdset="1"> | ||
402 | <name>sizeType</name> | ||
403 | <enum>Expanding</enum> | ||
404 | </property> | ||
405 | <property> | ||
406 | <name>sizeHint</name> | ||
407 | <size> | ||
408 | <width>20</width> | ||
409 | <height>20</height> | ||
410 | </size> | ||
411 | </property> | ||
412 | </spacer> | ||
413 | <widget> | ||
414 | <class>QCheckBox</class> | ||
415 | <property stdset="1"> | ||
416 | <name>name</name> | ||
417 | <cstring>GWIsDefault_CB</cstring> | ||
418 | </property> | ||
419 | <property stdset="1"> | ||
420 | <name>text</name> | ||
421 | <string>Set as default</string> | ||
422 | </property> | ||
423 | </widget> | ||
424 | </hbox> | ||
425 | </widget> | ||
426 | </vbox> | ||
427 | </widget> | ||
428 | </vbox> | ||
429 | </widget> | ||
430 | <connections> | ||
431 | <connection> | ||
432 | <sender>GWFixed_RB</sender> | ||
433 | <signal>toggled(bool)</signal> | ||
434 | <receiver>Frame9</receiver> | ||
435 | <slot>setEnabled(bool)</slot> | ||
436 | </connection> | ||
437 | <connection> | ||
438 | <sender>IPFixed_RB</sender> | ||
439 | <signal>toggled(bool)</signal> | ||
440 | <receiver>Frame8</receiver> | ||
441 | <slot>setEnabled(bool)</slot> | ||
442 | </connection> | ||
443 | </connections> | ||
444 | </UI> | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPIPedit.cpp b/noncore/settings/networksettings2/ppp/PPPIPedit.cpp new file mode 100644 index 0000000..6965e5a --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPIPedit.cpp | |||
@@ -0,0 +1,57 @@ | |||
1 | #include <qmessagebox.h> | ||
2 | #include <qcheckbox.h> | ||
3 | #include <qradiobutton.h> | ||
4 | #include <qlineedit.h> | ||
5 | #include <GUIUtils.h> | ||
6 | #include "PPPIPedit.h" | ||
7 | |||
8 | PPPIPEdit::PPPIPEdit( QWidget * Parent ) : PPPIPGUI( Parent ){ | ||
9 | } | ||
10 | |||
11 | QString PPPIPEdit::acceptable( void ) { | ||
12 | if( IPFixed_RB->isChecked() ) { | ||
13 | if( IPAddress_LE->text().isEmpty() ) | ||
14 | return tr("IPAddress needed" ); | ||
15 | if( ! validIP( IPAddress_LE->text() ) ) | ||
16 | return tr("IPAddress not valid" ); | ||
17 | if( IPSubMask_LE->text().isEmpty() ) | ||
18 | return tr("Subnet mask needed" ); | ||
19 | if( ! validIP( IPSubMask_LE->text() ) ) | ||
20 | return tr("Subnet mask not valid" ); | ||
21 | } else if( GWFixed_RB->isChecked() ) { | ||
22 | if( GWAddress_LE->text().isEmpty() ) | ||
23 | return tr("Gateway address needed" ); | ||
24 | if( ! validIP( GWAddress_LE->text() ) ) | ||
25 | return tr("Gateway address not valid" ); | ||
26 | }; | ||
27 | |||
28 | return QString(); | ||
29 | } | ||
30 | |||
31 | bool PPPIPEdit::commit( PPPData_t & D ) { | ||
32 | |||
33 | bool SM = 0; | ||
34 | |||
35 | CBM( D.IP.IPAutomatic, IPServerAssigned_RB, SM ); | ||
36 | if( ! D.IP.IPAutomatic ) { | ||
37 | TXTM( D.IP.IPAddress, IPAddress_LE, SM ); | ||
38 | TXTM( D.IP.IPSubMask, IPSubMask_LE, SM ); | ||
39 | } | ||
40 | |||
41 | CBM( D.IP.GWAutomatic, GWServerAssigned_RB, SM ); | ||
42 | if( ! D.IP.GWAutomatic ) { | ||
43 | TXTM( D.IP.GWAddress, GWAddress_LE, SM ); | ||
44 | } | ||
45 | |||
46 | CBM( D.IP.GWIsDefault, GWIsDefault_CB, SM ); | ||
47 | return SM; | ||
48 | } | ||
49 | |||
50 | void PPPIPEdit::showData( PPPData_t & D ) { | ||
51 | IPServerAssigned_RB->setChecked( D.IP.IPAutomatic ); | ||
52 | IPAddress_LE->setText( D.IP.IPAddress ); | ||
53 | IPSubMask_LE->setText( D.IP.IPSubMask ); | ||
54 | GWServerAssigned_RB->setChecked( D.IP.GWAutomatic ); | ||
55 | GWAddress_LE->setText( D.IP.GWAddress ); | ||
56 | GWIsDefault_CB->setChecked( D.IP.GWIsDefault ); | ||
57 | } | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPIPedit.h b/noncore/settings/networksettings2/ppp/PPPIPedit.h new file mode 100644 index 0000000..153ee68 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPIPedit.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #include "pppdata.h" | ||
2 | #include "PPPIPGUI.h" | ||
3 | |||
4 | class PPPIPEdit : public PPPIPGUI { | ||
5 | |||
6 | public : | ||
7 | |||
8 | PPPIPEdit( QWidget * parent ); | ||
9 | QString acceptable( void ); | ||
10 | bool commit( PPPData_t & Data ); | ||
11 | void showData( PPPData_t & Data ); | ||
12 | |||
13 | private : | ||
14 | |||
15 | }; | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPedit.cpp b/noncore/settings/networksettings2/ppp/PPPedit.cpp new file mode 100644 index 0000000..eb4fdbf --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPedit.cpp | |||
@@ -0,0 +1,48 @@ | |||
1 | #include <qwidgetstack.h> | ||
2 | |||
3 | #include "PPPIPedit.h" | ||
4 | #include "PPPDNSedit.h" | ||
5 | #include "PPPAuthedit.h" | ||
6 | #include "PPPedit.h" | ||
7 | |||
8 | PPPEdit::PPPEdit( QWidget * Parent ) : PPPGUI( Parent ){ | ||
9 | |||
10 | Auth = new PPPAuthEdit( Options_WS ); | ||
11 | IP = new PPPIPEdit( Options_WS ); | ||
12 | DNS = new PPPDNSEdit( Options_WS ); | ||
13 | Options_WS->addWidget( Auth, 0 ); | ||
14 | Options_WS->addWidget( IP, 1 ); | ||
15 | Options_WS->addWidget( DNS, 2 ); | ||
16 | |||
17 | Options_WS->raiseWidget( 0 ); | ||
18 | } | ||
19 | |||
20 | QString PPPEdit::acceptable( void ) { | ||
21 | QString S; | ||
22 | S = Auth->acceptable(); | ||
23 | if( S.isEmpty() ) { | ||
24 | S = IP->acceptable(); | ||
25 | if( S.isEmpty() ) { | ||
26 | S = DNS->acceptable(); | ||
27 | } | ||
28 | } | ||
29 | return S; | ||
30 | } | ||
31 | |||
32 | bool PPPEdit::commit( PPPData_t & Data ) { | ||
33 | bool SM ; | ||
34 | SM = Auth->commit( Data ); | ||
35 | SM |= IP->commit( Data ); | ||
36 | SM |= DNS->commit( Data ); | ||
37 | return SM; | ||
38 | } | ||
39 | |||
40 | void PPPEdit::showData( PPPData_t & Data ) { | ||
41 | Auth->showData( Data ) ; | ||
42 | IP->showData( Data ); | ||
43 | DNS->showData( Data ); | ||
44 | } | ||
45 | |||
46 | void PPPEdit::SLOT_SelectTopic( int v ) { | ||
47 | Options_WS->raiseWidget( v ); | ||
48 | } | ||
diff --git a/noncore/settings/networksettings2/ppp/PPPedit.h b/noncore/settings/networksettings2/ppp/PPPedit.h new file mode 100644 index 0000000..57d38ee --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/PPPedit.h | |||
@@ -0,0 +1,27 @@ | |||
1 | #include "pppdata.h" | ||
2 | #include "PPPGUI.h" | ||
3 | |||
4 | class PPPAuthEdit; | ||
5 | class PPPIPEdit; | ||
6 | class PPPDNSEdit; | ||
7 | |||
8 | class PPPEdit : public PPPGUI { | ||
9 | |||
10 | public : | ||
11 | |||
12 | PPPEdit( QWidget * parent ); | ||
13 | QString acceptable( void ); | ||
14 | bool commit( PPPData_t & Data ); | ||
15 | void showData( PPPData_t & Data ); | ||
16 | |||
17 | public slots : | ||
18 | |||
19 | void SLOT_SelectTopic( int ); | ||
20 | |||
21 | private : | ||
22 | |||
23 | PPPAuthEdit * Auth; | ||
24 | PPPDNSEdit * DNS; | ||
25 | PPPIPEdit * IP; | ||
26 | |||
27 | }; | ||
diff --git a/noncore/settings/networksettings2/ppp/config.in b/noncore/settings/networksettings2/ppp/config.in new file mode 100644 index 0000000..dc3abd0 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/config.in | |||
@@ -0,0 +1,4 @@ | |||
1 | config NS2PPP | ||
2 | boolean "opie-networksettings2plugin-ppp (set up PPP)" | ||
3 | default "n" if NS2 | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && NS2 && NS2CORE | ||
diff --git a/noncore/settings/networksettings2/ppp/ppp.pro b/noncore/settings/networksettings2/ppp/ppp.pro new file mode 100644 index 0000000..f8712cd --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/ppp.pro | |||
@@ -0,0 +1,24 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG += qt warn_on release | ||
3 | DESTDIR = $(OPIEDIR)/plugins/networksettings2 | ||
4 | HEADERS = ppp_NN.h \ | ||
5 | ppp_NNI.h \ | ||
6 | PPPedit.h \ | ||
7 | PPPAuthedit.h \ | ||
8 | PPPDNSedit.h \ | ||
9 | PPPIPedit.h | ||
10 | SOURCES = ppp_NN.cpp \ | ||
11 | ppp_NNI.cpp \ | ||
12 | PPPedit.cpp \ | ||
13 | PPPDNSedit.cpp \ | ||
14 | PPPAuthedit.cpp \ | ||
15 | ppprun.cpp \ | ||
16 | PPPIPedit.cpp | ||
17 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
18 | DEPENDPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
19 | LIBS += -lqpe | ||
20 | INTERFACES= PPPGUI.ui PPPAuthGUI.ui PPPIPGUI.ui PPPDNSGUI.ui | ||
21 | TARGET = ppp | ||
22 | VERSION = 1.0.0 | ||
23 | |||
24 | include ( $(OPIEDIR)/include.pro ) | ||
diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.cpp b/noncore/settings/networksettings2/ppp/ppp_NN.cpp new file mode 100644 index 0000000..309c9a1 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/ppp_NN.cpp | |||
@@ -0,0 +1,62 @@ | |||
1 | #include "ppp_NN.h" | ||
2 | #include "ppp_NNI.h" | ||
3 | |||
4 | static const char * PPPNeeds[] = | ||
5 | { "line", | ||
6 | "modem", | ||
7 | 0 | ||
8 | }; | ||
9 | |||
10 | /** | ||
11 | * Constructor, find all of the possible interfaces | ||
12 | */ | ||
13 | PPPNetNode::PPPNetNode() : ANetNode() { | ||
14 | } | ||
15 | |||
16 | /** | ||
17 | * Delete any interfaces that we own. | ||
18 | */ | ||
19 | PPPNetNode::~PPPNetNode(){ | ||
20 | } | ||
21 | |||
22 | const QString PPPNetNode::nodeDescription(){ | ||
23 | return tr("\ | ||
24 | <p>Sets up IP using PPP.</p>\ | ||
25 | <p>Use this for dialup devices or serial setups</p>\ | ||
26 | " | ||
27 | ); | ||
28 | } | ||
29 | |||
30 | ANetNodeInstance * PPPNetNode::createInstance( void ) { | ||
31 | return new APPP( this ); | ||
32 | } | ||
33 | |||
34 | const char ** PPPNetNode::needs( void ) { | ||
35 | return PPPNeeds; | ||
36 | } | ||
37 | |||
38 | const char * PPPNetNode::provides( void ) { | ||
39 | return "connection"; | ||
40 | } | ||
41 | |||
42 | bool PPPNetNode::generateProperFilesFor( | ||
43 | ANetNodeInstance * ) { | ||
44 | return 1; | ||
45 | } | ||
46 | |||
47 | bool PPPNetNode::hasDataFor( const QString & ) { | ||
48 | return 0; | ||
49 | } | ||
50 | |||
51 | bool PPPNetNode::generateDataForCommonFile( | ||
52 | SystemFile & , | ||
53 | long, | ||
54 | ANetNodeInstance * ) { | ||
55 | return 1; | ||
56 | } | ||
57 | |||
58 | extern "C" { | ||
59 | void create_plugin( QList<ANetNode> & PNN ) { | ||
60 | PNN.append( new PPPNetNode() ); | ||
61 | } | ||
62 | } | ||
diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.h b/noncore/settings/networksettings2/ppp/ppp_NN.h new file mode 100644 index 0000000..a933523 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/ppp_NN.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef PPP_NETNODE_H | ||
2 | #define PPP_NETNODE_H | ||
3 | |||
4 | #include "netnode.h" | ||
5 | |||
6 | class APPP; | ||
7 | |||
8 | class PPPNetNode : public ANetNode{ | ||
9 | |||
10 | Q_OBJECT | ||
11 | |||
12 | public: | ||
13 | |||
14 | PPPNetNode(); | ||
15 | virtual ~PPPNetNode(); | ||
16 | |||
17 | virtual const QString pixmapName() | ||
18 | { return "ppp"; } | ||
19 | |||
20 | virtual const QString nodeName() | ||
21 | { return tr("PPP Connection"); } | ||
22 | |||
23 | virtual const QString nodeDescription() ; | ||
24 | |||
25 | virtual ANetNodeInstance * createInstance( void ); | ||
26 | |||
27 | virtual const char ** needs( void ); | ||
28 | virtual const char * provides( void ); | ||
29 | |||
30 | virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); | ||
31 | virtual bool hasDataFor( const QString & S ); | ||
32 | virtual bool generateDataForCommonFile( | ||
33 | SystemFile & SF, long DevNr, ANetNodeInstance * NNI ); | ||
34 | |||
35 | private: | ||
36 | |||
37 | }; | ||
38 | |||
39 | extern "C" | ||
40 | { | ||
41 | void create_plugin( QList<ANetNode> & PNN ); | ||
42 | }; | ||
43 | |||
44 | #endif | ||
diff --git a/noncore/settings/networksettings2/ppp/ppp_NNI.cpp b/noncore/settings/networksettings2/ppp/ppp_NNI.cpp new file mode 100644 index 0000000..d09ecf9 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/ppp_NNI.cpp | |||
@@ -0,0 +1,115 @@ | |||
1 | #include "PPPedit.h" | ||
2 | #include "ppp_NNI.h" | ||
3 | #include "ppp_NN.h" | ||
4 | |||
5 | APPP::APPP( PPPNetNode * PNN ) : ANetNodeInstance( PNN ) { | ||
6 | Data.DNS.ServerAssigned = 1; | ||
7 | Data.DNS.DomainName = ""; | ||
8 | |||
9 | Data.Auth.Mode = 0; | ||
10 | Data.Auth.Login.Expect = "ogin:"; | ||
11 | Data.Auth.Password.Expect = "assword:"; | ||
12 | Data.Auth.PCEMode = 0; | ||
13 | Data.Auth.Client = "*"; | ||
14 | Data.Auth.Server = "*"; | ||
15 | Data.Auth.Secret = ""; | ||
16 | |||
17 | Data.IP.IPAutomatic = 1; | ||
18 | Data.IP.IPAddress = ""; | ||
19 | Data.IP.IPSubMask = ""; | ||
20 | Data.IP.GWAutomatic = 1; | ||
21 | Data.IP.GWAddress = ""; | ||
22 | Data.IP.GWIsDefault = 1; | ||
23 | GUI = 0; | ||
24 | RT = 0; | ||
25 | |||
26 | } | ||
27 | |||
28 | void APPP::setSpecificAttribute( QString & A, QString & V ) { | ||
29 | if( A.startsWith( "dns" ) ) { | ||
30 | if( A == "dnsserverassigned" ) { | ||
31 | Data.DNS.ServerAssigned = (V == "yes"); | ||
32 | } else if( A == "dnsdomainname" ) { | ||
33 | Data.DNS.DomainName = V; | ||
34 | } else if( A == "dnsserver" ) { | ||
35 | Data.DNS.Servers.resize( Data.DNS.Servers.size()+1 ); | ||
36 | Data.DNS.Servers[Data.DNS.Servers.size()-1] = | ||
37 | new QString( V ); | ||
38 | } | ||
39 | } else if( A.startsWith( "auth" ) ) { | ||
40 | if( A == "authmode" ) { | ||
41 | Data.Auth.Mode = V.toShort(); | ||
42 | } else if( A == "authloginexpect" ) { | ||
43 | Data.Auth.Login.Expect = V; | ||
44 | } else if( A == "authloginsend" ) { | ||
45 | Data.Auth.Login.Send = V; | ||
46 | } else if( A == "authpasswordexpect" ) { | ||
47 | Data.Auth.Password.Expect = V; | ||
48 | } else if( A == "authpasswordsend" ) { | ||
49 | Data.Auth.Password.Send = V; | ||
50 | } else if( A == "authpcemode" ) { | ||
51 | Data.Auth.PCEMode = V.toShort(); | ||
52 | } else if( A == "authclient" ) { | ||
53 | Data.Auth.Client = V; | ||
54 | } else if( A == "authserver" ) { | ||
55 | Data.Auth.Server = V; | ||
56 | } else if( A == "authsecret" ) { | ||
57 | Data.Auth.Secret = V; | ||
58 | } | ||
59 | } else if( A.startsWith( "ip" ) ) { | ||
60 | if( A == "ipautomatic" ) { | ||
61 | Data.IP.IPAutomatic = (V == "yes"); | ||
62 | } else if( A == "gwautomatic" ) { | ||
63 | Data.IP.GWAutomatic = (V == "yes"); | ||
64 | } else if( A == "gwisdefault" ) { | ||
65 | Data.IP.GWIsDefault = (V == "yes"); | ||
66 | } else if( A == "ipaddress" ) { | ||
67 | Data.IP.IPAddress = V; | ||
68 | } else if( A == "ipsubmask" ) { | ||
69 | Data.IP.IPSubMask = V; | ||
70 | } else if( A == "gwaddress" ) { | ||
71 | Data.IP.GWAddress = V; | ||
72 | } | ||
73 | } | ||
74 | } | ||
75 | |||
76 | void APPP::saveSpecificAttribute( QTextStream & TS ) { | ||
77 | TS << "dnsserverassigned=" << | ||
78 | ( ( Data.DNS.ServerAssigned ) ? "yes" : "no" ) << endl; | ||
79 | TS << "dnsdomainname=" << Data.DNS.DomainName << endl; | ||
80 | for( unsigned int i = 0; i < Data.DNS.Servers.size(); i ++ ) { | ||
81 | TS << "dnsserver=" << *(Data.DNS.Servers[i]) << endl; | ||
82 | } | ||
83 | TS << "authmode=" << Data.Auth.Mode << endl; | ||
84 | TS << "authloginexpect=" << quote( Data.Auth.Login.Expect ) << endl; | ||
85 | TS << "authloginsend=" << quote( Data.Auth.Login.Send ) << endl; | ||
86 | TS << "authpasswordexpect=" << quote( Data.Auth.Password.Expect ) << endl; | ||
87 | TS << "authpasswordsend=" << quote( Data.Auth.Password.Send ) << endl; | ||
88 | TS << "authpcemode=" << Data.Auth.PCEMode << endl; | ||
89 | TS << "authclient=" << Data.Auth.Client << endl; | ||
90 | TS << "authserver=" << Data.Auth.Server << endl; | ||
91 | TS << "authsecret=" << quote( Data.Auth.Secret ) << endl; | ||
92 | TS << "ipautomatic=" << ( ( Data.IP.IPAutomatic ) ? "yes" : "no" ) << endl; | ||
93 | TS << "gwautomatic=" << ( ( Data.IP.GWAutomatic ) ? "yes" : "no" ) << endl; | ||
94 | TS << "gwisdefault=" << ( ( Data.IP.GWIsDefault ) ? "yes" : "no" ) << endl; | ||
95 | TS << "ipaddress=" << Data.IP.IPAddress << endl; | ||
96 | TS << "ipsubmask=" << Data.IP.IPSubMask << endl; | ||
97 | TS << "gwaddress=" << Data.IP.GWAddress << endl; | ||
98 | } | ||
99 | |||
100 | QWidget * APPP::edit( QWidget * parent ) { | ||
101 | GUI = new PPPEdit( parent ); | ||
102 | GUI->showData( Data ); | ||
103 | return GUI; | ||
104 | } | ||
105 | |||
106 | QString APPP::acceptable( void ) { | ||
107 | return ( GUI ) ? GUI->acceptable( ) : QString(); | ||
108 | } | ||
109 | |||
110 | void APPP::commit( void ) { | ||
111 | if( GUI && GUI->commit( Data ) ) { | ||
112 | setModified( 1 ); | ||
113 | } | ||
114 | } | ||
115 | |||
diff --git a/noncore/settings/networksettings2/ppp/ppp_NNI.h b/noncore/settings/networksettings2/ppp/ppp_NNI.h new file mode 100644 index 0000000..08dca1d --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/ppp_NNI.h | |||
@@ -0,0 +1,43 @@ | |||
1 | #ifndef PPP_H | ||
2 | #define PPP_H | ||
3 | |||
4 | #include <netnode.h> | ||
5 | #include "pppdata.h" | ||
6 | #include "ppprun.h" | ||
7 | |||
8 | class PPPNetNode; | ||
9 | class PPPEdit; | ||
10 | |||
11 | class APPP : public ANetNodeInstance { | ||
12 | |||
13 | public : | ||
14 | |||
15 | APPP( PPPNetNode * PNN ); | ||
16 | |||
17 | QWidget * edit( QWidget * parent ); | ||
18 | QString acceptable( void ); | ||
19 | void commit( void ); | ||
20 | |||
21 | RuntimeInfo * runtime( void ) | ||
22 | { if( RT == 0 ) | ||
23 | RT = new PPPRun( this, Data ); | ||
24 | return RT; | ||
25 | } | ||
26 | |||
27 | virtual void * data( void ) | ||
28 | { return (void *)&Data; } | ||
29 | |||
30 | protected : | ||
31 | |||
32 | virtual void setSpecificAttribute( QString & Attr, QString & Value ); | ||
33 | virtual void saveSpecificAttribute( QTextStream & TS ); | ||
34 | |||
35 | private : | ||
36 | |||
37 | PPPEdit * GUI; | ||
38 | PPPData Data; | ||
39 | PPPRun * RT; | ||
40 | |||
41 | }; | ||
42 | |||
43 | #endif | ||
diff --git a/noncore/settings/networksettings2/ppp/pppdata.h b/noncore/settings/networksettings2/ppp/pppdata.h new file mode 100644 index 0000000..9e8543c --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/pppdata.h | |||
@@ -0,0 +1,38 @@ | |||
1 | #ifndef PPP_DATA_H | ||
2 | #define PPP_DATA_H | ||
3 | |||
4 | #include <qstring.h> | ||
5 | #include <qarray.h> | ||
6 | |||
7 | typedef struct PPPData { | ||
8 | struct { | ||
9 | bool IPAutomatic; | ||
10 | QString IPAddress; | ||
11 | QString IPSubMask; | ||
12 | bool GWAutomatic; | ||
13 | QString GWAddress; | ||
14 | bool GWIsDefault; | ||
15 | } IP; | ||
16 | struct { | ||
17 | short Mode; // 0 login, 1 chap/pap, 2 Terminal | ||
18 | struct { | ||
19 | QString Expect; | ||
20 | QString Send; | ||
21 | } Login; | ||
22 | struct { | ||
23 | QString Expect; | ||
24 | QString Send; | ||
25 | } Password; | ||
26 | short PCEMode; // 0 pap, 1, chap 2, EAP | ||
27 | QString Server; | ||
28 | QString Client; | ||
29 | QString Secret; | ||
30 | } Auth; | ||
31 | struct { | ||
32 | bool ServerAssigned; | ||
33 | QString DomainName; | ||
34 | QArray<QString *> Servers; | ||
35 | } DNS; | ||
36 | } PPPData_t; | ||
37 | |||
38 | #endif | ||
diff --git a/noncore/settings/networksettings2/ppp/ppprun.cpp b/noncore/settings/networksettings2/ppp/ppprun.cpp new file mode 100644 index 0000000..8933f85 --- a/dev/null +++ b/noncore/settings/networksettings2/ppp/ppprun.cpp | |||
@@ -0,0 +1,77 @@ | |||
1 | #include <resources.h> | ||
2 | #include "ppprun.h" | ||
3 | |||
4 | void PPPRun::detectState( NodeCollection * NC ) { | ||
5 | if( isMyPPPDRunning( ) ) { | ||
6 | if( isMyPPPUp() ) { | ||
7 | NC->setCurrentState( IsUp ); | ||
8 | } else { | ||
9 | NC->setCurrentState( Available ); | ||
10 | } | ||
11 | } else { | ||
12 | NC->setCurrentState( Off ); // at least this | ||
13 | // but could also be unavailable | ||
14 | netNode()->nextNode()->runtime()->detectState( NC ); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | bool PPPRun::setState( NodeCollection * NC, Action_t A ) { | ||
19 | switch( A ) { | ||
20 | case Activate : | ||
21 | NC->setCurrentState( Available ); | ||
22 | // no | ||
23 | break; | ||
24 | case Deactivate : | ||
25 | if( NC->currentState() == IsUp ) { | ||
26 | NC->state( Down ); | ||
27 | } | ||
28 | // cannot really disable | ||
29 | NC->setCurrentState( Available ); | ||
30 | break; | ||
31 | case Up : | ||
32 | if( NC->currentState() != IsUp ) { | ||
33 | // start my PPPD | ||
34 | NC->setCurrentState( IsUp ); | ||
35 | } | ||
36 | break; | ||
37 | case Down : | ||
38 | if( NC->currentState() == IsUp ) { | ||
39 | // stop my PPPD | ||
40 | NC->setCurrentState( Available ); | ||
41 | } | ||
42 | break; | ||
43 | default : // FT | ||
44 | break; | ||
45 | } | ||
46 | return 1; | ||
47 | } | ||
48 | |||
49 | bool PPPRun::isMyPPPDRunning( void ) { | ||
50 | return 0; | ||
51 | } | ||
52 | |||
53 | bool PPPRun::isMyPPPUp( void ) { | ||
54 | System & S = NSResources->system(); | ||
55 | InterfaceInfo * best = 0, * Run; | ||
56 | QRegExp R( "ppp[0-9]" ); | ||
57 | |||
58 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); | ||
59 | It.current(); | ||
60 | ++It ) { | ||
61 | Run = It.current(); | ||
62 | if( R.match( Run->Name ) >= 0 && | ||
63 | Run->IsPointToPoint | ||
64 | ) { | ||
65 | // this is a LAN card | ||
66 | if( Run->assignedNode() == netNode() ) { | ||
67 | // assigned to us | ||
68 | return 1; | ||
69 | } | ||
70 | } | ||
71 | } | ||
72 | return 0; | ||
73 | } | ||
74 | |||
75 | bool PPPRun::handlesInterface( const QString & S ) { | ||
76 | return Pat.match( S ) >= 0; | ||
77 | } | ||
diff --git a/noncore/settings/networksettings2/profile/config.in b/noncore/settings/networksettings2/profile/config.in new file mode 100644 index 0000000..0efa6a2 --- a/dev/null +++ b/noncore/settings/networksettings2/profile/config.in | |||
@@ -0,0 +1,4 @@ | |||
1 | config NS2PROFILE | ||
2 | boolean "opie-networksettings2plugin-profiles (User profiles)" | ||
3 | default "n" if NS2 | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && NS2 && NS2CORE | ||
diff --git a/noncore/settings/networksettings2/profile/profile.pro b/noncore/settings/networksettings2/profile/profile.pro new file mode 100644 index 0000000..36a9012 --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profile.pro | |||
@@ -0,0 +1,18 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG += qt warn_on release | ||
3 | DESTDIR = $(OPIEDIR)/plugins/networksettings2 | ||
4 | HEADERS = profile_NN.h \ | ||
5 | profile_NNI.h \ | ||
6 | profileedit.h | ||
7 | SOURCES = profile_NN.cpp \ | ||
8 | profile_NNI.cpp \ | ||
9 | profileedit.cpp \ | ||
10 | profilerun.cpp | ||
11 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
12 | DEPENDPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
13 | LIBS += -lqpe | ||
14 | INTERFACES= profileGUI.ui | ||
15 | TARGET = profile | ||
16 | VERSION = 1.0.0 | ||
17 | |||
18 | include ( $(OPIEDIR)/include.pro ) | ||
diff --git a/noncore/settings/networksettings2/profile/profileGUI.ui b/noncore/settings/networksettings2/profile/profileGUI.ui new file mode 100644 index 0000000..365704b --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profileGUI.ui | |||
@@ -0,0 +1,1715 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>ProfileGUI</class> | ||
3 | <widget> | ||
4 | <class>QWidget</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>Profile_FRM</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>225</width> | ||
15 | <height>301</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>caption</name> | ||
20 | <string>Profile</string> | ||
21 | </property> | ||
22 | <property> | ||
23 | <name>layoutMargin</name> | ||
24 | </property> | ||
25 | <property> | ||
26 | <name>layoutSpacing</name> | ||
27 | </property> | ||
28 | <vbox> | ||
29 | <property stdset="1"> | ||
30 | <name>margin</name> | ||
31 | <number>0</number> | ||
32 | </property> | ||
33 | <property stdset="1"> | ||
34 | <name>spacing</name> | ||
35 | <number>0</number> | ||
36 | </property> | ||
37 | <widget> | ||
38 | <class>QTabWidget</class> | ||
39 | <property stdset="1"> | ||
40 | <name>name</name> | ||
41 | <cstring>TabWidget6</cstring> | ||
42 | </property> | ||
43 | <property> | ||
44 | <name>layoutMargin</name> | ||
45 | </property> | ||
46 | <property> | ||
47 | <name>layoutSpacing</name> | ||
48 | </property> | ||
49 | <widget> | ||
50 | <class>QWidget</class> | ||
51 | <property stdset="1"> | ||
52 | <name>name</name> | ||
53 | <cstring>tab</cstring> | ||
54 | </property> | ||
55 | <attribute> | ||
56 | <name>title</name> | ||
57 | <string>Setup</string> | ||
58 | </attribute> | ||
59 | <vbox> | ||
60 | <property stdset="1"> | ||
61 | <name>margin</name> | ||
62 | <number>2</number> | ||
63 | </property> | ||
64 | <property stdset="1"> | ||
65 | <name>spacing</name> | ||
66 | <number>0</number> | ||
67 | </property> | ||
68 | <widget> | ||
69 | <class>QCheckBox</class> | ||
70 | <property stdset="1"> | ||
71 | <name>name</name> | ||
72 | <cstring>Automatic_CB</cstring> | ||
73 | </property> | ||
74 | <property stdset="1"> | ||
75 | <name>text</name> | ||
76 | <string>Start automatically</string> | ||
77 | </property> | ||
78 | </widget> | ||
79 | <widget> | ||
80 | <class>QCheckBox</class> | ||
81 | <property stdset="1"> | ||
82 | <name>name</name> | ||
83 | <cstring>Confirm_CB</cstring> | ||
84 | </property> | ||
85 | <property stdset="1"> | ||
86 | <name>enabled</name> | ||
87 | <bool>true</bool> | ||
88 | </property> | ||
89 | <property stdset="1"> | ||
90 | <name>text</name> | ||
91 | <string>Confirm before start</string> | ||
92 | </property> | ||
93 | <property> | ||
94 | <name>layoutMargin</name> | ||
95 | </property> | ||
96 | </widget> | ||
97 | <widget> | ||
98 | <class>QCheckBox</class> | ||
99 | <property stdset="1"> | ||
100 | <name>name</name> | ||
101 | <cstring>Disabled_CB</cstring> | ||
102 | </property> | ||
103 | <property stdset="1"> | ||
104 | <name>enabled</name> | ||
105 | <bool>true</bool> | ||
106 | </property> | ||
107 | <property stdset="1"> | ||
108 | <name>text</name> | ||
109 | <string>Disabled</string> | ||
110 | </property> | ||
111 | <property> | ||
112 | <name>layoutMargin</name> | ||
113 | </property> | ||
114 | </widget> | ||
115 | <widget> | ||
116 | <class>QLabel</class> | ||
117 | <property stdset="1"> | ||
118 | <name>name</name> | ||
119 | <cstring>TextLabel3</cstring> | ||
120 | </property> | ||
121 | <property stdset="1"> | ||
122 | <name>text</name> | ||
123 | <string>Description</string> | ||
124 | </property> | ||
125 | </widget> | ||
126 | <widget> | ||
127 | <class>QMultiLineEdit</class> | ||
128 | <property stdset="1"> | ||
129 | <name>name</name> | ||
130 | <cstring>Description_LE</cstring> | ||
131 | </property> | ||
132 | </widget> | ||
133 | </vbox> | ||
134 | </widget> | ||
135 | <widget> | ||
136 | <class>QWidget</class> | ||
137 | <property stdset="1"> | ||
138 | <name>name</name> | ||
139 | <cstring>tab</cstring> | ||
140 | </property> | ||
141 | <attribute> | ||
142 | <name>title</name> | ||
143 | <string>State</string> | ||
144 | </attribute> | ||
145 | <vbox> | ||
146 | <property stdset="1"> | ||
147 | <name>margin</name> | ||
148 | <number>0</number> | ||
149 | </property> | ||
150 | <property stdset="1"> | ||
151 | <name>spacing</name> | ||
152 | <number>2</number> | ||
153 | </property> | ||
154 | <widget> | ||
155 | <class>QFrame</class> | ||
156 | <property stdset="1"> | ||
157 | <name>name</name> | ||
158 | <cstring>Frame73</cstring> | ||
159 | </property> | ||
160 | <property stdset="1"> | ||
161 | <name>sizePolicy</name> | ||
162 | <sizepolicy> | ||
163 | <hsizetype>7</hsizetype> | ||
164 | <vsizetype>5</vsizetype> | ||
165 | </sizepolicy> | ||
166 | </property> | ||
167 | <property stdset="1"> | ||
168 | <name>frameShape</name> | ||
169 | <enum>NoFrame</enum> | ||
170 | </property> | ||
171 | <property stdset="1"> | ||
172 | <name>frameShadow</name> | ||
173 | <enum>Plain</enum> | ||
174 | </property> | ||
175 | <property> | ||
176 | <name>layoutMargin</name> | ||
177 | </property> | ||
178 | <property> | ||
179 | <name>layoutSpacing</name> | ||
180 | </property> | ||
181 | <hbox> | ||
182 | <property stdset="1"> | ||
183 | <name>margin</name> | ||
184 | <number>2</number> | ||
185 | </property> | ||
186 | <property stdset="1"> | ||
187 | <name>spacing</name> | ||
188 | <number>0</number> | ||
189 | </property> | ||
190 | <widget> | ||
191 | <class>QLabel</class> | ||
192 | <property stdset="1"> | ||
193 | <name>name</name> | ||
194 | <cstring>InterfaceName_LBL</cstring> | ||
195 | </property> | ||
196 | <property stdset="1"> | ||
197 | <name>font</name> | ||
198 | <font> | ||
199 | <underline>1</underline> | ||
200 | </font> | ||
201 | </property> | ||
202 | <property stdset="1"> | ||
203 | <name>text</name> | ||
204 | <string>eth0</string> | ||
205 | </property> | ||
206 | </widget> | ||
207 | <widget> | ||
208 | <class>QLabel</class> | ||
209 | <property stdset="1"> | ||
210 | <name>name</name> | ||
211 | <cstring>InterfaceOptions_LBL</cstring> | ||
212 | </property> | ||
213 | <property stdset="1"> | ||
214 | <name>sizePolicy</name> | ||
215 | <sizepolicy> | ||
216 | <hsizetype>7</hsizetype> | ||
217 | <vsizetype>1</vsizetype> | ||
218 | </sizepolicy> | ||
219 | </property> | ||
220 | <property stdset="1"> | ||
221 | <name>font</name> | ||
222 | <font> | ||
223 | <underline>1</underline> | ||
224 | </font> | ||
225 | </property> | ||
226 | <property stdset="1"> | ||
227 | <name>text</name> | ||
228 | <string>(Multicast, Up)</string> | ||
229 | </property> | ||
230 | <property stdset="1"> | ||
231 | <name>indent</name> | ||
232 | <number>0</number> | ||
233 | </property> | ||
234 | </widget> | ||
235 | </hbox> | ||
236 | </widget> | ||
237 | <widget> | ||
238 | <class>QFrame</class> | ||
239 | <property stdset="1"> | ||
240 | <name>name</name> | ||
241 | <cstring>Interface_GB</cstring> | ||
242 | </property> | ||
243 | <property stdset="1"> | ||
244 | <name>enabled</name> | ||
245 | <bool>true</bool> | ||
246 | </property> | ||
247 | <property stdset="1"> | ||
248 | <name>sizePolicy</name> | ||
249 | <sizepolicy> | ||
250 | <hsizetype>7</hsizetype> | ||
251 | <vsizetype>5</vsizetype> | ||
252 | </sizepolicy> | ||
253 | </property> | ||
254 | <property stdset="1"> | ||
255 | <name>frameShape</name> | ||
256 | <enum>NoFrame</enum> | ||
257 | </property> | ||
258 | <property stdset="1"> | ||
259 | <name>frameShadow</name> | ||
260 | <enum>Raised</enum> | ||
261 | </property> | ||
262 | <property> | ||
263 | <name>layoutMargin</name> | ||
264 | </property> | ||
265 | <property> | ||
266 | <name>layoutSpacing</name> | ||
267 | </property> | ||
268 | <grid> | ||
269 | <property stdset="1"> | ||
270 | <name>margin</name> | ||
271 | <number>2</number> | ||
272 | </property> | ||
273 | <property stdset="1"> | ||
274 | <name>spacing</name> | ||
275 | <number>1</number> | ||
276 | </property> | ||
277 | <widget row="0" column="2" > | ||
278 | <class>QLabel</class> | ||
279 | <property stdset="1"> | ||
280 | <name>name</name> | ||
281 | <cstring>TextLabel4_2_3</cstring> | ||
282 | </property> | ||
283 | <property stdset="1"> | ||
284 | <name>enabled</name> | ||
285 | <bool>true</bool> | ||
286 | </property> | ||
287 | <property stdset="1"> | ||
288 | <name>sizePolicy</name> | ||
289 | <sizepolicy> | ||
290 | <hsizetype>0</hsizetype> | ||
291 | <vsizetype>1</vsizetype> | ||
292 | </sizepolicy> | ||
293 | </property> | ||
294 | <property stdset="1"> | ||
295 | <name>frameShape</name> | ||
296 | <enum>NoFrame</enum> | ||
297 | </property> | ||
298 | <property stdset="1"> | ||
299 | <name>frameShadow</name> | ||
300 | <enum>Raised</enum> | ||
301 | </property> | ||
302 | <property stdset="1"> | ||
303 | <name>text</name> | ||
304 | <string>Subnet Mask</string> | ||
305 | </property> | ||
306 | </widget> | ||
307 | <widget row="0" column="3" > | ||
308 | <class>QLabel</class> | ||
309 | <property stdset="1"> | ||
310 | <name>name</name> | ||
311 | <cstring>TextLabel1_3_3</cstring> | ||
312 | </property> | ||
313 | <property stdset="1"> | ||
314 | <name>enabled</name> | ||
315 | <bool>true</bool> | ||
316 | </property> | ||
317 | <property stdset="1"> | ||
318 | <name>sizePolicy</name> | ||
319 | <sizepolicy> | ||
320 | <hsizetype>0</hsizetype> | ||
321 | <vsizetype>1</vsizetype> | ||
322 | </sizepolicy> | ||
323 | </property> | ||
324 | <property stdset="1"> | ||
325 | <name>frameShape</name> | ||
326 | <enum>NoFrame</enum> | ||
327 | </property> | ||
328 | <property stdset="1"> | ||
329 | <name>frameShadow</name> | ||
330 | <enum>Raised</enum> | ||
331 | </property> | ||
332 | <property stdset="1"> | ||
333 | <name>text</name> | ||
334 | <string>Broadcast</string> | ||
335 | </property> | ||
336 | </widget> | ||
337 | <widget row="3" column="0" > | ||
338 | <class>QLabel</class> | ||
339 | <property stdset="1"> | ||
340 | <name>name</name> | ||
341 | <cstring>TextLabel1_5</cstring> | ||
342 | </property> | ||
343 | <property stdset="1"> | ||
344 | <name>enabled</name> | ||
345 | <bool>true</bool> | ||
346 | </property> | ||
347 | <property stdset="1"> | ||
348 | <name>sizePolicy</name> | ||
349 | <sizepolicy> | ||
350 | <hsizetype>1</hsizetype> | ||
351 | <vsizetype>1</vsizetype> | ||
352 | </sizepolicy> | ||
353 | </property> | ||
354 | <property stdset="1"> | ||
355 | <name>text</name> | ||
356 | <string>MAC</string> | ||
357 | </property> | ||
358 | <property stdset="1"> | ||
359 | <name>indent</name> | ||
360 | <number>0</number> | ||
361 | </property> | ||
362 | </widget> | ||
363 | <widget row="2" column="0" > | ||
364 | <class>QLabel</class> | ||
365 | <property stdset="1"> | ||
366 | <name>name</name> | ||
367 | <cstring>TextLabel1_5_2</cstring> | ||
368 | </property> | ||
369 | <property stdset="1"> | ||
370 | <name>enabled</name> | ||
371 | <bool>true</bool> | ||
372 | </property> | ||
373 | <property stdset="1"> | ||
374 | <name>sizePolicy</name> | ||
375 | <sizepolicy> | ||
376 | <hsizetype>1</hsizetype> | ||
377 | <vsizetype>1</vsizetype> | ||
378 | </sizepolicy> | ||
379 | </property> | ||
380 | <property stdset="1"> | ||
381 | <name>text</name> | ||
382 | <string>P-t-P</string> | ||
383 | </property> | ||
384 | <property stdset="1"> | ||
385 | <name>indent</name> | ||
386 | <number>0</number> | ||
387 | </property> | ||
388 | </widget> | ||
389 | <widget row="0" column="0" rowspan="1" colspan="2" > | ||
390 | <class>QLabel</class> | ||
391 | <property stdset="1"> | ||
392 | <name>name</name> | ||
393 | <cstring>TextLabel3_2_3</cstring> | ||
394 | </property> | ||
395 | <property stdset="1"> | ||
396 | <name>enabled</name> | ||
397 | <bool>true</bool> | ||
398 | </property> | ||
399 | <property stdset="1"> | ||
400 | <name>sizePolicy</name> | ||
401 | <sizepolicy> | ||
402 | <hsizetype>0</hsizetype> | ||
403 | <vsizetype>1</vsizetype> | ||
404 | </sizepolicy> | ||
405 | </property> | ||
406 | <property stdset="1"> | ||
407 | <name>text</name> | ||
408 | <string>IP Address</string> | ||
409 | </property> | ||
410 | </widget> | ||
411 | <widget row="1" column="0" rowspan="1" colspan="2" > | ||
412 | <class>QLabel</class> | ||
413 | <property stdset="1"> | ||
414 | <name>name</name> | ||
415 | <cstring>IPAddress_LBL</cstring> | ||
416 | </property> | ||
417 | <property stdset="1"> | ||
418 | <name>enabled</name> | ||
419 | <bool>true</bool> | ||
420 | </property> | ||
421 | <property stdset="1"> | ||
422 | <name>sizePolicy</name> | ||
423 | <sizepolicy> | ||
424 | <hsizetype>7</hsizetype> | ||
425 | <vsizetype>1</vsizetype> | ||
426 | </sizepolicy> | ||
427 | </property> | ||
428 | <property stdset="1"> | ||
429 | <name>frameShape</name> | ||
430 | <enum>Panel</enum> | ||
431 | </property> | ||
432 | <property stdset="1"> | ||
433 | <name>frameShadow</name> | ||
434 | <enum>Sunken</enum> | ||
435 | </property> | ||
436 | <property stdset="1"> | ||
437 | <name>text</name> | ||
438 | <string>0.0.0.0</string> | ||
439 | </property> | ||
440 | <property stdset="1"> | ||
441 | <name>alignment</name> | ||
442 | <set>AlignCenter</set> | ||
443 | </property> | ||
444 | <property stdset="1"> | ||
445 | <name>indent</name> | ||
446 | <number>0</number> | ||
447 | </property> | ||
448 | <property> | ||
449 | <name>hAlign</name> | ||
450 | </property> | ||
451 | </widget> | ||
452 | <widget row="1" column="2" > | ||
453 | <class>QLabel</class> | ||
454 | <property stdset="1"> | ||
455 | <name>name</name> | ||
456 | <cstring>SubnetMask_LBL</cstring> | ||
457 | </property> | ||
458 | <property stdset="1"> | ||
459 | <name>enabled</name> | ||
460 | <bool>true</bool> | ||
461 | </property> | ||
462 | <property stdset="1"> | ||
463 | <name>sizePolicy</name> | ||
464 | <sizepolicy> | ||
465 | <hsizetype>7</hsizetype> | ||
466 | <vsizetype>1</vsizetype> | ||
467 | </sizepolicy> | ||
468 | </property> | ||
469 | <property stdset="1"> | ||
470 | <name>frameShape</name> | ||
471 | <enum>Panel</enum> | ||
472 | </property> | ||
473 | <property stdset="1"> | ||
474 | <name>frameShadow</name> | ||
475 | <enum>Sunken</enum> | ||
476 | </property> | ||
477 | <property stdset="1"> | ||
478 | <name>text</name> | ||
479 | <string>0.0.0.0</string> | ||
480 | </property> | ||
481 | <property stdset="1"> | ||
482 | <name>alignment</name> | ||
483 | <set>AlignCenter</set> | ||
484 | </property> | ||
485 | <property stdset="1"> | ||
486 | <name>indent</name> | ||
487 | <number>0</number> | ||
488 | </property> | ||
489 | <property> | ||
490 | <name>hAlign</name> | ||
491 | </property> | ||
492 | </widget> | ||
493 | <widget row="1" column="3" > | ||
494 | <class>QLabel</class> | ||
495 | <property stdset="1"> | ||
496 | <name>name</name> | ||
497 | <cstring>Broadcast_LBL</cstring> | ||
498 | </property> | ||
499 | <property stdset="1"> | ||
500 | <name>enabled</name> | ||
501 | <bool>true</bool> | ||
502 | </property> | ||
503 | <property stdset="1"> | ||
504 | <name>sizePolicy</name> | ||
505 | <sizepolicy> | ||
506 | <hsizetype>7</hsizetype> | ||
507 | <vsizetype>1</vsizetype> | ||
508 | </sizepolicy> | ||
509 | </property> | ||
510 | <property stdset="1"> | ||
511 | <name>frameShape</name> | ||
512 | <enum>StyledPanel</enum> | ||
513 | </property> | ||
514 | <property stdset="1"> | ||
515 | <name>frameShadow</name> | ||
516 | <enum>Sunken</enum> | ||
517 | </property> | ||
518 | <property stdset="1"> | ||
519 | <name>alignment</name> | ||
520 | <set>AlignCenter</set> | ||
521 | </property> | ||
522 | <property stdset="1"> | ||
523 | <name>indent</name> | ||
524 | <number>0</number> | ||
525 | </property> | ||
526 | <property> | ||
527 | <name>hAlign</name> | ||
528 | </property> | ||
529 | </widget> | ||
530 | <widget row="2" column="1" rowspan="1" colspan="3" > | ||
531 | <class>QLabel</class> | ||
532 | <property stdset="1"> | ||
533 | <name>name</name> | ||
534 | <cstring>PointToPoint_LBL</cstring> | ||
535 | </property> | ||
536 | <property stdset="1"> | ||
537 | <name>enabled</name> | ||
538 | <bool>true</bool> | ||
539 | </property> | ||
540 | <property stdset="1"> | ||
541 | <name>sizePolicy</name> | ||
542 | <sizepolicy> | ||
543 | <hsizetype>5</hsizetype> | ||
544 | <vsizetype>0</vsizetype> | ||
545 | </sizepolicy> | ||
546 | </property> | ||
547 | <property stdset="1"> | ||
548 | <name>frameShape</name> | ||
549 | <enum>Panel</enum> | ||
550 | </property> | ||
551 | <property stdset="1"> | ||
552 | <name>frameShadow</name> | ||
553 | <enum>Sunken</enum> | ||
554 | </property> | ||
555 | <property stdset="1"> | ||
556 | <name>indent</name> | ||
557 | <number>0</number> | ||
558 | </property> | ||
559 | </widget> | ||
560 | <widget row="3" column="1" rowspan="1" colspan="3" > | ||
561 | <class>QLabel</class> | ||
562 | <property stdset="1"> | ||
563 | <name>name</name> | ||
564 | <cstring>MACAddress_LBL</cstring> | ||
565 | </property> | ||
566 | <property stdset="1"> | ||
567 | <name>enabled</name> | ||
568 | <bool>true</bool> | ||
569 | </property> | ||
570 | <property stdset="1"> | ||
571 | <name>sizePolicy</name> | ||
572 | <sizepolicy> | ||
573 | <hsizetype>5</hsizetype> | ||
574 | <vsizetype>0</vsizetype> | ||
575 | </sizepolicy> | ||
576 | </property> | ||
577 | <property stdset="1"> | ||
578 | <name>frameShape</name> | ||
579 | <enum>Panel</enum> | ||
580 | </property> | ||
581 | <property stdset="1"> | ||
582 | <name>frameShadow</name> | ||
583 | <enum>Sunken</enum> | ||
584 | </property> | ||
585 | <property stdset="1"> | ||
586 | <name>text</name> | ||
587 | <string>00:00:00:00:00:00</string> | ||
588 | </property> | ||
589 | <property stdset="1"> | ||
590 | <name>indent</name> | ||
591 | <number>0</number> | ||
592 | </property> | ||
593 | </widget> | ||
594 | </grid> | ||
595 | </widget> | ||
596 | <widget> | ||
597 | <class>QLabel</class> | ||
598 | <property stdset="1"> | ||
599 | <name>name</name> | ||
600 | <cstring>TextLabel2_2</cstring> | ||
601 | </property> | ||
602 | <property stdset="1"> | ||
603 | <name>font</name> | ||
604 | <font> | ||
605 | <underline>1</underline> | ||
606 | </font> | ||
607 | </property> | ||
608 | <property stdset="1"> | ||
609 | <name>frameShape</name> | ||
610 | <enum>NoFrame</enum> | ||
611 | </property> | ||
612 | <property stdset="1"> | ||
613 | <name>margin</name> | ||
614 | <number>1</number> | ||
615 | </property> | ||
616 | <property stdset="1"> | ||
617 | <name>text</name> | ||
618 | <string>DHCP</string> | ||
619 | </property> | ||
620 | <property stdset="1"> | ||
621 | <name>indent</name> | ||
622 | <number>0</number> | ||
623 | </property> | ||
624 | </widget> | ||
625 | <widget> | ||
626 | <class>QFrame</class> | ||
627 | <property stdset="1"> | ||
628 | <name>name</name> | ||
629 | <cstring>DHCP_GB</cstring> | ||
630 | </property> | ||
631 | <property stdset="1"> | ||
632 | <name>sizePolicy</name> | ||
633 | <sizepolicy> | ||
634 | <hsizetype>7</hsizetype> | ||
635 | <vsizetype>5</vsizetype> | ||
636 | </sizepolicy> | ||
637 | </property> | ||
638 | <property stdset="1"> | ||
639 | <name>frameShape</name> | ||
640 | <enum>NoFrame</enum> | ||
641 | </property> | ||
642 | <property stdset="1"> | ||
643 | <name>frameShadow</name> | ||
644 | <enum>Raised</enum> | ||
645 | </property> | ||
646 | <property> | ||
647 | <name>layoutMargin</name> | ||
648 | </property> | ||
649 | <property> | ||
650 | <name>layoutSpacing</name> | ||
651 | </property> | ||
652 | <grid> | ||
653 | <property stdset="1"> | ||
654 | <name>margin</name> | ||
655 | <number>2</number> | ||
656 | </property> | ||
657 | <property stdset="1"> | ||
658 | <name>spacing</name> | ||
659 | <number>1</number> | ||
660 | </property> | ||
661 | <widget row="2" column="0" > | ||
662 | <class>QLabel</class> | ||
663 | <property stdset="1"> | ||
664 | <name>name</name> | ||
665 | <cstring>TextLabel9_3</cstring> | ||
666 | </property> | ||
667 | <property stdset="1"> | ||
668 | <name>enabled</name> | ||
669 | <bool>true</bool> | ||
670 | </property> | ||
671 | <property stdset="1"> | ||
672 | <name>sizePolicy</name> | ||
673 | <sizepolicy> | ||
674 | <hsizetype>1</hsizetype> | ||
675 | <vsizetype>1</vsizetype> | ||
676 | </sizepolicy> | ||
677 | </property> | ||
678 | <property stdset="1"> | ||
679 | <name>text</name> | ||
680 | <string>Lease Expires</string> | ||
681 | </property> | ||
682 | </widget> | ||
683 | <widget row="1" column="0" > | ||
684 | <class>QLabel</class> | ||
685 | <property stdset="1"> | ||
686 | <name>name</name> | ||
687 | <cstring>TextLabel8_3</cstring> | ||
688 | </property> | ||
689 | <property stdset="1"> | ||
690 | <name>enabled</name> | ||
691 | <bool>true</bool> | ||
692 | </property> | ||
693 | <property stdset="1"> | ||
694 | <name>sizePolicy</name> | ||
695 | <sizepolicy> | ||
696 | <hsizetype>0</hsizetype> | ||
697 | <vsizetype>1</vsizetype> | ||
698 | </sizepolicy> | ||
699 | </property> | ||
700 | <property stdset="1"> | ||
701 | <name>text</name> | ||
702 | <string>Lease Obtained</string> | ||
703 | </property> | ||
704 | </widget> | ||
705 | <widget row="0" column="1" > | ||
706 | <class>QLabel</class> | ||
707 | <property stdset="1"> | ||
708 | <name>name</name> | ||
709 | <cstring>DHCPServer_LBL</cstring> | ||
710 | </property> | ||
711 | <property stdset="1"> | ||
712 | <name>enabled</name> | ||
713 | <bool>true</bool> | ||
714 | </property> | ||
715 | <property stdset="1"> | ||
716 | <name>sizePolicy</name> | ||
717 | <sizepolicy> | ||
718 | <hsizetype>5</hsizetype> | ||
719 | <vsizetype>1</vsizetype> | ||
720 | </sizepolicy> | ||
721 | </property> | ||
722 | <property stdset="1"> | ||
723 | <name>frameShape</name> | ||
724 | <enum>Panel</enum> | ||
725 | </property> | ||
726 | <property stdset="1"> | ||
727 | <name>frameShadow</name> | ||
728 | <enum>Sunken</enum> | ||
729 | </property> | ||
730 | <property stdset="1"> | ||
731 | <name>text</name> | ||
732 | <string></string> | ||
733 | </property> | ||
734 | <property stdset="1"> | ||
735 | <name>indent</name> | ||
736 | <number>0</number> | ||
737 | </property> | ||
738 | </widget> | ||
739 | <widget row="1" column="1" > | ||
740 | <class>QLabel</class> | ||
741 | <property stdset="1"> | ||
742 | <name>name</name> | ||
743 | <cstring>LeaseObtained_LBL</cstring> | ||
744 | </property> | ||
745 | <property stdset="1"> | ||
746 | <name>enabled</name> | ||
747 | <bool>true</bool> | ||
748 | </property> | ||
749 | <property stdset="1"> | ||
750 | <name>sizePolicy</name> | ||
751 | <sizepolicy> | ||
752 | <hsizetype>5</hsizetype> | ||
753 | <vsizetype>1</vsizetype> | ||
754 | </sizepolicy> | ||
755 | </property> | ||
756 | <property stdset="1"> | ||
757 | <name>minimumSize</name> | ||
758 | <size> | ||
759 | <width>94</width> | ||
760 | <height>0</height> | ||
761 | </size> | ||
762 | </property> | ||
763 | <property stdset="1"> | ||
764 | <name>frameShape</name> | ||
765 | <enum>Panel</enum> | ||
766 | </property> | ||
767 | <property stdset="1"> | ||
768 | <name>frameShadow</name> | ||
769 | <enum>Sunken</enum> | ||
770 | </property> | ||
771 | <property stdset="1"> | ||
772 | <name>text</name> | ||
773 | <string></string> | ||
774 | </property> | ||
775 | <property stdset="1"> | ||
776 | <name>indent</name> | ||
777 | <number>0</number> | ||
778 | </property> | ||
779 | </widget> | ||
780 | <widget row="2" column="1" > | ||
781 | <class>QLabel</class> | ||
782 | <property stdset="1"> | ||
783 | <name>name</name> | ||
784 | <cstring>LeaseExpires_LBL</cstring> | ||
785 | </property> | ||
786 | <property stdset="1"> | ||
787 | <name>enabled</name> | ||
788 | <bool>true</bool> | ||
789 | </property> | ||
790 | <property stdset="1"> | ||
791 | <name>sizePolicy</name> | ||
792 | <sizepolicy> | ||
793 | <hsizetype>5</hsizetype> | ||
794 | <vsizetype>1</vsizetype> | ||
795 | </sizepolicy> | ||
796 | </property> | ||
797 | <property stdset="1"> | ||
798 | <name>frameShape</name> | ||
799 | <enum>Panel</enum> | ||
800 | </property> | ||
801 | <property stdset="1"> | ||
802 | <name>frameShadow</name> | ||
803 | <enum>Sunken</enum> | ||
804 | </property> | ||
805 | <property stdset="1"> | ||
806 | <name>text</name> | ||
807 | <string></string> | ||
808 | </property> | ||
809 | <property stdset="1"> | ||
810 | <name>indent</name> | ||
811 | <number>0</number> | ||
812 | </property> | ||
813 | </widget> | ||
814 | <widget row="0" column="0" > | ||
815 | <class>QLabel</class> | ||
816 | <property stdset="1"> | ||
817 | <name>name</name> | ||
818 | <cstring>TextLabel6_3</cstring> | ||
819 | </property> | ||
820 | <property stdset="1"> | ||
821 | <name>enabled</name> | ||
822 | <bool>true</bool> | ||
823 | </property> | ||
824 | <property stdset="1"> | ||
825 | <name>sizePolicy</name> | ||
826 | <sizepolicy> | ||
827 | <hsizetype>1</hsizetype> | ||
828 | <vsizetype>1</vsizetype> | ||
829 | </sizepolicy> | ||
830 | </property> | ||
831 | <property stdset="1"> | ||
832 | <name>text</name> | ||
833 | <string>DHCP Server</string> | ||
834 | </property> | ||
835 | </widget> | ||
836 | </grid> | ||
837 | </widget> | ||
838 | <spacer> | ||
839 | <property> | ||
840 | <name>name</name> | ||
841 | <cstring>Spacer16</cstring> | ||
842 | </property> | ||
843 | <property stdset="1"> | ||
844 | <name>orientation</name> | ||
845 | <enum>Vertical</enum> | ||
846 | </property> | ||
847 | <property stdset="1"> | ||
848 | <name>sizeType</name> | ||
849 | <enum>Expanding</enum> | ||
850 | </property> | ||
851 | <property> | ||
852 | <name>sizeHint</name> | ||
853 | <size> | ||
854 | <width>20</width> | ||
855 | <height>20</height> | ||
856 | </size> | ||
857 | </property> | ||
858 | </spacer> | ||
859 | </vbox> | ||
860 | </widget> | ||
861 | <widget> | ||
862 | <class>QWidget</class> | ||
863 | <property stdset="1"> | ||
864 | <name>name</name> | ||
865 | <cstring>tab</cstring> | ||
866 | </property> | ||
867 | <attribute> | ||
868 | <name>title</name> | ||
869 | <string>Traffic</string> | ||
870 | </attribute> | ||
871 | <vbox> | ||
872 | <property stdset="1"> | ||
873 | <name>margin</name> | ||
874 | <number>0</number> | ||
875 | </property> | ||
876 | <property stdset="1"> | ||
877 | <name>spacing</name> | ||
878 | <number>0</number> | ||
879 | </property> | ||
880 | <widget> | ||
881 | <class>QLayoutWidget</class> | ||
882 | <property stdset="1"> | ||
883 | <name>name</name> | ||
884 | <cstring>Layout5</cstring> | ||
885 | </property> | ||
886 | <hbox> | ||
887 | <property stdset="1"> | ||
888 | <name>margin</name> | ||
889 | <number>0</number> | ||
890 | </property> | ||
891 | <property stdset="1"> | ||
892 | <name>spacing</name> | ||
893 | <number>6</number> | ||
894 | </property> | ||
895 | <widget> | ||
896 | <class>QLabel</class> | ||
897 | <property stdset="1"> | ||
898 | <name>name</name> | ||
899 | <cstring>TextLabel1_2</cstring> | ||
900 | </property> | ||
901 | <property stdset="1"> | ||
902 | <name>sizePolicy</name> | ||
903 | <sizepolicy> | ||
904 | <hsizetype>0</hsizetype> | ||
905 | <vsizetype>1</vsizetype> | ||
906 | </sizepolicy> | ||
907 | </property> | ||
908 | <property stdset="1"> | ||
909 | <name>text</name> | ||
910 | <string>Receiving</string> | ||
911 | </property> | ||
912 | </widget> | ||
913 | <spacer> | ||
914 | <property> | ||
915 | <name>name</name> | ||
916 | <cstring>Spacer17_2</cstring> | ||
917 | </property> | ||
918 | <property stdset="1"> | ||
919 | <name>orientation</name> | ||
920 | <enum>Horizontal</enum> | ||
921 | </property> | ||
922 | <property stdset="1"> | ||
923 | <name>sizeType</name> | ||
924 | <enum>Expanding</enum> | ||
925 | </property> | ||
926 | <property> | ||
927 | <name>sizeHint</name> | ||
928 | <size> | ||
929 | <width>20</width> | ||
930 | <height>20</height> | ||
931 | </size> | ||
932 | </property> | ||
933 | </spacer> | ||
934 | </hbox> | ||
935 | </widget> | ||
936 | <widget> | ||
937 | <class>QLayoutWidget</class> | ||
938 | <property stdset="1"> | ||
939 | <name>name</name> | ||
940 | <cstring>Layout43</cstring> | ||
941 | </property> | ||
942 | <property> | ||
943 | <name>layoutMargin</name> | ||
944 | </property> | ||
945 | <property> | ||
946 | <name>layoutSpacing</name> | ||
947 | </property> | ||
948 | <hbox> | ||
949 | <property stdset="1"> | ||
950 | <name>margin</name> | ||
951 | <number>2</number> | ||
952 | </property> | ||
953 | <property stdset="1"> | ||
954 | <name>spacing</name> | ||
955 | <number>0</number> | ||
956 | </property> | ||
957 | <widget> | ||
958 | <class>QFrame</class> | ||
959 | <property stdset="1"> | ||
960 | <name>name</name> | ||
961 | <cstring>Frame114</cstring> | ||
962 | </property> | ||
963 | <property stdset="1"> | ||
964 | <name>sizePolicy</name> | ||
965 | <sizepolicy> | ||
966 | <hsizetype>0</hsizetype> | ||
967 | <vsizetype>5</vsizetype> | ||
968 | </sizepolicy> | ||
969 | </property> | ||
970 | <property stdset="1"> | ||
971 | <name>minimumSize</name> | ||
972 | <size> | ||
973 | <width>5</width> | ||
974 | <height>0</height> | ||
975 | </size> | ||
976 | </property> | ||
977 | <property stdset="1"> | ||
978 | <name>maximumSize</name> | ||
979 | <size> | ||
980 | <width>5</width> | ||
981 | <height>32767</height> | ||
982 | </size> | ||
983 | </property> | ||
984 | <property stdset="1"> | ||
985 | <name>frameShape</name> | ||
986 | <enum>NoFrame</enum> | ||
987 | </property> | ||
988 | <property stdset="1"> | ||
989 | <name>frameShadow</name> | ||
990 | <enum>Raised</enum> | ||
991 | </property> | ||
992 | </widget> | ||
993 | <widget> | ||
994 | <class>QFrame</class> | ||
995 | <property stdset="1"> | ||
996 | <name>name</name> | ||
997 | <cstring>Rcv_GB</cstring> | ||
998 | </property> | ||
999 | <property stdset="1"> | ||
1000 | <name>enabled</name> | ||
1001 | <bool>false</bool> | ||
1002 | </property> | ||
1003 | <property stdset="1"> | ||
1004 | <name>sizePolicy</name> | ||
1005 | <sizepolicy> | ||
1006 | <hsizetype>7</hsizetype> | ||
1007 | <vsizetype>5</vsizetype> | ||
1008 | </sizepolicy> | ||
1009 | </property> | ||
1010 | <property stdset="1"> | ||
1011 | <name>frameShape</name> | ||
1012 | <enum>NoFrame</enum> | ||
1013 | </property> | ||
1014 | <property stdset="1"> | ||
1015 | <name>frameShadow</name> | ||
1016 | <enum>Raised</enum> | ||
1017 | </property> | ||
1018 | <property> | ||
1019 | <name>layoutMargin</name> | ||
1020 | </property> | ||
1021 | <property> | ||
1022 | <name>layoutSpacing</name> | ||
1023 | </property> | ||
1024 | <grid> | ||
1025 | <property stdset="1"> | ||
1026 | <name>margin</name> | ||
1027 | <number>0</number> | ||
1028 | </property> | ||
1029 | <property stdset="1"> | ||
1030 | <name>spacing</name> | ||
1031 | <number>1</number> | ||
1032 | </property> | ||
1033 | <widget row="1" column="0" > | ||
1034 | <class>QLabel</class> | ||
1035 | <property stdset="1"> | ||
1036 | <name>name</name> | ||
1037 | <cstring>TextLabel1_5_9</cstring> | ||
1038 | </property> | ||
1039 | <property stdset="1"> | ||
1040 | <name>text</name> | ||
1041 | <string>Errors</string> | ||
1042 | </property> | ||
1043 | </widget> | ||
1044 | <widget row="0" column="1" rowspan="1" colspan="3" > | ||
1045 | <class>QLabel</class> | ||
1046 | <property stdset="1"> | ||
1047 | <name>name</name> | ||
1048 | <cstring>RcvBytes_LBL</cstring> | ||
1049 | </property> | ||
1050 | <property stdset="1"> | ||
1051 | <name>sizePolicy</name> | ||
1052 | <sizepolicy> | ||
1053 | <hsizetype>7</hsizetype> | ||
1054 | <vsizetype>1</vsizetype> | ||
1055 | </sizepolicy> | ||
1056 | </property> | ||
1057 | <property stdset="1"> | ||
1058 | <name>frameShape</name> | ||
1059 | <enum>Panel</enum> | ||
1060 | </property> | ||
1061 | <property stdset="1"> | ||
1062 | <name>frameShadow</name> | ||
1063 | <enum>Sunken</enum> | ||
1064 | </property> | ||
1065 | <property stdset="1"> | ||
1066 | <name>indent</name> | ||
1067 | <number>0</number> | ||
1068 | </property> | ||
1069 | </widget> | ||
1070 | <widget row="1" column="3" > | ||
1071 | <class>QLabel</class> | ||
1072 | <property stdset="1"> | ||
1073 | <name>name</name> | ||
1074 | <cstring>RcvDropped_LBL</cstring> | ||
1075 | </property> | ||
1076 | <property stdset="1"> | ||
1077 | <name>sizePolicy</name> | ||
1078 | <sizepolicy> | ||
1079 | <hsizetype>7</hsizetype> | ||
1080 | <vsizetype>1</vsizetype> | ||
1081 | </sizepolicy> | ||
1082 | </property> | ||
1083 | <property stdset="1"> | ||
1084 | <name>frameShape</name> | ||
1085 | <enum>Panel</enum> | ||
1086 | </property> | ||
1087 | <property stdset="1"> | ||
1088 | <name>frameShadow</name> | ||
1089 | <enum>Sunken</enum> | ||
1090 | </property> | ||
1091 | <property stdset="1"> | ||
1092 | <name>indent</name> | ||
1093 | <number>0</number> | ||
1094 | </property> | ||
1095 | </widget> | ||
1096 | <widget row="1" column="1" > | ||
1097 | <class>QLabel</class> | ||
1098 | <property stdset="1"> | ||
1099 | <name>name</name> | ||
1100 | <cstring>RcvErrors_LBL</cstring> | ||
1101 | </property> | ||
1102 | <property stdset="1"> | ||
1103 | <name>sizePolicy</name> | ||
1104 | <sizepolicy> | ||
1105 | <hsizetype>7</hsizetype> | ||
1106 | <vsizetype>1</vsizetype> | ||
1107 | </sizepolicy> | ||
1108 | </property> | ||
1109 | <property stdset="1"> | ||
1110 | <name>frameShape</name> | ||
1111 | <enum>Panel</enum> | ||
1112 | </property> | ||
1113 | <property stdset="1"> | ||
1114 | <name>frameShadow</name> | ||
1115 | <enum>Sunken</enum> | ||
1116 | </property> | ||
1117 | <property stdset="1"> | ||
1118 | <name>indent</name> | ||
1119 | <number>0</number> | ||
1120 | </property> | ||
1121 | </widget> | ||
1122 | <widget row="1" column="2" > | ||
1123 | <class>QLabel</class> | ||
1124 | <property stdset="1"> | ||
1125 | <name>name</name> | ||
1126 | <cstring>TextLabel1_5_4</cstring> | ||
1127 | </property> | ||
1128 | <property stdset="1"> | ||
1129 | <name>text</name> | ||
1130 | <string>Dropped</string> | ||
1131 | </property> | ||
1132 | </widget> | ||
1133 | <widget row="0" column="0" > | ||
1134 | <class>QLabel</class> | ||
1135 | <property stdset="1"> | ||
1136 | <name>name</name> | ||
1137 | <cstring>TextLabel1_5_3</cstring> | ||
1138 | </property> | ||
1139 | <property stdset="1"> | ||
1140 | <name>text</name> | ||
1141 | <string>Bytes</string> | ||
1142 | </property> | ||
1143 | </widget> | ||
1144 | </grid> | ||
1145 | </widget> | ||
1146 | </hbox> | ||
1147 | </widget> | ||
1148 | <widget> | ||
1149 | <class>QLayoutWidget</class> | ||
1150 | <property stdset="1"> | ||
1151 | <name>name</name> | ||
1152 | <cstring>Layout6</cstring> | ||
1153 | </property> | ||
1154 | <hbox> | ||
1155 | <property stdset="1"> | ||
1156 | <name>margin</name> | ||
1157 | <number>0</number> | ||
1158 | </property> | ||
1159 | <property stdset="1"> | ||
1160 | <name>spacing</name> | ||
1161 | <number>6</number> | ||
1162 | </property> | ||
1163 | <widget> | ||
1164 | <class>QLabel</class> | ||
1165 | <property stdset="1"> | ||
1166 | <name>name</name> | ||
1167 | <cstring>TextLabel1</cstring> | ||
1168 | </property> | ||
1169 | <property stdset="1"> | ||
1170 | <name>sizePolicy</name> | ||
1171 | <sizepolicy> | ||
1172 | <hsizetype>0</hsizetype> | ||
1173 | <vsizetype>1</vsizetype> | ||
1174 | </sizepolicy> | ||
1175 | </property> | ||
1176 | <property stdset="1"> | ||
1177 | <name>text</name> | ||
1178 | <string>Transmitting</string> | ||
1179 | </property> | ||
1180 | </widget> | ||
1181 | <spacer> | ||
1182 | <property> | ||
1183 | <name>name</name> | ||
1184 | <cstring>Spacer18_2</cstring> | ||
1185 | </property> | ||
1186 | <property stdset="1"> | ||
1187 | <name>orientation</name> | ||
1188 | <enum>Horizontal</enum> | ||
1189 | </property> | ||
1190 | <property stdset="1"> | ||
1191 | <name>sizeType</name> | ||
1192 | <enum>Expanding</enum> | ||
1193 | </property> | ||
1194 | <property> | ||
1195 | <name>sizeHint</name> | ||
1196 | <size> | ||
1197 | <width>20</width> | ||
1198 | <height>20</height> | ||
1199 | </size> | ||
1200 | </property> | ||
1201 | </spacer> | ||
1202 | </hbox> | ||
1203 | </widget> | ||
1204 | <widget> | ||
1205 | <class>QLayoutWidget</class> | ||
1206 | <property stdset="1"> | ||
1207 | <name>name</name> | ||
1208 | <cstring>Layout44</cstring> | ||
1209 | </property> | ||
1210 | <property> | ||
1211 | <name>layoutMargin</name> | ||
1212 | </property> | ||
1213 | <property> | ||
1214 | <name>layoutSpacing</name> | ||
1215 | </property> | ||
1216 | <hbox> | ||
1217 | <property stdset="1"> | ||
1218 | <name>margin</name> | ||
1219 | <number>2</number> | ||
1220 | </property> | ||
1221 | <property stdset="1"> | ||
1222 | <name>spacing</name> | ||
1223 | <number>0</number> | ||
1224 | </property> | ||
1225 | <widget> | ||
1226 | <class>QFrame</class> | ||
1227 | <property stdset="1"> | ||
1228 | <name>name</name> | ||
1229 | <cstring>Frame115</cstring> | ||
1230 | </property> | ||
1231 | <property stdset="1"> | ||
1232 | <name>sizePolicy</name> | ||
1233 | <sizepolicy> | ||
1234 | <hsizetype>0</hsizetype> | ||
1235 | <vsizetype>5</vsizetype> | ||
1236 | </sizepolicy> | ||
1237 | </property> | ||
1238 | <property stdset="1"> | ||
1239 | <name>minimumSize</name> | ||
1240 | <size> | ||
1241 | <width>5</width> | ||
1242 | <height>0</height> | ||
1243 | </size> | ||
1244 | </property> | ||
1245 | <property stdset="1"> | ||
1246 | <name>maximumSize</name> | ||
1247 | <size> | ||
1248 | <width>5</width> | ||
1249 | <height>32767</height> | ||
1250 | </size> | ||
1251 | </property> | ||
1252 | <property stdset="1"> | ||
1253 | <name>frameShape</name> | ||
1254 | <enum>NoFrame</enum> | ||
1255 | </property> | ||
1256 | <property stdset="1"> | ||
1257 | <name>frameShadow</name> | ||
1258 | <enum>Plain</enum> | ||
1259 | </property> | ||
1260 | </widget> | ||
1261 | <widget> | ||
1262 | <class>QFrame</class> | ||
1263 | <property stdset="1"> | ||
1264 | <name>name</name> | ||
1265 | <cstring>Snd_GB</cstring> | ||
1266 | </property> | ||
1267 | <property stdset="1"> | ||
1268 | <name>enabled</name> | ||
1269 | <bool>false</bool> | ||
1270 | </property> | ||
1271 | <property stdset="1"> | ||
1272 | <name>sizePolicy</name> | ||
1273 | <sizepolicy> | ||
1274 | <hsizetype>7</hsizetype> | ||
1275 | <vsizetype>5</vsizetype> | ||
1276 | </sizepolicy> | ||
1277 | </property> | ||
1278 | <property stdset="1"> | ||
1279 | <name>frameShape</name> | ||
1280 | <enum>NoFrame</enum> | ||
1281 | </property> | ||
1282 | <property stdset="1"> | ||
1283 | <name>frameShadow</name> | ||
1284 | <enum>Raised</enum> | ||
1285 | </property> | ||
1286 | <property> | ||
1287 | <name>layoutMargin</name> | ||
1288 | </property> | ||
1289 | <property> | ||
1290 | <name>layoutSpacing</name> | ||
1291 | </property> | ||
1292 | <grid> | ||
1293 | <property stdset="1"> | ||
1294 | <name>margin</name> | ||
1295 | <number>0</number> | ||
1296 | </property> | ||
1297 | <property stdset="1"> | ||
1298 | <name>spacing</name> | ||
1299 | <number>1</number> | ||
1300 | </property> | ||
1301 | <widget row="1" column="0" > | ||
1302 | <class>QLabel</class> | ||
1303 | <property stdset="1"> | ||
1304 | <name>name</name> | ||
1305 | <cstring>TextLabel1_5_9_2</cstring> | ||
1306 | </property> | ||
1307 | <property stdset="1"> | ||
1308 | <name>text</name> | ||
1309 | <string>Errors</string> | ||
1310 | </property> | ||
1311 | </widget> | ||
1312 | <widget row="1" column="2" > | ||
1313 | <class>QLabel</class> | ||
1314 | <property stdset="1"> | ||
1315 | <name>name</name> | ||
1316 | <cstring>TextLabel1_5_4_2</cstring> | ||
1317 | </property> | ||
1318 | <property stdset="1"> | ||
1319 | <name>text</name> | ||
1320 | <string>Dropped</string> | ||
1321 | </property> | ||
1322 | </widget> | ||
1323 | <widget row="0" column="0" > | ||
1324 | <class>QLabel</class> | ||
1325 | <property stdset="1"> | ||
1326 | <name>name</name> | ||
1327 | <cstring>TextLabel1_5_3_2</cstring> | ||
1328 | </property> | ||
1329 | <property stdset="1"> | ||
1330 | <name>text</name> | ||
1331 | <string>Bytes</string> | ||
1332 | </property> | ||
1333 | </widget> | ||
1334 | <widget row="1" column="3" > | ||
1335 | <class>QLabel</class> | ||
1336 | <property stdset="1"> | ||
1337 | <name>name</name> | ||
1338 | <cstring>SndDropped_LBL</cstring> | ||
1339 | </property> | ||
1340 | <property stdset="1"> | ||
1341 | <name>sizePolicy</name> | ||
1342 | <sizepolicy> | ||
1343 | <hsizetype>7</hsizetype> | ||
1344 | <vsizetype>1</vsizetype> | ||
1345 | </sizepolicy> | ||
1346 | </property> | ||
1347 | <property stdset="1"> | ||
1348 | <name>frameShape</name> | ||
1349 | <enum>Panel</enum> | ||
1350 | </property> | ||
1351 | <property stdset="1"> | ||
1352 | <name>frameShadow</name> | ||
1353 | <enum>Sunken</enum> | ||
1354 | </property> | ||
1355 | <property stdset="1"> | ||
1356 | <name>indent</name> | ||
1357 | <number>0</number> | ||
1358 | </property> | ||
1359 | </widget> | ||
1360 | <widget row="1" column="1" > | ||
1361 | <class>QLabel</class> | ||
1362 | <property stdset="1"> | ||
1363 | <name>name</name> | ||
1364 | <cstring>SndErrors_LBL</cstring> | ||
1365 | </property> | ||
1366 | <property stdset="1"> | ||
1367 | <name>sizePolicy</name> | ||
1368 | <sizepolicy> | ||
1369 | <hsizetype>7</hsizetype> | ||
1370 | <vsizetype>1</vsizetype> | ||
1371 | </sizepolicy> | ||
1372 | </property> | ||
1373 | <property stdset="1"> | ||
1374 | <name>frameShape</name> | ||
1375 | <enum>Panel</enum> | ||
1376 | </property> | ||
1377 | <property stdset="1"> | ||
1378 | <name>frameShadow</name> | ||
1379 | <enum>Sunken</enum> | ||
1380 | </property> | ||
1381 | <property stdset="1"> | ||
1382 | <name>indent</name> | ||
1383 | <number>0</number> | ||
1384 | </property> | ||
1385 | </widget> | ||
1386 | <widget row="0" column="1" rowspan="1" colspan="3" > | ||
1387 | <class>QLabel</class> | ||
1388 | <property stdset="1"> | ||
1389 | <name>name</name> | ||
1390 | <cstring>SndBytes_LBL</cstring> | ||
1391 | </property> | ||
1392 | <property stdset="1"> | ||
1393 | <name>sizePolicy</name> | ||
1394 | <sizepolicy> | ||
1395 | <hsizetype>7</hsizetype> | ||
1396 | <vsizetype>1</vsizetype> | ||
1397 | </sizepolicy> | ||
1398 | </property> | ||
1399 | <property stdset="1"> | ||
1400 | <name>frameShape</name> | ||
1401 | <enum>Panel</enum> | ||
1402 | </property> | ||
1403 | <property stdset="1"> | ||
1404 | <name>frameShadow</name> | ||
1405 | <enum>Sunken</enum> | ||
1406 | </property> | ||
1407 | <property stdset="1"> | ||
1408 | <name>indent</name> | ||
1409 | <number>0</number> | ||
1410 | </property> | ||
1411 | </widget> | ||
1412 | </grid> | ||
1413 | </widget> | ||
1414 | </hbox> | ||
1415 | </widget> | ||
1416 | <widget> | ||
1417 | <class>QLayoutWidget</class> | ||
1418 | <property stdset="1"> | ||
1419 | <name>name</name> | ||
1420 | <cstring>Layout7</cstring> | ||
1421 | </property> | ||
1422 | <hbox> | ||
1423 | <property stdset="1"> | ||
1424 | <name>margin</name> | ||
1425 | <number>0</number> | ||
1426 | </property> | ||
1427 | <property stdset="1"> | ||
1428 | <name>spacing</name> | ||
1429 | <number>6</number> | ||
1430 | </property> | ||
1431 | <widget> | ||
1432 | <class>QLabel</class> | ||
1433 | <property stdset="1"> | ||
1434 | <name>name</name> | ||
1435 | <cstring>TextLabel1_3</cstring> | ||
1436 | </property> | ||
1437 | <property stdset="1"> | ||
1438 | <name>sizePolicy</name> | ||
1439 | <sizepolicy> | ||
1440 | <hsizetype>0</hsizetype> | ||
1441 | <vsizetype>1</vsizetype> | ||
1442 | </sizepolicy> | ||
1443 | </property> | ||
1444 | <property stdset="1"> | ||
1445 | <name>text</name> | ||
1446 | <string>Others</string> | ||
1447 | </property> | ||
1448 | </widget> | ||
1449 | <spacer> | ||
1450 | <property> | ||
1451 | <name>name</name> | ||
1452 | <cstring>Spacer19</cstring> | ||
1453 | </property> | ||
1454 | <property stdset="1"> | ||
1455 | <name>orientation</name> | ||
1456 | <enum>Horizontal</enum> | ||
1457 | </property> | ||
1458 | <property stdset="1"> | ||
1459 | <name>sizeType</name> | ||
1460 | <enum>Expanding</enum> | ||
1461 | </property> | ||
1462 | <property> | ||
1463 | <name>sizeHint</name> | ||
1464 | <size> | ||
1465 | <width>20</width> | ||
1466 | <height>20</height> | ||
1467 | </size> | ||
1468 | </property> | ||
1469 | </spacer> | ||
1470 | </hbox> | ||
1471 | </widget> | ||
1472 | <widget> | ||
1473 | <class>QLayoutWidget</class> | ||
1474 | <property stdset="1"> | ||
1475 | <name>name</name> | ||
1476 | <cstring>Layout45</cstring> | ||
1477 | </property> | ||
1478 | <property> | ||
1479 | <name>layoutMargin</name> | ||
1480 | </property> | ||
1481 | <property> | ||
1482 | <name>layoutSpacing</name> | ||
1483 | </property> | ||
1484 | <hbox> | ||
1485 | <property stdset="1"> | ||
1486 | <name>margin</name> | ||
1487 | <number>2</number> | ||
1488 | </property> | ||
1489 | <property stdset="1"> | ||
1490 | <name>spacing</name> | ||
1491 | <number>0</number> | ||
1492 | </property> | ||
1493 | <widget> | ||
1494 | <class>QFrame</class> | ||
1495 | <property stdset="1"> | ||
1496 | <name>name</name> | ||
1497 | <cstring>Frame116</cstring> | ||
1498 | </property> | ||
1499 | <property stdset="1"> | ||
1500 | <name>sizePolicy</name> | ||
1501 | <sizepolicy> | ||
1502 | <hsizetype>0</hsizetype> | ||
1503 | <vsizetype>5</vsizetype> | ||
1504 | </sizepolicy> | ||
1505 | </property> | ||
1506 | <property stdset="1"> | ||
1507 | <name>minimumSize</name> | ||
1508 | <size> | ||
1509 | <width>5</width> | ||
1510 | <height>0</height> | ||
1511 | </size> | ||
1512 | </property> | ||
1513 | <property stdset="1"> | ||
1514 | <name>maximumSize</name> | ||
1515 | <size> | ||
1516 | <width>5</width> | ||
1517 | <height>32767</height> | ||
1518 | </size> | ||
1519 | </property> | ||
1520 | <property stdset="1"> | ||
1521 | <name>frameShape</name> | ||
1522 | <enum>NoFrame</enum> | ||
1523 | </property> | ||
1524 | <property stdset="1"> | ||
1525 | <name>frameShadow</name> | ||
1526 | <enum>Raised</enum> | ||
1527 | </property> | ||
1528 | </widget> | ||
1529 | <widget> | ||
1530 | <class>QFrame</class> | ||
1531 | <property stdset="1"> | ||
1532 | <name>name</name> | ||
1533 | <cstring>Collisions_FRM</cstring> | ||
1534 | </property> | ||
1535 | <property stdset="1"> | ||
1536 | <name>enabled</name> | ||
1537 | <bool>false</bool> | ||
1538 | </property> | ||
1539 | <property stdset="1"> | ||
1540 | <name>sizePolicy</name> | ||
1541 | <sizepolicy> | ||
1542 | <hsizetype>7</hsizetype> | ||
1543 | <vsizetype>5</vsizetype> | ||
1544 | </sizepolicy> | ||
1545 | </property> | ||
1546 | <property stdset="1"> | ||
1547 | <name>frameShape</name> | ||
1548 | <enum>NoFrame</enum> | ||
1549 | </property> | ||
1550 | <property stdset="1"> | ||
1551 | <name>frameShadow</name> | ||
1552 | <enum>Raised</enum> | ||
1553 | </property> | ||
1554 | <property> | ||
1555 | <name>layoutMargin</name> | ||
1556 | </property> | ||
1557 | <property> | ||
1558 | <name>layoutSpacing</name> | ||
1559 | </property> | ||
1560 | <hbox> | ||
1561 | <property stdset="1"> | ||
1562 | <name>margin</name> | ||
1563 | <number>0</number> | ||
1564 | </property> | ||
1565 | <property stdset="1"> | ||
1566 | <name>spacing</name> | ||
1567 | <number>2</number> | ||
1568 | </property> | ||
1569 | <widget> | ||
1570 | <class>QLabel</class> | ||
1571 | <property stdset="1"> | ||
1572 | <name>name</name> | ||
1573 | <cstring>TextLabel1_5_3_3</cstring> | ||
1574 | </property> | ||
1575 | <property stdset="1"> | ||
1576 | <name>text</name> | ||
1577 | <string>Collisions</string> | ||
1578 | </property> | ||
1579 | </widget> | ||
1580 | <widget> | ||
1581 | <class>QLabel</class> | ||
1582 | <property stdset="1"> | ||
1583 | <name>name</name> | ||
1584 | <cstring>Collisions_LBL</cstring> | ||
1585 | </property> | ||
1586 | <property stdset="1"> | ||
1587 | <name>sizePolicy</name> | ||
1588 | <sizepolicy> | ||
1589 | <hsizetype>7</hsizetype> | ||
1590 | <vsizetype>1</vsizetype> | ||
1591 | </sizepolicy> | ||
1592 | </property> | ||
1593 | <property stdset="1"> | ||
1594 | <name>frameShape</name> | ||
1595 | <enum>Panel</enum> | ||
1596 | </property> | ||
1597 | <property stdset="1"> | ||
1598 | <name>frameShadow</name> | ||
1599 | <enum>Sunken</enum> | ||
1600 | </property> | ||
1601 | <property stdset="1"> | ||
1602 | <name>indent</name> | ||
1603 | <number>0</number> | ||
1604 | </property> | ||
1605 | </widget> | ||
1606 | <spacer> | ||
1607 | <property> | ||
1608 | <name>name</name> | ||
1609 | <cstring>Spacer18</cstring> | ||
1610 | </property> | ||
1611 | <property stdset="1"> | ||
1612 | <name>orientation</name> | ||
1613 | <enum>Horizontal</enum> | ||
1614 | </property> | ||
1615 | <property stdset="1"> | ||
1616 | <name>sizeType</name> | ||
1617 | <enum>Expanding</enum> | ||
1618 | </property> | ||
1619 | <property> | ||
1620 | <name>sizeHint</name> | ||
1621 | <size> | ||
1622 | <width>20</width> | ||
1623 | <height>20</height> | ||
1624 | </size> | ||
1625 | </property> | ||
1626 | </spacer> | ||
1627 | </hbox> | ||
1628 | </widget> | ||
1629 | </hbox> | ||
1630 | </widget> | ||
1631 | <spacer> | ||
1632 | <property> | ||
1633 | <name>name</name> | ||
1634 | <cstring>Spacer17</cstring> | ||
1635 | </property> | ||
1636 | <property stdset="1"> | ||
1637 | <name>orientation</name> | ||
1638 | <enum>Vertical</enum> | ||
1639 | </property> | ||
1640 | <property stdset="1"> | ||
1641 | <name>sizeType</name> | ||
1642 | <enum>Expanding</enum> | ||
1643 | </property> | ||
1644 | <property> | ||
1645 | <name>sizeHint</name> | ||
1646 | <size> | ||
1647 | <width>20</width> | ||
1648 | <height>20</height> | ||
1649 | </size> | ||
1650 | </property> | ||
1651 | </spacer> | ||
1652 | <widget> | ||
1653 | <class>QLayoutWidget</class> | ||
1654 | <property stdset="1"> | ||
1655 | <name>name</name> | ||
1656 | <cstring>Layout17</cstring> | ||
1657 | </property> | ||
1658 | <hbox> | ||
1659 | <property stdset="1"> | ||
1660 | <name>margin</name> | ||
1661 | <number>0</number> | ||
1662 | </property> | ||
1663 | <property stdset="1"> | ||
1664 | <name>spacing</name> | ||
1665 | <number>6</number> | ||
1666 | </property> | ||
1667 | <widget> | ||
1668 | <class>QCheckBox</class> | ||
1669 | <property stdset="1"> | ||
1670 | <name>name</name> | ||
1671 | <cstring>Refresh_CB</cstring> | ||
1672 | </property> | ||
1673 | <property stdset="1"> | ||
1674 | <name>text</name> | ||
1675 | <string>Live feed </string> | ||
1676 | </property> | ||
1677 | </widget> | ||
1678 | <spacer> | ||
1679 | <property> | ||
1680 | <name>name</name> | ||
1681 | <cstring>Spacer57</cstring> | ||
1682 | </property> | ||
1683 | <property stdset="1"> | ||
1684 | <name>orientation</name> | ||
1685 | <enum>Horizontal</enum> | ||
1686 | </property> | ||
1687 | <property stdset="1"> | ||
1688 | <name>sizeType</name> | ||
1689 | <enum>Expanding</enum> | ||
1690 | </property> | ||
1691 | <property> | ||
1692 | <name>sizeHint</name> | ||
1693 | <size> | ||
1694 | <width>20</width> | ||
1695 | <height>20</height> | ||
1696 | </size> | ||
1697 | </property> | ||
1698 | </spacer> | ||
1699 | </hbox> | ||
1700 | </widget> | ||
1701 | </vbox> | ||
1702 | </widget> | ||
1703 | </widget> | ||
1704 | </vbox> | ||
1705 | </widget> | ||
1706 | <connections> | ||
1707 | <connection> | ||
1708 | <sender>Refresh_CB</sender> | ||
1709 | <signal>toggled(bool)</signal> | ||
1710 | <receiver>Profile_FRM</receiver> | ||
1711 | <slot>SLOT_AutoRefresh(bool)</slot> | ||
1712 | </connection> | ||
1713 | <slot access="public">SLOT_AutoRefresh(bool)</slot> | ||
1714 | </connections> | ||
1715 | </UI> | ||
diff --git a/noncore/settings/networksettings2/profile/profile_NN.cpp b/noncore/settings/networksettings2/profile/profile_NN.cpp new file mode 100644 index 0000000..c39b86f --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profile_NN.cpp | |||
@@ -0,0 +1,61 @@ | |||
1 | #include "profile_NN.h" | ||
2 | #include "profile_NNI.h" | ||
3 | |||
4 | static const char * ProfileNeeds[] = | ||
5 | { "connection", | ||
6 | 0 | ||
7 | }; | ||
8 | |||
9 | /** | ||
10 | * Constructor, find all of the possible interfaces | ||
11 | */ | ||
12 | ProfileNetNode::ProfileNetNode() : ANetNode() { | ||
13 | } | ||
14 | |||
15 | /** | ||
16 | * Delete any interfaces that we own. | ||
17 | */ | ||
18 | ProfileNetNode::~ProfileNetNode(){ | ||
19 | } | ||
20 | |||
21 | const QString ProfileNetNode::nodeDescription(){ | ||
22 | return tr("\ | ||
23 | <p>Define use of an IP connection.</p>\ | ||
24 | <p>Configure if and when this connection needs to be established</p>\ | ||
25 | " | ||
26 | ); | ||
27 | } | ||
28 | |||
29 | ANetNodeInstance * ProfileNetNode::createInstance( void ) { | ||
30 | return new AProfile( this ); | ||
31 | } | ||
32 | |||
33 | const char ** ProfileNetNode::needs( void ) { | ||
34 | return ProfileNeeds; | ||
35 | } | ||
36 | |||
37 | const char * ProfileNetNode::provides( void ) { | ||
38 | return "fullsetup"; | ||
39 | } | ||
40 | |||
41 | bool ProfileNetNode::generateProperFilesFor( | ||
42 | ANetNodeInstance * ) { | ||
43 | return 1; | ||
44 | } | ||
45 | |||
46 | bool ProfileNetNode::hasDataFor( const QString & ) { | ||
47 | return 0; | ||
48 | } | ||
49 | |||
50 | bool ProfileNetNode::generateDataForCommonFile( | ||
51 | SystemFile & , | ||
52 | long, | ||
53 | ANetNodeInstance * ) { | ||
54 | return 1; | ||
55 | } | ||
56 | |||
57 | extern "C" { | ||
58 | void create_plugin( QList<ANetNode> & PNN ) { | ||
59 | PNN.append( new ProfileNetNode() ); | ||
60 | } | ||
61 | } | ||
diff --git a/noncore/settings/networksettings2/profile/profile_NN.h b/noncore/settings/networksettings2/profile/profile_NN.h new file mode 100644 index 0000000..2b469c7 --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profile_NN.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef PROFILE_NETNODE_H | ||
2 | #define PROFILE_NETNODE_H | ||
3 | |||
4 | #include "netnode.h" | ||
5 | |||
6 | class AProfile; | ||
7 | |||
8 | class ProfileNetNode : public ANetNode{ | ||
9 | |||
10 | Q_OBJECT | ||
11 | |||
12 | public: | ||
13 | |||
14 | ProfileNetNode(); | ||
15 | virtual ~ProfileNetNode(); | ||
16 | |||
17 | virtual const QString pixmapName() | ||
18 | { return "commprofile"; } | ||
19 | |||
20 | virtual const QString nodeName() | ||
21 | { return tr("Regular profile"); } | ||
22 | |||
23 | virtual const QString nodeDescription() ; | ||
24 | |||
25 | virtual ANetNodeInstance * createInstance( void ); | ||
26 | |||
27 | virtual const char ** needs( void ); | ||
28 | virtual const char * provides( void ); | ||
29 | |||
30 | virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); | ||
31 | virtual bool hasDataFor( const QString & S ); | ||
32 | virtual bool generateDataForCommonFile( | ||
33 | SystemFile & SF, long DevNr, ANetNodeInstance * NNI ); | ||
34 | |||
35 | private: | ||
36 | |||
37 | }; | ||
38 | |||
39 | extern "C" | ||
40 | { | ||
41 | void create_plugin( QList<ANetNode> & PNN ); | ||
42 | }; | ||
43 | |||
44 | #endif | ||
diff --git a/noncore/settings/networksettings2/profile/profile_NNI.cpp b/noncore/settings/networksettings2/profile/profile_NNI.cpp new file mode 100644 index 0000000..bc0118e --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profile_NNI.cpp | |||
@@ -0,0 +1,48 @@ | |||
1 | #include "profileedit.h" | ||
2 | #include "profile_NNI.h" | ||
3 | #include "profile_NN.h" | ||
4 | |||
5 | AProfile::AProfile( ProfileNetNode * PNN ) : ANetNodeInstance( PNN ) { | ||
6 | Data.Automatic = 1; | ||
7 | Data.Confirm = 0; | ||
8 | Data.Description = ""; | ||
9 | Data.Disabled = 0; | ||
10 | GUI = 0; | ||
11 | RT = 0; | ||
12 | } | ||
13 | |||
14 | void AProfile::setSpecificAttribute( QString & Attr, QString & Value ) { | ||
15 | |||
16 | if ( Attr == "automatic" ) { | ||
17 | Data.Automatic = (Value=="yes"); | ||
18 | } else if ( Attr == "preconfirm" ) { | ||
19 | Data.Confirm = (Value=="yes"); | ||
20 | } else if ( Attr == "disabled" ) { | ||
21 | Data.Disabled = (Value=="yes"); | ||
22 | } else if ( Attr == "description" ) { | ||
23 | Data.Description = Value; | ||
24 | } | ||
25 | } | ||
26 | |||
27 | void AProfile::saveSpecificAttribute( QTextStream & TS ) { | ||
28 | TS << "automatic=" << ((Data.Automatic) ? "yes" : "no") << endl; | ||
29 | TS << "preconfirm=" << ((Data.Confirm) ? "yes" : "no") << endl; | ||
30 | TS << "disabled=" << ((Data.Disabled) ? "yes" : "no") << endl; | ||
31 | TS << "description=" << Data.Description << endl; | ||
32 | } | ||
33 | |||
34 | QWidget * AProfile::edit( QWidget * parent ) { | ||
35 | GUI = new ProfileEdit( parent, this ); | ||
36 | GUI->showData( Data ); | ||
37 | return GUI; | ||
38 | } | ||
39 | |||
40 | QString AProfile::acceptable( void ) { | ||
41 | return ( GUI ) ? GUI->acceptable( ) : QString(); | ||
42 | } | ||
43 | |||
44 | void AProfile::commit( void ) { | ||
45 | if( GUI && GUI->commit( Data ) ) | ||
46 | setModified( 1 ); | ||
47 | } | ||
48 | |||
diff --git a/noncore/settings/networksettings2/profile/profile_NNI.h b/noncore/settings/networksettings2/profile/profile_NNI.h new file mode 100644 index 0000000..dfeb178 --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profile_NNI.h | |||
@@ -0,0 +1,45 @@ | |||
1 | #ifndef PROFILE_H | ||
2 | #define PROFILE_H | ||
3 | |||
4 | #include <netnode.h> | ||
5 | #include "profiledata.h" | ||
6 | #include "profilerun.h" | ||
7 | |||
8 | class ProfileNetNode; | ||
9 | class ProfileEdit; | ||
10 | |||
11 | class AProfile : public ANetNodeInstance { | ||
12 | |||
13 | public : | ||
14 | |||
15 | AProfile( ProfileNetNode * PNN ); | ||
16 | |||
17 | QWidget * edit( QWidget * parent ); | ||
18 | QString acceptable( void ); | ||
19 | void commit( void ); | ||
20 | |||
21 | const QString & description( void ) | ||
22 | { return Data.Description; } | ||
23 | RuntimeInfo * runtime( void ) | ||
24 | { if( RT == 0 ) | ||
25 | RT = new ProfileRun( this, Data ); | ||
26 | return RT; | ||
27 | } | ||
28 | |||
29 | virtual void * data( void ) | ||
30 | { return (void *)&Data; } | ||
31 | |||
32 | protected : | ||
33 | |||
34 | virtual void setSpecificAttribute( QString & Attr, QString & Value ); | ||
35 | virtual void saveSpecificAttribute( QTextStream & TS ); | ||
36 | |||
37 | private : | ||
38 | |||
39 | ProfileEdit * GUI; | ||
40 | ProfileData Data; | ||
41 | ProfileRun * RT; | ||
42 | |||
43 | }; | ||
44 | |||
45 | #endif | ||
diff --git a/noncore/settings/networksettings2/profile/profiledata.h b/noncore/settings/networksettings2/profile/profiledata.h new file mode 100644 index 0000000..b4168e2 --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profiledata.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #ifndef PROFILE_DATA_H | ||
2 | #define PROFILE_DATA_H | ||
3 | |||
4 | #include <qstring.h> | ||
5 | typedef struct ProfileData { | ||
6 | QString Description; | ||
7 | // start up automatically | ||
8 | bool Automatic; | ||
9 | // if started up automatically, ask user for confirmation | ||
10 | bool Confirm; | ||
11 | // Do not bring this connection up | ||
12 | bool Disabled; | ||
13 | } ProfileData_t; | ||
14 | |||
15 | #endif | ||
diff --git a/noncore/settings/networksettings2/profile/profileedit.cpp b/noncore/settings/networksettings2/profile/profileedit.cpp new file mode 100644 index 0000000..3f72c52 --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profileedit.cpp | |||
@@ -0,0 +1,93 @@ | |||
1 | #include <qlabel.h> | ||
2 | #include <qframe.h> | ||
3 | #include <qcheckbox.h> | ||
4 | #include <qmultilineedit.h> | ||
5 | #include <qcheckbox.h> | ||
6 | |||
7 | #include <GUIUtils.h> | ||
8 | #include <asdevice.h> | ||
9 | #include <resources.h> | ||
10 | |||
11 | #include "profileedit.h" | ||
12 | |||
13 | ProfileEdit::ProfileEdit( QWidget * Parent, ANetNodeInstance * TNNI ) : | ||
14 | ProfileGUI( Parent ), TrafficRefresh(this) { | ||
15 | InterfaceInfo * II; | ||
16 | |||
17 | NNI = TNNI; | ||
18 | Dev = NNI->runtime()->device(); | ||
19 | if( ( II = Dev->assignedInterface() ) ) { | ||
20 | Refresh_CB->setEnabled( TRUE ); | ||
21 | Snd_GB->setEnabled( TRUE ); | ||
22 | Rcv_GB->setEnabled( TRUE ); | ||
23 | Collisions_FRM->setEnabled( TRUE ); | ||
24 | // show current content | ||
25 | SLOT_Refresh(); | ||
26 | |||
27 | // fill in static data | ||
28 | InterfaceName_LBL->setText( II->Name ); | ||
29 | IPAddress_LBL->setText( II->Address ); | ||
30 | SubnetMask_LBL->setText( II->Netmask ); | ||
31 | Broadcast_LBL->setText( II->BCastAddress ); | ||
32 | MACAddress_LBL->setText( II->MACAddress ); | ||
33 | if( II->IsPointToPoint ) { | ||
34 | PointToPoint_LBL->setText( II->DstAddress ); | ||
35 | } | ||
36 | QString S; | ||
37 | InterfaceName_LBL->setText( II->Name ); | ||
38 | if( II->HasMulticast ) { | ||
39 | S += "Multicast"; | ||
40 | } | ||
41 | if( ! S.isEmpty() ) { | ||
42 | S.prepend( " : " ); | ||
43 | } | ||
44 | InterfaceOptions_LBL->setText( S ); | ||
45 | } | ||
46 | |||
47 | connect( &TrafficRefresh, SIGNAL( timeout() ), | ||
48 | this, SLOT( SLOT_Refresh() ) ); | ||
49 | } | ||
50 | |||
51 | QString ProfileEdit::acceptable( void ) { | ||
52 | return QString(); | ||
53 | } | ||
54 | |||
55 | void ProfileEdit::showData( ProfileData_t & Data ) { | ||
56 | Description_LE->setText( Data.Description ); | ||
57 | Automatic_CB->setChecked( Data.Automatic ); | ||
58 | Confirm_CB->setChecked( Data.Confirm ); | ||
59 | Disabled_CB->setChecked( Data.Disabled ); | ||
60 | } | ||
61 | |||
62 | |||
63 | bool ProfileEdit::commit( ProfileData_t & Data ) { | ||
64 | bool SM = 0; | ||
65 | TXTM( Data.Description, Description_LE, SM ); | ||
66 | |||
67 | CBM( Data.Automatic, Automatic_CB, SM ); | ||
68 | CBM( Data.Disabled, Disabled_CB, SM ); | ||
69 | CBM( Data.Confirm, Confirm_CB, SM ); | ||
70 | |||
71 | return SM; | ||
72 | } | ||
73 | |||
74 | void ProfileEdit::SLOT_Refresh( void ) { | ||
75 | InterfaceInfo * II = Dev->assignedInterface(); | ||
76 | NSResources->system().refreshStatistics( *II ); | ||
77 | RcvBytes_LBL->setText( II->RcvBytes ); | ||
78 | SndBytes_LBL->setText( II->SndBytes ); | ||
79 | RcvErrors_LBL->setText( II->RcvErrors ); | ||
80 | SndErrors_LBL->setText( II->SndErrors ); | ||
81 | RcvDropped_LBL->setText( II->RcvDropped ); | ||
82 | SndDropped_LBL->setText( II->SndDropped ); | ||
83 | Collisions_LBL->setText( II->Collisions ); | ||
84 | } | ||
85 | |||
86 | void ProfileEdit::SLOT_AutoRefresh( bool ar ) { | ||
87 | if( ar ) { | ||
88 | TrafficRefresh.start( 1000 ); | ||
89 | SLOT_Refresh(); | ||
90 | } else { | ||
91 | TrafficRefresh.stop(); | ||
92 | } | ||
93 | } | ||
diff --git a/noncore/settings/networksettings2/profile/profileedit.h b/noncore/settings/networksettings2/profile/profileedit.h new file mode 100644 index 0000000..8ca34be --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profileedit.h | |||
@@ -0,0 +1,29 @@ | |||
1 | #include "profiledata.h" | ||
2 | #include "profileGUI.h" | ||
3 | |||
4 | #include <qtimer.h> | ||
5 | class ANetNodeInstance; | ||
6 | class AsDevice; | ||
7 | |||
8 | class ProfileEdit : public ProfileGUI { | ||
9 | |||
10 | Q_OBJECT | ||
11 | |||
12 | public : | ||
13 | |||
14 | ProfileEdit( QWidget * parent, ANetNodeInstance * NNI ); | ||
15 | QString acceptable( void ); | ||
16 | bool commit( ProfileData_t & Data ); | ||
17 | void showData( ProfileData_t & Data ); | ||
18 | |||
19 | public slots : | ||
20 | |||
21 | void SLOT_AutoRefresh( bool ); | ||
22 | void SLOT_Refresh( void ); | ||
23 | |||
24 | private : | ||
25 | |||
26 | QTimer TrafficRefresh; | ||
27 | ANetNodeInstance * NNI; | ||
28 | AsDevice * Dev; | ||
29 | }; | ||
diff --git a/noncore/settings/networksettings2/profile/profilerun.cpp b/noncore/settings/networksettings2/profile/profilerun.cpp new file mode 100644 index 0000000..90c37ed --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profilerun.cpp | |||
@@ -0,0 +1,67 @@ | |||
1 | #include <resources.h> | ||
2 | |||
3 | #include "profilerun.h" | ||
4 | |||
5 | void ProfileRun::detectState( NodeCollection * NC ) { | ||
6 | if( Data->Disabled ) { | ||
7 | NC->setCurrentState( Disabled ); | ||
8 | } else { | ||
9 | // find next item in connection | ||
10 | // convert to runtime and ask to detect the state | ||
11 | netNode()->nextNode()->runtime()->detectState( NC ); | ||
12 | } | ||
13 | } | ||
14 | |||
15 | bool ProfileRun::setState( NodeCollection * NC, Action_t A ) { | ||
16 | ANetNodeInstance * NNNI; | ||
17 | |||
18 | NNNI = netNode()->nextNode(); | ||
19 | switch ( A ) { | ||
20 | case Enable : | ||
21 | if( NC->currentState() == Disabled ) { | ||
22 | NC->setCurrentState( Off ); // at least | ||
23 | // ... but request deeper | ||
24 | NNNI->runtime()->detectState(NC); | ||
25 | return 1; | ||
26 | } | ||
27 | return 1; | ||
28 | case Disable : | ||
29 | if( NC->currentState() == IsUp ) { | ||
30 | // bring down -> make available | ||
31 | NNNI->runtime()->setState(NC, Down); | ||
32 | } | ||
33 | if( NC->currentState() == Available ) { | ||
34 | // make unavailable | ||
35 | NNNI->runtime()->setState(NC, Deactivate); | ||
36 | } | ||
37 | if( NC->currentState() > Available ) { | ||
38 | // could not disable | ||
39 | return 0; | ||
40 | } | ||
41 | NC->setCurrentState( Disabled ); | ||
42 | return 1; | ||
43 | default : | ||
44 | break; | ||
45 | } | ||
46 | return NNNI->runtime()->setState(NC, A); | ||
47 | } | ||
48 | |||
49 | bool ProfileRun::canSetState( State_t Curr, Action_t A ) { | ||
50 | RuntimeInfo * RI; | ||
51 | switch ( A ) { | ||
52 | case Enable : | ||
53 | case Disable : | ||
54 | // always possible | ||
55 | return 1; | ||
56 | default : | ||
57 | break; | ||
58 | } | ||
59 | RI = netNode()->nextNode()->runtime(); | ||
60 | return ( Curr != Disabled ) ? | ||
61 | RI->canSetState(Curr, A) : 0; | ||
62 | } | ||
63 | |||
64 | bool ProfileRun::handlesInterface( const QString & S ) { | ||
65 | // donno -> pass deeper | ||
66 | return netNode()->nextNode()->runtime()->handlesInterface(S); | ||
67 | } | ||
diff --git a/noncore/settings/networksettings2/profile/profilerun.h b/noncore/settings/networksettings2/profile/profilerun.h new file mode 100644 index 0000000..d3797b5 --- a/dev/null +++ b/noncore/settings/networksettings2/profile/profilerun.h | |||
@@ -0,0 +1,28 @@ | |||
1 | #ifndef PROFILERUN_H | ||
2 | #define PROFILERUN_H | ||
3 | |||
4 | #include <asfullsetup.h> | ||
5 | #include "profiledata.h" | ||
6 | |||
7 | class ProfileRun : public AsFullSetup { | ||
8 | |||
9 | public : | ||
10 | |||
11 | ProfileRun( ANetNodeInstance * NNI, ProfileData & D ) : | ||
12 | AsFullSetup( NNI ) | ||
13 | { Data = &D; } | ||
14 | |||
15 | void detectState( NodeCollection * NC ); | ||
16 | bool setState( NodeCollection * NC, Action_t A ); | ||
17 | bool canSetState( State_t Curr, Action_t A ); | ||
18 | |||
19 | bool handlesInterface( const QString & I ); | ||
20 | |||
21 | virtual const QString & description( void ) | ||
22 | { return Data->Description; } | ||
23 | private : | ||
24 | |||
25 | ProfileData * Data; | ||
26 | |||
27 | }; | ||
28 | #endif | ||
diff --git a/noncore/settings/networksettings2/setmacaddress.sh b/noncore/settings/networksettings2/setmacaddress.sh new file mode 100755 index 0000000..f9abca2 --- a/dev/null +++ b/noncore/settings/networksettings2/setmacaddress.sh | |||
@@ -0,0 +1,4 @@ | |||
1 | #!/bin/sh | ||
2 | BDIR=/opt/QtPalmtop/etc/networktemplates | ||
3 | [ ! -z "$1" -a -f ${BDIR}/$1.mac ] && ifconfig $1 hw ether `cat ${BDIR}/$1.mac` | ||
4 | exit 0 | ||
diff --git a/noncore/settings/networksettings2/usb/config.in b/noncore/settings/networksettings2/usb/config.in new file mode 100644 index 0000000..988601a --- a/dev/null +++ b/noncore/settings/networksettings2/usb/config.in | |||
@@ -0,0 +1,4 @@ | |||
1 | config NS2USB | ||
2 | boolean "opie-networksettings2plugin-usb (set up USB)" | ||
3 | default "n" if NS2 | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && NS2 && NS2CORE | ||
diff --git a/noncore/settings/networksettings2/usb/usb.pro b/noncore/settings/networksettings2/usb/usb.pro new file mode 100644 index 0000000..cc2f9db --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usb.pro | |||
@@ -0,0 +1,18 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG += qt warn_on release | ||
3 | DESTDIR = $(OPIEDIR)/plugins/networksettings2 | ||
4 | HEADERS = usb_NN.h \ | ||
5 | usb_NNI.h \ | ||
6 | usbedit.h | ||
7 | SOURCES = usb_NN.cpp \ | ||
8 | usb_NNI.cpp \ | ||
9 | usbedit.cpp \ | ||
10 | usbrun.cpp | ||
11 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
12 | DEPENDPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
13 | LIBS += -lqpe | ||
14 | INTERFACES= usbGUI.ui | ||
15 | TARGET = usb | ||
16 | VERSION = 1.0.0 | ||
17 | |||
18 | include ( $(OPIEDIR)/include.pro ) | ||
diff --git a/noncore/settings/networksettings2/usb/usbGUI.ui b/noncore/settings/networksettings2/usb/usbGUI.ui new file mode 100644 index 0000000..bd78ab4 --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usbGUI.ui | |||
@@ -0,0 +1,57 @@ | |||
1 | <!DOCTYPE UI><UI> | ||
2 | <class>USBGUI</class> | ||
3 | <widget> | ||
4 | <class>QWidget</class> | ||
5 | <property stdset="1"> | ||
6 | <name>name</name> | ||
7 | <cstring>USB_FRM</cstring> | ||
8 | </property> | ||
9 | <property stdset="1"> | ||
10 | <name>geometry</name> | ||
11 | <rect> | ||
12 | <x>0</x> | ||
13 | <y>0</y> | ||
14 | <width>279</width> | ||
15 | <height>199</height> | ||
16 | </rect> | ||
17 | </property> | ||
18 | <property stdset="1"> | ||
19 | <name>caption</name> | ||
20 | <string>USB</string> | ||
21 | </property> | ||
22 | <property> | ||
23 | <name>layoutMargin</name> | ||
24 | </property> | ||
25 | <property> | ||
26 | <name>layoutSpacing</name> | ||
27 | </property> | ||
28 | <vbox> | ||
29 | <property stdset="1"> | ||
30 | <name>margin</name> | ||
31 | <number>0</number> | ||
32 | </property> | ||
33 | <property stdset="1"> | ||
34 | <name>spacing</name> | ||
35 | <number>0</number> | ||
36 | </property> | ||
37 | <widget> | ||
38 | <class>QLabel</class> | ||
39 | <property stdset="1"> | ||
40 | <name>name</name> | ||
41 | <cstring>TextLabel3</cstring> | ||
42 | </property> | ||
43 | <property stdset="1"> | ||
44 | <name>text</name> | ||
45 | <string>Nothing to configure</string> | ||
46 | </property> | ||
47 | <property stdset="1"> | ||
48 | <name>alignment</name> | ||
49 | <set>AlignCenter</set> | ||
50 | </property> | ||
51 | <property> | ||
52 | <name>hAlign</name> | ||
53 | </property> | ||
54 | </widget> | ||
55 | </vbox> | ||
56 | </widget> | ||
57 | </UI> | ||
diff --git a/noncore/settings/networksettings2/usb/usb_NN.cpp b/noncore/settings/networksettings2/usb/usb_NN.cpp new file mode 100644 index 0000000..c65771d --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usb_NN.cpp | |||
@@ -0,0 +1,60 @@ | |||
1 | #include "usb_NN.h" | ||
2 | #include "usb_NNI.h" | ||
3 | |||
4 | static const char * USBNeeds[] = | ||
5 | { 0 | ||
6 | }; | ||
7 | |||
8 | /** | ||
9 | * Constructor, find all of the possible interfaces | ||
10 | */ | ||
11 | USBNetNode::USBNetNode() : ANetNode() { | ||
12 | } | ||
13 | |||
14 | /** | ||
15 | * Delete any interfaces that we own. | ||
16 | */ | ||
17 | USBNetNode::~USBNetNode(){ | ||
18 | } | ||
19 | |||
20 | const QString USBNetNode::nodeDescription(){ | ||
21 | return tr("\ | ||
22 | <p>Configure Ethernet over USB.</p>\ | ||
23 | <p>Use this for a computer to computer USB cable connection</p>\ | ||
24 | " | ||
25 | ); | ||
26 | } | ||
27 | |||
28 | ANetNodeInstance * USBNetNode::createInstance( void ) { | ||
29 | return new AUSB( this ); | ||
30 | } | ||
31 | |||
32 | const char ** USBNetNode::needs( void ) { | ||
33 | return USBNeeds; | ||
34 | } | ||
35 | |||
36 | const char * USBNetNode::provides( void ) { | ||
37 | return "device"; | ||
38 | } | ||
39 | |||
40 | bool USBNetNode::generateProperFilesFor( | ||
41 | ANetNodeInstance * ) { | ||
42 | return 1; | ||
43 | } | ||
44 | |||
45 | bool USBNetNode::hasDataFor( const QString & S ) { | ||
46 | return (S== "interfaces"); | ||
47 | } | ||
48 | |||
49 | bool USBNetNode::generateDataForCommonFile( | ||
50 | SystemFile & S , | ||
51 | long DevNr, | ||
52 | ANetNodeInstance * NNI) { | ||
53 | return ((AUSB *)NNI)->generateDataForCommonFile(S, DevNr); | ||
54 | } | ||
55 | |||
56 | extern "C" { | ||
57 | void create_plugin( QList<ANetNode> & PNN ) { | ||
58 | PNN.append( new USBNetNode() ); | ||
59 | } | ||
60 | } | ||
diff --git a/noncore/settings/networksettings2/usb/usb_NN.h b/noncore/settings/networksettings2/usb/usb_NN.h new file mode 100644 index 0000000..3871afc --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usb_NN.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef USB_NETNODE_H | ||
2 | #define USB_NETNODE_H | ||
3 | |||
4 | #include "netnode.h" | ||
5 | |||
6 | class AUSB; | ||
7 | |||
8 | class USBNetNode : public ANetNode{ | ||
9 | |||
10 | Q_OBJECT | ||
11 | |||
12 | public: | ||
13 | |||
14 | USBNetNode(); | ||
15 | virtual ~USBNetNode(); | ||
16 | |||
17 | virtual const QString pixmapName() | ||
18 | { return "usb"; } | ||
19 | |||
20 | virtual const QString nodeName() | ||
21 | { return tr("USB Cable Connect"); } | ||
22 | |||
23 | virtual const QString nodeDescription() ; | ||
24 | |||
25 | virtual ANetNodeInstance * createInstance( void ); | ||
26 | |||
27 | virtual const char ** needs( void ); | ||
28 | virtual const char * provides( void ); | ||
29 | |||
30 | virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); | ||
31 | virtual bool hasDataFor( const QString & S ); | ||
32 | virtual bool generateDataForCommonFile( | ||
33 | SystemFile & SF, long DevNr, ANetNodeInstance * NNI ); | ||
34 | |||
35 | private: | ||
36 | |||
37 | }; | ||
38 | |||
39 | extern "C" | ||
40 | { | ||
41 | void create_plugin( QList<ANetNode> & PNN ); | ||
42 | }; | ||
43 | |||
44 | #endif | ||
diff --git a/noncore/settings/networksettings2/usb/usb_NNI.cpp b/noncore/settings/networksettings2/usb/usb_NNI.cpp new file mode 100644 index 0000000..4729416 --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usb_NNI.cpp | |||
@@ -0,0 +1,46 @@ | |||
1 | #include <qpe/qpeapplication.h> | ||
2 | #include "usbedit.h" | ||
3 | #include "usb_NNI.h" | ||
4 | #include "usb_NN.h" | ||
5 | |||
6 | AUSB::AUSB( USBNetNode * PNN ) : ANetNodeInstance( PNN ) { | ||
7 | |||
8 | GUI = 0; | ||
9 | RT = 0; | ||
10 | } | ||
11 | |||
12 | void AUSB::setSpecificAttribute( QString & , QString & ) { | ||
13 | } | ||
14 | |||
15 | void AUSB::saveSpecificAttribute( QTextStream & ) { | ||
16 | } | ||
17 | |||
18 | |||
19 | QWidget * AUSB::edit( QWidget * parent ) { | ||
20 | GUI = new USBEdit( parent ); | ||
21 | GUI->showData( Data ); | ||
22 | return GUI; | ||
23 | } | ||
24 | |||
25 | QString AUSB::acceptable( void ) { | ||
26 | return ( GUI ) ? GUI->acceptable( ) : QString(); | ||
27 | } | ||
28 | |||
29 | void AUSB::commit( void ) { | ||
30 | if( GUI && GUI->commit( Data ) ) { | ||
31 | setModified( 1 ); | ||
32 | } | ||
33 | } | ||
34 | |||
35 | bool AUSB::generateDataForCommonFile( SystemFile & S, long DevNr ) { | ||
36 | AsDevice * Dev = runtime()->device(); | ||
37 | QString NIC = Dev->genNic( DevNr ); | ||
38 | |||
39 | if( S.name() == "interfaces" ) { | ||
40 | // generate mapping stanza for this interface | ||
41 | S << " pre-up " << QPEApplication::qpeDir() << "bin/setmacaddress.sh " << NIC << " || true" << endl; | ||
42 | } | ||
43 | return 0; | ||
44 | } | ||
45 | |||
46 | |||
diff --git a/noncore/settings/networksettings2/usb/usb_NNI.h b/noncore/settings/networksettings2/usb/usb_NNI.h new file mode 100644 index 0000000..b09f17a --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usb_NNI.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef USB_H | ||
2 | #define USB_H | ||
3 | |||
4 | #include <netnode.h> | ||
5 | #include "usbdata.h" | ||
6 | #include "usbrun.h" | ||
7 | |||
8 | class USBNetNode; | ||
9 | class USBEdit; | ||
10 | |||
11 | class AUSB : public ANetNodeInstance { | ||
12 | |||
13 | public : | ||
14 | |||
15 | AUSB( USBNetNode * PNN ); | ||
16 | |||
17 | QWidget * edit( QWidget * parent ); | ||
18 | QString acceptable( void ); | ||
19 | void commit( void ); | ||
20 | |||
21 | RuntimeInfo * runtime( void ) | ||
22 | { if( RT == 0 ) | ||
23 | RT = new USBRun( this, Data ); | ||
24 | return RT; | ||
25 | } | ||
26 | |||
27 | virtual void * data( void ) | ||
28 | { return (void *)&Data; } | ||
29 | |||
30 | bool generateDataForCommonFile( SystemFile & S, long DevNr ); | ||
31 | |||
32 | protected : | ||
33 | |||
34 | virtual void setSpecificAttribute( QString & Attr, QString & Value ); | ||
35 | virtual void saveSpecificAttribute( QTextStream & TS ); | ||
36 | |||
37 | private : | ||
38 | |||
39 | USBEdit * GUI; | ||
40 | USBData Data; | ||
41 | USBRun * RT; | ||
42 | }; | ||
43 | |||
44 | #endif | ||
diff --git a/noncore/settings/networksettings2/usb/usbdata.h b/noncore/settings/networksettings2/usb/usbdata.h new file mode 100644 index 0000000..c59f508 --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usbdata.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef USB_DATA_H | ||
2 | #define USB_DATA_H | ||
3 | |||
4 | typedef struct USBData { | ||
5 | bool Fake; | ||
6 | } USBData_t; | ||
7 | |||
8 | #endif | ||
diff --git a/noncore/settings/networksettings2/usb/usbedit.cpp b/noncore/settings/networksettings2/usb/usbedit.cpp new file mode 100644 index 0000000..153c497 --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usbedit.cpp | |||
@@ -0,0 +1,17 @@ | |||
1 | #include <GUIUtils.h> | ||
2 | #include "usbedit.h" | ||
3 | |||
4 | USBEdit::USBEdit( QWidget * Parent ) : USBGUI( Parent ){ | ||
5 | |||
6 | } | ||
7 | |||
8 | QString USBEdit::acceptable( void ) { | ||
9 | return QString(); | ||
10 | } | ||
11 | |||
12 | void USBEdit::showData( USBData_t & Data ) { | ||
13 | } | ||
14 | |||
15 | bool USBEdit::commit( USBData_t & Data ) { | ||
16 | return 1; | ||
17 | } | ||
diff --git a/noncore/settings/networksettings2/usb/usbedit.h b/noncore/settings/networksettings2/usb/usbedit.h new file mode 100644 index 0000000..441f2f0 --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usbedit.h | |||
@@ -0,0 +1,12 @@ | |||
1 | #include "usbdata.h" | ||
2 | #include "usbGUI.h" | ||
3 | |||
4 | class USBEdit : public USBGUI { | ||
5 | |||
6 | public : | ||
7 | |||
8 | USBEdit( QWidget * parent ); | ||
9 | QString acceptable( void ); | ||
10 | bool commit( USBData_t & Data ); | ||
11 | void showData( USBData_t & Data ); | ||
12 | }; | ||
diff --git a/noncore/settings/networksettings2/usb/usbrun.cpp b/noncore/settings/networksettings2/usb/usbrun.cpp new file mode 100644 index 0000000..49b5a77 --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usbrun.cpp | |||
@@ -0,0 +1,171 @@ | |||
1 | #include <qfile.h> | ||
2 | #include <qfileinfo.h> | ||
3 | #include <qtextstream.h> | ||
4 | #include <resources.h> | ||
5 | #include "usbrun.h" | ||
6 | |||
7 | void USBRun::detectState( NodeCollection * NC ) { | ||
8 | // unavailable : no card found | ||
9 | // available : card found and assigned to us or free | ||
10 | // up : card found and assigned to us and up | ||
11 | QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); | ||
12 | System & Sys = NSResources->system(); | ||
13 | InterfaceInfo * Run; | ||
14 | QFile F( S ); | ||
15 | |||
16 | if( F.open( IO_ReadOnly ) ) { | ||
17 | // could open file -> read interface and assign | ||
18 | QString X; | ||
19 | QTextStream TS(&F); | ||
20 | X = TS.readLine(); | ||
21 | // find interface | ||
22 | if( handlesInterface( X ) ) { | ||
23 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | ||
24 | It.current(); | ||
25 | ++It ) { | ||
26 | Run = It.current(); | ||
27 | if( X == Run->Name ) { | ||
28 | Run->assignNode( netNode() ); | ||
29 | assignInterface( Run ); | ||
30 | NC->setCurrentState( IsUp ); | ||
31 | return; | ||
32 | } | ||
33 | } | ||
34 | } | ||
35 | } | ||
36 | |||
37 | fprintf( stderr, "NUP\n" ); | ||
38 | // definitively not up | ||
39 | assignInterface( 0 ); | ||
40 | |||
41 | // find possible interface | ||
42 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | ||
43 | It.current(); | ||
44 | ++It ) { | ||
45 | Run = It.current(); | ||
46 | fprintf( stderr, "%s %d %d=%d %d\n", | ||
47 | Run->Name.latin1(), | ||
48 | handlesInterface( Run->Name ), | ||
49 | Run->CardType, ARPHRD_ETHER, | ||
50 | ! Run->IsUp ); | ||
51 | if( handlesInterface( Run->Name ) && | ||
52 | Run->CardType == ARPHRD_ETHER && | ||
53 | ! Run->IsUp | ||
54 | ) { | ||
55 | fprintf( stderr, "OFF\n" ); | ||
56 | // proper type, and Not UP -> free | ||
57 | NC->setCurrentState( Off ); | ||
58 | return; | ||
59 | } | ||
60 | } | ||
61 | // no free found | ||
62 | fprintf( stderr, "UNA\n" ); | ||
63 | |||
64 | NC->setCurrentState( Unavailable ); | ||
65 | } | ||
66 | |||
67 | bool USBRun::setState( NodeCollection * NC, Action_t A ) { | ||
68 | |||
69 | // we only handle activate and deactivate | ||
70 | switch( A ) { | ||
71 | case Activate : | ||
72 | { | ||
73 | if( NC->currentState() != Off ) { | ||
74 | return 0; | ||
75 | } | ||
76 | InterfaceInfo * N = getInterface(); | ||
77 | if( ! N ) { | ||
78 | // no interface available | ||
79 | NC->setCurrentState( Unavailable ); | ||
80 | return 0; | ||
81 | } | ||
82 | // because we were OFF the interface | ||
83 | // we get back is NOT assigned | ||
84 | N->assignNode( netNode() ); | ||
85 | assignInterface( N ); | ||
86 | NC->setCurrentState( Available ); | ||
87 | return 1; | ||
88 | } | ||
89 | case Deactivate : | ||
90 | if( NC->currentState() == IsUp ) { | ||
91 | // bring down first | ||
92 | if( ! connection()->setState( Down ) ) | ||
93 | // could not ... | ||
94 | return 0; | ||
95 | } | ||
96 | if( NC->currentState() != Available ) { | ||
97 | return 1; | ||
98 | } | ||
99 | assignedInterface()->assignNode( 0 ); // release | ||
100 | assignInterface( 0 ); | ||
101 | NC->setCurrentState( Off ); | ||
102 | return 1; | ||
103 | default : | ||
104 | // FT | ||
105 | break; | ||
106 | } | ||
107 | return 0; | ||
108 | } | ||
109 | |||
110 | bool USBRun::canSetState( State_t Curr, Action_t A ) { | ||
111 | // we only handle up down activate and deactivate | ||
112 | switch( A ) { | ||
113 | case Activate : | ||
114 | { // at least available | ||
115 | if( Curr == Available ) { | ||
116 | return 1; | ||
117 | } | ||
118 | // or we can make one available | ||
119 | InterfaceInfo * N = getInterface(); | ||
120 | if( ! N || N->assignedNode() != 0 ) { | ||
121 | // non available or assigned | ||
122 | return 0; | ||
123 | } | ||
124 | return 1; | ||
125 | } | ||
126 | case Deactivate : | ||
127 | return ( Curr >= Available ); | ||
128 | default : | ||
129 | // FT | ||
130 | break; | ||
131 | } | ||
132 | return 0; | ||
133 | } | ||
134 | |||
135 | // get interface that is free or assigned to us | ||
136 | InterfaceInfo * USBRun::getInterface( void ) { | ||
137 | |||
138 | System & S = NSResources->system(); | ||
139 | InterfaceInfo * best = 0, * Run; | ||
140 | QRegExp R( "usb[0-9abcdef]" ); | ||
141 | |||
142 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); | ||
143 | It.current(); | ||
144 | ++It ) { | ||
145 | Run = It.current(); | ||
146 | if( handlesInterface( Run->Name ) && | ||
147 | Run->CardType == ARPHRD_ETHER | ||
148 | ) { | ||
149 | // this is a USB card | ||
150 | if( Run->assignedNode() == netNode() ) { | ||
151 | // assigned to us | ||
152 | return Run; | ||
153 | } else if( Run->assignedNode() == 0 ) { | ||
154 | // free | ||
155 | best = Run; | ||
156 | } | ||
157 | } | ||
158 | } | ||
159 | return best; // can be 0 | ||
160 | } | ||
161 | |||
162 | bool USBRun::handlesInterface( const QString & S ) { | ||
163 | return Pat.match( S ) >= 0; | ||
164 | } | ||
165 | |||
166 | QString USBRun::genNic( long nr ) { | ||
167 | QString S; | ||
168 | S.sprintf( "usbf" ); | ||
169 | return S; | ||
170 | } | ||
171 | |||
diff --git a/noncore/settings/networksettings2/usb/usbrun.h b/noncore/settings/networksettings2/usb/usbrun.h new file mode 100644 index 0000000..c9c9121 --- a/dev/null +++ b/noncore/settings/networksettings2/usb/usbrun.h | |||
@@ -0,0 +1,38 @@ | |||
1 | #ifndef USBRUN_H | ||
2 | #define USBRUN_H | ||
3 | |||
4 | #include <asdevice.h> | ||
5 | #include <qregexp.h> | ||
6 | #include "usbdata.h" | ||
7 | |||
8 | class USBRun : public AsDevice { | ||
9 | |||
10 | public : | ||
11 | |||
12 | USBRun( ANetNodeInstance * NNI, | ||
13 | USBData & Data ) : | ||
14 | AsDevice( NNI ), | ||
15 | Pat( "usb[0-9abcdef]" ) | ||
16 | { } | ||
17 | |||
18 | virtual long count( void ) | ||
19 | { return 1; } | ||
20 | virtual QString genNic( long nr ); | ||
21 | virtual AsDevice * device( void ) | ||
22 | { return asDevice(); } | ||
23 | |||
24 | protected : | ||
25 | |||
26 | void detectState( NodeCollection * ); | ||
27 | bool setState( NodeCollection * , Action_t A ); | ||
28 | bool canSetState( State_t , Action_t A ); | ||
29 | |||
30 | bool handlesInterface( const QString & I ); | ||
31 | |||
32 | private : | ||
33 | |||
34 | InterfaceInfo * getInterface( void ); | ||
35 | QRegExp Pat; | ||
36 | |||
37 | }; | ||
38 | #endif | ||
diff --git a/noncore/settings/networksettings2/vpn/config.in b/noncore/settings/networksettings2/vpn/config.in new file mode 100644 index 0000000..796f996 --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/config.in | |||
@@ -0,0 +1,4 @@ | |||
1 | config NS2VPN | ||
2 | boolean "opie-networksettings2plugin-vpn (set up VPN)" | ||
3 | default "n" if NS2 | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && NS2 && NS2CORE | ||
diff --git a/noncore/settings/networksettings2/vpn/vpn.pro b/noncore/settings/networksettings2/vpn/vpn.pro new file mode 100644 index 0000000..81b4d08 --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpn.pro | |||
@@ -0,0 +1,18 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG += qt warn_on release | ||
3 | DESTDIR = $(OPIEDIR)/plugins/networksettings2 | ||
4 | HEADERS = vpn_NN.h \ | ||
5 | vpn_NNI.h \ | ||
6 | vpnedit.h | ||
7 | SOURCES = vpn_NN.cpp \ | ||
8 | vpn_NNI.cpp \ | ||
9 | vpnedit.cpp \ | ||
10 | vpnrun.cpp | ||
11 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
12 | DEPENDPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
13 | LIBS += -lqpe | ||
14 | INTERFACES= vpnGUI.ui | ||
15 | TARGET = vpn | ||
16 | VERSION = 1.0.0 | ||
17 | |||
18 | include ( $(OPIEDIR)/include.pro ) | ||
diff --git a/noncore/settings/networksettings2/vpn/vpnGUI.cpp b/noncore/settings/networksettings2/vpn/vpnGUI.cpp new file mode 100644 index 0000000..708c92b --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpnGUI.cpp | |||
@@ -0,0 +1,76 @@ | |||
1 | /**************************************************************************** | ||
2 | ** Form implementation generated from reading ui file 'vpnGUI.ui' | ||
3 | ** | ||
4 | ** Created: Tue Mar 30 02:42:53 2004 | ||
5 | ** by: The User Interface Compiler (uic) | ||
6 | ** | ||
7 | ** WARNING! All changes made in this file will be lost! | ||
8 | ****************************************************************************/ | ||
9 | #include "vpnGUI.h" | ||
10 | |||
11 | #include <qcheckbox.h> | ||
12 | #include <qlabel.h> | ||
13 | #include <qlineedit.h> | ||
14 | #include <qmultilineedit.h> | ||
15 | #include <qpushbutton.h> | ||
16 | #include <qlayout.h> | ||
17 | #include <qvariant.h> | ||
18 | #include <qtooltip.h> | ||
19 | #include <qwhatsthis.h> | ||
20 | |||
21 | /* | ||
22 | * Constructs a VPNGUI which is a child of 'parent', with the | ||
23 | * name 'name' and widget flags set to 'f' | ||
24 | */ | ||
25 | VPNGUI::VPNGUI( QWidget* parent, const char* name, WFlags fl ) | ||
26 | : QWidget( parent, name, fl ) | ||
27 | { | ||
28 | if ( !name ) | ||
29 | setName( "VPN_FRM" ); | ||
30 | resize( 283, 199 ); | ||
31 | setCaption( tr( "VPN" ) ); | ||
32 | VPN_FRMLayout = new QVBoxLayout( this ); | ||
33 | VPN_FRMLayout->setSpacing( 2 ); | ||
34 | VPN_FRMLayout->setMargin( 2 ); | ||
35 | |||
36 | Layout4 = new QHBoxLayout; | ||
37 | Layout4->setSpacing( 6 ); | ||
38 | Layout4->setMargin( 0 ); | ||
39 | |||
40 | TextLabel4 = new QLabel( this, "TextLabel4" ); | ||
41 | TextLabel4->setText( tr( "Name" ) ); | ||
42 | Layout4->addWidget( TextLabel4 ); | ||
43 | |||
44 | Name_LE = new QLineEdit( this, "Name_LE" ); | ||
45 | Layout4->addWidget( Name_LE ); | ||
46 | VPN_FRMLayout->addLayout( Layout4 ); | ||
47 | |||
48 | TextLabel3 = new QLabel( this, "TextLabel3" ); | ||
49 | TextLabel3->setText( tr( "Description" ) ); | ||
50 | VPN_FRMLayout->addWidget( TextLabel3 ); | ||
51 | |||
52 | Description_LE = new QMultiLineEdit( this, "Description_LE" ); | ||
53 | VPN_FRMLayout->addWidget( Description_LE ); | ||
54 | |||
55 | Layout5 = new QHBoxLayout; | ||
56 | Layout5->setSpacing( 6 ); | ||
57 | Layout5->setMargin( 0 ); | ||
58 | |||
59 | Automatic_CB = new QCheckBox( this, "Automatic_CB" ); | ||
60 | Automatic_CB->setText( tr( "Start automatically" ) ); | ||
61 | Layout5->addWidget( Automatic_CB ); | ||
62 | |||
63 | Confirm_CB = new QCheckBox( this, "Confirm_CB" ); | ||
64 | Confirm_CB->setText( tr( "Confirm before start" ) ); | ||
65 | Layout5->addWidget( Confirm_CB ); | ||
66 | VPN_FRMLayout->addLayout( Layout5 ); | ||
67 | } | ||
68 | |||
69 | /* | ||
70 | * Destroys the object and frees any allocated resources | ||
71 | */ | ||
72 | VPNGUI::~VPNGUI() | ||
73 | { | ||
74 | // no need to delete child widgets, Qt does it all for us | ||
75 | } | ||
76 | |||
diff --git a/noncore/settings/networksettings2/vpn/vpnGUI.h b/noncore/settings/networksettings2/vpn/vpnGUI.h new file mode 100644 index 0000000..fcc3e54 --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpnGUI.h | |||
@@ -0,0 +1,43 @@ | |||
1 | /**************************************************************************** | ||
2 | ** Form interface generated from reading ui file 'vpnGUI.ui' | ||
3 | ** | ||
4 | ** Created: Tue Mar 30 02:42:50 2004 | ||
5 | ** by: The User Interface Compiler (uic) | ||
6 | ** | ||
7 | ** WARNING! All changes made in this file will be lost! | ||
8 | ****************************************************************************/ | ||
9 | #ifndef VPN_FRM_H | ||
10 | #define VPN_FRM_H | ||
11 | |||
12 | #include <qvariant.h> | ||
13 | #include <qwidget.h> | ||
14 | class QVBoxLayout; | ||
15 | class QHBoxLayout; | ||
16 | class QGridLayout; | ||
17 | class QCheckBox; | ||
18 | class QLabel; | ||
19 | class QLineEdit; | ||
20 | class QMultiLineEdit; | ||
21 | |||
22 | class VPNGUI : public QWidget | ||
23 | { | ||
24 | Q_OBJECT | ||
25 | |||
26 | public: | ||
27 | VPNGUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); | ||
28 | ~VPNGUI(); | ||
29 | |||
30 | QLabel* TextLabel4; | ||
31 | QLineEdit* Name_LE; | ||
32 | QLabel* TextLabel3; | ||
33 | QMultiLineEdit* Description_LE; | ||
34 | QCheckBox* Automatic_CB; | ||
35 | QCheckBox* Confirm_CB; | ||
36 | |||
37 | protected: | ||
38 | QVBoxLayout* VPN_FRMLayout; | ||
39 | QHBoxLayout* Layout4; | ||
40 | QHBoxLayout* Layout5; | ||
41 | }; | ||
42 | |||
43 | #endif // VPN_FRM_H | ||
diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.cpp b/noncore/settings/networksettings2/vpn/vpn_NN.cpp new file mode 100644 index 0000000..c800929 --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpn_NN.cpp | |||
@@ -0,0 +1,61 @@ | |||
1 | #include "vpn_NN.h" | ||
2 | #include "vpn_NNI.h" | ||
3 | |||
4 | static const char * VPNNeeds[] = | ||
5 | { "connection", | ||
6 | 0 | ||
7 | }; | ||
8 | |||
9 | /** | ||
10 | * Constructor, find all of the possible interfaces | ||
11 | */ | ||
12 | VPNNetNode::VPNNetNode() : ANetNode() { | ||
13 | } | ||
14 | |||
15 | /** | ||
16 | * Delete any interfaces that we own. | ||
17 | */ | ||
18 | VPNNetNode::~VPNNetNode(){ | ||
19 | } | ||
20 | |||
21 | const QString VPNNetNode::nodeDescription(){ | ||
22 | return tr("\ | ||
23 | <p>Configure private IP connection.</p>\ | ||
24 | <p>Defines Secure tunnels over non secure IP sessions</p>\ | ||
25 | " | ||
26 | ); | ||
27 | } | ||
28 | |||
29 | ANetNodeInstance * VPNNetNode::createInstance( void ) { | ||
30 | return new AVPN( this ); | ||
31 | } | ||
32 | |||
33 | const char ** VPNNetNode::needs( void ) { | ||
34 | return VPNNeeds; | ||
35 | } | ||
36 | |||
37 | const char * VPNNetNode::provides( void ) { | ||
38 | return "connection"; | ||
39 | } | ||
40 | |||
41 | bool VPNNetNode::generateProperFilesFor( | ||
42 | ANetNodeInstance * ) { | ||
43 | return 1; | ||
44 | } | ||
45 | |||
46 | bool VPNNetNode::hasDataFor( const QString & ) { | ||
47 | return 0; | ||
48 | } | ||
49 | |||
50 | bool VPNNetNode::generateDataForCommonFile( | ||
51 | SystemFile & , | ||
52 | long, | ||
53 | ANetNodeInstance * ) { | ||
54 | return 1; | ||
55 | } | ||
56 | |||
57 | extern "C" { | ||
58 | void create_plugin( QList<ANetNode> & PNN ) { | ||
59 | PNN.append( new VPNNetNode() ); | ||
60 | } | ||
61 | } | ||
diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.h b/noncore/settings/networksettings2/vpn/vpn_NN.h new file mode 100644 index 0000000..5718961 --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpn_NN.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef VPN_NETNODE_H | ||
2 | #define VPN_NETNODE_H | ||
3 | |||
4 | #include "netnode.h" | ||
5 | |||
6 | class AVPN; | ||
7 | |||
8 | class VPNNetNode : public ANetNode{ | ||
9 | |||
10 | Q_OBJECT | ||
11 | |||
12 | public: | ||
13 | |||
14 | VPNNetNode(); | ||
15 | virtual ~VPNNetNode(); | ||
16 | |||
17 | virtual const QString pixmapName() | ||
18 | { return "vpn"; } | ||
19 | |||
20 | virtual const QString nodeName() | ||
21 | { return tr("VPN Connection"); } | ||
22 | |||
23 | virtual const QString nodeDescription() ; | ||
24 | |||
25 | virtual ANetNodeInstance * createInstance( void ); | ||
26 | |||
27 | virtual const char ** needs( void ); | ||
28 | virtual const char * provides( void ); | ||
29 | |||
30 | virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); | ||
31 | virtual bool hasDataFor( const QString & S ); | ||
32 | virtual bool generateDataForCommonFile( | ||
33 | SystemFile & SF, long DevNr, ANetNodeInstance * NNI ); | ||
34 | |||
35 | private: | ||
36 | |||
37 | }; | ||
38 | |||
39 | extern "C" | ||
40 | { | ||
41 | void create_plugin( QList<ANetNode> & PNN ); | ||
42 | }; | ||
43 | |||
44 | #endif | ||
diff --git a/noncore/settings/networksettings2/vpn/vpn_NNI.cpp b/noncore/settings/networksettings2/vpn/vpn_NNI.cpp new file mode 100644 index 0000000..6c20aeb --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpn_NNI.cpp | |||
@@ -0,0 +1,30 @@ | |||
1 | #include "vpnedit.h" | ||
2 | #include "vpn_NNI.h" | ||
3 | #include "vpn_NN.h" | ||
4 | |||
5 | AVPN::AVPN( VPNNetNode * PNN ) : ANetNodeInstance( PNN ) { | ||
6 | GUI = 0; | ||
7 | RT = 0; | ||
8 | } | ||
9 | |||
10 | void AVPN::setSpecificAttribute( QString & , QString & ) { | ||
11 | } | ||
12 | |||
13 | void AVPN::saveSpecificAttribute( QTextStream & ) { | ||
14 | } | ||
15 | |||
16 | QWidget * AVPN::edit( QWidget * parent ) { | ||
17 | GUI = new VPNEdit( parent ); | ||
18 | GUI->showData( Data ); | ||
19 | return GUI; | ||
20 | } | ||
21 | |||
22 | QString AVPN::acceptable( void ) { | ||
23 | return ( GUI ) ? GUI->acceptable( ) : QString(); | ||
24 | } | ||
25 | |||
26 | void AVPN::commit( void ) { | ||
27 | if( GUI && GUI->commit( Data ) ) | ||
28 | setModified( 1 ); | ||
29 | } | ||
30 | |||
diff --git a/noncore/settings/networksettings2/vpn/vpn_NNI.h b/noncore/settings/networksettings2/vpn/vpn_NNI.h new file mode 100644 index 0000000..31ce0d6 --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpn_NNI.h | |||
@@ -0,0 +1,43 @@ | |||
1 | #ifndef VPN_H | ||
2 | #define VPN_H | ||
3 | |||
4 | #include <netnode.h> | ||
5 | #include "vpndata.h" | ||
6 | #include "vpnrun.h" | ||
7 | |||
8 | class VPNNetNode; | ||
9 | class VPNEdit; | ||
10 | |||
11 | class AVPN : public ANetNodeInstance { | ||
12 | |||
13 | public : | ||
14 | |||
15 | AVPN( VPNNetNode * PNN ); | ||
16 | |||
17 | QWidget * edit( QWidget * parent ); | ||
18 | QString acceptable( void ); | ||
19 | void commit( void ); | ||
20 | |||
21 | RuntimeInfo * runtime( void ) | ||
22 | { if( RT == 0 ) | ||
23 | RT = new VPNRun( this, Data ); | ||
24 | return RT; | ||
25 | } | ||
26 | |||
27 | virtual void * data( void ) | ||
28 | { return (void *)&Data; } | ||
29 | |||
30 | protected : | ||
31 | |||
32 | virtual void setSpecificAttribute( QString & Attr, QString & Value ); | ||
33 | virtual void saveSpecificAttribute( QTextStream & TS ); | ||
34 | |||
35 | private : | ||
36 | |||
37 | VPNEdit * GUI; | ||
38 | VPNData Data; | ||
39 | VPNRun * RT; | ||
40 | |||
41 | }; | ||
42 | |||
43 | #endif | ||
diff --git a/noncore/settings/networksettings2/vpn/vpndata.h b/noncore/settings/networksettings2/vpn/vpndata.h new file mode 100644 index 0000000..5c986aa --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpndata.h | |||
@@ -0,0 +1,16 @@ | |||
1 | #ifndef VPN_DATA_H | ||
2 | #define VPN_DATA_H | ||
3 | |||
4 | #include <qstring.h> | ||
5 | typedef struct VPNData { | ||
6 | QString Device; | ||
7 | QString LockFile; | ||
8 | long Speed; | ||
9 | short Parity; | ||
10 | short DataBits; | ||
11 | short StopBits; | ||
12 | bool HardwareControl; | ||
13 | bool SoftwareControl; | ||
14 | } VPNData_t; | ||
15 | |||
16 | #endif | ||
diff --git a/noncore/settings/networksettings2/vpn/vpnedit.cpp b/noncore/settings/networksettings2/vpn/vpnedit.cpp new file mode 100644 index 0000000..f336394 --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpnedit.cpp | |||
@@ -0,0 +1,18 @@ | |||
1 | #include <GUIUtils.h> | ||
2 | #include "vpnedit.h" | ||
3 | |||
4 | |||
5 | VPNEdit::VPNEdit( QWidget * Parent ) : VPNGUI( Parent ){ | ||
6 | |||
7 | } | ||
8 | |||
9 | QString VPNEdit::acceptable( void ) { | ||
10 | return QString(); | ||
11 | } | ||
12 | |||
13 | void VPNEdit::showData( VPNData_t & Data ) { | ||
14 | } | ||
15 | |||
16 | bool VPNEdit::commit( VPNData_t & Data ) { | ||
17 | return 0; | ||
18 | } | ||
diff --git a/noncore/settings/networksettings2/vpn/vpnedit.h b/noncore/settings/networksettings2/vpn/vpnedit.h new file mode 100644 index 0000000..76480cd --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpnedit.h | |||
@@ -0,0 +1,12 @@ | |||
1 | #include "vpndata.h" | ||
2 | #include "vpnGUI.h" | ||
3 | |||
4 | class VPNEdit : public VPNGUI { | ||
5 | |||
6 | public : | ||
7 | |||
8 | VPNEdit( QWidget * parent ); | ||
9 | QString acceptable( void ); | ||
10 | bool commit( VPNData_t & Data ); | ||
11 | void showData( VPNData_t & Data ); | ||
12 | }; | ||
diff --git a/noncore/settings/networksettings2/vpn/vpnrun.cpp b/noncore/settings/networksettings2/vpn/vpnrun.cpp new file mode 100644 index 0000000..ab2966c --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpnrun.cpp | |||
@@ -0,0 +1,6 @@ | |||
1 | #include "vpnrun.h" | ||
2 | |||
3 | bool VPNRun::handlesInterface( const QString & ) { | ||
4 | // to be figured out | ||
5 | return 0; | ||
6 | } | ||
diff --git a/noncore/settings/networksettings2/vpn/vpnrun.h b/noncore/settings/networksettings2/vpn/vpnrun.h new file mode 100644 index 0000000..c221fd0 --- a/dev/null +++ b/noncore/settings/networksettings2/vpn/vpnrun.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef VPNRUN_H | ||
2 | #define VPNRUN_H | ||
3 | |||
4 | #include <asconnection.h> | ||
5 | #include "vpndata.h" | ||
6 | |||
7 | class VPNRun : public AsConnection { | ||
8 | |||
9 | public : | ||
10 | |||
11 | VPNRun( ANetNodeInstance * NNI, VPNData & Data ) : | ||
12 | AsConnection( NNI ) | ||
13 | { } | ||
14 | |||
15 | protected : | ||
16 | |||
17 | void detectState( NodeCollection * ) | ||
18 | { } | ||
19 | |||
20 | bool setState( NodeCollection *, Action_t ) | ||
21 | { return 0; } | ||
22 | |||
23 | bool canSetState( State_t, Action_t ) | ||
24 | { return 0; } | ||
25 | |||
26 | bool handlesInterface( const QString & I ); | ||
27 | |||
28 | }; | ||
29 | |||
30 | #endif | ||
diff --git a/noncore/settings/networksettings2/wlan/wlan.pro b/noncore/settings/networksettings2/wlan/wlan.pro new file mode 100644 index 0000000..4cc47ee --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlan.pro | |||
@@ -0,0 +1,18 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG += qt warn_on release | ||
3 | DESTDIR = $(OPIEDIR)/plugins/networksettings2 | ||
4 | HEADERS = wlan_NN.h \ | ||
5 | wlan_NNI.h \ | ||
6 | wlanedit.h | ||
7 | SOURCES = wlan_NN.cpp \ | ||
8 | wlan_NNI.cpp \ | ||
9 | wlanedit.cpp \ | ||
10 | wlanrun.cpp | ||
11 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
12 | DEPENDPATH+= $(OPIEDIR)/include ../ ../networksettings2 | ||
13 | LIBS += -lqpe | ||
14 | INTERFACES= wlanGUI.ui | ||
15 | TARGET = wlan | ||
16 | VERSION = 1.0.0 | ||
17 | |||
18 | include ( $(OPIEDIR)/include.pro ) | ||
diff --git a/noncore/settings/networksettings2/wlan/wlanGUI.cpp b/noncore/settings/networksettings2/wlan/wlanGUI.cpp new file mode 100644 index 0000000..902bd27 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlanGUI.cpp | |||
@@ -0,0 +1,360 @@ | |||
1 | /**************************************************************************** | ||
2 | ** Form implementation generated from reading ui file 'wlanGUI.ui' | ||
3 | ** | ||
4 | ** Created: Tue Mar 30 02:42:58 2004 | ||
5 | ** by: The User Interface Compiler (uic) | ||
6 | ** | ||
7 | ** WARNING! All changes made in this file will be lost! | ||
8 | ****************************************************************************/ | ||
9 | #include "wlanGUI.h" | ||
10 | |||
11 | #include <qbuttongroup.h> | ||
12 | #include <qcheckbox.h> | ||
13 | #include <qcombobox.h> | ||
14 | #include <qgroupbox.h> | ||
15 | #include <qlabel.h> | ||
16 | #include <qlineedit.h> | ||
17 | #include <qprogressbar.h> | ||
18 | #include <qpushbutton.h> | ||
19 | #include <qradiobutton.h> | ||
20 | #include <qspinbox.h> | ||
21 | #include <qtabwidget.h> | ||
22 | #include <qlayout.h> | ||
23 | #include <qvariant.h> | ||
24 | #include <qtooltip.h> | ||
25 | #include <qwhatsthis.h> | ||
26 | |||
27 | /* | ||
28 | * Constructs a WLanGUI which is a child of 'parent', with the | ||
29 | * name 'name' and widget flags set to 'f' | ||
30 | */ | ||
31 | WLanGUI::WLanGUI( QWidget* parent, const char* name, WFlags fl ) | ||
32 | : QWidget( parent, name, fl ) | ||
33 | { | ||
34 | if ( !name ) | ||
35 | setName( "WLanGUI" ); | ||
36 | resize( 196, 329 ); | ||
37 | setCaption( tr( "Form1" ) ); | ||
38 | WLanGUILayout = new QVBoxLayout( this ); | ||
39 | WLanGUILayout->setSpacing( 0 ); | ||
40 | WLanGUILayout->setMargin( 0 ); | ||
41 | |||
42 | tabWidget = new QTabWidget( this, "tabWidget" ); | ||
43 | tabWidget->setEnabled( TRUE ); | ||
44 | |||
45 | ConfigPage = new QWidget( tabWidget, "ConfigPage" ); | ||
46 | ConfigPageLayout = new QVBoxLayout( ConfigPage ); | ||
47 | ConfigPageLayout->setSpacing( 2 ); | ||
48 | ConfigPageLayout->setMargin( 0 ); | ||
49 | |||
50 | Layout6 = new QGridLayout; | ||
51 | Layout6->setSpacing( 6 ); | ||
52 | Layout6->setMargin( 1 ); | ||
53 | |||
54 | essidLabel = new QLabel( ConfigPage, "essidLabel" ); | ||
55 | essidLabel->setEnabled( TRUE ); | ||
56 | essidLabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, essidLabel->sizePolicy().hasHeightForWidth() ) ); | ||
57 | essidLabel->setText( tr( "ESS-ID" ) ); | ||
58 | |||
59 | Layout6->addWidget( essidLabel, 1, 0 ); | ||
60 | |||
61 | essid = new QComboBox( FALSE, ConfigPage, "essid" ); | ||
62 | essid->insertItem( tr( "any" ) ); | ||
63 | essid->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, essid->sizePolicy().hasHeightForWidth() ) ); | ||
64 | essid->setEditable( TRUE ); | ||
65 | essid->setCurrentItem( 0 ); | ||
66 | essid->setSizeLimit( 5 ); | ||
67 | essid->setAutoCompletion( TRUE ); | ||
68 | essid->setDuplicatesEnabled( FALSE ); | ||
69 | |||
70 | Layout6->addWidget( essid, 1, 1 ); | ||
71 | |||
72 | modeLabel = new QLabel( ConfigPage, "modeLabel" ); | ||
73 | modeLabel->setEnabled( TRUE ); | ||
74 | modeLabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, modeLabel->sizePolicy().hasHeightForWidth() ) ); | ||
75 | modeLabel->setText( tr( "Mode" ) ); | ||
76 | |||
77 | Layout6->addWidget( modeLabel, 0, 0 ); | ||
78 | |||
79 | mode = new QComboBox( FALSE, ConfigPage, "mode" ); | ||
80 | mode->insertItem( tr( "Infrastructure" ) ); | ||
81 | mode->insertItem( tr( "Auto" ) ); | ||
82 | mode->insertItem( tr( "Managed" ) ); | ||
83 | mode->insertItem( tr( "Ad-Hoc" ) ); | ||
84 | mode->setEnabled( TRUE ); | ||
85 | mode->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, mode->sizePolicy().hasHeightForWidth() ) ); | ||
86 | |||
87 | Layout6->addWidget( mode, 0, 1 ); | ||
88 | ConfigPageLayout->addLayout( Layout6 ); | ||
89 | |||
90 | Layout8 = new QGridLayout; | ||
91 | Layout8->setSpacing( 2 ); | ||
92 | Layout8->setMargin( 1 ); | ||
93 | |||
94 | specifyAp = new QCheckBox( ConfigPage, "specifyAp" ); | ||
95 | specifyAp->setText( tr( "Specify &Access Point" ) ); | ||
96 | |||
97 | Layout8->addMultiCellWidget( specifyAp, 0, 0, 0, 2 ); | ||
98 | |||
99 | macLabel = new QLabel( ConfigPage, "macLabel" ); | ||
100 | macLabel->setEnabled( FALSE ); | ||
101 | macLabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)1, macLabel->sizePolicy().hasHeightForWidth() ) ); | ||
102 | macLabel->setText( tr( "MAC" ) ); | ||
103 | |||
104 | Layout8->addWidget( macLabel, 1, 1 ); | ||
105 | |||
106 | macEdit = new QLineEdit( ConfigPage, "macEdit" ); | ||
107 | macEdit->setEnabled( FALSE ); | ||
108 | macEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, macEdit->sizePolicy().hasHeightForWidth() ) ); | ||
109 | |||
110 | Layout8->addWidget( macEdit, 1, 2 ); | ||
111 | QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Fixed, QSizePolicy::Minimum ); | ||
112 | Layout8->addItem( spacer, 1, 0 ); | ||
113 | ConfigPageLayout->addLayout( Layout8 ); | ||
114 | |||
115 | Layout7 = new QHBoxLayout; | ||
116 | Layout7->setSpacing( 6 ); | ||
117 | Layout7->setMargin( 1 ); | ||
118 | |||
119 | specifyChan = new QCheckBox( ConfigPage, "specifyChan" ); | ||
120 | specifyChan->setText( tr( "Specific &Channel" ) ); | ||
121 | Layout7->addWidget( specifyChan ); | ||
122 | |||
123 | networkChannel = new QSpinBox( ConfigPage, "networkChannel" ); | ||
124 | networkChannel->setEnabled( FALSE ); | ||
125 | networkChannel->setMaxValue( 15 ); | ||
126 | networkChannel->setMinValue( 1 ); | ||
127 | networkChannel->setValue( 1 ); | ||
128 | Layout7->addWidget( networkChannel ); | ||
129 | ConfigPageLayout->addLayout( Layout7 ); | ||
130 | QSpacerItem* spacer_2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); | ||
131 | ConfigPageLayout->addItem( spacer_2 ); | ||
132 | tabWidget->insertTab( ConfigPage, tr( "General" ) ); | ||
133 | |||
134 | WepPage = new QWidget( tabWidget, "WepPage" ); | ||
135 | WepPageLayout = new QVBoxLayout( WepPage ); | ||
136 | WepPageLayout->setSpacing( 2 ); | ||
137 | WepPageLayout->setMargin( 0 ); | ||
138 | |||
139 | wepEnabled = new QCheckBox( WepPage, "wepEnabled" ); | ||
140 | wepEnabled->setText( tr( "&Enable Encryption" ) ); | ||
141 | WepPageLayout->addWidget( wepEnabled ); | ||
142 | |||
143 | KeyButtonGroup = new QButtonGroup( WepPage, "KeyButtonGroup" ); | ||
144 | KeyButtonGroup->setEnabled( FALSE ); | ||
145 | KeyButtonGroup->setTitle( tr( "&Key Setting" ) ); | ||
146 | KeyButtonGroup->setColumnLayout(0, Qt::Vertical ); | ||
147 | KeyButtonGroup->layout()->setSpacing( 0 ); | ||
148 | KeyButtonGroup->layout()->setMargin( 0 ); | ||
149 | KeyButtonGroupLayout = new QGridLayout( KeyButtonGroup->layout() ); | ||
150 | KeyButtonGroupLayout->setAlignment( Qt::AlignTop ); | ||
151 | KeyButtonGroupLayout->setSpacing( 2 ); | ||
152 | KeyButtonGroupLayout->setMargin( 2 ); | ||
153 | |||
154 | keyRadio0 = new QRadioButton( KeyButtonGroup, "keyRadio0" ); | ||
155 | keyRadio0->setText( tr( "Key &1" ) ); | ||
156 | keyRadio0->setChecked( TRUE ); | ||
157 | |||
158 | KeyButtonGroupLayout->addWidget( keyRadio0, 0, 0 ); | ||
159 | |||
160 | keyRadio3 = new QRadioButton( KeyButtonGroup, "keyRadio3" ); | ||
161 | keyRadio3->setText( tr( "Key &4" ) ); | ||
162 | |||
163 | KeyButtonGroupLayout->addWidget( keyRadio3, 3, 0 ); | ||
164 | |||
165 | LineEdit6 = new QLineEdit( KeyButtonGroup, "LineEdit6" ); | ||
166 | |||
167 | KeyButtonGroupLayout->addWidget( LineEdit6, 0, 1 ); | ||
168 | |||
169 | keyRadio1 = new QRadioButton( KeyButtonGroup, "keyRadio1" ); | ||
170 | keyRadio1->setText( tr( "Key &2" ) ); | ||
171 | |||
172 | KeyButtonGroupLayout->addWidget( keyRadio1, 1, 0 ); | ||
173 | |||
174 | keyRadio2 = new QRadioButton( KeyButtonGroup, "keyRadio2" ); | ||
175 | keyRadio2->setText( tr( "Key &3" ) ); | ||
176 | |||
177 | KeyButtonGroupLayout->addWidget( keyRadio2, 2, 0 ); | ||
178 | |||
179 | LineEdit6_2 = new QLineEdit( KeyButtonGroup, "LineEdit6_2" ); | ||
180 | |||
181 | KeyButtonGroupLayout->addWidget( LineEdit6_2, 1, 1 ); | ||
182 | |||
183 | LineEdit6_4 = new QLineEdit( KeyButtonGroup, "LineEdit6_4" ); | ||
184 | |||
185 | KeyButtonGroupLayout->addWidget( LineEdit6_4, 3, 1 ); | ||
186 | |||
187 | LineEdit6_3 = new QLineEdit( KeyButtonGroup, "LineEdit6_3" ); | ||
188 | |||
189 | KeyButtonGroupLayout->addWidget( LineEdit6_3, 2, 1 ); | ||
190 | WepPageLayout->addWidget( KeyButtonGroup ); | ||
191 | |||
192 | NonEncButtonGroup = new QButtonGroup( WepPage, "NonEncButtonGroup" ); | ||
193 | NonEncButtonGroup->setEnabled( FALSE ); | ||
194 | NonEncButtonGroup->setTitle( tr( "Non-encrypted Packets" ) ); | ||
195 | NonEncButtonGroup->setRadioButtonExclusive( TRUE ); | ||
196 | NonEncButtonGroup->setColumnLayout(0, Qt::Vertical ); | ||
197 | NonEncButtonGroup->layout()->setSpacing( 0 ); | ||
198 | NonEncButtonGroup->layout()->setMargin( 0 ); | ||
199 | NonEncButtonGroupLayout = new QGridLayout( NonEncButtonGroup->layout() ); | ||
200 | NonEncButtonGroupLayout->setAlignment( Qt::AlignTop ); | ||
201 | NonEncButtonGroupLayout->setSpacing( 6 ); | ||
202 | NonEncButtonGroupLayout->setMargin( 2 ); | ||
203 | |||
204 | acceptNonEnc = new QRadioButton( NonEncButtonGroup, "acceptNonEnc" ); | ||
205 | acceptNonEnc->setText( tr( "&Accept" ) ); | ||
206 | acceptNonEnc->setChecked( TRUE ); | ||
207 | NonEncButtonGroup->insert( acceptNonEnc, 0 ); | ||
208 | |||
209 | NonEncButtonGroupLayout->addWidget( acceptNonEnc, 0, 0 ); | ||
210 | |||
211 | rejectNonEnc = new QRadioButton( NonEncButtonGroup, "rejectNonEnc" ); | ||
212 | rejectNonEnc->setText( tr( "&Reject" ) ); | ||
213 | NonEncButtonGroup->insert( rejectNonEnc, 1 ); | ||
214 | |||
215 | NonEncButtonGroupLayout->addWidget( rejectNonEnc, 0, 1 ); | ||
216 | WepPageLayout->addWidget( NonEncButtonGroup ); | ||
217 | QSpacerItem* spacer_3 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); | ||
218 | WepPageLayout->addItem( spacer_3 ); | ||
219 | tabWidget->insertTab( WepPage, tr( "Encryption" ) ); | ||
220 | |||
221 | tab = new QWidget( tabWidget, "tab" ); | ||
222 | tabLayout = new QVBoxLayout( tab ); | ||
223 | tabLayout->setSpacing( 2 ); | ||
224 | tabLayout->setMargin( 0 ); | ||
225 | |||
226 | Layout12 = new QGridLayout; | ||
227 | Layout12->setSpacing( 2 ); | ||
228 | Layout12->setMargin( 0 ); | ||
229 | |||
230 | TextLabel1_3 = new QLabel( tab, "TextLabel1_3" ); | ||
231 | TextLabel1_3->setText( tr( "Station" ) ); | ||
232 | |||
233 | Layout12->addWidget( TextLabel1_3, 0, 0 ); | ||
234 | |||
235 | Channel_LBL = new QLabel( tab, "Channel_LBL" ); | ||
236 | Channel_LBL->setFrameShape( QLabel::Panel ); | ||
237 | Channel_LBL->setFrameShadow( QLabel::Sunken ); | ||
238 | |||
239 | Layout12->addWidget( Channel_LBL, 3, 1 ); | ||
240 | |||
241 | TextLabel4_3 = new QLabel( tab, "TextLabel4_3" ); | ||
242 | TextLabel4_3->setText( tr( "Channel" ) ); | ||
243 | |||
244 | Layout12->addWidget( TextLabel4_3, 3, 0 ); | ||
245 | |||
246 | TextLabel3_3 = new QLabel( tab, "TextLabel3_3" ); | ||
247 | TextLabel3_3->setText( tr( "Mode" ) ); | ||
248 | |||
249 | Layout12->addWidget( TextLabel3_3, 2, 0 ); | ||
250 | |||
251 | TextLabel2_3 = new QLabel( tab, "TextLabel2_3" ); | ||
252 | TextLabel2_3->setText( tr( "ESSID" ) ); | ||
253 | |||
254 | Layout12->addWidget( TextLabel2_3, 1, 0 ); | ||
255 | |||
256 | TextLabel9_2 = new QLabel( tab, "TextLabel9_2" ); | ||
257 | TextLabel9_2->setText( tr( "AP" ) ); | ||
258 | |||
259 | Layout12->addWidget( TextLabel9_2, 4, 0 ); | ||
260 | |||
261 | Station_LBL = new QLabel( tab, "Station_LBL" ); | ||
262 | Station_LBL->setFrameShape( QLabel::Panel ); | ||
263 | Station_LBL->setFrameShadow( QLabel::Sunken ); | ||
264 | |||
265 | Layout12->addWidget( Station_LBL, 0, 1 ); | ||
266 | |||
267 | Rate_LBL = new QLabel( tab, "Rate_LBL" ); | ||
268 | Rate_LBL->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, Rate_LBL->sizePolicy().hasHeightForWidth() ) ); | ||
269 | Rate_LBL->setFrameShape( QLabel::Panel ); | ||
270 | Rate_LBL->setFrameShadow( QLabel::Sunken ); | ||
271 | |||
272 | Layout12->addWidget( Rate_LBL, 5, 1 ); | ||
273 | |||
274 | TextLabel4_2_2 = new QLabel( tab, "TextLabel4_2_2" ); | ||
275 | TextLabel4_2_2->setText( tr( "Rate" ) ); | ||
276 | |||
277 | Layout12->addWidget( TextLabel4_2_2, 5, 0 ); | ||
278 | |||
279 | AP_LBL = new QLabel( tab, "AP_LBL" ); | ||
280 | AP_LBL->setFrameShape( QLabel::Panel ); | ||
281 | AP_LBL->setFrameShadow( QLabel::Sunken ); | ||
282 | |||
283 | Layout12->addWidget( AP_LBL, 4, 1 ); | ||
284 | |||
285 | essidLabel_3 = new QLabel( tab, "essidLabel_3" ); | ||
286 | essidLabel_3->setFrameShape( QLabel::Panel ); | ||
287 | essidLabel_3->setFrameShadow( QLabel::Sunken ); | ||
288 | |||
289 | Layout12->addWidget( essidLabel_3, 1, 1 ); | ||
290 | |||
291 | modeLabel_3 = new QLabel( tab, "modeLabel_3" ); | ||
292 | modeLabel_3->setFrameShape( QLabel::Panel ); | ||
293 | modeLabel_3->setFrameShadow( QLabel::Sunken ); | ||
294 | |||
295 | Layout12->addWidget( modeLabel_3, 2, 1 ); | ||
296 | tabLayout->addLayout( Layout12 ); | ||
297 | |||
298 | GroupBox1 = new QGroupBox( tab, "GroupBox1" ); | ||
299 | GroupBox1->setTitle( tr( "Link Quality" ) ); | ||
300 | GroupBox1->setColumnLayout(0, Qt::Vertical ); | ||
301 | GroupBox1->layout()->setSpacing( 0 ); | ||
302 | GroupBox1->layout()->setMargin( 0 ); | ||
303 | GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); | ||
304 | GroupBox1Layout->setAlignment( Qt::AlignTop ); | ||
305 | GroupBox1Layout->setSpacing( 2 ); | ||
306 | GroupBox1Layout->setMargin( 2 ); | ||
307 | |||
308 | TextLabel2_2_2 = new QLabel( GroupBox1, "TextLabel2_2_2" ); | ||
309 | TextLabel2_2_2->setText( tr( "Noise" ) ); | ||
310 | |||
311 | GroupBox1Layout->addWidget( TextLabel2_2_2, 1, 0 ); | ||
312 | |||
313 | TextLabel3_2_2 = new QLabel( GroupBox1, "TextLabel3_2_2" ); | ||
314 | TextLabel3_2_2->setText( tr( "Quality" ) ); | ||
315 | |||
316 | GroupBox1Layout->addWidget( TextLabel3_2_2, 2, 0 ); | ||
317 | |||
318 | Noise_PB = new QProgressBar( GroupBox1, "Noise_PB" ); | ||
319 | Noise_PB->setProgress( 0 ); | ||
320 | |||
321 | GroupBox1Layout->addWidget( Noise_PB, 1, 2 ); | ||
322 | |||
323 | Quality_PB = new QProgressBar( GroupBox1, "Quality_PB" ); | ||
324 | Quality_PB->setProgress( 0 ); | ||
325 | |||
326 | GroupBox1Layout->addWidget( Quality_PB, 2, 2 ); | ||
327 | |||
328 | TextLabel1_2_2 = new QLabel( GroupBox1, "TextLabel1_2_2" ); | ||
329 | TextLabel1_2_2->setText( tr( "Signal" ) ); | ||
330 | |||
331 | GroupBox1Layout->addWidget( TextLabel1_2_2, 0, 0 ); | ||
332 | QSpacerItem* spacer_4 = new QSpacerItem( 16, 20, QSizePolicy::Fixed, QSizePolicy::Minimum ); | ||
333 | GroupBox1Layout->addItem( spacer_4, 0, 1 ); | ||
334 | |||
335 | Signal_PB = new QProgressBar( GroupBox1, "Signal_PB" ); | ||
336 | Signal_PB->setProgress( 0 ); | ||
337 | |||
338 | GroupBox1Layout->addWidget( Signal_PB, 0, 2 ); | ||
339 | tabLayout->addWidget( GroupBox1 ); | ||
340 | QSpacerItem* spacer_5 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); | ||
341 | tabLayout->addItem( spacer_5 ); | ||
342 | tabWidget->insertTab( tab, tr( "State" ) ); | ||
343 | WLanGUILayout->addWidget( tabWidget ); | ||
344 | |||
345 | // signals and slots connections | ||
346 | connect( wepEnabled, SIGNAL( toggled(bool) ), KeyButtonGroup, SLOT( setEnabled(bool) ) ); | ||
347 | connect( wepEnabled, SIGNAL( toggled(bool) ), NonEncButtonGroup, SLOT( setEnabled(bool) ) ); | ||
348 | connect( specifyAp, SIGNAL( toggled(bool) ), macEdit, SLOT( setEnabled(bool) ) ); | ||
349 | connect( specifyAp, SIGNAL( toggled(bool) ), macLabel, SLOT( setEnabled(bool) ) ); | ||
350 | connect( specifyChan, SIGNAL( toggled(bool) ), networkChannel, SLOT( setEnabled(bool) ) ); | ||
351 | } | ||
352 | |||
353 | /* | ||
354 | * Destroys the object and frees any allocated resources | ||
355 | */ | ||
356 | WLanGUI::~WLanGUI() | ||
357 | { | ||
358 | // no need to delete child widgets, Qt does it all for us | ||
359 | } | ||
360 | |||
diff --git a/noncore/settings/networksettings2/wlan/wlanGUI.h b/noncore/settings/networksettings2/wlan/wlanGUI.h new file mode 100644 index 0000000..42e8705 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlanGUI.h | |||
@@ -0,0 +1,96 @@ | |||
1 | /**************************************************************************** | ||
2 | ** Form interface generated from reading ui file 'wlanGUI.ui' | ||
3 | ** | ||
4 | ** Created: Tue Mar 30 02:42:55 2004 | ||
5 | ** by: The User Interface Compiler (uic) | ||
6 | ** | ||
7 | ** WARNING! All changes made in this file will be lost! | ||
8 | ****************************************************************************/ | ||
9 | #ifndef WLANGUI_H | ||
10 | #define WLANGUI_H | ||
11 | |||
12 | #include <qvariant.h> | ||
13 | #include <qwidget.h> | ||
14 | class QVBoxLayout; | ||
15 | class QHBoxLayout; | ||
16 | class QGridLayout; | ||
17 | class QButtonGroup; | ||
18 | class QCheckBox; | ||
19 | class QComboBox; | ||
20 | class QGroupBox; | ||
21 | class QLabel; | ||
22 | class QLineEdit; | ||
23 | class QProgressBar; | ||
24 | class QRadioButton; | ||
25 | class QSpinBox; | ||
26 | class QTabWidget; | ||
27 | |||
28 | class WLanGUI : public QWidget | ||
29 | { | ||
30 | Q_OBJECT | ||
31 | |||
32 | public: | ||
33 | WLanGUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); | ||
34 | ~WLanGUI(); | ||
35 | |||
36 | QTabWidget* tabWidget; | ||
37 | QWidget* ConfigPage; | ||
38 | QLabel* essidLabel; | ||
39 | QComboBox* essid; | ||
40 | QLabel* modeLabel; | ||
41 | QComboBox* mode; | ||
42 | QCheckBox* specifyAp; | ||
43 | QLabel* macLabel; | ||
44 | QLineEdit* macEdit; | ||
45 | QCheckBox* specifyChan; | ||
46 | QSpinBox* networkChannel; | ||
47 | QWidget* WepPage; | ||
48 | QCheckBox* wepEnabled; | ||
49 | QButtonGroup* KeyButtonGroup; | ||
50 | QRadioButton* keyRadio0; | ||
51 | QRadioButton* keyRadio3; | ||
52 | QLineEdit* LineEdit6; | ||
53 | QRadioButton* keyRadio1; | ||
54 | QRadioButton* keyRadio2; | ||
55 | QLineEdit* LineEdit6_2; | ||
56 | QLineEdit* LineEdit6_4; | ||
57 | QLineEdit* LineEdit6_3; | ||
58 | QButtonGroup* NonEncButtonGroup; | ||
59 | QRadioButton* acceptNonEnc; | ||
60 | QRadioButton* rejectNonEnc; | ||
61 | QWidget* tab; | ||
62 | QLabel* TextLabel1_3; | ||
63 | QLabel* Channel_LBL; | ||
64 | QLabel* TextLabel4_3; | ||
65 | QLabel* TextLabel3_3; | ||
66 | QLabel* TextLabel2_3; | ||
67 | QLabel* TextLabel9_2; | ||
68 | QLabel* Station_LBL; | ||
69 | QLabel* Rate_LBL; | ||
70 | QLabel* TextLabel4_2_2; | ||
71 | QLabel* AP_LBL; | ||
72 | QLabel* essidLabel_3; | ||
73 | QLabel* modeLabel_3; | ||
74 | QGroupBox* GroupBox1; | ||
75 | QLabel* TextLabel2_2_2; | ||
76 | QLabel* TextLabel3_2_2; | ||
77 | QProgressBar* Noise_PB; | ||
78 | QProgressBar* Quality_PB; | ||
79 | QLabel* TextLabel1_2_2; | ||
80 | QProgressBar* Signal_PB; | ||
81 | |||
82 | protected: | ||
83 | QVBoxLayout* WLanGUILayout; | ||
84 | QVBoxLayout* ConfigPageLayout; | ||
85 | QGridLayout* Layout6; | ||
86 | QGridLayout* Layout8; | ||
87 | QHBoxLayout* Layout7; | ||
88 | QVBoxLayout* WepPageLayout; | ||
89 | QGridLayout* KeyButtonGroupLayout; | ||
90 | QGridLayout* NonEncButtonGroupLayout; | ||
91 | QVBoxLayout* tabLayout; | ||
92 | QGridLayout* Layout12; | ||
93 | QGridLayout* GroupBox1Layout; | ||
94 | }; | ||
95 | |||
96 | #endif // WLANGUI_H | ||
diff --git a/noncore/settings/networksettings2/wlan/wlan_NN.cpp b/noncore/settings/networksettings2/wlan/wlan_NN.cpp new file mode 100644 index 0000000..5a26e41 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlan_NN.cpp | |||
@@ -0,0 +1,60 @@ | |||
1 | #include "wlan_NN.h" | ||
2 | #include "wlan_NNI.h" | ||
3 | |||
4 | static const char * WLanNeeds[] = | ||
5 | { 0 | ||
6 | }; | ||
7 | |||
8 | /** | ||
9 | * Constructor, find all of the possible interfaces | ||
10 | */ | ||
11 | WLanNetNode::WLanNetNode() : ANetNode() { | ||
12 | } | ||
13 | |||
14 | /** | ||
15 | * Delete any interfaces that we own. | ||
16 | */ | ||
17 | WLanNetNode::~WLanNetNode(){ | ||
18 | } | ||
19 | |||
20 | const QString WLanNetNode::nodeDescription(){ | ||
21 | return tr("\ | ||
22 | <p>Configure Wi/Fi or WLan network cards.</p>\ | ||
23 | <p>Defines Wireless options for those cards</p>\ | ||
24 | " | ||
25 | ); | ||
26 | } | ||
27 | |||
28 | ANetNodeInstance * WLanNetNode::createInstance( void ) { | ||
29 | return new AWLan( this ); | ||
30 | } | ||
31 | |||
32 | const char ** WLanNetNode::needs( void ) { | ||
33 | return WLanNeeds; | ||
34 | } | ||
35 | |||
36 | const char * WLanNetNode::provides( void ) { | ||
37 | return "device"; | ||
38 | } | ||
39 | |||
40 | bool WLanNetNode::generateProperFilesFor( | ||
41 | ANetNodeInstance * ) { | ||
42 | return 1; | ||
43 | } | ||
44 | |||
45 | bool WLanNetNode::hasDataFor( const QString & ) { | ||
46 | return 0; | ||
47 | } | ||
48 | |||
49 | bool WLanNetNode::generateDataForCommonFile( | ||
50 | SystemFile & , | ||
51 | long, | ||
52 | ANetNodeInstance * ) { | ||
53 | return 1; | ||
54 | } | ||
55 | |||
56 | extern "C" { | ||
57 | void create_plugin( QList<ANetNode> & PNN ) { | ||
58 | PNN.append( new WLanNetNode() ); | ||
59 | } | ||
60 | } | ||
diff --git a/noncore/settings/networksettings2/wlan/wlan_NN.h b/noncore/settings/networksettings2/wlan/wlan_NN.h new file mode 100644 index 0000000..d1d6ded --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlan_NN.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef WLAN_NETNODE_H | ||
2 | #define WLAN_NETNODE_H | ||
3 | |||
4 | #include "netnode.h" | ||
5 | |||
6 | class AWLan; | ||
7 | |||
8 | class WLanNetNode : public ANetNode{ | ||
9 | |||
10 | Q_OBJECT | ||
11 | |||
12 | public: | ||
13 | |||
14 | WLanNetNode(); | ||
15 | virtual ~WLanNetNode(); | ||
16 | |||
17 | virtual const QString pixmapName() | ||
18 | { return "wlan"; } | ||
19 | |||
20 | virtual const QString nodeName() | ||
21 | { return tr("WLan Device"); } | ||
22 | |||
23 | virtual const QString nodeDescription() ; | ||
24 | |||
25 | virtual ANetNodeInstance * createInstance( void ); | ||
26 | |||
27 | virtual const char ** needs( void ); | ||
28 | virtual const char * provides( void ); | ||
29 | |||
30 | virtual bool generateProperFilesFor( ANetNodeInstance * NNI ); | ||
31 | virtual bool hasDataFor( const QString & S ); | ||
32 | virtual bool generateDataForCommonFile( | ||
33 | SystemFile & SF, long DevNr, ANetNodeInstance * NNI ); | ||
34 | |||
35 | private: | ||
36 | |||
37 | }; | ||
38 | |||
39 | extern "C" | ||
40 | { | ||
41 | void create_plugin( QList<ANetNode> & PNN ); | ||
42 | }; | ||
43 | |||
44 | #endif | ||
diff --git a/noncore/settings/networksettings2/wlan/wlan_NNI.cpp b/noncore/settings/networksettings2/wlan/wlan_NNI.cpp new file mode 100644 index 0000000..92f3457 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlan_NNI.cpp | |||
@@ -0,0 +1,30 @@ | |||
1 | #include "wlanedit.h" | ||
2 | #include "wlan_NNI.h" | ||
3 | #include "wlan_NN.h" | ||
4 | |||
5 | AWLan::AWLan( WLanNetNode * PNN ) : ANetNodeInstance( PNN ) { | ||
6 | GUI = 0; | ||
7 | RT = 0; | ||
8 | } | ||
9 | |||
10 | void AWLan::setSpecificAttribute( QString & , QString & ) { | ||
11 | } | ||
12 | |||
13 | void AWLan::saveSpecificAttribute( QTextStream & ) { | ||
14 | } | ||
15 | |||
16 | QWidget * AWLan::edit( QWidget * parent ) { | ||
17 | GUI = new WLanEdit( parent ); | ||
18 | GUI->showData( Data ); | ||
19 | return GUI; | ||
20 | } | ||
21 | |||
22 | QString AWLan::acceptable( void ) { | ||
23 | return ( GUI ) ? GUI->acceptable( ) : QString(); | ||
24 | } | ||
25 | |||
26 | void AWLan::commit( void ) { | ||
27 | if( GUI && GUI->commit( Data ) ) | ||
28 | setModified( 1 ); | ||
29 | } | ||
30 | |||
diff --git a/noncore/settings/networksettings2/wlan/wlan_NNI.h b/noncore/settings/networksettings2/wlan/wlan_NNI.h new file mode 100644 index 0000000..8b695b5 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlan_NNI.h | |||
@@ -0,0 +1,43 @@ | |||
1 | #ifndef WLAN_H | ||
2 | #define WLAN_H | ||
3 | |||
4 | #include <netnode.h> | ||
5 | #include "wlandata.h" | ||
6 | #include "wlanrun.h" | ||
7 | |||
8 | class WLanNetNode; | ||
9 | class WLanEdit; | ||
10 | |||
11 | class AWLan : public ANetNodeInstance { | ||
12 | |||
13 | public : | ||
14 | |||
15 | AWLan( WLanNetNode * PNN ); | ||
16 | |||
17 | QWidget * edit( QWidget * parent ); | ||
18 | QString acceptable( void ); | ||
19 | void commit( void ); | ||
20 | |||
21 | RuntimeInfo * runtime( void ) | ||
22 | { if( RT == 0 ) | ||
23 | RT = new WLanRun( this, Data ); | ||
24 | return RT; | ||
25 | } | ||
26 | |||
27 | virtual void * data( void ) | ||
28 | { return (void *)&Data; } | ||
29 | |||
30 | protected : | ||
31 | |||
32 | virtual void setSpecificAttribute( QString & Attr, QString & Value ); | ||
33 | virtual void saveSpecificAttribute( QTextStream & TS ); | ||
34 | |||
35 | private : | ||
36 | |||
37 | WLanEdit * GUI; | ||
38 | WLanData Data; | ||
39 | WLanRun * RT; | ||
40 | |||
41 | }; | ||
42 | |||
43 | #endif | ||
diff --git a/noncore/settings/networksettings2/wlan/wlandata.h b/noncore/settings/networksettings2/wlan/wlandata.h new file mode 100644 index 0000000..ba1f2c2 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlandata.h | |||
@@ -0,0 +1,17 @@ | |||
1 | #ifndef WLAN_DATA_H | ||
2 | #define WLAN_DATA_H | ||
3 | |||
4 | #include <qstring.h> | ||
5 | typedef struct WLanData { | ||
6 | QString Device; | ||
7 | QString LockFile; | ||
8 | long Speed; | ||
9 | short Parity; | ||
10 | short DataBits; | ||
11 | short StopBits; | ||
12 | bool HardwareControl; | ||
13 | bool SoftwareControl; | ||
14 | |||
15 | } WLanData_t; | ||
16 | |||
17 | #endif | ||
diff --git a/noncore/settings/networksettings2/wlan/wlanedit.cpp b/noncore/settings/networksettings2/wlan/wlanedit.cpp new file mode 100644 index 0000000..c884886 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlanedit.cpp | |||
@@ -0,0 +1,16 @@ | |||
1 | #include <GUIUtils.h> | ||
2 | #include "wlanedit.h" | ||
3 | |||
4 | WLanEdit::WLanEdit( QWidget * Parent ) : WLanGUI( Parent ){ | ||
5 | } | ||
6 | |||
7 | QString WLanEdit::acceptable( void ) { | ||
8 | return QString(); | ||
9 | } | ||
10 | |||
11 | void WLanEdit::showData( WLanData_t & Data ) { | ||
12 | } | ||
13 | |||
14 | bool WLanEdit::commit( WLanData_t & Data ) { | ||
15 | return 0; | ||
16 | } | ||
diff --git a/noncore/settings/networksettings2/wlan/wlanedit.h b/noncore/settings/networksettings2/wlan/wlanedit.h new file mode 100644 index 0000000..b7442d5 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlanedit.h | |||
@@ -0,0 +1,12 @@ | |||
1 | #include "wlandata.h" | ||
2 | #include "wlanGUI.h" | ||
3 | |||
4 | class WLanEdit : public WLanGUI { | ||
5 | |||
6 | public : | ||
7 | |||
8 | WLanEdit( QWidget * parent ); | ||
9 | QString acceptable( void ); | ||
10 | void showData( WLanData_t & Data ); | ||
11 | bool commit( WLanData_t & Data ); | ||
12 | }; | ||
diff --git a/noncore/settings/networksettings2/wlan/wlanrun.cpp b/noncore/settings/networksettings2/wlan/wlanrun.cpp new file mode 100644 index 0000000..79f11f7 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlanrun.cpp | |||
@@ -0,0 +1,5 @@ | |||
1 | #include "wlanrun.h" | ||
2 | |||
3 | bool WLanRun::handlesInterface( const QString & S ) { | ||
4 | return Pat.match( S ) >= 0; | ||
5 | } | ||
diff --git a/noncore/settings/networksettings2/wlan/wlanrun.h b/noncore/settings/networksettings2/wlan/wlanrun.h new file mode 100644 index 0000000..4cbb059 --- a/dev/null +++ b/noncore/settings/networksettings2/wlan/wlanrun.h | |||
@@ -0,0 +1,42 @@ | |||
1 | #ifndef WLANRUN_H | ||
2 | #define WLANRUN_H | ||
3 | |||
4 | #include <qregexp.h> | ||
5 | #include <asdevice.h> | ||
6 | #include "wlandata.h" | ||
7 | |||
8 | class WLanRun : public AsDevice { | ||
9 | |||
10 | public : | ||
11 | |||
12 | WLanRun( ANetNodeInstance * NNI, WLanData & Data ) : | ||
13 | AsDevice( NNI ), | ||
14 | Pat( "wlan[0-9]" ) | ||
15 | { } | ||
16 | |||
17 | virtual long count( void ) | ||
18 | { return 2; } | ||
19 | virtual QString genNic( long nr ) | ||
20 | { QString S; return S.sprintf( "wlan%ld", nr ); } | ||
21 | virtual AsDevice * device( void ) | ||
22 | { return asDevice(); } | ||
23 | |||
24 | protected : | ||
25 | |||
26 | void detectState( NodeCollection * ) | ||
27 | { } | ||
28 | |||
29 | bool setState( NodeCollection *, Action_t ) | ||
30 | { return 0; } | ||
31 | |||
32 | bool canSetState( State_t, Action_t ) | ||
33 | { return 0; } | ||
34 | |||
35 | bool handlesInterface( const QString & I ); | ||
36 | |||
37 | private : | ||
38 | |||
39 | QRegExp Pat; | ||
40 | }; | ||
41 | |||
42 | #endif | ||