Diffstat (limited to 'noncore/settings/networksettings/interfaces.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/networksettings/interfaces.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/noncore/settings/networksettings/interfaces.cpp b/noncore/settings/networksettings/interfaces.cpp index 1287d90..eef42df 100644 --- a/noncore/settings/networksettings/interfaces.cpp +++ b/noncore/settings/networksettings/interfaces.cpp | |||
@@ -324,51 +324,51 @@ bool Interfaces::setInterfaceOption(QString option, QString value){ | |||
324 | * Removes all of the options from the currently selected interface. | 324 | * Removes all of the options from the currently selected interface. |
325 | * @return bool error if if successfull | 325 | * @return bool error if if successfull |
326 | */ | 326 | */ |
327 | bool Interfaces::removeAllInterfaceOptions(){ | 327 | bool Interfaces::removeAllInterfaceOptions(){ |
328 | return removeAllOptions(currentIface); | 328 | return removeAllOptions(currentIface); |
329 | } | 329 | } |
330 | 330 | ||
331 | /** | 331 | /** |
332 | * Set the current map to interface's map. This needs to be done before you | 332 | * Set the current map to interface's map. This needs to be done before you |
333 | * can call addMapping(), set/getMap(), and get/setScript(). | 333 | * can call addMapping(), set/getMap(), and get/setScript(). |
334 | * @param interface the name of the interface to set. All whitespace is | 334 | * @param interface the name of the interface to set. All whitespace is |
335 | * removed from the interface name. | 335 | * removed from the interface name. |
336 | * @return bool true if it is successfull. | 336 | * @return bool true if it is successfull. |
337 | */ | 337 | */ |
338 | bool Interfaces::setMapping(QString interface){ | 338 | bool Interfaces::setMapping(QString interface){ |
339 | interface = interface.simplifyWhiteSpace(); | 339 | interface = interface.simplifyWhiteSpace(); |
340 | interface = interface.replace(QRegExp(" "), ""); | 340 | interface = interface.replace(QRegExp(" "), ""); |
341 | return setStanza(MAPPING, interface, currentMapping); | 341 | return setStanza(MAPPING, interface, currentMapping); |
342 | } | 342 | } |
343 | 343 | ||
344 | /** | 344 | /** |
345 | * Adds a new Mapping to the interfaces file with interfaces. | 345 | * Adds a new Mapping to the interfaces file with interfaces. |
346 | * @param interface the name(s) of the interfaces to set to this mapping | 346 | * @param interface the name(s) of the interfaces to set to this mapping |
347 | */ | 347 | */ |
348 | void Interfaces::addMapping(QString interfaces){ | 348 | void Interfaces::addMapping(QString option){ |
349 | interfaces.append(""); | 349 | interfaces.append(""); |
350 | interfaces.append(QString(MAPPING " %1").arg(interfaces)); | 350 | interfaces.append(QString(MAPPING " %1").arg(option)); |
351 | } | 351 | } |
352 | 352 | ||
353 | /** | 353 | /** |
354 | * Set a map option within a mapping. | 354 | * Set a map option within a mapping. |
355 | * @param map map to use | 355 | * @param map map to use |
356 | * @param value value to go with map | 356 | * @param value value to go with map |
357 | * @return bool true if it is successfull. | 357 | * @return bool true if it is successfull. |
358 | */ | 358 | */ |
359 | bool Interfaces::setMap(QString map, QString value){ | 359 | bool Interfaces::setMap(QString map, QString value){ |
360 | return setOption(currentMapping, map, value); | 360 | return setOption(currentMapping, map, value); |
361 | } | 361 | } |
362 | 362 | ||
363 | /** | 363 | /** |
364 | * Get a map value within a mapping. | 364 | * Get a map value within a mapping. |
365 | * @param map map to get value of | 365 | * @param map map to get value of |
366 | * @param bool true if it is successfull. | 366 | * @param bool true if it is successfull. |
367 | * @return value that goes to the map | 367 | * @return value that goes to the map |
368 | */ | 368 | */ |
369 | QString Interfaces::getMap(QString map, bool &error){ | 369 | QString Interfaces::getMap(QString map, bool &error){ |
370 | return getOption(currentMapping, map, error); | 370 | return getOption(currentMapping, map, error); |
371 | } | 371 | } |
372 | 372 | ||
373 | /** | 373 | /** |
374 | * Sets a script value of the current mapping to argument. | 374 | * Sets a script value of the current mapping to argument. |
@@ -383,86 +383,93 @@ bool Interfaces::setScript(QString argument){ | |||
383 | * @param error true if could not retrieve the current script argument. | 383 | * @param error true if could not retrieve the current script argument. |
384 | * @return QString the argument of the script for the current mapping. | 384 | * @return QString the argument of the script for the current mapping. |
385 | */ | 385 | */ |
386 | QString Interfaces::getScript(bool &error){ | 386 | QString Interfaces::getScript(bool &error){ |
387 | return getOption(currentMapping, "script", error); | 387 | return getOption(currentMapping, "script", error); |
388 | } | 388 | } |
389 | 389 | ||
390 | /** | 390 | /** |
391 | * Helper function used to parse through the QStringList and put pointers in | 391 | * Helper function used to parse through the QStringList and put pointers in |
392 | * the correct place. | 392 | * the correct place. |
393 | * @param stanza The stanza (auto, iface, mapping) to look for. | 393 | * @param stanza The stanza (auto, iface, mapping) to look for. |
394 | * @param option string that must be in the stanza's main line. | 394 | * @param option string that must be in the stanza's main line. |
395 | * @param interator interator to place at location of stanza if successfull. | 395 | * @param interator interator to place at location of stanza if successfull. |
396 | * @return bool true if the stanza is found. | 396 | * @return bool true if the stanza is found. |
397 | */ | 397 | */ |
398 | bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){ | 398 | bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){ |
399 | bool found = false; | 399 | bool found = false; |
400 | iterator = interfaces.end(); | 400 | iterator = interfaces.end(); |
401 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { | 401 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { |
402 | QString line = (*it).simplifyWhiteSpace(); | 402 | QString line = (*it).simplifyWhiteSpace(); |
403 | if(line.contains(stanza) && line.contains(option)){ | 403 | if(line.contains(stanza) && line.contains(option)){ |
404 | if(found == true){ | 404 | if(found == true){ |
405 | qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1()); | 405 | qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1()); |
406 | } | 406 | } |
407 | qDebug("Found"); | ||
407 | found = true; | 408 | found = true; |
408 | iterator = it; | 409 | iterator = it; |
409 | } | 410 | } |
410 | } | 411 | } |
411 | return !found; | 412 | return found; |
412 | } | 413 | } |
413 | 414 | ||
414 | /** | 415 | /** |
415 | * Sets a value of an option in a stanza | 416 | * Sets a value of an option in a stanza |
416 | * @param start the start of the stanza | 417 | * @param start the start of the stanza |
417 | * @param option the option to use when setting value. | 418 | * @param option the option to use when setting value. |
418 | * @return bool true if successfull, false otherwise. | 419 | * @return bool true if successfull, false otherwise. |
419 | */ | 420 | */ |
420 | bool Interfaces::setOption(QStringList::Iterator start, QString option, QString value){ | 421 | bool Interfaces::setOption(QStringList::Iterator start, QString option, QString value){ |
421 | if(start == interfaces.end()) | 422 | if(start == interfaces.end()) |
422 | return false; | 423 | return false; |
423 | 424 | ||
424 | bool found = false; | 425 | bool found = false; |
425 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { | 426 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { |
426 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ | 427 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ |
427 | if(!found && value != ""){ | 428 | if(!found && value != ""){ |
428 | // Got to the end of the stanza without finding it, so append it. | 429 | // Got to the end of the stanza without finding it, so append it. |
429 | interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value)); | 430 | interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value)); |
430 | } | 431 | } |
432 | found = true; | ||
431 | break; | 433 | break; |
432 | } | 434 | } |
433 | if((*it).contains(option)){ | 435 | if((*it).contains(option) && it != start){ |
434 | // Found it in stanza so replace it. | 436 | // Found it in stanza so replace it. |
435 | if(found) | 437 | if(found) |
436 | qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); | 438 | qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); |
437 | found = true; | 439 | found = true; |
438 | if(value == "") | 440 | if(value == "") |
439 | (*it) = ""; | 441 | (*it) = ""; |
440 | else | 442 | else |
441 | (*it) = QString("\t%1 %2").arg(option).arg(value); | 443 | (*it) = QString("\t%1 %2").arg(option).arg(value); |
442 | } | 444 | } |
443 | } | 445 | } |
444 | return true; | 446 | if(!found){ |
447 | QStringList::Iterator p = start; | ||
448 | interfaces.insert(++p, QString("\t%1 %2").arg(option).arg(value)); | ||
449 | found = true; | ||
450 | } | ||
451 | return found; | ||
445 | } | 452 | } |
446 | 453 | ||
447 | /** | 454 | /** |
448 | * Removes all options in a stanza | 455 | * Removes all options in a stanza |
449 | * @param start the start of the stanza | 456 | * @param start the start of the stanza |
450 | * @return bool true if successfull, false otherwise. | 457 | * @return bool true if successfull, false otherwise. |
451 | */ | 458 | */ |
452 | bool Interfaces::removeAllOptions(QStringList::Iterator start){ | 459 | bool Interfaces::removeAllOptions(QStringList::Iterator start){ |
453 | if(start == interfaces.end()) | 460 | if(start == interfaces.end()) |
454 | return false; | 461 | return false; |
455 | 462 | ||
456 | QStringList::Iterator it = start; | 463 | QStringList::Iterator it = start; |
457 | it = ++it; | 464 | it = ++it; |
458 | for (it; it != interfaces.end(); ++it ) { | 465 | for (it; it != interfaces.end(); ++it ) { |
459 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ | 466 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ |
460 | break; | 467 | break; |
461 | } | 468 | } |
462 | it = interfaces.remove(it); | 469 | it = interfaces.remove(it); |
463 | it = --it; | 470 | it = --it; |
464 | } | 471 | } |
465 | // Leave a space between this interface and the next. | 472 | // Leave a space between this interface and the next. |
466 | interfaces.insert(it, QString("")); | 473 | interfaces.insert(it, QString("")); |
467 | return true; | 474 | return true; |
468 | } | 475 | } |