author | zecke <zecke> | 2004-01-05 14:39:29 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-01-05 14:39:29 (UTC) |
commit | c127e5d582b1ae4033eca1c8454bee75d510b9e8 (patch) (unidiff) | |
tree | e4f6e610969f35e1e0954f762f317c0e9ccf76b3 /noncore | |
parent | 7fb9bc93eae8007a6eb298fc743bbf70dc50fbc5 (diff) | |
download | opie-c127e5d582b1ae4033eca1c8454bee75d510b9e8.zip opie-c127e5d582b1ae4033eca1c8454bee75d510b9e8.tar.gz opie-c127e5d582b1ae4033eca1c8454bee75d510b9e8.tar.bz2 |
Spelling fixes by Michael Opdenacker <zumbi2@netcourrier.com>
-rw-r--r-- | noncore/apps/odict/eng_ita.dic | 2 | ||||
-rw-r--r-- | noncore/apps/opie-console/filereceive.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/opie-console/filetransfer.cpp | 2 | ||||
-rw-r--r-- | noncore/net/opieftp/opieftp.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/backup/backuprestore.cpp | 4 | ||||
-rw-r--r-- | noncore/settings/networksettings/interfaces/interface.cpp | 8 | ||||
-rw-r--r-- | noncore/settings/networksettings/interfaces/interfaces.cpp | 44 | ||||
-rw-r--r-- | noncore/settings/networksettings/interfaces/interfacesetupimp.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/networksettings/module.h | 2 | ||||
-rw-r--r-- | noncore/settings/networksettings/ppp/pppmodule.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wextensions.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wlanmodule.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/tabmanager/tabmanager.cpp | 12 | ||||
-rw-r--r-- | noncore/unsupported/mail2/TODO | 2 | ||||
-rw-r--r-- | noncore/unsupported/mail2/folderwidget.cpp | 6 |
15 files changed, 46 insertions, 48 deletions
diff --git a/noncore/apps/odict/eng_ita.dic b/noncore/apps/odict/eng_ita.dic index f338faa..6db2389 100644 --- a/noncore/apps/odict/eng_ita.dic +++ b/noncore/apps/odict/eng_ita.dic | |||
@@ -10507,193 +10507,192 @@ silver\argènteo, argento | |||
10507 | similar\pari, consimile, simile | 10507 | similar\pari, consimile, simile |
10508 | similarity\omogeneità | 10508 | similarity\omogeneità |
10509 | similarly\simile | 10509 | similarly\simile |
10510 | simile\paragone | 10510 | simile\paragone |
10511 | similitude\assomiglianza | 10511 | similitude\assomiglianza |
10512 | simmer\bollore | 10512 | simmer\bollore |
10513 | simpatico\simpatico | 10513 | simpatico\simpatico |
10514 | simper\sciocco | 10514 | simper\sciocco |
10515 | simple\semplice | 10515 | simple\semplice |
10516 | simple minded\ingenuo | 10516 | simple minded\ingenuo |
10517 | simpleminded\semplice | 10517 | simpleminded\semplice |
10518 | simplemindedness\semplicità | 10518 | simplemindedness\semplicità |
10519 | simpleness\semplicità | 10519 | simpleness\semplicità |
10520 | simpletons\pennellare | 10520 | simpletons\pennellare |
10521 | simplicity\semplicità | 10521 | simplicity\semplicità |
10522 | simplification\semplificazione | 10522 | simplification\semplificazione |
10523 | simplify\semplificare | 10523 | simplify\semplificare |
10524 | simply\semplice | 10524 | simply\semplice |
10525 | simular\simile | 10525 | simular\simile |
10526 | simulate\simulare, simulare | 10526 | simulate\simulare, simulare |
10527 | simulated\artefatto | 10527 | simulated\artefatto |
10528 | simultaneous\simultaneo | 10528 | simultaneous\simultaneo |
10529 | simultaneously\simultaneo | 10529 | simultaneously\simultaneo |
10530 | sin\peccato | 10530 | sin\peccato |
10531 | since\da, da allora, perchè | 10531 | since\da, da allora, perchè |
10532 | since then\da allora | 10532 | since then\da allora |
10533 | sincere\sincero | 10533 | sincere\sincero |
10534 | sincerely\umilissimo, sincera | 10534 | sincerely\umilissimo, sincera |
10535 | sinful\peccaminoso | 10535 | sinful\peccaminoso |
10536 | sing\cantare | 10536 | sing\cantare |
10537 | singable\cantàbile | 10537 | singable\cantàbile |
10538 | singer\cantante | 10538 | singer\cantante |
10539 | singing\canto | 10539 | singing\canto |
10540 | singings\canti | 10540 | singings\canti |
10541 | single\nubile, singolo | 10541 | single\nubile, singolo |
10542 | single lane\a senso unico | 10542 | single lane\a senso unico |
10543 | single phase\monofase | 10543 | single phase\monofase |
10544 | single room\càmera sìngola | 10544 | single room\càmera sìngola |
10545 | single ticket\biglietto sémplice | 10545 | single ticket\biglietto sémplice |
10546 | singled\divorziato | 10546 | singled\divorziato |
10547 | singly\singolo | 10547 | singly\singolo |
10548 | sings\canta | 10548 | sings\canta |
10549 | singular\singolare | 10549 | singular\singolare |
10550 | singularness\stranezza | 10550 | singularness\stranezza |
10551 | sinister\nefasto | 10551 | sinister\nefasto |
10552 | sink\abbassarsi, catinella, abbassarsi, lavello | 10552 | sink\abbassarsi, catinella, abbassarsi, lavello |
10553 | sinking\affondamento | 10553 | sinking\affondamento |
10554 | sinks\abbassa | 10554 | sinks\abbassa |
10555 | sinned\peccato | 10555 | sinned\peccato |
10556 | sinner\peccatore | 10556 | sinner\peccatore |
10557 | sins\peccati | 10557 | sins\peccati |
10558 | sinuous\contorto | 10558 | sinuous\contorto |
10559 | sip\sorso | 10559 | sip\sorso |
10560 | sir\signore | 10560 | sir\signore |
10561 | sire\testimoniare | 10561 | sire\testimoniare |
10562 | sirloin\lonza | 10562 | sirloin\lonza |
10563 | sissy\effeminato | 10563 | sissy\effeminato |
10564 | sister\sorella | 10564 | sister\sorella |
10565 | sister in law\cognata | 10565 | sister in law\cognata |
10566 | sit\star seduto | 10566 | sit\star seduto |
10567 | sit down\accomodarsi | 10567 | sit down\accomodarsi |
10568 | site\posto, circostanza | 10568 | site\posto, circostanza |
10569 | site of crime\luogo del fatto | 10569 | site of crime\luogo del fatto |
10570 | sits\siede | 10570 | sits\siede |
10571 | sitting\seduto | 10571 | sitting\seduto |
10572 | sitting room\salotto | 10572 | sitting room\salotto |
10573 | situate\allineare, mettere, mettere | 10573 | situate\allineare, mettere, mettere |
10574 | situated\posto | 10574 | situated\posto |
10575 | situation\situazione, posizione, circostanza | 10575 | situation\situazione, posizione, circostanza |
10576 | six\sei | 10576 | six\sei |
10577 | sixfold\sestuplo | 10577 | sixfold\sestuplo |
10578 | sixteen\sedici | 10578 | sixteen\sedici |
10579 | sixteenth\sedicesimo, sedicesima | 10579 | sixteenth\sedicesimo, sedicesima |
10580 | sixth\sesto, sesta | 10580 | sixth\sesto, sesta |
10581 | sixty\sessanta | 10581 | sixty\sessanta |
10582 | size\grossezza | 10582 | size\grossezza |
10583 | size of shoe\numero di scarpa | 10583 | size of shoe\numero di scarpa |
10584 | sizzle\grillare | 10584 | sizzle\grillare |
10585 | skating\pattinaggio artistico | 10585 | skating\pattinaggio artistico |
10586 | skating ring\pista di ghiaccio | 10586 | skating ring\pista di ghiaccio |
10587 | skating rink\pista di ghiaccio | 10587 | skating rink\pista di ghiaccio |
10588 | skein\capestro | 10588 | skein\capestro |
10589 | skeins\capestri | 10589 | skeins\capestri |
10590 | skeleton\scheletro | 10590 | skeleton\scheletro |
10591 | skeletons\scheletri | 10591 | skeletons\scheletri |
10592 | skepticalness\scetticismo | 10592 | skepticalness\scetticismo |
10593 | skepticism\scetticismo | 10593 | skepticism\scetticismo |
10594 | sketch\abbozzo, abbozzare | 10594 | sketch\abbozzo, abbozzare |
10595 | sketchily\volatile, abbozzaticcio, superficiale | 10595 | sketchily\volatile, abbozzaticcio, superficiale |
10596 | sketchiness\poca chiarezza | 10596 | sketchiness\poca chiarezza |
10597 | sketchy\torbido | 10597 | sketchy\torbido |
10598 | skews\storto | 10598 | skews\storto |
10599 | ski\sci | 10599 | ski\sci |
10600 | skid\discesa a valle, avventare | 10600 | skid\discesa a valle, avventare |
10601 | skiful\esperto | 10601 | skiful\esperto |
10602 | skilful\apprèndere, azzeccato | 10602 | skilful\apprèndere, azzeccato |
10603 | skilfull\apprèndere | ||
10604 | skill\sorte, disinvoltura | 10603 | skill\sorte, disinvoltura |
10605 | skilled\versato | 10604 | skilled\versato |
10606 | skilled worker\operaio specializzato | 10605 | skilled worker\operaio specializzato |
10607 | skillet\tegame | 10606 | skillet\tegame |
10608 | skillful\lesto, sveglio, esperto | 10607 | skillful\lesto, sveglio, esperto |
10609 | skillfulness\disinvoltura | 10608 | skillfulness\disinvoltura |
10610 | skimp\lesinare | 10609 | skimp\lesinare |
10611 | skimpiest\piccolissimo | 10610 | skimpiest\piccolissimo |
10612 | skimpily\scarso | 10611 | skimpily\scarso |
10613 | skimpiness\strettezza | 10612 | skimpiness\strettezza |
10614 | skimpy\scarso | 10613 | skimpy\scarso |
10615 | skin\epidèrmide, epidermide | 10614 | skin\epidèrmide, epidermide |
10616 | skinny\scremato, magro, secco | 10615 | skinny\scremato, magro, secco |
10617 | skins\pelli, pelli | 10616 | skins\pelli, pelli |
10618 | skip\saltellare, lancio | 10617 | skip\saltellare, lancio |
10619 | skipper\marinaio | 10618 | skipper\marinaio |
10620 | skirt\gonna | 10619 | skirt\gonna |
10621 | skirting board\battiscopa | 10620 | skirting board\battiscopa |
10622 | skit\satira | 10621 | skit\satira |
10623 | skittle\birillo | 10622 | skittle\birillo |
10624 | skittle alley\gioco dei birilli | 10623 | skittle alley\gioco dei birilli |
10625 | skivvy\biancherìa ìntima | 10624 | skivvy\biancherìa ìntima |
10626 | skulker\lima sorda | 10625 | skulker\lima sorda |
10627 | skunk\puzzola | 10626 | skunk\puzzola |
10628 | sky\cielo | 10627 | sky\cielo |
10629 | skylark\lodola | 10628 | skylark\lodola |
10630 | skyrocket\razzo | 10629 | skyrocket\razzo |
10631 | skyscraper\grattacielo, grattacielo | 10630 | skyscraper\grattacielo, grattacielo |
10632 | skyscrapers\grattacielo | 10631 | skyscrapers\grattacielo |
10633 | slab\frantumare | 10632 | slab\frantumare |
10634 | slack\lasco, floscio | 10633 | slack\lasco, floscio |
10635 | slack joint\contatto lasco | 10634 | slack joint\contatto lasco |
10636 | slack period\ristagno | 10635 | slack period\ristagno |
10637 | slacken\rilassare, rilassare | 10636 | slacken\rilassare, rilassare |
10638 | slackens\rilassato | 10637 | slackens\rilassato |
10639 | slacker\scansafatiche | 10638 | slacker\scansafatiche |
10640 | slacks\pantaloni | 10639 | slacks\pantaloni |
10641 | slake\allattamento | 10640 | slake\allattamento |
10642 | slam\sbattere | 10641 | slam\sbattere |
10643 | slammed\sbattuto | 10642 | slammed\sbattuto |
10644 | slander\calunniare | 10643 | slander\calunniare |
10645 | slanderer\calunniatore | 10644 | slanderer\calunniatore |
10646 | slanderous\calunnioso | 10645 | slanderous\calunnioso |
10647 | slanderousness\calunnia | 10646 | slanderousness\calunnia |
10648 | slant\declinazione | 10647 | slant\declinazione |
10649 | slanting\obliquo, obliquo | 10648 | slanting\obliquo, obliquo |
10650 | slantingly\obliqua | 10649 | slantingly\obliqua |
10651 | slap\picchiare, ceffone | 10650 | slap\picchiare, ceffone |
10652 | slap in the face\ceffone | 10651 | slap in the face\ceffone |
10653 | slaphappy\avventurato | 10652 | slaphappy\avventurato |
10654 | slaps in the face\schiaffeggiare | 10653 | slaps in the face\schiaffeggiare |
10655 | slash\taglio | 10654 | slash\taglio |
10656 | slat\picchiare | 10655 | slat\picchiare |
10657 | slate\ardesia, abusare | 10656 | slate\ardesia, abusare |
10658 | slatted\picchiai | 10657 | slatted\picchiai |
10659 | slattern\donnaccia | 10658 | slattern\donnaccia |
10660 | slaughter\macellare | 10659 | slaughter\macellare |
10661 | slaughter cattle\bestiame da macello | 10660 | slaughter cattle\bestiame da macello |
10662 | slaughter house\mattatoio | 10661 | slaughter house\mattatoio |
10663 | slaughtered\macellato | 10662 | slaughtered\macellato |
10664 | slaughterhouse\mattatoio | 10663 | slaughterhouse\mattatoio |
10665 | slave\schiava, schiavo | 10664 | slave\schiava, schiavo |
10666 | slave trader\negriere | 10665 | slave trader\negriere |
10667 | slavered\sbavato | 10666 | slavered\sbavato |
10668 | slavery\schiavitù | 10667 | slavery\schiavitù |
10669 | slay\uccidere | 10668 | slay\uccidere |
10670 | slayer\strangolatore, uccisore | 10669 | slayer\strangolatore, uccisore |
10671 | slays\uccide | 10670 | slays\uccide |
10672 | sleazily\sciatto | 10671 | sleazily\sciatto |
10673 | sleazy\untuoso | 10672 | sleazy\untuoso |
10674 | sleek\netto | 10673 | sleek\netto |
10675 | sleekly\liscia | 10674 | sleekly\liscia |
10676 | sleep\dormire, sonno, dormicchiare | 10675 | sleep\dormire, sonno, dormicchiare |
10677 | sleeper\vagone letto | 10676 | sleeper\vagone letto |
10678 | sleeping car\vagone letto | 10677 | sleeping car\vagone letto |
10679 | sleeping pill\sonnifero | 10678 | sleeping pill\sonnifero |
10680 | sleepless\insonne | 10679 | sleepless\insonne |
10681 | sleeplessness\insonnia | 10680 | sleeplessness\insonnia |
10682 | sleeps\dorme | 10681 | sleeps\dorme |
10683 | sleeve\manica | 10682 | sleeve\manica |
10684 | sleight\disinvoltura | 10683 | sleight\disinvoltura |
10685 | slender\esile, snello, snello | 10684 | slender\esile, snello, snello |
10686 | slice\tagliare, pezzo, fetta | 10685 | slice\tagliare, pezzo, fetta |
10687 | sliced\taglio | 10686 | sliced\taglio |
10688 | slicing\tagliente | 10687 | slicing\tagliente |
10689 | slick\brunire | 10688 | slick\brunire |
10690 | slicker\imbroglione | 10689 | slicker\imbroglione |
10691 | slickness\disinvoltura | 10690 | slickness\disinvoltura |
10692 | slide\spingere | 10691 | slide\spingere |
10693 | slides\spinge | 10692 | slides\spinge |
10694 | sliding roof\tetto scorrevole | 10693 | sliding roof\tetto scorrevole |
10695 | sliding window\finestra scorrevole | 10694 | sliding window\finestra scorrevole |
10696 | slight\magro, scarso, oltraggiare, labkle | 10695 | slight\magro, scarso, oltraggiare, labkle |
10697 | slightness\esiguità | 10696 | slightness\esiguità |
10698 | slim\togliere, snello | 10697 | slim\togliere, snello |
10699 | slime\muco | 10698 | slime\muco |
@@ -12556,193 +12555,192 @@ unsuited\disadatto | |||
12556 | unsure\malsicuro | 12555 | unsure\malsicuro |
12557 | unsureness\incertezza | 12556 | unsureness\incertezza |
12558 | unsurpassed\insuperato | 12557 | unsurpassed\insuperato |
12559 | unsympathetic\antipàtico | 12558 | unsympathetic\antipàtico |
12560 | untainted\senza macchia | 12559 | untainted\senza macchia |
12561 | untarnished\immacolato | 12560 | untarnished\immacolato |
12562 | unthankful\ingrato | 12561 | unthankful\ingrato |
12563 | unthankfulness\ingratitudine | 12562 | unthankfulness\ingratitudine |
12564 | unthinkable\impensabile | 12563 | unthinkable\impensabile |
12565 | unthought\sconsiderato | 12564 | unthought\sconsiderato |
12566 | untimeliness\tempo inopportuno | 12565 | untimeliness\tempo inopportuno |
12567 | untimely\prematuro | 12566 | untimely\prematuro |
12568 | untirable\instancabile | 12567 | untirable\instancabile |
12569 | unto\a tavola | 12568 | unto\a tavola |
12570 | untrapped\esente | 12569 | untrapped\esente |
12571 | untried\intentato | 12570 | untried\intentato |
12572 | untroubled\indisturbato | 12571 | untroubled\indisturbato |
12573 | untruth\menzogna | 12572 | untruth\menzogna |
12574 | untwine\lievitazione | 12573 | untwine\lievitazione |
12575 | unusable\inservibile | 12574 | unusable\inservibile |
12576 | unusual\strano, inconsueto | 12575 | unusual\strano, inconsueto |
12577 | unusually\raro | 12576 | unusually\raro |
12578 | unusualness\stranezza | 12577 | unusualness\stranezza |
12579 | unutterable\indicibile | 12578 | unutterable\indicibile |
12580 | unvaried\immutato | 12579 | unvaried\immutato |
12581 | unveil\svelare | 12580 | unveil\svelare |
12582 | unveiling\svelante | 12581 | unveiling\svelante |
12583 | unventilated\muffaticcio | 12582 | unventilated\muffaticcio |
12584 | unversed\novizio | 12583 | unversed\novizio |
12585 | unwarily\incauto | 12584 | unwarily\incauto |
12586 | unwarped\spassionato | 12585 | unwarped\spassionato |
12587 | unwarranted\non autorizzato | 12586 | unwarranted\non autorizzato |
12588 | unwary\incauto | 12587 | unwary\incauto |
12589 | unwavering\incrollabile | 12588 | unwavering\incrollabile |
12590 | unwearable\intollerabile | 12589 | unwearable\intollerabile |
12591 | unweary\instancabile | 12590 | unweary\instancabile |
12592 | unwed\nubile | 12591 | unwed\nubile |
12593 | unwell\indisposto | 12592 | unwell\indisposto |
12594 | unwillingly\malvolentieri | 12593 | unwillingly\malvolentieri |
12595 | unwillingness\disgusto | 12594 | unwillingness\disgusto |
12596 | unwind\dipanare | 12595 | unwind\dipanare |
12597 | unwinds\rilassato | 12596 | unwinds\rilassato |
12598 | unwise\imprudente | 12597 | unwise\imprudente |
12599 | unwitting\senza volere | 12598 | unwitting\senza volere |
12600 | unwontedly\inconsueto | 12599 | unwontedly\inconsueto |
12601 | unworried\spensierato | 12600 | unworried\spensierato |
12602 | unworthy\indegno | 12601 | unworthy\indegno |
12603 | unwounded\illeso | 12602 | unwounded\illeso |
12604 | unwrought\grezzo | 12603 | unwrought\grezzo |
12605 | up\sù, a, sù, sù | 12604 | up\sù, a, sù, sù |
12606 | up above\sù | 12605 | up above\sù |
12607 | up there\lassù | 12606 | up there\lassù |
12608 | upbraiding\rimprovero | 12607 | upbraiding\rimprovero |
12609 | upbringing\creanza | 12608 | upbringing\creanza |
12610 | upchuck\vòmito | 12609 | upchuck\vòmito |
12611 | upcoming\prossimamente | 12610 | upcoming\prossimamente |
12612 | upgrade\estensione, ampliare | 12611 | upgrade\estensione, ampliare |
12613 | upgrades\trasportato | 12612 | upgrades\trasportato |
12614 | upgrading\estensione | 12613 | upgrading\estensione |
12615 | upheaval\elevamento | 12614 | upheaval\elevamento |
12616 | uphold\durare | 12615 | uphold\durare |
12617 | upholster\imbottire | 12616 | upholster\imbottire |
12618 | upholsterer\tappezziere | 12617 | upholsterer\tappezziere |
12619 | upkeep\manutenzione | 12618 | upkeep\manutenzione |
12620 | uplift\esaltare | 12619 | uplift\esaltare |
12621 | uplifting\alzante | 12620 | uplifting\alzante |
12622 | upon\a | 12621 | upon\a |
12623 | upper arm\braccio superiore | 12622 | upper arm\braccio superiore |
12624 | upper case character\lettera maiuscola | 12623 | upper case character\lettera maiuscola |
12625 | uppish\impettito | 12624 | uppish\impettito |
12626 | uppity\baldanzoso | 12625 | uppity\baldanzoso |
12627 | upraise\esaltare | 12626 | upraise\esaltare |
12628 | upraising\alzante | 12627 | upraising\alzante |
12629 | upright\pari, verticale | 12628 | upright\pari, verticale |
12630 | uprise\levarsi | 12629 | uprise\levarsi |
12631 | uproar\eccitazione | 12630 | uproar\eccitazione |
12632 | uproariously\liuto | 12631 | uproariously\liuto |
12633 | upshot\risultato | 12632 | upshot\risultato |
12634 | upstage\arrivista | 12633 | upstage\arrivista |
12635 | upstairs\in alto, sù | 12634 | upstairs\in alto, sù |
12636 | upturn\incremento | 12635 | upturn\incremento |
12637 | upwards\sù | 12636 | upwards\sù |
12638 | uranium\uranio | 12637 | uranium\uranio |
12639 | urban\urbano | 12638 | urban\urbano |
12640 | urge\premura, incoraggiare | 12639 | urge\premura, incoraggiare |
12641 | urgency\urgenza | 12640 | urgency\urgenza |
12642 | urgent\urgente, legante | 12641 | urgent\urgente, legante |
12643 | urine\orina, uroscopia | 12642 | urine\orina, uroscopia |
12644 | urn\urna | 12643 | urn\urna |
12645 | us\noi, a noi | 12644 | us\noi, a noi |
12646 | usable\usabile | 12645 | usable\usabile |
12647 | usage\uso | 12646 | usage\uso |
12648 | use\uso, adoperare | 12647 | use\uso, adoperare |
12649 | use up\esaurire | 12648 | use up\esaurire |
12650 | used\usato | 12649 | used\usato |
12651 | useful\utile | 12650 | useful\utile |
12652 | usefull\utile | ||
12653 | useless\inutile, disùtile, inservibile | 12651 | useless\inutile, disùtile, inservibile |
12654 | user\utente | 12652 | user\utente |
12655 | uses\usato | 12653 | uses\usato |
12656 | usual\usuale, ordinario | 12654 | usual\usuale, ordinario |
12657 | usually\ordinario | 12655 | usually\ordinario |
12658 | usuries\usura | 12656 | usuries\usura |
12659 | usury\usura | 12657 | usury\usura |
12660 | Utopian\utopico | 12658 | Utopian\utopico |
12661 | utter\estrinsecare | 12659 | utter\estrinsecare |
12662 | vacant\vacante | 12660 | vacant\vacante |
12663 | vacation\vacanze, ferie | 12661 | vacation\vacanze, ferie |
12664 | vaccinate\vaccinare | 12662 | vaccinate\vaccinare |
12665 | vaccination\vaccinazione | 12663 | vaccination\vaccinazione |
12666 | vaccine\vaccino | 12664 | vaccine\vaccino |
12667 | vacuum\vuotaggine | 12665 | vacuum\vuotaggine |
12668 | vacuum cleaner\aspirapòlvere | 12666 | vacuum cleaner\aspirapòlvere |
12669 | vagabond\vagabondaggio | 12667 | vagabond\vagabondaggio |
12670 | vagina\fòdero | 12668 | vagina\fòdero |
12671 | vailable\disponìbile | 12669 | vailable\disponìbile |
12672 | vain\vano | 12670 | vain\vano |
12673 | valerian\valeriana | 12671 | valerian\valeriana |
12674 | valid\valevole | 12672 | valid\valevole |
12675 | validity\validità | 12673 | validity\validità |
12676 | validness\validità | 12674 | validness\validità |
12677 | valley\valle | 12675 | valley\valle |
12678 | valorize\valorizzare | 12676 | valorize\valorizzare |
12679 | valse\valzer | 12677 | valse\valzer |
12680 | valuable\pregiato | 12678 | valuable\pregiato |
12681 | valuables\valori | 12679 | valuables\valori |
12682 | value\valutare, valore | 12680 | value\valutare, valore |
12683 | valuejudgment\valutazione | 12681 | valuejudgment\valutazione |
12684 | valve\valvola, valvola | 12682 | valve\valvola, valvola |
12685 | vanguard\avanguardia | 12683 | vanguard\avanguardia |
12686 | vanilla\vainiglia | 12684 | vanilla\vainiglia |
12687 | vanish\scomparire | 12685 | vanish\scomparire |
12688 | vanity\fatuità | 12686 | vanity\fatuità |
12689 | vaporizer\vaporizzatore | 12687 | vaporizer\vaporizzatore |
12690 | vapors\evaporazione | 12688 | vapors\evaporazione |
12691 | vapour\vapore | 12689 | vapour\vapore |
12692 | variable\variàbile | 12690 | variable\variàbile |
12693 | variance\contrarietà | 12691 | variance\contrarietà |
12694 | variation\aberrazione | 12692 | variation\aberrazione |
12695 | varicosity\varice | 12693 | varicosity\varice |
12696 | various\differente | 12694 | various\differente |
12697 | variousness\varietà | 12695 | variousness\varietà |
12698 | varnish\vernice | 12696 | varnish\vernice |
12699 | vary\variare | 12697 | vary\variare |
12700 | vascular\recipiente | 12698 | vascular\recipiente |
12701 | vase\vaso, vaso da fiori | 12699 | vase\vaso, vaso da fiori |
12702 | vast\vasto | 12700 | vast\vasto |
12703 | vault\volta | 12701 | vault\volta |
12704 | vaulted\volta | 12702 | vaulted\volta |
12705 | veal\carne di vitello | 12703 | veal\carne di vitello |
12706 | veda\sapere | 12704 | veda\sapere |
12707 | vegetable\pianta | 12705 | vegetable\pianta |
12708 | vegetable soup\zuppa di verdura | 12706 | vegetable soup\zuppa di verdura |
12709 | vegetables\legume | 12707 | vegetables\legume |
12710 | vegetatively\vegetativo | 12708 | vegetatively\vegetativo |
12711 | vehicle\carro, veicolo | 12709 | vehicle\carro, veicolo |
12712 | veil\veletta | 12710 | veil\veletta |
12713 | vein\vena, vena | 12711 | vein\vena, vena |
12714 | veined\venato | 12712 | veined\venato |
12715 | velocity\velocità | 12713 | velocity\velocità |
12716 | velvet\velluto | 12714 | velvet\velluto |
12717 | vending machine\autòma | 12715 | vending machine\autòma |
12718 | vendue\licitazione | 12716 | vendue\licitazione |
12719 | vengeance\vendetta | 12717 | vengeance\vendetta |
12720 | vengeful\vendicativo | 12718 | vengeful\vendicativo |
12721 | venom\veleno | 12719 | venom\veleno |
12722 | ventilate\ventilare, arieggiare, aerare | 12720 | ventilate\ventilare, arieggiare, aerare |
12723 | ventilating\ventilazione | 12721 | ventilating\ventilazione |
12724 | venturous\rischioso | 12722 | venturous\rischioso |
12725 | veraciousness\veridicità | 12723 | veraciousness\veridicità |
12726 | verbal\orale | 12724 | verbal\orale |
12727 | verdict\giudizio | 12725 | verdict\giudizio |
12728 | verifield\giustezza | 12726 | verifield\giustezza |
12729 | verify\verificare, esaminare | 12727 | verify\verificare, esaminare |
12730 | verity\verità | 12728 | verity\verità |
12731 | vermicide\vermifugo | 12729 | vermicide\vermifugo |
12732 | vermilion\cinabro | 12730 | vermilion\cinabro |
12733 | verminous\impidocchiato | 12731 | verminous\impidocchiato |
12734 | versatile\multilaterale | 12732 | versatile\multilaterale |
12735 | version\versione, emissione | 12733 | version\versione, emissione |
12736 | vertical\verticale | 12734 | vertical\verticale |
12737 | vessel\recipiente, vascello | 12735 | vessel\recipiente, vascello |
12738 | vest\maglia | 12736 | vest\maglia |
12739 | vet\veterinario | 12737 | vet\veterinario |
12740 | vetoed\divieto | 12738 | vetoed\divieto |
12741 | vex\molestare | 12739 | vex\molestare |
12742 | vexation\rancore, nonostante | 12740 | vexation\rancore, nonostante |
12743 | via\sopra | 12741 | via\sopra |
12744 | viaduct\viadotto | 12742 | viaduct\viadotto |
12745 | viand\vettovaglia | 12743 | viand\vettovaglia |
12746 | vice\vizio | 12744 | vice\vizio |
12747 | vicious\vizioso | 12745 | vicious\vizioso |
12748 | victim\sacrificio | 12746 | victim\sacrificio |
diff --git a/noncore/apps/opie-console/filereceive.cpp b/noncore/apps/opie-console/filereceive.cpp index e387273..452be60 100644 --- a/noncore/apps/opie-console/filereceive.cpp +++ b/noncore/apps/opie-console/filereceive.cpp | |||
@@ -27,136 +27,136 @@ void FileReceive::receive( const QString& dir ) { | |||
27 | m_curDir = dir; | 27 | m_curDir = dir; |
28 | 28 | ||
29 | if (pipe( m_comm ) < 0 ) | 29 | if (pipe( m_comm ) < 0 ) |
30 | m_comm[0] = m_comm[1] = 0; | 30 | m_comm[0] = m_comm[1] = 0; |
31 | if (pipe( m_info ) < 0 ) | 31 | if (pipe( m_info ) < 0 ) |
32 | m_info[0] = m_info[1] = 0; | 32 | m_info[0] = m_info[1] = 0; |
33 | 33 | ||
34 | m_pid = fork(); | 34 | m_pid = fork(); |
35 | switch( m_pid ) { | 35 | switch( m_pid ) { |
36 | case -1: | 36 | case -1: |
37 | //emit error | 37 | //emit error |
38 | slotExec(); | 38 | slotExec(); |
39 | break; | 39 | break; |
40 | /* child */ | 40 | /* child */ |
41 | case 0: { | 41 | case 0: { |
42 | setupChild(); | 42 | setupChild(); |
43 | char* typus = NULL; | 43 | char* typus = NULL; |
44 | switch(m_type ) { | 44 | switch(m_type ) { |
45 | case SZ: | 45 | case SZ: |
46 | break; | 46 | break; |
47 | case SX: | 47 | case SX: |
48 | typus = "-X"; | 48 | typus = "-X"; |
49 | break; | 49 | break; |
50 | case SY: | 50 | case SY: |
51 | typus = "--ymodem"; | 51 | typus = "--ymodem"; |
52 | break; | 52 | break; |
53 | } | 53 | } |
54 | 54 | ||
55 | /* we should never return from here */ | 55 | /* we should never return from here */ |
56 | if( m_type == SX ) | 56 | if( m_type == SX ) |
57 | // FIXME: file name should be configurable - currently we ensure it | 57 | // FIXME: file name should be configurable - currently we ensure it |
58 | // doesn't get overwritten by -E (--rename) | 58 | // doesn't get overwritten by -E (--rename) |
59 | execlp("rz", "rz", typus, "--overwrite", QObject::tr("SynchronizedFile").latin1(), NULL ); | 59 | execlp("rz", "rz", typus, "--overwrite", QObject::tr("SynchronizedFile").latin1(), NULL ); |
60 | else | 60 | else |
61 | execlp("rz", "rz", typus, "--overwrite", NULL ); | 61 | execlp("rz", "rz", typus, "--overwrite", NULL ); |
62 | 62 | ||
63 | char resultByte = 1; | 63 | char resultByte = 1; |
64 | if (m_info[1] ) | 64 | if (m_info[1] ) |
65 | ::write(m_info[1], &resultByte, 1 ); | 65 | ::write(m_info[1], &resultByte, 1 ); |
66 | 66 | ||
67 | _exit( -1 ); | 67 | _exit( -1 ); |
68 | break; | 68 | break; |
69 | } | 69 | } |
70 | default: { | 70 | default: { |
71 | if ( m_info[1] ) | 71 | if ( m_info[1] ) |
72 | close( m_info[1] ); | 72 | close( m_info[1] ); |
73 | 73 | ||
74 | if ( m_info[0] ) for (;;) { | 74 | if ( m_info[0] ) for (;;) { |
75 | char resultByte; int len; | 75 | char resultByte; int len; |
76 | len = read(m_info[0], &resultByte, 1 ); | 76 | len = read(m_info[0], &resultByte, 1 ); |
77 | /* len == 1 start up failed */ | 77 | /* len == 1 start up failed */ |
78 | if ( len == 1 ) { | 78 | if ( len == 1 ) { |
79 | emit error( StartError, tr("Could not start") ); | 79 | emit error( StartError, tr("Could not start") ); |
80 | return; | 80 | return; |
81 | } | 81 | } |
82 | if ( len == -1 ) | 82 | if ( len == -1 ) |
83 | if ( (errno == ECHILD ) || (errno == EINTR ) ) | 83 | if ( (errno == ECHILD ) || (errno == EINTR ) ) |
84 | continue; | 84 | continue; |
85 | 85 | ||
86 | // len == 0 or something like this | 86 | // len == 0 or something like this |
87 | break; | 87 | break; |
88 | } | 88 | } |
89 | 89 | ||
90 | if ( m_info[0] ) | 90 | if ( m_info[0] ) |
91 | close( m_info[0] ); | 91 | close( m_info[0] ); |
92 | 92 | ||
93 | m_not = new QSocketNotifier(m_comm[0], QSocketNotifier::Read ); | 93 | m_not = new QSocketNotifier(m_comm[0], QSocketNotifier::Read ); |
94 | connect(m_not, SIGNAL(activated(int) ), | 94 | connect(m_not, SIGNAL(activated(int) ), |
95 | this, SLOT(slotRead() ) ); | 95 | this, SLOT(slotRead() ) ); |
96 | if ( pipe(m_term) < 0 ) | 96 | if ( pipe(m_term) < 0 ) |
97 | m_term[0] = m_term[1] = 0; | 97 | m_term[0] = m_term[1] = 0; |
98 | 98 | ||
99 | ProcCtl::self()->add(m_pid, m_term[1] ); | 99 | ProcCtl::self()->add(m_pid, m_term[1] ); |
100 | m_proc = new QSocketNotifier(m_term[0], QSocketNotifier::Read ); | 100 | m_proc = new QSocketNotifier(m_term[0], QSocketNotifier::Read ); |
101 | connect(m_proc, SIGNAL(activated(int) ), | 101 | connect(m_proc, SIGNAL(activated(int) ), |
102 | this, SLOT(slotExec() ) ); | 102 | this, SLOT(slotExec() ) ); |
103 | 103 | ||
104 | } | 104 | } |
105 | break; | 105 | break; |
106 | 106 | ||
107 | } | 107 | } |
108 | 108 | ||
109 | } | 109 | } |
110 | void FileReceive::cancel() { | 110 | void FileReceive::cancel() { |
111 | ::kill(m_pid, 9 ); | 111 | ::kill(m_pid, 9 ); |
112 | } | 112 | } |
113 | void FileReceive::setupChild() { | 113 | void FileReceive::setupChild() { |
114 | changeDir( currentDir() ); | 114 | changeDir( currentDir() ); |
115 | /* | 115 | /* |
116 | * we do not want to read from our | 116 | * we do not want to read from our |
117 | * information channel | 117 | * information channel |
118 | */ | 118 | */ |
119 | if (m_info[0] ) | 119 | if (m_info[0] ) |
120 | close(m_info[0] ); | 120 | close(m_info[0] ); |
121 | /* | 121 | /* |
122 | * FD_CLOEXEC will close the | 122 | * FD_CLOEXEC will close the |
123 | * fd on successfull exec | 123 | * fd on successful exec |
124 | */ | 124 | */ |
125 | if (m_info[1] ) | 125 | if (m_info[1] ) |
126 | fcntl(m_info[1], F_SETFD, FD_CLOEXEC ); | 126 | fcntl(m_info[1], F_SETFD, FD_CLOEXEC ); |
127 | 127 | ||
128 | if (m_comm[0] ) | 128 | if (m_comm[0] ) |
129 | close( m_comm[0] ); | 129 | close( m_comm[0] ); |
130 | /* | 130 | /* |
131 | * now set the communication | 131 | * now set the communication |
132 | * m_fd STDIN_FILENO | 132 | * m_fd STDIN_FILENO |
133 | * STDOUT_FILENO | 133 | * STDOUT_FILENO |
134 | * STDERR_FILENO | 134 | * STDERR_FILENO |
135 | */ | 135 | */ |
136 | dup2( m_fd, STDIN_FILENO ); | 136 | dup2( m_fd, STDIN_FILENO ); |
137 | dup2( m_fd, STDOUT_FILENO ); | 137 | dup2( m_fd, STDOUT_FILENO ); |
138 | dup2( m_comm[1], STDERR_FILENO ); | 138 | dup2( m_comm[1], STDERR_FILENO ); |
139 | } | 139 | } |
140 | void FileReceive::slotRead() { | 140 | void FileReceive::slotRead() { |
141 | QByteArray ar(4096); | 141 | QByteArray ar(4096); |
142 | int len = read(m_comm[0], ar.data(), 4096 ); | 142 | int len = read(m_comm[0], ar.data(), 4096 ); |
143 | for (int i = 0; i < len; i++ ) { | 143 | for (int i = 0; i < len; i++ ) { |
144 | // printf("%c", ar[i] ); | 144 | // printf("%c", ar[i] ); |
145 | } | 145 | } |
146 | ar.resize( len ); | 146 | ar.resize( len ); |
147 | QString str( ar ); | 147 | QString str( ar ); |
148 | } | 148 | } |
149 | void FileReceive::slotExec() { | 149 | void FileReceive::slotExec() { |
150 | char buf[2]; | 150 | char buf[2]; |
151 | ::read(m_term[0], buf, 1 ); | 151 | ::read(m_term[0], buf, 1 ); |
152 | delete m_proc; | 152 | delete m_proc; |
153 | delete m_not; | 153 | delete m_not; |
154 | m_not = m_proc = 0l; | 154 | m_not = m_proc = 0l; |
155 | close( m_term[0] ); | 155 | close( m_term[0] ); |
156 | close( m_term[1] ); | 156 | close( m_term[1] ); |
157 | close( m_comm[0] ); | 157 | close( m_comm[0] ); |
158 | close( m_comm[1] ); | 158 | close( m_comm[1] ); |
159 | layer()->closeRawIO(m_fd); | 159 | layer()->closeRawIO(m_fd); |
160 | emit received(QString::null); | 160 | emit received(QString::null); |
161 | 161 | ||
162 | } | 162 | } |
diff --git a/noncore/apps/opie-console/filetransfer.cpp b/noncore/apps/opie-console/filetransfer.cpp index 221838c..5144941 100644 --- a/noncore/apps/opie-console/filetransfer.cpp +++ b/noncore/apps/opie-console/filetransfer.cpp | |||
@@ -48,193 +48,193 @@ void FileTransfer::sendFile( const QString& file ) { | |||
48 | m_pid = fork(); | 48 | m_pid = fork(); |
49 | switch( m_pid ) { | 49 | switch( m_pid ) { |
50 | case -1: | 50 | case -1: |
51 | emit error( StartError, tr("Was not able to fork") ); | 51 | emit error( StartError, tr("Was not able to fork") ); |
52 | slotExec(); | 52 | slotExec(); |
53 | break; | 53 | break; |
54 | case 0:{ | 54 | case 0:{ |
55 | setupChild(); | 55 | setupChild(); |
56 | /* exec */ | 56 | /* exec */ |
57 | char* verbose = "-vv"; | 57 | char* verbose = "-vv"; |
58 | char* binray = "-b"; | 58 | char* binray = "-b"; |
59 | 59 | ||
60 | 60 | ||
61 | char* typus; | 61 | char* typus; |
62 | switch(m_type ) { | 62 | switch(m_type ) { |
63 | default: | 63 | default: |
64 | case SZ: | 64 | case SZ: |
65 | typus = ""; | 65 | typus = ""; |
66 | break; | 66 | break; |
67 | case SX: | 67 | case SX: |
68 | typus = "-X"; | 68 | typus = "-X"; |
69 | break; | 69 | break; |
70 | case SY: | 70 | case SY: |
71 | typus = "--ymodem"; | 71 | typus = "--ymodem"; |
72 | break; | 72 | break; |
73 | } | 73 | } |
74 | 74 | ||
75 | /* we should never return from here */ | 75 | /* we should never return from here */ |
76 | execlp("sz", "sz", verbose, binray, file.latin1(), typus, NULL ); | 76 | execlp("sz", "sz", verbose, binray, file.latin1(), typus, NULL ); |
77 | 77 | ||
78 | /* communication for error!*/ | 78 | /* communication for error!*/ |
79 | char resultByte =1; | 79 | char resultByte =1; |
80 | if (m_info[1] ) | 80 | if (m_info[1] ) |
81 | write(m_info[1], &resultByte, 1 ); | 81 | write(m_info[1], &resultByte, 1 ); |
82 | _exit( -1 ); | 82 | _exit( -1 ); |
83 | break; | 83 | break; |
84 | } | 84 | } |
85 | default:{ | 85 | default:{ |
86 | if ( m_info[1] ) | 86 | if ( m_info[1] ) |
87 | close( m_info[1] ); | 87 | close( m_info[1] ); |
88 | if ( m_info[0] ) for (;;) { | 88 | if ( m_info[0] ) for (;;) { |
89 | char resultByte; int len; | 89 | char resultByte; int len; |
90 | len = read(m_info[0], &resultByte, 1 ); | 90 | len = read(m_info[0], &resultByte, 1 ); |
91 | /* len == 1 start up failed */ | 91 | /* len == 1 start up failed */ |
92 | if ( len == 1 ) { | 92 | if ( len == 1 ) { |
93 | emit error( StartError, tr("Could not start") ); | 93 | emit error( StartError, tr("Could not start") ); |
94 | return; | 94 | return; |
95 | } | 95 | } |
96 | if ( len == -1 ) | 96 | if ( len == -1 ) |
97 | if ( (errno == ECHILD ) || (errno == EINTR ) ) | 97 | if ( (errno == ECHILD ) || (errno == EINTR ) ) |
98 | continue; | 98 | continue; |
99 | 99 | ||
100 | // len == 0 or something like this | 100 | // len == 0 or something like this |
101 | break; | 101 | break; |
102 | } | 102 | } |
103 | if ( m_info[0] ) | 103 | if ( m_info[0] ) |
104 | close( m_info[0] ); | 104 | close( m_info[0] ); |
105 | 105 | ||
106 | 106 | ||
107 | 107 | ||
108 | /* replace by QSocketNotifier!!! */ | 108 | /* replace by QSocketNotifier!!! */ |
109 | m_not = new QSocketNotifier(m_comm[0], QSocketNotifier::Read ); | 109 | m_not = new QSocketNotifier(m_comm[0], QSocketNotifier::Read ); |
110 | connect(m_not, SIGNAL(activated(int) ), | 110 | connect(m_not, SIGNAL(activated(int) ), |
111 | this, SLOT(slotRead() ) ); | 111 | this, SLOT(slotRead() ) ); |
112 | if ( pipe(m_term) < 0 ) | 112 | if ( pipe(m_term) < 0 ) |
113 | m_term[0] = m_term[1] = 0; | 113 | m_term[0] = m_term[1] = 0; |
114 | 114 | ||
115 | ProcCtl::self()->add(m_pid, m_term[1] ); | 115 | ProcCtl::self()->add(m_pid, m_term[1] ); |
116 | m_proc = new QSocketNotifier(m_term[0], QSocketNotifier::Read ); | 116 | m_proc = new QSocketNotifier(m_term[0], QSocketNotifier::Read ); |
117 | connect(m_proc, SIGNAL(activated(int) ), | 117 | connect(m_proc, SIGNAL(activated(int) ), |
118 | this, SLOT(slotExec() ) ); | 118 | this, SLOT(slotExec() ) ); |
119 | 119 | ||
120 | } | 120 | } |
121 | break; | 121 | break; |
122 | } | 122 | } |
123 | } | 123 | } |
124 | /* | 124 | /* |
125 | * let's call the one with the filename | 125 | * let's call the one with the filename |
126 | */ | 126 | */ |
127 | void FileTransfer::sendFile( const QFile& file ) { | 127 | void FileTransfer::sendFile( const QFile& file ) { |
128 | sendFile( file.name() ); | 128 | sendFile( file.name() ); |
129 | } | 129 | } |
130 | 130 | ||
131 | /* | 131 | /* |
132 | * setting up communication | 132 | * setting up communication |
133 | * between parent child and ioLayer | 133 | * between parent child and ioLayer |
134 | */ | 134 | */ |
135 | void FileTransfer::setupChild() { | 135 | void FileTransfer::setupChild() { |
136 | /* | 136 | /* |
137 | * we do not want to read from our | 137 | * we do not want to read from our |
138 | * information channel | 138 | * information channel |
139 | */ | 139 | */ |
140 | if (m_info[0] ) | 140 | if (m_info[0] ) |
141 | close(m_info[0] ); | 141 | close(m_info[0] ); |
142 | /* | 142 | /* |
143 | * FD_CLOEXEC will close the | 143 | * FD_CLOEXEC will close the |
144 | * fd on successfull exec | 144 | * fd on successful exec |
145 | */ | 145 | */ |
146 | if (m_info[1] ) | 146 | if (m_info[1] ) |
147 | fcntl(m_info[1], F_SETFD, FD_CLOEXEC ); | 147 | fcntl(m_info[1], F_SETFD, FD_CLOEXEC ); |
148 | 148 | ||
149 | if (m_comm[0] ) | 149 | if (m_comm[0] ) |
150 | close( m_comm[0] ); | 150 | close( m_comm[0] ); |
151 | /* | 151 | /* |
152 | * now set the communication | 152 | * now set the communication |
153 | * m_fd STDIN_FILENO | 153 | * m_fd STDIN_FILENO |
154 | * STDOUT_FILENO | 154 | * STDOUT_FILENO |
155 | * STDERR_FILENO | 155 | * STDERR_FILENO |
156 | */ | 156 | */ |
157 | dup2( m_fd, STDIN_FILENO ); | 157 | dup2( m_fd, STDIN_FILENO ); |
158 | dup2( m_fd, STDOUT_FILENO ); | 158 | dup2( m_fd, STDOUT_FILENO ); |
159 | dup2( m_comm[1], STDERR_FILENO ); | 159 | dup2( m_comm[1], STDERR_FILENO ); |
160 | } | 160 | } |
161 | 161 | ||
162 | /* | 162 | /* |
163 | * read from the stderr of the child | 163 | * read from the stderr of the child |
164 | * process | 164 | * process |
165 | */ | 165 | */ |
166 | void FileTransfer::slotRead() { | 166 | void FileTransfer::slotRead() { |
167 | QByteArray ar(4096); | 167 | QByteArray ar(4096); |
168 | int len = read(m_comm[0], ar.data(), 4096 ); | 168 | int len = read(m_comm[0], ar.data(), 4096 ); |
169 | for (int i = 0; i < len; i++ ) { | 169 | for (int i = 0; i < len; i++ ) { |
170 | // printf("%c", ar[i] ); | 170 | // printf("%c", ar[i] ); |
171 | } | 171 | } |
172 | ar.resize( len ); | 172 | ar.resize( len ); |
173 | QString str( ar ); | 173 | QString str( ar ); |
174 | QStringList lis = QStringList::split(' ', str ); | 174 | QStringList lis = QStringList::split(' ', str ); |
175 | /* | 175 | /* |
176 | * Transfer finished.. either complete or incomplete | 176 | * Transfer finished.. either complete or incomplete |
177 | */ | 177 | */ |
178 | if ( lis[0].simplifyWhiteSpace() == "Transfer" ) { | 178 | if ( lis[0].simplifyWhiteSpace() == "Transfer" ) { |
179 | return; | 179 | return; |
180 | } | 180 | } |
181 | /* | 181 | /* |
182 | * do progress reading | 182 | * do progress reading |
183 | */ | 183 | */ |
184 | slotProgress( lis ); | 184 | slotProgress( lis ); |
185 | 185 | ||
186 | 186 | ||
187 | } | 187 | } |
188 | /* | 188 | /* |
189 | * find the progress | 189 | * find the progress |
190 | */ | 190 | */ |
191 | void FileTransfer::slotProgress( const QStringList& list ) { | 191 | void FileTransfer::slotProgress( const QStringList& list ) { |
192 | if ( m_type != SZ ) | 192 | if ( m_type != SZ ) |
193 | return; | 193 | return; |
194 | bool complete = true; | 194 | bool complete = true; |
195 | int min, sec; | 195 | int min, sec; |
196 | int bps; | 196 | int bps; |
197 | unsigned long sent, total; | 197 | unsigned long sent, total; |
198 | 198 | ||
199 | min = sec = bps = -1; | 199 | min = sec = bps = -1; |
200 | sent = total = 0; | 200 | sent = total = 0; |
201 | 201 | ||
202 | // Data looks like this | 202 | // Data looks like this |
203 | // 0 1 2 3 4 5 | 203 | // 0 1 2 3 4 5 |
204 | // Bytes Sent 65536/11534336 BPS:7784 ETA 24:33 | 204 | // Bytes Sent 65536/11534336 BPS:7784 ETA 24:33 |
205 | QStringList progi = QStringList::split('/', list[2].simplifyWhiteSpace() ); | 205 | QStringList progi = QStringList::split('/', list[2].simplifyWhiteSpace() ); |
206 | sent = progi[0].toULong(&complete ); | 206 | sent = progi[0].toULong(&complete ); |
207 | if (!complete ) return; | 207 | if (!complete ) return; |
208 | 208 | ||
209 | total = progi[1].toULong(&complete ); | 209 | total = progi[1].toULong(&complete ); |
210 | if (!complete || total == 0) { | 210 | if (!complete || total == 0) { |
211 | return; | 211 | return; |
212 | } | 212 | } |
213 | 213 | ||
214 | 214 | ||
215 | double pro = (double)sent/total; | 215 | double pro = (double)sent/total; |
216 | int prog = pro * 100; | 216 | int prog = pro * 100; |
217 | 217 | ||
218 | // speed | 218 | // speed |
219 | progi = QStringList::split(':', list[3].simplifyWhiteSpace() ); | 219 | progi = QStringList::split(':', list[3].simplifyWhiteSpace() ); |
220 | bps = progi[1].toInt(); | 220 | bps = progi[1].toInt(); |
221 | 221 | ||
222 | // time | 222 | // time |
223 | progi = QStringList::split(':', list[5].simplifyWhiteSpace() ); | 223 | progi = QStringList::split(':', list[5].simplifyWhiteSpace() ); |
224 | min = progi[0].toInt(); | 224 | min = progi[0].toInt(); |
225 | sec = progi[1].toInt(); | 225 | sec = progi[1].toInt(); |
226 | 226 | ||
227 | 227 | ||
228 | if ( prog > m_prog ) { | 228 | if ( prog > m_prog ) { |
229 | m_prog = prog; | 229 | m_prog = prog; |
230 | emit progress(m_file, m_prog, bps, -1, min , sec ); | 230 | emit progress(m_file, m_prog, bps, -1, min , sec ); |
231 | } | 231 | } |
232 | 232 | ||
233 | } | 233 | } |
234 | void FileTransfer::cancel() { | 234 | void FileTransfer::cancel() { |
235 | if(m_pid > 0) ::kill(m_pid,9 ); | 235 | if(m_pid > 0) ::kill(m_pid,9 ); |
236 | 236 | ||
237 | } | 237 | } |
238 | void FileTransfer::slotExec() { | 238 | void FileTransfer::slotExec() { |
239 | char buf[2]; | 239 | char buf[2]; |
240 | ::read(m_term[0], buf, 1 ); | 240 | ::read(m_term[0], buf, 1 ); |
diff --git a/noncore/net/opieftp/opieftp.cpp b/noncore/net/opieftp/opieftp.cpp index 3250627..2b29d83 100644 --- a/noncore/net/opieftp/opieftp.cpp +++ b/noncore/net/opieftp/opieftp.cpp | |||
@@ -662,193 +662,193 @@ void OpieFtp::populateLocalView() | |||
662 | fileDate= fi->lastModified().toString(); | 662 | fileDate= fi->lastModified().toString(); |
663 | if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) { | 663 | if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) { |
664 | fileL+="/"; | 664 | fileL+="/"; |
665 | isDir=TRUE; | 665 | isDir=TRUE; |
666 | // qDebug( fileL); | 666 | // qDebug( fileL); |
667 | } | 667 | } |
668 | } | 668 | } |
669 | if(fileL !="./" && fi->exists()) { | 669 | if(fileL !="./" && fi->exists()) { |
670 | item = new QListViewItem( Local_View,fileL, fileDate, fileS ); | 670 | item = new QListViewItem( Local_View,fileL, fileDate, fileS ); |
671 | QPixmap pm; | 671 | QPixmap pm; |
672 | 672 | ||
673 | if(isDir || fileL.find("/",0,TRUE) != -1) { | 673 | if(isDir || fileL.find("/",0,TRUE) != -1) { |
674 | if( !QDir( fi->filePath() ).isReadable()) | 674 | if( !QDir( fi->filePath() ).isReadable()) |
675 | pm = Resource::loadPixmap( "lockedfolder" ); | 675 | pm = Resource::loadPixmap( "lockedfolder" ); |
676 | else | 676 | else |
677 | pm= Resource::loadPixmap( "folder" ); | 677 | pm= Resource::loadPixmap( "folder" ); |
678 | item->setPixmap( 0,pm ); | 678 | item->setPixmap( 0,pm ); |
679 | } else { | 679 | } else { |
680 | if( !fi->isReadable() ) | 680 | if( !fi->isReadable() ) |
681 | pm = Resource::loadPixmap( "locked" ); | 681 | pm = Resource::loadPixmap( "locked" ); |
682 | else { | 682 | else { |
683 | MimeType mt(fi->filePath()); | 683 | MimeType mt(fi->filePath()); |
684 | pm=mt.pixmap(); //sets the correct pixmap for mimetype | 684 | pm=mt.pixmap(); //sets the correct pixmap for mimetype |
685 | if(pm.isNull()) | 685 | if(pm.isNull()) |
686 | pm = unknownXpm; | 686 | pm = unknownXpm; |
687 | } | 687 | } |
688 | } | 688 | } |
689 | if( fileL.find("->",0,TRUE) != -1) { | 689 | if( fileL.find("->",0,TRUE) != -1) { |
690 | // overlay link image | 690 | // overlay link image |
691 | pm= Resource::loadPixmap( "folder" ); | 691 | pm= Resource::loadPixmap( "folder" ); |
692 | QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); | 692 | QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); |
693 | QPainter painter( &pm ); | 693 | QPainter painter( &pm ); |
694 | painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); | 694 | painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); |
695 | pm.setMask( pm.createHeuristicMask( FALSE ) ); | 695 | pm.setMask( pm.createHeuristicMask( FALSE ) ); |
696 | } | 696 | } |
697 | item->setPixmap( 0,pm); | 697 | item->setPixmap( 0,pm); |
698 | } | 698 | } |
699 | isDir=FALSE; | 699 | isDir=FALSE; |
700 | ++it; | 700 | ++it; |
701 | } | 701 | } |
702 | Local_View->setSorting( 3,FALSE); | 702 | Local_View->setSorting( 3,FALSE); |
703 | currentPathCombo->lineEdit()->setText( currentDir.canonicalPath() ); | 703 | currentPathCombo->lineEdit()->setText( currentDir.canonicalPath() ); |
704 | fillCombo( (const QString &)currentDir); | 704 | fillCombo( (const QString &)currentDir); |
705 | } | 705 | } |
706 | 706 | ||
707 | bool OpieFtp::populateRemoteView( ) | 707 | bool OpieFtp::populateRemoteView( ) |
708 | { | 708 | { |
709 | // qDebug("populate remoteview"); | 709 | // qDebug("populate remoteview"); |
710 | QString sfile=QDir::homeDirPath(); | 710 | QString sfile=QDir::homeDirPath(); |
711 | if(sfile.right(1) != "/") | 711 | if(sfile.right(1) != "/") |
712 | sfile+="/._temp"; | 712 | sfile+="/._temp"; |
713 | else | 713 | else |
714 | sfile+="._temp"; | 714 | sfile+="._temp"; |
715 | QFile file( sfile); | 715 | QFile file( sfile); |
716 | Remote_View->clear(); | 716 | Remote_View->clear(); |
717 | QString s, File_Name; | 717 | QString s, File_Name; |
718 | QListViewItem *itemDir=NULL, *itemFile=NULL; | 718 | QListViewItem *itemDir=NULL, *itemFile=NULL; |
719 | QRegExp monthRe(" [JFMASOND][eapuecoe][brynlgptvc] [ 0-9][0-9] [ 0-9][0-9][:0-9][0-9][0-9] "); | 719 | QRegExp monthRe(" [JFMASOND][eapuecoe][brynlgptvc] [ 0-9][0-9] [ 0-9][0-9][:0-9][0-9][0-9] "); |
720 | QString fileL, fileS, fileDate; | 720 | QString fileL, fileS, fileDate; |
721 | if ( file.open(IO_ReadOnly)) { | 721 | if ( file.open(IO_ReadOnly)) { |
722 | QTextStream t( &file ); // use a text stream | 722 | QTextStream t( &file ); // use a text stream |
723 | while ( !t.eof()) { | 723 | while ( !t.eof()) { |
724 | s = t.readLine(); | 724 | s = t.readLine(); |
725 | 725 | ||
726 | if(s.find("total",0,TRUE) == 0) | 726 | if(s.find("total",0,TRUE) == 0) |
727 | continue; | 727 | continue; |
728 | 728 | ||
729 | int len, month = monthRe.match(s, 0, &len); | 729 | int len, month = monthRe.match(s, 0, &len); |
730 | fileDate = s.mid(month + 1, len - 2); // minus spaces | 730 | fileDate = s.mid(month + 1, len - 2); // minus spaces |
731 | fileL = s.right(s.length() - month - len); | 731 | fileL = s.right(s.length() - month - len); |
732 | if(s.left(1) == "d") | 732 | if(s.left(1) == "d") |
733 | fileL = fileL+"/"; | 733 | fileL = fileL+"/"; |
734 | fileS = s.mid(month - 8, 8); // FIXME | 734 | fileS = s.mid(month - 8, 8); // FIXME |
735 | fileS = fileS.stripWhiteSpace(); | 735 | fileS = fileS.stripWhiteSpace(); |
736 | 736 | ||
737 | if(s.left(1) == "d" || fileL.find("/",0,TRUE) != -1) { | 737 | if(s.left(1) == "d" || fileL.find("/",0,TRUE) != -1) { |
738 | QListViewItem * item = new QListViewItem( Remote_View, fileL, fileDate, fileS,"d"); | 738 | QListViewItem * item = new QListViewItem( Remote_View, fileL, fileDate, fileS,"d"); |
739 | item->setPixmap( 0, Resource::loadPixmap( "folder" )); | 739 | item->setPixmap( 0, Resource::loadPixmap( "folder" )); |
740 | // if(itemDir) | 740 | // if(itemDir) |
741 | item->moveItem(itemDir); | 741 | item->moveItem(itemDir); |
742 | itemDir=item; | 742 | itemDir=item; |
743 | } else { | 743 | } else { |
744 | QListViewItem * item = new QListViewItem( Remote_View, fileL, fileDate, fileS,"f"); | 744 | QListViewItem * item = new QListViewItem( Remote_View, fileL, fileDate, fileS,"f"); |
745 | item->setPixmap( 0, Resource::loadPixmap( "fileopen" )); | 745 | item->setPixmap( 0, Resource::loadPixmap( "fileopen" )); |
746 | // if(itemFile) | 746 | // if(itemFile) |
747 | item->moveItem(itemDir); | 747 | item->moveItem(itemDir); |
748 | item->moveItem(itemFile); | 748 | item->moveItem(itemFile); |
749 | itemFile=item; | 749 | itemFile=item; |
750 | } | 750 | } |
751 | } | 751 | } |
752 | QListViewItem * item1 = new QListViewItem( Remote_View, "../"); | 752 | QListViewItem * item1 = new QListViewItem( Remote_View, "../"); |
753 | item1->setPixmap( 0, Resource::loadPixmap( "folder" )); | 753 | item1->setPixmap( 0, Resource::loadPixmap( "folder" )); |
754 | file.close(); | 754 | file.close(); |
755 | if( file.exists()) | 755 | if( file.exists()) |
756 | file. remove(); | 756 | file. remove(); |
757 | } else | 757 | } else |
758 | qDebug("temp file not opened successfullly "+sfile); | 758 | qDebug("temp file not opened successfully "+sfile); |
759 | Remote_View->setSorting( 4,TRUE); | 759 | Remote_View->setSorting( 4,TRUE); |
760 | return true; | 760 | return true; |
761 | } | 761 | } |
762 | 762 | ||
763 | void OpieFtp::remoteListClicked(QListViewItem *selectedItem) | 763 | void OpieFtp::remoteListClicked(QListViewItem *selectedItem) |
764 | { | 764 | { |
765 | if( selectedItem) { | 765 | if( selectedItem) { |
766 | // if(selectedItem!= NULL) { | 766 | // if(selectedItem!= NULL) { |
767 | // QCopEnvelope ( "QPE/System", "busy()" ); | 767 | // QCopEnvelope ( "QPE/System", "busy()" ); |
768 | QString oldRemoteCurrentDir = currentRemoteDir; | 768 | QString oldRemoteCurrentDir = currentRemoteDir; |
769 | QString strItem=selectedItem->text(0); | 769 | QString strItem=selectedItem->text(0); |
770 | strItem=strItem.simplifyWhiteSpace(); | 770 | strItem=strItem.simplifyWhiteSpace(); |
771 | if(strItem == "../") { // the user wants to go ^ | 771 | if(strItem == "../") { // the user wants to go ^ |
772 | if( FtpCDUp( conn) == 0) { | 772 | if( FtpCDUp( conn) == 0) { |
773 | QString msg; | 773 | QString msg; |
774 | msg.sprintf(tr("Unable to cd up\n")+"%s",FtpLastResponse(conn)); | 774 | msg.sprintf(tr("Unable to cd up\n")+"%s",FtpLastResponse(conn)); |
775 | msg.replace(QRegExp(":"),"\n"); | 775 | msg.replace(QRegExp(":"),"\n"); |
776 | QMessageBox::message(tr("Note"),msg); | 776 | QMessageBox::message(tr("Note"),msg); |
777 | // qDebug(msg); | 777 | // qDebug(msg); |
778 | } | 778 | } |
779 | char path[256]; | 779 | char path[256]; |
780 | if( FtpPwd( path,sizeof(path),conn) == 0) { //this is easier than fudging the string | 780 | if( FtpPwd( path,sizeof(path),conn) == 0) { //this is easier than fudging the string |
781 | QString msg; | 781 | QString msg; |
782 | msg.sprintf(tr("Unable to get working dir\n")+"%s",FtpLastResponse(conn)); | 782 | msg.sprintf(tr("Unable to get working dir\n")+"%s",FtpLastResponse(conn)); |
783 | msg.replace(QRegExp(":"),"\n"); | 783 | msg.replace(QRegExp(":"),"\n"); |
784 | QMessageBox::message(tr("Note"),msg); | 784 | QMessageBox::message(tr("Note"),msg); |
785 | // qDebug(msg); | 785 | // qDebug(msg); |
786 | } | 786 | } |
787 | currentRemoteDir=path; | 787 | currentRemoteDir=path; |
788 | } else { | 788 | } else { |
789 | if(strItem.find("->",0,TRUE) != -1) { //symlink on some servers | 789 | if(strItem.find("->",0,TRUE) != -1) { //symlink on some servers |
790 | strItem=strItem.right( strItem.length() - strItem.find("->",0,TRUE) - 2 ); | 790 | strItem=strItem.right( strItem.length() - strItem.find("->",0,TRUE) - 2 ); |
791 | strItem = strItem.stripWhiteSpace(); | 791 | strItem = strItem.stripWhiteSpace(); |
792 | currentRemoteDir = strItem; | 792 | currentRemoteDir = strItem; |
793 | if( !remoteChDir( (const QString &)strItem)) { | 793 | if( !remoteChDir( (const QString &)strItem)) { |
794 | currentRemoteDir = oldRemoteCurrentDir; | 794 | currentRemoteDir = oldRemoteCurrentDir; |
795 | strItem=""; | 795 | strItem=""; |
796 | // qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir); | 796 | // qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir); |
797 | } | 797 | } |
798 | } else if(strItem.find("/",0,TRUE) != -1) { // this is a directory | 798 | } else if(strItem.find("/",0,TRUE) != -1) { // this is a directory |
799 | if( !remoteChDir( (const QString &)currentRemoteDir + strItem)) { | 799 | if( !remoteChDir( (const QString &)currentRemoteDir + strItem)) { |
800 | currentRemoteDir = oldRemoteCurrentDir; | 800 | currentRemoteDir = oldRemoteCurrentDir; |
801 | strItem=""; | 801 | strItem=""; |
802 | // qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir); | 802 | // qDebug("RemoteCurrentDir1 "+oldRemoteCurrentDir); |
803 | 803 | ||
804 | } else { | 804 | } else { |
805 | currentRemoteDir = currentRemoteDir+strItem; | 805 | currentRemoteDir = currentRemoteDir+strItem; |
806 | } | 806 | } |
807 | } else { | 807 | } else { |
808 | // QCopEnvelope ( "QPE/System", "notBusy()" ); | 808 | // QCopEnvelope ( "QPE/System", "notBusy()" ); |
809 | return; | 809 | return; |
810 | } | 810 | } |
811 | } | 811 | } |
812 | remoteDirList( (const QString &)currentRemoteDir); //this also calls populate | 812 | remoteDirList( (const QString &)currentRemoteDir); //this also calls populate |
813 | if(currentRemoteDir.right(1) !="/") | 813 | if(currentRemoteDir.right(1) !="/") |
814 | currentRemoteDir +="/"; | 814 | currentRemoteDir +="/"; |
815 | currentPathCombo->lineEdit()->setText( currentRemoteDir); | 815 | currentPathCombo->lineEdit()->setText( currentRemoteDir); |
816 | fillRemoteCombo( (const QString &)currentRemoteDir); | 816 | fillRemoteCombo( (const QString &)currentRemoteDir); |
817 | // QCopEnvelope ( "QPE/System", "notBusy()" ); | 817 | // QCopEnvelope ( "QPE/System", "notBusy()" ); |
818 | Remote_View->ensureItemVisible(Remote_View->firstChild()); | 818 | Remote_View->ensureItemVisible(Remote_View->firstChild()); |
819 | 819 | ||
820 | } | 820 | } |
821 | } | 821 | } |
822 | 822 | ||
823 | void OpieFtp::localListClicked(QListViewItem *selectedItem) | 823 | void OpieFtp::localListClicked(QListViewItem *selectedItem) |
824 | { | 824 | { |
825 | if(selectedItem!= NULL) { | 825 | if(selectedItem!= NULL) { |
826 | 826 | ||
827 | QString strItem=selectedItem->text(0); | 827 | QString strItem=selectedItem->text(0); |
828 | QString strSize=selectedItem->text(1); | 828 | QString strSize=selectedItem->text(1); |
829 | strSize=strSize.stripWhiteSpace(); | 829 | strSize=strSize.stripWhiteSpace(); |
830 | if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 ) { //if symlink | 830 | if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 ) { //if symlink |
831 | // is symlink | 831 | // is symlink |
832 | QString strItem2 = strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4); | 832 | QString strItem2 = strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4); |
833 | if(QDir(strItem2).exists() ) { | 833 | if(QDir(strItem2).exists() ) { |
834 | currentDir.cd(strItem2, TRUE); | 834 | currentDir.cd(strItem2, TRUE); |
835 | populateLocalView(); | 835 | populateLocalView(); |
836 | } | 836 | } |
837 | } else { // not a symlink | 837 | } else { // not a symlink |
838 | if(strItem.find(". .",0,TRUE) && strItem.find("/",0,TRUE)!=-1 ) { | 838 | if(strItem.find(". .",0,TRUE) && strItem.find("/",0,TRUE)!=-1 ) { |
839 | 839 | ||
840 | if(QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem)).exists() ) { | 840 | if(QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem)).exists() ) { |
841 | strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); | 841 | strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); |
842 | currentDir.cd(strItem,FALSE); | 842 | currentDir.cd(strItem,FALSE); |
843 | populateLocalView(); | 843 | populateLocalView(); |
844 | } else { | 844 | } else { |
845 | currentDir.cdUp(); | 845 | currentDir.cdUp(); |
846 | populateLocalView(); | 846 | populateLocalView(); |
847 | } | 847 | } |
848 | if(QDir(strItem).exists()){ | 848 | if(QDir(strItem).exists()){ |
849 | currentDir.cd(strItem, TRUE); | 849 | currentDir.cd(strItem, TRUE); |
850 | populateLocalView(); | 850 | populateLocalView(); |
851 | } | 851 | } |
852 | } else { | 852 | } else { |
853 | strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); | 853 | strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); |
854 | if( QFile::exists(strItem ) ) { | 854 | if( QFile::exists(strItem ) ) { |
diff --git a/noncore/settings/backup/backuprestore.cpp b/noncore/settings/backup/backuprestore.cpp index 477e24d..93bedf6 100644 --- a/noncore/settings/backup/backuprestore.cpp +++ b/noncore/settings/backup/backuprestore.cpp | |||
@@ -195,277 +195,277 @@ void BackupAndRestore::scanForApplicationSettings() | |||
195 | if ( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) ) | 195 | if ( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) ) |
196 | { | 196 | { |
197 | QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName()); | 197 | QListViewItem *newItem = new QListViewItem(applicationSettings, fi->fileName()); |
198 | selectItem(newItem); | 198 | selectItem(newItem); |
199 | } | 199 | } |
200 | ++it; | 200 | ++it; |
201 | } | 201 | } |
202 | } | 202 | } |
203 | 203 | ||
204 | /** | 204 | /** |
205 | * The "Backup" button has been pressed. Get a list of all of the files that | 205 | * The "Backup" button has been pressed. Get a list of all of the files that |
206 | * should be backed up. If there are no files, emit and error and exit. | 206 | * should be backed up. If there are no files, emit and error and exit. |
207 | * Determine the file name to store the backup in. Backup the file(s) using | 207 | * Determine the file name to store the backup in. Backup the file(s) using |
208 | * tar and gzip --best. Report failure or success | 208 | * tar and gzip --best. Report failure or success |
209 | */ | 209 | */ |
210 | void BackupAndRestore::backup() | 210 | void BackupAndRestore::backup() |
211 | { | 211 | { |
212 | QString backupFiles; | 212 | QString backupFiles; |
213 | if(getBackupFiles(backupFiles, NULL) == 0) | 213 | if(getBackupFiles(backupFiles, NULL) == 0) |
214 | { | 214 | { |
215 | QMessageBox::critical(this, "Message", | 215 | QMessageBox::critical(this, "Message", |
216 | "No items selected.",QString("Ok") ); | 216 | "No items selected.",QString("Ok") ); |
217 | return; | 217 | return; |
218 | } | 218 | } |
219 | 219 | ||
220 | setCaption(tr("Backup and Restore... working...")); | 220 | setCaption(tr("Backup and Restore... working...")); |
221 | QString outputFile = backupLocations[storeToLocation->currentText()]; | 221 | QString outputFile = backupLocations[storeToLocation->currentText()]; |
222 | 222 | ||
223 | QDateTime datetime = QDateTime::currentDateTime(); | 223 | QDateTime datetime = QDateTime::currentDateTime(); |
224 | QString dateString = QString::number( datetime.date().year() ) + QString::number( datetime.date().month() ).rightJustify(2, '0') + | 224 | QString dateString = QString::number( datetime.date().year() ) + QString::number( datetime.date().month() ).rightJustify(2, '0') + |
225 | QString::number( datetime.date().day() ).rightJustify(2, '0'); | 225 | QString::number( datetime.date().day() ).rightJustify(2, '0'); |
226 | 226 | ||
227 | outputFile += "/" + dateString; | 227 | outputFile += "/" + dateString; |
228 | 228 | ||
229 | QString t = outputFile; | 229 | QString t = outputFile; |
230 | int c = 1; | 230 | int c = 1; |
231 | while(QFile::exists(outputFile + EXTENSION)) | 231 | while(QFile::exists(outputFile + EXTENSION)) |
232 | { | 232 | { |
233 | outputFile = t + QString("%1").arg(c); | 233 | outputFile = t + QString("%1").arg(c); |
234 | c++; | 234 | c++; |
235 | } | 235 | } |
236 | 236 | ||
237 | // We execute tar and compressing its output with gzip.. | 237 | // We execute tar and compressing its output with gzip.. |
238 | // The error output will be written into a temp-file which could be provided | 238 | // The error output will be written into a temp-file which could be provided |
239 | // for debugging.. | 239 | // for debugging.. |
240 | qDebug( "Storing file: %s", outputFile.latin1() ); | 240 | qDebug( "Storing file: %s", outputFile.latin1() ); |
241 | outputFile += EXTENSION; | 241 | outputFile += EXTENSION; |
242 | 242 | ||
243 | QString commandLine = QString( "(tar -C %1 -c %2 | gzip > %3 ) 2> %4" ).arg( QDir::homeDirPath() ) | 243 | QString commandLine = QString( "(tar -C %1 -c %2 | gzip > %3 ) 2> %4" ).arg( QDir::homeDirPath() ) |
244 | .arg( backupFiles ) | 244 | .arg( backupFiles ) |
245 | .arg( outputFile.latin1() ) | 245 | .arg( outputFile.latin1() ) |
246 | .arg( tempFileName.latin1() ); | 246 | .arg( tempFileName.latin1() ); |
247 | 247 | ||
248 | qDebug( commandLine ); | 248 | qDebug( commandLine ); |
249 | 249 | ||
250 | int r = system( commandLine ); | 250 | int r = system( commandLine ); |
251 | 251 | ||
252 | if(r != 0) | 252 | if(r != 0) |
253 | { | 253 | { |
254 | perror("Error: "); | 254 | perror("Error: "); |
255 | QString errorMsg= tr( "Error from System:\n" ) + (QString)strerror( errno ); | 255 | QString errorMsg= tr( "Error from System:\n" ) + (QString)strerror( errno ); |
256 | 256 | ||
257 | switch( QMessageBox::critical(this, tr( "Message" ), tr( "Backup Failed!" ) + "\n" | 257 | switch( QMessageBox::critical(this, tr( "Message" ), tr( "Backup Failed!" ) + "\n" |
258 | + errorMsg, QString( tr( "Ok" ) ), QString( tr( "Details" ) ) ) ) | 258 | + errorMsg, QString( tr( "Ok" ) ), QString( tr( "Details" ) ) ) ) |
259 | { | 259 | { |
260 | 260 | ||
261 | case 1: | 261 | case 1: |
262 | qWarning("Details pressed !"); | 262 | qWarning("Details pressed !"); |
263 | ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); | 263 | ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); |
264 | QFile errorFile( tempFileName ); | 264 | QFile errorFile( tempFileName ); |
265 | if ( errorFile.open(IO_ReadOnly) ) | 265 | if ( errorFile.open(IO_ReadOnly) ) |
266 | { | 266 | { |
267 | QTextStream t( &errorFile ); | 267 | QTextStream t( &errorFile ); |
268 | QString s; | 268 | QString s; |
269 | while ( !t.eof() ) | 269 | while ( !t.eof() ) |
270 | { // until end of file... | 270 | { // until end of file... |
271 | s += t.readLine(); // line of text excluding '\n' | 271 | s += t.readLine(); // line of text excluding '\n' |
272 | } | 272 | } |
273 | errorFile.close(); | 273 | errorFile.close(); |
274 | 274 | ||
275 | pErrDialog->m_textarea->setText( s ); | 275 | pErrDialog->m_textarea->setText( s ); |
276 | } | 276 | } |
277 | else | 277 | else |
278 | { | 278 | { |
279 | pErrDialog->m_textarea->setText( "Unable to open File: /tmp/backup.er" ); | 279 | pErrDialog->m_textarea->setText( "Unable to open File: /tmp/backup.er" ); |
280 | } | 280 | } |
281 | pErrDialog->showMaximized(); | 281 | pErrDialog->showMaximized(); |
282 | pErrDialog->exec(); | 282 | pErrDialog->exec(); |
283 | delete pErrDialog; | 283 | delete pErrDialog; |
284 | break; | 284 | break; |
285 | } | 285 | } |
286 | setCaption(tr("Backup and Restore.. Failed !!")); | 286 | setCaption(tr("Backup and Restore.. Failed !!")); |
287 | return; | 287 | return; |
288 | } | 288 | } |
289 | else | 289 | else |
290 | { | 290 | { |
291 | QMessageBox::information(this, tr( "Message" ), tr( "Backup Successfull." ), QString(tr( "Ok" ) ) ); | 291 | QMessageBox::information(this, tr( "Message" ), tr( "Backup Successful." ), QString(tr( "Ok" ) ) ); |
292 | 292 | ||
293 | } | 293 | } |
294 | 294 | ||
295 | //write store-location | 295 | //write store-location |
296 | Config config( "BackupAndRestore" ); | 296 | Config config( "BackupAndRestore" ); |
297 | config.setGroup( "LastLocation" ); | 297 | config.setGroup( "LastLocation" ); |
298 | config.writeEntry( "LastStoreLocation", storeToLocation->currentText() ); | 298 | config.writeEntry( "LastStoreLocation", storeToLocation->currentText() ); |
299 | 299 | ||
300 | setCaption(tr("Backup and Restore")); | 300 | setCaption(tr("Backup and Restore")); |
301 | } | 301 | } |
302 | 302 | ||
303 | /*** | 303 | /*** |
304 | * Get a list of all of the files to backup. | 304 | * Get a list of all of the files to backup. |
305 | */ | 305 | */ |
306 | int BackupAndRestore::getBackupFiles(QString &backupFiles, QListViewItem *parent) | 306 | int BackupAndRestore::getBackupFiles(QString &backupFiles, QListViewItem *parent) |
307 | { | 307 | { |
308 | QListViewItem * currentItem; | 308 | QListViewItem * currentItem; |
309 | QString currentHome; | 309 | QString currentHome; |
310 | if(!parent) | 310 | if(!parent) |
311 | currentItem = backupList->firstChild(); | 311 | currentItem = backupList->firstChild(); |
312 | else | 312 | else |
313 | { | 313 | { |
314 | currentItem = parent->firstChild(); | 314 | currentItem = parent->firstChild(); |
315 | currentHome = parent->text(BACKUP_LOCATION); | 315 | currentHome = parent->text(BACKUP_LOCATION); |
316 | } | 316 | } |
317 | 317 | ||
318 | uint count = 0; | 318 | uint count = 0; |
319 | while( currentItem != 0 ) | 319 | while( currentItem != 0 ) |
320 | { | 320 | { |
321 | if(currentItem->text(HEADER_BACKUP) == "B" ) | 321 | if(currentItem->text(HEADER_BACKUP) == "B" ) |
322 | { | 322 | { |
323 | if(currentItem->childCount() == 0 ) | 323 | if(currentItem->childCount() == 0 ) |
324 | { | 324 | { |
325 | if(parent == NULL) | 325 | if(parent == NULL) |
326 | backupFiles += currentItem->text(BACKUP_LOCATION); | 326 | backupFiles += currentItem->text(BACKUP_LOCATION); |
327 | else | 327 | else |
328 | backupFiles += currentHome + currentItem->text(HEADER_NAME); | 328 | backupFiles += currentHome + currentItem->text(HEADER_NAME); |
329 | backupFiles += " "; | 329 | backupFiles += " "; |
330 | count++; | 330 | count++; |
331 | } | 331 | } |
332 | else | 332 | else |
333 | { | 333 | { |
334 | count += getBackupFiles(backupFiles, currentItem); | 334 | count += getBackupFiles(backupFiles, currentItem); |
335 | } | 335 | } |
336 | } | 336 | } |
337 | currentItem = currentItem->nextSibling(); | 337 | currentItem = currentItem->nextSibling(); |
338 | } | 338 | } |
339 | return count; | 339 | return count; |
340 | } | 340 | } |
341 | 341 | ||
342 | void BackupAndRestore::sourceDirChanged(int selection) | 342 | void BackupAndRestore::sourceDirChanged(int selection) |
343 | { | 343 | { |
344 | restoreList->clear(); | 344 | restoreList->clear(); |
345 | rescanFolder(backupLocations[restoreSource->text(selection)]); | 345 | rescanFolder(backupLocations[restoreSource->text(selection)]); |
346 | } | 346 | } |
347 | 347 | ||
348 | void BackupAndRestore::fileListUpdate() | 348 | void BackupAndRestore::fileListUpdate() |
349 | { | 349 | { |
350 | qWarning("void BackupAndRestore::fileListUpdate()"); | 350 | qWarning("void BackupAndRestore::fileListUpdate()"); |
351 | restoreList->clear(); | 351 | restoreList->clear(); |
352 | rescanFolder( backupLocations[restoreSource->currentText()] ); | 352 | rescanFolder( backupLocations[restoreSource->currentText()] ); |
353 | } | 353 | } |
354 | 354 | ||
355 | /** | 355 | /** |
356 | * Scans directory for any backup files. Will recursivly go down, | 356 | * Scans directory for any backup files. Will recursivly go down, |
357 | * but will not follow symlinks. | 357 | * but will not follow symlinks. |
358 | * @param directory - the directory to look in. | 358 | * @param directory - the directory to look in. |
359 | */ | 359 | */ |
360 | void BackupAndRestore::rescanFolder(QString directory) | 360 | void BackupAndRestore::rescanFolder(QString directory) |
361 | { | 361 | { |
362 | //qDebug(QString("rescanFolder: ") + directory.latin1()); | 362 | //qDebug(QString("rescanFolder: ") + directory.latin1()); |
363 | QDir d(directory); | 363 | QDir d(directory); |
364 | if(!d.exists()) | 364 | if(!d.exists()) |
365 | return; | 365 | return; |
366 | 366 | ||
367 | d.setFilter( QDir::Files | QDir::Hidden | QDir::Dirs); | 367 | d.setFilter( QDir::Files | QDir::Hidden | QDir::Dirs); |
368 | const QFileInfoList *list = d.entryInfoList(); | 368 | const QFileInfoList *list = d.entryInfoList(); |
369 | QFileInfoListIterator it( *list ); | 369 | QFileInfoListIterator it( *list ); |
370 | QFileInfo *file; | 370 | QFileInfo *file; |
371 | while ( (file=it.current()) ) | 371 | while ( (file=it.current()) ) |
372 | { // for each file... | 372 | { // for each file... |
373 | // If it is a dir and not .. or . then add it as a tab and go down. | 373 | // If it is a dir and not .. or . then add it as a tab and go down. |
374 | if(file->isDir()) | 374 | if(file->isDir()) |
375 | { | 375 | { |
376 | if(file->fileName() != ".." && file->fileName() != ".") | 376 | if(file->fileName() != ".." && file->fileName() != ".") |
377 | { | 377 | { |
378 | rescanFolder(directory + "/" + file->fileName()); | 378 | rescanFolder(directory + "/" + file->fileName()); |
379 | } | 379 | } |
380 | } | 380 | } |
381 | else | 381 | else |
382 | { | 382 | { |
383 | // If it is a backup file add to list. | 383 | // If it is a backup file add to list. |
384 | if(file->fileName().contains(EXTENSION)) | 384 | if(file->fileName().contains(EXTENSION)) |
385 | (void)new QListViewItem(restoreList, file->fileName()); | 385 | (void)new QListViewItem(restoreList, file->fileName()); |
386 | } | 386 | } |
387 | ++it; | 387 | ++it; |
388 | } | 388 | } |
389 | } | 389 | } |
390 | 390 | ||
391 | /** | 391 | /** |
392 | * Restore a backup file. | 392 | * Restore a backup file. |
393 | * Report errors or success | 393 | * Report errors or success |
394 | */ | 394 | */ |
395 | void BackupAndRestore::restore() | 395 | void BackupAndRestore::restore() |
396 | { | 396 | { |
397 | QListViewItem *restoreItem = restoreList->currentItem(); | 397 | QListViewItem *restoreItem = restoreList->currentItem(); |
398 | if(!restoreItem) | 398 | if(!restoreItem) |
399 | { | 399 | { |
400 | QMessageBox::critical(this, tr( "Message" ), | 400 | QMessageBox::critical(this, tr( "Message" ), |
401 | tr( "Please select something to restore." ),QString( tr( "Ok") ) ); | 401 | tr( "Please select something to restore." ),QString( tr( "Ok") ) ); |
402 | return; | 402 | return; |
403 | } | 403 | } |
404 | setCaption(tr("Backup and Restore... working...")); | 404 | setCaption(tr("Backup and Restore... working...")); |
405 | 405 | ||
406 | QString restoreFile = backupLocations[restoreSource->currentText()]; | 406 | QString restoreFile = backupLocations[restoreSource->currentText()]; |
407 | 407 | ||
408 | restoreFile += "/" + restoreItem->text(0); | 408 | restoreFile += "/" + restoreItem->text(0); |
409 | 409 | ||
410 | qDebug( restoreFile ); | 410 | qDebug( restoreFile ); |
411 | 411 | ||
412 | QString commandLine = QString( "tar -C %1 -zxf %2 2> %3" ).arg( QDir::homeDirPath() ) | 412 | QString commandLine = QString( "tar -C %1 -zxf %2 2> %3" ).arg( QDir::homeDirPath() ) |
413 | .arg( restoreFile.latin1() ) | 413 | .arg( restoreFile.latin1() ) |
414 | .arg( tempFileName.latin1() ); | 414 | .arg( tempFileName.latin1() ); |
415 | 415 | ||
416 | qDebug( commandLine ); | 416 | qDebug( commandLine ); |
417 | 417 | ||
418 | int r = system( commandLine ); | 418 | int r = system( commandLine ); |
419 | 419 | ||
420 | if(r != 0) | 420 | if(r != 0) |
421 | { | 421 | { |
422 | QString errorMsg= tr( "Error from System:\n" ) + (QString)strerror( errno ); | 422 | QString errorMsg= tr( "Error from System:\n" ) + (QString)strerror( errno ); |
423 | switch( QMessageBox::critical(this, tr( "Message" ), tr( "Restore Failed." ) + "\n" | 423 | switch( QMessageBox::critical(this, tr( "Message" ), tr( "Restore Failed." ) + "\n" |
424 | + errorMsg, QString( tr( "Ok") ), QString( tr( "Details" ) ) ) ) | 424 | + errorMsg, QString( tr( "Ok") ), QString( tr( "Details" ) ) ) ) |
425 | { | 425 | { |
426 | case 1: | 426 | case 1: |
427 | qWarning("Details pressed !"); | 427 | qWarning("Details pressed !"); |
428 | ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); | 428 | ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); |
429 | QFile errorFile( tempFileName ); | 429 | QFile errorFile( tempFileName ); |
430 | if ( errorFile.open(IO_ReadOnly) ) | 430 | if ( errorFile.open(IO_ReadOnly) ) |
431 | { | 431 | { |
432 | QTextStream t( &errorFile ); | 432 | QTextStream t( &errorFile ); |
433 | QString s; | 433 | QString s; |
434 | while ( !t.eof() ) | 434 | while ( !t.eof() ) |
435 | { // until end of file... | 435 | { // until end of file... |
436 | s += t.readLine(); // line of text excluding '\n' | 436 | s += t.readLine(); // line of text excluding '\n' |
437 | } | 437 | } |
438 | errorFile.close(); | 438 | errorFile.close(); |
439 | 439 | ||
440 | pErrDialog->m_textarea->setText( s ); | 440 | pErrDialog->m_textarea->setText( s ); |
441 | } | 441 | } |
442 | else | 442 | else |
443 | { | 443 | { |
444 | pErrDialog->m_textarea->setText( tr( "Unable to open File: %1" ).arg( "/tmp/backup.er" ) ); | 444 | pErrDialog->m_textarea->setText( tr( "Unable to open File: %1" ).arg( "/tmp/backup.er" ) ); |
445 | } | 445 | } |
446 | pErrDialog->showMaximized(); | 446 | pErrDialog->showMaximized(); |
447 | pErrDialog->exec(); | 447 | pErrDialog->exec(); |
448 | delete pErrDialog; | 448 | delete pErrDialog; |
449 | 449 | ||
450 | setCaption(tr("Backup and Restore.. Failed !!")); | 450 | setCaption(tr("Backup and Restore.. Failed !!")); |
451 | return; | 451 | return; |
452 | 452 | ||
453 | break; | 453 | break; |
454 | 454 | ||
455 | } | 455 | } |
456 | } | 456 | } |
457 | else | 457 | else |
458 | { | 458 | { |
459 | QMessageBox::information(this, tr( "Message" ), tr( "Restore Successfull." ), QString( tr( "Ok") ) ); | 459 | QMessageBox::information(this, tr( "Message" ), tr( "Restore Successful." ), QString( tr( "Ok") ) ); |
460 | } | 460 | } |
461 | 461 | ||
462 | //write restore-location | 462 | //write restore-location |
463 | Config config( "BackupAndRestore" ); | 463 | Config config( "BackupAndRestore" ); |
464 | config.setGroup( "LastLocation" ); | 464 | config.setGroup( "LastLocation" ); |
465 | config.writeEntry( "LastRestoreLocation", restoreSource->currentText() ); | 465 | config.writeEntry( "LastRestoreLocation", restoreSource->currentText() ); |
466 | 466 | ||
467 | setCaption(tr("Backup and Restore")); | 467 | setCaption(tr("Backup and Restore")); |
468 | } | 468 | } |
469 | 469 | ||
470 | // backuprestore.cpp | 470 | // backuprestore.cpp |
471 | 471 | ||
diff --git a/noncore/settings/networksettings/interfaces/interface.cpp b/noncore/settings/networksettings/interfaces/interface.cpp index 69b55d1..b00b899 100644 --- a/noncore/settings/networksettings/interfaces/interface.cpp +++ b/noncore/settings/networksettings/interfaces/interface.cpp | |||
@@ -1,216 +1,216 @@ | |||
1 | /** | 1 | /** |
2 | * $Author$ | 2 | * $Author$ |
3 | * $Date$ | 3 | * $Date$ |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include "interface.h" | 6 | #include "interface.h" |
7 | #include <qdatetime.h> | 7 | #include <qdatetime.h> |
8 | #include <qfile.h> | 8 | #include <qfile.h> |
9 | #include <qdir.h> | 9 | #include <qdir.h> |
10 | #include <qfileinfo.h> | 10 | #include <qfileinfo.h> |
11 | #include <qtextstream.h> | 11 | #include <qtextstream.h> |
12 | 12 | ||
13 | #define IFCONFIG "/sbin/ifconfig" | 13 | #define IFCONFIG "/sbin/ifconfig" |
14 | #define DHCP_INFO_DIR "/etc/dhcpc" | 14 | #define DHCP_INFO_DIR "/etc/dhcpc" |
15 | 15 | ||
16 | #include <stdio.h> | 16 | #include <stdio.h> |
17 | #include <stdlib.h> | 17 | #include <stdlib.h> |
18 | 18 | ||
19 | Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), hardwareName("Unknown"), moduleOwner(NULL), status(newSatus), attached(false), dhcp(false), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"){ | 19 | Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), hardwareName("Unknown"), moduleOwner(NULL), status(newSatus), attached(false), dhcp(false), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"){ |
20 | refresh(); | 20 | refresh(); |
21 | } | 21 | } |
22 | 22 | ||
23 | /** | 23 | /** |
24 | * Set status | 24 | * Set status |
25 | * @param newStatus - the new status | 25 | * @param newStatus - the new status |
26 | * emit updateInterface | 26 | * emit updateInterface |
27 | */ | 27 | */ |
28 | void Interface::setStatus(bool newStatus){ | 28 | void Interface::setStatus(bool newStatus){ |
29 | if(status != newStatus){ | 29 | if(status != newStatus){ |
30 | status = newStatus; | 30 | status = newStatus; |
31 | refresh(); | 31 | refresh(); |
32 | } | 32 | } |
33 | }; | 33 | }; |
34 | 34 | ||
35 | /** | 35 | /** |
36 | * Set if attached or not (802.11 card pulled out for example) | 36 | * Set if attached or not (802.11 card pulled out for example) |
37 | * @param isAttached - if attached | 37 | * @param isAttached - if attached |
38 | * emit updateInterface | 38 | * emit updateInterface |
39 | */ | 39 | */ |
40 | void Interface::setAttached(bool isAttached){ | 40 | void Interface::setAttached(bool isAttached){ |
41 | attached = isAttached; | 41 | attached = isAttached; |
42 | emit(updateInterface(this)); | 42 | emit(updateInterface(this)); |
43 | }; | 43 | }; |
44 | 44 | ||
45 | /** | 45 | /** |
46 | * Set Hardware name | 46 | * Set Hardware name |
47 | * @param name - the new name | 47 | * @param name - the new name |
48 | * emit updateInterface | 48 | * emit updateInterface |
49 | */ | 49 | */ |
50 | void Interface::setHardwareName(const QString &name){ | 50 | void Interface::setHardwareName(const QString &name){ |
51 | hardwareName = name; | 51 | hardwareName = name; |
52 | emit(updateInterface(this)); | 52 | emit(updateInterface(this)); |
53 | }; | 53 | }; |
54 | 54 | ||
55 | /** | 55 | /** |
56 | * Set Module owner | 56 | * Set Module owner |
57 | * @param owner - the new owner | 57 | * @param owner - the new owner |
58 | * emit updateInterface | 58 | * emit updateInterface |
59 | */ | 59 | */ |
60 | void Interface::setModuleOwner(Module *owner){ | 60 | void Interface::setModuleOwner(Module *owner){ |
61 | moduleOwner = owner; | 61 | moduleOwner = owner; |
62 | emit(updateInterface(this)); | 62 | emit(updateInterface(this)); |
63 | }; | 63 | }; |
64 | 64 | ||
65 | 65 | ||
66 | /** | 66 | /** |
67 | * Try to start the interface. | 67 | * Try to start the interface. |
68 | */ | 68 | */ |
69 | void Interface::start(){ | 69 | void Interface::start(){ |
70 | // check to see if we are already running. | 70 | // check to see if we are already running. |
71 | if(true == status){ | 71 | if(true == status){ |
72 | emit (updateMessage("Unable to start interface,\n already started")); | 72 | emit (updateMessage("Unable to start interface,\n already started")); |
73 | return; | 73 | return; |
74 | } | 74 | } |
75 | 75 | ||
76 | int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1()); | 76 | int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1()); |
77 | // See if it was successfull... | 77 | // See if it was successful... |
78 | if(ret != 0){ | 78 | if(ret != 0){ |
79 | emit (updateMessage("Starting interface failed")); | 79 | emit (updateMessage("Starting interface failed")); |
80 | return; | 80 | return; |
81 | } | 81 | } |
82 | 82 | ||
83 | status = true; | 83 | status = true; |
84 | refresh(); | 84 | refresh(); |
85 | emit (updateMessage("Start successfull")); | 85 | emit (updateMessage("Start successful")); |
86 | } | 86 | } |
87 | 87 | ||
88 | /** | 88 | /** |
89 | * Try to stop the interface. | 89 | * Try to stop the interface. |
90 | */ | 90 | */ |
91 | void Interface::stop(){ | 91 | void Interface::stop(){ |
92 | // check to see if we are already stopped. | 92 | // check to see if we are already stopped. |
93 | if(false == status){ | 93 | if(false == status){ |
94 | emit (updateMessage("Unable to stop interface,\n already stopped")); | 94 | emit (updateMessage("Unable to stop interface,\n already stopped")); |
95 | return; | 95 | return; |
96 | } | 96 | } |
97 | 97 | ||
98 | int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1()); | 98 | int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1()); |
99 | if(ret != 0){ | 99 | if(ret != 0){ |
100 | emit (updateMessage("Stopping interface failed")); | 100 | emit (updateMessage("Stopping interface failed")); |
101 | return; | 101 | return; |
102 | } | 102 | } |
103 | 103 | ||
104 | status = false; | 104 | status = false; |
105 | refresh(); | 105 | refresh(); |
106 | emit (updateMessage("Stop successfull")); | 106 | emit (updateMessage("Stop successful")); |
107 | } | 107 | } |
108 | 108 | ||
109 | /** | 109 | /** |
110 | * Try to restart the interface. | 110 | * Try to restart the interface. |
111 | */ | 111 | */ |
112 | void Interface::restart(){ | 112 | void Interface::restart(){ |
113 | stop(); | 113 | stop(); |
114 | start(); | 114 | start(); |
115 | } | 115 | } |
116 | 116 | ||
117 | /** | 117 | /** |
118 | * Try to refresh the information about the interface. | 118 | * Try to refresh the information about the interface. |
119 | * First call ifconfig, then check the dhcp-info file | 119 | * First call ifconfig, then check the dhcp-info file |
120 | * @return bool true if successfull. | 120 | * @return bool true if successful. |
121 | */ | 121 | */ |
122 | bool Interface::refresh(){ | 122 | bool Interface::refresh(){ |
123 | // See if we are up. | 123 | // See if we are up. |
124 | if(status == false){ | 124 | if(status == false){ |
125 | macAddress = ""; | 125 | macAddress = ""; |
126 | ip = "0.0.0.0"; | 126 | ip = "0.0.0.0"; |
127 | subnetMask = "0.0.0.0"; | 127 | subnetMask = "0.0.0.0"; |
128 | broadcast = ""; | 128 | broadcast = ""; |
129 | dhcp = false; | 129 | dhcp = false; |
130 | dhcpServerIp = ""; | 130 | dhcpServerIp = ""; |
131 | leaseObtained = ""; | 131 | leaseObtained = ""; |
132 | leaseExpires = ""; | 132 | leaseExpires = ""; |
133 | emit(updateInterface(this)); | 133 | emit(updateInterface(this)); |
134 | return true; | 134 | return true; |
135 | } | 135 | } |
136 | 136 | ||
137 | QString fileName = QString("/tmp/%1_ifconfig_info").arg(this->name()); | 137 | QString fileName = QString("/tmp/%1_ifconfig_info").arg(this->name()); |
138 | int ret = system(QString("LANG=C %1 %2 > %3").arg(IFCONFIG).arg(this->name()).arg(fileName).latin1()); | 138 | int ret = system(QString("LANG=C %1 %2 > %3").arg(IFCONFIG).arg(this->name()).arg(fileName).latin1()); |
139 | if(ret != 0){ | 139 | if(ret != 0){ |
140 | qDebug(QString("Interface: Ifconfig return value: %1, is not 0").arg(ret).latin1()); | 140 | qDebug(QString("Interface: Ifconfig return value: %1, is not 0").arg(ret).latin1()); |
141 | return false; | 141 | return false; |
142 | } | 142 | } |
143 | 143 | ||
144 | QFile file(fileName); | 144 | QFile file(fileName); |
145 | if (!file.open(IO_ReadOnly)){ | 145 | if (!file.open(IO_ReadOnly)){ |
146 | qDebug(QString("Interface: Can't open file: %1").arg(fileName).latin1()); | 146 | qDebug(QString("Interface: Can't open file: %1").arg(fileName).latin1()); |
147 | return false; | 147 | return false; |
148 | } | 148 | } |
149 | 149 | ||
150 | // Set to the defaults | 150 | // Set to the defaults |
151 | macAddress = ""; | 151 | macAddress = ""; |
152 | ip = "0.0.0.0"; | 152 | ip = "0.0.0.0"; |
153 | subnetMask = "0.0.0.0"; | 153 | subnetMask = "0.0.0.0"; |
154 | broadcast = ""; | 154 | broadcast = ""; |
155 | 155 | ||
156 | QTextStream stream( &file ); | 156 | QTextStream stream( &file ); |
157 | QString line; | 157 | QString line; |
158 | while ( !stream.eof() ) { | 158 | while ( !stream.eof() ) { |
159 | line = stream.readLine(); | 159 | line = stream.readLine(); |
160 | if(line.contains("HWaddr")){ | 160 | if(line.contains("HWaddr")){ |
161 | int mac = line.find("HWaddr"); | 161 | int mac = line.find("HWaddr"); |
162 | macAddress = line.mid(mac+7, line.length()); | 162 | macAddress = line.mid(mac+7, line.length()); |
163 | } | 163 | } |
164 | if(line.contains("inet addr")){ | 164 | if(line.contains("inet addr")){ |
165 | int ipl = line.find("inet addr"); | 165 | int ipl = line.find("inet addr"); |
166 | int space = line.find(" ", ipl+10); | 166 | int space = line.find(" ", ipl+10); |
167 | ip = line.mid(ipl+10, space-ipl-10); | 167 | ip = line.mid(ipl+10, space-ipl-10); |
168 | } | 168 | } |
169 | if(line.contains("Mask")){ | 169 | if(line.contains("Mask")){ |
170 | int mask = line.find("Mask"); | 170 | int mask = line.find("Mask"); |
171 | subnetMask = line.mid(mask+5, line.length()); | 171 | subnetMask = line.mid(mask+5, line.length()); |
172 | } | 172 | } |
173 | if(line.contains("Bcast")){ | 173 | if(line.contains("Bcast")){ |
174 | int mask = line.find("Bcast"); | 174 | int mask = line.find("Bcast"); |
175 | int space = line.find(" ", mask+6); | 175 | int space = line.find(" ", mask+6); |
176 | broadcast = line.mid(mask+6, space-mask-6); | 176 | broadcast = line.mid(mask+6, space-mask-6); |
177 | } | 177 | } |
178 | } | 178 | } |
179 | file.close(); | 179 | file.close(); |
180 | QFile::remove(fileName); | 180 | QFile::remove(fileName); |
181 | 181 | ||
182 | // DHCP TESTING | 182 | // DHCP TESTING |
183 | // reset DHCP info | 183 | // reset DHCP info |
184 | dhcpServerIp = ""; | 184 | dhcpServerIp = ""; |
185 | leaseObtained = ""; | 185 | leaseObtained = ""; |
186 | leaseExpires = ""; | 186 | leaseExpires = ""; |
187 | dhcp = false; | 187 | dhcp = false; |
188 | 188 | ||
189 | QString dhcpDirectory(DHCP_INFO_DIR); | 189 | QString dhcpDirectory(DHCP_INFO_DIR); |
190 | QDir d(dhcpDirectory); | 190 | QDir d(dhcpDirectory); |
191 | if(!d.exists(dhcpDirectory)) | 191 | if(!d.exists(dhcpDirectory)) |
192 | dhcpDirectory = "/var/run"; | 192 | dhcpDirectory = "/var/run"; |
193 | 193 | ||
194 | // See if we have | 194 | // See if we have |
195 | QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(this->name())); | 195 | QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(this->name())); |
196 | // If there is no DHCP information then exit now with no errors. | 196 | // If there is no DHCP information then exit now with no errors. |
197 | if(!QFile::exists(dhcpFile)){ | 197 | if(!QFile::exists(dhcpFile)){ |
198 | emit(updateInterface(this)); | 198 | emit(updateInterface(this)); |
199 | return true; | 199 | return true; |
200 | } | 200 | } |
201 | 201 | ||
202 | file.setName(dhcpFile); | 202 | file.setName(dhcpFile); |
203 | if (!file.open(IO_ReadOnly)){ | 203 | if (!file.open(IO_ReadOnly)){ |
204 | qDebug(QString("Interface: Can't open file: %1").arg(dhcpFile).latin1()); | 204 | qDebug(QString("Interface: Can't open file: %1").arg(dhcpFile).latin1()); |
205 | return false; | 205 | return false; |
206 | } | 206 | } |
207 | 207 | ||
208 | // leaseTime and renewalTime and used if pid and deamon exe can be accessed. | 208 | // leaseTime and renewalTime and used if pid and deamon exe can be accessed. |
209 | int leaseTime = 0; | 209 | int leaseTime = 0; |
210 | int renewalTime = 0; | 210 | int renewalTime = 0; |
211 | 211 | ||
212 | stream.setDevice( &file ); | 212 | stream.setDevice( &file ); |
213 | while ( !stream.eof() ) { | 213 | while ( !stream.eof() ) { |
214 | line = stream.readLine(); | 214 | line = stream.readLine(); |
215 | if(line.contains("DHCPSIADDR=")) | 215 | if(line.contains("DHCPSIADDR=")) |
216 | dhcpServerIp = line.mid(11, line.length()); | 216 | dhcpServerIp = line.mid(11, line.length()); |
diff --git a/noncore/settings/networksettings/interfaces/interfaces.cpp b/noncore/settings/networksettings/interfaces/interfaces.cpp index 436e449..6b161ae 100644 --- a/noncore/settings/networksettings/interfaces/interfaces.cpp +++ b/noncore/settings/networksettings/interfaces/interfaces.cpp | |||
@@ -1,712 +1,712 @@ | |||
1 | #include "interfaces.h" | 1 | #include "interfaces.h" |
2 | 2 | ||
3 | #include <qcheckbox.h> | 3 | #include <qcheckbox.h> |
4 | #include <qfile.h> | 4 | #include <qfile.h> |
5 | #include <qtextstream.h> | 5 | #include <qtextstream.h> |
6 | #include <qregexp.h> | 6 | #include <qregexp.h> |
7 | 7 | ||
8 | // The three stanza's | 8 | // The three stanza's |
9 | #define AUTO "auto" | 9 | #define AUTO "auto" |
10 | #define IFACE "iface" | 10 | #define IFACE "iface" |
11 | #define MAPPING "mapping" | 11 | #define MAPPING "mapping" |
12 | 12 | ||
13 | /** | 13 | /** |
14 | * Constructor. Reads in the interfaces file and then split the file up by | 14 | * Constructor. Reads in the interfaces file and then split the file up by |
15 | * the \n for interfaces variable. | 15 | * the \n for interfaces variable. |
16 | * @param useInterfacesFile if an interface file other then the default is | 16 | * @param useInterfacesFile if an interface file other then the default is |
17 | * desired to be used it should be passed in. | 17 | * desired to be used it should be passed in. |
18 | */ | 18 | */ |
19 | Interfaces::Interfaces(QString useInterfacesFile){ | 19 | Interfaces::Interfaces(QString useInterfacesFile){ |
20 | acceptedFamily.append(INTERFACES_FAMILY_INET); | 20 | acceptedFamily.append(INTERFACES_FAMILY_INET); |
21 | acceptedFamily.append(INTERFACES_FAMILY_IPX); | 21 | acceptedFamily.append(INTERFACES_FAMILY_IPX); |
22 | acceptedFamily.append(INTERFACES_FAMILY_INET6); | 22 | acceptedFamily.append(INTERFACES_FAMILY_INET6); |
23 | 23 | ||
24 | interfacesFile = useInterfacesFile; | 24 | interfacesFile = useInterfacesFile; |
25 | QFile file(interfacesFile); | 25 | QFile file(interfacesFile); |
26 | if (!file.open(IO_ReadOnly)){ | 26 | if (!file.open(IO_ReadOnly)){ |
27 | qDebug("Interfaces: Can't open file: %s for reading.", interfacesFile.latin1() ); | 27 | qDebug("Interfaces: Can't open file: %s for reading.", interfacesFile.latin1() ); |
28 | currentIface = interfaces.end(); | 28 | currentIface = interfaces.end(); |
29 | currentMapping = interfaces.end(); | 29 | currentMapping = interfaces.end(); |
30 | return; | 30 | return; |
31 | } | 31 | } |
32 | QTextStream stream( &file ); | 32 | QTextStream stream( &file ); |
33 | QString line; | 33 | QString line; |
34 | while ( !stream.eof() ) { | 34 | while ( !stream.eof() ) { |
35 | line += stream.readLine(); | 35 | line += stream.readLine(); |
36 | line += "\n"; | 36 | line += "\n"; |
37 | } | 37 | } |
38 | file.close(); | 38 | file.close(); |
39 | interfaces = QStringList::split("\n", line, true); | 39 | interfaces = QStringList::split("\n", line, true); |
40 | 40 | ||
41 | currentIface = interfaces.end(); | 41 | currentIface = interfaces.end(); |
42 | currentMapping = interfaces.end(); | 42 | currentMapping = interfaces.end(); |
43 | } | 43 | } |
44 | 44 | ||
45 | 45 | ||
46 | /** | 46 | /** |
47 | * Get a list of all interfaces in the interface file. Usefull for | 47 | * Get a list of all interfaces in the interface file. Useful for |
48 | * hardware that is not currently connected such as an 802.11b card | 48 | * hardware that is not currently connected such as an 802.11b card |
49 | * not plugged in, but configured for when it is plugged in. | 49 | * not plugged in, but configured for when it is plugged in. |
50 | * @return Return string list of interfaces. | 50 | * @return Return string list of interfaces. |
51 | **/ | 51 | **/ |
52 | QStringList Interfaces::getInterfaceList(){ | 52 | QStringList Interfaces::getInterfaceList(){ |
53 | QStringList list; | 53 | QStringList list; |
54 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { | 54 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { |
55 | QString line = (*it).simplifyWhiteSpace(); | 55 | QString line = (*it).simplifyWhiteSpace(); |
56 | if(line.contains(IFACE) && line.at(0) != '#'){ | 56 | if(line.contains(IFACE) && line.at(0) != '#'){ |
57 | line = line.mid(QString(IFACE).length() +1, line.length()); | 57 | line = line.mid(QString(IFACE).length() +1, line.length()); |
58 | line = line.simplifyWhiteSpace(); | 58 | line = line.simplifyWhiteSpace(); |
59 | int findSpace = line.find(" "); | 59 | int findSpace = line.find(" "); |
60 | if( findSpace >= 0){ | 60 | if( findSpace >= 0){ |
61 | line = line.mid(0, findSpace); | 61 | line = line.mid(0, findSpace); |
62 | list.append(line); | 62 | list.append(line); |
63 | } | 63 | } |
64 | } | 64 | } |
65 | } | 65 | } |
66 | return list; | 66 | return list; |
67 | } | 67 | } |
68 | 68 | ||
69 | /** | 69 | /** |
70 | * Find out if interface is in an "auto" group or not. | 70 | * Find out if interface is in an "auto" group or not. |
71 | * Report any duplicates such as eth0 being in two differnt auto's | 71 | * Report any duplicates such as eth0 being in two differnt auto's |
72 | * @param interface interface to check to see if it is on or not. | 72 | * @param interface interface to check to see if it is on or not. |
73 | * @return true is interface is in auto | 73 | * @return true is interface is in auto |
74 | */ | 74 | */ |
75 | bool Interfaces::isAuto(const QString &interface) const { | 75 | bool Interfaces::isAuto(const QString &interface) const { |
76 | QStringList autoLines = interfaces.grep(QRegExp(AUTO)); | 76 | QStringList autoLines = interfaces.grep(QRegExp(AUTO)); |
77 | QStringList awi = autoLines.grep(QRegExp(interface)); | 77 | QStringList awi = autoLines.grep(QRegExp(interface)); |
78 | if(awi.count() > 1) | 78 | if(awi.count() > 1) |
79 | qDebug(QString("Interfaces: Found more then auto group with interface: %1.").arg(interface).latin1()); | 79 | qDebug(QString("Interfaces: Found more then auto group with interface: %1.").arg(interface).latin1()); |
80 | return awi.count() > 0; | 80 | return awi.count() > 0; |
81 | } | 81 | } |
82 | 82 | ||
83 | /** | 83 | /** |
84 | * Attempt to set the auto option for interface to setAuto. | 84 | * Attempt to set the auto option for interface to setAuto. |
85 | * @param interface the interface to set | 85 | * @param interface the interface to set |
86 | * @param setAuto the value to set interface to. | 86 | * @param setAuto the value to set interface to. |
87 | * @return false if already set to setAuto. | 87 | * @return false if already set to setAuto. |
88 | * */ | 88 | * */ |
89 | bool Interfaces::setAuto(const QString &interface, bool setAuto){ | 89 | bool Interfaces::setAuto(const QString &interface, bool setAuto){ |
90 | // Don't need to set it if it is already set. | 90 | // Don't need to set it if it is already set. |
91 | if(isAuto(interface) == setAuto) | 91 | if(isAuto(interface) == setAuto) |
92 | return false; | 92 | return false; |
93 | 93 | ||
94 | bool changed = false; | 94 | bool changed = false; |
95 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { | 95 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { |
96 | if((*it).contains(AUTO)){ | 96 | if((*it).contains(AUTO)){ |
97 | //We know that they are not in any group so let add to this auto. | 97 | //We know that they are not in any group so let add to this auto. |
98 | if(setAuto){ | 98 | if(setAuto){ |
99 | (*it) = (*it) += " " + interface; | 99 | (*it) = (*it) += " " + interface; |
100 | // Don't care to have such thins as: auto eth0 lo usb0 | 100 | // Don't care to have such thins as: auto eth0 lo usb0 |
101 | (*it) = (*it).simplifyWhiteSpace(); | 101 | (*it) = (*it).simplifyWhiteSpace(); |
102 | changed = true; | 102 | changed = true; |
103 | break; | 103 | break; |
104 | } | 104 | } |
105 | // else see if we need to remove from this one | 105 | // else see if we need to remove from this one |
106 | else{ | 106 | else{ |
107 | if((*it).contains(interface)){ | 107 | if((*it).contains(interface)){ |
108 | (*it) = (*it).replace(QRegExp(interface), ""); | 108 | (*it) = (*it).replace(QRegExp(interface), ""); |
109 | // if AUTO is the only thing left clear the line | 109 | // if AUTO is the only thing left clear the line |
110 | if(((*it).simplifyWhiteSpace()).replace(QRegExp(" "),"") == AUTO) | 110 | if(((*it).simplifyWhiteSpace()).replace(QRegExp(" "),"") == AUTO) |
111 | (*it) = ""; | 111 | (*it) = ""; |
112 | changed = true; | 112 | changed = true; |
113 | // Don't break because we want to make sure we remove all cases. | 113 | // Don't break because we want to make sure we remove all cases. |
114 | } | 114 | } |
115 | } | 115 | } |
116 | } | 116 | } |
117 | } | 117 | } |
118 | // In the case where there is no AUTO field add one. | 118 | // In the case where there is no AUTO field add one. |
119 | if(!changed && setAuto) | 119 | if(!changed && setAuto) |
120 | interfaces.append(QString(AUTO" %1").arg(interface)); | 120 | interfaces.append(QString(AUTO" %1").arg(interface)); |
121 | return true; | 121 | return true; |
122 | } | 122 | } |
123 | 123 | ||
124 | /** | 124 | /** |
125 | * Set the current interface to interface. This needs to be done before you | 125 | * Set the current interface to interface. This needs to be done before you |
126 | * can call getFamily(), getMethod, and get/setOption(). | 126 | * can call getFamily(), getMethod, and get/setOption(). |
127 | * @param interface the name of the interface to set. All whitespace is | 127 | * @param interface the name of the interface to set. All whitespace is |
128 | * removed from the interface name. | 128 | * removed from the interface name. |
129 | * @return bool true if it is successfull. | 129 | * @return bool true if it is successful. |
130 | */ | 130 | */ |
131 | bool Interfaces::setInterface(QString interface){ | 131 | bool Interfaces::setInterface(QString interface){ |
132 | interface = interface.simplifyWhiteSpace(); | 132 | interface = interface.simplifyWhiteSpace(); |
133 | interface = interface.replace(QRegExp(" "), ""); | 133 | interface = interface.replace(QRegExp(" "), ""); |
134 | return setStanza(IFACE, interface, currentIface); | 134 | return setStanza(IFACE, interface, currentIface); |
135 | } | 135 | } |
136 | 136 | ||
137 | /** | 137 | /** |
138 | * A quick helper funtion to see if the current interface is set. | 138 | * A quick helper funtion to see if the current interface is set. |
139 | * @return bool true if set, false otherwise. | 139 | * @return bool true if set, false otherwise. |
140 | */ | 140 | */ |
141 | bool Interfaces::isInterfaceSet() const { | 141 | bool Interfaces::isInterfaceSet() const { |
142 | return (interfaces.end() != currentIface); | 142 | return (interfaces.end() != currentIface); |
143 | } | 143 | } |
144 | 144 | ||
145 | /** | 145 | /** |
146 | * Add a new interface of with the settings - family and method | 146 | * Add a new interface of with the settings - family and method |
147 | * @param interface the name of the interface to set. All whitespace is | 147 | * @param interface the name of the interface to set. All whitespace is |
148 | * removed from the interface name. | 148 | * removed from the interface name. |
149 | * @param family the family of this interface inet or inet, ipx or inet6 | 149 | * @param family the family of this interface inet or inet, ipx or inet6 |
150 | * Must of one of the families defined in interfaces.h | 150 | * Must of one of the families defined in interfaces.h |
151 | * @param method for the family. see interfaces man page for family methods. | 151 | * @param method for the family. see interfaces man page for family methods. |
152 | * @return true if successfull. | 152 | * @return true if successful. |
153 | */ | 153 | */ |
154 | bool Interfaces::addInterface(const QString &interface, const QString &family, const QString &method){ | 154 | bool Interfaces::addInterface(const QString &interface, const QString &family, const QString &method){ |
155 | qDebug("Interfaces::addInterface(%s)",interface.latin1()); | 155 | qDebug("Interfaces::addInterface(%s)",interface.latin1()); |
156 | if(0 == acceptedFamily.contains(family)) | 156 | if(0 == acceptedFamily.contains(family)) |
157 | return false; | 157 | return false; |
158 | QString newInterface = interface.simplifyWhiteSpace(); | 158 | QString newInterface = interface.simplifyWhiteSpace(); |
159 | newInterface = newInterface.replace(QRegExp(" "), ""); | 159 | newInterface = newInterface.replace(QRegExp(" "), ""); |
160 | interfaces.append(""); | 160 | interfaces.append(""); |
161 | interfaces.append(QString(IFACE " %1 %2 %3").arg(newInterface).arg(family).arg(method)); | 161 | interfaces.append(QString(IFACE " %1 %2 %3").arg(newInterface).arg(family).arg(method)); |
162 | return true; | 162 | return true; |
163 | } | 163 | } |
164 | 164 | ||
165 | /** | 165 | /** |
166 | * Copies interface with name interface to name newInterface | 166 | * Copies interface with name interface to name newInterface |
167 | * @param newInterface name of the new interface. | 167 | * @param newInterface name of the new interface. |
168 | * @return bool true if successfull | 168 | * @return bool true if successful |
169 | */ | 169 | */ |
170 | bool Interfaces::copyInterface(const QString &interface, const QString &newInterface){ | 170 | bool Interfaces::copyInterface(const QString &interface, const QString &newInterface){ |
171 | qDebug("copy interface %s to %s", interface.latin1(), newInterface.latin1()); | 171 | qDebug("copy interface %s to %s", interface.latin1(), newInterface.latin1()); |
172 | if(!setInterface(interface)) | 172 | if(!setInterface(interface)) |
173 | return false; | 173 | return false; |
174 | 174 | ||
175 | // Store the old interface and bump past the stanza line. | 175 | // Store the old interface and bump past the stanza line. |
176 | QStringList::Iterator it = currentIface; | 176 | QStringList::Iterator it = currentIface; |
177 | it++; | 177 | it++; |
178 | 178 | ||
179 | // Add the new interface | 179 | // Add the new interface |
180 | bool error; | 180 | bool error; |
181 | addInterface(newInterface, getInterfaceFamily(error), getInterfaceMethod(error)); | 181 | addInterface(newInterface, getInterfaceFamily(error), getInterfaceMethod(error)); |
182 | if(!setInterface(newInterface)) | 182 | if(!setInterface(newInterface)) |
183 | return false; | 183 | return false; |
184 | 184 | ||
185 | QStringList::Iterator newIface = currentIface; | 185 | QStringList::Iterator newIface = currentIface; |
186 | newIface++; | 186 | newIface++; |
187 | 187 | ||
188 | // Copy all of the lines | 188 | // Copy all of the lines |
189 | for ( ; it != interfaces.end(); ++it ){ | 189 | for ( ; it != interfaces.end(); ++it ){ |
190 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO))) | 190 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO))) |
191 | break; | 191 | break; |
192 | newIface = interfaces.insert(newIface, *it); | 192 | newIface = interfaces.insert(newIface, *it); |
193 | } | 193 | } |
194 | 194 | ||
195 | return true; | 195 | return true; |
196 | } | 196 | } |
197 | 197 | ||
198 | /** | 198 | /** |
199 | * Remove the currently selected interface and all of its options. | 199 | * Remove the currently selected interface and all of its options. |
200 | * @return bool if successfull or not. | 200 | * @return bool if successful or not. |
201 | */ | 201 | */ |
202 | bool Interfaces::removeInterface(){ | 202 | bool Interfaces::removeInterface(){ |
203 | return removeStanza(currentIface); | 203 | return removeStanza(currentIface); |
204 | } | 204 | } |
205 | 205 | ||
206 | /** | 206 | /** |
207 | * Gets the hardware name of the interface that is currently selected. | 207 | * Gets the hardware name of the interface that is currently selected. |
208 | * @return QString name of the hardware interface (eth0, usb2, wlan1...). | 208 | * @return QString name of the hardware interface (eth0, usb2, wlan1...). |
209 | * @param error set to true if any error occurs, false otherwise. | 209 | * @param error set to true if any error occurs, false otherwise. |
210 | */ | 210 | */ |
211 | QString Interfaces::getInterfaceName(bool &error){ | 211 | QString Interfaces::getInterfaceName(bool &error){ |
212 | if(currentIface == interfaces.end()){ | 212 | if(currentIface == interfaces.end()){ |
213 | error = true; | 213 | error = true; |
214 | return QString(); | 214 | return QString(); |
215 | } | 215 | } |
216 | QString line = (*currentIface); | 216 | QString line = (*currentIface); |
217 | line = line.mid(QString(IFACE).length() +1, line.length()); | 217 | line = line.mid(QString(IFACE).length() +1, line.length()); |
218 | line = line.simplifyWhiteSpace(); | 218 | line = line.simplifyWhiteSpace(); |
219 | int findSpace = line.find(" "); | 219 | int findSpace = line.find(" "); |
220 | if( findSpace < 0){ | 220 | if( findSpace < 0){ |
221 | error = true; | 221 | error = true; |
222 | return QString(); | 222 | return QString(); |
223 | } | 223 | } |
224 | error = false; | 224 | error = false; |
225 | return line.mid(0, findSpace); | 225 | return line.mid(0, findSpace); |
226 | } | 226 | } |
227 | 227 | ||
228 | /** | 228 | /** |
229 | * Gets the family name of the interface that is currently selected. | 229 | * Gets the family name of the interface that is currently selected. |
230 | * @return QString name of the family (inet, inet6, ipx). | 230 | * @return QString name of the family (inet, inet6, ipx). |
231 | * @param error set to true if any error occurs, false otherwise. | 231 | * @param error set to true if any error occurs, false otherwise. |
232 | */ | 232 | */ |
233 | QString Interfaces::getInterfaceFamily(bool &error){ | 233 | QString Interfaces::getInterfaceFamily(bool &error){ |
234 | QString name = getInterfaceName(error); | 234 | QString name = getInterfaceName(error); |
235 | if(error) | 235 | if(error) |
236 | return QString(); | 236 | return QString(); |
237 | QString line = (*currentIface); | 237 | QString line = (*currentIface); |
238 | line = line.mid(QString(IFACE).length() +1, line.length()); | 238 | line = line.mid(QString(IFACE).length() +1, line.length()); |
239 | line = line.mid(name.length()+1, line.length()); | 239 | line = line.mid(name.length()+1, line.length()); |
240 | line = line.simplifyWhiteSpace(); | 240 | line = line.simplifyWhiteSpace(); |
241 | int findSpace = line.find(" "); | 241 | int findSpace = line.find(" "); |
242 | if( findSpace < 0){ | 242 | if( findSpace < 0){ |
243 | error = true; | 243 | error = true; |
244 | return QString(); | 244 | return QString(); |
245 | } | 245 | } |
246 | error = false; | 246 | error = false; |
247 | return line.mid(0, findSpace); | 247 | return line.mid(0, findSpace); |
248 | } | 248 | } |
249 | 249 | ||
250 | /** | 250 | /** |
251 | * Gets the method of the interface that is currently selected. | 251 | * Gets the method of the interface that is currently selected. |
252 | * @return QString name of the method such as staic or dhcp. | 252 | * @return QString name of the method such as staic or dhcp. |
253 | * See the man page of interfaces for possible methods depending on the family. | 253 | * See the man page of interfaces for possible methods depending on the family. |
254 | * @param error set to true if any error occurs, false otherwise. | 254 | * @param error set to true if any error occurs, false otherwise. |
255 | */ | 255 | */ |
256 | QString Interfaces::getInterfaceMethod(bool &error){ | 256 | QString Interfaces::getInterfaceMethod(bool &error){ |
257 | QString name = getInterfaceName(error); | 257 | QString name = getInterfaceName(error); |
258 | if(error) | 258 | if(error) |
259 | return QString(); | 259 | return QString(); |
260 | QString family = getInterfaceFamily(error); | 260 | QString family = getInterfaceFamily(error); |
261 | if(error) | 261 | if(error) |
262 | return QString(); | 262 | return QString(); |
263 | QString line = (*currentIface); | 263 | QString line = (*currentIface); |
264 | line = line.mid(QString(IFACE).length()+1, line.length()); | 264 | line = line.mid(QString(IFACE).length()+1, line.length()); |
265 | line = line.mid(name.length()+1, line.length()); | 265 | line = line.mid(name.length()+1, line.length()); |
266 | line = line.mid(family.length()+1, line.length()); | 266 | line = line.mid(family.length()+1, line.length()); |
267 | line = line.simplifyWhiteSpace(); | 267 | line = line.simplifyWhiteSpace(); |
268 | error = false; | 268 | error = false; |
269 | return line; | 269 | return line; |
270 | } | 270 | } |
271 | 271 | ||
272 | /** | 272 | /** |
273 | * Sets the interface name to newName. | 273 | * Sets the interface name to newName. |
274 | * @param newName the new name of the interface. All whitespace is removed. | 274 | * @param newName the new name of the interface. All whitespace is removed. |
275 | * @return bool true if successfull. | 275 | * @return bool true if successful. |
276 | */ | 276 | */ |
277 | bool Interfaces::setInterfaceName(const QString &newName){ | 277 | bool Interfaces::setInterfaceName(const QString &newName){ |
278 | qDebug("setInterfaceName %s", newName.latin1()); | 278 | qDebug("setInterfaceName %s", newName.latin1()); |
279 | if(currentIface == interfaces.end()) | 279 | if(currentIface == interfaces.end()) |
280 | return false; | 280 | return false; |
281 | QString name = newName.simplifyWhiteSpace(); | 281 | QString name = newName.simplifyWhiteSpace(); |
282 | name = name.replace(QRegExp(" "), ""); | 282 | name = name.replace(QRegExp(" "), ""); |
283 | bool returnValue = false; | 283 | bool returnValue = false; |
284 | QString tmp = QString("iface %1 %2 %3").arg(name).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue)); | 284 | QString tmp = QString("iface %1 %2 %3").arg(name).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue)); |
285 | qDebug("setting %s",tmp.latin1()); | 285 | qDebug("setting %s",tmp.latin1()); |
286 | 286 | ||
287 | (*currentIface) = tmp; | 287 | (*currentIface) = tmp; |
288 | return !returnValue; | 288 | return !returnValue; |
289 | } | 289 | } |
290 | 290 | ||
291 | /** | 291 | /** |
292 | * Sets the interface family to newName. | 292 | * Sets the interface family to newName. |
293 | * @param newName the new name of the interface. Must be one of the families | 293 | * @param newName the new name of the interface. Must be one of the families |
294 | * defined in the interfaces.h file. | 294 | * defined in the interfaces.h file. |
295 | * @return bool true if successfull. | 295 | * @return bool true if successful. |
296 | */ | 296 | */ |
297 | bool Interfaces::setInterfaceFamily(const QString &newName){ | 297 | bool Interfaces::setInterfaceFamily(const QString &newName){ |
298 | if(currentIface == interfaces.end()) | 298 | if(currentIface == interfaces.end()) |
299 | return false; | 299 | return false; |
300 | if(acceptedFamily.contains(newName)==0) | 300 | if(acceptedFamily.contains(newName)==0) |
301 | return false; | 301 | return false; |
302 | bool returnValue = false; | 302 | bool returnValue = false; |
303 | (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(newName).arg(getInterfaceMethod(returnValue)); | 303 | (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(newName).arg(getInterfaceMethod(returnValue)); |
304 | return !returnValue; | 304 | return !returnValue; |
305 | } | 305 | } |
306 | 306 | ||
307 | /** | 307 | /** |
308 | * Sets the interface method to newName | 308 | * Sets the interface method to newName |
309 | * @param newName the new name of the interface | 309 | * @param newName the new name of the interface |
310 | * @return bool true if successfull. | 310 | * @return bool true if successful. |
311 | */ | 311 | */ |
312 | bool Interfaces::setInterfaceMethod(const QString &newName){ | 312 | bool Interfaces::setInterfaceMethod(const QString &newName){ |
313 | if(currentIface == interfaces.end()) | 313 | if(currentIface == interfaces.end()) |
314 | return false; | 314 | return false; |
315 | bool returnValue = false; | 315 | bool returnValue = false; |
316 | (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(getInterfaceFamily(returnValue)).arg(newName); | 316 | (*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(getInterfaceFamily(returnValue)).arg(newName); |
317 | return !returnValue; | 317 | return !returnValue; |
318 | } | 318 | } |
319 | 319 | ||
320 | /** | 320 | /** |
321 | * Get a value for an option in the currently selected interface. For example | 321 | * Get a value for an option in the currently selected interface. For example |
322 | * calling getInterfaceOption("address") on the following stanza would | 322 | * calling getInterfaceOption("address") on the following stanza would |
323 | * return 192.168.1.1. | 323 | * return 192.168.1.1. |
324 | * iface eth0 static | 324 | * iface eth0 static |
325 | * address 192.168.1.1 | 325 | * address 192.168.1.1 |
326 | * @param option the options to get the value. | 326 | * @param option the options to get the value. |
327 | * @param error set to true if any error occurs, false otherwise. | 327 | * @param error set to true if any error occurs, false otherwise. |
328 | * @return QString the options value. QString::null if error == true | 328 | * @return QString the options value. QString::null if error == true |
329 | */ | 329 | */ |
330 | QString Interfaces::getInterfaceOption(const QString &option, bool &error){ | 330 | QString Interfaces::getInterfaceOption(const QString &option, bool &error){ |
331 | return getOption(currentIface, option, error); | 331 | return getOption(currentIface, option, error); |
332 | } | 332 | } |
333 | 333 | ||
334 | /** | 334 | /** |
335 | * Set a value for an option in the currently selected interface. If option | 335 | * Set a value for an option in the currently selected interface. If option |
336 | * doesn't exist then it is added along with the value. | 336 | * doesn't exist then it is added along with the value. |
337 | * If value isEmpty() then we will remove the option | 337 | * If value isEmpty() then we will remove the option |
338 | * | 338 | * |
339 | * @param option the options to set the value. | 339 | * @param option the options to set the value. |
340 | * @param value the value that option should be set to. | 340 | * @param value the value that option should be set to. |
341 | * @param error set to true if any error occurs, false otherwise. | 341 | * @param error set to true if any error occurs, false otherwise. |
342 | * @return QString the options value. QString::null if error == true | 342 | * @return QString the options value. QString::null if error == true |
343 | */ | 343 | */ |
344 | bool Interfaces::setInterfaceOption(const QString &option, const QString &value){ | 344 | bool Interfaces::setInterfaceOption(const QString &option, const QString &value){ |
345 | if( value.stripWhiteSpace().isEmpty() ) | 345 | if( value.stripWhiteSpace().isEmpty() ) |
346 | return removeInterfaceOption( option ); | 346 | return removeInterfaceOption( option ); |
347 | 347 | ||
348 | qDebug("iface >%s< option >%s< value >%s<", (*currentIface).latin1(), option.latin1(),value.latin1()); | 348 | qDebug("iface >%s< option >%s< value >%s<", (*currentIface).latin1(), option.latin1(),value.latin1()); |
349 | return setOption(currentIface, option, value); | 349 | return setOption(currentIface, option, value); |
350 | } | 350 | } |
351 | 351 | ||
352 | /** | 352 | /** |
353 | * Removes a value for an option in the currently selected interface. | 353 | * Removes a value for an option in the currently selected interface. |
354 | * @param option the options to set the value. | 354 | * @param option the options to set the value. |
355 | * @param error set to true if any error occurs, false otherwise. | 355 | * @param error set to true if any error occurs, false otherwise. |
356 | * @return QString the options value. QString::null if error == true | 356 | * @return QString the options value. QString::null if error == true |
357 | */ | 357 | */ |
358 | bool Interfaces::removeInterfaceOption(const QString &option){ | 358 | bool Interfaces::removeInterfaceOption(const QString &option){ |
359 | return removeOption(currentIface, option); | 359 | return removeOption(currentIface, option); |
360 | } | 360 | } |
361 | 361 | ||
362 | /** | 362 | /** |
363 | * Removes a value for an option in the currently selected interface. | 363 | * Removes a value for an option in the currently selected interface. |
364 | * @param option the options to set the value. | 364 | * @param option the options to set the value. |
365 | * @param value the value that option should be set to. | 365 | * @param value the value that option should be set to. |
366 | * @param error set to true if any error occurs, false otherwise. | 366 | * @param error set to true if any error occurs, false otherwise. |
367 | * @return QString the options value. QString::null if error == true | 367 | * @return QString the options value. QString::null if error == true |
368 | */ | 368 | */ |
369 | bool Interfaces::removeInterfaceOption(const QString &option, const QString &value){ | 369 | bool Interfaces::removeInterfaceOption(const QString &option, const QString &value){ |
370 | return removeOption(currentIface, option, value); | 370 | return removeOption(currentIface, option, value); |
371 | } | 371 | } |
372 | 372 | ||
373 | /** | 373 | /** |
374 | * Removes all of the options from the currently selected interface. | 374 | * Removes all of the options from the currently selected interface. |
375 | * @return bool error if if successfull | 375 | * @return bool error if if successful |
376 | */ | 376 | */ |
377 | bool Interfaces::removeAllInterfaceOptions(){ | 377 | bool Interfaces::removeAllInterfaceOptions(){ |
378 | return removeAllOptions(currentIface); | 378 | return removeAllOptions(currentIface); |
379 | } | 379 | } |
380 | 380 | ||
381 | /** | 381 | /** |
382 | * Set the current map to interface's map. This needs to be done before you | 382 | * Set the current map to interface's map. This needs to be done before you |
383 | * can call addMapping(), set/getMap(), and get/setScript(). | 383 | * can call addMapping(), set/getMap(), and get/setScript(). |
384 | * @param interface the name of the interface to set. All whitespace is | 384 | * @param interface the name of the interface to set. All whitespace is |
385 | * removed from the interface name. | 385 | * removed from the interface name. |
386 | * @return bool true if it is successfull. | 386 | * @return bool true if it is successful. |
387 | */ | 387 | */ |
388 | bool Interfaces::setMapping(const QString &interface){ | 388 | bool Interfaces::setMapping(const QString &interface){ |
389 | QString interfaceName = interface.simplifyWhiteSpace(); | 389 | QString interfaceName = interface.simplifyWhiteSpace(); |
390 | interfaceName = interfaceName.replace(QRegExp(" "), ""); | 390 | interfaceName = interfaceName.replace(QRegExp(" "), ""); |
391 | return setStanza(MAPPING, interfaceName, currentMapping); | 391 | return setStanza(MAPPING, interfaceName, currentMapping); |
392 | } | 392 | } |
393 | 393 | ||
394 | /** | 394 | /** |
395 | * Adds a new Mapping to the interfaces file with interfaces. | 395 | * Adds a new Mapping to the interfaces file with interfaces. |
396 | * @param interface the name(s) of the interfaces to set to this mapping | 396 | * @param interface the name(s) of the interfaces to set to this mapping |
397 | */ | 397 | */ |
398 | void Interfaces::addMapping(const QString &option){ | 398 | void Interfaces::addMapping(const QString &option){ |
399 | interfaces.append(""); | 399 | interfaces.append(""); |
400 | interfaces.append(QString(MAPPING " %1").arg(option)); | 400 | interfaces.append(QString(MAPPING " %1").arg(option)); |
401 | } | 401 | } |
402 | 402 | ||
403 | /** | 403 | /** |
404 | * Remove the currently selected map and all of its options. | 404 | * Remove the currently selected map and all of its options. |
405 | * @return bool if successfull or not. | 405 | * @return bool if successful or not. |
406 | */ | 406 | */ |
407 | bool Interfaces::removeMapping(){ | 407 | bool Interfaces::removeMapping(){ |
408 | return removeStanza(currentMapping); | 408 | return removeStanza(currentMapping); |
409 | } | 409 | } |
410 | 410 | ||
411 | /** | 411 | /** |
412 | * Set a map option within a mapping. | 412 | * Set a map option within a mapping. |
413 | * @param map map to use | 413 | * @param map map to use |
414 | * @param value value to go with map | 414 | * @param value value to go with map |
415 | * @return bool true if it is successfull. | 415 | * @return bool true if it is successful. |
416 | */ | 416 | */ |
417 | bool Interfaces::setMap(const QString &map, const QString &value){ | 417 | bool Interfaces::setMap(const QString &map, const QString &value){ |
418 | return setOption(currentMapping, map, value); | 418 | return setOption(currentMapping, map, value); |
419 | } | 419 | } |
420 | 420 | ||
421 | /** | 421 | /** |
422 | * Removes a map option within a mapping. | 422 | * Removes a map option within a mapping. |
423 | * @param map map to use | 423 | * @param map map to use |
424 | * @param value value to go with map | 424 | * @param value value to go with map |
425 | * @return bool true if it is successfull. | 425 | * @return bool true if it is successful. |
426 | */ | 426 | */ |
427 | bool Interfaces::removeMap(const QString &map, const QString &value){ | 427 | bool Interfaces::removeMap(const QString &map, const QString &value){ |
428 | return removeOption(currentMapping, map, value); | 428 | return removeOption(currentMapping, map, value); |
429 | } | 429 | } |
430 | 430 | ||
431 | /** | 431 | /** |
432 | * Get a map value within a mapping. | 432 | * Get a map value within a mapping. |
433 | * @param map map to get value of | 433 | * @param map map to get value of |
434 | * @param bool true if it is successfull. | 434 | * @param bool true if it is successful. |
435 | * @return value that goes to the map | 435 | * @return value that goes to the map |
436 | */ | 436 | */ |
437 | QString Interfaces::getMap(const QString &map, bool &error){ | 437 | QString Interfaces::getMap(const QString &map, bool &error){ |
438 | return getOption(currentMapping, map, error); | 438 | return getOption(currentMapping, map, error); |
439 | } | 439 | } |
440 | 440 | ||
441 | /** | 441 | /** |
442 | * Sets a script value of the current mapping to argument. | 442 | * Sets a script value of the current mapping to argument. |
443 | * @param argument the script name. | 443 | * @param argument the script name. |
444 | * @return true if successfull. | 444 | * @return true if successful. |
445 | */ | 445 | */ |
446 | bool Interfaces::setScript(const QString &argument){ | 446 | bool Interfaces::setScript(const QString &argument){ |
447 | return setOption(currentMapping, "script", argument); | 447 | return setOption(currentMapping, "script", argument); |
448 | } | 448 | } |
449 | 449 | ||
450 | /** | 450 | /** |
451 | * @param error true if could not retrieve the current script argument. | 451 | * @param error true if could not retrieve the current script argument. |
452 | * @return QString the argument of the script for the current mapping. | 452 | * @return QString the argument of the script for the current mapping. |
453 | */ | 453 | */ |
454 | QString Interfaces::getScript(bool &error){ | 454 | QString Interfaces::getScript(bool &error){ |
455 | return getOption(currentMapping, "script", error); | 455 | return getOption(currentMapping, "script", error); |
456 | } | 456 | } |
457 | 457 | ||
458 | 458 | ||
459 | 459 | ||
460 | /** | 460 | /** |
461 | * Helper function used to parse through the QStringList and put pointers in | 461 | * Helper function used to parse through the QStringList and put pointers in |
462 | * the correct place. | 462 | * the correct place. |
463 | * @param stanza The stanza (auto, iface, mapping) to look for. | 463 | * @param stanza The stanza (auto, iface, mapping) to look for. |
464 | * @param option string that must be in the stanza's main line. | 464 | * @param option string that must be in the stanza's main line. |
465 | * @param interator interator to place at location of stanza if successfull. | 465 | * @param interator interator to place at location of stanza if successful. |
466 | * @return bool true if the stanza is found. | 466 | * @return bool true if the stanza is found. |
467 | */ | 467 | */ |
468 | bool Interfaces::setStanza(const QString &stanza, const QString &option, QStringList::Iterator &iterator){ | 468 | bool Interfaces::setStanza(const QString &stanza, const QString &option, QStringList::Iterator &iterator){ |
469 | bool found = false; | 469 | bool found = false; |
470 | iterator = interfaces.end(); | 470 | iterator = interfaces.end(); |
471 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { | 471 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { |
472 | QString line = (*it).simplifyWhiteSpace(); | 472 | QString line = (*it).simplifyWhiteSpace(); |
473 | if(line.contains(stanza) && line.contains(option) && line.at(0) != '#'){ | 473 | if(line.contains(stanza) && line.contains(option) && line.at(0) != '#'){ |
474 | uint point = line.find(option); | 474 | uint point = line.find(option); |
475 | bool valid = true; | 475 | bool valid = true; |
476 | if(point > 0){ | 476 | if(point > 0){ |
477 | // There are more chars in the line. check +1 | 477 | // There are more chars in the line. check +1 |
478 | if(line.at(point-1) != ' ') | 478 | if(line.at(point-1) != ' ') |
479 | valid = false; | 479 | valid = false; |
480 | } | 480 | } |
481 | point += option.length(); | 481 | point += option.length(); |
482 | if(point < line.length()-1){ | 482 | if(point < line.length()-1){ |
483 | // There are more chars in the line. check -1 | 483 | // There are more chars in the line. check -1 |
484 | if(line.at(point) != ' ') | 484 | if(line.at(point) != ' ') |
485 | valid = false; | 485 | valid = false; |
486 | } | 486 | } |
487 | if(valid){ | 487 | if(valid){ |
488 | if(found == true){ | 488 | if(found == true){ |
489 | qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1()); | 489 | qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1()); |
490 | } | 490 | } |
491 | found = true; | 491 | found = true; |
492 | iterator = it; | 492 | iterator = it; |
493 | } | 493 | } |
494 | } | 494 | } |
495 | } | 495 | } |
496 | return found; | 496 | return found; |
497 | } | 497 | } |
498 | 498 | ||
499 | /** | 499 | /** |
500 | * Sets a value of an option in a stanza | 500 | * Sets a value of an option in a stanza |
501 | * @param start the start of the stanza | 501 | * @param start the start of the stanza |
502 | * @param option the option to use when setting value. | 502 | * @param option the option to use when setting value. |
503 | * @return bool true if successfull, false otherwise. | 503 | * @return bool true if successful, false otherwise. |
504 | */ | 504 | */ |
505 | bool Interfaces::setOption(const QStringList::Iterator &start, const QString &option, const QString &value){ | 505 | bool Interfaces::setOption(const QStringList::Iterator &start, const QString &option, const QString &value){ |
506 | if(start == interfaces.end()) | 506 | if(start == interfaces.end()) |
507 | return false; | 507 | return false; |
508 | qDebug("setting option"); | 508 | qDebug("setting option"); |
509 | bool found = false; | 509 | bool found = false; |
510 | bool replaced = false; | 510 | bool replaced = false; |
511 | QStringList::Iterator insertAt = NULL; | 511 | QStringList::Iterator insertAt = NULL; |
512 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { | 512 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { |
513 | qDebug(" Interfaces::setOption got line >%s<",(*it).latin1()); | 513 | qDebug(" Interfaces::setOption got line >%s<",(*it).latin1()); |
514 | // FIXME: was not completly stupid just wrong sice all options got inserted bevore the iface line | 514 | // FIXME: was not completly stupid just wrong sice all options got inserted bevore the iface line |
515 | // but since it works with an empty interfaces file I (tille) will not do anything more | 515 | // but since it works with an empty interfaces file I (tille) will not do anything more |
516 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) ){ | 516 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) ){ |
517 | if (found) break; | 517 | if (found) break; |
518 | // && it != start){ | 518 | // && it != start){ |
519 | // if(!found && value != ""){ | 519 | // if(!found && value != ""){ |
520 | // // Got to the end of the stanza without finding it, so append it. | 520 | // // Got to the end of the stanza without finding it, so append it. |
521 | // qDebug(" Got to the end of the stanza without finding it, so append it."); | 521 | // qDebug(" Got to the end of the stanza without finding it, so append it."); |
522 | // interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value)); | 522 | // interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value)); |
523 | // } | 523 | // } |
524 | qDebug("found 1"); | 524 | qDebug("found 1"); |
525 | // interfaces.insert(++it, QString("\t%1 %2").arg(option).arg(value)); | 525 | // interfaces.insert(++it, QString("\t%1 %2").arg(option).arg(value)); |
526 | found = true; | 526 | found = true; |
527 | insertAt = it; | 527 | insertAt = it; |
528 | 528 | ||
529 | } | 529 | } |
530 | if((*it).contains(option) && it != start && (*it).at(0) != '#'){ | 530 | if((*it).contains(option) && it != start && (*it).at(0) != '#'){ |
531 | // Found it in stanza so replace it. | 531 | // Found it in stanza so replace it. |
532 | qDebug("found 2"); | 532 | qDebug("found 2"); |
533 | if(found) | 533 | if(found) |
534 | qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); | 534 | qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); |
535 | found = true; | 535 | found = true; |
536 | replaced = true; | 536 | replaced = true; |
537 | (*it) = QString("\t%1 %2").arg(option).arg(value); | 537 | (*it) = QString("\t%1 %2").arg(option).arg(value); |
538 | } | 538 | } |
539 | } | 539 | } |
540 | if(!found){ | 540 | if(!found){ |
541 | qDebug("! found insert anyway"); | 541 | qDebug("! found insert anyway"); |
542 | QStringList::Iterator p = start; | 542 | QStringList::Iterator p = start; |
543 | interfaces.insert(++p, QString("\t%1 %2").arg(option).arg(value)); | 543 | interfaces.insert(++p, QString("\t%1 %2").arg(option).arg(value)); |
544 | found = true; | 544 | found = true; |
545 | } | 545 | } |
546 | 546 | ||
547 | if(found && !replaced){ | 547 | if(found && !replaced){ |
548 | qDebug("found iface but not the option so insert it here..."); | 548 | qDebug("found iface but not the option so insert it here..."); |
549 | interfaces.insert(++insertAt, QString("\t%1 %2").arg(option).arg(value)); | 549 | interfaces.insert(++insertAt, QString("\t%1 %2").arg(option).arg(value)); |
550 | } | 550 | } |
551 | return found; | 551 | return found; |
552 | } | 552 | } |
553 | 553 | ||
554 | /** | 554 | /** |
555 | * Removes a stanza and all of its options | 555 | * Removes a stanza and all of its options |
556 | * @param stanza the stanza to remove | 556 | * @param stanza the stanza to remove |
557 | * @return bool true if successfull. | 557 | * @return bool true if successful. |
558 | */ | 558 | */ |
559 | bool Interfaces::removeStanza(QStringList::Iterator &stanza){ | 559 | bool Interfaces::removeStanza(QStringList::Iterator &stanza){ |
560 | if(stanza == interfaces.end()) | 560 | if(stanza == interfaces.end()) |
561 | return false; | 561 | return false; |
562 | (*stanza) = ""; | 562 | (*stanza) = ""; |
563 | return removeAllOptions(stanza); | 563 | return removeAllOptions(stanza); |
564 | } | 564 | } |
565 | 565 | ||
566 | /** | 566 | /** |
567 | * Removes a option in a stanza | 567 | * Removes a option in a stanza |
568 | * @param start the start of the stanza | 568 | * @param start the start of the stanza |
569 | * @param option the option to remove | 569 | * @param option the option to remove |
570 | * @return bool true if successfull, false otherwise. | 570 | * @return bool true if successful, false otherwise. |
571 | */ | 571 | */ |
572 | bool Interfaces::removeOption(const QStringList::Iterator &start, const QString &option){ | 572 | bool Interfaces::removeOption(const QStringList::Iterator &start, const QString &option){ |
573 | if(start == interfaces.end()) | 573 | if(start == interfaces.end()) |
574 | return false; | 574 | return false; |
575 | 575 | ||
576 | bool found = false; | 576 | bool found = false; |
577 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { | 577 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { |
578 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ | 578 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ |
579 | // got to the end without finding it | 579 | // got to the end without finding it |
580 | break; | 580 | break; |
581 | } | 581 | } |
582 | if((*it).contains(option) && it != start && (*it).at(0) != '#'){ | 582 | if((*it).contains(option) && it != start && (*it).at(0) != '#'){ |
583 | // Found it in stanza so replace it. | 583 | // Found it in stanza so replace it. |
584 | if(found) | 584 | if(found) |
585 | qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); | 585 | qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); |
586 | found = true; | 586 | found = true; |
587 | it = interfaces.remove( it ); // we really want to remove the line | 587 | it = interfaces.remove( it ); // we really want to remove the line |
588 | --it; // we do ++it later in the head of the for loop | 588 | --it; // we do ++it later in the head of the for loop |
589 | } | 589 | } |
590 | } | 590 | } |
591 | return found; | 591 | return found; |
592 | } | 592 | } |
593 | 593 | ||
594 | /** | 594 | /** |
595 | * Removes a option in a stanza | 595 | * Removes a option in a stanza |
596 | * @param start the start of the stanza | 596 | * @param start the start of the stanza |
597 | * @param option the option to use when setting value. | 597 | * @param option the option to use when setting value. |
598 | * @return bool true if successfull, false otherwise. | 598 | * @return bool true if successful, false otherwise. |
599 | */ | 599 | */ |
600 | bool Interfaces::removeOption(const QStringList::Iterator &start, const QString &option, const QString &value){ | 600 | bool Interfaces::removeOption(const QStringList::Iterator &start, const QString &option, const QString &value){ |
601 | if(start == interfaces.end()) | 601 | if(start == interfaces.end()) |
602 | return false; | 602 | return false; |
603 | 603 | ||
604 | bool found = false; | 604 | bool found = false; |
605 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { | 605 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { |
606 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ | 606 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ |
607 | // got to the end without finding it | 607 | // got to the end without finding it |
608 | break; | 608 | break; |
609 | } | 609 | } |
610 | if((*it).contains(option) && (*it).contains(value) && it != start && (*it).at(0) != '#'){ | 610 | if((*it).contains(option) && (*it).contains(value) && it != start && (*it).at(0) != '#'){ |
611 | // Found it in stanza so replace it. | 611 | // Found it in stanza so replace it. |
612 | if(found) | 612 | if(found) |
613 | qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); | 613 | qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); |
614 | found = true; | 614 | found = true; |
615 | it = interfaces.remove( it ); // we really want to remove the line | 615 | it = interfaces.remove( it ); // we really want to remove the line |
616 | --it; // we do ++it later in the head of the for loop | 616 | --it; // we do ++it later in the head of the for loop |
617 | } | 617 | } |
618 | } | 618 | } |
619 | return found; | 619 | return found; |
620 | } | 620 | } |
621 | 621 | ||
622 | /** | 622 | /** |
623 | * Removes all options in a stanza | 623 | * Removes all options in a stanza |
624 | * @param start the start of the stanza | 624 | * @param start the start of the stanza |
625 | * @return bool true if successfull, false otherwise. | 625 | * @return bool true if successful, false otherwise. |
626 | */ | 626 | */ |
627 | bool Interfaces::removeAllOptions(const QStringList::Iterator &start){ | 627 | bool Interfaces::removeAllOptions(const QStringList::Iterator &start){ |
628 | if(start == interfaces.end()) | 628 | if(start == interfaces.end()) |
629 | return false; | 629 | return false; |
630 | 630 | ||
631 | QStringList::Iterator it = start; | 631 | QStringList::Iterator it = start; |
632 | it = ++it; | 632 | it = ++it; |
633 | for (; it != interfaces.end(); ++it ) { | 633 | for (; it != interfaces.end(); ++it ) { |
634 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ | 634 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ |
635 | break; | 635 | break; |
636 | } | 636 | } |
637 | it = interfaces.remove(it); | 637 | it = interfaces.remove(it); |
638 | it = --it; | 638 | it = --it; |
639 | } | 639 | } |
640 | // Leave a space between this interface and the next. | 640 | // Leave a space between this interface and the next. |
641 | interfaces.insert(it, QString("")); | 641 | interfaces.insert(it, QString("")); |
642 | return true; | 642 | return true; |
643 | } | 643 | } |
644 | 644 | ||
645 | /** | 645 | /** |
646 | * Gets a value of an option in a stanza | 646 | * Gets a value of an option in a stanza |
647 | * @param start the start of the stanza | 647 | * @param start the start of the stanza |
648 | * @param option the option to use when getting the value. | 648 | * @param option the option to use when getting the value. |
649 | * @param bool true if errors false otherwise. | 649 | * @param bool true if errors false otherwise. |
650 | * @return QString the value of option QString::null() if error == true. | 650 | * @return QString the value of option QString::null() if error == true. |
651 | */ | 651 | */ |
652 | QString Interfaces::getOption(const QStringList::Iterator &start, const QString &option, bool &error){ | 652 | QString Interfaces::getOption(const QStringList::Iterator &start, const QString &option, bool &error){ |
653 | if(start == interfaces.end()){ | 653 | if(start == interfaces.end()){ |
654 | error = false; | 654 | error = false; |
655 | return QString(); | 655 | return QString(); |
656 | } | 656 | } |
657 | 657 | ||
658 | QString value; | 658 | QString value; |
659 | bool found = false; | 659 | bool found = false; |
660 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { | 660 | for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { |
661 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ | 661 | if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ |
662 | break; | 662 | break; |
663 | } | 663 | } |
664 | if((*it).contains(option) && (*it).at(0) != '#'){ | 664 | if((*it).contains(option) && (*it).at(0) != '#'){ |
665 | if(found) | 665 | if(found) |
666 | qDebug(QString("Interfaces: getOption found more then one value: %1 for option: %2 in stanza %3").arg((*it)).arg(option).arg((*start)).latin1()); | 666 | qDebug(QString("Interfaces: getOption found more then one value: %1 for option: %2 in stanza %3").arg((*it)).arg(option).arg((*start)).latin1()); |
667 | found = true; | 667 | found = true; |
668 | QString line = (*it).simplifyWhiteSpace(); | 668 | QString line = (*it).simplifyWhiteSpace(); |
669 | int space = line.find(" ", option.length()); | 669 | int space = line.find(" ", option.length()); |
670 | if(space != -1){ | 670 | if(space != -1){ |
671 | value = line.mid(space+1, line.length()); | 671 | value = line.mid(space+1, line.length()); |
672 | break; | 672 | break; |
673 | } | 673 | } |
674 | } | 674 | } |
675 | } | 675 | } |
676 | error = !found; | 676 | error = !found; |
677 | return value; | 677 | return value; |
678 | } | 678 | } |
679 | 679 | ||
680 | /** | 680 | /** |
681 | * Write out the interfaces file to the file passed into the constructor. | 681 | * Write out the interfaces file to the file passed into the constructor. |
682 | * Removes any excess blank lines over 1 line long. | 682 | * Removes any excess blank lines over 1 line long. |
683 | * @return bool true if successfull, false if not. | 683 | * @return bool true if successful, false if not. |
684 | */ | 684 | */ |
685 | bool Interfaces::write(){ | 685 | bool Interfaces::write(){ |
686 | QFile::remove(interfacesFile); | 686 | QFile::remove(interfacesFile); |
687 | QFile file(interfacesFile); | 687 | QFile file(interfacesFile); |
688 | 688 | ||
689 | if (!file.open(IO_ReadWrite)){ | 689 | if (!file.open(IO_ReadWrite)){ |
690 | qDebug(QString("Interfaces: Can't open file: %1 for writing.").arg(interfacesFile).latin1()); | 690 | qDebug(QString("Interfaces: Can't open file: %1 for writing.").arg(interfacesFile).latin1()); |
691 | return false; | 691 | return false; |
692 | } | 692 | } |
693 | QTextStream stream( &file ); | 693 | QTextStream stream( &file ); |
694 | int whiteSpaceCount = 0; | 694 | int whiteSpaceCount = 0; |
695 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { | 695 | for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { |
696 | QString line = (*it).simplifyWhiteSpace(); | 696 | QString line = (*it).simplifyWhiteSpace(); |
697 | line = line.replace(QRegExp(" "),""); | 697 | line = line.replace(QRegExp(" "),""); |
698 | if(line.length() == 0) | 698 | if(line.length() == 0) |
699 | whiteSpaceCount++; | 699 | whiteSpaceCount++; |
700 | else | 700 | else |
701 | whiteSpaceCount = 0; | 701 | whiteSpaceCount = 0; |
702 | if(whiteSpaceCount < 2){ | 702 | if(whiteSpaceCount < 2){ |
703 | qDebug((*it).latin1()); | 703 | qDebug((*it).latin1()); |
704 | stream << (*it) << '\n'; | 704 | stream << (*it) << '\n'; |
705 | } | 705 | } |
706 | } | 706 | } |
707 | file.close(); | 707 | file.close(); |
708 | return true; | 708 | return true; |
709 | } | 709 | } |
710 | 710 | ||
711 | // interfaces.cpp | 711 | // interfaces.cpp |
712 | 712 | ||
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp index e844d8a..78466d0 100644 --- a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp +++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp | |||
@@ -1,182 +1,182 @@ | |||
1 | #include "interfacesetupimp.h" | 1 | #include "interfacesetupimp.h" |
2 | #include "interface.h" | 2 | #include "interface.h" |
3 | 3 | ||
4 | #include <qcheckbox.h> | 4 | #include <qcheckbox.h> |
5 | #include <qlineedit.h> | 5 | #include <qlineedit.h> |
6 | #include <qspinbox.h> | 6 | #include <qspinbox.h> |
7 | #include <qgroupbox.h> | 7 | #include <qgroupbox.h> |
8 | #include <qlabel.h> | 8 | #include <qlabel.h> |
9 | 9 | ||
10 | #include <qmessagebox.h> | 10 | #include <qmessagebox.h> |
11 | 11 | ||
12 | #include <opie/oprocess.h> | 12 | #include <opie/oprocess.h> |
13 | 13 | ||
14 | #ifdef QWS | 14 | #ifdef QWS |
15 | #include <opie/owait.h> | 15 | #include <opie/owait.h> |
16 | #include <qpe/global.h> | 16 | #include <qpe/global.h> |
17 | #include <qapplication.h> | 17 | #include <qapplication.h> |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #define DNSSCRIPT "changedns" | 20 | #define DNSSCRIPT "changedns" |
21 | 21 | ||
22 | /** | 22 | /** |
23 | * Constuctor. Set up the connection. A profile must be set. | 23 | * Constuctor. Set up the connection. A profile must be set. |
24 | */ | 24 | */ |
25 | InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){ | 25 | InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){ |
26 | if (j == 0) { | 26 | if (j == 0) { |
27 | delInterfaces = true; | 27 | delInterfaces = true; |
28 | interfaces = new Interfaces; | 28 | interfaces = new Interfaces; |
29 | } | 29 | } |
30 | } | 30 | } |
31 | 31 | ||
32 | /** | 32 | /** |
33 | * Destructor | 33 | * Destructor |
34 | */ | 34 | */ |
35 | InterfaceSetupImp::~InterfaceSetupImp(){ | 35 | InterfaceSetupImp::~InterfaceSetupImp(){ |
36 | if(delInterfaces) { | 36 | if(delInterfaces) { |
37 | delete interfaces; | 37 | delete interfaces; |
38 | } | 38 | } |
39 | } | 39 | } |
40 | 40 | ||
41 | /** | 41 | /** |
42 | * Save the current settings, then write out the interfaces file and close. | 42 | * Save the current settings, then write out the interfaces file and close. |
43 | */ | 43 | */ |
44 | bool InterfaceSetupImp::saveChanges(){ | 44 | bool InterfaceSetupImp::saveChanges(){ |
45 | bool error; | 45 | bool error; |
46 | QString iface = interfaces->getInterfaceName(error); | 46 | QString iface = interfaces->getInterfaceName(error); |
47 | qDebug("InterfaceSetupImp::saveChanges saves interface %s", iface.latin1() ); | 47 | qDebug("InterfaceSetupImp::saveChanges saves interface %s", iface.latin1() ); |
48 | if(!saveSettings()) | 48 | if(!saveSettings()) |
49 | return false; | 49 | return false; |
50 | 50 | ||
51 | interfaces->write(); | 51 | interfaces->write(); |
52 | 52 | ||
53 | if (interface->getStatus()) { | 53 | if (interface->getStatus()) { |
54 | QString ifup; | 54 | QString ifup; |
55 | ifup += "ifdown "; | 55 | ifup += "ifdown "; |
56 | ifup += iface; | 56 | ifup += iface; |
57 | ifup += "; ifup "; | 57 | ifup += "; ifup "; |
58 | ifup += iface; | 58 | ifup += iface; |
59 | ifup += ";"; | 59 | ifup += ";"; |
60 | 60 | ||
61 | OProcess restart; | 61 | OProcess restart; |
62 | restart << "sh"; | 62 | restart << "sh"; |
63 | restart << "-c"; | 63 | restart << "-c"; |
64 | restart << ifup; | 64 | restart << ifup; |
65 | 65 | ||
66 | OWait *owait = new OWait(); | 66 | OWait *owait = new OWait(); |
67 | Global::statusMessage( tr( "Restarting interface" ) ); | 67 | Global::statusMessage( tr( "Restarting interface" ) ); |
68 | 68 | ||
69 | owait->show(); | 69 | owait->show(); |
70 | qApp->processEvents(); | 70 | qApp->processEvents(); |
71 | 71 | ||
72 | if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { | 72 | if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { |
73 | qWarning("unstable to spawn ifdown/ifup"); | 73 | qWarning("unstable to spawn ifdown/ifup"); |
74 | } | 74 | } |
75 | 75 | ||
76 | owait->hide(); | 76 | owait->hide(); |
77 | delete owait; | 77 | delete owait; |
78 | 78 | ||
79 | interface->refresh(); | 79 | interface->refresh(); |
80 | } | 80 | } |
81 | return true; | 81 | return true; |
82 | } | 82 | } |
83 | 83 | ||
84 | /** | 84 | /** |
85 | * Save the settings for the current Interface. | 85 | * Save the settings for the current Interface. |
86 | * @return bool true if successfull, false otherwise | 86 | * @return bool true if successful, false otherwise |
87 | */ | 87 | */ |
88 | bool InterfaceSetupImp::saveSettings(){ | 88 | bool InterfaceSetupImp::saveSettings(){ |
89 | // eh can't really do anything about it other then return. :-D | 89 | // eh can't really do anything about it other then return. :-D |
90 | if(!interfaces->isInterfaceSet()) | 90 | if(!interfaces->isInterfaceSet()) |
91 | return true; | 91 | return true; |
92 | 92 | ||
93 | bool error = false; | 93 | bool error = false; |
94 | // Loopback case | 94 | // Loopback case |
95 | if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ | 95 | if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ |
96 | interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); | 96 | interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); |
97 | return true; | 97 | return true; |
98 | } | 98 | } |
99 | 99 | ||
100 | if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){ | 100 | if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){ |
101 | QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok); | 101 | QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok); |
102 | return false; | 102 | return false; |
103 | } | 103 | } |
104 | // DHCP | 104 | // DHCP |
105 | if(dhcpCheckBox->isChecked()) { | 105 | if(dhcpCheckBox->isChecked()) { |
106 | interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); | 106 | interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); |
107 | interfaces->removeInterfaceOption("address"); | 107 | interfaces->removeInterfaceOption("address"); |
108 | interfaces->removeInterfaceOption("netmask"); | 108 | interfaces->removeInterfaceOption("netmask"); |
109 | interfaces->removeInterfaceOption("gateway"); | 109 | interfaces->removeInterfaceOption("gateway"); |
110 | interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); | 110 | interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); |
111 | interfaces->removeInterfaceOption("down "DNSSCRIPT" -r "); | 111 | interfaces->removeInterfaceOption("down "DNSSCRIPT" -r "); |
112 | } else{ | 112 | } else{ |
113 | interfaces->setInterfaceMethod("static"); | 113 | interfaces->setInterfaceMethod("static"); |
114 | interfaces->setInterfaceOption("address", ipAddressEdit->text()); | 114 | interfaces->setInterfaceOption("address", ipAddressEdit->text()); |
115 | interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); | 115 | interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); |
116 | interfaces->setInterfaceOption("gateway", gatewayEdit->text()); | 116 | interfaces->setInterfaceOption("gateway", gatewayEdit->text()); |
117 | if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){ | 117 | if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){ |
118 | QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); | 118 | QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); |
119 | interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns); | 119 | interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns); |
120 | interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns); | 120 | interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns); |
121 | }else{ | 121 | }else{ |
122 | interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); | 122 | interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); |
123 | interfaces->removeInterfaceOption("down "DNSSCRIPT" -r"); | 123 | interfaces->removeInterfaceOption("down "DNSSCRIPT" -r"); |
124 | } | 124 | } |
125 | } | 125 | } |
126 | 126 | ||
127 | // IP Information | 127 | // IP Information |
128 | interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); | 128 | interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); |
129 | return true; | 129 | return true; |
130 | } | 130 | } |
131 | 131 | ||
132 | /** | 132 | /** |
133 | * The Profile has changed. | 133 | * The Profile has changed. |
134 | * @param QString profile the new profile. | 134 | * @param QString profile the new profile. |
135 | */ | 135 | */ |
136 | void InterfaceSetupImp::setProfile(const QString &profile){ | 136 | void InterfaceSetupImp::setProfile(const QString &profile){ |
137 | /* | 137 | /* |
138 | bool error = false; | 138 | bool error = false; |
139 | if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ | 139 | if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ |
140 | staticGroupBox->hide(); | 140 | staticGroupBox->hide(); |
141 | dhcpCheckBox->hide(); | 141 | dhcpCheckBox->hide(); |
142 | leaseTime->hide(); | 142 | leaseTime->hide(); |
143 | leaseHoursLabel->hide(); | 143 | leaseHoursLabel->hide(); |
144 | } | 144 | } |
145 | */ | 145 | */ |
146 | 146 | ||
147 | QString newInterfaceName = interface->getInterfaceName(); | 147 | QString newInterfaceName = interface->getInterfaceName(); |
148 | if(profile.length() > 0) | 148 | if(profile.length() > 0) |
149 | newInterfaceName += "_" + profile; | 149 | newInterfaceName += "_" + profile; |
150 | // See if we have to make a interface. | 150 | // See if we have to make a interface. |
151 | if(!interfaces->setInterface(newInterfaceName)){ | 151 | if(!interfaces->setInterface(newInterfaceName)){ |
152 | // Add making for this new interface if need too | 152 | // Add making for this new interface if need too |
153 | if(profile != ""){ | 153 | if(profile != ""){ |
154 | interfaces->copyInterface(interface->getInterfaceName(), newInterfaceName); | 154 | interfaces->copyInterface(interface->getInterfaceName(), newInterfaceName); |
155 | if(!interfaces->setMapping(interface->getInterfaceName())){ | 155 | if(!interfaces->setMapping(interface->getInterfaceName())){ |
156 | interfaces->addMapping(interface->getInterfaceName()); | 156 | interfaces->addMapping(interface->getInterfaceName()); |
157 | if(!interfaces->setMapping(interface->getInterfaceName())){ | 157 | if(!interfaces->setMapping(interface->getInterfaceName())){ |
158 | qDebug("InterfaceSetupImp: Added Mapping, but still can't setInterface."); | 158 | qDebug("InterfaceSetupImp: Added Mapping, but still can't setInterface."); |
159 | return; | 159 | return; |
160 | } | 160 | } |
161 | } | 161 | } |
162 | interfaces->setMap("map", newInterfaceName); | 162 | interfaces->setMap("map", newInterfaceName); |
163 | interfaces->setScript("getprofile.sh"); | 163 | interfaces->setScript("getprofile.sh"); |
164 | } | 164 | } |
165 | else{ | 165 | else{ |
166 | interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP); | 166 | interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP); |
167 | if(!interfaces->setInterface(newInterfaceName)){ | 167 | if(!interfaces->setInterface(newInterfaceName)){ |
168 | qDebug("InterfaceSetupImp: Added interface, but still can't setInterface."); | 168 | qDebug("InterfaceSetupImp: Added interface, but still can't setInterface."); |
169 | return; | 169 | return; |
170 | } | 170 | } |
171 | } | 171 | } |
172 | } | 172 | } |
173 | 173 | ||
174 | // We must have a valid interface to get this far so read some settings. | 174 | // We must have a valid interface to get this far so read some settings. |
175 | 175 | ||
176 | // DHCP | 176 | // DHCP |
177 | bool error = false; | 177 | bool error = false; |
178 | if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP) | 178 | if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP) |
179 | dhcpCheckBox->setChecked(true); | 179 | dhcpCheckBox->setChecked(true); |
180 | else | 180 | else |
181 | dhcpCheckBox->setChecked(false); | 181 | dhcpCheckBox->setChecked(false); |
182 | 182 | ||
diff --git a/noncore/settings/networksettings/module.h b/noncore/settings/networksettings/module.h index f7d8046..5cc82cd 100644 --- a/noncore/settings/networksettings/module.h +++ b/noncore/settings/networksettings/module.h | |||
@@ -1,113 +1,113 @@ | |||
1 | #ifndef NETCONF_MODULE_H | 1 | #ifndef NETCONF_MODULE_H |
2 | #define NETCONF_MODULE_H | 2 | #define NETCONF_MODULE_H |
3 | 3 | ||
4 | #include <qobject.h> | 4 | #include <qobject.h> |
5 | #if QT_VERSION < 300 | 5 | #if QT_VERSION < 300 |
6 | #include <qlist.h> | 6 | #include <qlist.h> |
7 | #else | 7 | #else |
8 | #include <qptrlist.h> | 8 | #include <qptrlist.h> |
9 | #endif | 9 | #endif |
10 | #include <qmap.h> | 10 | #include <qmap.h> |
11 | #include "interface.h" | 11 | #include "interface.h" |
12 | 12 | ||
13 | class QWidget; | 13 | class QWidget; |
14 | class QTabWidget; | 14 | class QTabWidget; |
15 | 15 | ||
16 | class Module : QObject{ | 16 | class Module : QObject{ |
17 | 17 | ||
18 | signals: | 18 | signals: |
19 | void updateInterface(Interface *i); | 19 | void updateInterface(Interface *i); |
20 | 20 | ||
21 | 21 | ||
22 | public: | 22 | public: |
23 | Module(){}; | 23 | Module(){}; |
24 | 24 | ||
25 | /** | 25 | /** |
26 | * The type of the plugin | 26 | * The type of the plugin |
27 | * and the name of the dcop call | 27 | * and the name of the dcop call |
28 | */ | 28 | */ |
29 | virtual const QString type() = 0; | 29 | virtual const QString type() = 0; |
30 | 30 | ||
31 | /** | 31 | /** |
32 | * The current profile has been changed and the module should do any | 32 | * The current profile has been changed and the module should do any |
33 | * neccesary changes also. | 33 | * neccesary changes also. |
34 | * @param newProfile what the profile should be changed to. | 34 | * @param newProfile what the profile should be changed to. |
35 | */ | 35 | */ |
36 | virtual void setProfile(const QString &newProfile) = 0; | 36 | virtual void setProfile(const QString &newProfile) = 0; |
37 | 37 | ||
38 | /** | 38 | /** |
39 | * get the icon name for this device. | 39 | * get the icon name for this device. |
40 | * @param Interface* can be used in determining the icon. | 40 | * @param Interface* can be used in determining the icon. |
41 | * @return QString the icon name (minus .png, .gif etc) | 41 | * @return QString the icon name (minus .png, .gif etc) |
42 | */ | 42 | */ |
43 | virtual QString getPixmapName(Interface *) = 0; | 43 | virtual QString getPixmapName(Interface *) = 0; |
44 | 44 | ||
45 | /** | 45 | /** |
46 | * Check to see if the interface i is owned by this module. | 46 | * Check to see if the interface i is owned by this module. |
47 | * @param Interface* interface to check against | 47 | * @param Interface* interface to check against |
48 | * @return bool true if i is owned by this module, false otherwise. | 48 | * @return bool true if i is owned by this module, false otherwise. |
49 | */ | 49 | */ |
50 | virtual bool isOwner(Interface *){ return false; }; | 50 | virtual bool isOwner(Interface *){ return false; }; |
51 | 51 | ||
52 | /** | 52 | /** |
53 | * Create and return the WLANConfigure Module | 53 | * Create and return the WLANConfigure Module |
54 | * @param Interface *i the interface to configure. | 54 | * @param Interface *i the interface to configure. |
55 | * @return QWidget* pointer to this modules configure. | 55 | * @return QWidget* pointer to this modules configure. |
56 | */ | 56 | */ |
57 | virtual QWidget *configure(Interface *){ return NULL; } ; | 57 | virtual QWidget *configure(Interface *){ return NULL; } ; |
58 | 58 | ||
59 | /** | 59 | /** |
60 | * Create, and return the Information Module | 60 | * Create, and return the Information Module |
61 | * @param Interface *i the interface to get info on. | 61 | * @param Interface *i the interface to get info on. |
62 | * @return QWidget* pointer to this modules info. | 62 | * @return QWidget* pointer to this modules info. |
63 | */ | 63 | */ |
64 | virtual QWidget *information(Interface *){ return NULL; }; | 64 | virtual QWidget *information(Interface *){ return NULL; }; |
65 | 65 | ||
66 | /** | 66 | /** |
67 | * Get all active (up or down) interfaces | 67 | * Get all active (up or down) interfaces |
68 | * @return QList<Interface> A list of interfaces that exsist that havn't | 68 | * @return QList<Interface> A list of interfaces that exsist that havn't |
69 | * been called by isOwner() | 69 | * been called by isOwner() |
70 | */ | 70 | */ |
71 | virtual QList<Interface> getInterfaces() = 0; | 71 | virtual QList<Interface> getInterfaces() = 0; |
72 | 72 | ||
73 | /** | 73 | /** |
74 | * Adds possible new interfaces to the list (Example: usb(ppp), ir(ppp), | 74 | * Adds possible new interfaces to the list (Example: usb(ppp), ir(ppp), |
75 | * modem ppp) | 75 | * modem ppp) |
76 | */ | 76 | */ |
77 | virtual void possibleNewInterfaces(QMap<QString, QString> &list) = 0; | 77 | virtual void possibleNewInterfaces(QMap<QString, QString> &list) = 0; |
78 | 78 | ||
79 | /** | 79 | /** |
80 | * Attempts to create a new interface from name | 80 | * Attempts to create a new interface from name |
81 | * @return Interface* NULL if it was unable to be created. | 81 | * @return Interface* NULL if it was unable to be created. |
82 | * @param name the type of interface to create | 82 | * @param name the type of interface to create |
83 | */ | 83 | */ |
84 | virtual Interface *addNewInterface(const QString &name) = 0; | 84 | virtual Interface *addNewInterface(const QString &name) = 0; |
85 | 85 | ||
86 | /** | 86 | /** |
87 | * Attempts to remove the interface, doesn't delete i | 87 | * Attempts to remove the interface, doesn't delete i |
88 | * @return bool true if successfull, false otherwise. | 88 | * @return bool true if successful, false otherwise. |
89 | */ | 89 | */ |
90 | virtual bool remove(Interface* i) = 0; | 90 | virtual bool remove(Interface* i) = 0; |
91 | 91 | ||
92 | /** | 92 | /** |
93 | * get dcop calls | 93 | * get dcop calls |
94 | */ | 94 | */ |
95 | virtual void receive(const QCString &msg, const QByteArray &arg) = 0; | 95 | virtual void receive(const QCString &msg, const QByteArray &arg) = 0; |
96 | 96 | ||
97 | QStringList handledInterfaceNames()const { return m_inter; } | 97 | QStringList handledInterfaceNames()const { return m_inter; } |
98 | protected: | 98 | protected: |
99 | /** | 99 | /** |
100 | * set which interfaceNames should not be shown cause they're handled | 100 | * set which interfaceNames should not be shown cause they're handled |
101 | * internally of this module.. An already running ppp link or | 101 | * internally of this module.. An already running ppp link or |
102 | * a tunnel... | 102 | * a tunnel... |
103 | */ | 103 | */ |
104 | void setHandledInterfaceNames( const QStringList& in) { m_inter = in; } | 104 | void setHandledInterfaceNames( const QStringList& in) { m_inter = in; } |
105 | 105 | ||
106 | private: | 106 | private: |
107 | QStringList m_inter; | 107 | QStringList m_inter; |
108 | }; | 108 | }; |
109 | 109 | ||
110 | #endif | 110 | #endif |
111 | 111 | ||
112 | // module.h | 112 | // module.h |
113 | 113 | ||
diff --git a/noncore/settings/networksettings/ppp/pppmodule.cpp b/noncore/settings/networksettings/ppp/pppmodule.cpp index af05eb7..2462fa4 100644 --- a/noncore/settings/networksettings/ppp/pppmodule.cpp +++ b/noncore/settings/networksettings/ppp/pppmodule.cpp | |||
@@ -87,164 +87,164 @@ PPPModule::~PPPModule(){ | |||
87 | qDebug("Iface %s is still up", i->getHardwareName().latin1() ); | 87 | qDebug("Iface %s is still up", i->getHardwareName().latin1() ); |
88 | InterfacePPP* ppp = static_cast<InterfacePPP*>(i); | 88 | InterfacePPP* ppp = static_cast<InterfacePPP*>(i); |
89 | keeper.addInterface( ppp->pppPID(), ppp->pppDev(), ppp->getHardwareName() ); | 89 | keeper.addInterface( ppp->pppPID(), ppp->pppDev(), ppp->getHardwareName() ); |
90 | } | 90 | } |
91 | ifaces.insert( i->getInterfaceName(), i->getHardwareName() ); | 91 | ifaces.insert( i->getInterfaceName(), i->getHardwareName() ); |
92 | delete i; | 92 | delete i; |
93 | } | 93 | } |
94 | PPPData::setConfiguredInterfaces( ifaces ); | 94 | PPPData::setConfiguredInterfaces( ifaces ); |
95 | } | 95 | } |
96 | 96 | ||
97 | /** | 97 | /** |
98 | * Change the current profile | 98 | * Change the current profile |
99 | */ | 99 | */ |
100 | void PPPModule::setProfile(const QString &newProfile){ | 100 | void PPPModule::setProfile(const QString &newProfile){ |
101 | profile = newProfile; | 101 | profile = newProfile; |
102 | } | 102 | } |
103 | 103 | ||
104 | /** | 104 | /** |
105 | * get the icon name for this device. | 105 | * get the icon name for this device. |
106 | * @param Interface* can be used in determining the icon. | 106 | * @param Interface* can be used in determining the icon. |
107 | * @return QString the icon name (minus .png, .gif etc) | 107 | * @return QString the icon name (minus .png, .gif etc) |
108 | */ | 108 | */ |
109 | QString PPPModule::getPixmapName(Interface* ){ | 109 | QString PPPModule::getPixmapName(Interface* ){ |
110 | return "ppp"; | 110 | return "ppp"; |
111 | } | 111 | } |
112 | 112 | ||
113 | /** | 113 | /** |
114 | * Check to see if the interface i is owned by this module. | 114 | * Check to see if the interface i is owned by this module. |
115 | * @param Interface* interface to check against | 115 | * @param Interface* interface to check against |
116 | * @return bool true if i is owned by this module, false otherwise. | 116 | * @return bool true if i is owned by this module, false otherwise. |
117 | */ | 117 | */ |
118 | bool PPPModule::isOwner(Interface *i){ | 118 | bool PPPModule::isOwner(Interface *i){ |
119 | return list.find( i ) != -1; | 119 | return list.find( i ) != -1; |
120 | } | 120 | } |
121 | 121 | ||
122 | /** | 122 | /** |
123 | * Create, and return the WLANConfigure Module | 123 | * Create, and return the WLANConfigure Module |
124 | * @return QWidget* pointer to this modules configure. | 124 | * @return QWidget* pointer to this modules configure. |
125 | */ | 125 | */ |
126 | QWidget *PPPModule::configure(Interface *i){ | 126 | QWidget *PPPModule::configure(Interface *i){ |
127 | qDebug("return ModemWidget"); | 127 | qDebug("return ModemWidget"); |
128 | PPPConfigWidget *pppconfig = new PPPConfigWidget( (InterfacePPP*)i, | 128 | PPPConfigWidget *pppconfig = new PPPConfigWidget( (InterfacePPP*)i, |
129 | 0, "PPPConfig", false, | 129 | 0, "PPPConfig", false, |
130 | Qt::WDestructiveClose | Qt::WStyle_ContextHelp); | 130 | Qt::WDestructiveClose | Qt::WStyle_ContextHelp); |
131 | return pppconfig; | 131 | return pppconfig; |
132 | } | 132 | } |
133 | 133 | ||
134 | /** | 134 | /** |
135 | * Create, and return the Information Module | 135 | * Create, and return the Information Module |
136 | * @return QWidget* pointer to this modules info. | 136 | * @return QWidget* pointer to this modules info. |
137 | */ | 137 | */ |
138 | QWidget *PPPModule::information(Interface *i){ | 138 | QWidget *PPPModule::information(Interface *i){ |
139 | // We don't have any advanced pppd information widget yet :-D | 139 | // We don't have any advanced pppd information widget yet :-D |
140 | // TODO ^ | 140 | // TODO ^ |
141 | 141 | ||
142 | return new InterfaceInformationPPP( 0, "InterfaceInformationPPP", i ); | 142 | return new InterfaceInformationPPP( 0, "InterfaceInformationPPP", i ); |
143 | } | 143 | } |
144 | 144 | ||
145 | /** | 145 | /** |
146 | * Get all active (up or down) interfaces | 146 | * Get all active (up or down) interfaces |
147 | * @return QList<Interface> A list of interfaces that exsist that havn't | 147 | * @return QList<Interface> A list of interfaces that exsist that havn't |
148 | * been called by isOwner() | 148 | * been called by isOwner() |
149 | */ | 149 | */ |
150 | QList<Interface> PPPModule::getInterfaces(){ | 150 | QList<Interface> PPPModule::getInterfaces(){ |
151 | // List all of the files in the peer directory | 151 | // List all of the files in the peer directory |
152 | qDebug("PPPModule::getInterfaces"); | 152 | qDebug("PPPModule::getInterfaces"); |
153 | return list; | 153 | return list; |
154 | } | 154 | } |
155 | 155 | ||
156 | /** | 156 | /** |
157 | * Attempt to add a new interface as defined by name | 157 | * Attempt to add a new interface as defined by name |
158 | * @param name the name of the type of interface that should be created given | 158 | * @param name the name of the type of interface that should be created given |
159 | * by possibleNewInterfaces(); | 159 | * by possibleNewInterfaces(); |
160 | * @return Interface* NULL if it was unable to be created. | 160 | * @return Interface* NULL if it was unable to be created. |
161 | */ | 161 | */ |
162 | Interface *PPPModule::addNewInterface(const QString &newInterface){ | 162 | Interface *PPPModule::addNewInterface(const QString &newInterface){ |
163 | 163 | ||
164 | InterfacePPP *ifaceppp; | 164 | InterfacePPP *ifaceppp; |
165 | Interface *iface; | 165 | Interface *iface; |
166 | ifaceppp = new InterfacePPP(); | 166 | ifaceppp = new InterfacePPP(); |
167 | PPPConfigWidget imp(ifaceppp, 0, "PPPConfigImp", true); | 167 | PPPConfigWidget imp(ifaceppp, 0, "PPPConfigImp", true); |
168 | imp.showMaximized(); | 168 | imp.showMaximized(); |
169 | if(imp.exec() == QDialog::Accepted ){ | 169 | if(imp.exec() == QDialog::Accepted ){ |
170 | iface = (InterfacePPP*) ifaceppp; | 170 | iface = (InterfacePPP*) ifaceppp; |
171 | iface->setModuleOwner( this ); | 171 | iface->setModuleOwner( this ); |
172 | list.append( iface ); | 172 | list.append( iface ); |
173 | return iface; | 173 | return iface; |
174 | }else { | 174 | }else { |
175 | delete ifaceppp; | 175 | delete ifaceppp; |
176 | iface = NULL; | 176 | iface = NULL; |
177 | } | 177 | } |
178 | return iface; | 178 | return iface; |
179 | } | 179 | } |
180 | 180 | ||
181 | /** | 181 | /** |
182 | * Attempts to remove the interface, doesn't delete i | 182 | * Attempts to remove the interface, doesn't delete i |
183 | * @return bool true if successfull, false otherwise. | 183 | * @return bool true if successful, false otherwise. |
184 | */ | 184 | */ |
185 | bool PPPModule::remove(Interface *i){ | 185 | bool PPPModule::remove(Interface *i){ |
186 | return list.remove(i); | 186 | return list.remove(i); |
187 | } | 187 | } |
188 | 188 | ||
189 | void PPPModule::possibleNewInterfaces(QMap<QString, QString> &newIfaces) | 189 | void PPPModule::possibleNewInterfaces(QMap<QString, QString> &newIfaces) |
190 | { | 190 | { |
191 | newIfaces.insert(QObject::tr("PPP") , | 191 | newIfaces.insert(QObject::tr("PPP") , |
192 | QObject::tr("generic ppp device")); | 192 | QObject::tr("generic ppp device")); |
193 | } | 193 | } |
194 | 194 | ||
195 | 195 | ||
196 | 196 | ||
197 | namespace { | 197 | namespace { |
198 | InterfaceKeeper::InterfaceKeeper( ) { | 198 | InterfaceKeeper::InterfaceKeeper( ) { |
199 | } | 199 | } |
200 | InterfaceKeeper::~InterfaceKeeper() { | 200 | InterfaceKeeper::~InterfaceKeeper() { |
201 | Config cfg("ppp_plugin_keeper"); | 201 | Config cfg("ppp_plugin_keeper"); |
202 | QStringList lst = cfg.groupList(); | 202 | QStringList lst = cfg.groupList(); |
203 | for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { | 203 | for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { |
204 | Connection con; | 204 | Connection con; |
205 | cfg.setGroup( (*it) ); | 205 | cfg.setGroup( (*it) ); |
206 | cfg.clearGroup(); | 206 | cfg.clearGroup(); |
207 | } | 207 | } |
208 | 208 | ||
209 | for (QMap<QString, Connection>::Iterator it = m_interfaces.begin(); it != m_interfaces.end(); ++it ) { | 209 | for (QMap<QString, Connection>::Iterator it = m_interfaces.begin(); it != m_interfaces.end(); ++it ) { |
210 | Connection con = it.data(); | 210 | Connection con = it.data(); |
211 | cfg.setGroup( con.name ); | 211 | cfg.setGroup( con.name ); |
212 | cfg.writeEntry( "pid", con.pid ); | 212 | cfg.writeEntry( "pid", con.pid ); |
213 | cfg.writeEntry( "device", con.device ); | 213 | cfg.writeEntry( "device", con.device ); |
214 | } | 214 | } |
215 | } | 215 | } |
216 | void InterfaceKeeper::addInterface(pid_t pid, const QString& dev, const QString& name ) { | 216 | void InterfaceKeeper::addInterface(pid_t pid, const QString& dev, const QString& name ) { |
217 | Connection con; | 217 | Connection con; |
218 | con.pid = pid; | 218 | con.pid = pid; |
219 | con.device = dev; | 219 | con.device = dev; |
220 | con.name = name; | 220 | con.name = name; |
221 | m_interfaces.insert( name, con ); | 221 | m_interfaces.insert( name, con ); |
222 | } | 222 | } |
223 | QMap<QString, Connection> InterfaceKeeper::interfaces()const { | 223 | QMap<QString, Connection> InterfaceKeeper::interfaces()const { |
224 | Config cfg("ppp_plugin_keeper"); | 224 | Config cfg("ppp_plugin_keeper"); |
225 | QMap<QString, Connection> ifaces; | 225 | QMap<QString, Connection> ifaces; |
226 | QStringList lst = cfg.groupList(); | 226 | QStringList lst = cfg.groupList(); |
227 | for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { | 227 | for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { |
228 | Connection con; | 228 | Connection con; |
229 | cfg.setGroup( (*it) ); | 229 | cfg.setGroup( (*it) ); |
230 | con.name = (*it); | 230 | con.name = (*it); |
231 | con.pid = cfg.readNumEntry("pid"); | 231 | con.pid = cfg.readNumEntry("pid"); |
232 | con.device = cfg.readEntry("device"); | 232 | con.device = cfg.readEntry("device"); |
233 | qDebug(" %s %s %d", con.name.latin1(), con.device.latin1(), con.pid ); | 233 | qDebug(" %s %s %d", con.name.latin1(), con.device.latin1(), con.pid ); |
234 | 234 | ||
235 | if ( con.pid != -1 && isAvailable( con.pid ) ) | 235 | if ( con.pid != -1 && isAvailable( con.pid ) ) |
236 | ifaces.insert( con.name, con ); | 236 | ifaces.insert( con.name, con ); |
237 | } | 237 | } |
238 | return ifaces; | 238 | return ifaces; |
239 | } | 239 | } |
240 | bool InterfaceKeeper::isAvailable( pid_t p)const { | 240 | bool InterfaceKeeper::isAvailable( pid_t p)const { |
241 | if (::kill(p, 0 ) == 0 || errno != ESRCH ) { | 241 | if (::kill(p, 0 ) == 0 || errno != ESRCH ) { |
242 | qDebug("isAvailable %d", p); | 242 | qDebug("isAvailable %d", p); |
243 | return true; | 243 | return true; |
244 | } | 244 | } |
245 | 245 | ||
246 | qDebug("notAvailable %d", p); | 246 | qDebug("notAvailable %d", p); |
247 | return false; | 247 | return false; |
248 | } | 248 | } |
249 | 249 | ||
250 | } | 250 | } |
diff --git a/noncore/settings/networksettings/wlan/wextensions.cpp b/noncore/settings/networksettings/wlan/wextensions.cpp index bd7cf93..d1fff88 100644 --- a/noncore/settings/networksettings/wlan/wextensions.cpp +++ b/noncore/settings/networksettings/wlan/wextensions.cpp | |||
@@ -62,139 +62,139 @@ QString WExtensions::essid(){ | |||
62 | if(!hasWirelessExtensions) | 62 | if(!hasWirelessExtensions) |
63 | return QString(); | 63 | return QString(); |
64 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){ | 64 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){ |
65 | iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length] = '\0'; | 65 | iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length] = '\0'; |
66 | return QString(iwr.u.essid.pointer); | 66 | return QString(iwr.u.essid.pointer); |
67 | } | 67 | } |
68 | return QString(); | 68 | return QString(); |
69 | } | 69 | } |
70 | 70 | ||
71 | /** | 71 | /** |
72 | * @return QString the mode of interface | 72 | * @return QString the mode of interface |
73 | */ | 73 | */ |
74 | QString WExtensions::mode(){ | 74 | QString WExtensions::mode(){ |
75 | if(!hasWirelessExtensions) | 75 | if(!hasWirelessExtensions) |
76 | return QString(); | 76 | return QString(); |
77 | if ( 0 == ioctl( fd, SIOCGIWMODE, &iwr ) ) | 77 | if ( 0 == ioctl( fd, SIOCGIWMODE, &iwr ) ) |
78 | return QString("%1").arg(iwr.u.mode == IW_MODE_ADHOC ? "Ad-Hoc" : "Managed"); | 78 | return QString("%1").arg(iwr.u.mode == IW_MODE_ADHOC ? "Ad-Hoc" : "Managed"); |
79 | return QString(); | 79 | return QString(); |
80 | } | 80 | } |
81 | 81 | ||
82 | /** | 82 | /** |
83 | * Get the frequency that the interface is running at. | 83 | * Get the frequency that the interface is running at. |
84 | * @return int the frequency that the interfacae is running at. | 84 | * @return int the frequency that the interfacae is running at. |
85 | */ | 85 | */ |
86 | double WExtensions::frequency(){ | 86 | double WExtensions::frequency(){ |
87 | if(!hasWirelessExtensions) | 87 | if(!hasWirelessExtensions) |
88 | return 0; | 88 | return 0; |
89 | if ( 0 == ioctl( fd, SIOCGIWFREQ, &iwr )) | 89 | if ( 0 == ioctl( fd, SIOCGIWFREQ, &iwr )) |
90 | return (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); | 90 | return (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); |
91 | return 0; | 91 | return 0; |
92 | } | 92 | } |
93 | 93 | ||
94 | /** | 94 | /** |
95 | * Get the channel that the interface is running at. | 95 | * Get the channel that the interface is running at. |
96 | * @return int the channel that the interfacae is running at. | 96 | * @return int the channel that the interfacae is running at. |
97 | */ | 97 | */ |
98 | int WExtensions::channel(){ | 98 | int WExtensions::channel(){ |
99 | if(!hasWirelessExtensions) | 99 | if(!hasWirelessExtensions) |
100 | return 0; | 100 | return 0; |
101 | if ( 0 != ioctl( fd, SIOCGIWFREQ, &iwr )) | 101 | if ( 0 != ioctl( fd, SIOCGIWFREQ, &iwr )) |
102 | return 0; | 102 | return 0; |
103 | 103 | ||
104 | // http://www.elanix.com/pdf/an137e.pdf | 104 | // http://www.elanix.com/pdf/an137e.pdf |
105 | 105 | ||
106 | double num = (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); | 106 | double num = (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); |
107 | double left = 2.401; | 107 | double left = 2.401; |
108 | double right = 2.416; | 108 | double right = 2.416; |
109 | for(int channel = 1; channel<= 15; channel++){ | 109 | for(int channel = 1; channel<= 15; channel++){ |
110 | if( num >= left && num <= right ) | 110 | if( num >= left && num <= right ) |
111 | return channel; | 111 | return channel; |
112 | left += 0.005; | 112 | left += 0.005; |
113 | right += 0.005; | 113 | right += 0.005; |
114 | } | 114 | } |
115 | qDebug(QString("Unknown frequency: %1, returning -1 for the channel.").arg(num).latin1()); | 115 | qDebug(QString("Unknown frequency: %1, returning -1 for the channel.").arg(num).latin1()); |
116 | return -1; | 116 | return -1; |
117 | } | 117 | } |
118 | 118 | ||
119 | /*** | 119 | /*** |
120 | * Get the current rate that the card is transmiting at. | 120 | * Get the current rate that the card is transmiting at. |
121 | * @return double the rate, 0 if error. | 121 | * @return double the rate, 0 if error. |
122 | */ | 122 | */ |
123 | double WExtensions::rate(){ | 123 | double WExtensions::rate(){ |
124 | if(!hasWirelessExtensions) | 124 | if(!hasWirelessExtensions) |
125 | return 0; | 125 | return 0; |
126 | if(0 == ioctl(fd, SIOCGIWRATE, &iwr)){ | 126 | if(0 == ioctl(fd, SIOCGIWRATE, &iwr)){ |
127 | return ((double)iwr.u.bitrate.value)/1000000; | 127 | return ((double)iwr.u.bitrate.value)/1000000; |
128 | } | 128 | } |
129 | return 0; | 129 | return 0; |
130 | } | 130 | } |
131 | 131 | ||
132 | 132 | ||
133 | /** | 133 | /** |
134 | * @return QString the AccessPoint that the interface is connected to. | 134 | * @return QString the AccessPoint that the interface is connected to. |
135 | */ | 135 | */ |
136 | QString WExtensions::ap(){ | 136 | QString WExtensions::ap(){ |
137 | if(!hasWirelessExtensions) | 137 | if(!hasWirelessExtensions) |
138 | return QString(); | 138 | return QString(); |
139 | if ( 0 == ioctl( fd, SIOCGIWAP, &iwr )){ | 139 | if ( 0 == ioctl( fd, SIOCGIWAP, &iwr )){ |
140 | QString ap; | 140 | QString ap; |
141 | ap = ap.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", | 141 | ap = ap.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", |
142 | iwr.u.ap_addr.sa_data[0]&0xff, | 142 | iwr.u.ap_addr.sa_data[0]&0xff, |
143 | iwr.u.ap_addr.sa_data[1]&0xff, | 143 | iwr.u.ap_addr.sa_data[1]&0xff, |
144 | iwr.u.ap_addr.sa_data[2]&0xff, | 144 | iwr.u.ap_addr.sa_data[2]&0xff, |
145 | iwr.u.ap_addr.sa_data[3]&0xff, | 145 | iwr.u.ap_addr.sa_data[3]&0xff, |
146 | iwr.u.ap_addr.sa_data[4]&0xff, | 146 | iwr.u.ap_addr.sa_data[4]&0xff, |
147 | iwr.u.ap_addr.sa_data[5]&0xff ); | 147 | iwr.u.ap_addr.sa_data[5]&0xff ); |
148 | return ap; | 148 | return ap; |
149 | } | 149 | } |
150 | else return QString(); | 150 | else return QString(); |
151 | } | 151 | } |
152 | 152 | ||
153 | /** | 153 | /** |
154 | * Get the stats for interfaces | 154 | * Get the stats for interfaces |
155 | * @param signal the signal strength of interface | 155 | * @param signal the signal strength of interface |
156 | * @param noise the noise level of the interface | 156 | * @param noise the noise level of the interface |
157 | * @param quality the quality level of the interface | 157 | * @param quality the quality level of the interface |
158 | * @return bool true if successfull | 158 | * @return bool true if successful |
159 | */ | 159 | */ |
160 | bool WExtensions::stats(int &signal, int &noise, int &quality){ | 160 | bool WExtensions::stats(int &signal, int &noise, int &quality){ |
161 | // gather link quality from /proc/net/wireless | 161 | // gather link quality from /proc/net/wireless |
162 | if(!QFile::exists(PROCNETWIRELESS)) | 162 | if(!QFile::exists(PROCNETWIRELESS)) |
163 | return false; | 163 | return false; |
164 | 164 | ||
165 | char c; | 165 | char c; |
166 | QString status; | 166 | QString status; |
167 | QString name; | 167 | QString name; |
168 | 168 | ||
169 | QFile wfile( PROCNETWIRELESS ); | 169 | QFile wfile( PROCNETWIRELESS ); |
170 | if(!wfile.open( IO_ReadOnly )) | 170 | if(!wfile.open( IO_ReadOnly )) |
171 | return false; | 171 | return false; |
172 | 172 | ||
173 | QTextStream wstream( &wfile ); | 173 | QTextStream wstream( &wfile ); |
174 | wstream.readLine(); // skip the first two lines | 174 | wstream.readLine(); // skip the first two lines |
175 | wstream.readLine(); // because they only contain headers | 175 | wstream.readLine(); // because they only contain headers |
176 | while(!wstream.atEnd()){ | 176 | while(!wstream.atEnd()){ |
177 | wstream >> name >> status >> quality >> c >> signal >> c >> noise; | 177 | wstream >> name >> status >> quality >> c >> signal >> c >> noise; |
178 | if(name == QString("%1:").arg(interface)){ | 178 | if(name == QString("%1:").arg(interface)){ |
179 | if ( quality > 92 ) | 179 | if ( quality > 92 ) |
180 | qDebug( "WIFIAPPLET: D'oh! Quality %d > estimated max!\n", quality ); | 180 | qDebug( "WIFIAPPLET: D'oh! Quality %d > estimated max!\n", quality ); |
181 | if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) ) | 181 | if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) ) |
182 | qDebug( "WIFIAPPLET: Doh! Strength %d > estimated max!\n", signal ); | 182 | qDebug( "WIFIAPPLET: Doh! Strength %d > estimated max!\n", signal ); |
183 | if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) ) | 183 | if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) ) |
184 | qDebug( "WIFIAPPLET: Doh! Noise %d > estimated max!\n", noise ); | 184 | qDebug( "WIFIAPPLET: Doh! Noise %d > estimated max!\n", noise ); |
185 | //qDebug(QString("q:%1, s:%2, n:%3").arg(quality).arg(signal).arg(noise).latin1()); | 185 | //qDebug(QString("q:%1, s:%2, n:%3").arg(quality).arg(signal).arg(noise).latin1()); |
186 | signal = ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER; | 186 | signal = ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER; |
187 | noise = ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER; | 187 | noise = ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER; |
188 | quality = ( quality*100 ) / 92; | 188 | quality = ( quality*100 ) / 92; |
189 | return true; | 189 | return true; |
190 | } | 190 | } |
191 | } | 191 | } |
192 | 192 | ||
193 | qDebug("WExtensions::statsCard no longer present."); | 193 | qDebug("WExtensions::statsCard no longer present."); |
194 | quality = -1; | 194 | quality = -1; |
195 | signal = IW_LOWER; | 195 | signal = IW_LOWER; |
196 | noise = IW_LOWER; | 196 | noise = IW_LOWER; |
197 | return false; | 197 | return false; |
198 | } | 198 | } |
199 | 199 | ||
200 | // wextensions.cpp | 200 | // wextensions.cpp |
diff --git a/noncore/settings/networksettings/wlan/wlanmodule.cpp b/noncore/settings/networksettings/wlan/wlanmodule.cpp index b4c3509..07bf73f 100644 --- a/noncore/settings/networksettings/wlan/wlanmodule.cpp +++ b/noncore/settings/networksettings/wlan/wlanmodule.cpp | |||
@@ -17,193 +17,193 @@ | |||
17 | 17 | ||
18 | /** | 18 | /** |
19 | * Constructor, find all of the possible interfaces | 19 | * Constructor, find all of the possible interfaces |
20 | */ | 20 | */ |
21 | WLANModule::WLANModule() | 21 | WLANModule::WLANModule() |
22 | : Module(), | 22 | : Module(), |
23 | wlanconfigWiget(0) | 23 | wlanconfigWiget(0) |
24 | { | 24 | { |
25 | } | 25 | } |
26 | 26 | ||
27 | /** | 27 | /** |
28 | * Delete any interfaces that we own. | 28 | * Delete any interfaces that we own. |
29 | */ | 29 | */ |
30 | WLANModule::~WLANModule(){ | 30 | WLANModule::~WLANModule(){ |
31 | Interface *i; | 31 | Interface *i; |
32 | for ( i=list.first(); i != 0; i=list.next() ) | 32 | for ( i=list.first(); i != 0; i=list.next() ) |
33 | delete i; | 33 | delete i; |
34 | 34 | ||
35 | } | 35 | } |
36 | 36 | ||
37 | /** | 37 | /** |
38 | * Change the current profile | 38 | * Change the current profile |
39 | */ | 39 | */ |
40 | void WLANModule::setProfile(const QString &newProfile){ | 40 | void WLANModule::setProfile(const QString &newProfile){ |
41 | profile = newProfile; | 41 | profile = newProfile; |
42 | } | 42 | } |
43 | 43 | ||
44 | /** | 44 | /** |
45 | * get the icon name for this device. | 45 | * get the icon name for this device. |
46 | * @param Interface* can be used in determining the icon. | 46 | * @param Interface* can be used in determining the icon. |
47 | * @return QString the icon name (minus .png, .gif etc) | 47 | * @return QString the icon name (minus .png, .gif etc) |
48 | */ | 48 | */ |
49 | QString WLANModule::getPixmapName(Interface* ){ | 49 | QString WLANModule::getPixmapName(Interface* ){ |
50 | return "wlan"; | 50 | return "wlan"; |
51 | } | 51 | } |
52 | 52 | ||
53 | /** | 53 | /** |
54 | * Check to see if the interface i is owned by this module. | 54 | * Check to see if the interface i is owned by this module. |
55 | * @param Interface* interface to check against | 55 | * @param Interface* interface to check against |
56 | * @return bool true if i is owned by this module, false otherwise. | 56 | * @return bool true if i is owned by this module, false otherwise. |
57 | */ | 57 | */ |
58 | bool WLANModule::isOwner(Interface *i){ | 58 | bool WLANModule::isOwner(Interface *i){ |
59 | WExtensions we(i->getInterfaceName()); | 59 | WExtensions we(i->getInterfaceName()); |
60 | if(!we.doesHaveWirelessExtensions()) | 60 | if(!we.doesHaveWirelessExtensions()) |
61 | return false; | 61 | return false; |
62 | 62 | ||
63 | i->setHardwareName("802.11b"); | 63 | i->setHardwareName("802.11b"); |
64 | list.append(i); | 64 | list.append(i); |
65 | return true; | 65 | return true; |
66 | } | 66 | } |
67 | 67 | ||
68 | /** | 68 | /** |
69 | * Create, and return the WLANConfigure Module | 69 | * Create, and return the WLANConfigure Module |
70 | * @return QWidget* pointer to this modules configure. | 70 | * @return QWidget* pointer to this modules configure. |
71 | */ | 71 | */ |
72 | QWidget *WLANModule::configure(Interface *i){ | 72 | QWidget *WLANModule::configure(Interface *i){ |
73 | WLANImp *wlanconfig = new WLANImp(0, "WlanConfig", i, true, Qt::WDestructiveClose); | 73 | WLANImp *wlanconfig = new WLANImp(0, "WlanConfig", i, true, Qt::WDestructiveClose); |
74 | wlanconfig->setProfile(profile); | 74 | wlanconfig->setProfile(profile); |
75 | return wlanconfig; | 75 | return wlanconfig; |
76 | } | 76 | } |
77 | 77 | ||
78 | /** | 78 | /** |
79 | * Create, and return the Information Module | 79 | * Create, and return the Information Module |
80 | * @return QWidget* pointer to this modules info. | 80 | * @return QWidget* pointer to this modules info. |
81 | */ | 81 | */ |
82 | QWidget *WLANModule::information(Interface *i){ | 82 | QWidget *WLANModule::information(Interface *i){ |
83 | WExtensions we(i->getInterfaceName()); | 83 | WExtensions we(i->getInterfaceName()); |
84 | if(!we.doesHaveWirelessExtensions()) | 84 | if(!we.doesHaveWirelessExtensions()) |
85 | return NULL; | 85 | return NULL; |
86 | 86 | ||
87 | return getInfo( i ); | 87 | return getInfo( i ); |
88 | } | 88 | } |
89 | 89 | ||
90 | /** | 90 | /** |
91 | * Get all active (up or down) interfaces | 91 | * Get all active (up or down) interfaces |
92 | * @return QList<Interface> A list of interfaces that exsist that havn't | 92 | * @return QList<Interface> A list of interfaces that exsist that havn't |
93 | * been called by isOwner() | 93 | * been called by isOwner() |
94 | */ | 94 | */ |
95 | QList<Interface> WLANModule::getInterfaces(){ | 95 | QList<Interface> WLANModule::getInterfaces(){ |
96 | return list; | 96 | return list; |
97 | } | 97 | } |
98 | 98 | ||
99 | /** | 99 | /** |
100 | * Attempt to add a new interface as defined by name | 100 | * Attempt to add a new interface as defined by name |
101 | * @param name the name of the type of interface that should be created given | 101 | * @param name the name of the type of interface that should be created given |
102 | * by possibleNewInterfaces(); | 102 | * by possibleNewInterfaces(); |
103 | * @return Interface* NULL if it was unable to be created. | 103 | * @return Interface* NULL if it was unable to be created. |
104 | */ | 104 | */ |
105 | Interface *WLANModule::addNewInterface(const QString &){ | 105 | Interface *WLANModule::addNewInterface(const QString &){ |
106 | // We can't add a 802.11 interface, either the hardware will be there | 106 | // We can't add a 802.11 interface, either the hardware will be there |
107 | // or it wont. | 107 | // or it wont. |
108 | return NULL; | 108 | return NULL; |
109 | } | 109 | } |
110 | 110 | ||
111 | /** | 111 | /** |
112 | * Attempts to remove the interface, doesn't delete i | 112 | * Attempts to remove the interface, doesn't delete i |
113 | * @return bool true if successfull, false otherwise. | 113 | * @return bool true if successful, false otherwise. |
114 | */ | 114 | */ |
115 | bool WLANModule::remove(Interface*){ | 115 | bool WLANModule::remove(Interface*){ |
116 | // Can't remove a hardware device, you can stop it though. | 116 | // Can't remove a hardware device, you can stop it though. |
117 | return false; | 117 | return false; |
118 | } | 118 | } |
119 | 119 | ||
120 | void WLANModule::receive(const QCString ¶m, const QByteArray &arg) | 120 | void WLANModule::receive(const QCString ¶m, const QByteArray &arg) |
121 | { | 121 | { |
122 | qDebug("WLANModule::receive "+param); | 122 | qDebug("WLANModule::receive "+param); |
123 | QStringList params = QStringList::split(",",param); | 123 | QStringList params = QStringList::split(",",param); |
124 | int count = params.count(); | 124 | int count = params.count(); |
125 | qDebug("WLANModule got %i params", count ); | 125 | qDebug("WLANModule got %i params", count ); |
126 | if (count < 2){ | 126 | if (count < 2){ |
127 | qDebug("Erorr less than 2 parameter"); | 127 | qDebug("Erorr less than 2 parameter"); |
128 | qDebug("RETURNING"); | 128 | qDebug("RETURNING"); |
129 | return; | 129 | return; |
130 | } | 130 | } |
131 | 131 | ||
132 | QDataStream stream(arg,IO_ReadOnly); | 132 | QDataStream stream(arg,IO_ReadOnly); |
133 | QString interface; | 133 | QString interface; |
134 | QString action; | 134 | QString action; |
135 | int countMsgs = 0; | 135 | int countMsgs = 0; |
136 | stream >> interface; | 136 | stream >> interface; |
137 | qDebug("got count? >%s<",interface.latin1()); | 137 | qDebug("got count? >%s<",interface.latin1()); |
138 | if (interface == "count"){ | 138 | if (interface == "count"){ |
139 | qDebug("got count"); | 139 | qDebug("got count"); |
140 | stream >> action; | 140 | stream >> action; |
141 | qDebug("Got count num >%s<", action.latin1()); | 141 | qDebug("Got count num >%s<", action.latin1()); |
142 | countMsgs = action.toInt(); | 142 | countMsgs = action.toInt(); |
143 | } | 143 | } |
144 | 144 | ||
145 | QDialog *toShow; | 145 | QDialog *toShow; |
146 | //while (! stream.atEnd() ){ | 146 | //while (! stream.atEnd() ){ |
147 | for (int i = 0; i < countMsgs; i++){ | 147 | for (int i = 0; i < countMsgs; i++){ |
148 | qDebug("start stream %d/%d",i,countMsgs); | 148 | qDebug("start stream %d/%d",i,countMsgs); |
149 | if (stream.atEnd()){ | 149 | if (stream.atEnd()){ |
150 | qDebug("end of stream"); | 150 | qDebug("end of stream"); |
151 | return; | 151 | return; |
152 | } | 152 | } |
153 | stream >> interface; | 153 | stream >> interface; |
154 | qDebug("got iface"); | 154 | qDebug("got iface"); |
155 | stream >> action; | 155 | stream >> action; |
156 | qDebug("WLANModule got interface %s and acion %s", interface.latin1(), action.latin1()); | 156 | qDebug("WLANModule got interface %s and acion %s", interface.latin1(), action.latin1()); |
157 | // find interfaces | 157 | // find interfaces |
158 | Interface *ifa=0; | 158 | Interface *ifa=0; |
159 | for ( Interface *i=list.first(); i != 0; i=list.next() ){ | 159 | for ( Interface *i=list.first(); i != 0; i=list.next() ){ |
160 | if (i->getInterfaceName() == interface){ | 160 | if (i->getInterfaceName() == interface){ |
161 | qDebug("WLANModule found interface %s",interface.latin1()); | 161 | qDebug("WLANModule found interface %s",interface.latin1()); |
162 | ifa = i; | 162 | ifa = i; |
163 | } | 163 | } |
164 | } | 164 | } |
165 | 165 | ||
166 | if (ifa == 0){ | 166 | if (ifa == 0){ |
167 | qDebug("WLANModule Did not find %s",interface.latin1()); | 167 | qDebug("WLANModule Did not find %s",interface.latin1()); |
168 | qDebug("skipping"); | 168 | qDebug("skipping"); |
169 | count = 0; | 169 | count = 0; |
170 | } | 170 | } |
171 | 171 | ||
172 | if (count == 2){ | 172 | if (count == 2){ |
173 | // those should call the interface directly | 173 | // those should call the interface directly |
174 | QWidget *info = getInfo( ifa ); | 174 | QWidget *info = getInfo( ifa ); |
175 | info->showMaximized(); | 175 | info->showMaximized(); |
176 | 176 | ||
177 | if ( action.contains("start" ) ){ | 177 | if ( action.contains("start" ) ){ |
178 | ifa->start(); | 178 | ifa->start(); |
179 | } else if ( action.contains("restart" ) ){ | 179 | } else if ( action.contains("restart" ) ){ |
180 | ifa->restart(); | 180 | ifa->restart(); |
181 | } else if ( action.contains("stop" ) ){ | 181 | } else if ( action.contains("stop" ) ){ |
182 | ifa->stop(); | 182 | ifa->stop(); |
183 | }else if ( action.contains("refresh" ) ){ | 183 | }else if ( action.contains("refresh" ) ){ |
184 | ifa->refresh(); | 184 | ifa->refresh(); |
185 | } | 185 | } |
186 | }else if (count == 3){ | 186 | }else if (count == 3){ |
187 | QString value; | 187 | QString value; |
188 | if (!wlanconfigWiget){ | 188 | if (!wlanconfigWiget){ |
189 | //FIXME: what if it got closed meanwhile? | 189 | //FIXME: what if it got closed meanwhile? |
190 | wlanconfigWiget = (WLANImp*) configure(ifa); | 190 | wlanconfigWiget = (WLANImp*) configure(ifa); |
191 | toShow = (QDialog*) wlanconfigWiget; | 191 | toShow = (QDialog*) wlanconfigWiget; |
192 | } | 192 | } |
193 | wlanconfigWiget->showMaximized(); | 193 | wlanconfigWiget->showMaximized(); |
194 | stream >> value; | 194 | stream >> value; |
195 | qDebug("WLANModule (build 4) is setting %s of %s to %s", action.latin1(), interface.latin1(), value.latin1() ); | 195 | qDebug("WLANModule (build 4) is setting %s of %s to %s", action.latin1(), interface.latin1(), value.latin1() ); |
196 | if (value.isEmpty()){ | 196 | if (value.isEmpty()){ |
197 | qDebug("value is empty!!!\nreturning"); | 197 | qDebug("value is empty!!!\nreturning"); |
198 | return; | 198 | return; |
199 | } | 199 | } |
200 | if ( action.contains("ESSID") ){ | 200 | if ( action.contains("ESSID") ){ |
201 | QComboBox *combo = wlanconfigWiget->essid; | 201 | QComboBox *combo = wlanconfigWiget->essid; |
202 | bool found = false; | 202 | bool found = false; |
203 | for ( int i = 0; i < combo->count(); i++) | 203 | for ( int i = 0; i < combo->count(); i++) |
204 | if ( combo->text( i ) == value ){ | 204 | if ( combo->text( i ) == value ){ |
205 | combo->setCurrentItem( i ); | 205 | combo->setCurrentItem( i ); |
206 | found = true; | 206 | found = true; |
207 | } | 207 | } |
208 | if (!found) combo->insertItem( value, 0 ); | 208 | if (!found) combo->insertItem( value, 0 ); |
209 | }else if ( action.contains("Mode") ){ | 209 | }else if ( action.contains("Mode") ){ |
diff --git a/noncore/settings/tabmanager/tabmanager.cpp b/noncore/settings/tabmanager/tabmanager.cpp index c9d7aed..ff5957c 100644 --- a/noncore/settings/tabmanager/tabmanager.cpp +++ b/noncore/settings/tabmanager/tabmanager.cpp | |||
@@ -95,211 +95,211 @@ void TabManager::rescanFolder(QString directory, QListViewItem* parent){ | |||
95 | AppLnk app(directory + "/" + fi->fileName()); | 95 | AppLnk app(directory + "/" + fi->fileName()); |
96 | if(parent){ | 96 | if(parent){ |
97 | parent->setPixmap(0,app.pixmap()); | 97 | parent->setPixmap(0,app.pixmap()); |
98 | parent->setText(0, app.name()); | 98 | parent->setText(0, app.name()); |
99 | } | 99 | } |
100 | } | 100 | } |
101 | else{ | 101 | else{ |
102 | // Add any desktop files found. | 102 | // Add any desktop files found. |
103 | QListViewItem* newItem; | 103 | QListViewItem* newItem; |
104 | if(directory != HOME_APP_DIR){ | 104 | if(directory != HOME_APP_DIR){ |
105 | if(!parent) | 105 | if(!parent) |
106 | newItem = new QListViewItem(tabList, fi->fileName()); | 106 | newItem = new QListViewItem(tabList, fi->fileName()); |
107 | else | 107 | else |
108 | newItem = new QListViewItem(parent, fi->fileName()); | 108 | newItem = new QListViewItem(parent, fi->fileName()); |
109 | if(fi->fileName().right(APPLICATION_EXTENSION_LENGTH) == APPLICATION_EXTENSION){ | 109 | if(fi->fileName().right(APPLICATION_EXTENSION_LENGTH) == APPLICATION_EXTENSION){ |
110 | AppLnk app(directory + "/" + fi->fileName()); | 110 | AppLnk app(directory + "/" + fi->fileName()); |
111 | newItem->setPixmap(0,app.pixmap()); | 111 | newItem->setPixmap(0,app.pixmap()); |
112 | newItem->setText(0, app.name()); | 112 | newItem->setText(0, app.name()); |
113 | itemList.insert(newItem, directory + "/" + fi->fileName()); | 113 | itemList.insert(newItem, directory + "/" + fi->fileName()); |
114 | } | 114 | } |
115 | } | 115 | } |
116 | } | 116 | } |
117 | } | 117 | } |
118 | ++it; // goto next list element | 118 | ++it; // goto next list element |
119 | } | 119 | } |
120 | } | 120 | } |
121 | 121 | ||
122 | /** | 122 | /** |
123 | * Create a new blank Tab. | 123 | * Create a new blank Tab. |
124 | * Create a physical folder with .directory file | 124 | * Create a physical folder with .directory file |
125 | * Create a item on the list | 125 | * Create a item on the list |
126 | */ | 126 | */ |
127 | void TabManager::newFolder(){ | 127 | void TabManager::newFolder(){ |
128 | QDir r; | 128 | QDir r; |
129 | r.mkdir(QString(HOME_APP_DIR) + "/" + NEW_FOLDER); | 129 | r.mkdir(QString(HOME_APP_DIR) + "/" + NEW_FOLDER); |
130 | system((QString("echo [Desktop Entry] | cat >> ") + HOME_APP_DIR + "/" + NEW_FOLDER "/.directory").latin1()); | 130 | system((QString("echo [Desktop Entry] | cat >> ") + HOME_APP_DIR + "/" + NEW_FOLDER "/.directory").latin1()); |
131 | system((QString("echo Name=" NEW_FOLDER " | cat >> ") + HOME_APP_DIR + "/" + NEW_FOLDER "/.directory").latin1()); | 131 | system((QString("echo Name=" NEW_FOLDER " | cat >> ") + HOME_APP_DIR + "/" + NEW_FOLDER "/.directory").latin1()); |
132 | 132 | ||
133 | QString homeLocation = QString(HOME_APP_DIR) + "/" + NEW_FOLDER + "/.directory"; | 133 | QString homeLocation = QString(HOME_APP_DIR) + "/" + NEW_FOLDER + "/.directory"; |
134 | QListViewItem *newItem = new QListViewItem(tabList, NEW_FOLDER); | 134 | QListViewItem *newItem = new QListViewItem(tabList, NEW_FOLDER); |
135 | itemList.insert(newItem, homeLocation ); | 135 | itemList.insert(newItem, homeLocation ); |
136 | 136 | ||
137 | // We have changed something. | 137 | // We have changed something. |
138 | changed = true; | 138 | changed = true; |
139 | } | 139 | } |
140 | 140 | ||
141 | /** | 141 | /** |
142 | * Create a new blank application | 142 | * Create a new blank application |
143 | * Make sure a tab is selected | 143 | * Make sure a tab is selected |
144 | * create physical file | 144 | * create physical file |
145 | * fill file with default information (entry, name, type). | 145 | * fill file with default information (entry, name, type). |
146 | */ | 146 | */ |
147 | void TabManager::newApplication(){ | 147 | void TabManager::newApplication(){ |
148 | QListViewItem *item = tabList->currentItem(); | 148 | QListViewItem *item = tabList->currentItem(); |
149 | if(!item || item->parent()) | 149 | if(!item || item->parent()) |
150 | return; | 150 | return; |
151 | 151 | ||
152 | QString parentDir = itemList[item].mid(0,itemList[item].length()-11); | 152 | QString parentDir = itemList[item].mid(0,itemList[item].length()-11); |
153 | QString homeLocation = parentDir + "/" NEW_APPLICATION APPLICATION_EXTENSION; | 153 | QString homeLocation = parentDir + "/" NEW_APPLICATION APPLICATION_EXTENSION; |
154 | system((QString("echo [Desktop Entry] | cat >> ") + homeLocation).latin1()); | 154 | system((QString("echo [Desktop Entry] | cat >> ") + homeLocation).latin1()); |
155 | system((QString("echo Name=" NEW_APPLICATION " | cat >> ") + homeLocation).latin1()); | 155 | system((QString("echo Name=" NEW_APPLICATION " | cat >> ") + homeLocation).latin1()); |
156 | int slash = parentDir.findRev('/', -1); | 156 | int slash = parentDir.findRev('/', -1); |
157 | QString folderName = parentDir.mid(slash+1, parentDir.length()); | 157 | QString folderName = parentDir.mid(slash+1, parentDir.length()); |
158 | 158 | ||
159 | system((QString("echo Type=") + folderName + " | cat >> " + homeLocation).latin1()); | 159 | system((QString("echo Type=") + folderName + " | cat >> " + homeLocation).latin1()); |
160 | 160 | ||
161 | // Insert into the tree | 161 | // Insert into the tree |
162 | QListViewItem *newItem = new QListViewItem(item, NEW_APPLICATION); | 162 | QListViewItem *newItem = new QListViewItem(item, NEW_APPLICATION); |
163 | itemList.insert(newItem, homeLocation ); | 163 | itemList.insert(newItem, homeLocation ); |
164 | 164 | ||
165 | // We have changed something. | 165 | // We have changed something. |
166 | changed = true; | 166 | changed = true; |
167 | } | 167 | } |
168 | 168 | ||
169 | /** | 169 | /** |
170 | * Remove the item. | 170 | * Remove the item. |
171 | * Check if we can | 171 | * Check if we can |
172 | * Prompt user | 172 | * Prompt user |
173 | * Delete physical file (Dir, remove .dir, then dir. File, remove file) | 173 | * Delete physical file (Dir, remove .dir, then dir. File, remove file) |
174 | * Remove from installer if need too. | 174 | * Remove from installer if need too. |
175 | */ | 175 | */ |
176 | void TabManager::removeItem(){ | 176 | void TabManager::removeItem(){ |
177 | // Make sure we can delete | 177 | // Make sure we can delete |
178 | QListViewItem *item = tabList->currentItem(); | 178 | QListViewItem *item = tabList->currentItem(); |
179 | if(!item) | 179 | if(!item) |
180 | return; | 180 | return; |
181 | if(item->childCount() > 0){ | 181 | if(item->childCount() > 0){ |
182 | QMessageBox::critical(this, tr("Message"), tr("Can't remove with applications\nstill in the group."), tr("Ok") ); | 182 | QMessageBox::critical(this, tr("Message"), tr("Can't remove with applications\nstill in the group."), tr("Ok") ); |
183 | return; | 183 | return; |
184 | } | 184 | } |
185 | 185 | ||
186 | // Prompt. | 186 | // Prompt. |
187 | int answer = QMessageBox::warning(this, tr("Message"), tr("Are you sure you want to delete?"), tr("Yes"), tr("Cancel"), 0, 1 ); | 187 | int answer = QMessageBox::warning(this, tr("Message"), tr("Are you sure you want to delete?"), tr("Yes"), tr("Cancel"), 0, 1 ); |
188 | if (answer) | 188 | if (answer) |
189 | return; | 189 | return; |
190 | 190 | ||
191 | bool removeSuccessfull = true; | 191 | bool removeSuccessful = true; |
192 | QString location = itemList[item]; | 192 | QString location = itemList[item]; |
193 | // Remove file (.directory in a Directory case) | 193 | // Remove file (.directory in a Directory case) |
194 | if(!QFile::remove(location)) | 194 | if(!QFile::remove(location)) |
195 | removeSuccessfull = false; | 195 | removeSuccessful = false; |
196 | 196 | ||
197 | // Remove directory | 197 | // Remove directory |
198 | if(item->parent() == NULL){ | 198 | if(item->parent() == NULL){ |
199 | // Remove .directory file string | 199 | // Remove .directory file string |
200 | location = location.mid(0,location.length()-10); | 200 | location = location.mid(0,location.length()-10); |
201 | QDir dir; | 201 | QDir dir; |
202 | if(!dir.rmdir(location)) | 202 | if(!dir.rmdir(location)) |
203 | removeSuccessfull = false; | 203 | removeSuccessful = false; |
204 | else | 204 | else |
205 | removeSuccessfull = true; | 205 | removeSuccessful = true; |
206 | } | 206 | } |
207 | 207 | ||
208 | // If removing failed. | 208 | // If removing failed. |
209 | if(!removeSuccessfull){ | 209 | if(!removeSuccessful){ |
210 | qDebug((QString("removeItem: ") + location).latin1()); | 210 | qDebug((QString("removeItem: ") + location).latin1()); |
211 | QMessageBox::critical(this, tr("Message"), tr("Can't remove."), tr("Ok") ); | 211 | QMessageBox::critical(this, tr("Message"), tr("Can't remove."), tr("Ok") ); |
212 | return; | 212 | return; |
213 | } | 213 | } |
214 | 214 | ||
215 | // Remove from the installer so it wont fail. | 215 | // Remove from the installer so it wont fail. |
216 | // Don't need to do this sense the current install uses rm -f so no error | 216 | // Don't need to do this sense the current install uses rm -f so no error |
217 | 217 | ||
218 | // Remove from the gui list. | 218 | // Remove from the gui list. |
219 | itemList.remove(item); | 219 | itemList.remove(item); |
220 | if(item->parent()) | 220 | if(item->parent()) |
221 | item->parent()->takeItem(item); | 221 | item->parent()->takeItem(item); |
222 | delete item; | 222 | delete item; |
223 | 223 | ||
224 | // We have changed something. | 224 | // We have changed something. |
225 | changed = true; | 225 | changed = true; |
226 | } | 226 | } |
227 | 227 | ||
228 | /** | 228 | /** |
229 | * Helper function. Edits the current item. | 229 | * Helper function. Edits the current item. |
230 | * calls editItem with the currently selected item. | 230 | * calls editItem with the currently selected item. |
231 | */ | 231 | */ |
232 | void TabManager::editCurrentItem(){ | 232 | void TabManager::editCurrentItem(){ |
233 | editItem(tabList->currentItem()); | 233 | editItem(tabList->currentItem()); |
234 | } | 234 | } |
235 | 235 | ||
236 | /** | 236 | /** |
237 | * Edit the item that is passed in. | 237 | * Edit the item that is passed in. |
238 | * Show application dialog and if anything changed | 238 | * Show application dialog and if anything changed |
239 | * @param item the item to edit. | 239 | * @param item the item to edit. |
240 | */ | 240 | */ |
241 | void TabManager::editItem( QListViewItem * item){ | 241 | void TabManager::editItem( QListViewItem * item){ |
242 | if(!item) | 242 | if(!item) |
243 | return; | 243 | return; |
244 | 244 | ||
245 | TabAppLnk app(itemList[item]); | 245 | TabAppLnk app(itemList[item]); |
246 | if(!app.isValid()){ | 246 | if(!app.isValid()){ |
247 | qDebug(QString("editItem: Not a valid applnk file: ") + itemList[item].latin1()); | 247 | qDebug(QString("editItem: Not a valid applnk file: ") + itemList[item].latin1()); |
248 | return; | 248 | return; |
249 | } | 249 | } |
250 | 250 | ||
251 | // Fill with all of the icons | 251 | // Fill with all of the icons |
252 | if(!application){ | 252 | if(!application){ |
253 | Wait waitDialog(this, "Wait dialog"); | 253 | Wait waitDialog(this, "Wait dialog"); |
254 | waitDialog.waitLabel->setText(tr("Gathering icons...")); | 254 | waitDialog.waitLabel->setText(tr("Gathering icons...")); |
255 | waitDialog.show(); | 255 | waitDialog.show(); |
256 | qApp->processEvents(); | 256 | qApp->processEvents(); |
257 | application = new AppEdit(this, "Application edit", true); | 257 | application = new AppEdit(this, "Application edit", true); |
258 | 258 | ||
259 | QDir d(QPEApplication::qpeDir() + "/pics/"); | 259 | QDir d(QPEApplication::qpeDir() + "/pics/"); |
260 | d.setFilter( QDir::Files); | 260 | d.setFilter( QDir::Files); |
261 | 261 | ||
262 | const QFileInfoList *list = d.entryInfoList(); | 262 | const QFileInfoList *list = d.entryInfoList(); |
263 | QFileInfoListIterator it( *list ); // create list iterator | 263 | QFileInfoListIterator it( *list ); // create list iterator |
264 | QFileInfo *fi; // pointer for traversing | 264 | QFileInfo *fi; // pointer for traversing |
265 | 265 | ||
266 | while ( (fi=it.current()) ) { // for each file... | 266 | while ( (fi=it.current()) ) { // for each file... |
267 | QString fileName = fi->fileName(); | 267 | QString fileName = fi->fileName(); |
268 | if(fileName.right(4) == ".png"){ | 268 | if(fileName.right(4) == ".png"){ |
269 | fileName = fileName.mid(0,fileName.length()-4); | 269 | fileName = fileName.mid(0,fileName.length()-4); |
270 | QPixmap imageOfFile(Resource::loadPixmap(fileName)); | 270 | QPixmap imageOfFile(Resource::loadPixmap(fileName)); |
271 | QImage foo = imageOfFile.convertToImage(); | 271 | QImage foo = imageOfFile.convertToImage(); |
272 | foo = foo.smoothScale(16,16); | 272 | foo = foo.smoothScale(16,16); |
273 | imageOfFile.convertFromImage(foo); | 273 | imageOfFile.convertFromImage(foo); |
274 | application->iconLineEdit->insertItem(imageOfFile,fileName); | 274 | application->iconLineEdit->insertItem(imageOfFile,fileName); |
275 | } | 275 | } |
276 | //qDebug(fi->fileName().latin1()); | 276 | //qDebug(fi->fileName().latin1()); |
277 | ++it; | 277 | ++it; |
278 | } | 278 | } |
279 | waitDialog.hide(); | 279 | waitDialog.hide(); |
280 | } | 280 | } |
281 | int pixmap = -1; | 281 | int pixmap = -1; |
282 | QString pixmapText = app.pixmapString(); | 282 | QString pixmapText = app.pixmapString(); |
283 | QComboBox *f = application->iconLineEdit; | 283 | QComboBox *f = application->iconLineEdit; |
284 | for(int i = 0; i < application->iconLineEdit->count(); i++){ | 284 | for(int i = 0; i < application->iconLineEdit->count(); i++){ |
285 | if(f->text(i) == pixmapText){ | 285 | if(f->text(i) == pixmapText){ |
286 | pixmap = i; | 286 | pixmap = i; |
287 | break; | 287 | break; |
288 | } | 288 | } |
289 | } | 289 | } |
290 | if(pixmap != -1) | 290 | if(pixmap != -1) |
291 | application->iconLineEdit->setCurrentItem(pixmap); | 291 | application->iconLineEdit->setCurrentItem(pixmap); |
292 | else if(pixmapText.isEmpty()){ | 292 | else if(pixmapText.isEmpty()){ |
293 | application->iconLineEdit->setCurrentItem(0); | 293 | application->iconLineEdit->setCurrentItem(0); |
294 | } | 294 | } |
295 | else{ | 295 | else{ |
296 | QPixmap imageOfFile(Resource::loadPixmap(pixmapText)); | 296 | QPixmap imageOfFile(Resource::loadPixmap(pixmapText)); |
297 | QImage foo = imageOfFile.convertToImage(); | 297 | QImage foo = imageOfFile.convertToImage(); |
298 | foo = foo.smoothScale(16,16); | 298 | foo = foo.smoothScale(16,16); |
299 | imageOfFile.convertFromImage(foo); | 299 | imageOfFile.convertFromImage(foo); |
300 | application->iconLineEdit->insertItem(imageOfFile,pixmapText,0); | 300 | application->iconLineEdit->insertItem(imageOfFile,pixmapText,0); |
301 | application->iconLineEdit->setCurrentItem(0); | 301 | application->iconLineEdit->setCurrentItem(0); |
302 | } | 302 | } |
303 | 303 | ||
304 | application->nameLineEdit->setText(app.name()); | 304 | application->nameLineEdit->setText(app.name()); |
305 | application->execLineEdit->setText(app.exec()); | 305 | application->execLineEdit->setText(app.exec()); |
@@ -343,166 +343,166 @@ void TabManager::editItem( QListViewItem * item){ | |||
343 | item->setText(0,app.name()); | 343 | item->setText(0,app.name()); |
344 | item->setPixmap(0,app.pixmap()); | 344 | item->setPixmap(0,app.pixmap()); |
345 | 345 | ||
346 | // We have changed something. | 346 | // We have changed something. |
347 | changed = true; | 347 | changed = true; |
348 | 348 | ||
349 | // If we were dealing with a new folder or new application change | 349 | // If we were dealing with a new folder or new application change |
350 | // the file names. Also change the item location in itemList | 350 | // the file names. Also change the item location in itemList |
351 | if(oldName == NEW_FOLDER){ | 351 | if(oldName == NEW_FOLDER){ |
352 | QDir r; | 352 | QDir r; |
353 | QString oldName = itemList[item]; | 353 | QString oldName = itemList[item]; |
354 | oldName = oldName.mid(0,oldName.length()-11); | 354 | oldName = oldName.mid(0,oldName.length()-11); |
355 | QString newName = oldName.mid(0,oldName.length()-9); | 355 | QString newName = oldName.mid(0,oldName.length()-9); |
356 | newName = newName + "/" + app.name(); | 356 | newName = newName + "/" + app.name(); |
357 | r.rename(oldName, newName); | 357 | r.rename(oldName, newName); |
358 | itemList.remove(item); | 358 | itemList.remove(item); |
359 | itemList.insert(item, newName + "/.directory" ); | 359 | itemList.insert(item, newName + "/.directory" ); |
360 | } | 360 | } |
361 | else if(oldName == NEW_APPLICATION){ | 361 | else if(oldName == NEW_APPLICATION){ |
362 | if(!item->parent()) | 362 | if(!item->parent()) |
363 | return; | 363 | return; |
364 | QString parentDir = itemList[item->parent()]; | 364 | QString parentDir = itemList[item->parent()]; |
365 | QDir r; | 365 | QDir r; |
366 | QString oldName = itemList[item]; | 366 | QString oldName = itemList[item]; |
367 | QString newName = oldName.mid(0, parentDir.length()-10); | 367 | QString newName = oldName.mid(0, parentDir.length()-10); |
368 | newName = newName + app.name() + APPLICATION_EXTENSION; | 368 | newName = newName + app.name() + APPLICATION_EXTENSION; |
369 | r.rename(oldName, newName); | 369 | r.rename(oldName, newName); |
370 | itemList.remove(item); | 370 | itemList.remove(item); |
371 | itemList.insert(item, newName); | 371 | itemList.insert(item, newName); |
372 | } | 372 | } |
373 | } | 373 | } |
374 | 374 | ||
375 | /** | 375 | /** |
376 | * Move an application from one directory to another. | 376 | * Move an application from one directory to another. |
377 | * Move in the gui, move in the applnk file, move in the installer. | 377 | * Move in the gui, move in the applnk file, move in the installer. |
378 | * @param item the application to move | 378 | * @param item the application to move |
379 | * @pearam newGroup the new parent of this application | 379 | * @pearam newGroup the new parent of this application |
380 | */ | 380 | */ |
381 | void TabManager::moveApplication(QListViewItem *item, QListViewItem *newGroup){ | 381 | void TabManager::moveApplication(QListViewItem *item, QListViewItem *newGroup){ |
382 | // Can we even move it? | 382 | // Can we even move it? |
383 | if(!item || !item->parent() || newGroup->parent()) | 383 | if(!item || !item->parent() || newGroup->parent()) |
384 | return; | 384 | return; |
385 | if(item->parent() == newGroup) | 385 | if(item->parent() == newGroup) |
386 | return; | 386 | return; |
387 | 387 | ||
388 | // Get the new folder, new file name, | 388 | // Get the new folder, new file name, |
389 | QString newFolder = itemList[newGroup]; | 389 | QString newFolder = itemList[newGroup]; |
390 | newFolder = newFolder.mid(0,newFolder.length()-11); | 390 | newFolder = newFolder.mid(0,newFolder.length()-11); |
391 | int slash = newFolder.findRev('/', -1); | 391 | int slash = newFolder.findRev('/', -1); |
392 | QString folderName = newFolder.mid(slash+1, newFolder.length()); | 392 | QString folderName = newFolder.mid(slash+1, newFolder.length()); |
393 | 393 | ||
394 | QString desktopFile = itemList[item]; | 394 | QString desktopFile = itemList[item]; |
395 | slash = desktopFile.findRev('/', -1); | 395 | slash = desktopFile.findRev('/', -1); |
396 | desktopFile = desktopFile.mid(slash, desktopFile.length()); | 396 | desktopFile = desktopFile.mid(slash, desktopFile.length()); |
397 | newFolder = newFolder + desktopFile; | 397 | newFolder = newFolder + desktopFile; |
398 | 398 | ||
399 | // Move file | 399 | // Move file |
400 | QDir r; | 400 | QDir r; |
401 | if(!r.rename(itemList[item], newFolder)){ | 401 | if(!r.rename(itemList[item], newFolder)){ |
402 | QMessageBox::critical(this, tr("Message"), "Can't move application.", tr("Ok") ); | 402 | QMessageBox::critical(this, tr("Message"), "Can't move application.", tr("Ok") ); |
403 | return; | 403 | return; |
404 | } | 404 | } |
405 | //qDebug((QString("moveApplication: ") + itemList[item]).latin1()); | 405 | //qDebug((QString("moveApplication: ") + itemList[item]).latin1()); |
406 | //qDebug((QString("moveApplication: ") + newFolder).latin1()); | 406 | //qDebug((QString("moveApplication: ") + newFolder).latin1()); |
407 | 407 | ||
408 | // Move in the gui | 408 | // Move in the gui |
409 | item->parent()->takeItem(item); | 409 | item->parent()->takeItem(item); |
410 | newGroup->insertItem(item); | 410 | newGroup->insertItem(item); |
411 | newGroup->setOpen(true); | 411 | newGroup->setOpen(true); |
412 | 412 | ||
413 | // Move file in the installer | 413 | // Move file in the installer |
414 | QString installedAppFile; | 414 | QString installedAppFile; |
415 | if(findInstalledApplication(desktopFile, installedAppFile)) | 415 | if(findInstalledApplication(desktopFile, installedAppFile)) |
416 | swapInstalledLocation(installedAppFile, desktopFile, newFolder); | 416 | swapInstalledLocation(installedAppFile, desktopFile, newFolder); |
417 | else | 417 | else |
418 | qDebug("moveApplication: No installed app found for dekstop file"); | 418 | qDebug("moveApplication: No installed app found for dekstop file"); |
419 | 419 | ||
420 | // Move application type | 420 | // Move application type |
421 | AppLnk app(newFolder); | 421 | AppLnk app(newFolder); |
422 | app.setType(folderName); | 422 | app.setType(folderName); |
423 | app.writeLink(); | 423 | app.writeLink(); |
424 | 424 | ||
425 | // Move in our internal list | 425 | // Move in our internal list |
426 | itemList.remove(item); | 426 | itemList.remove(item); |
427 | itemList.insert(item, newFolder); | 427 | itemList.insert(item, newFolder); |
428 | 428 | ||
429 | // We have changed something. | 429 | // We have changed something. |
430 | changed = true; | 430 | changed = true; |
431 | } | 431 | } |
432 | 432 | ||
433 | /** | 433 | /** |
434 | * File the installed application that has this desktop file. | 434 | * File the installed application that has this desktop file. |
435 | * Go through each file in HOME_APP_INSTALL_DIR and see if it contains desktop | 435 | * Go through each file in HOME_APP_INSTALL_DIR and see if it contains desktop |
436 | * file | 436 | * file |
437 | * @param desktopFile - the .desktop file to search for [foo.desktop] | 437 | * @param desktopFile - the .desktop file to search for [foo.desktop] |
438 | * @param installedAppFile - location of the app install list | 438 | * @param installedAppFile - location of the app install list |
439 | * @return true if successfull, false if file not found. | 439 | * @return true if successful, false if file not found. |
440 | */ | 440 | */ |
441 | bool TabManager::findInstalledApplication(QString desktopFile, QString &installedAppFile){ | 441 | bool TabManager::findInstalledApplication(QString desktopFile, QString &installedAppFile){ |
442 | 442 | ||
443 | QDir d; | 443 | QDir d; |
444 | d.setPath(HOME_APP_INSTALL_DIR); | 444 | d.setPath(HOME_APP_INSTALL_DIR); |
445 | d.setFilter( QDir::Files ); | 445 | d.setFilter( QDir::Files ); |
446 | 446 | ||
447 | const QFileInfoList *list = d.entryInfoList(); | 447 | const QFileInfoList *list = d.entryInfoList(); |
448 | QFileInfoListIterator it( *list ); // create list iterator | 448 | QFileInfoListIterator it( *list ); // create list iterator |
449 | QFileInfo *fi; // pointer for traversing | 449 | QFileInfo *fi; // pointer for traversing |
450 | 450 | ||
451 | while ( (fi=it.current()) ) { // for each file... | 451 | while ( (fi=it.current()) ) { // for each file... |
452 | QFile file(QString(HOME_APP_INSTALL_DIR) + "/" + fi->fileName()); | 452 | QFile file(QString(HOME_APP_INSTALL_DIR) + "/" + fi->fileName()); |
453 | if ( file.open(IO_ReadOnly) ) { // file opened successfully | 453 | if ( file.open(IO_ReadOnly) ) { // file opened successfully |
454 | QTextStream stream( &file ); // use a text stream | 454 | QTextStream stream( &file ); // use a text stream |
455 | QString line; | 455 | QString line; |
456 | while ( !stream.eof() ) { // until end of file... | 456 | while ( !stream.eof() ) { // until end of file... |
457 | line = stream.readLine(); // line of text excluding '\n' | 457 | line = stream.readLine(); // line of text excluding '\n' |
458 | if(line.contains(desktopFile)){ | 458 | if(line.contains(desktopFile)){ |
459 | installedAppFile = QString(HOME_APP_INSTALL_DIR) + "/" + fi->fileName(); | 459 | installedAppFile = QString(HOME_APP_INSTALL_DIR) + "/" + fi->fileName(); |
460 | file.close(); | 460 | file.close(); |
461 | return true; | 461 | return true; |
462 | } | 462 | } |
463 | } | 463 | } |
464 | file.close(); | 464 | file.close(); |
465 | } | 465 | } |
466 | else | 466 | else |
467 | qDebug((QString("findInstalledApplication: Can't open file") + HOME_APP_INSTALL_DIR + "/" + fi->fileName()).latin1()); | 467 | qDebug((QString("findInstalledApplication: Can't open file") + HOME_APP_INSTALL_DIR + "/" + fi->fileName()).latin1()); |
468 | ++it; // goto next list element | 468 | ++it; // goto next list element |
469 | } | 469 | } |
470 | return false; | 470 | return false; |
471 | } | 471 | } |
472 | 472 | ||
473 | /** | 473 | /** |
474 | * Open a file and replace a file containing the old desktop file with the new. | 474 | * Open a file and replace a file containing the old desktop file with the new. |
475 | * @param installedAppFile application installed list | 475 | * @param installedAppFile application installed list |
476 | * @param desktopFile old .desktop file | 476 | * @param desktopFile old .desktop file |
477 | * @param newLocation new .desktop file | 477 | * @param newLocation new .desktop file |
478 | */ | 478 | */ |
479 | void TabManager::swapInstalledLocation( QString installedAppFile, QString desktopFile, QString newLocation ){ | 479 | void TabManager::swapInstalledLocation( QString installedAppFile, QString desktopFile, QString newLocation ){ |
480 | QFile file(installedAppFile); | 480 | QFile file(installedAppFile); |
481 | if ( !file.open(IO_ReadOnly) ){ | 481 | if ( !file.open(IO_ReadOnly) ){ |
482 | qDebug(QString("swapInstalledLocation: Can't edit file: %1").arg(installedAppFile).latin1()); | 482 | qDebug(QString("swapInstalledLocation: Can't edit file: %1").arg(installedAppFile).latin1()); |
483 | return; | 483 | return; |
484 | } | 484 | } |
485 | 485 | ||
486 | QTextStream stream( &file ); // use a text stream | 486 | QTextStream stream( &file ); // use a text stream |
487 | QString allLines; | 487 | QString allLines; |
488 | while ( !stream.eof() ) { // until end of file... | 488 | while ( !stream.eof() ) { // until end of file... |
489 | QString line = stream.readLine(); // line of text excluding '\n' | 489 | QString line = stream.readLine(); // line of text excluding '\n' |
490 | if(line.contains(desktopFile)) | 490 | if(line.contains(desktopFile)) |
491 | allLines += newLocation; | 491 | allLines += newLocation; |
492 | else | 492 | else |
493 | allLines += line; | 493 | allLines += line; |
494 | allLines += '\n'; | 494 | allLines += '\n'; |
495 | } | 495 | } |
496 | file.close(); | 496 | file.close(); |
497 | 497 | ||
498 | if ( !file.open(IO_ReadWrite) ){ | 498 | if ( !file.open(IO_ReadWrite) ){ |
499 | qDebug(QString("swapInstalledLocation: Can't edit file: %1").arg(installedAppFile).latin1()); | 499 | qDebug(QString("swapInstalledLocation: Can't edit file: %1").arg(installedAppFile).latin1()); |
500 | return; | 500 | return; |
501 | } | 501 | } |
502 | QTextStream streamOut( &file ); | 502 | QTextStream streamOut( &file ); |
503 | streamOut << allLines; | 503 | streamOut << allLines; |
504 | file.close(); | 504 | file.close(); |
505 | } | 505 | } |
506 | 506 | ||
507 | // tabmanager.cpp | 507 | // tabmanager.cpp |
508 | 508 | ||
diff --git a/noncore/unsupported/mail2/TODO b/noncore/unsupported/mail2/TODO index 4bc434f..3c83fdd 100644 --- a/noncore/unsupported/mail2/TODO +++ b/noncore/unsupported/mail2/TODO | |||
@@ -1,34 +1,34 @@ | |||
1 | Mail TODO | 1 | Mail TODO |
2 | ----------------------------------------------------------------------------- | 2 | ----------------------------------------------------------------------------- |
3 | 3 | ||
4 | General stuff: | 4 | General stuff: |
5 | - This program needs a name! | 5 | - This program needs a name! |
6 | - If password is empty, ask for it during fetch. | 6 | - If password is empty, ask for it during fetch. |
7 | - Check if all necessary fields in AccoundEditor are filled. | 7 | - Check if all necessary fields in AccoundEditor are filled. |
8 | - Seperate Sending and Recieving in configuration. | 8 | - Seperate Sending and Recieving in configuration. |
9 | 9 | ||
10 | Protocol related: | 10 | Protocol related: |
11 | - The IMAP implentation is kinda strange and slow. | 11 | - The IMAP implentation is kinda strange and slow. |
12 | - The SMTP implentation is goddamn strange. | 12 | - The SMTP implentation is goddamn strange. |
13 | - POP3 support would be nice. | 13 | - POP3 support would be nice. |
14 | - NNTP would be kinda neat, too. | 14 | - NNTP would be kinda neat, too. |
15 | - Implent a plugin system. | 15 | - Implent a plugin system. |
16 | 16 | ||
17 | Security related: | 17 | Security related: |
18 | - GnuPG support. This will require a seperate gpg managing utility in | 18 | - GnuPG support. This will require a seperate gpg managing utility in |
19 | the settings tab. | 19 | the settings tab. |
20 | - sMIME? maybe in the distant future. | 20 | - sMIME? maybe in the distant future. |
21 | - Integrated SSH tunneling. | 21 | - Integrated SSH tunneling. |
22 | 22 | ||
23 | Mail management: | 23 | Mail management: |
24 | - Header caching | 24 | - Header caching |
25 | - Sieve filtering support? | 25 | - Sieve filtering support? |
26 | - Enqueueing/Draft support both on the IMAP server and local. | 26 | - Enqueueing/Draft support both on the IMAP server and local. |
27 | 27 | ||
28 | Testing: | 28 | Testing: |
29 | I'm using the courier-imap server at my developement site. I didn't have | 29 | I'm using the courier-imap server at my developement site. I didn't have |
30 | much opportunity to test on other servers. Giving me test-accounts on other | 30 | much opportunity to test on other servers. Giving me test-accounts on other |
31 | servers would be helpfull. | 31 | servers would be helpful. |
32 | 32 | ||
33 | If you want something added, drop a mail. Comments are always welcome. | 33 | If you want something added, drop a mail. Comments are always welcome. |
34 | 34 | ||
diff --git a/noncore/unsupported/mail2/folderwidget.cpp b/noncore/unsupported/mail2/folderwidget.cpp index 6c36e92..d27968b 100644 --- a/noncore/unsupported/mail2/folderwidget.cpp +++ b/noncore/unsupported/mail2/folderwidget.cpp | |||
@@ -137,178 +137,178 @@ void FolderWidget::slotMenuActivated(int itemid) | |||
137 | 137 | ||
138 | if (itemid == MENU_RENAME) { | 138 | if (itemid == MENU_RENAME) { |
139 | if (((FolderWidgetItem *)currentItem())->folder().fullName().isEmpty()) return; | 139 | if (((FolderWidgetItem *)currentItem())->folder().fullName().isEmpty()) return; |
140 | 140 | ||
141 | Folder folder = ((FolderWidgetItem *)currentItem())->folder(); | 141 | Folder folder = ((FolderWidgetItem *)currentItem())->folder(); |
142 | QString newName = Rename::rename(folder.fullName(), this); | 142 | QString newName = Rename::rename(folder.fullName(), this); |
143 | if (newName.isNull()) return; | 143 | if (newName.isNull()) return; |
144 | 144 | ||
145 | folder.topFolder().handler()->iRename(folder.fullName(), newName); | 145 | folder.topFolder().handler()->iRename(folder.fullName(), newName); |
146 | connect(folder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPRename(IMAPResponse &))); | 146 | connect(folder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPRename(IMAPResponse &))); |
147 | } else if (itemid == MENU_DELETE) { | 147 | } else if (itemid == MENU_DELETE) { |
148 | if (((FolderWidgetItem *)currentItem())->folder().fullName().isEmpty()) return; | 148 | if (((FolderWidgetItem *)currentItem())->folder().fullName().isEmpty()) return; |
149 | 149 | ||
150 | Folder folder = ((FolderWidgetItem *)currentItem())->folder(); | 150 | Folder folder = ((FolderWidgetItem *)currentItem())->folder(); |
151 | 151 | ||
152 | int ret = QMessageBox::information(this, tr("Question"), tr("<p>Do you really want to delete <pre>%1</pre>?").arg(folder.fullName()), tr("Yes"), tr("No")); | 152 | int ret = QMessageBox::information(this, tr("Question"), tr("<p>Do you really want to delete <pre>%1</pre>?").arg(folder.fullName()), tr("Yes"), tr("No")); |
153 | if (ret == 1) return; | 153 | if (ret == 1) return; |
154 | 154 | ||
155 | _createFolder = folder; | 155 | _createFolder = folder; |
156 | 156 | ||
157 | folder.topFolder().handler()->iDelete(folder.fullName()); | 157 | folder.topFolder().handler()->iDelete(folder.fullName()); |
158 | connect(folder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPDelete(IMAPResponse &))); | 158 | connect(folder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPDelete(IMAPResponse &))); |
159 | } else if (itemid == MENU_MOVE) { | 159 | } else if (itemid == MENU_MOVE) { |
160 | 160 | ||
161 | } else if (itemid == MENU_COPY) { | 161 | } else if (itemid == MENU_COPY) { |
162 | 162 | ||
163 | } else if (itemid == MENU_CREATE) { | 163 | } else if (itemid == MENU_CREATE) { |
164 | Folder folder = (((FolderWidgetItem *)currentItem())->folder()); | 164 | Folder folder = (((FolderWidgetItem *)currentItem())->folder()); |
165 | _createFolder = folder; | 165 | _createFolder = folder; |
166 | 166 | ||
167 | QString folderName = Rename::getText(tr("Foldername"), tr("<p>Please enter the name of the new folder.</p>"), this); | 167 | QString folderName = Rename::getText(tr("Foldername"), tr("<p>Please enter the name of the new folder.</p>"), this); |
168 | if (folderName.isNull()) return; | 168 | if (folderName.isNull()) return; |
169 | 169 | ||
170 | folder.topFolder().handler()->iCreate(folder.fullName() + folder.separator() + folderName); | 170 | folder.topFolder().handler()->iCreate(folder.fullName() + folder.separator() + folderName); |
171 | connect(folder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPCreate(IMAPResponse &))); | 171 | connect(folder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPCreate(IMAPResponse &))); |
172 | } else if (itemid == MENU_RESCAN) { | 172 | } else if (itemid == MENU_RESCAN) { |
173 | Folder folder = (((FolderWidgetItem *)currentItem())->folder()); | 173 | Folder folder = (((FolderWidgetItem *)currentItem())->folder()); |
174 | _rescanAccount = folder.topFolder().account(); | 174 | _rescanAccount = folder.topFolder().account(); |
175 | 175 | ||
176 | folder.topFolder().handler()->iList("", "*"); | 176 | folder.topFolder().handler()->iList("", "*"); |
177 | connect(folder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPList(IMAPResponse &))); | 177 | connect(folder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPList(IMAPResponse &))); |
178 | } | 178 | } |
179 | } | 179 | } |
180 | 180 | ||
181 | void FolderWidget::slotItemClicked(QListViewItem *item) | 181 | void FolderWidget::slotItemClicked(QListViewItem *item) |
182 | { | 182 | { |
183 | if (item == NULL) return; | 183 | if (item == NULL) return; |
184 | Folder folder = ((FolderWidgetItem *)item)->folder(); | 184 | Folder folder = ((FolderWidgetItem *)item)->folder(); |
185 | if (folder.fullName().isEmpty()) return; | 185 | if (folder.fullName().isEmpty()) return; |
186 | 186 | ||
187 | emit folderSelected(folder); | 187 | emit folderSelected(folder); |
188 | } | 188 | } |
189 | 189 | ||
190 | void FolderWidget::slotIMAPLookingUpHost() | 190 | void FolderWidget::slotIMAPLookingUpHost() |
191 | { | 191 | { |
192 | emit status(tr("Looking up host...")); | 192 | emit status(tr("Looking up host...")); |
193 | emit connecting(); | 193 | emit connecting(); |
194 | } | 194 | } |
195 | 195 | ||
196 | void FolderWidget::slotIMAPHostFound() | 196 | void FolderWidget::slotIMAPHostFound() |
197 | { | 197 | { |
198 | emit status(tr("Host found.")); | 198 | emit status(tr("Host found.")); |
199 | } | 199 | } |
200 | 200 | ||
201 | void FolderWidget::slotIMAPConnected() | 201 | void FolderWidget::slotIMAPConnected() |
202 | { | 202 | { |
203 | emit status(tr("Connected to host.")); | 203 | emit status(tr("Connected to host.")); |
204 | emit connected(); | 204 | emit connected(); |
205 | } | 205 | } |
206 | 206 | ||
207 | void FolderWidget::slotIMAPError(int error) | 207 | void FolderWidget::slotIMAPError(int error) |
208 | { | 208 | { |
209 | if (error == IMAPBase::IMAPErrConnectionRefused) { | 209 | if (error == IMAPBase::IMAPErrConnectionRefused) { |
210 | QMessageBox::warning(this, tr("Error"), tr("<p>The IMAP connection was refused.</p>"), tr("Ok")); | 210 | QMessageBox::warning(this, tr("Error"), tr("<p>The IMAP connection was refused.</p>"), tr("Ok")); |
211 | } else if (error == IMAPBase::IMAPErrHostNotFound) { | 211 | } else if (error == IMAPBase::IMAPErrHostNotFound) { |
212 | QMessageBox::warning(this, tr("Error"), tr("<p>The host was not found.</p>"), tr("Ok")); | 212 | QMessageBox::warning(this, tr("Error"), tr("<p>The host was not found.</p>"), tr("Ok")); |
213 | } else if (error == IMAPBase::IMAPErrSocketRead) { | 213 | } else if (error == IMAPBase::IMAPErrSocketRead) { |
214 | QMessageBox::warning(this, tr("Error"), tr("<p>There was an error while reading from the socket.</p>"), tr("Ok")); | 214 | QMessageBox::warning(this, tr("Error"), tr("<p>There was an error while reading from the socket.</p>"), tr("Ok")); |
215 | } else if (error == IMAPBase::IMAPErrLoginFailed) { | 215 | } else if (error == IMAPBase::IMAPErrLoginFailed) { |
216 | QMessageBox::warning(this, tr("Error"), tr("<p>Login failed. Check your password/username.</p>"), tr("Ok")); | 216 | QMessageBox::warning(this, tr("Error"), tr("<p>Login failed. Check your password/username.</p>"), tr("Ok")); |
217 | } else { | 217 | } else { |
218 | QMessageBox::warning(this, tr("Error"), tr("<p>An unknown error was encountered.</p>"), tr("Ok")); | 218 | QMessageBox::warning(this, tr("Error"), tr("<p>An unknown error was encountered.</p>"), tr("Ok")); |
219 | } | 219 | } |
220 | } | 220 | } |
221 | 221 | ||
222 | void FolderWidget::slotIMAPDisconnected() | 222 | void FolderWidget::slotIMAPDisconnected() |
223 | { | 223 | { |
224 | emit status(tr("Disconnected.")); | 224 | emit status(tr("Disconnected.")); |
225 | emit disconnected(); | 225 | emit disconnected(); |
226 | } | 226 | } |
227 | 227 | ||
228 | void FolderWidget::slotIMAPLogin(IMAPResponse &response) | 228 | void FolderWidget::slotIMAPLogin(IMAPResponse &response) |
229 | { | 229 | { |
230 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPLogin(IMAPResponse &))); | 230 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPLogin(IMAPResponse &))); |
231 | 231 | ||
232 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { | 232 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { |
233 | emit status(tr("Login successfull!")); | 233 | emit status(tr("Login successful!")); |
234 | } else { | 234 | } else { |
235 | QMessageBox::warning(this, tr("Error"), tr("<p>Login failed. Go away.</p>"), tr("Ok")); | 235 | QMessageBox::warning(this, tr("Error"), tr("<p>Login failed. Go away.</p>"), tr("Ok")); |
236 | } | 236 | } |
237 | } | 237 | } |
238 | 238 | ||
239 | void FolderWidget::slotIMAPRename(IMAPResponse &response) | 239 | void FolderWidget::slotIMAPRename(IMAPResponse &response) |
240 | { | 240 | { |
241 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPRename(IMAPResponse &))); | 241 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPRename(IMAPResponse &))); |
242 | 242 | ||
243 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { | 243 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { |
244 | emit status(tr("Renaming successfull!")); | 244 | emit status(tr("Renaming successful!")); |
245 | } else { | 245 | } else { |
246 | QMessageBox::warning(this, tr("Error"), tr("<p>Renaming failed. (Server said: %1)</p>").arg(response.statusResponse().comment()), tr("Ok")); | 246 | QMessageBox::warning(this, tr("Error"), tr("<p>Renaming failed. (Server said: %1)</p>").arg(response.statusResponse().comment()), tr("Ok")); |
247 | } | 247 | } |
248 | } | 248 | } |
249 | 249 | ||
250 | void FolderWidget::slotIMAPDelete(IMAPResponse &response) | 250 | void FolderWidget::slotIMAPDelete(IMAPResponse &response) |
251 | { | 251 | { |
252 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPDelete(IMAPResponse &))); | 252 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPDelete(IMAPResponse &))); |
253 | 253 | ||
254 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { | 254 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { |
255 | emit status(tr("Deletion successfull!")); | 255 | emit status(tr("Deletion successful!")); |
256 | 256 | ||
257 | _rescanAccount = _createFolder.topFolder().account(); | 257 | _rescanAccount = _createFolder.topFolder().account(); |
258 | 258 | ||
259 | _createFolder.topFolder().handler()->iList(".", "*"); | 259 | _createFolder.topFolder().handler()->iList(".", "*"); |
260 | connect(_createFolder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPList(IMAPResponse &))); | 260 | connect(_createFolder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPList(IMAPResponse &))); |
261 | } else { | 261 | } else { |
262 | QMessageBox::warning(this, tr("Error"), tr("<p>Delete failed. (Server said: %1)</p>").arg(response.statusResponse().comment()), tr("Ok")); | 262 | QMessageBox::warning(this, tr("Error"), tr("<p>Delete failed. (Server said: %1)</p>").arg(response.statusResponse().comment()), tr("Ok")); |
263 | } | 263 | } |
264 | } | 264 | } |
265 | 265 | ||
266 | void FolderWidget::slotIMAPCreate(IMAPResponse &response) | 266 | void FolderWidget::slotIMAPCreate(IMAPResponse &response) |
267 | { | 267 | { |
268 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPCreate(IMAPResponse &))); | 268 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPCreate(IMAPResponse &))); |
269 | 269 | ||
270 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { | 270 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { |
271 | emit status(tr("Folder created. Rescanning...")); | 271 | emit status(tr("Folder created. Rescanning...")); |
272 | 272 | ||
273 | _rescanAccount = _createFolder.topFolder().account(); | 273 | _rescanAccount = _createFolder.topFolder().account(); |
274 | 274 | ||
275 | _createFolder.topFolder().handler()->iList(".", "*"); | 275 | _createFolder.topFolder().handler()->iList(".", "*"); |
276 | connect(_createFolder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPList(IMAPResponse &))); | 276 | connect(_createFolder.topFolder().handler(), SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPList(IMAPResponse &))); |
277 | } else { | 277 | } else { |
278 | QMessageBox::warning(this, tr("Error"), tr("<p>The folder could not be created. (Server said: %1)</p>").arg(response.statusResponse().comment()), tr("Ok")); | 278 | QMessageBox::warning(this, tr("Error"), tr("<p>The folder could not be created. (Server said: %1)</p>").arg(response.statusResponse().comment()), tr("Ok")); |
279 | } | 279 | } |
280 | } | 280 | } |
281 | 281 | ||
282 | void FolderWidget::slotIMAPList(IMAPResponse &response) | 282 | void FolderWidget::slotIMAPList(IMAPResponse &response) |
283 | { | 283 | { |
284 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPList(IMAPResponse &))); | 284 | disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPList(IMAPResponse &))); |
285 | 285 | ||
286 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { | 286 | if (response.statusResponse().status() == IMAPResponseEnums::OK) { |
287 | QDir d((QString) getenv("HOME") + "/Applications/mail/foldercache"); | 287 | QDir d((QString) getenv("HOME") + "/Applications/mail/foldercache"); |
288 | if (!d.exists()) { | 288 | if (!d.exists()) { |
289 | system("mkdir -p $HOME/Applications/mail/foldercache"); | 289 | system("mkdir -p $HOME/Applications/mail/foldercache"); |
290 | qWarning("Created $HOME/Applications/mail/foldercache."); | 290 | qWarning("Created $HOME/Applications/mail/foldercache."); |
291 | } | 291 | } |
292 | QFile f((QString) getenv("HOME") + "/Applications/mail/foldercache/foldercache-" + _rescanAccount.accountName()); | 292 | QFile f((QString) getenv("HOME") + "/Applications/mail/foldercache/foldercache-" + _rescanAccount.accountName()); |
293 | if (!f.open(IO_WriteOnly)) { | 293 | if (!f.open(IO_WriteOnly)) { |
294 | QMessageBox::critical(this, tr("Error"), tr("<p>Couldn't open folder cache file for writing!</p>"), tr("Ok")); | 294 | QMessageBox::critical(this, tr("Error"), tr("<p>Couldn't open folder cache file for writing!</p>"), tr("Ok")); |
295 | return; | 295 | return; |
296 | } | 296 | } |
297 | QTextStream t(&f); | 297 | QTextStream t(&f); |
298 | 298 | ||
299 | QValueList<IMAPResponseLIST>::Iterator it; | 299 | QValueList<IMAPResponseLIST>::Iterator it; |
300 | QValueList<IMAPResponseLIST> lists = response.LIST(); | 300 | QValueList<IMAPResponseLIST> lists = response.LIST(); |
301 | for (it = lists.begin(); it != lists.end(); it++) { | 301 | for (it = lists.begin(); it != lists.end(); it++) { |
302 | t << (*it).folderSeparator() << "\n"; | 302 | t << (*it).folderSeparator() << "\n"; |
303 | t << (*it).folder() << "\n"; | 303 | t << (*it).folder() << "\n"; |
304 | } | 304 | } |
305 | 305 | ||
306 | f.close(); | 306 | f.close(); |
307 | 307 | ||
308 | emit status(tr("Got folder list.")); | 308 | emit status(tr("Got folder list.")); |
309 | getAccounts(); | 309 | getAccounts(); |
310 | } else { | 310 | } else { |
311 | QMessageBox::warning(this, tr("Error"), tr("<p>Couldn't retrieve the folder list. (Server said: %1)</p>").arg(response.statusResponse().comment()), tr("Ok")); | 311 | QMessageBox::warning(this, tr("Error"), tr("<p>Couldn't retrieve the folder list. (Server said: %1)</p>").arg(response.statusResponse().comment()), tr("Ok")); |
312 | } | 312 | } |
313 | } | 313 | } |
314 | 314 | ||