summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/nsdata.cpp
Unidiff
Diffstat (limited to 'noncore/settings/networksettings2/nsdata.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings2/nsdata.cpp327
1 files changed, 138 insertions, 189 deletions
diff --git a/noncore/settings/networksettings2/nsdata.cpp b/noncore/settings/networksettings2/nsdata.cpp
index 6541596..eb63e02 100644
--- a/noncore/settings/networksettings2/nsdata.cpp
+++ b/noncore/settings/networksettings2/nsdata.cpp
@@ -131,3 +131,3 @@ QString NetworkSettingsData::saveSettings( void ) {
131 ErrS = qApp->translate( "NetworkSettings", 131 ErrS = qApp->translate( "NetworkSettings",
132 "<p>Could not save setup to %1 !</p>" ). 132 "<p>Could not save setup to \"%1\" !</p>" ).
133 arg(CfgFile); 133 arg(CfgFile);
@@ -151,3 +151,3 @@ QString NetworkSettingsData::saveSettings( void ) {
151 NNI = nit.current(); 151 NNI = nit.current();
152 TS << '[' <<NNI->netNode()->nodeName() << ']' << endl; 152 TS << '[' <<NNI->nodeClass()->nodeName() << ']' << endl;
153 NNI->saveAttributes( TS ); 153 NNI->saveAttributes( TS );
@@ -183,3 +183,3 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
183 // regenerate system files 183 // regenerate system files
184 printf( "Generating settings from %s\n", CfgFile.latin1() ); 184 fprintf( stderr, "Generating settings from %s\n", CfgFile.latin1() );
185 185
@@ -191,2 +191,3 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
191 AsDevice * CurDev; 191 AsDevice * CurDev;
192 ANetNode * CurDevNN;
192 bool needToRegenerate = ForceIt; 193 bool needToRegenerate = ForceIt;
@@ -217,4 +218,4 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
217 NNI = cncit.current(); 218 NNI = cncit.current();
218 if( ( NNI->netNode()->hasDataFor( SF->name(), 1 ) || 219 if( ( NNI->nodeClass()->hasDataFor( SF->name() ) ||
219 NNI->netNode()->hasDataFor( SF->name(), 0 ) 220 NNI->hasDataFor( SF->name() )
220 ) && 221 ) &&
@@ -255,7 +256,7 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
255 if( ForceIt || NNI->isModified() ) { 256 if( ForceIt || NNI->isModified() ) {
256 if( ! NNI->netNode()->generateProperFilesFor( NNI ) ) { 257 if( ! NNI->nodeClass()->generateProperFilesFor( NNI ) ) {
257 // problem generating 258 // problem generating
258 S = qApp->translate( "NetworkSettings", 259 S = qApp->translate( "NetworkSettings",
259 "<p>Cannot generate files proper to %1</p>" ). 260 "<p>Cannot generate files proper to \"%1\"</p>" ).
260 arg(NNI->netNode()->nodeName()) ; 261 arg(NNI->nodeClass()->nodeName()) ;
261 return S; 262 return S;
@@ -274,3 +275,3 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
274 275
275 printf( "Generating %s\n", SF->name().latin1() ); 276 fprintf( stderr, "Generating %s\n", SF->name().latin1() );
276 SF->open(); 277 SF->open();
@@ -282,3 +283,3 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
282 S = qApp->translate( "NetworkSettings", 283 S = qApp->translate( "NetworkSettings",
283 "<p>Error in preSection for file %1</p>" ). 284 "<p>Error in preSection for file \"%1\"</p>" ).
284 arg( SF->name() ); 285 arg( SF->name() );
@@ -293,21 +294,20 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
293 ++nnit ) { 294 ++nnit ) {
294 ANetNode * NN; 295
295 296 CurDevNN = nnit.current()->NetNode;
296 NN = nnit.current()->NetNode; 297
297 298 // are there instances for this netnode ?
298 // are there instances ? 299 NNI = 0;
299 NNI = 0; 300 for( QDictIterator<ANetNodeInstance> nniit(
300 for( QDictIterator<ANetNodeInstance> nniit( 301 NSResources->netNodeInstances() );
301 NSResources->netNodeInstances() ); 302 nniit.current();
302 nniit.current(); 303 ++nniit ) {
303 ++nniit ) { 304 if( nniit.current()->nodeClass() == CurDevNN ) {
304 if( nniit.current()->netNode() == NN ) { 305 NNI = nniit.current();
305 NNI = nniit.current(); 306 break;
306 break;
307 }
308 } 307 }
308 }
309 309
310 if( ! NNI ) 310 if( ! NNI )
311 // no instances 311 // no instances -> next netnode type
312 continue; 312 continue;
313 313
@@ -316,167 +316,11 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
316 // generate start for this nodetype for all possible devices of this type 316 // generate start for this nodetype for all possible devices of this type
317 for( int i = 0; i < CurDev->count(); i ++ ) { 317 for( int i = 0; i < CurDevNN->instanceCount(); i ++ ) {
318 if( SF->preDeviceSection( NNI, i ) ) { 318 S = generateSystemFileNode( *SF, CurDev, NNI, i );
319 S = qApp->translate( "NetworkSettings", 319 if( ! S.isEmpty() )
320 "<p>Error in preDeviceSection for file %1 and node %2</p>" ).
321 arg( SF->name() ).
322 arg( NN->nodeName() );
323 return S;
324 }
325
326 if( ! NN->hasDataFor( SF->name(), 1 ) ) {
327 if( NN->generateDeviceDataForCommonFile( *SF, i, NNI ) ) {
328 S = qApp->translate( "NetworkSettings",
329 "<p>Error in node part for file %1 and node %2</p>" ).
330 arg( SF->name() ).
331 arg( NN->nodeName() );
332 return S;
333 }
334 }
335 }
336 } else {
337 // just request this once
338 if( SF->preDeviceSection( NNI, -1 ) ) {
339 S = qApp->translate( "NetworkSettings",
340 "<p>Error in preDeviceSection for file %1 and node %2</p>" ).
341 arg( SF->name() ).
342 arg( NN->nodeName() );
343 return S;
344 }
345
346 if( ! NN->hasDataFor( SF->name(), 1 ) ) {
347 if( NN->generateDeviceDataForCommonFile( *SF, -1, NNI ) ) {
348 S = qApp->translate( "NetworkSettings",
349 "<p>Error in node part for file %1 and node %2</p>" ).
350 arg( SF->name() ).
351 arg( NN->nodeName() );
352 return S;
353 }
354 }
355 }
356
357 // now generate profile specific data for all
358 // connections working on a device of the current
359 // netnode type
360 for( QDictIterator<NodeCollection> ncit(M);
361 ncit.current();
362 ++ncit ) {
363 NC = ncit.current();
364
365 NNI = NC->getToplevel();
366
367 // no output needed
368 if( ! NNI->netNode()->hasDataFor( SF->name(), 0 ) )
369 continue;
370
371 // get the netnode that serves as the device for this
372 // connection
373 AsDevice * Dev = NC->device();
374
375 if( CurDev ) {
376 if( CurDev != Dev ) {
377 // other device -> later
378 continue;
379 }
380
381 // generate 'entry' for every combination of device and profile
382 // each node delegates to deeper level
383 for( int i = 0; i < CurDev->count(); i ++ ) {
384 if( SF->preNodeSection( NNI, i ) ) {
385 S = qApp->translate( "NetworkSettings",
386 "<p>Error in preNodeSection for file %1 and node %2</p>" ).
387 arg( SF->name() ).
388 arg( NNI->netNode()->nodeName() );
389 return S;
390 }
391
392 // ask all nodes in connection
393
394 for( QListIterator<ANetNodeInstance> cncit(*NC);
395 cncit.current();
396 ++cncit ) {
397 NNI = cncit.current();
398
399 if( NNI->netNode()->hasDataFor( SF->name(), 0 ) ) {
400 if( NNI->netNode()->generateDataForCommonFile(*SF,i,NNI) ) {
401 S = qApp->translate( "NetworkSettings",
402 "<p>Error in node part for file %1 and node %2</p>" ).
403 arg( SF->name() ).
404 arg( NNI->netNode()->nodeName() );
405 return S;
406 }
407 }
408 }
409
410 if( SF->postNodeSection( NNI, i ) ) {
411 S = qApp->translate( "NetworkSettings",
412 "<p>Error in postNodeSection for file %1 and node %2</p>" ).
413 arg( SF->name() ).
414 arg( NNI->netNode()->nodeName() );
415 return S;
416 }
417 }
418
419 } else {
420 if( Dev ) {
421 // other
422 continue;
423 }
424
425 // one entry to generate
426 if( SF->preNodeSection( NNI, -1 ) ) {
427 S = qApp->translate( "NetworkSettings",
428 "<p>Error in preNodeSection for file %1 and node %2</p>" ).
429 arg( SF->name() ).
430 arg( NNI->netNode()->nodeName() );
431 return S;
432 }
433
434 if( NNI->netNode()->generateDataForCommonFile(*SF,-1,NNI) ) {
435 S = qApp->translate( "NetworkSettings",
436 "<p>Error in node part for file %1 and node %2</p>" ).
437 arg( SF->name() ).
438 arg( NNI->netNode()->nodeName() );
439 return S;
440 }
441
442 if( SF->postNodeSection( NNI, -1 ) ) {
443 S = qApp->translate( "NetworkSettings",
444 "<p>Error in postNodeSection for file %1 and node %2</p>" ).
445 arg( SF->name() ).
446 arg( NNI->netNode()->nodeName() );
447 return S;
448 }
449 }
450
451 // generated some data
452 if( SF->postNodeSection( NNI, -1 ) ) {
453 S = qApp->translate( "NetworkSettings",
454 "<p>Error in postNodeSection for file %1 and node %2</p>" ).
455 arg( SF->name() ).
456 arg( NNI->netNode()->nodeName() );
457 return S;
458 }
459 *SF << endl;
460 }
461
462 if( CurDev ) {
463 // generate 'entry' for every combination of device and profile
464 // each node delegates to deeper level
465 for( int i = 0; i < CurDev->count(); i ++ ) {
466 if( SF->postDeviceSection( NNI, i ) ) {
467 S = qApp->translate( "NetworkSettings",
468 "<p>Error in postDeviceSection for file %1 and node %2</p>" ).
469 arg( SF->name() ).
470 arg( NNI->netNode()->nodeName() );
471 return S; 320 return S;
472 }
473 } 321 }
474 } else { 322 } else {
475 if( SF->postDeviceSection( NNI, -1 ) ) { 323 S = generateSystemFileNode( *SF, 0, NNI, -1 );
476 S = qApp->translate( "NetworkSettings", 324 if( ! S.isEmpty() )
477 "<p>Error in postDeviceSection for file %1 and node %2</p>" ).
478 arg( SF->name() ).
479 arg( NNI->netNode()->nodeName() );
480 return S; 325 return S;
481 }
482 } 326 }
@@ -486,3 +330,3 @@ QString NetworkSettingsData::generateSettings( bool ForceReq ) {
486 S = qApp->translate( "NetworkSettings", 330 S = qApp->translate( "NetworkSettings",
487 "<p>Error in postSection for file %1</p>" ). 331 "<p>Error in postSection for file \"%1\"</p>" ).
488 arg( SF->name() ); 332 arg( SF->name() );
@@ -591 +435,106 @@ bool NetworkSettingsData::regenerate( void ) {
591 435
436QString NetworkSettingsData::generateSystemFileNode(
437 SystemFile &SF,
438 AsDevice * CurDev,
439 ANetNodeInstance * DevNNI,
440 long DevInstNr ) {
441
442 QString S="";
443 ANetNode * CurDevNN = DevNNI->nodeClass();
444 Name2Connection_t & M = NSResources->connections();
445
446 if( SF.preDeviceSection( CurDevNN ) ) {
447 S = qApp->translate( "NetworkSettings",
448 "<p>Error in preDeviceSection for file \"%1\" and nodetype \"%2\"</p>" ).
449 arg( SF.name() ).
450 arg( CurDevNN->nodeName() );
451 return S;
452 }
453
454 if( CurDevNN->hasDataFor( SF.name() ) ) {
455 if( CurDevNN->generateDeviceDataForCommonFile( SF, DevInstNr ) ) {
456 S = qApp->translate( "NetworkSettings",
457 "<p>Error in node Device part for file \"%1\" and node \"%2\"</p>" ).
458 arg( SF.name() ).
459 arg( CurDevNN->nodeName() );
460 return S;
461 }
462 }
463
464 if( CurDev )
465 fprintf( stderr, "Cur %s\n", CurDevNN->nodeName().latin1() );
466 else
467 fprintf( stderr, "Cur NO\n" );
468
469 // now generate profile specific data for all
470 // connections working on a device of the current
471 // netnode type
472 for( QDictIterator<NodeCollection> ncit(M);
473 ncit.current();
474 ++ncit ) {
475 NodeCollection * NC = ncit.current();
476
477 // currenly only those connections that work on
478 // the current device (or on no device if no current)
479 AsDevice * Dev = NC->device();
480
481 fprintf( stderr, "%s\n", Dev->netNode()->nodeName().latin1() );
482 if( CurDev ) {
483 if( CurDevNN != Dev->netNode()->nodeClass() ) {
484 // other device type -> later
485 fprintf( stderr, "Other Dev type\n" );
486 continue;
487 }
488 } else {
489 if( Dev ) {
490 // other
491 continue;
492 }
493 }
494
495 // generate 'entry'
496 if( SF.preNodeSection( DevNNI, DevInstNr ) ) {
497 S = qApp->translate( "NetworkSettings",
498 "<p>Error in preNodeSection for file \"%1\" and node \"%2\"</p>" ).
499 arg( SF.name() ).
500 arg( CurDevNN->nodeName() );
501 return S;
502 }
503
504 // ask all nodes in connection
505 for( QListIterator<ANetNodeInstance> cncit(*NC);
506 cncit.current();
507 ++cncit ) {
508 ANetNodeInstance * NNI = cncit.current();
509
510 if( NNI->hasDataFor( SF.name() ) ) {
511 if( NNI->generateDataForCommonFile(SF,DevInstNr) ) {
512 S = qApp->translate( "NetworkSettings",
513 "<p>Error in node part for file \"%1\" and node \"%2\"</p>" ).
514 arg( SF.name() ).
515 arg( NNI->nodeClass()->nodeName() );
516 return S;
517 }
518 }
519 }
520
521 if( SF.postNodeSection( DevNNI, DevInstNr ) ) {
522 S = qApp->translate( "NetworkSettings",
523 "<p>Error in postNodeSection for file \"%1\" and node \"%2\"</p>" ).
524 arg( SF.name() ).
525 arg( CurDevNN->nodeName() );
526 return S;
527 }
528 SF << endl;
529 }
530
531 if( SF.postDeviceSection( CurDevNN ) ) {
532 S = qApp->translate( "NetworkSettings",
533 "<p>Error in postDeviceSection for file \"%1\" and node \"%2\"</p>" ).
534 arg( SF.name() ).
535 arg( CurDevNN->nodeName() );
536 return S;
537 }
538
539 return S;
540}