summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/editconnection.cpp
authorwimpie <wimpie>2004-04-04 15:23:16 (UTC)
committer wimpie <wimpie>2004-04-04 15:23:16 (UTC)
commitfd9146de7698a796659b68606429da490f817138 (patch) (unidiff)
treef026bf2a7adcaaa3a0dd0429e7474f536787253d /noncore/settings/networksettings2/editconnection.cpp
parent5b52572e2ec9f0f6f39706aceb9ec1e98440fd3d (diff)
downloadopie-fd9146de7698a796659b68606429da490f817138.zip
opie-fd9146de7698a796659b68606429da490f817138.tar.gz
opie-fd9146de7698a796659b68606429da490f817138.tar.bz2
Many changes
Diffstat (limited to 'noncore/settings/networksettings2/editconnection.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/networksettings2/editconnection.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/noncore/settings/networksettings2/editconnection.cpp b/noncore/settings/networksettings2/editconnection.cpp
index ce13573..4bbe502 100644
--- a/noncore/settings/networksettings2/editconnection.cpp
+++ b/noncore/settings/networksettings2/editconnection.cpp
@@ -59,240 +59,235 @@ public:
59 int column, int width, int alignment ); 59 int column, int width, int alignment );
60 60
61}; 61};
62 62
63void MyQListViewItem::paintCell( QPainter *p, const QColorGroup &cg, 63void MyQListViewItem::paintCell( QPainter *p, const QColorGroup &cg,
64 int column, int width, int alignment ) 64 int column, int width, int alignment )
65{ 65{
66 QColorGroup _cg( cg ); 66 QColorGroup _cg( cg );
67 QColor c = _cg.text(); 67 QColor c = _cg.text();
68 if ( ! isSelectable() ) 68 if ( ! isSelectable() )
69 _cg.setColor( QColorGroup::Text, Qt::lightGray ); 69 _cg.setColor( QColorGroup::Text, Qt::lightGray );
70 QListViewItem::paintCell( p, _cg, column, width, alignment ); 70 QListViewItem::paintCell( p, _cg, column, width, alignment );
71 _cg.setColor( QColorGroup::Text, c ); 71 _cg.setColor( QColorGroup::Text, c );
72} 72}
73 73
74// 74//
75// 75//
76// REAL GUI 76// REAL GUI
77// 77//
78// 78//
79 79
80bool EditConnection::AutoCollapse = 1; 80bool EditConnection::AutoCollapse = 1;
81 81
82EditConnection::EditConnection( QWidget* parent ) : 82EditConnection::EditConnection( QWidget* parent ) :
83 EditConnectionGUI( parent, 0, TRUE ), TmpCollection() { 83 EditConnectionGUI( parent, 0, TRUE ), TmpCollection() {
84 84
85 Tab_TB->setTabEnabled( Setup_FRM, FALSE ); 85 Tab_TB->setTabEnabled( Setup_FRM, FALSE );
86 Setup_FRM->setEnabled( FALSE ); 86 Setup_FRM->setEnabled( FALSE );
87 87
88 TmpIsValid = 0; 88 TmpIsValid = 0;
89 SelectedNodes = 0; 89 SelectedNodes = 0;
90 90
91 AutoCollapse_CB->setChecked( AutoCollapse ); 91 AutoCollapse_CB->setChecked( AutoCollapse );
92 92
93 Mapping = new QPtrDict<ANetNode>; 93 Mapping = new QPtrDict<ANetNode>;
94 Mapping->setAutoDelete( FALSE ); 94 Mapping->setAutoDelete( FALSE );
95 Nodes_LV->header()->hide(); 95 Nodes_LV->header()->hide();
96 // popluate tree with all NetNodes 96 // popluate tree with all NetNodes
97 buildFullTree(); 97 buildFullTree();
98} 98}
99 99
100NodeCollection * EditConnection::getTmpCollection( void ) { 100NodeCollection * EditConnection::getTmpCollection( void ) {
101 101
102 if( TmpIsValid ) 102 if( TmpIsValid )
103 // content is stil OK 103 // content is stil OK
104 return &(TmpCollection); 104 return &(TmpCollection);
105 105
106 // reset collection -> delete all NEW NetNodes 106 // reset collection -> delete all NEW NetNodes
107 { ANetNodeInstance * NNI;
108 for( QListIterator<ANetNodeInstance> it(TmpCollection); 107 for( QListIterator<ANetNodeInstance> it(TmpCollection);
109 it.current(); 108 it.current();
110 ++it ) { 109 ++it ) {
111 if( it.current()->isNew() ) { 110 if( it.current()->isNew() ) {
112 delete it.current(); 111 delete it.current();
113 } 112 }
114 } 113 }
115 TmpCollection.clear(); 114 TmpCollection.clear();
116 }
117 115
118 // update content 116 // update content
119 QListViewItem * it = Nodes_LV->firstChild(); 117 QListViewItem * it = Nodes_LV->firstChild();
120 ANetNode * NN; 118 ANetNode * NN;
121 // start iter 119 // start iter
122 ANetNodeInstance * NNI = 120 ANetNodeInstance * NNI =
123 (SelectedNodes) ? SelectedNodes->first() : 0 ; 121 (SelectedNodes) ? SelectedNodes->first() : 0 ;
124 122
125 TmpCollection.setModified( 0 ); 123 TmpCollection.setModified( 0 );
126 124
127 while ( it ) { 125 while ( it ) {
128 NN = (*Mapping)[it]; 126 NN = (*Mapping)[it];
129 if( NN == 0 ) { 127 if( NN == 0 ) {
130 // child is controller -> has sub radio 128 // child is controller -> has sub radio
131 // check if one radio is selected 129 // check if one radio is selected
132 it = it->firstChild(); 130 it = it->firstChild();
133 while( it ) { 131 while( it ) {
134 if( ((QCheckListItem *)it)->isOn() ) { 132 if( ((QCheckListItem *)it)->isOn() ) {
135 // this radio is selected -> go deeper 133 // this radio is selected -> go deeper
136 if( SelectedNodes == 0 || 134 if( SelectedNodes == 0 ||
137 NNI == 0 || 135 NNI == 0 ||
138 NNI->netNode()->nodeName() != it->text(0) ) { 136 NNI->nodeClass()->nodeName() != it->text(0) ) {
139 // new item not in previous collection 137 // new item not in previous collection
140 ANetNodeInstance * NNI = (*Mapping)[it]->createInstance(); 138 ANetNodeInstance * NNI = (*Mapping)[it]->createInstance();
141 NNI->initialize(); 139 NNI->initialize();
142 // this node type not in collection 140 // this node type not in collection
143 TmpCollection.append( NNI ); 141 TmpCollection.append( NNI );
144 // master collection changed because new item in it 142 // master collection changed because new item in it
145 TmpCollection.setModified( 1 ); 143 TmpCollection.setModified( 1 );
146 // no more valid items in old list 144 // no more valid items in old list
147 NNI = 0; 145 NNI = 0;
148 } else { 146 } else {
149 // already in list -> copy pointer 147 // already in list -> copy pointer
150 TmpCollection.append( NNI ); 148 TmpCollection.append( NNI );
151 NNI = SelectedNodes->next(); 149 NNI = SelectedNodes->next();
152 } 150 }
153 it = it->firstChild(); 151 it = it->firstChild();
154 // do not bother to check other items 152 // do not bother to check other items
155 break; 153 break;
156 } 154 }
157 it = it->nextSibling(); 155 it = it->nextSibling();
158 } 156 }
159 } else { 157 } else {
160 // check children 158 // check children
161 it = it->firstChild(); 159 it = it->firstChild();
162 } 160 }
163 } 161 }
164 162
165 TmpIsValid = 1; 163 TmpIsValid = 1;
166 return &(TmpCollection); 164 return &(TmpCollection);
167} 165}
168 166
169// pass a connection NodeCollection to be edited 167// pass a connection NodeCollection to be edited
170void EditConnection::setConnection( NodeCollection * NC ) { 168void EditConnection::setConnection( NodeCollection * NC ) {
171 ANetNodeInstance * NNI; 169 ANetNodeInstance * NNI;
172 ANetNode * NN; 170 ANetNode * NN;
173 171
174 SelectedNodes = NC; 172 SelectedNodes = NC;
175 Name_LE->setText( NC->name() ); 173 Name_LE->setText( NC->name() );
176 NNI = NC->first(); 174 NNI = NC->first();
177 175
178 // show configure tabl 176 // show configure tabl
179 Tab_TB->setCurrentPage( 1 ); 177 Tab_TB->setCurrentPage( 1 );
180 178
181 // valid colledction 179 // valid colledction
182 Tab_TB->setTabEnabled( Setup_FRM, FALSE ); 180 Tab_TB->setTabEnabled( Setup_FRM, FALSE );
183 Setup_FRM->setEnabled( FALSE ); 181 Setup_FRM->setEnabled( FALSE );
184 182
185 // select items in collection 183 // select items in collection
186 QListViewItem * it = Nodes_LV->firstChild(); 184 QListViewItem * it = Nodes_LV->firstChild();
187 bool Found; 185 bool Found;
188 186
189 TmpIsValid = 0; 187 TmpIsValid = 0;
190 188
191 while ( it ) { 189 while ( it ) {
192 // listitem corresponds to netnode 190 // listitem corresponds to netnode
193 NN = (*Mapping)[it]; 191 NN = (*Mapping)[it];
194 if( NN == 0 ) { 192 if( NN == 0 ) {
195 // child is controller -> has sub radio 193 // child is controller -> has sub radio
196 QString Ctr = it->text(0); 194 QString Ctr = it->text(0);
197 // check if one radio is selected 195 // check if one radio is selected
198 it = it->firstChild(); 196 it = it->firstChild();
199 Found = 0; 197 Found = 0;
200 while( it ) { 198 while( it ) {
201 if( NNI && NNI->netNode()->nodeName() == it->text(0) ) { 199 if( NNI && NNI->nodeClass()->nodeName() == it->text(0) ) {
202 // this radio is part of the collection 200 // this radio is part of the collection
203 ((QCheckListItem *)it)->setOn( 1 ); 201 ((QCheckListItem *)it)->setOn( 1 );
204 updateGUI( it, NNI->netNode() ); 202 updateGUI( it, NNI->nodeClass() );
205 // check its children 203 // check its children
206 Found = 1; 204 Found = 1;
207 it = it->firstChild(); 205 it = it->firstChild();
208 NNI = SelectedNodes->next(); 206 NNI = SelectedNodes->next();
209 // do not bother to check other items 207 // do not bother to check other items
210 break; 208 break;
211 } 209 }
212 it = it->nextSibling(); 210 it = it->nextSibling();
213 } 211 }
214 if( ! Found ) { 212 if( ! Found ) {
215 // this means that this level is NOT present in collection 213 // this means that this level is NOT present in collection
216 // probably INCOMPATIBEL collection OR Missing plugin 214 // probably INCOMPATIBEL collection OR Missing plugin
217 QMessageBox::warning( 215 QMessageBox::warning(
218 0, 216 0,
219 tr( "Error presentig Connection" ), 217 tr( "Error presentig Connection" ),
220 tr( "<p>Old connection or missing plugin \"<i>%1</i>\"</p>" ). 218 tr( "<p>Old connection or missing plugin \"<i>%1</i>\"</p>" ).
221 arg(Ctr) ); 219 arg(Ctr) );
222 return; 220 return;
223 } 221 }
224 } else { 222 } else {
225 // automatic item -> check children 223 // automatic item -> check children
226 it = it->firstChild(); 224 it = it->firstChild();
227 } 225 }
228 } 226 }
229} 227}
230 228
231// get result of editing (either new OR updated collection 229// get result of editing (either new OR updated collection
232NodeCollection * EditConnection::connection( void ) { 230NodeCollection * EditConnection::connection( void ) {
233 231
234 if( SelectedNodes == 0 ) { 232 if( SelectedNodes == 0 ) {
235 // new collection 233 // new collection
236 SelectedNodes = new NodeCollection; 234 SelectedNodes = new NodeCollection;
237 } 235 }
238 236
239 // clean out old entries 237 // clean out old entries
240 SelectedNodes->clear(); 238 SelectedNodes->clear();
241 239
242 // transfer 240 // transfer
243 { ANetNodeInstance * NNI;
244
245 for( QListIterator<ANetNodeInstance> it(TmpCollection); 241 for( QListIterator<ANetNodeInstance> it(TmpCollection);
246 it.current(); 242 it.current();
247 ++it ) { 243 ++it ) {
248 SelectedNodes->append( it.current() ); 244 SelectedNodes->append( it.current() );
249 } 245 }
250 }
251 246
252 if( TmpCollection.isModified() ) 247 if( TmpCollection.isModified() )
253 SelectedNodes->setModified( 1 ); 248 SelectedNodes->setModified( 1 );
254 249
255 if( SelectedNodes->name() != Name_LE->text() ) { 250 if( SelectedNodes->name() != Name_LE->text() ) {
256 SelectedNodes->setName( Name_LE->text() ); 251 SelectedNodes->setName( Name_LE->text() );
257 SelectedNodes->setModified( 1 ); 252 SelectedNodes->setModified( 1 );
258 } 253 }
259 254
260 return SelectedNodes; 255 return SelectedNodes;
261} 256}
262 257
263// Build device tree -> start 258// Build device tree -> start
264void EditConnection::buildFullTree( void ) { 259void EditConnection::buildFullTree( void ) {
265 ANetNode * NN; 260 ANetNode * NN;
266 261
267 // toplevel item 262 // toplevel item
268 MyQCheckListItem * TheTop = new MyQCheckListItem( 263 MyQCheckListItem * TheTop = new MyQCheckListItem(
269 Nodes_LV, 264 Nodes_LV,
270 NSResources->netNode2Name("fullsetup"), 265 NSResources->netNode2Name("fullsetup"),
271 QCheckListItem::Controller ); 266 QCheckListItem::Controller );
272 TheTop->setOpen( TRUE ); 267 TheTop->setOpen( TRUE );
273 Description_LBL->setText( 268 Description_LBL->setText(
274 NSResources->netNode2Description( "fullsetup" ) ); 269 NSResources->netNode2Description( "fullsetup" ) );
275 Nodes_LV->setSelected( TheTop, TRUE ); 270 Nodes_LV->setSelected( TheTop, TRUE );
276 271
277 // find all Nodes that care toplevel nodes -> ie provide 272 // find all Nodes that care toplevel nodes -> ie provide
278 // TCP/IP Connection 273 // TCP/IP Connection
279 for( QDictIterator<NetNode_t> Iter(NSResources->netNodes()); 274 for( QDictIterator<NetNode_t> Iter(NSResources->netNodes());
280 Iter.current(); 275 Iter.current();
281 ++Iter ) { 276 ++Iter ) {
282 277
283 NN = Iter.current()->NetNode; 278 NN = Iter.current()->NetNode;
284 279
285 if( ! NN->isToplevel() ) { 280 if( ! NN->isToplevel() ) {
286 continue; 281 continue;
287 } 282 }
288 283
289 MyQCheckListItem * it = new MyQCheckListItem( TheTop, 284 MyQCheckListItem * it = new MyQCheckListItem( TheTop,
290 NN->nodeName(), 285 NN->nodeName(),
291 QCheckListItem::RadioButton ); 286 QCheckListItem::RadioButton );
292 it->setPixmap( 0, NSResources->getPixmap( "Devices/commprofile" ) ); 287 it->setPixmap( 0, NSResources->getPixmap( "Devices/commprofile" ) );
293 // remember that this node maps to this listitem 288 // remember that this node maps to this listitem
294 Mapping->insert( it, NN ); 289 Mapping->insert( it, NN );
295 buildSubTree( it, NN ); 290 buildSubTree( it, NN );
296 } 291 }
297} 292}
298 293
@@ -403,98 +398,98 @@ void EditConnection::SLOT_SelectNode( QListViewItem * it ) {
403 } 398 }
404 399
405 Description_LBL->setText( NN->nodeDescription() ); 400 Description_LBL->setText( NN->nodeDescription() );
406 401
407 if( ! it->isSelectable() ) { 402 if( ! it->isSelectable() ) {
408 return; 403 return;
409 } 404 }
410 405
411 if( ! ((QCheckListItem *)it)->isOn() ) { 406 if( ! ((QCheckListItem *)it)->isOn() ) {
412 // clicked on line but NOT on Check or Radio item 407 // clicked on line but NOT on Check or Radio item
413 return; 408 return;
414 } 409 }
415 410
416 // item has really changed -> update 411 // item has really changed -> update
417 TmpIsValid = 0; 412 TmpIsValid = 0;
418 updateGUI( it, NN ); 413 updateGUI( it, NN );
419} 414}
420 415
421// cliecked on TAB to go to setup 416// cliecked on TAB to go to setup
422void EditConnection::SLOT_AlterTab( const QString & S ) { 417void EditConnection::SLOT_AlterTab( const QString & S ) {
423 if( S == tr( "Setup" ) && Setup_FRM->isEnabled() ) { 418 if( S == tr( "Setup" ) && Setup_FRM->isEnabled() ) {
424 // switched to setup -> update CB and populate ws with 419 // switched to setup -> update CB and populate ws with
425 // forms for devices 420 // forms for devices
426 421
427 if( ! TmpIsValid ) { 422 if( ! TmpIsValid ) {
428 getTmpCollection(); 423 getTmpCollection();
429 424
430 // clear CB and Ws 425 // clear CB and Ws
431 { QWidget * W; 426 { QWidget * W;
432 int i = 0; 427 int i = 0;
433 428
434 Devices_CB->clear(); 429 Devices_CB->clear();
435 while( ( W = Setup_WS->widget( i ) ) ) { 430 while( ( W = Setup_WS->widget( i ) ) ) {
436 Setup_WS->removeWidget( W ); 431 Setup_WS->removeWidget( W );
437 i ++; 432 i ++;
438 } 433 }
439 } 434 }
440 435
441 // update CB 436 // update CB
442 // and populate WidgetStack 437 // and populate WidgetStack
443 { ANetNodeInstance * NNI; 438 { ANetNodeInstance * NNI;
444 QListIterator<ANetNodeInstance> it(TmpCollection); 439 QListIterator<ANetNodeInstance> it(TmpCollection);
445 int i = 0; 440 int i = 0;
446 QWidget * W; 441 QWidget * W;
447 442
448 for ( ; it.current(); ++it ) { 443 for ( ; it.current(); ++it ) {
449 NNI = it.current(); 444 NNI = it.current();
450 Devices_CB->insertItem( 445 Devices_CB->insertItem(
451 NSResources->getPixmap( NNI->netNode()->pixmapName() ), 446 NSResources->getPixmap( NNI->nodeClass()->pixmapName() ),
452 NNI->netNode()->nodeName() 447 NNI->nodeClass()->nodeName()
453 ); 448 );
454 449
455 // add edit widget 450 // add edit widget
456 W = NNI->edit( Setup_WS ); 451 W = NNI->edit( Setup_WS );
457 if( ! W) { 452 if( ! W) {
458 W = new QLabel( Setup_WS, 453 W = new QLabel( Setup_WS,
459 tr("No configuration required")); 454 tr("No configuration required"));
460 } 455 }
461 Setup_WS->addWidget( W , i ); 456 Setup_WS->addWidget( W , i );
462 i ++; 457 i ++;
463 } 458 }
464 } 459 }
465 Setup_WS->raiseWidget( 0 ); 460 Setup_WS->raiseWidget( 0 );
466 } // still valid 461 } // still valid
467 } 462 }
468} 463}
469 464
470// update visual feedback of selection state 465// update visual feedback of selection state
471void EditConnection::updateGUI( QListViewItem * it, ANetNode * NN ) { 466void EditConnection::updateGUI( QListViewItem * it, ANetNode * NN ) {
472 467
473 bool HCC = haveCompleteConfig( it ); 468 bool HCC = haveCompleteConfig( it );
474 Tab_TB->setTabEnabled( Setup_FRM, HCC ); 469 Tab_TB->setTabEnabled( Setup_FRM, HCC );
475 Setup_FRM->setEnabled( HCC ); 470 Setup_FRM->setEnabled( HCC );
476 471
477 // disable children of all siblings at same level 472 // disable children of all siblings at same level
478 QListViewItem * Sbl = it->parent()->firstChild(); 473 QListViewItem * Sbl = it->parent()->firstChild();
479 while( Sbl ) { 474 while( Sbl ) {
480 if ( Sbl != it ) { 475 if ( Sbl != it ) {
481 disableTree( Sbl->firstChild(), FALSE ); 476 disableTree( Sbl->firstChild(), FALSE );
482 Sbl->setSelectable( TRUE ); 477 Sbl->setSelectable( TRUE );
483 if( AutoCollapse ) 478 if( AutoCollapse )
484 Sbl->setOpen( FALSE ); 479 Sbl->setOpen( FALSE );
485 } 480 }
486 Sbl = Sbl->nextSibling(); 481 Sbl = Sbl->nextSibling();
487 } 482 }
488 483
489 // enable selected path (as deep as it goes 484 // enable selected path (as deep as it goes
490 it->setOpen( TRUE ); 485 it->setOpen( TRUE );
491 enablePath( it->firstChild(), 486 enablePath( it->firstChild(),
492 (it->depth()==1) ? 487 (it->depth()==1) ?
493 1 : // toplevel always alternatives 488 1 : // toplevel always alternatives
494 (NN->alternatives().size() > 1) ); 489 (NN->alternatives().size() > 1) );
495} 490}
496 491
497void EditConnection::disableTree( QListViewItem * it, bool Mode ) { 492void EditConnection::disableTree( QListViewItem * it, bool Mode ) {
498 while( it ) { 493 while( it ) {
499 // disable sbl's chidren 494 // disable sbl's chidren
500 it->setSelectable( Mode ); 495 it->setSelectable( Mode );