summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/kaddressbook/germantranslation.txt2
-rw-r--r--bin/kdepim/kopiemail/germantranslation.txt2
-rw-r--r--bin/kdepim/pwmanager/germantranslation.txt2
-rw-r--r--kaddressbook/kabcore.cpp6
-rw-r--r--kmicromail/koprefsdialog.cpp7
-rw-r--r--kmicromail/koprefsdialog.h1
-rw-r--r--kmicromail/mainwindow.cpp15
-rw-r--r--kmicromail/mainwindow.h1
-rw-r--r--kmicromail/opiemail.cpp5
-rw-r--r--kmicromail/opiemail.h1
-rw-r--r--microkde/kdialogbase.cpp5
-rw-r--r--microkde/kdialogbase.h4
-rw-r--r--pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h1
-rw-r--r--pwmanager/pwmanager/pwm.cpp45
-rw-r--r--pwmanager/pwmanager/pwm.h1
15 files changed, 76 insertions, 22 deletions
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt
index e076e1e..d6bf118 100644
--- a/bin/kdepim/kaddressbook/germantranslation.txt
+++ b/bin/kdepim/kaddressbook/germantranslation.txt
@@ -519,261 +519,263 @@
519{ "Save file","Datei speichern" }, 519{ "Save file","Datei speichern" },
520{ "Error","Fehler" }, 520{ "Error","Fehler" },
521{ "Unable to export contacts.","Exportieren der Kontakte geht nicht." }, 521{ "Unable to export contacts.","Exportieren der Kontakte geht nicht." },
522{ "\nNo unsaved changes detected!\nNothing will be saved!","\nKeine ungespeicherten\nÄnderungen erkannt!\nNichts wird gespeichert!" }, 522{ "\nNo unsaved changes detected!\nNothing will be saved!","\nKeine ungespeicherten\nÄnderungen erkannt!\nNichts wird gespeichert!" },
523{ "Manage new categories...","Verwalte neue Kategorien..." }, 523{ "Manage new categories...","Verwalte neue Kategorien..." },
524{ "&File","Datei" }, 524{ "&File","Datei" },
525{ "&Edit","Bearbeite" }, 525{ "&Edit","Bearbeite" },
526{ "&View","Ansichten" }, 526{ "&View","Ansichten" },
527{ "&Settings","Konfiguration" }, 527{ "&Settings","Konfiguration" },
528{ "&Change selected","Ändere Selekt." }, 528{ "&Change selected","Ändere Selekt." },
529{ "&Help","Hilfe" }, 529{ "&Help","Hilfe" },
530{ "Remove sync info","Entferne Sync Info" }, 530{ "Remove sync info","Entferne Sync Info" },
531{ "For all profiles","Für alle Profile" }, 531{ "For all profiles","Für alle Profile" },
532{ "&Change","Ändere" }, 532{ "&Change","Ändere" },
533{ "Import xml (Qtopia)...","Importiere xml (Qtopia)..." }, 533{ "Import xml (Qtopia)...","Importiere xml (Qtopia)..." },
534{ "Export xml (Qtopia)...","Exportiere xml (Qtopia)..." }, 534{ "Export xml (Qtopia)...","Exportiere xml (Qtopia)..." },
535{ "Export to phone","Exportiere aufs Handy..." }, 535{ "Export to phone","Exportiere aufs Handy..." },
536{ "Which contacts do you want to select?","Welche Kontakte möchten Sie wählen?" }, 536{ "Which contacts do you want to select?","Welche Kontakte möchten Sie wählen?" },
537{ "&Modify","Ändere" }, 537{ "&Modify","Ändere" },
538{ "Choose which contacts to select","Bitte Kontakte auswählen!" }, 538{ "Choose which contacts to select","Bitte Kontakte auswählen!" },
539{ "After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n ","Nach dem Importieren/Laden/Syncen\nkann es neue Kategorien in den \nKontakten geben, die nicht\nin der Kategorieliste enthalten sind.\nBitte wählen Sie, was passieren soll:\n " }, 539{ "After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n ","Nach dem Importieren/Laden/Syncen\nkann es neue Kategorien in den \nKontakten geben, die nicht\nin der Kategorieliste enthalten sind.\nBitte wählen Sie, was passieren soll:\n " },
540{ "Manage new Categories","Verwalte neue Kategorien" }, 540{ "Manage new Categories","Verwalte neue Kategorien" },
541{ "Add to category list","Füge zur Kategorieliste hinzu" }, 541{ "Add to category list","Füge zur Kategorieliste hinzu" },
542{ "Remove from addressees","Entferne von den Kontakten" }, 542{ "Remove from addressees","Entferne von den Kontakten" },
543{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" }, 543{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" },
544{ "A&dd","Hinzufügen" }, 544{ "A&dd","Hinzufügen" },
545{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 545{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." },
546{ "NOTE: This will remove all old\ncontact data on phone!","ACHTUNG: Das löscht alle alten\nKontakt Daten auf dem Handy!" }, 546{ "NOTE: This will remove all old\ncontact data on phone!","ACHTUNG: Das löscht alle alten\nKontakt Daten auf dem Handy!" },
547{ "Export to mobile phone!","Exportiere auf das Handy!" }, 547{ "Export to mobile phone!","Exportiere auf das Handy!" },
548{ "Export to phone options","Export ans Handy Optionen" }, 548{ "Export to phone options","Export ans Handy Optionen" },
549{ "Writing to phone...","Sende Daten ans Handy..." }, 549{ "Writing to phone...","Sende Daten ans Handy..." },
550{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 550{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
551{ "Retry","Nochmal versuchen" }, 551{ "Retry","Nochmal versuchen" },
552{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 552{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
553{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 553{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" },
554{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 554{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
555{ "&Print View","Drucke Ansicht" }, 555{ "&Print View","Drucke Ansicht" },
556{ "&Print Details","Drucke Details" }, 556{ "&Print Details","Drucke Details" },
557{ "Beam v&Card(s)...","Beame v&Card(s)..." }, 557{ "Beam v&Card(s)...","Beame v&Card(s)..." },
558{ "Set formatted name...","Setze formatierten Namen..." }, 558{ "Set formatted name...","Setze formatierten Namen..." },
559{ "Kde Sync HowTo","Kde Sync HowTo" }, 559{ "Kde Sync HowTo","Kde Sync HowTo" },
560{ "Multi Sync HowTo","Multi Sync HowTo" }, 560{ "Multi Sync HowTo","Multi Sync HowTo" },
561{ "&Beam","&Beame" }, 561{ "&Beam","&Beame" },
562{ "Edit Email Addresses","Editiere Email Adressen" }, 562{ "Edit Email Addresses","Editiere Email Adressen" },
563{ "Email address:","Email Adresse:" }, 563{ "Email address:","Email Adresse:" },
564{ "Change","Ändere" }, 564{ "Change","Ändere" },
565{ "Set Standard","Setze Standard" }, 565{ "Set Standard","Setze Standard" },
566{ "New Contact","Neuer Contact" }, 566{ "New Contact","Neuer Contact" },
567{ "Undo %1","Rückgängig %1" }, 567{ "Undo %1","Rückgängig %1" },
568{ "Redo","Wiederholen" }, 568{ "Redo","Wiederholen" },
569{ "Saving ... please wait! ","Am Speichern ... bitte warten! " }, 569{ "Saving ... please wait! ","Am Speichern ... bitte warten! " },
570{ "CSV Import Dialog","CSV Import Dialog" }, 570{ "CSV Import Dialog","CSV Import Dialog" },
571{ "File to import:","Datei zum Import:" }, 571{ "File to import:","Datei zum Import:" },
572{ "Delimiter","Trennzeichen" }, 572{ "Delimiter","Trennzeichen" },
573{ "Comma","Komma" }, 573{ "Comma","Komma" },
574{ "Semicolon","Semikolon" }, 574{ "Semicolon","Semikolon" },
575{ "Tabulator","Tabulator" }, 575{ "Tabulator","Tabulator" },
576{ "Space","Leerzeichen" }, 576{ "Space","Leerzeichen" },
577{ "1","1" }, 577{ "1","1" },
578{ """,""" }, 578{ """,""" },
579{ "'","'" }, 579{ "'","'" },
580{ "Start at line:","Beginne mit Zeile:" }, 580{ "Start at line:","Beginne mit Zeile:" },
581{ "Textquote:","Textquote:" }, 581{ "Textquote:","Textquote:" },
582{ "Ignore duplicate delimiters","Ignoriere doppelte Trennzeichen" }, 582{ "Ignore duplicate delimiters","Ignoriere doppelte Trennzeichen" },
583{ "Import KDE 2 Addressbook","Importiere KDE 2 Addressbook" }, 583{ "Import KDE 2 Addressbook","Importiere KDE 2 Addressbook" },
584{ "Override previously imported entries?","Überschreibe bereits importierte Einträge?" }, 584{ "Override previously imported entries?","Überschreibe bereits importierte Einträge?" },
585{ "Select vCard to Import","Selektiere zu importierende vCard" }, 585{ "Select vCard to Import","Selektiere zu importierende vCard" },
586{ "Information","Information" }, 586{ "Information","Information" },
587{ "contacts successfully imported.","Kontakte erfolgreich importiert." }, 587{ "contacts successfully imported.","Kontakte erfolgreich importiert." },
588{ "Import xml file","Importiere xml Datei" }, 588{ "Import xml file","Importiere xml Datei" },
589{ "Choose contact selection","Wähle Kontakt Auswahl" }, 589{ "Choose contact selection","Wähle Kontakt Auswahl" },
590{ "Select the entire address book","Wähle das ganze Adressbuch" }, 590{ "Select the entire address book","Wähle das ganze Adressbuch" },
591{ "Only contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected.","Nur in KA/Pi selektierte Kontate.\nDiese Option ist nicht verfügbar\nwhen keine Kontakte selektiert sind." }, 591{ "Only contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected.","Nur in KA/Pi selektierte Kontate.\nDiese Option ist nicht verfügbar\nwhen keine Kontakte selektiert sind." },
592{ "Only contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters","Nur Kontakte die auf den Filter zutreffen.\nDiese Option ist nicht verfügbar, wenn keine Filter definiert sind." }, 592{ "Only contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters","Nur Kontakte die auf den Filter zutreffen.\nDiese Option ist nicht verfügbar, wenn keine Filter definiert sind." },
593{ "Only contacts who are members of a category that is checked on the list to the left.\nThis option is disabled if you have no categories.","Nur Kontakte die Mitglieder der Kategirien sind,\die links selektiert sind.\nDiese Option ist nicht verfügbar, wenn es keine Kategirien gibt." }, 593{ "Only contacts who are members of a category that is checked on the list to the left.\nThis option is disabled if you have no categories.","Nur Kontakte die Mitglieder der Kategirien sind,\die links selektiert sind.\nDiese Option ist nicht verfügbar, wenn es keine Kategirien gibt." },
594{ "Select a filter to decide which contacts to select.","Selektiere einen Filter um festzulegen welche Kontakte ausgewählt werden sollen." }, 594{ "Select a filter to decide which contacts to select.","Selektiere einen Filter um festzulegen welche Kontakte ausgewählt werden sollen." },
595{ "Check the categories whose members you want to select.","Setzte die Kategorien, dessen Mitglieder Sie auswählen möchten." }, 595{ "Check the categories whose members you want to select.","Setzte die Kategorien, dessen Mitglieder Sie auswählen möchten." },
596{ "I/O device: ","I/O device: " }, 596{ "I/O device: ","I/O device: " },
597{ "Connection: ","Connection: " }, 597{ "Connection: ","Connection: " },
598{ "Model(opt.): ","Model(opt.): " }, 598{ "Model(opt.): ","Model(opt.): " },
599{ "Exporting to phone...","Exportiere aufs Handy..." }, 599{ "Exporting to phone...","Exportiere aufs Handy..." },
600{ "Error exporting to phone","Fehler beim Export aufs Handy" }, 600{ "Error exporting to phone","Fehler beim Export aufs Handy" },
601{ "contacts successfully exported.","Kontakte erfolgreich exportiert." }, 601{ "contacts successfully exported.","Kontakte erfolgreich exportiert." },
602{ "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?","Wollen Sie<br>alle existieren Einträge von<br>%1<br>vor dem Export entfernen?" }, 602{ "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?","Wollen Sie<br>alle existieren Einträge von<br>%1<br>vor dem Export entfernen?" },
603{ "Set formatted name","Setze formatierten Namen" }, 603{ "Set formatted name","Setze formatierten Namen" },
604{ "You can set the formatted name\nfor a list of contacts in one go.","Sie können den formatierten Namen für\nein Liste von Kontakten auf einmal setzen." }, 604{ "You can set the formatted name\nfor a list of contacts in one go.","Sie können den formatierten Namen für\nein Liste von Kontakten auf einmal setzen." },
605{ "Set formatted name to:","Setze formatierten Name auf:" }, 605{ "Set formatted name to:","Setze formatierten Name auf:" },
606{ "Simple: James Bond","Einfach: James Bond" }, 606{ "Simple: James Bond","Einfach: James Bond" },
607{ "Full: Mr. James 007 Bond I","Voll: Mr. James 007 Bond I" }, 607{ "Full: Mr. James 007 Bond I","Voll: Mr. James 007 Bond I" },
608{ "Reverse: Bond, James","Umgekehrt: Bond, James" }, 608{ "Reverse: Bond, James","Umgekehrt: Bond, James" },
609{ "Organization: MI6","Organisation: MI6" }, 609{ "Organization: MI6","Organisation: MI6" },
610{ "Set formatted name to\norganization, if name empty","Setze formatierten Namen auf\nOrganisation, wenn Name leer ist." }, 610{ "Set formatted name to\norganization, if name empty","Setze formatierten Namen auf\nOrganisation, wenn Name leer ist." },
611{ "Select contact list","Selektiere Kontakt Liste" }, 611{ "Select contact list","Selektiere Kontakt Liste" },
612{ "Changing contact #%1","Ändere Kontakt #%1" }, 612{ "Changing contact #%1","Ändere Kontakt #%1" },
613{ "Refreshing view...","Lade Ansicht neu..." }, 613{ "Refreshing view...","Lade Ansicht neu..." },
614{ "Setting formatted name completed!","Setzen vom formatierten Namen beendet!" }, 614{ "Setting formatted name completed!","Setzen vom formatierten Namen beendet!" },
615{ "Removing voice...","Entferne voice..." }, 615{ "Removing voice...","Entferne voice..." },
616{ "Remove voice completed!","Entferne voice beendet!" }, 616{ "Remove voice completed!","Entferne voice beendet!" },
617{ "Merge with existing categories?","Zu bestehenden\nKategorien hinzufügen?" }, 617{ "Merge with existing categories?","Zu bestehenden\nKategorien hinzufügen?" },
618{ "Setting categories ... please wait!","Setze Kategorien ... bitte warten!" }, 618{ "Setting categories ... please wait!","Setze Kategorien ... bitte warten!" },
619{ "Setting categories completed!","Setzen der Kategorien beendet!" }, 619{ "Setting categories completed!","Setzen der Kategorien beendet!" },
620{ "OK","OK" }, 620{ "OK","OK" },
621{ "Please wait, processing categories...","Bitte warten, bearbeite Kategorien..." }, 621{ "Please wait, processing categories...","Bitte warten, bearbeite Kategorien..." },
622{ "Processing contact #%1","Bearbeite Kontakt #%1" }, 622{ "Processing contact #%1","Bearbeite Kontakt #%1" },
623{ " categories added to list! "," Kategorien zur Liste hinzugefügt! " }, 623{ " categories added to list! "," Kategorien zur Liste hinzugefügt! " },
624{ "%1: %2","%1: %2" }, 624{ "%1: %2","%1: %2" },
625{ "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n","Ihr persönlicher Kontakt ist\nnicht gesetzt! Bitte selektieren Sie\nihn und setzen ihn mit Menu:\nKonfiguration - Setze wer bin ich\n" }, 625{ "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n","Ihr persönlicher Kontakt ist\nnicht gesetzt! Bitte selektieren Sie\nihn und setzen ihn mit Menu:\nKonfiguration - Setze wer bin ich\n" },
626{ "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>","<qt>Wollen Sie wirklich<br><b>%1</b><br>als persönlichen Kontakt setzent?</qt>" }, 626{ "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>","<qt>Wollen Sie wirklich<br><b>%1</b><br>als persönlichen Kontakt setzent?</qt>" },
627{ "Cut","Ausschneiden" }, 627{ "Cut","Ausschneiden" },
628{ "Paste","Einfügen" }, 628{ "Paste","Einfügen" },
629{ "Delete","Löschen" }, 629{ "Delete","Löschen" },
630{ "Choose...","Wähle..." }, 630{ "Choose...","Wähle..." },
631{ "Add View","Ansicht hinzufügen" }, 631{ "Add View","Ansicht hinzufügen" },
632{ "View name:","Ansicht Name:" }, 632{ "View name:","Ansicht Name:" },
633{ "View Type","Typ der Ansicht" }, 633{ "View Type","Typ der Ansicht" },
634{ "Icons represent contacts. Very simple view.","Icons repräsentieren Kontakte. Sehr einfache Ansicht." }, 634{ "Icons represent contacts. Very simple view.","Icons repräsentieren Kontakte. Sehr einfache Ansicht." },
635{ "A listing of contacts in a table. Each cell of the table holds a field of the contact.","Eine Kontaktliste in einer Tabelle." }, 635{ "A listing of contacts in a table. Each cell of the table holds a field of the contact.","Eine Kontaktliste in einer Tabelle." },
636{ "Rolodex style cards represent contacts.","Rolodex Stil Karten repräsentieren Kontakte." }, 636{ "Rolodex style cards represent contacts.","Rolodex Stil Karten repräsentieren Kontakte." },
637{ "Draw &separators","Zeichne &Trennlinie" }, 637{ "Draw &separators","Zeichne &Trennlinie" },
638{ "Separator &width:","Trennlinien &Breite:" }, 638{ "Separator &width:","Trennlinien &Breite:" },
639{ "&Padding:","Füllung:" }, 639{ "&Padding:","Füllung:" },
640{ "Cards","Karten" }, 640{ "Cards","Karten" },
641{ "&Margin:","&Rand:" }, 641{ "&Margin:","&Rand:" },
642{ "Draw &borders","Zeichne Ränder" }, 642{ "Draw &borders","Zeichne Ränder" },
643{ "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." }, 643{ "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." },
644{ "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." }, 644{ "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." },
645{ "Sets the width of column separators","Sets the width of column separators" }, 645{ "Sets the width of column separators","Sets the width of column separators" },
646{ "&Layout","&Layout" }, 646{ "&Layout","&Layout" },
647{ "Show &empty fields","Zeige leere Felder" }, 647{ "Show &empty fields","Zeige leere Felder" },
648{ "Show field &labels","Zeige Feld Label" }, 648{ "Show field &labels","Zeige Feld Label" },
649{ "Be&havior","Ver&halten" }, 649{ "Be&havior","Ver&halten" },
650{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" }, 650{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" },
651{ "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" }, 651{ "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" },
652{ "Confirm Delete","Bestätige Löschen" }, 652{ "Confirm Delete","Bestätige Löschen" },
653{ "Edit Address Book Filter","Editiere Adressbuch Filter" }, 653{ "Edit Address Book Filter","Editiere Adressbuch Filter" },
654{ "Category rule","Kategorie Regel" }, 654{ "Category rule","Kategorie Regel" },
655{ "Include categories","Inklusive" }, 655{ "Include categories","Inklusive" },
656{ "Exclude categories","Exclusive" }, 656{ "Exclude categories","Exclusive" },
657{ "Include contacts, that are:","Schließe folgende Kontakte ein:" }, 657{ "Include contacts, that are:","Schließe folgende Kontakte ein:" },
658{ "public","Öffentlich" }, 658{ "public","Öffentlich" },
659{ "private","Privat" }, 659{ "private","Privat" },
660{ "confidential","Vertraulich" }, 660{ "confidential","Vertraulich" },
661{ "Configure Resources","Konfiguriere Resourcen" }, 661{ "Configure Resources","Konfiguriere Resourcen" },
662{ "Resource Configuration","Resource Konfiguration" }, 662{ "Resource Configuration","Resource Konfiguration" },
663{ "Resources","Resourcen" }, 663{ "Resources","Resourcen" },
664{ "Standard","Standard" }, 664{ "Standard","Standard" },
665{ "&Use as Standard","Setze als Standard" }, 665{ "&Use as Standard","Setze als Standard" },
666{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" }, 666{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" },
667{ "General Settings","Allgemeine Einstellungen" }, 667{ "General Settings","Allgemeine Einstellungen" },
668{ "Read-only","Nur-Lesen" }, 668{ "Read-only","Nur-Lesen" },
669{ "Include in sync","Schließe in Sync mit ein" }, 669{ "Include in sync","Schließe in Sync mit ein" },
670{ "%1 Resource Settings","%1 Resource Einstellungen" }, 670{ "%1 Resource Settings","%1 Resource Einstellungen" },
671{ "Format:","Format:" }, 671{ "Format:","Format:" },
672{ "Location:","Ort:" }, 672{ "Location:","Ort:" },
673{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" }, 673{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" },
674{ "Language","Sprache" }, 674{ "Language","Sprache" },
675{ "Time Format","Zeit Format" }, 675{ "Time Format","Zeit Format" },
676{ "Time Zone","Zeit Zone" }, 676{ "Time Zone","Zeit Zone" },
677{ "Data storage path","Daten Speicherpfad" }, 677{ "Data storage path","Daten Speicherpfad" },
678{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, 678{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
679{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 679{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
680{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 680{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
681{ "Save settings","Speichere Einstellungen" }, 681{ "Save settings","Speichere Einstellungen" },
682{ "Save standard","Speichere Standard" }, 682{ "Save standard","Speichere Standard" },
683{ "Save","Speichern" }, 683{ "Save","Speichern" },
684{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 684{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
685{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 685{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
686{ "Multiple Sync options","Multi Sync Optionen" }, 686{ "Multiple Sync options","Multi Sync Optionen" },
687{ "Sync algo options","Sync Ablauf Optionen" }, 687{ "Sync algo options","Sync Ablauf Optionen" },
688{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 688{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
689{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 689{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
690{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 690{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
691{ "Write back options","Optionen zum Zurückschreiben" }, 691{ "Write back options","Optionen zum Zurückschreiben" },
692{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 692{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
693{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 693{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
694{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 694{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
695{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 695{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
696{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 696{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
697{ "Time period","Zeitspanne" }, 697{ "Time period","Zeitspanne" },
698{ "From ","Von " }, 698{ "From ","Von " },
699{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 699{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
700{ " weeks in the future "," Wochen in der Zukunft " }, 700{ " weeks in the future "," Wochen in der Zukunft " },
701{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 701{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
702{ "Local temp file:","Lokale temp Datei:" }, 702{ "Local temp file:","Lokale temp Datei:" },
703{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 703{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
704{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 704{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
705{ "You cannot remove your standard resource!\n Please select a new standard resource first.","Standard Resource kann\nnicht entfernt werden!\nBitte eine andere Resource\nals Standard setzen." }, 705{ "You cannot remove your standard resource!\n Please select a new standard resource first.","Standard Resource kann\nnicht entfernt werden!\nBitte eine andere Resource\nals Standard setzen." },
706{ "Sorry","Tut mir leid" }, 706{ "Sorry","Tut mir leid" },
707{ "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" }, 707{ "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" },
708{ "Please restart to get the \nchanged resources (re)loaded!\n","Bitte starten Sie jetzt\ndas Programm neu, um die geänderten\nResourcen neu zu laden!\n" }, 708{ "Please restart to get the \nchanged resources (re)loaded!\n","Bitte starten Sie jetzt\ndas Programm neu, um die geänderten\nResourcen neu zu laden!\n" },
709{ "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\nkeine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" }, 709{ "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\nkeine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" },
710{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" }, 710{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" },
711{ "Some changes are only\neffective after a restart!\n","Einige Änderungen werden erst\nnach einem Neustart übernommen!\n" }, 711{ "Some changes are only\neffective after a restart!\n","Einige Änderungen werden erst\nnach einem Neustart übernommen!\n" },
712{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, 712{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
713{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, 713{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
714{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, 714{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
715{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" }, 715{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" },
716{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, 716{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
717{ "Error","Fehler" }, 717{ "Error","Fehler" },
718{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, 718{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." },
719{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, 719{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
720{ "Warning","Warnung" }, 720{ "Warning","Warnung" },
721{ "Select week number","Wähle Wochen Nummer" }, 721{ "Select week number","Wähle Wochen Nummer" },
722{ "Februar","Februar" }, 722{ "Februar","Februar" },
723{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, 723{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " },
724{ "Password for remote access:","Passwort für fernen Zugriff:" }, 724{ "Password for remote access:","Passwort für fernen Zugriff:" },
725{ "Remote IP address:","Ferne IP Adresse:" }, 725{ "Remote IP address:","Ferne IP Adresse:" },
726{ "Remote port number:","Ferne Port Nummer:" }, 726{ "Remote port number:","Ferne Port Nummer:" },
727{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, 727{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
728{ "Remote from: ","Fern von: " }, 728{ "Remote from: ","Fern von: " },
729{ "Local from: ","Lokal von: " }, 729{ "Local from: ","Lokal von: " },
730{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" }, 730{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" },
731{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, 731{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" },
732{ "Write back","Schreibe zurück" }, 732{ "Write back","Schreibe zurück" },
733{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, 733{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
734{ "Received sync request","Sync Anfrage erhalten" }, 734{ "Received sync request","Sync Anfrage erhalten" },
735{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." }, 735{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." },
736{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, 736{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
737{ "Data saved to temp file!","Daten in temp Datei gespeichert!" }, 737{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
738{ "Sending file...","Sende Datei..." }, 738{ "Sending file...","Sende Datei..." },
739{ "Waiting for synced file...","Warte auf gesyncte Daten..." }, 739{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
740{ "Receiving synced file...","Gesyncte Daten erhalten..." }, 740{ "Receiving synced file...","Gesyncte Daten erhalten..." },
741{ "Received %1 bytes","%1 Bytes erhalten" }, 741{ "Received %1 bytes","%1 Bytes erhalten" },
742{ "Writing file to disk...","Speichere Datei..." }, 742{ "Writing file to disk...","Speichere Datei..." },
743{ "Pi-Sync successful!","Pi-Sync erfolgreich!" }, 743{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
744{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, 744{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" },
745{ "Synchronize!","Synchronisiere!" }, 745{ "Synchronize!","Synchronisiere!" },
746{ "High clock skew!","Großer Uhrzeitunterschied!" }, 746{ "High clock skew!","Großer Uhrzeitunterschied!" },
747{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, 747{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
748{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" }, 748{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" },
749{ "Change search field enable jump bar","Ändere Suchfeld um Jumpbar anzuzeigen" }, 749{ "Change search field enable jump bar","Ändere Suchfeld um Jumpbar anzuzeigen" },
750{ "Search with '*' prefix (wildcard)","Suche mit '*' Prefix (Wildcard)" }, 750{ "Search with '*' prefix (wildcard)","Suche mit '*' Prefix (Wildcard)" },
751{ "Shrink searchfield in portrait view","Verkleinere Suchfeld im Portraitmodus" }, 751{ "Shrink searchfield in portrait view","Verkleinere Suchfeld im Portraitmodus" },
752{ "Edit new contact","Bearbeite neuen Kontakt" }, 752{ "Edit new contact","Bearbeite neuen Kontakt" },
753{ "Edit ","Bearbeite " }, 753{ "Edit ","Bearbeite " },
754{ "No contact changed!","Kein Kontakt verändert" }, 754{ "No contact changed!","Kein Kontakt verändert" },
755{ "%1 contacts changed!","%1 Kontakte geändert!" }, 755{ "%1 contacts changed!","%1 Kontakte geändert!" },
756{ "Mobile (home)","Handy (Arbeit)" }, 756{ "Mobile (home)","Handy (Arbeit)" },
757{ "Mobile (work)","Handy (Privat)" }, 757{ "Mobile (work)","Handy (Privat)" },
758{ "Def.Formatted Name","Def. Format. Name" }, 758{ "Def.Formatted Name","Def. Format. Name" },
759{ "Colors","Farben" }, 759{ "Colors","Farben" },
760{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, 760{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
761{ "Backup enabled","Backup angeschaltet" }, 761{ "Backup enabled","Backup angeschaltet" },
762{ "Use standard backup dir","Standard Backupverzeichnis" }, 762{ "Use standard backup dir","Standard Backupverzeichnis" },
763{ "Number of Backups:","Anzahl der Backups" }, 763{ "Number of Backups:","Anzahl der Backups" },
764{ "Make backup every ","Mache ein Backup alle " }, 764{ "Make backup every ","Mache ein Backup alle " },
765{ " days"," Tage" }, 765{ " days"," Tage" },
766{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, 766{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." },
767{ "Backup Failed!","Backup Problem!" }, 767{ "Backup Failed!","Backup Problem!" },
768{ "Try again now","Versuche jetzt nochmal" }, 768{ "Try again now","Versuche jetzt nochmal" },
769{ "Try again later","Versuche später nochmal" }, 769{ "Try again later","Versuche später nochmal" },
770{ "Try again tomorrow","Versuche morgen nochmal" }, 770{ "Try again tomorrow","Versuche morgen nochmal" },
771{ "Disable backup","Schalte Backup ab" }, 771{ "Disable backup","Schalte Backup ab" },
772{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, 772{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
773{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, 773{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
774{ "Choose action","Wähle Aktion" }, 774{ "Choose action","Wähle Aktion" },
775{ "&Configure KA/Pi...","Konfiguriere KA/Pi..." },
776{ "Global Settings...","Globale Einstellungen..." },
775{ "","" }, 777{ "","" },
776{ "","" }, 778{ "","" },
777{ "","" }, 779{ "","" },
778{ "","" }, 780{ "","" },
779{ "","" }, \ No newline at end of file 781{ "","" }, \ No newline at end of file
diff --git a/bin/kdepim/kopiemail/germantranslation.txt b/bin/kdepim/kopiemail/germantranslation.txt
index 75fdd11..14e5c0b 100644
--- a/bin/kdepim/kopiemail/germantranslation.txt
+++ b/bin/kdepim/kopiemail/germantranslation.txt
@@ -22,259 +22,261 @@
22{ "Week starts on Sunday","Woche beginnt Sonntags" }, 22{ "Week starts on Sunday","Woche beginnt Sonntags" },
23{ "Locale","Localisation" }, 23{ "Locale","Localisation" },
24{ "Date Format:","Datums Format:" }, 24{ "Date Format:","Datums Format:" },
25{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 25{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
26{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 26{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
27{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 27{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
28{ "User defined","Benutzerdefiniert" }, 28{ "User defined","Benutzerdefiniert" },
29{ "User long date:","Format langes Datum:" }, 29{ "User long date:","Format langes Datum:" },
30{ "User short date:","Format kurzes Datum:" }, 30{ "User short date:","Format kurzes Datum:" },
31{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" }, 31{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" },
32{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 32{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
33{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 33{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
34{ "Date Format","Datums Format" }, 34{ "Date Format","Datums Format" },
35{ "Timezone:","Zeitzone:" }, 35{ "Timezone:","Zeitzone:" },
36{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 36{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
37{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 37{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
38{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 38{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
39{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 39{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
40{ "Daylight start:","Sommerzeit Start:" }, 40{ "Daylight start:","Sommerzeit Start:" },
41{ "Mon","Mo" }, 41{ "Mon","Mo" },
42{ "Tue","Di" }, 42{ "Tue","Di" },
43{ "Wed","Mi" }, 43{ "Wed","Mi" },
44{ "Thu","Do" }, 44{ "Thu","Do" },
45{ "Fri","Fr" }, 45{ "Fri","Fr" },
46{ "Sat","Sa" }, 46{ "Sat","Sa" },
47{ "Sun","So" }, 47{ "Sun","So" },
48{ "January","Januar" }, 48{ "January","Januar" },
49{ "February","Februar" }, 49{ "February","Februar" },
50{ "March","März" }, 50{ "March","März" },
51{ "April","April" }, 51{ "April","April" },
52{ "May","Mai" }, 52{ "May","Mai" },
53{ "June","Juni" }, 53{ "June","Juni" },
54{ "July","Juli" }, 54{ "July","Juli" },
55{ "August","August" }, 55{ "August","August" },
56{ "September","September" }, 56{ "September","September" },
57{ "October","Oktober" }, 57{ "October","Oktober" },
58{ "November","November" }, 58{ "November","November" },
59{ "December","Dezember" }, 59{ "December","Dezember" },
60{ "tomorrow","morgen" }, 60{ "tomorrow","morgen" },
61{ "today","heute" }, 61{ "today","heute" },
62{ "yesterday","gestern" }, 62{ "yesterday","gestern" },
63{ "Monday","Montag" }, 63{ "Monday","Montag" },
64{ "Tuesday","Dienstag" }, 64{ "Tuesday","Dienstag" },
65{ "Wednesday","Mittwoch" }, 65{ "Wednesday","Mittwoch" },
66{ "Thursday","Donnerstag" }, 66{ "Thursday","Donnerstag" },
67{ "Friday","Freitag" }, 67{ "Friday","Freitag" },
68{ "Saturday","Samstag" }, 68{ "Saturday","Samstag" },
69{ "Sunday","Sonntag" }, 69{ "Sunday","Sonntag" },
70{ "Daylight end:","Sommerzeit Ende:" }, 70{ "Daylight end:","Sommerzeit Ende:" },
71{ "Time Zone","Zeitzone" }, 71{ "Time Zone","Zeitzone" },
72{ "Used Mail Client","Benutzter Mail Client" }, 72{ "Used Mail Client","Benutzter Mail Client" },
73{ "Channel:","Channel:" }, 73{ "Channel:","Channel:" },
74{ "Message:","Message:" }, 74{ "Message:","Message:" },
75{ "Parameters:","Parameter:" }, 75{ "Parameters:","Parameter:" },
76{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 76{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
77{ "extra Message:","extra Message:" }, 77{ "extra Message:","extra Message:" },
78{ "extra Parameters:","extra Parameter:" }, 78{ "extra Parameters:","extra Parameter:" },
79{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 79{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
80{ "External Apps.","Externe Appl." }, 80{ "External Apps.","Externe Appl." },
81{ "General","Allgemein" }, 81{ "General","Allgemein" },
82{ "Full &name:","Vor- und &Nachname:" }, 82{ "Full &name:","Vor- und &Nachname:" },
83{ "E&mail address:","E&mail Adresse:" }, 83{ "E&mail address:","E&mail Adresse:" },
84{ "Fonts","Schriftart" }, 84{ "Fonts","Schriftart" },
85{ "Choose...","Wähle..." }, 85{ "Choose...","Wähle..." },
86{ "Used %1 Client","Benutzter %1 Client" }, 86{ "Used %1 Client","Benutzter %1 Client" },
87{ "No email client installed","Kein Email Klient installiert" }, 87{ "No email client installed","Kein Email Klient installiert" },
88{ "Userdefined email client","Benutzerdef. Email Klient" }, 88{ "Userdefined email client","Benutzerdef. Email Klient" },
89{ "OM/Pi email client","OM/Pi Email Klient" }, 89{ "OM/Pi email client","OM/Pi Email Klient" },
90{ "Delete","Löschen" }, 90{ "Delete","Löschen" },
91{ "New","Neu" }, 91{ "New","Neu" },
92{ "Edit","Bearbeite" }, 92{ "Edit","Bearbeite" },
93{ "Close","Schließen" }, 93{ "Close","Schließen" },
94{ "Size","Größe" }, 94{ "Size","Größe" },
95{ "Date","Datum" }, 95{ "Date","Datum" },
96{ "Please set at","Bitte einstellen in" }, 96{ "Please set at","Bitte einstellen in" },
97{ "Settings@General TAB","Einstellungen@Allgemein TAB" }, 97{ "Settings@General TAB","Einstellungen@Allgemein TAB" },
98{ "KOpieMail/Pi","KOpieMail/Pi" }, 98{ "KOpieMail/Pi","KOpieMail/Pi" },
99{ "Mail","Mail" }, 99{ "Mail","Mail" },
100{ "Settings","Konfig" }, 100{ "Settings","Konfig" },
101{ "Get all new mails","Hole alle neuen Mails" }, 101{ "Get all new mails","Hole alle neuen Mails" },
102{ "Get new messages","Hole neue mails" }, 102{ "Get new messages","Hole neue mails" },
103{ "Compose new mail","Schreibe neue Mail" }, 103{ "Compose new mail","Schreibe neue Mail" },
104{ "Send queued mails","Sende gespeicherte Mails" }, 104{ "Send queued mails","Sende gespeicherte Mails" },
105{ "Show/Hide folders","Zeige Verzeichnisse" }, 105{ "Show/Hide folders","Zeige Verzeichnisse" },
106{ "Delete Mail","Lösche Mail" }, 106{ "Delete Mail","Lösche Mail" },
107{ "Edit settings","Ändere Einstellungen" }, 107{ "Edit settings","Ändere Einstellungen" },
108{ "Configure accounts","Konfiguriere Zugänge" }, 108{ "Configure accounts","Konfiguriere Zugänge" },
109{ "Mailbox","Mailbox" }, 109{ "Mailbox","Mailbox" },
110{ "Subject","Betreff" }, 110{ "Subject","Betreff" },
111{ "Sender","Sender" }, 111{ "Sender","Sender" },
112{ "Size","Größe" }, 112{ "Size","Größe" },
113{ "Date","Datum" }, 113{ "Date","Datum" },
114{ "Close","Schliessen" }, 114{ "Close","Schliessen" },
115{ "Help","Hilfe" }, 115{ "Help","Hilfe" },
116{ "About","Über" }, 116{ "About","Über" },
117{ "Licence","Lizenz" }, 117{ "Licence","Lizenz" },
118{ "LibEtPan Licence","LibEtPan Lizenz" }, 118{ "LibEtPan Licence","LibEtPan Lizenz" },
119{ "Settings - some need a restart (nr)","Einstellungen - manche benötigen einen Neustart (nr)" }, 119{ "Settings - some need a restart (nr)","Einstellungen - manche benötigen einen Neustart (nr)" },
120{ "HINT: Separate multiple\neMail addresses by ";"","Hinweis:Trenne mehrere\nAddressen mit einem ";"" }, 120{ "HINT: Separate multiple\neMail addresses by ";"","Hinweis:Trenne mehrere\nAddressen mit einem ";"" },
121{ "Ignore above settings and\nuse KA/Pi "Who am I" instead!","Ignoriere obige Einstellungen und\nbenutze KA/Pi "Wer bin ich"\nstattdessen!" }, 121{ "Ignore above settings and\nuse KA/Pi "Who am I" instead!","Ignoriere obige Einstellungen und\nbenutze KA/Pi "Wer bin ich"\nstattdessen!" },
122{ "View mail as html","Zeige Mails als html" }, 122{ "View mail as html","Zeige Mails als html" },
123{ "Send mails later","Sende Mails später" }, 123{ "Send mails later","Sende Mails später" },
124{ "Application(nr)","Applikation(nr)" }, 124{ "Application(nr)","Applikation(nr)" },
125{ "OK","OK" }, 125{ "OK","OK" },
126{ "Compose mail:","Verfasse Mail:" }, 126{ "Compose mail:","Verfasse Mail:" },
127{ "Dear Mr.","Hallo Herr" }, 127{ "Dear Mr.","Hallo Herr" },
128{ "Read mail:","Lese Mail:" }, 128{ "Read mail:","Lese Mail:" },
129{ "Hello","Hallo" }, 129{ "Hello","Hallo" },
130{ "Configure Accounts","Konfigure Zugänge" }, 130{ "Configure Accounts","Konfigure Zugänge" },
131{ "Name of the Account","Name des Zugangs" }, 131{ "Name of the Account","Name des Zugangs" },
132{ "News","News" }, 132{ "News","News" },
133{ "Account","Zugang" }, 133{ "Account","Zugang" },
134{ "Type","Typ" }, 134{ "Type","Typ" },
135{ "<p>Please select an account.</p>","<p>Bitte wähle einen Zugang.</p>" }, 135{ "<p>Please select an account.</p>","<p>Bitte wähle einen Zugang.</p>" },
136{ "Error","Fehler" }, 136{ "Error","Fehler" },
137{ "Configure NNTP","Konfiguriere News" }, 137{ "Configure NNTP","Konfiguriere News" },
138{ "Port","Port" }, 138{ "Port","Port" },
139{ "Server","Server" }, 139{ "Server","Server" },
140{ "Use SSL","Benutze SSL" }, 140{ "Use SSL","Benutze SSL" },
141{ "User","Benutzer" }, 141{ "User","Benutzer" },
142{ "Password","Passwort" }, 142{ "Password","Passwort" },
143{ "Use Login","Benutze Login" }, 143{ "Use Login","Benutze Login" },
144{ "Newsgroup","Newsgroup" }, 144{ "Newsgroup","Newsgroup" },
145{ "Get newsgroup list from server","Hole Newsgroup Liste vom Server" }, 145{ "Get newsgroup list from server","Hole Newsgroup Liste vom Server" },
146{ "Filter:","Filter:" }, 146{ "Filter:","Filter:" },
147{ "Show subscribed","Zeige abbonnierte" }, 147{ "Show subscribed","Zeige abbonnierte" },
148{ "Groups","NewsGroups" }, 148{ "Groups","NewsGroups" },
149{ "Configure IMAP","Konfiguriere IMAP" }, 149{ "Configure IMAP","Konfiguriere IMAP" },
150{ "Use secure sockets:","Benutze sichere Verbindung:" }, 150{ "Use secure sockets:","Benutze sichere Verbindung:" },
151{ "ssh $SERVER exec","ssh $SERVER exec" }, 151{ "ssh $SERVER exec","ssh $SERVER exec" },
152{ "Prefix","Prefix" }, 152{ "Prefix","Prefix" },
153{ "Local storage folder:","Lokales Verzeichnis:" }, 153{ "Local storage folder:","Lokales Verzeichnis:" },
154{ "Get only messages smaller","Hole nur Nachrichten kleiner" }, 154{ "Get only messages smaller","Hole nur Nachrichten kleiner" },
155{ "kB","kB" }, 155{ "kB","kB" },
156{ "Leave Messages on Server","Belasse Nachrichten auf dem Server" }, 156{ "Leave Messages on Server","Belasse Nachrichten auf dem Server" },
157{ "Configure POP3","Konfiguriere POP3" }, 157{ "Configure POP3","Konfiguriere POP3" },
158{ "ssh $SERVER exec imapd","ssh $SERVER exec imapd" }, 158{ "ssh $SERVER exec imapd","ssh $SERVER exec imapd" },
159{ "Configure SMTP","Konfiguriere SMTP" }, 159{ "Configure SMTP","Konfiguriere SMTP" },
160{ "Name of the SMTP Server","Name des SMTP Servers" }, 160{ "Name of the SMTP Server","Name des SMTP Servers" },
161{ "Port of the SMTP Server","Port des SMTP Servers" }, 161{ "Port of the SMTP Server","Port des SMTP Servers" },
162{ "Fetching folder list","Hole Verzeichnis Liste" }, 162{ "Fetching folder list","Hole Verzeichnis Liste" },
163{ "Fetch ","Hole " }, 163{ "Fetch ","Hole " },
164{ "Fetching header list","Hole Titel Liste" }, 164{ "Fetching header list","Hole Titel Liste" },
165{ "Mailbox has %1 mails","Mailbox hat %1 Mails" }, 165{ "Mailbox has %1 mails","Mailbox hat %1 Mails" },
166{ "Read this mail","Lies diese Mail" }, 166{ "Read this mail","Lies diese Mail" },
167{ "Move/Copy this mail","Verschiebe/kopiere diese Mail" }, 167{ "Move/Copy this mail","Verschiebe/kopiere diese Mail" },
168{ "Delete this mail","Lösche diese Mail" }, 168{ "Delete this mail","Lösche diese Mail" },
169{ "Move/Copy all selected mail","Verschiebe/kopiere selektierte Mails" }, 169{ "Move/Copy all selected mail","Verschiebe/kopiere selektierte Mails" },
170{ "Delete all selected mails","Lösche alle selektierten Mails" }, 170{ "Delete all selected mails","Lösche alle selektierten Mails" },
171{ "Clear selection","Selektion aufheben" }, 171{ "Clear selection","Selektion aufheben" },
172{ "Reply","Antworten" }, 172{ "Reply","Antworten" },
173{ "Forward","Weiterleiten" }, 173{ "Forward","Weiterleiten" },
174{ "Attachments","Anhang" }, 174{ "Attachments","Anhang" },
175{ "Show Html","Zeige in html" }, 175{ "Show Html","Zeige in html" },
176{ "Description","Beschreibung" }, 176{ "Description","Beschreibung" },
177{ "Filename","Dateiname" }, 177{ "Filename","Dateiname" },
178{ "E-Mail by %1","E-Mail von %1" }, 178{ "E-Mail by %1","E-Mail von %1" },
179{ "Cc","Kopie" }, 179{ "Cc","Kopie" },
180{ "To","An" }, 180{ "To","An" },
181{ "From","Von" }, 181{ "From","Von" },
182{ "<p>Do you really want to delete this mail? <br><br>","<p>Wollen Sie diese Mail wirklich löschen? <br><br>" }, 182{ "<p>Do you really want to delete this mail? <br><br>","<p>Wollen Sie diese Mail wirklich löschen? <br><br>" },
183{ "Mailbox has %1 mail(s)","Mailbox hat %1 Mail(s)" }, 183{ "Mailbox has %1 mail(s)","Mailbox hat %1 Mail(s)" },
184{ "Move/Copie all mails","Verschiebe/kopiere alle Mails" }, 184{ "Move/Copie all mails","Verschiebe/kopiere alle Mails" },
185{ "Delete all mails","Lösche alle Mails" }, 185{ "Delete all mails","Lösche alle Mails" },
186{ "Create new subfolder","Neues Unterverzeichnis" }, 186{ "Create new subfolder","Neues Unterverzeichnis" },
187{ "Delete folder","Lösche Verzeichnis" }, 187{ "Delete folder","Lösche Verzeichnis" },
188{ "Refresh folder list","Aktualisiere Liste" }, 188{ "Refresh folder list","Aktualisiere Liste" },
189{ "Create new folder","Neues Verzeichnis" }, 189{ "Create new folder","Neues Verzeichnis" },
190{ "Disconnect","Diskonnect" }, 190{ "Disconnect","Diskonnect" },
191{ "Set offline","Gehe offline" }, 191{ "Set offline","Gehe offline" },
192{ "Select target box","Wähle Ziel Box" }, 192{ "Select target box","Wähle Ziel Box" },
193{ "<b>Store mail(s) to</b>","<b>Speichere Mail(s) nach</b>" }, 193{ "<b>Store mail(s) to</b>","<b>Speichere Mail(s) nach</b>" },
194{ "Folder:","Verzeichnis:" }, 194{ "Folder:","Verzeichnis:" },
195{ "Account:","Zugang:" }, 195{ "Account:","Zugang:" },
196{ "Prefix will prepend, do not enter","Pfad-Prefix wird vorangestellt" }, 196{ "Prefix will prepend, do not enter","Pfad-Prefix wird vorangestellt" },
197{ "Move mail(s)","Verschiebe Mail(s)" }, 197{ "Move mail(s)","Verschiebe Mail(s)" },
198{ "only mails smaller","nur Mails kleiner" }, 198{ "only mails smaller","nur Mails kleiner" },
199{ " kB"," kB" }, 199{ " kB"," kB" },
200{ " message %1 of %2"," Nachricht %1 von %2" }, 200{ " message %1 of %2"," Nachricht %1 von %2" },
201{ "Copying...","Am Kopieren..." }, 201{ "Copying...","Am Kopieren..." },
202{ "Copy message %1 of %2","Kopiere Nachricht %1 von %2" }, 202{ "Copy message %1 of %2","Kopiere Nachricht %1 von %2" },
203{ "Do you really want to delete\nall selected mails?","Wollen Sie wirklich alle\nselektierten Mails Löschen?" }, 203{ "Do you really want to delete\nall selected mails?","Wollen Sie wirklich alle\nselektierten Mails Löschen?" },
204{ "Delete All Mails","Lösche alle Mails" }, 204{ "Delete All Mails","Lösche alle Mails" },
205{ "Deleting ...","Am Löschen..." }, 205{ "Deleting ...","Am Löschen..." },
206{ "Delete message %1 of %2","Lösche Nachricht %1 von %2" }, 206{ "Delete message %1 of %2","Lösche Nachricht %1 von %2" },
207{ "Compose Message","Verfasse Nachricht" }, 207{ "Compose Message","Verfasse Nachricht" },
208{ "Reply-To","Antwort-An" }, 208{ "Reply-To","Antwort-An" },
209{ "BCC","BCC" }, 209{ "BCC","BCC" },
210{ "Signature","Signatur" }, 210{ "Signature","Signatur" },
211{ "CC","Kopie" }, 211{ "CC","Kopie" },
212{ "Options","Optionen" }, 212{ "Options","Optionen" },
213{ "Delete File","Lösche Datei" }, 213{ "Delete File","Lösche Datei" },
214{ "Add File","Füge Datei hinzu" }, 214{ "Add File","Füge Datei hinzu" },
215{ "Attachment","Anhang" }, 215{ "Attachment","Anhang" },
216{ "send later","sende später" }, 216{ "send later","sende später" },
217{ "use:","via:" }, 217{ "use:","via:" },
218{ "Save","Speichern" }, 218{ "Save","Speichern" },
219{ "Name","Name" }, 219{ "Name","Name" },
220{ "No Receiver spezified","Kein Empfänger angegeben" }, 220{ "No Receiver spezified","Kein Empfänger angegeben" },
221{ "Sending mail","Sende Mail" }, 221{ "Sending mail","Sende Mail" },
222{ "No","Nein" }, 222{ "No","Nein" },
223{ "Yes","Ja" }, 223{ "Yes","Ja" },
224{ "Store message into drafts?\n","Speichere Nachricht in Entwürfe?\n" }, 224{ "Store message into drafts?\n","Speichere Nachricht in Entwürfe?\n" },
225{ "Store message?","Nachricht speichern?" }, 225{ "Store message?","Nachricht speichern?" },
226{ "Select Type","Selektiere Typ" }, 226{ "Select Type","Selektiere Typ" },
227{ "Select Account Type","Wähle Art des Zugangs" }, 227{ "Select Account Type","Wähle Art des Zugangs" },
228{ "IMAP","IMAP (online lesen)" }, 228{ "IMAP","IMAP (online lesen)" },
229{ "POP3","POP3 (holen)" }, 229{ "POP3","POP3 (holen)" },
230{ "SMTP","SMTP (senden)" }, 230{ "SMTP","SMTP (senden)" },
231{ "<p>Do you really want to delete the selected Account?</p>","<p>Möchten Sie wirklich den ausgewählten Account löschen?</p>" }, 231{ "<p>Do you really want to delete the selected Account?</p>","<p>Möchten Sie wirklich den ausgewählten Account löschen?</p>" },
232{ "Question","Eine Frage..." }, 232{ "Question","Eine Frage..." },
233{ "Send this message?","Nachricht wirklich senden?" }, 233{ "Send this message?","Nachricht wirklich senden?" },
234{ "Stop editing message","Stop editing message" }, 234{ "Stop editing message","Stop editing message" },
235{ "Sending mail %1 of %2","Sende Mail %1 von %2" }, 235{ "Sending mail %1 of %2","Sende Mail %1 von %2" },
236{ "%1 of %2 bytes send","%1 von %2 Bytes gesendet" }, 236{ "%1 of %2 bytes send","%1 von %2 Bytes gesendet" },
237{ "Refresh header list","Aktualisiere Titel Liste" }, 237{ "Refresh header list","Aktualisiere Titel Liste" },
238{ "Define a smtp\n account first!\n","Bitte zuerst einen\nSMTP Account anlegen!\n" }, 238{ "Define a smtp\n account first!\n","Bitte zuerst einen\nSMTP Account anlegen!\n" },
239{ "Mail queue flushed","Gespeicherte Mails gesendet!" }, 239{ "Mail queue flushed","Gespeicherte Mails gesendet!" },
240{ "Please create an\nSMTP account first.\nThe SMTP is needed\nfor sending mail.\n","Bitte legen Sie einen\nSMTP Account an.\nDer SMTP Account wird\nfür das Versenden von\nMails benötigt!" }, 240{ "Please create an\nSMTP account first.\nThe SMTP is needed\nfor sending mail.\n","Bitte legen Sie einen\nSMTP Account an.\nDer SMTP Account wird\nfür das Versenden von\nMails benötigt!" },
241{ "Show next mail","Zeige nächste Mail" }, 241{ "Show next mail","Zeige nächste Mail" },
242{ "End of List","Ende der Liste" }, 242{ "End of List","Ende der Liste" },
243{ "Language","Sprache" }, 243{ "Language","Sprache" },
244{ "Time Format","Zeit Format" }, 244{ "Time Format","Zeit Format" },
245{ "%1 groups subscribed","%1 Guppen abboniert" }, 245{ "%1 groups subscribed","%1 Guppen abboniert" },
246{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, 246{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
247{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 247{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
248{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 248{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
249{ "Save settings","Speichere Einstellungen" }, 249{ "Save settings","Speichere Einstellungen" },
250{ "Save standard","Speichere Standard" }, 250{ "Save standard","Speichere Standard" },
251{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 251{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
252{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 252{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
253{ "Data storage path","Daten Speicherpfad" }, 253{ "Data storage path","Daten Speicherpfad" },
254{ "userdefined","benutzerdefiniert" }, 254{ "userdefined","benutzerdefiniert" },
255{ "Reply to this mail","Beantworte diese Mail" }, 255{ "Reply to this mail","Beantworte diese Mail" },
256{ "Su:","Be:" }, 256{ "Su:","Be:" },
257{ "Fr:","Vo:" }, 257{ "Fr:","Vo:" },
258{ "To:","An:" }, 258{ "To:","An:" },
259{ "Download Mail","Mail runterladen" }, 259{ "Download Mail","Mail runterladen" },
260{ "View Source","Zeige Source" }, 260{ "View Source","Zeige Source" },
261{ "Show "To" field in list view","Zeige "An" Feld in Listenansicht" }, 261{ "Show "To" field in list view","Zeige "An" Feld in Listenansicht" },
262{ "Show info fields at startup","Zeige Info Felder beim Start" }, 262{ "Show info fields at startup","Zeige Info Felder beim Start" },
263{ "Show "Subject" info field","Zeige "Betreff" Info Feld" }, 263{ "Show "Subject" info field","Zeige "Betreff" Info Feld" },
264{ "Show "From" info field","Zeige "Von" Info Feld" }, 264{ "Show "From" info field","Zeige "Von" Info Feld" },
265{ "Show "To" info field","Zeige "An" Info Feld" }, 265{ "Show "To" info field","Zeige "An" Info Feld" },
266{ "Mail saved as draft!","Mail als Entwurf gespeichert!" }, 266{ "Mail saved as draft!","Mail als Entwurf gespeichert!" },
267{ "Save signature","Speichere Signatur" }, 267{ "Save signature","Speichere Signatur" },
268{ "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically.","Beim lokalen Verzeichnis\nsind keine Pfade erlaubt.\nBitte Verzeichnisnamen\nangeben oder leer lassen\num automatisch ein lokales\nVerzeichnis mit dem\nZugangsnamen anzulegen." }, 268{ "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically.","Beim lokalen Verzeichnis\nsind keine Pfade erlaubt.\nBitte Verzeichnisnamen\nangeben oder leer lassen\num automatisch ein lokales\nVerzeichnis mit dem\nZugangsnamen anzulegen." },
269{ "Do you really want to\nsend all queued mails?","Möchten sie wirklich\nalle Mails im\nOutgoing-Ordner\nsenden?" }, 269{ "Do you really want to\nsend all queued mails?","Möchten sie wirklich\nalle Mails im\nOutgoing-Ordner\nsenden?" },
270{ "Sending all mails","Senden aller Mails" }, 270{ "Sending all mails","Senden aller Mails" },
271{ "SMTP Account:","SMTP Zugang:" }, 271{ "SMTP Account:","SMTP Zugang:" },
272{ "Select SMTP Account","Wähle SMTP Zugang" }, 272{ "Select SMTP Account","Wähle SMTP Zugang" },
273{ "Error sending mail:\n%1","Fehler beim Mailversand:\n%1\nHaben Sie vergessen\ndie Post ausreichend\nzu frankieren? ;-)" }, 273{ "Error sending mail:\n%1","Fehler beim Mailversand:\n%1\nHaben Sie vergessen\ndie Post ausreichend\nzu frankieren? ;-)" },
274{ "Error sending mail","Fehler beim Mailversand" }, 274{ "Error sending mail","Fehler beim Mailversand" },
275{ "Error sending queued mail.\nBreaking.","Fehler beim Mailversand.\nAbbruch." }, 275{ "Error sending queued mail.\nBreaking.","Fehler beim Mailversand.\nAbbruch." },
276{ "Colors","Farben" }, 276{ "Colors","Farben" },
277{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, 277{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
278{ "Configure OM/Pi...","Konfiguriere OM/Pi..." },
279{ "Global Settings...","Globale Einstellungen..." },
278{ "","" }, 280{ "","" },
279{ "","" }, 281{ "","" },
280{ "","" }, \ No newline at end of file 282{ "","" }, \ No newline at end of file
diff --git a/bin/kdepim/pwmanager/germantranslation.txt b/bin/kdepim/pwmanager/germantranslation.txt
index 06fa727..255f2eb 100644
--- a/bin/kdepim/pwmanager/germantranslation.txt
+++ b/bin/kdepim/pwmanager/germantranslation.txt
@@ -114,263 +114,265 @@
114{ "Language","Sprache" }, 114{ "Language","Sprache" },
115{ "Time Format(nr):","Zeit Format(nr):" }, 115{ "Time Format(nr):","Zeit Format(nr):" },
116{ "24:00","24:00" }, 116{ "24:00","24:00" },
117{ "12:00am","12:00am" }, 117{ "12:00am","12:00am" },
118{ "Week starts on Sunday","Woche beginnt Sonntags" }, 118{ "Week starts on Sunday","Woche beginnt Sonntags" },
119{ "Time Format","Zeit Format" }, 119{ "Time Format","Zeit Format" },
120{ "Date Format:","Datums Format:" }, 120{ "Date Format:","Datums Format:" },
121{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 121{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
122{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 122{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
123{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 123{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
124{ "User defined","Benutzerdefiniert" }, 124{ "User defined","Benutzerdefiniert" },
125{ "User long date:","Format langes Datum:" }, 125{ "User long date:","Format langes Datum:" },
126{ "User short date:","Format kurzes Datum:" }, 126{ "User short date:","Format kurzes Datum:" },
127{ "Monday 19 April 2004: %A %d %B %Y","Monday 19 April 2004: %A %d %B %Y" }, 127{ "Monday 19 April 2004: %A %d %B %Y","Monday 19 April 2004: %A %d %B %Y" },
128{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 128{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
129{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 129{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
130{ "Date Format","Datums Format" }, 130{ "Date Format","Datums Format" },
131{ "Timezone:","Zeitzone:" }, 131{ "Timezone:","Zeitzone:" },
132{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 132{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
133{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 133{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
134{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 134{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
135{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 135{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
136{ "Daylight start:","Sommerzeit Start:" }, 136{ "Daylight start:","Sommerzeit Start:" },
137{ "Mon","Mo" }, 137{ "Mon","Mo" },
138{ "Tue","Di" }, 138{ "Tue","Di" },
139{ "Wed","Mi" }, 139{ "Wed","Mi" },
140{ "Thu","Do" }, 140{ "Thu","Do" },
141{ "Fri","Fr" }, 141{ "Fri","Fr" },
142{ "Sat","Sa" }, 142{ "Sat","Sa" },
143{ "Sun","So" }, 143{ "Sun","So" },
144{ "January","Januar" }, 144{ "January","Januar" },
145{ "February","Februar" }, 145{ "February","Februar" },
146{ "March","März" }, 146{ "March","März" },
147{ "April","April" }, 147{ "April","April" },
148{ "May","Mai" }, 148{ "May","Mai" },
149{ "June","Juni" }, 149{ "June","Juni" },
150{ "July","July" }, 150{ "July","July" },
151{ "August","August" }, 151{ "August","August" },
152{ "September","September" }, 152{ "September","September" },
153{ "October","October" }, 153{ "October","October" },
154{ "November","November" }, 154{ "November","November" },
155{ "December","Dezember" }, 155{ "December","Dezember" },
156{ "tomorrow","Morgen" }, 156{ "tomorrow","Morgen" },
157{ "today","Heute" }, 157{ "today","Heute" },
158{ "yesterday","Gestern" }, 158{ "yesterday","Gestern" },
159{ "Monday","Montag" }, 159{ "Monday","Montag" },
160{ "Tuesday","Dienstag" }, 160{ "Tuesday","Dienstag" },
161{ "Wednesday","Mittwoch" }, 161{ "Wednesday","Mittwoch" },
162{ "Thursday","Donnerstag" }, 162{ "Thursday","Donnerstag" },
163{ "Friday","Freitag" }, 163{ "Friday","Freitag" },
164{ "Saturday","Samstag" }, 164{ "Saturday","Samstag" },
165{ "Sunday","Sonntag" }, 165{ "Sunday","Sonntag" },
166{ "Daylight end:","Sommerzeit Ende:" }, 166{ "Daylight end:","Sommerzeit Ende:" },
167{ "Time Zone","Zeit Zone" }, 167{ "Time Zone","Zeit Zone" },
168{ "Used Mail Client","Benutzter Mail Client" }, 168{ "Used Mail Client","Benutzter Mail Client" },
169{ "Channel:","Channel:" }, 169{ "Channel:","Channel:" },
170{ "Message:","Message:" }, 170{ "Message:","Message:" },
171{ "Parameters:","Parameter:" }, 171{ "Parameters:","Parameter:" },
172{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 172{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
173{ "extra Message:","extra Message:" }, 173{ "extra Message:","extra Message:" },
174{ "extra Parameters:","extra Parameter:" }, 174{ "extra Parameters:","extra Parameter:" },
175{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 175{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
176{ "External Apps.","Externe Appl." }, 176{ "External Apps.","Externe Appl." },
177{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, 177{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
178{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 178{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
179{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 179{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
180{ "Save settings","Speichere Einstellungen" }, 180{ "Save settings","Speichere Einstellungen" },
181{ "Save standard","Speichere Standard" }, 181{ "Save standard","Speichere Standard" },
182{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 182{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
183{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 183{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
184{ "Data storage path","Daten Speicherpfad" }, 184{ "Data storage path","Daten Speicherpfad" },
185{ "Used %1 Client","Benutzer %1 Client" }, 185{ "Used %1 Client","Benutzer %1 Client" },
186{ "No email client installed","Keine Email Client installiert" }, 186{ "No email client installed","Keine Email Client installiert" },
187{ "Userdefined email client","Benutzerdef. Email Client" }, 187{ "Userdefined email client","Benutzerdef. Email Client" },
188{ "OM/Pi email client","OM/Pi Email Client" }, 188{ "OM/Pi email client","OM/Pi Email Client" },
189{ "URL:","URL:" }, 189{ "URL:","URL:" },
190{ "No","Nein" }, 190{ "No","Nein" },
191{ "Yes","Ja" }, 191{ "Yes","Ja" },
192{ "Untitled","Unbenannt" }, 192{ "Untitled","Unbenannt" },
193{ "&New","&Neu" }, 193{ "&New","&Neu" },
194{ "&Open","&Öffne" }, 194{ "&Open","&Öffne" },
195{ "&Close","Schließen" }, 195{ "&Close","Schließen" },
196{ "Save &as...","Speichere &als..." }, 196{ "Save &as...","Speichere &als..." },
197{ "&Text-file...","&Text-Datei..." }, 197{ "&Text-file...","&Text-Datei..." },
198{ "&Gpasman / Kpasman ...","&Gpasman / Kpasman ..." }, 198{ "&Gpasman / Kpasman ...","&Gpasman / Kpasman ..." },
199{ "&CSV (Comma Separated Value) ...","&CSV (Komma getrennte Werte) ..." }, 199{ "&CSV (Comma Separated Value) ...","&CSV (Komma getrennte Werte) ..." },
200{ "E&xport","E&xport" }, 200{ "E&xport","E&xport" },
201{ "I&mport","I&mport" }, 201{ "I&mport","I&mport" },
202{ "&Quit","Beenden" }, 202{ "&Quit","Beenden" },
203{ "&Add password","&Passwort hinzufügen" }, 203{ "&Add password","&Passwort hinzufügen" },
204{ "&Delete","Lösche" }, 204{ "&Delete","Lösche" },
205{ "Change &Master Password","Ändere &Master Passwort" }, 205{ "Change &Master Password","Ändere &Master Passwort" },
206{ "&Manage","Verwalte" }, 206{ "&Manage","Verwalte" },
207{ "&Find","&Finde" }, 207{ "&Find","&Finde" },
208{ "&Lock all entries","Sperre alle Einträge" }, 208{ "&Lock all entries","Sperre alle Einträge" },
209{ "&Deep-lock all entries","Sperre total alle Einträge" }, 209{ "&Deep-lock all entries","Sperre total alle Einträge" },
210{ "&Unlock all entries","Entsperre alle Einträge" }, 210{ "&Unlock all entries","Entsperre alle Einträge" },
211{ "&Configure...","Konfiguriere..." }, 211{ "&Configure...","Konfiguriere..." },
212{ "&Options","Konfig" }, 212{ "&Options","Konfig" },
213{ "C&ategories...","K&ategorien..." }, 213{ "C&ategories...","K&ategorien..." },
214{ "&Sync","&Sync" }, 214{ "&Sync","&Sync" },
215{ "&License","&Lizenz" }, 215{ "&License","&Lizenz" },
216{ "&Faq","&Faq" }, 216{ "&Faq","&Faq" },
217{ "&About PwManager","Über PwManager" }, 217{ "&About PwManager","Über PwManager" },
218{ "&Sync HowTo","&Sync HowTo" }, 218{ "&Sync HowTo","&Sync HowTo" },
219{ "&What's New","Was ist neu?" }, 219{ "&What's New","Was ist neu?" },
220{ "New","Neu" }, 220{ "New","Neu" },
221{ "Open","Öffnen" }, 221{ "Open","Öffnen" },
222{ "Save","Speichern" }, 222{ "Save","Speichern" },
223{ "Save as","Speichern als" }, 223{ "Save as","Speichern als" },
224{ "Print...","Drucke..." }, 224{ "Print...","Drucke..." },
225{ "Add password","Passwort hinzufügen" }, 225{ "Add password","Passwort hinzufügen" },
226{ "Edit password","Passwort ändern" }, 226{ "Edit password","Passwort ändern" },
227{ "Delete password","Passwort löschen" }, 227{ "Delete password","Passwort löschen" },
228{ "Find entry","Finde Eintrag" }, 228{ "Find entry","Finde Eintrag" },
229{ "Lock all entries","Sperre alle Einträge" }, 229{ "Lock all entries","Sperre alle Einträge" },
230{ "Deep-Lock all entries","Sperre total alle Einträge" }, 230{ "Deep-Lock all entries","Sperre total alle Einträge" },
231{ "Unlock all entries","Entsperre alle Einträge" }, 231{ "Unlock all entries","Entsperre alle Einträge" },
232{ "Categories:","Kategorien:" }, 232{ "Categories:","Kategorien:" },
233{ "&Rename","&Umbenennen" }, 233{ "&Rename","&Umbenennen" },
234{ "Username","Benutzername" }, 234{ "Username","Benutzername" },
235{ "Password","Passwort" }, 235{ "Password","Passwort" },
236{ "Launcher","Launcher" }, 236{ "Launcher","Launcher" },
237{ "copy password to clipboard","Kopiere Passwort ins Clipboard" }, 237{ "copy password to clipboard","Kopiere Passwort ins Clipboard" },
238{ "copy username to clipboard","Kopiere Benutzername ins Clipboard" }, 238{ "copy username to clipboard","Kopiere Benutzername ins Clipboard" },
239{ "copy description to clipboard","Kopiere Beschreibung ins Clipboard" }, 239{ "copy description to clipboard","Kopiere Beschreibung ins Clipboard" },
240{ "copy url to clipboard","Kopiere URL ins Clipboard" }, 240{ "copy url to clipboard","Kopiere URL ins Clipboard" },
241{ "copy launcher to clipboard","Kopiere Launcher ins Clipboard" }, 241{ "copy launcher to clipboard","Kopiere Launcher ins Clipboard" },
242{ "copy comment to clipboard","Kopiere Kommentare ins Clipboard" }, 242{ "copy comment to clipboard","Kopiere Kommentare ins Clipboard" },
243{ "Execute "Launcher"",""Launcher" ausführen" }, 243{ "Execute "Launcher"",""Launcher" ausführen" },
244{ "Go to "URL"","Gehe zu "URL"" }, 244{ "Go to "URL"","Gehe zu "URL"" },
245{ "Ready.","Fertig." }, 245{ "Ready.","Fertig." },
246{ "password filename(*.pwm)","passwort dateiname(*.pwm)" }, 246{ "password filename(*.pwm)","passwort dateiname(*.pwm)" },
247{ "File error","Datei Fehler" }, 247{ "File error","Datei Fehler" },
248{ "Could not read file!","Kann Datei nicht lesen!" }, 248{ "Could not read file!","Kann Datei nicht lesen!" },
249{ "Master-password","Master-Passwort" }, 249{ "Master-password","Master-Passwort" },
250{ "Please enter the master-password:","Bitter Master-Passwort eingeben:" }, 250{ "Please enter the master-password:","Bitter Master-Passwort eingeben:" },
251{ "Wrong master-password!\nPlease try again.","Falsches Master-Passwort!\nBitte erneut versuchen." }, 251{ "Wrong master-password!\nPlease try again.","Falsches Master-Passwort!\nBitte erneut versuchen." },
252{ "password error","Passwort Fehler" }, 252{ "password error","Passwort Fehler" },
253{ "Successfully opened file.","Datei erfolgreich geöffnet." }, 253{ "Successfully opened file.","Datei erfolgreich geöffnet." },
254{ "DEEP-LOCKED","TOTAL-GESPERRT" }, 254{ "DEEP-LOCKED","TOTAL-GESPERRT" },
255{ "This file is DEEP-LOCKED!\nThat means all data has been encrypted\nand written out to the file. If you want\nto see the entries, please UNLOCK the file.\nWhile unlocking, you will be prompted for the\nmaster-password or the key-card.","Diese Datei ist TOTAL-GESPERRT!\nDas bedeutet, dass alle Daten verschlüsselt\nsind und in die Datei geschrieben wurden.\nWenn Sie die Einträge sehen möchten\nENTSPERREN Sie bitte die Datei.\nZum Entsperren werden Sie nach\ndem Master-Passwort gefragt." }, 255{ "This file is DEEP-LOCKED!\nThat means all data has been encrypted\nand written out to the file. If you want\nto see the entries, please UNLOCK the file.\nWhile unlocking, you will be prompted for the\nmaster-password or the key-card.","Diese Datei ist TOTAL-GESPERRT!\nDas bedeutet, dass alle Daten verschlüsselt\nsind und in die Datei geschrieben wurden.\nWenn Sie die Einträge sehen möchten\nENTSPERREN Sie bitte die Datei.\nZum Entsperren werden Sie nach\ndem Master-Passwort gefragt." },
256{ "<LOCKED>","<GESPERRT>" }, 256{ "<LOCKED>","<GESPERRT>" },
257{ "To unlock click the icon on the left.","Zum Entsperren auf linkes Icon klicken." }, 257{ "To unlock click the icon on the left.","Zum Entsperren auf linkes Icon klicken." },
258{ "PwManager","PwManager" }, 258{ "PwManager","PwManager" },
259{ "Window-style:","Window-Stil:" }, 259{ "Window-style:","Window-Stil:" },
260{ "Category on top","Kategorien oben" }, 260{ "Category on top","Kategorien oben" },
261{ "Category-list left/top","Kategorien links oben" }, 261{ "Category-list left/top","Kategorien links oben" },
262{ "Font for Password entries:","Schrift für Passwort Einträge:" }, 262{ "Font for Password entries:","Schrift für Passwort Einträge:" },
263{ "Font for Password summary:","Schrift für Passwort Übersicht:" }, 263{ "Font for Password summary:","Schrift für Passwort Übersicht:" },
264{ "Font:","Schriftart:" }, 264{ "Font:","Schriftart:" },
265{ "Summary","Übersicht" }, 265{ "Summary","Übersicht" },
266{ "Compression:","Kompression:" }, 266{ "Compression:","Kompression:" },
267{ "gzip","gzip" }, 267{ "gzip","gzip" },
268{ "Encryption:","Verschlüsselung:" }, 268{ "Encryption:","Verschlüsselung:" },
269{ "Blowfish (128 bit)","Blowfish (128 bit)" }, 269{ "Blowfish (128 bit)","Blowfish (128 bit)" },
270{ "AES-128, Rijndael (128 bit)","AES-128, Rijndael (128 bit)" }, 270{ "AES-128, Rijndael (128 bit)","AES-128, Rijndael (128 bit)" },
271{ "AES-192, Rijndael (192 bit)","AES-192, Rijndael (192 bit)" }, 271{ "AES-192, Rijndael (192 bit)","AES-192, Rijndael (192 bit)" },
272{ "AES-256, Rijndael (256 bit)","AES-256, Rijndael (256 bit)" }, 272{ "AES-256, Rijndael (256 bit)","AES-256, Rijndael (256 bit)" },
273{ "Triple-DES (168 bit)","Triple-DES (168 bit)" }, 273{ "Triple-DES (168 bit)","Triple-DES (168 bit)" },
274{ "Twofish (256 bit)","Twofish (256 bit)" }, 274{ "Twofish (256 bit)","Twofish (256 bit)" },
275{ "Twofish-128 (128 bit)","Twofish-128 (128 bit)" }, 275{ "Twofish-128 (128 bit)","Twofish-128 (128 bit)" },
276{ "Hashing:","Hashing:" }, 276{ "Hashing:","Hashing:" },
277{ "SHA-160, SHA1 (160 bit)","SHA-160, SHA1 (160 bit)" }, 277{ "SHA-160, SHA1 (160 bit)","SHA-160, SHA1 (160 bit)" },
278{ "SHA-256 (256 bit)","SHA-256 (256 bit)" }, 278{ "SHA-256 (256 bit)","SHA-256 (256 bit)" },
279{ "SHA-384 (384 bit)","SHA-384 (384 bit)" }, 279{ "SHA-384 (384 bit)","SHA-384 (384 bit)" },
280{ "SHA-512 (512 bit)","SHA-512 (512 bit)" }, 280{ "SHA-512 (512 bit)","SHA-512 (512 bit)" },
281{ "MD5 (128 bit)","MD5 (128 bit)" }, 281{ "MD5 (128 bit)","MD5 (128 bit)" },
282{ "RIPE-MD-160 (160 bit)","RIPE-MD-160 (160 bit)" }, 282{ "RIPE-MD-160 (160 bit)","RIPE-MD-160 (160 bit)" },
283{ "Tiger (192 bit)","Tiger (192 bit)" }, 283{ "Tiger (192 bit)","Tiger (192 bit)" },
284{ "Permissions:","Zugriffsrechte:" }, 284{ "Permissions:","Zugriffsrechte:" },
285{ "Make backup before saving","Mache Backup vor dem Speichern" }, 285{ "Make backup before saving","Mache Backup vor dem Speichern" },
286{ "Password timeout\n(timeout to hold password in\nmemory,so you don't have to\nre-enter it,if you\nalready have entered it)\n[set to 0 to disable]:","Passwort Timeout\n(Timeout um das Passwort\nim Speicher zu halten,\nso dass es nicht noch mal\neingegeben werden muß.)\n[Setze auf 0 zum deaktivieren]:" }, 286{ "Password timeout\n(timeout to hold password in\nmemory,so you don't have to\nre-enter it,if you\nalready have entered it)\n[set to 0 to disable]:","Passwort Timeout\n(Timeout um das Passwort\nim Speicher zu halten,\nso dass es nicht noch mal\neingegeben werden muß.)\n[Setze auf 0 zum deaktivieren]:" },
287{ "Auto-lock timeout\n(auto lock document after this\namount of seconds)\n[set to 0 to disable]:","(Total-)Sperr-Timeout\n(Sperre Dokument total nach\ndieser Anzahl Sekunden)\n[Setze auf 0 zum deaktivieren]:" }, 287{ "Auto-lock timeout\n(auto lock document after this\namount of seconds)\n[set to 0 to disable]:","(Total-)Sperr-Timeout\n(Sperre Dokument total nach\ndieser Anzahl Sekunden)\n[Setze auf 0 zum deaktivieren]:" },
288{ "deep-lock on autolock","Sperre total beim Sperr-Timeout" }, 288{ "deep-lock on autolock","Sperre total beim Sperr-Timeout" },
289{ "open deeplocked","Öffne total gesperrt" }, 289{ "open deeplocked","Öffne total gesperrt" },
290{ "Favourite browser:","Bevorzugter Browser:" }, 290{ "Favourite browser:","Bevorzugter Browser:" },
291{ "Favourite x-terminal:","Bevorzugtes x-terminal:" }, 291{ "Favourite x-terminal:","Bevorzugtes x-terminal:" },
292{ "Open document with passwords unlocked","Öffne Dokument mit Passwort ungesperrt" }, 292{ "Open document with passwords unlocked","Öffne Dokument mit Passwort ungesperrt" },
293{ "Look && feel","Aussehen" }, 293{ "Look && feel","Aussehen" },
294{ "File","Datei" }, 294{ "File","Datei" },
295{ "Timeout","Timeout" }, 295{ "Timeout","Timeout" },
296{ "Autostart","Autostart" }, 296{ "Autostart","Autostart" },
297{ "External apps","Externe Applik." }, 297{ "External apps","Externe Applik." },
298{ "Miscellaneous","Verschiedenes" }, 298{ "Miscellaneous","Verschiedenes" },
299{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 299{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
300{ "edit category descriptions","Ändere Label für Kategorie" }, 300{ "edit category descriptions","Ändere Label für Kategorie" },
301{ "Close","Schließen" }, 301{ "Close","Schließen" },
302{ "Category:","Category:" }, 302{ "Category:","Category:" },
303{ "Text1 (Description):","Text1 (Beschreibung):" }, 303{ "Text1 (Description):","Text1 (Beschreibung):" },
304{ "Text2 (Username):","Text2 (Benutzername):" }, 304{ "Text2 (Username):","Text2 (Benutzername):" },
305{ "Text3 (Password):","Text3 (Passwort):" }, 305{ "Text3 (Password):","Text3 (Passwort):" },
306{ "edit/add a password entry","Ändere/hinzufüge Passwort Eintrag" }, 306{ "edit/add a password entry","Ändere/hinzufüge Passwort Eintrag" },
307{ "Description:","Beschreibung:" }, 307{ "Description:","Beschreibung:" },
308{ "Username:","Benutzername:" }, 308{ "Username:","Benutzername:" },
309{ "Password:","Passwort:" }, 309{ "Password:","Passwort:" },
310{ "&Reveal","&Offen zeigen" }, 310{ "&Reveal","&Offen zeigen" },
311{ "&Generate","&Generiere" }, 311{ "&Generate","&Generiere" },
312{ "&Password","&Passwort" }, 312{ "&Password","&Passwort" },
313{ "&Comments","Kommentar" }, 313{ "&Comments","Kommentar" },
314{ "Launcher:","Launcher:" }, 314{ "Launcher:","Launcher:" },
315{ "$d = Description","$d = Beschreibung" }, 315{ "$d = Description","$d = Beschreibung" },
316{ "$n = Username","$n = Benutzername" }, 316{ "$n = Username","$n = Benutzername" },
317{ "$c = Comment","$c = Kommentar" }, 317{ "$c = Comment","$c = Kommentar" },
318{ "$u = URL","$u = URL" }, 318{ "$u = URL","$u = URL" },
319{ "$p = Password","$p = Passwort" }, 319{ "$p = Password","$p = Passwort" },
320{ "&Launcher","&Launcher" }, 320{ "&Launcher","&Launcher" },
321{ "Password generator","Passwort Generator" }, 321{ "Password generator","Passwort Generator" },
322{ "Character set:","Buchstaben Set:" }, 322{ "Character set:","Buchstaben Set:" },
323{ "Lowercase (abc)","Klein (abc)" }, 323{ "Lowercase (abc)","Klein (abc)" },
324{ "Uppercase (ABC)","Groß (ABC)" }, 324{ "Uppercase (ABC)","Groß (ABC)" },
325{ "Numbers (123)","Nummmern (123)" }, 325{ "Numbers (123)","Nummmern (123)" },
326{ "Special characters:","Spezielle Buchstaben:" }, 326{ "Special characters:","Spezielle Buchstaben:" },
327{ "Spaces (blank characters)","Leerzeichen" }, 327{ "Spaces (blank characters)","Leerzeichen" },
328{ "User defined:","Benutzer definiert:" }, 328{ "User defined:","Benutzer definiert:" },
329{ "Password Length:","Passwort Länge:" }, 329{ "Password Length:","Passwort Länge:" },
330{ "Enable Filtering to get better passwords","Enable Filtering to get better passwords" }, 330{ "Enable Filtering to get better passwords","Enable Filtering to get better passwords" },
331{ "no password","Kein Passwort" }, 331{ "no password","Kein Passwort" },
332{ "Sorry, you haven't set a password.","Sorry, Sie haben kein Passwort angegeben." }, 332{ "Sorry, you haven't set a password.","Sorry, Sie haben kein Passwort angegeben." },
333{ "not saved, yet","not saved, yet" }, 333{ "not saved, yet","not saved, yet" },
334{ "Can't deep-lock, because the document\nhasn't been saved, yet. Please save\nto a file and try again.","Kann nicht tiefsperren, weil das\nDokument noch nicht gespeichert wurde.\nBitte speichern und noch einmal versuchen." }, 334{ "Can't deep-lock, because the document\nhasn't been saved, yet. Please save\nto a file and try again.","Kann nicht tiefsperren, weil das\nDokument noch nicht gespeichert wurde.\nBitte speichern und noch einmal versuchen." },
335{ "Find","Finde" }, 335{ "Find","Finde" },
336{ "&Exact match","Genaue Übereinstimmung" }, 336{ "&Exact match","Genaue Übereinstimmung" },
337{ "&Case sensitive","Großschrift abhängig" }, 337{ "&Case sensitive","Großschrift abhängig" },
338{ "Search in Column","Suche in Spalten" }, 338{ "Search in Column","Suche in Spalten" },
339{ "&Description","Beschreibung" }, 339{ "&Description","Beschreibung" },
340{ "C&omment","Kommentar" }, 340{ "C&omment","Kommentar" },
341{ "&Username","Benutzername" }, 341{ "&Username","Benutzername" },
342{ "U&RL","URL" }, 342{ "U&RL","URL" },
343{ "delete?","Löschen?" }, 343{ "delete?","Löschen?" },
344{ "Do you really want to delete\nthe selected entry","Wollen Sie wirklich\nden Eintrag löschen:" }, 344{ "Do you really want to delete\nthe selected entry","Wollen Sie wirklich\nden Eintrag löschen:" },
345{ "Save?","Speichern?" }, 345{ "Save?","Speichern?" },
346{ ""\nhas been modified.\nDo you want to save it?",""\nwurde geändert.\nMöchten Sie speichern?" }, 346{ ""\nhas been modified.\nDo you want to save it?",""\nwurde geändert.\nMöchten Sie speichern?" },
347{ "The list\n "","Die Liste\n "" }, 347{ "The list\n "","Die Liste\n "" },
348{ "nothing to do","Nichts zu tun" }, 348{ "nothing to do","Nichts zu tun" },
349{ "Sorry, there's nothing to save.\nPlease first add some passwords.","Sorry, es gibt nichts zu speichern.\nBitte erst Passwörter hinzufügen." }, 349{ "Sorry, there's nothing to save.\nPlease first add some passwords.","Sorry, es gibt nichts zu speichern.\nBitte erst Passwörter hinzufügen." },
350{ "Add new password","Passwort hinzufügen" }, 350{ "Add new password","Passwort hinzufügen" },
351{ "Successfully saved data.","Datei gespeichert." }, 351{ "Successfully saved data.","Datei gespeichert." },
352{ "Category:","Kategorie:" }, 352{ "Category:","Kategorie:" },
353{ "LOCKED","GESPERRT" }, 353{ "LOCKED","GESPERRT" },
354{ "Colors","Farben" }, 354{ "Colors","Farben" },
355{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, 355{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
356{ "Backup enabled","Backup angeschaltet" }, 356{ "Backup enabled","Backup angeschaltet" },
357{ "Use standard backup dir","Standard Backupverzeichnis" }, 357{ "Use standard backup dir","Standard Backupverzeichnis" },
358{ "Number of Backups:","Anzahl der Backups" }, 358{ "Number of Backups:","Anzahl der Backups" },
359{ "Make backup every ","Mache ein Backup alle " }, 359{ "Make backup every ","Mache ein Backup alle " },
360{ " days"," Tage" }, 360{ " days"," Tage" },
361{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, 361{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." },
362{ "Backup Failed!","Backup Problem!" }, 362{ "Backup Failed!","Backup Problem!" },
363{ "Try again now","Versuche jetzt nochmal" }, 363{ "Try again now","Versuche jetzt nochmal" },
364{ "Try again later","Versuche später nochmal" }, 364{ "Try again later","Versuche später nochmal" },
365{ "Try again tomorrow","Versuche morgen nochmal" }, 365{ "Try again tomorrow","Versuche morgen nochmal" },
366{ "Disable backup","Schalte Backup ab" }, 366{ "Disable backup","Schalte Backup ab" },
367{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, 367{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
368{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, 368{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
369{ "Choose action","Wähle Aktion" }, 369{ "Choose action","Wähle Aktion" },
370{ "&Configure PwM/Pi...","Konfiguriere PwM/Pi..." },
371{ "Global Settings...","Globale Einstellungen..." },
370{ "","" }, 372{ "","" },
371{ "","" }, 373{ "","" },
372{ "","" }, 374{ "","" },
373{ "","" }, 375{ "","" },
374{ "","" }, 376{ "","" },
375{ "","" }, 377{ "","" },
376 378
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index cd833cf..b107e2d 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1374,515 +1374,515 @@ void KABCore::editContact( const QString &uid )
1374/** 1374/**
1375 Shows or edits the detail view for the given uid. If the uid is QString::null, 1375 Shows or edits the detail view for the given uid. If the uid is QString::null,
1376 the method will try to find a selected addressee in the view. 1376 the method will try to find a selected addressee in the view.
1377 */ 1377 */
1378void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1378void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1379{ 1379{
1380 if ( mMultipleViewsAtOnce ) 1380 if ( mMultipleViewsAtOnce )
1381 { 1381 {
1382 editContact( uid ); 1382 editContact( uid );
1383 } 1383 }
1384 else 1384 else
1385 { 1385 {
1386 setDetailsVisible( true ); 1386 setDetailsVisible( true );
1387 mActionDetails->setChecked(true); 1387 mActionDetails->setChecked(true);
1388 } 1388 }
1389 1389
1390} 1390}
1391 1391
1392void KABCore::save() 1392void KABCore::save()
1393{ 1393{
1394 if (syncManager->blockSave()) 1394 if (syncManager->blockSave())
1395 return; 1395 return;
1396 if ( !mModified ) 1396 if ( !mModified )
1397 return; 1397 return;
1398 1398
1399 syncManager->setBlockSave(true); 1399 syncManager->setBlockSave(true);
1400 QString text = i18n( "There was an error while attempting to save\n the " 1400 QString text = i18n( "There was an error while attempting to save\n the "
1401 "address book. Please check that some \nother application is " 1401 "address book. Please check that some \nother application is "
1402 "not using it. " ); 1402 "not using it. " );
1403 message(i18n("Saving ... please wait! "), false); 1403 message(i18n("Saving ... please wait! "), false);
1404 //qApp->processEvents(); 1404 //qApp->processEvents();
1405#ifndef KAB_EMBEDDED 1405#ifndef KAB_EMBEDDED
1406 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1406 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1407 if ( !b || !b->save() ) { 1407 if ( !b || !b->save() ) {
1408 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1408 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1409 } 1409 }
1410#else //KAB_EMBEDDED 1410#else //KAB_EMBEDDED
1411 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1411 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1412 if ( !b || !b->save() ) { 1412 if ( !b || !b->save() ) {
1413 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1413 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1414 } 1414 }
1415#endif //KAB_EMBEDDED 1415#endif //KAB_EMBEDDED
1416 1416
1417 message(i18n("Addressbook saved!")); 1417 message(i18n("Addressbook saved!"));
1418 setModified( false ); 1418 setModified( false );
1419 syncManager->setBlockSave(false); 1419 syncManager->setBlockSave(false);
1420} 1420}
1421 1421
1422 1422
1423void KABCore::undo() 1423void KABCore::undo()
1424{ 1424{
1425 UndoStack::instance()->undo(); 1425 UndoStack::instance()->undo();
1426 1426
1427 // Refresh the view 1427 // Refresh the view
1428 mViewManager->refreshView(); 1428 mViewManager->refreshView();
1429} 1429}
1430 1430
1431void KABCore::redo() 1431void KABCore::redo()
1432{ 1432{
1433 RedoStack::instance()->redo(); 1433 RedoStack::instance()->redo();
1434 1434
1435 // Refresh the view 1435 // Refresh the view
1436 mViewManager->refreshView(); 1436 mViewManager->refreshView();
1437} 1437}
1438void KABCore::setJumpButtonBar( bool visible ) 1438void KABCore::setJumpButtonBar( bool visible )
1439{ 1439{
1440 setJumpButtonBarVisible(visible ); 1440 setJumpButtonBarVisible(visible );
1441 saveSettings(); 1441 saveSettings();
1442} 1442}
1443void KABCore::setJumpButtonBarVisible( bool visible ) 1443void KABCore::setJumpButtonBarVisible( bool visible )
1444{ 1444{
1445 if (mMultipleViewsAtOnce) 1445 if (mMultipleViewsAtOnce)
1446 { 1446 {
1447 if ( visible ) 1447 if ( visible )
1448 mJumpButtonBar->show(); 1448 mJumpButtonBar->show();
1449 else 1449 else
1450 mJumpButtonBar->hide(); 1450 mJumpButtonBar->hide();
1451 } 1451 }
1452 else 1452 else
1453 { 1453 {
1454 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1454 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1455 if (mViewManager->isVisible()) 1455 if (mViewManager->isVisible())
1456 { 1456 {
1457 if ( visible ) 1457 if ( visible )
1458 mJumpButtonBar->show(); 1458 mJumpButtonBar->show();
1459 else 1459 else
1460 mJumpButtonBar->hide(); 1460 mJumpButtonBar->hide();
1461 } 1461 }
1462 else 1462 else
1463 { 1463 {
1464 mJumpButtonBar->hide(); 1464 mJumpButtonBar->hide();
1465 } 1465 }
1466 } 1466 }
1467 if ( visible ) { 1467 if ( visible ) {
1468 if ( mIncSearchWidget->currentItem() == 0 ) { 1468 if ( mIncSearchWidget->currentItem() == 0 ) {
1469 message( i18n("Change search field enable jump bar") ); 1469 message( i18n("Change search field enable jump bar") );
1470 } 1470 }
1471 } 1471 }
1472} 1472}
1473 1473
1474 1474
1475void KABCore::setDetailsToState() 1475void KABCore::setDetailsToState()
1476{ 1476{
1477 setDetailsVisible( mActionDetails->isChecked() ); 1477 setDetailsVisible( mActionDetails->isChecked() );
1478} 1478}
1479void KABCore::setDetailsToggle() 1479void KABCore::setDetailsToggle()
1480{ 1480{
1481 mActionDetails->setChecked( !mActionDetails->isChecked() ); 1481 mActionDetails->setChecked( !mActionDetails->isChecked() );
1482 setDetailsToState(); 1482 setDetailsToState();
1483} 1483}
1484 1484
1485 1485
1486 1486
1487void KABCore::setDetailsVisible( bool visible ) 1487void KABCore::setDetailsVisible( bool visible )
1488{ 1488{
1489 if (visible && mDetails->isHidden()) 1489 if (visible && mDetails->isHidden())
1490 { 1490 {
1491 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1491 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1492 if ( addrList.count() > 0 ) 1492 if ( addrList.count() > 0 )
1493 mDetails->setAddressee( addrList[ 0 ] ); 1493 mDetails->setAddressee( addrList[ 0 ] );
1494 } 1494 }
1495 1495
1496 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1496 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1497 // the listview and the detailview. We do that by changing the splitbar size. 1497 // the listview and the detailview. We do that by changing the splitbar size.
1498 if (mMultipleViewsAtOnce) 1498 if (mMultipleViewsAtOnce)
1499 { 1499 {
1500 if ( visible ) 1500 if ( visible )
1501 mDetails->show(); 1501 mDetails->show();
1502 else 1502 else
1503 mDetails->hide(); 1503 mDetails->hide();
1504 } 1504 }
1505 else 1505 else
1506 { 1506 {
1507 if ( visible ) { 1507 if ( visible ) {
1508 mViewManager->hide(); 1508 mViewManager->hide();
1509 mDetails->show(); 1509 mDetails->show();
1510 mIncSearchWidget->setFocus(); 1510 mIncSearchWidget->setFocus();
1511 } 1511 }
1512 else { 1512 else {
1513 mViewManager->show(); 1513 mViewManager->show();
1514 mDetails->hide(); 1514 mDetails->hide();
1515 mViewManager->setFocusAV(); 1515 mViewManager->setFocusAV();
1516 } 1516 }
1517 setJumpButtonBarVisible( !visible ); 1517 setJumpButtonBarVisible( !visible );
1518 } 1518 }
1519 1519
1520} 1520}
1521 1521
1522void KABCore::extensionChanged( int id ) 1522void KABCore::extensionChanged( int id )
1523{ 1523{
1524 //change the details view only for non desktop systems 1524 //change the details view only for non desktop systems
1525#ifndef DESKTOP_VERSION 1525#ifndef DESKTOP_VERSION
1526 1526
1527 if (id == 0) 1527 if (id == 0)
1528 { 1528 {
1529 //the user disabled the extension. 1529 //the user disabled the extension.
1530 1530
1531 if (mMultipleViewsAtOnce) 1531 if (mMultipleViewsAtOnce)
1532 { // enable detailsview again 1532 { // enable detailsview again
1533 setDetailsVisible( true ); 1533 setDetailsVisible( true );
1534 mActionDetails->setChecked( true ); 1534 mActionDetails->setChecked( true );
1535 } 1535 }
1536 else 1536 else
1537 { //go back to the listview 1537 { //go back to the listview
1538 setDetailsVisible( false ); 1538 setDetailsVisible( false );
1539 mActionDetails->setChecked( false ); 1539 mActionDetails->setChecked( false );
1540 mActionDetails->setEnabled(true); 1540 mActionDetails->setEnabled(true);
1541 } 1541 }
1542 1542
1543 } 1543 }
1544 else 1544 else
1545 { 1545 {
1546 //the user enabled the extension. 1546 //the user enabled the extension.
1547 setDetailsVisible( false ); 1547 setDetailsVisible( false );
1548 mActionDetails->setChecked( false ); 1548 mActionDetails->setChecked( false );
1549 1549
1550 if (!mMultipleViewsAtOnce) 1550 if (!mMultipleViewsAtOnce)
1551 { 1551 {
1552 mActionDetails->setEnabled(false); 1552 mActionDetails->setEnabled(false);
1553 } 1553 }
1554 1554
1555 mExtensionManager->setSelectionChanged(); 1555 mExtensionManager->setSelectionChanged();
1556 1556
1557 } 1557 }
1558 1558
1559#endif// DESKTOP_VERSION 1559#endif// DESKTOP_VERSION
1560 1560
1561} 1561}
1562 1562
1563 1563
1564void KABCore::extensionModified( const KABC::Addressee::List &list ) 1564void KABCore::extensionModified( const KABC::Addressee::List &list )
1565{ 1565{
1566 1566
1567 if ( list.count() != 0 ) { 1567 if ( list.count() != 0 ) {
1568 KABC::Addressee::List::ConstIterator it; 1568 KABC::Addressee::List::ConstIterator it;
1569 for ( it = list.begin(); it != list.end(); ++it ) 1569 for ( it = list.begin(); it != list.end(); ++it )
1570 mAddressBook->insertAddressee( *it ); 1570 mAddressBook->insertAddressee( *it );
1571 if ( list.count() > 1 ) 1571 if ( list.count() > 1 )
1572 setModified(); 1572 setModified();
1573 else 1573 else
1574 setModifiedWOrefresh(); 1574 setModifiedWOrefresh();
1575 } 1575 }
1576 if ( list.count() == 0 ) 1576 if ( list.count() == 0 )
1577 mViewManager->refreshView(); 1577 mViewManager->refreshView();
1578 else 1578 else
1579 mViewManager->refreshView( list[ 0 ].uid() ); 1579 mViewManager->refreshView( list[ 0 ].uid() );
1580 1580
1581 1581
1582 1582
1583} 1583}
1584 1584
1585QString KABCore::getNameByPhone( const QString &phone ) 1585QString KABCore::getNameByPhone( const QString &phone )
1586{ 1586{
1587#ifndef KAB_EMBEDDED 1587#ifndef KAB_EMBEDDED
1588 QRegExp r( "[/*/-/ ]" ); 1588 QRegExp r( "[/*/-/ ]" );
1589 QString localPhone( phone ); 1589 QString localPhone( phone );
1590 1590
1591 bool found = false; 1591 bool found = false;
1592 QString ownerName = ""; 1592 QString ownerName = "";
1593 KABC::AddressBook::Iterator iter; 1593 KABC::AddressBook::Iterator iter;
1594 KABC::PhoneNumber::List::Iterator phoneIter; 1594 KABC::PhoneNumber::List::Iterator phoneIter;
1595 KABC::PhoneNumber::List phoneList; 1595 KABC::PhoneNumber::List phoneList;
1596 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1596 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1597 phoneList = (*iter).phoneNumbers(); 1597 phoneList = (*iter).phoneNumbers();
1598 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1598 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1599 ++phoneIter) { 1599 ++phoneIter) {
1600 // Get rid of separator chars so just the numbers are compared. 1600 // Get rid of separator chars so just the numbers are compared.
1601 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1601 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1602 ownerName = (*iter).formattedName(); 1602 ownerName = (*iter).formattedName();
1603 found = true; 1603 found = true;
1604 } 1604 }
1605 } 1605 }
1606 } 1606 }
1607 1607
1608 return ownerName; 1608 return ownerName;
1609#else //KAB_EMBEDDED 1609#else //KAB_EMBEDDED
1610 qDebug("KABCore::getNameByPhone finsih method"); 1610 qDebug("KABCore::getNameByPhone finsih method");
1611 return ""; 1611 return "";
1612#endif //KAB_EMBEDDED 1612#endif //KAB_EMBEDDED
1613 1613
1614} 1614}
1615void KABCore::openConfigGlobalDialog() 1615void KABCore::openConfigGlobalDialog()
1616{ 1616{
1617 KPimPrefsGlobalDialog gc ( this ); 1617 KPimPrefsGlobalDialog gc ( this );
1618 gc.exec(); 1618 gc.exec();
1619} 1619}
1620void KABCore::openConfigDialog() 1620void KABCore::openConfigDialog()
1621{ 1621{
1622 KDialogBase * ConfigureDialog = new KDialogBase ( KDialogBase::Plain , i18n("Configure KA/Pi"), KDialogBase::Default |KDialogBase::Cancel | KDialogBase::Apply | KDialogBase::Ok, KDialogBase::Ok,0, "name", true, true); 1622 KDialogBase * ConfigureDialog = new KDialogBase ( KDialogBase::Plain , i18n("Configure KA/Pi"), KDialogBase::Default |KDialogBase::Cancel | KDialogBase::Apply | KDialogBase::Ok, KDialogBase::Ok,0, "name", true, true);
1623 1623
1624 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog , "KCMKabConfig" ); 1624 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog , "KCMKabConfig" );
1625 ConfigureDialog->setMainWidget( kabcfg ); 1625 ConfigureDialog->setMainWidget( kabcfg );
1626 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1626 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1627 this, SLOT( configurationChanged() ) ); 1627 this, SLOT( configurationChanged() ) );
1628 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1628 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1629 kabcfg, SLOT( save() ) ); 1629 kabcfg, SLOT( save() ) );
1630 connect( ConfigureDialog, SIGNAL( okClicked() ), 1630 connect( ConfigureDialog, SIGNAL( acceptClicked() ),
1631 this, SLOT( configurationChanged() ) ); 1631 this, SLOT( configurationChanged() ) );
1632 connect( ConfigureDialog, SIGNAL( okClicked() ), 1632 connect( ConfigureDialog, SIGNAL( acceptClicked() ),
1633 kabcfg, SLOT( save() ) ); 1633 kabcfg, SLOT( save() ) );
1634 connect( ConfigureDialog, SIGNAL( defaultClicked() ), 1634 connect( ConfigureDialog, SIGNAL( defaultClicked() ),
1635 kabcfg, SLOT( defaults() ) ); 1635 kabcfg, SLOT( defaults() ) );
1636 saveSettings(); 1636 saveSettings();
1637 kabcfg->load(); 1637 kabcfg->load();
1638#ifndef DESKTOP_VERSION 1638#ifndef DESKTOP_VERSION
1639 if ( QApplication::desktop()->height() <= 480 ) 1639 if ( QApplication::desktop()->height() <= 480 )
1640 ConfigureDialog->hideButtons(); 1640 ConfigureDialog->hideButtons();
1641 ConfigureDialog->showMaximized(); 1641 ConfigureDialog->showMaximized();
1642#endif 1642#endif
1643 if ( ConfigureDialog->exec() ) 1643 if ( ConfigureDialog->exec() )
1644 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1644 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1645 delete ConfigureDialog; 1645 delete ConfigureDialog;
1646} 1646}
1647 1647
1648void KABCore::openLDAPDialog() 1648void KABCore::openLDAPDialog()
1649{ 1649{
1650#ifndef KAB_EMBEDDED 1650#ifndef KAB_EMBEDDED
1651 if ( !mLdapSearchDialog ) { 1651 if ( !mLdapSearchDialog ) {
1652 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1652 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1653 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1653 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1654 SLOT( refreshView() ) ); 1654 SLOT( refreshView() ) );
1655 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1655 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1656 SLOT( setModified() ) ); 1656 SLOT( setModified() ) );
1657 } else 1657 } else
1658 mLdapSearchDialog->restoreSettings(); 1658 mLdapSearchDialog->restoreSettings();
1659 1659
1660 if ( mLdapSearchDialog->isOK() ) 1660 if ( mLdapSearchDialog->isOK() )
1661 mLdapSearchDialog->exec(); 1661 mLdapSearchDialog->exec();
1662#else //KAB_EMBEDDED 1662#else //KAB_EMBEDDED
1663 qDebug("KABCore::openLDAPDialog() finsih method"); 1663 qDebug("KABCore::openLDAPDialog() finsih method");
1664#endif //KAB_EMBEDDED 1664#endif //KAB_EMBEDDED
1665} 1665}
1666 1666
1667void KABCore::print() 1667void KABCore::print()
1668{ 1668{
1669#ifndef KAB_EMBEDDED 1669#ifndef KAB_EMBEDDED
1670 KPrinter printer; 1670 KPrinter printer;
1671 if ( !printer.setup( this ) ) 1671 if ( !printer.setup( this ) )
1672 return; 1672 return;
1673 1673
1674 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1674 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1675 mViewManager->selectedUids(), this ); 1675 mViewManager->selectedUids(), this );
1676 1676
1677 wizard.exec(); 1677 wizard.exec();
1678#else //KAB_EMBEDDED 1678#else //KAB_EMBEDDED
1679 qDebug("KABCore::print() finsih method"); 1679 qDebug("KABCore::print() finsih method");
1680#endif //KAB_EMBEDDED 1680#endif //KAB_EMBEDDED
1681 1681
1682} 1682}
1683 1683
1684 1684
1685void KABCore::addGUIClient( KXMLGUIClient *client ) 1685void KABCore::addGUIClient( KXMLGUIClient *client )
1686{ 1686{
1687 if ( mGUIClient ) 1687 if ( mGUIClient )
1688 mGUIClient->insertChildClient( client ); 1688 mGUIClient->insertChildClient( client );
1689 else 1689 else
1690 KMessageBox::error( this, "no KXMLGUICLient"); 1690 KMessageBox::error( this, "no KXMLGUICLient");
1691} 1691}
1692 1692
1693 1693
1694void KABCore::configurationChanged() 1694void KABCore::configurationChanged()
1695{ 1695{
1696 mExtensionManager->reconfigure(); 1696 mExtensionManager->reconfigure();
1697} 1697}
1698 1698
1699void KABCore::addressBookChanged() 1699void KABCore::addressBookChanged()
1700{ 1700{
1701/*US 1701/*US
1702 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1702 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1703 while ( it.current() ) { 1703 while ( it.current() ) {
1704 if ( it.current()->dirty() ) { 1704 if ( it.current()->dirty() ) {
1705 QString text = i18n( "Data has been changed externally. Unsaved " 1705 QString text = i18n( "Data has been changed externally. Unsaved "
1706 "changes will be lost." ); 1706 "changes will be lost." );
1707 KMessageBox::information( this, text ); 1707 KMessageBox::information( this, text );
1708 } 1708 }
1709 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1709 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1710 ++it; 1710 ++it;
1711 } 1711 }
1712*/ 1712*/
1713 if (mEditorDialog) 1713 if (mEditorDialog)
1714 { 1714 {
1715 if (mEditorDialog->dirty()) 1715 if (mEditorDialog->dirty())
1716 { 1716 {
1717 QString text = i18n( "Data has been changed externally. Unsaved " 1717 QString text = i18n( "Data has been changed externally. Unsaved "
1718 "changes will be lost." ); 1718 "changes will be lost." );
1719 KMessageBox::information( this, text ); 1719 KMessageBox::information( this, text );
1720 } 1720 }
1721 QString currentuid = mEditorDialog->addressee().uid(); 1721 QString currentuid = mEditorDialog->addressee().uid();
1722 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1722 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1723 } 1723 }
1724 mViewManager->refreshView(); 1724 mViewManager->refreshView();
1725 1725
1726 1726
1727} 1727}
1728 1728
1729AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1729AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1730 const char *name ) 1730 const char *name )
1731{ 1731{
1732 1732
1733 if ( mEditorDialog == 0 ) { 1733 if ( mEditorDialog == 0 ) {
1734 mEditorDialog = new AddresseeEditorDialog( this, parent, 1734 mEditorDialog = new AddresseeEditorDialog( this, parent,
1735 name ? name : "editorDialog" ); 1735 name ? name : "editorDialog" );
1736 1736
1737 1737
1738 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1738 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1739 SLOT( contactModified( const KABC::Addressee& ) ) ); 1739 SLOT( contactModified( const KABC::Addressee& ) ) );
1740 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1740 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1741 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1741 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1742 } 1742 }
1743 1743
1744 return mEditorDialog; 1744 return mEditorDialog;
1745} 1745}
1746 1746
1747void KABCore::slotEditorDestroyed( const QString &uid ) 1747void KABCore::slotEditorDestroyed( const QString &uid )
1748{ 1748{
1749 //mEditorDict.remove( uid ); 1749 //mEditorDict.remove( uid );
1750} 1750}
1751 1751
1752void KABCore::initGUI() 1752void KABCore::initGUI()
1753{ 1753{
1754#ifndef KAB_EMBEDDED 1754#ifndef KAB_EMBEDDED
1755 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1755 QHBoxLayout *topLayout = new QHBoxLayout( this );
1756 topLayout->setSpacing( KDialogBase::spacingHint() ); 1756 topLayout->setSpacing( KDialogBase::spacingHint() );
1757 1757
1758 mExtensionBarSplitter = new QSplitter( this ); 1758 mExtensionBarSplitter = new QSplitter( this );
1759 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1759 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1760 1760
1761 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1761 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1762 1762
1763 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1763 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1764 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1764 mIncSearchWidget = new IncSearchWidget( viewSpace );
1765 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1765 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1766 SLOT( incrementalSearch( const QString& ) ) ); 1766 SLOT( incrementalSearch( const QString& ) ) );
1767 1767
1768 mViewManager = new ViewManager( this, viewSpace ); 1768 mViewManager = new ViewManager( this, viewSpace );
1769 viewSpace->setStretchFactor( mViewManager, 1 ); 1769 viewSpace->setStretchFactor( mViewManager, 1 );
1770 1770
1771 mDetails = new ViewContainer( mDetailsSplitter ); 1771 mDetails = new ViewContainer( mDetailsSplitter );
1772 1772
1773 mJumpButtonBar = new JumpButtonBar( this, this ); 1773 mJumpButtonBar = new JumpButtonBar( this, this );
1774 1774
1775 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1775 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1776 1776
1777 topLayout->addWidget( mExtensionBarSplitter ); 1777 topLayout->addWidget( mExtensionBarSplitter );
1778 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1778 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1779 topLayout->addWidget( mJumpButtonBar ); 1779 topLayout->addWidget( mJumpButtonBar );
1780 //topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1780 //topLayout->setStretchFactor( mJumpButtonBar, 1 );
1781 1781
1782 mXXPortManager = new XXPortManager( this, this ); 1782 mXXPortManager = new XXPortManager( this, this );
1783 1783
1784#else //KAB_EMBEDDED 1784#else //KAB_EMBEDDED
1785 //US initialize viewMenu before settingup viewmanager. 1785 //US initialize viewMenu before settingup viewmanager.
1786 // Viewmanager needs this menu to plugin submenues. 1786 // Viewmanager needs this menu to plugin submenues.
1787 viewMenu = new QPopupMenu( this ); 1787 viewMenu = new QPopupMenu( this );
1788 settingsMenu = new QPopupMenu( this ); 1788 settingsMenu = new QPopupMenu( this );
1789 //filterMenu = new QPopupMenu( this ); 1789 //filterMenu = new QPopupMenu( this );
1790 ImportMenu = new QPopupMenu( this ); 1790 ImportMenu = new QPopupMenu( this );
1791 ExportMenu = new QPopupMenu( this ); 1791 ExportMenu = new QPopupMenu( this );
1792 syncMenu = new QPopupMenu( this ); 1792 syncMenu = new QPopupMenu( this );
1793 changeMenu= new QPopupMenu( this ); 1793 changeMenu= new QPopupMenu( this );
1794 beamMenu= new QPopupMenu( this ); 1794 beamMenu= new QPopupMenu( this );
1795 1795
1796//US since we have no splitter for the embedded system, setup 1796//US since we have no splitter for the embedded system, setup
1797// a layout with two frames. One left and one right. 1797// a layout with two frames. One left and one right.
1798 1798
1799 QBoxLayout *topLayout; 1799 QBoxLayout *topLayout;
1800 1800
1801 // = new QHBoxLayout( this ); 1801 // = new QHBoxLayout( this );
1802// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1802// QBoxLayout *topLayout = (QBoxLayout*)layout();
1803 1803
1804// QWidget *mainBox = new QWidget( this ); 1804// QWidget *mainBox = new QWidget( this );
1805// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1805// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1806 1806
1807#ifdef DESKTOP_VERSION 1807#ifdef DESKTOP_VERSION
1808 topLayout = new QHBoxLayout( this ); 1808 topLayout = new QHBoxLayout( this );
1809 1809
1810 1810
1811 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1811 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1812 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1812 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1813 1813
1814 topLayout->addWidget(mMiniSplitter ); 1814 topLayout->addWidget(mMiniSplitter );
1815 1815
1816 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1816 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1817 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1817 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1818 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1818 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1819 mDetails = new ViewContainer( mMiniSplitter ); 1819 mDetails = new ViewContainer( mMiniSplitter );
1820 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1820 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1821#else 1821#else
1822 if ( QApplication::desktop()->width() > 480 ) { 1822 if ( QApplication::desktop()->width() > 480 ) {
1823 topLayout = new QHBoxLayout( this ); 1823 topLayout = new QHBoxLayout( this );
1824 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1824 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1825 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1825 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1826 } else { 1826 } else {
1827 1827
1828 topLayout = new QHBoxLayout( this ); 1828 topLayout = new QHBoxLayout( this );
1829 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1829 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1830 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1830 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1831 } 1831 }
1832 1832
1833 topLayout->addWidget(mMiniSplitter ); 1833 topLayout->addWidget(mMiniSplitter );
1834 mViewManager = new ViewManager( this, mMiniSplitter ); 1834 mViewManager = new ViewManager( this, mMiniSplitter );
1835 mDetails = new ViewContainer( mMiniSplitter ); 1835 mDetails = new ViewContainer( mMiniSplitter );
1836 1836
1837 1837
1838 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1838 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1839#endif 1839#endif
1840 //eh->hide(); 1840 //eh->hide();
1841 // topLayout->addWidget(mExtensionManager ); 1841 // topLayout->addWidget(mExtensionManager );
1842 1842
1843 1843
1844/*US 1844/*US
1845#ifndef KAB_NOSPLITTER 1845#ifndef KAB_NOSPLITTER
1846 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1846 QHBoxLayout *topLayout = new QHBoxLayout( this );
1847//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1847//US topLayout->setSpacing( KDialogBase::spacingHint() );
1848 topLayout->setSpacing( 10 ); 1848 topLayout->setSpacing( 10 );
1849 1849
1850 mDetailsSplitter = new QSplitter( this ); 1850 mDetailsSplitter = new QSplitter( this );
1851 1851
1852 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1852 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1853 1853
1854 mViewManager = new ViewManager( this, viewSpace ); 1854 mViewManager = new ViewManager( this, viewSpace );
1855 viewSpace->setStretchFactor( mViewManager, 1 ); 1855 viewSpace->setStretchFactor( mViewManager, 1 );
1856 1856
1857 mDetails = new ViewContainer( mDetailsSplitter ); 1857 mDetails = new ViewContainer( mDetailsSplitter );
1858 1858
1859 topLayout->addWidget( mDetailsSplitter ); 1859 topLayout->addWidget( mDetailsSplitter );
1860 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1860 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1861#else //KAB_NOSPLITTER 1861#else //KAB_NOSPLITTER
1862 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1862 QHBoxLayout *topLayout = new QHBoxLayout( this );
1863//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1863//US topLayout->setSpacing( KDialogBase::spacingHint() );
1864 topLayout->setSpacing( 10 ); 1864 topLayout->setSpacing( 10 );
1865 1865
1866// mDetailsSplitter = new QSplitter( this ); 1866// mDetailsSplitter = new QSplitter( this );
1867 1867
1868 QVBox *viewSpace = new QVBox( this ); 1868 QVBox *viewSpace = new QVBox( this );
1869 1869
1870 mViewManager = new ViewManager( this, viewSpace ); 1870 mViewManager = new ViewManager( this, viewSpace );
1871 viewSpace->setStretchFactor( mViewManager, 1 ); 1871 viewSpace->setStretchFactor( mViewManager, 1 );
1872 1872
1873 mDetails = new ViewContainer( this ); 1873 mDetails = new ViewContainer( this );
1874 1874
1875 topLayout->addWidget( viewSpace ); 1875 topLayout->addWidget( viewSpace );
1876// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1876// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1877 topLayout->addWidget( mDetails ); 1877 topLayout->addWidget( mDetails );
1878#endif //KAB_NOSPLITTER 1878#endif //KAB_NOSPLITTER
1879*/ 1879*/
1880 1880
1881 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1881 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1882 syncManager->setBlockSave(false); 1882 syncManager->setBlockSave(false);
1883 1883
1884 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1884 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1885 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1885 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1886 QString sync_file = sentSyncFile(); 1886 QString sync_file = sentSyncFile();
1887 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); 1887 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1());
1888 syncManager->setDefaultFileName( sync_file ); 1888 syncManager->setDefaultFileName( sync_file );
@@ -3177,258 +3177,258 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
3177 local->insertAddressee( inL, false ); 3177 local->insertAddressee( inL, false );
3178 inR = inL; 3178 inR = inL;
3179 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL ); 3179 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL );
3180 inR.setResource( 0 ); 3180 inR.setResource( 0 );
3181 remote->insertAddressee( inR, false ); 3181 remote->insertAddressee( inR, false );
3182 } 3182 }
3183 } 3183 }
3184 } else { 3184 } else {
3185 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { 3185 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) {
3186 //qDebug("data %s ", inL.revision().toString().latin1()); 3186 //qDebug("data %s ", inL.revision().toString().latin1());
3187 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 3187 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
3188 local->removeAddressee( inL ); 3188 local->removeAddressee( inL );
3189 ++deletedAddresseeL; 3189 ++deletedAddresseeL;
3190 } else { 3190 } else {
3191 if ( ! syncManager->mWriteBackExistingOnly ) { 3191 if ( ! syncManager->mWriteBackExistingOnly ) {
3192 ++addedAddresseeR; 3192 ++addedAddresseeR;
3193 inL.setRevision( modifiedCalendar ); 3193 inL.setRevision( modifiedCalendar );
3194 local->insertAddressee( inL, false ); 3194 local->insertAddressee( inL, false );
3195 inR = inL; 3195 inR = inL;
3196 inR.setIDStr( ":" ); 3196 inR.setIDStr( ":" );
3197 inR.setResource( 0 ); 3197 inR.setResource( 0 );
3198 remote->insertAddressee( inR, false ); 3198 remote->insertAddressee( inR, false );
3199 } 3199 }
3200 } 3200 }
3201 } 3201 }
3202 } else { 3202 } else {
3203 ++filteredOUT; 3203 ++filteredOUT;
3204 } 3204 }
3205 } 3205 }
3206 } 3206 }
3207 } 3207 }
3208 ++incCounter; 3208 ++incCounter;
3209 } 3209 }
3210 el.clear(); 3210 el.clear();
3211 syncManager->hideProgressBar(); 3211 syncManager->hideProgressBar();
3212 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); 3212 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
3213 // get rid of micro seconds 3213 // get rid of micro seconds
3214 QTime t = mLastAddressbookSync.time(); 3214 QTime t = mLastAddressbookSync.time();
3215 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 3215 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) );
3216 addresseeLSync.setRevision( mLastAddressbookSync ); 3216 addresseeLSync.setRevision( mLastAddressbookSync );
3217 addresseeRSync.setRevision( mLastAddressbookSync ); 3217 addresseeRSync.setRevision( mLastAddressbookSync );
3218 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ; 3218 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ;
3219 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName ); 3219 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName );
3220 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ; 3220 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ;
3221 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") ); 3221 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") );
3222 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ; 3222 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ;
3223 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() ); 3223 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() );
3224 addresseeRSync.setNote( "" ) ; 3224 addresseeRSync.setNote( "" ) ;
3225 addresseeLSync.setNote( "" ); 3225 addresseeLSync.setNote( "" );
3226 3226
3227 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 3227 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
3228 remote->insertAddressee( addresseeRSync, false ); 3228 remote->insertAddressee( addresseeRSync, false );
3229 local->insertAddressee( addresseeLSync, false ); 3229 local->insertAddressee( addresseeLSync, false );
3230 QString mes; 3230 QString mes;
3231 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR, filteredIN, filteredOUT ); 3231 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR, filteredIN, filteredOUT );
3232 qDebug( mes ); 3232 qDebug( mes );
3233 mes = i18n("Local addressbook changed!\n") +mes; 3233 mes = i18n("Local addressbook changed!\n") +mes;
3234 if ( syncManager->mShowSyncSummary ) { 3234 if ( syncManager->mShowSyncSummary ) {
3235 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 3235 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
3236 i18n("KA/Pi Synchronization"),i18n("Write back"))) { 3236 i18n("KA/Pi Synchronization"),i18n("Write back"))) {
3237 qDebug("KA: WB cancelled "); 3237 qDebug("KA: WB cancelled ");
3238 syncManager->mWriteBackFile = false; 3238 syncManager->mWriteBackFile = false;
3239 return syncOK; 3239 return syncOK;
3240 } 3240 }
3241 } 3241 }
3242 return syncOK; 3242 return syncOK;
3243} 3243}
3244 3244
3245 3245
3246//this is a overwritten callbackmethods from the syncinterface 3246//this is a overwritten callbackmethods from the syncinterface
3247bool KABCore::sync(KSyncManager* manager, QString filename, int mode) 3247bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
3248{ 3248{
3249 3249
3250 //pending prepare addresseeview for output 3250 //pending prepare addresseeview for output
3251 //pending detect, if remote file has REV field. if not switch to external sync 3251 //pending detect, if remote file has REV field. if not switch to external sync
3252 mGlobalSyncMode = SYNC_MODE_NORMAL; 3252 mGlobalSyncMode = SYNC_MODE_NORMAL;
3253 if ( manager != syncManager ) 3253 if ( manager != syncManager )
3254 qDebug("KABCore::sync:: ERROR! :: manager != syncManager "); 3254 qDebug("KABCore::sync:: ERROR! :: manager != syncManager ");
3255 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 3255 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
3256 3256
3257 AddressBook abLocal(filename,"syncContact"); 3257 AddressBook abLocal(filename,"syncContact");
3258 bool syncOK = false; 3258 bool syncOK = false;
3259 if ( abLocal.load() ) { 3259 if ( abLocal.load() ) {
3260 qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode ); 3260 qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode );
3261 bool external = false; 3261 bool external = false;
3262 bool isXML = false; 3262 bool isXML = false;
3263 if ( filename.right(4) == ".xml") { 3263 if ( filename.right(4) == ".xml") {
3264 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3264 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3265 isXML = true; 3265 isXML = true;
3266 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 3266 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
3267 } else { 3267 } else {
3268 external = !manager->mIsKapiFile; 3268 external = !manager->mIsKapiFile;
3269 if ( external ) { 3269 if ( external ) {
3270 qDebug("KA: Sync::Setting vcf mode to external "); 3270 qDebug("KA: Sync::Setting vcf mode to external ");
3271 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3271 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3272 AddressBook::Iterator it; 3272 AddressBook::Iterator it;
3273 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 3273 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
3274 (*it).setID( mCurrentSyncDevice, (*it).uid() ); 3274 (*it).setID( mCurrentSyncDevice, (*it).uid() );
3275 (*it).computeCsum( mCurrentSyncDevice ); 3275 (*it).computeCsum( mCurrentSyncDevice );
3276 } 3276 }
3277 } 3277 }
3278 } 3278 }
3279 //AddressBook::Iterator it; 3279 //AddressBook::Iterator it;
3280 //QStringList vcards; 3280 //QStringList vcards;
3281 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 3281 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
3282 // qDebug("Name %s ", (*it).familyName().latin1()); 3282 // qDebug("Name %s ", (*it).familyName().latin1());
3283 //} 3283 //}
3284 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 3284 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
3285 syncManager->hideProgressBar(); 3285 syncManager->hideProgressBar();
3286 if ( syncOK ) { 3286 if ( syncOK ) {
3287 if ( syncManager->mWriteBackFile ) 3287 if ( syncManager->mWriteBackFile )
3288 { 3288 {
3289 if ( external ) 3289 if ( external )
3290 abLocal.removeSyncAddressees( !isXML); 3290 abLocal.removeSyncAddressees( !isXML);
3291 qDebug("KA: Sync::Saving remote AB "); 3291 qDebug("KA: Sync::Saving remote AB ");
3292 if ( ! abLocal.saveAB()) 3292 if ( ! abLocal.saveAB())
3293 qDebug("KA: sync::Error writing back AB to file "); 3293 qDebug("KA: sync::Error writing back AB to file ");
3294 if ( external ) { 3294 if ( external ) {
3295 // afterwrite processing 3295 // afterwrite processing
3296 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); 3296 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML);
3297 } 3297 }
3298 } 3298 }
3299 } 3299 }
3300 setModified(); 3300 setModified();
3301 3301
3302 } 3302 }
3303 abLocal.removeResources(); 3303 abLocal.removeResources();
3304 if ( syncOK ) 3304 if ( syncOK )
3305 mViewManager->refreshView(); 3305 mViewManager->refreshView();
3306 return syncOK; 3306 return syncOK;
3307 3307
3308} 3308}
3309void KABCore::removeSyncInfo( QString syncProfile) 3309void KABCore::removeSyncInfo( QString syncProfile)
3310{ 3310{
3311 qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1()); 3311 qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1());
3312 mAddressBook->removeSyncInfo( syncProfile ); 3312 mAddressBook->removeSyncInfo( syncProfile );
3313 setModified(); 3313 setModified();
3314} 3314}
3315 3315
3316 3316
3317//this is a overwritten callbackmethods from the syncinterface 3317//this is a overwritten callbackmethods from the syncinterface
3318bool KABCore::syncExternal(KSyncManager* manager, QString resource) 3318bool KABCore::syncExternal(KSyncManager* manager, QString resource)
3319{ 3319{
3320 if ( resource == "phone" ) 3320 if ( resource == "phone" )
3321 return syncPhone(); 3321 return syncPhone();
3322 disableBR( true ); 3322 disableBR( true );
3323 if ( manager != syncManager ) 3323 if ( manager != syncManager )
3324 qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); 3324 qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager ");
3325 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 3325 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
3326 3326
3327 AddressBook abLocal( resource,"syncContact"); 3327 AddressBook abLocal( resource,"syncContact");
3328 bool syncOK = false; 3328 bool syncOK = false;
3329 message(i18n("Loading DTM address data..."), false); 3329 message(i18n("Loading DTM address data..."), false);
3330 if ( abLocal.load() ) { 3330 if ( abLocal.load() ) {
3331 qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); 3331 qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1());
3332 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3332 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3333 message(i18n("Sync preprocessing..."),false); 3333 message(i18n("Sync preprocessing..."),false);
3334 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); 3334 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false );
3335 message(i18n("Synchronizing..."),false); 3335 message(i18n("Synchronizing..."),false);
3336 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 3336 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
3337 syncManager->hideProgressBar(); 3337 syncManager->hideProgressBar();
3338 if ( syncOK ) { 3338 if ( syncOK ) {
3339 if ( syncManager->mWriteBackFile ) { 3339 if ( syncManager->mWriteBackFile ) {
3340 abLocal.removeSyncAddressees( false ); 3340 abLocal.removeSyncAddressees( false );
3341 message(i18n("Saving DTM address data..."),false); 3341 message(i18n("Saving DTM address data..."),false);
3342 abLocal.saveAB(); 3342 abLocal.saveAB();
3343 message(i18n("Sync postprocessing..."),false); 3343 message(i18n("Sync postprocessing..."),false);
3344 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); 3344 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
3345 } 3345 }
3346 } else 3346 } else
3347 message( i18n("Sync cancelled or failed.") ); 3347 message( i18n("Sync cancelled or failed.") );
3348 setModified(); 3348 setModified();
3349 } 3349 }
3350 abLocal.removeResources(); 3350 abLocal.removeResources();
3351 if ( syncOK ) { 3351 if ( syncOK ) {
3352 mViewManager->refreshView(); 3352 mViewManager->refreshView();
3353 message(i18n("DTM syncing finished.")); 3353 message(i18n("DTM syncing finished."));
3354 } 3354 }
3355 disableBR( false ); 3355 disableBR( false );
3356 return syncOK; 3356 return syncOK;
3357 3357
3358} 3358}
3359void KABCore::message( QString m, bool startTimer) 3359void KABCore::message( QString m, bool startTimer)
3360{ 3360{
3361 topLevelWidget()->setCaption( m ); 3361 topLevelWidget()->setCaption( m );
3362 qApp->processEvents(); 3362 qApp->processEvents();
3363 if ( startTimer ) 3363 if ( startTimer )
3364 mMessageTimer->start( 15000, true ); 3364 mMessageTimer->start( 15000, true );
3365 else 3365 else
3366 mMessageTimer->stop(); 3366 mMessageTimer->stop();
3367} 3367}
3368bool KABCore::syncPhone() 3368bool KABCore::syncPhone()
3369{ 3369{
3370 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 3370 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
3371 QString fileName = getPhoneFile(); 3371 QString fileName = getPhoneFile();
3372 if ( !PhoneAccess::readFromPhone( fileName) ) { 3372 if ( !PhoneAccess::readFromPhone( fileName) ) {
3373 message(i18n("Phone access failed!")); 3373 message(i18n("Phone access failed!"));
3374 return false; 3374 return false;
3375 } 3375 }
3376 AddressBook abLocal( fileName,"syncContact"); 3376 AddressBook abLocal( fileName,"syncContact");
3377 bool syncOK = false; 3377 bool syncOK = false;
3378 { 3378 {
3379 abLocal.importFromFile( fileName ); 3379 abLocal.importFromFile( fileName );
3380 qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); 3380 qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1());
3381 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3381 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3382 abLocal.preparePhoneSync( mCurrentSyncDevice, true ); 3382 abLocal.preparePhoneSync( mCurrentSyncDevice, true );
3383 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 3383 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
3384 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 3384 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
3385 syncManager->hideProgressBar(); 3385 syncManager->hideProgressBar();
3386 if ( syncOK ) { 3386 if ( syncOK ) {
3387 if ( syncManager->mWriteBackFile ) { 3387 if ( syncManager->mWriteBackFile ) {
3388 abLocal.removeSyncAddressees( true ); 3388 abLocal.removeSyncAddressees( true );
3389 abLocal.saveABphone( fileName ); 3389 abLocal.saveABphone( fileName );
3390 abLocal.findNewExtIds( fileName, mCurrentSyncDevice ); 3390 abLocal.findNewExtIds( fileName, mCurrentSyncDevice );
3391 //abLocal.preparePhoneSync( mCurrentSyncDevice, false ); 3391 //abLocal.preparePhoneSync( mCurrentSyncDevice, false );
3392 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); 3392 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
3393 } 3393 }
3394 } 3394 }
3395 setModified(); 3395 setModified();
3396 } 3396 }
3397 abLocal.removeResources(); 3397 abLocal.removeResources();
3398 if ( syncOK ) 3398 if ( syncOK )
3399 mViewManager->refreshView(); 3399 mViewManager->refreshView();
3400 return syncOK; 3400 return syncOK;
3401} 3401}
3402void KABCore::getFile( bool success ) 3402void KABCore::getFile( bool success )
3403{ 3403{
3404 if ( ! success ) { 3404 if ( ! success ) {
3405 message( i18n("Error receiving file. Nothing changed!") ); 3405 message( i18n("Error receiving file. Nothing changed!") );
3406 return; 3406 return;
3407 } 3407 }
3408 int count = mAddressBook->importFromFile( sentSyncFile() , false, true ); 3408 int count = mAddressBook->importFromFile( sentSyncFile() , false, true );
3409 if ( count ) 3409 if ( count )
3410 setModified( true ); 3410 setModified( true );
3411 message( i18n("Pi-Sync successful!") ); 3411 message( i18n("Pi-Sync successful!") );
3412 mViewManager->refreshView(); 3412 mViewManager->refreshView();
3413} 3413}
3414void KABCore::syncFileRequest() 3414void KABCore::syncFileRequest()
3415{ 3415{
3416 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) { 3416 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) {
3417 syncManager->slotSyncMenu( 999 ); 3417 syncManager->slotSyncMenu( 999 );
3418 } 3418 }
3419 mAddressBook->export2File( sentSyncFile() ); 3419 mAddressBook->export2File( sentSyncFile() );
3420} 3420}
3421QString KABCore::sentSyncFile() 3421QString KABCore::sentSyncFile()
3422{ 3422{
3423#ifdef DESKTOP_VERSION 3423#ifdef DESKTOP_VERSION
3424 return locateLocal( "tmp", "copysyncab.vcf" ); 3424 return locateLocal( "tmp", "copysyncab.vcf" );
3425#else 3425#else
3426 return QString( "/tmp/copysyncab.vcf" ); 3426 return QString( "/tmp/copysyncab.vcf" );
3427#endif 3427#endif
3428} 3428}
3429 3429
3430void KABCore::setCaptionBack() 3430void KABCore::setCaptionBack()
3431{ 3431{
3432 mMessageTimer->stop(); 3432 mMessageTimer->stop();
3433 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") ); 3433 topLevelWidget()->setCaption( i18n("KA/Pi") );
3434} 3434}
diff --git a/kmicromail/koprefsdialog.cpp b/kmicromail/koprefsdialog.cpp
index 7de7064..017f1f7 100644
--- a/kmicromail/koprefsdialog.cpp
+++ b/kmicromail/koprefsdialog.cpp
@@ -1,494 +1,489 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#include <kdialog.h> 23#include <kdialog.h>
24#include <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qgroupbox.h> 26#include <qgroupbox.h>
27#include <qbuttongroup.h> 27#include <qbuttongroup.h>
28#include <qlineedit.h> 28#include <qlineedit.h>
29#include <qfont.h> 29#include <qfont.h>
30#include <qslider.h> 30#include <qslider.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qvbox.h> 34#include <qvbox.h>
35#include <qhbox.h> 35#include <qhbox.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qspinbox.h> 37#include <qspinbox.h>
38#include <qdatetime.h> 38#include <qdatetime.h>
39#include <qcheckbox.h> 39#include <qcheckbox.h>
40#include <qradiobutton.h> 40#include <qradiobutton.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qstrlist.h> 42#include <qstrlist.h>
43#include <qapplication.h> 43#include <qapplication.h>
44 44
45#include <kcolorbutton.h> 45#include <kcolorbutton.h>
46#include <kdebug.h> 46#include <kdebug.h>
47#include <klocale.h> 47#include <klocale.h>
48#include <kglobal.h> 48#include <kglobal.h>
49#include <kfontdialog.h> 49#include <kfontdialog.h>
50#include <kfiledialog.h> 50#include <kfiledialog.h>
51#include <kmessagebox.h> 51#include <kmessagebox.h>
52#include <kcolordialog.h> 52#include <kcolordialog.h>
53#include <kiconloader.h> 53#include <kiconloader.h>
54#include <kemailsettings.h> 54#include <kemailsettings.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kglobalsettings.h> 56#include <kglobalsettings.h>
57 57
58#include <klineedit.h> 58#include <klineedit.h>
59 59
60 60
61#include "koprefs.h" 61#include "koprefs.h"
62 62
63#include "koprefsdialog.h" 63#include "koprefsdialog.h"
64//#include <kprefswidget.h> 64//#include <kprefswidget.h>
65 65
66 66
67KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) : 67KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) :
68 KPrefsDialog(KOPrefs::instance(),parent,name,true) 68 KPrefsDialog(KOPrefs::instance(),parent,name,true)
69{ 69{
70 70
71 setFont( KGlobalSettings::generalMaxFont() ); 71 setFont( KGlobalSettings::generalMaxFont() );
72 setCaption( i18n("Settings - some need a restart (nr)")); 72 setCaption( i18n("Settings - some need a restart (nr)"));
73 setupGlobalTab(); 73 setupGlobalTab();
74 setupMainTab(); 74 setupMainTab();
75 setupMailTab();; 75 setupMailTab();;
76 setupFontsTab(); 76 setupFontsTab();
77 readConfig(); 77 readConfig();
78#ifndef DESKTOP_VERSION 78#ifndef DESKTOP_VERSION
79 if ( QApplication::desktop()->height() == 480 ) 79 if ( QApplication::desktop()->height() == 480 )
80 hideButtons(); 80 hideButtons();
81#endif 81#endif
82 82
83#if 0 83#if 0
84 84
85 setupMainTab(); 85 setupMainTab();
86 setupLocaleTab(); 86 setupLocaleTab();
87 setupTimeZoneTab(); 87 setupTimeZoneTab();
88 setupTimeTab(); 88 setupTimeTab();
89 setupLocaleDateTab(); 89 setupLocaleDateTab();
90 setupFontsTab(); 90 setupFontsTab();
91 setupColorsTab(); 91 setupColorsTab();
92 setupViewsTab(); 92 setupViewsTab();
93 //setupSyncTab(); 93 //setupSyncTab();
94 //setupSyncAlgTab(); 94 //setupSyncAlgTab();
95 //setupPrinterTab(); 95 //setupPrinterTab();
96 //setupGroupSchedulingTab(); 96 //setupGroupSchedulingTab();
97 //setupGroupAutomationTab(); 97 //setupGroupAutomationTab();
98#endif 98#endif
99} 99}
100 100
101#include "kpimglobalprefs.h" 101#include "kpimglobalprefs.h"
102 102
103KOPrefsDialog::~KOPrefsDialog() 103KOPrefsDialog::~KOPrefsDialog()
104{ 104{
105} 105}
106void KOPrefsDialog::setupGlobalTab() 106void KOPrefsDialog::setupGlobalTab()
107{ 107{
108 QFrame *topFrame = addPage(i18n("Global"),0,0); 108
109 kdelibcfg = new KDEPIMConfigWidget( KPimGlobalPrefs::instance(), topFrame, "KCMKdeLibConfig" );
110 QVBoxLayout *topLayout = new QVBoxLayout(topFrame);
111 topLayout->addWidget( kdelibcfg );
112 109
113 110
114} 111}
115void KOPrefsDialog::setupMainTab() 112void KOPrefsDialog::setupMainTab()
116{ 113{
117 QFrame *topFrame = addPage(i18n("General"),0,0); 114 QFrame *topFrame = addPage(i18n("General"),0,0);
118 115
119 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 116 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
120 topLayout->setSpacing(spacingHint()); 117 topLayout->setSpacing(spacingHint());
121 topLayout->setMargin(marginHint()); 118 topLayout->setMargin(marginHint());
122 119
123 120
124 mNameEdit = new QLineEdit(topFrame); 121 mNameEdit = new QLineEdit(topFrame);
125 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame); 122 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame);
126 topLayout->addWidget(mNameLabel,0,0); 123 topLayout->addWidget(mNameLabel,0,0);
127 topLayout->addWidget(mNameEdit,0,1); 124 topLayout->addWidget(mNameEdit,0,1);
128 125
129 mEmailEdit = new QLineEdit(topFrame); 126 mEmailEdit = new QLineEdit(topFrame);
130 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame); 127 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame);
131 topLayout->addWidget(mEmailLabel,1,0); 128 topLayout->addWidget(mEmailLabel,1,0);
132 topLayout->addWidget(mEmailEdit,1,1); 129 topLayout->addWidget(mEmailEdit,1,1);
133 QLabel *lab = new QLabel( i18n("HINT: Separate multiple\neMail addresses by \";\""), topFrame); 130 QLabel *lab = new QLabel( i18n("HINT: Separate multiple\neMail addresses by \";\""), topFrame);
134 topLayout->addMultiCellWidget(lab,2,2,0,1); 131 topLayout->addMultiCellWidget(lab,2,2,0,1);
135 KPrefsDialogWidBool* ttt = addWidBool(i18n("Ignore above settings and\nuse KA/Pi \"Who am I\" instead!"), 132 KPrefsDialogWidBool* ttt = addWidBool(i18n("Ignore above settings and\nuse KA/Pi \"Who am I\" instead!"),
136 &(KOPrefs::instance()->mUseKapi),topFrame); 133 &(KOPrefs::instance()->mUseKapi),topFrame);
137 topLayout->addMultiCellWidget(ttt->checkBox(),3,3,0,1); 134 topLayout->addMultiCellWidget(ttt->checkBox(),3,3,0,1);
138} 135}
139 136
140void KOPrefsDialog::setupMailTab() 137void KOPrefsDialog::setupMailTab()
141{ 138{
142 QFrame *topFrame = addPage(i18n("Mail"),0,0); 139 QFrame *topFrame = addPage(i18n("Mail"),0,0);
143 140
144 QGridLayout *topLayout = new QGridLayout(topFrame,4,2); 141 QGridLayout *topLayout = new QGridLayout(topFrame,4,2);
145 topLayout->setSpacing(spacingHint()); 142 topLayout->setSpacing(spacingHint());
146 topLayout->setMargin(marginHint()); 143 topLayout->setMargin(marginHint());
147 144
148 KPrefsDialogWidBool* ttt = addWidBool(i18n("View mail as html"), 145 KPrefsDialogWidBool* ttt = addWidBool(i18n("View mail as html"),
149 &(KOPrefs::instance()->mViewAsHtml),topFrame); 146 &(KOPrefs::instance()->mViewAsHtml),topFrame);
150 topLayout->addMultiCellWidget(ttt->checkBox(),0,0,0,1); 147 topLayout->addMultiCellWidget(ttt->checkBox(),0,0,0,1);
151 148
152 149
153 ttt = addWidBool(i18n("Send mails later"), 150 ttt = addWidBool(i18n("Send mails later"),
154 &(KOPrefs::instance()->mSendLater),topFrame); 151 &(KOPrefs::instance()->mSendLater),topFrame);
155 topLayout->addMultiCellWidget(ttt->checkBox(),1,1,0,1); 152 topLayout->addMultiCellWidget(ttt->checkBox(),1,1,0,1);
156 ttt = addWidBool(i18n("Show \"To\" field in list view"), 153 ttt = addWidBool(i18n("Show \"To\" field in list view"),
157 &(KOPrefs::instance()->mShowToField),topFrame); 154 &(KOPrefs::instance()->mShowToField),topFrame);
158 topLayout->addMultiCellWidget(ttt->checkBox(),2,2,0,1); 155 topLayout->addMultiCellWidget(ttt->checkBox(),2,2,0,1);
159 156
160 int iii =3; 157 int iii =3;
161 ttt = addWidBool(i18n("Show info fields at startup"), 158 ttt = addWidBool(i18n("Show info fields at startup"),
162 &(KOPrefs::instance()->mShowInfoStart),topFrame); 159 &(KOPrefs::instance()->mShowInfoStart),topFrame);
163 topLayout->addMultiCellWidget(ttt->checkBox(),iii,iii,0,1); 160 topLayout->addMultiCellWidget(ttt->checkBox(),iii,iii,0,1);
164 ++iii; 161 ++iii;
165 ttt = addWidBool(i18n("Show \"Subject\" info field"), 162 ttt = addWidBool(i18n("Show \"Subject\" info field"),
166 &(KOPrefs::instance()->mShowInfoSub),topFrame); 163 &(KOPrefs::instance()->mShowInfoSub),topFrame);
167 topLayout->addMultiCellWidget(ttt->checkBox(),iii,iii,0,1); 164 topLayout->addMultiCellWidget(ttt->checkBox(),iii,iii,0,1);
168 ++iii; 165 ++iii;
169 ttt = addWidBool(i18n("Show \"From\" info field"), 166 ttt = addWidBool(i18n("Show \"From\" info field"),
170 &(KOPrefs::instance()->mShowInfoFrom),topFrame); 167 &(KOPrefs::instance()->mShowInfoFrom),topFrame);
171 topLayout->addMultiCellWidget(ttt->checkBox(),iii,iii,0,1); 168 topLayout->addMultiCellWidget(ttt->checkBox(),iii,iii,0,1);
172 ++iii; 169 ++iii;
173 ttt = addWidBool(i18n("Show \"To\" info field"), 170 ttt = addWidBool(i18n("Show \"To\" info field"),
174 &(KOPrefs::instance()->mShowInfoTo),topFrame); 171 &(KOPrefs::instance()->mShowInfoTo),topFrame);
175 topLayout->addMultiCellWidget(ttt->checkBox(),iii,iii,0,1); 172 topLayout->addMultiCellWidget(ttt->checkBox(),iii,iii,0,1);
176 ++iii; 173 ++iii;
177 174
178 /* 175 /*
179 mCodecEdit = new QLineEdit(topFrame); 176 mCodecEdit = new QLineEdit(topFrame);
180 topLayout->addMultiCellWidget( new QLabel(mCodecEdit, i18n("User defined codec for new mails:"), topFrame),2,2,0,1); 177 topLayout->addMultiCellWidget( new QLabel(mCodecEdit, i18n("User defined codec for new mails:"), topFrame),2,2,0,1);
181 topLayout->addMultiCellWidget(mCodecEdit,3,3,0,1); 178 topLayout->addMultiCellWidget(mCodecEdit,3,3,0,1);
182 topLayout->addMultiCellWidget( new QLabel(0, i18n("Example: iso-8859-15"), topFrame),4,4,0,1); 179 topLayout->addMultiCellWidget( new QLabel(0, i18n("Example: iso-8859-15"), topFrame),4,4,0,1);
183 */ 180 */
184} 181}
185void KOPrefsDialog::setupFontsTab() 182void KOPrefsDialog::setupFontsTab()
186{ 183{
187 184
188 QFrame *topFrame = addPage(i18n("Fonts"),0,0); 185 QFrame *topFrame = addPage(i18n("Fonts"),0,0);
189 // DesktopIcon("fonts",KIcon::SizeMedium)); 186 // DesktopIcon("fonts",KIcon::SizeMedium));
190 187
191 QGridLayout *topLayout = new QGridLayout(topFrame,7,3); 188 QGridLayout *topLayout = new QGridLayout(topFrame,7,3);
192 topLayout->setSpacing(1); 189 topLayout->setSpacing(1);
193 topLayout->setMargin(3); 190 topLayout->setMargin(3);
194 KPrefsDialogWidFont * tVFont; 191 KPrefsDialogWidFont * tVFont;
195 int i = 0; 192 int i = 0;
196 KPrefsDialogWidFont *timeLabelsFont = 193 KPrefsDialogWidFont *timeLabelsFont =
197 addWidFont(i18n("OK"),i18n("Application(nr)"), 194 addWidFont(i18n("OK"),i18n("Application(nr)"),
198 &(KOPrefs::instance()->mAppFont),topFrame); 195 &(KOPrefs::instance()->mAppFont),topFrame);
199 topLayout->addWidget(timeLabelsFont->label(),i,0); 196 topLayout->addWidget(timeLabelsFont->label(),i,0);
200 topLayout->addWidget(timeLabelsFont->preview(),i,1); 197 topLayout->addWidget(timeLabelsFont->preview(),i,1);
201 topLayout->addWidget(timeLabelsFont->button(),i,2); 198 topLayout->addWidget(timeLabelsFont->button(),i,2);
202 ++i; 199 ++i;
203 200
204 201
205 timeLabelsFont = 202 timeLabelsFont =
206 addWidFont(i18n("Dear Mr."),i18n("Compose mail:"), 203 addWidFont(i18n("Dear Mr."),i18n("Compose mail:"),
207 &(KOPrefs::instance()->mComposeFont),topFrame); 204 &(KOPrefs::instance()->mComposeFont),topFrame);
208 topLayout->addWidget(timeLabelsFont->label(),i,0); 205 topLayout->addWidget(timeLabelsFont->label(),i,0);
209 topLayout->addWidget(timeLabelsFont->preview(),i,1); 206 topLayout->addWidget(timeLabelsFont->preview(),i,1);
210 topLayout->addWidget(timeLabelsFont->button(),i,2); 207 topLayout->addWidget(timeLabelsFont->button(),i,2);
211 ++i; 208 ++i;
212 209
213 KPrefsDialogWidFont *timeBarFont = 210 KPrefsDialogWidFont *timeBarFont =
214 addWidFont(i18n("Hello"),i18n("Read mail:"), 211 addWidFont(i18n("Hello"),i18n("Read mail:"),
215 &(KOPrefs::instance()->mReadFont),topFrame); 212 &(KOPrefs::instance()->mReadFont),topFrame);
216 topLayout->addWidget(timeBarFont->label(),i,0); 213 topLayout->addWidget(timeBarFont->label(),i,0);
217 topLayout->addWidget(timeBarFont->preview(),i,1); 214 topLayout->addWidget(timeBarFont->preview(),i,1);
218 topLayout->addWidget(timeBarFont->button(),i,2); 215 topLayout->addWidget(timeBarFont->button(),i,2);
219 ++i; 216 ++i;
220 217
221 topLayout->setColStretch(1,1); 218 topLayout->setColStretch(1,1);
222 topLayout->setRowStretch(4,1); 219 topLayout->setRowStretch(4,1);
223 220
224} 221}
225void KOPrefsDialog::usrReadConfig() 222void KOPrefsDialog::usrReadConfig()
226{ 223{
227 224
228 mNameEdit->setText(KOPrefs::instance()->mName); 225 mNameEdit->setText(KOPrefs::instance()->mName);
229 mEmailEdit->setText(KOPrefs::instance()->mEmail); 226 mEmailEdit->setText(KOPrefs::instance()->mEmail);
230 //mCodecEdit->setText(KOPrefs::instance()->mSendCodec); 227 //mCodecEdit->setText(KOPrefs::instance()->mSendCodec);
231 kdelibcfg->readConfig();
232} 228}
233void KOPrefsDialog::usrWriteConfig() 229void KOPrefsDialog::usrWriteConfig()
234{ 230{
235 KOPrefs::instance()->mName = mNameEdit->text(); 231 KOPrefs::instance()->mName = mNameEdit->text();
236 KOPrefs::instance()->mEmail = mEmailEdit->text(); 232 KOPrefs::instance()->mEmail = mEmailEdit->text();
237 //KOPrefs::instance()->mSendCodec = mCodecEdit->text(); 233 //KOPrefs::instance()->mSendCodec = mCodecEdit->text();
238 kdelibcfg->writeConfig();
239 234
240 235
241} 236}
242 237
243#if 0 238#if 0
244void KOPrefsDialog::setupLocaleDateTab() 239void KOPrefsDialog::setupLocaleDateTab()
245{ 240{
246QFrame *topFrame = addPage(i18n("Date Format"),0,0); 241QFrame *topFrame = addPage(i18n("Date Format"),0,0);
247 QGridLayout *topLayout = new QGridLayout(topFrame,3,2); 242 QGridLayout *topLayout = new QGridLayout(topFrame,3,2);
248 topLayout->setSpacing(spacingHint()); 243 topLayout->setSpacing(spacingHint());
249 topLayout->setMargin(marginHint()); 244 topLayout->setMargin(marginHint());
250 int iii = 0; 245 int iii = 0;
251 246
252 247
253 KPrefsWidRadios *syncPrefsGroup = 248 KPrefsWidRadios *syncPrefsGroup =
254 addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame); 249 addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame);
255 QString format; 250 QString format;
256 if ( QApplication::desktop()->width() < 480 ) 251 if ( QApplication::desktop()->width() < 480 )
257 format = "(%d.%m.%Y)"; 252 format = "(%d.%m.%Y)";
258 else 253 else
259 format = "(%d.%m.%Y|%A %d %B %Y)"; 254 format = "(%d.%m.%Y|%A %d %B %Y)";
260 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format)); 255 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format));
261 if ( QApplication::desktop()->width() < 480 ) 256 if ( QApplication::desktop()->width() < 480 )
262 format = "(%m.%d.%Y)"; 257 format = "(%m.%d.%Y)";
263 else 258 else
264 format = "(%m.%d.%Y|%A %B %d %Y)"; 259 format = "(%m.%d.%Y|%A %B %d %Y)";
265 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format)); 260 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format));
266 if ( QApplication::desktop()->width() < 480 ) 261 if ( QApplication::desktop()->width() < 480 )
267 format = "(%Y-%m-%d)"; 262 format = "(%Y-%m-%d)";
268 else 263 else
269 format = "(%Y-%m-%d|%A %Y %B %d)"; 264 format = "(%Y-%m-%d|%A %Y %B %d)";
270 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format)); 265 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format));
271 syncPrefsGroup->addRadio(i18n("User defined")); 266 syncPrefsGroup->addRadio(i18n("User defined"));
272 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 267 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
273 ++iii; 268 ++iii;
274 ++iii; 269 ++iii;
275 QLabel * lab; 270 QLabel * lab;
276 mUserDateFormatLong = new QLineEdit(topFrame); 271 mUserDateFormatLong = new QLineEdit(topFrame);
277 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame); 272 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame);
278 topLayout->addWidget(lab ,iii,0); 273 topLayout->addWidget(lab ,iii,0);
279 topLayout->addWidget(mUserDateFormatLong,iii,1); 274 topLayout->addWidget(mUserDateFormatLong,iii,1);
280 ++iii; 275 ++iii;
281 mUserDateFormatShort = new QLineEdit(topFrame); 276 mUserDateFormatShort = new QLineEdit(topFrame);
282 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame); 277 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame);
283 topLayout->addWidget(lab ,iii,0); 278 topLayout->addWidget(lab ,iii,0);
284 topLayout->addWidget(mUserDateFormatShort,iii,1); 279 topLayout->addWidget(mUserDateFormatShort,iii,1);
285 ++iii; 280 ++iii;
286 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame); 281 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame);
287 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 282 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
288 ++iii; 283 ++iii;
289 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame); 284 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame);
290 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 285 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
291 ++iii; 286 ++iii;
292 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame); 287 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame);
293 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 288 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
294 ++iii; 289 ++iii;
295 290
296} 291}
297 292
298void KOPrefsDialog::setupLocaleTab() 293void KOPrefsDialog::setupLocaleTab()
299{ 294{
300 QFrame *topFrame = addPage(i18n("Locale"),0,0); 295 QFrame *topFrame = addPage(i18n("Locale"),0,0);
301 QGridLayout *topLayout = new QGridLayout(topFrame,4,2); 296 QGridLayout *topLayout = new QGridLayout(topFrame,4,2);
302 topLayout->setSpacing(spacingHint()); 297 topLayout->setSpacing(spacingHint());
303 topLayout->setMargin(marginHint()); 298 topLayout->setMargin(marginHint());
304 int iii = 0; 299 int iii = 0;
305 KPrefsWidRadios *syncPrefsGroup = 300 KPrefsWidRadios *syncPrefsGroup =
306 addWidRadios(i18n("Language:(needs restart)"),&(KOPrefs::instance()->mPreferredLanguage),topFrame); 301 addWidRadios(i18n("Language:(needs restart)"),&(KOPrefs::instance()->mPreferredLanguage),topFrame);
307 syncPrefsGroup->addRadio(i18n("English")); 302 syncPrefsGroup->addRadio(i18n("English"));
308 syncPrefsGroup->addRadio(i18n("German")); 303 syncPrefsGroup->addRadio(i18n("German"));
309 syncPrefsGroup->addRadio(i18n("French")); 304 syncPrefsGroup->addRadio(i18n("French"));
310 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)")); 305 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)"));
311 if ( QApplication::desktop()->width() < 300 ) 306 if ( QApplication::desktop()->width() < 300 )
312 ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 307 ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
313 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 308 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
314 ++iii; 309 ++iii;
315 310
316 syncPrefsGroup = 311 syncPrefsGroup =
317 addWidRadios(i18n("Time Format(nr):"),&(KOPrefs::instance()->mPreferredTime),topFrame); 312 addWidRadios(i18n("Time Format(nr):"),&(KOPrefs::instance()->mPreferredTime),topFrame);
318 if ( QApplication::desktop()->width() > 300 ) 313 if ( QApplication::desktop()->width() > 300 )
319 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 314 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
320 syncPrefsGroup->addRadio(i18n("24:00")); 315 syncPrefsGroup->addRadio(i18n("24:00"));
321 syncPrefsGroup->addRadio(i18n("12:00am")); 316 syncPrefsGroup->addRadio(i18n("12:00am"));
322 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 317 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
323 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 318 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
324 ++iii; 319 ++iii;
325 KPrefsDialogWidBool *sb; 320 KPrefsDialogWidBool *sb;
326 if ( QApplication::desktop()->width() < 300 ) { 321 if ( QApplication::desktop()->width() < 300 ) {
327 sb = 322 sb =
328 addWidBool(i18n("Week starts on Sunday"), 323 addWidBool(i18n("Week starts on Sunday"),
329 &(KOPrefs::instance()->mWeekStartsOnSunday),topFrame); 324 &(KOPrefs::instance()->mWeekStartsOnSunday),topFrame);
330 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 325 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
331 ++iii; 326 ++iii;
332 sb = 327 sb =
333 addWidBool(i18n("Use short date in (WN/E) view"), 328 addWidBool(i18n("Use short date in (WN/E) view"),
334 &(KOPrefs::instance()->mShortDateInViewer),topFrame); 329 &(KOPrefs::instance()->mShortDateInViewer),topFrame);
335 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 330 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
336 } 331 }
337 else { 332 else {
338 QWidget * hb = new QWidget( topFrame ); 333 QWidget * hb = new QWidget( topFrame );
339 QHBoxLayout *hbLayout = new QHBoxLayout(hb); 334 QHBoxLayout *hbLayout = new QHBoxLayout(hb);
340 sb = 335 sb =
341 addWidBool(i18n("Week starts on Sunday"), 336 addWidBool(i18n("Week starts on Sunday"),
342 &(KOPrefs::instance()->mWeekStartsOnSunday),hb); 337 &(KOPrefs::instance()->mWeekStartsOnSunday),hb);
343 hbLayout->addWidget(sb->checkBox() ); 338 hbLayout->addWidget(sb->checkBox() );
344 sb = 339 sb =
345 addWidBool(i18n("Use short date in (WN/E) view"), 340 addWidBool(i18n("Use short date in (WN/E) view"),
346 &(KOPrefs::instance()->mShortDateInViewer),hb); 341 &(KOPrefs::instance()->mShortDateInViewer),hb);
347 hbLayout->addWidget(sb->checkBox() ); 342 hbLayout->addWidget(sb->checkBox() );
348 topLayout->addMultiCellWidget(hb, iii,iii,0,1); 343 topLayout->addMultiCellWidget(hb, iii,iii,0,1);
349 344
350 } 345 }
351 //#ifndef DESKTOP_VERSION 346 //#ifndef DESKTOP_VERSION
352#if 0 347#if 0
353 ++iii; 348 ++iii;
354 sb = 349 sb =
355 addWidBool(i18n("Quick load/save (w/o Unicode)"), 350 addWidBool(i18n("Quick load/save (w/o Unicode)"),
356 &(KOPrefs::instance()->mUseQuicksave),topFrame); 351 &(KOPrefs::instance()->mUseQuicksave),topFrame);
357 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 352 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
358#endif 353#endif
359} 354}
360void KOPrefsDialog::showSyncPage() 355void KOPrefsDialog::showSyncPage()
361{ 356{
362 showPage ( 2 ) ; 357 showPage ( 2 ) ;
363 358
364} 359}
365void KOPrefsDialog::setupSyncAlgTab() 360void KOPrefsDialog::setupSyncAlgTab()
366{ 361{
367#if 0 362#if 0
368 QLabel * lab; 363 QLabel * lab;
369 QFrame *topFrame = addPage(i18n("Sync Prefs"),0,0); 364 QFrame *topFrame = addPage(i18n("Sync Prefs"),0,0);
370 mSetupSyncAlgTab = topFrame; 365 mSetupSyncAlgTab = topFrame;
371 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 366 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
372 topLayout->setSpacing(spacingHint()); 367 topLayout->setSpacing(spacingHint());
373 topLayout->setMargin(marginHint()); 368 topLayout->setMargin(marginHint());
374 int iii = 0; 369 int iii = 0;
375 370
376 KPrefsDialogWidBool *sb = 371 KPrefsDialogWidBool *sb =
377 addWidBool(i18n("Ask for preferences before syncing"), 372 addWidBool(i18n("Ask for preferences before syncing"),
378 &(KOPrefs::instance()->mAskForPreferences),topFrame); 373 &(KOPrefs::instance()->mAskForPreferences),topFrame);
379 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 374 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
380 375
381 ++iii; 376 ++iii;
382 377
383 KPrefsWidRadios *syncPrefsGroup = 378 KPrefsWidRadios *syncPrefsGroup =
384 addWidRadios(i18n("Sync preferences:"),&(KOPrefs::instance()->mSyncAlgoPrefs), 379 addWidRadios(i18n("Sync preferences:"),&(KOPrefs::instance()->mSyncAlgoPrefs),
385 topFrame); 380 topFrame);
386 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 381 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
387 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 382 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
388 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 383 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
389 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 384 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
390 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 385 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
391 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 386 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
392 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 387 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
393 ++iii; 388 ++iii;
394 sb = 389 sb =
395 addWidBool(i18n("Show summary after syncing"), 390 addWidBool(i18n("Show summary after syncing"),
396 &(KOPrefs::instance()->mShowSyncSummary),topFrame); 391 &(KOPrefs::instance()->mShowSyncSummary),topFrame);
397 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 392 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
398 393
399 ++iii; 394 ++iii;
400#endif 395#endif
401 396
402 397
403 398
404} 399}
405 400
406 401
407void KOPrefsDialog::setupSyncTab() 402void KOPrefsDialog::setupSyncTab()
408{ 403{
409#if 0 404#if 0
410 QLabel * lab; 405 QLabel * lab;
411 QFrame *topFrame = addPage(i18n("Sync Network"),0,0); 406 QFrame *topFrame = addPage(i18n("Sync Network"),0,0);
412 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 407 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
413 topLayout->setSpacing(spacingHint()); 408 topLayout->setSpacing(spacingHint());
414 topLayout->setMargin(marginHint()); 409 topLayout->setMargin(marginHint());
415 lab = new QLabel(i18n("Remote syncing (via ssh/scp)\nnetwork settings "), topFrame); 410 lab = new QLabel(i18n("Remote syncing (via ssh/scp)\nnetwork settings "), topFrame);
416 int iii = 0; 411 int iii = 0;
417 topLayout->addMultiCellWidget(lab , iii,iii,0,1); 412 topLayout->addMultiCellWidget(lab , iii,iii,0,1);
418 ++iii; 413 ++iii;
419 414
420 mRemoteIPEdit = new QLineEdit(topFrame); 415 mRemoteIPEdit = new QLineEdit(topFrame);
421 lab = new QLabel(mRemoteIPEdit, i18n("Remote IP:"), topFrame); 416 lab = new QLabel(mRemoteIPEdit, i18n("Remote IP:"), topFrame);
422 topLayout->addWidget(lab ,iii,0); 417 topLayout->addWidget(lab ,iii,0);
423 topLayout->addWidget(mRemoteIPEdit,iii,1); 418 topLayout->addWidget(mRemoteIPEdit,iii,1);
424 ++iii; 419 ++iii;
425 mRemoteUser = new QLineEdit(topFrame); 420 mRemoteUser = new QLineEdit(topFrame);
426 lab = new QLabel(mRemoteUser, i18n("Remote user:"), topFrame); 421 lab = new QLabel(mRemoteUser, i18n("Remote user:"), topFrame);
427 topLayout->addWidget(lab ,iii,0); 422 topLayout->addWidget(lab ,iii,0);
428 topLayout->addWidget(mRemoteUser, iii,1); 423 topLayout->addWidget(mRemoteUser, iii,1);
429 ++iii; 424 ++iii;
430 425
431 mRemoteFile = new QLineEdit(topFrame); 426 mRemoteFile = new QLineEdit(topFrame);
432 lab = new QLabel(mRemoteFile, i18n("Remote file:"), topFrame); 427 lab = new QLabel(mRemoteFile, i18n("Remote file:"), topFrame);
433 topLayout->addWidget(lab ,iii,0); 428 topLayout->addWidget(lab ,iii,0);
434 topLayout->addWidget(mRemoteFile,iii,1); 429 topLayout->addWidget(mRemoteFile,iii,1);
435 ++iii; 430 ++iii;
436 431
437 mLocalTempFile = new QLineEdit(topFrame); 432 mLocalTempFile = new QLineEdit(topFrame);
438 lab = new QLabel(mLocalTempFile, i18n("Local temp file:"), topFrame); 433 lab = new QLabel(mLocalTempFile, i18n("Local temp file:"), topFrame);
439 topLayout->addWidget(lab ,iii,0); 434 topLayout->addWidget(lab ,iii,0);
440 topLayout->addWidget(mLocalTempFile,iii,1); 435 topLayout->addWidget(mLocalTempFile,iii,1);
441 ++iii; 436 ++iii;
442 437
443 KPrefsDialogWidBool *wb = 438 KPrefsDialogWidBool *wb =
444 addWidBool(i18n("Write back synced file"), 439 addWidBool(i18n("Write back synced file"),
445 &(KOPrefs::instance()->mWriteBackFile),topFrame); 440 &(KOPrefs::instance()->mWriteBackFile),topFrame);
446 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1); 441 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1);
447 ++iii; 442 ++iii;
448 wb = 443 wb =
449 addWidBool(i18n("Write back existing entries only"), 444 addWidBool(i18n("Write back existing entries only"),
450 &(KOPrefs::instance()->mWriteBackExistingOnly),topFrame); 445 &(KOPrefs::instance()->mWriteBackExistingOnly),topFrame);
451 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1); 446 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1);
452 ++iii; 447 ++iii;
453 448
454#endif 449#endif
455} 450}
456 451
457void KOPrefsDialog::setupMainTab() 452void KOPrefsDialog::setupMainTab()
458{ 453{
459 QFrame *topFrame = addPage(i18n("General"),0,0); 454 QFrame *topFrame = addPage(i18n("General"),0,0);
460 // DesktopIcon("identity",KIcon::SizeMedium)); 455 // DesktopIcon("identity",KIcon::SizeMedium));
461 456
462 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 457 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
463 topLayout->setSpacing(spacingHint()); 458 topLayout->setSpacing(spacingHint());
464 topLayout->setMargin(marginHint()); 459 topLayout->setMargin(marginHint());
465 460
466 // KPrefsDialogWidBool *emailControlCenter = 461 // KPrefsDialogWidBool *emailControlCenter =
467// addWidBool(i18n("&Use email settings from Control Center"), 462// addWidBool(i18n("&Use email settings from Control Center"),
468// &(KOPrefs::instance()->mEmailControlCenter),topFrame); 463// &(KOPrefs::instance()->mEmailControlCenter),topFrame);
469// topLayout->addMultiCellWidget(emailControlCenter->checkBox(),0,0,0,1); 464// topLayout->addMultiCellWidget(emailControlCenter->checkBox(),0,0,0,1);
470 // connect(emailControlCenter->checkBox(),SIGNAL(toggled(bool)), 465 // connect(emailControlCenter->checkBox(),SIGNAL(toggled(bool)),
471 // SLOT(toggleEmailSettings(bool))); 466 // SLOT(toggleEmailSettings(bool)));
472 467
473 mNameEdit = new QLineEdit(topFrame); 468 mNameEdit = new QLineEdit(topFrame);
474 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame); 469 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame);
475 topLayout->addWidget(mNameLabel,0,0); 470 topLayout->addWidget(mNameLabel,0,0);
476 topLayout->addWidget(mNameEdit,0,1); 471 topLayout->addWidget(mNameEdit,0,1);
477 472
478 mEmailEdit = new QLineEdit(topFrame); 473 mEmailEdit = new QLineEdit(topFrame);
479 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame); 474 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame);
480 topLayout->addWidget(mEmailLabel,1,0); 475 topLayout->addWidget(mEmailLabel,1,0);
481 topLayout->addWidget(mEmailEdit,1,1); 476 topLayout->addWidget(mEmailEdit,1,1);
482 KPrefsDialogWidBool *wb; 477 KPrefsDialogWidBool *wb;
483 QHBox *dummy; 478 QHBox *dummy;
484 if ( QApplication::desktop()->width() > 480 ) { 479 if ( QApplication::desktop()->width() > 480 ) {
485 dummy = new QHBox(topFrame); 480 dummy = new QHBox(topFrame);
486 } else { 481 } else {
487 dummy = new QVBox(topFrame); 482 dummy = new QVBox(topFrame);
488 } 483 }
489 484
490 topLayout->addMultiCellWidget(dummy, 2,2,0,1); 485 topLayout->addMultiCellWidget(dummy, 2,2,0,1);
491 addWidBool(i18n("Full menu bar(nr)"), 486 addWidBool(i18n("Full menu bar(nr)"),
492 &(KOPrefs::instance()->mShowFullMenu),dummy); 487 &(KOPrefs::instance()->mShowFullMenu),dummy);
493 488
494 489
diff --git a/kmicromail/koprefsdialog.h b/kmicromail/koprefsdialog.h
index a0416ae..7fa9261 100644
--- a/kmicromail/koprefsdialog.h
+++ b/kmicromail/koprefsdialog.h
@@ -1,180 +1,179 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef _KOPREFSDIALOG_H 23#ifndef _KOPREFSDIALOG_H
24#define _KOPREFSDIALOG_H 24#define _KOPREFSDIALOG_H
25 25
26#include <qframe.h> 26#include <qframe.h>
27#include <qdict.h> 27#include <qdict.h>
28#include <qcolor.h> 28#include <qcolor.h>
29#include <qlistview.h> 29#include <qlistview.h>
30 30
31#include <kdialogbase.h> 31#include <kdialogbase.h>
32 32
33#include <libkdepim/kprefsdialog.h> 33#include <libkdepim/kprefsdialog.h>
34#include <libkdepim/kdateedit.h> 34#include <libkdepim/kdateedit.h>
35#include <kcmconfigs/kdepimconfigwidget.h> 35#include <kcmconfigs/kdepimconfigwidget.h>
36 36
37class KColorButton; 37class KColorButton;
38class QSpinBox; 38class QSpinBox;
39class QSlider; 39class QSlider;
40class KURLRequester; 40class KURLRequester;
41class QComboBox; 41class QComboBox;
42class QLineEdit; 42class QLineEdit;
43class QStringList; 43class QStringList;
44 44
45/** Dialog to change the korganizer configuration. 45/** Dialog to change the korganizer configuration.
46 */ 46 */
47class KOPrefsDialog : public KPrefsDialog 47class KOPrefsDialog : public KPrefsDialog
48{ 48{
49 Q_OBJECT 49 Q_OBJECT
50 public: 50 public:
51 /** Initialize dialog and pages */ 51 /** Initialize dialog and pages */
52 KOPrefsDialog(QWidget *parent=0,char *name=0,bool modal=false); 52 KOPrefsDialog(QWidget *parent=0,char *name=0,bool modal=false);
53 ~KOPrefsDialog(); 53 ~KOPrefsDialog();
54 54
55protected: 55protected:
56 void usrReadConfig(); 56 void usrReadConfig();
57 void usrWriteConfig(); 57 void usrWriteConfig();
58 58
59 void setupMainTab(); 59 void setupMainTab();
60 void setupGlobalTab(); 60 void setupGlobalTab();
61 void setupMailTab(); 61 void setupMailTab();
62 void setupFontsTab(); 62 void setupFontsTab();
63 private: 63 private:
64 KDEPIMConfigWidget* kdelibcfg;
65 QLineEdit *mNameEdit; 64 QLineEdit *mNameEdit;
66 QLineEdit *mCodecEdit; 65 QLineEdit *mCodecEdit;
67 QLineEdit *mEmailEdit; 66 QLineEdit *mEmailEdit;
68 QLabel *mNameLabel; 67 QLabel *mNameLabel;
69 QLabel *mEmailLabel; 68 QLabel *mEmailLabel;
70#if 0 69#if 0
71 /* 70 /*
72 public slots: 71 public slots:
73 void showPrinterTab(); 72 void showPrinterTab();
74 73
75 74
76 void updateCategories(); 75 void updateCategories();
77 void showSyncPage(); 76 void showSyncPage();
78 protected slots: 77 protected slots:
79 void selectSoundFile(); 78 void selectSoundFile();
80 void setCategoryColor(); 79 void setCategoryColor();
81 void updateCategoryColor(); 80 void updateCategoryColor();
82 void updateTimezoneOffset( int ); 81 void updateTimezoneOffset( int );
83 82
84 83
85 void warningExperimental(bool on); 84 void warningExperimental(bool on);
86 void warningGroupScheduling(); 85 void warningGroupScheduling();
87 void warningProjectView(); 86 void warningProjectView();
88 87
89 void toggleEmailSettings(bool); 88 void toggleEmailSettings(bool);
90 89
91 //additional emails 90 //additional emails
92 void addItem(); 91 void addItem();
93 void removeItem(); 92 void removeItem();
94 void updateItem(); 93 void updateItem();
95 void updateInput(); 94 void updateInput();
96*/ 95*/
97 protected: 96 protected:
98 void usrReadConfig(); 97 void usrReadConfig();
99 void usrWriteConfig(); 98 void usrWriteConfig();
100 99
101 void setupMainTab(); 100 void setupMainTab();
102 void setupTimeTab(); 101 void setupTimeTab();
103 void setupTimeZoneTab(); 102 void setupTimeZoneTab();
104 void setupLocaleTab(); 103 void setupLocaleTab();
105 void setupLocaleDateTab(); 104 void setupLocaleDateTab();
106 void setupFontsTab(); 105 void setupFontsTab();
107 void setupColorsTab(); 106 void setupColorsTab();
108 void setupViewsTab(); 107 void setupViewsTab();
109 void setupDisplayTab(); 108 void setupDisplayTab();
110 void setupPrinterTab(); 109 void setupPrinterTab();
111 void setupGroupSchedulingTab(); 110 void setupGroupSchedulingTab();
112 void setupGroupAutomationTab(); 111 void setupGroupAutomationTab();
113 void setupSyncTab(); 112 void setupSyncTab();
114 void setupSyncAlgTab(); 113 void setupSyncAlgTab();
115 114
116 void setCombo(QComboBox *combo,const QString & text, const QStringList *tags = 0); 115 void setCombo(QComboBox *combo,const QString & text, const QStringList *tags = 0);
117 116
118 117
119 private: 118 private:
120 KPrefsWidBool *mEnableGroupScheduling; 119 KPrefsWidBool *mEnableGroupScheduling;
121 KPrefsWidBool *mEnableProjectView; 120 KPrefsWidBool *mEnableProjectView;
122 121
123 QFrame *mPrinterTab; 122 QFrame *mPrinterTab;
124 123
125 QLineEdit *nameEdit; 124 QLineEdit *nameEdit;
126 QLineEdit *emailEdit; 125 QLineEdit *emailEdit;
127 126
128 QComboBox *timeCombo; 127 QComboBox *timeCombo;
129 QComboBox *tzCombo; 128 QComboBox *tzCombo;
130 129
131 // widgets holding preferences data 130 // widgets holding preferences data
132 QLineEdit *mNameEdit; 131 QLineEdit *mNameEdit;
133 QLineEdit *mEmailEdit; 132 QLineEdit *mEmailEdit;
134 QLabel *mNameLabel; 133 QLabel *mNameLabel;
135 QLabel *mEmailLabel; 134 QLabel *mEmailLabel;
136 QLineEdit *mAdditionalEdit; 135 QLineEdit *mAdditionalEdit;
137 QSpinBox *mAutoSaveIntervalSpin; 136 QSpinBox *mAutoSaveIntervalSpin;
138 QSpinBox *mPrioSpin; 137 QSpinBox *mPrioSpin;
139 // QListView *mAMails; 138 // QListView *mAMails;
140 QLineEdit *aEmailsEdit; 139 QLineEdit *aEmailsEdit;
141 140
142 QComboBox *mTimeZoneCombo; 141 QComboBox *mTimeZoneCombo;
143 QStringList tzonenames; 142 QStringList tzonenames;
144 QSpinBox *mStartTimeSpin; 143 QSpinBox *mStartTimeSpin;
145 QSpinBox *mDefaultDurationSpin; 144 QSpinBox *mDefaultDurationSpin;
146 QComboBox *mAlarmTimeCombo; 145 QComboBox *mAlarmTimeCombo;
147 146
148 QComboBox *mCategoryCombo; 147 QComboBox *mCategoryCombo;
149 KColorButton *mCategoryButton; 148 KColorButton *mCategoryButton;
150 QDict<QColor> mCategoryDict; 149 QDict<QColor> mCategoryDict;
151 150
152 QSlider *mHourSizeSlider; 151 QSlider *mHourSizeSlider;
153 152
154 QSpinBox *mNextXDaysSpin; 153 QSpinBox *mNextXDaysSpin;
155 QSpinBox *mWhatsNextSpin; 154 QSpinBox *mWhatsNextSpin;
156 155
157 QLineEdit * mRemoteIPEdit; 156 QLineEdit * mRemoteIPEdit;
158 QLineEdit * mRemoteUser; 157 QLineEdit * mRemoteUser;
159 QLineEdit * mRemotePassWd; 158 QLineEdit * mRemotePassWd;
160 QLineEdit * mRemoteFile; 159 QLineEdit * mRemoteFile;
161 QLineEdit * mLocalTempFile; 160 QLineEdit * mLocalTempFile;
162 QWidget* mSetupSyncAlgTab; 161 QWidget* mSetupSyncAlgTab;
163 QLineEdit * mUserDateFormatLong; 162 QLineEdit * mUserDateFormatLong;
164 QLineEdit * mUserDateFormatShort; 163 QLineEdit * mUserDateFormatShort;
165 164
166 QSpinBox *mTimezoneOffsetSpin; 165 QSpinBox *mTimezoneOffsetSpin;
167 QSpinBox *mDaylightsavingStart; 166 QSpinBox *mDaylightsavingStart;
168 QSpinBox *mDaylightsavingEnd; 167 QSpinBox *mDaylightsavingEnd;
169 KDateEdit* mStartDateSavingEdit; 168 KDateEdit* mStartDateSavingEdit;
170 KDateEdit* mEndDateSavingEdit; 169 KDateEdit* mEndDateSavingEdit;
171 QSpinBox * mAlarmPlayBeeps; 170 QSpinBox * mAlarmPlayBeeps;
172 QSpinBox * mAlarmSuspendTime; 171 QSpinBox * mAlarmSuspendTime;
173 QSpinBox * mAlarmSuspendCount; 172 QSpinBox * mAlarmSuspendCount;
174 QSpinBox * mAlarmBeepInterval; 173 QSpinBox * mAlarmBeepInterval;
175 174
176 QLineEdit * mDefaultAlarmFile; 175 QLineEdit * mDefaultAlarmFile;
177#endif 176#endif
178}; 177};
179 178
180#endif 179#endif
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp
index 9a52d1b..e3c5ec3 100644
--- a/kmicromail/mainwindow.cpp
+++ b/kmicromail/mainwindow.cpp
@@ -1,416 +1,429 @@
1 1
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3#include <qlabel.h> 3#include <qlabel.h>
4#include <qvbox.h> 4#include <qvbox.h>
5#include <qheader.h> 5#include <qheader.h>
6#include <qtimer.h> 6#include <qtimer.h>
7#include <qlayout.h> 7#include <qlayout.h>
8//#include <kdialog.h> 8//#include <kdialog.h>
9#include <kiconloader.h> 9#include <kiconloader.h>
10#include <kapplication.h> 10#include <kapplication.h>
11 11
12#ifdef DESKTOP_VERSION 12#ifdef DESKTOP_VERSION
13#include <qapplication.h> 13#include <qapplication.h>
14#include <qstatusbar.h> 14#include <qstatusbar.h>
15#include <kabc/stdaddressbook.h> 15#include <kabc/stdaddressbook.h>
16extern QStatusBar* globalSstatusBarMainWindow; 16extern QStatusBar* globalSstatusBarMainWindow;
17#else 17#else
18#include <qpe/qpeapplication.h> 18#include <qpe/qpeapplication.h>
19#include <klocale.h> 19#include <klocale.h>
20#endif 20#endif
21#include "defines.h" 21#include "defines.h"
22#include "koprefs.h" 22#include "koprefs.h"
23#include "mainwindow.h" 23#include "mainwindow.h"
24#include "mailistviewitem.h" 24#include "mailistviewitem.h"
25#include <KDGanttMinimizeSplitter.h> 25#include <KDGanttMinimizeSplitter.h>
26 26
27#include "koprefs.h" 27#include "koprefs.h"
28 28
29MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) 29MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
30 : QMainWindow( parent, name ) //, flags ) 30 : QMainWindow( parent, name ) //, flags )
31{ 31{
32#ifdef DESKTOP_VERSION 32#ifdef DESKTOP_VERSION
33 globalSstatusBarMainWindow = statusBar(); 33 globalSstatusBarMainWindow = statusBar();
34#endif 34#endif
35 setCaption( i18n( "KOpieMail/Pi" ) ); 35 setCaption( i18n( "KOpieMail/Pi" ) );
36 setToolBarsMovable( false ); 36 setToolBarsMovable( false );
37 //KABC::StdAddressBook::self(); 37 //KABC::StdAddressBook::self();
38 toolBar = new QToolBar( this ); 38 toolBar = new QToolBar( this );
39 menuBar = new QPEMenuBar( toolBar ); 39 menuBar = new QPEMenuBar( toolBar );
40 mailMenu = new QPopupMenu( menuBar ); 40 mailMenu = new QPopupMenu( menuBar );
41 menuBar->insertItem( i18n( "Mail" ), mailMenu ); 41 menuBar->insertItem( i18n( "Mail" ), mailMenu );
42 settingsMenu = new QPopupMenu( menuBar ); 42 settingsMenu = new QPopupMenu( menuBar );
43 menuBar->insertItem( i18n( "Settings" ), settingsMenu ); 43 menuBar->insertItem( i18n( "Settings" ), settingsMenu );
44 44
45 addToolBar( toolBar ); 45 addToolBar( toolBar );
46 toolBar->setHorizontalStretchable( true ); 46 toolBar->setHorizontalStretchable( true );
47 QAction* getMail = new QAction( i18n( "Get all new mails" ), SmallIcon("enter"), 47 QAction* getMail = new QAction( i18n( "Get all new mails" ), SmallIcon("enter"),
48 0, 0, this ); 48 0, 0, this );
49 connect(getMail, SIGNAL( activated() ), 49 connect(getMail, SIGNAL( activated() ),
50 SLOT( slotGetAllMail() ) ); 50 SLOT( slotGetAllMail() ) );
51 getMail->addTo( mailMenu ); 51 getMail->addTo( mailMenu );
52 52
53 getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"), 53 getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"),
54 0, 0, this ); 54 0, 0, this );
55 getMail->addTo( toolBar ); 55 getMail->addTo( toolBar );
56 getMail->addTo( mailMenu ); 56 getMail->addTo( mailMenu );
57 connect(getMail, SIGNAL( activated() ), 57 connect(getMail, SIGNAL( activated() ),
58 SLOT( slotGetMail() ) ); 58 SLOT( slotGetMail() ) );
59 59
60 composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"), 60 composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"),
61 0, 0, this ); 61 0, 0, this );
62 composeMail->addTo( toolBar ); 62 composeMail->addTo( toolBar );
63 composeMail->addTo( mailMenu ); 63 composeMail->addTo( mailMenu );
64 64
65 sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") , 65 sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") ,
66 0, 0, this ); 66 0, 0, this );
67 sendQueued->addTo( toolBar ); 67 sendQueued->addTo( toolBar );
68 sendQueued->addTo( mailMenu ); 68 sendQueued->addTo( mailMenu );
69 69
70 /* 70 /*
71 syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC, 71 syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC,
72 0, 0, this ); 72 0, 0, this );
73 syncFolders->addTo( toolBar ); 73 syncFolders->addTo( toolBar );
74 syncFolders->addTo( mailMenu ); 74 syncFolders->addTo( mailMenu );
75 */ 75 */
76 76
77 showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") , 77 showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") ,
78 0, 0, this, 0, true ); 78 0, 0, this, 0, true );
79 showFolders->addTo( toolBar ); 79 showFolders->addTo( toolBar );
80 showFolders->addTo( mailMenu ); 80 showFolders->addTo( mailMenu );
81 showFolders->setOn( true ); 81 showFolders->setOn( true );
82 connect(showFolders, SIGNAL( toggled(bool) ), 82 connect(showFolders, SIGNAL( toggled(bool) ),
83 SLOT( slotShowFolders(bool) ) ); 83 SLOT( slotShowFolders(bool) ) );
84 84
85 /* 85 /*
86 searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ), 86 searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ),
87 0, 0, this ); 87 0, 0, this );
88 searchMails->kopddTo( toolBar ); 88 searchMails->kopddTo( toolBar );
89 searchMails->addTo( mailMenu ); 89 searchMails->addTo( mailMenu );
90 */ 90 */
91 91
92 deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this); 92 deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this);
93 deleteMails->addTo( toolBar ); 93 deleteMails->addTo( toolBar );
94 deleteMails->addTo( mailMenu ); 94 deleteMails->addTo( mailMenu );
95 connect( deleteMails, SIGNAL( activated() ), 95 connect( deleteMails, SIGNAL( activated() ),
96 SLOT( slotDeleteAllMail() ) ); 96 SLOT( slotDeleteAllMail() ) );
97 97
98 editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") , 98 editSettings = new QAction( i18n( "Configure OM/Pi..." ), SmallIcon("SettingsIcon") ,
99 0, 0, this ); 99 0, 0, this );
100 editSettings->addTo( settingsMenu ); 100 editSettings->addTo( settingsMenu );
101 connect( editSettings, SIGNAL( activated() ), 101 connect( editSettings, SIGNAL( activated() ),
102 SLOT( slotEditSettings() ) ); 102 SLOT( slotEditSettings() ) );
103
104
105 QAction * editSettings2 = new QAction( i18n( "Global Settings..." ), SmallIcon("SettingsIcon") ,
106 0, 0, this );
107 editSettings2->addTo( settingsMenu );
108 connect( editSettings2, SIGNAL( activated() ),
109 SLOT( slotEditGlobalSettings() ) );
110
111
112
103 editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") , 113 editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") ,
104 0, 0, this ); 114 0, 0, this );
105 editAccounts->addTo( settingsMenu ); 115 editAccounts->addTo( settingsMenu );
106 codecMenu = new QPopupMenu( menuBar ); 116 codecMenu = new QPopupMenu( menuBar );
107 codecMenu->insertItem( "Western (iso-8859-1)",0,0); 117 codecMenu->insertItem( "Western (iso-8859-1)",0,0);
108 codecMenu->insertItem( "Cyrillic (iso-8859-5)",1,1); 118 codecMenu->insertItem( "Cyrillic (iso-8859-5)",1,1);
109 codecMenu->insertItem( "Western (iso-8859-15)",2,2); 119 codecMenu->insertItem( "Western (iso-8859-15)",2,2);
110 codecMenu->insertItem( "Chinese (big-5)",3,3); 120 codecMenu->insertItem( "Chinese (big-5)",3,3);
111 codecMenu->insertItem( "Unicode (utf-8)",4,4); 121 codecMenu->insertItem( "Unicode (utf-8)",4,4);
112 codecMenu->insertItem( "Userdefined ("+KOPrefs::instance()->mSendCodec+")",5,5); 122 codecMenu->insertItem( "Userdefined ("+KOPrefs::instance()->mSendCodec+")",5,5);
113 //disabled 123 //disabled
114 //settingsMenu->insertItem( i18n("Codec for new mails"), codecMenu); 124 //settingsMenu->insertItem( i18n("Codec for new mails"), codecMenu);
115 //setCentralWidget( view ); 125 //setCentralWidget( view );
116 126
117 QVBox* wrapperBox = new QVBox( this ); 127 QVBox* wrapperBox = new QVBox( this );
118 setCentralWidget( wrapperBox ); 128 setCentralWidget( wrapperBox );
119 129
120 // QWidget *view = new QWidget( wrapperBox ); 130 // QWidget *view = new QWidget( wrapperBox );
121 KDGanttMinimizeSplitter* splithor = new KDGanttMinimizeSplitter( Qt::Vertical, wrapperBox); 131 KDGanttMinimizeSplitter* splithor = new KDGanttMinimizeSplitter( Qt::Vertical, wrapperBox);
122 splithor->setMinimizeDirection( KDGanttMinimizeSplitter::Down); 132 splithor->setMinimizeDirection( KDGanttMinimizeSplitter::Down);
123 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, splithor); 133 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, splithor);
124 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); 134 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left);
125 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); 135 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight );
126 subLE = 0; 136 subLE = 0;
127 fromLE = 0; 137 fromLE = 0;
128 toLE = 0; 138 toLE = 0;
129 if ( KOPrefs::instance()->mShowInfoSub || KOPrefs::instance()->mShowInfoFrom || KOPrefs::instance()->mShowInfoTo ) { 139 if ( KOPrefs::instance()->mShowInfoSub || KOPrefs::instance()->mShowInfoFrom || KOPrefs::instance()->mShowInfoTo ) {
130 QWidget* infoBox = new QWidget( splithor ); 140 QWidget* infoBox = new QWidget( splithor );
131 QGridLayout *griLay = new QGridLayout( infoBox, 2,2); 141 QGridLayout *griLay = new QGridLayout( infoBox, 2,2);
132 if ( KOPrefs::instance()->mShowInfoSub ) { 142 if ( KOPrefs::instance()->mShowInfoSub ) {
133 griLay->addWidget( new QLabel ( i18n("Su:"), infoBox ),0,0 ); 143 griLay->addWidget( new QLabel ( i18n("Su:"), infoBox ),0,0 );
134 griLay->addWidget( subLE = new QLineEdit( infoBox ),0,1) ; 144 griLay->addWidget( subLE = new QLineEdit( infoBox ),0,1) ;
135 } 145 }
136 if ( KOPrefs::instance()->mShowInfoFrom ) { 146 if ( KOPrefs::instance()->mShowInfoFrom ) {
137 griLay->addWidget( new QLabel ( i18n("Fr:"), infoBox ),1,0 ); 147 griLay->addWidget( new QLabel ( i18n("Fr:"), infoBox ),1,0 );
138 griLay->addWidget( fromLE = new QLineEdit( infoBox ),1,1) ; 148 griLay->addWidget( fromLE = new QLineEdit( infoBox ),1,1) ;
139 } 149 }
140 if ( KOPrefs::instance()->mShowInfoTo ) { 150 if ( KOPrefs::instance()->mShowInfoTo ) {
141 griLay->addWidget( new QLabel ( i18n("To:"), infoBox ),2,0 ); 151 griLay->addWidget( new QLabel ( i18n("To:"), infoBox ),2,0 );
142 griLay->addWidget( toLE = new QLineEdit( infoBox ),2,1) ; 152 griLay->addWidget( toLE = new QLineEdit( infoBox ),2,1) ;
143 } 153 }
144 infoBox->setMaximumHeight( infoBox->sizeHint().height() ); 154 infoBox->setMaximumHeight( infoBox->sizeHint().height() );
145 if ( !KOPrefs::instance()->mShowInfoStart ) { 155 if ( !KOPrefs::instance()->mShowInfoStart ) {
146 QTimer::singleShot( 1,splithor, SLOT ( toggle() ) ); 156 QTimer::singleShot( 1,splithor, SLOT ( toggle() ) );
147 } 157 }
148 } 158 }
149 159
150 160
151 folderView = new AccountView( split ); 161 folderView = new AccountView( split );
152 folderView->header()->hide(); 162 folderView->header()->hide();
153 folderView->setRootIsDecorated( false ); 163 folderView->setRootIsDecorated( false );
154 folderView->addColumn( i18n( "Mailbox" ) ); 164 folderView->addColumn( i18n( "Mailbox" ) );
155 165
156 //layout->addWidget( folderView ); 166 //layout->addWidget( folderView );
157 167
158 mailView = new QListView( split ); 168 mailView = new QListView( split );
159 mailView->addColumn( i18n( " " ) ); 169 mailView->addColumn( i18n( " " ) );
160 mailView->addColumn( i18n( "Subject" ),QListView::Manual ); 170 mailView->addColumn( i18n( "Subject" ),QListView::Manual );
161 mailView->addColumn( i18n( "Sender" ),QListView::Manual ); 171 mailView->addColumn( i18n( "Sender" ),QListView::Manual );
162 mailView->addColumn( i18n( "Size" ),QListView::Manual); 172 mailView->addColumn( i18n( "Size" ),QListView::Manual);
163 mailView->addColumn( i18n( "Date" ),QListView::Manual); 173 mailView->addColumn( i18n( "Date" ),QListView::Manual);
164 if ( KOPrefs::instance()->mShowToField ) 174 if ( KOPrefs::instance()->mShowToField )
165 mailView->addColumn( i18n( "To" ),QListView::Manual); 175 mailView->addColumn( i18n( "To" ),QListView::Manual);
166 mailView->setAllColumnsShowFocus(true); 176 mailView->setAllColumnsShowFocus(true);
167 //mailView->setSorting(-1); 177 //mailView->setSorting(-1);
168 mailView->setRootIsDecorated( false ); 178 mailView->setRootIsDecorated( false );
169 statusWidget = new StatusWidget( wrapperBox ); 179 statusWidget = new StatusWidget( wrapperBox );
170 statusWidget->hide(); 180 statusWidget->hide();
171 181
172 //layout->addWidget( mailView ); 182 //layout->addWidget( mailView );
173 //layout->setStretchFactor( folderView, 1 ); 183 //layout->setStretchFactor( folderView, 1 );
174 //layout->setStretchFactor( mailView, 2 ); 184 //layout->setStretchFactor( mailView, 2 );
175 185
176 slotAdjustLayout(); 186 slotAdjustLayout();
177#ifndef DESKTOP_VERSION 187#ifndef DESKTOP_VERSION
178 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); 188 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold);
179 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); 189 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold);
180 if ( subLE ) 190 if ( subLE )
181 QPEApplication::setStylusOperation( subLE ,QPEApplication::RightOnHold); 191 QPEApplication::setStylusOperation( subLE ,QPEApplication::RightOnHold);
182 if ( fromLE ) 192 if ( fromLE )
183 QPEApplication::setStylusOperation( fromLE ,QPEApplication::RightOnHold); 193 QPEApplication::setStylusOperation( fromLE ,QPEApplication::RightOnHold);
184 if ( toLE ) 194 if ( toLE )
185 QPEApplication::setStylusOperation( toLE ,QPEApplication::RightOnHold); 195 QPEApplication::setStylusOperation( toLE ,QPEApplication::RightOnHold);
186#endif 196#endif
187 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, 197 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this,
188 SLOT( mailLeftClicked(QListViewItem*) ) ); 198 SLOT( mailLeftClicked(QListViewItem*) ) );
189 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, 199 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this,
190 SLOT( mailLeftClicked(QListViewItem*) ) ); 200 SLOT( mailLeftClicked(QListViewItem*) ) );
191 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 201 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
192 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); 202 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) );
193 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), 203 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)),
194 this,SLOT(refreshMailView(const QValueList<RecMailP>&))); 204 this,SLOT(refreshMailView(const QValueList<RecMailP>&)));
195 205
196 connect( mailView, SIGNAL( currentChanged (QListViewItem* )),this, 206 connect( mailView, SIGNAL( currentChanged (QListViewItem* )),this,
197 SLOT( setInfoFields(QListViewItem*) ) ); 207 SLOT( setInfoFields(QListViewItem*) ) );
198 208
199 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); 209 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) );
200 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); 210 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) );
201// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); 211// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) );
202 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); 212 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) );
203 //mailView->setMultiSelection ( true ); 213 //mailView->setMultiSelection ( true );
204 mailView->setSelectionMode( QListView::Extended ); 214 mailView->setSelectionMode( QListView::Extended );
205 QValueList<int> list; 215 QValueList<int> list;
206 int fw = 100; 216 int fw = 100;
207 if ( QApplication::desktop()->width() > 320 ) 217 if ( QApplication::desktop()->width() > 320 )
208 fw = 50; 218 fw = 50;
209 list.append( fw ); 219 list.append( fw );
210 list.append( 100 ); 220 list.append( 100 );
211 split->setSizes( list ); 221 split->setSizes( list );
212 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); 222 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) );
213 mailView->setShowSortIndicator ( true ); 223 mailView->setShowSortIndicator ( true );
214 QLabel *spacer = new QLabel( toolBar ); 224 QLabel *spacer = new QLabel( toolBar );
215 spacer->setBackgroundMode( QWidget::PaletteButton ); 225 spacer->setBackgroundMode( QWidget::PaletteButton );
216 toolBar->setStretchableWidget( spacer ); 226 toolBar->setStretchableWidget( spacer );
217 227
218 QAction* closeMail = new QAction(i18n("Close"),SmallIcon("exit"), 0, 0, this); 228 QAction* closeMail = new QAction(i18n("Close"),SmallIcon("exit"), 0, 0, this);
219 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); 229 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) );
220 if ( QApplication::desktop()->width() > 320 ) 230 if ( QApplication::desktop()->width() > 320 )
221 closeMail->addTo(toolBar); 231 closeMail->addTo(toolBar);
222 closeMail->addTo(mailMenu); 232 closeMail->addTo(mailMenu);
223 233
224 234
225 QPopupMenu* helpMenu = new QPopupMenu( menuBar ); 235 QPopupMenu* helpMenu = new QPopupMenu( menuBar );
226 menuBar->insertItem( i18n( "Help" ), helpMenu ); 236 menuBar->insertItem( i18n( "Help" ), helpMenu );
227 QAction* li = new QAction(i18n("About"), QPixmap(), 0, 0, this); 237 QAction* li = new QAction(i18n("About"), QPixmap(), 0, 0, this);
228 connect( li, SIGNAL( activated() ), SLOT( showAbout()) ); 238 connect( li, SIGNAL( activated() ), SLOT( showAbout()) );
229 li->addTo(helpMenu); 239 li->addTo(helpMenu);
230 li = new QAction(i18n("Licence"),QPixmap(), 0, 0, this); 240 li = new QAction(i18n("Licence"),QPixmap(), 0, 0, this);
231 connect( li, SIGNAL( activated() ), SLOT( showLicence()) ); 241 connect( li, SIGNAL( activated() ), SLOT( showLicence()) );
232 li->addTo(helpMenu); 242 li->addTo(helpMenu);
233 li = new QAction(i18n("LibEtPan Licence"), QPixmap(), 0, 0, this); 243 li = new QAction(i18n("LibEtPan Licence"), QPixmap(), 0, 0, this);
234 connect( li, SIGNAL( activated() ), SLOT( showEtpanLicence()) ); 244 connect( li, SIGNAL( activated() ), SLOT( showEtpanLicence()) );
235 li->addTo(helpMenu); 245 li->addTo(helpMenu);
236 connect( codecMenu, SIGNAL( activated(int) ), this, SLOT( slotSetCodec( int )) ); 246 connect( codecMenu, SIGNAL( activated(int) ), this, SLOT( slotSetCodec( int )) );
237 slotSetCodec( KOPrefs::instance()->mCurrentCodec ); 247 slotSetCodec( KOPrefs::instance()->mCurrentCodec );
238 menuBar->setMaximumWidth( menuBar->sizeHint().width()); 248 menuBar->setMaximumWidth( menuBar->sizeHint().width());
239 //menuBar->setMaximumSize( menuBar->sizeHint()); 249 //menuBar->setMaximumSize( menuBar->sizeHint());
240#ifdef DESKTOP_VERSION 250#ifdef DESKTOP_VERSION
241 resize ( 640, 480 ); 251 resize ( 640, 480 );
242#endif 252#endif
243} 253}
244 254
245MainWindow::~MainWindow() 255MainWindow::~MainWindow()
246{ 256{
247} 257}
248 258
249void MainWindow::setInfoFields(QListViewItem* item ) 259void MainWindow::setInfoFields(QListViewItem* item )
250{ 260{
251 if ( item == 0) { 261 if ( item == 0) {
252 if ( subLE ) subLE->setText(""); 262 if ( subLE ) subLE->setText("");
253 if ( fromLE ) fromLE->setText(""); 263 if ( fromLE ) fromLE->setText("");
254 if ( toLE ) toLE->setText(""); 264 if ( toLE ) toLE->setText("");
255 return; 265 return;
256 } 266 }
257 RecMailP mail = ((MailListViewItem*)item)->data(); 267 RecMailP mail = ((MailListViewItem*)item)->data();
258 if ( subLE ) subLE->setText(mail->getSubject()); 268 if ( subLE ) subLE->setText(mail->getSubject());
259 if ( fromLE ) fromLE->setText(mail->getFrom()); 269 if ( fromLE ) fromLE->setText(mail->getFrom());
260 if ( toLE ) toLE->setText(mail->To().join(";" )); 270 if ( toLE ) toLE->setText(mail->To().join(";" ));
261 if ( subLE ) subLE->setCursorPosition(0); 271 if ( subLE ) subLE->setCursorPosition(0);
262 if ( fromLE ) fromLE->setCursorPosition(0); 272 if ( fromLE ) fromLE->setCursorPosition(0);
263 if ( toLE ) toLE->setCursorPosition(0); 273 if ( toLE ) toLE->setCursorPosition(0);
264 274
265} 275}
266void MainWindow::slotSetCodec( int codec ) 276void MainWindow::slotSetCodec( int codec )
267{ 277{
268 codecMenu->setItemChecked(KOPrefs::instance()->mCurrentCodec, false ); 278 codecMenu->setItemChecked(KOPrefs::instance()->mCurrentCodec, false );
269 //qDebug("codec %d ", codec); 279 //qDebug("codec %d ", codec);
270 KOPrefs::instance()->mCurrentCodec = codec; 280 KOPrefs::instance()->mCurrentCodec = codec;
271 KOPrefs::instance()->isDirty = true; 281 KOPrefs::instance()->isDirty = true;
272 QString name; 282 QString name;
273 switch ( codec ) { 283 switch ( codec ) {
274 case 0: 284 case 0:
275 name = "iso-8859-1"; 285 name = "iso-8859-1";
276 break; 286 break;
277 case 1: 287 case 1:
278 name = "iso-8859-5"; 288 name = "iso-8859-5";
279 break; 289 break;
280 case 2: 290 case 2:
281 name = "iso-8859-15"; 291 name = "iso-8859-15";
282 break; 292 break;
283 case 3: 293 case 3:
284 name = "big-5"; 294 name = "big-5";
285 break; 295 break;
286 case 4: 296 case 4:
287 name = "utf-8"; 297 name = "utf-8";
288 break; 298 break;
289 case 5: 299 case 5:
290 name = KOPrefs::instance()->mSendCodec.lower(); 300 name = KOPrefs::instance()->mSendCodec.lower();
291 break; 301 break;
292 } 302 }
293 KOPrefs::instance()->mCurrentCodeName = name ; 303 KOPrefs::instance()->mCurrentCodeName = name ;
294 codecMenu->changeItem ( 5, "Userdefined ("+KOPrefs::instance()->mSendCodec+")"); 304 codecMenu->changeItem ( 5, "Userdefined ("+KOPrefs::instance()->mSendCodec+")");
295 codecMenu->setItemChecked(KOPrefs::instance()->mCurrentCodec, true ); 305 codecMenu->setItemChecked(KOPrefs::instance()->mCurrentCodec, true );
296} 306}
297void MainWindow::showLicence() 307void MainWindow::showLicence()
298{ 308{
299 KApplication::showLicence(); 309 KApplication::showLicence();
300} 310}
301void MainWindow::showAbout() 311void MainWindow::showAbout()
302{ 312{
303 QString version; 313 QString version;
304#include <../version> 314#include <../version>
305 315
306 QString cap = "About KOpieMail/Pi"; 316 QString cap = "About KOpieMail/Pi";
307 QString text =i18n("KOpieMail/Platform-independent\n") + 317 QString text =i18n("KOpieMail/Platform-independent\n") +
308 "(OM/Pi) " + version + " - " 318 "(OM/Pi) " + version + " - "
309 319
310#ifdef DESKTOP_VERSION 320#ifdef DESKTOP_VERSION
311 "Desktop Edition\n" 321 "Desktop Edition\n"
312#else 322#else
313 "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n" 323 "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n"
314#endif 324#endif
315 "www.pi-sync.info\n\n" 325 "www.pi-sync.info\n\n"
316 326
317 327
318 328
319"Copyright (c) 2004 Lutz Rogowski <lutz@pi-sync.info>\n" 329"Copyright (c) 2004 Lutz Rogowski <lutz@pi-sync.info>\n"
320 "KOpieMail/Pi is based on Opie Mail\n" 330 "KOpieMail/Pi is based on Opie Mail\n"
321 "Copyright (c) Rajko Albrecht and the Opie team\n" 331 "Copyright (c) Rajko Albrecht and the Opie team\n"
322 "KOpieMail/Pi is licensed under the GPL\n" 332 "KOpieMail/Pi is licensed under the GPL\n"
323 "\n" 333 "\n"
324 "KOpieMail/Pi uses LibEtPan - a mail stuff library\n" 334 "KOpieMail/Pi uses LibEtPan - a mail stuff library\n"
325 "Copyright (C) 2001, 2002 - DINH Viet Hoa\n" 335 "Copyright (C) 2001, 2002 - DINH Viet Hoa\n"
326 "libEtPan has its own licence - see LibEtPan licence\n"; 336 "libEtPan has its own licence - see LibEtPan licence\n";
327 337
328 KApplication::showText( cap, text ); 338 KApplication::showText( cap, text );
329} 339}
330void MainWindow::showEtpanLicence() 340void MainWindow::showEtpanLicence()
331{ 341{
332 KApplication::showFile( "LibEtPan licence", "kdepim/kopiemail/COPYRIGHTlibetpan" ); 342 KApplication::showFile( "LibEtPan licence", "kdepim/kopiemail/COPYRIGHTlibetpan" );
333 343
334} 344}
335void MainWindow::appMessage(const QCString &, const QByteArray &) 345void MainWindow::appMessage(const QCString &, const QByteArray &)
336{ 346{
337 qDebug("appMessage implemented by subclass"); 347 qDebug("appMessage implemented by subclass");
338} 348}
339 349
340void MainWindow::slotAdjustLayout() { 350void MainWindow::slotAdjustLayout() {
341 351
342 /* 352 /*
343 QWidget *d = QApplication::desktop(); 353 QWidget *d = QApplication::desktop();
344 354
345 if ( d->width() < d->height() ) { 355 if ( d->width() < d->height() ) {
346 layout->setDirection( QBoxLayout::TopToBottom ); 356 layout->setDirection( QBoxLayout::TopToBottom );
347 } else { 357 } else {
348 layout->setDirection( QBoxLayout::LeftToRight ); 358 layout->setDirection( QBoxLayout::LeftToRight );
349 } 359 }
350 */ 360 */
351} 361}
352 362
353void MainWindow::slotAdjustColumns() 363void MainWindow::slotAdjustColumns()
354{ 364{
355 bool hidden = folderView->isHidden(); 365 bool hidden = folderView->isHidden();
356 if ( hidden ) folderView->show(); 366 if ( hidden ) folderView->show();
357 folderView->setColumnWidth( 0, folderView->visibleWidth() ); 367 folderView->setColumnWidth( 0, folderView->visibleWidth() );
358 if ( hidden ) folderView->hide(); 368 if ( hidden ) folderView->hide();
359 369
360 mailView->setColumnWidth( 0, 10 ); 370 mailView->setColumnWidth( 0, 10 );
361 mailView->setColumnWidth( 1, 100 ); 371 mailView->setColumnWidth( 1, 100 );
362 mailView->setColumnWidth( 2, 100 ); 372 mailView->setColumnWidth( 2, 100 );
363 mailView->setColumnWidth( 3, 50 ); 373 mailView->setColumnWidth( 3, 50 );
364 mailView->setColumnWidth( 4, 120 ); 374 mailView->setColumnWidth( 4, 120 );
365 if ( KOPrefs::instance()->mShowToField ) 375 if ( KOPrefs::instance()->mShowToField )
366 mailView->setColumnWidth( 5, 100 ); 376 mailView->setColumnWidth( 5, 100 );
367} 377}
368 378
369void MainWindow::slotEditSettings() 379void MainWindow::slotEditSettings()
370{ 380{
371} 381}
382void MainWindow::slotEditGlobalSettings()
383{
384}
372 385
373void MainWindow::slotShowFolders( bool ) 386void MainWindow::slotShowFolders( bool )
374{ 387{
375 qDebug("not implemented: "); 388 qDebug("not implemented: ");
376} 389}
377 390
378void MainWindow::refreshMailView(const QValueList<RecMailP>&) 391void MainWindow::refreshMailView(const QValueList<RecMailP>&)
379{ 392{
380 qDebug("not implemented: "); 393 qDebug("not implemented: ");
381} 394}
382 395
383void MainWindow::mailLeftClicked(QListViewItem * ) 396void MainWindow::mailLeftClicked(QListViewItem * )
384{ 397{
385 qDebug("not implemented: "); 398 qDebug("not implemented: ");
386} 399}
387 400
388void MainWindow::displayMail() 401void MainWindow::displayMail()
389{ 402{
390 qDebug("not implemented: "); 403 qDebug("not implemented: ");
391} 404}
392 405
393void MainWindow::slotDeleteMail() 406void MainWindow::slotDeleteMail()
394{ 407{
395 qDebug("not implemented: "); 408 qDebug("not implemented: ");
396} 409}
397 410
398void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int ) 411void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int )
399{ 412{
400 qDebug("not implemented: "); 413 qDebug("not implemented: ");
401} 414}
402 415
403void MainWindow::slotSendQueued() 416void MainWindow::slotSendQueued()
404{ 417{
405 qDebug("not implemented: "); 418 qDebug("not implemented: ");
406} 419}
407 420
408void MainWindow::slotEditAccounts() 421void MainWindow::slotEditAccounts()
409{ 422{
410 qDebug("not implemented: "); 423 qDebug("not implemented: ");
411} 424}
412 425
413void MainWindow::slotComposeMail() 426void MainWindow::slotComposeMail()
414{ 427{
415 qDebug("not implemented: "); 428 qDebug("not implemented: ");
416} 429}
diff --git a/kmicromail/mainwindow.h b/kmicromail/mainwindow.h
index ddb3fca..6894039 100644
--- a/kmicromail/mainwindow.h
+++ b/kmicromail/mainwindow.h
@@ -1,73 +1,74 @@
1 1
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3#ifndef MAINWINDOW_H 3#ifndef MAINWINDOW_H
4#define MAINWINDOW_H 4#define MAINWINDOW_H
5 5
6#include <qmainwindow.h> 6#include <qmainwindow.h>
7#include <qlistview.h> 7#include <qlistview.h>
8#include <qaction.h> 8#include <qaction.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10 10
11#include <qtoolbar.h> 11#include <qtoolbar.h>
12#ifdef DESKTOP_VERSION 12#ifdef DESKTOP_VERSION
13#include <qmenubar.h> 13#include <qmenubar.h>
14#define QPEMenuBar QMenuBar 14#define QPEMenuBar QMenuBar
15#else 15#else
16#include <qpe/qpemenubar.h> 16#include <qpe/qpemenubar.h>
17#endif 17#endif
18 18
19#include "accountview.h" 19#include "accountview.h"
20#include "statuswidget.h" 20#include "statuswidget.h"
21 21
22#include <libmailwrapper/mailtypes.h> 22#include <libmailwrapper/mailtypes.h>
23#include <opie2/osmartpointer.h> 23#include <opie2/osmartpointer.h>
24 24
25class RecMail; 25class RecMail;
26 26
27class MainWindow : public QMainWindow 27class MainWindow : public QMainWindow
28{ 28{
29 Q_OBJECT 29 Q_OBJECT
30 30
31public: 31public:
32 MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 32 MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
33 virtual ~MainWindow(); 33 virtual ~MainWindow();
34 34
35public slots: 35public slots:
36 virtual void slotAdjustColumns(); 36 virtual void slotAdjustColumns();
37 virtual void appMessage(const QCString &msg, const QByteArray &data); 37 virtual void appMessage(const QCString &msg, const QByteArray &data);
38 virtual void slotComposeMail(); 38 virtual void slotComposeMail();
39 39
40protected slots: 40protected slots:
41 virtual void setInfoFields(QListViewItem* ); 41 virtual void setInfoFields(QListViewItem* );
42 virtual void slotSendQueued(); 42 virtual void slotSendQueued();
43 virtual void slotEditAccounts(); 43 virtual void slotEditAccounts();
44 virtual void slotShowFolders( bool show ); 44 virtual void slotShowFolders( bool show );
45 virtual void refreshMailView(const QValueList<RecMailP>&); 45 virtual void refreshMailView(const QValueList<RecMailP>&);
46 virtual void displayMail(); 46 virtual void displayMail();
47 virtual void slotGetMail() = 0; 47 virtual void slotGetMail() = 0;
48 virtual void slotGetAllMail() = 0; 48 virtual void slotGetAllMail() = 0;
49 virtual void slotDeleteMail(); 49 virtual void slotDeleteMail();
50 virtual void slotDeleteAllMail() = 0; 50 virtual void slotDeleteAllMail() = 0;
51 virtual void slotSetCodec(int); 51 virtual void slotSetCodec(int);
52 virtual void mailHold(int, QListViewItem *,const QPoint&,int); 52 virtual void mailHold(int, QListViewItem *,const QPoint&,int);
53 virtual void slotAdjustLayout(); 53 virtual void slotAdjustLayout();
54 virtual void slotEditSettings(); 54 virtual void slotEditSettings();
55 virtual void slotEditGlobalSettings();
55 virtual void mailLeftClicked( QListViewItem * ); 56 virtual void mailLeftClicked( QListViewItem * );
56 void showLicence(); 57 void showLicence();
57 void showAbout(); 58 void showAbout();
58 void showEtpanLicence(); 59 void showEtpanLicence();
59 60
60protected: 61protected:
61 QToolBar *toolBar; 62 QToolBar *toolBar;
62 StatusWidget *statusWidget; 63 StatusWidget *statusWidget;
63 QPEMenuBar *menuBar; 64 QPEMenuBar *menuBar;
64 QPopupMenu *mailMenu, *settingsMenu, *codecMenu; 65 QPopupMenu *mailMenu, *settingsMenu, *codecMenu;
65 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails, 66 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails,
66 *editSettings, *editAccounts, *syncFolders; 67 *editSettings, *editAccounts, *syncFolders;
67 AccountView *folderView; 68 AccountView *folderView;
68 QListView *mailView; 69 QListView *mailView;
69 QLineEdit* toLE,*fromLE,*subLE; 70 QLineEdit* toLE,*fromLE,*subLE;
70 //QBoxLayout *layout; 71 //QBoxLayout *layout;
71}; 72};
72 73
73#endif 74#endif
diff --git a/kmicromail/opiemail.cpp b/kmicromail/opiemail.cpp
index 4436ad6..8ac3451 100644
--- a/kmicromail/opiemail.cpp
+++ b/kmicromail/opiemail.cpp
@@ -1,502 +1,507 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3 3
4 4
5#define protected public 5#define protected public
6#include <qwidget.h> 6#include <qwidget.h>
7#undef protected 7#undef protected
8#include "koprefsdialog.h" 8#include "koprefsdialog.h"
9#include <kapplication.h> 9#include <kapplication.h>
10#include <libkdepim/externalapphandler.h> 10#include <libkdepim/externalapphandler.h>
11#include <libkdepim/kpimglobalprefs.h> 11#include <libkdepim/kpimglobalprefs.h>
12#ifdef MINIKDE_KDIALOG_H 12#ifdef MINIKDE_KDIALOG_H
13#undef MINIKDE_KDIALOG_H 13#undef MINIKDE_KDIALOG_H
14#endif 14#endif
15#include "settingsdialog.h" 15#include "settingsdialog.h"
16#include "opiemail.h" 16#include "opiemail.h"
17#include "editaccounts.h" 17#include "editaccounts.h"
18#include "composemail.h" 18#include "composemail.h"
19#include "mailistviewitem.h" 19#include "mailistviewitem.h"
20#include "viewmail.h" 20#include "viewmail.h"
21#include "selectstore.h" 21#include "selectstore.h"
22#include "selectsmtp.h" 22#include "selectsmtp.h"
23#include "accountitem.h" 23#include "accountitem.h"
24#include "accountview.h" 24#include "accountview.h"
25#include "klocale.h" 25#include "klocale.h"
26 26
27#include <qmessagebox.h> 27#include <qmessagebox.h>
28#include <qtimer.h> 28#include <qtimer.h>
29#include <qcursor.h> 29#include <qcursor.h>
30#include <qtextbrowser.h> 30#include <qtextbrowser.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qpe/global.h> 32#include <qpe/global.h>
33 33
34#ifdef DESKTOP_VERSION 34#ifdef DESKTOP_VERSION
35#include <qapplication.h> 35#include <qapplication.h>
36#else 36#else
37#include <qpe/qpeapplication.h> 37#include <qpe/qpeapplication.h>
38#endif 38#endif
39#include <libmailwrapper/smtpwrapper.h> 39#include <libmailwrapper/smtpwrapper.h>
40#include <libmailwrapper/mailtypes.h> 40#include <libmailwrapper/mailtypes.h>
41#include <libmailwrapper/abstractmail.h> 41#include <libmailwrapper/abstractmail.h>
42#include "koprefs.h" 42#include "koprefs.h"
43 43
44//using namespace Opie::Core; 44//using namespace Opie::Core;
45 45
46OpieMail::OpieMail( QWidget *parent, const char *name ) 46OpieMail::OpieMail( QWidget *parent, const char *name )
47 : MainWindow( parent, name) //, WStyle_ContextHelp ) 47 : MainWindow( parent, name) //, WStyle_ContextHelp )
48{ 48{
49 mCurrentComposer = 0; 49 mCurrentComposer = 0;
50 settings = new Settings(); 50 settings = new Settings();
51 tb = 0; 51 tb = 0;
52 setIcon(SmallIcon( "kmicromail" ) ); 52 setIcon(SmallIcon( "kmicromail" ) );
53 folderView->populate( settings->getAccounts() ); 53 folderView->populate( settings->getAccounts() );
54 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), 54 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)),
55 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); 55 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&)));
56 folderView->setFocus(); 56 folderView->setFocus();
57} 57}
58 58
59OpieMail::~OpieMail() 59OpieMail::~OpieMail()
60{ 60{
61 if (settings) delete settings; 61 if (settings) delete settings;
62 if ( tb ) 62 if ( tb )
63 delete tb; 63 delete tb;
64} 64}
65 65
66void OpieMail::appMessage(const QCString &msg, const QByteArray &data) 66void OpieMail::appMessage(const QCString &msg, const QByteArray &data)
67{ 67{
68 68
69} 69}
70#include <stdlib.h> 70#include <stdlib.h>
71void OpieMail::message(const QCString &msg, const QByteArray &data) 71void OpieMail::message(const QCString &msg, const QByteArray &data)
72{ 72{
73 // copied from old mail2 73 // copied from old mail2
74 static int ii = 0; 74 static int ii = 0;
75 //qDebug("QCOP CALL ############################# %d ", ii); 75 //qDebug("QCOP CALL ############################# %d ", ii);
76 //QString mess ( msg ); 76 //QString mess ( msg );
77 //qDebug("Message = %s ",mess.latin1()); 77 //qDebug("Message = %s ",mess.latin1());
78 ++ii; 78 ++ii;
79 //qDebug("KM:appMessage %d *%s* %x", ii, msg.data(), this); 79 //qDebug("KM:appMessage %d *%s* %x", ii, msg.data(), this);
80 80
81 mPendingEmail = QString::null; 81 mPendingEmail = QString::null;
82 mPendingName = QString::null; 82 mPendingName = QString::null;
83 if (msg == "writeMail(QString,QString)") 83 if (msg == "writeMail(QString,QString)")
84 { 84 {
85 //qDebug("writeMail(QString,QString) "); 85 //qDebug("writeMail(QString,QString) ");
86 QDataStream stream(data,IO_ReadOnly); 86 QDataStream stream(data,IO_ReadOnly);
87 stream >> mPendingName >> mPendingEmail; 87 stream >> mPendingName >> mPendingEmail;
88 // removing the whitespaces at beginning and end is needed! 88 // removing the whitespaces at beginning and end is needed!
89 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 89 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
90 } 90 }
91 else if (msg == "newMail()") 91 else if (msg == "newMail()")
92 { 92 {
93 //qDebug("slotComposeMail() "); 93 //qDebug("slotComposeMail() ");
94 // we cannot call slotComposeMail(); directly, because may be executing a QCOP call 94 // we cannot call slotComposeMail(); directly, because may be executing a QCOP call
95 // and a QCOP call does not like a processevents in his execution 95 // and a QCOP call does not like a processevents in his execution
96 // with the Qtimer we call slotComposeMail() after we reached the main event loop 96 // with the Qtimer we call slotComposeMail() after we reached the main event loop
97 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 97 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
98 // slotComposeMail(); 98 // slotComposeMail();
99 } 99 }
100 else if (msg == "newMail(QString)") 100 else if (msg == "newMail(QString)")
101 { 101 {
102 //qDebug(" newMail(QString)"); 102 //qDebug(" newMail(QString)");
103 QDataStream stream(data,IO_ReadOnly); 103 QDataStream stream(data,IO_ReadOnly);
104 stream >> mPendingName; 104 stream >> mPendingName;
105 // the format is 105 // the format is
106 // NAME <EMAIL>:SUBJECT 106 // NAME <EMAIL>:SUBJECT
107 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 107 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
108 } else { 108 } else {
109 mPendingData = data; 109 mPendingData = data;
110 mPendingMessage = msg; 110 mPendingMessage = msg;
111 QTimer::singleShot ( 50, this, SLOT(slotExtAppHandler() ) ); 111 QTimer::singleShot ( 50, this, SLOT(slotExtAppHandler() ) );
112 } 112 }
113 113
114 //qDebug("END OpieMail::message "); 114 //qDebug("END OpieMail::message ");
115} 115}
116void OpieMail::slotExtAppHandler() 116void OpieMail::slotExtAppHandler()
117{ 117{
118 ExternalAppHandler::instance()->appMessage ( mPendingMessage, mPendingData ); 118 ExternalAppHandler::instance()->appMessage ( mPendingMessage, mPendingData );
119} 119}
120void OpieMail::slotwriteMail2(const QString& namemail ) 120void OpieMail::slotwriteMail2(const QString& namemail )
121{ 121{
122 //qDebug("OpieMail::slotwriteMail2 "); 122 //qDebug("OpieMail::slotwriteMail2 ");
123 //qApp->processEvents(); 123 //qApp->processEvents();
124 ComposeMail compose( settings, this, 0, true ); 124 ComposeMail compose( settings, this, 0, true );
125 if ( !namemail.isEmpty() ) { 125 if ( !namemail.isEmpty() ) {
126 QString to = namemail; 126 QString to = namemail;
127 if ( namemail.find( " <") > 1 ) { 127 if ( namemail.find( " <") > 1 ) {
128 to = "\"" +to.replace( QRegExp( " <"), "\" <") ; 128 to = "\"" +to.replace( QRegExp( " <"), "\" <") ;
129 } else 129 } else
130 if ( namemail.find( "<") > 1 ) { 130 if ( namemail.find( "<") > 1 ) {
131 to = "\"" +to.replace( QRegExp( "<"), "\" <") ; 131 to = "\"" +to.replace( QRegExp( "<"), "\" <") ;
132 } 132 }
133 int sub = to.find( ">:"); 133 int sub = to.find( ">:");
134 if ( sub > 0 ) { 134 if ( sub > 0 ) {
135 compose.setTo( to.left(sub+1) ); 135 compose.setTo( to.left(sub+1) );
136 compose.setSubject( to.mid(sub+2) ); 136 compose.setSubject( to.mid(sub+2) );
137 } else 137 } else
138 compose.setTo( to ); 138 compose.setTo( to );
139 } 139 }
140 compose.slotAdjustColumns(); 140 compose.slotAdjustColumns();
141#ifndef DESKTOP_VERSION 141#ifndef DESKTOP_VERSION
142 compose.showMaximized(); 142 compose.showMaximized();
143#endif 143#endif
144 mCurrentComposer = &compose; 144 mCurrentComposer = &compose;
145 compose.exec(); 145 compose.exec();
146 mCurrentComposer = 0; 146 mCurrentComposer = 0;
147 folderView->refreshOutgoing(); 147 folderView->refreshOutgoing();
148 raise(); 148 raise();
149 //qDebug("retttich "); 149 //qDebug("retttich ");
150} 150}
151void OpieMail::slotwriteMail(const QString&name,const QString&email) 151void OpieMail::slotwriteMail(const QString&name,const QString&email)
152{ 152{
153 // qDebug("OpieMail::slotwriteMail "); 153 // qDebug("OpieMail::slotwriteMail ");
154 ComposeMail compose( settings, this, 0, true ); 154 ComposeMail compose( settings, this, 0, true );
155 if (!email.isEmpty()) 155 if (!email.isEmpty())
156 { 156 {
157 if (!name.isEmpty()) 157 if (!name.isEmpty())
158 { 158 {
159 compose.setTo("\"" + name + "\"" + " " + "<"+ email + ">"); 159 compose.setTo("\"" + name + "\"" + " " + "<"+ email + ">");
160 } 160 }
161 else 161 else
162 { 162 {
163 compose.setTo(email); 163 compose.setTo(email);
164 } 164 }
165 } 165 }
166 compose.slotAdjustColumns(); 166 compose.slotAdjustColumns();
167#ifndef DESKTOP_VERSION 167#ifndef DESKTOP_VERSION
168 compose.showMaximized(); 168 compose.showMaximized();
169#endif 169#endif
170 170
171 mCurrentComposer = &compose; 171 mCurrentComposer = &compose;
172 compose.exec(); 172 compose.exec();
173 mCurrentComposer = 0; 173 mCurrentComposer = 0;
174 folderView->refreshOutgoing(); 174 folderView->refreshOutgoing();
175 raise(); 175 raise();
176} 176}
177 177
178void OpieMail::slotComposeMail() 178void OpieMail::slotComposeMail()
179{ 179{
180 if ( mPendingEmail == QString::null && mPendingName == QString::null) 180 if ( mPendingEmail == QString::null && mPendingName == QString::null)
181 slotwriteMail2( QString () ); 181 slotwriteMail2( QString () );
182 else { 182 else {
183 if ( mPendingEmail == QString::null ) 183 if ( mPendingEmail == QString::null )
184 slotwriteMail2( mPendingName ); 184 slotwriteMail2( mPendingName );
185 else 185 else
186 slotwriteMail( mPendingName, mPendingEmail ); 186 slotwriteMail( mPendingName, mPendingEmail );
187 } 187 }
188 //slotwriteMail(0l,0l); 188 //slotwriteMail(0l,0l);
189} 189}
190 190
191void OpieMail::slotSendQueued() 191void OpieMail::slotSendQueued()
192{ 192{
193 SMTPaccount *smtp = 0; 193 SMTPaccount *smtp = 0;
194 194
195 QList<Account> list = settings->getAccounts(); 195 QList<Account> list = settings->getAccounts();
196 QList<SMTPaccount> smtpList; 196 QList<SMTPaccount> smtpList;
197 smtpList.setAutoDelete(false); 197 smtpList.setAutoDelete(false);
198 Account *it; 198 Account *it;
199 for ( it = list.first(); it; it = list.next() ) 199 for ( it = list.first(); it; it = list.next() )
200 { 200 {
201 if ( it->getType() == MAILLIB::A_SMTP ) 201 if ( it->getType() == MAILLIB::A_SMTP )
202 { 202 {
203 smtp = static_cast<SMTPaccount *>(it); 203 smtp = static_cast<SMTPaccount *>(it);
204 smtpList.append(smtp); 204 smtpList.append(smtp);
205 } 205 }
206 } 206 }
207 if (smtpList.count()==0) 207 if (smtpList.count()==0)
208 { 208 {
209 QMessageBox::information(0,i18n("Info"),i18n("Define a smtp\n account first!\n")); 209 QMessageBox::information(0,i18n("Info"),i18n("Define a smtp\n account first!\n"));
210 return; 210 return;
211 } 211 }
212 if ( QMessageBox::warning(this, i18n("Sending all mails"), i18n("Do you really want to\nsend all queued mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No ) 212 if ( QMessageBox::warning(this, i18n("Sending all mails"), i18n("Do you really want to\nsend all queued mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No )
213 return; 213 return;
214 if (smtpList.count()==1) 214 if (smtpList.count()==1)
215 { 215 {
216 smtp = smtpList.at(0); 216 smtp = smtpList.at(0);
217 } 217 }
218 else 218 else
219 { 219 {
220 smtp = 0; 220 smtp = 0;
221 selectsmtp selsmtp; 221 selectsmtp selsmtp;
222 selsmtp.setSelectionlist(&smtpList); 222 selsmtp.setSelectionlist(&smtpList);
223 selsmtp.resize( selsmtp.sizeHint() ); 223 selsmtp.resize( selsmtp.sizeHint() );
224 if ( selsmtp.exec() == QDialog::Accepted ) 224 if ( selsmtp.exec() == QDialog::Accepted )
225 { 225 {
226 smtp = selsmtp.selected_smtp(); 226 smtp = selsmtp.selected_smtp();
227 } 227 }
228 } 228 }
229 if (smtp) 229 if (smtp)
230 { 230 {
231 231
232 Global::statusMessage("Sending mails...!"); 232 Global::statusMessage("Sending mails...!");
233 SMTPwrapper * wrap = new SMTPwrapper(smtp); 233 SMTPwrapper * wrap = new SMTPwrapper(smtp);
234 if ( wrap->flushOutbox() ) 234 if ( wrap->flushOutbox() )
235 { 235 {
236 Global::statusMessage("Mails sent!"); 236 Global::statusMessage("Mails sent!");
237 } 237 }
238 delete wrap; 238 delete wrap;
239 } 239 }
240 folderView->refreshOutgoing(); 240 folderView->refreshOutgoing();
241} 241}
242 242
243void OpieMail::slotSearchMails() 243void OpieMail::slotSearchMails()
244{ 244{
245 qDebug("OpieMail::slotSearchMails():not implemented "); 245 qDebug("OpieMail::slotSearchMails():not implemented ");
246} 246}
247void OpieMail::slotEditGlobalSettings()
248{
249 KPimPrefsGlobalDialog gc ( this );
250 gc.exec();
251}
247 252
248void OpieMail::slotEditSettings() 253void OpieMail::slotEditSettings()
249{ 254{
250 255
251 KOPrefsDialog settingsDialog( this, "koprefs", true ); 256 KOPrefsDialog settingsDialog( this, "koprefs", true );
252#ifndef DESKTOP_VERSION 257#ifndef DESKTOP_VERSION
253 settingsDialog.showMaximized(); 258 settingsDialog.showMaximized();
254#endif 259#endif
255 settingsDialog.exec(); 260 settingsDialog.exec();
256 261
257 slotSetCodec( KOPrefs::instance()->mCurrentCodec ); 262 slotSetCodec( KOPrefs::instance()->mCurrentCodec );
258 // KApplication::execDialog(settingsDialog); 263 // KApplication::execDialog(settingsDialog);
259} 264}
260 265
261void OpieMail::slotEditAccounts() 266void OpieMail::slotEditAccounts()
262{ 267{
263 EditAccounts eaDialog( settings, this, 0, true ); 268 EditAccounts eaDialog( settings, this, 0, true );
264 eaDialog.slotAdjustColumns(); 269 eaDialog.slotAdjustColumns();
265#ifndef DESKTOP_VERSION 270#ifndef DESKTOP_VERSION
266 eaDialog.showMaximized(); 271 eaDialog.showMaximized();
267#endif 272#endif
268 eaDialog.exec(); 273 eaDialog.exec();
269 if ( settings ) delete settings; 274 if ( settings ) delete settings;
270 settings = new Settings(); 275 settings = new Settings();
271 276
272 folderView->populate( settings->getAccounts() ); 277 folderView->populate( settings->getAccounts() );
273} 278}
274void OpieMail::replyMail() 279void OpieMail::replyMail()
275{ 280{
276 281
277 QListViewItem*item = mailView->currentItem(); 282 QListViewItem*item = mailView->currentItem();
278 if (!item) return; 283 if (!item) return;
279 RecMailP mail = ((MailListViewItem*)item)->data(); 284 RecMailP mail = ((MailListViewItem*)item)->data();
280 RecBodyP body = folderView->fetchBody(mail); 285 RecBodyP body = folderView->fetchBody(mail);
281 286
282 QString rtext; 287 QString rtext;
283 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose 288 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose
284 .arg( mail->getFrom()) 289 .arg( mail->getFrom())
285 .arg( mail->getDate()); 290 .arg( mail->getDate());
286 291
287 QString text = body->Bodytext(); 292 QString text = body->Bodytext();
288 QStringList lines = QStringList::split(QRegExp("\\n"), text); 293 QStringList lines = QStringList::split(QRegExp("\\n"), text);
289 QStringList::Iterator it; 294 QStringList::Iterator it;
290 for (it = lines.begin(); it != lines.end(); it++) 295 for (it = lines.begin(); it != lines.end(); it++)
291 { 296 {
292 rtext += "> " + *it + "\n"; 297 rtext += "> " + *it + "\n";
293 } 298 }
294 rtext += "\n"; 299 rtext += "\n";
295 300
296 QString prefix; 301 QString prefix;
297 if ( mail->getSubject().find(QRegExp("^Re: .*$")) != -1) prefix = ""; 302 if ( mail->getSubject().find(QRegExp("^Re: .*$")) != -1) prefix = "";
298 else prefix = "Re: "; // no i18n on purpose 303 else prefix = "Re: "; // no i18n on purpose
299 304
300 Settings *settings = new Settings(); 305 Settings *settings = new Settings();
301 ComposeMail composer( settings ,this, 0, true); 306 ComposeMail composer( settings ,this, 0, true);
302 if (mail->Replyto().isEmpty()) { 307 if (mail->Replyto().isEmpty()) {
303 composer.setTo( mail->getFrom()); 308 composer.setTo( mail->getFrom());
304 } else { 309 } else {
305 composer.setTo( mail->Replyto()); 310 composer.setTo( mail->Replyto());
306 } 311 }
307 composer.setSubject( prefix + mail->getSubject()); 312 composer.setSubject( prefix + mail->getSubject());
308 composer.setMessage( rtext ); 313 composer.setMessage( rtext );
309 composer.setInReplyTo( mail->Msgid()); 314 composer.setInReplyTo( mail->Msgid());
310 composer.setCharset( body->getCharset() ); 315 composer.setCharset( body->getCharset() );
311 316
312 mCurrentComposer = &composer; 317 mCurrentComposer = &composer;
313 if ( QDialog::Accepted == KApplication::execDialog( &composer ) ) 318 if ( QDialog::Accepted == KApplication::execDialog( &composer ) )
314 { 319 {
315 mail->Wrapper()->answeredMail(mail); 320 mail->Wrapper()->answeredMail(mail);
316 } 321 }
317 mCurrentComposer = 0; 322 mCurrentComposer = 0;
318 folderView->refreshOutgoing(); 323 folderView->refreshOutgoing();
319 delete settings; 324 delete settings;
320 325
321} 326}
322void OpieMail::closeViewMail(ViewMail * vm) 327void OpieMail::closeViewMail(ViewMail * vm)
323{ 328{
324 vm->hide(); 329 vm->hide();
325} 330}
326 331
327void OpieMail::slotDownloadMail( ) 332void OpieMail::slotDownloadMail( )
328{ 333{
329 QListViewItem*item = mailView->currentItem(); 334 QListViewItem*item = mailView->currentItem();
330 if (!item ) { 335 if (!item ) {
331 Global::statusMessage("Error: No item slected!"); 336 Global::statusMessage("Error: No item slected!");
332 return; 337 return;
333 } 338 }
334 RecMailP mail = ((MailListViewItem*)item)->data(); 339 RecMailP mail = ((MailListViewItem*)item)->data();
335 Account * acc = mail->Wrapper()->getAccount(); 340 Account * acc = mail->Wrapper()->getAccount();
336 if ( !acc ) { 341 if ( !acc ) {
337 Global::statusMessage("Mail is already stored locally!"); 342 Global::statusMessage("Mail is already stored locally!");
338 return; 343 return;
339 } 344 }
340 QString lfName = acc->getLocalFolder(); 345 QString lfName = acc->getLocalFolder();
341 //qDebug("local folder " + lfName ); 346 //qDebug("local folder " + lfName );
342 if ( lfName.isEmpty() ) 347 if ( lfName.isEmpty() )
343 lfName = acc->getAccountName(); 348 lfName = acc->getAccountName();
344 AbstractMail* targetMail = folderView->allAccounts()[0]->getWrapper(); 349 AbstractMail* targetMail = folderView->allAccounts()[0]->getWrapper();
345 //qDebug("target %d %d ",targetMail,mail->Wrapper() ); 350 //qDebug("target %d %d ",targetMail,mail->Wrapper() );
346 if ( targetMail == mail->Wrapper() ) { 351 if ( targetMail == mail->Wrapper() ) {
347 Global::statusMessage("Mail is already locally stored!"); 352 Global::statusMessage("Mail is already locally stored!");
348 return; 353 return;
349 } 354 }
350 if ( !targetMail->createMbox(lfName)) { 355 if ( !targetMail->createMbox(lfName)) {
351 Global::statusMessage("Error creating folder!"); 356 Global::statusMessage("Error creating folder!");
352 return; 357 return;
353 } 358 }
354 Global::statusMessage("Fetching mail...please wait!"); 359 Global::statusMessage("Fetching mail...please wait!");
355 qApp->processEvents(); 360 qApp->processEvents();
356 encodedString*st = 0; 361 encodedString*st = 0;
357 st = mail->Wrapper()->fetchRawBody(mail); 362 st = mail->Wrapper()->fetchRawBody(mail);
358 if ( st ) { 363 if ( st ) {
359 targetMail->storeMessage(st->Content(),st->Length(),lfName); 364 targetMail->storeMessage(st->Content(),st->Length(),lfName);
360 Global::statusMessage("Mail stored in "+ lfName); 365 Global::statusMessage("Mail stored in "+ lfName);
361 delete st; 366 delete st;
362 } else { 367 } else {
363 Global::statusMessage("Error: Cannot fetch mail!"); 368 Global::statusMessage("Error: Cannot fetch mail!");
364 } 369 }
365} 370}
366 371
367 372
368void OpieMail::deleteAndDisplayNextMail(ViewMail * vm) 373void OpieMail::deleteAndDisplayNextMail(ViewMail * vm)
369{ 374{
370 QListViewItem*item = mailView->currentItem(); 375 QListViewItem*item = mailView->currentItem();
371 if (!item ) { 376 if (!item ) {
372 closeViewMail(vm); 377 closeViewMail(vm);
373 return; 378 return;
374 } 379 }
375 RecMailP mail = ((MailListViewItem*)item)->data(); 380 RecMailP mail = ((MailListViewItem*)item)->data();
376 mail->Wrapper()->deleteMail( mail ); 381 mail->Wrapper()->deleteMail( mail );
377 item = item->itemBelow(); 382 item = item->itemBelow();
378 if (!item ) { 383 if (!item ) {
379 closeViewMail(vm); 384 closeViewMail(vm);
380 return; 385 return;
381 } 386 }
382 mailView->setCurrentItem(item); 387 mailView->setCurrentItem(item);
383 mail = ((MailListViewItem*)item)->data(); 388 mail = ((MailListViewItem*)item)->data();
384 RecBodyP body = folderView->fetchBody(mail); 389 RecBodyP body = folderView->fetchBody(mail);
385 vm->setBody( body ); 390 vm->setBody( body );
386 vm->setMail( mail ); 391 vm->setMail( mail );
387} 392}
388void OpieMail::displayNextMail(ViewMail * vm) 393void OpieMail::displayNextMail(ViewMail * vm)
389{ 394{
390 QListViewItem*item = mailView->currentItem(); 395 QListViewItem*item = mailView->currentItem();
391 if (!item) return; 396 if (!item) return;
392 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() ); 397 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() );
393 item = item->itemBelow(); 398 item = item->itemBelow();
394 if (!item) { 399 if (!item) {
395 vm->setCaption(i18n("End of List" )); 400 vm->setCaption(i18n("End of List" ));
396 return; 401 return;
397 } 402 }
398 mailView->setCurrentItem(item); 403 mailView->setCurrentItem(item);
399 RecMailP mail = ((MailListViewItem*)item)->data(); 404 RecMailP mail = ((MailListViewItem*)item)->data();
400 RecBodyP body = folderView->fetchBody(mail); 405 RecBodyP body = folderView->fetchBody(mail);
401 vm->setBody( body ); 406 vm->setBody( body );
402 vm->setMail( mail ); 407 vm->setMail( mail );
403} 408}
404void OpieMail::displayMail() 409void OpieMail::displayMail()
405{ 410{
406 QListViewItem*item = mailView->currentItem(); 411 QListViewItem*item = mailView->currentItem();
407 if (!item) return; 412 if (!item) return;
408 RecMailP mail = ((MailListViewItem*)item)->data(); 413 RecMailP mail = ((MailListViewItem*)item)->data();
409 RecBodyP body = folderView->fetchBody(mail); 414 RecBodyP body = folderView->fetchBody(mail);
410 ViewMail readMail( this,"", Qt::WType_Modal ); 415 ViewMail readMail( this,"", Qt::WType_Modal );
411 readMail.setBody( body ); 416 readMail.setBody( body );
412 readMail.setMail( mail ); 417 readMail.setMail( mail );
413#ifndef DESKTOP_VERSION 418#ifndef DESKTOP_VERSION
414 readMail.showMaximized(); 419 readMail.showMaximized();
415#else 420#else
416 readMail.resize( 640, 480); 421 readMail.resize( 640, 480);
417#endif 422#endif
418 connect( &readMail,SIGNAL( showNextMail(ViewMail *) ), this, SLOT( displayNextMail(ViewMail *) ) ); 423 connect( &readMail,SIGNAL( showNextMail(ViewMail *) ), this, SLOT( displayNextMail(ViewMail *) ) );
419 connect( &readMail,SIGNAL( deleteAndDisplayNextMail(ViewMail *) ), this, SLOT(deleteAndDisplayNextMail(ViewMail *) ) ); 424 connect( &readMail,SIGNAL( deleteAndDisplayNextMail(ViewMail *) ), this, SLOT(deleteAndDisplayNextMail(ViewMail *) ) );
420 connect( &readMail,SIGNAL( signalDownloadMail() ), this, SLOT( slotDownloadMail() ) ); 425 connect( &readMail,SIGNAL( signalDownloadMail() ), this, SLOT( slotDownloadMail() ) );
421 426
422 readMail.exec(); 427 readMail.exec();
423 428
424 if ( readMail.deleted ) 429 if ( readMail.deleted )
425 { 430 {
426 folderView->refreshCurrent(); 431 folderView->refreshCurrent();
427 } 432 }
428 else 433 else
429 { 434 {
430 QListViewItem*item = mailView->currentItem(); 435 QListViewItem*item = mailView->currentItem();
431 if (item) 436 if (item)
432 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() ); 437 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() );
433 } 438 }
434} 439}
435void OpieMail::slotGetAllMail() 440void OpieMail::slotGetAllMail()
436{ 441{
437 QListViewItem * item = folderView->firstChild(); 442 QListViewItem * item = folderView->firstChild();
438 while ( item ){ 443 while ( item ){
439 ((AccountViewItem *)item)->contextMenuSelected( 101 ); 444 ((AccountViewItem *)item)->contextMenuSelected( 101 );
440 item = item->nextSibling (); 445 item = item->nextSibling ();
441 } 446 }
442} 447}
443void OpieMail::slotGetMail() 448void OpieMail::slotGetMail()
444{ 449{
445 QListViewItem * item = folderView->currentItem(); 450 QListViewItem * item = folderView->currentItem();
446 if ( ! item ) return; 451 if ( ! item ) return;
447 ((AccountViewItem *)item)->contextMenuSelected( 101 ); 452 ((AccountViewItem *)item)->contextMenuSelected( 101 );
448} 453}
449void OpieMail::slotDeleteMail() 454void OpieMail::slotDeleteMail()
450{ 455{
451 if (!mailView->currentItem()) return; 456 if (!mailView->currentItem()) return;
452 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data(); 457 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data();
453 if ( QMessageBox::warning(this, i18n("Delete Mail"), QString( i18n("<p>Do you really want to delete this mail? <br><br>" ) + mail->getFrom() + " - " + mail->getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 458 if ( QMessageBox::warning(this, i18n("Delete Mail"), QString( i18n("<p>Do you really want to delete this mail? <br><br>" ) + mail->getFrom() + " - " + mail->getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
454 { 459 {
455 mail->Wrapper()->deleteMail( mail ); 460 mail->Wrapper()->deleteMail( mail );
456 folderView->refreshCurrent(); 461 folderView->refreshCurrent();
457 } 462 }
458} 463}
459void OpieMail::slotDeleteAllMail() 464void OpieMail::slotDeleteAllMail()
460{ 465{
461 466
462 QValueList<RecMailP> t; 467 QValueList<RecMailP> t;
463 if ( QMessageBox::warning(this, i18n("Delete All Mails"), i18n("Do you really want to delete\nall selected mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 468 if ( QMessageBox::warning(this, i18n("Delete All Mails"), i18n("Do you really want to delete\nall selected mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
464 { 469 {
465 MailListViewItem* item = (MailListViewItem*)mailView->firstChild (); 470 MailListViewItem* item = (MailListViewItem*)mailView->firstChild ();
466 while ( item ) { 471 while ( item ) {
467 if ( item->isSelected() ) { 472 if ( item->isSelected() ) {
468 t.append( item->data() ); 473 t.append( item->data() );
469 } 474 }
470 item = (MailListViewItem*)item->nextSibling(); 475 item = (MailListViewItem*)item->nextSibling();
471 } 476 }
472 } 477 }
473 else 478 else
474 return; 479 return;
475 if ( t.count() == 0 ) 480 if ( t.count() == 0 )
476 return; 481 return;
477 RecMailP mail = t.first(); 482 RecMailP mail = t.first();
478 mail->Wrapper()->deleteMailList(t); 483 mail->Wrapper()->deleteMailList(t);
479 folderView->refreshCurrent(); 484 folderView->refreshCurrent();
480 485
481 486
482} 487}
483void OpieMail::clearSelection() 488void OpieMail::clearSelection()
484{ 489{
485 mailView->clearSelection(); 490 mailView->clearSelection();
486 491
487} 492}
488 493
489void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int ) 494void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int )
490{ 495{
491 if (!mailView->currentItem()) return; 496 if (!mailView->currentItem()) return;
492 MAILLIB::ATYPE mailtype = ((MailListViewItem*)mailView->currentItem() )->wrapperType(); 497 MAILLIB::ATYPE mailtype = ((MailListViewItem*)mailView->currentItem() )->wrapperType();
493 /* just the RIGHT button - or hold on pda */ 498 /* just the RIGHT button - or hold on pda */
494 if (button!=2) {return;} 499 if (button!=2) {return;}
495 if (!item) return; 500 if (!item) return;
496 QPopupMenu *m = new QPopupMenu(0); 501 QPopupMenu *m = new QPopupMenu(0);
497 if (m) 502 if (m)
498 { 503 {
499 if (mailtype==MAILLIB::A_NNTP) { 504 if (mailtype==MAILLIB::A_NNTP) {
500 m->insertItem(i18n("Read this posting"),this,SLOT(displayMail())); 505 m->insertItem(i18n("Read this posting"),this,SLOT(displayMail()));
501 m->insertItem(i18n("Copy this posting"),this,SLOT(slotMoveCopyMail())); 506 m->insertItem(i18n("Copy this posting"),this,SLOT(slotMoveCopyMail()));
502 m->insertSeparator(); 507 m->insertSeparator();
diff --git a/kmicromail/opiemail.h b/kmicromail/opiemail.h
index 4f75b3f..48c5dda 100644
--- a/kmicromail/opiemail.h
+++ b/kmicromail/opiemail.h
@@ -1,66 +1,67 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2#ifndef OPIEMAIL_H 2#ifndef OPIEMAIL_H
3#define OPIEMAIL_H 3#define OPIEMAIL_H
4 4
5#include "mainwindow.h" 5#include "mainwindow.h"
6#include <libmailwrapper/settings.h> 6#include <libmailwrapper/settings.h>
7 7
8#include <opie2/osmartpointer.h> 8#include <opie2/osmartpointer.h>
9#include <libmailwrapper/mailtypes.h> 9#include <libmailwrapper/mailtypes.h>
10#include <viewmail.h> 10#include <viewmail.h>
11#include <qstringlist.h> 11#include <qstringlist.h>
12 12
13class ComposeMail; 13class ComposeMail;
14 14
15class OpieMail : public MainWindow 15class OpieMail : public MainWindow
16{ 16{
17 Q_OBJECT 17 Q_OBJECT
18 18
19public: 19public:
20 OpieMail( QWidget *parent = 0, const char *name = 0 ); 20 OpieMail( QWidget *parent = 0, const char *name = 0 );
21 virtual ~OpieMail(); 21 virtual ~OpieMail();
22 static QString appName() { return QString::fromLatin1("kopiemail"); } 22 static QString appName() { return QString::fromLatin1("kopiemail"); }
23 23
24public slots: 24public slots:
25 virtual void slotwriteMail(const QString&name,const QString&email); 25 virtual void slotwriteMail(const QString&name,const QString&email);
26 virtual void slotwriteMail2(const QString&nameemail); 26 virtual void slotwriteMail2(const QString&nameemail);
27 virtual void slotComposeMail(); 27 virtual void slotComposeMail();
28 virtual void slotExtAppHandler(); 28 virtual void slotExtAppHandler();
29 virtual void appMessage(const QCString &msg, const QByteArray &data); 29 virtual void appMessage(const QCString &msg, const QByteArray &data);
30 virtual void message(const QCString &msg, const QByteArray &data); 30 virtual void message(const QCString &msg, const QByteArray &data);
31 void insertAttendees(const QString&, const QStringList& namelist, const QStringList& emaillist, const QStringList& uidlist); 31 void insertAttendees(const QString&, const QStringList& namelist, const QStringList& emaillist, const QStringList& uidlist);
32protected slots: 32protected slots:
33 virtual void deleteAndDisplayNextMail(ViewMail * vm); 33 virtual void deleteAndDisplayNextMail(ViewMail * vm);
34 virtual void displayNextMail(ViewMail * vm); 34 virtual void displayNextMail(ViewMail * vm);
35 virtual void slotSendQueued(); 35 virtual void slotSendQueued();
36 virtual void slotSearchMails(); 36 virtual void slotSearchMails();
37 virtual void slotEditSettings(); 37 virtual void slotEditSettings();
38 virtual void slotEditGlobalSettings();
38 virtual void slotEditAccounts(); 39 virtual void slotEditAccounts();
39 virtual void displayMail(); 40 virtual void displayMail();
40 virtual void replyMail(); 41 virtual void replyMail();
41 virtual void slotDeleteMail(); 42 virtual void slotDeleteMail();
42 virtual void slotGetMail(); 43 virtual void slotGetMail();
43 virtual void slotGetAllMail(); 44 virtual void slotGetAllMail();
44 virtual void slotDeleteAllMail(); 45 virtual void slotDeleteAllMail();
45 virtual void mailHold(int, QListViewItem *,const QPoint&,int); 46 virtual void mailHold(int, QListViewItem *,const QPoint&,int);
46 virtual void slotShowFolders( bool show ); 47 virtual void slotShowFolders( bool show );
47 virtual void refreshMailView(const QValueList<RecMailP>&); 48 virtual void refreshMailView(const QValueList<RecMailP>&);
48 virtual void mailLeftClicked( QListViewItem * ); 49 virtual void mailLeftClicked( QListViewItem * );
49 virtual void slotMoveCopyMail(); 50 virtual void slotMoveCopyMail();
50 virtual void slotMoveCopyAllMail(); 51 virtual void slotMoveCopyAllMail();
51 virtual void reEditMail(); 52 virtual void reEditMail();
52 void clearSelection(); 53 void clearSelection();
53 void slotDownloadMail(); 54 void slotDownloadMail();
54private: 55private:
55 ComposeMail* mCurrentComposer; 56 ComposeMail* mCurrentComposer;
56 void closeViewMail(ViewMail * vm); 57 void closeViewMail(ViewMail * vm);
57 QString mPendingEmail; 58 QString mPendingEmail;
58 QString mPendingName; 59 QString mPendingName;
59 QByteArray mPendingData; 60 QByteArray mPendingData;
60 QCString mPendingMessage; 61 QCString mPendingMessage;
61 Settings *settings; 62 Settings *settings;
62 QTextBrowser * tb; 63 QTextBrowser * tb;
63 64
64}; 65};
65 66
66#endif 67#endif
diff --git a/microkde/kdialogbase.cpp b/microkde/kdialogbase.cpp
index 11635e1..d5c7e61 100644
--- a/microkde/kdialogbase.cpp
+++ b/microkde/kdialogbase.cpp
@@ -33,264 +33,269 @@ KDialogBase::KDialogBase( QWidget *parent, const char *name, bool modal,
33KDialogBase::KDialogBase( int dialogFace, const QString &caption, 33KDialogBase::KDialogBase( int dialogFace, const QString &caption,
34 int buttonMask, ButtonCode defaultButton, 34 int buttonMask, ButtonCode defaultButton,
35 QWidget *parent, const char *name, bool modal, 35 QWidget *parent, const char *name, bool modal,
36 bool separator, 36 bool separator,
37 const QString &user1, 37 const QString &user1,
38 const QString &user2, 38 const QString &user2,
39 const QString &user3) : 39 const QString &user3) :
40 KDialog( parent, name, modal ) 40 KDialog( parent, name, modal )
41{ 41{
42 init( caption, buttonMask, user1, user2 ); 42 init( caption, buttonMask, user1, user2 );
43 if (findButton( defaultButton ) ) { 43 if (findButton( defaultButton ) ) {
44 (findButton( defaultButton ) )->setFocus(); 44 (findButton( defaultButton ) )->setFocus();
45 (findButton( defaultButton ) )->setDefault( true ); 45 (findButton( defaultButton ) )->setDefault( true );
46 } 46 }
47 47
48} 48}
49 49
50KDialogBase::~KDialogBase() 50KDialogBase::~KDialogBase()
51{ 51{
52} 52}
53 53
54void KDialogBase::init( const QString &caption, int buttonMask, 54void KDialogBase::init( const QString &caption, int buttonMask,
55 const QString &user1 ,const QString &user2 ) 55 const QString &user1 ,const QString &user2 )
56{ 56{
57 mMainWidget = 0; 57 mMainWidget = 0;
58 mTabWidget = 0; 58 mTabWidget = 0;
59 mPlainPage = 0; 59 mPlainPage = 0;
60 mTopLayout = 0; 60 mTopLayout = 0;
61 if ( !caption.isEmpty() ) { 61 if ( !caption.isEmpty() ) {
62 setCaption( caption ); 62 setCaption( caption );
63 } 63 }
64 64
65 if ( buttonMask & User1 ) { 65 if ( buttonMask & User1 ) {
66 mUser1Button = new QPushButton( user1, this ); 66 mUser1Button = new QPushButton( user1, this );
67 connect( mUser1Button, SIGNAL( clicked() ), SLOT( slotUser1() ) ); 67 connect( mUser1Button, SIGNAL( clicked() ), SLOT( slotUser1() ) );
68 } else { 68 } else {
69 mUser1Button = 0; 69 mUser1Button = 0;
70 } 70 }
71 if ( buttonMask & User2 ) { 71 if ( buttonMask & User2 ) {
72 mUser2Button = new QPushButton( user2, this ); 72 mUser2Button = new QPushButton( user2, this );
73 connect( mUser2Button, SIGNAL( clicked() ), SLOT( slotUser2() ) ); 73 connect( mUser2Button, SIGNAL( clicked() ), SLOT( slotUser2() ) );
74 } else { 74 } else {
75 mUser2Button = 0; 75 mUser2Button = 0;
76 } 76 }
77 77
78 if ( buttonMask & Ok ) { 78 if ( buttonMask & Ok ) {
79 mOkButton = new QPushButton( i18n("Ok"), this ); 79 mOkButton = new QPushButton( i18n("Ok"), this );
80 connect( mOkButton, SIGNAL( clicked() ), SLOT( slotOk() ) ); 80 connect( mOkButton, SIGNAL( clicked() ), SLOT( slotOk() ) );
81 //mOkButton->setDefault( true ); 81 //mOkButton->setDefault( true );
82 } else { 82 } else {
83 mOkButton = 0; 83 mOkButton = 0;
84 } 84 }
85 if ( buttonMask & Default ) { 85 if ( buttonMask & Default ) {
86 mDefaultButton = new QPushButton( i18n("Default"), this ); 86 mDefaultButton = new QPushButton( i18n("Default"), this );
87 connect( mDefaultButton, SIGNAL( clicked() ), SIGNAL( defaultClicked() ) ); 87 connect( mDefaultButton, SIGNAL( clicked() ), SIGNAL( defaultClicked() ) );
88 } else { 88 } else {
89 mDefaultButton = 0; 89 mDefaultButton = 0;
90 } 90 }
91 91
92 if ( buttonMask & Apply ) { 92 if ( buttonMask & Apply ) {
93 mApplyButton = new QPushButton( i18n("Apply"), this ); 93 mApplyButton = new QPushButton( i18n("Apply"), this );
94 connect( mApplyButton, SIGNAL( clicked() ), SLOT( slotApply() ) ); 94 connect( mApplyButton, SIGNAL( clicked() ), SLOT( slotApply() ) );
95 } else { 95 } else {
96 mApplyButton = 0; 96 mApplyButton = 0;
97 } 97 }
98 98
99 if ( buttonMask & Cancel ) { 99 if ( buttonMask & Cancel ) {
100 mCancelButton = new QPushButton( i18n("Cancel"), this ); 100 mCancelButton = new QPushButton( i18n("Cancel"), this );
101 connect( mCancelButton, SIGNAL( clicked() ), SLOT( slotCancel() ) ); 101 connect( mCancelButton, SIGNAL( clicked() ), SLOT( slotCancel() ) );
102 } else { 102 } else {
103 mCancelButton = 0; 103 mCancelButton = 0;
104 } 104 }
105 105
106 if ( buttonMask & Close ) { 106 if ( buttonMask & Close ) {
107 mCloseButton = new QPushButton( i18n("Close"), this ); 107 mCloseButton = new QPushButton( i18n("Close"), this );
108 connect( mCloseButton, SIGNAL( clicked() ), SLOT( slotClose() ) ); 108 connect( mCloseButton, SIGNAL( clicked() ), SLOT( slotClose() ) );
109 } else { 109 } else {
110 mCloseButton = 0; 110 mCloseButton = 0;
111 } 111 }
112} 112}
113 113
114QTabWidget *KDialogBase::tabWidget() 114QTabWidget *KDialogBase::tabWidget()
115{ 115{
116 if ( !mTabWidget ) { 116 if ( !mTabWidget ) {
117 mTabWidget = new QTabWidget( this ); 117 mTabWidget = new QTabWidget( this );
118 setMainWidget( mTabWidget ); 118 setMainWidget( mTabWidget );
119 } 119 }
120 return mTabWidget; 120 return mTabWidget;
121} 121}
122 122
123void KDialogBase::hideButtons() 123void KDialogBase::hideButtons()
124{ 124{
125 if ( mUser1Button ) mUser1Button->hide() ; 125 if ( mUser1Button ) mUser1Button->hide() ;
126 if ( mUser2Button ) mUser2Button->hide() ; 126 if ( mUser2Button ) mUser2Button->hide() ;
127 if ( mOkButton ) mOkButton->hide() ; 127 if ( mOkButton ) mOkButton->hide() ;
128 if ( mApplyButton ) mApplyButton->hide() ; 128 if ( mApplyButton ) mApplyButton->hide() ;
129 if ( mDefaultButton ) mDefaultButton->hide(); 129 if ( mDefaultButton ) mDefaultButton->hide();
130 if ( mCancelButton ) mCancelButton->hide() ; 130 if ( mCancelButton ) mCancelButton->hide() ;
131 if ( mCloseButton ) mCloseButton->hide() ; 131 if ( mCloseButton ) mCloseButton->hide() ;
132 132
133} 133}
134void KDialogBase::initLayout() 134void KDialogBase::initLayout()
135{ 135{
136 136
137 delete mTopLayout; 137 delete mTopLayout;
138 mTopLayout = new QVBoxLayout( this ); 138 mTopLayout = new QVBoxLayout( this );
139 mTopLayout->setMargin( marginHintSmall() ); 139 mTopLayout->setMargin( marginHintSmall() );
140 mTopLayout->setSpacing( spacingHintSmall() ); 140 mTopLayout->setSpacing( spacingHintSmall() );
141 141
142 mTopLayout->addWidget( mMainWidget ); 142 mTopLayout->addWidget( mMainWidget );
143 143
144 QBoxLayout *buttonLayout = new QHBoxLayout; 144 QBoxLayout *buttonLayout = new QHBoxLayout;
145 mTopLayout->addLayout( buttonLayout ); 145 mTopLayout->addLayout( buttonLayout );
146 146
147 if ( mUser1Button ) buttonLayout->addWidget( mUser1Button ); 147 if ( mUser1Button ) buttonLayout->addWidget( mUser1Button );
148 if ( mUser2Button ) buttonLayout->addWidget( mUser2Button ); 148 if ( mUser2Button ) buttonLayout->addWidget( mUser2Button );
149 if ( mOkButton ) buttonLayout->addWidget( mOkButton ); 149 if ( mOkButton ) buttonLayout->addWidget( mOkButton );
150 if ( mApplyButton ) buttonLayout->addWidget( mApplyButton ); 150 if ( mApplyButton ) buttonLayout->addWidget( mApplyButton );
151 if ( mDefaultButton ) buttonLayout->addWidget( mDefaultButton ); 151 if ( mDefaultButton ) buttonLayout->addWidget( mDefaultButton );
152 if ( mCancelButton ) buttonLayout->addWidget( mCancelButton ); 152 if ( mCancelButton ) buttonLayout->addWidget( mCancelButton );
153 if ( mCloseButton ) buttonLayout->addWidget( mCloseButton ); 153 if ( mCloseButton ) buttonLayout->addWidget( mCloseButton );
154 buttonLayout->setMargin( marginHintSmall() ); 154 buttonLayout->setMargin( marginHintSmall() );
155 buttonLayout->setSpacing( spacingHintSmall() ); 155 buttonLayout->setSpacing( spacingHintSmall() );
156} 156}
157 157
158QFrame *KDialogBase::addPage( const QString &name ) 158QFrame *KDialogBase::addPage( const QString &name )
159{ 159{
160// kdDebug() << "KDialogBase::addPage(): " << name << endl; 160// kdDebug() << "KDialogBase::addPage(): " << name << endl;
161 QFrame *frame = new QFrame( tabWidget() ); 161 QFrame *frame = new QFrame( tabWidget() );
162 tabWidget()->addTab( frame, name ); 162 tabWidget()->addTab( frame, name );
163 return frame; 163 return frame;
164} 164}
165 165
166QFrame *KDialogBase::addPage( const QString &name, int, const QPixmap & ) 166QFrame *KDialogBase::addPage( const QString &name, int, const QPixmap & )
167{ 167{
168 return addPage( name ); 168 return addPage( name );
169} 169}
170 170
171 171
172void KDialogBase::setMainWidget( QWidget *widget ) 172void KDialogBase::setMainWidget( QWidget *widget )
173{ 173{
174 kdDebug() << "KDialogBase::setMainWidget()" << endl; 174 kdDebug() << "KDialogBase::setMainWidget()" << endl;
175 175
176 mMainWidget = widget; 176 mMainWidget = widget;
177 initLayout(); 177 initLayout();
178} 178}
179 179
180void KDialogBase::setButtonText( ButtonCode id, const QString &text ) 180void KDialogBase::setButtonText( ButtonCode id, const QString &text )
181{ 181{
182 QPushButton *button = findButton( id ); 182 QPushButton *button = findButton( id );
183 if ( button ) { 183 if ( button ) {
184 button->setText( text ); 184 button->setText( text );
185 } 185 }
186} 186}
187 187
188void KDialogBase::enableButton( ButtonCode id, bool state ) 188void KDialogBase::enableButton( ButtonCode id, bool state )
189{ 189{
190 QPushButton *button = findButton( id ); 190 QPushButton *button = findButton( id );
191 if ( button ) { 191 if ( button ) {
192 button->setEnabled( state ); 192 button->setEnabled( state );
193 } 193 }
194} 194}
195 195
196QPushButton *KDialogBase::findButton( ButtonCode id ) 196QPushButton *KDialogBase::findButton( ButtonCode id )
197{ 197{
198 QPushButton *button = 0; 198 QPushButton *button = 0;
199 switch ( id ) { 199 switch ( id ) {
200 case Ok: 200 case Ok:
201 button = mOkButton; 201 button = mOkButton;
202 break; 202 break;
203 case Apply: 203 case Apply:
204 button = mApplyButton; 204 button = mApplyButton;
205 break; 205 break;
206 case User1: 206 case User1:
207 button = mUser1Button; 207 button = mUser1Button;
208 break; 208 break;
209 case User2: 209 case User2:
210 button = mUser2Button; 210 button = mUser2Button;
211 break; 211 break;
212 case Cancel: 212 case Cancel:
213 button = mCancelButton; 213 button = mCancelButton;
214 break; 214 break;
215 case Default: 215 case Default:
216 button = mDefaultButton; 216 button = mDefaultButton;
217 break; 217 break;
218 case Close: 218 case Close:
219 button = mCloseButton; 219 button = mCloseButton;
220 break; 220 break;
221 default: 221 default:
222 break; 222 break;
223 } 223 }
224 return button; 224 return button;
225} 225}
226 226
227void KDialogBase::enableButtonOK( bool state ) 227void KDialogBase::enableButtonOK( bool state )
228{ 228{
229 enableButton( Ok, state ); 229 enableButton( Ok, state );
230} 230}
231 231
232void KDialogBase::enableButtonApply( bool state ) 232void KDialogBase::enableButtonApply( bool state )
233{ 233{
234 enableButton( Apply, state ); 234 enableButton( Apply, state );
235} 235}
236 236
237void KDialogBase::showButton( ButtonCode id, bool show ) 237void KDialogBase::showButton( ButtonCode id, bool show )
238{ 238{
239 QPushButton *button = findButton( id ); 239 QPushButton *button = findButton( id );
240 if ( button ) { 240 if ( button ) {
241 if ( show ) button->show(); 241 if ( show ) button->show();
242 else button->hide(); 242 else button->hide();
243 } 243 }
244} 244}
245 245
246int KDialogBase::pageIndex( QWidget *widget ) const 246int KDialogBase::pageIndex( QWidget *widget ) const
247{ 247{
248 return 0; 248 return 0;
249} 249}
250 250
251 251
252bool KDialogBase::showPage( int index ) 252bool KDialogBase::showPage( int index )
253{ 253{
254 tabWidget()->setCurrentPage( index );return false; 254 tabWidget()->setCurrentPage( index );return false;
255} 255}
256 256
257QFrame *KDialogBase::plainPage() 257QFrame *KDialogBase::plainPage()
258{ 258{
259 if ( !mPlainPage ) { 259 if ( !mPlainPage ) {
260 mPlainPage = new QFrame( this ); 260 mPlainPage = new QFrame( this );
261 setMainWidget( mPlainPage ); 261 setMainWidget( mPlainPage );
262 } 262 }
263 return mPlainPage; 263 return mPlainPage;
264} 264}
265 265
266void KDialogBase::slotOk() 266void KDialogBase::slotOk()
267{ 267{
268 emit okClicked(); 268 emit okClicked();
269 accept(); 269 accept();
270} 270}
271 271
272void KDialogBase::slotApply() 272void KDialogBase::slotApply()
273{ 273{
274 emit applyClicked(); 274 emit applyClicked();
275} 275}
276 276
277void KDialogBase::slotCancel() 277void KDialogBase::slotCancel()
278{ 278{
279 emit cancelClicked(); 279 emit cancelClicked();
280 reject(); 280 reject();
281} 281}
282 282
283void KDialogBase::slotClose() 283void KDialogBase::slotClose()
284{ 284{
285 emit closeClicked(); 285 emit closeClicked();
286 reject(); 286 reject();
287} 287}
288 288
289void KDialogBase::accept ()
290{
291 emit acceptClicked();
292 KDialog::accept();
293}
289void KDialogBase::slotUser1() 294void KDialogBase::slotUser1()
290{ 295{
291 emit user1Clicked(); 296 emit user1Clicked();
292} 297}
293void KDialogBase::slotUser2() 298void KDialogBase::slotUser2()
294{ 299{
295 emit user2Clicked(); 300 emit user2Clicked();
296} 301}
diff --git a/microkde/kdialogbase.h b/microkde/kdialogbase.h
index a2fc2dc..17c186b 100644
--- a/microkde/kdialogbase.h
+++ b/microkde/kdialogbase.h
@@ -1,141 +1,143 @@
1#ifndef MINIKDE_KDIALOGBASE_H 1#ifndef MINIKDE_KDIALOGBASE_H
2#define MINIKDE_KDIALOGBASE_H 2#define MINIKDE_KDIALOGBASE_H
3 3
4#include <qframe.h> 4#include <qframe.h>
5 5
6#include "kdialog.h" 6#include "kdialog.h"
7 7
8class QPushButton; 8class QPushButton;
9class QLayout; 9class QLayout;
10class QTabWidget; 10class QTabWidget;
11class QBoxLayout; 11class QBoxLayout;
12 12
13class KDialogBase : public KDialog 13class KDialogBase : public KDialog
14{ 14{
15 Q_OBJECT 15 Q_OBJECT
16 public: 16 public:
17 enum ButtonCode 17 enum ButtonCode
18 { 18 {
19 Help = 0x00000001, 19 Help = 0x00000001,
20 Default = 0x00000002, 20 Default = 0x00000002,
21 Ok = 0x00000004, 21 Ok = 0x00000004,
22 Apply = 0x00000008, 22 Apply = 0x00000008,
23 Try = 0x00000010, 23 Try = 0x00000010,
24 Cancel = 0x00000020, 24 Cancel = 0x00000020,
25 Close = 0x00000040, 25 Close = 0x00000040,
26 User1 = 0x00000080, 26 User1 = 0x00000080,
27 User2 = 0x00000100, 27 User2 = 0x00000100,
28 User3 = 0x00000200, 28 User3 = 0x00000200,
29 No = 0x00000080, 29 No = 0x00000080,
30 Yes = 0x00000100, 30 Yes = 0x00000100,
31 Details = 0x00000400, 31 Details = 0x00000400,
32 Filler = 0x40000000, 32 Filler = 0x40000000,
33 Stretch = 0x80000000 33 Stretch = 0x80000000
34 }; 34 };
35 35
36 enum DialogType 36 enum DialogType
37 { 37 {
38 TreeList, 38 TreeList,
39 Tabbed, 39 Tabbed,
40 Plain, 40 Plain,
41 Swallow, 41 Swallow,
42 IconList 42 IconList
43 }; 43 };
44 44
45 KDialogBase(); 45 KDialogBase();
46 KDialogBase( QWidget *parent=0, const char *name=0, bool modal=true, 46 KDialogBase( QWidget *parent=0, const char *name=0, bool modal=true,
47 const QString &caption=QString::null, 47 const QString &caption=QString::null,
48 int buttonMask=Ok|Apply|Cancel, ButtonCode defaultButton=Ok, 48 int buttonMask=Ok|Apply|Cancel, ButtonCode defaultButton=Ok,
49 bool separator=false, 49 bool separator=false,
50 const QString &user1=QString::null, 50 const QString &user1=QString::null,
51 const QString &user2=QString::null, 51 const QString &user2=QString::null,
52 const QString &user3=QString::null); 52 const QString &user3=QString::null);
53 KDialogBase( int dialogFace, const QString &caption, 53 KDialogBase( int dialogFace, const QString &caption,
54 int buttonMask, ButtonCode defaultButton, 54 int buttonMask, ButtonCode defaultButton,
55 QWidget *parent=0, const char *name=0, bool modal=true, 55 QWidget *parent=0, const char *name=0, bool modal=true,
56 bool separator=false, 56 bool separator=false,
57 const QString &user1=QString::null, 57 const QString &user1=QString::null,
58 const QString &user2=QString::null, 58 const QString &user2=QString::null,
59 const QString &user3=QString::null); 59 const QString &user3=QString::null);
60 virtual ~KDialogBase(); 60 virtual ~KDialogBase();
61 61
62 QFrame *addPage( const QString & ); 62 QFrame *addPage( const QString & );
63 QFrame *addPage( const QString &, int, const QPixmap & ); 63 QFrame *addPage( const QString &, int, const QPixmap & );
64 64
65 void setMainWidget( QWidget *widget ); 65 void setMainWidget( QWidget *widget );
66 66
67 void setButtonText( ButtonCode id, const QString &text ); 67 void setButtonText( ButtonCode id, const QString &text );
68 68
69 void enableButton( ButtonCode id, bool state ); 69 void enableButton( ButtonCode id, bool state );
70 void enableButtonOK( bool state ); 70 void enableButtonOK( bool state );
71 void enableButtonApply( bool state ); 71 void enableButtonApply( bool state );
72 72
73 void showButton( ButtonCode, bool show ); 73 void showButton( ButtonCode, bool show );
74 74
75 int pageIndex( QWidget *widget ) const; 75 int pageIndex( QWidget *widget ) const;
76 76
77 bool showPage( int index ); 77 bool showPage( int index );
78 void hideButtons(); 78 void hideButtons();
79 79
80 QFrame *plainPage(); 80 QFrame *plainPage();
81 81
82 signals: 82 signals:
83 void user1Clicked(); 83 void user1Clicked();
84 void user2Clicked(); 84 void user2Clicked();
85 /** 85 /**
86 * The Apply button was pressed. This signal is only emitted if 86 * The Apply button was pressed. This signal is only emitted if
87 * @ref slotApply() is not replaced. 87 * @ref slotApply() is not replaced.
88 */ 88 */
89 void applyClicked(); 89 void applyClicked();
90 90
91 /** 91 /**
92 * The OK button was pressed. This signal is only emitted if 92 * The OK button was pressed. This signal is only emitted if
93 * @ref slotOk() is not replaced. 93 * @ref slotOk() is not replaced.
94 */ 94 */
95 void okClicked(); 95 void okClicked();
96 96
97 /** 97 /**
98 * The Cancel button was pressed. This signal is only emitted if 98 * The Cancel button was pressed. This signal is only emitted if
99 * @ref slotCancel() is not replaced. 99 * @ref slotCancel() is not replaced.
100 */ 100 */
101 void cancelClicked(); 101 void cancelClicked();
102 102
103 /** 103 /**
104 * The Close button was pressed. This signal is only emitted if 104 * The Close button was pressed. This signal is only emitted if
105 * @ref slotClose() is not replaced. 105 * @ref slotClose() is not replaced.
106 */ 106 */
107 void closeClicked(); 107 void closeClicked();
108 void defaultClicked(); 108 void defaultClicked();
109 109
110 void acceptClicked();
111
110 protected slots: 112 protected slots:
111 virtual void slotOk(); 113 virtual void slotOk();
112 virtual void slotApply(); 114 virtual void slotApply();
113 virtual void slotCancel(); 115 virtual void slotCancel();
114 virtual void slotClose(); 116 virtual void slotClose();
115 virtual void slotUser1(); 117 virtual void slotUser1();
116 virtual void slotUser2(); 118 virtual void slotUser2();
117 119 virtual void accept ();
118 protected: 120 protected:
119 QPushButton *findButton( ButtonCode ); 121 QPushButton *findButton( ButtonCode );
120 QTabWidget *tabWidget(); 122 QTabWidget *tabWidget();
121 123
122 private: 124 private:
123 void init( const QString &caption, int buttonMask, 125 void init( const QString &caption, int buttonMask,
124 const QString &user1=QString::null, const QString &user2=QString::null ); 126 const QString &user1=QString::null, const QString &user2=QString::null );
125 void initLayout(); 127 void initLayout();
126 128
127 QWidget *mMainWidget; 129 QWidget *mMainWidget;
128 QTabWidget *mTabWidget; 130 QTabWidget *mTabWidget;
129 QFrame *mPlainPage; 131 QFrame *mPlainPage;
130 QBoxLayout *mTopLayout; 132 QBoxLayout *mTopLayout;
131 133
132 QPushButton *mUser1Button; 134 QPushButton *mUser1Button;
133 QPushButton *mUser2Button; 135 QPushButton *mUser2Button;
134 QPushButton *mCloseButton; 136 QPushButton *mCloseButton;
135 QPushButton *mOkButton; 137 QPushButton *mOkButton;
136 QPushButton *mApplyButton; 138 QPushButton *mApplyButton;
137 QPushButton *mCancelButton; 139 QPushButton *mCancelButton;
138 QPushButton *mDefaultButton; 140 QPushButton *mDefaultButton;
139}; 141};
140 142
141#endif 143#endif
diff --git a/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h b/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h
index b9ea6b8..2d19680 100644
--- a/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h
+++ b/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h
@@ -1,47 +1,48 @@
1/* 1/*
2 This file is part of PwManager/Pi. 2 This file is part of PwManager/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef KCMPWMCONFIG_H 24#ifndef KCMPWMCONFIG_H
25#define KCMPWMCONFIG_H 25#define KCMPWMCONFIG_H
26 26
27#include <kcmodule.h> 27#include <kcmodule.h>
28 28
29class PWMConfigWidget; 29class PWMConfigWidget;
30class PWMPrefs; 30class PWMPrefs;
31 31
32class KCMPwmConfig : public KCModule 32class KCMPwmConfig : public KCModule
33{ 33{
34 Q_OBJECT 34 Q_OBJECT
35 35
36 public: 36 public:
37 KCMPwmConfig(QWidget *parent = 0, const char *name = 0 ); 37 KCMPwmConfig(QWidget *parent = 0, const char *name = 0 );
38 38
39 public slots:
39 virtual void load(); 40 virtual void load();
40 virtual void save(); 41 virtual void save();
41 virtual void defaults(); 42 virtual void defaults();
42 43
43 private: 44 private:
44 PWMConfigWidget *mConfigWidget; 45 PWMConfigWidget *mConfigWidget;
45}; 46};
46 47
47#endif 48#endif
diff --git a/pwmanager/pwmanager/pwm.cpp b/pwmanager/pwmanager/pwm.cpp
index 9c8d12d..e12dc49 100644
--- a/pwmanager/pwmanager/pwm.cpp
+++ b/pwmanager/pwmanager/pwm.cpp
@@ -1,1134 +1,1159 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * copyright (C) 2003, 2004 by Michael Buesch * 3 * copyright (C) 2003, 2004 by Michael Buesch *
4 * email: mbuesch@freenet.de * 4 * email: mbuesch@freenet.de *
5 * * 5 * *
6 * This program is free software; you can redistribute it and/or modify * 6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License version 2 * 7 * it under the terms of the GNU General Public License version 2 *
8 * as published by the Free Software Foundation. * 8 * as published by the Free Software Foundation. *
9 * * 9 * *
10 ***************************************************************************/ 10 ***************************************************************************/
11 11
12/*************************************************************************** 12/***************************************************************************
13 * copyright (C) 2004 by Ulf Schenk 13 * copyright (C) 2004 by Ulf Schenk
14 * This file is originaly based on version 1.0.1 of pwmanager 14 * This file is originaly based on version 1.0.1 of pwmanager
15 * and was modified to run on embedded devices that run microkde 15 * and was modified to run on embedded devices that run microkde
16 * 16 *
17 * $Id$ 17 * $Id$
18 **************************************************************************/ 18 **************************************************************************/
19 19
20#include <klocale.h> 20#include <klocale.h>
21#include <klistview.h> 21#include <klistview.h>
22#include <ktoolbar.h> 22#include <ktoolbar.h>
23#include <kfiledialog.h> 23#include <kfiledialog.h>
24#include <kiconloader.h> 24#include <kiconloader.h>
25#include <kmessagebox.h> 25#include <kmessagebox.h>
26 26
27#include <qstatusbar.h> 27#include <qstatusbar.h>
28 28
29#ifndef PWM_EMBEDDED 29#ifndef PWM_EMBEDDED
30#include <kmenubar.h> 30#include <kmenubar.h>
31#include <kstatusbar.h> 31#include <kstatusbar.h>
32#include <dcopclient.h> 32#include <dcopclient.h>
33#include "configwndimpl.h" 33#include "configwndimpl.h"
34#include "configuration.h" 34#include "configuration.h"
35#else 35#else
36#include <qmenubar.h> 36#include <qmenubar.h>
37#include <qmessagebox.h> 37#include <qmessagebox.h>
38#include <pwmprefs.h> 38#include <pwmprefs.h>
39#include <kpimglobalprefs.h> 39#include <kpimglobalprefs.h>
40#include <kprefsdialog.h>
40#include <kcmconfigs/kcmpwmconfig.h> 41#include <kcmconfigs/kcmpwmconfig.h>
41#include <kcmconfigs/kcmkdepimconfig.h> 42#include <kcmconfigs/kcmkdepimconfig.h>
42#include <kcmultidialog.h> 43#include <kcmultidialog.h>
43#include "editcategory.h" 44#include "editcategory.h"
44#endif 45#endif
45 46
46 47
47#ifndef DESKTOP_VERSION 48#ifndef DESKTOP_VERSION
48#include <qpe/global.h> 49#include <qpe/global.h>
49#endif 50#endif
50 51
51#include <qpixmap.h> 52#include <qpixmap.h>
52#include <qcheckbox.h> 53#include <qcheckbox.h>
53#include <qspinbox.h> 54#include <qspinbox.h>
54#include <qlineedit.h> 55#include <qlineedit.h>
55#include <qfileinfo.h> 56#include <qfileinfo.h>
56#include <qclipboard.h> 57#include <qclipboard.h>
57 58
58 59
59#include <stdio.h> 60#include <stdio.h>
60 61
61#include "pwm.h" 62#include "pwm.h"
62#include "pwminit.h" 63#include "pwminit.h"
63#include "pwmprint.h" 64#include "pwmprint.h"
64#include "addentrywndimpl.h" 65#include "addentrywndimpl.h"
65#include "globalstuff.h" 66#include "globalstuff.h"
66#include "findwndimpl.h" 67#include "findwndimpl.h"
67#include "csv.h" 68#include "csv.h"
68 69
69#ifdef CONFIG_KWALLETIF 70#ifdef CONFIG_KWALLETIF
70# include "kwalletif.h" 71# include "kwalletif.h"
71# include "kwalletemu.h" 72# include "kwalletemu.h"
72#endif 73#endif
73#ifdef CONFIG_KEYCARD 74#ifdef CONFIG_KEYCARD
74# include "pwmkeycard.h" 75# include "pwmkeycard.h"
75#endif 76#endif
76 77
77
78 #define DEFAULT_SIZE (QSize(700, 400)) 78 #define DEFAULT_SIZE (QSize(700, 400))
79 79
80// Button IDs for "file" popup menu 80// Button IDs for "file" popup menu
81enum { 81enum {
82 BUTTON_POPUP_FILE_NEW = 0, 82 BUTTON_POPUP_FILE_NEW = 0,
83 BUTTON_POPUP_FILE_OPEN, 83 BUTTON_POPUP_FILE_OPEN,
84 BUTTON_POPUP_FILE_CLOSE, 84 BUTTON_POPUP_FILE_CLOSE,
85 BUTTON_POPUP_FILE_SAVE, 85 BUTTON_POPUP_FILE_SAVE,
86 BUTTON_POPUP_FILE_SAVEAS, 86 BUTTON_POPUP_FILE_SAVEAS,
87 BUTTON_POPUP_FILE_EXPORT, 87 BUTTON_POPUP_FILE_EXPORT,
88 BUTTON_POPUP_FILE_IMPORT, 88 BUTTON_POPUP_FILE_IMPORT,
89 BUTTON_POPUP_FILE_PRINT, 89 BUTTON_POPUP_FILE_PRINT,
90 BUTTON_POPUP_FILE_QUIT 90 BUTTON_POPUP_FILE_QUIT
91}; 91};
92// Button IDs for "manage" popup menu 92// Button IDs for "manage" popup menu
93enum { 93enum {
94 BUTTON_POPUP_MANAGE_ADD = 0, 94 BUTTON_POPUP_MANAGE_ADD = 0,
95 BUTTON_POPUP_MANAGE_EDIT, 95 BUTTON_POPUP_MANAGE_EDIT,
96 BUTTON_POPUP_MANAGE_DEL, 96 BUTTON_POPUP_MANAGE_DEL,
97 BUTTON_POPUP_MANAGE_CHANGEMP 97 BUTTON_POPUP_MANAGE_CHANGEMP
98}; 98};
99// Button IDs for chipcard popup menu 99// Button IDs for chipcard popup menu
100enum { 100enum {
101#ifdef CONFIG_KEYCARD 101#ifdef CONFIG_KEYCARD
102 BUTTON_POPUP_CHIPCARD_GENNEW = 0, 102 BUTTON_POPUP_CHIPCARD_GENNEW = 0,
103 BUTTON_POPUP_CHIPCARD_DEL, 103 BUTTON_POPUP_CHIPCARD_DEL,
104 BUTTON_POPUP_CHIPCARD_READID, 104 BUTTON_POPUP_CHIPCARD_READID,
105 BUTTON_POPUP_CHIPCARD_SAVEBACKUP, 105 BUTTON_POPUP_CHIPCARD_SAVEBACKUP,
106 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP 106 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP
107#else // CONFIG_KEYCARD 107#else // CONFIG_KEYCARD
108 BUTTON_POPUP_CHIPCARD_NO = 0 108 BUTTON_POPUP_CHIPCARD_NO = 0
109#endif // CONFIG_KEYCARD 109#endif // CONFIG_KEYCARD
110}; 110};
111// Button IDs for "view" popup menu 111// Button IDs for "view" popup menu
112enum { 112enum {
113 BUTTON_POPUP_VIEW_FIND = 0, 113 BUTTON_POPUP_VIEW_FIND = 0,
114 BUTTON_POPUP_VIEW_LOCK, 114 BUTTON_POPUP_VIEW_LOCK,
115 BUTTON_POPUP_VIEW_DEEPLOCK, 115 BUTTON_POPUP_VIEW_DEEPLOCK,
116 BUTTON_POPUP_VIEW_UNLOCK 116 BUTTON_POPUP_VIEW_UNLOCK
117}; 117};
118// Button IDs for "options" popup menu 118// Button IDs for "options" popup menu
119enum { 119enum {
120 BUTTON_POPUP_OPTIONS_CONFIG = 0 120 BUTTON_POPUP_OPTIONS_CONFIG = 0,
121 BUTTON_POPUP_OPTIONS_GLOBAL_CONFIG
121#ifdef PWM_EMBEDDED 122#ifdef PWM_EMBEDDED
122 ,BUTTON_POPUP_OPTIONS_CATEGORY 123 ,BUTTON_POPUP_OPTIONS_CATEGORY
123#endif 124#endif
124}; 125};
125// Button IDs for "export" popup menu (in "file" popup menu) 126// Button IDs for "export" popup menu (in "file" popup menu)
126enum { 127enum {
127 BUTTON_POPUP_EXPORT_TEXT = 0, 128 BUTTON_POPUP_EXPORT_TEXT = 0,
128 BUTTON_POPUP_EXPORT_GPASMAN, 129 BUTTON_POPUP_EXPORT_GPASMAN,
129 BUTTON_POPUP_EXPORT_CSV 130 BUTTON_POPUP_EXPORT_CSV
130#ifdef CONFIG_KWALLETIF 131#ifdef CONFIG_KWALLETIF
131 ,BUTTON_POPUP_EXPORT_KWALLET 132 ,BUTTON_POPUP_EXPORT_KWALLET
132#endif 133#endif
133}; 134};
134// Button IDs for "import" popup menu (in "file" popup menu) 135// Button IDs for "import" popup menu (in "file" popup menu)
135enum { 136enum {
136 BUTTON_POPUP_IMPORT_TEXT = 0, 137 BUTTON_POPUP_IMPORT_TEXT = 0,
137 BUTTON_POPUP_IMPORT_GPASMAN, 138 BUTTON_POPUP_IMPORT_GPASMAN,
138 BUTTON_POPUP_IMPORT_CSV 139 BUTTON_POPUP_IMPORT_CSV
139#ifdef CONFIG_KWALLETIF 140#ifdef CONFIG_KWALLETIF
140 ,BUTTON_POPUP_IMPORT_KWALLET 141 ,BUTTON_POPUP_IMPORT_KWALLET
141#endif 142#endif
142}; 143};
143 144
144#ifdef PWM_EMBEDDED 145#ifdef PWM_EMBEDDED
145// Button IDs for "help" popup menu 146// Button IDs for "help" popup menu
146enum { 147enum {
147 BUTTON_POPUP_HELP_LICENSE = 0, 148 BUTTON_POPUP_HELP_LICENSE = 0,
148 BUTTON_POPUP_HELP_FAQ, 149 BUTTON_POPUP_HELP_FAQ,
149 BUTTON_POPUP_HELP_ABOUT, 150 BUTTON_POPUP_HELP_ABOUT,
150 BUTTON_POPUP_HELP_SYNC, 151 BUTTON_POPUP_HELP_SYNC,
151 BUTTON_POPUP_HELP_WHATSNEW 152 BUTTON_POPUP_HELP_WHATSNEW
152}; 153};
153#endif 154#endif
154 155
155// Button IDs for toolbar 156// Button IDs for toolbar
156enum { 157enum {
157 BUTTON_TOOL_NEW = 0, 158 BUTTON_TOOL_NEW = 0,
158 BUTTON_TOOL_OPEN, 159 BUTTON_TOOL_OPEN,
159 BUTTON_TOOL_SAVE, 160 BUTTON_TOOL_SAVE,
160 BUTTON_TOOL_SAVEAS, 161 BUTTON_TOOL_SAVEAS,
161 BUTTON_TOOL_PRINT, 162 BUTTON_TOOL_PRINT,
162 BUTTON_TOOL_ADD, 163 BUTTON_TOOL_ADD,
163 BUTTON_TOOL_EDIT, 164 BUTTON_TOOL_EDIT,
164 BUTTON_TOOL_DEL, 165 BUTTON_TOOL_DEL,
165 BUTTON_TOOL_FIND, 166 BUTTON_TOOL_FIND,
166 BUTTON_TOOL_LOCK, 167 BUTTON_TOOL_LOCK,
167 BUTTON_TOOL_DEEPLOCK, 168 BUTTON_TOOL_DEEPLOCK,
168 BUTTON_TOOL_UNLOCK 169 BUTTON_TOOL_UNLOCK
169}; 170};
170 171
171 172
172PwM::PwM(PwMInit *_init, PwMDoc *doc, 173PwM::PwM(PwMInit *_init, PwMDoc *doc,
173 bool virginity, 174 bool virginity,
174 QWidget *parent, const char *name) 175 QWidget *parent, const char *name)
175 : KMainWindow(parent, "HALLO") 176 : KMainWindow(parent, "HALLO")
176 , forceQuit (false) 177 , forceQuit (false)
177 , forceMinimizeToTray (false) 178 , forceMinimizeToTray (false)
178{ 179{
179 syncManager = 0; 180 syncManager = 0;
180 virgin = !virginity; 181 virgin = !virginity;
181 init = _init; 182 init = _init;
182 connect(doc, SIGNAL(docClosed(PwMDoc *)), 183 connect(doc, SIGNAL(docClosed(PwMDoc *)),
183 this, SLOT(docClosed(PwMDoc *))); 184 this, SLOT(docClosed(PwMDoc *)));
184 initMenubar(); 185 initMenubar();
185 initToolbar(); 186 initToolbar();
186 initMetrics(); 187 initMetrics();
187 setVirgin(virginity); 188 setVirgin(virginity);
188 setFocusPolicy(QWidget::WheelFocus); 189 setFocusPolicy(QWidget::WheelFocus);
189#ifndef PWM_EMBEDDED 190#ifndef PWM_EMBEDDED
190 statusBar()->show(); 191 statusBar()->show();
191#endif 192#endif
192 view = makeNewListView(doc); 193 view = makeNewListView(doc);
193 setCentralWidget(view); 194 setCentralWidget(view);
194 updateCaption(); 195 updateCaption();
195 showStatMsg(i18n("Ready.")); 196 showStatMsg(i18n("Ready."));
196} 197}
197 198
198PwM::~PwM() 199PwM::~PwM()
199{ 200{
200 //qDebug("PwM::~PwM() %x", this); 201 //qDebug("PwM::~PwM() %x", this);
201 disconnect(curDoc(), SIGNAL(docClosed(PwMDoc *)), 202 disconnect(curDoc(), SIGNAL(docClosed(PwMDoc *)),
202 this, SLOT(docClosed(PwMDoc *))); 203 this, SLOT(docClosed(PwMDoc *)));
203 conf()->confWndMainWndSize(size()); 204 conf()->confWndMainWndSize(size());
204 //LR closing of windows changed 205 //LR closing of windows changed
205 //needed for fastload option on PDA 206 //needed for fastload option on PDA
206 //emit closed(this); 207 //emit closed(this);
207 //qDebug("PwM::~PwM() emited closed(this)"); 208 //qDebug("PwM::~PwM() emited closed(this)");
208 delete view; 209 delete view;
209 delete syncManager; 210 delete syncManager;
210} 211}
211 212
212void PwM::initMenubar() 213void PwM::initMenubar()
213{ 214{
214 KIconLoader* picons; 215 KIconLoader* picons;
215#ifndef PWM_EMBEDDED 216#ifndef PWM_EMBEDDED
216 KIconLoader icons; 217 KIconLoader icons;
217 picons = &icons; 218 picons = &icons;
218#else 219#else
219 picons = KGlobal::iconLoader(); 220 picons = KGlobal::iconLoader();
220 221
221 222
222 syncPopup = new KPopupMenu(this); 223 syncPopup = new KPopupMenu(this);
223 224
224 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::PWMPI, PWMPrefs::instance(), syncPopup); 225 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::PWMPI, PWMPrefs::instance(), syncPopup);
225 syncManager->setBlockSave(false); 226 syncManager->setBlockSave(false);
226 227
227 connect ( syncPopup, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 228 connect ( syncPopup, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
228 syncManager->fillSyncMenu(); 229 syncManager->fillSyncMenu();
229 230
230#endif 231#endif
231 filePopup = new KPopupMenu(this); 232 filePopup = new KPopupMenu(this);
232 importPopup = new KPopupMenu(filePopup); 233 importPopup = new KPopupMenu(filePopup);
233 exportPopup = new KPopupMenu(filePopup); 234 exportPopup = new KPopupMenu(filePopup);
234 managePopup = new KPopupMenu(this); 235 managePopup = new KPopupMenu(this);
235#ifdef CONFIG_KEYCARD 236#ifdef CONFIG_KEYCARD
236 chipcardPopup = new KPopupMenu(this); 237 chipcardPopup = new KPopupMenu(this);
237#endif // CONFIG_KEYCARD 238#endif // CONFIG_KEYCARD
238 viewPopup = new KPopupMenu(this); 239 viewPopup = new KPopupMenu(this);
239 optionsPopup = new KPopupMenu(this); 240 optionsPopup = new KPopupMenu(this);
240 241
241// "file" popup menu 242// "file" popup menu
242 filePopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)), 243 filePopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)),
243 i18n("&New"), this, 244 i18n("&New"), this,
244 SLOT(new_slot()), 0, BUTTON_POPUP_FILE_NEW); 245 SLOT(new_slot()), 0, BUTTON_POPUP_FILE_NEW);
245 filePopup->insertItem(QIconSet(picons->loadIcon("fileopen", KIcon::Small)), 246 filePopup->insertItem(QIconSet(picons->loadIcon("fileopen", KIcon::Small)),
246 i18n("&Open"), this, 247 i18n("&Open"), this,
247 SLOT(open_slot()), 0, BUTTON_POPUP_FILE_OPEN); 248 SLOT(open_slot()), 0, BUTTON_POPUP_FILE_OPEN);
248 filePopup->insertItem(QIconSet(picons->loadIcon("fileclose", KIcon::Small)), 249 filePopup->insertItem(QIconSet(picons->loadIcon("fileclose", KIcon::Small)),
249 i18n("&Close"), this, 250 i18n("&Close"), this,
250 SLOT(close_slot()), 0, BUTTON_POPUP_FILE_CLOSE); 251 SLOT(close_slot()), 0, BUTTON_POPUP_FILE_CLOSE);
251 filePopup->insertSeparator(); 252 filePopup->insertSeparator();
252 filePopup->insertItem(QIconSet(picons->loadIcon("filesave", KIcon::Small)), 253 filePopup->insertItem(QIconSet(picons->loadIcon("filesave", KIcon::Small)),
253 i18n("&Save"), this, 254 i18n("&Save"), this,
254 SLOT(save_slot()), 0, BUTTON_POPUP_FILE_SAVE); 255 SLOT(save_slot()), 0, BUTTON_POPUP_FILE_SAVE);
255 filePopup->insertItem(QIconSet(picons->loadIcon("filesaveas", KIcon::Small)), 256 filePopup->insertItem(QIconSet(picons->loadIcon("filesaveas", KIcon::Small)),
256 i18n("Save &as..."), 257 i18n("Save &as..."),
257 this, SLOT(saveAs_slot()), 0, 258 this, SLOT(saveAs_slot()), 0,
258 BUTTON_POPUP_FILE_SAVEAS); 259 BUTTON_POPUP_FILE_SAVEAS);
259 filePopup->insertSeparator(); 260 filePopup->insertSeparator();
260 // "file/export" popup menu 261 // "file/export" popup menu
261 exportPopup->insertItem(i18n("&Text-file..."), this, 262 exportPopup->insertItem(i18n("&Text-file..."), this,
262 SLOT(exportToText()), 0, BUTTON_POPUP_EXPORT_TEXT); 263 SLOT(exportToText()), 0, BUTTON_POPUP_EXPORT_TEXT);
263 exportPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this, 264 exportPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this,
264 SLOT(exportToGpasman()), 0, BUTTON_POPUP_EXPORT_GPASMAN); 265 SLOT(exportToGpasman()), 0, BUTTON_POPUP_EXPORT_GPASMAN);
265 exportPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this, 266 exportPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this,
266 SLOT(exportToCsv()), 0, BUTTON_POPUP_EXPORT_CSV); 267 SLOT(exportToCsv()), 0, BUTTON_POPUP_EXPORT_CSV);
267#ifdef CONFIG_KWALLETIF 268#ifdef CONFIG_KWALLETIF
268 exportPopup->insertItem(i18n("&KWallet..."), this, 269 exportPopup->insertItem(i18n("&KWallet..."), this,
269 SLOT(exportToKWallet()), 0, BUTTON_POPUP_EXPORT_KWALLET); 270 SLOT(exportToKWallet()), 0, BUTTON_POPUP_EXPORT_KWALLET);
270#endif 271#endif
271 filePopup->insertItem(QIconSet(picons->loadIcon("fileexport", KIcon::Small)), 272 filePopup->insertItem(QIconSet(picons->loadIcon("fileexport", KIcon::Small)),
272 i18n("E&xport"), exportPopup, 273 i18n("E&xport"), exportPopup,
273 BUTTON_POPUP_FILE_EXPORT); 274 BUTTON_POPUP_FILE_EXPORT);
274 // "file/import" popup menu 275 // "file/import" popup menu
275 importPopup->insertItem(i18n("&Text-file..."), this, 276 importPopup->insertItem(i18n("&Text-file..."), this,
276 SLOT(importFromText()), 0, BUTTON_POPUP_IMPORT_TEXT); 277 SLOT(importFromText()), 0, BUTTON_POPUP_IMPORT_TEXT);
277 importPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this, 278 importPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this,
278 SLOT(importFromGpasman()), 0, BUTTON_POPUP_IMPORT_GPASMAN); 279 SLOT(importFromGpasman()), 0, BUTTON_POPUP_IMPORT_GPASMAN);
279 importPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this, 280 importPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this,
280 SLOT(importCsv()), 0, BUTTON_POPUP_IMPORT_CSV); 281 SLOT(importCsv()), 0, BUTTON_POPUP_IMPORT_CSV);
281#ifdef CONFIG_KWALLETIF 282#ifdef CONFIG_KWALLETIF
282 importPopup->insertItem(i18n("&KWallet..."), this, 283 importPopup->insertItem(i18n("&KWallet..."), this,
283 SLOT(importKWallet()), 0, BUTTON_POPUP_IMPORT_KWALLET); 284 SLOT(importKWallet()), 0, BUTTON_POPUP_IMPORT_KWALLET);
284#endif 285#endif
285 filePopup->insertItem(QIconSet(picons->loadIcon("fileimport", KIcon::Small)), 286 filePopup->insertItem(QIconSet(picons->loadIcon("fileimport", KIcon::Small)),
286 i18n("I&mport"), importPopup, 287 i18n("I&mport"), importPopup,
287 BUTTON_POPUP_FILE_IMPORT); 288 BUTTON_POPUP_FILE_IMPORT);
288 filePopup->insertSeparator(); 289 filePopup->insertSeparator();
289#if 0 290#if 0
290 filePopup->insertItem(QIconSet(picons->loadIcon("fileprint", KIcon::Small)), 291 filePopup->insertItem(QIconSet(picons->loadIcon("fileprint", KIcon::Small)),
291 i18n("&Print..."), this, 292 i18n("&Print..."), this,
292 SLOT(print_slot()), 0, BUTTON_POPUP_FILE_PRINT); 293 SLOT(print_slot()), 0, BUTTON_POPUP_FILE_PRINT);
293 filePopup->insertSeparator(); 294 filePopup->insertSeparator();
294#endif 295#endif
295 filePopup->insertItem(QIconSet(picons->loadIcon("exit", KIcon::Small)), 296 filePopup->insertItem(QIconSet(picons->loadIcon("exit", KIcon::Small)),
296 i18n("&Quit"), this, 297 i18n("&Quit"), this,
297 SLOT(quitButton_slot()), 0, BUTTON_POPUP_FILE_QUIT); 298 SLOT(quitButton_slot()), 0, BUTTON_POPUP_FILE_QUIT);
298 menuBar()->insertItem(i18n("&File"), filePopup); 299 menuBar()->insertItem(i18n("&File"), filePopup);
299// "manage" popup menu 300// "manage" popup menu
300 managePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)), 301 managePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)),
301 i18n("&Add password"), this, 302 i18n("&Add password"), this,
302 SLOT(addPwd_slot()), 0, 303 SLOT(addPwd_slot()), 0,
303 BUTTON_POPUP_MANAGE_ADD); 304 BUTTON_POPUP_MANAGE_ADD);
304 managePopup->insertSeparator(); 305 managePopup->insertSeparator();
305 managePopup->insertItem(QIconSet(picons->loadIcon("edit", KIcon::Small)), 306 managePopup->insertItem(QIconSet(picons->loadIcon("edit", KIcon::Small)),
306 i18n("&Edit"), this, SLOT(editPwd_slot()), 0, 307 i18n("&Edit"), this, SLOT(editPwd_slot()), 0,
307 BUTTON_POPUP_MANAGE_EDIT); 308 BUTTON_POPUP_MANAGE_EDIT);
308 managePopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)), 309 managePopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)),
309 i18n("&Delete"), this, SLOT(deletePwd_slot()), 310 i18n("&Delete"), this, SLOT(deletePwd_slot()),
310 0, BUTTON_POPUP_MANAGE_DEL); 311 0, BUTTON_POPUP_MANAGE_DEL);
311 managePopup->insertSeparator(); 312 managePopup->insertSeparator();
312 managePopup->insertItem(QIconSet(picons->loadIcon("rotate", KIcon::Small)), 313 managePopup->insertItem(QIconSet(picons->loadIcon("rotate", KIcon::Small)),
313 i18n("Change &Master Password"), this, 314 i18n("Change &Master Password"), this,
314 SLOT(changeMasterPwd_slot()), 0, 315 SLOT(changeMasterPwd_slot()), 0,
315 BUTTON_POPUP_MANAGE_CHANGEMP); 316 BUTTON_POPUP_MANAGE_CHANGEMP);
316 menuBar()->insertItem(i18n("&Manage"), managePopup); 317 menuBar()->insertItem(i18n("&Manage"), managePopup);
317// "chipcard" popup menu 318// "chipcard" popup menu
318#ifdef CONFIG_KEYCARD 319#ifdef CONFIG_KEYCARD
319 chipcardPopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)), 320 chipcardPopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)),
320 i18n("&Generate new key-card"), this, 321 i18n("&Generate new key-card"), this,
321 SLOT(genNewCard_slot()), 0, 322 SLOT(genNewCard_slot()), 0,
322 BUTTON_POPUP_CHIPCARD_GENNEW); 323 BUTTON_POPUP_CHIPCARD_GENNEW);
323 chipcardPopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)), 324 chipcardPopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)),
324 i18n("&Erase key-card"), this, 325 i18n("&Erase key-card"), this,
325 SLOT(eraseCard_slot()), 0, 326 SLOT(eraseCard_slot()), 0,
326 BUTTON_POPUP_CHIPCARD_DEL); 327 BUTTON_POPUP_CHIPCARD_DEL);
327 chipcardPopup->insertItem(QIconSet(picons->loadIcon("", KIcon::Small)), 328 chipcardPopup->insertItem(QIconSet(picons->loadIcon("", KIcon::Small)),
328 i18n("Read card-&ID"), this, 329 i18n("Read card-&ID"), this,
329 SLOT(readCardId_slot()), 0, 330 SLOT(readCardId_slot()), 0,
330 BUTTON_POPUP_CHIPCARD_READID); 331 BUTTON_POPUP_CHIPCARD_READID);
331 chipcardPopup->insertSeparator(); 332 chipcardPopup->insertSeparator();
332 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2rightarrow", KIcon::Small)), 333 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2rightarrow", KIcon::Small)),
333 i18n("&Make card backup-image"), this, 334 i18n("&Make card backup-image"), this,
334 SLOT(makeCardBackup_slot()), 0, 335 SLOT(makeCardBackup_slot()), 0,
335 BUTTON_POPUP_CHIPCARD_SAVEBACKUP); 336 BUTTON_POPUP_CHIPCARD_SAVEBACKUP);
336 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2leftarrow", KIcon::Small)), 337 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2leftarrow", KIcon::Small)),
337 i18n("&Replay card backup-image"), this, 338 i18n("&Replay card backup-image"), this,
338 SLOT(replayCardBackup_slot()), 0, 339 SLOT(replayCardBackup_slot()), 0,
339 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP); 340 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP);
340 menuBar()->insertItem(i18n("&Chipcard manager"), chipcardPopup); 341 menuBar()->insertItem(i18n("&Chipcard manager"), chipcardPopup);
341#endif // CONFIG_KEYCARD 342#endif // CONFIG_KEYCARD
342// "view" popup menu 343// "view" popup menu
343 viewPopup->insertItem(QIconSet(picons->loadIcon("find", KIcon::Small)), 344 viewPopup->insertItem(QIconSet(picons->loadIcon("find", KIcon::Small)),
344 i18n("&Find"), this, 345 i18n("&Find"), this,
345 SLOT(find_slot()), 0, BUTTON_POPUP_VIEW_FIND); 346 SLOT(find_slot()), 0, BUTTON_POPUP_VIEW_FIND);
346 viewPopup->insertSeparator(); 347 viewPopup->insertSeparator();
347 viewPopup->insertItem(QIconSet(picons->loadIcon("halfencrypted", KIcon::Small)), 348 viewPopup->insertItem(QIconSet(picons->loadIcon("halfencrypted", KIcon::Small)),
348 i18n("&Lock all entries"), this, 349 i18n("&Lock all entries"), this,
349 SLOT(lockWnd_slot()), 0, 350 SLOT(lockWnd_slot()), 0,
350 BUTTON_POPUP_VIEW_LOCK); 351 BUTTON_POPUP_VIEW_LOCK);
351 viewPopup->insertItem(QIconSet(picons->loadIcon("encrypted", KIcon::Small)), 352 viewPopup->insertItem(QIconSet(picons->loadIcon("encrypted", KIcon::Small)),
352 i18n("&Deep-lock all entries"), this, 353 i18n("&Deep-lock all entries"), this,
353 SLOT(deepLockWnd_slot()), 0, 354 SLOT(deepLockWnd_slot()), 0,
354 BUTTON_POPUP_VIEW_DEEPLOCK); 355 BUTTON_POPUP_VIEW_DEEPLOCK);
355 viewPopup->insertItem(QIconSet(picons->loadIcon("decrypted", KIcon::Small)), 356 viewPopup->insertItem(QIconSet(picons->loadIcon("decrypted", KIcon::Small)),
356 i18n("&Unlock all entries"), this, 357 i18n("&Unlock all entries"), this,
357 SLOT(unlockWnd_slot()), 0, 358 SLOT(unlockWnd_slot()), 0,
358 BUTTON_POPUP_VIEW_UNLOCK); 359 BUTTON_POPUP_VIEW_UNLOCK);
359 menuBar()->insertItem(i18n("&View"), viewPopup); 360 menuBar()->insertItem(i18n("&View"), viewPopup);
360// "options" popup menu 361// "options" popup menu
361 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)), 362 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
362 i18n("&Configure..."), this, 363 i18n("&Configure PwM/Pi..."), this,
363 SLOT(config_slot()),0, 364 SLOT(config_slot()),0,
364 BUTTON_POPUP_OPTIONS_CONFIG); 365 BUTTON_POPUP_OPTIONS_CONFIG);
366 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
367 i18n("Global Settings..."), this,
368 SLOT(config_global_slot()),0,
369 BUTTON_POPUP_OPTIONS_GLOBAL_CONFIG);
365 if ( QApplication::desktop()->width() <= 240 ) { 370 if ( QApplication::desktop()->width() <= 240 ) {
366 managePopup->insertSeparator(); 371 managePopup->insertSeparator();
367 managePopup->insertItem(i18n("&Options"), optionsPopup); 372 managePopup->insertItem(i18n("&Options"), optionsPopup);
368 } else 373 } else
369 menuBar()->insertItem(i18n("&Options"), optionsPopup); 374 menuBar()->insertItem(i18n("&Options"), optionsPopup);
370// "help" popup menu 375// "help" popup menu
371#ifndef PWM_EMBEDDED 376#ifndef PWM_EMBEDDED
372 helpPopup = helpMenu(QString::null, false); 377 helpPopup = helpMenu(QString::null, false);
373#else 378#else
374 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)), 379 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
375 i18n("C&ategories..."), this, 380 i18n("C&ategories..."), this,
376 SLOT(category_slot()),0, 381 SLOT(category_slot()),0,
377 BUTTON_POPUP_OPTIONS_CATEGORY); 382 BUTTON_POPUP_OPTIONS_CATEGORY);
378 383
379 384
380 menuBar()->insertItem(i18n("&Sync"), syncPopup); 385 menuBar()->insertItem(i18n("&Sync"), syncPopup);
381 386
382 387
383 388
384 389
385 390
386 helpPopup = new KPopupMenu(this); 391 helpPopup = new KPopupMenu(this);
387 392
388 393
389 helpPopup->insertItem(i18n("&License"), this, 394 helpPopup->insertItem(i18n("&License"), this,
390 SLOT(showLicense_slot()), 0, 395 SLOT(showLicense_slot()), 0,
391 BUTTON_POPUP_HELP_LICENSE); 396 BUTTON_POPUP_HELP_LICENSE);
392 397
393 helpPopup->insertItem(i18n("&Faq"), this, 398 helpPopup->insertItem(i18n("&Faq"), this,
394 SLOT(faq_slot()), 0, 399 SLOT(faq_slot()), 0,
395 BUTTON_POPUP_HELP_FAQ); 400 BUTTON_POPUP_HELP_FAQ);
396 401
397 helpPopup->insertItem(i18n("&About PwManager"), this, 402 helpPopup->insertItem(i18n("&About PwManager"), this,
398 SLOT(createAboutData_slot()), 0, 403 SLOT(createAboutData_slot()), 0,
399 BUTTON_POPUP_HELP_ABOUT); 404 BUTTON_POPUP_HELP_ABOUT);
400 405
401 helpPopup->insertItem(i18n("&Sync HowTo"), this, 406 helpPopup->insertItem(i18n("&Sync HowTo"), this,
402 SLOT(syncHowTo_slot()), 0, 407 SLOT(syncHowTo_slot()), 0,
403 BUTTON_POPUP_HELP_SYNC); 408 BUTTON_POPUP_HELP_SYNC);
404 409
405 helpPopup->insertItem(i18n("&What's New"), this, 410 helpPopup->insertItem(i18n("&What's New"), this,
406 SLOT(whatsnew_slot()), 0, 411 SLOT(whatsnew_slot()), 0,
407 BUTTON_POPUP_HELP_WHATSNEW); 412 BUTTON_POPUP_HELP_WHATSNEW);
408 413
409#endif 414#endif
410 menuBar()->insertItem(i18n("&Help"), helpPopup); 415 menuBar()->insertItem(i18n("&Help"), helpPopup);
411 416
412} 417}
413 418
414void PwM::initToolbar() 419void PwM::initToolbar()
415{ 420{
416 KIconLoader* picons; 421 KIconLoader* picons;
417#ifndef PWM_EMBEDDED 422#ifndef PWM_EMBEDDED
418 KIconLoader icons; 423 KIconLoader icons;
419 picons = &icons; 424 picons = &icons;
420#else 425#else
421 picons = KGlobal::iconLoader(); 426 picons = KGlobal::iconLoader();
422#endif 427#endif
423 428
424#if 0 429#if 0
425 toolBar()->insertButton(picons->loadIcon("filenew", KIcon::Toolbar), 430 toolBar()->insertButton(picons->loadIcon("filenew", KIcon::Toolbar),
426 BUTTON_TOOL_NEW, SIGNAL(clicked(int)), this, 431 BUTTON_TOOL_NEW, SIGNAL(clicked(int)), this,
427 SLOT(new_slot()), true, i18n("New")); 432 SLOT(new_slot()), true, i18n("New"));
428#endif 433#endif
429 toolBar()->insertButton(picons->loadIcon("fileopen", KIcon::Toolbar), 434 toolBar()->insertButton(picons->loadIcon("fileopen", KIcon::Toolbar),
430 BUTTON_TOOL_OPEN, SIGNAL(clicked(int)), this, 435 BUTTON_TOOL_OPEN, SIGNAL(clicked(int)), this,
431 SLOT(open_slot()), true, i18n("Open")); 436 SLOT(open_slot()), true, i18n("Open"));
432 toolBar()->insertButton(picons->loadIcon("pencil", KIcon::Toolbar), 437 toolBar()->insertButton(picons->loadIcon("pencil", KIcon::Toolbar),
433 BUTTON_TOOL_ADD, SIGNAL(clicked(int)), this, 438 BUTTON_TOOL_ADD, SIGNAL(clicked(int)), this,
434 SLOT(addPwd_slot()), true, 439 SLOT(addPwd_slot()), true,
435 i18n("Add password")); 440 i18n("Add password"));
436 toolBar()->insertSeparator(); 441 toolBar()->insertSeparator();
437 442
438 toolBar()->insertButton(picons->loadIcon("find", KIcon::Toolbar), 443 toolBar()->insertButton(picons->loadIcon("find", KIcon::Toolbar),
439 BUTTON_TOOL_FIND, SIGNAL(clicked(int)), this, 444 BUTTON_TOOL_FIND, SIGNAL(clicked(int)), this,
440 SLOT(find_slot()), true, i18n("Find entry")); 445 SLOT(find_slot()), true, i18n("Find entry"));
441 toolBar()->insertSeparator(); 446 toolBar()->insertSeparator();
442 toolBar()->insertButton(picons->loadIcon("filesave", KIcon::Toolbar), 447 toolBar()->insertButton(picons->loadIcon("filesave", KIcon::Toolbar),
443 BUTTON_TOOL_SAVE, SIGNAL(clicked(int)), this, 448 BUTTON_TOOL_SAVE, SIGNAL(clicked(int)), this,
444 SLOT(save_slot()), true, i18n("Save")); 449 SLOT(save_slot()), true, i18n("Save"));
445#if 0 450#if 0
446 toolBar()->insertButton(picons->loadIcon("filesaveas", KIcon::Toolbar), 451 toolBar()->insertButton(picons->loadIcon("filesaveas", KIcon::Toolbar),
447 BUTTON_TOOL_SAVEAS, SIGNAL(clicked(int)), this, 452 BUTTON_TOOL_SAVEAS, SIGNAL(clicked(int)), this,
448 SLOT(saveAs_slot()), true, i18n("Save as")); 453 SLOT(saveAs_slot()), true, i18n("Save as"));
449#endif 454#endif
450 455
451 456
452#if 0 457#if 0
453 toolBar()->insertButton(picons->loadIcon("fileprint", KIcon::Toolbar), 458 toolBar()->insertButton(picons->loadIcon("fileprint", KIcon::Toolbar),
454 BUTTON_TOOL_PRINT, SIGNAL(clicked(int)), this, 459 BUTTON_TOOL_PRINT, SIGNAL(clicked(int)), this,
455 SLOT(print_slot()), true, i18n("Print...")); 460 SLOT(print_slot()), true, i18n("Print..."));
456#endif 461#endif
457 toolBar()->insertSeparator(); 462 toolBar()->insertSeparator();
458 toolBar()->insertButton(picons->loadIcon("edit", KIcon::Toolbar), 463 toolBar()->insertButton(picons->loadIcon("edit", KIcon::Toolbar),
459 BUTTON_TOOL_EDIT, SIGNAL(clicked(int)), this, 464 BUTTON_TOOL_EDIT, SIGNAL(clicked(int)), this,
460 SLOT(editPwd_slot()), true, 465 SLOT(editPwd_slot()), true,
461 i18n("Edit password")); 466 i18n("Edit password"));
462 toolBar()->insertButton(picons->loadIcon("editdelete", KIcon::Toolbar), 467 toolBar()->insertButton(picons->loadIcon("editdelete", KIcon::Toolbar),
463 BUTTON_TOOL_DEL, SIGNAL(clicked(int)), this, 468 BUTTON_TOOL_DEL, SIGNAL(clicked(int)), this,
464 SLOT(deletePwd_slot()), true, 469 SLOT(deletePwd_slot()), true,
465 i18n("Delete password")); 470 i18n("Delete password"));
466 toolBar()->insertSeparator(); 471 toolBar()->insertSeparator();
467 toolBar()->insertButton(picons->loadIcon("halfencrypted", KIcon::Toolbar), 472 toolBar()->insertButton(picons->loadIcon("halfencrypted", KIcon::Toolbar),
468 BUTTON_TOOL_LOCK, SIGNAL(clicked(int)), this, 473 BUTTON_TOOL_LOCK, SIGNAL(clicked(int)), this,
469 SLOT(lockWnd_slot()), true, 474 SLOT(lockWnd_slot()), true,
470 i18n("Lock all entries")); 475 i18n("Lock all entries"));
471 toolBar()->insertButton(picons->loadIcon("encrypted", KIcon::Toolbar), 476 toolBar()->insertButton(picons->loadIcon("encrypted", KIcon::Toolbar),
472 BUTTON_TOOL_DEEPLOCK, SIGNAL(clicked(int)), this, 477 BUTTON_TOOL_DEEPLOCK, SIGNAL(clicked(int)), this,
473 SLOT(deepLockWnd_slot()), true, 478 SLOT(deepLockWnd_slot()), true,
474 i18n("Deep-Lock all entries")); 479 i18n("Deep-Lock all entries"));
475 toolBar()->insertButton(picons->loadIcon("decrypted", KIcon::Toolbar), 480 toolBar()->insertButton(picons->loadIcon("decrypted", KIcon::Toolbar),
476 BUTTON_TOOL_UNLOCK, SIGNAL(clicked(int)), this, 481 BUTTON_TOOL_UNLOCK, SIGNAL(clicked(int)), this,
477 SLOT(unlockWnd_slot()), true, 482 SLOT(unlockWnd_slot()), true,
478 i18n("Unlock all entries")); 483 i18n("Unlock all entries"));
479} 484}
480 485
481void PwM::initMetrics() 486void PwM::initMetrics()
482{ 487{
483 QSize s = conf()->confWndMainWndSize(); 488 QSize s = conf()->confWndMainWndSize();
484 if (s.isValid()) 489 if (s.isValid())
485 resize(s); 490 resize(s);
486 else 491 else
487 resize(DEFAULT_SIZE); 492 resize(DEFAULT_SIZE);
488} 493}
489 494
490void PwM::updateCaption() 495void PwM::updateCaption()
491{ 496{
492 QString s = curDoc()->getTitle(); 497 QString s = curDoc()->getTitle();
493 int maxlen = 50; 498 int maxlen = 50;
494 if ( QApplication::desktop()->width() < 640 ) { 499 if ( QApplication::desktop()->width() < 640 ) {
495 if ( QApplication::desktop()->width() < 320 ) 500 if ( QApplication::desktop()->width() < 320 )
496 maxlen = 22; 501 maxlen = 22;
497 else 502 else
498 maxlen = 35; 503 maxlen = 35;
499 } 504 }
500 if ( s.length() > maxlen ) { 505 if ( s.length() > maxlen ) {
501 s = "..."+s.right(maxlen -3); 506 s = "..."+s.right(maxlen -3);
502 } 507 }
503 setPlainCaption( s ); 508 setPlainCaption( s );
504} 509}
505 510
506void PwM::hideEvent(QHideEvent *) 511void PwM::hideEvent(QHideEvent *)
507{ 512{
508 if (isMinimized()) { 513 if (isMinimized()) {
509 if (init->tray()) { 514 if (init->tray()) {
510 forceMinimizeToTray = true; 515 forceMinimizeToTray = true;
511 close(); 516 close();
512 } 517 }
513 int mmlock = conf()->confGlobMinimizeLock(); 518 int mmlock = conf()->confGlobMinimizeLock();
514 switch (mmlock) { 519 switch (mmlock) {
515 case 0: // don't lock anything 520 case 0: // don't lock anything
516 break; 521 break;
517 case 1: {// normal lock 522 case 1: {// normal lock
518 curDoc()->lockAll(true); 523 curDoc()->lockAll(true);
519 break; 524 break;
520 } case 2: {// deep-lock 525 } case 2: {// deep-lock
521 curDoc()->deepLock(); 526 curDoc()->deepLock();
522 break; 527 break;
523 } default: 528 } default:
524 WARN(); 529 WARN();
525 } 530 }
526 } 531 }
527} 532}
528 533
529void PwM::setVirgin(bool v) 534void PwM::setVirgin(bool v)
530{ 535{
531 if (virgin == v) 536 if (virgin == v)
532 return; 537 return;
533 virgin = v; 538 virgin = v;
534 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVE, !v); 539 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVE, !v);
535 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVEAS, !v); 540 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVEAS, !v);
536 filePopup->setItemEnabled(BUTTON_POPUP_FILE_EXPORT, !v); 541 filePopup->setItemEnabled(BUTTON_POPUP_FILE_EXPORT, !v);
537 filePopup->setItemEnabled(BUTTON_POPUP_FILE_PRINT, !v); 542 filePopup->setItemEnabled(BUTTON_POPUP_FILE_PRINT, !v);
538 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_EDIT, !v); 543 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_EDIT, !v);
539 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_DEL, !v); 544 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_DEL, !v);
540 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, !v); 545 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, !v);
541 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_LOCK, !v); 546 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_LOCK, !v);
542 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_DEEPLOCK, !v); 547 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_DEEPLOCK, !v);
543 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_UNLOCK, !v); 548 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_UNLOCK, !v);
544 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_FIND, !v); 549 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_FIND, !v);
545 toolBar()->setItemEnabled(BUTTON_TOOL_SAVE, !v); 550 toolBar()->setItemEnabled(BUTTON_TOOL_SAVE, !v);
546 toolBar()->setItemEnabled(BUTTON_TOOL_SAVEAS, !v); 551 toolBar()->setItemEnabled(BUTTON_TOOL_SAVEAS, !v);
547 toolBar()->setItemEnabled(BUTTON_TOOL_PRINT, !v); 552 toolBar()->setItemEnabled(BUTTON_TOOL_PRINT, !v);
548 toolBar()->setItemEnabled(BUTTON_TOOL_EDIT, !v); 553 toolBar()->setItemEnabled(BUTTON_TOOL_EDIT, !v);
549 toolBar()->setItemEnabled(BUTTON_TOOL_DEL, !v); 554 toolBar()->setItemEnabled(BUTTON_TOOL_DEL, !v);
550 toolBar()->setItemEnabled(BUTTON_TOOL_LOCK, !v); 555 toolBar()->setItemEnabled(BUTTON_TOOL_LOCK, !v);
551 toolBar()->setItemEnabled(BUTTON_TOOL_DEEPLOCK, !v); 556 toolBar()->setItemEnabled(BUTTON_TOOL_DEEPLOCK, !v);
552 toolBar()->setItemEnabled(BUTTON_TOOL_UNLOCK, !v); 557 toolBar()->setItemEnabled(BUTTON_TOOL_UNLOCK, !v);
553 toolBar()->setItemEnabled(BUTTON_TOOL_FIND, !v); 558 toolBar()->setItemEnabled(BUTTON_TOOL_FIND, !v);
554} 559}
555 560
556void PwM::new_slot() 561void PwM::new_slot()
557{ 562{
558 init->createMainWnd(); 563 init->createMainWnd();
559} 564}
560 565
561//US ENH 566//US ENH
562void PwM::open_slot() 567void PwM::open_slot()
563{ 568{
564 open_slot(""); 569 open_slot("");
565} 570}
566 571
567void PwM::open_slot(QString fn) 572void PwM::open_slot(QString fn)
568{ 573{
569 openDoc(fn); 574 openDoc(fn);
570} 575}
571 576
572PwMDoc * PwM::openDoc(QString filename, bool openDeepLocked) 577PwMDoc * PwM::openDoc(QString filename, bool openDeepLocked)
573{ 578{
574 if (!isVirgin()) { 579 if (!isVirgin()) {
575 // open the document in a new window. 580 // open the document in a new window.
576 PwM *newInstance = init->createMainWnd(); 581 PwM *newInstance = init->createMainWnd();
577 PwMDoc *newDoc = newInstance->openDoc(filename, openDeepLocked); 582 PwMDoc *newDoc = newInstance->openDoc(filename, openDeepLocked);
578 if (!newDoc) { 583 if (!newDoc) {
579 newInstance->setForceQuit(true); 584 newInstance->setForceQuit(true);
580 delete_and_null(newInstance); 585 delete_and_null(newInstance);
581 } 586 }
582 return newDoc; 587 return newDoc;
583 } 588 }
584 589
585 if (!curDoc()->openDocUi(curDoc(), filename, openDeepLocked)) 590 if (!curDoc()->openDocUi(curDoc(), filename, openDeepLocked))
586 return 0; 591 return 0;
587 showStatMsg(i18n("Successfully opened file.")); 592 showStatMsg(i18n("Successfully opened file."));
588 updateCaption(); 593 updateCaption();
589 setVirgin(false); 594 setVirgin(false);
590 return curDoc(); 595 return curDoc();
591} 596}
592 597
593PwMView * PwM::makeNewListView(PwMDoc *doc) 598PwMView * PwM::makeNewListView(PwMDoc *doc)
594{ 599{
595 PwMView *ret = new PwMView(this, this, doc); 600 PwMView *ret = new PwMView(this, this, doc);
596 ret->setFont(conf()->confGlobEntryFont()); 601 ret->setFont(conf()->confGlobEntryFont());
597 ret->show(); 602 ret->show();
598 return ret; 603 return ret;
599} 604}
600 605
601void PwM::close_slot() 606void PwM::close_slot()
602{ 607{
603 close(); 608 close();
604} 609}
605 610
606void PwM::quitButton_slot() 611void PwM::quitButton_slot()
607{ 612{
608 init->shutdownApp(0); 613 init->shutdownApp(0);
609} 614}
610 615
611void PwM::save_slot() 616void PwM::save_slot()
612{ 617{
613 save(); 618 save();
614} 619}
615 620
616bool PwM::save() 621bool PwM::save()
617{ 622{
618 if (!curDoc()->saveDocUi(curDoc())) 623 if (!curDoc()->saveDocUi(curDoc()))
619 return false; 624 return false;
620 showStatMsg(i18n("Successfully saved data.")); 625 showStatMsg(i18n("Successfully saved data."));
621 updateCaption(); 626 updateCaption();
622 return true; 627 return true;
623} 628}
624 629
625void PwM::saveAs_slot() 630void PwM::saveAs_slot()
626{ 631{
627 saveAs(); 632 saveAs();
628} 633}
629 634
630bool PwM::saveAs() 635bool PwM::saveAs()
631{ 636{
632 if (!curDoc()->saveAsDocUi(curDoc())) 637 if (!curDoc()->saveAsDocUi(curDoc()))
633 return false; 638 return false;
634 showStatMsg(i18n("Successfully saved data.")); 639 showStatMsg(i18n("Successfully saved data."));
635 updateCaption(); 640 updateCaption();
636 return true; 641 return true;
637} 642}
638 643
639//US ENH : changed code to run with older MOC 644//US ENH : changed code to run with older MOC
640void PwM::addPwd_slot() 645void PwM::addPwd_slot()
641{ 646{
642 addPwd_slot1(0, 0); 647 addPwd_slot1(0, 0);
643} 648}
644 649
645void PwM::addPwd_slot1(QString *pw, PwMDoc *_doc) 650void PwM::addPwd_slot1(QString *pw, PwMDoc *_doc)
646{ 651{
647 PwMDoc *doc; 652 PwMDoc *doc;
648 if (_doc) { 653 if (_doc) {
649 doc = _doc; 654 doc = _doc;
650 } else { 655 } else {
651 doc = curDoc(); 656 doc = curDoc();
652 } 657 }
653 PWM_ASSERT(doc); 658 PWM_ASSERT(doc);
654 doc->timer()->getLock(DocTimer::id_autoLockTimer); 659 doc->timer()->getLock(DocTimer::id_autoLockTimer);
655#ifndef PWM_EMBEDDED 660#ifndef PWM_EMBEDDED
656 AddEntryWndImpl w; 661 AddEntryWndImpl w;
657#else 662#else
658 AddEntryWndImpl w(doc, this, "addentrywndimpl"); 663 AddEntryWndImpl w(doc, this, "addentrywndimpl");
659#endif 664#endif
660 w.setCaption( i18n ("Add new password") ); 665 w.setCaption( i18n ("Add new password") );
661 vector<string> catList; 666 vector<string> catList;
662 doc->getCategoryList(&catList); 667 doc->getCategoryList(&catList);
663 unsigned i, size = catList.size(); 668 unsigned i, size = catList.size();
664 for (i = 0; i < size; ++i) { 669 for (i = 0; i < size; ++i) {
665 w.addCategory(catList[i].c_str()); 670 w.addCategory(catList[i].c_str());
666 } 671 }
667 w.setCurrCategory(view->getCurrentCategory()); 672 w.setCurrCategory(view->getCurrentCategory());
668 if (pw) 673 if (pw)
669 w.pwLineEdit->setText(*pw); 674 w.pwLineEdit->setText(*pw);
670 675
671 tryAgain: 676 tryAgain:
672 w.descLineEdit->setFocus(); 677 w.descLineEdit->setFocus();
673 if (w.exec() == 1) 678 if (w.exec() == 1)
674 { 679 {
675 PwMDataItem d; 680 PwMDataItem d;
676 681
677 //US BUG: to initialize all values of curEntr with meaningfulldata, 682 //US BUG: to initialize all values of curEntr with meaningfulldata,
678 // we call clear on it. Reason: Metadata will be uninitialized otherwise. 683 // we call clear on it. Reason: Metadata will be uninitialized otherwise.
679 // another option would be to create a constructor for PwMDataItem 684 // another option would be to create a constructor for PwMDataItem
680 d.clear(true); 685 d.clear(true);
681 686
682 d.desc = w.getDescription().latin1(); 687 d.desc = w.getDescription().latin1();
683 d.name = w.getUsername().latin1(); 688 d.name = w.getUsername().latin1();
684 d.pw = w.getPassword().latin1(); 689 d.pw = w.getPassword().latin1();
685 d.comment = w.getComment().latin1(); 690 d.comment = w.getComment().latin1();
686 d.url = w.getUrl().latin1(); 691 d.url = w.getUrl().latin1();
687 d.launcher = w.getLauncher().latin1(); 692 d.launcher = w.getLauncher().latin1();
688 PwMerror ret = doc->addEntry(w.getCategory(), &d); 693 PwMerror ret = doc->addEntry(w.getCategory(), &d);
689 if (ret == e_entryExists) { 694 if (ret == e_entryExists) {
690 KMessageBox::error(this, 695 KMessageBox::error(this,
691 i18n 696 i18n
692 ("An entry with this \"Description\",\n" 697 ("An entry with this \"Description\",\n"
693 "does already exist.\n" 698 "does already exist.\n"
694 "Please select another description."), 699 "Please select another description."),
695 i18n("entry already exists.")); 700 i18n("entry already exists."));
696 goto tryAgain; 701 goto tryAgain;
697 } else if (ret == e_maxAllowedEntr) { 702 } else if (ret == e_maxAllowedEntr) {
698 KMessageBox::error(this, i18n("The maximum possible number of\nentries" 703 KMessageBox::error(this, i18n("The maximum possible number of\nentries"
699 "has been reached.\nYou can't add more entries."), 704 "has been reached.\nYou can't add more entries."),
700 i18n("maximum number of entries")); 705 i18n("maximum number of entries"));
701 doc->timer()->putLock(DocTimer::id_autoLockTimer); 706 doc->timer()->putLock(DocTimer::id_autoLockTimer);
702 return; 707 return;
703 } 708 }
704 } 709 }
705 setVirgin(false); 710 setVirgin(false);
706 doc->timer()->putLock(DocTimer::id_autoLockTimer); 711 doc->timer()->putLock(DocTimer::id_autoLockTimer);
707} 712}
708 713
709//US ENH : changed code to run with older MOC 714//US ENH : changed code to run with older MOC
710void PwM::editPwd_slot() 715void PwM::editPwd_slot()
711{ 716{
712 editPwd_slot3(0,0,0); 717 editPwd_slot3(0,0,0);
713} 718}
714 719
715void PwM::editPwd_slot1(const QString *category) 720void PwM::editPwd_slot1(const QString *category)
716{ 721{
717 editPwd_slot3(category, 0, 0); 722 editPwd_slot3(category, 0, 0);
718} 723}
719 724
720void PwM::editPwd_slot3(const QString *category, const int *index, 725void PwM::editPwd_slot3(const QString *category, const int *index,
721 PwMDoc *_doc) 726 PwMDoc *_doc)
722{ 727{
723 PwMDoc *doc; 728 PwMDoc *doc;
724 if (_doc) { 729 if (_doc) {
725 doc = _doc; 730 doc = _doc;
726 } else { 731 } else {
727 doc = curDoc(); 732 doc = curDoc();
728 } 733 }
729 PWM_ASSERT(doc); 734 PWM_ASSERT(doc);
730 if (doc->isDocEmpty()) 735 if (doc->isDocEmpty())
731 return; 736 return;
732 if (doc->isDeepLocked()) 737 if (doc->isDeepLocked())
733 return; 738 return;
734 doc->timer()->getLock(DocTimer::id_autoLockTimer); 739 doc->timer()->getLock(DocTimer::id_autoLockTimer);
735 unsigned int curEntryIndex; 740 unsigned int curEntryIndex;
736 if (index) { 741 if (index) {
737 curEntryIndex = *index; 742 curEntryIndex = *index;
738 } else { 743 } else {
739 if (!(view->getCurEntryIndex(&curEntryIndex))) { 744 if (!(view->getCurEntryIndex(&curEntryIndex))) {
740 qDebug("couldn't get index. Maybe we have a binary entry here. "); 745 qDebug("couldn't get index. Maybe we have a binary entry here. ");
741 printDebug("couldn't get index. Maybe we have a binary entry here."); 746 printDebug("couldn't get index. Maybe we have a binary entry here.");
742 doc->timer()->putLock(DocTimer::id_autoLockTimer); 747 doc->timer()->putLock(DocTimer::id_autoLockTimer);
743 return; 748 return;
744 } 749 }
745 } 750 }
746 QString curCategory; 751 QString curCategory;
747 if (category) { 752 if (category) {
748 curCategory = *category; 753 curCategory = *category;
749 } else { 754 } else {
750 curCategory = view->getCurrentCategory(); 755 curCategory = view->getCurrentCategory();
751 } 756 }
752 PwMDataItem currItem; 757 PwMDataItem currItem;
753 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) { 758 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) {
754 doc->timer()->putLock(DocTimer::id_autoLockTimer); 759 doc->timer()->putLock(DocTimer::id_autoLockTimer);
755 return; 760 return;
756 } 761 }
757 BUG_ON(currItem.binary); 762 BUG_ON(currItem.binary);
758 AddEntryWndImpl w(doc); 763 AddEntryWndImpl w(doc);
759 w.setCaption( i18n ("Edit password") ); 764 w.setCaption( i18n ("Edit password") );
760 vector<string> catList; 765 vector<string> catList;
761 doc->getCategoryList(&catList); 766 doc->getCategoryList(&catList);
762 unsigned i, size = catList.size(); 767 unsigned i, size = catList.size();
763 for (i = 0; i < size; ++i) { 768 for (i = 0; i < size; ++i) {
764 w.addCategory(catList[i].c_str()); 769 w.addCategory(catList[i].c_str());
765 } 770 }
766 w.setCurrCategory(curCategory); 771 w.setCurrCategory(curCategory);
767 w.setDescription(currItem.desc.c_str()); 772 w.setDescription(currItem.desc.c_str());
768 w.setUsername(currItem.name.c_str()); 773 w.setUsername(currItem.name.c_str());
769 w.setPassword(currItem.pw.c_str()); 774 w.setPassword(currItem.pw.c_str());
770 w.setUrl(currItem.url.c_str()); 775 w.setUrl(currItem.url.c_str());
771 w.setLauncher(currItem.launcher.c_str()); 776 w.setLauncher(currItem.launcher.c_str());
772 w.setComment(currItem.comment.c_str()); 777 w.setComment(currItem.comment.c_str());
773 w.descLineEdit->setFocus(); 778 w.descLineEdit->setFocus();
774 if (w.exec() == 1) { 779 if (w.exec() == 1) {
775 currItem.desc = w.getDescription().latin1(); 780 currItem.desc = w.getDescription().latin1();
776 currItem.name = w.getUsername().latin1(); 781 currItem.name = w.getUsername().latin1();
777 currItem.pw = w.getPassword().latin1(); 782 currItem.pw = w.getPassword().latin1();
778 currItem.comment = w.getComment().latin1(); 783 currItem.comment = w.getComment().latin1();
779 currItem.url = w.getUrl().latin1(); 784 currItem.url = w.getUrl().latin1();
780 currItem.launcher = w.getLauncher().latin1(); 785 currItem.launcher = w.getLauncher().latin1();
781 if (!doc->editEntry(curCategory, w.getCategory(), 786 if (!doc->editEntry(curCategory, w.getCategory(),
782 curEntryIndex, &currItem)) { 787 curEntryIndex, &currItem)) {
783 KMessageBox::error(this, 788 KMessageBox::error(this,
784 i18n("Couldn't edit the entry.\n" 789 i18n("Couldn't edit the entry.\n"
785 "Maybe you changed the category and\n" 790 "Maybe you changed the category and\n"
786 "this entry is already present\nin the new " 791 "this entry is already present\nin the new "
787 "category?"), 792 "category?"),
788 i18n("couldn't edit entry.")); 793 i18n("couldn't edit entry."));
789 doc->timer()->putLock(DocTimer::id_autoLockTimer); 794 doc->timer()->putLock(DocTimer::id_autoLockTimer);
790 return; 795 return;
791 } 796 }
792 } 797 }
793 doc->timer()->putLock(DocTimer::id_autoLockTimer); 798 doc->timer()->putLock(DocTimer::id_autoLockTimer);
794} 799}
795 800
796void PwM::deletePwd_slot() 801void PwM::deletePwd_slot()
797{ 802{
798 PWM_ASSERT(curDoc()); 803 PWM_ASSERT(curDoc());
799 if (curDoc()->isDocEmpty()) 804 if (curDoc()->isDocEmpty())
800 return; 805 return;
801 if (curDoc()->isDeepLocked()) 806 if (curDoc()->isDeepLocked())
802 return; 807 return;
803 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 808 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
804 unsigned int curEntryIndex = 0; 809 unsigned int curEntryIndex = 0;
805 if (!(view->getCurEntryIndex(&curEntryIndex))) { 810 if (!(view->getCurEntryIndex(&curEntryIndex))) {
806 printDebug("couldn't get index"); 811 printDebug("couldn't get index");
807 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 812 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
808 return; 813 return;
809 } 814 }
810 815
811 PwMDataItem currItem; 816 PwMDataItem currItem;
812 QString curCategory = view->getCurrentCategory(); 817 QString curCategory = view->getCurrentCategory();
813 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) { 818 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) {
814 printDebug("couldn't get entry"); 819 printDebug("couldn't get entry");
815 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 820 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
816 return; 821 return;
817 } 822 }
818 if (KMessageBox:: 823 if (KMessageBox::
819 questionYesNo(this, 824 questionYesNo(this,
820 i18n 825 i18n
821 ("Do you really want to delete\nthe selected entry") + 826 ("Do you really want to delete\nthe selected entry") +
822 " \n\"" + QString(currItem.desc.c_str()) 827 " \n\"" + QString(currItem.desc.c_str())
823 + "\" ?", i18n("delete?")) 828 + "\" ?", i18n("delete?"))
824 == KMessageBox::Yes) { 829 == KMessageBox::Yes) {
825 830
826 curDoc()->delEntry(curCategory, curEntryIndex); 831 curDoc()->delEntry(curCategory, curEntryIndex);
827 } 832 }
828 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 833 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
829} 834}
830 835
831void PwM::changeMasterPwd_slot() 836void PwM::changeMasterPwd_slot()
832{ 837{
833 PWM_ASSERT(curDoc()); 838 PWM_ASSERT(curDoc());
834 curDoc()->changeCurrentPw(); 839 curDoc()->changeCurrentPw();
835} 840}
836 841
837void PwM::lockWnd_slot() 842void PwM::lockWnd_slot()
838{ 843{
839 PWM_ASSERT(curDoc()); 844 PWM_ASSERT(curDoc());
840 curDoc()->lockAll(true); 845 curDoc()->lockAll(true);
841} 846}
842 847
843void PwM::deepLockWnd_slot() 848void PwM::deepLockWnd_slot()
844{ 849{
845 PWM_ASSERT(curDoc()); 850 PWM_ASSERT(curDoc());
846 curDoc()->deepLock(); 851 curDoc()->deepLock();
847} 852}
848 853
849void PwM::unlockWnd_slot() 854void PwM::unlockWnd_slot()
850{ 855{
851 PWM_ASSERT(curDoc()); 856 PWM_ASSERT(curDoc());
852 curDoc()->lockAll(false); 857 curDoc()->lockAll(false);
853} 858}
854 859void PwM::config_global_slot()
860{
861 KPimPrefsGlobalDialog gc ( this );
862 gc.exec();
863}
855void PwM::config_slot() 864void PwM::config_slot()
856{ 865{
857 int oldStyle = conf()->confWndMainViewStyle(); 866 int oldStyle = conf()->confWndMainViewStyle();
858#ifdef PWM_EMBEDDED 867
868#if 0
859 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"pwmconfigdialog", true ); 869 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"pwmconfigdialog", true );
860 870
861 KCMPwmConfig* pwmcfg = new KCMPwmConfig( ConfigureDialog->getNewVBoxPage(i18n( "PwManager")) , "KCMPwmConfig" ); 871 KCMPwmConfig* pwmcfg = new KCMPwmConfig( ConfigureDialog->getNewVBoxPage(i18n( "PwManager")) , "KCMPwmConfig" );
862 ConfigureDialog->addModule(pwmcfg ); 872 ConfigureDialog->addModule(pwmcfg );
863 873
864 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 874 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
865 ConfigureDialog->addModule(kdelibcfg ); 875 ConfigureDialog->addModule(kdelibcfg );
876#endif
877
866 878
879
880 KDialogBase * ConfigureDialog = new KDialogBase ( KDialogBase::Plain , i18n("Configure KA/Pi"), KDialogBase::Default |KDialogBase::Cancel | KDialogBase::Apply | KDialogBase::Ok, KDialogBase::Ok,0, "name", true, true);
881
882 KCMPwmConfig* kabcfg = new KCMPwmConfig( ConfigureDialog , "KCMpwmConfig" );
883 ConfigureDialog->setMainWidget( kabcfg );
884 connect( ConfigureDialog, SIGNAL( applyClicked() ),
885 kabcfg, SLOT( save() ) );
886 connect( ConfigureDialog, SIGNAL( acceptClicked() ),
887 kabcfg, SLOT( save() ) );
888 connect( ConfigureDialog, SIGNAL( defaultClicked() ),
889 kabcfg, SLOT( defaults() ) );
890 //saveSettings();
891 kabcfg->load();
867#ifndef DESKTOP_VERSION 892#ifndef DESKTOP_VERSION
893 if ( QApplication::desktop()->height() <= 480 )
894 ;// ConfigureDialog->hideButtons();
868 ConfigureDialog->showMaximized(); 895 ConfigureDialog->showMaximized();
869#endif 896#endif
897
898
870 if ( ConfigureDialog->exec() ) 899 if ( ConfigureDialog->exec() )
871 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 900 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
872 delete ConfigureDialog; 901 delete ConfigureDialog;
873 902
874#else //PWM_EMBEDDED 903
875 // display the configuration window (modal mode)
876 if (!conf()->showConfWnd(this))
877 return;
878#endif
879 904
880 int newStyle = conf()->confWndMainViewStyle(); 905 int newStyle = conf()->confWndMainViewStyle();
881 // reinitialize tray 906 // reinitialize tray
882 init->initTray(); 907 init->initTray();
883 // reinitialize KWallet emulation 908 // reinitialize KWallet emulation
884 init->initKWalletEmu(); 909 init->initKWalletEmu();
885 910
886 PwMDocList *_dl = PwMDoc::getOpenDocList(); 911 PwMDocList *_dl = PwMDoc::getOpenDocList();
887 const vector<PwMDocList::listItem> *dl = _dl->getList(); 912 const vector<PwMDocList::listItem> *dl = _dl->getList();
888 vector<PwMDocList::listItem>::const_iterator i = dl->begin(), 913 vector<PwMDocList::listItem>::const_iterator i = dl->begin(),
889 end = dl->end(); 914 end = dl->end();
890 PwMDoc *doc; 915 PwMDoc *doc;
891 while (i != end) { 916 while (i != end) {
892 doc = (*i).doc; 917 doc = (*i).doc;
893 // unlock-without-mpw timeout 918 // unlock-without-mpw timeout
894 doc->timer()->start(DocTimer::id_mpwTimer); 919 doc->timer()->start(DocTimer::id_mpwTimer);
895 // auto-lock timeout 920 // auto-lock timeout
896 doc->timer()->start(DocTimer::id_autoLockTimer); 921 doc->timer()->start(DocTimer::id_autoLockTimer);
897 ++i; 922 ++i;
898 } 923 }
899 924
900 const QValueList<PwM *> *ml = init->mainWndList(); 925 const QValueList<PwM *> *ml = init->mainWndList();
901#ifndef PWM_EMBEDDED 926#ifndef PWM_EMBEDDED
902 QValueList<PwM *>::const_iterator i2 = ml->begin(), 927 QValueList<PwM *>::const_iterator i2 = ml->begin(),
903 end2 = ml->end(); 928 end2 = ml->end();
904#else 929#else
905 QValueList<PwM *>::ConstIterator i2 = ml->begin(), 930 QValueList<PwM *>::ConstIterator i2 = ml->begin(),
906 end2 = ml->end(); 931 end2 = ml->end();
907#endif 932#endif
908 PwM *pwm; 933 PwM *pwm;
909 while (i2 != end2) { 934 while (i2 != end2) {
910 pwm = *i2; 935 pwm = *i2;
911 // reinitialize the window style. 936 // reinitialize the window style.
912 if (oldStyle != newStyle) 937 if (oldStyle != newStyle)
913 pwm->curView()->initStyle(newStyle); 938 pwm->curView()->initStyle(newStyle);
914 // set the new font 939 // set the new font
915 pwm->curView()->setFont(conf()->confGlobEntryFont()); 940 pwm->curView()->setFont(conf()->confGlobEntryFont());
916 ++i2; 941 ++i2;
917 } 942 }
918} 943}
919 944
920void PwM::activateMpButton(bool activate) 945void PwM::activateMpButton(bool activate)
921{ 946{
922 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate); 947 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate);
923} 948}
924 949
925void PwM::closeEvent(QCloseEvent *e) 950void PwM::closeEvent(QCloseEvent *e)
926{ 951{
927 //qDebug("PwM::closeEvent "); 952 //qDebug("PwM::closeEvent ");
928 emit closed( this ); 953 emit closed( this );
929 return; 954 return;
930 e->accept(); 955 e->accept();
931} 956}
932 957
933void PwM::docClosed(PwMDoc *doc) 958void PwM::docClosed(PwMDoc *doc)
934{ 959{
935 //qDebug("PwM::docClosed "); 960 //qDebug("PwM::docClosed ");
936 PARAM_UNUSED(doc); 961 PARAM_UNUSED(doc);
937 PWM_ASSERT(doc == curDoc()); 962 PWM_ASSERT(doc == curDoc());
938 close(); 963 close();
939} 964}
940 965
941void PwM::find_slot() 966void PwM::find_slot()
942{ 967{
943 PWM_ASSERT(curDoc()); 968 PWM_ASSERT(curDoc());
944 if (curDoc()->isDocEmpty()) 969 if (curDoc()->isDocEmpty())
945 return; 970 return;
946 if (curDoc()->isDeepLocked()) 971 if (curDoc()->isDeepLocked())
947 return; 972 return;
948 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 973 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
949 FindWndImpl findWnd(view); 974 FindWndImpl findWnd(view);
950 findWnd.exec(); 975 findWnd.exec();
951 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 976 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
952} 977}
953 978
954void PwM::exportToText() 979void PwM::exportToText()
955{ 980{
956 PWM_ASSERT(curDoc()); 981 PWM_ASSERT(curDoc());
957 if (curDoc()->isDocEmpty()) { 982 if (curDoc()->isDocEmpty()) {
958 KMessageBox::information(this, 983 KMessageBox::information(this,
959 i18n 984 i18n
960 ("Sorry, there's nothing to export.\n" 985 ("Sorry, there's nothing to export.\n"
961 "Please first add some passwords."), 986 "Please first add some passwords."),
962 i18n("nothing to do")); 987 i18n("nothing to do"));
963 return; 988 return;
964 } 989 }
965 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 990 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
966 QString fn(KFileDialog::getSaveFileName(QString::null, 991 QString fn(KFileDialog::getSaveFileName(QString::null,
967 i18n("*|plain-text file"), 992 i18n("*|plain-text file"),
968 this)); 993 this));
969 if (fn == "") { 994 if (fn == "") {
970 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 995 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
971 return; 996 return;
972 } 997 }
973 998
974 PwMerror ret = curDoc()->exportToText(&fn); 999 PwMerror ret = curDoc()->exportToText(&fn);
975 if (ret != e_success) { 1000 if (ret != e_success) {
976 KMessageBox::error(this, 1001 KMessageBox::error(this,
977 i18n("Error: Couldn't write to file.\n" 1002 i18n("Error: Couldn't write to file.\n"
978 "Please check if you have permission to write\n" 1003 "Please check if you have permission to write\n"
979 "to the file in that directory."), 1004 "to the file in that directory."),
980 i18n("error while writing")); 1005 i18n("error while writing"));
981 } else 1006 } else
982 showStatMsg(i18n("Successfully exported data.")); 1007 showStatMsg(i18n("Successfully exported data."));
983 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1008 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
984} 1009}
985 1010
986bool PwM::importFromText() 1011bool PwM::importFromText()
987{ 1012{
988 if (!isVirgin()) { 1013 if (!isVirgin()) {
989 if (KMessageBox::questionYesNo(this, 1014 if (KMessageBox::questionYesNo(this,
990 i18n("Do you want to import the data\n" 1015 i18n("Do you want to import the data\n"
991 "into the current document? (If you\n" 1016 "into the current document? (If you\n"
992 "select \"no\", a new document will be\n" 1017 "select \"no\", a new document will be\n"
993 "opened.)"), 1018 "opened.)"),
994 i18n("import into this document?")) 1019 i18n("import into this document?"))
995 == KMessageBox::No) { 1020 == KMessageBox::No) {
996 // import the data to a new window. 1021 // import the data to a new window.
997 PwM *newInstance = init->createMainWnd(); 1022 PwM *newInstance = init->createMainWnd();
998 bool ok = newInstance->importFromText(); 1023 bool ok = newInstance->importFromText();
999 if (!ok) { 1024 if (!ok) {
1000 newInstance->setForceQuit(true); 1025 newInstance->setForceQuit(true);
1001 delete_and_null(newInstance); 1026 delete_and_null(newInstance);
1002 } 1027 }
1003 return ok; 1028 return ok;
1004 } 1029 }
1005 } 1030 }
1006 1031
1007 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1032 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1008 PwMerror ret; 1033 PwMerror ret;
1009 QString path(KFileDialog::getOpenFileName(QString::null, 1034 QString path(KFileDialog::getOpenFileName(QString::null,
1010 i18n("*|PWM-exported text file"), 1035 i18n("*|PWM-exported text file"),
1011 this)); 1036 this));
1012 if (path == "") 1037 if (path == "")
1013 goto cancelImport; 1038 goto cancelImport;
1014 1039
1015 ret = curDoc()->importFromText(&path, 0); 1040 ret = curDoc()->importFromText(&path, 0);
1016 if (ret == e_fileFormat) { 1041 if (ret == e_fileFormat) {
1017 KMessageBox::error(this, 1042 KMessageBox::error(this,
1018 i18n("Could not read file-format.\n" 1043 i18n("Could not read file-format.\n"
1019 "This seems to be _not_ a valid file\n" 1044 "This seems to be _not_ a valid file\n"
1020 "exported by PwM."), 1045 "exported by PwM."),
1021 i18n("invalid file-format")); 1046 i18n("invalid file-format"));
1022 goto cancelImport; 1047 goto cancelImport;
1023 } else if (ret == e_invalidArg) { 1048 } else if (ret == e_invalidArg) {
1024 BUG(); 1049 BUG();
1025 goto cancelImport; 1050 goto cancelImport;
1026 } else if (ret != e_success) { 1051 } else if (ret != e_success) {
1027 KMessageBox::error(this, 1052 KMessageBox::error(this,
1028 i18n("Could not import file!\n" 1053 i18n("Could not import file!\n"
1029 "Do you have permission to read this file?\n" 1054 "Do you have permission to read this file?\n"
1030 "Do you have enough free memory?"), 1055 "Do you have enough free memory?"),
1031 i18n("import failed")); 1056 i18n("import failed"));
1032 goto cancelImport; 1057 goto cancelImport;
1033 } 1058 }
1034 setVirgin(false); 1059 setVirgin(false);
1035 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1060 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1036 return true; 1061 return true;
1037 1062
1038cancelImport: 1063cancelImport:
1039 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1064 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1040 return false; 1065 return false;
1041} 1066}
1042 1067
1043void PwM::exportToGpasman() 1068void PwM::exportToGpasman()
1044{ 1069{
1045 PWM_ASSERT(curDoc()); 1070 PWM_ASSERT(curDoc());
1046 if (curDoc()->isDocEmpty()) { 1071 if (curDoc()->isDocEmpty()) {
1047 KMessageBox::information(this, 1072 KMessageBox::information(this,
1048 i18n 1073 i18n
1049 ("Sorry, there's nothing to export.\n" 1074 ("Sorry, there's nothing to export.\n"
1050 "Please first add some passwords."), 1075 "Please first add some passwords."),
1051 i18n("nothing to do")); 1076 i18n("nothing to do"));
1052 return; 1077 return;
1053 } 1078 }
1054 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1079 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1055 QString fn(KFileDialog::getSaveFileName(QString::null, 1080 QString fn(KFileDialog::getSaveFileName(QString::null,
1056 i18n("*|Gpasman or Kpasman file"), 1081 i18n("*|Gpasman or Kpasman file"),
1057 this)); 1082 this));
1058 if (fn == "") { 1083 if (fn == "") {
1059 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1084 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1060 return; 1085 return;
1061 } 1086 }
1062 1087
1063 PwMerror ret = curDoc()->exportToGpasman(&fn); 1088 PwMerror ret = curDoc()->exportToGpasman(&fn);
1064 if (ret != e_success) { 1089 if (ret != e_success) {
1065 if (ret == e_noPw) { 1090 if (ret == e_noPw) {
1066 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1091 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1067 return; 1092 return;
1068 } 1093 }
1069 KMessageBox::error(this, 1094 KMessageBox::error(this,
1070 i18n("Error: Couldn't write to file.\n" 1095 i18n("Error: Couldn't write to file.\n"
1071 "Please check if you have permission to write " 1096 "Please check if you have permission to write "
1072 "to the file in that directory."), 1097 "to the file in that directory."),
1073 i18n("error while writing")); 1098 i18n("error while writing"));
1074 } else 1099 } else
1075 showStatMsg(i18n("Successfully exported data.")); 1100 showStatMsg(i18n("Successfully exported data."));
1076 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1101 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1077} 1102}
1078 1103
1079 1104
1080 1105
1081void PwM::exportToCsv() 1106void PwM::exportToCsv()
1082{ 1107{
1083 PWM_ASSERT(curDoc()); 1108 PWM_ASSERT(curDoc());
1084 if (curDoc()->isDocEmpty()) { 1109 if (curDoc()->isDocEmpty()) {
1085 KMessageBox::information(this, 1110 KMessageBox::information(this,
1086 i18n 1111 i18n
1087 ("Sorry, there is nothing to export;\n" 1112 ("Sorry, there is nothing to export;\n"
1088 "please add some passwords first."), 1113 "please add some passwords first."),
1089 i18n("Nothing to Do")); 1114 i18n("Nothing to Do"));
1090 return; 1115 return;
1091 } 1116 }
1092 1117
1093 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1118 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1094 QString fn(KFileDialog::getSaveFileName("*.csv", i18n("*|CSV Text File"), this)); 1119 QString fn(KFileDialog::getSaveFileName("*.csv", i18n("*|CSV Text File"), this));
1095 if (fn.isEmpty()) { 1120 if (fn.isEmpty()) {
1096 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1121 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1097 return; 1122 return;
1098 } 1123 }
1099 1124
1100 Csv csv(this); 1125 Csv csv(this);
1101 if (!csv.exportData(fn, curDoc())) { 1126 if (!csv.exportData(fn, curDoc())) {
1102 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1127 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1103 showStatMsg(i18n("CSV file export failed.")); 1128 showStatMsg(i18n("CSV file export failed."));
1104 return; 1129 return;
1105 } 1130 }
1106 showStatMsg(i18n("Successfully exported data.")); 1131 showStatMsg(i18n("Successfully exported data."));
1107 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1132 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1108} 1133}
1109 1134
1110bool PwM::importCsv() 1135bool PwM::importCsv()
1111{ 1136{
1112 Csv csv(this); 1137 Csv csv(this);
1113 if (!isVirgin()) { 1138 if (!isVirgin()) {
1114 if (KMessageBox::questionYesNo(this, 1139 if (KMessageBox::questionYesNo(this,
1115 i18n("Do you want to import the data\n" 1140 i18n("Do you want to import the data\n"
1116 "into the current document? (If you\n" 1141 "into the current document? (If you\n"
1117 "select \"no\", a new document will be\n" 1142 "select \"no\", a new document will be\n"
1118 "opened.)"), 1143 "opened.)"),
1119 i18n("Import into This Document?")) 1144 i18n("Import into This Document?"))
1120 == KMessageBox::No) { 1145 == KMessageBox::No) {
1121 // import the data to a new window. 1146 // import the data to a new window.
1122 PwM *newInstance = init->createMainWnd(); 1147 PwM *newInstance = init->createMainWnd();
1123 bool ok = newInstance->importCsv(); 1148 bool ok = newInstance->importCsv();
1124 if (!ok) { 1149 if (!ok) {
1125 newInstance->setForceQuit(true); 1150 newInstance->setForceQuit(true);
1126 delete_and_null(newInstance); 1151 delete_and_null(newInstance);
1127 } 1152 }
1128 return ok; 1153 return ok;
1129 } 1154 }
1130 } 1155 }
1131 1156
1132 QString filename = KFileDialog::getOpenFileName("*.csv", i18n("*|CSV Text File"), this); 1157 QString filename = KFileDialog::getOpenFileName("*.csv", i18n("*|CSV Text File"), this);
1133 if (filename.isEmpty()) 1158 if (filename.isEmpty())
1134 return false; 1159 return false;
diff --git a/pwmanager/pwmanager/pwm.h b/pwmanager/pwmanager/pwm.h
index 9fa9edc..2d1b854 100644
--- a/pwmanager/pwmanager/pwm.h
+++ b/pwmanager/pwmanager/pwm.h
@@ -1,299 +1,300 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * copyright (C) 2003, 2004 by Michael Buesch * 3 * copyright (C) 2003, 2004 by Michael Buesch *
4 * email: mbuesch@freenet.de * 4 * email: mbuesch@freenet.de *
5 * * 5 * *
6 * This program is free software; you can redistribute it and/or modify * 6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License version 2 * 7 * it under the terms of the GNU General Public License version 2 *
8 * as published by the Free Software Foundation. * 8 * as published by the Free Software Foundation. *
9 * * 9 * *
10 ***************************************************************************/ 10 ***************************************************************************/
11 11
12/*************************************************************************** 12/***************************************************************************
13 * copyright (C) 2004 by Ulf Schenk 13 * copyright (C) 2004 by Ulf Schenk
14 * This file is originaly based on version 1.0.1 of pwmanager 14 * This file is originaly based on version 1.0.1 of pwmanager
15 * and was modified to run on embedded devices that run microkde 15 * and was modified to run on embedded devices that run microkde
16 * 16 *
17 * $Id$ 17 * $Id$
18 **************************************************************************/ 18 **************************************************************************/
19 19
20#ifndef __PWM_H 20#ifndef __PWM_H
21#define __PWM_H 21#define __PWM_H
22 22
23 23
24#include <kpopupmenu.h> 24#include <kpopupmenu.h>
25#include <klistview.h> 25#include <klistview.h>
26#include <kmainwindow.h> 26#include <kmainwindow.h>
27 27
28#ifndef PWM_EMBEDDED 28#ifndef PWM_EMBEDDED
29#include <kwin.h> 29#include <kwin.h>
30#include <kapp.h> 30#include <kapp.h>
31#include <kdeversion.h> 31#include <kdeversion.h>
32#else 32#else
33#include <ksyncmanager.h> 33#include <ksyncmanager.h>
34#endif 34#endif
35 35
36#include <kaction.h> 36#include <kaction.h>
37 37
38#include <qglobal.h> 38#include <qglobal.h>
39 39
40#include "pwmview.h" 40#include "pwmview.h"
41#include "pwmexception.h" 41#include "pwmexception.h"
42 42
43 43
44/** timeout for displaying a message on the status-bar (in seconds) */ 44/** timeout for displaying a message on the status-bar (in seconds) */
45 #define STATUSBAR_MSG_TIMEOUT5 45 #define STATUSBAR_MSG_TIMEOUT5
46 46
47 47
48class PwMInit; 48class PwMInit;
49class KSyncManager; 49class KSyncManager;
50 50
51/** PwM is the base class of the project */ 51/** PwM is the base class of the project */
52#ifndef PWM_EMBEDDED 52#ifndef PWM_EMBEDDED
53//MOC_SKIP_BEGIN 53//MOC_SKIP_BEGIN
54class PwM : public KMainWindow 54class PwM : public KMainWindow
55//MOC_SKIP_END 55//MOC_SKIP_END
56#else 56#else
57class PwM : public KMainWindow, public KSyncInterface 57class PwM : public KMainWindow, public KSyncInterface
58#endif 58#endif
59{ 59{
60 Q_OBJECT 60 Q_OBJECT
61public: 61public:
62 friend class PwMView; 62 friend class PwMView;
63 /** construtor */ 63 /** construtor */
64 PwM(PwMInit *_init, PwMDoc *doc, 64 PwM(PwMInit *_init, PwMDoc *doc,
65 bool virginity = true, 65 bool virginity = true,
66 QWidget* parent = 0, const char *name = 0); 66 QWidget* parent = 0, const char *name = 0);
67 /** destructor */ 67 /** destructor */
68 ~PwM(); 68 ~PwM();
69 69
70 /** copy some text to the global clipboard */ 70 /** copy some text to the global clipboard */
71 static void copyToClipboard(const QString &s); 71 static void copyToClipboard(const QString &s);
72 72
73 /** returns pointer to the view */ 73 /** returns pointer to the view */
74 PwMView * curView() 74 PwMView * curView()
75 { return view; } 75 { return view; }
76 /** returns pointer to the currently using document. */ 76 /** returns pointer to the currently using document. */
77 PwMDoc * curDoc() 77 PwMDoc * curDoc()
78 { return curView()->document(); } 78 { return curView()->document(); }
79 /** open a new doc with the given filename */ 79 /** open a new doc with the given filename */
80 PwMDoc * openDoc(QString filename, bool openDeepLocked = false); 80 PwMDoc * openDoc(QString filename, bool openDeepLocked = false);
81 /** show a message on the global status bar. 81 /** show a message on the global status bar.
82 * The message times out after some seconds. 82 * The message times out after some seconds.
83 */ 83 */
84 void showStatMsg(const QString &msg); 84 void showStatMsg(const QString &msg);
85 /** ask the user where to save the doc (if it has not been saved, yet) 85 /** ask the user where to save the doc (if it has not been saved, yet)
86 * and write the data to disk. 86 * and write the data to disk.
87 */ 87 */
88 bool save(); 88 bool save();
89 /** ask the user where to save the doc 89 /** ask the user where to save the doc
90 * and write the data to disk. 90 * and write the data to disk.
91 */ 91 */
92 bool saveAs(); 92 bool saveAs();
93 /** force quit. Quit this window, always! Don't minimize it */ 93 /** force quit. Quit this window, always! Don't minimize it */
94 bool isForceQuit() 94 bool isForceQuit()
95 { return forceQuit; } 95 { return forceQuit; }
96 /** set forceQuit */ 96 /** set forceQuit */
97 void setForceQuit(bool force) 97 void setForceQuit(bool force)
98 { forceQuit = force; } 98 { forceQuit = force; }
99 /** force minimize this window */ 99 /** force minimize this window */
100 bool isForceMinimizeToTray() 100 bool isForceMinimizeToTray()
101 { return forceMinimizeToTray; } 101 { return forceMinimizeToTray; }
102 /** set forceMinimizeToTray */ 102 /** set forceMinimizeToTray */
103 void setForceMinimizeToTray(bool force) 103 void setForceMinimizeToTray(bool force)
104 { forceMinimizeToTray = force; } 104 { forceMinimizeToTray = force; }
105 105
106public slots: 106public slots:
107 /** file/new triggered */ 107 /** file/new triggered */
108 void new_slot(); 108 void new_slot();
109 /** file/open triggered */ 109 /** file/open triggered */
110//US ENH 110//US ENH
111 void open_slot(); 111 void open_slot();
112 void open_slot(QString fn); 112 void open_slot(QString fn);
113 /** file/close triggered */ 113 /** file/close triggered */
114 void close_slot(); 114 void close_slot();
115 /** file/quit triggered */ 115 /** file/quit triggered */
116 void quitButton_slot(); 116 void quitButton_slot();
117 /** file/save triggered */ 117 /** file/save triggered */
118 void save_slot(); 118 void save_slot();
119 /** file/saveAs triggered */ 119 /** file/saveAs triggered */
120 void saveAs_slot(); 120 void saveAs_slot();
121 /** file/export/text triggered */ 121 /** file/export/text triggered */
122 void exportToText(); 122 void exportToText();
123 /** file/export/gpasman triggered */ 123 /** file/export/gpasman triggered */
124 void exportToGpasman(); 124 void exportToGpasman();
125 /** file/export/kwallet triggered */ 125 /** file/export/kwallet triggered */
126 void exportToKWallet(); 126 void exportToKWallet();
127 /** file/export/csv triggered */ 127 /** file/export/csv triggered */
128 void exportToCsv(); 128 void exportToCsv();
129 /** file/import/text triggered */ 129 /** file/import/text triggered */
130 bool importFromText(); 130 bool importFromText();
131 /** file/import/gpasman triggered */ 131 /** file/import/gpasman triggered */
132 bool importFromGpasman(); 132 bool importFromGpasman();
133 /** file/import/kwallet triggered */ 133 /** file/import/kwallet triggered */
134 bool importKWallet(); 134 bool importKWallet();
135 /** file/import/csv triggered */ 135 /** file/import/csv triggered */
136 bool importCsv(); 136 bool importCsv();
137 /** file/print triggered */ 137 /** file/print triggered */
138 void print_slot(); 138 void print_slot();
139 /** manage/add triggered */ 139 /** manage/add triggered */
140 //US ENH : changed code to run with older MOC 140 //US ENH : changed code to run with older MOC
141 141
142 void addPwd_slot(); 142 void addPwd_slot();
143 void addPwd_slot1(QString *pw, PwMDoc *_doc); 143 void addPwd_slot1(QString *pw, PwMDoc *_doc);
144 /** manage/edit triggered */ 144 /** manage/edit triggered */
145 //US ENH : changed code to run with older MOC 145 //US ENH : changed code to run with older MOC
146 void editPwd_slot(); 146 void editPwd_slot();
147 void editPwd_slot1(const QString *category); 147 void editPwd_slot1(const QString *category);
148 void editPwd_slot3(const QString *category, const int *index ,PwMDoc *_doc ); 148 void editPwd_slot3(const QString *category, const int *index ,PwMDoc *_doc );
149 149
150 /** manage/delete triggered */ 150 /** manage/delete triggered */
151 void deletePwd_slot(); 151 void deletePwd_slot();
152 /** execute the "Launcher" entry */ 152 /** execute the "Launcher" entry */
153 void execLauncher_slot(); 153 void execLauncher_slot();
154 /** open browser with URL entry */ 154 /** open browser with URL entry */
155 void goToURL_slot(); 155 void goToURL_slot();
156 /** manage/changeMasterPwd triggered */ 156 /** manage/changeMasterPwd triggered */
157 void changeMasterPwd_slot(); 157 void changeMasterPwd_slot();
158 /** lock current document */ 158 /** lock current document */
159 void lockWnd_slot(); 159 void lockWnd_slot();
160 /** deeplock current document */ 160 /** deeplock current document */
161 void deepLockWnd_slot(); 161 void deepLockWnd_slot();
162 /** window/unlock triggered */ 162 /** window/unlock triggered */
163 void unlockWnd_slot(); 163 void unlockWnd_slot();
164 /** find item */ 164 /** find item */
165 void find_slot(); 165 void find_slot();
166 /** configure clicked */ 166 /** configure clicked */
167 void config_slot(); 167 void config_slot();
168 void config_global_slot();
168 /** (de)activate the "change master pw" button in the menu-bar */ 169 /** (de)activate the "change master pw" button in the menu-bar */
169 void activateMpButton(bool activate = true); 170 void activateMpButton(bool activate = true);
170 /** generate a new chipcard */ 171 /** generate a new chipcard */
171 void genNewCard_slot(); 172 void genNewCard_slot();
172 /** completely erase the current card */ 173 /** completely erase the current card */
173 void eraseCard_slot(); 174 void eraseCard_slot();
174 /** returns the ID number of the current card */ 175 /** returns the ID number of the current card */
175 void readCardId_slot(); 176 void readCardId_slot();
176 /** make backup image of the current card */ 177 /** make backup image of the current card */
177 void makeCardBackup_slot(); 178 void makeCardBackup_slot();
178 /** write backup image to current card */ 179 /** write backup image to current card */
179 void replayCardBackup_slot(); 180 void replayCardBackup_slot();
180 181
181#ifdef PWM_EMBEDDED 182#ifdef PWM_EMBEDDED
182 void category_slot(); 183 void category_slot();
183 void whatsnew_slot(); 184 void whatsnew_slot();
184 void showLicense_slot(); 185 void showLicense_slot();
185 void faq_slot(); 186 void faq_slot();
186 void createAboutData_slot(); 187 void createAboutData_slot();
187 void syncHowTo_slot(); 188 void syncHowTo_slot();
188#endif 189#endif
189 190
190protected: 191protected:
191 /** is this window virgin? */ 192 /** is this window virgin? */
192 bool isVirgin() 193 bool isVirgin()
193 { return virgin; } 194 { return virgin; }
194 /** add/remove virginity */ 195 /** add/remove virginity */
195 void setVirgin(bool v); 196 void setVirgin(bool v);
196 /** initialize the menubar */ 197 /** initialize the menubar */
197 void initMenubar(); 198 void initMenubar();
198 /** initialize the toolbar */ 199 /** initialize the toolbar */
199 void initToolbar(); 200 void initToolbar();
200 /** initialize the window-metrics */ 201 /** initialize the window-metrics */
201 void initMetrics(); 202 void initMetrics();
202 /** close-event */ 203 /** close-event */
203 void closeEvent(QCloseEvent *e); 204 void closeEvent(QCloseEvent *e);
204 /** creates a new PwM-ListView and returns it */ 205 /** creates a new PwM-ListView and returns it */
205 PwMView * makeNewListView(PwMDoc *doc); 206 PwMView * makeNewListView(PwMDoc *doc);
206 /** Window hide-event */ 207 /** Window hide-event */
207 void hideEvent(QHideEvent *); 208 void hideEvent(QHideEvent *);
208 /** is this window minimized? */ 209 /** is this window minimized? */
209 bool isMinimized() 210 bool isMinimized()
210 { 211 {
211#ifndef PWM_EMBEDDED 212#ifndef PWM_EMBEDDED
212 #if KDE_VERSION >= KDE_MAKE_VERSION(3, 2, 0) 213 #if KDE_VERSION >= KDE_MAKE_VERSION(3, 2, 0)
213 return KWin::windowInfo(winId()).isMinimized(); 214 return KWin::windowInfo(winId()).isMinimized();
214 #else // KDE_VERSION 215 #else // KDE_VERSION
215 return KWin::info(winId()).isIconified(); 216 return KWin::info(winId()).isIconified();
216 #endif // KDE_VERSION 217 #endif // KDE_VERSION
217#else 218#else
218 return false; 219 return false;
219#endif 220#endif
220 } 221 }
221 /** window got the focus */ 222 /** window got the focus */
222 void focusInEvent(QFocusEvent *e); 223 void focusInEvent(QFocusEvent *e);
223 /** update the caption string */ 224 /** update the caption string */
224 void updateCaption(); 225 void updateCaption();
225#ifdef CONFIG_KWALLETIF 226#ifdef CONFIG_KWALLETIF
226 /** check if kwalletemu is enabled and ask the user what to do */ 227 /** check if kwalletemu is enabled and ask the user what to do */
227 bool checkAndAskForKWalletEmu(); 228 bool checkAndAskForKWalletEmu();
228#endif // CONFIG_KWALLETIF 229#endif // CONFIG_KWALLETIF
229 230
230protected slots: 231protected slots:
231 /** doc got closed */ 232 /** doc got closed */
232 void docClosed(PwMDoc *doc); 233 void docClosed(PwMDoc *doc);
233 234
234signals: 235signals:
235 /** window got closed (by user or someone else) */ 236 /** window got closed (by user or someone else) */
236 void closed(PwM *wnd); 237 void closed(PwM *wnd);
237 /** window got the focus (was brought to foreground) */ 238 /** window got the focus (was brought to foreground) */
238 void gotFocus(PwM *wnd); 239 void gotFocus(PwM *wnd);
239 /** window lost the focus */ 240 /** window lost the focus */
240 void lostFocus(PwM *wnd); 241 void lostFocus(PwM *wnd);
241 242
242protected: 243protected:
243 /** pointer to the view active in this KMainWindow */ 244 /** pointer to the view active in this KMainWindow */
244 PwMView *view; 245 PwMView *view;
245 /** pointer to the init class */ 246 /** pointer to the init class */
246 PwMInit *init; 247 PwMInit *init;
247 /** has this window already lost its virginity? 248 /** has this window already lost its virginity?
248 * Means is there an open working document 249 * Means is there an open working document
249 */ 250 */
250 bool virgin; 251 bool virgin;
251 /** "file" popup-menu */ 252 /** "file" popup-menu */
252 KPopupMenu *filePopup; 253 KPopupMenu *filePopup;
253 254
254 /** "manage" popup-menu */ 255 /** "manage" popup-menu */
255 KPopupMenu *managePopup; 256 KPopupMenu *managePopup;
256#ifdef CONFIG_KEYCARD 257#ifdef CONFIG_KEYCARD
257 /** "chipcard" popup-menu */ 258 /** "chipcard" popup-menu */
258 KPopupMenu *chipcardPopup; 259 KPopupMenu *chipcardPopup;
259#endif // CONFIG_KEYCARD 260#endif // CONFIG_KEYCARD
260 /** "view" popup-menu */ 261 /** "view" popup-menu */
261 KPopupMenu *viewPopup; 262 KPopupMenu *viewPopup;
262 /** "options" popup-menu */ 263 /** "options" popup-menu */
263 KPopupMenu *optionsPopup; 264 KPopupMenu *optionsPopup;
264 /** "help" popup-menu */ 265 /** "help" popup-menu */
265 KPopupMenu *helpPopup; 266 KPopupMenu *helpPopup;
266 /** "export" popup-menu */ 267 /** "export" popup-menu */
267 KPopupMenu *exportPopup; 268 KPopupMenu *exportPopup;
268 /** "import" popup-menu */ 269 /** "import" popup-menu */
269 KPopupMenu *importPopup; 270 KPopupMenu *importPopup;
270 /** force quit this window? */ 271 /** force quit this window? */
271 bool forceQuit; 272 bool forceQuit;
272 /** force minimize this window to the tray */ 273 /** force minimize this window to the tray */
273 bool forceMinimizeToTray; 274 bool forceMinimizeToTray;
274 275
275 276
276 277
277 278
278 private: 279 private:
279#ifdef PWM_EMBEDDED 280#ifdef PWM_EMBEDDED
280 //this are the overwritten callbackmethods from the syncinterface 281 //this are the overwritten callbackmethods from the syncinterface
281 virtual bool sync(KSyncManager* manager, QString filename, int mode); 282 virtual bool sync(KSyncManager* manager, QString filename, int mode);
282 virtual void removeSyncInfo( QString syncProfile); 283 virtual void removeSyncInfo( QString syncProfile);
283 284
284 // LR ******************************* 285 // LR *******************************
285 // sync stuff! 286 // sync stuff!
286 QPopupMenu *syncPopup; 287 QPopupMenu *syncPopup;
287 KSyncManager* syncManager; 288 KSyncManager* syncManager;
288#endif 289#endif
289 290
290 291
291 292
292 293
293 294
294 295
295 296
296 297
297}; 298};
298 299
299#endif 300#endif