summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/kaddressbook/germantranslation.txt5
-rw-r--r--kabc/addressee.cpp14
-rw-r--r--kabc/addressee.h7
-rw-r--r--kabc/field.cpp12
-rw-r--r--kabc/phonenumber.cpp4
-rw-r--r--kaddressbook/xxport/csvimportdialog.cpp4
-rw-r--r--kaddressbook/xxport/csvimportdialog.h2
7 files changed, 10 insertions, 38 deletions
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt
index 06f25e9..3448dcc 100644
--- a/bin/kdepim/kaddressbook/germantranslation.txt
+++ b/bin/kdepim/kaddressbook/germantranslation.txt
@@ -568,270 +568,269 @@
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{ "Import xml file","Importiere xml Datei" }, 587{ "Import xml file","Importiere xml Datei" },
588{ "Choose contact selection","Wähle Kontakt Auswahl" }, 588{ "Choose contact selection","Wähle Kontakt Auswahl" },
589{ "Select the entire address book","Wähle das ganze Adressbuch" }, 589{ "Select the entire address book","Wähle das ganze Adressbuch" },
590{ "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." }, 590{ "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 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." }, 591{ "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 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." }, 592{ "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{ "Select a filter to decide which contacts to select.","Selektiere einen Filter um festzulegen welche Kontakte ausgewählt werden sollen." }, 593{ "Select a filter to decide which contacts to select.","Selektiere einen Filter um festzulegen welche Kontakte ausgewählt werden sollen." },
594{ "Check the categories whose members you want to select.","Setzte die Kategorien, dessen Mitglieder Sie auswählen möchten." }, 594{ "Check the categories whose members you want to select.","Setzte die Kategorien, dessen Mitglieder Sie auswählen möchten." },
595{ "I/O device: ","I/O device: " }, 595{ "I/O device: ","I/O device: " },
596{ "Connection: ","Connection: " }, 596{ "Connection: ","Connection: " },
597{ "Model(opt.): ","Model(opt.): " }, 597{ "Model(opt.): ","Model(opt.): " },
598{ "Exporting to phone...","Exportiere aufs Handy..." }, 598{ "Exporting to phone...","Exportiere aufs Handy..." },
599{ "Error exporting to phone","Fehler beim Export aufs Handy" }, 599{ "Error exporting to phone","Fehler beim Export aufs Handy" },
600{ "contacts successfully exported.","Kontakte erfolgreich exportiert." }, 600{ "contacts successfully exported.","Kontakte erfolgreich exportiert." },
601{ "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?" }, 601{ "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{ "Set formatted name","Setze formatierten Namen" }, 602{ "Set formatted name","Setze formatierten Namen" },
603{ "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." }, 603{ "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{ "Set formatted name to:","Setze formatierten Name auf:" }, 604{ "Set formatted name to:","Setze formatierten Name auf:" },
605{ "Simple: James Bond","Einfach: James Bond" }, 605{ "Simple: James Bond","Einfach: James Bond" },
606{ "Full: Mr. James 007 Bond I","Voll: Mr. James 007 Bond I" }, 606{ "Full: Mr. James 007 Bond I","Voll: Mr. James 007 Bond I" },
607{ "Reverse: Bond, James","Umgekehrt: Bond, James" }, 607{ "Reverse: Bond, James","Umgekehrt: Bond, James" },
608{ "Organization: MI6","Organisation: MI6" }, 608{ "Organization: MI6","Organisation: MI6" },
609{ "Set formatted name to\norganization, if name empty","Setze formatierten Namen auf\nOrganisation, wenn Name leer ist." }, 609{ "Set formatted name to\norganization, if name empty","Setze formatierten Namen auf\nOrganisation, wenn Name leer ist." },
610{ "Select contact list","Selektiere Kontakt Liste" }, 610{ "Select contact list","Selektiere Kontakt Liste" },
611{ "Changing contact #%1","Ändere Kontakt #%1" }, 611{ "Changing contact #%1","Ändere Kontakt #%1" },
612{ "Refreshing view...","Lade Ansicht neu..." }, 612{ "Refreshing view...","Lade Ansicht neu..." },
613{ "Setting formatted name completed!","Setzen vom formatierten Namen beendet!" }, 613{ "Setting formatted name completed!","Setzen vom formatierten Namen beendet!" },
614{ "Removing voice...","Entferne voice..." }, 614{ "Removing voice...","Entferne voice..." },
615{ "Remove voice completed!","Entferne voice beendet!" }, 615{ "Remove voice completed!","Entferne voice beendet!" },
616{ "Merge with existing categories?","Zu bestehenden\nKategorien hinzufügen?" }, 616{ "Merge with existing categories?","Zu bestehenden\nKategorien hinzufügen?" },
617{ "Setting categories ... please wait!","Setze Kategorien ... bitte warten!" }, 617{ "Setting categories ... please wait!","Setze Kategorien ... bitte warten!" },
618{ "Setting categories completed!","Setzen der Kategorien beendet!" }, 618{ "Setting categories completed!","Setzen der Kategorien beendet!" },
619{ "OK","OK" }, 619{ "OK","OK" },
620{ "Please wait, processing categories...","Bitte warten, bearbeite Kategorien..." }, 620{ "Please wait, processing categories...","Bitte warten, bearbeite Kategorien..." },
621{ "Processing contact #%1","Bearbeite Kontakt #%1" }, 621{ "Processing contact #%1","Bearbeite Kontakt #%1" },
622{ " categories added to list! "," Kategorien zur Liste hinzugefügt! " }, 622{ " categories added to list! "," Kategorien zur Liste hinzugefügt! " },
623{ "%1: %2","%1: %2" }, 623{ "%1: %2","%1: %2" },
624{ "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" }, 624{ "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{ "<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>" }, 625{ "<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{ "Cut","Ausschneiden" }, 626{ "Cut","Ausschneiden" },
627{ "Paste","Einfügen" }, 627{ "Paste","Einfügen" },
628{ "Delete","Löschen" }, 628{ "Delete","Löschen" },
629{ "Choose...","Wähle..." }, 629{ "Choose...","Wähle..." },
630{ "Add View","Ansicht hinzufügen" }, 630{ "Add View","Ansicht hinzufügen" },
631{ "View name:","Ansicht Name:" }, 631{ "View name:","Ansicht Name:" },
632{ "View Type","Typ der Ansicht" }, 632{ "View Type","Typ der Ansicht" },
633{ "Icons represent contacts. Very simple view.","Icons repräsentieren Kontakte. Sehr einfache Ansicht." }, 633{ "Icons represent contacts. Very simple view.","Icons repräsentieren Kontakte. Sehr einfache Ansicht." },
634{ "A listing of contacts in a table. Each cell of the table holds a field of the contact.","Eine Kontaktliste in einer Tabelle." }, 634{ "A listing of contacts in a table. Each cell of the table holds a field of the contact.","Eine Kontaktliste in einer Tabelle." },
635{ "Rolodex style cards represent contacts.","Rolodex Stil Karten repräsentieren Kontakte." }, 635{ "Rolodex style cards represent contacts.","Rolodex Stil Karten repräsentieren Kontakte." },
636{ "Draw &separators","Zeichne &Trennlinie" }, 636{ "Draw &separators","Zeichne &Trennlinie" },
637{ "Separator &width:","Trennlinien &Breite:" }, 637{ "Separator &width:","Trennlinien &Breite:" },
638{ "&Padding:","Füllung:" }, 638{ "&Padding:","Füllung:" },
639{ "Cards","Karten" }, 639{ "Cards","Karten" },
640{ "&Margin:","&Rand:" }, 640{ "&Margin:","&Rand:" },
641{ "Draw &borders","Zeichne Ränder" }, 641{ "Draw &borders","Zeichne Ränder" },
642{ "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." }, 642{ "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 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." }, 643{ "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{ "Sets the width of column separators","Sets the width of column separators" }, 644{ "Sets the width of column separators","Sets the width of column separators" },
645{ "&Layout","&Layout" }, 645{ "&Layout","&Layout" },
646{ "Show &empty fields","Zeige leere Felder" }, 646{ "Show &empty fields","Zeige leere Felder" },
647{ "Show field &labels","Zeige Feld Label" }, 647{ "Show field &labels","Zeige Feld Label" },
648{ "Be&havior","Ver&halten" }, 648{ "Be&havior","Ver&halten" },
649{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" }, 649{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" },
650{ "<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>" }, 650{ "<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{ "Confirm Delete","Bestätige Löschen" }, 651{ "Confirm Delete","Bestätige Löschen" },
652{ "Edit Address Book Filter","Editiere Adressbuch Filter" }, 652{ "Edit Address Book Filter","Editiere Adressbuch Filter" },
653{ "Category rule","Kategorie Regel" }, 653{ "Category rule","Kategorie Regel" },
654{ "Include categories","Inklusive" }, 654{ "Include categories","Inklusive" },
655{ "Exclude categories","Exclusive" }, 655{ "Exclude categories","Exclusive" },
656{ "Include contacts, that are:","Schließe folgende Kontakte ein:" }, 656{ "Include contacts, that are:","Schließe folgende Kontakte ein:" },
657{ "public","Öffentlich" }, 657{ "public","Öffentlich" },
658{ "private","Privat" }, 658{ "private","Privat" },
659{ "confidential","Vertraulich" }, 659{ "confidential","Vertraulich" },
660{ "Configure Resources","Konfiguriere Resourcen" }, 660{ "Configure Resources","Konfiguriere Resourcen" },
661{ "Resource Configuration","Resource Konfiguration" }, 661{ "Resource Configuration","Resource Konfiguration" },
662{ "Resources","Resourcen" }, 662{ "Resources","Resourcen" },
663{ "Standard","Standard" }, 663{ "Standard","Standard" },
664{ "&Use as Standard","Setze als Standard" }, 664{ "&Use as Standard","Setze als Standard" },
665{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" }, 665{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" },
666{ "General Settings","Allgemeine Einstellungen" }, 666{ "General Settings","Allgemeine Einstellungen" },
667{ "Read-only","Nur-Lesen" }, 667{ "Read-only","Nur-Lesen" },
668{ "Include in sync","Schließe in Sync mit ein" }, 668{ "Include in sync","Schließe in Sync mit ein" },
669{ "%1 Resource Settings","%1 Resource Einstellungen" }, 669{ "%1 Resource Settings","%1 Resource Einstellungen" },
670{ "Format:","Format:" }, 670{ "Format:","Format:" },
671{ "Location:","Ort:" }, 671{ "Location:","Ort:" },
672{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" }, 672{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" },
673{ "Language","Sprache" }, 673{ "Language","Sprache" },
674{ "Time Format","Zeit Format" }, 674{ "Time Format","Zeit Format" },
675{ "Time Zone","Zeit Zone" }, 675{ "Time Zone","Zeit Zone" },
676{ "Data storage path","Daten Speicherpfad" }, 676{ "Data storage path","Daten Speicherpfad" },
677{ "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" }, 677{ "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{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 678{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
679{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 679{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
680{ "Save settings","Speichere Einstellungen" }, 680{ "Save settings","Speichere Einstellungen" },
681{ "Save standard","Speichere Standard" }, 681{ "Save standard","Speichere Standard" },
682{ "Save","Speichern" }, 682{ "Save","Speichern" },
683{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 683{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
684{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 684{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
685{ "Multiple Sync options","Multi Sync Optionen" }, 685{ "Multiple Sync options","Multi Sync Optionen" },
686{ "Sync algo options","Sync Ablauf Optionen" }, 686{ "Sync algo options","Sync Ablauf Optionen" },
687{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 687{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
688{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 688{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
689{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 689{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
690{ "Write back options","Optionen zum Zurückschreiben" }, 690{ "Write back options","Optionen zum Zurückschreiben" },
691{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 691{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
692{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 692{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
693{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 693{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
694{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 694{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
695{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 695{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
696{ "Time period","Zeitspanne" }, 696{ "Time period","Zeitspanne" },
697{ "From ","Von " }, 697{ "From ","Von " },
698{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 698{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
699{ " weeks in the future "," Wochen in der Zukunft " }, 699{ " weeks in the future "," Wochen in der Zukunft " },
700{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 700{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
701{ "Local temp file:","Lokale temp Datei:" }, 701{ "Local temp file:","Lokale temp Datei:" },
702{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 702{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
703{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 703{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
704{ "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." }, 704{ "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{ "Sorry","Tut mir leid" }, 705{ "Sorry","Tut mir leid" },
706{ "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" }, 706{ "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" },
707{ "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" }, 707{ "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{ "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" }, 708{ "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{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" }, 709{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" },
710{ "Some changes are only\neffective after a restart!\n","Einige Änderungen werden erst\nnach einem Neustart übernommen!\n" }, 710{ "Some changes are only\neffective after a restart!\n","Einige Änderungen werden erst\nnach einem Neustart übernommen!\n" },
711{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, 711{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
712{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, 712{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
713{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, 713{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
714{ "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?" }, 714{ "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{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, 715{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
716{ "Error","Fehler" }, 716{ "Error","Fehler" },
717{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, 717{ ""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 Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, 718{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
719{ "Warning","Warnung" }, 719{ "Warning","Warnung" },
720{ "Select week number","Wähle Wochen Nummer" }, 720{ "Select week number","Wähle Wochen Nummer" },
721{ "Februar","Februar" }, 721{ "Februar","Februar" },
722{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, 722{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " },
723{ "Password for remote access:","Passwort für fernen Zugriff:" }, 723{ "Password for remote access:","Passwort für fernen Zugriff:" },
724{ "Remote IP address:","Ferne IP Adresse:" }, 724{ "Remote IP address:","Ferne IP Adresse:" },
725{ "Remote port number:","Ferne Port Nummer:" }, 725{ "Remote port number:","Ferne Port Nummer:" },
726{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, 726{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
727{ "Remote from: ","Fern von: " }, 727{ "Remote from: ","Fern von: " },
728{ "Local from: ","Lokal von: " }, 728{ "Local from: ","Lokal von: " },
729{ "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" }, 729{ "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{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, 730{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" },
731{ "Write back","Schreibe zurück" }, 731{ "Write back","Schreibe zurück" },
732{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, 732{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
733{ "Received sync request","Sync Anfrage erhalten" }, 733{ "Received sync request","Sync Anfrage erhalten" },
734{ "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." }, 734{ "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{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, 735{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
736{ "Data saved to temp file!","Daten in temp Datei gespeichert!" }, 736{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
737{ "Sending file...","Sende Datei..." }, 737{ "Sending file...","Sende Datei..." },
738{ "Waiting for synced file...","Warte auf gesyncte Daten..." }, 738{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
739{ "Receiving synced file...","Gesyncte Daten erhalten..." }, 739{ "Receiving synced file...","Gesyncte Daten erhalten..." },
740{ "Received %1 bytes","%1 Bytes erhalten" }, 740{ "Received %1 bytes","%1 Bytes erhalten" },
741{ "Writing file to disk...","Speichere Datei..." }, 741{ "Writing file to disk...","Speichere Datei..." },
742{ "Pi-Sync successful!","Pi-Sync erfolgreich!" }, 742{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
743{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, 743{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" },
744{ "Synchronize!","Synchronisiere!" }, 744{ "Synchronize!","Synchronisiere!" },
745{ "High clock skew!","Großer Uhrzeitunterschied!" }, 745{ "High clock skew!","Großer Uhrzeitunterschied!" },
746{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, 746{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
747{ "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!" }, 747{ "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{ "Change search field enable jump bar","Ändere Suchfeld um Jumpbar anzuzeigen" }, 748{ "Change search field enable jump bar","Ändere Suchfeld um Jumpbar anzuzeigen" },
749{ "Search with '*' prefix (wildcard)","Suche mit '*' Prefix (Wildcard)" }, 749{ "Search with '*' prefix (wildcard)","Suche mit '*' Prefix (Wildcard)" },
750{ "Shrink searchfield in portrait view","Verkleinere Suchfeld im Portraitmodus" }, 750{ "Shrink searchfield in portrait view","Verkleinere Suchfeld im Portraitmodus" },
751{ "Edit new contact","Bearbeite neuen Kontakt" }, 751{ "Edit new contact","Bearbeite neuen Kontakt" },
752{ "Edit ","Bearbeite " }, 752{ "Edit ","Bearbeite " },
753{ "No contact changed!","Kein Kontakt verändert" }, 753{ "No contact changed!","Kein Kontakt verändert" },
754{ "%1 contacts changed!","%1 Kontakte geändert!" }, 754{ "%1 contacts changed!","%1 Kontakte geändert!" },
755{ "Mobile (home)","Handy (Privat)" }, 755{ "Mobile (home)","Handy (Privat)" },
756{ "Mobile (work)","Handy (Arbeit)" }, 756{ "Mobile (work)","Handy (Arbeit)" },
757{ "Def.Formatted Name","Def. Format. Name" }, 757{ "Def.Formatted Name","Def. Format. Name" },
758{ "Colors","Farben" }, 758{ "Colors","Farben" },
759{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, 759{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
760{ "Backup enabled","Backup angeschaltet" }, 760{ "Backup enabled","Backup angeschaltet" },
761{ "Use standard backup dir","Standard Backupverzeichnis" }, 761{ "Use standard backup dir","Standard Backupverzeichnis" },
762{ "Number of Backups:","Anzahl der Backups" }, 762{ "Number of Backups:","Anzahl der Backups" },
763{ "Make backup every ","Mache ein Backup alle " }, 763{ "Make backup every ","Mache ein Backup alle " },
764{ " days"," Tage" }, 764{ " days"," Tage" },
765{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, 765{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." },
766{ "Backup Failed!","Backup Problem!" }, 766{ "Backup Failed!","Backup Problem!" },
767{ "Try again now","Versuche jetzt nochmal" }, 767{ "Try again now","Versuche jetzt nochmal" },
768{ "Try again later","Versuche später nochmal" }, 768{ "Try again later","Versuche später nochmal" },
769{ "Try again tomorrow","Versuche morgen nochmal" }, 769{ "Try again tomorrow","Versuche morgen nochmal" },
770{ "Disable backup","Schalte Backup ab" }, 770{ "Disable backup","Schalte Backup ab" },
771{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, 771{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
772{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, 772{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
773{ "Choose action","Wähle Aktion" }, 773{ "Choose action","Wähle Aktion" },
774{ "&Configure KA/Pi...","Konfiguriere KA/Pi..." }, 774{ "&Configure KA/Pi...","Konfiguriere KA/Pi..." },
775{ "Global Settings...","Globale Einstellungen..." }, 775{ "Global Settings...","Globale Einstellungen..." },
776{ "Spouse","Ehegatte" }, 776{ "Spouse","Ehegatte" },
777{ "Notes","Notizen" }, 777{ "Notes","Notizen" },
778{ "Messanger","Messanger" }, 778{ "Messanger","Messanger" },
779{ "Assistant","Assistent" }, 779{ "Assistant","Assistent" },
780{ "Manager","Manager" }, 780{ "Manager","Manager" },
781{ "Secrecy","Sichtbar" }, 781{ "Secrecy","Sichtbar" },
782{ "male","männlich" }, 782{ "male","männlich" },
783{ "female","weiblich" }, 783{ "female","weiblich" },
784{ "Hide!","Verbergen!" }, 784{ "Hide!","Verbergen!" },
785{ "Show!","Anzeigen!" }, 785{ "Show!","Anzeigen!" },
786{ "Details","Details" }, 786{ "Details","Details" },
787{ "Search:","Suche:" }, 787{ "Search:","Suche:" },
788{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" }, 788{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" },
789{ "Pi-Sync Port Error","Pi-Sync Port Fehler" }, 789{ "Pi-Sync Port Error","Pi-Sync Port Fehler" },
790{ "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" }, 790{ "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" },
791{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" }, 791{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" },
792{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" }, 792{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" },
793{ "Pi-Sync Error","Pi-Sync Fehler" }, 793{ "Pi-Sync Error","Pi-Sync Fehler" },
794{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" }, 794{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" },
795{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" }, 795{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" },
796{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." }, 796{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." },
797{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" }, 797{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" },
798{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, 798{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" },
799{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, 799{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" },
800{ "Receiving file from remote...","Empfange entfernte Datei..." }, 800{ "Receiving file from remote...","Empfange entfernte Datei..." },
801{ "Sending back synced file...","Sende synchronisierte Datei zurück..." }, 801{ "Sending back synced file...","Sende synchronisierte Datei zurück..." },
802{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, 802{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" },
803{ "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" }, 803{ "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" },
804{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, 804{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." },
805{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, 805{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" },
806{ "Writing back file ...","Schreibe Datei zurück..." }, 806{ "Writing back file ...","Schreibe Datei zurück..." },
807{ "Sending back file ...","Sende Datei zurück..." }, 807{ "Sending back file ...","Sende Datei zurück..." },
808{ "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" }, 808{ "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" },
809{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, 809{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" },
810{ "...and %1 more\ncontact(s) selected","...und noch %1 Kontakte\n mehr ausgewählt" }, 810{ "...and %1 more\ncontact(s) selected","...und noch %1 Kontakte\n mehr ausgewählt" },
811{ "Do you really\nwant to delete the\nsetected contact(s)?\n\n","Möchten Sie wirklich\ndie ausgewählten\nKontakte löschen?\n\n" }, 811{ "Do you really\nwant to delete the\nsetected contact(s)?\n\n","Möchten Sie wirklich\ndie ausgewählten\nKontakte löschen?\n\n" },
812{ "%1 contacts\nsuccessfully\nimported.","%1 Kontakte\nerfolgreich\nimportiert." }, 812{ "%1 contacts\nsuccessfully\nimported.","%1 Kontakte\nerfolgreich\nimportiert." },
813{ "Import this contact?","Importiere diesen Kontakt?" }, 813{ "Import this contact?","Importiere diesen Kontakt?" },
814{ "Import all!","Importiere alle!" }, 814{ "Import all!","Importiere alle!" },
815{ "Loading addressbook data ... please wait","Lade Adressbuchdaten ... bitte warten" }, 815{ "Loading addressbook data ... please wait","Lade Adressbuchdaten ... bitte warten" },
816{ "Import Format","Import Format" }, 816{ "Import Format","Import Format" },
817{ "Select import format!\nDefault and standard is Utf8.\nLatin1 may be the right\nfor some West Europian languages.","Wähle Import Format!\nDefault und Standard ist Utf8.\nLatin1 kann das richtige für\nWesteuropäische Sprachen sein." }, 817{ "Select import format!\nDefault and standard is Utf8.\nLatin1 may be the right\nfor some West Europian languages.","Wähle Import Format!\nDefault und Standard ist Utf8.\nLatin1 kann das richtige für\nWesteuropäische Sprachen sein." },
818{ "Home2","Privat2" }, 818{ "Home2","Privat2" },
819{ "Work2","Arbeit2" }, 819{ "Work2","Arbeit2" },
820{ "Fax (Work)","Fax (Arbeit)" }, 820{ "Fax (Work)","Fax (Arbeit)" },
821{ "Fax (Home)","Fax (Privat)" }, 821{ "Fax (Home)","Fax (Privat)" },
822{ "Assistent","Sekretär(in)" }, 822{ "Assistent","Sekretär(in)" },
823{ "Company","Firma" }, 823{ "Company","Firma" },
824{ "Mobile2 (Work)","Handy2 (Arbeit)" }, 824{ "Mobile2","Handy2" },
825{ "Mobile2 (Car)","Handy2 (Auto)" },
826{ "Callback","Rückruf" }, 825{ "Callback","Rückruf" },
827{ "Fax (Other)","Fax (Sonst.)" }, 826{ "Fax (Other)","Fax (Sonst.)" },
828{ "Primary","Bevorzugt" }, 827{ "Primary","Bevorzugt" },
829{ "Mobile (Home)","Handy (Privat)" }, 828{ "Mobile","Handy" },
830{ "Unfiled","Nicht zugeordnet" }, 829{ "Unfiled","Nicht zugeordnet" },
831{ "Format.n.:","Format.N.:" }, 830{ "Format.n.:","Format.N.:" },
832{ "Other Phone","Sonst. Telefon" }, 831{ "Other Phone","Sonst. Telefon" },
833{ "","" }, 832{ "","" },
834{ "","" }, 833{ "","" },
835{ "","" }, 834{ "","" },
836{ "","" }, 835{ "","" },
837{ "","" }, \ No newline at end of file 836{ "","" }, \ No newline at end of file
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 0d8e8e8..2f4a9af 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -802,542 +802,532 @@ void Addressee::setName( const QString &name )
802{ 802{
803 if ( name == mData->name ) return; 803 if ( name == mData->name ) return;
804 detach(); 804 detach();
805 mData->empty = false; 805 mData->empty = false;
806 mData->name = name; 806 mData->name = name;
807} 807}
808 808
809QString Addressee::name() const 809QString Addressee::name() const
810{ 810{
811 return mData->name; 811 return mData->name;
812} 812}
813 813
814QString Addressee::nameLabel() 814QString Addressee::nameLabel()
815{ 815{
816 return i18n("Name"); 816 return i18n("Name");
817} 817}
818 818
819 819
820void Addressee::setFormattedName( const QString &formattedName ) 820void Addressee::setFormattedName( const QString &formattedName )
821{ 821{
822 if ( formattedName == mData->formattedName ) return; 822 if ( formattedName == mData->formattedName ) return;
823 detach(); 823 detach();
824 mData->empty = false; 824 mData->empty = false;
825 mData->formattedName = formattedName; 825 mData->formattedName = formattedName;
826} 826}
827 827
828QString Addressee::formattedName() const 828QString Addressee::formattedName() const
829{ 829{
830 return mData->formattedName; 830 return mData->formattedName;
831} 831}
832 832
833QString Addressee::formattedNameLabel() 833QString Addressee::formattedNameLabel()
834{ 834{
835 return i18n("Formatted Name"); 835 return i18n("Formatted Name");
836} 836}
837 837
838 838
839void Addressee::setFamilyName( const QString &familyName ) 839void Addressee::setFamilyName( const QString &familyName )
840{ 840{
841 if ( familyName == mData->familyName ) return; 841 if ( familyName == mData->familyName ) return;
842 detach(); 842 detach();
843 mData->empty = false; 843 mData->empty = false;
844 mData->familyName = familyName; 844 mData->familyName = familyName;
845} 845}
846 846
847QString Addressee::familyName() const 847QString Addressee::familyName() const
848{ 848{
849 return mData->familyName; 849 return mData->familyName;
850} 850}
851 851
852QString Addressee::familyNameLabel() 852QString Addressee::familyNameLabel()
853{ 853{
854 return i18n("Family Name"); 854 return i18n("Family Name");
855} 855}
856 856
857 857
858void Addressee::setGivenName( const QString &givenName ) 858void Addressee::setGivenName( const QString &givenName )
859{ 859{
860 if ( givenName == mData->givenName ) return; 860 if ( givenName == mData->givenName ) return;
861 detach(); 861 detach();
862 mData->empty = false; 862 mData->empty = false;
863 mData->givenName = givenName; 863 mData->givenName = givenName;
864} 864}
865 865
866QString Addressee::givenName() const 866QString Addressee::givenName() const
867{ 867{
868 return mData->givenName; 868 return mData->givenName;
869} 869}
870 870
871QString Addressee::givenNameLabel() 871QString Addressee::givenNameLabel()
872{ 872{
873 return i18n("Given Name"); 873 return i18n("Given Name");
874} 874}
875 875
876 876
877void Addressee::setAdditionalName( const QString &additionalName ) 877void Addressee::setAdditionalName( const QString &additionalName )
878{ 878{
879 if ( additionalName == mData->additionalName ) return; 879 if ( additionalName == mData->additionalName ) return;
880 detach(); 880 detach();
881 mData->empty = false; 881 mData->empty = false;
882 mData->additionalName = additionalName; 882 mData->additionalName = additionalName;
883} 883}
884 884
885QString Addressee::additionalName() const 885QString Addressee::additionalName() const
886{ 886{
887 return mData->additionalName; 887 return mData->additionalName;
888} 888}
889 889
890QString Addressee::additionalNameLabel() 890QString Addressee::additionalNameLabel()
891{ 891{
892 return i18n("Additional Names"); 892 return i18n("Additional Names");
893} 893}
894 894
895 895
896void Addressee::setPrefix( const QString &prefix ) 896void Addressee::setPrefix( const QString &prefix )
897{ 897{
898 if ( prefix == mData->prefix ) return; 898 if ( prefix == mData->prefix ) return;
899 detach(); 899 detach();
900 mData->empty = false; 900 mData->empty = false;
901 mData->prefix = prefix; 901 mData->prefix = prefix;
902} 902}
903 903
904QString Addressee::prefix() const 904QString Addressee::prefix() const
905{ 905{
906 return mData->prefix; 906 return mData->prefix;
907} 907}
908 908
909QString Addressee::prefixLabel() 909QString Addressee::prefixLabel()
910{ 910{
911 return i18n("Honorific Prefixes"); 911 return i18n("Honorific Prefixes");
912} 912}
913 913
914 914
915void Addressee::setSuffix( const QString &suffix ) 915void Addressee::setSuffix( const QString &suffix )
916{ 916{
917 if ( suffix == mData->suffix ) return; 917 if ( suffix == mData->suffix ) return;
918 detach(); 918 detach();
919 mData->empty = false; 919 mData->empty = false;
920 mData->suffix = suffix; 920 mData->suffix = suffix;
921} 921}
922 922
923QString Addressee::suffix() const 923QString Addressee::suffix() const
924{ 924{
925 return mData->suffix; 925 return mData->suffix;
926} 926}
927 927
928QString Addressee::suffixLabel() 928QString Addressee::suffixLabel()
929{ 929{
930 return i18n("Honorific Suffixes"); 930 return i18n("Honorific Suffixes");
931} 931}
932 932
933 933
934void Addressee::setNickName( const QString &nickName ) 934void Addressee::setNickName( const QString &nickName )
935{ 935{
936 if ( nickName == mData->nickName ) return; 936 if ( nickName == mData->nickName ) return;
937 detach(); 937 detach();
938 mData->empty = false; 938 mData->empty = false;
939 mData->nickName = nickName; 939 mData->nickName = nickName;
940} 940}
941 941
942QString Addressee::nickName() const 942QString Addressee::nickName() const
943{ 943{
944 return mData->nickName; 944 return mData->nickName;
945} 945}
946 946
947QString Addressee::nickNameLabel() 947QString Addressee::nickNameLabel()
948{ 948{
949 return i18n("Nick Name"); 949 return i18n("Nick Name");
950} 950}
951 951
952 952
953void Addressee::setBirthday( const QDateTime &birthday ) 953void Addressee::setBirthday( const QDateTime &birthday )
954{ 954{
955 if ( birthday == mData->birthday ) return; 955 if ( birthday == mData->birthday ) return;
956 detach(); 956 detach();
957 mData->empty = false; 957 mData->empty = false;
958 mData->birthday = birthday; 958 mData->birthday = birthday;
959} 959}
960 960
961QDateTime Addressee::birthday() const 961QDateTime Addressee::birthday() const
962{ 962{
963 return mData->birthday; 963 return mData->birthday;
964} 964}
965 965
966QString Addressee::birthdayLabel() 966QString Addressee::birthdayLabel()
967{ 967{
968 return i18n("Birthday"); 968 return i18n("Birthday");
969} 969}
970 970
971 971
972QString Addressee::homeAddressStreetLabel() 972QString Addressee::homeAddressStreetLabel()
973{ 973{
974 return i18n("Home Address Street"); 974 return i18n("Home Address Street");
975} 975}
976 976
977 977
978QString Addressee::homeAddressLocalityLabel() 978QString Addressee::homeAddressLocalityLabel()
979{ 979{
980 return i18n("Home Address Locality"); 980 return i18n("Home Address Locality");
981} 981}
982 982
983 983
984QString Addressee::homeAddressRegionLabel() 984QString Addressee::homeAddressRegionLabel()
985{ 985{
986 return i18n("Home Address Region"); 986 return i18n("Home Address Region");
987} 987}
988 988
989 989
990QString Addressee::homeAddressPostalCodeLabel() 990QString Addressee::homeAddressPostalCodeLabel()
991{ 991{
992 return i18n("Home Address Postal Code"); 992 return i18n("Home Address Postal Code");
993} 993}
994 994
995 995
996QString Addressee::homeAddressCountryLabel() 996QString Addressee::homeAddressCountryLabel()
997{ 997{
998 return i18n("Home Address Country"); 998 return i18n("Home Address Country");
999} 999}
1000 1000
1001 1001
1002QString Addressee::homeAddressLabelLabel() 1002QString Addressee::homeAddressLabelLabel()
1003{ 1003{
1004 return i18n("Home Address Label"); 1004 return i18n("Home Address Label");
1005} 1005}
1006 1006
1007 1007
1008QString Addressee::businessAddressStreetLabel() 1008QString Addressee::businessAddressStreetLabel()
1009{ 1009{
1010 return i18n("Business Address Street"); 1010 return i18n("Business Address Street");
1011} 1011}
1012 1012
1013 1013
1014QString Addressee::businessAddressLocalityLabel() 1014QString Addressee::businessAddressLocalityLabel()
1015{ 1015{
1016 return i18n("Business Address Locality"); 1016 return i18n("Business Address Locality");
1017} 1017}
1018 1018
1019 1019
1020QString Addressee::businessAddressRegionLabel() 1020QString Addressee::businessAddressRegionLabel()
1021{ 1021{
1022 return i18n("Business Address Region"); 1022 return i18n("Business Address Region");
1023} 1023}
1024 1024
1025 1025
1026QString Addressee::businessAddressPostalCodeLabel() 1026QString Addressee::businessAddressPostalCodeLabel()
1027{ 1027{
1028 return i18n("Business Address Postal Code"); 1028 return i18n("Business Address Postal Code");
1029} 1029}
1030 1030
1031 1031
1032QString Addressee::businessAddressCountryLabel() 1032QString Addressee::businessAddressCountryLabel()
1033{ 1033{
1034 return i18n("Business Address Country"); 1034 return i18n("Business Address Country");
1035} 1035}
1036 1036
1037 1037
1038QString Addressee::businessAddressLabelLabel() 1038QString Addressee::businessAddressLabelLabel()
1039{ 1039{
1040 return i18n("Business Address Label"); 1040 return i18n("Business Address Label");
1041} 1041}
1042 1042
1043 1043
1044QString Addressee::homePhoneLabel() 1044QString Addressee::homePhoneLabel()
1045{ 1045{
1046 return i18n("Home Phone"); 1046 return i18n("Home Phone");
1047} 1047}
1048 1048
1049 1049
1050QString Addressee::businessPhoneLabel() 1050QString Addressee::businessPhoneLabel()
1051{ 1051{
1052 return i18n("Work Phone"); 1052 return i18n("Work Phone");
1053} 1053}
1054 1054
1055 1055
1056QString Addressee::mobilePhoneLabel() 1056QString Addressee::mobilePhoneLabel()
1057{ 1057{
1058 return i18n("Mobile Phone"); 1058 return i18n("Mobile");
1059} 1059}
1060QString Addressee::mobileWorkPhoneLabel() 1060QString Addressee::mobileWorkPhoneLabel()
1061{ 1061{
1062 return i18n("Mobile2 (Work)"); 1062 return i18n("Mobile2");
1063}
1064QString Addressee::mobileHomePhoneLabel()
1065{
1066 return i18n("Mobile (Home)");
1067} 1063}
1068 1064
1069 1065
1070QString Addressee::homeFaxLabel() 1066QString Addressee::homeFaxLabel()
1071{ 1067{
1072 return i18n("Fax (Home)"); 1068 return i18n("Fax (Home)");
1073} 1069}
1074 1070
1075 1071
1076QString Addressee::businessFaxLabel() 1072QString Addressee::businessFaxLabel()
1077{ 1073{
1078 return i18n("Fax (Work)"); 1074 return i18n("Fax (Work)");
1079} 1075}
1080 1076
1081 1077
1082QString Addressee::carPhoneLabel()
1083{
1084 return i18n("Mobile2 (Car)");
1085}
1086
1087
1088QString Addressee::isdnLabel() 1078QString Addressee::isdnLabel()
1089{ 1079{
1090 return i18n("ISDN"); 1080 return i18n("ISDN");
1091} 1081}
1092 1082
1093 1083
1094QString Addressee::pagerLabel() 1084QString Addressee::pagerLabel()
1095{ 1085{
1096 return i18n("Pager"); 1086 return i18n("Pager");
1097} 1087}
1098QString Addressee::otherPhoneLabel() 1088QString Addressee::otherPhoneLabel()
1099{ 1089{
1100 return i18n("Other Phone"); 1090 return i18n("Other Phone");
1101} 1091}
1102 1092
1103QString Addressee::sipLabel() 1093QString Addressee::sipLabel()
1104{ 1094{
1105 return i18n("SIP"); 1095 return i18n("SIP");
1106} 1096}
1107 1097
1108QString Addressee::emailLabel() 1098QString Addressee::emailLabel()
1109{ 1099{
1110 return i18n("Email Address"); 1100 return i18n("Email Address");
1111} 1101}
1112 1102
1113 1103
1114void Addressee::setMailer( const QString &mailer ) 1104void Addressee::setMailer( const QString &mailer )
1115{ 1105{
1116 if ( mailer == mData->mailer ) return; 1106 if ( mailer == mData->mailer ) return;
1117 detach(); 1107 detach();
1118 mData->empty = false; 1108 mData->empty = false;
1119 mData->mailer = mailer; 1109 mData->mailer = mailer;
1120} 1110}
1121 1111
1122QString Addressee::mailer() const 1112QString Addressee::mailer() const
1123{ 1113{
1124 return mData->mailer; 1114 return mData->mailer;
1125} 1115}
1126 1116
1127QString Addressee::mailerLabel() 1117QString Addressee::mailerLabel()
1128{ 1118{
1129 return i18n("Mail Client"); 1119 return i18n("Mail Client");
1130} 1120}
1131 1121
1132 1122
1133void Addressee::setTimeZone( const TimeZone &timeZone ) 1123void Addressee::setTimeZone( const TimeZone &timeZone )
1134{ 1124{
1135 if ( timeZone == mData->timeZone ) return; 1125 if ( timeZone == mData->timeZone ) return;
1136 detach(); 1126 detach();
1137 mData->empty = false; 1127 mData->empty = false;
1138 mData->timeZone = timeZone; 1128 mData->timeZone = timeZone;
1139} 1129}
1140 1130
1141TimeZone Addressee::timeZone() const 1131TimeZone Addressee::timeZone() const
1142{ 1132{
1143 return mData->timeZone; 1133 return mData->timeZone;
1144} 1134}
1145 1135
1146QString Addressee::timeZoneLabel() 1136QString Addressee::timeZoneLabel()
1147{ 1137{
1148 return i18n("Time Zone"); 1138 return i18n("Time Zone");
1149} 1139}
1150 1140
1151 1141
1152void Addressee::setGeo( const Geo &geo ) 1142void Addressee::setGeo( const Geo &geo )
1153{ 1143{
1154 if ( geo == mData->geo ) return; 1144 if ( geo == mData->geo ) return;
1155 detach(); 1145 detach();
1156 mData->empty = false; 1146 mData->empty = false;
1157 mData->geo = geo; 1147 mData->geo = geo;
1158} 1148}
1159 1149
1160Geo Addressee::geo() const 1150Geo Addressee::geo() const
1161{ 1151{
1162 return mData->geo; 1152 return mData->geo;
1163} 1153}
1164 1154
1165QString Addressee::geoLabel() 1155QString Addressee::geoLabel()
1166{ 1156{
1167 return i18n("Geographic Position"); 1157 return i18n("Geographic Position");
1168} 1158}
1169 1159
1170 1160
1171void Addressee::setTitle( const QString &title ) 1161void Addressee::setTitle( const QString &title )
1172{ 1162{
1173 if ( title == mData->title ) return; 1163 if ( title == mData->title ) return;
1174 detach(); 1164 detach();
1175 mData->empty = false; 1165 mData->empty = false;
1176 mData->title = title; 1166 mData->title = title;
1177} 1167}
1178 1168
1179QString Addressee::title() const 1169QString Addressee::title() const
1180{ 1170{
1181 return mData->title; 1171 return mData->title;
1182} 1172}
1183 1173
1184QString Addressee::titleLabel() 1174QString Addressee::titleLabel()
1185{ 1175{
1186 return i18n("Title"); 1176 return i18n("Title");
1187} 1177}
1188 1178
1189 1179
1190void Addressee::setRole( const QString &role ) 1180void Addressee::setRole( const QString &role )
1191{ 1181{
1192 if ( role == mData->role ) return; 1182 if ( role == mData->role ) return;
1193 detach(); 1183 detach();
1194 mData->empty = false; 1184 mData->empty = false;
1195 mData->role = role; 1185 mData->role = role;
1196} 1186}
1197 1187
1198QString Addressee::role() const 1188QString Addressee::role() const
1199{ 1189{
1200 return mData->role; 1190 return mData->role;
1201} 1191}
1202 1192
1203QString Addressee::roleLabel() 1193QString Addressee::roleLabel()
1204{ 1194{
1205 return i18n("Role"); 1195 return i18n("Role");
1206} 1196}
1207 1197
1208 1198
1209void Addressee::setOrganization( const QString &organization ) 1199void Addressee::setOrganization( const QString &organization )
1210{ 1200{
1211 if ( organization == mData->organization ) return; 1201 if ( organization == mData->organization ) return;
1212 detach(); 1202 detach();
1213 mData->empty = false; 1203 mData->empty = false;
1214 mData->organization = organization; 1204 mData->organization = organization;
1215} 1205}
1216 1206
1217QString Addressee::organization() const 1207QString Addressee::organization() const
1218{ 1208{
1219 return mData->organization; 1209 return mData->organization;
1220} 1210}
1221 1211
1222QString Addressee::organizationLabel() 1212QString Addressee::organizationLabel()
1223{ 1213{
1224 return i18n("Organization"); 1214 return i18n("Organization");
1225} 1215}
1226 1216
1227 1217
1228void Addressee::setNote( const QString &note ) 1218void Addressee::setNote( const QString &note )
1229{ 1219{
1230 if ( note == mData->note ) return; 1220 if ( note == mData->note ) return;
1231 detach(); 1221 detach();
1232 mData->empty = false; 1222 mData->empty = false;
1233 mData->note = note; 1223 mData->note = note;
1234} 1224}
1235 1225
1236QString Addressee::note() const 1226QString Addressee::note() const
1237{ 1227{
1238 return mData->note; 1228 return mData->note;
1239} 1229}
1240 1230
1241QString Addressee::noteLabel() 1231QString Addressee::noteLabel()
1242{ 1232{
1243 return i18n("Note"); 1233 return i18n("Note");
1244} 1234}
1245 1235
1246 1236
1247void Addressee::setProductId( const QString &productId ) 1237void Addressee::setProductId( const QString &productId )
1248{ 1238{
1249 if ( productId == mData->productId ) return; 1239 if ( productId == mData->productId ) return;
1250 detach(); 1240 detach();
1251 mData->empty = false; 1241 mData->empty = false;
1252 mData->productId = productId; 1242 mData->productId = productId;
1253} 1243}
1254 1244
1255QString Addressee::productId() const 1245QString Addressee::productId() const
1256{ 1246{
1257 return mData->productId; 1247 return mData->productId;
1258} 1248}
1259 1249
1260QString Addressee::productIdLabel() 1250QString Addressee::productIdLabel()
1261{ 1251{
1262 return i18n("Product Identifier"); 1252 return i18n("Product Identifier");
1263} 1253}
1264 1254
1265 1255
1266void Addressee::setRevision( const QDateTime &revision ) 1256void Addressee::setRevision( const QDateTime &revision )
1267{ 1257{
1268 if ( revision == mData->revision ) return; 1258 if ( revision == mData->revision ) return;
1269 detach(); 1259 detach();
1270 mData->empty = false; 1260 mData->empty = false;
1271 mData->revision = QDateTime( revision.date(), 1261 mData->revision = QDateTime( revision.date(),
1272 QTime (revision.time().hour(), 1262 QTime (revision.time().hour(),
1273 revision.time().minute(), 1263 revision.time().minute(),
1274 revision.time().second())); 1264 revision.time().second()));
1275} 1265}
1276 1266
1277QDateTime Addressee::revision() const 1267QDateTime Addressee::revision() const
1278{ 1268{
1279 return mData->revision; 1269 return mData->revision;
1280} 1270}
1281 1271
1282QString Addressee::revisionLabel() 1272QString Addressee::revisionLabel()
1283{ 1273{
1284 return i18n("Revision Date"); 1274 return i18n("Revision Date");
1285} 1275}
1286 1276
1287 1277
1288void Addressee::setSortString( const QString &sortString ) 1278void Addressee::setSortString( const QString &sortString )
1289{ 1279{
1290 if ( sortString == mData->sortString ) return; 1280 if ( sortString == mData->sortString ) return;
1291 detach(); 1281 detach();
1292 mData->empty = false; 1282 mData->empty = false;
1293 mData->sortString = sortString; 1283 mData->sortString = sortString;
1294} 1284}
1295 1285
1296QString Addressee::sortString() const 1286QString Addressee::sortString() const
1297{ 1287{
1298 return mData->sortString; 1288 return mData->sortString;
1299} 1289}
1300 1290
1301QString Addressee::sortStringLabel() 1291QString Addressee::sortStringLabel()
1302{ 1292{
1303 return i18n("Sort String"); 1293 return i18n("Sort String");
1304} 1294}
1305 1295
1306 1296
1307void Addressee::setUrl( const KURL &url ) 1297void Addressee::setUrl( const KURL &url )
1308{ 1298{
1309 if ( url == mData->url ) return; 1299 if ( url == mData->url ) return;
1310 detach(); 1300 detach();
1311 mData->empty = false; 1301 mData->empty = false;
1312 mData->url = url; 1302 mData->url = url;
1313} 1303}
1314 1304
1315KURL Addressee::url() const 1305KURL Addressee::url() const
1316{ 1306{
1317 return mData->url; 1307 return mData->url;
1318} 1308}
1319 1309
1320QString Addressee::urlLabel() 1310QString Addressee::urlLabel()
1321{ 1311{
1322 return i18n("URL"); 1312 return i18n("URL");
1323} 1313}
1324 1314
1325 1315
1326void Addressee::setSecrecy( const Secrecy &secrecy ) 1316void Addressee::setSecrecy( const Secrecy &secrecy )
1327{ 1317{
1328 if ( secrecy == mData->secrecy ) return; 1318 if ( secrecy == mData->secrecy ) return;
1329 detach(); 1319 detach();
1330 mData->empty = false; 1320 mData->empty = false;
1331 mData->secrecy = secrecy; 1321 mData->secrecy = secrecy;
1332} 1322}
1333 1323
1334Secrecy Addressee::secrecy() const 1324Secrecy Addressee::secrecy() const
1335{ 1325{
1336 return mData->secrecy; 1326 return mData->secrecy;
1337} 1327}
1338 1328
1339QString Addressee::secrecyLabel() 1329QString Addressee::secrecyLabel()
1340{ 1330{
1341 return i18n("Security Class"); 1331 return i18n("Security Class");
1342} 1332}
1343 1333
diff --git a/kabc/addressee.h b/kabc/addressee.h
index fcadda6..aac78dc 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -79,529 +79,524 @@ class Resource;
79 data enty, but shouldn't be used for displaying the data to the user. 79 data enty, but shouldn't be used for displaying the data to the user.
80 */ 80 */
81class Addressee 81class Addressee
82{ 82{
83 friend QDataStream &operator<<( QDataStream &, const Addressee & ); 83 friend QDataStream &operator<<( QDataStream &, const Addressee & );
84 friend QDataStream &operator>>( QDataStream &, Addressee & ); 84 friend QDataStream &operator>>( QDataStream &, Addressee & );
85 85
86 public: 86 public:
87 typedef QValueList<Addressee> List; 87 typedef QValueList<Addressee> List;
88 88
89 /** 89 /**
90 Construct an empty address book entry. 90 Construct an empty address book entry.
91 */ 91 */
92 Addressee(); 92 Addressee();
93 ~Addressee(); 93 ~Addressee();
94 94
95 Addressee( const Addressee & ); 95 Addressee( const Addressee & );
96 Addressee &operator=( const Addressee & ); 96 Addressee &operator=( const Addressee & );
97 97
98 bool operator==( const Addressee & ) const; 98 bool operator==( const Addressee & ) const;
99 bool operator!=( const Addressee & ) const; 99 bool operator!=( const Addressee & ) const;
100 // sync stuff 100 // sync stuff
101 void setTempSyncStat(int id); 101 void setTempSyncStat(int id);
102 int tempSyncStat() const; 102 int tempSyncStat() const;
103 void setIDStr( const QString & ); 103 void setIDStr( const QString & );
104 const QString IDStr() const; 104 const QString IDStr() const;
105 void setID( const QString &, const QString & ); 105 void setID( const QString &, const QString & );
106 const QString getID( const QString & ) const; 106 const QString getID( const QString & ) const;
107 void setCsum( const QString &, const QString & ); 107 void setCsum( const QString &, const QString & );
108 const QString getCsum( const QString & ) const ; 108 const QString getCsum( const QString & ) const ;
109 void removeID(const QString &); 109 void removeID(const QString &);
110 void computeCsum(const QString &dev); 110 void computeCsum(const QString &dev);
111 ulong getCsum4List( const QStringList & attList); 111 ulong getCsum4List( const QStringList & attList);
112 /** 112 /**
113 Return, if the address book entry is empty. 113 Return, if the address book entry is empty.
114 */ 114 */
115 bool isEmpty() const; 115 bool isEmpty() const;
116 void setExternalUID( const QString &id ); 116 void setExternalUID( const QString &id );
117 const QString externalUID() const; 117 const QString externalUID() const;
118 void setOriginalExternalUID( const QString &id ); 118 void setOriginalExternalUID( const QString &id );
119 QString originalExternalUID() const; 119 QString originalExternalUID() const;
120 void mergeContact( const Addressee& ad, bool isSubSet ); 120 void mergeContact( const Addressee& ad, bool isSubSet );
121 void simplifyEmails(); 121 void simplifyEmails();
122 void simplifyAddresses(); 122 void simplifyAddresses();
123 void simplifyPhoneNumbers(); 123 void simplifyPhoneNumbers();
124 void simplifyPhoneNumberTypes(); 124 void simplifyPhoneNumberTypes();
125 void makePhoneNumbersOLcompatible(); 125 void makePhoneNumbersOLcompatible();
126 int hasPhoneNumberType( int type ); 126 int hasPhoneNumberType( int type );
127 bool removeVoice(); 127 bool removeVoice();
128 bool containsAdr(const Addressee& addr ); 128 bool containsAdr(const Addressee& addr );
129 129
130 /** 130 /**
131 Set unique identifier. 131 Set unique identifier.
132 */ 132 */
133 void setUid( const QString &uid ); 133 void setUid( const QString &uid );
134 /** 134 /**
135 Return unique identifier. 135 Return unique identifier.
136 */ 136 */
137 const QString uid() const; 137 const QString uid() const;
138 /** 138 /**
139 Return translated label for uid field. 139 Return translated label for uid field.
140 */ 140 */
141 static QString uidLabel(); 141 static QString uidLabel();
142 142
143 /** 143 /**
144 Set name. 144 Set name.
145 */ 145 */
146 void setName( const QString &name ); 146 void setName( const QString &name );
147 /** 147 /**
148 Return name. 148 Return name.
149 */ 149 */
150 QString name() const; 150 QString name() const;
151 /** 151 /**
152 Return translated label for name field. 152 Return translated label for name field.
153 */ 153 */
154 static QString nameLabel(); 154 static QString nameLabel();
155 155
156 /** 156 /**
157 Set formatted name. 157 Set formatted name.
158 */ 158 */
159 void setFormattedName( const QString &formattedName ); 159 void setFormattedName( const QString &formattedName );
160 /** 160 /**
161 Return formatted name. 161 Return formatted name.
162 */ 162 */
163 QString formattedName() const; 163 QString formattedName() const;
164 /** 164 /**
165 Return translated label for formattedName field. 165 Return translated label for formattedName field.
166 */ 166 */
167 static QString formattedNameLabel(); 167 static QString formattedNameLabel();
168 168
169 /** 169 /**
170 Set family name. 170 Set family name.
171 */ 171 */
172 void setFamilyName( const QString &familyName ); 172 void setFamilyName( const QString &familyName );
173 /** 173 /**
174 Return family name. 174 Return family name.
175 */ 175 */
176 QString familyName() const; 176 QString familyName() const;
177 /** 177 /**
178 Return translated label for familyName field. 178 Return translated label for familyName field.
179 */ 179 */
180 static QString familyNameLabel(); 180 static QString familyNameLabel();
181 181
182 /** 182 /**
183 Set given name. 183 Set given name.
184 */ 184 */
185 void setGivenName( const QString &givenName ); 185 void setGivenName( const QString &givenName );
186 /** 186 /**
187 Return given name. 187 Return given name.
188 */ 188 */
189 QString givenName() const; 189 QString givenName() const;
190 /** 190 /**
191 Return translated label for givenName field. 191 Return translated label for givenName field.
192 */ 192 */
193 static QString givenNameLabel(); 193 static QString givenNameLabel();
194 194
195 /** 195 /**
196 Set additional names. 196 Set additional names.
197 */ 197 */
198 void setAdditionalName( const QString &additionalName ); 198 void setAdditionalName( const QString &additionalName );
199 /** 199 /**
200 Return additional names. 200 Return additional names.
201 */ 201 */
202 QString additionalName() const; 202 QString additionalName() const;
203 /** 203 /**
204 Return translated label for additionalName field. 204 Return translated label for additionalName field.
205 */ 205 */
206 static QString additionalNameLabel(); 206 static QString additionalNameLabel();
207 207
208 /** 208 /**
209 Set honorific prefixes. 209 Set honorific prefixes.
210 */ 210 */
211 void setPrefix( const QString &prefix ); 211 void setPrefix( const QString &prefix );
212 /** 212 /**
213 Return honorific prefixes. 213 Return honorific prefixes.
214 */ 214 */
215 QString prefix() const; 215 QString prefix() const;
216 /** 216 /**
217 Return translated label for prefix field. 217 Return translated label for prefix field.
218 */ 218 */
219 static QString prefixLabel(); 219 static QString prefixLabel();
220 220
221 /** 221 /**
222 Set honorific suffixes. 222 Set honorific suffixes.
223 */ 223 */
224 void setSuffix( const QString &suffix ); 224 void setSuffix( const QString &suffix );
225 /** 225 /**
226 Return honorific suffixes. 226 Return honorific suffixes.
227 */ 227 */
228 QString suffix() const; 228 QString suffix() const;
229 /** 229 /**
230 Return translated label for suffix field. 230 Return translated label for suffix field.
231 */ 231 */
232 static QString suffixLabel(); 232 static QString suffixLabel();
233 233
234 /** 234 /**
235 Set nick name. 235 Set nick name.
236 */ 236 */
237 void setNickName( const QString &nickName ); 237 void setNickName( const QString &nickName );
238 /** 238 /**
239 Return nick name. 239 Return nick name.
240 */ 240 */
241 QString nickName() const; 241 QString nickName() const;
242 /** 242 /**
243 Return translated label for nickName field. 243 Return translated label for nickName field.
244 */ 244 */
245 static QString nickNameLabel(); 245 static QString nickNameLabel();
246 246
247 /** 247 /**
248 Set birthday. 248 Set birthday.
249 */ 249 */
250 void setBirthday( const QDateTime &birthday ); 250 void setBirthday( const QDateTime &birthday );
251 /** 251 /**
252 Return birthday. 252 Return birthday.
253 */ 253 */
254 QDateTime birthday() const; 254 QDateTime birthday() const;
255 /** 255 /**
256 Return translated label for birthday field. 256 Return translated label for birthday field.
257 */ 257 */
258 static QString birthdayLabel(); 258 static QString birthdayLabel();
259 259
260 /** 260 /**
261 Return translated label for homeAddressStreet field. 261 Return translated label for homeAddressStreet field.
262 */ 262 */
263 static QString homeAddressStreetLabel(); 263 static QString homeAddressStreetLabel();
264 264
265 /** 265 /**
266 Return translated label for homeAddressLocality field. 266 Return translated label for homeAddressLocality field.
267 */ 267 */
268 static QString homeAddressLocalityLabel(); 268 static QString homeAddressLocalityLabel();
269 269
270 /** 270 /**
271 Return translated label for homeAddressRegion field. 271 Return translated label for homeAddressRegion field.
272 */ 272 */
273 static QString homeAddressRegionLabel(); 273 static QString homeAddressRegionLabel();
274 274
275 /** 275 /**
276 Return translated label for homeAddressPostalCode field. 276 Return translated label for homeAddressPostalCode field.
277 */ 277 */
278 static QString homeAddressPostalCodeLabel(); 278 static QString homeAddressPostalCodeLabel();
279 279
280 /** 280 /**
281 Return translated label for homeAddressCountry field. 281 Return translated label for homeAddressCountry field.
282 */ 282 */
283 static QString homeAddressCountryLabel(); 283 static QString homeAddressCountryLabel();
284 284
285 /** 285 /**
286 Return translated label for homeAddressLabel field. 286 Return translated label for homeAddressLabel field.
287 */ 287 */
288 static QString homeAddressLabelLabel(); 288 static QString homeAddressLabelLabel();
289 289
290 /** 290 /**
291 Return translated label for businessAddressStreet field. 291 Return translated label for businessAddressStreet field.
292 */ 292 */
293 static QString businessAddressStreetLabel(); 293 static QString businessAddressStreetLabel();
294 294
295 /** 295 /**
296 Return translated label for businessAddressLocality field. 296 Return translated label for businessAddressLocality field.
297 */ 297 */
298 static QString businessAddressLocalityLabel(); 298 static QString businessAddressLocalityLabel();
299 299
300 /** 300 /**
301 Return translated label for businessAddressRegion field. 301 Return translated label for businessAddressRegion field.
302 */ 302 */
303 static QString businessAddressRegionLabel(); 303 static QString businessAddressRegionLabel();
304 304
305 /** 305 /**
306 Return translated label for businessAddressPostalCode field. 306 Return translated label for businessAddressPostalCode field.
307 */ 307 */
308 static QString businessAddressPostalCodeLabel(); 308 static QString businessAddressPostalCodeLabel();
309 309
310 /** 310 /**
311 Return translated label for businessAddressCountry field. 311 Return translated label for businessAddressCountry field.
312 */ 312 */
313 static QString businessAddressCountryLabel(); 313 static QString businessAddressCountryLabel();
314 314
315 /** 315 /**
316 Return translated label for businessAddressLabel field. 316 Return translated label for businessAddressLabel field.
317 */ 317 */
318 static QString businessAddressLabelLabel(); 318 static QString businessAddressLabelLabel();
319 319
320 /** 320 /**
321 Return translated label for homePhone field. 321 Return translated label for homePhone field.
322 */ 322 */
323 static QString homePhoneLabel(); 323 static QString homePhoneLabel();
324 324
325 /** 325 /**
326 Return translated label for businessPhone field. 326 Return translated label for businessPhone field.
327 */ 327 */
328 static QString businessPhoneLabel(); 328 static QString businessPhoneLabel();
329 329
330 /** 330 /**
331 Return translated label for mobilePhone field. 331 Return translated label for mobilePhone field.
332 */ 332 */
333 static QString mobilePhoneLabel(); 333 static QString mobilePhoneLabel();
334 static QString mobileWorkPhoneLabel(); 334 static QString mobileWorkPhoneLabel();
335 static QString mobileHomePhoneLabel();
336 335
337 /** 336 /**
338 Return translated label for homeFax field. 337 Return translated label for homeFax field.
339 */ 338 */
340 static QString homeFaxLabel(); 339 static QString homeFaxLabel();
341 340
342 /** 341 /**
343 Return translated label for businessFax field. 342 Return translated label for businessFax field.
344 */ 343 */
345 static QString businessFaxLabel(); 344 static QString businessFaxLabel();
346 345
347 /** 346
348 Return translated label for carPhone field.
349 */
350 static QString carPhoneLabel();
351
352 /** 347 /**
353 Return translated label for isdn field. 348 Return translated label for isdn field.
354 */ 349 */
355 static QString isdnLabel(); 350 static QString isdnLabel();
356 351
357 /** 352 /**
358 Return translated label for pager field. 353 Return translated label for pager field.
359 */ 354 */
360 static QString pagerLabel(); 355 static QString pagerLabel();
361 static QString otherPhoneLabel(); 356 static QString otherPhoneLabel();
362 /** 357 /**
363 Return translated label for sip field. 358 Return translated label for sip field.
364 */ 359 */
365 static QString sipLabel(); 360 static QString sipLabel();
366 361
367 /** 362 /**
368 Return translated label for email field. 363 Return translated label for email field.
369 */ 364 */
370 static QString emailLabel(); 365 static QString emailLabel();
371 366
372 /** 367 /**
373 Set mail client. 368 Set mail client.
374 */ 369 */
375 void setMailer( const QString &mailer ); 370 void setMailer( const QString &mailer );
376 /** 371 /**
377 Return mail client. 372 Return mail client.
378 */ 373 */
379 QString mailer() const; 374 QString mailer() const;
380 /** 375 /**
381 Return translated label for mailer field. 376 Return translated label for mailer field.
382 */ 377 */
383 static QString mailerLabel(); 378 static QString mailerLabel();
384 379
385 /** 380 /**
386 Set time zone. 381 Set time zone.
387 */ 382 */
388 void setTimeZone( const TimeZone &timeZone ); 383 void setTimeZone( const TimeZone &timeZone );
389 /** 384 /**
390 Return time zone. 385 Return time zone.
391 */ 386 */
392 TimeZone timeZone() const; 387 TimeZone timeZone() const;
393 /** 388 /**
394 Return translated label for timeZone field. 389 Return translated label for timeZone field.
395 */ 390 */
396 static QString timeZoneLabel(); 391 static QString timeZoneLabel();
397 392
398 /** 393 /**
399 Set geographic position. 394 Set geographic position.
400 */ 395 */
401 void setGeo( const Geo &geo ); 396 void setGeo( const Geo &geo );
402 /** 397 /**
403 Return geographic position. 398 Return geographic position.
404 */ 399 */
405 Geo geo() const; 400 Geo geo() const;
406 /** 401 /**
407 Return translated label for geo field. 402 Return translated label for geo field.
408 */ 403 */
409 static QString geoLabel(); 404 static QString geoLabel();
410 405
411 /** 406 /**
412 Set title. 407 Set title.
413 */ 408 */
414 void setTitle( const QString &title ); 409 void setTitle( const QString &title );
415 /** 410 /**
416 Return title. 411 Return title.
417 */ 412 */
418 QString title() const; 413 QString title() const;
419 /** 414 /**
420 Return translated label for title field. 415 Return translated label for title field.
421 */ 416 */
422 static QString titleLabel(); 417 static QString titleLabel();
423 418
424 /** 419 /**
425 Set role. 420 Set role.
426 */ 421 */
427 void setRole( const QString &role ); 422 void setRole( const QString &role );
428 /** 423 /**
429 Return role. 424 Return role.
430 */ 425 */
431 QString role() const; 426 QString role() const;
432 /** 427 /**
433 Return translated label for role field. 428 Return translated label for role field.
434 */ 429 */
435 static QString roleLabel(); 430 static QString roleLabel();
436 431
437 /** 432 /**
438 Set organization. 433 Set organization.
439 */ 434 */
440 void setOrganization( const QString &organization ); 435 void setOrganization( const QString &organization );
441 /** 436 /**
442 Return organization. 437 Return organization.
443 */ 438 */
444 QString organization() const; 439 QString organization() const;
445 /** 440 /**
446 Return translated label for organization field. 441 Return translated label for organization field.
447 */ 442 */
448 static QString organizationLabel(); 443 static QString organizationLabel();
449 444
450 /** 445 /**
451 Set note. 446 Set note.
452 */ 447 */
453 void setNote( const QString &note ); 448 void setNote( const QString &note );
454 /** 449 /**
455 Return note. 450 Return note.
456 */ 451 */
457 QString note() const; 452 QString note() const;
458 /** 453 /**
459 Return translated label for note field. 454 Return translated label for note field.
460 */ 455 */
461 static QString noteLabel(); 456 static QString noteLabel();
462 457
463 /** 458 /**
464 Set product identifier. 459 Set product identifier.
465 */ 460 */
466 void setProductId( const QString &productId ); 461 void setProductId( const QString &productId );
467 /** 462 /**
468 Return product identifier. 463 Return product identifier.
469 */ 464 */
470 QString productId() const; 465 QString productId() const;
471 /** 466 /**
472 Return translated label for productId field. 467 Return translated label for productId field.
473 */ 468 */
474 static QString productIdLabel(); 469 static QString productIdLabel();
475 470
476 /** 471 /**
477 Set revision date. 472 Set revision date.
478 */ 473 */
479 void setRevision( const QDateTime &revision ); 474 void setRevision( const QDateTime &revision );
480 /** 475 /**
481 Return revision date. 476 Return revision date.
482 */ 477 */
483 QDateTime revision() const; 478 QDateTime revision() const;
484 /** 479 /**
485 Return translated label for revision field. 480 Return translated label for revision field.
486 */ 481 */
487 static QString revisionLabel(); 482 static QString revisionLabel();
488 483
489 /** 484 /**
490 Set sort string. 485 Set sort string.
491 */ 486 */
492 void setSortString( const QString &sortString ); 487 void setSortString( const QString &sortString );
493 /** 488 /**
494 Return sort string. 489 Return sort string.
495 */ 490 */
496 QString sortString() const; 491 QString sortString() const;
497 /** 492 /**
498 Return translated label for sortString field. 493 Return translated label for sortString field.
499 */ 494 */
500 static QString sortStringLabel(); 495 static QString sortStringLabel();
501 496
502 /** 497 /**
503 Set URL. 498 Set URL.
504 */ 499 */
505 void setUrl( const KURL &url ); 500 void setUrl( const KURL &url );
506 /** 501 /**
507 Return URL. 502 Return URL.
508 */ 503 */
509 KURL url() const; 504 KURL url() const;
510 /** 505 /**
511 Return translated label for url field. 506 Return translated label for url field.
512 */ 507 */
513 static QString urlLabel(); 508 static QString urlLabel();
514 509
515 /** 510 /**
516 Set security class. 511 Set security class.
517 */ 512 */
518 void setSecrecy( const Secrecy &secrecy ); 513 void setSecrecy( const Secrecy &secrecy );
519 /** 514 /**
520 Return security class. 515 Return security class.
521 */ 516 */
522 Secrecy secrecy() const; 517 Secrecy secrecy() const;
523 /** 518 /**
524 Return translated label for secrecy field. 519 Return translated label for secrecy field.
525 */ 520 */
526 static QString secrecyLabel(); 521 static QString secrecyLabel();
527 522
528 /** 523 /**
529 Set logo. 524 Set logo.
530 */ 525 */
531 void setLogo( const Picture &logo ); 526 void setLogo( const Picture &logo );
532 /** 527 /**
533 Return logo. 528 Return logo.
534 */ 529 */
535 Picture logo() const; 530 Picture logo() const;
536 /** 531 /**
537 Return translated label for logo field. 532 Return translated label for logo field.
538 */ 533 */
539 static QString logoLabel(); 534 static QString logoLabel();
540 535
541 /** 536 /**
542 Set photo. 537 Set photo.
543 */ 538 */
544 void setPhoto( const Picture &photo ); 539 void setPhoto( const Picture &photo );
545 /** 540 /**
546 Return photo. 541 Return photo.
547 */ 542 */
548 Picture photo() const; 543 Picture photo() const;
549 /** 544 /**
550 Return translated label for photo field. 545 Return translated label for photo field.
551 */ 546 */
552 static QString photoLabel(); 547 static QString photoLabel();
553 548
554 /** 549 /**
555 Set sound. 550 Set sound.
556 */ 551 */
557 void setSound( const Sound &sound ); 552 void setSound( const Sound &sound );
558 /** 553 /**
559 Return sound. 554 Return sound.
560 */ 555 */
561 Sound sound() const; 556 Sound sound() const;
562 /** 557 /**
563 Return translated label for sound field. 558 Return translated label for sound field.
564 */ 559 */
565 static QString soundLabel(); 560 static QString soundLabel();
566 561
567 /** 562 /**
568 Set agent. 563 Set agent.
569 */ 564 */
570 void setAgent( const Agent &agent ); 565 void setAgent( const Agent &agent );
571 /** 566 /**
572 Return agent. 567 Return agent.
573 */ 568 */
574 Agent agent() const; 569 Agent agent() const;
575 /** 570 /**
576 Return translated label for agent field. 571 Return translated label for agent field.
577 */ 572 */
578 static QString agentLabel(); 573 static QString agentLabel();
579 574
580 /** 575 /**
581 Set name fields by parsing the given string and trying to associate the 576 Set name fields by parsing the given string and trying to associate the
582 parts of the string with according fields. This function should probably 577 parts of the string with according fields. This function should probably
583 be a bit more clever. 578 be a bit more clever.
584 */ 579 */
585 void setNameFromString( const QString & ); 580 void setNameFromString( const QString & );
586 581
587 /** 582 /**
588 Return the name of the addressee. This is calculated from all the name 583 Return the name of the addressee. This is calculated from all the name
589 fields. 584 fields.
590 */ 585 */
591 QString realName() const; 586 QString realName() const;
592 587
593 /** 588 /**
594 Return the name that consists of all name parts. 589 Return the name that consists of all name parts.
595 */ 590 */
596 QString assembledName() const; 591 QString assembledName() const;
597 592
598 /** 593 /**
599 Return email address including real name. 594 Return email address including real name.
600 595
601 @param email Email address to be used to construct the full email string. 596 @param email Email address to be used to construct the full email string.
602 If this is QString::null the preferred email address is used. 597 If this is QString::null the preferred email address is used.
603 */ 598 */
604 QString fullEmail( const QString &email=QString::null ) const; 599 QString fullEmail( const QString &email=QString::null ) const;
605 600
606 /** 601 /**
607 Insert an email address. If the email address already exists in this 602 Insert an email address. If the email address already exists in this
diff --git a/kabc/field.cpp b/kabc/field.cpp
index 6f2b307..7c6d7a9 100644
--- a/kabc/field.cpp
+++ b/kabc/field.cpp
@@ -1,596 +1,584 @@
1/*** Warning! This file has been generated by the script makeaddressee ***/ 1/*** Warning! This file has been generated by the script makeaddressee ***/
2/* 2/*
3 This file is part of libkabc. 3 This file is part of libkabc.
4 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#include <klocale.h> 29#include <klocale.h>
30#include <kconfig.h> 30#include <kconfig.h>
31#include <kconfigbase.h> 31#include <kconfigbase.h>
32#include <kglobal.h> 32#include <kglobal.h>
33 33
34#include "field.h" 34#include "field.h"
35#include "resource.h" 35#include "resource.h"
36 36
37using namespace KABC; 37using namespace KABC;
38 38
39class Field::FieldImpl 39class Field::FieldImpl
40{ 40{
41 public: 41 public:
42 FieldImpl( int fieldId, int category = 0, 42 FieldImpl( int fieldId, int category = 0,
43 const QString &label = QString::null, 43 const QString &label = QString::null,
44 const QString &key = QString::null, 44 const QString &key = QString::null,
45 const QString &app = QString::null ) 45 const QString &app = QString::null )
46 : mFieldId( fieldId ), mCategory( category ), mLabel( label ), 46 : mFieldId( fieldId ), mCategory( category ), mLabel( label ),
47 mKey( key ), mApp( app ) {} 47 mKey( key ), mApp( app ) {}
48 48
49 enum FieldId 49 enum FieldId
50 { 50 {
51 CustomField, 51 CustomField,
52 FormattedName, 52 FormattedName,
53 FamilyName, 53 FamilyName,
54 GivenName, 54 GivenName,
55 AdditionalName, 55 AdditionalName,
56 Prefix, 56 Prefix,
57 Suffix, 57 Suffix,
58 NickName, 58 NickName,
59 Birthday, 59 Birthday,
60 Category, 60 Category,
61 HomeAddressStreet, 61 HomeAddressStreet,
62 HomeAddressLocality, 62 HomeAddressLocality,
63 HomeAddressRegion, 63 HomeAddressRegion,
64 HomeAddressPostalCode, 64 HomeAddressPostalCode,
65 HomeAddressCountry, 65 HomeAddressCountry,
66 HomeAddressLabel, 66 HomeAddressLabel,
67 BusinessAddressStreet, 67 BusinessAddressStreet,
68 BusinessAddressLocality, 68 BusinessAddressLocality,
69 BusinessAddressRegion, 69 BusinessAddressRegion,
70 BusinessAddressPostalCode, 70 BusinessAddressPostalCode,
71 BusinessAddressCountry, 71 BusinessAddressCountry,
72 BusinessAddressLabel, 72 BusinessAddressLabel,
73 HomePhone, 73 HomePhone,
74 BusinessPhone, 74 BusinessPhone,
75 MobilePhone, 75 MobilePhone,
76 HomeFax, 76 HomeFax,
77 BusinessFax, 77 BusinessFax,
78 CarPhone,
79 Isdn, 78 Isdn,
80 Pager, 79 Pager,
81 Email, 80 Email,
82 Mailer, 81 Mailer,
83 Title, 82 Title,
84 Role, 83 Role,
85 Organization, 84 Organization,
86 Note, 85 Note,
87 Url, 86 Url,
88 Resource, 87 Resource,
89 Sip, 88 Sip,
90 MobileWorkPhone, 89 MobileWorkPhone,
91 MobileHomePhone,
92 OtherPhone 90 OtherPhone
93 }; 91 };
94 92
95 int fieldId() { return mFieldId; } 93 int fieldId() { return mFieldId; }
96 int category() { return mCategory; } 94 int category() { return mCategory; }
97 95
98 QString label() { return mLabel; } 96 QString label() { return mLabel; }
99 QString key() { return mKey; } 97 QString key() { return mKey; }
100 QString app() { return mApp; } 98 QString app() { return mApp; }
101 99
102 private: 100 private:
103 int mFieldId; 101 int mFieldId;
104 int mCategory; 102 int mCategory;
105 103
106 QString mLabel; 104 QString mLabel;
107 QString mKey; 105 QString mKey;
108 QString mApp; 106 QString mApp;
109}; 107};
110 108
111 109
112Field::List Field::mAllFields; 110Field::List Field::mAllFields;
113Field::List Field::mDefaultFields; 111Field::List Field::mDefaultFields;
114Field::List Field::mCustomFields; 112Field::List Field::mCustomFields;
115 113
116 114
117Field::Field( FieldImpl *impl ) 115Field::Field( FieldImpl *impl )
118{ 116{
119 mImpl = impl; 117 mImpl = impl;
120} 118}
121 119
122Field::~Field() 120Field::~Field()
123{ 121{
124 delete mImpl; 122 delete mImpl;
125} 123}
126 124
127QString Field::label() 125QString Field::label()
128{ 126{
129 switch ( mImpl->fieldId() ) { 127 switch ( mImpl->fieldId() ) {
130 case FieldImpl::FormattedName: 128 case FieldImpl::FormattedName:
131 return Addressee::formattedNameLabel(); 129 return Addressee::formattedNameLabel();
132 case FieldImpl::FamilyName: 130 case FieldImpl::FamilyName:
133 return Addressee::familyNameLabel(); 131 return Addressee::familyNameLabel();
134 case FieldImpl::GivenName: 132 case FieldImpl::GivenName:
135 return Addressee::givenNameLabel(); 133 return Addressee::givenNameLabel();
136 case FieldImpl::AdditionalName: 134 case FieldImpl::AdditionalName:
137 return Addressee::additionalNameLabel(); 135 return Addressee::additionalNameLabel();
138 case FieldImpl::Prefix: 136 case FieldImpl::Prefix:
139 return Addressee::prefixLabel(); 137 return Addressee::prefixLabel();
140 case FieldImpl::Suffix: 138 case FieldImpl::Suffix:
141 return Addressee::suffixLabel(); 139 return Addressee::suffixLabel();
142 case FieldImpl::NickName: 140 case FieldImpl::NickName:
143 return Addressee::nickNameLabel(); 141 return Addressee::nickNameLabel();
144 case FieldImpl::Birthday: 142 case FieldImpl::Birthday:
145 return Addressee::birthdayLabel(); 143 return Addressee::birthdayLabel();
146 case FieldImpl::HomeAddressStreet: 144 case FieldImpl::HomeAddressStreet:
147 return Addressee::homeAddressStreetLabel(); 145 return Addressee::homeAddressStreetLabel();
148 case FieldImpl::HomeAddressLocality: 146 case FieldImpl::HomeAddressLocality:
149 return Addressee::homeAddressLocalityLabel(); 147 return Addressee::homeAddressLocalityLabel();
150 case FieldImpl::HomeAddressRegion: 148 case FieldImpl::HomeAddressRegion:
151 return Addressee::homeAddressRegionLabel(); 149 return Addressee::homeAddressRegionLabel();
152 case FieldImpl::HomeAddressPostalCode: 150 case FieldImpl::HomeAddressPostalCode:
153 return Addressee::homeAddressPostalCodeLabel(); 151 return Addressee::homeAddressPostalCodeLabel();
154 case FieldImpl::HomeAddressCountry: 152 case FieldImpl::HomeAddressCountry:
155 return Addressee::homeAddressCountryLabel(); 153 return Addressee::homeAddressCountryLabel();
156 case FieldImpl::HomeAddressLabel: 154 case FieldImpl::HomeAddressLabel:
157 return Addressee::homeAddressLabelLabel(); 155 return Addressee::homeAddressLabelLabel();
158 case FieldImpl::BusinessAddressStreet: 156 case FieldImpl::BusinessAddressStreet:
159 return Addressee::businessAddressStreetLabel(); 157 return Addressee::businessAddressStreetLabel();
160 case FieldImpl::BusinessAddressLocality: 158 case FieldImpl::BusinessAddressLocality:
161 return Addressee::businessAddressLocalityLabel(); 159 return Addressee::businessAddressLocalityLabel();
162 case FieldImpl::BusinessAddressRegion: 160 case FieldImpl::BusinessAddressRegion:
163 return Addressee::businessAddressRegionLabel(); 161 return Addressee::businessAddressRegionLabel();
164 case FieldImpl::BusinessAddressPostalCode: 162 case FieldImpl::BusinessAddressPostalCode:
165 return Addressee::businessAddressPostalCodeLabel(); 163 return Addressee::businessAddressPostalCodeLabel();
166 case FieldImpl::BusinessAddressCountry: 164 case FieldImpl::BusinessAddressCountry:
167 return Addressee::businessAddressCountryLabel(); 165 return Addressee::businessAddressCountryLabel();
168 case FieldImpl::BusinessAddressLabel: 166 case FieldImpl::BusinessAddressLabel:
169 return Addressee::businessAddressLabelLabel(); 167 return Addressee::businessAddressLabelLabel();
170 case FieldImpl::HomePhone: 168 case FieldImpl::HomePhone:
171 return Addressee::homePhoneLabel(); 169 return Addressee::homePhoneLabel();
172 case FieldImpl::BusinessPhone: 170 case FieldImpl::BusinessPhone:
173 return Addressee::businessPhoneLabel(); 171 return Addressee::businessPhoneLabel();
174 case FieldImpl::MobilePhone: 172 case FieldImpl::MobilePhone:
175 return Addressee::mobilePhoneLabel(); 173 return Addressee::mobilePhoneLabel();
176 case FieldImpl::MobileHomePhone:
177 return Addressee::mobileHomePhoneLabel();
178 case FieldImpl::MobileWorkPhone: 174 case FieldImpl::MobileWorkPhone:
179 return Addressee::mobileWorkPhoneLabel(); 175 return Addressee::mobileWorkPhoneLabel();
180 case FieldImpl::HomeFax: 176 case FieldImpl::HomeFax:
181 return Addressee::homeFaxLabel(); 177 return Addressee::homeFaxLabel();
182 case FieldImpl::BusinessFax: 178 case FieldImpl::BusinessFax:
183 return Addressee::businessFaxLabel(); 179 return Addressee::businessFaxLabel();
184 case FieldImpl::CarPhone:
185 return Addressee::carPhoneLabel();
186 case FieldImpl::Isdn: 180 case FieldImpl::Isdn:
187 return Addressee::isdnLabel(); 181 return Addressee::isdnLabel();
188 case FieldImpl::Pager: 182 case FieldImpl::Pager:
189 return Addressee::pagerLabel(); 183 return Addressee::pagerLabel();
190 case FieldImpl::Email: 184 case FieldImpl::Email:
191 return Addressee::emailLabel(); 185 return Addressee::emailLabel();
192 case FieldImpl::Mailer: 186 case FieldImpl::Mailer:
193 return Addressee::mailerLabel(); 187 return Addressee::mailerLabel();
194 case FieldImpl::Title: 188 case FieldImpl::Title:
195 return Addressee::titleLabel(); 189 return Addressee::titleLabel();
196 case FieldImpl::Role: 190 case FieldImpl::Role:
197 return Addressee::roleLabel(); 191 return Addressee::roleLabel();
198 case FieldImpl::Organization: 192 case FieldImpl::Organization:
199 return Addressee::organizationLabel(); 193 return Addressee::organizationLabel();
200 case FieldImpl::Note: 194 case FieldImpl::Note:
201 return Addressee::noteLabel(); 195 return Addressee::noteLabel();
202 case FieldImpl::Url: 196 case FieldImpl::Url:
203 return Addressee::urlLabel(); 197 return Addressee::urlLabel();
204 case FieldImpl::Resource: 198 case FieldImpl::Resource:
205 return Addressee::resourceLabel(); 199 return Addressee::resourceLabel();
206 case FieldImpl::Category: 200 case FieldImpl::Category:
207 return Addressee::categoryLabel(); 201 return Addressee::categoryLabel();
208 case FieldImpl::Sip: 202 case FieldImpl::Sip:
209 return Addressee::sipLabel(); 203 return Addressee::sipLabel();
210 case FieldImpl::OtherPhone: 204 case FieldImpl::OtherPhone:
211 return Addressee::otherPhoneLabel(); 205 return Addressee::otherPhoneLabel();
212 case FieldImpl::CustomField: 206 case FieldImpl::CustomField:
213 return mImpl->label(); 207 return mImpl->label();
214 default: 208 default:
215 return i18n("Unknown Field"); 209 return i18n("Unknown Field");
216 } 210 }
217} 211}
218 212
219int Field::category() 213int Field::category()
220{ 214{
221 return mImpl->category(); 215 return mImpl->category();
222} 216}
223 217
224QString Field::categoryLabel( int category ) 218QString Field::categoryLabel( int category )
225{ 219{
226 switch ( category ) { 220 switch ( category ) {
227 case All: 221 case All:
228 return i18n("All"); 222 return i18n("All");
229 case Frequent: 223 case Frequent:
230 return i18n("Frequent"); 224 return i18n("Frequent");
231 case Address: 225 case Address:
232 return i18n("Address"); 226 return i18n("Address");
233 case Email: 227 case Email:
234 return i18n("Email"); 228 return i18n("Email");
235 case Personal: 229 case Personal:
236 return i18n("Personal"); 230 return i18n("Personal");
237 case Organization: 231 case Organization:
238 return i18n("Organization"); 232 return i18n("Organization");
239 case CustomCategory: 233 case CustomCategory:
240 return i18n("Custom"); 234 return i18n("Custom");
241 default: 235 default:
242 return i18n("Undefined"); 236 return i18n("Undefined");
243 } 237 }
244} 238}
245 239
246QString Field::value( const KABC::Addressee &a ) 240QString Field::value( const KABC::Addressee &a )
247{ 241{
248 switch ( mImpl->fieldId() ) { 242 switch ( mImpl->fieldId() ) {
249 case FieldImpl::FormattedName: 243 case FieldImpl::FormattedName:
250 return a.formattedName(); 244 return a.formattedName();
251 case FieldImpl::FamilyName: 245 case FieldImpl::FamilyName:
252 return a.familyName(); 246 return a.familyName();
253 case FieldImpl::GivenName: 247 case FieldImpl::GivenName:
254 return a.givenName(); 248 return a.givenName();
255 case FieldImpl::AdditionalName: 249 case FieldImpl::AdditionalName:
256 return a.additionalName(); 250 return a.additionalName();
257 case FieldImpl::Prefix: 251 case FieldImpl::Prefix:
258 return a.prefix(); 252 return a.prefix();
259 case FieldImpl::Suffix: 253 case FieldImpl::Suffix:
260 return a.suffix(); 254 return a.suffix();
261 case FieldImpl::NickName: 255 case FieldImpl::NickName:
262 return a.nickName(); 256 return a.nickName();
263 case FieldImpl::Mailer: 257 case FieldImpl::Mailer:
264 return a.mailer(); 258 return a.mailer();
265 case FieldImpl::Title: 259 case FieldImpl::Title:
266 return a.title(); 260 return a.title();
267 case FieldImpl::Role: 261 case FieldImpl::Role:
268 return a.role(); 262 return a.role();
269 case FieldImpl::Organization: 263 case FieldImpl::Organization:
270 return a.organization(); 264 return a.organization();
271 case FieldImpl::Note: 265 case FieldImpl::Note:
272 return a.note(); 266 return a.note();
273 case FieldImpl::Email: 267 case FieldImpl::Email:
274 return a.preferredEmail(); 268 return a.preferredEmail();
275 case FieldImpl::Birthday: 269 case FieldImpl::Birthday:
276 if ( a.birthday().isValid() ) { 270 if ( a.birthday().isValid() ) {
277//the generated code had the following format: return a.birthday().date().toString( Qt::ISODate ); 271//the generated code had the following format: return a.birthday().date().toString( Qt::ISODate );
278// But Qt::IsoDate was not specified. 272// But Qt::IsoDate was not specified.
279// QString _oldFormat = KGlobal::locale()->dateFormat(); 273// QString _oldFormat = KGlobal::locale()->dateFormat();
280// KGlobal::locale()->setDateFormat("%Y-%m-%d"); // = Qt::ISODate 274// KGlobal::locale()->setDateFormat("%Y-%m-%d"); // = Qt::ISODate
281 QString dt = KGlobal::locale()->formatDate(a.birthday().date(), false, KLocale::ISODate); 275 QString dt = KGlobal::locale()->formatDate(a.birthday().date(), false, KLocale::ISODate);
282// KGlobal::locale()->setDateFormat(_oldFormat); 276// KGlobal::locale()->setDateFormat(_oldFormat);
283 return dt; 277 return dt;
284 } 278 }
285 else 279 else
286 return QString::null; 280 return QString::null;
287 case FieldImpl::Url: 281 case FieldImpl::Url:
288 return a.url().prettyURL(); 282 return a.url().prettyURL();
289//US 283//US
290 case FieldImpl::Resource: 284 case FieldImpl::Resource:
291 return a.resource()->resourceName(); 285 return a.resource()->resourceName();
292 case FieldImpl::Category: 286 case FieldImpl::Category:
293 return a.categories().join(","); 287 return a.categories().join(",");
294 case FieldImpl::HomePhone: 288 case FieldImpl::HomePhone:
295 return a.phoneNumber( PhoneNumber::Home| PhoneNumber::Pref ).number(); 289 return a.phoneNumber( PhoneNumber::Home| PhoneNumber::Pref ).number();
296 case FieldImpl::BusinessPhone: 290 case FieldImpl::BusinessPhone:
297 return a.phoneNumber( PhoneNumber::Work| PhoneNumber::Pref ).number(); 291 return a.phoneNumber( PhoneNumber::Work| PhoneNumber::Pref ).number();
298 case FieldImpl::MobilePhone: 292 case FieldImpl::MobilePhone:
299 return a.phoneNumber( PhoneNumber::Cell ).number(); 293 return a.phoneNumber( PhoneNumber::Cell ).number();
300 case FieldImpl::MobileWorkPhone: 294 case FieldImpl::MobileWorkPhone:
301 return a.phoneNumber( PhoneNumber::Car ).number(); 295 return a.phoneNumber( PhoneNumber::Car ).number();
302 case FieldImpl::MobileHomePhone:
303 return a.phoneNumber( PhoneNumber::Cell ).number();
304 case FieldImpl::HomeFax: 296 case FieldImpl::HomeFax:
305 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number(); 297 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number();
306 case FieldImpl::BusinessFax: 298 case FieldImpl::BusinessFax:
307 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number(); 299 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number();
308 case FieldImpl::CarPhone:
309 return a.phoneNumber( PhoneNumber::Car ).number();
310 case FieldImpl::Isdn: 300 case FieldImpl::Isdn:
311 return a.phoneNumber( PhoneNumber::Isdn ).number(); 301 return a.phoneNumber( PhoneNumber::Isdn ).number();
312 case FieldImpl::Pager: 302 case FieldImpl::Pager:
313 return a.phoneNumber( PhoneNumber::Pager ).number(); 303 return a.phoneNumber( PhoneNumber::Pager ).number();
314 case FieldImpl::Sip: 304 case FieldImpl::Sip:
315 return a.phoneNumber( PhoneNumber::Pcs | PhoneNumber::Pref ).number(); 305 return a.phoneNumber( PhoneNumber::Pcs | PhoneNumber::Pref ).number();
316 case FieldImpl::OtherPhone: 306 case FieldImpl::OtherPhone:
317 return a.phoneNumber( PhoneNumber::Voice ).number(); 307 return a.phoneNumber( PhoneNumber::Voice ).number();
318 case FieldImpl::HomeAddressStreet: 308 case FieldImpl::HomeAddressStreet:
319 return a.address( Address::Home ).street(); 309 return a.address( Address::Home ).street();
320 case FieldImpl::HomeAddressLocality: 310 case FieldImpl::HomeAddressLocality:
321 return a.address( Address::Home ).locality(); 311 return a.address( Address::Home ).locality();
322 case FieldImpl::HomeAddressRegion: 312 case FieldImpl::HomeAddressRegion:
323 return a.address( Address::Home ).region(); 313 return a.address( Address::Home ).region();
324 case FieldImpl::HomeAddressPostalCode: 314 case FieldImpl::HomeAddressPostalCode:
325 return a.address( Address::Home ).postalCode(); 315 return a.address( Address::Home ).postalCode();
326 case FieldImpl::HomeAddressCountry: 316 case FieldImpl::HomeAddressCountry:
327 return a.address( Address::Home ).country(); 317 return a.address( Address::Home ).country();
328 case FieldImpl::BusinessAddressStreet: 318 case FieldImpl::BusinessAddressStreet:
329 return a.address( Address::Work ).street(); 319 return a.address( Address::Work ).street();
330 case FieldImpl::BusinessAddressLocality: 320 case FieldImpl::BusinessAddressLocality:
331 return a.address( Address::Work ).locality(); 321 return a.address( Address::Work ).locality();
332 case FieldImpl::BusinessAddressRegion: 322 case FieldImpl::BusinessAddressRegion:
333 return a.address( Address::Work ).region(); 323 return a.address( Address::Work ).region();
334 case FieldImpl::BusinessAddressPostalCode: 324 case FieldImpl::BusinessAddressPostalCode:
335 return a.address( Address::Work ).postalCode(); 325 return a.address( Address::Work ).postalCode();
336 case FieldImpl::BusinessAddressCountry: 326 case FieldImpl::BusinessAddressCountry:
337 return a.address( Address::Work ).country(); 327 return a.address( Address::Work ).country();
338 case FieldImpl::CustomField: 328 case FieldImpl::CustomField:
339 return a.custom( mImpl->app(), mImpl->key() ); 329 return a.custom( mImpl->app(), mImpl->key() );
340 default: 330 default:
341 return QString::null; 331 return QString::null;
342 } 332 }
343} 333}
344 334
345bool Field::setValue( KABC::Addressee &a, const QString &value ) 335bool Field::setValue( KABC::Addressee &a, const QString &value )
346{ 336{
347 switch ( mImpl->fieldId() ) { 337 switch ( mImpl->fieldId() ) {
348 case FieldImpl::FormattedName: 338 case FieldImpl::FormattedName:
349 a.setFormattedName( value ); 339 a.setFormattedName( value );
350 return true; 340 return true;
351 case FieldImpl::FamilyName: 341 case FieldImpl::FamilyName:
352 a.setFamilyName( value ); 342 a.setFamilyName( value );
353 return true; 343 return true;
354 case FieldImpl::GivenName: 344 case FieldImpl::GivenName:
355 a.setGivenName( value ); 345 a.setGivenName( value );
356 return true; 346 return true;
357 case FieldImpl::AdditionalName: 347 case FieldImpl::AdditionalName:
358 a.setAdditionalName( value ); 348 a.setAdditionalName( value );
359 return true; 349 return true;
360 case FieldImpl::Prefix: 350 case FieldImpl::Prefix:
361 a.setPrefix( value ); 351 a.setPrefix( value );
362 return true; 352 return true;
363 case FieldImpl::Suffix: 353 case FieldImpl::Suffix:
364 a.setSuffix( value ); 354 a.setSuffix( value );
365 return true; 355 return true;
366 case FieldImpl::NickName: 356 case FieldImpl::NickName:
367 a.setNickName( value ); 357 a.setNickName( value );
368 return true; 358 return true;
369 case FieldImpl::Mailer: 359 case FieldImpl::Mailer:
370 a.setMailer( value ); 360 a.setMailer( value );
371 return true; 361 return true;
372 case FieldImpl::Title: 362 case FieldImpl::Title:
373 a.setTitle( value ); 363 a.setTitle( value );
374 return true; 364 return true;
375 case FieldImpl::Role: 365 case FieldImpl::Role:
376 a.setRole( value ); 366 a.setRole( value );
377 return true; 367 return true;
378 case FieldImpl::Organization: 368 case FieldImpl::Organization:
379 a.setOrganization( value ); 369 a.setOrganization( value );
380 return true; 370 return true;
381 case FieldImpl::Note: 371 case FieldImpl::Note:
382 a.setNote( value ); 372 a.setNote( value );
383 return true; 373 return true;
384 case FieldImpl::Birthday: 374 case FieldImpl::Birthday:
385//US 375//US
386//the generated code had the following format: return a.setBirthday( QDate::fromString( value, Qt::ISODate ) ); 376//the generated code had the following format: return a.setBirthday( QDate::fromString( value, Qt::ISODate ) );
387// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ? 377// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ?
388 { 378 {
389 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate 379 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate
390 a.setBirthday(dt); 380 a.setBirthday(dt);
391 } 381 }
392 return true; 382 return true;
393 case FieldImpl::CustomField: 383 case FieldImpl::CustomField:
394 a.insertCustom( mImpl->app(), mImpl->key(), value ); 384 a.insertCustom( mImpl->app(), mImpl->key(), value );
395//US never copy the resourcename back to the adressee. 385//US never copy the resourcename back to the adressee.
396 case FieldImpl::Resource: 386 case FieldImpl::Resource:
397 default: 387 default:
398 return false; 388 return false;
399 } 389 }
400} 390}
401 391
402bool Field::isCustom() 392bool Field::isCustom()
403{ 393{
404 return mImpl->fieldId() == FieldImpl::CustomField; 394 return mImpl->fieldId() == FieldImpl::CustomField;
405} 395}
406 396
407Field::List Field::allFields() 397Field::List Field::allFields()
408{ 398{
409 if ( mAllFields.isEmpty() ) { 399 if ( mAllFields.isEmpty() ) {
410 createField( FieldImpl::FormattedName, Frequent ); 400 createField( FieldImpl::FormattedName, Frequent );
411 createField( FieldImpl::FamilyName, Frequent ); 401 createField( FieldImpl::FamilyName, Frequent );
412 createField( FieldImpl::GivenName, Frequent ); 402 createField( FieldImpl::GivenName, Frequent );
413 createField( FieldImpl::AdditionalName ); 403 createField( FieldImpl::AdditionalName );
414 createField( FieldImpl::Prefix ); 404 createField( FieldImpl::Prefix );
415 createField( FieldImpl::Suffix ); 405 createField( FieldImpl::Suffix );
416 createField( FieldImpl::NickName, Personal ); 406 createField( FieldImpl::NickName, Personal );
417 createField( FieldImpl::Birthday, Personal ); 407 createField( FieldImpl::Birthday, Personal );
418 createField( FieldImpl::Category ); 408 createField( FieldImpl::Category );
419 createField( FieldImpl::HomeAddressStreet, Address|Personal ); 409 createField( FieldImpl::HomeAddressStreet, Address|Personal );
420 createField( FieldImpl::HomeAddressLocality, Address|Personal ); 410 createField( FieldImpl::HomeAddressLocality, Address|Personal );
421 createField( FieldImpl::HomeAddressRegion, Address|Personal ); 411 createField( FieldImpl::HomeAddressRegion, Address|Personal );
422 createField( FieldImpl::HomeAddressPostalCode, Address|Personal ); 412 createField( FieldImpl::HomeAddressPostalCode, Address|Personal );
423 createField( FieldImpl::HomeAddressCountry, Address|Personal ); 413 createField( FieldImpl::HomeAddressCountry, Address|Personal );
424 createField( FieldImpl::HomeAddressLabel, Address|Personal ); 414 createField( FieldImpl::HomeAddressLabel, Address|Personal );
425 createField( FieldImpl::BusinessAddressStreet, Address|Organization ); 415 createField( FieldImpl::BusinessAddressStreet, Address|Organization );
426 createField( FieldImpl::BusinessAddressLocality, Address|Organization ); 416 createField( FieldImpl::BusinessAddressLocality, Address|Organization );
427 createField( FieldImpl::BusinessAddressRegion, Address|Organization ); 417 createField( FieldImpl::BusinessAddressRegion, Address|Organization );
428 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization ); 418 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization );
429 createField( FieldImpl::BusinessAddressCountry, Address|Organization ); 419 createField( FieldImpl::BusinessAddressCountry, Address|Organization );
430 createField( FieldImpl::BusinessAddressLabel, Address|Organization ); 420 createField( FieldImpl::BusinessAddressLabel, Address|Organization );
431 createField( FieldImpl::HomePhone, Personal|Frequent ); 421 createField( FieldImpl::HomePhone, Personal|Frequent );
432 createField( FieldImpl::BusinessPhone, Organization|Frequent ); 422 createField( FieldImpl::BusinessPhone, Organization|Frequent );
433 createField( FieldImpl::MobilePhone, Frequent ); 423 createField( FieldImpl::MobilePhone, Frequent );
434 createField( FieldImpl::MobileHomePhone, Frequent );
435 createField( FieldImpl::MobileWorkPhone, Frequent ); 424 createField( FieldImpl::MobileWorkPhone, Frequent );
436 createField( FieldImpl::HomeFax ); 425 createField( FieldImpl::HomeFax );
437 createField( FieldImpl::BusinessFax ); 426 createField( FieldImpl::BusinessFax );
438 createField( FieldImpl::CarPhone );
439 createField( FieldImpl::Isdn ); 427 createField( FieldImpl::Isdn );
440 createField( FieldImpl::Pager ); 428 createField( FieldImpl::Pager );
441 createField( FieldImpl::Email, Email|Frequent ); 429 createField( FieldImpl::Email, Email|Frequent );
442 createField( FieldImpl::Mailer, Email ); 430 createField( FieldImpl::Mailer, Email );
443 createField( FieldImpl::Title, Organization ); 431 createField( FieldImpl::Title, Organization );
444 createField( FieldImpl::Role, Organization ); 432 createField( FieldImpl::Role, Organization );
445 createField( FieldImpl::Organization, Organization ); 433 createField( FieldImpl::Organization, Organization );
446 createField( FieldImpl::Note ); 434 createField( FieldImpl::Note );
447 createField( FieldImpl::Url ); 435 createField( FieldImpl::Url );
448 createField( FieldImpl::Resource ); 436 createField( FieldImpl::Resource );
449 createField( FieldImpl::Sip ); 437 createField( FieldImpl::Sip );
450 createField( FieldImpl::OtherPhone ); 438 createField( FieldImpl::OtherPhone );
451 } 439 }
452 440
453 return mAllFields; 441 return mAllFields;
454} 442}
455 443
456Field::List Field::defaultFields() 444Field::List Field::defaultFields()
457{ 445{
458 if ( mDefaultFields.isEmpty() ) { 446 if ( mDefaultFields.isEmpty() ) {
459 createDefaultField( FieldImpl::GivenName ); 447 createDefaultField( FieldImpl::GivenName );
460 createDefaultField( FieldImpl::FamilyName ); 448 createDefaultField( FieldImpl::FamilyName );
461 createDefaultField( FieldImpl::Email ); 449 createDefaultField( FieldImpl::Email );
462 } 450 }
463 451
464 return mDefaultFields; 452 return mDefaultFields;
465} 453}
466 454
467void Field::createField( int id, int category ) 455void Field::createField( int id, int category )
468{ 456{
469 mAllFields.append( new Field( new FieldImpl( id, category ) ) ); 457 mAllFields.append( new Field( new FieldImpl( id, category ) ) );
470} 458}
471 459
472void Field::createDefaultField( int id, int category ) 460void Field::createDefaultField( int id, int category )
473{ 461{
474 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) ); 462 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) );
475} 463}
476 464
477void Field::deleteFields() 465void Field::deleteFields()
478{ 466{
479 Field::List::ConstIterator it; 467 Field::List::ConstIterator it;
480 468
481 for( it = mAllFields.begin(); it != mAllFields.end(); ++it ) { 469 for( it = mAllFields.begin(); it != mAllFields.end(); ++it ) {
482 delete (*it); 470 delete (*it);
483 } 471 }
484 mAllFields.clear(); 472 mAllFields.clear();
485 473
486 for( it = mDefaultFields.begin(); it != mDefaultFields.end(); ++it ) { 474 for( it = mDefaultFields.begin(); it != mDefaultFields.end(); ++it ) {
487 delete (*it); 475 delete (*it);
488 } 476 }
489 mDefaultFields.clear(); 477 mDefaultFields.clear();
490 478
491 for( it = mCustomFields.begin(); it != mCustomFields.end(); ++it ) { 479 for( it = mCustomFields.begin(); it != mCustomFields.end(); ++it ) {
492 delete (*it); 480 delete (*it);
493 } 481 }
494 mCustomFields.clear(); 482 mCustomFields.clear();
495} 483}
496 484
497void Field::saveFields( const QString &identifier, 485void Field::saveFields( const QString &identifier,
498 const Field::List &fields ) 486 const Field::List &fields )
499{ 487{
500 KConfig *cfg = KGlobal::config(); 488 KConfig *cfg = KGlobal::config();
501 KConfigGroupSaver( cfg, "KABCFields" ); 489 KConfigGroupSaver( cfg, "KABCFields" );
502 saveFields( cfg, identifier, fields ); 490 saveFields( cfg, identifier, fields );
503} 491}
504 492
505void Field::saveFields( KConfig *cfg, const QString &identifier, 493void Field::saveFields( KConfig *cfg, const QString &identifier,
506 const Field::List &fields ) 494 const Field::List &fields )
507{ 495{
508 QValueList<int> fieldIds; 496 QValueList<int> fieldIds;
509 497
510//US 498//US
511// qDebug("Field::saveFields to %s %s", cfg->getFileName().latin1(), identifier.latin1()); 499// qDebug("Field::saveFields to %s %s", cfg->getFileName().latin1(), identifier.latin1());
512 500
513 int custom = 0; 501 int custom = 0;
514 Field::List::ConstIterator it; 502 Field::List::ConstIterator it;
515 for( it = fields.begin(); it != fields.end(); ++it ) { 503 for( it = fields.begin(); it != fields.end(); ++it ) {
516//US 504//US
517// qDebug("Field::saveFields field:%i", (*it)->mImpl->fieldId()); 505// qDebug("Field::saveFields field:%i", (*it)->mImpl->fieldId());
518 506
519 fieldIds.append( (*it)->mImpl->fieldId() ); 507 fieldIds.append( (*it)->mImpl->fieldId() );
520 if( (*it)->isCustom() ) { 508 if( (*it)->isCustom() ) {
521 QStringList customEntry; 509 QStringList customEntry;
522 customEntry << (*it)->mImpl->label(); 510 customEntry << (*it)->mImpl->label();
523 customEntry << (*it)->mImpl->key(); 511 customEntry << (*it)->mImpl->key();
524 customEntry << (*it)->mImpl->app(); 512 customEntry << (*it)->mImpl->app();
525 cfg->writeEntry( "KABC_CustomEntry_" + identifier + "_" + 513 cfg->writeEntry( "KABC_CustomEntry_" + identifier + "_" +
526 QString::number( custom++ ), customEntry ); 514 QString::number( custom++ ), customEntry );
527 } 515 }
528 } 516 }
529 cfg->writeEntry( identifier, fieldIds ); 517 cfg->writeEntry( identifier, fieldIds );
530} 518}
531 519
532Field::List Field::restoreFields( const QString &identifier ) 520Field::List Field::restoreFields( const QString &identifier )
533{ 521{
534//US 522//US
535// qDebug("Field::restoreFields, identifier: %s", identifier.latin1()); 523// qDebug("Field::restoreFields, identifier: %s", identifier.latin1());
536 524
537 KConfig *cfg = KGlobal::config(); 525 KConfig *cfg = KGlobal::config();
538 KConfigGroupSaver( cfg, "KABCFields" ); 526 KConfigGroupSaver( cfg, "KABCFields" );
539 cfg->setGroup( "KABCFields" ); 527 cfg->setGroup( "KABCFields" );
540 528
541 Field::List l = restoreFields( cfg, identifier ); 529 Field::List l = restoreFields( cfg, identifier );
542 530
543 return l; 531 return l;
544} 532}
545 533
546Field::List Field::restoreFields( KConfig *cfg, const QString &identifier ) 534Field::List Field::restoreFields( KConfig *cfg, const QString &identifier )
547{ 535{
548 QValueList<int> fieldIds = cfg->readIntListEntry( identifier); 536 QValueList<int> fieldIds = cfg->readIntListEntry( identifier);
549//US 537//US
550// qDebug("Field::restoreFields from %s, identifier: %s", cfg->getFileName().latin1(), identifier.latin1()); 538// qDebug("Field::restoreFields from %s, identifier: %s", cfg->getFileName().latin1(), identifier.latin1());
551 539
552 Field::List fields; 540 Field::List fields;
553 541
554 int custom = 0; 542 int custom = 0;
555 QValueList<int>::ConstIterator it; 543 QValueList<int>::ConstIterator it;
556 for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) { 544 for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) {
557 FieldImpl *f = 0; 545 FieldImpl *f = 0;
558 if ( (*it) == FieldImpl::CustomField ) { 546 if ( (*it) == FieldImpl::CustomField ) {
559 QStringList customEntry = cfg->readListEntry( "KABC_CustomEntry_" + 547 QStringList customEntry = cfg->readListEntry( "KABC_CustomEntry_" +
560 identifier + "_" + 548 identifier + "_" +
561 QString::number( custom++ ) ); 549 QString::number( custom++ ) );
562 f = new FieldImpl( *it, CustomCategory, customEntry[ 0 ], 550 f = new FieldImpl( *it, CustomCategory, customEntry[ 0 ],
563 customEntry[ 1 ], customEntry[ 2 ] ); 551 customEntry[ 1 ], customEntry[ 2 ] );
564 } else { 552 } else {
565 f = new FieldImpl( *it ); 553 f = new FieldImpl( *it );
566 } 554 }
567 fields.append( new Field( f ) ); 555 fields.append( new Field( f ) );
568 } 556 }
569 557
570 return fields; 558 return fields;
571} 559}
572 560
573bool Field::equals( Field *field ) 561bool Field::equals( Field *field )
574{ 562{
575 bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() ); 563 bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() );
576 564
577 if ( !sameId ) return false; 565 if ( !sameId ) return false;
578 566
579 if ( mImpl->fieldId() != FieldImpl::CustomField ) return true; 567 if ( mImpl->fieldId() != FieldImpl::CustomField ) return true;
580 568
581 return mImpl->key() == field->mImpl->key(); 569 return mImpl->key() == field->mImpl->key();
582} 570}
583 571
584Field *Field::createCustomField( const QString &label, int category, 572Field *Field::createCustomField( const QString &label, int category,
585 const QString &key, const QString &app ) 573 const QString &key, const QString &app )
586{ 574{
587 Field *field = new Field( new FieldImpl( FieldImpl::CustomField, 575 Field *field = new Field( new FieldImpl( FieldImpl::CustomField,
588 category | CustomCategory, 576 category | CustomCategory,
589 label, key, app ) ); 577 label, key, app ) );
590//US 578//US
591// qDebug("Field::createCustomField label %s", label.latin1() ); 579// qDebug("Field::createCustomField label %s", label.latin1() );
592 580
593 mCustomFields.append( field ); 581 mCustomFields.append( field );
594 582
595 return field; 583 return field;
596} 584}
diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp
index 90cc4cf..6db1bcf 100644
--- a/kabc/phonenumber.cpp
+++ b/kabc/phonenumber.cpp
@@ -1,369 +1,369 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library 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 GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <kapplication.h> 28#include <kapplication.h>
29#include <klocale.h> 29#include <klocale.h>
30 30
31#include "phonenumber.h" 31#include "phonenumber.h"
32 32
33using namespace KABC; 33using namespace KABC;
34 34
35PhoneNumber::PhoneNumber() : 35PhoneNumber::PhoneNumber() :
36 mType( Home ) 36 mType( Home )
37{ 37{
38 init(); 38 init();
39} 39}
40 40
41PhoneNumber::PhoneNumber( const QString &number, int type ) : 41PhoneNumber::PhoneNumber( const QString &number, int type ) :
42 mType( type ), mNumber( number ) 42 mType( type ), mNumber( number )
43{ 43{
44 init(); 44 init();
45} 45}
46 46
47PhoneNumber::~PhoneNumber() 47PhoneNumber::~PhoneNumber()
48{ 48{
49} 49}
50 50
51void PhoneNumber::init() 51void PhoneNumber::init()
52{ 52{
53 mId = KApplication::randomString( 8 ); 53 mId = KApplication::randomString( 8 );
54} 54}
55 55
56bool PhoneNumber::operator==( const PhoneNumber &p ) const 56bool PhoneNumber::operator==( const PhoneNumber &p ) const
57{ 57{
58 if ( mNumber != p.mNumber ) return false; 58 if ( mNumber != p.mNumber ) return false;
59 if ( mType != p.mType ) return false; 59 if ( mType != p.mType ) return false;
60 60
61 return true; 61 return true;
62} 62}
63 63
64bool PhoneNumber::operator!=( const PhoneNumber &p ) const 64bool PhoneNumber::operator!=( const PhoneNumber &p ) const
65{ 65{
66 return !( p == *this ); 66 return !( p == *this );
67} 67}
68void PhoneNumber::makeCompat() 68void PhoneNumber::makeCompat()
69{ 69{
70 mType = getCompatType( mType ); 70 mType = getCompatType( mType );
71} 71}
72int PhoneNumber::getCompatType( int type ) 72int PhoneNumber::getCompatType( int type )
73{ 73{
74 74
75 if ((type & Cell) == Cell) { 75 if ((type & Cell) == Cell) {
76 if ((type & Work) == Work) 76 if ((type & Work) == Work)
77 return Car; 77 return Car;
78 return Cell; 78 return Cell;
79 } 79 }
80 if ((type & Home) == Home) { 80 if ((type & Home) == Home) {
81 if ((type & Pref) == Pref) 81 if ((type & Pref) == Pref)
82 return (Home | Pref); 82 return (Home | Pref);
83 if ((type & Fax) == Fax) 83 if ((type & Fax) == Fax)
84 return (Home | Fax); 84 return (Home | Fax);
85 return (Home); 85 return (Home);
86 } 86 }
87 if ((type & Work) == Work) { 87 if ((type & Work) == Work) {
88 if ((type & Pref) == Pref) 88 if ((type & Pref) == Pref)
89 return (Work| Pref); 89 return (Work| Pref);
90 if ((type & Fax) == Fax) 90 if ((type & Fax) == Fax)
91 return (Fax |Work); 91 return (Fax |Work);
92 if ((type & Msg) == Msg) { 92 if ((type & Msg) == Msg) {
93 if ((type & Voice) == Voice) 93 if ((type & Voice) == Voice)
94 return ( Msg | Voice |Work); 94 return ( Msg | Voice |Work);
95 return ( Msg | Work); 95 return ( Msg | Work);
96 } 96 }
97 return Work; 97 return Work;
98 } 98 }
99 if ((type & Pcs) == Pcs) { 99 if ((type & Pcs) == Pcs) {
100 if ((type & Pref) == Pref) 100 if ((type & Pref) == Pref)
101 return Pcs | Pref; 101 return Pcs | Pref;
102 return Pcs; 102 return Pcs;
103 } 103 }
104 if ((type & Car) == Car) 104 if ((type & Car) == Car)
105 return Car; 105 return Car;
106 if ((type & Pager) == Pager) 106 if ((type & Pager) == Pager)
107 return Pager; 107 return Pager;
108 if ((type & Isdn) == Isdn) 108 if ((type & Isdn) == Isdn)
109 return Isdn; 109 return Isdn;
110 if ((type & Video) == Video) 110 if ((type & Video) == Video)
111 return Video; 111 return Video;
112 112
113 if ((type & Msg) == Msg) 113 if ((type & Msg) == Msg)
114 return Msg; 114 return Msg;
115 if ((type & Fax) == Fax) 115 if ((type & Fax) == Fax)
116 return Fax; 116 return Fax;
117 117
118 if ((type & Pref) == Pref) 118 if ((type & Pref) == Pref)
119 return Pref; 119 return Pref;
120 120
121 return Voice; 121 return Voice;
122 122
123} 123}
124bool PhoneNumber::simplifyNumber() 124bool PhoneNumber::simplifyNumber()
125{ 125{
126 QString Number; 126 QString Number;
127 int i; 127 int i;
128 Number = mNumber.stripWhiteSpace (); 128 Number = mNumber.stripWhiteSpace ();
129 mNumber = ""; 129 mNumber = "";
130 for ( i = 0; i < Number.length(); ++i) { 130 for ( i = 0; i < Number.length(); ++i) {
131 if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' ) 131 if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' )
132 mNumber += Number.at(i); 132 mNumber += Number.at(i);
133 } 133 }
134 return ( mNumber.length() > 0 ); 134 return ( mNumber.length() > 0 );
135} 135}
136// make cellphone compatible 136// make cellphone compatible
137void PhoneNumber::simplifyType() 137void PhoneNumber::simplifyType()
138{ 138{
139 if ( mType & Fax ) mType = Fax; 139 if ( mType & Fax ) mType = Fax;
140 else if ( mType & Cell ) mType = Cell; 140 else if ( mType & Cell ) mType = Cell;
141 else if ( mType & Work ) mType = Work ; 141 else if ( mType & Work ) mType = Work ;
142 else if ( mType & Home ) mType = Home; 142 else if ( mType & Home ) mType = Home;
143 else mType = Pref; 143 else mType = Pref;
144} 144}
145bool PhoneNumber::contains( const PhoneNumber &p ) 145bool PhoneNumber::contains( const PhoneNumber &p )
146{ 146{
147 PhoneNumber myself; 147 PhoneNumber myself;
148 PhoneNumber other; 148 PhoneNumber other;
149 myself = *this; 149 myself = *this;
150 other = p; 150 other = p;
151 myself.simplifyNumber(); 151 myself.simplifyNumber();
152 other.simplifyNumber(); 152 other.simplifyNumber();
153 if ( myself.number() != other.number ()) 153 if ( myself.number() != other.number ())
154 return false; 154 return false;
155 myself.simplifyType(); 155 myself.simplifyType();
156 other.simplifyType(); 156 other.simplifyType();
157 if ( myself.type() == other.type()) 157 if ( myself.type() == other.type())
158 return true; 158 return true;
159 return false; 159 return false;
160} 160}
161 161
162void PhoneNumber::setId( const QString &id ) 162void PhoneNumber::setId( const QString &id )
163{ 163{
164 mId = id; 164 mId = id;
165} 165}
166 166
167QString PhoneNumber::id() const 167QString PhoneNumber::id() const
168{ 168{
169 return mId; 169 return mId;
170} 170}
171 171
172void PhoneNumber::setNumber( const QString &number ) 172void PhoneNumber::setNumber( const QString &number )
173{ 173{
174 mNumber = number; 174 mNumber = number;
175} 175}
176 176
177QString PhoneNumber::number() const 177QString PhoneNumber::number() const
178{ 178{
179 return mNumber; 179 return mNumber;
180} 180}
181 181
182void PhoneNumber::setType( int type ) 182void PhoneNumber::setType( int type )
183{ 183{
184 mType = type; 184 mType = type;
185} 185}
186 186
187int PhoneNumber::type() const 187int PhoneNumber::type() const
188{ 188{
189 return mType; 189 return mType;
190} 190}
191 191
192QString PhoneNumber::typeLabel() const 192QString PhoneNumber::typeLabel() const
193{ 193{
194 QString label; 194 QString label;
195 bool first = true; 195 bool first = true;
196 196
197 TypeList list = typeList(); 197 TypeList list = typeList();
198 198
199 TypeList::Iterator it; 199 TypeList::Iterator it;
200 for ( it = list.begin(); it != list.end(); ++it ) { 200 for ( it = list.begin(); it != list.end(); ++it ) {
201 if ( ( type() & (*it) ) && ( (*it) != Pref ) ) { 201 if ( ( type() & (*it) ) && ( (*it) != Pref ) ) {
202 label.append( ( first ? "" : "/" ) + typeLabel( *it ) ); 202 label.append( ( first ? "" : "/" ) + typeLabel( *it ) );
203 if ( first ) 203 if ( first )
204 first = false; 204 first = false;
205 } 205 }
206 } 206 }
207 207
208 return label; 208 return label;
209} 209}
210 210
211QString PhoneNumber::label() const 211QString PhoneNumber::label() const
212{ 212{
213 return typeLabel( type() ); 213 return typeLabel( type() );
214} 214}
215 215
216PhoneNumber::TypeList PhoneNumber::typeList() 216PhoneNumber::TypeList PhoneNumber::typeList()
217{ 217{
218 TypeList list; 218 TypeList list;
219 219
220 list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video 220 list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video
221 << Bbs << Modem << Car << Isdn << Pcs << Pager; 221 << Bbs << Modem << Car << Isdn << Pcs << Pager;
222 222
223 return list; 223 return list;
224} 224}
225PhoneNumber::TypeList PhoneNumber::supportedTypeList() 225PhoneNumber::TypeList PhoneNumber::supportedTypeList()
226{ 226{
227 static TypeList list; 227 static TypeList list;
228 if ( list.count() == 0 ) 228 if ( list.count() == 0 )
229 list << (Home| Pref) << (Work| Pref) << Cell <<(Pcs|Pref)<< Pcs<< Home << Work << Car << (Work| Msg | Voice) << (Work| Msg) << (Home | Fax) << (Work| Fax) << Fax<< Pager << Isdn << Video << Msg << Pref << Voice; 229 list << (Home| Pref) << (Work| Pref) << Cell <<(Pcs|Pref)<< Pcs<< Home << Work << Car << (Work| Msg | Voice) << (Work| Msg) << (Home | Fax) << (Work| Fax) << Fax<< Pager << Isdn << Video << Msg << Pref << Voice;
230 return list; 230 return list;
231} 231}
232QStringList PhoneNumber::supportedTypeListNames() 232QStringList PhoneNumber::supportedTypeListNames()
233{ 233{
234 static QStringList list; 234 static QStringList list;
235 if ( list.count() == 0 ) 235 if ( list.count() == 0 )
236 list << i18n("Home") << i18n("Work") << i18n("Mobile") << i18n("SIP") << i18n("VoIP") <<i18n("Home2")<< i18n("Work2") << i18n("Mobile2 (Work)") << i18n("Assistent") << i18n("Company") << i18n("Fax (Home)") << i18n("Fax (Work)") << i18n("Fax (Other)") << i18n("Pager") << i18n("ISDN") << i18n("Video") << i18n("Callback") << i18n("Primary")<< i18n("Other"); 236 list << i18n("Home") << i18n("Work") << i18n("Mobile") << i18n("SIP") << i18n("VoIP") <<i18n("Home2")<< i18n("Work2") << i18n("Mobile2") << i18n("Assistent") << i18n("Company") << i18n("Fax (Home)") << i18n("Fax (Work)") << i18n("Fax (Other)") << i18n("Pager") << i18n("ISDN") << i18n("Video") << i18n("Callback") << i18n("Primary")<< i18n("Other");
237 return list; 237 return list;
238} 238}
239 239
240int PhoneNumber::typeListIndex4Type(int type ) 240int PhoneNumber::typeListIndex4Type(int type )
241{ 241{
242 TypeList list = supportedTypeList(); 242 TypeList list = supportedTypeList();
243 int i = 0; 243 int i = 0;
244 while ( i < list.count() ) { 244 while ( i < list.count() ) {
245 if ( list [i] == type ) 245 if ( list [i] == type )
246 return i; 246 return i;
247 ++i; 247 ++i;
248 } 248 }
249 return list.count()-1; 249 return list.count()-1;
250} 250}
251 251
252QString PhoneNumber::label( int type ) 252QString PhoneNumber::label( int type )
253{ 253{
254 return typeLabel( type ); 254 return typeLabel( type );
255} 255}
256 256
257QString PhoneNumber::typeLabel( int type ) 257QString PhoneNumber::typeLabel( int type )
258{ 258{
259 if ((type & Cell) == Cell) 259 if ((type & Cell) == Cell)
260 return i18n("Mobile"); 260 return i18n("Mobile");
261 if ((type & Home) == Home) { 261 if ((type & Home) == Home) {
262 if ((type & Pref) == Pref) 262 if ((type & Pref) == Pref)
263 return i18n("Home"); 263 return i18n("Home");
264 if ((type & Fax) == Fax) 264 if ((type & Fax) == Fax)
265 return i18n("Fax (Home)"); 265 return i18n("Fax (Home)");
266 return i18n("Home2"); 266 return i18n("Home2");
267 } 267 }
268 268
269 if ((type & Work) == Work) { 269 if ((type & Work) == Work) {
270 if ((type & Pref) == Pref) 270 if ((type & Pref) == Pref)
271 return i18n("Work"); 271 return i18n("Work");
272 if ((type & Fax) == Fax) 272 if ((type & Fax) == Fax)
273 return i18n("Fax (Work)"); 273 return i18n("Fax (Work)");
274 if ((type & Msg) == Msg) { 274 if ((type & Msg) == Msg) {
275 if ((type & Voice) == Voice) 275 if ((type & Voice) == Voice)
276 return i18n("Assistent"); 276 return i18n("Assistent");
277 return i18n("Company"); 277 return i18n("Company");
278 } 278 }
279 return i18n("Work2"); 279 return i18n("Work2");
280 } 280 }
281 if ((type & Pcs) == Pcs) { 281 if ((type & Pcs) == Pcs) {
282 if ((type & Pref) == Pref) 282 if ((type & Pref) == Pref)
283 return i18n("SIP"); 283 return i18n("SIP");
284 return i18n("VoIP"); 284 return i18n("VoIP");
285 } 285 }
286 if ((type & Car) == Car) 286 if ((type & Car) == Car)
287 return i18n("Mobile2 (Work)"); 287 return i18n("Mobile2");
288 if ((type & Pager) == Pager) 288 if ((type & Pager) == Pager)
289 return i18n("Pager"); 289 return i18n("Pager");
290 if ((type & Isdn) == Isdn) 290 if ((type & Isdn) == Isdn)
291 return i18n("ISDN"); 291 return i18n("ISDN");
292 if ((type & Video) == Video) 292 if ((type & Video) == Video)
293 return i18n("Video"); 293 return i18n("Video");
294 294
295 if ((type & Msg) == Msg) 295 if ((type & Msg) == Msg)
296 return i18n("Callback"); 296 return i18n("Callback");
297 if ((type & Fax) == Fax) 297 if ((type & Fax) == Fax)
298 return i18n("Fax (Other)"); 298 return i18n("Fax (Other)");
299 299
300 if ((type & Pref) == Pref) 300 if ((type & Pref) == Pref)
301 return i18n("Primary"); 301 return i18n("Primary");
302 302
303 303
304 return i18n("Other"); 304 return i18n("Other");
305 305
306 306
307#if 0 307#if 0
308 308
309 309
310 310
311 QString typeString; 311 QString typeString;
312 312
313 313
314 if ((type & Cell) == Cell) 314 if ((type & Cell) == Cell)
315 typeString += i18n("Mobile") +" "; 315 typeString += i18n("Mobile") +" ";
316 if ((type & Home) == Home) 316 if ((type & Home) == Home)
317 typeString += i18n("Home")+" "; 317 typeString += i18n("Home")+" ";
318 else if ((type & Work) == Work) 318 else if ((type & Work) == Work)
319 typeString += i18n("Work")+" "; 319 typeString += i18n("Work")+" ";
320 320
321 if ((type & Sip) == Sip) 321 if ((type & Sip) == Sip)
322 typeString += i18n("SIP")+" "; 322 typeString += i18n("SIP")+" ";
323 if ((type & Car) == Car) 323 if ((type & Car) == Car)
324 typeString += i18n("Car")+" "; 324 typeString += i18n("Car")+" ";
325 325
326 if ((type & Fax) == Fax) 326 if ((type & Fax) == Fax)
327 typeString += i18n("Fax"); 327 typeString += i18n("Fax");
328 else if ((type & Msg) == Msg) 328 else if ((type & Msg) == Msg)
329 typeString += i18n("Messenger"); 329 typeString += i18n("Messenger");
330 else if ((type & Video) == Video) 330 else if ((type & Video) == Video)
331 typeString += i18n("Video"); 331 typeString += i18n("Video");
332 else if ((type & Bbs) == Bbs) 332 else if ((type & Bbs) == Bbs)
333 typeString += i18n("Mailbox"); 333 typeString += i18n("Mailbox");
334 else if ((type & Modem) == Modem) 334 else if ((type & Modem) == Modem)
335 typeString += i18n("Modem"); 335 typeString += i18n("Modem");
336 else if ((type & Isdn) == Isdn) 336 else if ((type & Isdn) == Isdn)
337 typeString += i18n("ISDN"); 337 typeString += i18n("ISDN");
338 else if ((type & Pcs) == Pcs) 338 else if ((type & Pcs) == Pcs)
339 typeString += i18n("PCS"); 339 typeString += i18n("PCS");
340 else if ((type & Pager) == Pager) 340 else if ((type & Pager) == Pager)
341 typeString += i18n("Pager"); 341 typeString += i18n("Pager");
342 // add the prefered flag 342 // add the prefered flag
343 /* 343 /*
344 if ((type & Pref) == Pref) 344 if ((type & Pref) == Pref)
345 typeString += i18n("(p)"); 345 typeString += i18n("(p)");
346 */ 346 */
347 //if we still have no match, return "other" 347 //if we still have no match, return "other"
348 if (typeString.isEmpty()) { 348 if (typeString.isEmpty()) {
349 if ((type & Voice) == Voice) 349 if ((type & Voice) == Voice)
350 return i18n("Voice"); 350 return i18n("Voice");
351 else 351 else
352 return i18n("Other"); 352 return i18n("Other");
353 } 353 }
354 354
355 return typeString.stripWhiteSpace(); 355 return typeString.stripWhiteSpace();
356#endif 356#endif
357} 357}
358 358
359QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) 359QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone )
360{ 360{
361 return s << phone.mId << phone.mType << phone.mNumber; 361 return s << phone.mId << phone.mType << phone.mNumber;
362} 362}
363 363
364QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) 364QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone )
365{ 365{
366 s >> phone.mId >> phone.mType >> phone.mNumber; 366 s >> phone.mId >> phone.mType >> phone.mNumber;
367 367
368 return s; 368 return s;
369} 369}
diff --git a/kaddressbook/xxport/csvimportdialog.cpp b/kaddressbook/xxport/csvimportdialog.cpp
index 4044fa8..862241e 100644
--- a/kaddressbook/xxport/csvimportdialog.cpp
+++ b/kaddressbook/xxport/csvimportdialog.cpp
@@ -1,552 +1,552 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (C) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (C) 2003 Tobias Koenig <tokoe@kde.org>
4 based on the code of KSpread's CSV Import Dialog 4 based on the code of KSpread's CSV Import Dialog
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29 29
30#include <qbuttongroup.h> 30#include <qbuttongroup.h>
31#include <qcheckbox.h> 31#include <qcheckbox.h>
32#include <qcombobox.h> 32#include <qcombobox.h>
33#ifdef DESKTOP_VERSION 33#ifdef DESKTOP_VERSION
34#include <qinputdialog.h> 34#include <qinputdialog.h>
35#else 35#else
36#include <qtcompat/qinputdialog.h> 36#include <qtcompat/qinputdialog.h>
37#endif 37#endif
38#include <qlabel.h> 38#include <qlabel.h>
39#include <qlineedit.h> 39#include <qlineedit.h>
40#include <qpushbutton.h> 40#include <qpushbutton.h>
41#include <qradiobutton.h> 41#include <qradiobutton.h>
42#include <qtable.h> 42#include <qtable.h>
43#include <qlayout.h> 43#include <qlayout.h>
44#include <qtextstream.h> 44#include <qtextstream.h>
45#include <qfile.h> 45#include <qfile.h>
46 46
47#include <kapplication.h> 47#include <kapplication.h>
48#include <kdebug.h> 48#include <kdebug.h>
49#include <kdialogbase.h> 49#include <kdialogbase.h>
50#include <kfiledialog.h> 50#include <kfiledialog.h>
51#include <klineedit.h> 51#include <klineedit.h>
52#include <klocale.h> 52#include <klocale.h>
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kmessagebox.h> 54#include <kmessagebox.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kurlrequester.h> 56#include <kurlrequester.h>
57 57
58#ifdef DESKTOP_VERSION 58#ifdef DESKTOP_VERSION
59#include "qtable.h" 59#include "qtable.h"
60#else 60#else
61#include "qcombotableitem.h" 61#include "qcombotableitem.h"
62#endif 62#endif
63#include "csvimportdialog.h" 63#include "csvimportdialog.h"
64 64
65CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, 65CSVImportDialog::CSVImportDialog( KABC::AddressBook *ab, QWidget *parent,
66 const char * name ) 66 const char * name )
67 : KDialogBase( Plain, i18n ( "CSV Import Dialog" ), Ok | Cancel | User1 | 67 : KDialogBase( Plain, i18n ( "CSV Import Dialog" ), Ok | Cancel | User1 |
68 User2, Ok, parent, name, true, true ), 68 User2, Ok, parent, name, true, true ),
69 mAdjustRows( false ), 69 mAdjustRows( false ),
70 mStartLine( 0 ), 70 mStartLine( 0 ),
71 mTextQuote( '"' ), 71 mTextQuote( '"' ),
72 mDelimiter( "," ), 72 mDelimiter( "," ),
73 mAddressBook( ab ) 73 mAddressBook( ab )
74{ 74{
75 initGUI(); 75 initGUI();
76 76
77 mTypeMap.insert( i18n( "Undefined" ), Undefined ); 77 mTypeMap.insert( i18n( "Undefined" ), Undefined );
78 mTypeMap.insert( KABC::Addressee::formattedNameLabel(), FormattedName ); 78 mTypeMap.insert( KABC::Addressee::formattedNameLabel(), FormattedName );
79 mTypeMap.insert( KABC::Addressee::familyNameLabel(), FamilyName ); 79 mTypeMap.insert( KABC::Addressee::familyNameLabel(), FamilyName );
80 mTypeMap.insert( KABC::Addressee::givenNameLabel(), GivenName ); 80 mTypeMap.insert( KABC::Addressee::givenNameLabel(), GivenName );
81 mTypeMap.insert( KABC::Addressee::additionalNameLabel(), AdditionalName ); 81 mTypeMap.insert( KABC::Addressee::additionalNameLabel(), AdditionalName );
82 mTypeMap.insert( KABC::Addressee::prefixLabel(), Prefix ); 82 mTypeMap.insert( KABC::Addressee::prefixLabel(), Prefix );
83 mTypeMap.insert( KABC::Addressee::suffixLabel(), Suffix ); 83 mTypeMap.insert( KABC::Addressee::suffixLabel(), Suffix );
84 mTypeMap.insert( KABC::Addressee::nickNameLabel(), NickName ); 84 mTypeMap.insert( KABC::Addressee::nickNameLabel(), NickName );
85 mTypeMap.insert( KABC::Addressee::birthdayLabel(), Birthday ); 85 mTypeMap.insert( KABC::Addressee::birthdayLabel(), Birthday );
86 86
87 mTypeMap.insert( KABC::Addressee::homeAddressStreetLabel(), HomeAddressStreet ); 87 mTypeMap.insert( KABC::Addressee::homeAddressStreetLabel(), HomeAddressStreet );
88 mTypeMap.insert( KABC::Addressee::homeAddressLocalityLabel(), 88 mTypeMap.insert( KABC::Addressee::homeAddressLocalityLabel(),
89 HomeAddressLocality ); 89 HomeAddressLocality );
90 mTypeMap.insert( KABC::Addressee::homeAddressRegionLabel(), HomeAddressRegion ); 90 mTypeMap.insert( KABC::Addressee::homeAddressRegionLabel(), HomeAddressRegion );
91 mTypeMap.insert( KABC::Addressee::homeAddressPostalCodeLabel(), 91 mTypeMap.insert( KABC::Addressee::homeAddressPostalCodeLabel(),
92 HomeAddressPostalCode ); 92 HomeAddressPostalCode );
93 mTypeMap.insert( KABC::Addressee::homeAddressCountryLabel(), 93 mTypeMap.insert( KABC::Addressee::homeAddressCountryLabel(),
94 HomeAddressCountry ); 94 HomeAddressCountry );
95 mTypeMap.insert( KABC::Addressee::homeAddressLabelLabel(), HomeAddressLabel ); 95 mTypeMap.insert( KABC::Addressee::homeAddressLabelLabel(), HomeAddressLabel );
96 96
97 mTypeMap.insert( KABC::Addressee::businessAddressStreetLabel(), 97 mTypeMap.insert( KABC::Addressee::businessAddressStreetLabel(),
98 BusinessAddressStreet ); 98 BusinessAddressStreet );
99 mTypeMap.insert( KABC::Addressee::businessAddressLocalityLabel(), 99 mTypeMap.insert( KABC::Addressee::businessAddressLocalityLabel(),
100 BusinessAddressLocality ); 100 BusinessAddressLocality );
101 mTypeMap.insert( KABC::Addressee::businessAddressRegionLabel(), 101 mTypeMap.insert( KABC::Addressee::businessAddressRegionLabel(),
102 BusinessAddressRegion ); 102 BusinessAddressRegion );
103 mTypeMap.insert( KABC::Addressee::businessAddressPostalCodeLabel(), 103 mTypeMap.insert( KABC::Addressee::businessAddressPostalCodeLabel(),
104 BusinessAddressPostalCode ); 104 BusinessAddressPostalCode );
105 mTypeMap.insert( KABC::Addressee::businessAddressCountryLabel(), 105 mTypeMap.insert( KABC::Addressee::businessAddressCountryLabel(),
106 BusinessAddressCountry ); 106 BusinessAddressCountry );
107 mTypeMap.insert( KABC::Addressee::businessAddressLabelLabel(), 107 mTypeMap.insert( KABC::Addressee::businessAddressLabelLabel(),
108 BusinessAddressLabel ); 108 BusinessAddressLabel );
109 109
110 mTypeMap.insert( KABC::Addressee::homePhoneLabel(), HomePhone ); 110 mTypeMap.insert( KABC::Addressee::homePhoneLabel(), HomePhone );
111 mTypeMap.insert( KABC::Addressee::businessPhoneLabel(), BusinessPhone ); 111 mTypeMap.insert( KABC::Addressee::businessPhoneLabel(), BusinessPhone );
112 mTypeMap.insert( KABC::Addressee::mobilePhoneLabel(), MobilePhone ); 112 mTypeMap.insert( KABC::Addressee::mobilePhoneLabel(), MobilePhone );
113 mTypeMap.insert( KABC::Addressee::homeFaxLabel(), HomeFax ); 113 mTypeMap.insert( KABC::Addressee::homeFaxLabel(), HomeFax );
114 mTypeMap.insert( KABC::Addressee::businessFaxLabel(), BusinessFax ); 114 mTypeMap.insert( KABC::Addressee::businessFaxLabel(), BusinessFax );
115 mTypeMap.insert( KABC::Addressee::carPhoneLabel(), CarPhone ); 115 mTypeMap.insert( KABC::Addressee::mobileWorkPhoneLabel(), MobileWorkPhone );
116 mTypeMap.insert( KABC::Addressee::isdnLabel(), Isdn ); 116 mTypeMap.insert( KABC::Addressee::isdnLabel(), Isdn );
117 mTypeMap.insert( KABC::Addressee::pagerLabel(), Pager ); 117 mTypeMap.insert( KABC::Addressee::pagerLabel(), Pager );
118 mTypeMap.insert( KABC::Addressee::emailLabel(), Email ); 118 mTypeMap.insert( KABC::Addressee::emailLabel(), Email );
119 mTypeMap.insert( KABC::Addressee::mailerLabel(), Mailer ); 119 mTypeMap.insert( KABC::Addressee::mailerLabel(), Mailer );
120 mTypeMap.insert( KABC::Addressee::titleLabel(), Title ); 120 mTypeMap.insert( KABC::Addressee::titleLabel(), Title );
121 mTypeMap.insert( KABC::Addressee::roleLabel(), Role ); 121 mTypeMap.insert( KABC::Addressee::roleLabel(), Role );
122 mTypeMap.insert( KABC::Addressee::organizationLabel(), Organization ); 122 mTypeMap.insert( KABC::Addressee::organizationLabel(), Organization );
123 mTypeMap.insert( KABC::Addressee::noteLabel(), Note ); 123 mTypeMap.insert( KABC::Addressee::noteLabel(), Note );
124 mTypeMap.insert( KABC::Addressee::urlLabel(), URL ); 124 mTypeMap.insert( KABC::Addressee::urlLabel(), URL );
125 mTypeMap.insert( KABC::Addressee::categoryLabel(), Categories ); 125 mTypeMap.insert( KABC::Addressee::categoryLabel(), Categories );
126 126
127 mCustomCounter = mTypeMap.count(); 127 mCustomCounter = mTypeMap.count();
128 int count = mCustomCounter; 128 int count = mCustomCounter;
129 129
130 KABC::Field::List fields = mAddressBook->fields( KABC::Field::CustomCategory ); 130 KABC::Field::List fields = mAddressBook->fields( KABC::Field::CustomCategory );
131 KABC::Field::List::Iterator it; 131 KABC::Field::List::Iterator it;
132 for ( it = fields.begin(); it != fields.end(); ++it, ++count ) 132 for ( it = fields.begin(); it != fields.end(); ++it, ++count )
133 mTypeMap.insert( (*it)->label(), count ); 133 mTypeMap.insert( (*it)->label(), count );
134 134
135 connect( mDelimiterBox, SIGNAL( clicked( int ) ), 135 connect( mDelimiterBox, SIGNAL( clicked( int ) ),
136 this, SLOT( delimiterClicked( int ) ) ); 136 this, SLOT( delimiterClicked( int ) ) );
137 connect( mDelimiterEdit, SIGNAL( returnPressed() ), 137 connect( mDelimiterEdit, SIGNAL( returnPressed() ),
138 this, SLOT( returnPressed() ) ); 138 this, SLOT( returnPressed() ) );
139 connect( mDelimiterEdit, SIGNAL( textChanged ( const QString& ) ), 139 connect( mDelimiterEdit, SIGNAL( textChanged ( const QString& ) ),
140 this, SLOT( textChanged ( const QString& ) ) ); 140 this, SLOT( textChanged ( const QString& ) ) );
141 connect( mComboLine, SIGNAL( activated( const QString& ) ), 141 connect( mComboLine, SIGNAL( activated( const QString& ) ),
142 this, SLOT( lineSelected( const QString& ) ) ); 142 this, SLOT( lineSelected( const QString& ) ) );
143 connect( mComboCodec, SIGNAL( activated( const QString& ) ), 143 connect( mComboCodec, SIGNAL( activated( const QString& ) ),
144 this, SLOT( codecChanged( const QString& ) ) ); 144 this, SLOT( codecChanged( const QString& ) ) );
145 connect( mComboQuote, SIGNAL( activated( const QString& ) ), 145 connect( mComboQuote, SIGNAL( activated( const QString& ) ),
146 this, SLOT( textquoteSelected( const QString& ) ) ); 146 this, SLOT( textquoteSelected( const QString& ) ) );
147 connect( mIgnoreDuplicates, SIGNAL( stateChanged( int ) ), 147 connect( mIgnoreDuplicates, SIGNAL( stateChanged( int ) ),
148 this, SLOT( ignoreDuplicatesChanged( int ) ) ); 148 this, SLOT( ignoreDuplicatesChanged( int ) ) );
149 149
150 connect( mUrlRequester, SIGNAL( returnPressed( const QString& ) ), 150 connect( mUrlRequester, SIGNAL( returnPressed( const QString& ) ),
151 this, SLOT( setFile( const QString& ) ) ); 151 this, SLOT( setFile( const QString& ) ) );
152 connect( mUrlRequester, SIGNAL( urlSelected( const QString& ) ), 152 connect( mUrlRequester, SIGNAL( urlSelected( const QString& ) ),
153 this, SLOT( setFile( const QString& ) ) ); 153 this, SLOT( setFile( const QString& ) ) );
154 connect( mUrlRequester->lineEdit(), SIGNAL( textChanged ( const QString& ) ), 154 connect( mUrlRequester->lineEdit(), SIGNAL( textChanged ( const QString& ) ),
155 this, SLOT( urlChanged( const QString& ) ) ); 155 this, SLOT( urlChanged( const QString& ) ) );
156 156
157 connect( this, SIGNAL( user1Clicked() ), 157 connect( this, SIGNAL( user1Clicked() ),
158 this, SLOT( applyTemplate() ) ); 158 this, SLOT( applyTemplate() ) );
159 159
160 connect( this, SIGNAL( user2Clicked() ), 160 connect( this, SIGNAL( user2Clicked() ),
161 this, SLOT( saveTemplate() ) ); 161 this, SLOT( saveTemplate() ) );
162 162
163 // if ( QApplication::desktop()->width() < 321 ) 163 // if ( QApplication::desktop()->width() < 321 )
164 QIconSet icon = SmallIcon("filesave"); 164 QIconSet icon = SmallIcon("filesave");
165 165
166 findButton( User2 )->setIconSet (icon ) ; 166 findButton( User2 )->setIconSet (icon ) ;
167 icon = SmallIcon("fileopen"); 167 icon = SmallIcon("fileopen");
168 findButton( User1 )->setIconSet (icon ) ; 168 findButton( User1 )->setIconSet (icon ) ;
169 int wid = findButton( User2 )->sizeHint().height(); 169 int wid = findButton( User2 )->sizeHint().height();
170 findButton( User2 )->setMaximumWidth( wid+4 ); 170 findButton( User2 )->setMaximumWidth( wid+4 );
171 findButton( User1 )->setMaximumWidth( wid+4 ); 171 findButton( User1 )->setMaximumWidth( wid+4 );
172} 172}
173 173
174CSVImportDialog::~CSVImportDialog() 174CSVImportDialog::~CSVImportDialog()
175{ 175{
176} 176}
177 177
178KABC::AddresseeList CSVImportDialog::contacts() const 178KABC::AddresseeList CSVImportDialog::contacts() const
179{ 179{
180 KABC::AddresseeList contacts; 180 KABC::AddresseeList contacts;
181 181
182 for ( int row = 1; row < mTable->numRows(); ++row ) { 182 for ( int row = 1; row < mTable->numRows(); ++row ) {
183 KABC::Addressee a; 183 KABC::Addressee a;
184 bool emptyRow = true; 184 bool emptyRow = true;
185 KABC::Address addrHome( KABC::Address::Home ); 185 KABC::Address addrHome( KABC::Address::Home );
186 KABC::Address addrWork( KABC::Address::Work ); 186 KABC::Address addrWork( KABC::Address::Work );
187 for ( int col = 0; col < mTable->numCols(); ++col ) { 187 for ( int col = 0; col < mTable->numCols(); ++col ) {
188 188
189 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, col ) ); 189 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, col ) );
190 190
191 if ( !item ) { 191 if ( !item ) {
192 qDebug( "ERROR: item cast failed" ); 192 qDebug( "ERROR: item cast failed" );
193 continue; 193 continue;
194 } 194 }
195 195
196 QString value = mTable->text( row, col ); 196 QString value = mTable->text( row, col );
197 if ( !value.isEmpty() ) 197 if ( !value.isEmpty() )
198 emptyRow = false; 198 emptyRow = false;
199 199
200 switch ( posToType( item->currentItem() ) ) 200 switch ( posToType( item->currentItem() ) )
201 { 201 {
202 case Undefined: 202 case Undefined:
203 continue; 203 continue;
204 break; 204 break;
205 case FormattedName: 205 case FormattedName:
206 a.setFormattedName( value ); 206 a.setFormattedName( value );
207 break; 207 break;
208 case GivenName: 208 case GivenName:
209 a.setGivenName( value ); 209 a.setGivenName( value );
210 break; 210 break;
211 case FamilyName: 211 case FamilyName:
212 a.setFamilyName( value ); 212 a.setFamilyName( value );
213 break; 213 break;
214 case AdditionalName: 214 case AdditionalName:
215 a.setAdditionalName( value ); 215 a.setAdditionalName( value );
216 break; 216 break;
217 case Prefix: 217 case Prefix:
218 a.setPrefix( value ); 218 a.setPrefix( value );
219 break; 219 break;
220 case Suffix: 220 case Suffix:
221 a.setSuffix( value ); 221 a.setSuffix( value );
222 break; 222 break;
223 case NickName: 223 case NickName:
224 a.setNickName( value ); 224 a.setNickName( value );
225 break; 225 break;
226 case Birthday: 226 case Birthday:
227//US 227//US
228//the generated code had the following format: a.setBirthday( QDate::fromString( value, Qt::ISODate ) ); 228//the generated code had the following format: a.setBirthday( QDate::fromString( value, Qt::ISODate ) );
229// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ? 229// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ?
230 { 230 {
231 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate 231 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate
232 a.setBirthday(dt); 232 a.setBirthday(dt);
233 } 233 }
234 break; 234 break;
235 case Email: 235 case Email:
236 if ( !value.isEmpty() ) 236 if ( !value.isEmpty() )
237 a.insertEmail( value, true ); 237 a.insertEmail( value, true );
238 break; 238 break;
239 case Role: 239 case Role:
240 a.setRole( value ); 240 a.setRole( value );
241 break; 241 break;
242 case Title: 242 case Title:
243 a.setTitle( value ); 243 a.setTitle( value );
244 break; 244 break;
245 case Mailer: 245 case Mailer:
246 a.setMailer( value ); 246 a.setMailer( value );
247 break; 247 break;
248 case URL: 248 case URL:
249 a.setUrl( value ); 249 a.setUrl( value );
250 break; 250 break;
251 case Organization: 251 case Organization:
252 a.setOrganization( value ); 252 a.setOrganization( value );
253 break; 253 break;
254 case Note: 254 case Note:
255 if ( a.note().isEmpty() ) 255 if ( a.note().isEmpty() )
256 a.setNote( value ); 256 a.setNote( value );
257 else { 257 else {
258 a.setNote( a.note()+"\n"+value ); 258 a.setNote( a.note()+"\n"+value );
259 } 259 }
260 break; 260 break;
261 case Categories: 261 case Categories:
262 a.insertCategory( value ); 262 a.insertCategory( value );
263 break; 263 break;
264 case HomePhone: 264 case HomePhone:
265 if ( !value.isEmpty() ) { 265 if ( !value.isEmpty() ) {
266 KABC::PhoneNumber number( value, KABC::PhoneNumber::Home ); 266 KABC::PhoneNumber number( value, KABC::PhoneNumber::Home );
267 a.insertPhoneNumber( number ); 267 a.insertPhoneNumber( number );
268 } 268 }
269 break; 269 break;
270 case BusinessPhone: 270 case BusinessPhone:
271 if ( !value.isEmpty() ) { 271 if ( !value.isEmpty() ) {
272 KABC::PhoneNumber number( value, KABC::PhoneNumber::Work ); 272 KABC::PhoneNumber number( value, KABC::PhoneNumber::Work );
273 a.insertPhoneNumber( number ); 273 a.insertPhoneNumber( number );
274 } 274 }
275 break; 275 break;
276 case MobilePhone: 276 case MobilePhone:
277 if ( !value.isEmpty() ) { 277 if ( !value.isEmpty() ) {
278 KABC::PhoneNumber number( value, KABC::PhoneNumber::Cell ); 278 KABC::PhoneNumber number( value, KABC::PhoneNumber::Cell );
279 a.insertPhoneNumber( number ); 279 a.insertPhoneNumber( number );
280 } 280 }
281 break; 281 break;
282 case HomeFax: 282 case HomeFax:
283 if ( !value.isEmpty() ) { 283 if ( !value.isEmpty() ) {
284 KABC::PhoneNumber number( value, KABC::PhoneNumber::Home | 284 KABC::PhoneNumber number( value, KABC::PhoneNumber::Home |
285 KABC::PhoneNumber::Fax ); 285 KABC::PhoneNumber::Fax );
286 a.insertPhoneNumber( number ); 286 a.insertPhoneNumber( number );
287 } 287 }
288 break; 288 break;
289 case BusinessFax: 289 case BusinessFax:
290 if ( !value.isEmpty() ) { 290 if ( !value.isEmpty() ) {
291 KABC::PhoneNumber number( value, KABC::PhoneNumber::Work | 291 KABC::PhoneNumber number( value, KABC::PhoneNumber::Work |
292 KABC::PhoneNumber::Fax ); 292 KABC::PhoneNumber::Fax );
293 a.insertPhoneNumber( number ); 293 a.insertPhoneNumber( number );
294 } 294 }
295 break; 295 break;
296 case CarPhone: 296 case MobileWorkPhone:
297 if ( !value.isEmpty() ) { 297 if ( !value.isEmpty() ) {
298 KABC::PhoneNumber number( value, KABC::PhoneNumber::Car ); 298 KABC::PhoneNumber number( value, KABC::PhoneNumber::Car );
299 a.insertPhoneNumber( number ); 299 a.insertPhoneNumber( number );
300 } 300 }
301 break; 301 break;
302 case Isdn: 302 case Isdn:
303 if ( !value.isEmpty() ) { 303 if ( !value.isEmpty() ) {
304 KABC::PhoneNumber number( value, KABC::PhoneNumber::Isdn ); 304 KABC::PhoneNumber number( value, KABC::PhoneNumber::Isdn );
305 a.insertPhoneNumber( number ); 305 a.insertPhoneNumber( number );
306 } 306 }
307 break; 307 break;
308 case Pager: 308 case Pager:
309 if ( !value.isEmpty() ) { 309 if ( !value.isEmpty() ) {
310 KABC::PhoneNumber number( value, KABC::PhoneNumber::Pager ); 310 KABC::PhoneNumber number( value, KABC::PhoneNumber::Pager );
311 a.insertPhoneNumber( number ); 311 a.insertPhoneNumber( number );
312 } 312 }
313 break; 313 break;
314 314
315 case HomeAddressStreet: 315 case HomeAddressStreet:
316 addrHome.setStreet( value ); 316 addrHome.setStreet( value );
317 break; 317 break;
318 case HomeAddressLocality: 318 case HomeAddressLocality:
319 addrHome.setLocality( value ); 319 addrHome.setLocality( value );
320 break; 320 break;
321 case HomeAddressRegion: 321 case HomeAddressRegion:
322 addrHome.setRegion( value ); 322 addrHome.setRegion( value );
323 break; 323 break;
324 case HomeAddressPostalCode: 324 case HomeAddressPostalCode:
325 addrHome.setPostalCode( value ); 325 addrHome.setPostalCode( value );
326 break; 326 break;
327 case HomeAddressCountry: 327 case HomeAddressCountry:
328 addrHome.setCountry( value ); 328 addrHome.setCountry( value );
329 break; 329 break;
330 case HomeAddressLabel: 330 case HomeAddressLabel:
331 addrHome.setLabel( value ); 331 addrHome.setLabel( value );
332 break; 332 break;
333 333
334 case BusinessAddressStreet: 334 case BusinessAddressStreet:
335 addrWork.setStreet( value ); 335 addrWork.setStreet( value );
336 break; 336 break;
337 case BusinessAddressLocality: 337 case BusinessAddressLocality:
338 addrWork.setLocality( value ); 338 addrWork.setLocality( value );
339 break; 339 break;
340 case BusinessAddressRegion: 340 case BusinessAddressRegion:
341 addrWork.setRegion( value ); 341 addrWork.setRegion( value );
342 break; 342 break;
343 case BusinessAddressPostalCode: 343 case BusinessAddressPostalCode:
344 addrWork.setPostalCode( value ); 344 addrWork.setPostalCode( value );
345 break; 345 break;
346 case BusinessAddressCountry: 346 case BusinessAddressCountry:
347 addrWork.setCountry( value ); 347 addrWork.setCountry( value );
348 break; 348 break;
349 case BusinessAddressLabel: 349 case BusinessAddressLabel:
350 addrWork.setLabel( value ); 350 addrWork.setLabel( value );
351 break; 351 break;
352 default: 352 default:
353 KABC::Field::List fields = mAddressBook->fields( KABC::Field::CustomCategory ); 353 KABC::Field::List fields = mAddressBook->fields( KABC::Field::CustomCategory );
354 KABC::Field::List::Iterator it; 354 KABC::Field::List::Iterator it;
355 355
356 int counter = 0; 356 int counter = 0;
357 for ( it = fields.begin(); it != fields.end(); ++it ) { 357 for ( it = fields.begin(); it != fields.end(); ++it ) {
358 if ( counter == (int)( posToType( item->currentItem() ) - mCustomCounter ) ) 358 if ( counter == (int)( posToType( item->currentItem() ) - mCustomCounter ) )
359 { 359 {
360 (*it)->setValue( a, value ); 360 (*it)->setValue( a, value );
361 break; 361 break;
362 } 362 }
363 ++counter; 363 ++counter;
364 } 364 }
365 break; 365 break;
366 } 366 }
367 } 367 }
368 368
369 if ( !addrHome.isEmpty() ) 369 if ( !addrHome.isEmpty() )
370 a.insertAddress( addrHome ); 370 a.insertAddress( addrHome );
371 if ( !addrWork.isEmpty() ) 371 if ( !addrWork.isEmpty() )
372 a.insertAddress( addrWork ); 372 a.insertAddress( addrWork );
373 373
374 if ( !emptyRow && !a.isEmpty() ) 374 if ( !emptyRow && !a.isEmpty() )
375 contacts.append( a ); 375 contacts.append( a );
376 } 376 }
377 377
378 return contacts; 378 return contacts;
379} 379}
380 380
381void CSVImportDialog::initGUI() 381void CSVImportDialog::initGUI()
382{ 382{
383 QWidget* page = plainPage(); 383 QWidget* page = plainPage();
384 384
385 QGridLayout *layout = new QGridLayout( page, 1, 1, marginHintSmall(), 385 QGridLayout *layout = new QGridLayout( page, 1, 1, marginHintSmall(),
386 spacingHintSmall() ); 386 spacingHintSmall() );
387 QHBoxLayout *hbox = new QHBoxLayout(); 387 QHBoxLayout *hbox = new QHBoxLayout();
388 hbox->setSpacing( spacingHint() ); 388 hbox->setSpacing( spacingHint() );
389 389
390 QLabel *label = new QLabel( i18n( "File to import:" ), page ); 390 QLabel *label = new QLabel( i18n( "File to import:" ), page );
391 hbox->addWidget( label ); 391 hbox->addWidget( label );
392 392
393 mUrlRequester = new KURLRequester( page ); 393 mUrlRequester = new KURLRequester( page );
394 mUrlRequester->setFilter( "*.csv" ); 394 mUrlRequester->setFilter( "*.csv" );
395 hbox->addWidget( mUrlRequester ); 395 hbox->addWidget( mUrlRequester );
396 396
397 layout->addMultiCellLayout( hbox, 0, 0, 0, 2 ); 397 layout->addMultiCellLayout( hbox, 0, 0, 0, 2 );
398 398
399 // Delimiter: comma, semicolon, tab, space, other 399 // Delimiter: comma, semicolon, tab, space, other
400 mDelimiterBox = new QButtonGroup( i18n( "Delimiter" ), page ); 400 mDelimiterBox = new QButtonGroup( i18n( "Delimiter" ), page );
401 mDelimiterBox->setColumnLayout( 0, Qt::Vertical ); 401 mDelimiterBox->setColumnLayout( 0, Qt::Vertical );
402 mDelimiterBox->layout()->setSpacing( spacingHint() ); 402 mDelimiterBox->layout()->setSpacing( spacingHint() );
403 mDelimiterBox->layout()->setMargin( marginHint() ); 403 mDelimiterBox->layout()->setMargin( marginHint() );
404 QGridLayout *delimiterLayout = new QGridLayout( mDelimiterBox->layout() ); 404 QGridLayout *delimiterLayout = new QGridLayout( mDelimiterBox->layout() );
405 delimiterLayout->setAlignment( Qt::AlignTop ); 405 delimiterLayout->setAlignment( Qt::AlignTop );
406 layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 2 ); 406 layout->addMultiCellWidget( mDelimiterBox, 1, 1, 0, 2 );
407 407
408 mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox ); 408 mRadioComma = new QRadioButton( i18n( "Comma" ), mDelimiterBox );
409 mRadioComma->setChecked( true ); 409 mRadioComma->setChecked( true );
410 delimiterLayout->addWidget( mRadioComma, 0, 0 ); 410 delimiterLayout->addWidget( mRadioComma, 0, 0 );
411 411
412 mRadioSemicolon = new QRadioButton( i18n( "Semicolon" ), mDelimiterBox ); 412 mRadioSemicolon = new QRadioButton( i18n( "Semicolon" ), mDelimiterBox );
413 delimiterLayout->addWidget( mRadioSemicolon, 0, 1 ); 413 delimiterLayout->addWidget( mRadioSemicolon, 0, 1 );
414 414
415 mRadioTab = new QRadioButton( i18n( "Tabulator" ), mDelimiterBox ); 415 mRadioTab = new QRadioButton( i18n( "Tabulator" ), mDelimiterBox );
416 delimiterLayout->addWidget( mRadioTab, 1, 0 ); 416 delimiterLayout->addWidget( mRadioTab, 1, 0 );
417 417
418 mRadioSpace = new QRadioButton( i18n( "Space" ), mDelimiterBox ); 418 mRadioSpace = new QRadioButton( i18n( "Space" ), mDelimiterBox );
419 delimiterLayout->addWidget( mRadioSpace, 1, 1 ); 419 delimiterLayout->addWidget( mRadioSpace, 1, 1 );
420 420
421 mRadioOther = new QRadioButton( i18n( "Other" ), mDelimiterBox ); 421 mRadioOther = new QRadioButton( i18n( "Other" ), mDelimiterBox );
422 delimiterLayout->addWidget( mRadioOther, 0, 2 ); 422 delimiterLayout->addWidget( mRadioOther, 0, 2 );
423 423
424 mDelimiterEdit = new QLineEdit( mDelimiterBox ); 424 mDelimiterEdit = new QLineEdit( mDelimiterBox );
425 delimiterLayout->addWidget( mDelimiterEdit, 1, 2 ); 425 delimiterLayout->addWidget( mDelimiterEdit, 1, 2 );
426 426
427 mComboLine = new QComboBox( false, page ); 427 mComboLine = new QComboBox( false, page );
428 mComboLine->insertItem( i18n( "1" ) ); 428 mComboLine->insertItem( i18n( "1" ) );
429 layout->addWidget( mComboLine, 3, 1 ); 429 layout->addWidget( mComboLine, 3, 1 );
430 430
431 mComboQuote = new QComboBox( false, page ); 431 mComboQuote = new QComboBox( false, page );
432 mComboQuote->insertItem( i18n( "\"" ), 0 ); 432 mComboQuote->insertItem( i18n( "\"" ), 0 );
433 mComboQuote->insertItem( i18n( "'" ), 1 ); 433 mComboQuote->insertItem( i18n( "'" ), 1 );
434 mComboQuote->insertItem( i18n( "None" ), 2 ); 434 mComboQuote->insertItem( i18n( "None" ), 2 );
435 layout->addWidget( mComboQuote, 3, 0 ); 435 layout->addWidget( mComboQuote, 3, 0 );
436 mComboCodec = new QComboBox( false, page ); 436 mComboCodec = new QComboBox( false, page );
437 mComboCodec->insertItem( i18n( "UTF8" ), 0 ); 437 mComboCodec->insertItem( i18n( "UTF8" ), 0 );
438 mComboCodec->insertItem( i18n( "LATIN1" ), 1 ); 438 mComboCodec->insertItem( i18n( "LATIN1" ), 1 );
439 mComboCodec->insertItem( i18n( "LOCALE" ), 2 ); 439 mComboCodec->insertItem( i18n( "LOCALE" ), 2 );
440 layout->addWidget( mComboCodec, 3, 2 ); 440 layout->addWidget( mComboCodec, 3, 2 );
441 label = new QLabel( i18n( "Start at line:" ), page ); 441 label = new QLabel( i18n( "Start at line:" ), page );
442 layout->addWidget( label, 2, 1 ); 442 layout->addWidget( label, 2, 1 );
443 443
444 label = new QLabel( i18n( "Textquote:" ), page ); 444 label = new QLabel( i18n( "Textquote:" ), page );
445 layout->addWidget( label, 2, 0 ); 445 layout->addWidget( label, 2, 0 );
446 label = new QLabel( i18n( "Codec:" ), page ); 446 label = new QLabel( i18n( "Codec:" ), page );
447 layout->addWidget( label, 2, 2 ); 447 layout->addWidget( label, 2, 2 );
448 448
449 mIgnoreDuplicates = new QCheckBox( page ); 449 mIgnoreDuplicates = new QCheckBox( page );
450 mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) ); 450 mIgnoreDuplicates->setText( i18n( "Ignore duplicate delimiters" ) );
451 layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 2 ); 451 layout->addMultiCellWidget( mIgnoreDuplicates, 4, 4, 0, 2 );
452 452
453 mTable = new QTable( 0, 0, page ); 453 mTable = new QTable( 0, 0, page );
454 mTable->setSelectionMode( QTable::NoSelection ); 454 mTable->setSelectionMode( QTable::NoSelection );
455 //mTable->horizontalHeader()->hide(); 455 //mTable->horizontalHeader()->hide();
456 layout->addMultiCellWidget( mTable, 5, 5, 0, 2 ); 456 layout->addMultiCellWidget( mTable, 5, 5, 0, 2 );
457/*US 457/*US
458 setButtonText( User1, i18n( "Apply Template" ) ); 458 setButtonText( User1, i18n( "Apply Template" ) );
459 setButtonText( User2, i18n( "Save Template" ) ); 459 setButtonText( User2, i18n( "Save Template" ) );
460*/ 460*/
461 461
462 enableButtonOK( false ); 462 enableButtonOK( false );
463 463
464 findButton( User1 )->setEnabled( false ); 464 findButton( User1 )->setEnabled( false );
465 findButton( User2 )->setEnabled( false ); 465 findButton( User2 )->setEnabled( false );
466 466
467#ifdef DESKTOP_VERSION 467#ifdef DESKTOP_VERSION
468 resize( 640, 480 ); 468 resize( 640, 480 );
469#else 469#else
470 showMaximized(); 470 showMaximized();
471#endif 471#endif
472} 472}
473 473
474void CSVImportDialog::fillTable() 474void CSVImportDialog::fillTable()
475{ 475{
476 int row, column; 476 int row, column;
477 bool lastCharDelimiter = false; 477 bool lastCharDelimiter = false;
478 bool ignoreDups = mIgnoreDuplicates->isChecked(); 478 bool ignoreDups = mIgnoreDuplicates->isChecked();
479 enum { S_START, S_QUOTED_FIELD, S_MAYBE_END_OF_QUOTED_FIELD, S_END_OF_QUOTED_FIELD, 479 enum { S_START, S_QUOTED_FIELD, S_MAYBE_END_OF_QUOTED_FIELD, S_END_OF_QUOTED_FIELD,
480 S_MAYBE_NORMAL_FIELD, S_NORMAL_FIELD } state = S_START; 480 S_MAYBE_NORMAL_FIELD, S_NORMAL_FIELD } state = S_START;
481 481
482 QChar x; 482 QChar x;
483 QString field = ""; 483 QString field = "";
484 484
485 // store previous assignment 485 // store previous assignment
486 QValueList<int> mTypeOld = mTypeStore; 486 QValueList<int> mTypeOld = mTypeStore;
487 487
488 mTypeStore.clear(); 488 mTypeStore.clear();
489 for ( column = 0; column < mTable->numCols(); ++column ) { 489 for ( column = 0; column < mTable->numCols(); ++column ) {
490 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, column ) ); 490 QComboTableItem *item = static_cast<QComboTableItem*>( mTable->item( 0, column ) );
491 491
492 if ( !item || mClearTypeStore ) 492 if ( !item || mClearTypeStore )
493 mTypeStore.append( typeToPos( Undefined ) ); 493 mTypeStore.append( typeToPos( Undefined ) );
494 else if ( item ) 494 else if ( item )
495 mTypeStore.append( item->currentItem() ); 495 mTypeStore.append( item->currentItem() );
496 } 496 }
497 497
498 clearTable(); 498 clearTable();
499 499
500 row = column = 1; 500 row = column = 1;
501 if ( mComboCodec->currentItem () == 0 ) { 501 if ( mComboCodec->currentItem () == 0 ) {
502 mData = QString::fromUtf8( mFileArray.data() ); 502 mData = QString::fromUtf8( mFileArray.data() );
503 } else if ( mComboCodec->currentItem () == 1 ) { 503 } else if ( mComboCodec->currentItem () == 1 ) {
504 mData = QString::fromLatin1( mFileArray.data() ); 504 mData = QString::fromLatin1( mFileArray.data() );
505 } else { 505 } else {
506 mData = QString::fromLocal8Bit( mFileArray.data() ); 506 mData = QString::fromLocal8Bit( mFileArray.data() );
507 } 507 }
508 508
509 QTextStream inputStream( mData, IO_ReadOnly ); 509 QTextStream inputStream( mData, IO_ReadOnly );
510 510
511 if ( mComboCodec->currentItem () == 0 ) { 511 if ( mComboCodec->currentItem () == 0 ) {
512 inputStream.setEncoding( QTextStream::UnicodeUTF8 ); 512 inputStream.setEncoding( QTextStream::UnicodeUTF8 );
513 } else if ( mComboCodec->currentItem () == 1 ) { 513 } else if ( mComboCodec->currentItem () == 1 ) {
514 inputStream.setEncoding( QTextStream::Latin1 ); 514 inputStream.setEncoding( QTextStream::Latin1 );
515 } else { 515 } else {
516 inputStream.setEncoding( QTextStream::Locale ); 516 inputStream.setEncoding( QTextStream::Locale );
517 } 517 }
518 518
519 int maxColumn = 0; 519 int maxColumn = 0;
520 while ( !inputStream.atEnd() ) { 520 while ( !inputStream.atEnd() ) {
521 inputStream >> x; // read one char 521 inputStream >> x; // read one char
522 522
523 if ( x == '\r' ) inputStream >> x; // eat '\r', to handle DOS/LOSEDOWS files correctly 523 if ( x == '\r' ) inputStream >> x; // eat '\r', to handle DOS/LOSEDOWS files correctly
524 524
525 switch ( state ) { 525 switch ( state ) {
526 case S_START : 526 case S_START :
527 if ( x == mTextQuote ) { 527 if ( x == mTextQuote ) {
528 state = S_QUOTED_FIELD; 528 state = S_QUOTED_FIELD;
529 } else if ( x == mDelimiter ) { 529 } else if ( x == mDelimiter ) {
530 if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) ) 530 if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) )
531 ++column; 531 ++column;
532 lastCharDelimiter = true; 532 lastCharDelimiter = true;
533 } else if ( x == '\n' ) { 533 } else if ( x == '\n' ) {
534 ++row; 534 ++row;
535 column = 1; 535 column = 1;
536 } else { 536 } else {
537 field += x; 537 field += x;
538 state = S_MAYBE_NORMAL_FIELD; 538 state = S_MAYBE_NORMAL_FIELD;
539 } 539 }
540 break; 540 break;
541 case S_QUOTED_FIELD : 541 case S_QUOTED_FIELD :
542 if ( x == mTextQuote ) { 542 if ( x == mTextQuote ) {
543 state = S_MAYBE_END_OF_QUOTED_FIELD; 543 state = S_MAYBE_END_OF_QUOTED_FIELD;
544 } else if ( x == '\n' && mTextQuote.isNull() ) { 544 } else if ( x == '\n' && mTextQuote.isNull() ) {
545 setText( row - mStartLine + 1, column, field ); 545 setText( row - mStartLine + 1, column, field );
546 field = ""; 546 field = "";
547 if ( x == '\n' ) { 547 if ( x == '\n' ) {
548 ++row; 548 ++row;
549 column = 1; 549 column = 1;
550 } else { 550 } else {
551 if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) ) 551 if ( ( ignoreDups == false ) || ( lastCharDelimiter == false ) )
552 ++column; 552 ++column;
diff --git a/kaddressbook/xxport/csvimportdialog.h b/kaddressbook/xxport/csvimportdialog.h
index 5f55ab2..2661420 100644
--- a/kaddressbook/xxport/csvimportdialog.h
+++ b/kaddressbook/xxport/csvimportdialog.h
@@ -1,126 +1,126 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (C) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (C) 2003 Tobias Koenig <tokoe@kde.org>
4 based on the code of KSpread's CSV Import Dialog 4 based on the code of KSpread's CSV Import Dialog
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#ifndef CSV_IMPORT_DLG_H 29#ifndef CSV_IMPORT_DLG_H
30#define CSV_IMPORT_DLG_H 30#define CSV_IMPORT_DLG_H
31 31
32#include <kabc/addressbook.h> 32#include <kabc/addressbook.h>
33#include <kabc/addresseelist.h> 33#include <kabc/addresseelist.h>
34#include <kdialogbase.h> 34#include <kdialogbase.h>
35 35
36#include <qvaluelist.h> 36#include <qvaluelist.h>
37 37
38class KURLRequester; 38class KURLRequester;
39 39
40class QButtonGroup; 40class QButtonGroup;
41class QComboBox; 41class QComboBox;
42class QCheckBox; 42class QCheckBox;
43class QLineEdit; 43class QLineEdit;
44class QPushButton; 44class QPushButton;
45class QRadioButton; 45class QRadioButton;
46class QTable; 46class QTable;
47 47
48class CSVImportDialog : public KDialogBase 48class CSVImportDialog : public KDialogBase
49{ 49{
50 Q_OBJECT 50 Q_OBJECT
51 51
52 public: 52 public:
53 CSVImportDialog( KABC::AddressBook *ab, QWidget *parent, 53 CSVImportDialog( KABC::AddressBook *ab, QWidget *parent,
54 const char *name = 0 ); 54 const char *name = 0 );
55 ~CSVImportDialog(); 55 ~CSVImportDialog();
56 56
57 KABC::AddresseeList contacts() const; 57 KABC::AddresseeList contacts() const;
58 58
59 protected slots: 59 protected slots:
60 virtual void slotOk(); 60 virtual void slotOk();
61 61
62 private slots: 62 private slots:
63 void returnPressed(); 63 void returnPressed();
64 void delimiterClicked( int id ); 64 void delimiterClicked( int id );
65 void lineSelected( const QString& line ); 65 void lineSelected( const QString& line );
66 void textquoteSelected( const QString& mark ); 66 void textquoteSelected( const QString& mark );
67 void textChanged ( const QString & ); 67 void textChanged ( const QString & );
68 void ignoreDuplicatesChanged( int ); 68 void ignoreDuplicatesChanged( int );
69 void setFile( const QString& ); 69 void setFile( const QString& );
70 void urlChanged( const QString& ); 70 void urlChanged( const QString& );
71 void codecChanged ( const QString& ); 71 void codecChanged ( const QString& );
72 72
73 void applyTemplate(); 73 void applyTemplate();
74 void saveTemplate(); 74 void saveTemplate();
75 75
76 private: 76 private:
77 enum { Undefined, FormattedName, FamilyName, GivenName, AdditionalName, 77 enum { Undefined, FormattedName, FamilyName, GivenName, AdditionalName,
78 Prefix, Suffix, NickName, Birthday, 78 Prefix, Suffix, NickName, Birthday,
79 HomeAddressStreet, HomeAddressLocality, HomeAddressRegion, 79 HomeAddressStreet, HomeAddressLocality, HomeAddressRegion,
80 HomeAddressPostalCode, HomeAddressCountry, HomeAddressLabel, 80 HomeAddressPostalCode, HomeAddressCountry, HomeAddressLabel,
81 BusinessAddressStreet, BusinessAddressLocality, BusinessAddressRegion, 81 BusinessAddressStreet, BusinessAddressLocality, BusinessAddressRegion,
82 BusinessAddressPostalCode, BusinessAddressCountry, 82 BusinessAddressPostalCode, BusinessAddressCountry,
83 BusinessAddressLabel, 83 BusinessAddressLabel,
84 HomePhone, BusinessPhone, MobilePhone, HomeFax, BusinessFax, CarPhone, 84 HomePhone, BusinessPhone, MobilePhone, HomeFax, BusinessFax, MobileWorkPhone,
85 Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL, Categories 85 Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL, Categories
86 }; 86 };
87 87
88 QTable* mTable; 88 QTable* mTable;
89 QButtonGroup* mDelimiterBox; 89 QButtonGroup* mDelimiterBox;
90 QRadioButton* mRadioComma; 90 QRadioButton* mRadioComma;
91 QRadioButton* mRadioSemicolon; 91 QRadioButton* mRadioSemicolon;
92 QRadioButton* mRadioTab; 92 QRadioButton* mRadioTab;
93 QRadioButton* mRadioSpace; 93 QRadioButton* mRadioSpace;
94 QRadioButton* mRadioOther; 94 QRadioButton* mRadioOther;
95 QLineEdit* mDelimiterEdit; 95 QLineEdit* mDelimiterEdit;
96 QComboBox* mComboLine; 96 QComboBox* mComboLine;
97 QComboBox* mComboQuote; 97 QComboBox* mComboQuote;
98 QComboBox* mComboCodec; 98 QComboBox* mComboCodec;
99 QCheckBox* mIgnoreDuplicates; 99 QCheckBox* mIgnoreDuplicates;
100 KURLRequester* mUrlRequester; 100 KURLRequester* mUrlRequester;
101 101
102 void initGUI(); 102 void initGUI();
103 void fillTable(); 103 void fillTable();
104 void clearTable(); 104 void clearTable();
105 void fillComboBox(); 105 void fillComboBox();
106 void setText( int row, int col, const QString& text ); 106 void setText( int row, int col, const QString& text );
107 void adjustRows( int rows ); 107 void adjustRows( int rows );
108 QString getText( int row, int col ); 108 QString getText( int row, int col );
109 uint posToType( int pos ) const; 109 uint posToType( int pos ) const;
110 int typeToPos( uint type ) const; 110 int typeToPos( uint type ) const;
111 111
112 bool mAdjustRows; 112 bool mAdjustRows;
113 int mStartLine; 113 int mStartLine;
114 QChar mTextQuote; 114 QChar mTextQuote;
115 QString mDelimiter; 115 QString mDelimiter;
116 QString mData; 116 QString mData;
117 QByteArray mFileArray; 117 QByteArray mFileArray;
118 QMap<QString, uint> mTypeMap; 118 QMap<QString, uint> mTypeMap;
119 KABC::AddressBook *mAddressBook; 119 KABC::AddressBook *mAddressBook;
120 int mCustomCounter; 120 int mCustomCounter;
121 bool mClearTypeStore; 121 bool mClearTypeStore;
122 QValueList<int> mTypeStore; 122 QValueList<int> mTypeStore;
123 123
124}; 124};
125 125
126#endif 126#endif