summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/kaddressbook/germantranslation.txt4
-rw-r--r--kabc/phonenumber.cpp26
-rw-r--r--kabc/phonenumber.h3
-rw-r--r--kaddressbook/addresseeeditorwidget.cpp34
-rw-r--r--kaddressbook/phoneeditwidget.h79
5 files changed, 134 insertions, 12 deletions
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt
index 2ae6eb9..dcf43c1 100644
--- a/bin/kdepim/kaddressbook/germantranslation.txt
+++ b/bin/kdepim/kaddressbook/germantranslation.txt
@@ -1,837 +1,837 @@
1{ "file","Datei" }, 1{ "file","Datei" },
2{ "Choose one file","Wähle eine Datei" }, 2{ "Choose one file","Wähle eine Datei" },
3{ "dir","Verzeichnis" }, 3{ "dir","Verzeichnis" },
4{ "Choose a directory with may files","Wähle Verzeichnis" }, 4{ "Choose a directory with may files","Wähle Verzeichnis" },
5{ "ldap","ldap" }, 5{ "ldap","ldap" },
6{ "No description available","Keine Beschreibung verfügbar" }, 6{ "No description available","Keine Beschreibung verfügbar" },
7{ "Library files for "%1" not found in paths","Bibliothek für "%1" nicht gefunden" }, 7{ "Library files for "%1" not found in paths","Bibliothek für "%1" nicht gefunden" },
8{ "qtopia","qtopia" }, 8{ "qtopia","qtopia" },
9{ "Qtopia PIM Addressbook.","Qtopia PIM Adressbuch." }, 9{ "Qtopia PIM Addressbook.","Qtopia PIM Adressbuch." },
10{ "vCard","vCard" }, 10{ "vCard","vCard" },
11{ "vCard Format","vCard Format" }, 11{ "vCard Format","vCard Format" },
12{ "microkabcformat_binary","microkabcformat_binary" }, 12{ "microkabcformat_binary","microkabcformat_binary" },
13{ "Binary","Binary" }, 13{ "Binary","Binary" },
14{ "No description available.","Keine Beschreibung verfügbar." }, 14{ "No description available.","Keine Beschreibung verfügbar." },
15{ "Department","Abteilung" }, 15{ "Department","Abteilung" },
16{ "Profession","Beruf" }, 16{ "Profession","Beruf" },
17{ "Assistant's Name","Name d.Assistenten" }, 17{ "Assistant's Name","Name d.Assistenten" },
18{ "Manager's Name","Name d.Manager's" }, 18{ "Manager's Name","Name d.Manager's" },
19{ "Spouse's Name","Name d.Ehegatten" }, 19{ "Spouse's Name","Name d.Ehegatten" },
20{ "Office","Büro" }, 20{ "Office","Büro" },
21{ "IM Address","IM Adresse" }, 21{ "IM Address","IM Adresse" },
22{ "Anniversary","Jahrestag" }, 22{ "Anniversary","Jahrestag" },
23{ "Gender","Geschlecht" }, 23{ "Gender","Geschlecht" },
24{ "Children","Kinder" }, 24{ "Children","Kinder" },
25{ "FreeBusyUrl","FreeBusyUrl" }, 25{ "FreeBusyUrl","FreeBusyUrl" },
26{ "ExternalID","ExternalID" }, 26{ "ExternalID","ExternalID" },
27{ "Resource loaded: '%1'","Resource geladen: '%1'" }, 27{ "Resource loaded: '%1'","Resource geladen: '%1'" },
28{ "Select View","Ansicht wählen" }, 28{ "Select View","Ansicht wählen" },
29{ "Modify View...","Ansicht ändern..." }, 29{ "Modify View...","Ansicht ändern..." },
30{ "Add View...","Ansicht hinzufügen..." }, 30{ "Add View...","Ansicht hinzufügen..." },
31{ "Delete View","Ansicht löschen" }, 31{ "Delete View","Ansicht löschen" },
32{ "Refresh View","Ansicht aktualisieren" }, 32{ "Refresh View","Ansicht aktualisieren" },
33{ "Edit &Filters...","Bearbeite &Filter..." }, 33{ "Edit &Filters...","Bearbeite &Filter..." },
34{ "Select Filter","Filter wählen" }, 34{ "Select Filter","Filter wählen" },
35{ "Style:","Stil:" }, 35{ "Style:","Stil:" },
36{ "HTML table style.","HTML tabellen stil." }, 36{ "HTML table style.","HTML tabellen stil." },
37{ "Default Table View","Standard Tabellen Ansicht" }, 37{ "Default Table View","Standard Tabellen Ansicht" },
38{ "Show Extension Bar","Zeige Extension Bar" }, 38{ "Show Extension Bar","Zeige Extension Bar" },
39{ "None","Kein" }, 39{ "None","Kein" },
40{ "Name...","Name..." }, 40{ "Name...","Name..." },
41{ "Role:","Funktion:" }, 41{ "Role:","Funktion:" },
42{ "Organization:","Firma:" }, 42{ "Organization:","Firma:" },
43{ "Formatted name:","Formatt. Name:" }, 43{ "Formatted name:","Formatt. Name:" },
44{ "Edit Phone Numbers...","Bearbeite Telefonnummern..." }, 44{ "Edit Phone Numbers...","Bearbeite Telefonnummern..." },
45{ "Categories","Kategorien" }, 45{ "Categories","Kategorien" },
46{ "Public","Öffentlich" }, 46{ "Public","Öffentlich" },
47{ "Private","Privat" }, 47{ "Private","Privat" },
48{ "Confidential","Vertraulich" }, 48{ "Confidential","Vertraulich" },
49{ "&General","Allgemein" }, 49{ "&General","Allgemein" },
50{ "&Edit Addresses...","B&earbeite Adressen..." }, 50{ "&Edit Addresses...","B&earbeite Adressen..." },
51{ "Edit Email Addresses...","Bearbeite E-Mail Adressen..." }, 51{ "Edit Email Addresses...","Bearbeite E-Mail Adressen..." },
52{ "Email:","Email:" }, 52{ "Email:","Email:" },
53{ "URL:","URL:" }, 53{ "URL:","URL:" },
54{ "&IM address:","&IM address:" }, 54{ "&IM address:","&IM address:" },
55{ "&Address","&Adresse" }, 55{ "&Address","&Adresse" },
56{ "Department:","Abteilung:" }, 56{ "Department:","Abteilung:" },
57{ "Office:","Büro:" }, 57{ "Office:","Büro:" },
58{ "Profession:","Beruf:" }, 58{ "Profession:","Beruf:" },
59{ "Manager's name:","N.d.Manager's:" }, 59{ "Manager's name:","N.d.Manager's:" },
60{ "Assistant's name:","N.d.Assistenten:" }, 60{ "Assistant's name:","N.d.Assistenten:" },
61{ "Nick name:","Spitzname:" }, 61{ "Nick name:","Spitzname:" },
62{ "Spouse's name:","N.d.Ehegatten:" }, 62{ "Spouse's name:","N.d.Ehegatten:" },
63{ "Children's names:","N.d.Kinder:" }, 63{ "Children's names:","N.d.Kinder:" },
64{ "Birthday:","Geburtstag:" }, 64{ "Birthday:","Geburtstag:" },
65{ " Local Time","Ortszeit" }, 65{ " Local Time","Ortszeit" },
66{ "Mon","Mo" }, 66{ "Mon","Mo" },
67{ "Tue","Di" }, 67{ "Tue","Di" },
68{ "Wed","Mi" }, 68{ "Wed","Mi" },
69{ "Thu","Do" }, 69{ "Thu","Do" },
70{ "Fri","Fr" }, 70{ "Fri","Fr" },
71{ "Sat","Sa" }, 71{ "Sat","Sa" },
72{ "Sun","So" }, 72{ "Sun","So" },
73{ "January","Januar" }, 73{ "January","Januar" },
74{ "February","Februar" }, 74{ "February","Februar" },
75{ "March","März" }, 75{ "March","März" },
76{ "April","April" }, 76{ "April","April" },
77{ "May","Mai" }, 77{ "May","Mai" },
78{ "June","Juni" }, 78{ "June","Juni" },
79{ "July","July" }, 79{ "July","July" },
80{ "August","August" }, 80{ "August","August" },
81{ "September","September" }, 81{ "September","September" },
82{ "October","October" }, 82{ "October","October" },
83{ "November","November" }, 83{ "November","November" },
84{ "December","Dezember" }, 84{ "December","Dezember" },
85{ "tomorrow","Morgen" }, 85{ "tomorrow","Morgen" },
86{ "today","Heute" }, 86{ "today","Heute" },
87{ "yesterday","Gestern" }, 87{ "yesterday","Gestern" },
88{ "Monday","Montag" }, 88{ "Monday","Montag" },
89{ "Tuesday","Dienstag" }, 89{ "Tuesday","Dienstag" },
90{ "Wednesday","Mittwoch" }, 90{ "Wednesday","Mittwoch" },
91{ "Thursday","Donnerstag" }, 91{ "Thursday","Donnerstag" },
92{ "Friday","Freitag" }, 92{ "Friday","Freitag" },
93{ "Saturday","Samstag" }, 93{ "Saturday","Samstag" },
94{ "Sunday","Sonntag" }, 94{ "Sunday","Sonntag" },
95{ "Anniversary:","Jahrestag:" }, 95{ "Anniversary:","Jahrestag:" },
96{ "Gender:","Geschlecht:" }, 96{ "Gender:","Geschlecht:" },
97{ "ALIEN (undefined)","ALIEN (undefiniert)" }, 97{ "ALIEN (undefined)","ALIEN (undefiniert)" },
98{ "female","weiblich" }, 98{ "female","weiblich" },
99{ "male","männlich" }, 99{ "male","männlich" },
100{ "&Details","&Details" }, 100{ "&Details","&Details" },
101{ "Note:","Notiz:" }, 101{ "Note:","Notiz:" },
102{ "&Notes","&Notizen" }, 102{ "&Notes","&Notizen" },
103{ "Use geo data","Benutze geo Daten" }, 103{ "Use geo data","Benutze geo Daten" },
104{ "Latitude:","Breitengrad:" }, 104{ "Latitude:","Breitengrad:" },
105{ "Longitude:","Längengrad:" }, 105{ "Longitude:","Längengrad:" },
106{ "Edit Geo Data...","Edit geo Daten..." }, 106{ "Edit Geo Data...","Edit geo Daten..." },
107{ "Keys:","Schlüssel:" }, 107{ "Keys:","Schlüssel:" },
108{ "Add","Hinzu" }, 108{ "Add","Hinzu" },
109{ "Remove","Entf." }, 109{ "Remove","Entf." },
110{ "Export","Exportiere" }, 110{ "Export","Exportiere" },
111{ "&Misc","Verschiedenes" }, 111{ "&Misc","Verschiedenes" },
112{ "Photo","Foto" }, 112{ "Photo","Foto" },
113{ "Store as URL","Speichere als URL" }, 113{ "Store as URL","Speichere als URL" },
114{ "Logo","Logo" }, 114{ "Logo","Logo" },
115{ "&Images","B&ilder" }, 115{ "&Images","B&ilder" },
116{ "Home","Privat" }, 116{ "Home","Privat" },
117{ "Work","Arbeit" }, 117{ "Work","Arbeit" },
118{ "Mobile","Handy" }, 118{ "Mobile","Handy" },
119{ "Fax","Fax" }, 119{ "Fax","Fax" },
120{ "Contact Editor","Bearbeite Kontakt" }, 120{ "Contact Editor","Bearbeite Kontakt" },
121{ "&Mail...","&Mail..." }, 121{ "&Mail...","&Mail..." },
122{ "&Print...","Drucken..." }, 122{ "&Print...","Drucken..." },
123{ "&Save","&Speichern" }, 123{ "&Save","&Speichern" },
124{ "&New Contact...","&Neuer Kontakt..." }, 124{ "&New Contact...","&Neuer Kontakt..." },
125{ "Mail &vCard...","Mail &vCard..." }, 125{ "Mail &vCard...","Mail &vCard..." },
126{ "Selected to phone","Auswahl zum Telefon" }, 126{ "Selected to phone","Auswahl zum Telefon" },
127{ "Beam selected v&Card(s)","Beame ausgewählte v&Card(s)" }, 127{ "Beam selected v&Card(s)","Beame ausgewählte v&Card(s)" },
128{ "&Beam personal vCard","Beame persönliche vCard" }, 128{ "&Beam personal vCard","Beame persönliche vCard" },
129{ "&Edit Contact...","Bearbeite Kontakt..." }, 129{ "&Edit Contact...","Bearbeite Kontakt..." },
130{ "&Exit","B&eenden" }, 130{ "&Exit","B&eenden" },
131{ "&Copy","Kopieren" }, 131{ "&Copy","Kopieren" },
132{ "Cu&t","Ausschneiden" }, 132{ "Cu&t","Ausschneiden" },
133{ "&Paste","Einfügen" }, 133{ "&Paste","Einfügen" },
134{ "Select &All","Alles auswählen" }, 134{ "Select &All","Alles auswählen" },
135{ "&Undo","Rückgängig machen" }, 135{ "&Undo","Rückgängig machen" },
136{ "Re&do","Wiederherstellen" }, 136{ "Re&do","Wiederherstellen" },
137{ "&Delete Contact","Lösche Kontakt" }, 137{ "&Delete Contact","Lösche Kontakt" },
138{ "Configure &Resources...","Konfiguriere &Resourcen..." }, 138{ "Configure &Resources...","Konfiguriere &Resourcen..." },
139{ "&Configure %1...","Konfiguriere %1..." }, 139{ "&Configure %1...","Konfiguriere %1..." },
140{ "Configure S&hortcuts...","Konfiguriere S&hortcuts..." }, 140{ "Configure S&hortcuts...","Konfiguriere S&hortcuts..." },
141{ "Show Jump Bar","Zeige Jump Bar" }, 141{ "Show Jump Bar","Zeige Jump Bar" },
142{ "Show Details","Zeige Details" }, 142{ "Show Details","Zeige Details" },
143{ "Beam receive enabled","Beam (IR) Empfang AN" }, 143{ "Beam receive enabled","Beam (IR) Empfang AN" },
144{ "Set Who Am I","Setze "wer bin ich"" }, 144{ "Set Who Am I","Setze "wer bin ich"" },
145{ "Set Categories for Contacts...","Setze Kategorien für Kontakte..." }, 145{ "Set Categories for Contacts...","Setze Kategorien für Kontakte..." },
146{ "Edit Category List...","Editiere Kategorieliste..." }, 146{ "Edit Category List...","Editiere Kategorieliste..." },
147{ "Remove "voice"...","Entferne "voice"..." }, 147{ "Remove "voice"...","Entferne "voice"..." },
148{ "Import from Outlook...","Importiere aus Outlook..." }, 148{ "Import from Outlook...","Importiere aus Outlook..." },
149{ "Licence","Lizenz" }, 149{ "Licence","Lizenz" },
150{ "Faq","Fragen + Antworten" }, 150{ "Faq","Fragen + Antworten" },
151{ "What's New?","Was ist neu?" }, 151{ "What's New?","Was ist neu?" },
152{ "Sync HowTo","Sync Anleitung" }, 152{ "Sync HowTo","Sync Anleitung" },
153{ "&About KAddressBook","Über KAdressBuch" }, 153{ "&About KAddressBook","Über KAdressBuch" },
154{ "Select Incremental Search Field","Selektiere Such Feld" }, 154{ "Select Incremental Search Field","Selektiere Such Feld" },
155{ "Synchronize","Synchronisieren" }, 155{ "Synchronize","Synchronisieren" },
156{ "Configure...","Konfigurieren..." }, 156{ "Configure...","Konfigurieren..." },
157{ "Enable Pi-Sync","Aktiviere Pi-Sync" }, 157{ "Enable Pi-Sync","Aktiviere Pi-Sync" },
158{ "Multiple sync","Multi Sync" }, 158{ "Multiple sync","Multi Sync" },
159{ "Import CSV List...","Importiere CSV-Datei..." }, 159{ "Import CSV List...","Importiere CSV-Datei..." },
160{ "Export CSV List...","Exportiere CSV-Datei..." }, 160{ "Export CSV List...","Exportiere CSV-Datei..." },
161{ "Import KDE 2 Addressbook...","Importiere KDE 2 Adressbuch..." }, 161{ "Import KDE 2 Addressbook...","Importiere KDE 2 Adressbuch..." },
162{ "Import vCard...","Importiere vCard..." }, 162{ "Import vCard...","Importiere vCard..." },
163{ "Export vCard 3.0...","Exportiere vCard 3.0..." }, 163{ "Export vCard 3.0...","Exportiere vCard 3.0..." },
164{ "Import Qtopia...","Importiere Qtopia..." }, 164{ "Import Qtopia...","Importiere Qtopia..." },
165{ "Export Qtopia...","Exportiere Qtopia..." }, 165{ "Export Qtopia...","Exportiere Qtopia..." },
166{ "Edit Contact","Bearbeite Kontakt" }, 166{ "Edit Contact","Bearbeite Kontakt" },
167{ "Ok","Ok" }, 167{ "Ok","Ok" },
168{ "Apply","Anwenden" }, 168{ "Apply","Anwenden" },
169{ "Cancel","Abbrechen" }, 169{ "Cancel","Abbrechen" },
170{ "KAddressbook/Pi","KAdressbuch/Pi" }, 170{ "KAddressbook/Pi","KAdressbuch/Pi" },
171{ "No Filter","Kein Filter" }, 171{ "No Filter","Kein Filter" },
172{ "Given Name","Vorname" }, 172{ "Given Name","Vorname" },
173{ "Family Name","Nachname" }, 173{ "Family Name","Nachname" },
174{ "Email Address","E-Mail Adresse" }, 174{ "Email Address","E-Mail Adresse" },
175{ "All Fields","Alle Felder" }, 175{ "All Fields","Alle Felder" },
176{ "Question","Frage" }, 176{ "Question","Frage" },
177{ "After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as "other".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?","After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as "other".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?" }, 177{ "After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as "other".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?","After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as "other".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?" },
178{ "No","Nein" }, 178{ "No","Nein" },
179{ "Yes","Ja" }, 179{ "Yes","Ja" },
180{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile" }, 180{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile" },
181{ "Local device name:","Name dieses Gerätes:" }, 181{ "Local device name:","Name dieses Gerätes:" },
182{ "New profile","Neues Profil" }, 182{ "New profile","Neues Profil" },
183{ "Clone profile","Klone Profil" }, 183{ "Clone profile","Klone Profil" },
184{ "Delete profile","Lösche Profil" }, 184{ "Delete profile","Lösche Profil" },
185{ "Profile:","Profil:" }, 185{ "Profile:","Profil:" },
186{ "Ask for every entry on conflict","Frage bei Konflikten nach"}, 186{ "Ask for every entry on conflict","Frage bei Konflikten nach"},
187{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" }, 187{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" },
188{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" }, 188{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" },
189{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" } 189{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" }
190{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 190{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
191{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 191{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
192{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 192{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
193{ "Write back file","Schreibe Datei zurück" }, 193{ "Write back file","Schreibe Datei zurück" },
194{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 194{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
195{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 195{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
196{ "Local device name:","Name dieses Gerätes:" }, 196{ "Local device name:","Name dieses Gerätes:" },
197{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 197{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
198{ "Sync preferences","Synchronisations Einstellungen" }, 198{ "Sync preferences","Synchronisations Einstellungen" },
199{ "Profile kind","Profil Art" }, 199{ "Profile kind","Profil Art" },
200{ "Local file","Lokale Datei" }, 200{ "Local file","Lokale Datei" },
201{ "Local file:","Lokale Datei:" }, 201{ "Local file:","Lokale Datei:" },
202{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 202{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
203{ "Fill in default values for:","Setze Beispiel Werte ein für:" }, 203{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
204{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" }, 204{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
205{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"}, 205{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"},
206{ "Device","Gerät:" }, 206{ "Device","Gerät:" },
207{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" }, 207{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" },
208{ "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","Synchronisationsübersicht:\n\n %d items lokal hinzugefügt\n %d items entfernt hinzugefügt\n %d items lokal geändert\n %d items entfernt geändert\n %d items lokal gelöscht\n %d items entfernt gelöscht\n" }, 208{ "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","Synchronisationsübersicht:\n\n %d items lokal hinzugefügt\n %d items entfernt hinzugefügt\n %d items lokal geändert\n %d items entfernt geändert\n %d items lokal gelöscht\n %d items entfernt gelöscht\n" },
209{ "Synchronization successful","Synchronisation erfolgreich" }, 209{ "Synchronization successful","Synchronisation erfolgreich" },
210{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." }, 210{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." },
211{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" }, 211{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" },
212{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" }, 212{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" },
213{ "Enter password","Passwort eingeben" }, 213{ "Enter password","Passwort eingeben" },
214{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" }, 214{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" },
215{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." }, 215{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." },
216{ "Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n","Sorry, das Kopierkommando schlug fehl!\nKommando war:\n%1\n \nVersuche Kommando von Kosole um\nDetails für das Fehlschlagen\nzu erfahren.\n" }, 216{ "Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n","Sorry, das Kopierkommando schlug fehl!\nKommando war:\n%1\n \nVersuche Kommando von Kosole um\nDetails für das Fehlschlagen\nzu erfahren.\n" },
217{ "Writing back file result: ","Resultat des Dateizurückschreibens: " }, 217{ "Writing back file result: ","Resultat des Dateizurückschreibens: " },
218{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" }, 218{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" },
219{ "Used %1 Client","Benutzter %1 Client" }, 219{ "Used %1 Client","Benutzter %1 Client" },
220{ "No email client installed","Kein Email Klient installiert" }, 220{ "No email client installed","Kein Email Klient installiert" },
221{ "Userdefined email client","Benutzerdef. Email Klient" }, 221{ "Userdefined email client","Benutzerdef. Email Klient" },
222{ "OM/Pi email client","OM/Pi Email Klient" }, 222{ "OM/Pi email client","OM/Pi Email Klient" },
223{ "Include in multiple ","Beziehe in mehrfach " }, 223{ "Include in multiple ","Beziehe in mehrfach " },
224{ "calendar ","Kalender " }, 224{ "calendar ","Kalender " },
225{ "addressbook ","Adressbuch " }, 225{ "addressbook ","Adressbuch " },
226{ "pwmanager","PWmanager" }, 226{ "pwmanager","PWmanager" },
227{ " sync"," Sync ein" }, 227{ " sync"," Sync ein" },
228{ "Write back synced data","Schreibe gesyncte Daten zurück" }, 228{ "Write back synced data","Schreibe gesyncte Daten zurück" },
229{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" }, 229{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" },
230{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" }, 230{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" },
231{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, 231{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " },
232{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 232{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
233{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, 233{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" },
234{ "Help...","Hilfe..." }, 234{ "Help...","Hilfe..." },
235{ "Local file Cal:","Lokale Datei Kal:" }, 235{ "Local file Cal:","Lokale Datei Kal:" },
236{ "Local file ABook:","Lokale Datei ABuch:" }, 236{ "Local file ABook:","Lokale Datei ABuch:" },
237{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 237{ "Local file PWMgr:","Lokale Datei PWMgr:" },
238{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 238{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
239{ "Calendar:","Kalender:" }, 239{ "Calendar:","Kalender:" },
240{ "AddressBook:","AdressBuch:" }, 240{ "AddressBook:","AdressBuch:" },
241{ "PWManager:","PWManager:" }, 241{ "PWManager:","PWManager:" },
242{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 242{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
243{ "ssh/scp","ssh/scp" }, 243{ "ssh/scp","ssh/scp" },
244{ "ftp","ftp" }, 244{ "ftp","ftp" },
245{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, 245{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" },
246{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, 246{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" },
247{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, 247{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" },
248{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, 248{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" },
249{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, 249{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" },
250{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, 250{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" },
251{ "KDE-Pim sync config","KDE-Pim sync Konfig" }, 251{ "KDE-Pim sync config","KDE-Pim sync Konfig" },
252{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" }, 252{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" },
253{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Model\nautomatisch erkannt\nwerden kann)\nOder füge Model Name ein:\n" }, 253{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Model\nautomatisch erkannt\nwerden kann)\nOder füge Model Name ein:\n" },
254{ "Port number (Default: %1)","Port Nummer (Default: %1)" }, 254{ "Port number (Default: %1)","Port Nummer (Default: %1)" },
255{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, 255{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" },
256{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, 256{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" },
257{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, 257{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" },
258{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" }, 258{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" },
259{ "Disable Pi-Sync","Schalte Pi-Sync aus" }, 259{ "Disable Pi-Sync","Schalte Pi-Sync aus" },
260{ "Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!","Wollen Sie wirklich\nmit allen selektierten\nProfilen "Multi-Syncen"?\nDas Syncen dauert einige Zeit -\nalle Profile werden zweimal gesynct!" }, 260{ "Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!","Wollen Sie wirklich\nmit allen selektierten\nProfilen "Multi-Syncen"?\nDas Syncen dauert einige Zeit -\nalle Profile werden zweimal gesynct!" },
261{ "KDE-Pim Sync","KDE-Pim Sync" }, 261{ "KDE-Pim Sync","KDE-Pim Sync" },
262{ "Multiple profiles","Multi-Sync Profile" }, 262{ "Multiple profiles","Multi-Sync Profile" },
263{ "Device: ","Gerät: " }, 263{ "Device: ","Gerät: " },
264{ "Multiple sync started.","Multi-Sync gestartet." }, 264{ "Multiple sync started.","Multi-Sync gestartet." },
265{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile selektiert für Multi-Sync" }, 265{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile selektiert für Multi-Sync" },
266{ "KDE-Pim sync config","KDE-Pim Sync Konfig" }, 266{ "KDE-Pim sync config","KDE-Pim Sync Konfig" },
267{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein, z.B.:\n" }, 267{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein, z.B.:\n" },
268{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Modell\nautomatisch\erkannt\nwerden kann)\nOder füge Model Name ein:\n" }, 268{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Modell\nautomatisch\erkannt\nwerden kann)\nOder füge Model Name ein:\n" },
269{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 269{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
270{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, 270{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
271{ "Edit Address Book Filters","Editiere Addressbuch Filter" }, 271{ "Edit Address Book Filters","Editiere Addressbuch Filter" },
272{ "&Add...","Hinzufügen..." }, 272{ "&Add...","Hinzufügen..." },
273{ "&Edit...","B&earbeiten..." }, 273{ "&Edit...","B&earbeiten..." },
274{ "&Remove","Entfe&rne" }, 274{ "&Remove","Entfe&rne" },
275{ "Modify View: ","Ansicht ändern: " }, 275{ "Modify View: ","Ansicht ändern: " },
276{ "Fields","Felder" }, 276{ "Fields","Felder" },
277{ "Select Fields to Display","Wähle anzuzeigende Felder" }, 277{ "Select Fields to Display","Wähle anzuzeigende Felder" },
278{ "All","Alles" }, 278{ "All","Alles" },
279{ "Frequent","Frequent" }, 279{ "Frequent","Frequent" },
280{ "Address","Adresse" }, 280{ "Address","Adresse" },
281{ "Email","E-Mail" }, 281{ "Email","E-Mail" },
282{ "Personal","Persönl." }, 282{ "Personal","Persönl." },
283{ "Organization","Organisation" }, 283{ "Organization","Organisation" },
284{ "Custom","Benutzerdefiniert" }, 284{ "Custom","Benutzerdefiniert" },
285{ "&Selected\nfields:","&Selektierte\nFelder:" }, 285{ "&Selected\nfields:","&Selektierte\nFelder:" },
286{ "Formatted Name","Format. Name" }, 286{ "Formatted Name","Format. Name" },
287{ "Additional Names","Mittelname" }, 287{ "Additional Names","Mittelname" },
288{ "Honorific Prefixes","Namensprefix" }, 288{ "Honorific Prefixes","Namensprefix" },
289{ "Honorific Suffixes","Namenssuffix" }, 289{ "Honorific Suffixes","Namenssuffix" },
290{ "Nick Name","Spitzname" }, 290{ "Nick Name","Spitzname" },
291{ "Birthday","Geburtstag" }, 291{ "Birthday","Geburtstag" },
292{ "Home Address Street","Privat Adresse Strasse" }, 292{ "Home Address Street","Privat Adresse Strasse" },
293{ "Home Address Locality","Privat Adresse Stadt" }, 293{ "Home Address Locality","Privat Adresse Stadt" },
294{ "Home Address Region","Privat Adresse Bundesland" }, 294{ "Home Address Region","Privat Adresse Bundesland" },
295{ "Home Address Postal Code","Privat Adresse PLZ" }, 295{ "Home Address Postal Code","Privat Adresse PLZ" },
296{ "Home Address Country","Privat Adresse Land" }, 296{ "Home Address Country","Privat Adresse Land" },
297{ "Home Address Label","Privat Adresse Label" }, 297{ "Home Address Label","Privat Adresse Label" },
298{ "Business Address Street","Büro Adresse Strasse" }, 298{ "Business Address Street","Büro Adresse Strasse" },
299{ "Business Address Locality","Büro Adresse Stadt" }, 299{ "Business Address Locality","Büro Adresse Stadt" },
300{ "Business Address Region","Büro Adresse Bundesland" }, 300{ "Business Address Region","Büro Adresse Bundesland" },
301{ "Business Address Postal Code","Büro Adresse PLZ" }, 301{ "Business Address Postal Code","Büro Adresse PLZ" },
302{ "Business Address Country","Büro Adresse Land" }, 302{ "Business Address Country","Büro Adresse Land" },
303{ "Business Address Label","Büro Adresse Label" }, 303{ "Business Address Label","Büro Adresse Label" },
304{ "Home Phone","Privat Telefon" }, 304{ "Home Phone","Privat Telefon" },
305{ "Business Phone","Arbeit Telefon" }, 305{ "Business Phone","Arbeit Telefon" },
306{ "Mobile Phone","Handy" }, 306{ "Mobile Phone","Handy" },
307{ "Home Fax","Privat Fax" }, 307{ "Home Fax","Privat Fax" },
308{ "Business Fax","Arbeit Fax" }, 308{ "Business Fax","Arbeit Fax" },
309{ "Car Phone","Autotelefon" }, 309{ "Car Phone","Autotelefon" },
310{ "ISDN","ISDN" }, 310{ "ISDN","ISDN" },
311{ "Pager","Pager" }, 311{ "Pager","Pager" },
312{ "Mail Client","Mail Klient" }, 312{ "Mail Client","Mail Klient" },
313{ "Title","Titel" }, 313{ "Title","Titel" },
314{ "Role","Rolle" }, 314{ "Role","Rolle" },
315{ "Note","Notiz" }, 315{ "Note","Notiz" },
316{ "URL","URL" }, 316{ "URL","URL" },
317{ "Resource","Resource" }, 317{ "Resource","Resource" },
318{ "SIP","SIP" }, 318{ "SIP","SIP" },
319{ "Default Filter","Default Filter" }, 319{ "Default Filter","Default Filter" },
320{ "The default filter will be activated whenever this view is displayed. This feature allows you to configure views that only interact with certain types of information based on the filter. Once the view is activated, the filter can be changed at anytime.","#The default filter will be activated whenever this view is displayed. This feature allows you to configure views that only interact with certain types of information based on the filter. Once the view is activated, the filter can be changed at anytime." }, 320{ "The default filter will be activated whenever this view is displayed. This feature allows you to configure views that only interact with certain types of information based on the filter. Once the view is activated, the filter can be changed at anytime.","#The default filter will be activated whenever this view is displayed. This feature allows you to configure views that only interact with certain types of information based on the filter. Once the view is activated, the filter can be changed at anytime." },
321{ "No default filter","Kein default Filter" }, 321{ "No default filter","Kein default Filter" },
322{ "Use last active filter","Nutze letzen aktiven Filter" }, 322{ "Use last active filter","Nutze letzen aktiven Filter" },
323{ "Use filter:","Nutze Filter:" }, 323{ "Use filter:","Nutze Filter:" },
324{ "Look & Feel","Look & Feel" }, 324{ "Look & Feel","Look & Feel" },
325{ "Row Separator","Reihen Separator" }, 325{ "Row Separator","Reihen Separator" },
326{ "Alternating backgrounds","Abwechselnder Hintergrund" }, 326{ "Alternating backgrounds","Abwechselnder Hintergrund" },
327{ "Single line","Einzelne Zeile" }, 327{ "Single line","Einzelne Zeile" },
328{ "Enable background image:","Hintergrundbild:" }, 328{ "Enable background image:","Hintergrundbild:" },
329{ "Enable contact tooltips","Contact Tooltips" }, 329{ "Enable contact tooltips","Contact Tooltips" },
330{ "&Enable custom Colors","Benutzerdef. Farben" }, 330{ "&Enable custom Colors","Benutzerdef. Farben" },
331{ "&Colors","Farben" }, 331{ "&Colors","Farben" },
332{ "If custom colors are enabled, you may choose the colors for the view below. Otherwise colors from your current KDE color scheme are used.","#If custom colors are enabled, you may choose the colors for the view below. Otherwise colors from your current KDE color scheme are used." }, 332{ "If custom colors are enabled, you may choose the colors for the view below. Otherwise colors from your current KDE color scheme are used.","#If custom colors are enabled, you may choose the colors for the view below. Otherwise colors from your current KDE color scheme are used." },
333{ "Double click or press RETURN on a item to select a color for the related strings in the view.","#Double click or press RETURN on a item to select a color for the related strings in the view." }, 333{ "Double click or press RETURN on a item to select a color for the related strings in the view.","#Double click or press RETURN on a item to select a color for the related strings in the view." },
334{ "&Enable custom fonts","B&enutzerdefinierte Schriften" }, 334{ "&Enable custom fonts","B&enutzerdefinierte Schriften" },
335{ "&Text font:","Textschriftart:" }, 335{ "&Text font:","Textschriftart:" },
336{ "&Header font:","Titelschriftart:" }, 336{ "&Header font:","Titelschriftart:" },
337{ "If custom fonts are enabled, you may choose which fonts to use for this view below. Otherwise the default KDE font will be used, in bold style for the header and normal style for the data.","#If custom fonts are enabled, you may choose which fonts to use for this view below. Otherwise the default KDE font will be used, in bold style for the header and normal style for the data." }, 337{ "If custom fonts are enabled, you may choose which fonts to use for this view below. Otherwise the default KDE font will be used, in bold style for the header and normal style for the data.","#If custom fonts are enabled, you may choose which fonts to use for this view below. Otherwise the default KDE font will be used, in bold style for the header and normal style for the data." },
338{ "&Fonts","Schri&ften" }, 338{ "&Fonts","Schri&ften" },
339{ "Background Color","Hintergrundfarbe" }, 339{ "Background Color","Hintergrundfarbe" },
340{ "Text Color","Textfarbe" }, 340{ "Text Color","Textfarbe" },
341{ "Header Background Color","Titel Hintergrundfarbe" }, 341{ "Header Background Color","Titel Hintergrundfarbe" },
342{ "Header Text Color","Titel Farbe" }, 342{ "Header Text Color","Titel Farbe" },
343{ "Highlight Color","Auswahlfarbe" }, 343{ "Highlight Color","Auswahlfarbe" },
344{ "Highlighted Text Color","Auswahltextfarbe" }, 344{ "Highlighted Text Color","Auswahltextfarbe" },
345{ "Alternating Background Color","Abwechselnder Hintergrundfarbe" }, 345{ "Alternating Background Color","Abwechselnder Hintergrundfarbe" },
346{ "Postal","Post" }, 346{ "Postal","Post" },
347{ "Dr.","Dr." }, 347{ "Dr.","Dr." },
348{ "Miss","Frl." }, 348{ "Miss","Frl." },
349{ "Mr.","Herr" }, 349{ "Mr.","Herr" },
350{ "Mrs.","Frau" }, 350{ "Mrs.","Frau" },
351{ "Ms.","Fr." }, 351{ "Ms.","Fr." },
352{ "Prof.","Prof." }, 352{ "Prof.","Prof." },
353{ "I","I" }, 353{ "I","I" },
354{ "II","II" }, 354{ "II","II" },
355{ "III","III" }, 355{ "III","III" },
356{ "Jr.","Jr." }, 356{ "Jr.","Jr." },
357{ "Sr.","Sr." }, 357{ "Sr.","Sr." },
358{ "Name:","Name:" }, 358{ "Name:","Name:" },
359{ "Documents","Dokumente" }, 359{ "Documents","Dokumente" },
360{ "Files","Dateien" }, 360{ "Files","Dateien" },
361{ "All Files","Alle Dateien" }, 361{ "All Files","Alle Dateien" },
362{ "Name","Name" }, 362{ "Name","Name" },
363{ "Size","Größe" }, 363{ "Size","Größe" },
364{ "Date","Datum" }, 364{ "Date","Datum" },
365{ "Mime Type","Mime Typ" }, 365{ "Mime Type","Mime Typ" },
366{ "Geo Data Input","Geo Dateneingabe" }, 366{ "Geo Data Input","Geo Dateneingabe" },
367{ "Sexagesimal","Sexagesimal" }, 367{ "Sexagesimal","Sexagesimal" },
368{ "North","Nord" }, 368{ "North","Nord" },
369{ "South","Süd" }, 369{ "South","Süd" },
370{ "East","Ost" }, 370{ "East","Ost" },
371{ "West","West" }, 371{ "West","West" },
372{ "Undefined","Unbestimmt" }, 372{ "Undefined","Unbestimmt" },
373{ "Edit Address","Bearbeite Adresse" }, 373{ "Edit Address","Bearbeite Adresse" },
374{ "Street:","Strasse:" }, 374{ "Street:","Strasse:" },
375{ "Post office box:","Postfach:" }, 375{ "Post office box:","Postfach:" },
376{ "Locality:","Stadt:" }, 376{ "Locality:","Stadt:" },
377{ "Region:","Region:" }, 377{ "Region:","Region:" },
378{ "Postal code:","PLZ:" }, 378{ "Postal code:","PLZ:" },
379{ "Country:","Staat:" }, 379{ "Country:","Staat:" },
380{ "This is the preferred address","Dies ist die bevorzugte Adresse" }, 380{ "This is the preferred address","Dies ist die bevorzugte Adresse" },
381{ "New...","Neu..." }, 381{ "New...","Neu..." },
382{ "Change Type","Ändere Art" }, 382{ "Change Type","Ändere Art" },
383{ "Edit Address Type","Ändere Address Art" }, 383{ "Edit Address Type","Ändere Address Art" },
384{ "Address Types","Address Art" }, 384{ "Address Types","Address Art" },
385{ "Domestic","Inland" }, 385{ "Domestic","Inland" },
386{ "International","International" }, 386{ "International","International" },
387{ "Parcel","Paket" }, 387{ "Parcel","Paket" },
388{ "Edit Contact Name","Ändere Kontakt Name" }, 388{ "Edit Contact Name","Ändere Kontakt Name" },
389{ "Honorific prefixes:","Namensprefixes:" }, 389{ "Honorific prefixes:","Namensprefixes:" },
390{ "Given name:","Vorname:" }, 390{ "Given name:","Vorname:" },
391{ "Additional names:","Mittelnamen:" }, 391{ "Additional names:","Mittelnamen:" },
392{ "Family names:","Nachname:" }, 392{ "Family names:","Nachname:" },
393{ "Honorific suffixes:","Namenssuffixe:" }, 393{ "Honorific suffixes:","Namenssuffixe:" },
394{ "Parse name automatically","Setze Namen automatisch" }, 394{ "Parse name automatically","Setze Namen automatisch" },
395{ "Edit Phone Numbers","Bearbeite Telefonnummern" }, 395{ "Edit Phone Numbers","Bearbeite Telefonnummern" },
396{ "Number","Nummer" }, 396{ "Number","Nummer" },
397{ "Type","Typ" }, 397{ "Type","Typ" },
398{ "Edit Phone Number","Bearbeite Telefonnummer" }, 398{ "Edit Phone Number","Bearbeite Telefonnummer" },
399{ "Number:","Nummer:" }, 399{ "Number:","Nummer:" },
400{ "This is the preferred phone number","Dies ist die bevorzugte Telefonnummer" }, 400{ "This is the preferred phone number","Dies ist die bevorzugte Telefonnummer" },
401{ "Types","Typen" }, 401{ "Types","Typen" },
402{ "Messenger","Messenger" }, 402{ "Messenger","Messenger" },
403{ "Other","Anderes" }, 403{ "Other","Anderes" },
404{ "Video","Video" }, 404{ "Video","Video" },
405{ "Mailbox","Mailbox" }, 405{ "Mailbox","Mailbox" },
406{ "Modem","Modem" }, 406{ "Modem","Modem" },
407{ "Car","Auto" }, 407{ "Car","Auto" },
408{ "PCS","PCS" }, 408{ "PCS","PCS" },
409{ "Category","Kategorie" }, 409{ "Category","Kategorie" },
410{ "Select Categories","Wähle Kategorien" }, 410{ "Select Categories","Wähle Kategorien" },
411{ " &Deselect All "," &Deselektiere alle " }, 411{ " &Deselect All "," &Deselektiere alle " },
412{ " &Edit Categories "," B&earbeite Kategorien " }, 412{ " &Edit Categories "," B&earbeite Kategorien " },
413{ "&OK","&OK" }, 413{ "&OK","&OK" },
414{ "&Cancel","Abbre&chen" }, 414{ "&Cancel","Abbre&chen" },
415{ "Configure","Konfiguriere" }, 415{ "Configure","Konfiguriere" },
416{ "Default","Voreinstellungen" }, 416{ "Default","Voreinstellungen" },
417{ "Addressbook","Adressbuch" }, 417{ "Addressbook","Adressbuch" },
418{ "Details view font","Schriftart Detailansicht" }, 418{ "Details view font","Schriftart Detailansicht" },
419{ "phone:123","phone:123" }, 419{ "phone:123","phone:123" },
420{ "Search only after <return> key pressed","Suche nur nach <return> Taste" }, 420{ "Search only after <return> key pressed","Suche nur nach <return> Taste" },
421{ "Show edit dialog on single click","Zeige Edit Dialog bei Einzelklick" }, 421{ "Show edit dialog on single click","Zeige Edit Dialog bei Einzelklick" },
422{ "Automatic name parsing for new contacts","Automa. Name Parsen für neue Kontakte" }, 422{ "Automatic name parsing for new contacts","Automa. Name Parsen für neue Kontakte" },
423{ "Display List and Details at once (restart)","Zeige Liste und Details zusammen(neustart)" }, 423{ "Display List and Details at once (restart)","Zeige Liste und Details zusammen(neustart)" },
424{ "Show exit confirmation","Vor dem Beenden nachfragen" }, 424{ "Show exit confirmation","Vor dem Beenden nachfragen" },
425{ "General","Allgemein" }, 425{ "General","Allgemein" },
426{ "Extensions (restart)","Extensions (restart)" }, 426{ "Extensions (restart)","Extensions (restart)" },
427{ "Description","Beschreibungen" }, 427{ "Description","Beschreibungen" },
428{ "Extensions","Extensions" }, 428{ "Extensions","Extensions" },
429{ "Prefixes","Prefixe" }, 429{ "Prefixes","Prefixe" },
430{ "Inclusions","Inclusions" }, 430{ "Inclusions","Inclusions" },
431{ "Suffixes","Suffixe" }, 431{ "Suffixes","Suffixe" },
432{ "Default formatted name:","Default format. Name:" }, 432{ "Default formatted name:","Default format. Name:" },
433{ "Empty","Leer" }, 433{ "Empty","Leer" },
434{ "Simple Name","Einfacher Name" }, 434{ "Simple Name","Einfacher Name" },
435{ "Full Name","Voller Name" }, 435{ "Full Name","Voller Name" },
436{ "Reverse Name","Namen umdrehen" }, 436{ "Reverse Name","Namen umdrehen" },
437{ "Contact","Kontakt" }, 437{ "Contact","Kontakt" },
438{ "Global","Allgemein" }, 438{ "Global","Allgemein" },
439{ "Phone","Telefon" }, 439{ "Phone","Telefon" },
440{ "SMS","SMS" }, 440{ "SMS","SMS" },
441{ "Language:(needs restart)","Sprache:(Neustart)" }, 441{ "Language:(needs restart)","Sprache:(Neustart)" },
442{ "English","English" }, 442{ "English","English" },
443{ "German","Deutsch" }, 443{ "German","Deutsch" },
444{ "French","Französisch" }, 444{ "French","Französisch" },
445{ "Italian","Italienisch" }, 445{ "Italian","Italienisch" },
446{ "User defined (usertranslation.txt)","Benutzerdef. (usertranslation.txt)" }, 446{ "User defined (usertranslation.txt)","Benutzerdef. (usertranslation.txt)" },
447{ "Time Format(nr):","Zeit Format(nr):" }, 447{ "Time Format(nr):","Zeit Format(nr):" },
448{ "24:00","24:00" }, 448{ "24:00","24:00" },
449{ "12:00am","12:00am" }, 449{ "12:00am","12:00am" },
450{ "Week starts on Sunday","Woche beginnt Sonntags" }, 450{ "Week starts on Sunday","Woche beginnt Sonntags" },
451{ "Locale","Locale" }, 451{ "Locale","Locale" },
452{ "Date Format:","Datums Format:" }, 452{ "Date Format:","Datums Format:" },
453{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 453{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
454{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 454{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
455{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 455{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
456{ "User defined","Benutzerdefiniert" }, 456{ "User defined","Benutzerdefiniert" },
457{ "User long date:","Format langes Datum:" }, 457{ "User long date:","Format langes Datum:" },
458{ "User short date:","Format kurzes Datum:" }, 458{ "User short date:","Format kurzes Datum:" },
459{ "Daylight start:","Sommerzeit Start:" }, 459{ "Daylight start:","Sommerzeit Start:" },
460{ "Daylight end:","Sommerzeit Ende:" }, 460{ "Daylight end:","Sommerzeit Ende:" },
461{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 461{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
462{ "Monday 19 April 2004: %A %d %B %Y","Monday 19 April 2004: %A %d %B %Y" }, 462{ "Monday 19 April 2004: %A %d %B %Y","Monday 19 April 2004: %A %d %B %Y" },
463{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 463{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
464{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 464{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
465{ "Date Format","Datums Format" }, 465{ "Date Format","Datums Format" },
466{ "Timezone:","Zeitzone:" }, 466{ "Timezone:","Zeitzone:" },
467{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 467{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
468{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 468{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
469{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 469{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
470{ "Used Mail Client","Benutzter Mail Client" }, 470{ "Used Mail Client","Benutzter Mail Client" },
471{ "Channel:","Channel:" }, 471{ "Channel:","Channel:" },
472{ "Message:","Message:" }, 472{ "Message:","Message:" },
473{ "Parameters:","Parameter:" }, 473{ "Parameters:","Parameter:" },
474{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 474{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
475{ "extra Message:","extra Message:" }, 475{ "extra Message:","extra Message:" },
476{ "extra Parameters:","extra Parameter:" }, 476{ "extra Parameters:","extra Parameter:" },
477{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 477{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
478{ "External Apps.","Externe Appl." }, 478{ "External Apps.","Externe Appl." },
479{ "Used %1 Client","Benutzer %1 Client" }, 479{ "Used %1 Client","Benutzer %1 Client" },
480{ "No email client installed","Keine Email Client installiert" }, 480{ "No email client installed","Keine Email Client installiert" },
481{ "Userdefined email client","Benutzerdef. Email Client" }, 481{ "Userdefined email client","Benutzerdef. Email Client" },
482{ "OM/Pi email client","OM/Pi Email Client" }, 482{ "OM/Pi email client","OM/Pi Email Client" },
483{ "Close KA/Pi?","Schließe KA/Pi?" }, 483{ "Close KA/Pi?","Schließe KA/Pi?" },
484{ "\nChanges will be saved!","\nÄnderungen werden gespeichert!" }, 484{ "\nChanges will be saved!","\nÄnderungen werden gespeichert!" },
485{ "Yes!","Ja!" }, 485{ "Yes!","Ja!" },
486{ "There was an error while attempting to save\n the address book. Please check that some \nother application is not using it. ","#There was an error while attempting to save\n the address book. Please check that some \nother application is not using it. " }, 486{ "There was an error while attempting to save\n the address book. Please check that some \nother application is not using it. ","#There was an error while attempting to save\n the address book. Please check that some \nother application is not using it. " },
487{ "Saving addressbook ... ","Speichere Adressbuch ... " }, 487{ "Saving addressbook ... ","Speichere Adressbuch ... " },
488{ "Addressbook saved!","Adressbuch gespeichert!" }, 488{ "Addressbook saved!","Adressbuch gespeichert!" },
489{ "Default Table View","Default Tabellenansicht" }, 489{ "Default Table View","Default Tabellenansicht" },
490{ "Merge and Remove","Zusammenfügen/entfernen" }, 490{ "Merge and Remove","Zusammenfügen/entfernen" },
491{ "Merge","Zusammenfügen" }, 491{ "Merge","Zusammenfügen" },
492{ "Merge Contacts Editor","Contact-Zusammenfüge-Editor" }, 492{ "Merge Contacts Editor","Contact-Zusammenfüge-Editor" },
493{ "New List...","Neue Liste..." }, 493{ "New List...","Neue Liste..." },
494{ "Rename List...","Ändere Namen..." }, 494{ "Rename List...","Ändere Namen..." },
495{ "Remove List","Lösche Liste" }, 495{ "Remove List","Lösche Liste" },
496{ "Add Contact","Kontakt hinzu" }, 496{ "Add Contact","Kontakt hinzu" },
497{ "Change Email...","Ändere Email..." }, 497{ "Change Email...","Ändere Email..." },
498{ "Remove Contact","Entferne Kontakt" }, 498{ "Remove Contact","Entferne Kontakt" },
499{ "Use Preferred","Nutze Preferred" }, 499{ "Use Preferred","Nutze Preferred" },
500{ "Distribution List Editor","Distribution List Editor" }, 500{ "Distribution List Editor","Distribution List Editor" },
501{ "Choose which contacts to export","Wähle Kontakte zum Exportieren" }, 501{ "Choose which contacts to export","Wähle Kontakte zum Exportieren" },
502{ "Which contacts do you want to export?","Welche Kontakte sollen exportiert werden?" }, 502{ "Which contacts do you want to export?","Welche Kontakte sollen exportiert werden?" },
503{ "Contact Selection","Kontaktauswahl" }, 503{ "Contact Selection","Kontaktauswahl" },
504{ "&All","&Alle" }, 504{ "&All","&Alle" },
505{ "Export the entire address book","Exportiere das komplette Addressbuch" }, 505{ "Export the entire address book","Exportiere das komplette Addressbuch" },
506{ "&Selected","Au&sgewählte" }, 506{ "&Selected","Au&sgewählte" },
507{ "Only export contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected.","###Only export contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected." }, 507{ "Only export contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected.","###Only export contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected." },
508{ "By matching &filter","Zutreffender &Filter" }, 508{ "By matching &filter","Zutreffender &Filter" },
509{ "Only export contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters","###Only export contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters" }, 509{ "Only export contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters","###Only export contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters" },
510{ "By Cate&gories","Kategorien" }, 510{ "By Cate&gories","Kategorien" },
511{ "Only export 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.","###Only export 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." }, 511{ "Only export 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.","###Only export 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." },
512{ "Select a filter to decide which contacts to export.","Wähle Filter zum Export aus." }, 512{ "Select a filter to decide which contacts to export.","Wähle Filter zum Export aus." },
513{ "Check the categories whose members you want to export.","Wähle die Kategorien zum Export aus." }, 513{ "Check the categories whose members you want to export.","Wähle die Kategorien zum Export aus." },
514{ "Sorting","Sortieren" }, 514{ "Sorting","Sortieren" },
515{ "Criterion:","Merkmal:" }, 515{ "Criterion:","Merkmal:" },
516{ "Order:","Reihenfolge:" }, 516{ "Order:","Reihenfolge:" },
517{ "Ascending","Aufsteigend" }, 517{ "Ascending","Aufsteigend" },
518{ "Descending","Absteigend" }, 518{ "Descending","Absteigend" },
519{ "Save file","Datei speichern" }, 519{ "Save file","Datei speichern" },
520{ "Error","Fehler" }, 520{ "Error","Fehler" },
521{ "Unable to export contacts.","Exportieren der Kontakte geht nicht." }, 521{ "Unable to export contacts.","Exportieren der Kontakte geht nicht." },
522{ "\nNo unsaved changes detected!\nNothing will be saved!","\nKeine ungespeicherten\nÄnderungen erkannt!\nNichts wird gespeichert!" }, 522{ "\nNo unsaved changes detected!\nNothing will be saved!","\nKeine ungespeicherten\nÄnderungen erkannt!\nNichts wird gespeichert!" },
523{ "Manage new categories...","Verwalte neue Kategorien..." }, 523{ "Manage new categories...","Verwalte neue Kategorien..." },
524{ "&File","Datei" }, 524{ "&File","Datei" },
525{ "&Edit","Bearbeite" }, 525{ "&Edit","Bearbeite" },
526{ "&View","Ansichten" }, 526{ "&View","Ansichten" },
527{ "&Settings","Konfiguration" }, 527{ "&Settings","Konfiguration" },
528{ "&Change selected","Ändere Selekt." }, 528{ "&Change selected","Ändere Selekt." },
529{ "&Help","Hilfe" }, 529{ "&Help","Hilfe" },
530{ "Remove sync info","Entferne Sync Info" }, 530{ "Remove sync info","Entferne Sync Info" },
531{ "For all profiles","Für alle Profile" }, 531{ "For all profiles","Für alle Profile" },
532{ "&Change","Ändere" }, 532{ "&Change","Ändere" },
533{ "Import xml (Qtopia)...","Importiere xml (Qtopia)..." }, 533{ "Import xml (Qtopia)...","Importiere xml (Qtopia)..." },
534{ "Export xml (Qtopia)...","Exportiere xml (Qtopia)..." }, 534{ "Export xml (Qtopia)...","Exportiere xml (Qtopia)..." },
535{ "Export to phone","Exportiere aufs Handy..." }, 535{ "Export to phone","Exportiere aufs Handy..." },
536{ "Which contacts do you want to select?","Welche Kontakte möchten Sie wählen?" }, 536{ "Which contacts do you want to select?","Welche Kontakte möchten Sie wählen?" },
537{ "&Modify","Ändere" }, 537{ "&Modify","Ändere" },
538{ "Choose which contacts to select","Bitte Kontakte auswählen!" }, 538{ "Choose which contacts to select","Bitte Kontakte auswählen!" },
539{ "After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n ","Nach dem Importieren/Laden/Syncen\nkann es neue Kategorien in den \nKontakten geben, die nicht\nin der Kategorieliste enthalten sind.\nBitte wählen Sie, was passieren soll:\n " }, 539{ "After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n ","Nach dem Importieren/Laden/Syncen\nkann es neue Kategorien in den \nKontakten geben, die nicht\nin der Kategorieliste enthalten sind.\nBitte wählen Sie, was passieren soll:\n " },
540{ "Manage new Categories","Verwalte neue Kategorien" }, 540{ "Manage new Categories","Verwalte neue Kategorien" },
541{ "Add to category list","Füge zur Kategorieliste hinzu" }, 541{ "Add to category list","Füge zur Kategorieliste hinzu" },
542{ "Remove from addressees","Entferne von den Kontakten" }, 542{ "Remove from addressees","Entferne von den Kontakten" },
543{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" }, 543{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" },
544{ "A&dd","Hinzufügen" }, 544{ "A&dd","Hinzufügen" },
545{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 545{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." },
546{ "NOTE: This will remove all old\ncontact data on phone!","ACHTUNG: Das löscht alle alten\nKontakt Daten auf dem Handy!" }, 546{ "NOTE: This will remove all old\ncontact data on phone!","ACHTUNG: Das löscht alle alten\nKontakt Daten auf dem Handy!" },
547{ "Export to mobile phone!","Exportiere auf das Handy!" }, 547{ "Export to mobile phone!","Exportiere auf das Handy!" },
548{ "Export to phone options","Export ans Handy Optionen" }, 548{ "Export to phone options","Export ans Handy Optionen" },
549{ "Writing to phone...","Sende Daten ans Handy..." }, 549{ "Writing to phone...","Sende Daten ans Handy..." },
550{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 550{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
551{ "Retry","Nochmal versuchen" }, 551{ "Retry","Nochmal versuchen" },
552{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 552{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
553{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 553{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" },
554{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 554{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
555{ "&Print View","Drucke Ansicht" }, 555{ "&Print View","Drucke Ansicht" },
556{ "&Print Details","Drucke Details" }, 556{ "&Print Details","Drucke Details" },
557{ "Beam v&Card(s)...","Beame v&Card(s)..." }, 557{ "Beam v&Card(s)...","Beame v&Card(s)..." },
558{ "Set formatted name...","Setze formatierten Namen..." }, 558{ "Set formatted name...","Setze formatierten Namen..." },
559{ "Kde Sync HowTo","Kde Sync HowTo" }, 559{ "Kde Sync HowTo","Kde Sync HowTo" },
560{ "Multi Sync HowTo","Multi Sync HowTo" }, 560{ "Multi Sync HowTo","Multi Sync HowTo" },
561{ "&Beam","&Beame" }, 561{ "&Beam","&Beame" },
562{ "Edit Email Addresses","Editiere Email Adressen" }, 562{ "Edit Email Addresses","Editiere Email Adressen" },
563{ "Email address:","Email Adresse:" }, 563{ "Email address:","Email Adresse:" },
564{ "Change","Ändere" }, 564{ "Change","Ändere" },
565{ "Set Standard","Setze Standard" }, 565{ "Set Standard","Setze Standard" },
566{ "New Contact","Neuer Contact" }, 566{ "New Contact","Neuer Contact" },
567{ "Undo %1","Rückgängig %1" }, 567{ "Undo %1","Rückgängig %1" },
568{ "Redo","Wiederholen" }, 568{ "Redo","Wiederholen" },
569{ "Saving ... please wait! ","Am Speichern ... bitte warten! " }, 569{ "Saving ... please wait! ","Am Speichern ... bitte warten! " },
570{ "CSV Import Dialog","CSV Import Dialog" }, 570{ "CSV Import Dialog","CSV Import Dialog" },
571{ "File to import:","Datei zum Import:" }, 571{ "File to import:","Datei zum Import:" },
572{ "Delimiter","Trennzeichen" }, 572{ "Delimiter","Trennzeichen" },
573{ "Comma","Komma" }, 573{ "Comma","Komma" },
574{ "Semicolon","Semikolon" }, 574{ "Semicolon","Semikolon" },
575{ "Tabulator","Tabulator" }, 575{ "Tabulator","Tabulator" },
576{ "Space","Leerzeichen" }, 576{ "Space","Leerzeichen" },
577{ "1","1" }, 577{ "1","1" },
578{ """,""" }, 578{ """,""" },
579{ "'","'" }, 579{ "'","'" },
580{ "Start at line:","Beginne mit Zeile:" }, 580{ "Start at line:","Beginne mit Zeile:" },
581{ "Textquote:","Textquote:" }, 581{ "Textquote:","Textquote:" },
582{ "Ignore duplicate delimiters","Ignoriere doppelte Trennzeichen" }, 582{ "Ignore duplicate delimiters","Ignoriere doppelte Trennzeichen" },
583{ "Import KDE 2 Addressbook","Importiere KDE 2 Addressbook" }, 583{ "Import KDE 2 Addressbook","Importiere KDE 2 Addressbook" },
584{ "Override previously imported entries?","Überschreibe bereits importierte Einträge?" }, 584{ "Override previously imported entries?","Überschreibe bereits importierte Einträge?" },
585{ "Select vCard to Import","Selektiere zu importierende vCard" }, 585{ "Select vCard to Import","Selektiere zu importierende vCard" },
586{ "Information","Information" }, 586{ "Information","Information" },
587{ "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 (work)","Handy2 (Arbeit)" },
825{ "Mobile2 (car)","Handy2 (Auto)" }, 825{ "Mobile2 (car)","Handy2 (Auto)" },
826{ "Callback","Rückruf" }, 826{ "Callback","Rückruf" },
827{ "Fax (Other)","Fax (Anderes)" }, 827{ "Fax (Other)","Fax (Anderes)" },
828{ "Primary","Bevorzugt" }, 828{ "Primary","Bevorzugt" },
829{ "Mobile (Home)","Handy (Privat)" }, 829{ "Mobile (Home)","Handy (Privat)" },
830{ "","" }, 830{ "Unfiled","Nicht zugeordnet" },
831{ "","" }, 831{ "Format.n.:","Format.N.:" },
832{ "","" }, 832{ "","" },
833{ "","" }, 833{ "","" },
834{ "","" }, 834{ "","" },
835{ "","" }, 835{ "","" },
836{ "","" }, 836{ "","" },
837{ "","" }, \ No newline at end of file 837{ "","" }, \ No newline at end of file
diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp
index 0d46ba7..eee25a5 100644
--- a/kabc/phonenumber.cpp
+++ b/kabc/phonenumber.cpp
@@ -1,343 +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()
226{
227 static TypeList list;
228 if ( list.count() == 0 )
229 list << (Home| Pref) << (Work| Pref) << Cell << Home << Work << Car << (Work| Msg | Voice) << (Work| Msg) << (Home | Fax) << (Work| Fax) << Fax<< (Pcs|Pref)<< Pcs<< Pager << Isdn << Video << Msg << Pref << Voice;
230 return list;
231}
232QStringList PhoneNumber::supportedTypeListNames()
233{
234 static QStringList list;
235 if ( list.count() == 0 )
236 list << i18n("Home") << i18n("Work") << i18n("Mobile") << i18n("Home2")<< i18n("Work2") << i18n("Mobile2 (Work)") << i18n("Assistent") << i18n("Company") << i18n("Fax (Home)") << i18n("Fax (Work)") << i18n("Fax (Other)") << i18n("SIP") << i18n("VoIP") << i18n("Pager") << i18n("ISDN") << i18n("Video") << i18n("Callback") << i18n("Primary")<< i18n("Other");
237 return list;
238}
239
240int PhoneNumber::typeListIndex4Type(int type )
241{
242 TypeList list = supportedTypeList();
243 int i = 0;
244 while ( i < list.count() ) {
245 if ( list [i] == type )
246 return i;
247 ++i;
248 }
249 return list.count()-1;
250}
225 251
226QString PhoneNumber::label( int type ) 252QString PhoneNumber::label( int type )
227{ 253{
228 return typeLabel( type ); 254 return typeLabel( type );
229} 255}
230 256
231QString PhoneNumber::typeLabel( int type ) 257QString PhoneNumber::typeLabel( int type )
232{ 258{
233 if ((type & Cell) == Cell) 259 if ((type & Cell) == Cell)
234 return i18n("Mobile"); 260 return i18n("Mobile");
235 if ((type & Home) == Home) { 261 if ((type & Home) == Home) {
236 if ((type & Pref) == Pref) 262 if ((type & Pref) == Pref)
237 return i18n("Home"); 263 return i18n("Home");
238 if ((type & Fax) == Fax) 264 if ((type & Fax) == Fax)
239 return i18n("Fax (Home)"); 265 return i18n("Fax (Home)");
240 return i18n("Home2"); 266 return i18n("Home2");
241 } 267 }
242 268
243 if ((type & Work) == Work) { 269 if ((type & Work) == Work) {
244 if ((type & Pref) == Pref) 270 if ((type & Pref) == Pref)
245 return i18n("Work"); 271 return i18n("Work");
246 if ((type & Fax) == Fax) 272 if ((type & Fax) == Fax)
247 return i18n("Fax (Work)"); 273 return i18n("Fax (Work)");
248 if ((type & Msg) == Msg) { 274 if ((type & Msg) == Msg) {
249 if ((type & Voice) == Voice) 275 if ((type & Voice) == Voice)
250 return i18n("Assistent"); 276 return i18n("Assistent");
251 return i18n("Company"); 277 return i18n("Company");
252 } 278 }
253 return i18n("Work2"); 279 return i18n("Work2");
254 } 280 }
255 if ((type & Pcs) == Pcs) { 281 if ((type & Pcs) == Pcs) {
256 if ((type & Pref) == Pref) 282 if ((type & Pref) == Pref)
257 return i18n("SIP"); 283 return i18n("SIP");
258 return i18n("VoIP"); 284 return i18n("VoIP");
259 } 285 }
260 if ((type & Car) == Car) 286 if ((type & Car) == Car)
261 return i18n("Mobile2 (Work)"); 287 return i18n("Mobile2 (Work)");
262 if ((type & Pager) == Pager) 288 if ((type & Pager) == Pager)
263 return i18n("Pager"); 289 return i18n("Pager");
264 if ((type & Isdn) == Isdn) 290 if ((type & Isdn) == Isdn)
265 return i18n("ISDN"); 291 return i18n("ISDN");
266 if ((type & Video) == Video) 292 if ((type & Video) == Video)
267 return i18n("Video"); 293 return i18n("Video");
268 294
269 if ((type & Msg) == Msg) 295 if ((type & Msg) == Msg)
270 return i18n("Callback"); 296 return i18n("Callback");
271 if ((type & Fax) == Fax) 297 if ((type & Fax) == Fax)
272 return i18n("Fax (Other)"); 298 return i18n("Fax (Other)");
273 299
274 if ((type & Pref) == Pref) 300 if ((type & Pref) == Pref)
275 return i18n("Primary"); 301 return i18n("Primary");
276 302
277 303
278 return i18n("Other"); 304 return i18n("Other");
279 305
280 306
281#if 0 307#if 0
282 308
283 309
284 310
285 QString typeString; 311 QString typeString;
286 312
287 313
288 if ((type & Cell) == Cell) 314 if ((type & Cell) == Cell)
289 typeString += i18n("Mobile") +" "; 315 typeString += i18n("Mobile") +" ";
290 if ((type & Home) == Home) 316 if ((type & Home) == Home)
291 typeString += i18n("Home")+" "; 317 typeString += i18n("Home")+" ";
292 else if ((type & Work) == Work) 318 else if ((type & Work) == Work)
293 typeString += i18n("Work")+" "; 319 typeString += i18n("Work")+" ";
294 320
295 if ((type & Sip) == Sip) 321 if ((type & Sip) == Sip)
296 typeString += i18n("SIP")+" "; 322 typeString += i18n("SIP")+" ";
297 if ((type & Car) == Car) 323 if ((type & Car) == Car)
298 typeString += i18n("Car")+" "; 324 typeString += i18n("Car")+" ";
299 325
300 if ((type & Fax) == Fax) 326 if ((type & Fax) == Fax)
301 typeString += i18n("Fax"); 327 typeString += i18n("Fax");
302 else if ((type & Msg) == Msg) 328 else if ((type & Msg) == Msg)
303 typeString += i18n("Messenger"); 329 typeString += i18n("Messenger");
304 else if ((type & Video) == Video) 330 else if ((type & Video) == Video)
305 typeString += i18n("Video"); 331 typeString += i18n("Video");
306 else if ((type & Bbs) == Bbs) 332 else if ((type & Bbs) == Bbs)
307 typeString += i18n("Mailbox"); 333 typeString += i18n("Mailbox");
308 else if ((type & Modem) == Modem) 334 else if ((type & Modem) == Modem)
309 typeString += i18n("Modem"); 335 typeString += i18n("Modem");
310 else if ((type & Isdn) == Isdn) 336 else if ((type & Isdn) == Isdn)
311 typeString += i18n("ISDN"); 337 typeString += i18n("ISDN");
312 else if ((type & Pcs) == Pcs) 338 else if ((type & Pcs) == Pcs)
313 typeString += i18n("PCS"); 339 typeString += i18n("PCS");
314 else if ((type & Pager) == Pager) 340 else if ((type & Pager) == Pager)
315 typeString += i18n("Pager"); 341 typeString += i18n("Pager");
316 // add the prefered flag 342 // add the prefered flag
317 /* 343 /*
318 if ((type & Pref) == Pref) 344 if ((type & Pref) == Pref)
319 typeString += i18n("(p)"); 345 typeString += i18n("(p)");
320 */ 346 */
321 //if we still have no match, return "other" 347 //if we still have no match, return "other"
322 if (typeString.isEmpty()) { 348 if (typeString.isEmpty()) {
323 if ((type & Voice) == Voice) 349 if ((type & Voice) == Voice)
324 return i18n("Voice"); 350 return i18n("Voice");
325 else 351 else
326 return i18n("Other"); 352 return i18n("Other");
327 } 353 }
328 354
329 return typeString.stripWhiteSpace(); 355 return typeString.stripWhiteSpace();
330#endif 356#endif
331} 357}
332 358
333QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) 359QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone )
334{ 360{
335 return s << phone.mId << phone.mType << phone.mNumber; 361 return s << phone.mId << phone.mType << phone.mNumber;
336} 362}
337 363
338QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) 364QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone )
339{ 365{
340 s >> phone.mId >> phone.mType >> phone.mNumber; 366 s >> phone.mId >> phone.mType >> phone.mNumber;
341 367
342 return s; 368 return s;
343} 369}
diff --git a/kabc/phonenumber.h b/kabc/phonenumber.h
index b9d6a17..feeba6c 100644
--- a/kabc/phonenumber.h
+++ b/kabc/phonenumber.h
@@ -1,170 +1,173 @@
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#ifndef KABC_PHONENUMBER_H 28#ifndef KABC_PHONENUMBER_H
29#define KABC_PHONENUMBER_H 29#define KABC_PHONENUMBER_H
30 30
31#include <qvaluelist.h> 31#include <qvaluelist.h>
32#include <qstring.h> 32#include <qstring.h>
33 33
34namespace KABC { 34namespace KABC {
35 35
36/** 36/**
37 @short Phonenumber information. 37 @short Phonenumber information.
38 38
39 This class provides phone number information. A phone number is classified by 39 This class provides phone number information. A phone number is classified by
40 a type. The following types are available, it's possible to use multiple types 40 a type. The following types are available, it's possible to use multiple types
41 @ref Types for a number by combining them through a logical or. 41 @ref Types for a number by combining them through a logical or.
42*/ 42*/
43class PhoneNumber 43class PhoneNumber
44{ 44{
45 friend QDataStream &operator<<( QDataStream &, const PhoneNumber & ); 45 friend QDataStream &operator<<( QDataStream &, const PhoneNumber & );
46 friend QDataStream &operator>>( QDataStream &, PhoneNumber & ); 46 friend QDataStream &operator>>( QDataStream &, PhoneNumber & );
47 47
48 public: 48 public:
49 typedef QValueList<PhoneNumber> List; 49 typedef QValueList<PhoneNumber> List;
50 typedef QValueList<int> TypeList; 50 typedef QValueList<int> TypeList;
51 51
52 /** 52 /**
53 @li @p Home - Home number 53 @li @p Home - Home number
54 @li @p Work - Office number 54 @li @p Work - Office number
55 @li @p Msg - Messaging 55 @li @p Msg - Messaging
56 @li @p Pref - Preferred number 56 @li @p Pref - Preferred number
57 @li @p Voice - Voice 57 @li @p Voice - Voice
58 @li @p Fax - Fax machine 58 @li @p Fax - Fax machine
59 @li @p Cell - Cell phone 59 @li @p Cell - Cell phone
60 @li @p Video - Video phone 60 @li @p Video - Video phone
61 @li @p Bbs - Mailbox 61 @li @p Bbs - Mailbox
62 @li @p Modem - Modem 62 @li @p Modem - Modem
63 @li @p Car - Car phone 63 @li @p Car - Car phone
64 @li @p Isdn - ISDN connection 64 @li @p Isdn - ISDN connection
65 @li @p Pcs - Personal Communication Service 65 @li @p Pcs - Personal Communication Service
66 @li @p Pager - Pager 66 @li @p Pager - Pager
67 */ 67 */
68 enum Types { Home = 1, Work = 2, Msg = 4, Pref = 8, Voice = 16, Fax = 32, 68 enum Types { Home = 1, Work = 2, Msg = 4, Pref = 8, Voice = 16, Fax = 32,
69 Cell = 64, Video = 128, Bbs = 256, Modem = 512, Car = 1024, 69 Cell = 64, Video = 128, Bbs = 256, Modem = 512, Car = 1024,
70 Isdn = 2048, Pcs = 4096, Pager = 8192 }; 70 Isdn = 2048, Pcs = 4096, Pager = 8192 };
71 71
72 /** 72 /**
73 Create an empty phone number object. 73 Create an empty phone number object.
74 */ 74 */
75 PhoneNumber(); 75 PhoneNumber();
76 76
77 /** 77 /**
78 Create a phonenumber object. 78 Create a phonenumber object.
79 79
80 @param number Number 80 @param number Number
81 @param type Type as defined in enum. Multiple types can be 81 @param type Type as defined in enum. Multiple types can be
82 specified by combining them by a logical or. 82 specified by combining them by a logical or.
83 */ 83 */
84 PhoneNumber( const QString &number, int type = Home ); 84 PhoneNumber( const QString &number, int type = Home );
85 85
86 /** 86 /**
87 Destructor. 87 Destructor.
88 */ 88 */
89 ~PhoneNumber(); 89 ~PhoneNumber();
90 90
91 bool operator==( const PhoneNumber & ) const; 91 bool operator==( const PhoneNumber & ) const;
92 bool operator!=( const PhoneNumber & ) const; 92 bool operator!=( const PhoneNumber & ) const;
93 93
94 bool contains( const PhoneNumber &p ); 94 bool contains( const PhoneNumber &p );
95 /** 95 /**
96 Sets the unique identifier. 96 Sets the unique identifier.
97 */ 97 */
98 void setId( const QString &id ); 98 void setId( const QString &id );
99 99
100 /** 100 /**
101 Returns the unique identifier. 101 Returns the unique identifier.
102 */ 102 */
103 QString id() const; 103 QString id() const;
104 104
105 /** 105 /**
106 Sets the number. 106 Sets the number.
107 */ 107 */
108 void setNumber( const QString & ); 108 void setNumber( const QString & );
109 109
110 /** 110 /**
111 Returns the number. 111 Returns the number.
112 */ 112 */
113 QString number() const; 113 QString number() const;
114 114
115 /** 115 /**
116 Sets the type. Multiple types can be specified by combining them by 116 Sets the type. Multiple types can be specified by combining them by
117 a logical or. 117 a logical or.
118 */ 118 */
119 void setType( int ); 119 void setType( int );
120 120
121 /** 121 /**
122 Returns the type. Can be a multiple types combined by a logical or. 122 Returns the type. Can be a multiple types combined by a logical or.
123 */ 123 */
124 int type() const; 124 int type() const;
125 125
126 /** 126 /**
127 Returns a translated string of all types the address has. 127 Returns a translated string of all types the address has.
128 */ 128 */
129 QString typeLabel() const; 129 QString typeLabel() const;
130 130
131 /** 131 /**
132 Returns the translated label for phone number depending on its type. 132 Returns the translated label for phone number depending on its type.
133 */ 133 */
134 QString label() const; 134 QString label() const;
135 135
136 /** 136 /**
137 Returns a list of all available types 137 Returns a list of all available types
138 */ 138 */
139 static TypeList typeList(); 139 static TypeList typeList();
140 140
141 /** 141 /**
142 Returns the translated label for phone number type. 142 Returns the translated label for phone number type.
143 */ 143 */
144 static QString typeLabel( int type ); 144 static QString typeLabel( int type );
145 145
146 /** 146 /**
147 Returns the translated label for phone number type. 147 Returns the translated label for phone number type.
148 @obsolete 148 @obsolete
149 */ 149 */
150 static QString label( int type ); 150 static QString label( int type );
151 static TypeList supportedTypeList();
152 static QStringList supportedTypeListNames();
153 static int typeListIndex4Type(int type );
151 bool simplifyNumber(); 154 bool simplifyNumber();
152 void simplifyType(); 155 void simplifyType();
153 void makeCompat(); 156 void makeCompat();
154 int getCompatType( int type ); 157 int getCompatType( int type );
155 158
156 private: 159 private:
157 void init(); 160 void init();
158 161
159 QString mId; 162 QString mId;
160 163
161 int mType; 164 int mType;
162 QString mNumber; 165 QString mNumber;
163}; 166};
164 167
165QDataStream &operator<<( QDataStream &, const PhoneNumber & ); 168QDataStream &operator<<( QDataStream &, const PhoneNumber & );
166QDataStream &operator>>( QDataStream &, PhoneNumber & ); 169QDataStream &operator>>( QDataStream &, PhoneNumber & );
167 170
168} 171}
169 172
170#endif 173#endif
diff --git a/kaddressbook/addresseeeditorwidget.cpp b/kaddressbook/addresseeeditorwidget.cpp
index 310d628..9814cd5 100644
--- a/kaddressbook/addresseeeditorwidget.cpp
+++ b/kaddressbook/addresseeeditorwidget.cpp
@@ -1,1348 +1,1366 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qcheckbox.h> 24#include <qcheckbox.h>
25#include <qhbox.h> 25#include <qhbox.h>
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qlistbox.h> 28#include <qlistbox.h>
29#include <qpushbutton.h> 29#include <qpushbutton.h>
30#include <qtabwidget.h> 30#include <qtabwidget.h>
31#include <qapplication.h> 31#include <qapplication.h>
32 32
33#ifndef KAB_EMBEDDED 33#ifndef KAB_EMBEDDED
34#include <qtextedit.h> 34#include <qtextedit.h>
35 35
36#include <kaccelmanager.h> 36#include <kaccelmanager.h>
37#include "keywidget.h" 37#include "keywidget.h"
38#include "soundwidget.h" 38#include "soundwidget.h"
39 39
40#else //KAB_EMBEDDED 40#else //KAB_EMBEDDED
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#endif //KAB_EMBEDDED 42#endif //KAB_EMBEDDED
43 43
44 44
45#include "keywidget.h" 45#include "keywidget.h"
46#include "geowidget.h" 46#include "geowidget.h"
47#include "imagewidget.h" 47#include "imagewidget.h"
48#include "nameeditdialog.h" 48#include "nameeditdialog.h"
49#include "phoneeditwidget.h" 49#include "phoneeditwidget.h"
50#include "secrecywidget.h" 50#include "secrecywidget.h"
51 51
52 52
53#include <qtoolbutton.h> 53#include <qtoolbutton.h>
54#include <qtooltip.h> 54#include <qtooltip.h>
55 55
56#include <kapplication.h> 56#include <kapplication.h>
57#include <kconfig.h> 57#include <kconfig.h>
58#include <kcombobox.h> 58#include <kcombobox.h>
59#include <kdebug.h> 59#include <kdebug.h>
60#include <kdialogbase.h> 60#include <kdialogbase.h>
61#include <kglobal.h> 61#include <kglobal.h>
62#include <kiconloader.h> 62#include <kiconloader.h>
63#include <klineedit.h> 63#include <klineedit.h>
64#include <klocale.h> 64#include <klocale.h>
65#include <kmessagebox.h> 65#include <kmessagebox.h>
66#include <kseparator.h> 66#include <kseparator.h>
67#include <ksqueezedtextlabel.h> 67#include <ksqueezedtextlabel.h>
68 68
69#include <libkdepim/categoryeditdialog.h> 69#include <libkdepim/categoryeditdialog.h>
70#include <libkdepim/categoryselectdialog.h> 70#include <libkdepim/categoryselectdialog.h>
71 71
72#include <libkdepim/kdateedit.h> 72#include <libkdepim/kdateedit.h>
73 73
74#include "addresseditwidget.h" 74#include "addresseditwidget.h"
75#include "emaileditwidget.h" 75#include "emaileditwidget.h"
76#include "kabcore.h" 76#include "kabcore.h"
77#include "kabprefs.h" 77#include "kabprefs.h"
78 78
79#include "addresseeeditorwidget.h" 79#include "addresseeeditorwidget.h"
80 80
81 81
82 82
83AddresseeEditorWidget::AddresseeEditorWidget( KABCore *core, bool isExtension, 83AddresseeEditorWidget::AddresseeEditorWidget( KABCore *core, bool isExtension,
84 QWidget *parent, const char *name ) 84 QWidget *parent, const char *name )
85 : ExtensionWidget( core, parent, name ), mIsExtension( isExtension ), 85 : ExtensionWidget( core, parent, name ), mIsExtension( isExtension ),
86 mBlockSignals( false ) 86 mBlockSignals( false )
87{ 87{
88 88
89 mAConfig = AddresseeConfig::instance(); 89 mAConfig = AddresseeConfig::instance();
90 90
91 mFormattedNameType = NameEditDialog::CustomName; 91 mFormattedNameType = NameEditDialog::CustomName;
92 initGUI(); 92 initGUI();
93 mCategoryDialog = 0; 93 mCategoryDialog = 0;
94 mCategoryEditDialog = 0; 94 mCategoryEditDialog = 0;
95 95
96 // Load the empty addressee as defaults 96 // Load the empty addressee as defaults
97 load(); 97 load();
98 98
99 mDirty = false; 99 mDirty = false;
100} 100}
101 101
102AddresseeEditorWidget::~AddresseeEditorWidget() 102AddresseeEditorWidget::~AddresseeEditorWidget()
103{ 103{
104 kdDebug(5720) << "~AddresseeEditorWidget()" << endl; 104 kdDebug(5720) << "~AddresseeEditorWidget()" << endl;
105} 105}
106 106
107void AddresseeEditorWidget::contactsSelectionChanged() 107void AddresseeEditorWidget::contactsSelectionChanged()
108{ 108{
109 KABC::Addressee::List list = selectedContacts(); 109 KABC::Addressee::List list = selectedContacts();
110 110
111 mAddressee = list[ 0 ]; 111 mAddressee = list[ 0 ];
112 load(); 112 load();
113} 113}
114 114
115void AddresseeEditorWidget::setAddressee( const KABC::Addressee &addr ) 115void AddresseeEditorWidget::setAddressee( const KABC::Addressee &addr )
116{ 116{
117 mAddressee = addr; 117 mAddressee = addr;
118 load(); 118 load();
119} 119}
120 120
121const KABC::Addressee &AddresseeEditorWidget::addressee() 121const KABC::Addressee &AddresseeEditorWidget::addressee()
122{ 122{
123 return mAddressee; 123 return mAddressee;
124} 124}
125 125
126void AddresseeEditorWidget::textChanged( const QString& ) 126void AddresseeEditorWidget::textChanged( const QString& )
127{ 127{
128 emitModified(); 128 emitModified();
129} 129}
130 130
131void AddresseeEditorWidget::initGUI() 131void AddresseeEditorWidget::initGUI()
132{ 132{
133 QVBoxLayout *layout = new QVBoxLayout( this ); 133 QVBoxLayout *layout = new QVBoxLayout( this );
134 134
135 mTabWidget = new QTabWidget( this ); 135 mTabWidget = new QTabWidget( this );
136 layout->addWidget( mTabWidget ); 136 layout->addWidget( mTabWidget );
137 137
138 setupTab1(); 138 setupTab1();
139 setupTab1_1(); 139 setupTab1_1();
140 setupTab2(); 140 setupTab2();
141 setupTab2_1(); 141 setupTab2_1();
142 setupTab3(); 142 setupTab3();
143 setupTab3_1(); 143 setupTab3_1();
144 144
145 mNameEdit->setFocus(); 145 mNameEdit->setFocus();
146 146
147 connect( mTabWidget, SIGNAL( currentChanged(QWidget*) ), 147 connect( mTabWidget, SIGNAL( currentChanged(QWidget*) ),
148 SLOT( pageChanged(QWidget*) ) ); 148 SLOT( pageChanged(QWidget*) ) );
149} 149}
150 150
151void AddresseeEditorWidget::setupTab1() 151void AddresseeEditorWidget::setupTab1()
152{ 152{
153 // This is the General tab 153 // This is the General tab
154 QWidget *tab1 = new QWidget( mTabWidget ); 154 QWidget *tab1 = new QWidget( mTabWidget );
155 155
156//US QGridLayout *layout = new QGridLayout( tab1, 11, 7 ); 156//US QGridLayout *layout = new QGridLayout( tab1, 11, 7 );
157 QGridLayout *layout = new QGridLayout( tab1, 7, 1 ); 157 bool horLayout = false;
158 int maxCol = 1;
159 if ( QApplication::desktop()->width() == 640 || QApplication::desktop()->width() == 320 ) {
160 horLayout = true;
161 maxCol = 3;
162 }
163 QGridLayout *layout = new QGridLayout( tab1, 8-maxCol, maxCol );
164
158 layout->setMargin( KDialogBase::marginHintSmall() ); 165 layout->setMargin( KDialogBase::marginHintSmall() );
159 layout->setSpacing( KDialogBase::spacingHintSmall() ); 166 layout->setSpacing( KDialogBase::spacingHintSmall() );
160 167
161 QLabel *label; 168 QLabel *label;
162 KSeparator* bar; 169 KSeparator* bar;
163 QPushButton *button; 170 QPushButton *button;
164 171
165 ////////////////////////////////// 172 //////////////////////////////////
166 // Upper left group (person info) 173 // Upper left group (person info)
167 174
168 // Person icon 175 // Person icon
169 /* LR 176 /* LR
170 label = new QLabel( tab1 ); 177 label = new QLabel( tab1 );
171//US ambiguous call. Add one more parameter 178//US ambiguous call. Add one more parameter
172//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); 179//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) );
173 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); 180 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) );
174 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 181 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
175 */ 182 */
176 // First name 183 // First name
177 button = new QPushButton( i18n( "Name..." ), tab1 ); 184 button = new QPushButton( i18n( "Name..." ), tab1 );
178//US QToolTip::add( button, i18n( "Edit the contact's name" ) ); 185//US QToolTip::add( button, i18n( "Edit the contact's name" ) );
179 mNameEdit = new KLineEdit( tab1, "mNameEdit" ); 186 mNameEdit = new KLineEdit( tab1, "mNameEdit" );
180 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ), 187 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ),
181 SLOT( nameTextChanged( const QString& ) ) ); 188 SLOT( nameTextChanged( const QString& ) ) );
182 connect( button, SIGNAL( clicked() ), SLOT( nameButtonClicked() ) ); 189 connect( button, SIGNAL( clicked() ), SLOT( nameButtonClicked() ) );
183 190
184 mNameLabel = new KSqueezedTextLabel( tab1 ); 191 mNameLabel = new KSqueezedTextLabel( tab1 );
185 mNameLabel->hide(); 192 mNameLabel->hide();
186 193
187 layout->addWidget( button, 0, 0 ); 194 layout->addWidget( button, 0, 0 );
188 layout->addWidget( mNameEdit, 0, 1 ); 195 layout->addWidget( mNameEdit, 0, 1 );
189 layout->addWidget( mNameLabel, 0, 1 ); 196 layout->addWidget( mNameLabel, 0, 1 );
190 197
191 button = new QPushButton( i18n( "Role:" ), tab1 ); 198 button = new QPushButton( i18n( "Role:" ), tab1 );
192 connect( button, SIGNAL( clicked() ), SLOT( setRole2FN() ) ); 199 connect( button, SIGNAL( clicked() ), SLOT( setRole2FN() ) );
193 //label = new QLabel( i18n( "Role:" ), tab1 ); 200 //label = new QLabel( i18n( "Role:" ), tab1 );
194 mRoleEdit = new KLineEdit( tab1 ); 201 mRoleEdit = new KLineEdit( tab1 );
195 connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ), 202 connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ),
196 SLOT( textChanged( const QString& ) ) ); 203 SLOT( textChanged( const QString& ) ) );
197 //label->setBuddy( mRoleEdit ); 204 //label->setBuddy( mRoleEdit );
198 layout->addWidget( button, 1, 0 ); 205 layout->addWidget( button, 1, 0 );
199 layout->addWidget( mRoleEdit, 1, 1 ); 206 layout->addWidget( mRoleEdit, 1, 1 );
200 207
201 // Organization 208 // Organization
202 button = new QPushButton( i18n( "Organization:" ), tab1 ); 209 button = new QPushButton( i18n( "Organization:" ), tab1 );
203 connect( button, SIGNAL( clicked() ), SLOT( setCompany2FN() ) ); 210 connect( button, SIGNAL( clicked() ), SLOT( setCompany2FN() ) );
204 //label = new QLabel( i18n( "Organization:" ), tab1 ); 211 //label = new QLabel( i18n( "Organization:" ), tab1 );
205 mOrgEdit = new KLineEdit( tab1 ); 212 mOrgEdit = new KLineEdit( tab1 );
206 //label->setBuddy( mOrgEdit ); 213 //label->setBuddy( mOrgEdit );
207 connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ), 214 connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ),
208 SLOT( textChanged( const QString& ) ) ); 215 SLOT( textChanged( const QString& ) ) );
209 layout->addWidget( button, 2, 0 ); 216 if ( horLayout ) {
210 layout->addWidget( mOrgEdit, 2, 1 ); 217 layout->addWidget( button, 1, 2 );
218 layout->addWidget( mOrgEdit, 1, 3 );
219
220 } else {
221 layout->addWidget( button, 2, 0 );
222 layout->addWidget( mOrgEdit, 2, 1 );
223 }
211 224
212 // File as (formatted name) 225 // File as (formatted name)
213 label = new QLabel( i18n( "Formatted name:" ), tab1 ); 226 label = new QLabel( i18n( "Format.n.:" ), tab1 );
214 mFormattedNameLabel = new KSqueezedTextLabel( tab1 ); 227 mFormattedNameLabel = new KSqueezedTextLabel( tab1 );
215 layout->addWidget( label, 3, 0 ); 228 if ( horLayout ) {
216 layout->addWidget( mFormattedNameLabel, 3, 1 ); 229 layout->addWidget( label, 0,2 );
230 layout->addWidget( mFormattedNameLabel, 0, 3 );
231 } else {
232 layout->addWidget( label, 3, 0 );
233 layout->addWidget( mFormattedNameLabel, 3, 1 );
234 }
217 /* LR 235 /* LR
218 // Left hand separator. This separator doesn't go all the way 236 // Left hand separator. This separator doesn't go all the way
219 // across so the dialog still flows from top to bottom 237 // across so the dialog still flows from top to bottom
220 bar = new KSeparator( KSeparator::HLine, tab1 ); 238 bar = new KSeparator( KSeparator::HLine, tab1 );
221 layout->addMultiCellWidget( bar, 4, 4, 0, 2 ); 239 layout->addMultiCellWidget( bar, 4, 4, 0, 2 );
222 */ 240 */
223 ////////////////////////////////////// 241 //////////////////////////////////////
224 242
225 /* LR 243 /* LR
226 // Phone numbers (upper right) 244 // Phone numbers (upper right)
227 label = new QLabel( tab1 ); 245 label = new QLabel( tab1 );
228//US loadIcon call is ambiguous. Add one more parameter 246//US loadIcon call is ambiguous. Add one more parameter
229//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); 247//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
230 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 248 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
231//US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); 249//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
232 layout->addMultiCellWidget( label, 5, 6, 0, 0 ); 250 layout->addMultiCellWidget( label, 5, 6, 0, 0 );
233 */ 251 */
234 mPhoneEditWidget = new PhoneEditWidget( tab1 ); 252 mPhoneEditWidget = new PhoneEditWidget( tab1 );
235 connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 253 connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
236//US layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 ); 254//US layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 );
237 int iii; 255 int iii;
238#ifndef DESKTOP_VERSION 256#ifndef DESKTOP_VERSION
239 iii = 7; 257 iii = 7;
240#else 258#else
241 iii = 8; 259 iii = 8;
242#endif 260#endif
243 layout->addMultiCellWidget( mPhoneEditWidget, 4, iii, 0, 1 ); 261 layout->addMultiCellWidget( mPhoneEditWidget, 4, iii, 0, maxCol );
244 ++iii; 262 ++iii;
245 /* LR 263 /* LR
246 bar = new KSeparator( KSeparator::HLine, tab1 ); 264 bar = new KSeparator( KSeparator::HLine, tab1 );
247//US layout->addMultiCellWidget( bar, 4, 4, 3, 6 ); 265//US layout->addMultiCellWidget( bar, 4, 4, 3, 6 );
248 layout->addMultiCellWidget( bar, 9, 9, 0, 2 ); 266 layout->addMultiCellWidget( bar, 9, 9, 0, 2 );
249 */ 267 */
250/*US 268/*US
251 ////////////////////////////////////// 269 //////////////////////////////////////
252 // Addresses (lower left) 270 // Addresses (lower left)
253 label = new QLabel( tab1 ); 271 label = new QLabel( tab1 );
254//US loadIcon call is ambiguous. Add one more parameter 272//US loadIcon call is ambiguous. Add one more parameter
255//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) ); 273//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) );
256 label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) ); 274 label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) );
257 layout->addMultiCellWidget( label, 5, 6, 0, 0 ); 275 layout->addMultiCellWidget( label, 5, 6, 0, 0 );
258 276
259 mAddressEditWidget = new AddressEditWidget( tab1 ); 277 mAddressEditWidget = new AddressEditWidget( tab1 );
260 connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 278 connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
261 layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 ); 279 layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 );
262 280
263 ////////////////////////////////////// 281 //////////////////////////////////////
264 // Email / Web (lower right) 282 // Email / Web (lower right)
265 label = new QLabel( tab1 ); 283 label = new QLabel( tab1 );
266//US loadIcon call is ambiguous. Add one more parameter 284//US loadIcon call is ambiguous. Add one more parameter
267//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) ); 285//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) );
268 label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop, 0) ); 286 label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop, 0) );
269 layout->addMultiCellWidget( label, 5, 6, 3, 3 ); 287 layout->addMultiCellWidget( label, 5, 6, 3, 3 );
270 288
271 mEmailWidget = new EmailEditWidget( tab1 ); 289 mEmailWidget = new EmailEditWidget( tab1 );
272 connect( mEmailWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 290 connect( mEmailWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
273 layout->addMultiCellWidget( mEmailWidget, 5, 6, 4, 6 ); 291 layout->addMultiCellWidget( mEmailWidget, 5, 6, 4, 6 );
274 292
275 // add the separator 293 // add the separator
276 bar = new KSeparator( KSeparator::HLine, tab1 ); 294 bar = new KSeparator( KSeparator::HLine, tab1 );
277 layout->addMultiCellWidget( bar, 7, 7, 3, 6 ); 295 layout->addMultiCellWidget( bar, 7, 7, 3, 6 );
278 296
279 label = new QLabel( tab1 ); 297 label = new QLabel( tab1 );
280//US loadIcon call is ambiguous. Add one more parameter 298//US loadIcon call is ambiguous. Add one more parameter
281//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop) ); 299//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop) );
282 label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop, 0) ); 300 label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop, 0) );
283 layout->addMultiCellWidget( label, 8, 9, 3, 3 ); 301 layout->addMultiCellWidget( label, 8, 9, 3, 3 );
284 302
285 label = new QLabel( i18n( "URL:" ), tab1 ); 303 label = new QLabel( i18n( "URL:" ), tab1 );
286 mURLEdit = new KLineEdit( tab1 ); 304 mURLEdit = new KLineEdit( tab1 );
287 connect( mURLEdit, SIGNAL( textChanged( const QString& ) ), 305 connect( mURLEdit, SIGNAL( textChanged( const QString& ) ),
288 SLOT( textChanged( const QString& ) ) ); 306 SLOT( textChanged( const QString& ) ) );
289 label->setBuddy( mURLEdit ); 307 label->setBuddy( mURLEdit );
290 layout->addWidget( label, 8, 4 ); 308 layout->addWidget( label, 8, 4 );
291 layout->addMultiCellWidget( mURLEdit, 8, 8, 5, 6 ); 309 layout->addMultiCellWidget( mURLEdit, 8, 8, 5, 6 );
292 310
293 label = new QLabel( i18n( "&IM address:" ), tab1 ); 311 label = new QLabel( i18n( "&IM address:" ), tab1 );
294 mIMAddressEdit = new KLineEdit( tab1 ); 312 mIMAddressEdit = new KLineEdit( tab1 );
295 connect( mIMAddressEdit, SIGNAL( textChanged( const QString& ) ), 313 connect( mIMAddressEdit, SIGNAL( textChanged( const QString& ) ),
296 SLOT( textChanged( const QString& ) ) ); 314 SLOT( textChanged( const QString& ) ) );
297 label->setBuddy( mIMAddressEdit ); 315 label->setBuddy( mIMAddressEdit );
298 layout->addWidget( label, 9, 4 ); 316 layout->addWidget( label, 9, 4 );
299 layout->addMultiCellWidget( mIMAddressEdit, 9, 9, 5, 6 ); 317 layout->addMultiCellWidget( mIMAddressEdit, 9, 9, 5, 6 );
300 318
301 layout->addColSpacing( 6, 50 ); 319 layout->addColSpacing( 6, 50 );
302 320
303 bar = new KSeparator( KSeparator::HLine, tab1 ); 321 bar = new KSeparator( KSeparator::HLine, tab1 );
304 layout->addMultiCellWidget( bar, 10, 10, 0, 6 ); 322 layout->addMultiCellWidget( bar, 10, 10, 0, 6 );
305*/ 323*/
306 /////////////////////////////////////// 324 ///////////////////////////////////////
307 QHBox *categoryBox = new QHBox( tab1 ,"cato"); 325 QHBox *categoryBox = new QHBox( tab1 ,"cato");
308 categoryBox->setSpacing( KDialogBase::spacingHint() ); 326 categoryBox->setSpacing( KDialogBase::spacingHint() );
309 categoryBox->setMargin( KDialogBase::marginHintSmall() ); 327 categoryBox->setMargin( KDialogBase::marginHintSmall() );
310 328
311 // Categories 329 // Categories
312 button = new QPushButton( i18n( "Categories" ), categoryBox ); 330 button = new QPushButton( i18n( "Categories" ), categoryBox );
313 connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) ); 331 connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) );
314 332
315 mCategoryEdit = new KLineEdit( categoryBox ); 333 mCategoryEdit = new KLineEdit( categoryBox );
316 mCategoryEdit->setReadOnly( true ); 334 mCategoryEdit->setReadOnly( true );
317 connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ), 335 connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ),
318 SLOT( textChanged( const QString& ) ) ); 336 SLOT( textChanged( const QString& ) ) );
319 337
320 mSecrecyWidget = new SecrecyWidget( categoryBox ); 338 mSecrecyWidget = new SecrecyWidget( categoryBox );
321 connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 339 connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
322 340
323//US layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 ); 341//US layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 );
324 layout->addMultiCellWidget( categoryBox, iii, iii, 0, 1 ); 342 layout->addMultiCellWidget( categoryBox, iii, iii, 0, maxCol );
325 343
326 // Build the layout and add to the tab widget 344 // Build the layout and add to the tab widget
327 layout->activate(); // required 345 layout->activate(); // required
328 346
329 mTabWidget->addTab( tab1, i18n( "&General" ) ); 347 mTabWidget->addTab( tab1, i18n( "&General" ) );
330} 348}
331 349
332void AddresseeEditorWidget::setRole2FN() 350void AddresseeEditorWidget::setRole2FN()
333{ 351{
334 if ( mRoleEdit->text().isEmpty() ) return; 352 if ( mRoleEdit->text().isEmpty() ) return;
335 mFormattedNameType = NameEditDialog::CustomName; 353 mFormattedNameType = NameEditDialog::CustomName;
336 mAddressee.setFormattedName( mRoleEdit->text() ); 354 mAddressee.setFormattedName( mRoleEdit->text() );
337 mFormattedNameLabel->setText( mRoleEdit->text() ); 355 mFormattedNameLabel->setText( mRoleEdit->text() );
338 mDirty = true; 356 mDirty = true;
339} 357}
340void AddresseeEditorWidget::setCompany2FN() 358void AddresseeEditorWidget::setCompany2FN()
341{ 359{
342 if ( mOrgEdit->text().isEmpty() ) return; 360 if ( mOrgEdit->text().isEmpty() ) return;
343 mFormattedNameType = NameEditDialog::CustomName; 361 mFormattedNameType = NameEditDialog::CustomName;
344 mAddressee.setFormattedName( mOrgEdit->text() ); 362 mAddressee.setFormattedName( mOrgEdit->text() );
345 mFormattedNameLabel->setText( mOrgEdit->text() ); 363 mFormattedNameLabel->setText( mOrgEdit->text() );
346 mDirty = true; 364 mDirty = true;
347} 365}
348 366
349void AddresseeEditorWidget::setupTab1_1() 367void AddresseeEditorWidget::setupTab1_1()
350{ 368{
351 // This is the Address tab 369 // This is the Address tab
352 QWidget *tab1_1 = new QWidget( mTabWidget ); 370 QWidget *tab1_1 = new QWidget( mTabWidget );
353 371
354//US QGridLayout *layout = new QGridLayout( tab1_1, 11, 7 ); 372//US QGridLayout *layout = new QGridLayout( tab1_1, 11, 7 );
355 QGridLayout *layout = new QGridLayout( tab1_1, 7, 2 ); 373 QGridLayout *layout = new QGridLayout( tab1_1, 7, 2 );
356 layout->setMargin( KDialogBase::marginHintSmall() ); 374 layout->setMargin( KDialogBase::marginHintSmall() );
357 layout->setSpacing( KDialogBase::spacingHintSmall() ); 375 layout->setSpacing( KDialogBase::spacingHintSmall() );
358 376
359 QLabel *label; 377 QLabel *label;
360 KSeparator* bar; 378 KSeparator* bar;
361 QPushButton *button; 379 QPushButton *button;
362 380
363/*US 381/*US
364 ////////////////////////////////// 382 //////////////////////////////////
365 // Upper left group (person info) 383 // Upper left group (person info)
366 384
367 // Person icon 385 // Person icon
368 label = new QLabel( tab1 ); 386 label = new QLabel( tab1 );
369//US ambiguous call. Add one more parameter 387//US ambiguous call. Add one more parameter
370//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); 388//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) );
371 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); 389 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) );
372 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 390 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
373 391
374 // First name 392 // First name
375 button = new QPushButton( i18n( "Name..." ), tab1 ); 393 button = new QPushButton( i18n( "Name..." ), tab1 );
376 QToolTip::add( button, i18n( "Edit the contact's name" ) ); 394 QToolTip::add( button, i18n( "Edit the contact's name" ) );
377 mNameEdit = new KLineEdit( tab1, "mNameEdit" ); 395 mNameEdit = new KLineEdit( tab1, "mNameEdit" );
378 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ), 396 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ),
379 SLOT( nameTextChanged( const QString& ) ) ); 397 SLOT( nameTextChanged( const QString& ) ) );
380 connect( button, SIGNAL( clicked() ), SLOT( nameButtonClicked() ) ); 398 connect( button, SIGNAL( clicked() ), SLOT( nameButtonClicked() ) );
381 399
382#ifndef KAB_EMBEDDED 400#ifndef KAB_EMBEDDED
383 mNameLabel = new KSqueezedTextLabel( tab1 ); 401 mNameLabel = new KSqueezedTextLabel( tab1 );
384 mNameLabel->hide(); 402 mNameLabel->hide();
385#else //KAB_EMBEDDED 403#else //KAB_EMBEDDED
386qDebug("AddresseeEditorWidget::setupTab1 has to be changed"); 404qDebug("AddresseeEditorWidget::setupTab1 has to be changed");
387#endif //KAB_EMBEDDED 405#endif //KAB_EMBEDDED
388 406
389 layout->addWidget( button, 0, 1 ); 407 layout->addWidget( button, 0, 1 );
390 layout->addWidget( mNameEdit, 0, 2 ); 408 layout->addWidget( mNameEdit, 0, 2 );
391 409
392#ifndef KAB_EMBEDDED 410#ifndef KAB_EMBEDDED
393 layout->addWidget( mNameLabel, 0, 2 ); 411 layout->addWidget( mNameLabel, 0, 2 );
394#else //KAB_EMBEDDED 412#else //KAB_EMBEDDED
395qDebug("AddresseeEditorWidget::setupTab1 has to be changed"); 413qDebug("AddresseeEditorWidget::setupTab1 has to be changed");
396#endif //KAB_EMBEDDED 414#endif //KAB_EMBEDDED
397 415
398 label = new QLabel( i18n( "Role:" ), tab1 ); 416 label = new QLabel( i18n( "Role:" ), tab1 );
399 mRoleEdit = new KLineEdit( tab1 ); 417 mRoleEdit = new KLineEdit( tab1 );
400 connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ), 418 connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ),
401 SLOT( textChanged( const QString& ) ) ); 419 SLOT( textChanged( const QString& ) ) );
402 label->setBuddy( mRoleEdit ); 420 label->setBuddy( mRoleEdit );
403 layout->addWidget( label, 1, 1 ); 421 layout->addWidget( label, 1, 1 );
404 layout->addWidget( mRoleEdit, 1, 2 ); 422 layout->addWidget( mRoleEdit, 1, 2 );
405 423
406 // Organization 424 // Organization
407 label = new QLabel( i18n( "Organization:" ), tab1 ); 425 label = new QLabel( i18n( "Organization:" ), tab1 );
408 mOrgEdit = new KLineEdit( tab1 ); 426 mOrgEdit = new KLineEdit( tab1 );
409 label->setBuddy( mOrgEdit ); 427 label->setBuddy( mOrgEdit );
410 connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ), 428 connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ),
411 SLOT( textChanged( const QString& ) ) ); 429 SLOT( textChanged( const QString& ) ) );
412 layout->addWidget( label, 2, 1 ); 430 layout->addWidget( label, 2, 1 );
413 layout->addWidget( mOrgEdit, 2, 2 ); 431 layout->addWidget( mOrgEdit, 2, 2 );
414 432
415 // File as (formatted name) 433 // File as (formatted name)
416 label = new QLabel( i18n( "Formatted name:" ), tab1 ); 434 label = new QLabel( i18n( "Formatted name:" ), tab1 );
417#ifndef KAB_EMBEDDED 435#ifndef KAB_EMBEDDED
418 mFormattedNameLabel = new KSqueezedTextLabel( tab1 ); 436 mFormattedNameLabel = new KSqueezedTextLabel( tab1 );
419#else //KAB_EMBEDDED 437#else //KAB_EMBEDDED
420qDebug("AddresseeEditorWidget::setupTab1 has to be changed"); 438qDebug("AddresseeEditorWidget::setupTab1 has to be changed");
421#endif //KAB_EMBEDDED 439#endif //KAB_EMBEDDED
422 layout->addWidget( label, 3, 1 ); 440 layout->addWidget( label, 3, 1 );
423#ifndef KAB_EMBEDDED 441#ifndef KAB_EMBEDDED
424 layout->addWidget( mFormattedNameLabel, 3, 2 ); 442 layout->addWidget( mFormattedNameLabel, 3, 2 );
425#else //KAB_EMBEDDED 443#else //KAB_EMBEDDED
426qDebug("AddresseeEditorWidget::setupTab1 has to be changed"); 444qDebug("AddresseeEditorWidget::setupTab1 has to be changed");
427#endif //KAB_EMBEDDED 445#endif //KAB_EMBEDDED
428 446
429 // Left hand separator. This separator doesn't go all the way 447 // Left hand separator. This separator doesn't go all the way
430 // across so the dialog still flows from top to bottom 448 // across so the dialog still flows from top to bottom
431 bar = new KSeparator( KSeparator::HLine, tab1 ); 449 bar = new KSeparator( KSeparator::HLine, tab1 );
432 layout->addMultiCellWidget( bar, 4, 4, 0, 2 ); 450 layout->addMultiCellWidget( bar, 4, 4, 0, 2 );
433 451
434 ////////////////////////////////////// 452 //////////////////////////////////////
435 // Phone numbers (upper right) 453 // Phone numbers (upper right)
436 label = new QLabel( tab1 ); 454 label = new QLabel( tab1 );
437//US loadIcon call is ambiguous. Add one more parameter 455//US loadIcon call is ambiguous. Add one more parameter
438//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); 456//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
439 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 457 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
440 layout->addMultiCellWidget( label, 0, 1, 3, 3 ); 458 layout->addMultiCellWidget( label, 0, 1, 3, 3 );
441 459
442 mPhoneEditWidget = new PhoneEditWidget( tab1 ); 460 mPhoneEditWidget = new PhoneEditWidget( tab1 );
443 connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 461 connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
444 layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 ); 462 layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 );
445 463
446 bar = new KSeparator( KSeparator::HLine, tab1 ); 464 bar = new KSeparator( KSeparator::HLine, tab1 );
447 layout->addMultiCellWidget( bar, 4, 4, 3, 6 ); 465 layout->addMultiCellWidget( bar, 4, 4, 3, 6 );
448*/ 466*/
449 ////////////////////////////////////// 467 //////////////////////////////////////
450 // Addresses (lower left) 468 // Addresses (lower left)
451 /* LR 469 /* LR
452 label = new QLabel( tab1_1 ); 470 label = new QLabel( tab1_1 );
453//US loadIcon call is ambiguous. Add one more parameter 471//US loadIcon call is ambiguous. Add one more parameter
454//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) ); 472//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) );
455 label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) ); 473 label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) );
456//US layout->addMultiCellWidget( label, 5, 6, 0, 0 ); 474//US layout->addMultiCellWidget( label, 5, 6, 0, 0 );
457 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 475 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
458 */ 476 */
459 477
460 mAddressEditWidget = new AddressEditWidget( tab1_1 ); 478 mAddressEditWidget = new AddressEditWidget( tab1_1 );
461 connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 479 connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
462//US layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 ); 480//US layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 );
463 layout->addMultiCellWidget( mAddressEditWidget, 0, 4, 0, 1 ); 481 layout->addMultiCellWidget( mAddressEditWidget, 0, 4, 0, 1 );
464 482
465//US 483//US
466/* LR 484/* LR
467 bar = new KSeparator( KSeparator::HLine, tab1_1 ); 485 bar = new KSeparator( KSeparator::HLine, tab1_1 );
468 layout->addMultiCellWidget( bar, 5, 5, 0, 3 ); 486 layout->addMultiCellWidget( bar, 5, 5, 0, 3 );
469*/ 487*/
470 488
471 ////////////////////////////////////// 489 //////////////////////////////////////
472 // Email / Web (lower right) 490 // Email / Web (lower right)
473 /* LR 491 /* LR
474 label = new QLabel( tab1_1 ); 492 label = new QLabel( tab1_1 );
475//US loadIcon call is ambiguous. Add one more parameter 493//US loadIcon call is ambiguous. Add one more parameter
476//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) ); 494//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) );
477 label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop, 0) ); 495 label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop, 0) );
478//US layout->addMultiCellWidget( label, 5, 6, 3, 3 ); 496//US layout->addMultiCellWidget( label, 5, 6, 3, 3 );
479 layout->addMultiCellWidget( label, 6, 7, 0, 0 ); 497 layout->addMultiCellWidget( label, 6, 7, 0, 0 );
480 */ 498 */
481 mEmailWidget = new EmailEditWidget( tab1_1 ); 499 mEmailWidget = new EmailEditWidget( tab1_1 );
482 connect( mEmailWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 500 connect( mEmailWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
483//US layout->addMultiCellWidget( mEmailWidget, 5, 6, 4, 6 ); 501//US layout->addMultiCellWidget( mEmailWidget, 5, 6, 4, 6 );
484 layout->addMultiCellWidget( mEmailWidget, 5, 6, 0, 1 ); 502 layout->addMultiCellWidget( mEmailWidget, 5, 6, 0, 1 );
485 503
486 /* LR 504 /* LR
487 // add the separator 505 // add the separator
488 bar = new KSeparator( KSeparator::HLine, tab1_1 ); 506 bar = new KSeparator( KSeparator::HLine, tab1_1 );
489//US layout->addMultiCellWidget( bar, 7, 7, 3, 6 ); 507//US layout->addMultiCellWidget( bar, 7, 7, 3, 6 );
490 layout->addMultiCellWidget( bar, 8, 8, 0, 3 ); 508 layout->addMultiCellWidget( bar, 8, 8, 0, 3 );
491 509
492 label = new QLabel( tab1_1 ); 510 label = new QLabel( tab1_1 );
493//US loadIcon call is ambiguous. Add one more parameter 511//US loadIcon call is ambiguous. Add one more parameter
494//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop) ); 512//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop) );
495 label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop, 0) ); 513 label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop, 0) );
496//US layout->addMultiCellWidget( label, 8, 9, 3, 3 ); 514//US layout->addMultiCellWidget( label, 8, 9, 3, 3 );
497 layout->addMultiCellWidget( label, 9, 10, 0, 0 ); 515 layout->addMultiCellWidget( label, 9, 10, 0, 0 );
498 */ 516 */
499 label = new QLabel( i18n( "URL:" ), tab1_1 ); 517 label = new QLabel( i18n( "URL:" ), tab1_1 );
500 mURLEdit = new KLineEdit( tab1_1 ); 518 mURLEdit = new KLineEdit( tab1_1 );
501 connect( mURLEdit, SIGNAL( textChanged( const QString& ) ), 519 connect( mURLEdit, SIGNAL( textChanged( const QString& ) ),
502 SLOT( textChanged( const QString& ) ) ); 520 SLOT( textChanged( const QString& ) ) );
503 label->setBuddy( mURLEdit ); 521 label->setBuddy( mURLEdit );
504//US layout->addWidget( label, 8, 4 ); 522//US layout->addWidget( label, 8, 4 );
505 layout->addWidget( label, 7,0 ); 523 layout->addWidget( label, 7,0 );
506//US layout->addMultiCellWidget( mURLEdit, 8, 8, 5, 6 ); 524//US layout->addMultiCellWidget( mURLEdit, 8, 8, 5, 6 );
507 layout->addWidget( mURLEdit, 7, 1); 525 layout->addWidget( mURLEdit, 7, 1);
508 526
509 label = new QLabel( i18n( "&IM address:" ), tab1_1 ); 527 label = new QLabel( i18n( "&IM address:" ), tab1_1 );
510 mIMAddressEdit = new KLineEdit( tab1_1 ); 528 mIMAddressEdit = new KLineEdit( tab1_1 );
511 connect( mIMAddressEdit, SIGNAL( textChanged( const QString& ) ), 529 connect( mIMAddressEdit, SIGNAL( textChanged( const QString& ) ),
512 SLOT( textChanged( const QString& ) ) ); 530 SLOT( textChanged( const QString& ) ) );
513 label->setBuddy( mIMAddressEdit ); 531 label->setBuddy( mIMAddressEdit );
514//US layout->addWidget( label, 9, 4 ); 532//US layout->addWidget( label, 9, 4 );
515 layout->addWidget( label, 8, 0 ); 533 layout->addWidget( label, 8, 0 );
516//US layout->addMultiCellWidget( mIMAddressEdit, 9, 9, 5, 6 ); 534//US layout->addMultiCellWidget( mIMAddressEdit, 9, 9, 5, 6 );
517 layout->addWidget( mIMAddressEdit, 8,1 ); 535 layout->addWidget( mIMAddressEdit, 8,1 );
518 536
519//US layout->addColSpacing( 6, 50 ); 537//US layout->addColSpacing( 6, 50 );
520 538
521//US bar = new KSeparator( KSeparator::HLine, tab1_1 ); 539//US bar = new KSeparator( KSeparator::HLine, tab1_1 );
522//US layout->addMultiCellWidget( bar, 10, 10, 0, 6 ); 540//US layout->addMultiCellWidget( bar, 10, 10, 0, 6 );
523 541
524/*US 542/*US
525 /////////////////////////////////////// 543 ///////////////////////////////////////
526 QHBox *categoryBox = new QHBox( tab1 ); 544 QHBox *categoryBox = new QHBox( tab1 );
527 categoryBox->setSpacing( KDialogBase::spacingHintSmall() ); 545 categoryBox->setSpacing( KDialogBase::spacingHintSmall() );
528 546
529 // Categories 547 // Categories
530 button = new QPushButton( i18n( "Categories" ), categoryBox ); 548 button = new QPushButton( i18n( "Categories" ), categoryBox );
531 connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) ); 549 connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) );
532 550
533 mCategoryEdit = new KLineEdit( categoryBox ); 551 mCategoryEdit = new KLineEdit( categoryBox );
534 mCategoryEdit->setReadOnly( true ); 552 mCategoryEdit->setReadOnly( true );
535 connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ), 553 connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ),
536 SLOT( textChanged( const QString& ) ) ); 554 SLOT( textChanged( const QString& ) ) );
537 555
538 mSecrecyWidget = new SecrecyWidget( categoryBox ); 556 mSecrecyWidget = new SecrecyWidget( categoryBox );
539 connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 557 connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
540 558
541 layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 ); 559 layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 );
542*/ 560*/
543 // Build the layout and add to the tab widget 561 // Build the layout and add to the tab widget
544 layout->activate(); // required 562 layout->activate(); // required
545 563
546 mTabWidget->addTab( tab1_1, i18n( "&Address" ) ); 564 mTabWidget->addTab( tab1_1, i18n( "&Address" ) );
547} 565}
548 566
549 567
550 568
551void AddresseeEditorWidget::setupTab2() 569void AddresseeEditorWidget::setupTab2()
552{ 570{
553 // This is the Details tab 571 // This is the Details tab
554 QWidget *tab2 = new QWidget( mTabWidget ); 572 QWidget *tab2 = new QWidget( mTabWidget );
555 573
556 QGridLayout *layout = new QGridLayout( tab2, 8, 3 ); 574 QGridLayout *layout = new QGridLayout( tab2, 8, 3 );
557 layout->setMargin( KDialogBase::marginHintSmall() ); 575 layout->setMargin( KDialogBase::marginHintSmall() );
558 layout->setSpacing( KDialogBase::spacingHintSmall() ); 576 layout->setSpacing( KDialogBase::spacingHintSmall() );
559 577
560 QLabel *label; 578 QLabel *label;
561 KSeparator* bar; 579 KSeparator* bar;
562 580
563 /////////////////////// 581 ///////////////////////
564 // Office info 582 // Office info
565 583
566 // Department 584 // Department
567 label = new QLabel( tab2 ); 585 label = new QLabel( tab2 );
568//US loadIcon call is ambiguous. Add one more parameter 586//US loadIcon call is ambiguous. Add one more parameter
569//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop ) ); 587//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop ) );
570 label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop, 0 ) ); 588 label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop, 0 ) );
571 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 589 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
572 590
573 label = new QLabel( i18n( "Department:" ), tab2 ); 591 label = new QLabel( i18n( "Department:" ), tab2 );
574 layout->addWidget( label, 0, 1 ); 592 layout->addWidget( label, 0, 1 );
575 mDepartmentEdit = new KLineEdit( tab2 ); 593 mDepartmentEdit = new KLineEdit( tab2 );
576 connect( mDepartmentEdit, SIGNAL( textChanged( const QString& ) ), 594 connect( mDepartmentEdit, SIGNAL( textChanged( const QString& ) ),
577 SLOT( textChanged( const QString& ) ) ); 595 SLOT( textChanged( const QString& ) ) );
578 label->setBuddy( mDepartmentEdit ); 596 label->setBuddy( mDepartmentEdit );
579 layout->addWidget( mDepartmentEdit, 0, 2 ); 597 layout->addWidget( mDepartmentEdit, 0, 2 );
580 598
581 label = new QLabel( i18n( "Office:" ), tab2 ); 599 label = new QLabel( i18n( "Office:" ), tab2 );
582 layout->addWidget( label, 1, 1 ); 600 layout->addWidget( label, 1, 1 );
583 mOfficeEdit = new KLineEdit( tab2 ); 601 mOfficeEdit = new KLineEdit( tab2 );
584 connect( mOfficeEdit, SIGNAL( textChanged( const QString& ) ), 602 connect( mOfficeEdit, SIGNAL( textChanged( const QString& ) ),
585 SLOT( textChanged( const QString& ) ) ); 603 SLOT( textChanged( const QString& ) ) );
586 label->setBuddy( mOfficeEdit ); 604 label->setBuddy( mOfficeEdit );
587 layout->addWidget( mOfficeEdit, 1, 2 ); 605 layout->addWidget( mOfficeEdit, 1, 2 );
588 606
589 label = new QLabel( i18n( "Profession:" ), tab2 ); 607 label = new QLabel( i18n( "Profession:" ), tab2 );
590 layout->addWidget( label, 2, 1 ); 608 layout->addWidget( label, 2, 1 );
591 mProfessionEdit = new KLineEdit( tab2 ); 609 mProfessionEdit = new KLineEdit( tab2 );
592 connect( mProfessionEdit, SIGNAL( textChanged( const QString& ) ), 610 connect( mProfessionEdit, SIGNAL( textChanged( const QString& ) ),
593 SLOT( textChanged( const QString& ) ) ); 611 SLOT( textChanged( const QString& ) ) );
594 label->setBuddy( mProfessionEdit ); 612 label->setBuddy( mProfessionEdit );
595 layout->addWidget( mProfessionEdit, 2, 2 ); 613 layout->addWidget( mProfessionEdit, 2, 2 );
596 614
597 label = new QLabel( i18n( "Manager\'s name:" ), tab2 ); 615 label = new QLabel( i18n( "Manager\'s name:" ), tab2 );
598//US layout->addWidget( label, 0, 3 ); 616//US layout->addWidget( label, 0, 3 );
599 layout->addWidget( label, 3, 1 ); 617 layout->addWidget( label, 3, 1 );
600 mManagerEdit = new KLineEdit( tab2 ); 618 mManagerEdit = new KLineEdit( tab2 );
601 connect( mManagerEdit, SIGNAL( textChanged( const QString& ) ), 619 connect( mManagerEdit, SIGNAL( textChanged( const QString& ) ),
602 SLOT( textChanged( const QString& ) ) ); 620 SLOT( textChanged( const QString& ) ) );
603 label->setBuddy( mManagerEdit ); 621 label->setBuddy( mManagerEdit );
604//US layout->addMultiCellWidget( mManagerEdit, 0, 0, 4, 5 ); 622//US layout->addMultiCellWidget( mManagerEdit, 0, 0, 4, 5 );
605 layout->addWidget( mManagerEdit, 3, 2 ); 623 layout->addWidget( mManagerEdit, 3, 2 );
606 624
607 label = new QLabel( i18n( "Assistant's name:" ), tab2 ); 625 label = new QLabel( i18n( "Assistant's name:" ), tab2 );
608//US layout->addWidget( label, 1, 3 ); 626//US layout->addWidget( label, 1, 3 );
609 layout->addWidget( label, 4, 1 ); 627 layout->addWidget( label, 4, 1 );
610 mAssistantEdit = new KLineEdit( tab2 ); 628 mAssistantEdit = new KLineEdit( tab2 );
611 connect( mAssistantEdit, SIGNAL( textChanged( const QString& ) ), 629 connect( mAssistantEdit, SIGNAL( textChanged( const QString& ) ),
612 SLOT( textChanged( const QString& ) ) ); 630 SLOT( textChanged( const QString& ) ) );
613 label->setBuddy( mAssistantEdit ); 631 label->setBuddy( mAssistantEdit );
614//US layout->addMultiCellWidget( mAssistantEdit, 1, 1, 4, 5 ); 632//US layout->addMultiCellWidget( mAssistantEdit, 1, 1, 4, 5 );
615 layout->addWidget( mAssistantEdit, 4, 2 ); 633 layout->addWidget( mAssistantEdit, 4, 2 );
616 634
617 bar = new KSeparator( KSeparator::HLine, tab2 ); 635 bar = new KSeparator( KSeparator::HLine, tab2 );
618//US layout->addMultiCellWidget( bar, 3, 3, 0, 5 ); 636//US layout->addMultiCellWidget( bar, 3, 3, 0, 5 );
619 layout->addMultiCellWidget( bar, 5, 5, 0, 2 ); 637 layout->addMultiCellWidget( bar, 5, 5, 0, 2 );
620 638
621 ///////////////////////////////////////////////// 639 /////////////////////////////////////////////////
622 // Personal info 640 // Personal info
623 641
624 //label = new QLabel( tab2 ); 642 //label = new QLabel( tab2 );
625//US loadIcon call is ambiguous. Add one more parameter 643//US loadIcon call is ambiguous. Add one more parameter
626//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); 644//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) );
627 //label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); 645 //label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) );
628//US layout->addMultiCellWidget( label, 4, 5, 0, 0 ); 646//US layout->addMultiCellWidget( label, 4, 5, 0, 0 );
629 //layout->addMultiCellWidget( label, 6, 7, 0, 0 ); 647 //layout->addMultiCellWidget( label, 6, 7, 0, 0 );
630 648
631 649
632 int iii = 6; 650 int iii = 6;
633 651
634 if ( QApplication::desktop()->width() == 640 ) { 652 if ( QApplication::desktop()->width() == 640 ) {
635 QHBox * nbox = new QHBox ( tab2 ); 653 QHBox * nbox = new QHBox ( tab2 );
636 label = new QLabel( i18n( "Nick name:" )+" ", nbox ); 654 label = new QLabel( i18n( "Nick name:" )+" ", nbox );
637 mNicknameEdit = new KLineEdit( nbox ); 655 mNicknameEdit = new KLineEdit( nbox );
638 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ), 656 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ),
639 SLOT( textChanged( const QString& ) ) ); 657 SLOT( textChanged( const QString& ) ) );
640 label->setBuddy( mNicknameEdit ); 658 label->setBuddy( mNicknameEdit );
641 659
642 label = new QLabel( " "+i18n( "Spouse's name:" )+" ", nbox ); 660 label = new QLabel( " "+i18n( "Spouse's name:" )+" ", nbox );
643 mSpouseEdit = new KLineEdit( nbox ); 661 mSpouseEdit = new KLineEdit( nbox );
644 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ), 662 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ),
645 SLOT( textChanged( const QString& ) ) ); 663 SLOT( textChanged( const QString& ) ) );
646 label->setBuddy( mSpouseEdit ); 664 label->setBuddy( mSpouseEdit );
647 layout->addMultiCellWidget( nbox, iii, iii, 1, 2 ); 665 layout->addMultiCellWidget( nbox, iii, iii, 1, 2 );
648 ++iii; 666 ++iii;
649 667
650 } else { 668 } else {
651 label = new QLabel( i18n( "Nick name:" ), tab2 ); 669 label = new QLabel( i18n( "Nick name:" ), tab2 );
652 layout->addWidget( label, iii, 1 ); 670 layout->addWidget( label, iii, 1 );
653 mNicknameEdit = new KLineEdit( tab2 ); 671 mNicknameEdit = new KLineEdit( tab2 );
654 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ), 672 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ),
655 SLOT( textChanged( const QString& ) ) ); 673 SLOT( textChanged( const QString& ) ) );
656 label->setBuddy( mNicknameEdit ); 674 label->setBuddy( mNicknameEdit );
657 layout->addWidget( mNicknameEdit, iii, 2 ); 675 layout->addWidget( mNicknameEdit, iii, 2 );
658 ++iii; 676 ++iii;
659 677
660 label = new QLabel( i18n( "Spouse's name:" ), tab2 ); 678 label = new QLabel( i18n( "Spouse's name:" ), tab2 );
661 layout->addWidget( label, iii, 1 ); 679 layout->addWidget( label, iii, 1 );
662 mSpouseEdit = new KLineEdit( tab2 ); 680 mSpouseEdit = new KLineEdit( tab2 );
663 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ), 681 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ),
664 SLOT( textChanged( const QString& ) ) ); 682 SLOT( textChanged( const QString& ) ) );
665 label->setBuddy( mSpouseEdit ); 683 label->setBuddy( mSpouseEdit );
666 layout->addWidget( mSpouseEdit, iii, 2 ); 684 layout->addWidget( mSpouseEdit, iii, 2 );
667 ++iii; 685 ++iii;
668 } 686 }
669 687
670 label = new QLabel( i18n( "Children's names:" ), tab2 ); 688 label = new QLabel( i18n( "Children's names:" ), tab2 );
671 layout->addWidget( label, iii, 1 ); 689 layout->addWidget( label, iii, 1 );
672 mChildEdit = new KLineEdit( tab2 ); 690 mChildEdit = new KLineEdit( tab2 );
673 connect( mChildEdit, SIGNAL( textChanged( const QString& ) ), 691 connect( mChildEdit, SIGNAL( textChanged( const QString& ) ),
674 SLOT( textChanged( const QString& ) ) ); 692 SLOT( textChanged( const QString& ) ) );
675 label->setBuddy( mChildEdit ); 693 label->setBuddy( mChildEdit );
676 layout->addWidget( mChildEdit, iii, 2 ); 694 layout->addWidget( mChildEdit, iii, 2 );
677 ++iii; 695 ++iii;
678 if ( QApplication::desktop()->width() == 640 ) { 696 if ( QApplication::desktop()->width() == 640 ) {
679 QHBox * nbox = new QHBox ( tab2 ); 697 QHBox * nbox = new QHBox ( tab2 );
680 label = new QLabel( i18n( "Birthday:" )+" ", nbox ); 698 label = new QLabel( i18n( "Birthday:" )+" ", nbox );
681 mBirthdayPicker = new KDateEdit( nbox ); 699 mBirthdayPicker = new KDateEdit( nbox );
682 //mBirthdayPicker->toggleDateFormat(); 700 //mBirthdayPicker->toggleDateFormat();
683 mBirthdayPicker->setHandleInvalid( true ); 701 mBirthdayPicker->setHandleInvalid( true );
684 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ), 702 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ),
685 SLOT( dateChanged( QDate ) ) ); 703 SLOT( dateChanged( QDate ) ) );
686 704
687 label->setBuddy( mBirthdayPicker ); 705 label->setBuddy( mBirthdayPicker );
688 706
689 label = new QLabel( " "+i18n( "Anniversary:" )+" ", nbox ); 707 label = new QLabel( " "+i18n( "Anniversary:" )+" ", nbox );
690 mAnniversaryPicker = new KDateEdit( nbox ); 708 mAnniversaryPicker = new KDateEdit( nbox );
691 mAnniversaryPicker->setHandleInvalid( true ); 709 mAnniversaryPicker->setHandleInvalid( true );
692 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ), 710 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ),
693 SLOT( dateChanged( QDate ) ) ); 711 SLOT( dateChanged( QDate ) ) );
694 712
695 label->setBuddy( mAnniversaryPicker ); 713 label->setBuddy( mAnniversaryPicker );
696 layout->addMultiCellWidget( nbox, iii, iii, 1, 2 ); 714 layout->addMultiCellWidget( nbox, iii, iii, 1, 2 );
697 ++iii; 715 ++iii;
698 716
699 } else { 717 } else {
700 718
701 label = new QLabel( i18n( "Birthday:" ), tab2 ); 719 label = new QLabel( i18n( "Birthday:" ), tab2 );
702 layout->addWidget( label, iii, 1 ); 720 layout->addWidget( label, iii, 1 );
703 mBirthdayPicker = new KDateEdit( tab2 ); 721 mBirthdayPicker = new KDateEdit( tab2 );
704 //mBirthdayPicker->toggleDateFormat(); 722 //mBirthdayPicker->toggleDateFormat();
705 mBirthdayPicker->setHandleInvalid( true ); 723 mBirthdayPicker->setHandleInvalid( true );
706 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ), 724 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ),
707 SLOT( dateChanged( QDate ) ) ); 725 SLOT( dateChanged( QDate ) ) );
708 726
709 label->setBuddy( mBirthdayPicker ); 727 label->setBuddy( mBirthdayPicker );
710 layout->addWidget( mBirthdayPicker, iii, 2 ); 728 layout->addWidget( mBirthdayPicker, iii, 2 );
711 ++iii; 729 ++iii;
712 730
713 label = new QLabel( i18n( "Anniversary:" ), tab2 ); 731 label = new QLabel( i18n( "Anniversary:" ), tab2 );
714 layout->addWidget( label, iii, 1 ); 732 layout->addWidget( label, iii, 1 );
715 mAnniversaryPicker = new KDateEdit( tab2 ); 733 mAnniversaryPicker = new KDateEdit( tab2 );
716 mAnniversaryPicker->setHandleInvalid( true ); 734 mAnniversaryPicker->setHandleInvalid( true );
717 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ), 735 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ),
718 SLOT( dateChanged( QDate ) ) ); 736 SLOT( dateChanged( QDate ) ) );
719 737
720 label->setBuddy( mAnniversaryPicker ); 738 label->setBuddy( mAnniversaryPicker );
721 layout->addWidget( mAnniversaryPicker, iii, 2 ); 739 layout->addWidget( mAnniversaryPicker, iii, 2 );
722 ++iii; 740 ++iii;
723 741
724 } 742 }
725 743
726 label = new QLabel( i18n( "Gender:" ), tab2 ); 744 label = new QLabel( i18n( "Gender:" ), tab2 );
727 layout->addWidget( label, iii, 1 ); 745 layout->addWidget( label, iii, 1 );
728 mGenderBox = new QComboBox ( tab2 ); 746 mGenderBox = new QComboBox ( tab2 );
729 mGenderBox->insertItem ( i18n( "ALIEN (undefined)" )); 747 mGenderBox->insertItem ( i18n( "ALIEN (undefined)" ));
730 mGenderBox->insertItem ( i18n( "female" )); 748 mGenderBox->insertItem ( i18n( "female" ));
731 mGenderBox->insertItem ( i18n( "male" )); 749 mGenderBox->insertItem ( i18n( "male" ));
732 connect( mGenderBox, SIGNAL( activated ( const QString & ) ), 750 connect( mGenderBox, SIGNAL( activated ( const QString & ) ),
733 SLOT( textChanged( const QString& ) ) ); 751 SLOT( textChanged( const QString& ) ) );
734 label->setBuddy( mGenderBox ); 752 label->setBuddy( mGenderBox );
735 layout->addWidget( mGenderBox, iii, 2 ); 753 layout->addWidget( mGenderBox, iii, 2 );
736 ++iii; 754 ++iii;
737 // Build the layout and add to the tab widget 755 // Build the layout and add to the tab widget
738 layout->activate(); // required 756 layout->activate(); // required
739 757
740 mTabWidget->addTab( tab2, i18n( "&Details" ) ); 758 mTabWidget->addTab( tab2, i18n( "&Details" ) );
741} 759}
742 760
743void AddresseeEditorWidget::setupTab2_1() 761void AddresseeEditorWidget::setupTab2_1()
744{ 762{
745 // This is the Details tab 763 // This is the Details tab
746 QWidget *tab2_2 = new QWidget( mTabWidget ); 764 QWidget *tab2_2 = new QWidget( mTabWidget );
747 765
748 QGridLayout *layout = new QGridLayout( tab2_2, 1, 2 ); 766 QGridLayout *layout = new QGridLayout( tab2_2, 1, 2 );
749 layout->setMargin( KDialogBase::marginHintSmall() ); 767 layout->setMargin( KDialogBase::marginHintSmall() );
750 layout->setSpacing( KDialogBase::spacingHintSmall() ); 768 layout->setSpacing( KDialogBase::spacingHintSmall() );
751 769
752 QLabel *label; 770 QLabel *label;
753 KSeparator* bar; 771 KSeparator* bar;
754 772
755/*US 773/*US
756 /////////////////////// 774 ///////////////////////
757 // Office info 775 // Office info
758 776
759 // Department 777 // Department
760 label = new QLabel( tab2 ); 778 label = new QLabel( tab2 );
761//US loadIcon call is ambiguous. Add one more parameter 779//US loadIcon call is ambiguous. Add one more parameter
762//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop ) ); 780//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop ) );
763 label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop, 0 ) ); 781 label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop, 0 ) );
764 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 782 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
765 783
766 label = new QLabel( i18n( "Department:" ), tab2 ); 784 label = new QLabel( i18n( "Department:" ), tab2 );
767 layout->addWidget( label, 0, 1 ); 785 layout->addWidget( label, 0, 1 );
768 mDepartmentEdit = new KLineEdit( tab2 ); 786 mDepartmentEdit = new KLineEdit( tab2 );
769 connect( mDepartmentEdit, SIGNAL( textChanged( const QString& ) ), 787 connect( mDepartmentEdit, SIGNAL( textChanged( const QString& ) ),
770 SLOT( textChanged( const QString& ) ) ); 788 SLOT( textChanged( const QString& ) ) );
771 label->setBuddy( mDepartmentEdit ); 789 label->setBuddy( mDepartmentEdit );
772 layout->addWidget( mDepartmentEdit, 0, 2 ); 790 layout->addWidget( mDepartmentEdit, 0, 2 );
773 791
774 label = new QLabel( i18n( "Office:" ), tab2 ); 792 label = new QLabel( i18n( "Office:" ), tab2 );
775 layout->addWidget( label, 1, 1 ); 793 layout->addWidget( label, 1, 1 );
776 mOfficeEdit = new KLineEdit( tab2 ); 794 mOfficeEdit = new KLineEdit( tab2 );
777 connect( mOfficeEdit, SIGNAL( textChanged( const QString& ) ), 795 connect( mOfficeEdit, SIGNAL( textChanged( const QString& ) ),
778 SLOT( textChanged( const QString& ) ) ); 796 SLOT( textChanged( const QString& ) ) );
779 label->setBuddy( mOfficeEdit ); 797 label->setBuddy( mOfficeEdit );
780 layout->addWidget( mOfficeEdit, 1, 2 ); 798 layout->addWidget( mOfficeEdit, 1, 2 );
781 799
782 label = new QLabel( i18n( "Profession:" ), tab2 ); 800 label = new QLabel( i18n( "Profession:" ), tab2 );
783 layout->addWidget( label, 2, 1 ); 801 layout->addWidget( label, 2, 1 );
784 mProfessionEdit = new KLineEdit( tab2 ); 802 mProfessionEdit = new KLineEdit( tab2 );
785 connect( mProfessionEdit, SIGNAL( textChanged( const QString& ) ), 803 connect( mProfessionEdit, SIGNAL( textChanged( const QString& ) ),
786 SLOT( textChanged( const QString& ) ) ); 804 SLOT( textChanged( const QString& ) ) );
787 label->setBuddy( mProfessionEdit ); 805 label->setBuddy( mProfessionEdit );
788 layout->addWidget( mProfessionEdit, 2, 2 ); 806 layout->addWidget( mProfessionEdit, 2, 2 );
789 807
790 label = new QLabel( i18n( "Manager\'s name:" ), tab2 ); 808 label = new QLabel( i18n( "Manager\'s name:" ), tab2 );
791 layout->addWidget( label, 0, 3 ); 809 layout->addWidget( label, 0, 3 );
792 mManagerEdit = new KLineEdit( tab2 ); 810 mManagerEdit = new KLineEdit( tab2 );
793 connect( mManagerEdit, SIGNAL( textChanged( const QString& ) ), 811 connect( mManagerEdit, SIGNAL( textChanged( const QString& ) ),
794 SLOT( textChanged( const QString& ) ) ); 812 SLOT( textChanged( const QString& ) ) );
795 label->setBuddy( mManagerEdit ); 813 label->setBuddy( mManagerEdit );
796 layout->addMultiCellWidget( mManagerEdit, 0, 0, 4, 5 ); 814 layout->addMultiCellWidget( mManagerEdit, 0, 0, 4, 5 );
797 815
798 label = new QLabel( i18n( "Assistant's name:" ), tab2 ); 816 label = new QLabel( i18n( "Assistant's name:" ), tab2 );
799 layout->addWidget( label, 1, 3 ); 817 layout->addWidget( label, 1, 3 );
800 mAssistantEdit = new KLineEdit( tab2 ); 818 mAssistantEdit = new KLineEdit( tab2 );
801 connect( mAssistantEdit, SIGNAL( textChanged( const QString& ) ), 819 connect( mAssistantEdit, SIGNAL( textChanged( const QString& ) ),
802 SLOT( textChanged( const QString& ) ) ); 820 SLOT( textChanged( const QString& ) ) );
803 label->setBuddy( mAssistantEdit ); 821 label->setBuddy( mAssistantEdit );
804 layout->addMultiCellWidget( mAssistantEdit, 1, 1, 4, 5 ); 822 layout->addMultiCellWidget( mAssistantEdit, 1, 1, 4, 5 );
805 823
806 bar = new KSeparator( KSeparator::HLine, tab2 ); 824 bar = new KSeparator( KSeparator::HLine, tab2 );
807 layout->addMultiCellWidget( bar, 3, 3, 0, 5 ); 825 layout->addMultiCellWidget( bar, 3, 3, 0, 5 );
808 826
809 ///////////////////////////////////////////////// 827 /////////////////////////////////////////////////
810 // Personal info 828 // Personal info
811 829
812 label = new QLabel( tab2 ); 830 label = new QLabel( tab2 );
813//US loadIcon call is ambiguous. Add one more parameter 831//US loadIcon call is ambiguous. Add one more parameter
814//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); 832//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) );
815 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); 833 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) );
816 layout->addMultiCellWidget( label, 4, 5, 0, 0 ); 834 layout->addMultiCellWidget( label, 4, 5, 0, 0 );
817 835
818 label = new QLabel( i18n( "Nick name:" ), tab2 ); 836 label = new QLabel( i18n( "Nick name:" ), tab2 );
819 layout->addWidget( label, 4, 1 ); 837 layout->addWidget( label, 4, 1 );
820 mNicknameEdit = new KLineEdit( tab2 ); 838 mNicknameEdit = new KLineEdit( tab2 );
821 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ), 839 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ),
822 SLOT( textChanged( const QString& ) ) ); 840 SLOT( textChanged( const QString& ) ) );
823 label->setBuddy( mNicknameEdit ); 841 label->setBuddy( mNicknameEdit );
824 layout->addWidget( mNicknameEdit, 4, 2 ); 842 layout->addWidget( mNicknameEdit, 4, 2 );
825 843
826 label = new QLabel( i18n( "Spouse's name:" ), tab2 ); 844 label = new QLabel( i18n( "Spouse's name:" ), tab2 );
827 layout->addWidget( label, 5, 1 ); 845 layout->addWidget( label, 5, 1 );
828 mSpouseEdit = new KLineEdit( tab2 ); 846 mSpouseEdit = new KLineEdit( tab2 );
829 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ), 847 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ),
830 SLOT( textChanged( const QString& ) ) ); 848 SLOT( textChanged( const QString& ) ) );
831 label->setBuddy( mSpouseEdit ); 849 label->setBuddy( mSpouseEdit );
832 layout->addWidget( mSpouseEdit, 5, 2 ); 850 layout->addWidget( mSpouseEdit, 5, 2 );
833 851
834 label = new QLabel( i18n( "Birthday:" ), tab2 ); 852 label = new QLabel( i18n( "Birthday:" ), tab2 );
835 layout->addWidget( label, 4, 3 ); 853 layout->addWidget( label, 4, 3 );
836 mBirthdayPicker = new KDateEdit( tab2 ); 854 mBirthdayPicker = new KDateEdit( tab2 );
837 mBirthdayPicker->setHandleInvalid( true ); 855 mBirthdayPicker->setHandleInvalid( true );
838 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ), 856 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ),
839 SLOT( dateChanged( QDate ) ) ); 857 SLOT( dateChanged( QDate ) ) );
840 connect( mBirthdayPicker, SIGNAL( invalidDateEntered() ), 858 connect( mBirthdayPicker, SIGNAL( invalidDateEntered() ),
841 SLOT( invalidDate() ) ); 859 SLOT( invalidDate() ) );
842 connect( mBirthdayPicker, SIGNAL( textChanged( const QString& ) ), 860 connect( mBirthdayPicker, SIGNAL( textChanged( const QString& ) ),
843 SLOT( emitModified() ) ); 861 SLOT( emitModified() ) );
844 label->setBuddy( mBirthdayPicker ); 862 label->setBuddy( mBirthdayPicker );
845 layout->addWidget( mBirthdayPicker, 4, 4 ); 863 layout->addWidget( mBirthdayPicker, 4, 4 );
846 864
847 label = new QLabel( i18n( "Anniversary:" ), tab2 ); 865 label = new QLabel( i18n( "Anniversary:" ), tab2 );
848 layout->addWidget( label, 5, 3 ); 866 layout->addWidget( label, 5, 3 );
849 mAnniversaryPicker = new KDateEdit( tab2 ); 867 mAnniversaryPicker = new KDateEdit( tab2 );
850 mAnniversaryPicker->setHandleInvalid( true ); 868 mAnniversaryPicker->setHandleInvalid( true );
851 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ), 869 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ),
852 SLOT( dateChanged( QDate ) ) ); 870 SLOT( dateChanged( QDate ) ) );
853 connect( mAnniversaryPicker, SIGNAL( invalidDateEntered() ), 871 connect( mAnniversaryPicker, SIGNAL( invalidDateEntered() ),
854 SLOT( invalidDate() ) ); 872 SLOT( invalidDate() ) );
855 connect( mAnniversaryPicker, SIGNAL( textChanged( const QString& ) ), 873 connect( mAnniversaryPicker, SIGNAL( textChanged( const QString& ) ),
856 SLOT( emitModified() ) ); 874 SLOT( emitModified() ) );
857 label->setBuddy( mAnniversaryPicker ); 875 label->setBuddy( mAnniversaryPicker );
858 layout->addWidget( mAnniversaryPicker, 5, 4 ); 876 layout->addWidget( mAnniversaryPicker, 5, 4 );
859 877
860 bar = new KSeparator( KSeparator::HLine, tab2 ); 878 bar = new KSeparator( KSeparator::HLine, tab2 );
861 layout->addMultiCellWidget( bar, 6, 6, 0, 5 ); 879 layout->addMultiCellWidget( bar, 6, 6, 0, 5 );
862*/ 880*/
863 ////////////////////////////////////// 881 //////////////////////////////////////
864 // Notes 882 // Notes
865 label = new QLabel( i18n( "Note:" ), tab2_2 ); 883 label = new QLabel( i18n( "Note:" ), tab2_2 );
866 label->setAlignment( Qt::AlignTop | Qt::AlignLeft ); 884 label->setAlignment( Qt::AlignTop | Qt::AlignLeft );
867//US layout->addWidget( label, 7, 0 ); 885//US layout->addWidget( label, 7, 0 );
868 layout->addWidget( label, 0, 0 ); 886 layout->addWidget( label, 0, 0 );
869#ifndef KAB_EMBEDDED 887#ifndef KAB_EMBEDDED
870 mNoteEdit = new QTextEdit( tab2_2 ); 888 mNoteEdit = new QTextEdit( tab2_2 );
871 mNoteEdit->setWordWrap( QTextEdit::WidgetWidth ); 889 mNoteEdit->setWordWrap( QTextEdit::WidgetWidth );
872 mNoteEdit->setMinimumSize( mNoteEdit->sizeHint() ); 890 mNoteEdit->setMinimumSize( mNoteEdit->sizeHint() );
873#else //KAB_EMBEDDED 891#else //KAB_EMBEDDED
874 mNoteEdit = new QMultiLineEdit( tab2_2 ); 892 mNoteEdit = new QMultiLineEdit( tab2_2 );
875 mNoteEdit->setWordWrap( QMultiLineEdit::WidgetWidth ); 893 mNoteEdit->setWordWrap( QMultiLineEdit::WidgetWidth );
876 mNoteEdit->setMinimumSize( mNoteEdit->sizeHint() ); 894 mNoteEdit->setMinimumSize( mNoteEdit->sizeHint() );
877#endif //KAB_EMBEDDED 895#endif //KAB_EMBEDDED
878 896
879 connect( mNoteEdit, SIGNAL( textChanged() ), SLOT( emitModified() ) ); 897 connect( mNoteEdit, SIGNAL( textChanged() ), SLOT( emitModified() ) );
880 label->setBuddy( mNoteEdit ); 898 label->setBuddy( mNoteEdit );
881//US layout->addMultiCellWidget( mNoteEdit, 7, 7, 1, 5 ); 899//US layout->addMultiCellWidget( mNoteEdit, 7, 7, 1, 5 );
882 layout->addWidget( mNoteEdit, 1, 0); 900 layout->addWidget( mNoteEdit, 1, 0);
883 901
884 // Build the layout and add to the tab widget 902 // Build the layout and add to the tab widget
885 layout->activate(); // required 903 layout->activate(); // required
886 904
887 mTabWidget->addTab( tab2_2, i18n( "&Notes" ) ); 905 mTabWidget->addTab( tab2_2, i18n( "&Notes" ) );
888} 906}
889 907
890 908
891 909
892void AddresseeEditorWidget::setupTab3() 910void AddresseeEditorWidget::setupTab3()
893{ 911{
894 // This is the Misc tab 912 // This is the Misc tab
895 QWidget *tab3 = new QWidget( mTabWidget ); 913 QWidget *tab3 = new QWidget( mTabWidget );
896 914
897 QGridLayout *layout = new QGridLayout( tab3, 1, 1 ); 915 QGridLayout *layout = new QGridLayout( tab3, 1, 1 );
898 layout->setMargin( KDialogBase::marginHintSmall() ); 916 layout->setMargin( KDialogBase::marginHintSmall() );
899 layout->setSpacing( KDialogBase::spacingHintSmall() ); 917 layout->setSpacing( KDialogBase::spacingHintSmall() );
900//US layout->setColStretch( 2, 1 ); 918//US layout->setColStretch( 2, 1 );
901 919
902 ////////////////////////////////////// 920 //////////////////////////////////////
903 // Geo 921 // Geo
904 mGeoWidget = new GeoWidget( tab3 ); 922 mGeoWidget = new GeoWidget( tab3 );
905 // mGeoWidget->setMinimumSize( mGeoWidget->sizeHint() ); 923 // mGeoWidget->setMinimumSize( mGeoWidget->sizeHint() );
906 connect( mGeoWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 924 connect( mGeoWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
907 layout->addWidget( mGeoWidget, 0, 0 ); 925 layout->addWidget( mGeoWidget, 0, 0 );
908/*US 926/*US
909 ////////////////////////////////////// 927 //////////////////////////////////////
910 // Sound 928 // Sound
911#ifndef KAB_EMBEDDED 929#ifndef KAB_EMBEDDED
912 mSoundWidget = new SoundWidget( tab3 ); 930 mSoundWidget = new SoundWidget( tab3 );
913 mSoundWidget->setMinimumSize( mSoundWidget->sizeHint() ); 931 mSoundWidget->setMinimumSize( mSoundWidget->sizeHint() );
914 connect( mSoundWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 932 connect( mSoundWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
915 layout->addWidget( mSoundWidget, 0, 1, Qt::AlignTop ); 933 layout->addWidget( mSoundWidget, 0, 1, Qt::AlignTop );
916#else //KAB_EMBEDDED 934#else //KAB_EMBEDDED
917qDebug("AddresseeEditorWidget::setupTab2 sound part is not supported = has to be changed"); 935qDebug("AddresseeEditorWidget::setupTab2 sound part is not supported = has to be changed");
918#endif //KAB_EMBEDDED 936#endif //KAB_EMBEDDED
919 937
920 ////////////////////////////////////// 938 //////////////////////////////////////
921 // Images 939 // Images
922 mImageWidget = new ImageWidget( tab3 ); 940 mImageWidget = new ImageWidget( tab3 );
923 mImageWidget->setMinimumSize( mImageWidget->sizeHint() ); 941 mImageWidget->setMinimumSize( mImageWidget->sizeHint() );
924 connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 942 connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
925 layout->addWidget( mImageWidget, 1, 0, Qt::AlignTop ); 943 layout->addWidget( mImageWidget, 1, 0, Qt::AlignTop );
926*/ 944*/
927//US 945//US
928/* 946/*
929 KSeparator* bar = new KSeparator( KSeparator::HLine, tab3 ); 947 KSeparator* bar = new KSeparator( KSeparator::HLine, tab3 );
930 layout->addMultiCellWidget( bar, 1, 1, 0, 0 ); 948 layout->addMultiCellWidget( bar, 1, 1, 0, 0 );
931*/ 949*/
932 ////////////////////////////////////// 950 //////////////////////////////////////
933 // Keys 951 // Keys
934 mKeyWidget = new KeyWidget( tab3 ); 952 mKeyWidget = new KeyWidget( tab3 );
935 //mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() ); 953 //mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() );
936 connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 954 connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
937//US layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop ); 955//US layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop );
938 layout->addWidget( mKeyWidget, 1, 0 ); 956 layout->addWidget( mKeyWidget, 1, 0 );
939 957
940 mTabWidget->addTab( tab3, i18n( "&Misc" ) ); 958 mTabWidget->addTab( tab3, i18n( "&Misc" ) );
941} 959}
942 960
943void AddresseeEditorWidget::setupTab3_1() 961void AddresseeEditorWidget::setupTab3_1()
944{ 962{
945 // This is the Misc tab 963 // This is the Misc tab
946 QWidget *tab3 = new QWidget( mTabWidget ); 964 QWidget *tab3 = new QWidget( mTabWidget );
947 965
948//US QGridLayout *layout = new QGridLayout( tab3, 2, 3 ); 966//US QGridLayout *layout = new QGridLayout( tab3, 2, 3 );
949 QGridLayout *layout = new QGridLayout( tab3, 1, 1 ); 967 QGridLayout *layout = new QGridLayout( tab3, 1, 1 );
950 layout->setMargin( KDialogBase::marginHint() ); 968 layout->setMargin( KDialogBase::marginHint() );
951 layout->setSpacing( KDialogBase::spacingHint() ); 969 layout->setSpacing( KDialogBase::spacingHint() );
952//US layout->setColStretch( 2, 1 ); 970//US layout->setColStretch( 2, 1 );
953 971
954/*US 972/*US
955 ////////////////////////////////////// 973 //////////////////////////////////////
956 // Geo 974 // Geo
957 mGeoWidget = new GeoWidget( tab3 ); 975 mGeoWidget = new GeoWidget( tab3 );
958 mGeoWidget->setMinimumSize( mGeoWidget->sizeHint() ); 976 mGeoWidget->setMinimumSize( mGeoWidget->sizeHint() );
959 connect( mGeoWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 977 connect( mGeoWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
960 layout->addWidget( mGeoWidget, 0, 0, Qt::AlignTop ); 978 layout->addWidget( mGeoWidget, 0, 0, Qt::AlignTop );
961*/ 979*/
962 ////////////////////////////////////// 980 //////////////////////////////////////
963 // Sound 981 // Sound
964#ifndef KAB_EMBEDDED 982#ifndef KAB_EMBEDDED
965 mSoundWidget = new SoundWidget( tab3 ); 983 mSoundWidget = new SoundWidget( tab3 );
966 mSoundWidget->setMinimumSize( mSoundWidget->sizeHint() ); 984 mSoundWidget->setMinimumSize( mSoundWidget->sizeHint() );
967 connect( mSoundWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 985 connect( mSoundWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
968 layout->addWidget( mSoundWidget, 0, 1, Qt::AlignTop ); 986 layout->addWidget( mSoundWidget, 0, 1, Qt::AlignTop );
969#else //KAB_EMBEDDED 987#else //KAB_EMBEDDED
970//US qDebug("AddresseeEditorWidget::setupTab2 sound part is not supported = has to be changed"); 988//US qDebug("AddresseeEditorWidget::setupTab2 sound part is not supported = has to be changed");
971#endif //KAB_EMBEDDED 989#endif //KAB_EMBEDDED
972 990
973 ////////////////////////////////////// 991 //////////////////////////////////////
974 // Images 992 // Images
975 mImageWidget = new ImageWidget( tab3 ); 993 mImageWidget = new ImageWidget( tab3 );
976 mImageWidget->setMinimumSize( mImageWidget->sizeHint() ); 994 mImageWidget->setMinimumSize( mImageWidget->sizeHint() );
977 connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 995 connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
978 layout->addWidget( mImageWidget, 0, 0, Qt::AlignTop ); 996 layout->addWidget( mImageWidget, 0, 0, Qt::AlignTop );
979/*US 997/*US
980 ////////////////////////////////////// 998 //////////////////////////////////////
981 // Keys 999 // Keys
982 mKeyWidget = new KeyWidget( tab3 ); 1000 mKeyWidget = new KeyWidget( tab3 );
983 mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() ); 1001 mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() );
984 connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 1002 connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
985 layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop ); 1003 layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop );
986*/ 1004*/
987 mTabWidget->addTab( tab3, i18n( "&Images" ) ); 1005 mTabWidget->addTab( tab3, i18n( "&Images" ) );
988} 1006}
989 1007
990 1008
991void AddresseeEditorWidget::load() 1009void AddresseeEditorWidget::load()
992{ 1010{
993 1011
994 // Block signals in case anything tries to emit modified 1012 // Block signals in case anything tries to emit modified
995 // CS: This doesn't seem to work. 1013 // CS: This doesn't seem to work.
996 bool block = signalsBlocked(); 1014 bool block = signalsBlocked();
997 blockSignals( true ); 1015 blockSignals( true );
998 mBlockSignals = true; // used for internal signal blocking 1016 mBlockSignals = true; // used for internal signal blocking
999 1017
1000 mNameEdit->setText( mAddressee.assembledName() ); 1018 mNameEdit->setText( mAddressee.assembledName() );
1001 1019
1002 if ( mAddressee.formattedName().isEmpty() ) { 1020 if ( mAddressee.formattedName().isEmpty() ) {
1003//US KConfig config( "kaddressbookrc" ); 1021//US KConfig config( "kaddressbookrc" );
1004 KConfig config( locateLocal("config", "kabcrc") ); 1022 KConfig config( locateLocal("config", "kabcrc") );
1005 config.setGroup( "General" ); 1023 config.setGroup( "General" );
1006 mFormattedNameType = config.readNumEntry( "FormattedNameType", 1 ); 1024 mFormattedNameType = config.readNumEntry( "FormattedNameType", 1 );
1007 mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); 1025 mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) );
1008 } else {; 1026 } else {;
1009 if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::SimpleName ) ) 1027 if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::SimpleName ) )
1010 mFormattedNameType = NameEditDialog::SimpleName; 1028 mFormattedNameType = NameEditDialog::SimpleName;
1011 else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::FullName ) ) 1029 else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::FullName ) )
1012 mFormattedNameType = NameEditDialog::FullName; 1030 mFormattedNameType = NameEditDialog::FullName;
1013 else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::ReverseName ) ) 1031 else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::ReverseName ) )
1014 mFormattedNameType = NameEditDialog::ReverseName; 1032 mFormattedNameType = NameEditDialog::ReverseName;
1015 else 1033 else
1016 mFormattedNameType = NameEditDialog::CustomName; 1034 mFormattedNameType = NameEditDialog::CustomName;
1017 } 1035 }
1018 1036
1019 mFormattedNameLabel->setText( mAddressee.formattedName() ); 1037 mFormattedNameLabel->setText( mAddressee.formattedName() );
1020 1038
1021 mAConfig->setUid( mAddressee.uid() ); 1039 mAConfig->setUid( mAddressee.uid() );
1022 if ( mAConfig->automaticNameParsing() ) { 1040 if ( mAConfig->automaticNameParsing() ) {
1023 mNameLabel->hide(); 1041 mNameLabel->hide();
1024 mNameEdit->show(); 1042 mNameEdit->show();
1025 } else { 1043 } else {
1026 mNameEdit->hide(); 1044 mNameEdit->hide();
1027 mNameLabel->setText( mNameEdit->text() ); 1045 mNameLabel->setText( mNameEdit->text() );
1028 mNameLabel->show(); 1046 mNameLabel->show();
1029 } 1047 }
1030 1048
1031 mRoleEdit->setText( mAddressee.role() ); 1049 mRoleEdit->setText( mAddressee.role() );
1032 mOrgEdit->setText( mAddressee.organization() ); 1050 mOrgEdit->setText( mAddressee.organization() );
1033 1051
1034//US mURLEdit->setURL( mAddressee.url().url() ); 1052//US mURLEdit->setURL( mAddressee.url().url() );
1035 mURLEdit->setText( mAddressee.url().prettyURL() ); 1053 mURLEdit->setText( mAddressee.url().prettyURL() );
1036//US?? mURLEdit->home( false ); 1054//US?? mURLEdit->home( false );
1037 1055
1038 // mNoteEdit->setText( mAddressee.note() ); 1056 // mNoteEdit->setText( mAddressee.note() );
1039 mNoteEdit->setText( mAddressee.note() ); 1057 mNoteEdit->setText( mAddressee.note() );
1040 mEmailWidget->setEmails( mAddressee.emails() ); 1058 mEmailWidget->setEmails( mAddressee.emails() );
1041 mPhoneEditWidget->setPhoneNumbers( mAddressee.phoneNumbers() ); 1059 mPhoneEditWidget->setPhoneNumbers( mAddressee.phoneNumbers() );
1042 mAddressEditWidget->setAddresses( mAddressee, mAddressee.addresses() ); 1060 mAddressEditWidget->setAddresses( mAddressee, mAddressee.addresses() );
1043 mBirthdayPicker->setDate( mAddressee.birthday().date() ); 1061 mBirthdayPicker->setDate( mAddressee.birthday().date() );
1044 1062
1045//US mAnniversaryPicker->setDate( QDate::fromString( mAddressee.custom( 1063//US mAnniversaryPicker->setDate( QDate::fromString( mAddressee.custom(
1046//US "KADDRESSBOOK", "X-Anniversary" ), Qt::ISODate) ); 1064//US "KADDRESSBOOK", "X-Anniversary" ), Qt::ISODate) );
1047 QDate dt = KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ), 1065 QDate dt = KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ),
1048 "%Y-%m-%d"); // = Qt::ISODate 1066 "%Y-%m-%d"); // = Qt::ISODate
1049 mAnniversaryPicker->setDate( dt ); 1067 mAnniversaryPicker->setDate( dt );
1050 1068
1051 1069
1052 mNicknameEdit->setText( mAddressee.nickName() ); 1070 mNicknameEdit->setText( mAddressee.nickName() );
1053 mCategoryEdit->setText( mAddressee.categories().join( "," ) ); 1071 mCategoryEdit->setText( mAddressee.categories().join( "," ) );
1054 1072
1055 mGeoWidget->setGeo( mAddressee.geo() ); 1073 mGeoWidget->setGeo( mAddressee.geo() );
1056 mImageWidget->setPhoto( mAddressee.photo() ); 1074 mImageWidget->setPhoto( mAddressee.photo() );
1057 mImageWidget->setLogo( mAddressee.logo() ); 1075 mImageWidget->setLogo( mAddressee.logo() );
1058 mKeyWidget->setKeys( mAddressee.keys() ); 1076 mKeyWidget->setKeys( mAddressee.keys() );
1059 mSecrecyWidget->setSecrecy( mAddressee.secrecy() ); 1077 mSecrecyWidget->setSecrecy( mAddressee.secrecy() );
1060#ifndef KAB_EMBEDDED 1078#ifndef KAB_EMBEDDED
1061 mSoundWidget->setSound( mAddressee.sound() ); 1079 mSoundWidget->setSound( mAddressee.sound() );
1062#else //KAB_EMBEDDED 1080#else //KAB_EMBEDDED
1063//US qDebug("AddresseeEditorWidget::load has to be changed 2"); 1081//US qDebug("AddresseeEditorWidget::load has to be changed 2");
1064#endif //KAB_EMBEDDED 1082#endif //KAB_EMBEDDED
1065 1083
1066 // Load customs 1084 // Load customs
1067 mIMAddressEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-IMAddress" ) ); 1085 mIMAddressEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-IMAddress" ) );
1068 mSpouseEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ) ); 1086 mSpouseEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ) );
1069 mChildEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Children" ) ); 1087 mChildEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Children" ) );
1070 mManagerEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-ManagersName" ) ); 1088 mManagerEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-ManagersName" ) );
1071 mAssistantEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-AssistantsName" ) ); 1089 mAssistantEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-AssistantsName" ) );
1072 mDepartmentEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Department" ) ); 1090 mDepartmentEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Department" ) );
1073 mOfficeEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Office" ) ); 1091 mOfficeEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Office" ) );
1074 mProfessionEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Profession" ) ); 1092 mProfessionEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Profession" ) );
1075 QString gen = mAddressee.custom( "KADDRESSBOOK", "X-Gender" ); 1093 QString gen = mAddressee.custom( "KADDRESSBOOK", "X-Gender" );
1076 if ( gen == "female" ) 1094 if ( gen == "female" )
1077 mGenderBox->setCurrentItem ( 1 ); 1095 mGenderBox->setCurrentItem ( 1 );
1078 else if ( gen == "male" ) 1096 else if ( gen == "male" )
1079 mGenderBox->setCurrentItem ( 2 ); 1097 mGenderBox->setCurrentItem ( 2 );
1080 else 1098 else
1081 mGenderBox->setCurrentItem ( 0 ); 1099 mGenderBox->setCurrentItem ( 0 );
1082 blockSignals( block ); 1100 blockSignals( block );
1083 mBlockSignals = false; 1101 mBlockSignals = false;
1084 1102
1085 mDirty = false; 1103 mDirty = false;
1086} 1104}
1087 1105
1088void AddresseeEditorWidget::save() 1106void AddresseeEditorWidget::save()
1089{ 1107{
1090 if ( !dirty() ) { 1108 if ( !dirty() ) {
1091 return; 1109 return;
1092 } 1110 }
1093 1111
1094 mAddressee.setRevision( QDateTime::currentDateTime() ); 1112 mAddressee.setRevision( QDateTime::currentDateTime() );
1095 1113
1096 mAddressee.setRole( mRoleEdit->text() ); 1114 mAddressee.setRole( mRoleEdit->text() );
1097 mAddressee.setOrganization( mOrgEdit->text() ); 1115 mAddressee.setOrganization( mOrgEdit->text() );
1098 mAddressee.setUrl( KURL( mURLEdit->text() ) ); 1116 mAddressee.setUrl( KURL( mURLEdit->text() ) );
1099 mAddressee.setNote( mNoteEdit->text() ); 1117 mAddressee.setNote( mNoteEdit->text() );
1100 if ( mBirthdayPicker->inputIsValid() ) { 1118 if ( mBirthdayPicker->inputIsValid() ) {
1101 QDate da = mBirthdayPicker->date(); 1119 QDate da = mBirthdayPicker->date();
1102 mAddressee.setBirthday( QDateTime( da ) ); 1120 mAddressee.setBirthday( QDateTime( da ) );
1103 //qDebug("bday %s ",da.toString().latin1()); 1121 //qDebug("bday %s ",da.toString().latin1());
1104 } 1122 }
1105 else { 1123 else {
1106 mAddressee.setBirthday( QDateTime() ); 1124 mAddressee.setBirthday( QDateTime() );
1107 mBirthdayPicker->clear(); 1125 mBirthdayPicker->clear();
1108 } 1126 }
1109 mAddressee.setNickName( mNicknameEdit->text() ); 1127 mAddressee.setNickName( mNicknameEdit->text() );
1110 mAddressee.setCategories( QStringList::split( ",", mCategoryEdit->text() ) ); 1128 mAddressee.setCategories( QStringList::split( ",", mCategoryEdit->text() ) );
1111 1129
1112 mAddressee.setGeo( mGeoWidget->geo() ); 1130 mAddressee.setGeo( mGeoWidget->geo() );
1113 mAddressee.setPhoto( mImageWidget->photo() ); 1131 mAddressee.setPhoto( mImageWidget->photo() );
1114 mAddressee.setLogo( mImageWidget->logo() ); 1132 mAddressee.setLogo( mImageWidget->logo() );
1115 mAddressee.setKeys( mKeyWidget->keys() ); 1133 mAddressee.setKeys( mKeyWidget->keys() );
1116#ifndef KAB_EMBEDDED 1134#ifndef KAB_EMBEDDED
1117 mAddressee.setSound( mSoundWidget->sound() ); 1135 mAddressee.setSound( mSoundWidget->sound() );
1118#else //KAB_EMBEDDED 1136#else //KAB_EMBEDDED
1119//US qDebug("AddresseeEditorWidget::save sound not supported"); 1137//US qDebug("AddresseeEditorWidget::save sound not supported");
1120#endif //KAB_EMBEDDED 1138#endif //KAB_EMBEDDED
1121 mAddressee.setSecrecy( mSecrecyWidget->secrecy() ); 1139 mAddressee.setSecrecy( mSecrecyWidget->secrecy() );
1122 1140
1123 // save custom fields 1141 // save custom fields
1124 mAddressee.insertCustom( "KADDRESSBOOK", "X-IMAddress", mIMAddressEdit->text() ); 1142 mAddressee.insertCustom( "KADDRESSBOOK", "X-IMAddress", mIMAddressEdit->text() );
1125 mAddressee.insertCustom( "KADDRESSBOOK", "X-SpousesName", mSpouseEdit->text() ); 1143 mAddressee.insertCustom( "KADDRESSBOOK", "X-SpousesName", mSpouseEdit->text() );
1126 mAddressee.insertCustom( "KADDRESSBOOK", "X-Children", mChildEdit->text() ); 1144 mAddressee.insertCustom( "KADDRESSBOOK", "X-Children", mChildEdit->text() );
1127 mAddressee.insertCustom( "KADDRESSBOOK", "X-ManagersName", mManagerEdit->text() ); 1145 mAddressee.insertCustom( "KADDRESSBOOK", "X-ManagersName", mManagerEdit->text() );
1128 mAddressee.insertCustom( "KADDRESSBOOK", "X-AssistantsName", mAssistantEdit->text() ); 1146 mAddressee.insertCustom( "KADDRESSBOOK", "X-AssistantsName", mAssistantEdit->text() );
1129 mAddressee.insertCustom( "KADDRESSBOOK", "X-Department", mDepartmentEdit->text() ); 1147 mAddressee.insertCustom( "KADDRESSBOOK", "X-Department", mDepartmentEdit->text() );
1130 mAddressee.insertCustom( "KADDRESSBOOK", "X-Office", mOfficeEdit->text() ); 1148 mAddressee.insertCustom( "KADDRESSBOOK", "X-Office", mOfficeEdit->text() );
1131 mAddressee.insertCustom( "KADDRESSBOOK", "X-Profession", mProfessionEdit->text() ); 1149 mAddressee.insertCustom( "KADDRESSBOOK", "X-Profession", mProfessionEdit->text() );
1132 if ( mAnniversaryPicker->inputIsValid() ) { 1150 if ( mAnniversaryPicker->inputIsValid() ) {
1133 QString dt = KGlobal::locale()->formatDate(mAnniversaryPicker->date(), true, KLocale::ISODate); 1151 QString dt = KGlobal::locale()->formatDate(mAnniversaryPicker->date(), true, KLocale::ISODate);
1134 mAddressee.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); 1152 mAddressee.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt);
1135 } 1153 }
1136 else { 1154 else {
1137 mAddressee.removeCustom( "KADDRESSBOOK", "X-Anniversary" ); 1155 mAddressee.removeCustom( "KADDRESSBOOK", "X-Anniversary" );
1138 mAnniversaryPicker->clear(); 1156 mAnniversaryPicker->clear();
1139 } 1157 }
1140 int gen = mGenderBox->currentItem (); 1158 int gen = mGenderBox->currentItem ();
1141 if ( gen == 1 ) 1159 if ( gen == 1 )
1142 mAddressee.insertCustom( "KADDRESSBOOK", "X-Gender", "female"); 1160 mAddressee.insertCustom( "KADDRESSBOOK", "X-Gender", "female");
1143 else if ( gen == 2 ) 1161 else if ( gen == 2 )
1144 mAddressee.insertCustom( "KADDRESSBOOK", "X-Gender", "male"); 1162 mAddressee.insertCustom( "KADDRESSBOOK", "X-Gender", "male");
1145 else 1163 else
1146 mAddressee.removeCustom( "KADDRESSBOOK", "X-Gender" ); 1164 mAddressee.removeCustom( "KADDRESSBOOK", "X-Gender" );
1147 1165
1148 // Save the email addresses 1166 // Save the email addresses
1149 QStringList emails = mAddressee.emails(); 1167 QStringList emails = mAddressee.emails();
1150 QStringList::Iterator iter; 1168 QStringList::Iterator iter;
1151 for ( iter = emails.begin(); iter != emails.end(); ++iter ) 1169 for ( iter = emails.begin(); iter != emails.end(); ++iter )
1152 mAddressee.removeEmail( *iter ); 1170 mAddressee.removeEmail( *iter );
1153 1171
1154 emails = mEmailWidget->emails(); 1172 emails = mEmailWidget->emails();
1155 bool first = true; 1173 bool first = true;
1156 for ( iter = emails.begin(); iter != emails.end(); ++iter ) { 1174 for ( iter = emails.begin(); iter != emails.end(); ++iter ) {
1157 mAddressee.insertEmail( *iter, first ); 1175 mAddressee.insertEmail( *iter, first );
1158 first = false; 1176 first = false;
1159 } 1177 }
1160 1178
1161 // Save the phone numbers 1179 // Save the phone numbers
1162 KABC::PhoneNumber::List phoneNumbers; 1180 KABC::PhoneNumber::List phoneNumbers;
1163 KABC::PhoneNumber::List::Iterator phoneIter; 1181 KABC::PhoneNumber::List::Iterator phoneIter;
1164 phoneNumbers = mAddressee.phoneNumbers(); 1182 phoneNumbers = mAddressee.phoneNumbers();
1165 for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end(); 1183 for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end();
1166 ++phoneIter ) 1184 ++phoneIter )
1167 mAddressee.removePhoneNumber( *phoneIter ); 1185 mAddressee.removePhoneNumber( *phoneIter );
1168 1186
1169 phoneNumbers = mPhoneEditWidget->phoneNumbers(); 1187 phoneNumbers = mPhoneEditWidget->phoneNumbers();
1170 for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end(); 1188 for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end();
1171 ++phoneIter ) 1189 ++phoneIter )
1172 mAddressee.insertPhoneNumber( *phoneIter ); 1190 mAddressee.insertPhoneNumber( *phoneIter );
1173 1191
1174 // Save the addresses 1192 // Save the addresses
1175 KABC::Address::List addresses; 1193 KABC::Address::List addresses;
1176 KABC::Address::List::Iterator addressIter; 1194 KABC::Address::List::Iterator addressIter;
1177 addresses = mAddressee.addresses(); 1195 addresses = mAddressee.addresses();
1178 for ( addressIter = addresses.begin(); addressIter != addresses.end(); 1196 for ( addressIter = addresses.begin(); addressIter != addresses.end();
1179 ++addressIter ) 1197 ++addressIter )
1180 mAddressee.removeAddress( *addressIter ); 1198 mAddressee.removeAddress( *addressIter );
1181 1199
1182 addresses = mAddressEditWidget->addresses(); 1200 addresses = mAddressEditWidget->addresses();
1183 for ( addressIter = addresses.begin(); addressIter != addresses.end(); 1201 for ( addressIter = addresses.begin(); addressIter != addresses.end();
1184 ++addressIter ) 1202 ++addressIter )
1185 mAddressee.insertAddress( *addressIter ); 1203 mAddressee.insertAddress( *addressIter );
1186 mDirty = false; 1204 mDirty = false;
1187} 1205}
1188 1206
1189bool AddresseeEditorWidget::dirty() 1207bool AddresseeEditorWidget::dirty()
1190{ 1208{
1191 1209
1192 if ( ! mDirty ) { 1210 if ( ! mDirty ) {
1193 if ( mBirthdayPicker->inputIsValid() ) { 1211 if ( mBirthdayPicker->inputIsValid() ) {
1194 QDate da = mBirthdayPicker->date(); 1212 QDate da = mBirthdayPicker->date();
1195 if ( !(da == mAddressee.birthday().date())) 1213 if ( !(da == mAddressee.birthday().date()))
1196 mDirty = true; 1214 mDirty = true;
1197 } 1215 }
1198 else { 1216 else {
1199 mBirthdayPicker->clear(); 1217 mBirthdayPicker->clear();
1200 } 1218 }
1201 if ( mAnniversaryPicker->inputIsValid() ) { 1219 if ( mAnniversaryPicker->inputIsValid() ) {
1202 QDate da = mAnniversaryPicker->date(); 1220 QDate da = mAnniversaryPicker->date();
1203 if ( da != KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ), 1221 if ( da != KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ),
1204 "%Y-%m-%d")) 1222 "%Y-%m-%d"))
1205 mDirty = true; 1223 mDirty = true;
1206 } 1224 }
1207 else { 1225 else {
1208 mAnniversaryPicker->clear(); 1226 mAnniversaryPicker->clear();
1209 } 1227 }
1210 } 1228 }
1211 return mDirty; 1229 return mDirty;
1212} 1230}
1213 1231
1214void AddresseeEditorWidget::nameTextChanged( const QString &text ) 1232void AddresseeEditorWidget::nameTextChanged( const QString &text )
1215{ 1233{
1216 if ( mBlockSignals ) 1234 if ( mBlockSignals )
1217 return; 1235 return;
1218 // use the addressee class to parse the name for us 1236 // use the addressee class to parse the name for us
1219 mAConfig->setUid( mAddressee.uid() ); 1237 mAConfig->setUid( mAddressee.uid() );
1220 if ( mAConfig->automaticNameParsing() ) { 1238 if ( mAConfig->automaticNameParsing() ) {
1221 if ( !mAddressee.formattedName().isEmpty() ) { 1239 if ( !mAddressee.formattedName().isEmpty() ) {
1222 QString fn = mAddressee.formattedName(); 1240 QString fn = mAddressee.formattedName();
1223 mAddressee.setNameFromString( text ); 1241 mAddressee.setNameFromString( text );
1224 mAddressee.setFormattedName( fn ); 1242 mAddressee.setFormattedName( fn );
1225 } else { 1243 } else {
1226 // use extra addressee to avoid a formatted name assignment 1244 // use extra addressee to avoid a formatted name assignment
1227 Addressee addr; 1245 Addressee addr;
1228 addr.setNameFromString( text ); 1246 addr.setNameFromString( text );
1229 mAddressee.setPrefix( addr.prefix() ); 1247 mAddressee.setPrefix( addr.prefix() );
1230 mAddressee.setGivenName( addr.givenName() ); 1248 mAddressee.setGivenName( addr.givenName() );
1231 mAddressee.setAdditionalName( addr.additionalName() ); 1249 mAddressee.setAdditionalName( addr.additionalName() );
1232 mAddressee.setFamilyName( addr.familyName() ); 1250 mAddressee.setFamilyName( addr.familyName() );
1233 mAddressee.setSuffix( addr.suffix() ); 1251 mAddressee.setSuffix( addr.suffix() );
1234 } 1252 }
1235 } 1253 }
1236 nameBoxChanged(); 1254 nameBoxChanged();
1237 1255
1238 1256
1239 emitModified(); 1257 emitModified();
1240} 1258}
1241 1259
1242void AddresseeEditorWidget::nameBoxChanged() 1260void AddresseeEditorWidget::nameBoxChanged()
1243{ 1261{
1244 KABC::Addressee addr; 1262 KABC::Addressee addr;
1245 mAConfig->setUid( mAddressee.uid() ); 1263 mAConfig->setUid( mAddressee.uid() );
1246 if ( mAConfig->automaticNameParsing() ) { 1264 if ( mAConfig->automaticNameParsing() ) {
1247 addr.setNameFromString( mNameEdit->text() ); 1265 addr.setNameFromString( mNameEdit->text() );
1248 mNameLabel->hide(); 1266 mNameLabel->hide();
1249 mNameEdit->show(); 1267 mNameEdit->show();
1250 } else { 1268 } else {
1251 addr = mAddressee; 1269 addr = mAddressee;
1252 mNameEdit->hide(); 1270 mNameEdit->hide();
1253 mNameLabel->setText( mNameEdit->text() ); 1271 mNameLabel->setText( mNameEdit->text() );
1254 mNameLabel->show(); 1272 mNameLabel->show();
1255 } 1273 }
1256 1274
1257 if ( mFormattedNameType != NameEditDialog::CustomName ) { 1275 if ( mFormattedNameType != NameEditDialog::CustomName ) {
1258 mFormattedNameLabel->setText( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); 1276 mFormattedNameLabel->setText( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) );
1259 mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); 1277 mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) );
1260 } 1278 }
1261} 1279}
1262 1280
1263void AddresseeEditorWidget::nameButtonClicked() 1281void AddresseeEditorWidget::nameButtonClicked()
1264{ 1282{
1265 // show the name dialog. 1283 // show the name dialog.
1266 NameEditDialog dialog( mAddressee, mFormattedNameType, this ); 1284 NameEditDialog dialog( mAddressee, mFormattedNameType, this );
1267 1285
1268 if ( KApplication::execDialog( &dialog) ) { 1286 if ( KApplication::execDialog( &dialog) ) {
1269 if ( dialog.changed() ) { 1287 if ( dialog.changed() ) {
1270 mAddressee.setFamilyName( dialog.familyName() ); 1288 mAddressee.setFamilyName( dialog.familyName() );
1271 mAddressee.setGivenName( dialog.givenName() ); 1289 mAddressee.setGivenName( dialog.givenName() );
1272 mAddressee.setPrefix( dialog.prefix() ); 1290 mAddressee.setPrefix( dialog.prefix() );
1273 mAddressee.setSuffix( dialog.suffix() ); 1291 mAddressee.setSuffix( dialog.suffix() );
1274 mAddressee.setAdditionalName( dialog.additionalName() ); 1292 mAddressee.setAdditionalName( dialog.additionalName() );
1275 mFormattedNameType = dialog.formattedNameType(); 1293 mFormattedNameType = dialog.formattedNameType();
1276 if ( mFormattedNameType == NameEditDialog::CustomName ) { 1294 if ( mFormattedNameType == NameEditDialog::CustomName ) {
1277 mFormattedNameLabel->setText( dialog.customFormattedName() ); 1295 mFormattedNameLabel->setText( dialog.customFormattedName() );
1278 mAddressee.setFormattedName( dialog.customFormattedName() ); 1296 mAddressee.setFormattedName( dialog.customFormattedName() );
1279 } 1297 }
1280 // Update the name edit. 1298 // Update the name edit.
1281 bool block = mNameEdit->signalsBlocked(); 1299 bool block = mNameEdit->signalsBlocked();
1282 mNameEdit->blockSignals( true ); 1300 mNameEdit->blockSignals( true );
1283 mNameEdit->setText( mAddressee.assembledName() ); 1301 mNameEdit->setText( mAddressee.assembledName() );
1284 mNameEdit->blockSignals( block ); 1302 mNameEdit->blockSignals( block );
1285 1303
1286 // Update the combo box. 1304 // Update the combo box.
1287 nameBoxChanged(); 1305 nameBoxChanged();
1288 1306
1289 emitModified(); 1307 emitModified();
1290 } 1308 }
1291 } 1309 }
1292} 1310}
1293 1311
1294void AddresseeEditorWidget::categoryButtonClicked() 1312void AddresseeEditorWidget::categoryButtonClicked()
1295{ 1313{
1296 // Show the category dialog 1314 // Show the category dialog
1297 if ( mCategoryDialog == 0 ) { 1315 if ( mCategoryDialog == 0 ) {
1298 mCategoryDialog = new KPIM::CategorySelectDialog( KABPrefs::instance(), this ); 1316 mCategoryDialog = new KPIM::CategorySelectDialog( KABPrefs::instance(), this );
1299 connect( mCategoryDialog, SIGNAL( categoriesSelected( const QStringList& ) ), 1317 connect( mCategoryDialog, SIGNAL( categoriesSelected( const QStringList& ) ),
1300 SLOT(categoriesSelected( const QStringList& ) ) ); 1318 SLOT(categoriesSelected( const QStringList& ) ) );
1301 connect( mCategoryDialog, SIGNAL( editCategories() ), SLOT( editCategories() ) ); 1319 connect( mCategoryDialog, SIGNAL( editCategories() ), SLOT( editCategories() ) );
1302 } 1320 }
1303 1321
1304 mCategoryDialog->setCategories(); 1322 mCategoryDialog->setCategories();
1305 mCategoryDialog->setSelected( QStringList::split( ",", mCategoryEdit->text() ) ); 1323 mCategoryDialog->setSelected( QStringList::split( ",", mCategoryEdit->text() ) );
1306 mCategoryDialog->show(); 1324 mCategoryDialog->show();
1307 mCategoryDialog->raise(); 1325 mCategoryDialog->raise();
1308} 1326}
1309 1327
1310void AddresseeEditorWidget::categoriesSelected( const QStringList &list ) 1328void AddresseeEditorWidget::categoriesSelected( const QStringList &list )
1311{ 1329{
1312 mCategoryEdit->setText( list.join( "," ) ); 1330 mCategoryEdit->setText( list.join( "," ) );
1313} 1331}
1314 1332
1315void AddresseeEditorWidget::editCategories() 1333void AddresseeEditorWidget::editCategories()
1316{ 1334{
1317 if ( mCategoryEditDialog == 0 ) { 1335 if ( mCategoryEditDialog == 0 ) {
1318 mCategoryEditDialog = new KPIM::CategoryEditDialog( KABPrefs::instance(), this ); 1336 mCategoryEditDialog = new KPIM::CategoryEditDialog( KABPrefs::instance(), this );
1319 connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ), 1337 connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ),
1320 SLOT( categoryButtonClicked() ) ); 1338 SLOT( categoryButtonClicked() ) );
1321 } 1339 }
1322 1340
1323 mCategoryEditDialog->show(); 1341 mCategoryEditDialog->show();
1324 mCategoryEditDialog->raise(); 1342 mCategoryEditDialog->raise();
1325} 1343}
1326 1344
1327void AddresseeEditorWidget::emitModified() 1345void AddresseeEditorWidget::emitModified()
1328{ 1346{
1329 mDirty = true; 1347 mDirty = true;
1330 1348
1331 KABC::Addressee::List list; 1349 KABC::Addressee::List list;
1332 1350
1333 if ( mIsExtension && !mBlockSignals ) { 1351 if ( mIsExtension && !mBlockSignals ) {
1334 save(); 1352 save();
1335 list.append( mAddressee ); 1353 list.append( mAddressee );
1336 } 1354 }
1337 1355
1338 emit modified( list ); 1356 emit modified( list );
1339} 1357}
1340 1358
1341void AddresseeEditorWidget::dateChanged( QDate ) 1359void AddresseeEditorWidget::dateChanged( QDate )
1342{ 1360{
1343 emitModified(); 1361 emitModified();
1344} 1362}
1345 1363
1346//US invalid dates are handdled by the KDateEdit widget itself 1364//US invalid dates are handdled by the KDateEdit widget itself
1347void AddresseeEditorWidget::invalidDate() 1365void AddresseeEditorWidget::invalidDate()
1348{ 1366{
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h
index 7fe4bc0..0241cf0 100644
--- a/kaddressbook/phoneeditwidget.h
+++ b/kaddressbook/phoneeditwidget.h
@@ -1,147 +1,222 @@
1#ifndef PHONEEDITWIDGET_H 1#ifndef PHONEEDITWIDGET_H
2#define PHONEEDITWIDGET_H 2#define PHONEEDITWIDGET_H
3/* 3/*
4 This file is part of KAddressBook. 4 This file is part of KAddressBook.
5 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 5 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 20
21 As a special exception, permission is given to link this program 21 As a special exception, permission is given to link this program
22 with any edition of Qt, and distribute the resulting executable, 22 with any edition of Qt, and distribute the resulting executable,
23 without including the source code for Qt in the source distribution. 23 without including the source code for Qt in the source distribution.
24*/ 24*/
25 25
26#include <kdialogbase.h> 26#include <kdialogbase.h>
27#include <kiconloader.h>
28#include <qpushbutton.h>
29#include <qlayout.h>
30
27 31
28#include "addresseeconfig.h" 32#include "addresseeconfig.h"
29#include "typecombo.h" 33#include "typecombo.h"
30 34
31class QButtonGroup; 35class QButtonGroup;
32class QCheckBox; 36class QCheckBox;
33 37
38#include <klineedit.h>
39#include <kcombobox.h>
34class KListView; 40class KListView;
35class KLineEdit;
36class KComboBox;
37 41
38typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo; 42typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo;
39 43
40/** 44/**
41 Widget for editing phone numbers. 45 Widget for editing phone numbers.
42*/ 46*/
43class PhoneEditWidget : public QWidget 47class PhoneEditWidget : public QWidget
44{ 48{
45 Q_OBJECT 49 Q_OBJECT
46 50
47 public: 51 public:
48 PhoneEditWidget( QWidget *parent, const char *name = 0 ); 52 PhoneEditWidget( QWidget *parent, const char *name = 0 );
49 ~PhoneEditWidget(); 53 ~PhoneEditWidget();
50 54
51 void setPhoneNumbers( const KABC::PhoneNumber::List &list ); 55 void setPhoneNumbers( const KABC::PhoneNumber::List &list );
52 KABC::PhoneNumber::List phoneNumbers(); 56 KABC::PhoneNumber::List phoneNumbers();
53 57
54 void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* ); 58 void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
55 KABC::PhoneNumber currentPhoneNumber( KComboBox*, int ); 59 KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
56 60
57 signals: 61 signals:
58 void modified(); 62 void modified();
59 63
60 private slots: 64 private slots:
61 void edit(); 65 void edit();
62 66
63 void updatePrefEdit(); 67 void updatePrefEdit();
64 void updateSecondEdit(); 68 void updateSecondEdit();
65 void updateThirdEdit(); 69 void updateThirdEdit();
66 void updateFourthEdit(); 70 void updateFourthEdit();
67 71
68 void slotPrefEditChanged(); 72 void slotPrefEditChanged();
69 void slotSecondEditChanged(); 73 void slotSecondEditChanged();
70 void slotThirdEditChanged(); 74 void slotThirdEditChanged();
71 void slotFourthEditChanged(); 75 void slotFourthEditChanged();
72 76
73 protected: 77 protected:
74 void updateLineEdits(); 78 void updateLineEdits();
75 void updateCombos(); 79 void updateCombos();
76 80
77 private: 81 private:
78 void updateEdit( PhoneTypeCombo *combo ); 82 void updateEdit( PhoneTypeCombo *combo );
79 void updatePhoneNumber( PhoneTypeCombo *combo ); 83 void updatePhoneNumber( PhoneTypeCombo *combo );
80 void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo ); 84 void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo );
81 85
82 PhoneTypeCombo *mPrefCombo; 86 PhoneTypeCombo *mPrefCombo;
83 PhoneTypeCombo *mSecondCombo; 87 PhoneTypeCombo *mSecondCombo;
84 PhoneTypeCombo *mThirdCombo; 88 PhoneTypeCombo *mThirdCombo;
85 PhoneTypeCombo *mFourthCombo; 89 PhoneTypeCombo *mFourthCombo;
86 90
87 KLineEdit *mPrefEdit; 91 KLineEdit *mPrefEdit;
88 KLineEdit *mSecondEdit; 92 KLineEdit *mSecondEdit;
89 KLineEdit *mThirdEdit; 93 KLineEdit *mThirdEdit;
90 KLineEdit *mFourthEdit; 94 KLineEdit *mFourthEdit;
91 95
92 KABC::PhoneNumber::List mPhoneList; 96 KABC::PhoneNumber::List mPhoneList;
93}; 97};
94 98
95/** 99/**
96 Dialog for editing lists of phonenumbers. 100 Dialog for editing lists of phonenumbers.
97*/ 101*/
98class PhoneEditDialog : public KDialogBase 102class PhoneEditDialog : public KDialogBase
99{ 103{
100 Q_OBJECT 104 Q_OBJECT
101 105
102 public: 106 public:
103 PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 ); 107 PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 );
104 ~PhoneEditDialog(); 108 ~PhoneEditDialog();
105 109
106 const KABC::PhoneNumber::List &phoneNumbers(); 110 const KABC::PhoneNumber::List &phoneNumbers();
107 bool changed() const; 111 bool changed() const;
108 112
109 protected slots: 113 protected slots:
110 void slotAddPhoneNumber(); 114 void slotAddPhoneNumber();
111 void slotRemovePhoneNumber(); 115 void slotRemovePhoneNumber();
112 void slotEditPhoneNumber(); 116 void slotEditPhoneNumber();
113 void slotSelectionChanged(); 117 void slotSelectionChanged();
114 118
115 private: 119 private:
116 KABC::PhoneNumber::List mPhoneNumberList; 120 KABC::PhoneNumber::List mPhoneNumberList;
117 KABC::PhoneNumber::TypeList mTypeList; 121 KABC::PhoneNumber::TypeList mTypeList;
118 KComboBox *mTypeBox; 122 KComboBox *mTypeBox;
119 KListView *mListView; 123 KListView *mListView;
120 124
121 QPushButton *mRemoveButton; 125 QPushButton *mRemoveButton;
122 QPushButton *mEditButton; 126 QPushButton *mEditButton;
123 127
124 bool mChanged; 128 bool mChanged;
125}; 129};
126 130
127/** 131/**
128 Dialog for editing phone number types. 132 Dialog for editing phone number types.
129*/ 133*/
130class PhoneTypeDialog : public KDialogBase 134class PhoneTypeDialog : public KDialogBase
131{ 135{
132 Q_OBJECT 136 Q_OBJECT
133public: 137public:
134 PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 ); 138 PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 );
135 139
136 KABC::PhoneNumber phoneNumber(); 140 KABC::PhoneNumber phoneNumber();
137 141
138private: 142private:
139 KABC::PhoneNumber mPhoneNumber; 143 KABC::PhoneNumber mPhoneNumber;
140 KABC::PhoneNumber::TypeList mTypeList; 144 KABC::PhoneNumber::TypeList mTypeList;
141 145
142 QButtonGroup *mGroup; 146 QButtonGroup *mGroup;
143 QCheckBox *mPreferredBox; 147 QCheckBox *mPreferredBox;
144 KLineEdit *mNumber; 148 KLineEdit *mNumber;
145}; 149};
150class PhoneTypeNumberEdit : public QWidget
151{
152 Q_OBJECT
153public:
154 PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 )
155 {
156 QHBoxLayout * lay = new QHBoxLayout( this );
157 lay->setSpacing( KDialogBase::spacingHintSmall() );
158 lay->setMargin( KDialogBase::marginHintSmall() );
159 mMinusButton = new QPushButton ( this );
160 mMinusButton->setPixmap ( SmallIcon("minus"));
161 mCombo = new KComboBox( this );
162 mNumber = new KLineEdit( this );
163 lay->addWidget( mMinusButton );
164 lay->addWidget( mCombo );
165 lay->addWidget( mNumber );
166 connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) );
167 connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) );
168 mCombo->insertStringList( PhoneNumber::supportedTypeListNames() );
169 }
170
171 void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
172 {
173 mPhoneNumber = phoneNumber;
174 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
175 mCombo->setCurrentItem( index );
176 mNumber->setText( mPhoneNumber.number() );
177 show();
178
179 }
180 KABC::PhoneNumber phoneNumber()
181 {
182 mPhoneNumber.setNumber( mNumber->text() );
183 int index = mCombo->currentItem();
184 mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
185 return mPhoneNumber;
186
187 }
188 private slots:
189 void typeExternalChanged( int oldType, int newType )
190 {
191 if ( mPhoneNumber.type() == newType ) {
192 mPhoneNumber.setType(oldType);
193 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
194 mCombo->setCurrentItem( index );
195 }
196
197 }
198 void deleteNumber()
199 {
200 hide();
201 }
202 void comboTypeChange( int index )
203 {
204 int old = mPhoneNumber.type();
205 int newT = PhoneNumber::supportedTypeList()[index];
206 if ( old != newT ) {
207 mPhoneNumber.setType(newT );
208 emit typeChange ( old, newT );
209 }
210
211 }
212 signals:
213void typeChange( int oldType, int newType );
214
215private:
216 KABC::PhoneNumber mPhoneNumber;
217 QPushButton* mMinusButton;
218 KComboBox *mCombo;
219 KLineEdit *mNumber;
220};
146 221
147#endif 222#endif