summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-29 07:48:23 (UTC)
committer zautrix <zautrix>2005-01-29 07:48:23 (UTC)
commitef1d97a243957180f5ffc3c3b055ffd8bf52e157 (patch) (unidiff)
tree57ebf97cfd0d324ffcecbfb0c9814745f73d54a5
parent0850ade22908615389800c6ee973f5906154d980 (diff)
downloadkdepimpi-ef1d97a243957180f5ffc3c3b055ffd8bf52e157.zip
kdepimpi-ef1d97a243957180f5ffc3c3b055ffd8bf52e157.tar.gz
kdepimpi-ef1d97a243957180f5ffc3c3b055ffd8bf52e157.tar.bz2
many stribg fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt9
-rw-r--r--bin/kdepim/kaddressbook/germantranslation.txt25
-rw-r--r--bin/kdepim/kopiemail/germantranslation.txt10
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt30
-rw-r--r--bin/kdepim/pwmanager/germantranslation.txt12
-rw-r--r--kaddressbook/kabcore.cpp4
-rw-r--r--korganizer/filteredit_base.cpp13
-rw-r--r--korganizer/koeditordetails.cpp3
-rw-r--r--korganizer/koeditorgeneral.cpp8
-rw-r--r--korganizer/koprefsdialog.cpp6
-rw-r--r--libkdepim/kcmconfigs/kdepimconfigwidget.cpp12
-rw-r--r--version2
12 files changed, 78 insertions, 56 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 4b0c920..7e5240c 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,820 +1,829 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3
4********** VERSION 2.0.1 ************
5
6Oooops ... I forgot to test on the Zaurus 5500 ...
7
8Fixed many problems of new (english) strings (and german translations)
9introduced in the latest versions, where the text was not fitting on the
10240x320 display of the Zaurus 5500.
11
3********** VERSION 2.0.0 ************ 12********** VERSION 2.0.0 ************
4 13
5Stable release 2.0.0! 14Stable release 2.0.0!
6 15
7KO/Pi: 16KO/Pi:
8Fixed problem in edit dialog recreation at startup. 17Fixed problem in edit dialog recreation at startup.
9Made "toggle view*" menu items enabled context sensitive. 18Made "toggle view*" menu items enabled context sensitive.
10Changed agenda size menu to items 1-10. 19Changed agenda size menu to items 1-10.
11Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 20Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
12Usebility enhancements in the KO/Pi menus. 21Usebility enhancements in the KO/Pi menus.
13Birthday import now adds year to summary. 22Birthday import now adds year to summary.
14What's Next view shows age in years for birthday. 23What's Next view shows age in years for birthday.
15 24
16OM/Pi: 25OM/Pi:
17Added three info lines to display subject, from and to of selected mails. 26Added three info lines to display subject, from and to of selected mails.
18 27
19KA/Pi: 28KA/Pi:
20Fixed jump bar behaviour on Zaurus. 29Fixed jump bar behaviour on Zaurus.
21Now KA/Pi search field supports searching for a range of starting characters. 30Now KA/Pi search field supports searching for a range of starting characters.
22E.g. to search for all contact beginning with b to n, type 31E.g. to search for all contact beginning with b to n, type
23b-n 32b-n
24in the search field. 33in the search field.
25 34
26********** VERSION 1.9.20 ************ 35********** VERSION 1.9.20 ************
27 36
28KO/Pi: 37KO/Pi:
29Added for the "dislplay one day" agenda mode 38Added for the "dislplay one day" agenda mode
30info in the caption and in the day lables: 39info in the caption and in the day lables:
31Now it is displayed, if the selected day is from "day before yesterday" 40Now it is displayed, if the selected day is from "day before yesterday"
32to "day after tomorrow". 41to "day after tomorrow".
33Made it possible to delete a Todo, which has sub-todos. 42Made it possible to delete a Todo, which has sub-todos.
34Fixed two small problems in the todo view. 43Fixed two small problems in the todo view.
35Added missing German translation for filter edit and print dialog. 44Added missing German translation for filter edit and print dialog.
36Made search dialog closeable by cancel key. 45Made search dialog closeable by cancel key.
37 46
38Made it possible to select in the date picker the (ligt grey ) 47Made it possible to select in the date picker the (ligt grey )
39dates of the prev./next month with the mouse. 48dates of the prev./next month with the mouse.
40 49
41OM/Pi: 50OM/Pi:
42"Delete mail" icon in main window now deletes all selected mails. 51"Delete mail" icon in main window now deletes all selected mails.
43Fixed the problem, that the state flag of imap mails was ignored. 52Fixed the problem, that the state flag of imap mails was ignored.
44Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 53Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
45to indecate that they are already seen. 54to indecate that they are already seen.
46Fixed the problem that the body of some mails was not displayed in the 55Fixed the problem that the body of some mails was not displayed in the
47mail viewer when fetching them from the imap server directly to read them. 56mail viewer when fetching them from the imap server directly to read them.
48Made it (configurable) possible to show the "To:" field in the list view. 57Made it (configurable) possible to show the "To:" field in the list view.
49Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 58Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
50Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 59Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
51local storage folder (specified in account settings) of the account of the mail. 60local storage folder (specified in account settings) of the account of the mail.
52Removed some memory leaks in OM/Pi. 61Removed some memory leaks in OM/Pi.
53 62
54 63
55********** VERSION 1.9.19 ************ 64********** VERSION 1.9.19 ************
56 65
57Added a lot of missing translations to KA/Pi, 66Added a lot of missing translations to KA/Pi,
58Added some missing translations to KO/Pi and OM/Pi. 67Added some missing translations to KO/Pi and OM/Pi.
59 68
60Fixed some minor problems in KA/Pi + KO/Pi. 69Fixed some minor problems in KA/Pi + KO/Pi.
61 70
62Fixed a crash when closing PwM/Pi. 71Fixed a crash when closing PwM/Pi.
63Added German translation for PwM/Pi. 72Added German translation for PwM/Pi.
64 73
65Made view change and Month View update faster in KO/Pi. 74Made view change and Month View update faster in KO/Pi.
66 75
67 76
68********** VERSION 1.9.18 ************ 77********** VERSION 1.9.18 ************
69 78
70FYI: The VERSION 1.9.17 was a testing release only. 79FYI: The VERSION 1.9.17 was a testing release only.
71Please read the changelog of VERSION 1.9.17 as well. 80Please read the changelog of VERSION 1.9.17 as well.
72 81
73Cleaned up the syncing config dialog. 82Cleaned up the syncing config dialog.
74Added sync config options for date range for events. 83Added sync config options for date range for events.
75Added sync config options for filters on incoming data. 84Added sync config options for filters on incoming data.
76Added sync config options for filters on outgoing data. 85Added sync config options for filters on outgoing data.
77Please read the updated SyncHowTo about the new filter settings. 86Please read the updated SyncHowTo about the new filter settings.
78These filter settings make it now possible to sync with shared 87These filter settings make it now possible to sync with shared
79calendars without writing back private or confidential data 88calendars without writing back private or confidential data
80(via the outgoing filters). 89(via the outgoing filters).
81To sync only with particular parts of a shared calendar, 90To sync only with particular parts of a shared calendar,
82the incoming filter settings can be used. 91the incoming filter settings can be used.
83An example can be found in the SyncHowTo. 92An example can be found in the SyncHowTo.
84Same for shared addressbooks. 93Same for shared addressbooks.
85 94
86Added a setting for the global kdepim data storage. 95Added a setting for the global kdepim data storage.
87Usually the data is stored in (yourhomedir/kdepim). 96Usually the data is stored in (yourhomedir/kdepim).
88Now you can set in the Global config dialog TAB, subTAB "Data storage path" 97Now you can set in the Global config dialog TAB, subTAB "Data storage path"
89a directory where all the kdepim data is stored. 98a directory where all the kdepim data is stored.
90That makes it easy to save all kdepim data on a SD card on the Z, for example. 99That makes it easy to save all kdepim data on a SD card on the Z, for example.
91 100
92KO/Pi: 101KO/Pi:
93The timeedit input has a pulldown list for times. 102The timeedit input has a pulldown list for times.
94If opened, this pulldown list should now has the right time highlighted. 103If opened, this pulldown list should now has the right time highlighted.
95Added the possibility to exclude events/todos/journals in a filter. 104Added the possibility to exclude events/todos/journals in a filter.
96You should exclude journals, if you do not want them to sync with a public calendar. 105You should exclude journals, if you do not want them to sync with a public calendar.
97 106
98KA/Pi: 107KA/Pi:
99Added the possibility to in/exclude public/private/confidential contacts to a filter. 108Added the possibility to in/exclude public/private/confidential contacts to a filter.
100If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ... 109If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ...
101Added printing of card view and details view on desktop. 110Added printing of card view and details view on desktop.
102Printing of list view is not working... 111Printing of list view is not working...
103Added button for removing pictures in contact editor. 112Added button for removing pictures in contact editor.
104Parsing data fix of KA/Pi version 1.9.17. 113Parsing data fix of KA/Pi version 1.9.17.
105Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 114Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
106Fixed some syncing merging problems. 115Fixed some syncing merging problems.
107 116
108 117
109********** VERSION 1.9.17 ************ 118********** VERSION 1.9.17 ************
110 119
111KO/Pi: 120KO/Pi:
112Fixed that tooltips were not updated after moving an item in agenda view. 121Fixed that tooltips were not updated after moving an item in agenda view.
113Fixed a bug in sorting start date for recurring events in list view. 122Fixed a bug in sorting start date for recurring events in list view.
114Changed the left button in todo viewer from "Agenda" to "Set completed". 123Changed the left button in todo viewer from "Agenda" to "Set completed".
115This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. 124This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View.
116Added more info in the todo viewer: Startdate, parent/sub todos. 125Added more info in the todo viewer: Startdate, parent/sub todos.
117 126
118 127
119KA/Pi: 128KA/Pi:
120All fields search does now actually search all the (possible) fields, 129All fields search does now actually search all the (possible) fields,
121not only those listed in the contact list. 130not only those listed in the contact list.
122Made is possible to inline a picture in a vcard on the Z. 131Made is possible to inline a picture in a vcard on the Z.
123This was only possible on the desktop, now is it possible on the Z as well. 132This was only possible on the desktop, now is it possible on the Z as well.
124Fixed of missing save settings after filter configuration. 133Fixed of missing save settings after filter configuration.
125Made saving of addressbook much faster. 134Made saving of addressbook much faster.
126Fixed extension widget layout problem. 135Fixed extension widget layout problem.
127Fixed saving of default formatted name settings. 136Fixed saving of default formatted name settings.
128Fixed formatted name handling in edit dialog. 137Fixed formatted name handling in edit dialog.
129Added an option for changing formatted names of many contacts 138Added an option for changing formatted names of many contacts
130(menu: File - Change - Set formatted name). 139(menu: File - Change - Set formatted name).
131 140
132QWhatsThis was not working on the Z ( only black rectangle was shown). 141QWhatsThis was not working on the Z ( only black rectangle was shown).
133This is Fixed. 142This is Fixed.
134 143
135KDE-Sync: 144KDE-Sync:
136Now readonly KDE resources are synced as well. 145Now readonly KDE resources are synced as well.
137(They are not changed in KDE itself, of course). 146(They are not changed in KDE itself, of course).
138 147
139 148
140 149
141********** VERSION 1.9.16 ************ 150********** VERSION 1.9.16 ************
142 151
143KO/Pi: 152KO/Pi:
144Fixed search dialog size on Z 6000 (480x640 display). 153Fixed search dialog size on Z 6000 (480x640 display).
145Added setting to hide/show time in agenda items. 154Added setting to hide/show time in agenda items.
146Added setting to hide not running todos in todo view. 155Added setting to hide not running todos in todo view.
147Added columns for start date/time in todo view. 156Added columns for start date/time in todo view.
148Replaced the solid half-hour lines in agenda view by dot lines. 157Replaced the solid half-hour lines in agenda view by dot lines.
149Added possibility of printing the What's Next View on the desktop 158Added possibility of printing the What's Next View on the desktop
150(i.e. Windows and Linux). 159(i.e. Windows and Linux).
151Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 160Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
152Added tooltips in month view.(Tooltips only available on desktop) 161Added tooltips in month view.(Tooltips only available on desktop)
153 162
154Fixed a strange problem in KO/Pi alarm applet. 163Fixed a strange problem in KO/Pi alarm applet.
155Did not find the actual problem, 164Did not find the actual problem,
156such that now Qtopia reboots again if deinstalling the alarm applet. 165such that now Qtopia reboots again if deinstalling the alarm applet.
157But the alarm applet should work again. 166But the alarm applet should work again.
158 167
159KA/Pi: 168KA/Pi:
160Fixed the problem, that internal pictures were not saved. 169Fixed the problem, that internal pictures were not saved.
161 170
162Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 171Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
163 172
164Fixed some minor problems. (Like word wrap in help text windows). 173Fixed some minor problems. (Like word wrap in help text windows).
165 174
166Fixed a compiling problem in microkde/kresources. 175Fixed a compiling problem in microkde/kresources.
167 176
168KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 177KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
169This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 178This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
170such that now syncing KO/Pi with Sharp DTM should work on the 179such that now syncing KO/Pi with Sharp DTM should work on the
171Zaurus C 3000 model. 180Zaurus C 3000 model.
172 181
173********** VERSION 1.9.15 ************ 182********** VERSION 1.9.15 ************
174 183
175Usebilty enhancements in KO/Pi: 184Usebilty enhancements in KO/Pi:
176When clicking on the date in a month view cell, the day view is shown. 185When clicking on the date in a month view cell, the day view is shown.
177Old behaviour was, that the "new event" dialog popped up. 186Old behaviour was, that the "new event" dialog popped up.
178 187
179Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 188Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
180That means, you can restore the latest 189That means, you can restore the latest
181event/todo/journal you have deleted. 190event/todo/journal you have deleted.
182A journal is deleted, if you clear all the text of the journal. 191A journal is deleted, if you clear all the text of the journal.
183 192
184Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 193Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
185 194
186KA/Pi starting in 480x640 resolution: 195KA/Pi starting in 480x640 resolution:
187Hide the filter action in toolbar 196Hide the filter action in toolbar
188and added icons for undo/delete/redo in toolbar. 197and added icons for undo/delete/redo in toolbar.
189 198
190Change in OM/Pi ViewMail dialog: 199Change in OM/Pi ViewMail dialog:
191When clicking on the "delete" icon the mail is deleted after confirmation as usual. 200When clicking on the "delete" icon the mail is deleted after confirmation as usual.
192But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 201But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
193 202
194Fixed a crash when deleting mail-accounts in OM/Pi. 203Fixed a crash when deleting mail-accounts in OM/Pi.
195 204
196 205
197********** VERSION 1.9.14 ************ 206********** VERSION 1.9.14 ************
198 207
199Fixed some problems with the dialog sizes when switching 208Fixed some problems with the dialog sizes when switching
200portrait/landscape mode on 640x480 PDA display. 209portrait/landscape mode on 640x480 PDA display.
201 210
202Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 211Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
203 212
204Fixed an ugly bug in KOpieMail: 213Fixed an ugly bug in KOpieMail:
205KOpieMail was not able to write files (mails) to MSDOS file system, 214KOpieMail was not able to write files (mails) to MSDOS file system,
206like on an usual preformatted SD card. That should work now. 215like on an usual preformatted SD card. That should work now.
207To save your mail data on the Sd card do the following: 216To save your mail data on the Sd card do the following:
208Create a dir on the SD card: 217Create a dir on the SD card:
209mkdir /mnt/card/localmail 218mkdir /mnt/card/localmail
210Go to your home dir: 219Go to your home dir:
211cd 220cd
212Go to kopiemail data storage dir: 221Go to kopiemail data storage dir:
213cd kdepim/apps/kopiemail 222cd kdepim/apps/kopiemail
214Create a symlink to the SD card: 223Create a symlink to the SD card:
215ls -s /mnt/card/localmail 224ls -s /mnt/card/localmail
216Now KOpieMail will store all mails on the SD card. 225Now KOpieMail will store all mails on the SD card.
217 226
218KO/Pi Monthview: 227KO/Pi Monthview:
219Now "Go to Today" selects the current month from day 1-end, 228Now "Go to Today" selects the current month from day 1-end,
220not the current date + some days. 229not the current date + some days.
221I.e. "Go to Today" shows now always 230I.e. "Go to Today" shows now always
222the current month with first day of month in the first row. 231the current month with first day of month in the first row.
223 232
224Added missing German translation. 233Added missing German translation.
225 234
226Fixed icons of executeable on Wintendo. 235Fixed icons of executeable on Wintendo.
227 236
228Added a "Show next Mail" button to the OM/Pi 237Added a "Show next Mail" button to the OM/Pi
229mail viewer such that the mail below the current mail 238mail viewer such that the mail below the current mail
230in the mail list view of the current folder 239in the mail list view of the current folder
231can be read with a single click. 240can be read with a single click.
232 241
233 242
234********** VERSION 1.9.13 ************ 243********** VERSION 1.9.13 ************
235 244
236Fixed nasty PwM/Pi file reading bug, when 245Fixed nasty PwM/Pi file reading bug, when
237the used hash algo of file is different then the global 246the used hash algo of file is different then the global
238hash algo. 247hash algo.
239 248
240Added KA/Pi support for opie mailit mailapplication. 249Added KA/Pi support for opie mailit mailapplication.
241 250
242Fixed some bugs in OM/Pi. 251Fixed some bugs in OM/Pi.
243Now character conversion tables are available for the Zaurus 252Now character conversion tables are available for the Zaurus
244to make OM/Pi working properly. 253to make OM/Pi working properly.
245To get the character conversion in OM/Pi working, please download 254To get the character conversion in OM/Pi working, please download
246at the sourceforge project site the package 255at the sourceforge project site the package
247sr-character-conversion_SharpROM_arm.ipk.zip 256sr-character-conversion_SharpROM_arm.ipk.zip
248(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 257(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
249from the section "general files for KDE/Pim" 258from the section "general files for KDE/Pim"
250Instructions how to install this package are in a ReadMe in this file. 259Instructions how to install this package are in a ReadMe in this file.
251 260
252 261
253Fixed the orientation change problem in KA/Pi when switching 262Fixed the orientation change problem in KA/Pi when switching
254portrait/landscape mode. 263portrait/landscape mode.
255 264
256French translation available for KA/Pi and OM/Pi. 265French translation available for KA/Pi and OM/Pi.
257 266
258Fixed some problems with categories in KO/Pi in DTM sync. 267Fixed some problems with categories in KO/Pi in DTM sync.
259 268
260Added selection dialog for export to phone in KA/Pi. 269Added selection dialog for export to phone in KA/Pi.
261 270
262If in KO/Pi is an attendee selected to add to a meeting and this 271If in KO/Pi is an attendee selected to add to a meeting and this
263attendee is already in the list of attendees, this person is not added 272attendee is already in the list of attendees, this person is not added
264again. 273again.
265 274
266Some menu cleanup in KA/Pi. 275Some menu cleanup in KA/Pi.
267 276
268********** VERSION 1.9.12 ************ 277********** VERSION 1.9.12 ************
269 278
270Fix for the bug in KO/Pi What's Next view of version 1.9.11. 279Fix for the bug in KO/Pi What's Next view of version 1.9.11.
271 280
272Bugfix: Licence file is now shown again. 281Bugfix: Licence file is now shown again.
273 282
274OM/Pi now supports Unicode (utf8 charset). 283OM/Pi now supports Unicode (utf8 charset).
275Fixed some bugs in OM/Pi. 284Fixed some bugs in OM/Pi.
276 285
277KA/Pi has more German translation. 286KA/Pi has more German translation.
278 287
279 288
280********** VERSION 1.9.11 ************ 289********** VERSION 1.9.11 ************
281 290
282Fixed several problems in PWM/Pi, like 291Fixed several problems in PWM/Pi, like
283asking the user, if unsaved changed are pending 292asking the user, if unsaved changed are pending
284when closing the app. 293when closing the app.
285And PwM/Pi handles now different texts for the 294And PwM/Pi handles now different texts for the
286fields Description, Username, Password, configurable per category. 295fields Description, Username, Password, configurable per category.
287 296
288Fixed a crash in KO/Pi , when importing/loading vcs files 297Fixed a crash in KO/Pi , when importing/loading vcs files
289which have an entry with an attendee with state: 298which have an entry with an attendee with state:
290NEEDS ACTION 299NEEDS ACTION
291 300
292Fixed some problems in the German translation of OM/Pi, 301Fixed some problems in the German translation of OM/Pi,
293which makes some dialogs not fitting on the screen 302which makes some dialogs not fitting on the screen
294of the Z 5500. 303of the Z 5500.
295 304
296Fixed Qtopia crash, when disabling/deinstalling 305Fixed Qtopia crash, when disabling/deinstalling
297KO/Pi alarm applet. 306KO/Pi alarm applet.
298 307
299Implemented direct KDE<->KA/Pi sync for KA/Pi running 308Implemented direct KDE<->KA/Pi sync for KA/Pi running
300on Linux desktop. 309on Linux desktop.
301 310
302Added feature "remove sync info" to sync menu. 311Added feature "remove sync info" to sync menu.
303 312
304Tweaked the KO/Pi What's next view a bit, added 313Tweaked the KO/Pi What's next view a bit, added
305setting to hide events that are done. 314setting to hide events that are done.
306 315
307Disabled "beam receive enabled" on startup to 316Disabled "beam receive enabled" on startup to
308avoid problems if Fastload is enabled. 317avoid problems if Fastload is enabled.
309Please set "beam receive enabled", 318Please set "beam receive enabled",
310if you want to receive data via IR. 319if you want to receive data via IR.
311 320
312Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 321Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
313on Linux desktop. 322on Linux desktop.
314 323
315Made in KA/Pi scrolling possible, if details view is selected. 324Made in KA/Pi scrolling possible, if details view is selected.
316(The keyboard focus is set automatically to the search line) 325(The keyboard focus is set automatically to the search line)
317 326
318Fixed a bug in DMT sync, that a new entry in DTM was added 327Fixed a bug in DMT sync, that a new entry in DTM was added
319on every sync to Kx/Pi. 328on every sync to Kx/Pi.
320 329
321Fixed missing writing of KA/Pi categories to DMT entries when syncing. 330Fixed missing writing of KA/Pi categories to DMT entries when syncing.
322 331
323Fixed a bug in DMT sync with todos created in KO/Pi containing 332Fixed a bug in DMT sync with todos created in KO/Pi containing
324non-latin1 characters. 333non-latin1 characters.
325 334
326Rearranged package contents of Sharp-ipks and made all 335Rearranged package contents of Sharp-ipks and made all
327packages installable on SD again. 336packages installable on SD again.
328 337
329Fixed the writing of addressbook data in DTM sync. 338Fixed the writing of addressbook data in DTM sync.
330Empty fields in KA/Pi were not removed. 339Empty fields in KA/Pi were not removed.
331 340
332Added better category handling in KA/Pi: 341Added better category handling in KA/Pi:
333Added item 342Added item
334Edit Categories and 343Edit Categories and
335Manage new categories 344Manage new categories
336to the settings menu. 345to the settings menu.
337Possible to configure a view to display categories. 346Possible to configure a view to display categories.
338 347
339Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 348Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
340 349
341Fixed displaying of "free" days and time in KO Monthview and Agendaview. 350Fixed displaying of "free" days and time in KO Monthview and Agendaview.
342 351
343... and many other bugfixes. 352... and many other bugfixes.
344 353
345********** VERSION 1.9.10 ************ 354********** VERSION 1.9.10 ************
346 355
347Many internal small bugfixes. 356Many internal small bugfixes.
348And fix of the "big" bug in KO/Pi, 357And fix of the "big" bug in KO/Pi,
349that after Syncing the appointments had an offset by several hours. 358that after Syncing the appointments had an offset by several hours.
350That was a problem with the internal timezone setting, 359That was a problem with the internal timezone setting,
351introduced by the changed timezone configuration settings. 360introduced by the changed timezone configuration settings.
352 361
353German translation for OM/Pi is now available. 362German translation for OM/Pi is now available.
354 363
355 364
356********** VERSION 1.9.9 ************ 365********** VERSION 1.9.9 ************
357 366
358KDE-Pim/Pi has a new Member! 367KDE-Pim/Pi has a new Member!
359It is called PWM/Pi (Passwordmanager/platform-independent) 368It is called PWM/Pi (Passwordmanager/platform-independent)
360and it is available for the Zaurus. 369and it is available for the Zaurus.
361It is planned, that it will be available later for Windows. 370It is planned, that it will be available later for Windows.
362(And for Linux, of course). 371(And for Linux, of course).
363It is a port of the Passwordmanager of KDE. 372It is a port of the Passwordmanager of KDE.
364It will need the MicroKDElibs to run. 373It will need the MicroKDElibs to run.
365 374
366Made loading of addressbooks in KA/Pi up to 7 times faster! 375Made loading of addressbooks in KA/Pi up to 7 times faster!
367The bigger your addressbook file, the more starting speed 376The bigger your addressbook file, the more starting speed
368will you gain. (relatively) 377will you gain. (relatively)
369 378
370The Qtopia addressbook connector is now platform independend 379The Qtopia addressbook connector is now platform independend
371as well and should work on any platform for importing/exporting 380as well and should work on any platform for importing/exporting
372Qtopia and Opie XML files. 381Qtopia and Opie XML files.
373 382
374Added a +30min feature to the timezone settings to make 383Added a +30min feature to the timezone settings to make
375KDE-Pim/Pi useable in Australia and other parts on the 384KDE-Pim/Pi useable in Australia and other parts on the
376world with strange timezones ;-) 385world with strange timezones ;-)
377 386
378German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 387German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
379 388
380It is now possible to disable the 389It is now possible to disable the
381"receive data via infrared" feature, such that syncing with 390"receive data via infrared" feature, such that syncing with
382Outlook is now possible again with Kx/Pi runing. 391Outlook is now possible again with Kx/Pi runing.
383Please disable it, before syncing Sharp DTM with Outlook. 392Please disable it, before syncing Sharp DTM with Outlook.
384For your convenience, the "receive data via infrared" feature 393For your convenience, the "receive data via infrared" feature
385is disabled automatically, if you sync Kx/Pi with DTM. 394is disabled automatically, if you sync Kx/Pi with DTM.
386You have to enable it again manually after syncing. 395You have to enable it again manually after syncing.
387Enabling this feature makes it impossible to start the 396Enabling this feature makes it impossible to start the
388Sharp DTM apps. If this feature is enabled, you will only get the 397Sharp DTM apps. If this feature is enabled, you will only get the
389alarm notification from KO/Pi and not from the Sharp calendar. 398alarm notification from KO/Pi and not from the Sharp calendar.
390This is very useful if you sync KO/Pi with Sharp DTM, 399This is very useful if you sync KO/Pi with Sharp DTM,
391because after syncing you usually would get notified about 400because after syncing you usually would get notified about
392an alarm by KO/Pi and the Sharp Calendar. 401an alarm by KO/Pi and the Sharp Calendar.
393 402
394Together with the Linux desktop version of KO/Pi 403Together with the Linux desktop version of KO/Pi
395it is now possible to sync KO/Pi on the Zaurus 404it is now possible to sync KO/Pi on the Zaurus
396with the complete KDE-desktop (3.3 or later) 405with the complete KDE-desktop (3.3 or later)
397calendar data easily. 406calendar data easily.
398That makes it possible to sync the Z with one 407That makes it possible to sync the Z with one
399click of a mouse with the KDE-Desktop. 408click of a mouse with the KDE-Desktop.
400This feature it available for all Zaurus platforms KO/Pi 409This feature it available for all Zaurus platforms KO/Pi
401is running on. 410is running on.
402The only thing needed is a running KO/Pi on Linux and 411The only thing needed is a running KO/Pi on Linux and
403a compiled version of the small 412a compiled version of the small
404KDE-Pim/Pi<->KDE-Desktop access command line program, 413KDE-Pim/Pi<->KDE-Desktop access command line program,
405which is in the KDE-Pim/Pi sources available. 414which is in the KDE-Pim/Pi sources available.
406 415
407The "KDE-desktop" syncing feature for KA/Pi will follow 416The "KDE-desktop" syncing feature for KA/Pi will follow
408in the next releases. 417in the next releases.
409 418
410Fixed the vcard export bug, which had the version 1.9.8. 419Fixed the vcard export bug, which had the version 1.9.8.
411 420
412Added missing GERMAN translation to KO/Pi. 421Added missing GERMAN translation to KO/Pi.
413Hi PsionX, could you add the missing french translation?Thx! 422Hi PsionX, could you add the missing french translation?Thx!
414 423
415Translation files for KA/Pi are available as well. 424Translation files for KA/Pi are available as well.
416GERMAN translation will be available in the next release. 425GERMAN translation will be available in the next release.
417PsionX ( yres, you again ;-) ), could you start translating 426PsionX ( yres, you again ;-) ), could you start translating
418KA/Pi? Thx! 427KA/Pi? Thx!
419 428
420You can download the version 1.9.9 at 429You can download the version 1.9.9 at
421 430
422http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 431http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
423 432
424Note: 433Note:
425To run the mail program OM/Pi you need libopenssl. 434To run the mail program OM/Pi you need libopenssl.
426A link to a download loaction is available at 435A link to a download loaction is available at
427ZSI at www.killefiz.de 436ZSI at www.killefiz.de
428 437
429 438
430********** VERSION 1.9.8 ************ 439********** VERSION 1.9.8 ************
431 440
432Fixed character decoding in OM/Pi. 441Fixed character decoding in OM/Pi.
433(e.g. German "Umlaute" were not displayed properly.) 442(e.g. German "Umlaute" were not displayed properly.)
434 443
435Made is possible to reparent todos in KO/Pi. 444Made is possible to reparent todos in KO/Pi.
436Use contextmenu or keys (look at Help-Keys + Colors) for that. 445Use contextmenu or keys (look at Help-Keys + Colors) for that.
437 446
438Added the missing Sync-Howto and WhatsNew to the packages. 447Added the missing Sync-Howto and WhatsNew to the packages.
439 448
440KO/Pi on Linux desktop can now sync with KDE desktop. 449KO/Pi on Linux desktop can now sync with KDE desktop.
441That means: When using KO/Pi on Linux desktop for syncing with 450That means: When using KO/Pi on Linux desktop for syncing with
442KDE desktop and the Zaurus, the Zaurus can be synced now 451KDE desktop and the Zaurus, the Zaurus can be synced now
443with all KDE-Calendar resources, not only with one local file. 452with all KDE-Calendar resources, not only with one local file.
444(That makes it possible to sync the Zaurus with the 453(That makes it possible to sync the Zaurus with the
445calendar data on a Kolab server) 454calendar data on a Kolab server)
446 455
447KA/Pi syncing with KDE desktop will be available in the next version. 456KA/Pi syncing with KDE desktop will be available in the next version.
448 457
449 458
450********** VERSION 1.9.7 ************ 459********** VERSION 1.9.7 ************
451 460
452KO/Pi - KA/Pi on Windows: 461KO/Pi - KA/Pi on Windows:
453Now a directory can be defined by the user, where the 462Now a directory can be defined by the user, where the
454application/config data should be saved. 463application/config data should be saved.
455 Define your desired path in the evironment variable 464 Define your desired path in the evironment variable
456 MICROKDEHOME 465 MICROKDEHOME
457 before starting KO/Pi or KA/Pi. 466 before starting KO/Pi or KA/Pi.
458 467
459An easy Kx/Pi to Kx/Pi syncing is now possible 468An easy Kx/Pi to Kx/Pi syncing is now possible
460(it is called Pi-Sync) via network. 469(it is called Pi-Sync) via network.
461Please look at the Sync Howto. 470Please look at the Sync Howto.
462 471
463Exporting of calendar data and contacts to mobile phones is now possible. 472Exporting of calendar data and contacts to mobile phones is now possible.
464The SyncHowto is updated with information howto 473The SyncHowto is updated with information howto
465access/sync mobile phones. 474access/sync mobile phones.
466Please look at the Sync Howto. 475Please look at the Sync Howto.
467 476
468Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 477Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
469Please disable Fastload for the original contact/calendar applications 478Please disable Fastload for the original contact/calendar applications
470and close them. 479and close them.
471KO/Pi and KA/Pi must be running in order to receive the data. 480KO/Pi and KA/Pi must be running in order to receive the data.
472(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 481(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
473 482
474In the KA/Pi details view are now the preferred tel. numbers displayed on top 483In the KA/Pi details view are now the preferred tel. numbers displayed on top
475of the other data ( emails/tel.numbers/addresses) 484of the other data ( emails/tel.numbers/addresses)
476 485
477Fixed some syncing problems in KA/Pi. 486Fixed some syncing problems in KA/Pi.
478 487
479Added font settings for the KA/Pi details view. 488Added font settings for the KA/Pi details view.
480Added fields "children's name" and "gender" to KA/Pi. 489Added fields "children's name" and "gender" to KA/Pi.
481 490
482Made searching in KA/Pi better: 491Made searching in KA/Pi better:
483Now the first item in a view is selected after a search automatically and 492Now the first item in a view is selected after a search automatically and
484the views can be scrolled up/down when the search input field has the keyboard focus. 493the views can be scrolled up/down when the search input field has the keyboard focus.
485 494
486And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 495And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
487 496
488 497
489********** VERSION 1.9.6 ************ 498********** VERSION 1.9.6 ************
490 499
491Changes in the external application communication on the Zaurus 500Changes in the external application communication on the Zaurus
492in order to use less RAM when the apps are running. 501in order to use less RAM when the apps are running.
493First syncing of addressbooks (KA/Pi) is possible. 502First syncing of addressbooks (KA/Pi) is possible.
494 503
495 504
496********** VERSION 1.9.5a ************ 505********** VERSION 1.9.5a ************
497 506
498Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 507Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
499Fixed some small bugs. 508Fixed some small bugs.
500KA/Pi shows now the birthday in summary view. 509KA/Pi shows now the birthday in summary view.
501Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 510Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
502for displaying dates. 511for displaying dates.
503 512
504 513
505********** VERSION 1.9.5 ************ 514********** VERSION 1.9.5 ************
506 515
507There is still no Addressbook syncing! 516There is still no Addressbook syncing!
508 517
509New in 1.9.5: 518New in 1.9.5:
510 519
511Many bugfixes. 520Many bugfixes.
512Better searching in KA/Pi. 521Better searching in KA/Pi.
513You can configure in KA/Pi if you want to search only after 522You can configure in KA/Pi if you want to search only after
514<return> key pressed. 523<return> key pressed.
515 524
516Better mail downloading in OM/Pi. 525Better mail downloading in OM/Pi.
517 526
518First experimental alpha version of sync of KO/Pi with mobile phones. 527First experimental alpha version of sync of KO/Pi with mobile phones.
519See gammu documentation for supported phones. 528See gammu documentation for supported phones.
520You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp. 529You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp.
521Quick hint how to use: 530Quick hint how to use:
522NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 531NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
523Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 532Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
524Create syncprofile - mobile device 533Create syncprofile - mobile device
525Remove entry for model. (Leave empty ). 534Remove entry for model. (Leave empty ).
526Enable infrared on Zaurus and your Phone. 535Enable infrared on Zaurus and your Phone.
527Sync. 536Sync.
528To get a more detailed log, start kopi from konsole. 537To get a more detailed log, start kopi from konsole.
529 538
530********** VERSION 1.9.4 ************ 539********** VERSION 1.9.4 ************
531 540
532This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 541This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
533 542
534WARNING: 543WARNING:
535PLEASE BACKUP ALL YOUR DATA! 544PLEASE BACKUP ALL YOUR DATA!
536We have changed a lot and maybe there are some unknown problems. 545We have changed a lot and maybe there are some unknown problems.
537 546
538SYNC HANDLING HAS CHANGED! 547SYNC HANDLING HAS CHANGED!
539Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 548Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
540(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 549(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
541 550
542You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 551You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
543If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well. 552If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well.
544 553
545As programs are available: 554As programs are available:
546KO/Pi (korganizer ipk) - a calendar program. 555KO/Pi (korganizer ipk) - a calendar program.
547KA/Pi (kaddressbook ipk ) - an addressbook 556KA/Pi (kaddressbook ipk ) - an addressbook
548OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 557OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
549 558
550An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 559An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
551(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 560(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
552 561
553All the applications are installed in a "Pim" TAB. 562All the applications are installed in a "Pim" TAB.
554If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk 563If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk
555 564
556All the application are integrated. 565All the application are integrated.
557Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail. 566Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail.
558 567
559HINT: 568HINT:
560If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 569If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
561 570
562What's new? 571What's new?
563 572
564SYNC HANDLING HAS CHANGED! 573SYNC HANDLING HAS CHANGED!
565Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 574Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
566(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 575(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
567 576
568New in OM/Pi: 577New in OM/Pi:
569When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails. 578When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails.
570 579
571New in KO/Pi: 580New in KO/Pi:
572French is now available for KO/Pi. 581French is now available for KO/Pi.
573Choose menu:Actions - Configure:TAB locale 582Choose menu:Actions - Configure:TAB locale
574Syncing has changed. 583Syncing has changed.
575Phone sync available soon. 584Phone sync available soon.
576Not much changes, I cannot remember them ... 585Not much changes, I cannot remember them ...
577 586
578New in KA/Pi: 587New in KA/Pi:
579Beaming possible. 588Beaming possible.
580Sharp DTM readonly access possible( create a new DTM resource ); 589Sharp DTM readonly access possible( create a new DTM resource );
581Better searching possible. 590Better searching possible.
582Search is performed only after pressing the return key. 591Search is performed only after pressing the return key.
583Use wildcard * to specify parts of a name. 592Use wildcard * to specify parts of a name.
584 593
585Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * . 594Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * .
586 595
587A big improvement is the new management of the contact access. 596A big improvement is the new management of the contact access.
588In version 1.9.3, every application was using their own addressbook access data. 597In version 1.9.3, every application was using their own addressbook access data.
589That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi. 598That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi.
590That was wasting of memory, if you had several hundreds of contacts. 599That was wasting of memory, if you had several hundreds of contacts.
591 600
592Now only KA/Pi accesses the addressbook. 601Now only KA/Pi accesses the addressbook.
593If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them. 602If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them.
594If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly. 603If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly.
595That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first. 604That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first.
596 605
597New in the KO/Pi alarm applet: 606New in the KO/Pi alarm applet:
598Configure your own timer popup menu! 607Configure your own timer popup menu!
599(Text and minutes for timer countdown) 608(Text and minutes for timer countdown)
600Just edit the file 609Just edit the file
601(yourhomedir)/.kopialarmtimerrc 610(yourhomedir)/.kopialarmtimerrc
602and start/stop a timer to get a new menu with the data of this file. 611and start/stop a timer to get a new menu with the data of this file.
603 612
604********** VERSION 1.9.3 ************ 613********** VERSION 1.9.3 ************
6051) 6141)
606Now KO/Pi on Windows imports directly the calendar data of 615Now KO/Pi on Windows imports directly the calendar data of
607an installed Outlook. Should work with OL version >= 2000. 616an installed Outlook. Should work with OL version >= 2000.
608 617
609********** VERSION 1.9.2 ************ 618********** VERSION 1.9.2 ************
6101) 6191)
611KDE-Pim/Pi has got a new member: 620KDE-Pim/Pi has got a new member:
612KmicroMail (KM/Pi) is a mail program, 621KmicroMail (KM/Pi) is a mail program,
613which can handle IMAP and POP mail access. 622which can handle IMAP and POP mail access.
614It is based on Opie-Mail v3. 623It is based on Opie-Mail v3.
615All dependencies to the Opie libraries ar removed, 624All dependencies to the Opie libraries ar removed,
616such that no additional Opie lib is needed. 625such that no additional Opie lib is needed.
617It is already integrated in KO/Pi and KA/Pi. 626It is already integrated in KO/Pi and KA/Pi.
618It it now available for the Zaurus,probably it 627It it now available for the Zaurus,probably it
619will be available for other platforms later. 628will be available for other platforms later.
620Hint: 629Hint:
621Create your own contact (name + email) 630Create your own contact (name + email)
622in KA/Pi, select this contact and choose menu: 631in KA/Pi, select this contact and choose menu:
623Settings - Set Who Am I. 632Settings - Set Who Am I.
624Now the settings of this contact are used as 633Now the settings of this contact are used as
625the sender data in KM/Pi. 634the sender data in KM/Pi.
6262) 6352)
627KDE-Pim/Pi is split up in five different 636KDE-Pim/Pi is split up in five different
628packages now precompiled for Sharp Zaurus: 637packages now precompiled for Sharp Zaurus:
629--kmicrokdelibs_1.9.2_arm.ipk 638--kmicrokdelibs_1.9.2_arm.ipk
630The libs are needed for any 639The libs are needed for any
631of the following programs: 640of the following programs:
632--kaddressbook_1.9.2_arm.ipk 641--kaddressbook_1.9.2_arm.ipk
633--kmicromail_1.9.2_arm.ipk 642--kmicromail_1.9.2_arm.ipk
634--korganizer_1.9.2_arm.ipk 643--korganizer_1.9.2_arm.ipk
635Independ from that, there is the alarm applet 644Independ from that, there is the alarm applet
636available for KO/Pi, which also offers 645available for KO/Pi, which also offers
637quick access for a new mail or 646quick access for a new mail or
638showing the addressbook.: 647showing the addressbook.:
639--korganizer-alarm_1.9.2_arm.ipk 648--korganizer-alarm_1.9.2_arm.ipk
640Independend means, that the alarm applet 649Independend means, that the alarm applet
641does not need any of the libs or programs above to run. 650does not need any of the libs or programs above to run.
642But it would be quite useless without these programs. 651But it would be quite useless without these programs.
643NOTE: 652NOTE:
644If you get a 653If you get a
645"This application depends on other programs" 654"This application depends on other programs"
646during installation of 655during installation of
647--kmicrokdelibs_1.9.2_arm.ipk 656--kmicrokdelibs_1.9.2_arm.ipk
648you probably do not have to care about that. 657you probably do not have to care about that.
649kmicrokdelibs_1.9.2 will come with some 658kmicrokdelibs_1.9.2 will come with some
650resource plugins, which needs additional libraries. 659resource plugins, which needs additional libraries.
651(E.g. libopie1, if you want to use the 660(E.g. libopie1, if you want to use the
652opie resource connector in KA/Pi). 661opie resource connector in KA/Pi).
653If you do not have this libraries installed, 662If you do not have this libraries installed,
654you simply cannot use the resource. 663you simply cannot use the resource.
655To make it clear: 664To make it clear:
656If the libraries are missing, the applications 665If the libraries are missing, the applications
657using kmicrokdelibs will start, 666using kmicrokdelibs will start,
658because the resources are plugins. 667because the resources are plugins.
6593) 6683)
660KO/Pi and friends are now installable on SD-Card! 669KO/Pi and friends are now installable on SD-Card!
661It is recommended to install all libs and apps 670It is recommended to install all libs and apps
662on the SD card or all in the internal storage. 671on the SD card or all in the internal storage.
663There may be problems, if this is mixed. 672There may be problems, if this is mixed.
6644) 6734)
665Fixed two bugs in the alarm notification on Windows. 674Fixed two bugs in the alarm notification on Windows.
6665) 6755)
667Great improvement! 676Great improvement!
668KO/Pi uses now the latest version of libical. 677KO/Pi uses now the latest version of libical.
669Libical is the library which actually reads 678Libical is the library which actually reads
670the calendar files and extract the data from it. 679the calendar files and extract the data from it.
671With the old version, there were problems 680With the old version, there were problems
672(crashes or program hangs) when licical did read 681(crashes or program hangs) when licical did read
673files, which were not stored from KO/Pi. 682files, which were not stored from KO/Pi.
674I do not know, if the new libical works perfect, 683I do not know, if the new libical works perfect,
675but actually it works much better than 684but actually it works much better than
676the old version. 685the old version.
677There are no problems with compatibility with 686There are no problems with compatibility with
678old calendar files of KO/Pi, of course! 687old calendar files of KO/Pi, of course!
6796) 6886)
680New in KA/Pi: 689New in KA/Pi:
681Opie addressbook resource connector available! 690Opie addressbook resource connector available!
682You will need libopie1 and the opie addressbook, 691You will need libopie1 and the opie addressbook,
683of course. 692of course.
684With the Opie addressbook resource connector, 693With the Opie addressbook resource connector,
685you can access the Opie addressbook readonly in KA/Pi. 694you can access the Opie addressbook readonly in KA/Pi.
686If you want to edit or import the data into KA/Pi, 695If you want to edit or import the data into KA/Pi,
687do this: 696do this:
688a) Create an Opie resource. 697a) Create an Opie resource.
689 (Menu: Settings-Configure Resources). 698 (Menu: Settings-Configure Resources).
690After configuration and restarting KA/Pi you should see 699After configuration and restarting KA/Pi you should see
691the Opie contacts in KA/Pi. 700the Opie contacts in KA/Pi.
692b) Select some or all Opie contacts. 701b) Select some or all Opie contacts.
693(NOTE: +++++ 702(NOTE: +++++
694To know exactly, what contacts are Opie contacts, 703To know exactly, what contacts are Opie contacts,
695do this: Choose menu: 704do this: Choose menu:
696View-Modify View - TAB Fields. 705View-Modify View - TAB Fields.
697Select in the above list "Resource" and click 706Select in the above list "Resource" and click
698down arrow to add it to the "Selected fields". 707down arrow to add it to the "Selected fields".
699Click OK. 708Click OK.
700Now you have a new column "Resource" in your list, 709Now you have a new column "Resource" in your list,
701where you can see, what an Opie resource is. 710where you can see, what an Opie resource is.
702++++ NOTE end.) 711++++ NOTE end.)
703Ok, we do have now some Opie contacts seleted. 712Ok, we do have now some Opie contacts seleted.
704(Use SHIFT or CTRL key in order to multiple select). 713(Use SHIFT or CTRL key in order to multiple select).
705c) Choose menu: Edit-Copy. 714c) Choose menu: Edit-Copy.
706d) Choose menu: Edit-Paste. 715d) Choose menu: Edit-Paste.
707e) Select the resource, you want to add the contacts to. 716e) Select the resource, you want to add the contacts to.
708Congrats! Now you have read/write access to the copied 717Congrats! Now you have read/write access to the copied
709opie contacts as "real" KA/Pi contacts. 718opie contacts as "real" KA/Pi contacts.
710 719
711 720
712********** VERSION 1.9.1 ************ 721********** VERSION 1.9.1 ************
7131) 7221)
714 +++ IMPORTANT 1 +++ 723 +++ IMPORTANT 1 +++
715 724
716The storing place of the default calendar 725The storing place of the default calendar
717file has changed! 726file has changed!
718The default calendar file was 727The default calendar file was
719Applications/korganizer/mycalendar.ics 728Applications/korganizer/mycalendar.ics
720on Zaurus and 729on Zaurus and
721(yourHomeDir)/korganizer/mycalendar.ics 730(yourHomeDir)/korganizer/mycalendar.ics
722on Windows/Linux desktop. Now it is 731on Windows/Linux desktop. Now it is
723(yourHomeDir)/kdepim/korganizer/mycalendar.ics 732(yourHomeDir)/kdepim/korganizer/mycalendar.ics
724on Zaurus, Windows and Linux. 733on Zaurus, Windows and Linux.
725To load the old file, choose menu 734To load the old file, choose menu
726File-Load calendar backup. 735File-Load calendar backup.
727(It should be loaded automatically 736(It should be loaded automatically
728at startup with a warning message displayed). 737at startup with a warning message displayed).
729The place of the configuration file has changed too. 738The place of the configuration file has changed too.
730If you want to use your old KO/Pi config, 739If you want to use your old KO/Pi config,
731copy it to 740copy it to
732(yourHomeDir)/kdepim/config/korganizerrc 741(yourHomeDir)/kdepim/config/korganizerrc
733Please read VERSION 1.9.0 - topic 3) as well! 742Please read VERSION 1.9.0 - topic 3) as well!
734 743
735 +++ IMPORTANT 2 +++ 744 +++ IMPORTANT 2 +++
736 745
737Because of the new paths, you will need 746Because of the new paths, you will need
738a new version of the KO/Pi alarm applet 747a new version of the KO/Pi alarm applet
739for Zaurus. 748for Zaurus.
740Use version >= 1.9.1 749Use version >= 1.9.1
741 750
7422) 7512)
743Now the QWhat'sThis Icon works for items 752Now the QWhat'sThis Icon works for items
744in the month view as well. 753in the month view as well.
745(See VERSION 1.7.8 Topic 1) ). 754(See VERSION 1.7.8 Topic 1) ).
7463) 7553)
747You can import birtsdays/anniversaries 756You can import birtsdays/anniversaries
748from KA/Pi into KO/Pi. 757from KA/Pi into KO/Pi.
749Choose menu File-Import birthdays. 758Choose menu File-Import birthdays.
750If you import twice, already imported items 759If you import twice, already imported items
751will not be imported again, if they 760will not be imported again, if they
752have not been changed in KO/Pi. 761have not been changed in KO/Pi.
7534) 7624)
754When syncing with sharp DTM, now a progress 763When syncing with sharp DTM, now a progress
755is shown, when the data is written back. 764is shown, when the data is written back.
756If there is much data in KO/Pi and no data 765If there is much data in KO/Pi and no data
757in DTM, that can take a long time. 766in DTM, that can take a long time.
758(But only for the first time ). 767(But only for the first time ).
7595) 7685)
760In the search dialog, you can search 769In the search dialog, you can search
761now for the name/email of an attendee 770now for the name/email of an attendee
762of an event/todo. 771of an event/todo.
763To get more space for displaying 772To get more space for displaying
764search results, the buttons 773search results, the buttons
765for "search" and "close" on the 774for "search" and "close" on the
766bottom are removed in the PDA version. 775bottom are removed in the PDA version.
767You have to click OK in the top right 776You have to click OK in the top right
768corner to do a search. 777corner to do a search.
7696) 7786)
770Now it is possible to disable the displaying 779Now it is possible to disable the displaying
771of todo items in the Allday part of the Agenda. 780of todo items in the Allday part of the Agenda.
772Choose Menu Action-Configure, 781Choose Menu Action-Configure,
773TAB Todo View, checkbox 782TAB Todo View, checkbox
774"Allday Agenda view shows todos" 783"Allday Agenda view shows todos"
7757) 7847)
776If FastLoad is enabled, now the settings and the 785If FastLoad is enabled, now the settings and the
777calendar data are saved, when KO/Pi is closed. 786calendar data are saved, when KO/Pi is closed.
778(If no Fastload is enabled, KO/Pi saves 787(If no Fastload is enabled, KO/Pi saves
779the data as well, of course) 788the data as well, of course)
7808) 7898)
781The Agenda View has a minimize-splitter now, 790The Agenda View has a minimize-splitter now,
782such that the height of the allday part can be 791such that the height of the allday part can be
783changed quickly. 792changed quickly.
784 793
785********** VERSION 1.9.0 ************ 794********** VERSION 1.9.0 ************
7861) 7951)
787KO/Pi is now merged with the new microKDE from KA/Pi. 796KO/Pi is now merged with the new microKDE from KA/Pi.
788KO/Pi accesses now KA/Pi as the addressbook. 797KO/Pi accesses now KA/Pi as the addressbook.
789The other ddressbook-plugins are not working any longer. 798The other ddressbook-plugins are not working any longer.
790(It is planned, that later KA/Pi itself uses these plugins) 799(It is planned, that later KA/Pi itself uses these plugins)
791New versions of KO/Pi are only available 800New versions of KO/Pi are only available
792together with KA/Pi as the KDE-Pim/Pi package. 801together with KA/Pi as the KDE-Pim/Pi package.
7932) 8022)
794If you click on an attendee of a meeting in the 803If you click on an attendee of a meeting in the
795event viewer, a detailed summary of the 804event viewer, a detailed summary of the
796attendee is shown. 805attendee is shown.
7973) 8063)
798The place of the configuration file has changed. 807The place of the configuration file has changed.
799If you want to use your old KO/Pi config, copy 808If you want to use your old KO/Pi config, copy
800Applications/korganizer/config_korganizerrc 809Applications/korganizer/config_korganizerrc
801to 810to
802Applications/korganizer/config/korganizerrc 811Applications/korganizer/config/korganizerrc
803 812
804********** VERSION 1.7.8 ************ 813********** VERSION 1.7.8 ************
8051) 8141)
806Now the QWhat'sThis ist working. 815Now the QWhat'sThis ist working.
807Enable the QWhat'sThis icon in the toolbar. 816Enable the QWhat'sThis icon in the toolbar.
808(You have to restart to reload the changed toolbar config). 817(You have to restart to reload the changed toolbar config).
809Now click on the QWhat'sThis Icon 818Now click on the QWhat'sThis Icon
810in the top right corner of KO/Pi. 819in the top right corner of KO/Pi.
811Then click on an item in the Agenda View: 820Then click on an item in the Agenda View:
812You will get a detailed display of the items content. 821You will get a detailed display of the items content.
8132) 8222)
814Some other very minor changes. 823Some other very minor changes.
815But I have forgotten the details ... 824But I have forgotten the details ...
816For that reason I start this log here: 825For that reason I start this log here:
817To document my changes, when I am doing it. 826To document my changes, when I am doing it.
818 827
819********** VERSION 1.7.7 ************ 828********** VERSION 1.7.7 ************
820Stable Version of KO/Pi 829Stable Version of KO/Pi
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt
index 2f449ef..3a1b2f4 100644
--- a/bin/kdepim/kaddressbook/germantranslation.txt
+++ b/bin/kdepim/kaddressbook/germantranslation.txt
@@ -1,714 +1,719 @@
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 (gender undefined)","ALIEN (Geschlecht unbekannt)" }, 97{ "ALIEN (gender undefined)","ALIEN (Geschlecht unbekannt)" },
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","Hinzufügen" }, 108{ "Add","Hinzufügen" },
109{ "Remove","Entfernen" }, 109{ "Remove","Entfernen" },
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","Geschäft" }, 117{ "Work","Geschäft" },
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","Wähle Kategorien" }, 145{ "Set Categories for Contacts...","Setze Kategorien für Kontakte..." },
146{ "Edit Categories","Editiere Kategorien" }, 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\nselektiert für Multi-Sync" }, 265{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert 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","Namen Prefix" }, 288{ "Honorific Prefixes","Namen Prefix" },
289{ "Honorific Suffixes","Namen Suffix" }, 289{ "Honorific Suffixes","Namen Suffix" },
290{ "Nick Name","Sptitzname" }, 290{ "Nick Name","Sptitzname" },
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","Büro Telefon" }, 305{ "Business Phone","Büro Telefon" },
306{ "Mobile Phone","Handy" }, 306{ "Mobile Phone","Handy" },
307{ "Home Fax","Privat Fax" }, 307{ "Home Fax","Privat Fax" },
308{ "Business Fax","Büro Fax" }, 308{ "Business Fax","Büro 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 Client" }, 312{ "Mail Client","Mail Client" },
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{ "Honor KDE single click","Benutze KDE Einzelklick" }, 421{ "Honor KDE single click","Benutze KDE Einzelklick" },
422{ "Automatic name parsing for new addressees","Automa. Name Parsen für neue Einträge" }, 422{ "Automatic name parsing for new addressees","Automa. Name Parsen für neue Einträge" },
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{ "Ask for quit when closing Ka/Pi","Vor Beenden von Ka/Pi nachfragen" }, 424{ "Ask for quit when closing Ka/Pi","Vor Beenden von Ka/Pi nachfragen" },
425{ "General","Algemein" }, 425{ "General","Algemein" },
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 Beginn:" }, 459{ "Daylight start:","Sommerzeit Beginn:" },
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{ "contacts successfully imported.","Kontakte erfolgreich importiert." }, 587{ "contacts successfully imported.","Kontakte erfolgreich importiert." },
588{ "Import xml file","Importiere xml Datei" }, 588{ "Import xml file","Importiere xml Datei" },
589{ "Choose contact selection","Wähle Kontakt Auswahl" }, 589{ "Choose contact selection","Wähle Kontakt Auswahl" },
590{ "Select the entire address book","Wähle das ganze Adressbuch" }, 590{ "Select the entire address book","Wähle das ganze Adressbuch" },
591{ "Only contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected.","Nur in KA/Pi selektierte Kontate.\nDiese Option ist nicht verfügbar\nwhen keine Kontakte selektiert sind." }, 591{ "Only contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected.","Nur in KA/Pi selektierte Kontate.\nDiese Option ist nicht verfügbar\nwhen keine Kontakte selektiert sind." },
592{ "Only contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters","Nur Kontakte die auf den Filter zutreffen.\nDiese Option ist nicht verfügbar, wenn keine Filter definiert sind." }, 592{ "Only contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters","Nur Kontakte die auf den Filter zutreffen.\nDiese Option ist nicht verfügbar, wenn keine Filter definiert sind." },
593{ "Only contacts who are members of a category that is checked on the list to the left.\nThis option is disabled if you have no categories.","Nur Kontakte die Mitglieder der Kategirien sind,\die links selektiert sind.\nDiese Option ist nicht verfügbar, wenn es keine Kategirien gibt." }, 593{ "Only contacts who are members of a category that is checked on the list to the left.\nThis option is disabled if you have no categories.","Nur Kontakte die Mitglieder der Kategirien sind,\die links selektiert sind.\nDiese Option ist nicht verfügbar, wenn es keine Kategirien gibt." },
594{ "Select a filter to decide which contacts to select.","Selektiere einen Filter um festzulegen welche Kontakte ausgewählt werden sollen." }, 594{ "Select a filter to decide which contacts to select.","Selektiere einen Filter um festzulegen welche Kontakte ausgewählt werden sollen." },
595{ "Check the categories whose members you want to select.","Setzte die Kategorien, dessen Mitglieder Sie auswählen möchten." }, 595{ "Check the categories whose members you want to select.","Setzte die Kategorien, dessen Mitglieder Sie auswählen möchten." },
596{ "I/O device: ","I/O device: " }, 596{ "I/O device: ","I/O device: " },
597{ "Connection: ","Connection: " }, 597{ "Connection: ","Connection: " },
598{ "Model(opt.): ","Model(opt.): " }, 598{ "Model(opt.): ","Model(opt.): " },
599{ "Exporting to phone...","Exportiere aufs Handy..." }, 599{ "Exporting to phone...","Exportiere aufs Handy..." },
600{ "Error exporting to phone","Fehler beim Export aufs Handy" }, 600{ "Error exporting to phone","Fehler beim Export aufs Handy" },
601{ "contacts successfully exported.","Kontakte erfolgreich exportiert." }, 601{ "contacts successfully exported.","Kontakte erfolgreich exportiert." },
602{ "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?","Wollen Sie<br>alle existieren Einträge von<br>%1<br>vor dem Export entfernen?" }, 602{ "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?","Wollen Sie<br>alle existieren Einträge von<br>%1<br>vor dem Export entfernen?" },
603{ "Set formatted name","Setze formatierten Namen" }, 603{ "Set formatted name","Setze formatierten Namen" },
604{ "You can set the formatted name\nfor a list of contacts in one go.","Sie können den formatierten Namen für\nein Liste von Kontakten auf einmal setzen." }, 604{ "You can set the formatted name\nfor a list of contacts in one go.","Sie können den formatierten Namen für\nein Liste von Kontakten auf einmal setzen." },
605{ "Set formatted name to:","Setze formatierten Name auf:" }, 605{ "Set formatted name to:","Setze formatierten Name auf:" },
606{ "Simple: James Bond","Einfach: James Bond" }, 606{ "Simple: James Bond","Einfach: James Bond" },
607{ "Full: Mr. James 007 Bond I","Voll: Mr. James 007 Bond I" }, 607{ "Full: Mr. James 007 Bond I","Voll: Mr. James 007 Bond I" },
608{ "Reverse: Bond, James","Umgekehrt: Bond, James" }, 608{ "Reverse: Bond, James","Umgekehrt: Bond, James" },
609{ "Organization: MI6","Organisation: MI6" }, 609{ "Organization: MI6","Organisation: MI6" },
610{ "Set formatted name to\norganization, if name empty","Setze formatierten Namen auf\nOrganisation, wenn Name leer ist." }, 610{ "Set formatted name to\norganization, if name empty","Setze formatierten Namen auf\nOrganisation, wenn Name leer ist." },
611{ "Select contact list","Selektiere Kontakt Liste" }, 611{ "Select contact list","Selektiere Kontakt Liste" },
612{ "Changing contact #%1","Ändere Kontakt #%1" }, 612{ "Changing contact #%1","Ändere Kontakt #%1" },
613{ "Refreshing view...","Lade Ansicht neu..." }, 613{ "Refreshing view...","Lade Ansicht neu..." },
614{ "Setting formatted name completed!","Setzen vom formatierten Namen beendet!" }, 614{ "Setting formatted name completed!","Setzen vom formatierten Namen beendet!" },
615{ "Removing voice...","Entferne voice..." }, 615{ "Removing voice...","Entferne voice..." },
616{ "Remove voice completed!","Entferne voice beendet!" }, 616{ "Remove voice completed!","Entferne voice beendet!" },
617{ "Merge with existing categories?","Zu bestehenden Kategorien hinzufügen?" }, 617{ "Merge with existing categories?","Zu bestehenden\nKategorien hinzufügen?" },
618{ "Setting categories ... please wait!","Setze Kategorien ... bitte warten!" }, 618{ "Setting categories ... please wait!","Setze Kategorien ... bitte warten!" },
619{ "Setting categories completed!","Setzen der Kategorien beendet!" }, 619{ "Setting categories completed!","Setzen der Kategorien beendet!" },
620{ "OK","OK" }, 620{ "OK","OK" },
621{ "Please wait, processing categories...","Bitte warten, bearbeite Kategorien..." }, 621{ "Please wait, processing categories...","Bitte warten, bearbeite Kategorien..." },
622{ "Processing contact #%1","Bearbeite Kontakt #%1" }, 622{ "Processing contact #%1","Bearbeite Kontakt #%1" },
623{ " categories added to list! "," Kategorien zur Liste hinzugefügt! " }, 623{ " categories added to list! "," Kategorien zur Liste hinzugefügt! " },
624{ "%1: %2","%1: %2" }, 624{ "%1: %2","%1: %2" },
625{ "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n","Ihr persönlicher Kontakt ist\nnicht gesetzt! Bitte selektieren Sie\nihn und setzen ihn mit Menu:\nKonfiguration - Setze wer bin ich\n" }, 625{ "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n","Ihr persönlicher Kontakt ist\nnicht gesetzt! Bitte selektieren Sie\nihn und setzen ihn mit Menu:\nKonfiguration - Setze wer bin ich\n" },
626{ "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>","<qt>Wollen Sie wirklich<br><b>%1</b><br>als persönlichen Kontakt setzent?</qt>" }, 626{ "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>","<qt>Wollen Sie wirklich<br><b>%1</b><br>als persönlichen Kontakt setzent?</qt>" },
627{ "Cut","Ausschneiden" }, 627{ "Cut","Ausschneiden" },
628{ "Paste","Einfügen" }, 628{ "Paste","Einfügen" },
629{ "Delete","Löschen" }, 629{ "Delete","Löschen" },
630{ "Choose...","Wähle..." }, 630{ "Choose...","Wähle..." },
631{ "Add View","Ansicht hinzufügen" }, 631{ "Add View","Ansicht hinzufügen" },
632{ "View name:","Ansicht Name:" }, 632{ "View name:","Ansicht Name:" },
633{ "View Type","Ainsicht Typ" }, 633{ "View Type","Ainsicht Typ" },
634{ "Icons represent contacts. Very simple view.","Icons repräsentieren Kontakte. Sehr einfache Ansicht." }, 634{ "Icons represent contacts. Very simple view.","Icons repräsentieren Kontakte. Sehr einfache Ansicht." },
635{ "A listing of contacts in a table. Each cell of the table holds a field of the contact.","Eine Kontaktliste in einer Tabelle." }, 635{ "A listing of contacts in a table. Each cell of the table holds a field of the contact.","Eine Kontaktliste in einer Tabelle." },
636{ "Rolodex style cards represent contacts.","Rolodex Stil Karten repräsentieren Kontakte." }, 636{ "Rolodex style cards represent contacts.","Rolodex Stil Karten repräsentieren Kontakte." },
637{ "Draw &separators","Zeichne &Trennlinie" }, 637{ "Draw &separators","Zeichne &Trennlinie" },
638{ "Separator &width:","Trennlinien &Breite:" }, 638{ "Separator &width:","Trennlinien &Breite:" },
639{ "&Padding:","Füllung:" }, 639{ "&Padding:","Füllung:" },
640{ "Cards","Karten" }, 640{ "Cards","Karten" },
641{ "&Margin:","&Rand:" }, 641{ "&Margin:","&Rand:" },
642{ "Draw &borders","Zeichne Ränder" }, 642{ "Draw &borders","Zeichne Ränder" },
643{ "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." }, 643{ "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." },
644{ "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." }, 644{ "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." },
645{ "Sets the width of column separators","Sets the width of column separators" }, 645{ "Sets the width of column separators","Sets the width of column separators" },
646{ "&Layout","&Layout" }, 646{ "&Layout","&Layout" },
647{ "Show &empty fields","Zeige leere Felder" }, 647{ "Show &empty fields","Zeige leere Felder" },
648{ "Show field &labels","Zeige Feld Label" }, 648{ "Show field &labels","Zeige Feld Label" },
649{ "Be&havior","Ver&halten" }, 649{ "Be&havior","Ver&halten" },
650{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" }, 650{ "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" },
651{ "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" }, 651{ "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" },
652{ "Confirm Delete","Bestätige Löschen" }, 652{ "Confirm Delete","Bestätige Löschen" },
653{ "Edit Address Book Filter","Editiere Adressbuch Filter" }, 653{ "Edit Address Book Filter","Editiere Adressbuch Filter" },
654{ "Category rule","Kategorie Regel" }, 654{ "Category rule","Kategorie Regel" },
655{ "Include categories","Schließe Kategorien ein" }, 655{ "Include categories","Inklusive" },
656{ "Exclude categories","Schließe Kategorien aus" }, 656{ "Exclude categories","Exclusive" },
657{ "Include contacts, that are:","Schließe folgende Kontakte ein:" }, 657{ "Include contacts, that are:","Schließe folgende Kontakte ein:" },
658{ "public","Öffentlich" }, 658{ "public","Öffentlich" },
659{ "private","Privat" }, 659{ "private","Privat" },
660{ "confidential","Vertraulich" }, 660{ "confidential","Vertraulich" },
661{ "Configure Resources","Konfiguriere Resourcen" }, 661{ "Configure Resources","Konfiguriere Resourcen" },
662{ "Resource Configuration","Resource Konfiguration" }, 662{ "Resource Configuration","Resource Konfiguration" },
663{ "Resources","Resourcen" }, 663{ "Resources","Resourcen" },
664{ "Standard","Standard" }, 664{ "Standard","Standard" },
665{ "&Use as Standard","Setze als Standard" }, 665{ "&Use as Standard","Setze als Standard" },
666{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" }, 666{ "Select type of the new resource:","Selektiere Typ der neuen Resource:" },
667{ "General Settings","Allgemeine Einstellungen" }, 667{ "General Settings","Allgemeine Einstellungen" },
668{ "Read-only","Nur-Lesen" }, 668{ "Read-only","Nur-Lesen" },
669{ "Include in sync","Schließe in Sync mit ein" }, 669{ "Include in sync","Schließe in Sync mit ein" },
670{ "%1 Resource Settings","%1 Resource Einstellungen" }, 670{ "%1 Resource Settings","%1 Resource Einstellungen" },
671{ "Format:","Format:" }, 671{ "Format:","Format:" },
672{ "Location:","Ort:" }, 672{ "Location:","Ort:" },
673{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" }, 673{ "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" },
674{ "Language","Sprache" }, 674{ "Language","Sprache" },
675{ "Time Format","Zeit Format" }, 675{ "Time Format","Zeit Format" },
676{ "Time Zone","Zeit Zone" }, 676{ "Time Zone","Zeit Zone" },
677{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Ihr gerade genutztes Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverzeichnis)/apps/kopiemail/localmail" }, 677{ "Data storage path","Daten Speicherpfad" },
678{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" }, 678{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
679{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" }, 679{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
680{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
680{ "Save settings","Speichere Einstellungen" }, 681{ "Save settings","Speichere Einstellungen" },
681{ "Save standard","Speichere Standard" }, 682{ "Save standard","Speichere Standard" },
683{ "Save","Speichern" },
682{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 684{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
683{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" }, 685{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
684{ "Data storage path","Daten Speicherpfad" },
685{ "Multiple Sync options","Multi Sync Optionen" }, 686{ "Multiple Sync options","Multi Sync Optionen" },
686{ "Sync algo options","Sync Ablauf Optionen" }, 687{ "Sync algo options","Sync Ablauf Optionen" },
687{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 688{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
688{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 689{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
689{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 690{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
690{ "Write back options","Optionen zum Zurückschreiben" }, 691{ "Write back options","Optionen zum Zurückschreiben" },
691{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 692{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
692{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 693{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
693{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 694{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
694{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 695{ "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" }, 696{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
696{ "Time period","Zeitspanne" }, 697{ "Time period","Zeitspanne" },
697{ "From ","Von " }, 698{ "From ","Von " },
698{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 699{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
699{ " weeks in the future "," Wochen in der Zukunft " }, 700{ " weeks in the future "," Wochen in der Zukunft " },
700{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 701{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
701{ "Local temp file:","Lokale temp Datei:" }, 702{ "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!" }, 703{ "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!" }, 704{ "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." }, 705{ "You cannot remove your standard resource!\n Please select a new standard resource first.","Standard Resource kann\nnicht entfernt werden!\nBitte eine andere Resource\nals Standard setzen." },
705{ "Sorry","Tut mir leid" }, 706{ "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!" }, 707{ "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" }, 708{ "Please restart to get the \nchanged resources (re)loaded!\n","Bitte starten Sie jetzt\ndas Programm neu, um die geänderten\nResourcen neu zu laden!\n" },
708{ "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\nkeine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" }, 709{ "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\nkeine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" },
709{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" }, 710{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" },
711{ "Some changes are only\neffective after a restart!\n","Einige Änderungen werden erst\nnach einem Neustart übernommen!\n" },
712{ "","" },
713{ "","" },
714{ "","" },
710{ "","" }, 715{ "","" },
711{ "","" }, 716{ "","" },
712{ "","" }, 717{ "","" },
713{ "","" }, 718{ "","" },
714{ "","" }, \ No newline at end of file 719{ "","" }, \ No newline at end of file
diff --git a/bin/kdepim/kopiemail/germantranslation.txt b/bin/kdepim/kopiemail/germantranslation.txt
index 68dc6db..58f4ea8 100644
--- a/bin/kdepim/kopiemail/germantranslation.txt
+++ b/bin/kdepim/kopiemail/germantranslation.txt
@@ -1,274 +1,274 @@
1{ " Local Time"," Locale Zeit" }, 1{ " Local Time"," Locale Zeit" },
2{ "Preferences","Vorlieben" }, 2{ "Preferences","Vorlieben" },
3{ "Ok","Ok" }, 3{ "Ok","Ok" },
4{ "Default","Standard" }, 4{ "Default","Standard" },
5{ "Cancel","Abbrechen" }, 5{ "Cancel","Abbrechen" },
6{ "Global","Global" }, 6{ "Global","Global" },
7{ "Email","Email" }, 7{ "Email","Email" },
8{ "Phone","Phone" }, 8{ "Phone","Phone" },
9{ "SMS","SMS" }, 9{ "SMS","SMS" },
10{ "Fax","Fax" }, 10{ "Fax","Fax" },
11{ "Pager","Pager" }, 11{ "Pager","Pager" },
12{ "SIP","SIP" }, 12{ "SIP","SIP" },
13{ "Language:(needs restart)","Sprache (Neustart!)" }, 13{ "Language:(needs restart)","Sprache (Neustart!)" },
14{ "English","Englisch" }, 14{ "English","Englisch" },
15{ "German","Deutsch" }, 15{ "German","Deutsch" },
16{ "French","Französich" }, 16{ "French","Französich" },
17{ "Italian","Italienisch" }, 17{ "Italian","Italienisch" },
18{ "User defined (usertranslation.txt)","Benutzerdef.(usertranslation.txt)" }, 18{ "User defined (usertranslation.txt)","Benutzerdef.(usertranslation.txt)" },
19{ "Time Format(nr):","Zeit Format(Neustart!)" }, 19{ "Time Format(nr):","Zeit Format(Neustart!)" },
20{ "24:00","24:00" }, 20{ "24:00","24:00" },
21{ "12:00am","12:00am" }, 21{ "12:00am","12:00am" },
22{ "Week starts on Sunday","Woche beginnt Sonntags" }, 22{ "Week starts on Sunday","Woche beginnt Sonntags" },
23{ "Locale","Localisation" }, 23{ "Locale","Localisation" },
24{ "Date Format:","Datums Format:" }, 24{ "Date Format:","Datums Format:" },
25{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 25{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
26{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 26{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
27{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 27{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
28{ "User defined","Benutzerdefiniert" }, 28{ "User defined","Benutzerdefiniert" },
29{ "User long date:","Format langes Datum:" }, 29{ "User long date:","Format langes Datum:" },
30{ "User short date:","Format kurzes Datum:" }, 30{ "User short date:","Format kurzes Datum:" },
31{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" }, 31{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" },
32{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 32{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
33{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 33{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
34{ "Date Format","Datums Format" }, 34{ "Date Format","Datums Format" },
35{ "Timezone:","Zeitzone:" }, 35{ "Timezone:","Zeitzone:" },
36{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 36{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
37{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 37{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
38{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 38{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
39{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 39{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
40{ "Daylight start:","Sommerzeit Beginn:" }, 40{ "Daylight start:","Sommerzeit Beginn:" },
41{ "Mon","Mo" }, 41{ "Mon","Mo" },
42{ "Tue","Di" }, 42{ "Tue","Di" },
43{ "Wed","Mi" }, 43{ "Wed","Mi" },
44{ "Thu","Do" }, 44{ "Thu","Do" },
45{ "Fri","Fr" }, 45{ "Fri","Fr" },
46{ "Sat","Sa" }, 46{ "Sat","Sa" },
47{ "Sun","So" }, 47{ "Sun","So" },
48{ "January","Januar" }, 48{ "January","Januar" },
49{ "February","Februar" }, 49{ "February","Februar" },
50{ "March","März" }, 50{ "March","März" },
51{ "April","April" }, 51{ "April","April" },
52{ "May","Mai" }, 52{ "May","Mai" },
53{ "June","Juni" }, 53{ "June","Juni" },
54{ "July","Juli" }, 54{ "July","Juli" },
55{ "August","August" }, 55{ "August","August" },
56{ "September","September" }, 56{ "September","September" },
57{ "October","Oktober" }, 57{ "October","Oktober" },
58{ "November","November" }, 58{ "November","November" },
59{ "December","Dezember" }, 59{ "December","Dezember" },
60{ "tomorrow","morgen" }, 60{ "tomorrow","morgen" },
61{ "today","heute" }, 61{ "today","heute" },
62{ "yesterday","gestern" }, 62{ "yesterday","gestern" },
63{ "Monday","Montag" }, 63{ "Monday","Montag" },
64{ "Tuesday","Dienstag" }, 64{ "Tuesday","Dienstag" },
65{ "Wednesday","Mittwoch" }, 65{ "Wednesday","Mittwoch" },
66{ "Thursday","Donnerstag" }, 66{ "Thursday","Donnerstag" },
67{ "Friday","Freitag" }, 67{ "Friday","Freitag" },
68{ "Saturday","Samstag" }, 68{ "Saturday","Samstag" },
69{ "Sunday","Sonntag" }, 69{ "Sunday","Sonntag" },
70{ "Daylight end:","Sommerzeit Ende:" }, 70{ "Daylight end:","Sommerzeit Ende:" },
71{ "Time Zone","Zeitzone" }, 71{ "Time Zone","Zeitzone" },
72{ "Used Mail Client","Benutzter Mail Client" }, 72{ "Used Mail Client","Benutzter Mail Client" },
73{ "Channel:","Channel:" }, 73{ "Channel:","Channel:" },
74{ "Message:","Message:" }, 74{ "Message:","Message:" },
75{ "Parameters:","Parameter:" }, 75{ "Parameters:","Parameter:" },
76{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 76{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
77{ "extra Message:","extra Message:" }, 77{ "extra Message:","extra Message:" },
78{ "extra Parameters:","extra Parameter:" }, 78{ "extra Parameters:","extra Parameter:" },
79{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 79{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
80{ "External Apps.","Externe Appl." }, 80{ "External Apps.","Externe Appl." },
81{ "General","Allgemein" }, 81{ "General","Allgemein" },
82{ "Full &name:","Vor- und &Nachname:" }, 82{ "Full &name:","Vor- und &Nachname:" },
83{ "E&mail address:","E&mail Adresse:" }, 83{ "E&mail address:","E&mail Adresse:" },
84{ "Fonts","Schriftart" }, 84{ "Fonts","Schriftart" },
85{ "Choose...","Wähle..." }, 85{ "Choose...","Wähle..." },
86{ "Used %1 Client","Benutzter %1 Client" }, 86{ "Used %1 Client","Benutzter %1 Client" },
87{ "No email client installed","Kein Email Klient installiert" }, 87{ "No email client installed","Kein Email Klient installiert" },
88{ "Userdefined email client","Benutzerdef. Email Klient" }, 88{ "Userdefined email client","Benutzerdef. Email Klient" },
89{ "OM/Pi email client","OM/Pi Email Klient" }, 89{ "OM/Pi email client","OM/Pi Email Klient" },
90{ "Delete","Löschen" }, 90{ "Delete","Löschen" },
91{ "New","Neu" }, 91{ "New","Neu" },
92{ "Edit","Bearbeite" }, 92{ "Edit","Bearbeite" },
93{ "Close","Schließen" }, 93{ "Close","Schließen" },
94{ "Size","Größe" }, 94{ "Size","Größe" },
95{ "Date","Datum" }, 95{ "Date","Datum" },
96{ "Please set at","Bitte einstellen in" }, 96{ "Please set at","Bitte einstellen in" },
97{ "Settings@General TAB","Einstellungen@Allgemein TAB" }, 97{ "Settings@General TAB","Einstellungen@Allgemein TAB" },
98{ "KOpieMail/Pi","KOpieMail/Pi" }, 98{ "KOpieMail/Pi","KOpieMail/Pi" },
99{ "Mail","Mail" }, 99{ "Mail","Mail" },
100{ "Settings","Konfig" }, 100{ "Settings","Konfig" },
101{ "Get all new mails","Hole alle neuen Mails" }, 101{ "Get all new mails","Hole alle neuen Mails" },
102{ "Get new messages","Hole neue mails" }, 102{ "Get new messages","Hole neue mails" },
103{ "Compose new mail","Schreibe neue Mail" }, 103{ "Compose new mail","Schreibe neue Mail" },
104{ "Send queued mails","Sende gespeicherte Mails" }, 104{ "Send queued mails","Sende gespeicherte Mails" },
105{ "Show/Hide folders","Zeige Verzeichnisse" }, 105{ "Show/Hide folders","Zeige Verzeichnisse" },
106{ "Delete Mail","Lösche Mail" }, 106{ "Delete Mail","Lösche Mail" },
107{ "Edit settings","Ändere Einstellungen" }, 107{ "Edit settings","Ändere Einstellungen" },
108{ "Configure accounts","Konfiguriere Zugänge" }, 108{ "Configure accounts","Konfiguriere Zugänge" },
109{ "Mailbox","Mailbox" }, 109{ "Mailbox","Mailbox" },
110{ "Subject","Betreff" }, 110{ "Subject","Betreff" },
111{ "Sender","Sender" }, 111{ "Sender","Sender" },
112{ "Size","Größe" }, 112{ "Size","Größe" },
113{ "Date","Datum" }, 113{ "Date","Datum" },
114{ "Close","Schliessen" }, 114{ "Close","Schliessen" },
115{ "Help","Hilfe" }, 115{ "Help","Hilfe" },
116{ "About","Über" }, 116{ "About","Über" },
117{ "Licence","Lizenz" }, 117{ "Licence","Lizenz" },
118{ "LibEtPan Licence","LibEtPan Lizenz" }, 118{ "LibEtPan Licence","LibEtPan Lizenz" },
119{ "Settings - some need a restart (nr)","Einstellungen - manche benötigen einen Neustart (nr)" }, 119{ "Settings - some need a restart (nr)","Einstellungen - manche benötigen einen Neustart (nr)" },
120{ "HINT: Separate multiple\neMail addresses by ";"","Hinweis:Trenne mehrere\nAddressen mit einem ";"" }, 120{ "HINT: Separate multiple\neMail addresses by ";"","Hinweis:Trenne mehrere\nAddressen mit einem ";"" },
121{ "Ignore above settings and\nuse KA/Pi "Who am I" instead!","Ignoriere obige Einstellungen und\nbenutze KA/Pi "Wer bin ich"\nstattdessen!" }, 121{ "Ignore above settings and\nuse KA/Pi "Who am I" instead!","Ignoriere obige Einstellungen und\nbenutze KA/Pi "Wer bin ich"\nstattdessen!" },
122{ "View mail as html","Zeige Mails als html" }, 122{ "View mail as html","Zeige Mails als html" },
123{ "Send mails later","Sende Mails später" }, 123{ "Send mails later","Sende Mails später" },
124{ "Application(nr)","Applikation(nr)" }, 124{ "Application(nr)","Applikation(nr)" },
125{ "OK","OK" }, 125{ "OK","OK" },
126{ "Compose mail:","Verfasse Mail:" }, 126{ "Compose mail:","Verfasse Mail:" },
127{ "Dear Mr.","Hallo Herr" }, 127{ "Dear Mr.","Hallo Herr" },
128{ "Read mail:","Lese Mail:" }, 128{ "Read mail:","Lese Mail:" },
129{ "Hello","Hallo" }, 129{ "Hello","Hallo" },
130{ "Configure Accounts","Konfigure Zugänge" }, 130{ "Configure Accounts","Konfigure Zugänge" },
131{ "Name of the Account","Name des Zugangs" }, 131{ "Name of the Account","Name des Zugangs" },
132{ "News","News" }, 132{ "News","News" },
133{ "Account","Zugang" }, 133{ "Account","Zugang" },
134{ "Type","Typ" }, 134{ "Type","Typ" },
135{ "<p>Please select an account.</p>","<p>Bitte wähle einen Zugang.</p>" }, 135{ "<p>Please select an account.</p>","<p>Bitte wähle einen Zugang.</p>" },
136{ "Error","Fehler" }, 136{ "Error","Fehler" },
137{ "Configure NNTP","Konfiguriere News" }, 137{ "Configure NNTP","Konfiguriere News" },
138{ "Port","Port" }, 138{ "Port","Port" },
139{ "Server","Server" }, 139{ "Server","Server" },
140{ "Use SSL","Benutze SSL" }, 140{ "Use SSL","Benutze SSL" },
141{ "User","Benutzer" }, 141{ "User","Benutzer" },
142{ "Password","Passwort" }, 142{ "Password","Passwort" },
143{ "Use Login","Benutze Login" }, 143{ "Use Login","Benutze Login" },
144{ "Newsgroup","Newsgroup" }, 144{ "Newsgroup","Newsgroup" },
145{ "Get newsgroup list from server","Hole Newsgroup Liste vom Server" }, 145{ "Get newsgroup list from server","Hole Newsgroup Liste vom Server" },
146{ "Filter:","Filter:" }, 146{ "Filter:","Filter:" },
147{ "Show subscribed","Zeige abbonnierte" }, 147{ "Show subscribed","Zeige abbonnierte" },
148{ "Groups","NewsGroups" }, 148{ "Groups","NewsGroups" },
149{ "Configure IMAP","Konfiguriere IMAP" }, 149{ "Configure IMAP","Konfiguriere IMAP" },
150{ "Use secure sockets:","Benutze sichere Verbindung:" }, 150{ "Use secure sockets:","Benutze sichere Verbindung:" },
151{ "ssh $SERVER exec","ssh $SERVER exec" }, 151{ "ssh $SERVER exec","ssh $SERVER exec" },
152{ "Prefix","Prefix" }, 152{ "Prefix","Prefix" },
153{ "Local storage folder:","Lokales Verzeichnis:" }, 153{ "Local storage folder:","Lokales Verzeichnis:" },
154{ "Get only messages smaller","Hole nur Nachrichten kleiner" }, 154{ "Get only messages smaller","Hole nur Nachrichten kleiner" },
155{ "kB","kB" }, 155{ "kB","kB" },
156{ "Leave Messages on Server","Belasse Nachrichten auf dem Server" }, 156{ "Leave Messages on Server","Belasse Nachrichten auf dem Server" },
157{ "Configure POP3","Konfiguriere POP3" }, 157{ "Configure POP3","Konfiguriere POP3" },
158{ "ssh $SERVER exec imapd","ssh $SERVER exec imapd" }, 158{ "ssh $SERVER exec imapd","ssh $SERVER exec imapd" },
159{ "Configure SMTP","Konfiguriere SMTP" }, 159{ "Configure SMTP","Konfiguriere SMTP" },
160{ "Name of the SMTP Server","Name des SMTP Servers" }, 160{ "Name of the SMTP Server","Name des SMTP Servers" },
161{ "Port of the SMTP Server","Port des SMTP Servers" }, 161{ "Port of the SMTP Server","Port des SMTP Servers" },
162{ "Fetching folder list","Hole Verzeichnis Liste" }, 162{ "Fetching folder list","Hole Verzeichnis Liste" },
163{ "Fetch ","Hole " }, 163{ "Fetch ","Hole " },
164{ "Fetching header list","Hole Titel Liste" }, 164{ "Fetching header list","Hole Titel Liste" },
165{ "Mailbox has %1 mails","Mailbox hat %1 Mails" }, 165{ "Mailbox has %1 mails","Mailbox hat %1 Mails" },
166{ "Read this mail","Lies diese Mail" }, 166{ "Read this mail","Lies diese Mail" },
167{ "Move/Copy this mail","Verschiebe/kopiere diese Mail" }, 167{ "Move/Copy this mail","Verschiebe/kopiere diese Mail" },
168{ "Delete this mail","Lösche diese Mail" }, 168{ "Delete this mail","Lösche diese Mail" },
169{ "Move/Copy all selected mail","Verschiebe/kopiere selektierte Mails" }, 169{ "Move/Copy all selected mail","Verschiebe/kopiere selektierte Mails" },
170{ "Delete all selected mails","Lösche alle selektierten Mails" }, 170{ "Delete all selected mails","Lösche alle selektierten Mails" },
171{ "Clear selection","Selektion aufheben" }, 171{ "Clear selection","Selektion aufheben" },
172{ "Reply","Antworten" }, 172{ "Reply","Antworten" },
173{ "Forward","Weiterleiten" }, 173{ "Forward","Weiterleiten" },
174{ "Attachments","Anhang" }, 174{ "Attachments","Anhang" },
175{ "Show Html","Zeige in html" }, 175{ "Show Html","Zeige in html" },
176{ "Description","Beschreibung" }, 176{ "Description","Beschreibung" },
177{ "Filename","Dateiname" }, 177{ "Filename","Dateiname" },
178{ "E-Mail by %1","E-Mail von %1" }, 178{ "E-Mail by %1","E-Mail von %1" },
179{ "Cc","Kopie" }, 179{ "Cc","Kopie" },
180{ "To","An" }, 180{ "To","An" },
181{ "From","Von" }, 181{ "From","Von" },
182{ "<p>Do you really want to delete this mail? <br><br>","<p>Wollen Sie diese Mail wirklich löschen? <br><br>" }, 182{ "<p>Do you really want to delete this mail? <br><br>","<p>Wollen Sie diese Mail wirklich löschen? <br><br>" },
183{ "Mailbox has %1 mail(s)","Mailbox hat %1 Mail(s)" }, 183{ "Mailbox has %1 mail(s)","Mailbox hat %1 Mail(s)" },
184{ "Move/Copie all mails","Verschiebe/kopiere alle Mails" }, 184{ "Move/Copie all mails","Verschiebe/kopiere alle Mails" },
185{ "Delete all mails","Lösche alle Mails" }, 185{ "Delete all mails","Lösche alle Mails" },
186{ "Create new subfolder","Neues Unterverzeichnis" }, 186{ "Create new subfolder","Neues Unterverzeichnis" },
187{ "Delete folder","Lösche Verzeichnis" }, 187{ "Delete folder","Lösche Verzeichnis" },
188{ "Refresh folder list","Aktualisiere Liste" }, 188{ "Refresh folder list","Aktualisiere Liste" },
189{ "Create new folder","Neues Verzeichnis" }, 189{ "Create new folder","Neues Verzeichnis" },
190{ "Disconnect","Diskonnect" }, 190{ "Disconnect","Diskonnect" },
191{ "Set offline","Gehe offline" }, 191{ "Set offline","Gehe offline" },
192{ "Select target box","Wähle Ziel Box" }, 192{ "Select target box","Wähle Ziel Box" },
193{ "<b>Store mail(s) to</b>","<b>Speichere Mail(s) nach</b>" }, 193{ "<b>Store mail(s) to</b>","<b>Speichere Mail(s) nach</b>" },
194{ "Folder:","Verzeichnis:" }, 194{ "Folder:","Verzeichnis:" },
195{ "Account:","Zugang:" }, 195{ "Account:","Zugang:" },
196{ "Prefix will prepend, do not enter","Pfad-Prefix wird vorangestellt" }, 196{ "Prefix will prepend, do not enter","Pfad-Prefix wird vorangestellt" },
197{ "Move mail(s)","Verschiebe Mail(s)" }, 197{ "Move mail(s)","Verschiebe Mail(s)" },
198{ "only mails smaller","nur Mails kleiner" }, 198{ "only mails smaller","nur Mails kleiner" },
199{ " kB"," kB" }, 199{ " kB"," kB" },
200{ " message %1 of %2"," Nachricht %1 von %2" }, 200{ " message %1 of %2"," Nachricht %1 von %2" },
201{ "Copying...","Am Kopieren..." }, 201{ "Copying...","Am Kopieren..." },
202{ "Copy message %1 of %2","Kopiere Nachricht %1 von %2" }, 202{ "Copy message %1 of %2","Kopiere Nachricht %1 von %2" },
203{ "Do you really want to delete\nall selected mails?","Wollen Sie wirklich alle\nselektierten Mails Löschen?" }, 203{ "Do you really want to delete\nall selected mails?","Wollen Sie wirklich alle\nselektierten Mails Löschen?" },
204{ "Delete All Mails","Lösche alle Mails" }, 204{ "Delete All Mails","Lösche alle Mails" },
205{ "Deleting ...","Am Löschen..." }, 205{ "Deleting ...","Am Löschen..." },
206{ "Delete message %1 of %2","Lösche Nachricht %1 von %2" }, 206{ "Delete message %1 of %2","Lösche Nachricht %1 von %2" },
207{ "Compose Message","Verfasse Nachricht" }, 207{ "Compose Message","Verfasse Nachricht" },
208{ "Reply-To","Antwort-An" }, 208{ "Reply-To","Antwort-An" },
209{ "BCC","BCC" }, 209{ "BCC","BCC" },
210{ "Signature","Signatur" }, 210{ "Signature","Signatur" },
211{ "CC","Kopie" }, 211{ "CC","Kopie" },
212{ "Options","Optionen" }, 212{ "Options","Optionen" },
213{ "Delete File","Lösche Datei" }, 213{ "Delete File","Lösche Datei" },
214{ "Add File","Füge Datei hinzu" }, 214{ "Add File","Füge Datei hinzu" },
215{ "Attachment","Anhang" }, 215{ "Attachment","Anhang" },
216{ "send later","sende später" }, 216{ "send later","sende später" },
217{ "use:","via:" }, 217{ "use:","via:" },
218{ "Save","Speichern" }, 218{ "Save","Speichern" },
219{ "Name","Name" }, 219{ "Name","Name" },
220{ "No Receiver spezified","Kein Empfänger angegeben" }, 220{ "No Receiver spezified","Kein Empfänger angegeben" },
221{ "Sending mail","Sende Mail" }, 221{ "Sending mail","Sende Mail" },
222{ "No","Nein" }, 222{ "No","Nein" },
223{ "Yes","Ja" }, 223{ "Yes","Ja" },
224{ "Store message into drafts?\n","Speichere Nachricht in Entwürfe?\n" }, 224{ "Store message into drafts?\n","Speichere Nachricht in Entwürfe?\n" },
225{ "Store message?","Nachricht speichern?" }, 225{ "Store message?","Nachricht speichern?" },
226{ "Select Type","Selektiere Typ" }, 226{ "Select Type","Selektiere Typ" },
227{ "Select Account Type","Wähle Art des Zugangs" }, 227{ "Select Account Type","Wähle Art des Zugangs" },
228{ "IMAP","IMAP (online lesen)" }, 228{ "IMAP","IMAP (online lesen)" },
229{ "POP3","POP3 (holen)" }, 229{ "POP3","POP3 (holen)" },
230{ "SMTP","SMTP (senden)" }, 230{ "SMTP","SMTP (senden)" },
231{ "<p>Do you really want to delete the selected Account?</p>","<p>Möchten Sie wirklich den ausgewählten Account löschen?</p>" }, 231{ "<p>Do you really want to delete the selected Account?</p>","<p>Möchten Sie wirklich den ausgewählten Account löschen?</p>" },
232{ "Question","Eine Frage..." }, 232{ "Question","Eine Frage..." },
233{ "Send this message?","Nachricht wirklich senden?" }, 233{ "Send this message?","Nachricht wirklich senden?" },
234{ "Stop editing message","Stop editing message" }, 234{ "Stop editing message","Stop editing message" },
235{ "Sending mail %1 of %2","Sende Mail %1 von %2" }, 235{ "Sending mail %1 of %2","Sende Mail %1 von %2" },
236{ "%1 of %2 bytes send","%1 von %2 Bytes gesendet" }, 236{ "%1 of %2 bytes send","%1 von %2 Bytes gesendet" },
237{ "Refresh header list","Aktualisiere Titel Liste" }, 237{ "Refresh header list","Aktualisiere Titel Liste" },
238{ "Define a smtp\n account first!\n","Bitte zuerst einen\nSMTP Account anlegen!\n" }, 238{ "Define a smtp\n account first!\n","Bitte zuerst einen\nSMTP Account anlegen!\n" },
239{ "Mail queue flushed","Gespeicherte Mails gesendet!" }, 239{ "Mail queue flushed","Gespeicherte Mails gesendet!" },
240{ "Please create an\nSMTP account first.\nThe SMTP is needed\nfor sending mail.\n","Bitte legen Sie einen\nSMTP Account an.\nDer SMTP Account wird\nfür das Versenden von\nMails benötigt!" }, 240{ "Please create an\nSMTP account first.\nThe SMTP is needed\nfor sending mail.\n","Bitte legen Sie einen\nSMTP Account an.\nDer SMTP Account wird\nfür das Versenden von\nMails benötigt!" },
241{ "Show next mail","Zeige nächste Mail" }, 241{ "Show next mail","Zeige nächste Mail" },
242{ "End of List","Ende der Liste" }, 242{ "End of List","Ende der Liste" },
243{ "Language","Sprache" }, 243{ "Language","Sprache" },
244{ "Time Format","Zeit Format" }, 244{ "Time Format","Zeit Format" },
245{ "%1 groups subscribed","%1 Guppen abboniert" }, 245{ "%1 groups subscribed","%1 Guppen abboniert" },
246{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Ihr gerade genutztes Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverzeichnis)/apps/kopiemail/localmail" }, 246{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
247{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" }, 247{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
248{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" }, 248{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
249{ "Save settings","Speichere Einstellungen" }, 249{ "Save settings","Speichere Einstellungen" },
250{ "Save standard","Speichere Standard" }, 250{ "Save standard","Speichere Standard" },
251{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 251{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
252{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" }, 252{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
253{ "Data storage path","Daten Speicherpfad" }, 253{ "Data storage path","Daten Speicherpfad" },
254{ "userdefined","benutzerdefiniert" }, 254{ "userdefined","benutzerdefiniert" },
255{ "Reply to this mail","Beantworte diese Mail" }, 255{ "Reply to this mail","Beantworte diese Mail" },
256{ "Su:","Be:" }, 256{ "Su:","Be:" },
257{ "Fr:","Vo:" }, 257{ "Fr:","Vo:" },
258{ "To:","An:" }, 258{ "To:","An:" },
259{ "Download Mail","Mail runterladen" }, 259{ "Download Mail","Mail runterladen" },
260{ "View Source","Zeige Source" }, 260{ "View Source","Zeige Source" },
261{ "Show "To" field in list view","Zeige "An" Feld in Listenansicht" }, 261{ "Show "To" field in list view","Zeige "An" Feld in Listenansicht" },
262{ "Show info fields at startup","Zeige Info Felder beim Start" }, 262{ "Show info fields at startup","Zeige Info Felder beim Start" },
263{ "Show "Subject" info field","Zeige "Betreff" Info Feld" }, 263{ "Show "Subject" info field","Zeige "Betreff" Info Feld" },
264{ "Show "From" info field","Zeige "Von" Info Feld" }, 264{ "Show "From" info field","Zeige "Von" Info Feld" },
265{ "Show "To" info field","Zeige "An" Info Feld" }, 265{ "Show "To" info field","Zeige "An" Info Feld" },
266{ "","" }, 266{ "Mail saved as draft!","Mail als Entwurf gespeichert!" },
267{ "","" }, 267{ "","" },
268{ "","" }, 268{ "","" },
269{ "","" }, 269{ "","" },
270{ "","" }, 270{ "","" },
271{ "","" }, 271{ "","" },
272{ "","" }, 272{ "","" },
273{ "","" }, 273{ "","" },
274{ "","" }, 274{ "","" },
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index 3d16c1a..6a20868 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -1,1203 +1,1201 @@
1{ "10 minutes","10 Minuten" }, 1{ "10 minutes","10 Minuten" },
2{ "10th","10." }, 2{ "10th","10." },
3{ "11th","11." }, 3{ "11th","11." },
4{ "12 pm Format","12 AM/PM Format" }, 4{ "12 pm Format","12 AM/PM Format" },
5{ "12th","12." }, 5{ "12th","12." },
6{ "13th","13." }, 6{ "13th","13." },
7{ "14th","14." }, 7{ "14th","14." },
8{ "15th","15." }, 8{ "15th","15." },
9{ "16th","16." }, 9{ "16th","16." },
10{ "17th","17." }, 10{ "17th","17." },
11{ "18th","18." }, 11{ "18th","18." },
12{ "19th","19." }, 12{ "19th","19." },
13{ "1 Day","1 Tag" }, 13{ "1 Day","1 Tag" },
14{ "1 h","1 Std" }, 14{ "1 h","1 Std" },
15{ "1 (high)","1 (hoch)" }, 15{ "1 (high)","1 (hoch)" },
16{ "5 (low)","5" }, 16{ "5 (low)","5" },
17{ "1st","1." }, 17{ "1st","1." },
18{ "20th","20." }, 18{ "20th","20." },
19{ "21st","21." }, 19{ "21st","21." },
20{ "22nd","22." }, 20{ "22nd","22." },
21{ "23rd","23." }, 21{ "23rd","23." },
22{ "24:00 Hour Format","24:00 Stunden Format" }, 22{ "24:00 Hour Format","24:00 Stunden Format" },
23{ "24th","24." }, 23{ "24th","24." },
24{ "25th","25." }, 24{ "25th","25." },
25{ "26th","26." }, 25{ "26th","26." },
26{ "27th","27." }, 26{ "27th","27." },
27{ "28th","28." }, 27{ "28th","28." },
28{ "29th","29." }, 28{ "29th","29." },
29{ "2nd","2." }, 29{ "2nd","2." },
30{ "30 minutes","30 Minuten" }, 30{ "30 minutes","30 Minuten" },
31{ "30th","30." }, 31{ "30th","30." },
32{ "31st","31." }, 32{ "31st","31." },
33{ "3rd","3." }, 33{ "3rd","3." },
34{ "4th","4." }, 34{ "4th","4." },
35{ "5 (lowest)","5 (Niedrigster)" }, 35{ "5 (lowest)","5 (Niedrigster)" },
36{ "5th","5." }, 36{ "5th","5." },
37{ "6th","6." }, 37{ "6th","6." },
38{ "7th","7." }, 38{ "7th","7." },
39{ "8th","8." }, 39{ "8th","8." },
40{ "9th","9." }, 40{ "9th","9." },
41{ "About...","Über..." }, 41{ "About...","Über..." },
42{ "&Accept","&Akzeptieren" }, 42{ "&Accept","&Akzeptieren" },
43{ "Accept","Akzeptieren" }, 43{ "Accept","Akzeptieren" },
44{ "Accept A&ll","A&lles Akzepieren" }, 44{ "Accept A&ll","A&lles Akzepieren" },
45{ "Access:","Zugriff:" }, 45{ "Access:","Zugriff:" },
46{ "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" }, 46{ "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" },
47{ "Actions","Aktionen" }, 47{ "Actions","Aktionen" },
48{ "Add Filter","Filter Hinzufügen" }, 48{ "Add Filter","Filter Hinzufügen" },
49{ "&Add","Hinzufügen" }, 49{ "&Add","Hinzufügen" },
50{ "Add","Hinzufügen" }, 50{ "Add","Hinzufügen" },
51{ "Additional email addresses:","Zusätzliche E-Mail Adressen:" }, 51{ "Additional email addresses:","Zusätzliche E-Mail Adressen:" },
52{ "Additional email address:","Zusätzliche E-Mail Adresse:" }, 52{ "Additional email address:","Zusätzliche E-Mail Adresse:" },
53{ "&Addressbook","&Adressbuch" }, 53{ "&Addressbook","&Adressbuch" },
54{ "Address &Book...","Adress&buch..." }, 54{ "Address &Book...","Adress&buch..." },
55{ "Agenda Size","Agende Größe" }, 55{ "Agenda Size","Agende Größe" },
56{ "Agenda Size:","Größe der Agenda:" }, 56{ "Agenda Size:","Größe der Agenda:" },
57{ "Agenda view:","Agenda Ansicht:" }, 57{ "Agenda view:","Agenda Ansicht:" },
58{ "Agenda view background color:","Hintergrund der Agenda Ansicht:" }, 58{ "Agenda view background color:","Hintergrund der Agenda Ansicht:" },
59{ "All attendees","Alle Teilnehmer" }, 59{ "All attendees","Alle Teilnehmer" },
60{ "AllDayAgenda Height:","Höhe Ganztages Agenda:" }, 60{ "AllDayAgenda Height:","Höhe Ganztages Agenda:" },
61{ "All day event","Ganztägig" }, 61{ "All day event","Ganztägig" },
62{ "Anonymous","Anonym" }, 62{ "Anonymous","Anonym" },
63{ "Apply","Anwenden" }, 63{ "Apply","Anwenden" },
64{ "Apr","Apr" }, 64{ "Apr","Apr" },
65{ "April","April" }, 65{ "April","April" },
66{"Ask for every entry on conflict","Frage bei Konflikten nach"}, 66{"Ask for every entry on conflict","Frage bei Konflikten nach"},
67{ "Ask for preferences before syncing","Vor dem Syncronisieren nachfragen" }, 67{ "Ask for preferences before syncing","Vor dem Syncronisieren nachfragen" },
68{ "Ask for quit when closing KO/Pi","Vor dem Beenden von KO/Pi nachfragen" }, 68{ "Ask for quit when closing KO/Pi","Vor dem Beenden von KO/Pi nachfragen" },
69{ "Attendees","Teilnehmer" }, 69{ "Attendees","Teilnehmer" },
70{ "Aug","Aug" }, 70{ "Aug","Aug" },
71{ "August","August" }, 71{ "August","August" },
72{ "Auto-Save","Automatisches Abspeichern" }, 72{ "Auto-Save","Automatisches Abspeichern" },
73{ "Auto save delay in minutes:","Verzög.autom.Speichern in Min" }, 73{ "Auto save delay in minutes:","Verzög.autom.Speichern in Min" },
74{ "Auto saving...","Automatische Sicherung..." }, 74{ "Auto saving...","Automatische Sicherung..." },
75{ "Begin on:","Starte mit:" }, 75{ "Begin on:","Starte mit:" },
76{ "Begins on: %1","Starte mit: %1" }, 76{ "Begins on: %1","Starte mit: %1" },
77{ "<b>From:</b> %1 <b>To:</b> %2","<b>Vom:</b> %1 <b>Zum:</b> %2" }, 77{ "<b>From:</b> %1 <b>To:</b> %2","<b>Vom:</b> %1 <b>Zum:</b> %2" },
78{ "<b>On:</b> %1","<b>Am:</b> %1" }, 78{ "<b>On:</b> %1","<b>Am:</b> %1" },
79{ "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Am:</b> %1 <b>Vom:S</b> %2 <b>Zum:</b> %3" }, 79{ "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Am:</b> %1 <b>Vom:S</b> %2 <b>Zum:</b> %3" },
80{ "<b>Original event:</b><p>","<b>Original Termin:</b><p>" }, 80{ "<b>Original event:</b><p>","<b>Original Termin:</b><p>" },
81{ " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" }, 81{ " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" },
82{ "Busy","Belegt" }, 82{ "Busy","Belegt" },
83{ "&Cancel","Abbre&chen" }, 83{ "&Cancel","Abbre&chen" },
84{ "Cancel","Abbrechen" }, 84{ "Cancel","Abbrechen" },
85{ "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" }, 85{ "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" },
86{ "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." }, 86{ "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." },
87{ "Categories...","Kategorien..." }, 87{ "Categories...","Kategorien..." },
88{ "Categories","Kategorien" }, 88{ "Categories","Kategorien" },
89{ "Category","Kategorie" }, 89{ "Category","Kategorie" },
90{ "Center View","Zentriere Ansicht" }, 90{ "Center View","Zentriere Ansicht" },
91{ "Change","Ändere" }, 91{ "Change","Ändere" },
92{ "Cinema","Kino" }, 92{ "Cinema","Kino" },
93{ "Click to add a new Todo","Hier klicken, um ein neues Todo anzulegen" }, 93{ "Click to add a new Todo","Hier klicken, um ein neues Todo anzulegen" },
94{ "Clone Item","Klone Eintrag" }, 94{ "Clone Item","Klone Eintrag" },
95{ "&Close","S&chließen" }, 95{ "&Close","S&chließen" },
96{ "Close","Schließen" }, 96{ "Close","Schließen" },
97{ "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" }, 97{ "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" },
98{ "Colors","Farben" }, 98{ "Colors","Farben" },
99{ "completed","erledigt" }, 99{ "completed","erledigt" },
100{ "completed on %1","erledigt am %1" }, 100{ "completed on %1","erledigt am %1" },
101{ "Complete","Erledigt" }, 101{ "Complete","Erledigt" },
102{ "Confidential","Vertraulich" }, 102{ "Confidential","Vertraulich" },
103{ "Configure...","Einstellungen..." }, 103{ "Configure...","Einstellungen..." },
104{ "Confirm &deletes","Löschvogang bestätigen" }, 104{ "Confirm &deletes","Löschvogang bestätigen" },
105{ "Couldn't load calendar\n '%1'.","Kann Kalender\n '%1' nicht laden." }, 105{ "Couldn't load calendar\n '%1'.","Kann Kalender\n '%1' nicht laden." },
106{ "Counter-event Viewer","Terminzähler Ansicht" }, 106{ "Counter-event Viewer","Terminzähler Ansicht" },
107{ "Daily ending hour:","Feierabend:" }, 107{ "Daily ending hour:","Feierabend:" },
108{ "Daily starting hour:","Anfangszeit:" }, 108{ "Daily starting hour:","Anfangszeit:" },
109{ "Daily","Täglich" }, 109{ "Daily","Täglich" },
110{ "Date Format","Datums Format" }, 110{ "Date Format","Datums Format" },
111{ "Date Format:","Datums Format:" }, 111{ "Date Format:","Datums Format:" },
112{ "DateNavigator:(nr)","Datums Navigator" }, 112{ "DateNavigator:(nr)","Datums Navigator" },
113{ "Dates: ","Datum: " }, 113{ "Dates: ","Datum: " },
114{ "Date && Time","Datum && Zeit" }, 114{ "Date && Time","Datum && Zeit" },
115{ "Day begins at:","Der Tag beginnt um:" }, 115{ "Day begins at:","Der Tag beginnt um:" },
116{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" }, 116{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" },
117{ "Days in What's Next:","Tage in What's Next:" }, 117{ "Days in What's Next:","Tage in What's Next:" },
118{ "day(s)","Tag(e)" }, 118{ "day(s)","Tag(e)" },
119{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" }, 119{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" },
120{ "day","Tag" }, 120{ "day","Tag" },
121{ "Dec","Dez" }, 121{ "Dec","Dez" },
122{ "December","Dezember" }, 122{ "December","Dezember" },
123{ "Default alarm time:","Standard Alarmzeit:" }, 123{ "Default alarm time:","Standard Alarmzeit:" },
124{ "Default appointment time:","Standard Termin Startzeit:" }, 124{ "Default appointment time:","Standard Termin Startzeit:" },
125{ "Default event color:","Standard Terminfarbe:" }, 125{ "Default event color:","Standard Terminfarbe:" },
126{ "Default","Standard" }, 126{ "Default","Standard" },
127{ "Def. duration of new app.:","Standard Termin Länge:" }, 127{ "Def. duration of new app.:","Standard Termin Länge:" },
128{ "Delete all completed To-Dos?","Alle bereits erledigten Todos löschen?" }, 128{ "Delete all completed To-Dos?","Alle bereits erledigten Todos löschen?" },
129{ "Delete All","Lösche alles" }, 129{ "Delete All","Lösche alles" },
130{ "Delete all selected","Lösche alle Selektierten" }, 130{ "Delete all selected","Lösche alle Selektierten" },
131{ "Delete Current","Aktuellen löschen" }, 131{ "Delete Current","Aktuellen löschen" },
132{ "Delete Event...","Lösche Termin..." }, 132{ "Delete Event...","Lösche Termin..." },
133{ "Delete Event","Lösche Termin" }, 133{ "Delete Event","Lösche Termin" },
134{ "&Delete","Löschen" }, 134{ "&Delete","Löschen" },
135{ "Delete...","Löschen..." }, 135{ "Delete...","Löschen..." },
136{ "Delete","Löschen" }, 136{ "Delete","Löschen" },
137{ "Delete Todo...","Lösche Todo..." }, 137{ "Delete Todo...","Lösche Todo..." },
138{ "Delete To-Do","Lösche Todo" }, 138{ "Delete To-Do","Lösche Todo" },
139{ "Deleting item %d ...","Lösche Eintrag %d..." }, 139{ "Deleting item %d ...","Lösche Eintrag %d..." },
140{ "Descriptions","Beschreibungen" }, 140{ "Descriptions","Beschreibungen" },
141{ "Deselect All","Deselektiere Alle" }, 141{ "Deselect All","Deselektiere Alle" },
142{ "Details","Details" }, 142{ "Details","Details" },
143{ "Dinner","Abendessen" }, 143{ "Dinner","Abendessen" },
144{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" }, 144{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" },
145{ "Due Date","Fällig am" }, 145{ "Due Date","Fällig am" },
146{ "Due: ","Fällig: "}, 146{ "Due: ","Fällig: "},
147{ "Due Time","Fällig um" }, 147{ "Due Time","Fällig um" },
148{ "Due:","Fällig:"}, 148{ "Due:","Fällig:"},
149{ "Duration: ","Dauer: " }, 149{ "Duration: ","Dauer: " },
150{ "Edit...","Bearbeite..." }, 150{ "Edit...","Bearbeite..." },
151{ "Edit","Bearbeite" }, 151{ "Edit","Bearbeite" },
152{ "Edit Event...","Bearbeite Termin..." }, 152{ "Edit Event...","Bearbeite Termin..." },
153{ "Edit Event","Bearbeite Termin" }, 153{ "Edit Event","Bearbeite Termin" },
154{ "Edit exceptions","Bearbeite Ausnahmen" }, 154{ "Edit exceptions","Bearbeite Ausnahmen" },
155{ "EditorBox:","Editor Fenster:" }, 155{ "EditorBox:","Editor Fenster:" },
156{ "Edit Recurrence Range","Bearbeite Wiederholung" }, 156{ "Edit Recurrence Range","Bearbeite Wiederholung" },
157{ "Edit Todo...","Berabeite Todo..." }, 157{ "Edit Todo...","Berabeite Todo..." },
158{ "Edit To-Do","Todo bearbeiten" }, 158{ "Edit To-Do","Todo bearbeiten" },
159{ "E&mail address:","E&mail Adresse:" }, 159{ "E&mail address:","E&mail Adresse:" },
160{ "(EmptyEmail)","(KeineEmail)" }, 160{ "(EmptyEmail)","(KeineEmail)" },
161{ "(EmptyName)","(KeinName)" }, 161{ "(EmptyName)","(KeinName)" },
162{ "Enable Recurrence","Wiederholender Termin" }, 162{ "Enable Recurrence","Wiederholender Termin" },
163{ "End after","Endet nach"}, 163{ "End after","Endet nach"},
164{ "End by:","Endet am"}, 164{ "End by:","Endet am"},
165{ "End Date","End Datum" }, 165{ "End Date","End Datum" },
166{ "End:","Ende:" }, 166{ "End:","Ende:" },
167{ "End Time","End Zeit" }, 167{ "End Time","End Zeit" },
168{ "English","Englisch" }, 168{ "English","Englisch" },
169{ "Event","Termin" }, 169{ "Event","Termin" },
170{ "Event list","Termin Liste" }, 170{ "Event list","Termin Liste" },
171{ "Events","Termine" }, 171{ "Events","Termine" },
172{ "Event Viewer:","Termin Übersicht:" }, 172{ "Event Viewer:","Termin Übersicht:" },
173{ "every","jede" }, 173{ "every","jede" },
174{ "Exceptions...","Ausnahmen..." }, 174{ "Exceptions...","Ausnahmen..." },
175{ "Exceptions","Ausnahmen" }, 175{ "Exceptions","Ausnahmen" },
176{ "Exclude holidays","Ohne freie Tage" }, 176{ "Exclude holidays","Ohne freie Tage" },
177{ "Exclude Saturdays","Ohne Samstage" }, 177{ "Exclude Saturdays","Ohne Samstage" },
178{ "Feb","Feb" }, 178{ "Feb","Feb" },
179{ "February","Februar" }, 179{ "February","Februar" },
180{ "&Find","Suche!" }, 180{ "&Find","Suche!" },
181{ "Fonts","Schriftart" }, 181{ "Fonts","Schriftart" },
182{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" }, 182{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" },
183{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"}, 183{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"},
184{ "Free","Frei" }, 184{ "Free","Frei" },
185{ "Friday","Freitag" }, 185{ "Friday","Freitag" },
186{ "Fri","Fr" }, 186{ "Fri","Fr" },
187{ "From:","Vom:" }, 187{ "From:","Vom:" },
188{ "Full &name:","Vor- und &Nachname:" }, 188{ "Full &name:","Vor- und &Nachname:" },
189{ "General","Allgemein" }, 189{ "General","Allgemein" },
190{ "German","Deutsch" }, 190{ "German","Deutsch" },
191{ "Gifts","Geschenke" }, 191{ "Gifts","Geschenke" },
192{ "Go to Today","Heute anzeigen" }, 192{ "Go to Today","Heute anzeigen" },
193{ "Help","Hilfe" }, 193{ "Help","Hilfe" },
194{ "Hide Dates","Daten ausblenden" }, 194{ "Hide Dates","Daten ausblenden" },
195{ "Highlight color:","Markierungen:" }, 195{ "Highlight color:","Markierungen:" },
196{ "Holiday color:","Freie Tage:" }, 196{ "Holiday color:","Freie Tage:" },
197{ "hour(s)","Stunde(n)" }, 197{ "hour(s)","Stunde(n)" },
198{ "In %1 days: ","In %1 Tagen: " }, 198{ "In %1 days: ","In %1 Tagen: " },
199{ "Incomplete Todo:","Unerledigte Aufgaben:" }, 199{ "Incomplete Todo:","Unerledigte Aufgaben:" },
200{ "Information","Information" }, 200{ "Information","Information" },
201{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" }, 201{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" },
202{ "Jan","Jan" }, 202{ "Jan","Jan" },
203{ "January","Januar" }, 203{ "January","Januar" },
204{ "JournalView:","Journal Ansicht:" }, 204{ "JournalView:","Journal Ansicht:" },
205{ "Journals","Journale" }, 205{ "Journals","Journale" },
206{ "Jul","Jul" }, 206{ "Jul","Jul" },
207{ "July","Juli" }, 207{ "July","Juli" },
208{ "Jump to date","Springe zum Datum" }, 208{ "Jump to date","Springe zum Datum" },
209{ "June","Juni" }, 209{ "June","Juni" },
210{ "Jun","Jun" }, 210{ "Jun","Jun" },
211{ "Key Bindings...","Tastenzuordnung..." }, 211{ "Key Bindings...","Tastenzuordnung..." },
212{ "Kids","Kinder" }, 212{ "Kids","Kinder" },
213{ "Known Problems...","Bekannte Probleme..." }, 213{ "Known Problems...","Bekannte Probleme..." },
214{ "KO/Pi Find ","KO/Pi Suchdialog " }, 214{ "KO/Pi Find ","KO/Pi Suchdialog " },
215{ "KO/Pi Find: ","KO/Pi Suchen: " }, 215{ "KO/Pi Find: ","KO/Pi Suchen: " },
216{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." }, 216{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." },
217{ "Language:(needs restart)","Sprache (Neustart!)" }, 217{ "Language:(needs restart)","Sprache (Neustart!)" },
218{ "Language:","Sprache" }, 218{ "Language:","Sprache" },
219{ "Large","Etwas mehr" }, 219{ "Large","Etwas mehr" },
220{ "List View:","Listenansicht:" }, 220{ "List View:","Listenansicht:" },
221{ "List View","Listenansicht" }, 221{ "List View","Listenansicht" },
222{ "Load/Save","Laden/Speichern" }, 222{ "Load/Save","Laden/Speichern" },
223{ "Load Template","Lade Vorlage" }, 223{ "Load Template","Lade Vorlage" },
224{ "Locale","Localisation" }, 224{ "Locale","Localisation" },
225{ "Local temp file:","Lokale temp. Datei:" }, 225{ "Local temp file:","Lokale temp. Datei:" },
226{ "Location: ","Ort: " }, 226{ "Location: ","Ort: " },
227{ "Location:","Ort:" }, 227{ "Location:","Ort:" },
228{ "Mail client","Mail Programm" }, 228{ "Mail client","Mail Programm" },
229{ "Mail Client","Mail Programm" }, 229{ "Mail Client","Mail Programm" },
230{ "March","März" }, 230{ "March","März" },
231{ "Mar","Mär" }, 231{ "Mar","Mär" },
232{ "May","Mai" }, 232{ "May","Mai" },
233{ "M. Bains line:","M. Bains Linie:" }, 233{ "M. Bains line:","M. Bains Linie:" },
234{ "Medium","Medium" }, 234{ "Medium","Medium" },
235{ "Method","Methode" }, 235{ "Method","Methode" },
236{ "minute(s)","Minute(n)" }, 236{ "minute(s)","Minute(n)" },
237{ "Monday","Montag" }, 237{ "Monday","Montag" },
238{ "Mon","Mo" }, 238{ "Mon","Mo" },
239{ "Monthly","Monatlich" }, 239{ "Monthly","Monatlich" },
240{ "Month not long enough","Monat ist nicht lang genug" }, 240{ "Month not long enough","Monat ist nicht lang genug" },
241{ "month(s)","Monat(e)" }, 241{ "month(s)","Monat(e)" },
242{ "Month view:","Monatsansicht:" }, 242{ "Month view:","Monatsansicht:" },
243{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" }, 243{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" },
244{ "Todo view uses category colors","To-Do Ansicht zeigt Kategorie Farben" }, 244{ "Todo view uses category colors","To-Do Ansicht zeigt Kategorie Farben" },
245{ "Move &Down","Nach unten verschieben" }, 245{ "Move &Down","Nach unten verschieben" },
246{ "Move &Up","Nach oben verschieben" }, 246{ "Move &Up","Nach oben verschieben" },
247{ "Name:","Name:" }, 247{ "Name:","Name:" },
248{ "Name","Name" }, 248{ "Name","Name" },
249{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin löschen möchten?" }, 249{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin löschen möchten?" },
250{ "%n Days","%n Tage" }, 250{ "%n Days","%n Tage" },
251{ "Never","Nie" }, 251{ "Never","Nie" },
252{ "New event...","Neuer Termin..." }, 252{ "New event...","Neuer Termin..." },
253{ "New event","Neuer Termin" }, 253{ "New event","Neuer Termin" },
254{ "New Event...","Neuer Termin..." }, 254{ "New Event...","Neuer Termin..." },
255{ "New Events/Todos should","Neue Termine/Todos sollten" }, 255{ "New Events/Todos should","Neue Termine/Todos sollten" },
256{ "&New","&Neu" }, 256{ "&New","&Neu" },
257{ "New","Neu", }, 257{ "New","Neu", },
258{ "New Sub-Todo...","Neues Sub-Todo..." }, 258{ "New Sub-Todo...","Neues Sub-Todo..." },
259{ "New Todo...","Neues Todo..." }, 259{ "New Todo...","Neues Todo..." },
260{ "Next Alarm: ","Nächster Alarm: ", }, 260{ "Next Alarm: ","Nächster Alarm: ", },
261{ "&Next Day","&Nächster Tag", }, 261{ "&Next Day","&Nächster Tag", },
262{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" }, 262{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" },
263{ "Next month","Nächster Monat" }, 263{ "Next month","Nächster Monat" },
264{ "&Next Week","&Nächste Woche" }, 264{ "&Next Week","&Nächste Woche" },
265{ "Next year","Nächstes Jahr" }, 265{ "Next year","Nächstes Jahr" },
266{ "Next Year","Nächstes Jahr" }, 266{ "Next Year","Nächstes Jahr" },
267{ "%n h","%n Std" }, 267{ "%n h","%n Std" },
268{ "No ending date","Kein End-Datum", }, 268{ "No ending date","Kein End-Datum", },
269{ "No event, nothing to do.","Kein Termin, nichts zu tun.", }, 269{ "No event, nothing to do.","Kein Termin, nichts zu tun.", },
270{ "No event selected.","Kein Termin selektiert" }, 270{ "No event selected.","Kein Termin selektiert" },
271{ "No","Nein" }, 271{ "No","Nein" },
272{ "No program set","Kein Programm ausgewählt", }, 272{ "No program set","Kein Programm ausgewählt", },
273{ "Normal","Normal" }, 273{ "Normal","Normal" },
274{ "[No selection]","Keine Selektion", }, 274{ "[No selection]","Keine Selektion", },
275{ "No sound set","Kein Sound ausgewählt", }, 275{ "No sound set","Kein Sound ausgewählt", },
276{ "no time ","keine Zeit ", }, 276{ "no time ","keine Zeit ", },
277{ "no time","keine Zeit", }, 277{ "no time","keine Zeit", },
278{ "No Time","Keine Zeit" }, 278{ "No Time","Keine Zeit" },
279{ "November","November" }, 279{ "November","November" },
280{ "Nov","Nov", }, 280{ "Nov","Nov", },
281{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" }, 281{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" },
282{ "occurrence(s)","Vorkommen" }, 282{ "occurrence(s)","Vorkommen" },
283{ "October","Oktober" }, 283{ "October","Oktober" },
284{ "Oct","Okt", }, 284{ "Oct","Okt", },
285{ "O-due!","Ü-fällig! " }, 285{ "O-due!","Ü-fällig! " },
286{ "&OK","&OK" }, 286{ "&OK","&OK" },
287{ "Ok+Show!","Ok+Anzeigen" }, 287{ "Ok+Show!","Ok+Anzeigen" },
288{ "Organizer: %1","Organisator %1" }, 288{ "Organizer: %1","Organisator %1" },
289{ "Organizer","Organisator" }, 289{ "Organizer","Organisator" },
290{ "Owner: ","Besitzer: " }, 290{ "Owner: ","Besitzer: " },
291{ "Owner:","Besitzer:" }, 291{ "Owner:","Besitzer:" },
292{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 292{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
293{ "Pick a date to display","Wähle einen Tag zum anzeigen aus" }, 293{ "Pick a date to display","Wähle einen Tag zum anzeigen aus" },
294{ "Please specify a valid due date.","Bitte gültiges Fälligkeitsdatum angeben."}, 294{ "Please specify a valid due date.","Bitte gültiges Fälligkeitsdatum angeben."},
295{ "Please specify a valid end date, for example '%1'.","Bitte gültiges Enddatum angeben, z.B.'%1'." }, 295{ "Please specify a valid end date, for example '%1'.","Bitte gültiges Enddatum angeben, z.B.'%1'." },
296{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." }, 296{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." },
297{ "Please specify a valid start date, for example '%1'.","Bitte gültiges Startdatum angeben, z.B. '%1'." }, 297{ "Please specify a valid start date, for example '%1'.","Bitte gültiges Startdatum angeben, z.B. '%1'." },
298{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."}, 298{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."},
299{ "Please specify a valid start time, for example '%1'.","Bitte gültige Startzeit angeben, z.B. '%1'." }, 299{ "Please specify a valid start time, for example '%1'.","Bitte gültige Startzeit angeben, z.B. '%1'." },
300{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" }, 300{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" },
301{ "&Previous Day","Vorheriger Tag" }, 301{ "&Previous Day","Vorheriger Tag" },
302{ "Previous month","Vorheriger Monat" }, 302{ "Previous month","Vorheriger Monat" },
303{ "Previous Month","Vorheriger Monat" }, 303{ "Previous Month","Vorheriger Monat" },
304{ "&Previous Week","Vorherige Woche" }, 304{ "&Previous Week","Vorherige Woche" },
305{ "Previous year","Vorheriges Jahr" }, 305{ "Previous year","Vorheriges Jahr" },
306{ "Previous Year","Vorheriges Jahr" }, 306{ "Previous Year","Vorheriges Jahr" },
307{ "Printing","Drucken" }, 307{ "Printing","Drucken" },
308{ "Priority:","Priorität:" }, 308{ "Priority:","Priorität:" },
309{ "Private","Privat" }, 309{ "Private","Privat" },
310{ "Proceed","Weiter" }, 310{ "Proceed","Weiter" },
311{ "Public","Öffentlich" }, 311{ "Public","Öffentlich" },
312{ "Purge","Entferne" }, 312{ "Purge","Entferne" },
313{ "Purge Completed","Entferne erledigte ToDos" }, 313{ "Purge Completed","Entferne erledigte ToDos" },
314{ "Purge To-Dos","Todos bereinigen" }, 314{ "Purge To-Dos","Todos bereinigen" },
315{ "read-only","schreibgeschützt" }, 315{ "read-only","schreibgeschützt" },
316{ "Recur every","Wiederh. alle" }, 316{ "Recur every","Wiederh. alle" },
317{ "Recur in the month of","Wiederh. im Monat" }, 317{ "Recur in the month of","Wiederh. im Monat" },
318{ "Recur on the","Wiederh. am" }, 318{ "Recur on the","Wiederh. am" },
319{ "Recur on this day","Wiederh. am diesen Tag" }, 319{ "Recur on this day","Wiederh. am diesen Tag" },
320{ "Recurrence Range...","Wiederholungs Zeitraum..." }, 320{ "Recurrence Range...","Wiederholungs Zeitraum..." },
321{ "Recurrence Range","Wiederholungs Zeitraum" }, 321{ "Recurrence Range","Wiederholungs Zeitraum" },
322{ "Recurrence Rule","Wiederholungs Regel" }, 322{ "Recurrence Rule","Wiederholungs Regel" },
323{ "Recurrence","Wiederholung" }, 323{ "Recurrence","Wiederholung" },
324{ "Recurs","Wiederholung" }, 324{ "Recurs","Wiederholung" },
325{"&Reject","Abweisen"}, 325{"&Reject","Abweisen"},
326{ "Reminder:","Alarm:" }, 326{ "Reminder:","Alarm:" },
327{ "Rem.:","Alarm:" }, 327{ "Rem.:","Alarm:" },
328{ "Rem.","Alarm:" }, 328{ "Rem.","Alarm:" },
329{ "Remote file:","Remote Datei:"}, 329{ "Remote file:","Remote Datei:"},
330{ "Remote IP:","Remote (ferne) IP:" }, 330{ "Remote IP:","Remote (ferne) IP:" },
331{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " }, 331{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " },
332{ "Remote user:","Remote Benutzer"}, 332{ "Remote user:","Remote Benutzer"},
333{ "&Remove","Entfe&rnen" }, 333{ "&Remove","Entfe&rnen" },
334{ "Remove","Entfernen" }, 334{ "Remove","Entfernen" },
335{ "Request response","Bemerkung anfordern" }, 335{ "Request response","Bemerkung anfordern" },
336{ "Role:","Rolle:" }, 336{ "Role:","Rolle:" },
337{ "Role","Rolle" }, 337{ "Role","Rolle" },
338{ "Sat","Sa" }, 338{ "Sat","Sa" },
339{ "Saturday","Samstag" }, 339{ "Saturday","Samstag" },
340{ "Search for:","Suche nach:" }, 340{ "Search for:","Suche nach:" },
341{ "Search In","Suche in" }, 341{ "Search In","Suche in" },
342{ "Search...","Suche..." }, 342{ "Search...","Suche..." },
343{ "Search","Suche" }, 343{ "Search","Suche" },
344{ "Select Addresses","Wähle Adressen" }, 344{ "Select Addresses","Wähle Adressen" },
345{ "Select all","Selektiere Alle" }, 345{ "Select all","Selektiere Alle" },
346{ "Select a month","Wähle Monat" }, 346{ "Select a month","Wähle Monat" },
347{ "Select a week","Wähle Woche" }, 347{ "Select a week","Wähle Woche" },
348{ "Select a year","Wähle Jahr" }, 348{ "Select a year","Wähle Jahr" },
349{ "Send directly","Sende direkt" }, 349{ "Send directly","Sende direkt" },
350{ "&Send Messages","&Sende Nachrichten", }, 350{ "&Send Messages","&Sende Nachrichten", },
351{ "Sep","Sep" }, 351{ "Sep","Sep" },
352{ "September","September" }, 352{ "September","September" },
353{ "Shopping","Einkaufen" }, 353{ "Shopping","Einkaufen" },
354{ "Use short date in (WN/E) view","Kurzdatum in (WN/Termin) Ansicht" }, 354{ "Use short date in (WN/E) view","Kurzdatum in (WN/Termin) Ansicht" },
355{ "Show Dates","Zeige Daten" }, 355{ "Show Dates","Zeige Daten" },
356{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." }, 356{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." },
357{ "Show Event...","Zeige Termin..." }, 357{ "Show Event...","Zeige Termin..." },
358{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." }, 358{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." },
359{ "Show Marcus Bains line","Zeige Marcus Bains Linie" }, 359{ "Show Marcus Bains line","Zeige Marcus Bains Linie" },
360{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." }, 360{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." },
361{ "Show time as:","Zeige Zeit als" }, 361{ "Show time as:","Zeige Zeit als" },
362{ "Show Todo...","Zeige To-Do" }, 362{ "Show Todo...","Zeige To-Do" },
363{ "Show topmost todo prios in What's N.:","Anz. höchster Prios in What's N.:"}, 363{ "Show topmost todo prios in What's N.:","Anz. höchster Prios in What's N.:"},
364{ "Show topmost todo prios in What's Next:","Anz. höchster Prios in What's Next:"}, 364{ "Show topmost todo prios in What's Next:","Anz. höchster Prios in What's Next:"},
365{ "Show vertical screen (Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" }, 365{ "Show vertical screen (Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" },
366{ "&Show","Zeige" }, 366{ "&Show","Zeige" },
367{ "Show...","Zeige..." }, 367{ "Show...","Zeige..." },
368{ "Show","Zeige" }, 368{ "Show","Zeige" },
369{ "Small","Klein" }, 369{ "Small","Klein" },
370{ "Sorry","Entschuldigung" }, 370{ "Sorry","Entschuldigung" },
371{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"}, 371{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"},
372{ "Start:","Start:" }, 372{ "Start:","Start:" },
373{ "Start Date","Start Datum" }, 373{ "Start Date","Start Datum" },
374{ "Start date: %1","Start Datum: %1" }, 374{ "Start date: %1","Start Datum: %1" },
375{ "Start Time","Start Zeit" }, 375{ "Start Time","Start Zeit" },
376{ "Status:","Status:" }, 376{ "Status:","Status:" },
377{ "Status","Status:" }, 377{ "Status","Status:" },
378{ "Summaries","Titel" }, 378{ "Summaries","Titel" },
379{ "Summary:","Titel:" }, 379{ "Summary:","Titel:" },
380{ "Summary","Titel" }, 380{ "Summary","Titel" },
381{ "Sunday","Sonntag" }, 381{ "Sunday","Sonntag" },
382{ "Sun","So" }, 382{ "Sun","So" },
383{ "Sync preferences:","Sync Einstellungen" }, 383{ "Sync preferences:","Sync Einstellungen" },
384{ "Sync Prefs","Sync Einstellungen" }, 384{ "Sync Prefs","Sync Einstellungen" },
385{ "Syncronize","Daten abgleich" }, 385{ "Syncronize","Daten abgleich" },
386{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" }, 386{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" },
387{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" }, 387{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" },
388{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" }, 388{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" },
389{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges To-Do" }, 389{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges To-Do" },
390{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" }, 390{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" },
391{ "Template...","Vorlage..." }, 391{ "Template...","Vorlage..." },
392{ "This day","Dieser Tag" }, 392{ "This day","Dieser Tag" },
393{ "This is an experimental feature. ","Dieses Feature ist experimentel" }, 393{ "This is an experimental feature. ","Dieses Feature ist experimentel" },
394{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." }, 394{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." },
395{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." }, 395{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." },
396{ "Thu","Do" }, 396{ "Thu","Do" },
397{ "Thursday","Donnerstag" }, 397{ "Thursday","Donnerstag" },
398{ "Time associated","Mit Zeit" }, 398{ "Time associated","Mit Zeit" },
399{ "Time bar:","Uhrzeit Zeile:" }, 399{ "Time bar:","Uhrzeit Zeile:" },
400{ "Time && Date","Zeit und Datum" }, 400{ "Time && Date","Zeit und Datum" },
401{ "Time Format","Zeit Format" }, 401{ "Time Format","Zeit Format" },
402{ "Time Format(nr):","Zeit Format(Neustart!)" }, 402{ "Time Format(nr):","Zeit Format(Neustart!)" },
403{ "Date Labels:","Datumsleiste:" }, 403{ "Date Labels:","Datumsleiste:" },
404{ "Time: ","Zeit: " }, 404{ "Time: ","Zeit: " },
405{ "Timezone:","Zeitzone:" }, 405{ "Timezone:","Zeitzone:" },
406{ "To: ","Bis: " }, 406{ "To: ","Bis: " },
407{ "To:","Bis:" }, 407{ "To:","Bis:" },
408{ "Today: ","Heute: " }, 408{ "Today: ","Heute: " },
409{ "Todo due today color:","Heute fällige To-Do's" }, 409{ "Todo due today color:","Heute fällige To-Do's" },
410{ "To-do items:","To-Do items:" }, 410{ "To-do items:","To-Do items:" },
411{ "Todo overdue color:","Überfällige To-Do's" }, 411{ "Todo overdue color:","Überfällige To-Do's" },
412{ "Todo","Todo" }, 412{ "Todo","Todo" },
413{ "To-do view shows completed Todos","To-do Ansicht zeigt erledigte To-dos" }, 413{ "To-do view shows completed Todos","To-do Ansicht zeigt erledigte To-dos" },
414{ "ToDoView:","Todo Ansicht:" }, 414{ "ToDoView:","Todo Ansicht:" },
415{ "Toggle Alarm","Wechsle Alarm" }, 415{ "Toggle Alarm","Wechsle Alarm" },
416{ "Toggle Allday","Umschalten Ganztag" }, 416{ "Toggle Allday","Umschalten Ganztag" },
417{ "Tomorrow: ","Morgen: " }, 417{ "Tomorrow: ","Morgen: " },
418{ "Tue","Di" }, 418{ "Tue","Di" },
419{ "Tuesday","Dienstag" }, 419{ "Tuesday","Dienstag" },
420{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" }, 420{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" },
421{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." }, 421{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." },
422{ "Unknown","Unbekannt" }, 422{ "Unknown","Unbekannt" },
423{ "Up","Hinauf" }, 423{ "Up","Hinauf" },
424{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" }, 424{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" },
425{ "User defined","Benutzerdefiniert" }, 425{ "User defined","Benutzerdefiniert" },
426{ "User long date:","Format langes Datum:" }, 426{ "User long date:","Format langes Datum:" },
427{ "User short date:","Forma kurzes Datum:" }, 427{ "User short date:","Forma kurzes Datum:" },
428{ "View","Ansicht" }, 428{ "View","Ansicht" },
429{ "View Fonts","Schriftarten Ansichten" }, 429{ "View Fonts","Schriftarten Ansichten" },
430{ "Views","Ansichten" }, 430{ "Views","Ansichten" },
431{ "Wed","Mi" }, 431{ "Wed","Mi" },
432{ "Wednesday","Mittwoch" }, 432{ "Wednesday","Mittwoch" },
433{ "Week %1","Woche %1" }, 433{ "Week %1","Woche %1" },
434{ "Weekly","Wöchentlich" }, 434{ "Weekly","Wöchentlich" },
435{ "Week starts on Sunday","Woche beginnt Sonntags" }, 435{ "Week starts on Sunday","Woche beginnt Sonntags" },
436{ "What's Next View:","What's Next Anz." }, 436{ "What's Next View:","What's Next Anz." },
437{ "What's next ?","Was kommt als nächstes?(What's Next)" }, 437{ "What's next ?","Was kommt als nächstes?(What's Next)" },
438{ "Working Hours","Tägliche Arbeitszeit" }, 438{ "Working Hours","Tägliche Arbeitszeit" },
439{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" }, 439{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" },
440{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" }, 440{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" },
441{ "Write back synced file","Syncronisierte Datei zurückschreiben" }, 441{ "Write back synced file","Syncronisierte Datei zurückschreiben" },
442{ "Yearly","Jährlich" }, 442{ "Yearly","Jährlich" },
443{ "year(s)","Jahr(e)" }, 443{ "year(s)","Jahr(e)" },
444{ "Yes","Ja" }, 444{ "Yes","Ja" },
445{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" }, 445{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" },
446{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." }, 446{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." },
447{ "week(s) on:","Woche(n) am: " }, 447{ "week(s) on:","Woche(n) am: " },
448{ "Full menu bar(nr)","Volle Menuleiste(bn)" }, 448{ "Full menu bar(nr)","Volle Menuleiste(bn)" },
449{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 449{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
450{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 450{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
451{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 451{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
452{ "Daylight start:","Sommerzeit Beginn:" }, 452{ "Daylight start:","Sommerzeit Beginn:" },
453{ "Daylight end:","Sommerzeit Ende:" }, 453{ "Daylight end:","Sommerzeit Ende:" },
454{ "Time Zone","Zeitzone" }, 454{ "Time Zone","Zeitzone" },
455{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" }, 455{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" },
456{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" }, 456{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" },
457{ "minutely","minütlich" }, 457{ "minutely","minütlich" },
458{ "hourly","stündlich" }, 458{ "hourly","stündlich" },
459{ "daily","täglich" }, 459{ "daily","täglich" },
460{ "weekly","wöchentlich" }, 460{ "weekly","wöchentlich" },
461{ "monthly","monatlich" }, 461{ "monthly","monatlich" },
462{ "day-monthly","tag-monatlich" }, 462{ "day-monthly","tag-monatlich" },
463{ "month-yearly","monat-jährlich" }, 463{ "month-yearly","monat-jährlich" },
464{ "day-yearly","tag-jährlich" }, 464{ "day-yearly","tag-jährlich" },
465{ "position-yearly","pos-jährlich" }, 465{ "position-yearly","pos-jährlich" },
466{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" }, 466{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" },
467{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" }, 467{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" },
468{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" }, 468{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" },
469{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" }, 469{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" },
470{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" }, 470{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" },
471{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." }, 471{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." },
472{ "Event list view uses full window","Listenansicht nutzt Vollbild" }, 472{ "Event list view uses full window","Listenansicht nutzt Vollbild" },
473{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" }, 473{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" },
474{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" }, 474{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" },
475{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" }, 475{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" },
476{ "ViewChange","Ansichtswechsel" }, 476{ "ViewChange","Ansichtswechsel" },
477{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" }, 477{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" },
478{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" }, 478{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" },
479{ "File","Datei" }, 479{ "File","Datei" },
480{ "Clone...","Dupliziere.." }, 480{ "Clone...","Dupliziere.." },
481{ "Move...","Bewege..." }, 481{ "Move...","Bewege..." },
482{ "Beam...","Sende via IR..." }, 482{ "Beam...","Sende via IR..." },
483{ "&Clone...","Dupliziere.." }, 483{ "&Clone...","Dupliziere.." },
484{ "&Move...","Bewege..." }, 484{ "&Move...","Bewege..." },
485{ "&Beam...","Sende via IR..." }, 485{ "&Beam...","Sende via IR..." },
486{ "Show Completed","Zeige erledigte Todos" }, 486{ "Show Completed","Zeige erledigte Todos" },
487{ "Show Quick Todo","Zeige Quick Todo" }, 487{ "Show Quick Todo","Zeige Quick Todo" },
488{ "Unparent Todo","Un-sub Todo" }, 488{ "Unparent Todo","Un-sub Todo" },
489{ "Save selected to file...","Speichere Selektierte..." }, 489{ "Save selected to file...","Speichere Selektierte..." },
490{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." }, 490{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." },
491{ "Set Categ. for selected...","Setze Kateg. für Selekt." }, 491{ "Set Categ. for selected...","Setze Kateg. für Selekt." },
492{ "Beam selected via IR","Sende Selekt. via IR..." }, 492{ "Beam selected via IR","Sende Selekt. via IR..." },
493{ "Search","Suchen" }, 493{ "Search","Suchen" },
494{ "Date Picker","Datum auswählen" }, 494{ "Date Picker","Datum auswählen" },
495{ "Day View","Tagesansicht" }, 495{ "Day View","Tagesansicht" },
496{ "Work Week","Arbeitswoche" }, 496{ "Work Week","Arbeitswoche" },
497{ "Week","Wochenansicht" }, 497{ "Week","Wochenansicht" },
498{ "Month","Monatsansicht" }, 498{ "Month","Monatsansicht" },
499{ "Todo View","Todo Liste" }, 499{ "Todo View","Todo Liste" },
500{ "Journal","Journal Ansicht" }, 500{ "Journal","Journal Ansicht" },
501{ "Next days","Nächste Tage" }, 501{ "Next days","Nächste Tage" },
502{ "Print agenda selection...","Drucke Agendaselektion..." }, 502{ "Print agenda selection...","Drucke Agendaselektion..." },
503{ "Toggle DateNavigator","Navigator umschalten" }, 503{ "Toggle DateNavigator","Navigator umschalten" },
504{ "Toggle FilterView","Filteransicht umschalten" }, 504{ "Toggle FilterView","Filteransicht umschalten" },
505{ "Prev. month","Vorheriger Monat" }, 505{ "Prev. month","Vorheriger Monat" },
506{ "Go backward","Gehe zurück" }, 506{ "Go backward","Gehe zurück" },
507{ "Go forward","Gehe weiter" }, 507{ "Go forward","Gehe weiter" },
508{ "Synchronize","Synchronisieren" }, 508{ "Synchronize","Synchronisieren" },
509{ "AgendaSize","Agendagröße" }, 509{ "AgendaSize","Agendagröße" },
510{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" }, 510{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" },
511{ "Import last file","Importiere letzte Datei" }, 511{ "Import last file","Importiere letzte Datei" },
512{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." }, 512{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." },
513{ "Load Calendar Backup","Lade Kalender Backup" }, 513{ "Load Calendar Backup","Lade Kalender Backup" },
514{ "Save Calendar Backup","Speichere Kalender Backup" }, 514{ "Save Calendar Backup","Speichere Kalender Backup" },
515{ "Export VCalendar","Exportiere VCalendar" }, 515{ "Export VCalendar","Exportiere VCalendar" },
516{ "Manage new categories...","Verwalte neue Kategorien..." }, 516{ "Manage new categories...","Verwalte neue Kategorien..." },
517{ "Beam complete calendar...","Sende kompletten Kalender via IR" }, 517{ "Beam complete calendar...","Sende kompletten Kalender via IR" },
518{ "Beam filtered calendar...","Sende gefilterten Kalender via IR" }, 518{ "Beam filtered calendar...","Sende gefilterten Kalender via IR" },
519{ "Remote via ssh","Über Netzwerk via ssh" }, 519{ "Remote via ssh","Über Netzwerk via ssh" },
520{ "With local file","Mit lokaler Datei" }, 520{ "With local file","Mit lokaler Datei" },
521{ "With last file","Mit letzter Datei" }, 521{ "With last file","Mit letzter Datei" },
522{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" }, 522{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" },
523{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" }, 523{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" },
524{ "Save filename","Speichern: Dateinamen wählen" }, 524{ "Save filename","Speichern: Dateinamen wählen" },
525{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" }, 525{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" },
526{ "KO/Pi: Warning!","KO/Pi: Warnung!" }, 526{ "KO/Pi: Warning!","KO/Pi: Warnung!" },
527{ "Overwrite!","Überschreibe!" }, 527{ "Overwrite!","Überschreibe!" },
528{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 528{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
529{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Alle selektierten Einträge werden\nunwiederbringlich gelöscht.\n(Löschen kann auf dem\nPDA einige Zeit dauern)\n" }, 529{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Alle selektierten Einträge werden\nunwiederbringlich gelöscht.\n(Löschen kann auf dem\nPDA einige Zeit dauern)\n" },
530{ "KO/Pi Confirmation","KO/Pi Bestätigung" }, 530{ "KO/Pi Confirmation","KO/Pi Bestätigung" },
531{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" }, 531{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" },
532{ "Deleting item %d ...","Lösche Eintrag %d ..." }, 532{ "Deleting item %d ...","Lösche Eintrag %d ..." },
533{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." }, 533{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." },
534{ "Size","Größe" }, 534{ "Size","Größe" },
535{ "Date","Datum" }, 535{ "Date","Datum" },
536{ "Mime Type","Datei Typ" }, 536{ "Mime Type","Datei Typ" },
537{ "All Files","Alle Dateien" }, 537{ "All Files","Alle Dateien" },
538{ "Files","Dateien" }, 538{ "Files","Dateien" },
539{ "Documents","DoKumente" }, 539{ "Documents","DoKumente" },
540{ "Select Categories","Selektiere Kategorien" }, 540{ "Select Categories","Selektiere Kategorien" },
541{ " &Deselect All "," Auswahl aufheben " }, 541{ " &Deselect All "," Auswahl aufheben " },
542{ "A&dd","Hinzu" }, 542{ "A&dd","Hinzu" },
543{ "&Modify","Ändern" }, 543{ "&Modify","Ändern" },
544{ "Edit Categories","Editiere Kategorien" }, 544{ "Edit Categories","Editiere Kategorien" },
545{ " &Edit Categories "," &Editiere Kategorien " }, 545{ " &Edit Categories "," &Editiere Kategorien " },
546{ "Beam Options","Beam Einstellungen" }, 546{ "Beam Options","Beam Einstellungen" },
547{ " With timezone "," Mit Zeitzone " }, 547{ " With timezone "," Mit Zeitzone " },
548{ " Local time ", " Lokale Zeit " }, 548{ " Local time ", " Lokale Zeit " },
549{ "Manage new Categories","Verwalte neue Kategorien" }, 549{ "Manage new Categories","Verwalte neue Kategorien" },
550{ "Add to category list","Füge zur Kategorieliste hinzu" }, 550{ "Add to category list","Füge zur Kategorieliste hinzu" },
551{ "Remove from Events/Todos","Entferne von Terminen/Todos" }, 551{ "Remove from Events/Todos","Entferne von Terminen/Todos" },
552{ "After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n ","Nach dem Importieren/Laden/Syncen\nkann es neue Kategorien in den \nTerminen oder Todos geben, die nicht\nin der Kategorieliste enthalten sind.\nBitte wählen Sie, was passieren soll:\n " }, 552{ "After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n ","Nach dem Importieren/Laden/Syncen\nkann es neue Kategorien in den \nTerminen oder Todos geben, die nicht\nin der Kategorieliste enthalten sind.\nBitte wählen Sie, was passieren soll:\n " },
553{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" }, 553{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" },
554{ "File format","Datei Format" }, 554{ "File format","Datei Format" },
555{ "Time format","Zeit Format" }, 555{ "Time format","Zeit Format" },
556{ "Delete all\ncompleted To-Dos?","Lösche alle\nerledigten To-Dos?" }, 556{ "Delete all\ncompleted To-Dos?","Lösche alle\nerledigten To-Dos?" },
557{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." }, 557{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." },
558{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" }, 558{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" },
559{ "h","Std" }, 559{ "h","Std" },
560{ "min","Min" }, 560{ "min","Min" },
561{ "hou","Std" }, 561{ "hou","Std" },
562{ "day","Tag" }, 562{ "day","Tag" },
563{ "French","Französich" }, 563{ "French","Französich" },
564{ "Time","Zeit" }, 564{ "Time","Zeit" },
565{ "Event Viewer","Termin Ansicht" }, 565{ "Event Viewer","Termin Ansicht" },
566{ "Cancel Sync","Sync Abbrechen" }, 566{ "Cancel Sync","Sync Abbrechen" },
567{ "Remote","Fern" }, 567{ "Remote","Fern" },
568{ "Local","Lokal" }, 568{ "Local","Lokal" },
569{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" }, 569{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" },
570{ "Local: ","Lokal: " }, 570{ "Local: ","Lokal: " },
571{ "Remote: ","Fern: " }, 571{ "Remote: ","Fern: " },
572{ "Last modified: ","Zuletzt geändert: " }, 572{ "Last modified: ","Zuletzt geändert: " },
573{ "Location: ","Ort: " }, 573{ "Location: ","Ort: " },
574{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" }, 574{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" },
575{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" }, 575{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" },
576{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " }, 576{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " },
577{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" }, 577{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" },
578{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " }, 578{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " },
579{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" }, 579{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" },
580{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." }, 580{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." },
581{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" }, 581{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" },
582{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" }, 582{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" },
583{ "( %1 min before )","( %1 min vorher )" }, 583{ "( %1 min before )","( %1 min vorher )" },
584{ "<b>Alarm on: ","<b>Alarm am: " }, 584{ "<b>Alarm on: ","<b>Alarm am: " },
585{ "<b>Details: </b>","<b>Details: </b>" }, 585{ "<b>Details: </b>","<b>Details: </b>" },
586{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 586{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
587{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" }, 587{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" },
588{ "Organizer","Organisator" }, 588{ "Organizer","Organisator" },
589{ "Save","Speichern" }, 589{ "Save","Speichern" },
590{ "Exit (+save)","Beenden (+ speichern)" }, 590{ "Exit (+save)","Beenden (+ speichern)" },
591{ "Home","Zuhause" }, 591{ "Home","Zuhause" },
592{ "Office","Büro" }, 592{ "Office","Büro" },
593{ "Libary","Bücherei" }, 593{ "Libary","Bücherei" },
594{ "Doctor","Arzt" }, 594{ "Doctor","Arzt" },
595{ "Beach","Strand" }, 595{ "Beach","Strand" },
596{ "Conference room","Konferenzraum" }, 596{ "Conference room","Konferenzraum" },
597{ "Drive Home","Heimfahrt" }, 597{ "Drive Home","Heimfahrt" },
598{ "Watch TV","Tv gucken" }, 598{ "Watch TV","Tv gucken" },
599{ "Phone call","Telefonanruf" }, 599{ "Phone call","Telefonanruf" },
600{ "Pay bill","Rechnung bezahlen" }, 600{ "Pay bill","Rechnung bezahlen" },
601{ "Read book","Buch lesen" }, 601{ "Read book","Buch lesen" },
602{ "Watering plants","Pflanzen giessen" }, 602{ "Watering plants","Pflanzen giessen" },
603{"Appointment","Verabredung" }, 603{"Appointment","Verabredung" },
604{"Birthday","Geburtstag" }, 604{"Birthday","Geburtstag" },
605{"Business","Geschäft" }, 605{"Business","Geschäft" },
606{"Business Travel","Geschäftsreise" }, 606{"Business Travel","Geschäftsreise" },
607{"Cinema","Kino" }, 607{"Cinema","Kino" },
608{"Customer","Kunde" }, 608{"Customer","Kunde" },
609{"Break","Pause" }, 609{"Break","Pause" },
610{"Breakfast","Frühstück" }, 610{"Breakfast","Frühstück" },
611{"Competition","Wettkampf" }, 611{"Competition","Wettkampf" },
612{"Dinner","Abendessen" }, 612{"Dinner","Abendessen" },
613{"Education","Erziehung" }, 613{"Education","Erziehung" },
614{"Family","Familie" }, 614{"Family","Familie" },
615{"Favorites","Favoriten" }, 615{"Favorites","Favoriten" },
616{"Festival","Festival" }, 616{"Festival","Festival" },
617{"Fishing","Angeln" }, 617{"Fishing","Angeln" },
618{"Flight","Flug" }, 618{"Flight","Flug" },
619{"Gifts","Geschenk" }, 619{"Gifts","Geschenk" },
620{"Holiday","Feiertag" }, 620{"Holiday","Feiertag" },
621{"Holiday Cards","Ansichtskarten" }, 621{"Holiday Cards","Ansichtskarten" },
622{"Hot Contacts","Heisse Kontakte" }, 622{"Hot Contacts","Heisse Kontakte" },
623{"Hiking","Wandern" }, 623{"Hiking","Wandern" },
624{"Hunting","Jagen" }, 624{"Hunting","Jagen" },
625{"Key Customer","Wichtiger Kunde" }, 625{"Key Customer","Wichtiger Kunde" },
626{"Kids","Kinder" }, 626{"Kids","Kinder" },
627{"Lunch","Mittagessen" }, 627{"Lunch","Mittagessen" },
628{"Meeting","Treffen" }, 628{"Meeting","Treffen" },
629{"Miscellaneous","Verschiedenes" }, 629{"Miscellaneous","Verschiedenes" },
630{"Partner","Partner" }, 630{"Partner","Partner" },
631{"Party","Partie" }, 631{"Party","Partie" },
632{"Personal","Privat" }, 632{"Personal","Privat" },
633{"Personal Travel","Privatreise"}, 633{"Personal Travel","Privatreise"},
634{"PHB","PHB" }, 634{"PHB","PHB" },
635{"Phone Calls","Telefonanruf" }, 635{"Phone Calls","Telefonanruf" },
636{"Projects","Projekt" }, 636{"Projects","Projekt" },
637{"Recurring","Wiederholend" }, 637{"Recurring","Wiederholend" },
638{"School","Schule" }, 638{"School","Schule" },
639{"Shopping","Einkaufen" }, 639{"Shopping","Einkaufen" },
640{"Speach","Rede" }, 640{"Speach","Rede" },
641{"Special Occasion","Spez.Gelegenheit" }, 641{"Special Occasion","Spez.Gelegenheit" },
642{"Sports","Sport" }, 642{"Sports","Sport" },
643{"Talk","Vortrag" }, 643{"Talk","Vortrag" },
644{"Travel","Reise" }, 644{"Travel","Reise" },
645{"TV","TV" }, 645{"TV","TV" },
646{"Germany","Deutschland" }, 646{"Germany","Deutschland" },
647{"Sweden","Schweden" }, 647{"Sweden","Schweden" },
648{"Forest","Wald" }, 648{"Forest","Wald" },
649{ "Desert","Wüste" }, 649{ "Desert","Wüste" },
650{ "Kitchen","Küche" }, 650{ "Kitchen","Küche" },
651{ "Lake","See" }, 651{ "Lake","See" },
652{"University","Universität"}, 652{"University","Universität"},
653{"Vacation","Urlaub" }, 653{"Vacation","Urlaub" },
654{"VIP","VIP" }, 654{"VIP","VIP" },
655{ "Import Sharp Calendar","Importiere Sharp Kalender" }, 655{ "Import Sharp Calendar","Importiere Sharp Kalender" },
656{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" }, 656{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" },
657{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" }, 657{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" },
658{ "Cancelled","Gecancelt" }, 658{ "Cancelled","Gecancelt" },
659{ "Multiple sync","Mehrfach Sync" }, 659{ "Multiple sync","Mehrfach Sync" },
660{ "Local file","Lokale Datei" }, 660{ "Local file","Lokale Datei" },
661{ "Last file","Letzte Datei" }, 661{ "Last file","Letzte Datei" },
662{ "Keys + Colors...","Tasten + Farben..." }, 662{ "Keys + Colors...","Tasten + Farben..." },
663{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" }, 663{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" },
664{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" }, 664{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" },
665{ "Choose...","Wähle..." }, 665{ "Choose...","Wähle..." },
666{ "Use colors for application:","Setze Farben für Programm:" }, 666{ "Use colors for application:","Setze Farben für Programm:" },
667{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" }, 667{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" },
668{ "Frames, labels, etc.:","Rahmen, Label, etc.:" }, 668{ "Frames, labels, etc.:","Rahmen, Label, etc.:" },
669{ "Show parent To-Do's in What's Next view","Zeige Ober-Todo in What's Next Anz." }, 669{ "Show parent To-Do's in What's Next view","Zeige Ober-Todo in What's Next Anz." },
670{ "Show location in What's Next view","Zeige Ort in What's Next Anz." }, 670{ "Show location in What's Next view","Zeige Ort in What's Next Anz." },
671{ "Show events that recur ","Zeige Termine, die sich wiederholen:" }, 671{ "Show events that recur ","Zeige Termine, die sich wiederholen:" },
672{ "Show in every cell ","Zeige in jeder Zelle " }, 672{ "Show in every cell ","Zeige in jeder Zelle " },
673{ "short month","kurzen Monat" }, 673{ "short month","kurzen Monat" },
674{ "icons","Icons" }, 674{ "icons","Icons" },
675{ "Show Sat/Sun together","Zeige Sam/Son zusammen" }, 675{ "Show Sat/Sun together","Zeige Sam/Son zusammen" },
676{ "Categorie colors are applied to text","Kategorie Farben färben Text" }, 676{ "Categorie colors are applied to text","Kategorie Farben färben Text" },
677{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" }, 677{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" },
678{ "Day color odd months","Tagesfarbe ungerade Monate" }, 678{ "Day color odd months","Tagesfarbe ungerade Monate" },
679{ "Day color even months","Tagesfarbe gerade Monate" }, 679{ "Day color even months","Tagesfarbe gerade Monate" },
680{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" }, 680{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" },
681{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" }, 681{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" },
682{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" }, 682{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" },
683{ "Colors are applied to text","Farben werden auf Text angewendet" }, 683{ "Colors are applied to text","Farben werden auf Text angewendet" },
684{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" }, 684{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" },
685{ "Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n","Achtung: KO/Pi muß ausgeführt werden damit die Benachrichtigung funktioniert. Empfehlung für Zaurus: Diese Option nicht wählen und KO/Pi Alarm Applet installieren.\n" }, 685{ "Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n","Achtung: KO/Pi muß ausgeführt werden damit die Benachrichtigung funktioniert. Empfehlung für Zaurus: Diese Option nicht wählen und KO/Pi Alarm Applet installieren.\n" },
686{ "Play beeps count:","Anzahl der Alarmpiepse: " }, 686{ "Play beeps count:","Anzahl der Alarmpiepse: " },
687{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " }, 687{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " },
688{ "Default suspend time in min:","Standard Supendierungs Zeit: " }, 688{ "Default suspend time in min:","Standard Supendierungs Zeit: " },
689{ "Auto suspend count:","Anzahl der auto Suspendierungen" }, 689{ "Auto suspend count:","Anzahl der auto Suspendierungen" },
690{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" }, 690{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" },
691{ "New profile","Neues Profil" }, 691{ "New profile","Neues Profil" },
692{ "Clone profile","Klone Profil" }, 692{ "Clone profile","Klone Profil" },
693{ "Delete profile","Lösche Profil" }, 693{ "Delete profile","Lösche Profil" },
694{ "Profile:","Profil:" }, 694{ "Profile:","Profil:" },
695{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" }, 695{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" },
696{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 696{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
697{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 697{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
698{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 698{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
699{ "Write back file","Schreibe Datei zurück" }, 699{ "Write back file","Schreibe Datei zurück" },
700{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 700{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
701{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 701{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
702{ "Local device name:","Name dieses Gerätes:" }, 702{ "Local device name:","Name dieses Gerätes:" },
703{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 703{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
704{ "Sync preferences","Synchronisations Einstellungen" }, 704{ "Sync preferences","Synchronisations Einstellungen" },
705{ "Profile kind","Profil Art" }, 705{ "Profile kind","Profil Art" },
706{ "Local file","Lokale Datei" }, 706{ "Local file","Lokale Datei" },
707{ "Local file:","Lokale Datei:" }, 707{ "Local file:","Lokale Datei:" },
708{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 708{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
709{ "Fill in default values for:","Setze Beispiel Werte ein für:" }, 709{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
710{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" }, 710{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
711{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"}, 711{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"},
712{ "Device","Gerät:" }, 712{ "Device","Gerät:" },
713{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" }, 713{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" },
714{ "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" }, 714{ "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" },
715{ "Synchronization successful","Synchronisation erfolgreich" }, 715{ "Synchronization successful","Synchronisation erfolgreich" },
716{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." }, 716{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." },
717{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" }, 717{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" },
718{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" }, 718{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" },
719{ "Enter password","Passwort eingeben" }, 719{ "Enter password","Passwort eingeben" },
720{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" }, 720{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" },
721{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." }, 721{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." },
722{ "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" }, 722{ "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" },
723{ "Writing back file result: ","Resultat des Dateizurückschreibens: " }, 723{ "Writing back file result: ","Resultat des Dateizurückschreibens: " },
724{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" }, 724{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" },
725{ "Edit Calendar Filters","Editiere Kalendar Filter" }, 725{ "Edit Calendar Filters","Editiere Kalendar Filter" },
726{ "Enter filter name:","Neuer Filter Name:" }, 726{ "Enter filter name:","Neuer Filter Name:" },
727{ "Add Filter","Filter hinzufügen" }, 727{ "Add Filter","Filter hinzufügen" },
728{ "Question","Frage" }, 728{ "Question","Frage" },
729{ "Filter position: ","Filter Position: " }, 729{ "Filter position: ","Filter Position: " },
730{ "Month View","Monatsansicht" }, 730{ "Month View","Monatsansicht" },
731{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" }, 731{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" },
732{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 732{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
733{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, 733{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
734{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" }, 734{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" },
735{ "Access: ","Zugriff: " }, 735{ "Access: ","Zugriff: " },
736{ "Needs Action","Aktion notwendig" }, 736{ "Needs Action","Aktion notwendig" },
737{ "Accepted","Akzeptiert" }, 737{ "Accepted","Akzeptiert" },
738{ "Declined","Abgelehnt" }, 738{ "Declined","Abgelehnt" },
739{ "Tentative","Vorläufig" }, 739{ "Tentative","Vorläufig" },
740{ "Delegated","Beauftragt" }, 740{ "Delegated","Beauftragt" },
741{ "Completed","Vollständig" }, 741{ "Completed","Vollständig" },
742{ "In Process","In Bearbeitung" }, 742{ "In Process","In Bearbeitung" },
743{ "Participant","Teilnehmer" }, 743{ "Participant","Teilnehmer" },
744{ "Optional Participant","Möglicher Teilnehmer" }, 744{ "Optional Participant","Möglicher Teilnehmer" },
745{ "Observer","Beobachter" }, 745{ "Observer","Beobachter" },
746{ "Chair","Vorsitzender" }, 746{ "Chair","Vorsitzender" },
747{ "Not supported \non desktop!\n","" }, 747{ "Not supported \non desktop!\n","" },
748{ "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Es ist nichts selektiert!\nDieses druckt die volle Breite der Agenda View, so wie man sie sieht.\nUm die verticale Auswahl zum Drucken zu bestimmen,\nbitte einen verticalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen. " }, 748{ "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Es ist nichts selektiert!\nDieses druckt die volle Breite der Agenda View, so wie man sie sieht.\nUm die verticale Auswahl zum Drucken zu bestimmen,\nbitte einen verticalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen. " },
749{ "Date range: ","Datums Zeitspanne: " }, 749{ "Date range: ","Datums Zeitspanne: " },
750{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " }, 750{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " },
751{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." }, 751{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." },
752{ "Add / remove events","Add./entferne Termine" }, 752{ "Add / remove events","Add./entferne Termine" },
753{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, 753{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." },
754{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, 754{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." },
755{ "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie gepeicherte Datei wurde verändert!\nDatei Grösse: %1 Bytes.\nZuletzt geändert: %2\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, 755{ "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie gepeicherte Datei wurde verändert!\nDatei Grösse: %1 Bytes.\nZuletzt geändert: %2\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" },
756{ "Overwrite","Überschreiben" }, 756{ "Overwrite","Überschreiben" },
757{ "Sync+save","Syncen+speichern" }, 757{ "Sync+save","Syncen+speichern" },
758{ "Default","Standard" }, 758{ "Default","Standard" },
759{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, 759{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " },
760{ " %d items?"," %d Einträge?" }, 760{ " %d items?"," %d Einträge?" },
761{ "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nDieses ist ein\nwiederholender Termin!.\nSind Sie sicher, dass Sie\ndiesen Termin und alle\nWiederholungen löschen möchten?" }, 761{ "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nDieses ist ein\nwiederholender Termin!.\nSind Sie sicher, dass Sie\ndiesen Termin und alle\nWiederholungen löschen möchten?" },
762{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, 762{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" },
763{ "Current","Aktuelle" }, 763{ "Current","Aktuelle" },
764{ "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nDieses ist ein\nwiederholender Termin!\nMöchten sie alle Wiederholungen\nlöschen, oder nur die aktuelle am:\n" }, 764{ "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nDieses ist ein\nwiederholender Termin!\nMöchten sie alle Wiederholungen\nlöschen, oder nur die aktuelle am:\n" },
765{ "All","Alle" }, 765{ "All","Alle" },
766{ "Data Loss Warning","Datenverlust Warnung" }, 766{ "Data Loss Warning","Datenverlust Warnung" },
767{ "Proceed","Weitermachen" }, 767{ "Proceed","Weitermachen" },
768{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, 768{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" },
769{ "Filter disabled ","Filter abgeschaltet" }, 769{ "Filter disabled ","Filter abgeschaltet" },
770{ "Filter selected: ","Gewählter Filter: " }, 770{ "Filter selected: ","Gewählter Filter: " },
771{ "Toggle Cancel","Gecancelt ändern" }, 771{ "Toggle Cancel","Gecancelt ändern" },
772{ "&Toggle Cancel","Gecancel&t ändern" }, 772{ "&Toggle Cancel","Gecancel&t ändern" },
773{ "Configure Toolbar","Konfiguriere Toolbar" }, 773{ "Configure Toolbar","Konfiguriere Toolbar" },
774{ "Stretched TB","Gedehnte TB" }, 774{ "Stretched TB","Gedehnte TB" },
775{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, 775{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" },
776{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, 776{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" },
777{ "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","Wenn ein Kalender doppelt importiert\nwird, werden doppelte Einträge ignoriert!\nSie können eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import rückgängig machen zu können.\n" }, 777{ "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","Wenn ein Kalender doppelt importiert\nwird, werden doppelte Einträge ignoriert!\nSie können eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import rückgängig machen zu können.\n" },
778{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, 778{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" },
779{ "Imported file successfully","Datei erfolgreich importiert" }, 779{ "Imported file successfully","Datei erfolgreich importiert" },
780{ "Error importing file","Fehler beim Importieren der Datei" }, 780{ "Error importing file","Fehler beim Importieren der Datei" },
781{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, 781{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" },
782{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\nÜberschreiben?\n" }, 782{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\nÜberschreiben?\n" },
783{ "Overwrite!","Überschreiben!" }, 783{ "Overwrite!","Überschreiben!" },
784{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Einträge\nwerden nicht importiert!\n" }, 784{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Einträge\nwerden nicht importiert!\n" },
785{ "Load backup filename","Lade Backup Dateiname" }, 785{ "Load backup filename","Lade Backup Dateiname" },
786{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, 786{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" },
787{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, 787{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" },
788{ "Save backup filename","Speichere Backup Dateiname" }, 788{ "Save backup filename","Speichere Backup Dateiname" },
789{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\nÜberschreiben?\n" }, 789{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\nÜberschreiben?\n" },
790{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 790{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
791{ "Details of attendee","Teilnehmerdetails" }, 791{ "Details of attendee","Teilnehmerdetails" },
792{ "Work phone:\n","Telefon Arbeit:\n" }, 792{ "Work phone:\n","Telefon Arbeit:\n" },
793{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, 793{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" },
794{ "Home phone:\n","Telefon privat:\n" }, 794{ "Home phone:\n","Telefon privat:\n" },
795{ "Mobile home phone:\n","Mobiltelefon privat:\n" }, 795{ "Mobile home phone:\n","Mobiltelefon privat:\n" },
796{ "Email:\n","Email:\n" }, 796{ "Email:\n","Email:\n" },
797{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, 797{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" },
798{ "Audio Al.: ","Audio Al.: " }, 798{ "Audio Al.: ","Audio Al.: " },
799{ "Proc.Al.: ","Proz.Al.: " }, 799{ "Proc.Al.: ","Proz.Al.: " },
800{ "No sound set","Kein Sound definiert" }, 800{ "No sound set","Kein Sound definiert" },
801{ "*.wav|Wav Files","*.wav|Wav Dateien" }, 801{ "*.wav|Wav Files","*.wav|Wav Dateien" },
802{ "No program set","Kein Programm definiert" }, 802{ "No program set","Kein Programm definiert" },
803{ "Running '%1'","Ausführen '%1'" }, 803{ "Running '%1'","Ausführen '%1'" },
804{ "Playing '%1'","Abspielen '%1'" }, 804{ "Playing '%1'","Abspielen '%1'" },
805{ "Show Sync Events in WN/Agenda view","Zeige Sync Events in WN/Agenda Ansicht" }, 805{ "Show Sync Events in WN/Agenda view","Zeige Sync Events in WN/Agenda Ansicht" },
806{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, 806{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" },
807{ "Load!","Laden!" }, 807{ "Load!","Laden!" },
808{ "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Backup Datei vom:\n%1\nDas Laden der Backup Datei\nlöscht die aktuellen Daten!\n" }, 808{ "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Backup Datei vom:\n%1\nDas Laden der Backup Datei\nlöscht die aktuellen Daten!\n" },
809{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, 809{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" },
810{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, 810{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" },
811{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 811{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
812{ "Features + hints...","Eigenschaften + Tipps..." }, 812{ "Features + hints...","Eigenschaften + Tipps..." },
813{ "User translation...","Benutzer Übersetzung..." }, 813{ "User translation...","Benutzer Übersetzung..." },
814{ "Sync HowTo...","Synchronisation HowTo..." }, 814{ "Sync HowTo...","Synchronisation HowTo..." },
815{ "Print calendar...","Drucke Kalender..." }, 815{ "Print calendar...","Drucke Kalender..." },
816{ "Anniversary","Jahrestag" }, 816{ "Anniversary","Jahrestag" },
817{ "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Wenn Geburtstage mehrfach importiert\nwerden, werden doppelte Einträge ignoriert\nwenn sie nicht verändert wurden.\n" }, 817{ "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Wenn Geburtstage mehrfach importiert\nwerden, werden doppelte Einträge ignoriert\nwenn sie nicht verändert wurden.\n" },
818{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, 818{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" },
819{ "Next recurrence is on: ","Nächste Wiederholung ist am:" }, 819{ "Next recurrence is on: ","Nächste Wiederholung ist am:" },
820{ "<b>Alarm on: </b>","<b>Alarm am: </b>" }, 820{ "<b>Alarm on: </b>","<b>Alarm am: </b>" },
821{ "<b>Access: </b>","<b>Zugriff: </b>" }, 821{ "<b>Access: </b>","<b>Zugriff: </b>" },
822{ "(%1 min before)","(%1 min vorher)" }, 822{ "(%1 min before)","(%1 min vorher)" },
823{ "<b>Categories: </b>","<b>Kategorien: </b>" }, 823{ "<b>Categories: </b>","<b>Kategorien: </b>" },
824{ "Save Journal/Description...","Speichere Journal/Details..." }, 824{ "Save Journal/Description...","Speichere Journal/Details..." },
825{ "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Das speichert den Text bzw.\ndie Details von selektierten\nJournalen und Events/Todos\nin eine Textdatei." }, 825{ "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Das speichert den Text bzw.\ndie Details von selektierten\nJournalen und Events/Todos\nin eine Textdatei." },
826{ "Continue","Weitermachen" }, 826{ "Continue","Weitermachen" },
827{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, 827{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" },
828{ "Attendee:","Teilnehmer:" }, 828{ "Attendee:","Teilnehmer:" },
829{ "Click OK to search ->","Klicke zum Suchen auf OK ->" }, 829{ "Click OK to search ->","Klicke zum Suchen auf OK ->" },
830{ "On day ","Am Tag " }, 830{ "On day ","Am Tag " },
831{ "%1 of ","%1 des Monats" }, 831{ "%1 of ","%1 des Monats" },
832{ "%1 of the year","%1 des Jahres" }, 832{ "%1 of the year","%1 des Jahres" },
833{ "Anonymous","Anonymo" }, 833{ "Anonymous","Anonymo" },
834{ "nobody@nowhere","niemand@nirgendwo" }, 834{ "nobody@nowhere","niemand@nirgendwo" },
835{ "calendar.html","calendar.html" }, 835{ "calendar.html","calendar.html" },
836{ " Local Time"," Locale Zeit" }, 836{ " Local Time"," Locale Zeit" },
837{ "Unknown Name","Unbekannter Name" }, 837{ "Unknown Name","Unbekannter Name" },
838{ "unknown@nowhere","unbekannt@nirgendwo" }, 838{ "unknown@nowhere","unbekannt@nirgendwo" },
839{ "Beam via IR!","Beam via IR!" }, 839{ "Beam via IR!","Beam via IR!" },
840{ "Next Month","Nächster Monat" }, 840{ "Next Month","Nächster Monat" },
841{ "Prio","Prio" }, 841{ "Prio","Prio" },
842{ "Reparent Todo","Mache Sub-Todo" }, 842{ "Reparent Todo","Mache Sub-Todo" },
843{ "tomorrow","morgen" }, 843{ "tomorrow","morgen" },
844{ "today","heute" }, 844{ "today","heute" },
845{ "yesterday","gestern" }, 845{ "yesterday","gestern" },
846{ "Ok","Ok" }, 846{ "Ok","Ok" },
847{ "Ok+Agenda","Ok+Agenda" }, 847{ "Ok+Agenda","Ok+Agenda" },
848{ "Email","Email" }, 848{ "Email","Email" },
849{ "RSVP","RSVP" }, 849{ "RSVP","RSVP" },
850{ "Email:","Email:" }, 850{ "Email:","Email:" },
851{ "Appointment Time ","Termin Zeit " }, 851{ "Appointment Time ","Termin Zeit " },
852{ "2","2" }, 852{ "2","2" },
853{ "3","3" }, 853{ "3","3" },
854{ "4","4" }, 854{ "4","4" },
855{ " 0 %"," 0 %" }, 855{ " 0 %"," 0 %" },
856{ " 20 %"," 20 %" }, 856{ " 20 %"," 20 %" },
857{ " 40 %"," 40 %" }, 857{ " 40 %"," 40 %" },
858{ " 60 %"," 60 %" }, 858{ " 60 %"," 60 %" },
859{ " 80 %"," 80 %" }, 859{ " 80 %"," 80 %" },
860{ "100 %","100 %" }, 860{ "100 %","100 %" },
861{ "Filter","Filter" }, 861{ "Filter","Filter" },
862{ "Configure","Konfiguriere" }, 862{ "Configure","Konfiguriere" },
863{ "What's Next","What's Next" }, 863{ "What's Next","What's Next" },
864{ "Complete calendar...","Kompletten Kalender..." }, 864{ "Complete calendar...","Kompletten Kalender..." },
865{ "Filtered calendar...","Gefilterten Kalender..." }, 865{ "Filtered calendar...","Gefilterten Kalender..." },
866{ "Export to phone","Exportiere zum Handy" }, 866{ "Export to phone","Exportiere zum Handy" },
867{ "Beam receive enabled","Beam Empfang an" }, 867{ "Beam receive enabled","Beam Empfang an" },
868{ "What's new?","Was ist neu?" }, 868{ "What's new?","Was ist neu?" },
869{ "FAQ...","FAQ..." }, 869{ "FAQ...","FAQ..." },
870{ "Licence...","Licence..." }, 870{ "Licence...","Licence..." },
871{ "What's This?","What's This?" }, 871{ "What's This?","What's This?" },
872{ "&Edit...","&Editiere..." }, 872{ "&Edit...","&Editiere..." },
873{ "Oktober","Oktober" }, 873{ "Oktober","Oktober" },
874{ "Title","Titel" }, 874{ "Title","Titel" },
875{ "%1 %","%1 %" }, 875{ "%1 %","%1 %" },
876{ "Enable Pi-Sync","Schalte Pi-Sync an" }, 876{ "Enable Pi-Sync","Schalte Pi-Sync an" },
877{ "Import!","Importiere!" }, 877{ "Import!","Importiere!" },
878{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" }, 878{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" },
879{ "Export to phone options","Export ans Handy Optionen" }, 879{ "Export to phone options","Export ans Handy Optionen" },
880{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 880{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." },
881{ "I/O device: ","I/O device: " }, 881{ "I/O device: ","I/O device: " },
882{ "Connection: ","Connection: " }, 882{ "Connection: ","Connection: " },
883{ "Model(opt.): ","Model(opt.): " }, 883{ "Model(opt.): ","Model(opt.): " },
884{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" }, 884{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" },
885{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, 885{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " },
886{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nToDo/Kalender Daten auf dem Handy!" }, 886{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nToDo/Kalender Daten auf dem Handy!" },
887{ "Export to mobile phone!","Exportiere auf das Handy!" }, 887{ "Export to mobile phone!","Exportiere auf das Handy!" },
888{ "Export complete calendar","Exportiere kompletten Kalender" }, 888{ "Export complete calendar","Exportiere kompletten Kalender" },
889{ "Writing to phone...","Sende Daten ans Handy..." }, 889{ "Writing to phone...","Sende Daten ans Handy..." },
890{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 890{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
891{ "Retry","Nochmal versuchen" }, 891{ "Retry","Nochmal versuchen" },
892{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 892{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
893{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 893{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" },
894{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 894{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
895{ "Export filtered calendar","Exportiere gefilterten Kalender" }, 895{ "Export filtered calendar","Exportiere gefilterten Kalender" },
896{ "Preferences","Vorlieben" }, 896{ "Preferences","Vorlieben" },
897{ "Global","Global" }, 897{ "Global","Global" },
898{ "Phone","Phone" }, 898{ "Phone","Phone" },
899{ "SMS","SMS" }, 899{ "SMS","SMS" },
900{ "Fax","Fax" }, 900{ "Fax","Fax" },
901{ "Pager","Pager" }, 901{ "Pager","Pager" },
902{ "SIP","SIP" }, 902{ "SIP","SIP" },
903{ "Italian","Italienisch" }, 903{ "Italian","Italienisch" },
904{ "24:00","24:00" }, 904{ "24:00","24:00" },
905{ "12:00am","12:00am" }, 905{ "12:00am","12:00am" },
906{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 906{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
907{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 907{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
908{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 908{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
909{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 909{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
910{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 910{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
911{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 911{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
912{ "Used Mail Client","Benutzter Mail Client" }, 912{ "Used Mail Client","Benutzter Mail Client" },
913{ "Channel:","Channel:" }, 913{ "Channel:","Channel:" },
914{ "Message:","Message:" }, 914{ "Message:","Message:" },
915{ "Parameters:","Parameter:" }, 915{ "Parameters:","Parameter:" },
916{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 916{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
917{ "extra Message:","extra Message:" }, 917{ "extra Message:","extra Message:" },
918{ "extra Parameters:","extra Parameter:" }, 918{ "extra Parameters:","extra Parameter:" },
919{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 919{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
920{ "External Apps.","Externe Appl." }, 920{ "External Apps.","Externe Appl." },
921{ "24 hours","24 Std." }, 921{ "24 hours","24 Std." },
922{ "3 hours","3 Std." }, 922{ "3 hours","3 Std." },
923{ "1 hour","1 Std." }, 923{ "1 hour","1 Std." },
924{ "15 minutes","15 Min." }, 924{ "15 minutes","15 Min." },
925{ "5 minutes","5 Min." }, 925{ "5 minutes","5 Min." },
926{ "1 minute","1 Min." }, 926{ "1 minute","1 Min." },
927{ "23","23" }, 927{ "23","23" },
928{ "Mon 15","Mon 15" }, 928{ "Mon 15","Mon 15" },
929{ "Configure KO","Konfiguriere KO" }, 929{ "Configure KO","Konfiguriere KO" },
930{ "Event text","Termin Text" }, 930{ "Event text","Termin Text" },
931{ "ToDo","ToDo" }, 931{ "ToDo","ToDo" },
932{ "Today","Heute" }, 932{ "Today","Heute" },
933{ "What's Next View","What's Next Ansicht" }, 933{ "What's Next View","What's Next Ansicht" },
934{ "Show Sync Events in \nWhat's Next/Agenda view","Zeige Sync Termine in \nWhat's Next/Agenda view" }, 934{ "Show Sync Events in \nWhat's Next/Agenda view","Zeige Sync Termine in \nWhat's Next/Agenda view" },
935{ "Use short date in \nWhat's Next/Event view","Zeige Kurzdatum in \nWhat's Next/Event view" }, 935{ "Use short date in \nWhat's Next/Event view","Zeige Kurzdatum in \nWhat's Next/Event view" },
936{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, 936{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" },
937{ "Alarm","Alarm" }, 937{ "Alarm","Alarm" },
938{ "Used %1 Client","Benutzter %1 Client" }, 938{ "Used %1 Client","Benutzter %1 Client" },
939{ "No email client installed","Kein Email Klient installiert" }, 939{ "No email client installed","Kein Email Klient installiert" },
940{ "Userdefined email client","Benutzerdef. Email Klient" }, 940{ "Userdefined email client","Benutzerdef. Email Klient" },
941{ "OM/Pi email client","OM/Pi Email Klient" }, 941{ "OM/Pi email client","OM/Pi Email Klient" },
942{ "Include in multiple ","Beziehe in multiple " }, 942{ "Include in multiple ","Beziehe in multiple " },
943{ "calendar ","Kalender " }, 943{ "calendar ","Kalender " },
944{ "addressbook ","Adressbuch " }, 944{ "addressbook ","Adressbuch " },
945{ "pwmanager","PWmanager" }, 945{ "pwmanager","PWmanager" },
946{ " sync"," Sync ein" }, 946{ " sync"," Sync ein" },
947{ "Write back synced data","Schreibe gesyncte Daten zurück" }, 947{ "Write back synced data","Schreibe gesyncte Daten zurück" },
948{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" }, 948{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" },
949{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" }, 949{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" },
950{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, 950{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " },
951{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 951{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
952{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, 952{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" },
953{ "Help...","Hilfe..." }, 953{ "Help...","Hilfe..." },
954{ "Local file Cal:","Lokale Datei Kal:" }, 954{ "Local file Cal:","Lokale Datei Kal:" },
955{ "Local file ABook:","Lokale Datei ABuch:" }, 955{ "Local file ABook:","Lokale Datei ABuch:" },
956{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 956{ "Local file PWMgr:","Lokale Datei PWMgr:" },
957{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 957{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
958{ "Calendar:","Kalender:" }, 958{ "Calendar:","Kalender:" },
959{ "AddressBook:","AdressBuch:" }, 959{ "AddressBook:","AdressBuch:" },
960{ "PWManager:","PWManager:" }, 960{ "PWManager:","PWManager:" },
961{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 961{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
962{ "ssh/scp","ssh/scp" }, 962{ "ssh/scp","ssh/scp" },
963{ "ftp","ftp" }, 963{ "ftp","ftp" },
964{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, 964{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" },
965{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, 965{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" },
966{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, 966{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" },
967{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, 967{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" },
968{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, 968{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" },
969{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, 969{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" },
970{ "KDE-Pim sync config","KDE-Pim sync Konfig" }, 970{ "KDE-Pim sync config","KDE-Pim sync Konfig" },
971{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" }, 971{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" },
972{ "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" }, 972{ "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" },
973{ "Port number (Default: %1)","Port Nummer (Default: %1)" }, 973{ "Port number (Default: %1)","Port Nummer (Default: %1)" },
974{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, 974{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" },
975{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, 975{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" },
976{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, 976{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" },
977{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" }, 977{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" },
978{ "Disable Pi-Sync","Schalte Pi-Sync aus" }, 978{ "Disable Pi-Sync","Schalte Pi-Sync aus" },
979{ "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!" }, 979{ "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!" },
980{ "KDE-Pim Sync","KDE-Pim Sync" }, 980{ "KDE-Pim Sync","KDE-Pim Sync" },
981{ "Multiple profiles","Multi-Sync Profile" }, 981{ "Multiple profiles","Multi-Sync Profile" },
982{ "Device: ","Gerät: " }, 982{ "Device: ","Gerät: " },
983{ "Multiple sync started.","Multi-Sync gestartet." }, 983{ "Multiple sync started.","Multi-Sync gestartet." },
984{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" }, 984{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" },
985{ "Turn filter on","Schalte Filter an" }, 985{ "Turn filter on","Schalte Filter an" },
986{ "Turn filter off","Schalte Filter aus" }, 986{ "Turn filter off","Schalte Filter aus" },
987{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" }, 987{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" },
988{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" }, 988{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" },
989{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" }, 989{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" },
990{ "<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n","<p><b>Schwarz</b>: Termin/Todo mit Teilnehmern. Sie sind der Organisator!</p>\n" }, 990{ "<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n","<p><b>Schwarz</b>: Termin/Todo mit Teilnehmern. Sie sind der Organisator!</p>\n" },
991{ "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrün</b>: Information(Beschreibung) verfügbar.([i] in WN Ansicht)</p>\n" }, 991{ "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrün</b>: Information(Beschreibung) verfügbar.([i] in WN Ansicht)</p>\n" },
992{ "<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n","<p><b>Blau</b>: Wiederholender Termin.([r] in Whats'Next Ansicht)</p>\n" }, 992{ "<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n","<p><b>Blau</b>: Wiederholender Termin.([r] in Whats'Next Ansicht)</p>\n" },
993{ "<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n","<p><b>Rot</b>: Alarm gesetzt.([a] in Whats'Next Ansicht)</p>\n" }, 993{ "<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n","<p><b>Rot</b>: Alarm gesetzt.([a] in Whats'Next Ansicht)</p>\n" },
994{ "<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n","<p><b>Kreuz</b>: Eintrag gecancelt.([c] in Whats'Next Ansicht)</p>\n" }, 994{ "<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n","<p><b>Kreuz</b>: Eintrag gecancelt.([c] in Whats'Next Ansicht)</p>\n" },
995{ "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(für quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" }, 995{ "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(für quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" },
996{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" }, 996{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" },
997{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" }, 997{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" },
998{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" }, 998{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" },
999{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" }, 999{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" },
1000{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" }, 1000{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" },
1001{ "<p><b>shift+up/down</b>: Goto first/last item</p>\n","<p><b>shift+up/down</b>: Gehe zum ersten/letzten Eintrag</p>\n" }, 1001{ "<p><b>shift+up/down</b>: Goto first/last item</p>\n","<p><b>shift+up/down</b>: Gehe zum ersten/letzten Eintrag</p>\n" },
1002{ "<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n","<p><b>ctrl+up/down</b>: Gehe hoch/runter 20% aller Einträge</p>\n" }, 1002{ "<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n","<p><b>ctrl+up/down</b>: Gehe hoch/runter 20% aller Einträge</p>\n" },
1003{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" }, 1003{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" },
1004{ "<p><b>return+shift</b>: Deselect item+one step down</p>\n","<p><b>return+shift</b>: Deselektiere Item+Cursor einen Eintrag runter</p>\n" }, 1004{ "<p><b>return+shift</b>: Deselect item+one step down</p>\n","<p><b>return+shift</b>: Deselektiere Item+Cursor einen Eintrag runter</p>\n" },
1005{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" }, 1005{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" },
1006{ "<p><b>I</b>: Show info of current item+one step down.</p>\n","<p><b>I</b>: Zeige Detail-Ansicht vom sel.Eintrag+Cursor einen Eintrag runter.</p>\n" }, 1006{ "<p><b>I</b>: Show info of current item+one step down.</p>\n","<p><b>I</b>: Zeige Detail-Ansicht vom sel.Eintrag+Cursor einen Eintrag runter.</p>\n" },
1007{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" }, 1007{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" },
1008{ "<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n","<p><b>return+shift</b>: Markiere Todo als nicht erledigt+Cursor einen Eintrag runter</p>\n" }, 1008{ "<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n","<p><b>return+shift</b>: Markiere Todo als nicht erledigt+Cursor einen Eintrag runter</p>\n" },
1009{ "<p><b>return</b>: Mark item as completed+one step down.</p>\n","<p><b>return</b>: Markiere Todo als erledigt+Cursor einen Eintrag runter.</p>\n" }, 1009{ "<p><b>return</b>: Mark item as completed+one step down.</p>\n","<p><b>return</b>: Markiere Todo als erledigt+Cursor einen Eintrag runter.</p>\n" },
1010{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" }, 1010{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" },
1011{ "<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n","<p><b>shift+P</b>: Mache Todo zum neuen <b>P</b>arent Todo für das Todo, welches mit shift+Sselektiert wurde.</p>\n" }, 1011{ "<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n","<p><b>shift+P</b>: Mache Todo zum neuen <b>P</b>arent Todo für das Todo, welches mit shift+Sselektiert wurde.</p>\n" },
1012{ "<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n","<p><b>shift+S</b>: Mache Todo zum <b>S</b>ubtodo</p>\n" }, 1012{ "<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n","<p><b>shift+S</b>: Mache Todo zum <b>S</b>ubtodo</p>\n" },
1013{ "<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n","<p><b>shift+U</b>: <b>U</b>nparent Todo (Mache Sub-Todo zum Toplevel Todo)</p>\n" }, 1013{ "<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n","<p><b>shift+U</b>: <b>U</b>nparent Todo (Mache Sub-Todo zum Toplevel Todo)</p>\n" },
1014{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" }, 1014{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" },
1015{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" }, 1015{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" },
1016{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" }, 1016{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" },
1017{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" }, 1017{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" },
1018{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" }, 1018{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" },
1019{ "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" }, 1019{ "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" },
1020{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: Nächste Woche | <b>right+ctrl</b>: Nächste Woche</p>\n" }, 1020{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: Nächste Woche | <b>right+ctrl</b>: Nächste Woche</p>\n" },
1021{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" }, 1021{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" },
1022{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" }, 1022{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" },
1023{ "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda Höhe</p>\n" }, 1023{ "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda Höhe</p>\n" },
1024{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X</b>: Zeige/verstecke Datenavigator</p>\n" }, 1024{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X</b>: Zeige/verstecke Datenavigator</p>\n" },
1025{ "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" }, 1025{ "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" },
1026{ "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" }, 1026{ "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" },
1027{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monats Ansicht</p>\n" }, 1027{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monats Ansicht</p>\n" },
1028{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochen Ansicht | <b>U</b>: Wochen Ansicht</p>\n" }, 1028{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochen Ansicht | <b>U</b>: Wochen Ansicht</p>\n" },
1029{ "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" }, 1029{ "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" },
1030{ "<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ","<p><b>N</b>: Nächste-Tage Ansicht days view| <b>W</b>: What's next Ansicht\n " }, 1030{ "<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ","<p><b>N</b>: Nächste-Tage Ansicht days view| <b>W</b>: What's next Ansicht\n " },
1031{ "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" }, 1031{ "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" },
1032{ "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" }, 1032{ "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" },
1033{ "<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n","<p><b>F</b>: Zeige/verstecke Filter Ansicht |<b>F+ctrl</b>: Editiere Filter </p>\n" }, 1033{ "<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n","<p><b>F</b>: Zeige/verstecke Filter Ansicht |<b>F+ctrl</b>: Editiere Filter </p>\n" },
1034{ "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" }, 1034{ "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" },
1035{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) für selektiertes Item</p>\n" }, 1035{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) für selektiertes Item</p>\n" },
1036{ "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" }, 1036{ "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" },
1037{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" }, 1037{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" },
1038{ "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas geändert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgründen wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\nÄnderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie können eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" }, 1038{ "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas geändert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgründen wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\nÄnderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie können eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" },
1039{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" }, 1039{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" },
1040{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" }, 1040{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" },
1041{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" }, 1041{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" },
1042{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.net\n" }, 1042{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.net\n" },
1043{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfür den Zaurus ist verfügbar\nals zusätzliche Anwendung\n" }, 1043{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfür den Zaurus ist verfügbar\nals zusätzliche Anwendung\n" },
1044{ "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann möglicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterstützt.\n" }, 1044{ "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann möglicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterstützt.\n" },
1045{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" }, 1045{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" },
1046{ "KO/Pi FAQ","KO/Pi FAQ" }, 1046{ "KO/Pi FAQ","KO/Pi FAQ" },
1047{ "(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n","(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi basiert auf KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.korganizer.org\nwww.pi-sync.net\n" }, 1047{ "(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n","(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi basiert auf KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.korganizer.org\nwww.pi-sync.net\n" },
1048{ "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n","PDA-Edition\nfür: Zaurus 5x00 / 7x0 / 8x0\n" }, 1048{ "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n","PDA-Edition\nfür: Zaurus 5x00 / 7x0 / 8x0\n" },
1049{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" }, 1049{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" },
1050{ "About KOrganizer/Pi","Über KOrganizer/Pi" }, 1050{ "About KOrganizer/Pi","Über KOrganizer/Pi" },
1051{ "From: ","Von: " }, 1051{ "From: ","Von: " },
1052{ "Remove sync info","Entferne Sync Info" }, 1052{ "Remove sync info","Entferne Sync Info" },
1053{ "For all profiles","Für alle Profile" }, 1053{ "For all profiles","Für alle Profile" },
1054{ "Hide not Running","Verstecke nicht Laufende" }, 1054{ "Hide not Running","Verstecke nicht Laufende" },
1055{ "ME","ME" }, 1055{ "ME","ME" },
1056{ "Toolbar","Toolbar" }, 1056{ "Toolbar","Toolbar" },
1057{ "Undo Delete...","Löschen rückgängig machen..." }, 1057{ "Undo Delete...","Löschen rückgängig machen..." },
1058{ "Undo Delete","Löschen rückgängig machen" }, 1058{ "Undo Delete","Löschen rückgängig machen" },
1059{ "KDE Sync HowTo...","KDE Sync HowTo..." }, 1059{ "KDE Sync HowTo...","KDE Sync HowTo..." },
1060{ "Multi Sync HowTo...","Multi Sync HowTo..." }, 1060{ "Multi Sync HowTo...","Multi Sync HowTo..." },
1061{ "Januar","Januar" }, 1061{ "Januar","Januar" },
1062{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" }, 1062{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" },
1063{ "No Filter","Kein Filter" }, 1063{ "No Filter","Kein Filter" },
1064{ "Multiple Sync options","Multi Sync Optionen" }, 1064{ "Multiple Sync options","Multi Sync Optionen" },
1065{ "Sync algo options","Sync Ablauf Optionen" }, 1065{ "Sync algo options","Sync Ablauf Optionen" },
1066{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 1066{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
1067{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 1067{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
1068{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 1068{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
1069{ "Write back options","Optionen zum Zurückschreiben" }, 1069{ "Write back options","Optionen zum Zurückschreiben" },
1070{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 1070{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
1071{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 1071{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
1072{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 1072{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
1073{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 1073{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
1074{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 1074{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
1075{ "Time period","Zeitspanne" }, 1075{ "Time period","Zeitspanne" },
1076{ "From ","Von " }, 1076{ "From ","Von " },
1077{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 1077{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
1078{ " weeks in the future "," Wochen in der Zukunft " }, 1078{ " weeks in the future "," Wochen in der Zukunft " },
1079{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 1079{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
1080{ "Local temp file:","Lokale temp Datei:" }, 1080{ "Local temp file:","Lokale temp Datei:" },
1081{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 1081{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
1082{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 1082{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
1083
1084
1085
1086
1087{ "Language","Sprache" }, 1083{ "Language","Sprache" },
1088{ "Time Format","Zeit Format" }, 1084{ "Time Format","Zeit Format" },
1089{ "Time Zone","Zeit Zone" }, 1085{ "Time Zone","Zeit Zone" },
1090{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Ihr gerade genutztes Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverzeichnis)/apps/kopiemail/localmail" }, 1086{ "%1 groups subscribed","%1 Guppen abboniert" },
1091{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" }, 1087{ "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" },
1092{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" }, 1088{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
1089{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
1093{ "Save settings","Speichere Einstellungen" }, 1090{ "Save settings","Speichere Einstellungen" },
1094{ "Save standard","Speichere Standard" }, 1091{ "Save standard","Speichere Standard" },
1095{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 1092{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
1096{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" }, 1093{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
1097{ "Data storage path","Daten Speicherpfad" }, 1094{ "Data storage path","Daten Speicherpfad" },
1098{ "Language","Sprache" }, 1095{ "Language","Sprache" },
1099{ "Show time in agenda items","Zeige Zeit in Agenda Items" }, 1096{ "Show time in agenda items","Zeige Zeit in Agenda Items" },
1100{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" }, 1097{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" },
1101{ "Show events, that are done in \nWhat's Next view","Zeige abgelaufene Termine in\nWhat's Next Ansicht" }, 1098{ "Show events, that are done in \nWhat's Next view","Zeige abgelaufene Termine in\nWhat's Next Ansicht" },
1102{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos in To-do Ansicht" }, 1099{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" },
1103{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 1100{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
1104{ "KO/Pi","KO/Pi" }, 1101{ "KO/Pi","KO/Pi" },
1105{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" }, 1102{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" },
1106{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." }, 1103{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." },
1107{ "Sound.Al.: ","Sound.Al.: " }, 1104{ "Sound.Al.: ","Sound.Al.: " },
1108{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" }, 1105{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" },
1109{ "Restore","Wiederherstellen" }, 1106{ "Restore","Wiederherstellen" },
1110{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklicht\nwiederherstellen?" }, 1107{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklicht\nwiederherstellen?" },
1111{ "% completed","% komplett" }, 1108{ "% completed","% komplett" },
1112{ "%d item(s) found.","%d Item(s) gefunden." }, 1109{ "%d item(s) found.","%d Item(s) gefunden." },
1113{ "Set complete","Setze auf erledigt" }, 1110{ "Set complete","Setze auf erledigt" },
1114{ "(cancelled)","(gecancelt)" }, 1111{ "(cancelled)","(gecancelt)" },
1115{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" }, 1112{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" },
1116{ " Local time "," Locale Zeit " }, 1113{ " Local time "," Locale Zeit " },
1117{ "Form2","Form2" }, 1114{ "Form2","Form2" },
1118{ "Filter enabled","Filter angeschaltet" }, 1115{ "Filter enabled","Filter angeschaltet" },
1119{ "Edit Filters","Ändere Filter" }, 1116{ "Edit Filters","Ändere Filter" },
1120{ "Print What's Next View...","Drucke What's Next Ansicht..." }, 1117{ "Print What's Next View...","Drucke What's Next Ansicht..." },
1121{ "Agenda","Agenda" }, 1118{ "Agenda","Agenda" },
1122{ " ("," (" }, 1119{ " ("," (" },
1123{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" }, 1120{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" },
1124{ "Print","Print" }, 1121{ "Print","Print" },
1125{ "&Setup Printer...","Drucker &Setup..." }, 1122{ "&Setup Printer...","Drucker &Setup..." },
1126{ "View Type","Zeige Typ" }, 1123{ "View Type","Zeige Typ" },
1127{ "Page &orientation:","Seiten Ausrichtung:" }, 1124{ "Page &orientation:","Seiten Ausrichtung:" },
1128{ "Use Default of Selected Style","Default des selektierten Stils" }, 1125{ "Use Default of Selected Style","Default des selektierten Stils" },
1129{ "Use Default Setting of Printer","Default Einstellung des Druckers" }, 1126{ "Use Default Setting of Printer","Default Einstellung des Druckers" },
1130{ "Portrait","Portrait" }, 1127{ "Portrait","Portrait" },
1131{ "Landscape","Landschaft" }, 1128{ "Landscape","Landschaft" },
1132{ "Print day","Drucke Tag" }, 1129{ "Print day","Drucke Tag" },
1133{ "CalPrintDay_Base","CalPrintDay_Base" }, 1130{ "CalPrintDay_Base","CalPrintDay_Base" },
1134{ "Date && Time Range","Datum && Zeitspanne" }, 1131{ "Date && Time Range","Datum && Zeitspanne" },
1135{ "&End date:","&Enddatum:" }, 1132{ "&End date:","&Enddatum:" },
1136{ "&Start date:","&Startdatum:" }, 1133{ "&Start date:","&Startdatum:" },
1137{ "Start &time:","Startzeit:" }, 1134{ "Start &time:","Startzeit:" },
1138{ "End ti&me:","Endzeit:" }, 1135{ "End ti&me:","Endzeit:" },
1139{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Ereignisse einzuschliessen" }, 1136{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" },
1140{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, 1137{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" },
1141{ "Alt+D","Alt+D" }, 1138{ "Alt+D","Alt+D" },
1142{ "&Use colors","Nutze Farben" }, 1139{ "&Use colors","Nutze Farben" },
1143{ "Alt+U","Alt+U" }, 1140{ "Alt+U","Alt+U" },
1144{ "Print week","Drucke Woche" }, 1141{ "Print week","Drucke Woche" },
1145{ "CalPrintWeek_Base","CalPrintWeek_Base" }, 1142{ "CalPrintWeek_Base","CalPrintWeek_Base" },
1146{ "Use &colors","Nutze Farben" }, 1143{ "Use &colors","Nutze Farben" },
1147{ "Type of View","Typ der Ansicht" }, 1144{ "Type of View","Typ der Ansicht" },
1148{ "Print as &Filofax page","Drucke als &Filofax Seite" }, 1145{ "Print as &Filofax page","Drucke als &Filofax Seite" },
1149{ "Alt+F","Alt+F" }, 1146{ "Alt+F","Alt+F" },
1150{ "Print as &timetable view:","Drucke als Zeittabelle:" }, 1147{ "Print as &timetable view:","Drucke als Zeittabelle:" },
1151{ "Alt+T","Alt+T" }, 1148{ "Alt+T","Alt+T" },
1152{ "Print as split week view","Drucke als gesplittete Wochenansicht" }, 1149{ "Print as split week view","Drucke als gesplittete Wochenansicht" },
1153{ "Print month","Drucke Monat" }, 1150{ "Print month","Drucke Monat" },
1154{ "CalPrintMonth_Base","CalPrintMonth_Base" }, 1151{ "CalPrintMonth_Base","CalPrintMonth_Base" },
1155{ "&Start month:","&Startmonat:" }, 1152{ "&Start month:","&Startmonat:" },
1156{ "&End month:","&Endmonat:" }, 1153{ "&End month:","&Endmonat:" },
1157{ "Print week &numbers","Drucke Wochen Nummer(n)" }, 1154{ "Print week &numbers","Drucke Wochen Nummer(n)" },
1158{ "Print todos","Drucke Todos" }, 1155{ "Print todos","Drucke Todos" },
1159{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, 1156{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" },
1160{ "Include &description of the item","Inclusive Itembeschreibung" }, 1157{ "Include &description of the item","Inclusive Itembeschreibung" },
1161{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, 1158{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" },
1162{ "Include &priority of the item","Inclusive Priorität des Items" }, 1159{ "Include &priority of the item","Inclusive Priorität des Items" },
1163{ "Items to Print","Zu druckende Items" }, 1160{ "Items to Print","Zu druckende Items" },
1164{ "&From:","Von:" }, 1161{ "&From:","Von:" },
1165{ "&To:","Bis:" }, 1162{ "&To:","Bis:" },
1166{ "Print &all todo items","Drucke alle Todo Items" }, 1163{ "Print &all todo items","Drucke alle Todo Items" },
1167{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, 1164{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" },
1168{ "Only items due in the &range:","Nur Items in dem Zeitraum:" }, 1165{ "Only items due in the &range:","Nur Items in dem Zeitraum:" },
1169{ "Todo List","Todo Liste" }, 1166{ "Todo List","Todo Liste" },
1170{ "&Title:","&Titel:" }, 1167{ "&Title:","&Titel:" },
1171{ "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" }, 1168{ "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" },
1172{ "Todo list","Todo Liste" }, 1169{ "Todo list","Todo Liste" },
1173{ "&Print...","Drucke..." }, 1170{ "&Print...","Drucke..." },
1174{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, 1171{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" },
1175{ "[Unconfigured]","[Unkonfiguriert]" }, 1172{ "[Unconfigured]","[Unkonfiguriert]" },
1176{ "OK","OK" }, 1173{ "OK","OK" },
1177{ "FilterEditor","FilterEditor" }, 1174{ "FilterEditor","FilterEditor" },
1178{ "Include","Inclusive" }, 1175{ "Include","Inclusive" },
1179{ "Exclude","Exclusive" }, 1176{ "Exclude","Exclusive" },
1180{ "Edit Selection...","Editiere Selektion..." }, 1177{ "Edit Selection...","Editiere Auswahl" },
1181{ "recurring events","wiederholende Ereignisse" }, 1178{ "recurring events","wiederholende Termine" },
1179{ "recurr. events","wiederh.Termine" },
1182{ "completed to-dos","erledigte Todos" }, 1180{ "completed to-dos","erledigte Todos" },
1183{ "events","Ereignisse" }, 1181{ "events","Termine" },
1184{ "todos","Todos" }, 1182{ "todos","Todos" },
1185{ "journals","Journale" }, 1183{ "journals","Journale" },
1186{ "public","öffentlich" }, 1184{ "public","öffentl." },
1187{ "private","privat" }, 1185{ "private","privat" },
1188{ "confidential","vertraulich" }, 1186{ "confidential","vertraul." },
1189{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" }, 1187{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" },
1190{ "Yesterday","Gestern" }, 1188{ "Yesterday","Gestern" },
1191{ "Day after tomorrow","Übermorgen" }, 1189{ "Day after tomorrow","Übermorgen" },
1192{ "Tomorrow","Morgen" }, 1190{ "Tomorrow","Morgen" },
1193{ "Day before yesterday","Vorgestern" }, 1191{ "Day before yesterday","Vorgestern" },
1194{ "Size %1","Größe %1" }, 1192{ "Size %1","Größe %1" },
1195{ "New Agendasize: %1","Neue Agendagröße: %1" }, 1193{ "New Agendasize: %1","Neue Agendagröße: %1" },
1196{ " (%1 y.)"," (%1 J.)" }, 1194{ " (%1 y.)"," (%1 J.)" },
1197{ "Allday:","Ganztägig:" }, 1195{ "Allday:","Ganztägig:" },
1198{ "","" }, 1196{ "compl.todos","erled.Todos" },
1199{ "","" }, 1197{ "","" },
1200{ "","" }, 1198{ "","" },
1201{ "","" }, 1199{ "","" },
1202{ "","" }, 1200{ "","" },
1203{ "","" }, 1201{ "","" },
diff --git a/bin/kdepim/pwmanager/germantranslation.txt b/bin/kdepim/pwmanager/germantranslation.txt
index a47b123..0ebc644 100644
--- a/bin/kdepim/pwmanager/germantranslation.txt
+++ b/bin/kdepim/pwmanager/germantranslation.txt
@@ -1,353 +1,353 @@
1{ " Local Time","Ortszeit" }, 1{ " Local Time","Ortszeit" },
2{ "Default","Voreinstellungen" }, 2{ "Default","Voreinstellungen" },
3{ "Configure...","Konfigurieren..." }, 3{ "Configure...","Konfigurieren..." },
4{ "Remove sync info","Entferne Sync Info" }, 4{ "Remove sync info","Entferne Sync Info" },
5{ "For all profiles","Für alle Profile" }, 5{ "For all profiles","Für alle Profile" },
6{ "Enable Pi-Sync","Aktiviere Pi-Sync" }, 6{ "Enable Pi-Sync","Aktiviere Pi-Sync" },
7{ "Multiple sync","Multi Sync" }, 7{ "Multiple sync","Multi Sync" },
8{ "&Save","&Speichern" }, 8{ "&Save","&Speichern" },
9{ "&Print...","Drucken..." }, 9{ "&Print...","Drucken..." },
10{ "&File","Datei" }, 10{ "&File","Datei" },
11{ "&Edit","Bearbeite" }, 11{ "&Edit","Bearbeite" },
12{ "&View","Ansichten" }, 12{ "&View","Ansicht" },
13{ "&Help","Hilfe" }, 13{ "&Help","Hilfe" },
14{ "Description","Beschreibungen" }, 14{ "Description","Beschreibungen" },
15{ "URL","URL" }, 15{ "URL","URL" },
16{ "Name:","Name:" }, 16{ "Name:","Name:" },
17{ "Documents","Dokumente" }, 17{ "Documents","Dokumente" },
18{ "Files","Dateien" }, 18{ "Files","Dateien" },
19{ "All Files","Alle Dateien" }, 19{ "All Files","Alle Dateien" },
20{ "Name","Name" }, 20{ "Name","Name" },
21{ "Size","Größe" }, 21{ "Size","Größe" },
22{ "Date","Datum" }, 22{ "Date","Datum" },
23{ "Mime Type","Mime Typ" }, 23{ "Mime Type","Mime Typ" },
24{ "Ok","Ok" }, 24{ "Ok","Ok" },
25{ "Cancel","Abbrechen" }, 25{ "Cancel","Abbrechen" },
26{ "1","1" }, 26{ "1","1" },
27{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile" }, 27{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile" },
28{ "Local device name:","Name dieses Gerätes:" }, 28{ "Local device name:","Name dieses Gerätes:" },
29{ "New profile","Neues Profil" }, 29{ "New profile","Neues Profil" },
30{ "Clone profile","Klone Profil" }, 30{ "Clone profile","Klone Profil" },
31{ "Delete profile","Lösche Profil" }, 31{ "Delete profile","Lösche Profil" },
32{ "Profile:","Profil:" }, 32{ "Profile:","Profil:" },
33{ "Multiple Sync options","Multi Sync Optionen" }, 33{ "Multiple Sync options","Multi Sync Optionen" },
34{ "Include in multiple ","Beziehe in mehrfach " }, 34{ "Include in multiple ","Beziehe in mehrfach " },
35{ "calendar ","Kalender " }, 35{ "calendar ","Kalender " },
36{ "addressbook ","Adressbuch " }, 36{ "addressbook ","Adressbuch " },
37{ "pwmanager","PWmanager" }, 37{ "pwmanager","PWmanager" },
38{ " sync"," Sync ein" }, 38{ " sync"," Sync ein" },
39{ "Sync algo options","Sync Ablauf Optionen" }, 39{ "Sync algo options","Sync Ablauf Optionen" },
40{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 40{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
41{ "Sync preferences","Synchronisations Einstellungen" }, 41{ "Sync preferences","Synchronisations Einstellungen" },
42{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" }, 42{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" },
43{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" }, 43{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" },
44{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" }, 44{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" },
45{ "Ask for every entry on conflict","Frage bei Konflikten nach" }, 45{ "Ask for every entry on conflict","Frage bei Konflikten nach" },
46{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 46{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
47{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 47{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
48{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 48{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
49{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 49{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
50{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 50{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
51{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 51{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
52{ "Write back synced data","Schreibe gesyncte Daten zurück" }, 52{ "Write back synced data","Schreibe gesyncte Daten zurück" },
53{ "Write back options","Optionen zum Zurückschreiben" }, 53{ "Write back options","Optionen zum Zurückschreiben" },
54{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 54{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
55{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 55{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
56{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 56{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
57{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 57{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
58{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 58{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
59{ "Time period","Zeitspanne" }, 59{ "Time period","Zeitspanne" },
60{ "From ","Von " }, 60{ "From ","Von " },
61{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 61{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
62{ " weeks in the future "," Wochen in der Zukunft " }, 62{ " weeks in the future "," Wochen in der Zukunft " },
63{ "Profile kind","Profil Art" }, 63{ "Profile kind","Profil Art" },
64{ "Local file","Lokale Datei" }, 64{ "Local file","Lokale Datei" },
65{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 65{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
66{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 66{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
67{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, 67{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" },
68{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 68{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
69{ "I/O device: ","I/O device: " }, 69{ "I/O device: ","I/O device: " },
70{ "Help...","Hilfe..." }, 70{ "Help...","Hilfe..." },
71{ "Connection: ","Connection: " }, 71{ "Connection: ","Connection: " },
72{ "Model(opt.): ","Model(opt.): " }, 72{ "Model(opt.): ","Model(opt.): " },
73{ "Local file Cal:","Lokale Datei Kal:" }, 73{ "Local file Cal:","Lokale Datei Kal:" },
74{ "Local file ABook:","Lokale Datei ABuch:" }, 74{ "Local file ABook:","Lokale Datei ABuch:" },
75{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 75{ "Local file PWMgr:","Lokale Datei PWMgr:" },
76{ "Choose...","Wähle..." }, 76{ "Choose...","Wähle..." },
77{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 77{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
78{ "Calendar:","Kalender:" }, 78{ "Calendar:","Kalender:" },
79{ "AddressBook:","AdressBuch:" }, 79{ "AddressBook:","AdressBuch:" },
80{ "PWManager:","PWManager:" }, 80{ "PWManager:","PWManager:" },
81{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 81{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
82{ "Local temp file:","Lokale temp Datei:" }, 82{ "Local temp file:","Lokale temp Datei:" },
83{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 83{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
84{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 84{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
85{ "Fill in default values for:","Setze Beispiel Werte ein für:" }, 85{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
86{ "ssh/scp","ssh/scp" }, 86{ "ssh/scp","ssh/scp" },
87{ "ftp","ftp" }, 87{ "ftp","ftp" },
88{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" }, 88{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
89{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, 89{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" },
90{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, 90{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" },
91{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, 91{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" },
92{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, 92{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" },
93{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, 93{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" },
94{ "No Filter","Kein Filter" }, 94{ "No Filter","Kein Filter" },
95{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 95{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
96{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, 96{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
97{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 97{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
98{ "Configure","Konfiguriere" }, 98{ "Configure","Konfiguriere" },
99{ "Apply","Anwenden" }, 99{ "Apply","Anwenden" },
100{ "None","Kein" }, 100{ "None","Kein" },
101{ "Global","Allgemein" }, 101{ "Global","Allgemein" },
102{ "Email","E-Mail" }, 102{ "Email","E-Mail" },
103{ "Phone","Telefon" }, 103{ "Phone","Telefon" },
104{ "SMS","SMS" }, 104{ "SMS","SMS" },
105{ "Fax","Fax" }, 105{ "Fax","Fax" },
106{ "Pager","Pager" }, 106{ "Pager","Pager" },
107{ "SIP","SIP" }, 107{ "SIP","SIP" },
108{ "Language:(needs restart)","Sprache:(Neustart)" }, 108{ "Language:(needs restart)","Sprache:(Neustart)" },
109{ "English","English" }, 109{ "English","English" },
110{ "German","Deutsch" }, 110{ "German","Deutsch" },
111{ "French","Französisch" }, 111{ "French","Französisch" },
112{ "Italian","Italienisch" }, 112{ "Italian","Italienisch" },
113{ "User defined (usertranslation.txt)","Benutzerdef. (usertranslation.txt)" }, 113{ "User defined (usertranslation.txt)","Benutzerdef. (usertranslation.txt)" },
114{ "Language","Sprache" }, 114{ "Language","Sprache" },
115{ "Time Format(nr):","Zeit Format(nr):" }, 115{ "Time Format(nr):","Zeit Format(nr):" },
116{ "24:00","24:00" }, 116{ "24:00","24:00" },
117{ "12:00am","12:00am" }, 117{ "12:00am","12:00am" },
118{ "Week starts on Sunday","Woche beginnt Sonntags" }, 118{ "Week starts on Sunday","Woche beginnt Sonntags" },
119{ "Time Format","Zeit Format" }, 119{ "Time Format","Zeit Format" },
120{ "Date Format:","Datums Format:" }, 120{ "Date Format:","Datums Format:" },
121{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 121{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
122{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 122{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
123{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 123{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
124{ "User defined","Benutzerdefiniert" }, 124{ "User defined","Benutzerdefiniert" },
125{ "User long date:","Format langes Datum:" }, 125{ "User long date:","Format langes Datum:" },
126{ "User short date:","Format kurzes Datum:" }, 126{ "User short date:","Format kurzes Datum:" },
127{ "Monday 19 April 2004: %A %d %B %Y","Monday 19 April 2004: %A %d %B %Y" }, 127{ "Monday 19 April 2004: %A %d %B %Y","Monday 19 April 2004: %A %d %B %Y" },
128{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 128{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
129{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 129{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
130{ "Date Format","Datums Format" }, 130{ "Date Format","Datums Format" },
131{ "Timezone:","Zeitzone:" }, 131{ "Timezone:","Zeitzone:" },
132{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 132{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
133{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 133{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
134{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 134{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
135{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 135{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
136{ "Daylight start:","Sommerzeit Beginn:" }, 136{ "Daylight start:","Sommerzeit Beginn:" },
137{ "Mon","Mo" }, 137{ "Mon","Mo" },
138{ "Tue","Di" }, 138{ "Tue","Di" },
139{ "Wed","Mi" }, 139{ "Wed","Mi" },
140{ "Thu","Do" }, 140{ "Thu","Do" },
141{ "Fri","Fr" }, 141{ "Fri","Fr" },
142{ "Sat","Sa" }, 142{ "Sat","Sa" },
143{ "Sun","So" }, 143{ "Sun","So" },
144{ "January","Januar" }, 144{ "January","Januar" },
145{ "February","Februar" }, 145{ "February","Februar" },
146{ "March","März" }, 146{ "March","März" },
147{ "April","April" }, 147{ "April","April" },
148{ "May","Mai" }, 148{ "May","Mai" },
149{ "June","Juni" }, 149{ "June","Juni" },
150{ "July","July" }, 150{ "July","July" },
151{ "August","August" }, 151{ "August","August" },
152{ "September","September" }, 152{ "September","September" },
153{ "October","October" }, 153{ "October","October" },
154{ "November","November" }, 154{ "November","November" },
155{ "December","Dezember" }, 155{ "December","Dezember" },
156{ "tomorrow","Morgen" }, 156{ "tomorrow","Morgen" },
157{ "today","Heute" }, 157{ "today","Heute" },
158{ "yesterday","Gestern" }, 158{ "yesterday","Gestern" },
159{ "Monday","Montag" }, 159{ "Monday","Montag" },
160{ "Tuesday","Dienstag" }, 160{ "Tuesday","Dienstag" },
161{ "Wednesday","Mittwoch" }, 161{ "Wednesday","Mittwoch" },
162{ "Thursday","Donnerstag" }, 162{ "Thursday","Donnerstag" },
163{ "Friday","Freitag" }, 163{ "Friday","Freitag" },
164{ "Saturday","Samstag" }, 164{ "Saturday","Samstag" },
165{ "Sunday","Sonntag" }, 165{ "Sunday","Sonntag" },
166{ "Daylight end:","Sommerzeit Ende:" }, 166{ "Daylight end:","Sommerzeit Ende:" },
167{ "Time Zone","Zeit Zone" }, 167{ "Time Zone","Zeit Zone" },
168{ "Used Mail Client","Benutzter Mail Client" }, 168{ "Used Mail Client","Benutzter Mail Client" },
169{ "Channel:","Channel:" }, 169{ "Channel:","Channel:" },
170{ "Message:","Message:" }, 170{ "Message:","Message:" },
171{ "Parameters:","Parameter:" }, 171{ "Parameters:","Parameter:" },
172{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 172{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
173{ "extra Message:","extra Message:" }, 173{ "extra Message:","extra Message:" },
174{ "extra Parameters:","extra Parameter:" }, 174{ "extra Parameters:","extra Parameter:" },
175{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 175{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
176{ "External Apps.","Externe Appl." }, 176{ "External Apps.","Externe Appl." },
177{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Ihr gerade genutztes Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverzeichnis)/apps/kopiemail/localmail" }, 177{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
178{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" }, 178{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
179{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" }, 179{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
180{ "Save settings","Speichere Einstellungen" }, 180{ "Save settings","Speichere Einstellungen" },
181{ "Save standard","Speichere Standard" }, 181{ "Save standard","Speichere Standard" },
182{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 182{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
183{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" }, 183{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
184{ "Data storage path","Daten Speicherpfad" }, 184{ "Data storage path","Daten Speicherpfad" },
185{ "Used %1 Client","Benutzer %1 Client" }, 185{ "Used %1 Client","Benutzer %1 Client" },
186{ "No email client installed","Keine Email Client installiert" }, 186{ "No email client installed","Keine Email Client installiert" },
187{ "Userdefined email client","Benutzerdef. Email Client" }, 187{ "Userdefined email client","Benutzerdef. Email Client" },
188{ "OM/Pi email client","OM/Pi Email Client" }, 188{ "OM/Pi email client","OM/Pi Email Client" },
189{ "URL:","URL:" }, 189{ "URL:","URL:" },
190{ "No","Nein" }, 190{ "No","Nein" },
191{ "Yes","Ja" }, 191{ "Yes","Ja" },
192{ "Untitled","Unbenannt" }, 192{ "Untitled","Unbenannt" },
193{ "&New","&Neu" }, 193{ "&New","&Neu" },
194{ "&Open","&Öffne" }, 194{ "&Open","&Öffne" },
195{ "&Close","Schließen" }, 195{ "&Close","Schließen" },
196{ "Save &as...","Speichere &als..." }, 196{ "Save &as...","Speichere &als..." },
197{ "&Text-file...","&Text-Datei..." }, 197{ "&Text-file...","&Text-Datei..." },
198{ "&Gpasman / Kpasman ...","&Gpasman / Kpasman ..." }, 198{ "&Gpasman / Kpasman ...","&Gpasman / Kpasman ..." },
199{ "&CSV (Comma Separated Value) ...","&CSV (Komma getrennte Werte) ..." }, 199{ "&CSV (Comma Separated Value) ...","&CSV (Komma getrennte Werte) ..." },
200{ "E&xport","E&xport" }, 200{ "E&xport","E&xport" },
201{ "I&mport","I&mport" }, 201{ "I&mport","I&mport" },
202{ "&Quit","Beenden" }, 202{ "&Quit","Beenden" },
203{ "&Add password","&Passwort hinzufügen" }, 203{ "&Add password","&Passwort hinzufügen" },
204{ "&Delete","Lösche" }, 204{ "&Delete","Lösche" },
205{ "Change &Master Password","Ändere &Master Passwort" }, 205{ "Change &Master Password","Ändere &Master Passwort" },
206{ "&Manage","Verwalte" }, 206{ "&Manage","Verwalte" },
207{ "&Find","&Finde" }, 207{ "&Find","&Finde" },
208{ "&Lock all entries","Sperre alle Einträge" }, 208{ "&Lock all entries","Sperre alle Einträge" },
209{ "&Deep-lock all entries","Sperre total alle Einträge" }, 209{ "&Deep-lock all entries","Sperre total alle Einträge" },
210{ "&Unlock all entries","Entsperre alle Einträge" }, 210{ "&Unlock all entries","Entsperre alle Einträge" },
211{ "&Configure...","Konfiguriere..." }, 211{ "&Configure...","Konfiguriere..." },
212{ "&Options","&Optionen" }, 212{ "&Options","Konfig" },
213{ "C&ategories...","K&ategorien..." }, 213{ "C&ategories...","K&ategorien..." },
214{ "&Sync","&Sync" }, 214{ "&Sync","&Sync" },
215{ "&License","&Lizenz" }, 215{ "&License","&Lizenz" },
216{ "&Faq","&Faq" }, 216{ "&Faq","&Faq" },
217{ "&About PwManager","Über PwManager" }, 217{ "&About PwManager","Über PwManager" },
218{ "&Sync HowTo","&Sync HowTo" }, 218{ "&Sync HowTo","&Sync HowTo" },
219{ "&What's New","Was ist neu?" }, 219{ "&What's New","Was ist neu?" },
220{ "New","Neu" }, 220{ "New","Neu" },
221{ "Open","Öffnen" }, 221{ "Open","Öffnen" },
222{ "Save","Speichern" }, 222{ "Save","Speichern" },
223{ "Save as","Speichern als" }, 223{ "Save as","Speichern als" },
224{ "Print...","Drucke..." }, 224{ "Print...","Drucke..." },
225{ "Add password","Passwort hinzufügen" }, 225{ "Add password","Passwort hinzufügen" },
226{ "Edit password","Passwort ändern" }, 226{ "Edit password","Passwort ändern" },
227{ "Delete password","Passwort löschen" }, 227{ "Delete password","Passwort löschen" },
228{ "Find entry","Finde Eintrag" }, 228{ "Find entry","Finde Eintrag" },
229{ "Lock all entries","Sperre alle Einträge" }, 229{ "Lock all entries","Sperre alle Einträge" },
230{ "Deep-Lock all entries","Sperre total alle Einträge" }, 230{ "Deep-Lock all entries","Sperre total alle Einträge" },
231{ "Unlock all entries","Entsperre alle Einträge" }, 231{ "Unlock all entries","Entsperre alle Einträge" },
232{ "Categories:","Kategorien:" }, 232{ "Categories:","Kategorien:" },
233{ "&Rename","&Umbenennen" }, 233{ "&Rename","&Umbenennen" },
234{ "Username","Benutzername" }, 234{ "Username","Benutzername" },
235{ "Password","Passwort" }, 235{ "Password","Passwort" },
236{ "Launcher","Launcher" }, 236{ "Launcher","Launcher" },
237{ "copy password to clipboard","Kopiere Passwort ins Clipboard" }, 237{ "copy password to clipboard","Kopiere Passwort ins Clipboard" },
238{ "copy username to clipboard","Kopiere Benutzername ins Clipboard" }, 238{ "copy username to clipboard","Kopiere Benutzername ins Clipboard" },
239{ "copy description to clipboard","Kopiere Beschreibung ins Clipboard" }, 239{ "copy description to clipboard","Kopiere Beschreibung ins Clipboard" },
240{ "copy url to clipboard","Kopiere URL ins Clipboard" }, 240{ "copy url to clipboard","Kopiere URL ins Clipboard" },
241{ "copy launcher to clipboard","Kopiere Launcher ins Clipboard" }, 241{ "copy launcher to clipboard","Kopiere Launcher ins Clipboard" },
242{ "copy comment to clipboard","Kopiere Kommentare ins Clipboard" }, 242{ "copy comment to clipboard","Kopiere Kommentare ins Clipboard" },
243{ "Execute "Launcher"",""Launcher" ausführen" }, 243{ "Execute "Launcher"",""Launcher" ausführen" },
244{ "Go to "URL"","Gehe zu "URL"" }, 244{ "Go to "URL"","Gehe zu "URL"" },
245{ "Ready.","Fertig." }, 245{ "Ready.","Fertig." },
246{ "password filename(*.pwm)","passwort dateiname(*.pwm)" }, 246{ "password filename(*.pwm)","passwort dateiname(*.pwm)" },
247{ "File error","Datei Fehler" }, 247{ "File error","Datei Fehler" },
248{ "Could not read file!","Kann Datei nicht lesen!" }, 248{ "Could not read file!","Kann Datei nicht lesen!" },
249{ "Master-password","Master-Passwort" }, 249{ "Master-password","Master-Passwort" },
250{ "Please enter the master-password:","Bitter Master-Passwort eingeben:" }, 250{ "Please enter the master-password:","Bitter Master-Passwort eingeben:" },
251{ "Wrong master-password!\nPlease try again.","Falsches Master-Passwort!\nBitte erneut versuchen." }, 251{ "Wrong master-password!\nPlease try again.","Falsches Master-Passwort!\nBitte erneut versuchen." },
252{ "password error","Passwort Fehler" }, 252{ "password error","Passwort Fehler" },
253{ "Successfully opened file.","Datei erfolgreich geöffnet." }, 253{ "Successfully opened file.","Datei erfolgreich geöffnet." },
254{ "DEEP-LOCKED","DEEP-LOCKED" }, 254{ "DEEP-LOCKED","DEEP-LOCKED" },
255{ "This file is DEEP-LOCKED!\nThat means all data has been encrypted\nand written out to the file. If you want\nto see the entries, please UNLOCK the file.\nWhile unlocking, you will be prompted for the\nmaster-password or the key-card.","This file is DEEP-LOCKED!\nThat means all data has been encrypted\nand written out to the file. If you want\nto see the entries, please UNLOCK the file.\nWhile unlocking, you will be prompted for the\nmaster-password or the key-card." }, 255{ "This file is DEEP-LOCKED!\nThat means all data has been encrypted\nand written out to the file. If you want\nto see the entries, please UNLOCK the file.\nWhile unlocking, you will be prompted for the\nmaster-password or the key-card.","This file is DEEP-LOCKED!\nThat means all data has been encrypted\nand written out to the file. If you want\nto see the entries, please UNLOCK the file.\nWhile unlocking, you will be prompted for the\nmaster-password or the key-card." },
256{ "<LOCKED>","<GESPERRT>" }, 256{ "<LOCKED>","<GESPERRT>" },
257{ "To unlock click the icon on the left.","Zum Entsperren klicke auf das linke Icon." }, 257{ "To unlock click the icon on the left.","Zum Entsperren klicke auf das linke Icon." },
258{ "PwManager","PwManager" }, 258{ "PwManager","PwManager" },
259{ "Window-style:","Window-style:" }, 259{ "Window-style:","Window-style:" },
260{ "Category on top","Kategorien oben" }, 260{ "Category on top","Kategorien oben" },
261{ "Category-list left/top","Kategorien links oben" }, 261{ "Category-list left/top","Kategorien links oben" },
262{ "<b>Font for Password entries:</b>","<b>Schrift für Passwort Einträge:</b>" }, 262{ "<b>Font for Password entries:</b>","<b>Schrift für Passwort Einträge:</b>" },
263{ "Font:","Schriftart:" }, 263{ "Font:","Schriftart:" },
264{ "Compression:","Kompression:" }, 264{ "Compression:","Kompression:" },
265{ "gzip","gzip" }, 265{ "gzip","gzip" },
266{ "Encryption:","Verschlüsselung:" }, 266{ "Encryption:","Verschlüsselung:" },
267{ "Blowfish (128 bit)","Blowfish (128 bit)" }, 267{ "Blowfish (128 bit)","Blowfish (128 bit)" },
268{ "AES-128, Rijndael (128 bit)","AES-128, Rijndael (128 bit)" }, 268{ "AES-128, Rijndael (128 bit)","AES-128, Rijndael (128 bit)" },
269{ "AES-192, Rijndael (192 bit)","AES-192, Rijndael (192 bit)" }, 269{ "AES-192, Rijndael (192 bit)","AES-192, Rijndael (192 bit)" },
270{ "AES-256, Rijndael (256 bit)","AES-256, Rijndael (256 bit)" }, 270{ "AES-256, Rijndael (256 bit)","AES-256, Rijndael (256 bit)" },
271{ "Triple-DES (168 bit)","Triple-DES (168 bit)" }, 271{ "Triple-DES (168 bit)","Triple-DES (168 bit)" },
272{ "Twofish (256 bit)","Twofish (256 bit)" }, 272{ "Twofish (256 bit)","Twofish (256 bit)" },
273{ "Twofish-128 (128 bit)","Twofish-128 (128 bit)" }, 273{ "Twofish-128 (128 bit)","Twofish-128 (128 bit)" },
274{ "Hashing:","Hashing:" }, 274{ "Hashing:","Hashing:" },
275{ "SHA-160, SHA1 (160 bit)","SHA-160, SHA1 (160 bit)" }, 275{ "SHA-160, SHA1 (160 bit)","SHA-160, SHA1 (160 bit)" },
276{ "SHA-256 (256 bit)","SHA-256 (256 bit)" }, 276{ "SHA-256 (256 bit)","SHA-256 (256 bit)" },
277{ "SHA-384 (384 bit)","SHA-384 (384 bit)" }, 277{ "SHA-384 (384 bit)","SHA-384 (384 bit)" },
278{ "SHA-512 (512 bit)","SHA-512 (512 bit)" }, 278{ "SHA-512 (512 bit)","SHA-512 (512 bit)" },
279{ "MD5 (128 bit)","MD5 (128 bit)" }, 279{ "MD5 (128 bit)","MD5 (128 bit)" },
280{ "RIPE-MD-160 (160 bit)","RIPE-MD-160 (160 bit)" }, 280{ "RIPE-MD-160 (160 bit)","RIPE-MD-160 (160 bit)" },
281{ "Tiger (192 bit)","Tiger (192 bit)" }, 281{ "Tiger (192 bit)","Tiger (192 bit)" },
282{ "Permissions:","Zugriffsrechte:" }, 282{ "Permissions:","Zugriffsrechte:" },
283{ "Make backup before saving","Mache Backup vor dem Speichern" }, 283{ "Make backup before saving","Mache Backup vor dem Speichern" },
284{ "Password timeout\n(timeout to hold password in\nmemory,so you don't have to\nre-enter it,if you\nalready have entered it)\n[set to 0 to disable]:","Passwort Timeout\n(Timeout um das Passwort\nim Speicher zu halten,\nso dass es nicht noch mal\neingegeben werden muß.)\n[Setze auf 0 zum deaktivieren]:" }, 284{ "Password timeout\n(timeout to hold password in\nmemory,so you don't have to\nre-enter it,if you\nalready have entered it)\n[set to 0 to disable]:","Passwort Timeout\n(Timeout um das Passwort\nim Speicher zu halten,\nso dass es nicht noch mal\neingegeben werden muß.)\n[Setze auf 0 zum deaktivieren]:" },
285{ "Auto-lock timeout\n(auto lock document after this\namount of seconds)\n[set to 0 to disable]:","(Total-)Sperr-Timeout\n(Sperre Dokument total nach\ndieser Anzahl Sekunden)\n[Setze auf 0 zum deaktivieren]:" }, 285{ "Auto-lock timeout\n(auto lock document after this\namount of seconds)\n[set to 0 to disable]:","(Total-)Sperr-Timeout\n(Sperre Dokument total nach\ndieser Anzahl Sekunden)\n[Setze auf 0 zum deaktivieren]:" },
286{ "deep-lock on autolock","Sperre total beim Sperr-Timeout" }, 286{ "deep-lock on autolock","Sperre total beim Sperr-Timeout" },
287{ "open deeplocked","Öffne total gesperrt" }, 287{ "open deeplocked","Öffne total gesperrt" },
288{ "Favourite browser:","Bevorzugter Browser:" }, 288{ "Favourite browser:","Bevorzugter Browser:" },
289{ "Favourite x-terminal:","Bevorzugtes x-terminal:" }, 289{ "Favourite x-terminal:","Bevorzugtes x-terminal:" },
290{ "Open document with passwords unlocked","Öffne Dokument mit Passwort ungesperrt" }, 290{ "Open document with passwords unlocked","Öffne Dokument mit Passwort ungesperrt" },
291{ "Look && feel","Aussehen" }, 291{ "Look && feel","Aussehen" },
292{ "File","Datei" }, 292{ "File","Datei" },
293{ "Timeout","Timeout" }, 293{ "Timeout","Timeout" },
294{ "Autostart","Autostart" }, 294{ "Autostart","Autostart" },
295{ "External apps","Externe Applik." }, 295{ "External apps","Externe Applik." },
296{ "Miscellaneous","Verschiedenes" }, 296{ "Miscellaneous","Verschiedenes" },
297{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 297{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
298{ "edit category descriptions","Ändere Label für Kategorie" }, 298{ "edit category descriptions","Ändere Label für Kategorie" },
299{ "Close","Schließen" }, 299{ "Close","Schließen" },
300{ "Category:","Category:" }, 300{ "Category:","Category:" },
301{ "Text1 (Description):","Text1 (Beschreibung):" }, 301{ "Text1 (Description):","Text1 (Beschreibung):" },
302{ "Text2 (Username):","Text2 (Benutzername):" }, 302{ "Text2 (Username):","Text2 (Benutzername):" },
303{ "Text3 (Password):","Text3 (Passwort):" }, 303{ "Text3 (Password):","Text3 (Passwort):" },
304{ "edit/add a password entry","Ändere/hinzufüge Passwort Eintrag" }, 304{ "edit/add a password entry","Ändere/hinzufüge Passwort Eintrag" },
305{ "Description:","Beschreibung:" }, 305{ "Description:","Beschreibung:" },
306{ "Username:","Benutzername:" }, 306{ "Username:","Benutzername:" },
307{ "Password:","Passwort:" }, 307{ "Password:","Passwort:" },
308{ "&Reveal","&Offen zeigen" }, 308{ "&Reveal","&Offen zeigen" },
309{ "&Generate","&Generiere" }, 309{ "&Generate","&Generiere" },
310{ "&Password","&Passwort" }, 310{ "&Password","&Passwort" },
311{ "&Comments","Kommentare" }, 311{ "&Comments","Kommentare" },
312{ "Launcher:","Launcher:" }, 312{ "Launcher:","Launcher:" },
313{ "$d = Description","$d = Beschreibung" }, 313{ "$d = Description","$d = Beschreibung" },
314{ "$n = Username","$n = Benutzername" }, 314{ "$n = Username","$n = Benutzername" },
315{ "$c = Comment","$c = Kommentar" }, 315{ "$c = Comment","$c = Kommentar" },
316{ "$u = URL","$u = URL" }, 316{ "$u = URL","$u = URL" },
317{ "$p = Password","$p = Passwort" }, 317{ "$p = Password","$p = Passwort" },
318{ "&Launcher","&Launcher" }, 318{ "&Launcher","&Launcher" },
319{ "Password generator","Passwort Generator" }, 319{ "Password generator","Passwort Generator" },
320{ "Character set:","Buchstaben Set:" }, 320{ "Character set:","Buchstaben Set:" },
321{ "Lowercase (abc)","Klein (abc)" }, 321{ "Lowercase (abc)","Klein (abc)" },
322{ "Uppercase (ABC)","Groß (ABC)" }, 322{ "Uppercase (ABC)","Groß (ABC)" },
323{ "Numbers (123)","Nummmern (123)" }, 323{ "Numbers (123)","Nummmern (123)" },
324{ "Special characters:","Spezielle Buchstaben:" }, 324{ "Special characters:","Spezielle Buchstaben:" },
325{ "Spaces (blank characters)","Leerzeichen" }, 325{ "Spaces (blank characters)","Leerzeichen" },
326{ "User defined:","Benutzer definiert:" }, 326{ "User defined:","Benutzer definiert:" },
327{ "Password Length:","Passwort Länge:" }, 327{ "Password Length:","Passwort Länge:" },
328{ "Enable Filtering to get better passwords","Enable Filtering to get better passwords" }, 328{ "Enable Filtering to get better passwords","Enable Filtering to get better passwords" },
329{ "no password","Kein Passwort" }, 329{ "no password","Kein Passwort" },
330{ "Sorry, you haven't set a password.","Sorry, Sie haben kein Passwort angegeben." }, 330{ "Sorry, you haven't set a password.","Sorry, Sie haben kein Passwort angegeben." },
331{ "not saved, yet","not saved, yet" }, 331{ "not saved, yet","not saved, yet" },
332{ "Can't deep-lock, because the document\nhasn't been saved, yet. Please save\nto a file and try again.","Kann nicht tiefsperren, weil das\nDokument noch nicht gespeichert wurde.\nBitte speichern und noch einmal versuchen." }, 332{ "Can't deep-lock, because the document\nhasn't been saved, yet. Please save\nto a file and try again.","Kann nicht tiefsperren, weil das\nDokument noch nicht gespeichert wurde.\nBitte speichern und noch einmal versuchen." },
333{ "Find","Finde" }, 333{ "Find","Finde" },
334{ "&Exact match","Genaue Übereinstimmung" }, 334{ "&Exact match","Genaue Übereinstimmung" },
335{ "&Case sensitive","Großschrift abhängig" }, 335{ "&Case sensitive","Großschrift abhängig" },
336{ "Search in Column","Suche in Spalten" }, 336{ "Search in Column","Suche in Spalten" },
337{ "&Description","Beschreibung" }, 337{ "&Description","Beschreibung" },
338{ "C&omment","Kommentar" }, 338{ "C&omment","Kommentar" },
339{ "&Username","Benutzername" }, 339{ "&Username","Benutzername" },
340{ "U&RL","URL" }, 340{ "U&RL","URL" },
341{ "delete?","Löschen?" }, 341{ "delete?","Löschen?" },
342{ "Do you really want to delete\nthe selected entry","Wollen Sie wirklich\nden Eintrag löschen:" }, 342{ "Do you really want to delete\nthe selected entry","Wollen Sie wirklich\nden Eintrag löschen:" },
343{ "Save?","Speichern?" }, 343{ "Save?","Speichern?" },
344{ ""\nhas been modified.\nDo you want to save it?",""\nwurde geändert.\nMöchten Sie speichern?" }, 344{ ""\nhas been modified.\nDo you want to save it?",""\nwurde geändert.\nMöchten Sie speichern?" },
345{ "The list\n "","Die Liste\n "" }, 345{ "The list\n "","Die Liste\n "" },
346{ "nothing to do","Nichts zu tun" }, 346{ "nothing to do","Nichts zu tun" },
347{ "Sorry, there's nothing to save.\nPlease first add some passwords.","Sorry, es gibt nichts zu speichern.\nBitte erst Passwörter hinzufügen." }, 347{ "Sorry, there's nothing to save.\nPlease first add some passwords.","Sorry, es gibt nichts zu speichern.\nBitte erst Passwörter hinzufügen." },
348{ "","" }, 348{ "","" },
349{ "","" }, 349{ "","" },
350{ "","" }, 350{ "","" },
351{ "","" }, 351{ "","" },
352{ "","" }, 352{ "","" },
353 353
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index e2e3a66..0def16e 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,3325 +1,3325 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 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/*s 24/*s
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include "kabcore.h" 31#include "kabcore.h"
32 32
33#include <stdaddressbook.h> 33#include <stdaddressbook.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kfiledialog.h> 35#include <kfiledialog.h>
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qlabel.h> 37#include <qlabel.h>
38#include <qregexp.h> 38#include <qregexp.h>
39#include <qlineedit.h> 39#include <qlineedit.h>
40#include <qcheckbox.h> 40#include <qcheckbox.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qprogressbar.h> 42#include <qprogressbar.h>
43#include <libkdepim/phoneaccess.h> 43#include <libkdepim/phoneaccess.h>
44 44
45#ifndef KAB_EMBEDDED 45#ifndef KAB_EMBEDDED
46#include <qclipboard.h> 46#include <qclipboard.h>
47#include <qdir.h> 47#include <qdir.h>
48#include <qfile.h> 48#include <qfile.h>
49#include <qapplicaton.h> 49#include <qapplicaton.h>
50#include <qprogressbar.h> 50#include <qprogressbar.h>
51#include <qlayout.h> 51#include <qlayout.h>
52#include <qregexp.h> 52#include <qregexp.h>
53#include <qvbox.h> 53#include <qvbox.h>
54#include <kabc/addresseelist.h> 54#include <kabc/addresseelist.h>
55#include <kabc/errorhandler.h> 55#include <kabc/errorhandler.h>
56#include <kabc/resource.h> 56#include <kabc/resource.h>
57#include <kabc/vcardconverter.h> 57#include <kabc/vcardconverter.h>
58#include <kapplication.h> 58#include <kapplication.h>
59#include <kactionclasses.h> 59#include <kactionclasses.h>
60#include <kcmultidialog.h> 60#include <kcmultidialog.h>
61#include <kdebug.h> 61#include <kdebug.h>
62#include <kdeversion.h> 62#include <kdeversion.h>
63#include <kkeydialog.h> 63#include <kkeydialog.h>
64#include <kmessagebox.h> 64#include <kmessagebox.h>
65#include <kprinter.h> 65#include <kprinter.h>
66#include <kprotocolinfo.h> 66#include <kprotocolinfo.h>
67#include <kresources/selectdialog.h> 67#include <kresources/selectdialog.h>
68#include <kstandarddirs.h> 68#include <kstandarddirs.h>
69#include <ktempfile.h> 69#include <ktempfile.h>
70#include <kxmlguiclient.h> 70#include <kxmlguiclient.h>
71#include <kaboutdata.h> 71#include <kaboutdata.h>
72#include <libkdepim/categoryselectdialog.h> 72#include <libkdepim/categoryselectdialog.h>
73 73
74#include "addresseeutil.h" 74#include "addresseeutil.h"
75#include "addresseeeditordialog.h" 75#include "addresseeeditordialog.h"
76#include "extensionmanager.h" 76#include "extensionmanager.h"
77#include "kstdaction.h" 77#include "kstdaction.h"
78#include "kaddressbookservice.h" 78#include "kaddressbookservice.h"
79#include "ldapsearchdialog.h" 79#include "ldapsearchdialog.h"
80#include "printing/printingwizard.h" 80#include "printing/printingwizard.h"
81#else // KAB_EMBEDDED 81#else // KAB_EMBEDDED
82 82
83#include <kapplication.h> 83#include <kapplication.h>
84#include "KDGanttMinimizeSplitter.h" 84#include "KDGanttMinimizeSplitter.h"
85#include "kaddressbookmain.h" 85#include "kaddressbookmain.h"
86#include "kactioncollection.h" 86#include "kactioncollection.h"
87#include "addresseedialog.h" 87#include "addresseedialog.h"
88//US 88//US
89#include <addresseeview.h> 89#include <addresseeview.h>
90 90
91#include <qapp.h> 91#include <qapp.h>
92#include <qmenubar.h> 92#include <qmenubar.h>
93//#include <qtoolbar.h> 93//#include <qtoolbar.h>
94#include <qmessagebox.h> 94#include <qmessagebox.h>
95#include <kdebug.h> 95#include <kdebug.h>
96#include <kiconloader.h> // needed for SmallIcon 96#include <kiconloader.h> // needed for SmallIcon
97#include <kresources/kcmkresources.h> 97#include <kresources/kcmkresources.h>
98#include <ktoolbar.h> 98#include <ktoolbar.h>
99 99
100 100
101//#include <qlabel.h> 101//#include <qlabel.h>
102 102
103 103
104#ifndef DESKTOP_VERSION 104#ifndef DESKTOP_VERSION
105#include <qpe/ir.h> 105#include <qpe/ir.h>
106#include <qpe/qpemenubar.h> 106#include <qpe/qpemenubar.h>
107#include <qtopia/qcopenvelope_qws.h> 107#include <qtopia/qcopenvelope_qws.h>
108#else 108#else
109 109
110#include <qmenubar.h> 110#include <qmenubar.h>
111#endif 111#endif
112 112
113#endif // KAB_EMBEDDED 113#endif // KAB_EMBEDDED
114#include "kcmconfigs/kcmkabconfig.h" 114#include "kcmconfigs/kcmkabconfig.h"
115#include "kcmconfigs/kcmkdepimconfig.h" 115#include "kcmconfigs/kcmkdepimconfig.h"
116#include "kpimglobalprefs.h" 116#include "kpimglobalprefs.h"
117#include "externalapphandler.h" 117#include "externalapphandler.h"
118#include "xxportselectdialog.h" 118#include "xxportselectdialog.h"
119 119
120 120
121#include <kresources/selectdialog.h> 121#include <kresources/selectdialog.h>
122#include <kmessagebox.h> 122#include <kmessagebox.h>
123 123
124#include <picture.h> 124#include <picture.h>
125#include <resource.h> 125#include <resource.h>
126 126
127//US#include <qsplitter.h> 127//US#include <qsplitter.h>
128#include <qmap.h> 128#include <qmap.h>
129#include <qdir.h> 129#include <qdir.h>
130#include <qfile.h> 130#include <qfile.h>
131#include <qvbox.h> 131#include <qvbox.h>
132#include <qlayout.h> 132#include <qlayout.h>
133#include <qclipboard.h> 133#include <qclipboard.h>
134#include <qtextstream.h> 134#include <qtextstream.h>
135#include <qradiobutton.h> 135#include <qradiobutton.h>
136#include <qbuttongroup.h> 136#include <qbuttongroup.h>
137 137
138#include <libkdepim/categoryselectdialog.h> 138#include <libkdepim/categoryselectdialog.h>
139#include <libkdepim/categoryeditdialog.h> 139#include <libkdepim/categoryeditdialog.h>
140#include <kabc/vcardconverter.h> 140#include <kabc/vcardconverter.h>
141 141
142 142
143#include "addresseeutil.h" 143#include "addresseeutil.h"
144#include "undocmds.h" 144#include "undocmds.h"
145#include "addresseeeditordialog.h" 145#include "addresseeeditordialog.h"
146#include "viewmanager.h" 146#include "viewmanager.h"
147#include "details/detailsviewcontainer.h" 147#include "details/detailsviewcontainer.h"
148#include "kabprefs.h" 148#include "kabprefs.h"
149#include "xxportmanager.h" 149#include "xxportmanager.h"
150#include "incsearchwidget.h" 150#include "incsearchwidget.h"
151#include "jumpbuttonbar.h" 151#include "jumpbuttonbar.h"
152#include "extensionmanager.h" 152#include "extensionmanager.h"
153#include "addresseeconfig.h" 153#include "addresseeconfig.h"
154#include "nameeditdialog.h" 154#include "nameeditdialog.h"
155#include <kcmultidialog.h> 155#include <kcmultidialog.h>
156 156
157#ifdef _WIN32_ 157#ifdef _WIN32_
158#ifdef _OL_IMPORT_ 158#ifdef _OL_IMPORT_
159#include "kaimportoldialog.h" 159#include "kaimportoldialog.h"
160#endif 160#endif
161#else 161#else
162#include <unistd.h> 162#include <unistd.h>
163#endif 163#endif
164// sync includes 164// sync includes
165#include <libkdepim/ksyncprofile.h> 165#include <libkdepim/ksyncprofile.h>
166#include <libkdepim/ksyncprefsdialog.h> 166#include <libkdepim/ksyncprefsdialog.h>
167 167
168 168
169class KABCatPrefs : public QDialog 169class KABCatPrefs : public QDialog
170{ 170{
171 public: 171 public:
172 KABCatPrefs( QWidget *parent=0, const char *name=0 ) : 172 KABCatPrefs( QWidget *parent=0, const char *name=0 ) :
173 QDialog( parent, name, true ) 173 QDialog( parent, name, true )
174 { 174 {
175 setCaption( i18n("Manage new Categories") ); 175 setCaption( i18n("Manage new Categories") );
176 QVBoxLayout* lay = new QVBoxLayout( this ); 176 QVBoxLayout* lay = new QVBoxLayout( this );
177 lay->setSpacing( 3 ); 177 lay->setSpacing( 3 );
178 lay->setMargin( 3 ); 178 lay->setMargin( 3 );
179 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); 179 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
180 lay->addWidget( lab ); 180 lay->addWidget( lab );
181 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 181 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
182 lay->addWidget( format ); 182 lay->addWidget( format );
183 format->setExclusive ( true ) ; 183 format->setExclusive ( true ) ;
184 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 184 addCatBut = new QRadioButton(i18n("Add to category list"), format );
185 new QRadioButton(i18n("Remove from addressees"), format ); 185 new QRadioButton(i18n("Remove from addressees"), format );
186 addCatBut->setChecked( true ); 186 addCatBut->setChecked( true );
187 QPushButton * ok = new QPushButton( i18n("OK"), this ); 187 QPushButton * ok = new QPushButton( i18n("OK"), this );
188 lay->addWidget( ok ); 188 lay->addWidget( ok );
189 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 189 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
190 lay->addWidget( cancel ); 190 lay->addWidget( cancel );
191 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 191 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
192 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 192 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
193 resize( 200, 200 ); 193 resize( 200, 200 );
194 } 194 }
195 195
196 bool addCat() { return addCatBut->isChecked(); } 196 bool addCat() { return addCatBut->isChecked(); }
197private: 197private:
198 QRadioButton* addCatBut; 198 QRadioButton* addCatBut;
199}; 199};
200 200
201class KABFormatPrefs : public QDialog 201class KABFormatPrefs : public QDialog
202{ 202{
203 public: 203 public:
204 KABFormatPrefs( QWidget *parent=0, const char *name=0 ) : 204 KABFormatPrefs( QWidget *parent=0, const char *name=0 ) :
205 QDialog( parent, name, true ) 205 QDialog( parent, name, true )
206 { 206 {
207 setCaption( i18n("Set formatted name") ); 207 setCaption( i18n("Set formatted name") );
208 QVBoxLayout* lay = new QVBoxLayout( this ); 208 QVBoxLayout* lay = new QVBoxLayout( this );
209 lay->setSpacing( 3 ); 209 lay->setSpacing( 3 );
210 lay->setMargin( 3 ); 210 lay->setMargin( 3 );
211 QLabel * lab = new QLabel( i18n("You can set the formatted name\nfor a list of contacts in one go."), this ); 211 QLabel * lab = new QLabel( i18n("You can set the formatted name\nfor a list of contacts in one go."), this );
212 lay->addWidget( lab ); 212 lay->addWidget( lab );
213 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Set formatted name to:"), this ); 213 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Set formatted name to:"), this );
214 lay->addWidget( format ); 214 lay->addWidget( format );
215 format->setExclusive ( true ) ; 215 format->setExclusive ( true ) ;
216 simple = new QRadioButton(i18n("Simple: James Bond"), format ); 216 simple = new QRadioButton(i18n("Simple: James Bond"), format );
217 full = new QRadioButton(i18n("Full: Mr. James 007 Bond I"), format ); 217 full = new QRadioButton(i18n("Full: Mr. James 007 Bond I"), format );
218 reverse = new QRadioButton(i18n("Reverse: Bond, James"), format ); 218 reverse = new QRadioButton(i18n("Reverse: Bond, James"), format );
219 company = new QRadioButton(i18n("Organization: MI6"), format ); 219 company = new QRadioButton(i18n("Organization: MI6"), format );
220 simple->setChecked( true ); 220 simple->setChecked( true );
221 setCompany = new QCheckBox(i18n("Set formatted name to\norganization, if name empty"), this); 221 setCompany = new QCheckBox(i18n("Set formatted name to\norganization, if name empty"), this);
222 lay->addWidget( setCompany ); 222 lay->addWidget( setCompany );
223 QPushButton * ok = new QPushButton( i18n("Select contact list"), this ); 223 QPushButton * ok = new QPushButton( i18n("Select contact list"), this );
224 lay->addWidget( ok ); 224 lay->addWidget( ok );
225 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 225 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
226 lay->addWidget( cancel ); 226 lay->addWidget( cancel );
227 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 227 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
228 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 228 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
229 //resize( 200, 200 ); 229 //resize( 200, 200 );
230 230
231 } 231 }
232public: 232public:
233 QRadioButton* simple, *full, *reverse, *company; 233 QRadioButton* simple, *full, *reverse, *company;
234 QCheckBox* setCompany; 234 QCheckBox* setCompany;
235}; 235};
236 236
237 237
238 238
239class KAex2phonePrefs : public QDialog 239class KAex2phonePrefs : public QDialog
240{ 240{
241 public: 241 public:
242 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 242 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
243 QDialog( parent, name, true ) 243 QDialog( parent, name, true )
244 { 244 {
245 setCaption( i18n("Export to phone options") ); 245 setCaption( i18n("Export to phone options") );
246 QVBoxLayout* lay = new QVBoxLayout( this ); 246 QVBoxLayout* lay = new QVBoxLayout( this );
247 lay->setSpacing( 3 ); 247 lay->setSpacing( 3 );
248 lay->setMargin( 3 ); 248 lay->setMargin( 3 );
249 QLabel *lab; 249 QLabel *lab;
250 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 250 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
251 lab->setAlignment (AlignHCenter ); 251 lab->setAlignment (AlignHCenter );
252 QHBox* temphb; 252 QHBox* temphb;
253 temphb = new QHBox( this ); 253 temphb = new QHBox( this );
254 new QLabel( i18n("I/O device: "), temphb ); 254 new QLabel( i18n("I/O device: "), temphb );
255 mPhoneDevice = new QLineEdit( temphb); 255 mPhoneDevice = new QLineEdit( temphb);
256 lay->addWidget( temphb ); 256 lay->addWidget( temphb );
257 temphb = new QHBox( this ); 257 temphb = new QHBox( this );
258 new QLabel( i18n("Connection: "), temphb ); 258 new QLabel( i18n("Connection: "), temphb );
259 mPhoneConnection = new QLineEdit( temphb); 259 mPhoneConnection = new QLineEdit( temphb);
260 lay->addWidget( temphb ); 260 lay->addWidget( temphb );
261 temphb = new QHBox( this ); 261 temphb = new QHBox( this );
262 new QLabel( i18n("Model(opt.): "), temphb ); 262 new QLabel( i18n("Model(opt.): "), temphb );
263 mPhoneModel = new QLineEdit( temphb); 263 mPhoneModel = new QLineEdit( temphb);
264 lay->addWidget( temphb ); 264 lay->addWidget( temphb );
265 // mWriteToSim = new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); 265 // mWriteToSim = new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this );
266 // lay->addWidget( mWriteToSim ); 266 // lay->addWidget( mWriteToSim );
267 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); 267 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) );
268 lab->setAlignment (AlignHCenter); 268 lab->setAlignment (AlignHCenter);
269 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 269 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
270 lay->addWidget( ok ); 270 lay->addWidget( ok );
271 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 271 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
272 lay->addWidget( cancel ); 272 lay->addWidget( cancel );
273 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 273 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
274 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 274 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
275 resize( 220, 240 ); 275 resize( 220, 240 );
276 276
277 } 277 }
278 278
279public: 279public:
280 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 280 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
281 QCheckBox* mWriteToSim; 281 QCheckBox* mWriteToSim;
282}; 282};
283 283
284 284
285bool pasteWithNewUid = true; 285bool pasteWithNewUid = true;
286 286
287#ifdef KAB_EMBEDDED 287#ifdef KAB_EMBEDDED
288KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 288KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
289 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 289 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
290 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 290 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
291 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 291 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
292#else //KAB_EMBEDDED 292#else //KAB_EMBEDDED
293KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 293KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
294 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 294 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
295 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 295 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
296 mReadWrite( readWrite ), mModified( false ) 296 mReadWrite( readWrite ), mModified( false )
297#endif //KAB_EMBEDDED 297#endif //KAB_EMBEDDED
298{ 298{
299 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 299 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
300 // syncManager->setBlockSave(false); 300 // syncManager->setBlockSave(false);
301 mMiniSplitter = 0; 301 mMiniSplitter = 0;
302 mExtensionBarSplitter = 0; 302 mExtensionBarSplitter = 0;
303 mIsPart = !parent->inherits( "KAddressBookMain" ); 303 mIsPart = !parent->inherits( "KAddressBookMain" );
304 mAddressBook = KABC::StdAddressBook::self(); 304 mAddressBook = KABC::StdAddressBook::self();
305 KABC::StdAddressBook::setAutomaticSave( false ); 305 KABC::StdAddressBook::setAutomaticSave( false );
306 306
307#ifndef KAB_EMBEDDED 307#ifndef KAB_EMBEDDED
308 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 308 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
309#endif //KAB_EMBEDDED 309#endif //KAB_EMBEDDED
310 310
311 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 311 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
312 SLOT( addressBookChanged() ) ); 312 SLOT( addressBookChanged() ) );
313 313
314#if 0 314#if 0
315 // LP moved to addressbook init method 315 // LP moved to addressbook init method
316 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 316 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
317 "X-Department", "KADDRESSBOOK" ); 317 "X-Department", "KADDRESSBOOK" );
318 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 318 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
319 "X-Profession", "KADDRESSBOOK" ); 319 "X-Profession", "KADDRESSBOOK" );
320 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 320 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
321 "X-AssistantsName", "KADDRESSBOOK" ); 321 "X-AssistantsName", "KADDRESSBOOK" );
322 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 322 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
323 "X-ManagersName", "KADDRESSBOOK" ); 323 "X-ManagersName", "KADDRESSBOOK" );
324 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 324 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
325 "X-SpousesName", "KADDRESSBOOK" ); 325 "X-SpousesName", "KADDRESSBOOK" );
326 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 326 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
327 "X-Office", "KADDRESSBOOK" ); 327 "X-Office", "KADDRESSBOOK" );
328 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 328 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
329 "X-IMAddress", "KADDRESSBOOK" ); 329 "X-IMAddress", "KADDRESSBOOK" );
330 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 330 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
331 "X-Anniversary", "KADDRESSBOOK" ); 331 "X-Anniversary", "KADDRESSBOOK" );
332 332
333 //US added this field to become compatible with Opie/qtopia addressbook 333 //US added this field to become compatible with Opie/qtopia addressbook
334 // values can be "female" or "male" or "". An empty field represents undefined. 334 // values can be "female" or "male" or "". An empty field represents undefined.
335 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 335 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
336 "X-Gender", "KADDRESSBOOK" ); 336 "X-Gender", "KADDRESSBOOK" );
337 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 337 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
338 "X-Children", "KADDRESSBOOK" ); 338 "X-Children", "KADDRESSBOOK" );
339 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 339 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
340 "X-FreeBusyUrl", "KADDRESSBOOK" ); 340 "X-FreeBusyUrl", "KADDRESSBOOK" );
341#endif 341#endif
342 initGUI(); 342 initGUI();
343 343
344 mIncSearchWidget->setFocus(); 344 mIncSearchWidget->setFocus();
345 345
346 346
347 connect( mViewManager, SIGNAL( selected( const QString& ) ), 347 connect( mViewManager, SIGNAL( selected( const QString& ) ),
348 SLOT( setContactSelected( const QString& ) ) ); 348 SLOT( setContactSelected( const QString& ) ) );
349 connect( mViewManager, SIGNAL( executed( const QString& ) ), 349 connect( mViewManager, SIGNAL( executed( const QString& ) ),
350 SLOT( executeContact( const QString& ) ) ); 350 SLOT( executeContact( const QString& ) ) );
351 351
352 connect( mViewManager, SIGNAL( deleteRequest( ) ), 352 connect( mViewManager, SIGNAL( deleteRequest( ) ),
353 SLOT( deleteContacts( ) ) ); 353 SLOT( deleteContacts( ) ) );
354 connect( mViewManager, SIGNAL( modified() ), 354 connect( mViewManager, SIGNAL( modified() ),
355 SLOT( setModified() ) ); 355 SLOT( setModified() ) );
356 356
357 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 357 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
358 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) ); 358 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
359 359
360 connect( mXXPortManager, SIGNAL( modified() ), 360 connect( mXXPortManager, SIGNAL( modified() ),
361 SLOT( setModified() ) ); 361 SLOT( setModified() ) );
362 362
363 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 363 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
364 SLOT( incrementalSearch( const QString& ) ) ); 364 SLOT( incrementalSearch( const QString& ) ) );
365 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 365 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
366 mJumpButtonBar, SLOT( recreateButtons() ) ); 366 mJumpButtonBar, SLOT( recreateButtons() ) );
367 367
368 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 368 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
369 SLOT( sendMail( const QString& ) ) ); 369 SLOT( sendMail( const QString& ) ) );
370 370
371 371
372 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&))); 372 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&)));
373 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&))); 373 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)));
374 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&))); 374 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&)));
375 connect( ExternalAppHandler::instance(), SIGNAL (nextView()),this, SLOT(setDetailsToggle())); 375 connect( ExternalAppHandler::instance(), SIGNAL (nextView()),this, SLOT(setDetailsToggle()));
376 376
377 377
378#ifndef KAB_EMBEDDED 378#ifndef KAB_EMBEDDED
379 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 379 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
380 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 380 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
381 381
382 connect( mDetails, SIGNAL( browse( const QString& ) ), 382 connect( mDetails, SIGNAL( browse( const QString& ) ),
383 SLOT( browse( const QString& ) ) ); 383 SLOT( browse( const QString& ) ) );
384 384
385 385
386 mAddressBookService = new KAddressBookService( this ); 386 mAddressBookService = new KAddressBookService( this );
387 387
388#endif //KAB_EMBEDDED 388#endif //KAB_EMBEDDED
389 389
390 mMessageTimer = new QTimer( this ); 390 mMessageTimer = new QTimer( this );
391 connect( mMessageTimer, SIGNAL( timeout() ), this, SLOT( setCaptionBack() ) ); 391 connect( mMessageTimer, SIGNAL( timeout() ), this, SLOT( setCaptionBack() ) );
392 mEditorDialog = 0; 392 mEditorDialog = 0;
393 createAddresseeEditorDialog( this ); 393 createAddresseeEditorDialog( this );
394 setModified( false ); 394 setModified( false );
395 mBRdisabled = false; 395 mBRdisabled = false;
396#ifndef DESKTOP_VERSION 396#ifndef DESKTOP_VERSION
397 infrared = 0; 397 infrared = 0;
398#endif 398#endif
399 //toggleBeamReceive( ); 399 //toggleBeamReceive( );
400 //mMainWindow->toolBar()->show(); 400 //mMainWindow->toolBar()->show();
401 // we have a toolbar repainting error on the Zaurus when starting KA/Pi 401 // we have a toolbar repainting error on the Zaurus when starting KA/Pi
402 QTimer::singleShot( 10, this , SLOT ( updateToolBar())); 402 QTimer::singleShot( 10, this , SLOT ( updateToolBar()));
403} 403}
404 404
405void KABCore::updateToolBar() 405void KABCore::updateToolBar()
406{ 406{
407 static int iii = 0; 407 static int iii = 0;
408 ++iii; 408 ++iii;
409 mMainWindow->toolBar()->repaintMe(); 409 mMainWindow->toolBar()->repaintMe();
410 if ( iii < 4 ) 410 if ( iii < 4 )
411 QTimer::singleShot( 100*iii, this , SLOT ( updateToolBar())); 411 QTimer::singleShot( 100*iii, this , SLOT ( updateToolBar()));
412} 412}
413KABCore::~KABCore() 413KABCore::~KABCore()
414{ 414{
415 // save(); 415 // save();
416 //saveSettings(); 416 //saveSettings();
417 //KABPrefs::instance()->writeConfig(); 417 //KABPrefs::instance()->writeConfig();
418 delete AddresseeConfig::instance(); 418 delete AddresseeConfig::instance();
419 mAddressBook = 0; 419 mAddressBook = 0;
420 KABC::StdAddressBook::close(); 420 KABC::StdAddressBook::close();
421 421
422 delete syncManager; 422 delete syncManager;
423#ifndef DESKTOP_VERSION 423#ifndef DESKTOP_VERSION
424 if ( infrared ) 424 if ( infrared )
425 delete infrared; 425 delete infrared;
426#endif 426#endif
427} 427}
428void KABCore::receive( const QCString& cmsg, const QByteArray& data ) 428void KABCore::receive( const QCString& cmsg, const QByteArray& data )
429{ 429{
430 //qDebug("KA: QCOP message received: %s ", cmsg.data() ); 430 //qDebug("KA: QCOP message received: %s ", cmsg.data() );
431 if ( cmsg == "setDocument(QString)" ) { 431 if ( cmsg == "setDocument(QString)" ) {
432 QDataStream stream( data, IO_ReadOnly ); 432 QDataStream stream( data, IO_ReadOnly );
433 QString fileName; 433 QString fileName;
434 stream >> fileName; 434 stream >> fileName;
435 recieve( fileName ); 435 recieve( fileName );
436 return; 436 return;
437 } 437 }
438} 438}
439void KABCore::toggleBeamReceive( ) 439void KABCore::toggleBeamReceive( )
440{ 440{
441 if ( mBRdisabled ) 441 if ( mBRdisabled )
442 return; 442 return;
443#ifndef DESKTOP_VERSION 443#ifndef DESKTOP_VERSION
444 if ( infrared ) { 444 if ( infrared ) {
445 qDebug("KA: AB disable BeamReceive "); 445 qDebug("KA: AB disable BeamReceive ");
446 delete infrared; 446 delete infrared;
447 infrared = 0; 447 infrared = 0;
448 mActionBR->setChecked(false); 448 mActionBR->setChecked(false);
449 return; 449 return;
450 } 450 }
451 qDebug("KA: AB enable BeamReceive "); 451 qDebug("KA: AB enable BeamReceive ");
452 mActionBR->setChecked(true); 452 mActionBR->setChecked(true);
453 453
454 infrared = new QCopChannel("QPE/Application/addressbook",this, "channelAB" ) ; 454 infrared = new QCopChannel("QPE/Application/addressbook",this, "channelAB" ) ;
455 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(receive( const QCString&, const QByteArray& ))); 455 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(receive( const QCString&, const QByteArray& )));
456#endif 456#endif
457} 457}
458 458
459 459
460void KABCore::disableBR(bool b) 460void KABCore::disableBR(bool b)
461{ 461{
462#ifndef DESKTOP_VERSION 462#ifndef DESKTOP_VERSION
463 if ( b ) { 463 if ( b ) {
464 if ( infrared ) { 464 if ( infrared ) {
465 toggleBeamReceive( ); 465 toggleBeamReceive( );
466 } 466 }
467 mBRdisabled = true; 467 mBRdisabled = true;
468 } else { 468 } else {
469 if ( mBRdisabled ) { 469 if ( mBRdisabled ) {
470 mBRdisabled = false; 470 mBRdisabled = false;
471 //toggleBeamReceive( ); 471 //toggleBeamReceive( );
472 } 472 }
473 } 473 }
474#endif 474#endif
475 475
476} 476}
477void KABCore::recieve( QString fn ) 477void KABCore::recieve( QString fn )
478{ 478{
479 //qDebug("KABCore::recieve "); 479 //qDebug("KABCore::recieve ");
480 int count = mAddressBook->importFromFile( fn, true ); 480 int count = mAddressBook->importFromFile( fn, true );
481 if ( count ) 481 if ( count )
482 setModified( true ); 482 setModified( true );
483 mViewManager->refreshView(); 483 mViewManager->refreshView();
484 message(i18n("%1 contact(s) received!").arg( count )); 484 message(i18n("%1 contact(s) received!").arg( count ));
485 topLevelWidget()->showMaximized(); 485 topLevelWidget()->showMaximized();
486 topLevelWidget()->raise(); 486 topLevelWidget()->raise();
487} 487}
488void KABCore::restoreSettings() 488void KABCore::restoreSettings()
489{ 489{
490 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce; 490 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
491 491
492 bool state; 492 bool state;
493 493
494 if (mMultipleViewsAtOnce) 494 if (mMultipleViewsAtOnce)
495 state = KABPrefs::instance()->mDetailsPageVisible; 495 state = KABPrefs::instance()->mDetailsPageVisible;
496 else 496 else
497 state = false; 497 state = false;
498 498
499 mActionDetails->setChecked( state ); 499 mActionDetails->setChecked( state );
500 setDetailsVisible( state ); 500 setDetailsVisible( state );
501 501
502 state = KABPrefs::instance()->mJumpButtonBarVisible; 502 state = KABPrefs::instance()->mJumpButtonBarVisible;
503 503
504 mActionJumpBar->setChecked( state ); 504 mActionJumpBar->setChecked( state );
505 setJumpButtonBarVisible( state ); 505 setJumpButtonBarVisible( state );
506/*US 506/*US
507 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 507 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
508 if ( splitterSize.count() == 0 ) { 508 if ( splitterSize.count() == 0 ) {
509 splitterSize.append( width() / 2 ); 509 splitterSize.append( width() / 2 );
510 splitterSize.append( width() / 2 ); 510 splitterSize.append( width() / 2 );
511 } 511 }
512 mMiniSplitter->setSizes( splitterSize ); 512 mMiniSplitter->setSizes( splitterSize );
513 if ( mExtensionBarSplitter ) { 513 if ( mExtensionBarSplitter ) {
514 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 514 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
515 if ( splitterSize.count() == 0 ) { 515 if ( splitterSize.count() == 0 ) {
516 splitterSize.append( width() / 2 ); 516 splitterSize.append( width() / 2 );
517 splitterSize.append( width() / 2 ); 517 splitterSize.append( width() / 2 );
518 } 518 }
519 mExtensionBarSplitter->setSizes( splitterSize ); 519 mExtensionBarSplitter->setSizes( splitterSize );
520 520
521 } 521 }
522*/ 522*/
523 mViewManager->restoreSettings(); 523 mViewManager->restoreSettings();
524 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 524 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
525 mExtensionManager->restoreSettings(); 525 mExtensionManager->restoreSettings();
526#ifdef DESKTOP_VERSION 526#ifdef DESKTOP_VERSION
527 int wid = width(); 527 int wid = width();
528 if ( wid < 10 ) 528 if ( wid < 10 )
529 wid = 400; 529 wid = 400;
530#else 530#else
531 int wid = QApplication::desktop()->width(); 531 int wid = QApplication::desktop()->width();
532 if ( wid < 640 ) 532 if ( wid < 640 )
533 wid = QApplication::desktop()->height(); 533 wid = QApplication::desktop()->height();
534#endif 534#endif
535 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter; 535 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter;
536 if ( true /*splitterSize.count() == 0*/ ) { 536 if ( true /*splitterSize.count() == 0*/ ) {
537 splitterSize.append( wid / 2 ); 537 splitterSize.append( wid / 2 );
538 splitterSize.append( wid / 2 ); 538 splitterSize.append( wid / 2 );
539 } 539 }
540 mMiniSplitter->setSizes( splitterSize ); 540 mMiniSplitter->setSizes( splitterSize );
541 if ( mExtensionBarSplitter ) { 541 if ( mExtensionBarSplitter ) {
542 //splitterSize = KABPrefs::instance()->mExtensionsSplitter; 542 //splitterSize = KABPrefs::instance()->mExtensionsSplitter;
543 if ( true /*splitterSize.count() == 0*/ ) { 543 if ( true /*splitterSize.count() == 0*/ ) {
544 splitterSize.append( wid / 2 ); 544 splitterSize.append( wid / 2 );
545 splitterSize.append( wid / 2 ); 545 splitterSize.append( wid / 2 );
546 } 546 }
547 mExtensionBarSplitter->setSizes( splitterSize ); 547 mExtensionBarSplitter->setSizes( splitterSize );
548 548
549 } 549 }
550 550
551 551
552} 552}
553 553
554void KABCore::saveSettings() 554void KABCore::saveSettings()
555{ 555{
556 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 556 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
557 if ( mExtensionBarSplitter ) 557 if ( mExtensionBarSplitter )
558 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 558 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
559 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 559 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
560 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 560 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
561#ifndef KAB_EMBEDDED 561#ifndef KAB_EMBEDDED
562 562
563 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 563 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
564 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 564 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
565#endif //KAB_EMBEDDED 565#endif //KAB_EMBEDDED
566 mExtensionManager->saveSettings(); 566 mExtensionManager->saveSettings();
567 mViewManager->saveSettings(); 567 mViewManager->saveSettings();
568 568
569 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 569 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
570 KABPrefs::instance()->writeConfig(); 570 KABPrefs::instance()->writeConfig();
571 qDebug("KA: KABCore::saveSettings() "); 571 qDebug("KA: KABCore::saveSettings() ");
572} 572}
573 573
574KABC::AddressBook *KABCore::addressBook() const 574KABC::AddressBook *KABCore::addressBook() const
575{ 575{
576 return mAddressBook; 576 return mAddressBook;
577} 577}
578 578
579KConfig *KABCore::config() 579KConfig *KABCore::config()
580{ 580{
581#ifndef KAB_EMBEDDED 581#ifndef KAB_EMBEDDED
582 return KABPrefs::instance()->config(); 582 return KABPrefs::instance()->config();
583#else //KAB_EMBEDDED 583#else //KAB_EMBEDDED
584 return KABPrefs::instance()->getConfig(); 584 return KABPrefs::instance()->getConfig();
585#endif //KAB_EMBEDDED 585#endif //KAB_EMBEDDED
586} 586}
587 587
588KActionCollection *KABCore::actionCollection() const 588KActionCollection *KABCore::actionCollection() const
589{ 589{
590 return mGUIClient->actionCollection(); 590 return mGUIClient->actionCollection();
591} 591}
592 592
593KABC::Field *KABCore::currentSearchField() const 593KABC::Field *KABCore::currentSearchField() const
594{ 594{
595 if (mIncSearchWidget) 595 if (mIncSearchWidget)
596 return mIncSearchWidget->currentField(); 596 return mIncSearchWidget->currentField();
597 else 597 else
598 return 0; 598 return 0;
599} 599}
600 600
601QStringList KABCore::selectedUIDs() const 601QStringList KABCore::selectedUIDs() const
602{ 602{
603 return mViewManager->selectedUids(); 603 return mViewManager->selectedUids();
604} 604}
605 605
606KABC::Resource *KABCore::requestResource( QWidget *parent ) 606KABC::Resource *KABCore::requestResource( QWidget *parent )
607{ 607{
608 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 608 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
609 609
610 QPtrList<KRES::Resource> kresResources; 610 QPtrList<KRES::Resource> kresResources;
611 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 611 QPtrListIterator<KABC::Resource> resIt( kabcResources );
612 KABC::Resource *resource; 612 KABC::Resource *resource;
613 while ( ( resource = resIt.current() ) != 0 ) { 613 while ( ( resource = resIt.current() ) != 0 ) {
614 ++resIt; 614 ++resIt;
615 if ( !resource->readOnly() ) { 615 if ( !resource->readOnly() ) {
616 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 616 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
617 if ( res ) 617 if ( res )
618 kresResources.append( res ); 618 kresResources.append( res );
619 } 619 }
620 } 620 }
621 621
622 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 622 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
623 return static_cast<KABC::Resource*>( res ); 623 return static_cast<KABC::Resource*>( res );
624} 624}
625 625
626#ifndef KAB_EMBEDDED 626#ifndef KAB_EMBEDDED
627KAboutData *KABCore::createAboutData() 627KAboutData *KABCore::createAboutData()
628#else //KAB_EMBEDDED 628#else //KAB_EMBEDDED
629void KABCore::createAboutData() 629void KABCore::createAboutData()
630#endif //KAB_EMBEDDED 630#endif //KAB_EMBEDDED
631{ 631{
632#ifndef KAB_EMBEDDED 632#ifndef KAB_EMBEDDED
633 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 633 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
634 "3.1", I18N_NOOP( "The KDE Address Book" ), 634 "3.1", I18N_NOOP( "The KDE Address Book" ),
635 KAboutData::License_GPL_V2, 635 KAboutData::License_GPL_V2,
636 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 636 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
637 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 637 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
638 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 638 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
639 about->addAuthor( "Cornelius Schumacher", 639 about->addAuthor( "Cornelius Schumacher",
640 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 640 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
641 "schumacher@kde.org" ); 641 "schumacher@kde.org" );
642 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 642 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
643 "mpilone@slac.com" ); 643 "mpilone@slac.com" );
644 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 644 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
645 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 645 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
646 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 646 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
647 "michel@klaralvdalens-datakonsult.se" ); 647 "michel@klaralvdalens-datakonsult.se" );
648 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 648 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
649 "hansen@kde.org" ); 649 "hansen@kde.org" );
650 650
651 return about; 651 return about;
652#endif //KAB_EMBEDDED 652#endif //KAB_EMBEDDED
653 653
654 QString version; 654 QString version;
655#include <../version> 655#include <../version>
656 QMessageBox::about( this, "About KAddressbook/Pi", 656 QMessageBox::about( this, "About KAddressbook/Pi",
657 "KAddressbook/Platform-independent\n" 657 "KAddressbook/Platform-independent\n"
658 "(KA/Pi) " +version + " - " + 658 "(KA/Pi) " +version + " - " +
659#ifdef DESKTOP_VERSION 659#ifdef DESKTOP_VERSION
660 "Desktop Edition\n" 660 "Desktop Edition\n"
661#else 661#else
662 "PDA-Edition\n" 662 "PDA-Edition\n"
663 "for: Zaurus 5500 / 7x0 / 8x0\n" 663 "for: Zaurus 5500 / 7x0 / 8x0\n"
664#endif 664#endif
665 665
666 "(c) 2004 Ulf Schenk\n" 666 "(c) 2004 Ulf Schenk\n"
667 "(c) 2004 Lutz Rogowski\n" 667 "(c) 2004 Lutz Rogowski\n"
668 "(c) 1997-2003, The KDE PIM Team\n" 668 "(c) 1997-2003, The KDE PIM Team\n"
669 "Tobias Koenig Current maintainer\ntokoe@kde.org\n" 669 "Tobias Koenig Current maintainer\ntokoe@kde.org\n"
670 "Don Sanders Original author\n" 670 "Don Sanders Original author\n"
671 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" 671 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n"
672 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" 672 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n"
673 "Greg Stern DCOP interface\n" 673 "Greg Stern DCOP interface\n"
674 "Mark Westcot Contact pinning\n" 674 "Mark Westcot Contact pinning\n"
675 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 675 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
676 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" 676 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n"
677#ifdef _WIN32_ 677#ifdef _WIN32_
678 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" 678 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
679#endif 679#endif
680 ); 680 );
681} 681}
682 682
683void KABCore::setContactSelected( const QString &uid ) 683void KABCore::setContactSelected( const QString &uid )
684{ 684{
685 KABC::Addressee addr = mAddressBook->findByUid( uid ); 685 KABC::Addressee addr = mAddressBook->findByUid( uid );
686 if ( !mDetails->isHidden() ) 686 if ( !mDetails->isHidden() )
687 mDetails->setAddressee( addr ); 687 mDetails->setAddressee( addr );
688 688
689 if ( !addr.isEmpty() ) { 689 if ( !addr.isEmpty() ) {
690 emit contactSelected( addr.formattedName() ); 690 emit contactSelected( addr.formattedName() );
691 KABC::Picture pic = addr.photo(); 691 KABC::Picture pic = addr.photo();
692 if ( pic.isIntern() ) { 692 if ( pic.isIntern() ) {
693//US emit contactSelected( pic.data() ); 693//US emit contactSelected( pic.data() );
694//US instead use: 694//US instead use:
695 QPixmap px; 695 QPixmap px;
696 if (pic.data().isNull() != true) 696 if (pic.data().isNull() != true)
697 { 697 {
698 px.convertFromImage(pic.data()); 698 px.convertFromImage(pic.data());
699 } 699 }
700 700
701 emit contactSelected( px ); 701 emit contactSelected( px );
702 } 702 }
703 } 703 }
704 704
705 705
706 mExtensionManager->setSelectionChanged(); 706 mExtensionManager->setSelectionChanged();
707 707
708 // update the actions 708 // update the actions
709 bool selected = !uid.isEmpty(); 709 bool selected = !uid.isEmpty();
710 710
711 if ( mReadWrite ) { 711 if ( mReadWrite ) {
712 mActionCut->setEnabled( selected ); 712 mActionCut->setEnabled( selected );
713 mActionPaste->setEnabled( selected ); 713 mActionPaste->setEnabled( selected );
714 } 714 }
715 715
716 mActionCopy->setEnabled( selected ); 716 mActionCopy->setEnabled( selected );
717 mActionDelete->setEnabled( selected ); 717 mActionDelete->setEnabled( selected );
718 mActionEditAddressee->setEnabled( selected ); 718 mActionEditAddressee->setEnabled( selected );
719 mActionMail->setEnabled( selected ); 719 mActionMail->setEnabled( selected );
720 mActionMailVCard->setEnabled( selected ); 720 mActionMailVCard->setEnabled( selected );
721 //if (mActionBeam) 721 //if (mActionBeam)
722 //mActionBeam->setEnabled( selected ); 722 //mActionBeam->setEnabled( selected );
723 mActionWhoAmI->setEnabled( selected ); 723 mActionWhoAmI->setEnabled( selected );
724} 724}
725 725
726void KABCore::sendMail() 726void KABCore::sendMail()
727{ 727{
728 sendMail( mViewManager->selectedEmails().join( ", " ) ); 728 sendMail( mViewManager->selectedEmails().join( ", " ) );
729} 729}
730 730
731void KABCore::sendMail( const QString& emaillist ) 731void KABCore::sendMail( const QString& emaillist )
732{ 732{
733 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 733 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
734 if (emaillist.contains(",") > 0) 734 if (emaillist.contains(",") > 0)
735 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 735 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
736 else 736 else
737 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 737 ExternalAppHandler::instance()->mailToOneContact( emaillist );
738} 738}
739 739
740 740
741 741
742void KABCore::mailVCard() 742void KABCore::mailVCard()
743{ 743{
744 QStringList uids = mViewManager->selectedUids(); 744 QStringList uids = mViewManager->selectedUids();
745 if ( !uids.isEmpty() ) 745 if ( !uids.isEmpty() )
746 mailVCard( uids ); 746 mailVCard( uids );
747} 747}
748 748
749void KABCore::mailVCard( const QStringList& uids ) 749void KABCore::mailVCard( const QStringList& uids )
750{ 750{
751 QStringList urls; 751 QStringList urls;
752 752
753// QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 753// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
754 754
755 QString dirName = "/tmp/" + KApplication::randomString( 8 ); 755 QString dirName = "/tmp/" + KApplication::randomString( 8 );
756 756
757 757
758 758
759 QDir().mkdir( dirName, true ); 759 QDir().mkdir( dirName, true );
760 760
761 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 761 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
762 KABC::Addressee a = mAddressBook->findByUid( *it ); 762 KABC::Addressee a = mAddressBook->findByUid( *it );
763 763
764 if ( a.isEmpty() ) 764 if ( a.isEmpty() )
765 continue; 765 continue;
766 766
767 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 767 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
768 768
769 QString fileName = dirName + "/" + name; 769 QString fileName = dirName + "/" + name;
770 770
771 QFile outFile(fileName); 771 QFile outFile(fileName);
772 772
773 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 773 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
774 KABC::VCardConverter converter; 774 KABC::VCardConverter converter;
775 QString vcard; 775 QString vcard;
776 776
777 converter.addresseeToVCard( a, vcard ); 777 converter.addresseeToVCard( a, vcard );
778 778
779 QTextStream t( &outFile ); // use a text stream 779 QTextStream t( &outFile ); // use a text stream
780 t.setEncoding( QTextStream::UnicodeUTF8 ); 780 t.setEncoding( QTextStream::UnicodeUTF8 );
781 t << vcard; 781 t << vcard;
782 782
783 outFile.close(); 783 outFile.close();
784 784
785 urls.append( fileName ); 785 urls.append( fileName );
786 } 786 }
787 } 787 }
788 788
789 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); 789 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
790 790
791 791
792/*US 792/*US
793 kapp->invokeMailer( QString::null, QString::null, QString::null, 793 kapp->invokeMailer( QString::null, QString::null, QString::null,
794 QString::null, // subject 794 QString::null, // subject
795 QString::null, // body 795 QString::null, // body
796 QString::null, 796 QString::null,
797 urls ); // attachments 797 urls ); // attachments
798*/ 798*/
799 799
800} 800}
801 801
802/** 802/**
803 Beams the "WhoAmI contact. 803 Beams the "WhoAmI contact.
804*/ 804*/
805void KABCore::beamMySelf() 805void KABCore::beamMySelf()
806{ 806{
807 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 807 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
808 if (!a.isEmpty()) 808 if (!a.isEmpty())
809 { 809 {
810 QStringList uids; 810 QStringList uids;
811 uids << a.uid(); 811 uids << a.uid();
812 812
813 beamVCard(uids); 813 beamVCard(uids);
814 } else { 814 } else {
815 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 815 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
816 816
817 817
818 } 818 }
819} 819}
820void KABCore::updateMainWindow() 820void KABCore::updateMainWindow()
821{ 821{
822 822
823 mMainWindow->showMaximized(); 823 mMainWindow->showMaximized();
824 mMainWindow->update(); 824 mMainWindow->update();
825} 825}
826void KABCore::resizeEvent(QResizeEvent* e ) 826void KABCore::resizeEvent(QResizeEvent* e )
827{ 827{
828 if ( !mMiniSplitter ) 828 if ( !mMiniSplitter )
829 return; 829 return;
830 //qDebug("KABCore::resizeEvent(QResizeEvent* e ) "); 830 //qDebug("KABCore::resizeEvent(QResizeEvent* e ) ");
831 if ( QApplication::desktop()->width() >= 480 ) { 831 if ( QApplication::desktop()->width() >= 480 ) {
832 if (QApplication::desktop()->width() == 640 ) { // e.g. 640x480 832 if (QApplication::desktop()->width() == 640 ) { // e.g. 640x480
833 if ( mMiniSplitter->orientation() == Qt::Vertical ) { 833 if ( mMiniSplitter->orientation() == Qt::Vertical ) {
834 mMiniSplitter->setOrientation( Qt::Horizontal); 834 mMiniSplitter->setOrientation( Qt::Horizontal);
835 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 835 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
836 if ( QApplication::desktop()->width() <= 640 ) { 836 if ( QApplication::desktop()->width() <= 640 ) {
837 //mMainWindow->setMaximumSize( QApplication::desktop()->size() ); 837 //mMainWindow->setMaximumSize( QApplication::desktop()->size() );
838 mViewManager->getFilterAction()->setComboWidth( 150 ); 838 mViewManager->getFilterAction()->setComboWidth( 150 );
839 QTimer::singleShot( 1, this , SLOT ( updateMainWindow())); 839 QTimer::singleShot( 1, this , SLOT ( updateMainWindow()));
840 } 840 }
841 } 841 }
842 } else if (QApplication::desktop()->width() == 480 ){// e.g. 480x640 842 } else if (QApplication::desktop()->width() == 480 ){// e.g. 480x640
843 if ( mMiniSplitter->orientation() == Qt::Horizontal ) { 843 if ( mMiniSplitter->orientation() == Qt::Horizontal ) {
844 mMiniSplitter->setOrientation( Qt::Vertical ); 844 mMiniSplitter->setOrientation( Qt::Vertical );
845 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 845 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
846 if ( QApplication::desktop()->width() <= 640 ) { 846 if ( QApplication::desktop()->width() <= 640 ) {
847 //mMainWindow->setMaximumSize( QApplication::desktop()->size() ); 847 //mMainWindow->setMaximumSize( QApplication::desktop()->size() );
848 mMainWindow->showMinimized(); 848 mMainWindow->showMinimized();
849 mViewManager->getFilterAction()->setComboWidth( 0 ); 849 mViewManager->getFilterAction()->setComboWidth( 0 );
850 QTimer::singleShot( 1, this , SLOT ( updateMainWindow())); 850 QTimer::singleShot( 1, this , SLOT ( updateMainWindow()));
851 } 851 }
852 } 852 }
853 } 853 }
854 } 854 }
855 855
856} 856}
857void KABCore::export2phone() 857void KABCore::export2phone()
858{ 858{
859 859
860 QStringList uids; 860 QStringList uids;
861 XXPortSelectDialog dlg( this, false, this ); 861 XXPortSelectDialog dlg( this, false, this );
862 if ( dlg.exec() ) 862 if ( dlg.exec() )
863 uids = dlg.uids(); 863 uids = dlg.uids();
864 else 864 else
865 return; 865 return;
866 if ( uids.isEmpty() ) 866 if ( uids.isEmpty() )
867 return; 867 return;
868 // qDebug("count %d ", uids.count()); 868 // qDebug("count %d ", uids.count());
869 869
870 KAex2phonePrefs ex2phone; 870 KAex2phonePrefs ex2phone;
871 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 871 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
872 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 872 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
873 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 873 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
874 874
875 if ( !ex2phone.exec() ) { 875 if ( !ex2phone.exec() ) {
876 return; 876 return;
877 } 877 }
878 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 878 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
879 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 879 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
880 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 880 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
881 881
882 882
883 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 883 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
884 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 884 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
885 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 885 KPimGlobalPrefs::instance()->mEx2PhoneModel );
886 886
887 QString fileName = getPhoneFile(); 887 QString fileName = getPhoneFile();
888 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) ) 888 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) )
889 return; 889 return;
890 890
891 message(i18n("Exporting to phone...")); 891 message(i18n("Exporting to phone..."));
892 QTimer::singleShot( 1, this , SLOT ( writeToPhone())); 892 QTimer::singleShot( 1, this , SLOT ( writeToPhone()));
893 893
894} 894}
895QString KABCore::getPhoneFile() 895QString KABCore::getPhoneFile()
896{ 896{
897#ifdef DESKTOP_VERSION 897#ifdef DESKTOP_VERSION
898 return locateLocal("tmp", "phonefile.vcf"); 898 return locateLocal("tmp", "phonefile.vcf");
899#else 899#else
900 return "/tmp/phonefile.vcf"; 900 return "/tmp/phonefile.vcf";
901#endif 901#endif
902 902
903} 903}
904void KABCore::writeToPhone( ) 904void KABCore::writeToPhone( )
905{ 905{
906 if ( PhoneAccess::writeToPhone( getPhoneFile() ) ) 906 if ( PhoneAccess::writeToPhone( getPhoneFile() ) )
907 message(i18n("Export to phone finished!")); 907 message(i18n("Export to phone finished!"));
908 else 908 else
909 qDebug(i18n("KA: Error exporting to phone")); 909 qDebug(i18n("KA: Error exporting to phone"));
910} 910}
911void KABCore::beamVCard() 911void KABCore::beamVCard()
912{ 912{
913 QStringList uids; 913 QStringList uids;
914 XXPortSelectDialog dlg( this, false, this ); 914 XXPortSelectDialog dlg( this, false, this );
915 if ( dlg.exec() ) 915 if ( dlg.exec() )
916 uids = dlg.uids(); 916 uids = dlg.uids();
917 else 917 else
918 return; 918 return;
919 if ( uids.isEmpty() ) 919 if ( uids.isEmpty() )
920 return; 920 return;
921 beamVCard( uids ); 921 beamVCard( uids );
922} 922}
923 923
924 924
925void KABCore::beamVCard(const QStringList& uids) 925void KABCore::beamVCard(const QStringList& uids)
926{ 926{
927 927
928 // LR: we should use the /tmp dir on the Zaurus, 928 // LR: we should use the /tmp dir on the Zaurus,
929 // because: /tmp = RAM, (HOME)/kdepim = flash memory 929 // because: /tmp = RAM, (HOME)/kdepim = flash memory
930 930
931#ifdef DESKTOP_VERSION 931#ifdef DESKTOP_VERSION
932 QString fileName = locateLocal("tmp", "kapibeamfile.vcf"); 932 QString fileName = locateLocal("tmp", "kapibeamfile.vcf");
933#else 933#else
934 QString fileName = "/tmp/kapibeamfile.vcf"; 934 QString fileName = "/tmp/kapibeamfile.vcf";
935#endif 935#endif
936 936
937 KABC::VCardConverter converter; 937 KABC::VCardConverter converter;
938 QString description; 938 QString description;
939 QString datastream; 939 QString datastream;
940 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 940 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
941 KABC::Addressee a = mAddressBook->findByUid( *it ); 941 KABC::Addressee a = mAddressBook->findByUid( *it );
942 942
943 if ( a.isEmpty() ) 943 if ( a.isEmpty() )
944 continue; 944 continue;
945 945
946 if (description.isEmpty()) 946 if (description.isEmpty())
947 description = a.formattedName(); 947 description = a.formattedName();
948 948
949 QString vcard; 949 QString vcard;
950 converter.addresseeToVCard( a, vcard ); 950 converter.addresseeToVCard( a, vcard );
951 int start = 0; 951 int start = 0;
952 int next; 952 int next;
953 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 953 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
954 int semi = vcard.find(";", next); 954 int semi = vcard.find(";", next);
955 int dopp = vcard.find(":", next); 955 int dopp = vcard.find(":", next);
956 int sep; 956 int sep;
957 if ( semi < dopp && semi >= 0 ) 957 if ( semi < dopp && semi >= 0 )
958 sep = semi ; 958 sep = semi ;
959 else 959 else
960 sep = dopp; 960 sep = dopp;
961 datastream +=vcard.mid( start, next - start); 961 datastream +=vcard.mid( start, next - start);
962 datastream +=vcard.mid( next+5,sep -next -5 ).upper(); 962 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
963 start = sep; 963 start = sep;
964 } 964 }
965 datastream += vcard.mid( start,vcard.length() ); 965 datastream += vcard.mid( start,vcard.length() );
966 } 966 }
967#ifndef DESKTOP_VERSION 967#ifndef DESKTOP_VERSION
968 QFile outFile(fileName); 968 QFile outFile(fileName);
969 if ( outFile.open(IO_WriteOnly) ) { 969 if ( outFile.open(IO_WriteOnly) ) {
970 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 970 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
971 QTextStream t( &outFile ); // use a text stream 971 QTextStream t( &outFile ); // use a text stream
972 //t.setEncoding( QTextStream::UnicodeUTF8 ); 972 //t.setEncoding( QTextStream::UnicodeUTF8 );
973 t.setEncoding( QTextStream::Latin1 ); 973 t.setEncoding( QTextStream::Latin1 );
974 t <<datastream.latin1(); 974 t <<datastream.latin1();
975 outFile.close(); 975 outFile.close();
976 Ir *ir = new Ir( this ); 976 Ir *ir = new Ir( this );
977 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 977 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
978 ir->send( fileName, description, "text/x-vCard" ); 978 ir->send( fileName, description, "text/x-vCard" );
979 } else { 979 } else {
980 qDebug("KA: Error open temp beam file "); 980 qDebug("KA: Error open temp beam file ");
981 return; 981 return;
982 } 982 }
983#endif 983#endif
984 984
985} 985}
986 986
987void KABCore::beamDone( Ir *ir ) 987void KABCore::beamDone( Ir *ir )
988{ 988{
989#ifndef DESKTOP_VERSION 989#ifndef DESKTOP_VERSION
990 delete ir; 990 delete ir;
991#endif 991#endif
992 topLevelWidget()->raise(); 992 topLevelWidget()->raise();
993 message( i18n("Beaming finished!") ); 993 message( i18n("Beaming finished!") );
994} 994}
995 995
996 996
997void KABCore::browse( const QString& url ) 997void KABCore::browse( const QString& url )
998{ 998{
999#ifndef KAB_EMBEDDED 999#ifndef KAB_EMBEDDED
1000 kapp->invokeBrowser( url ); 1000 kapp->invokeBrowser( url );
1001#else //KAB_EMBEDDED 1001#else //KAB_EMBEDDED
1002 qDebug("KABCore::browse must be fixed"); 1002 qDebug("KABCore::browse must be fixed");
1003#endif //KAB_EMBEDDED 1003#endif //KAB_EMBEDDED
1004} 1004}
1005 1005
1006void KABCore::selectAllContacts() 1006void KABCore::selectAllContacts()
1007{ 1007{
1008 mViewManager->setSelected( QString::null, true ); 1008 mViewManager->setSelected( QString::null, true );
1009} 1009}
1010 1010
1011void KABCore::deleteContacts() 1011void KABCore::deleteContacts()
1012{ 1012{
1013 QStringList uidList = mViewManager->selectedUids(); 1013 QStringList uidList = mViewManager->selectedUids();
1014 deleteContacts( uidList ); 1014 deleteContacts( uidList );
1015} 1015}
1016 1016
1017void KABCore::deleteContacts( const QStringList &uids ) 1017void KABCore::deleteContacts( const QStringList &uids )
1018{ 1018{
1019 if ( uids.count() > 0 ) { 1019 if ( uids.count() > 0 ) {
1020 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 1020 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
1021 UndoStack::instance()->push( command ); 1021 UndoStack::instance()->push( command );
1022 RedoStack::instance()->clear(); 1022 RedoStack::instance()->clear();
1023 1023
1024 // now if we deleted anything, refresh 1024 // now if we deleted anything, refresh
1025 setContactSelected( QString::null ); 1025 setContactSelected( QString::null );
1026 setModified( true ); 1026 setModified( true );
1027 } 1027 }
1028} 1028}
1029 1029
1030void KABCore::copyContacts() 1030void KABCore::copyContacts()
1031{ 1031{
1032 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1032 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1033 1033
1034 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 1034 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
1035 1035
1036 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 1036 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
1037 1037
1038 QClipboard *cb = QApplication::clipboard(); 1038 QClipboard *cb = QApplication::clipboard();
1039 cb->setText( clipText ); 1039 cb->setText( clipText );
1040} 1040}
1041 1041
1042void KABCore::cutContacts() 1042void KABCore::cutContacts()
1043{ 1043{
1044 QStringList uidList = mViewManager->selectedUids(); 1044 QStringList uidList = mViewManager->selectedUids();
1045 1045
1046//US if ( uidList.size() > 0 ) { 1046//US if ( uidList.size() > 0 ) {
1047 if ( uidList.count() > 0 ) { 1047 if ( uidList.count() > 0 ) {
1048 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 1048 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
1049 UndoStack::instance()->push( command ); 1049 UndoStack::instance()->push( command );
1050 RedoStack::instance()->clear(); 1050 RedoStack::instance()->clear();
1051 1051
1052 setModified( true ); 1052 setModified( true );
1053 } 1053 }
1054} 1054}
1055 1055
1056void KABCore::pasteContacts() 1056void KABCore::pasteContacts()
1057{ 1057{
1058 QClipboard *cb = QApplication::clipboard(); 1058 QClipboard *cb = QApplication::clipboard();
1059 1059
1060 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 1060 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
1061 1061
1062 pasteContacts( list ); 1062 pasteContacts( list );
1063} 1063}
1064 1064
1065void KABCore::pasteContacts( KABC::Addressee::List &list ) 1065void KABCore::pasteContacts( KABC::Addressee::List &list )
1066{ 1066{
1067 KABC::Resource *resource = requestResource( this ); 1067 KABC::Resource *resource = requestResource( this );
1068 KABC::Addressee::List::Iterator it; 1068 KABC::Addressee::List::Iterator it;
1069 for ( it = list.begin(); it != list.end(); ++it ) 1069 for ( it = list.begin(); it != list.end(); ++it )
1070 (*it).setResource( resource ); 1070 (*it).setResource( resource );
1071 1071
1072 PwPasteCommand *command = new PwPasteCommand( this, list ); 1072 PwPasteCommand *command = new PwPasteCommand( this, list );
1073 UndoStack::instance()->push( command ); 1073 UndoStack::instance()->push( command );
1074 RedoStack::instance()->clear(); 1074 RedoStack::instance()->clear();
1075 1075
1076 setModified( true ); 1076 setModified( true );
1077} 1077}
1078 1078
1079void KABCore::setWhoAmI() 1079void KABCore::setWhoAmI()
1080{ 1080{
1081 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1081 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1082 1082
1083 if ( addrList.count() > 1 ) { 1083 if ( addrList.count() > 1 ) {
1084 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 1084 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
1085 return; 1085 return;
1086 } 1086 }
1087 1087
1088 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 1088 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
1089 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 1089 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
1090 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 1090 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
1091} 1091}
1092void KABCore::editCategories() 1092void KABCore::editCategories()
1093{ 1093{
1094 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true ); 1094 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true );
1095 dlg.exec(); 1095 dlg.exec();
1096} 1096}
1097void KABCore::setCategories() 1097void KABCore::setCategories()
1098{ 1098{
1099 1099
1100 QStringList uids; 1100 QStringList uids;
1101 XXPortSelectDialog dlgx( this, false, this ); 1101 XXPortSelectDialog dlgx( this, false, this );
1102 if ( dlgx.exec() ) 1102 if ( dlgx.exec() )
1103 uids = dlgx.uids(); 1103 uids = dlgx.uids();
1104 else 1104 else
1105 return; 1105 return;
1106 if ( uids.isEmpty() ) 1106 if ( uids.isEmpty() )
1107 return; 1107 return;
1108 // qDebug("count %d ", uids.count()); 1108 // qDebug("count %d ", uids.count());
1109 1109
1110 1110
1111 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 1111 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
1112 if ( !dlg.exec() ) { 1112 if ( !dlg.exec() ) {
1113 message( i18n("Setting categories cancelled") ); 1113 message( i18n("Setting categories cancelled") );
1114 return; 1114 return;
1115 } 1115 }
1116 bool merge = false; 1116 bool merge = false;
1117 QString msg = i18n( "Merge with existing categories?" ); 1117 QString msg = i18n( "Merge with existing categories?" );
1118 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 1118 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
1119 merge = true; 1119 merge = true;
1120 1120
1121 message( i18n("Setting categories ... please wait!") ); 1121 message( i18n("Setting categories ... please wait!") );
1122 QStringList categories = dlg.selectedCategories(); 1122 QStringList categories = dlg.selectedCategories();
1123 1123
1124 //QStringList uids = mViewManager->selectedUids(); 1124 //QStringList uids = mViewManager->selectedUids();
1125 QStringList::Iterator it; 1125 QStringList::Iterator it;
1126 for ( it = uids.begin(); it != uids.end(); ++it ) { 1126 for ( it = uids.begin(); it != uids.end(); ++it ) {
1127 KABC::Addressee addr = mAddressBook->findByUid( *it ); 1127 KABC::Addressee addr = mAddressBook->findByUid( *it );
1128 if ( !addr.isEmpty() ) { 1128 if ( !addr.isEmpty() ) {
1129 if ( !merge ) 1129 if ( !merge )
1130 addr.setCategories( categories ); 1130 addr.setCategories( categories );
1131 else { 1131 else {
1132 QStringList addrCategories = addr.categories(); 1132 QStringList addrCategories = addr.categories();
1133 QStringList::Iterator catIt; 1133 QStringList::Iterator catIt;
1134 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 1134 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
1135 if ( !addrCategories.contains( *catIt ) ) 1135 if ( !addrCategories.contains( *catIt ) )
1136 addrCategories.append( *catIt ); 1136 addrCategories.append( *catIt );
1137 } 1137 }
1138 addr.setCategories( addrCategories ); 1138 addr.setCategories( addrCategories );
1139 } 1139 }
1140 mAddressBook->insertAddressee( addr ); 1140 mAddressBook->insertAddressee( addr );
1141 } 1141 }
1142 } 1142 }
1143 1143
1144 if ( uids.count() > 0 ) 1144 if ( uids.count() > 0 )
1145 setModified( true ); 1145 setModified( true );
1146 message( i18n("Setting categories completed!") ); 1146 message( i18n("Setting categories completed!") );
1147} 1147}
1148 1148
1149void KABCore::setSearchFields( const KABC::Field::List &fields ) 1149void KABCore::setSearchFields( const KABC::Field::List &fields )
1150{ 1150{
1151 mIncSearchWidget->setFields( fields ); 1151 mIncSearchWidget->setFields( fields );
1152} 1152}
1153 1153
1154void KABCore::incrementalSearch( const QString& text ) 1154void KABCore::incrementalSearch( const QString& text )
1155{ 1155{
1156 mViewManager->doSearch( text, mIncSearchWidget->currentField() ); 1156 mViewManager->doSearch( text, mIncSearchWidget->currentField() );
1157} 1157}
1158 1158
1159void KABCore::setModified() 1159void KABCore::setModified()
1160{ 1160{
1161 setModified( true ); 1161 setModified( true );
1162} 1162}
1163 1163
1164void KABCore::setModifiedWOrefresh() 1164void KABCore::setModifiedWOrefresh()
1165{ 1165{
1166 // qDebug("KABCore::setModifiedWOrefresh() "); 1166 // qDebug("KABCore::setModifiedWOrefresh() ");
1167 mModified = true; 1167 mModified = true;
1168 mActionSave->setEnabled( mModified ); 1168 mActionSave->setEnabled( mModified );
1169 1169
1170 1170
1171} 1171}
1172void KABCore::setModified( bool modified ) 1172void KABCore::setModified( bool modified )
1173{ 1173{
1174 mModified = modified; 1174 mModified = modified;
1175 mActionSave->setEnabled( mModified ); 1175 mActionSave->setEnabled( mModified );
1176 1176
1177 if ( modified ) 1177 if ( modified )
1178 mJumpButtonBar->recreateButtons(); 1178 mJumpButtonBar->recreateButtons();
1179 1179
1180 mViewManager->refreshView(); 1180 mViewManager->refreshView();
1181 1181
1182} 1182}
1183 1183
1184bool KABCore::modified() const 1184bool KABCore::modified() const
1185{ 1185{
1186 return mModified; 1186 return mModified;
1187} 1187}
1188 1188
1189void KABCore::contactModified( const KABC::Addressee &addr ) 1189void KABCore::contactModified( const KABC::Addressee &addr )
1190{ 1190{
1191 addrModified( addr ); 1191 addrModified( addr );
1192#if 0 // debug only 1192#if 0 // debug only
1193 KABC::Addressee ad = addr; 1193 KABC::Addressee ad = addr;
1194 ad.computeCsum( "123"); 1194 ad.computeCsum( "123");
1195#endif 1195#endif
1196} 1196}
1197 1197
1198void KABCore::addrModified( const KABC::Addressee &addr ,bool updateDetails ) 1198void KABCore::addrModified( const KABC::Addressee &addr ,bool updateDetails )
1199{ 1199{
1200 1200
1201 Command *command = 0; 1201 Command *command = 0;
1202 QString uid; 1202 QString uid;
1203 1203
1204 // check if it exists already 1204 // check if it exists already
1205 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 1205 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
1206 if ( origAddr.isEmpty() ) 1206 if ( origAddr.isEmpty() )
1207 command = new PwNewCommand( mAddressBook, addr ); 1207 command = new PwNewCommand( mAddressBook, addr );
1208 else { 1208 else {
1209 command = new PwEditCommand( mAddressBook, origAddr, addr ); 1209 command = new PwEditCommand( mAddressBook, origAddr, addr );
1210 uid = addr.uid(); 1210 uid = addr.uid();
1211 } 1211 }
1212 1212
1213 UndoStack::instance()->push( command ); 1213 UndoStack::instance()->push( command );
1214 RedoStack::instance()->clear(); 1214 RedoStack::instance()->clear();
1215 if ( updateDetails ) 1215 if ( updateDetails )
1216 mDetails->setAddressee( addr ); 1216 mDetails->setAddressee( addr );
1217 setModified( true ); 1217 setModified( true );
1218} 1218}
1219 1219
1220void KABCore::newContact() 1220void KABCore::newContact()
1221{ 1221{
1222 1222
1223 1223
1224 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources(); 1224 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources();
1225 1225
1226 QPtrList<KRES::Resource> kresResources; 1226 QPtrList<KRES::Resource> kresResources;
1227 QPtrListIterator<KABC::Resource> it( kabcResources ); 1227 QPtrListIterator<KABC::Resource> it( kabcResources );
1228 KABC::Resource *resource; 1228 KABC::Resource *resource;
1229 while ( ( resource = it.current() ) != 0 ) { 1229 while ( ( resource = it.current() ) != 0 ) {
1230 ++it; 1230 ++it;
1231 if ( !resource->readOnly() ) { 1231 if ( !resource->readOnly() ) {
1232 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 1232 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
1233 if ( res ) 1233 if ( res )
1234 kresResources.append( res ); 1234 kresResources.append( res );
1235 } 1235 }
1236 } 1236 }
1237 1237
1238 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); 1238 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this );
1239 resource = static_cast<KABC::Resource*>( res ); 1239 resource = static_cast<KABC::Resource*>( res );
1240 1240
1241 if ( resource ) { 1241 if ( resource ) {
1242 KABC::Addressee addr; 1242 KABC::Addressee addr;
1243 addr.setResource( resource ); 1243 addr.setResource( resource );
1244 mEditorDialog->setAddressee( addr ); 1244 mEditorDialog->setAddressee( addr );
1245 KApplication::execDialog ( mEditorDialog ); 1245 KApplication::execDialog ( mEditorDialog );
1246 1246
1247 } else 1247 } else
1248 return; 1248 return;
1249 1249
1250 // mEditorDict.insert( dialog->addressee().uid(), dialog ); 1250 // mEditorDict.insert( dialog->addressee().uid(), dialog );
1251 1251
1252 1252
1253} 1253}
1254 1254
1255void KABCore::addEmail( QString aStr ) 1255void KABCore::addEmail( QString aStr )
1256{ 1256{
1257#ifndef KAB_EMBEDDED 1257#ifndef KAB_EMBEDDED
1258 QString fullName, email; 1258 QString fullName, email;
1259 1259
1260 KABC::Addressee::parseEmailAddress( aStr, fullName, email ); 1260 KABC::Addressee::parseEmailAddress( aStr, fullName, email );
1261 1261
1262 // Try to lookup the addressee matching the email address 1262 // Try to lookup the addressee matching the email address
1263 bool found = false; 1263 bool found = false;
1264 QStringList emailList; 1264 QStringList emailList;
1265 KABC::AddressBook::Iterator it; 1265 KABC::AddressBook::Iterator it;
1266 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { 1266 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) {
1267 emailList = (*it).emails(); 1267 emailList = (*it).emails();
1268 if ( emailList.contains( email ) > 0 ) { 1268 if ( emailList.contains( email ) > 0 ) {
1269 found = true; 1269 found = true;
1270 (*it).setNameFromString( fullName ); 1270 (*it).setNameFromString( fullName );
1271 editContact( (*it).uid() ); 1271 editContact( (*it).uid() );
1272 } 1272 }
1273 } 1273 }
1274 1274
1275 if ( !found ) { 1275 if ( !found ) {
1276 KABC::Addressee addr; 1276 KABC::Addressee addr;
1277 addr.setNameFromString( fullName ); 1277 addr.setNameFromString( fullName );
1278 addr.insertEmail( email, true ); 1278 addr.insertEmail( email, true );
1279 1279
1280 mAddressBook->insertAddressee( addr ); 1280 mAddressBook->insertAddressee( addr );
1281 mViewManager->refreshView( addr.uid() ); 1281 mViewManager->refreshView( addr.uid() );
1282 editContact( addr.uid() ); 1282 editContact( addr.uid() );
1283 } 1283 }
1284#else //KAB_EMBEDDED 1284#else //KAB_EMBEDDED
1285 qDebug("KABCore::addEmail finsih method"); 1285 qDebug("KABCore::addEmail finsih method");
1286#endif //KAB_EMBEDDED 1286#endif //KAB_EMBEDDED
1287} 1287}
1288 1288
1289void KABCore::importVCard( const KURL &url, bool showPreview ) 1289void KABCore::importVCard( const KURL &url, bool showPreview )
1290{ 1290{
1291 mXXPortManager->importVCard( url, showPreview ); 1291 mXXPortManager->importVCard( url, showPreview );
1292} 1292}
1293void KABCore::importFromOL() 1293void KABCore::importFromOL()
1294{ 1294{
1295#ifdef _OL_IMPORT_ 1295#ifdef _OL_IMPORT_
1296 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1296 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
1297 idgl->exec(); 1297 idgl->exec();
1298 KABC::Addressee::List list = idgl->getAddressList(); 1298 KABC::Addressee::List list = idgl->getAddressList();
1299 if ( list.count() > 0 ) { 1299 if ( list.count() > 0 ) {
1300 KABC::Addressee::List listNew; 1300 KABC::Addressee::List listNew;
1301 KABC::Addressee::List listExisting; 1301 KABC::Addressee::List listExisting;
1302 KABC::Addressee::List::Iterator it; 1302 KABC::Addressee::List::Iterator it;
1303 KABC::AddressBook::Iterator iter; 1303 KABC::AddressBook::Iterator iter;
1304 for ( it = list.begin(); it != list.end(); ++it ) { 1304 for ( it = list.begin(); it != list.end(); ++it ) {
1305 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1305 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
1306 listNew.append( (*it) ); 1306 listNew.append( (*it) );
1307 else 1307 else
1308 listExisting.append( (*it) ); 1308 listExisting.append( (*it) );
1309 } 1309 }
1310 if ( listExisting.count() > 0 ) 1310 if ( listExisting.count() > 0 )
1311 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1311 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1312 if ( listNew.count() > 0 ) { 1312 if ( listNew.count() > 0 ) {
1313 pasteWithNewUid = false; 1313 pasteWithNewUid = false;
1314 pasteContacts( listNew ); 1314 pasteContacts( listNew );
1315 pasteWithNewUid = true; 1315 pasteWithNewUid = true;
1316 } 1316 }
1317 } 1317 }
1318 delete idgl; 1318 delete idgl;
1319#endif 1319#endif
1320} 1320}
1321 1321
1322void KABCore::importVCard( const QString &vCard, bool showPreview ) 1322void KABCore::importVCard( const QString &vCard, bool showPreview )
1323{ 1323{
1324 mXXPortManager->importVCard( vCard, showPreview ); 1324 mXXPortManager->importVCard( vCard, showPreview );
1325} 1325}
1326 1326
1327//US added a second method without defaultparameter 1327//US added a second method without defaultparameter
1328void KABCore::editContact2() { 1328void KABCore::editContact2() {
1329 editContact( QString::null ); 1329 editContact( QString::null );
1330} 1330}
1331 1331
1332void KABCore::editContact( const QString &uid ) 1332void KABCore::editContact( const QString &uid )
1333{ 1333{
1334 1334
1335 if ( mExtensionManager->isQuickEditVisible() ) 1335 if ( mExtensionManager->isQuickEditVisible() )
1336 return; 1336 return;
1337 1337
1338 // First, locate the contact entry 1338 // First, locate the contact entry
1339 QString localUID = uid; 1339 QString localUID = uid;
1340 if ( localUID.isNull() ) { 1340 if ( localUID.isNull() ) {
1341 QStringList uidList = mViewManager->selectedUids(); 1341 QStringList uidList = mViewManager->selectedUids();
1342 if ( uidList.count() > 0 ) 1342 if ( uidList.count() > 0 )
1343 localUID = *( uidList.at( 0 ) ); 1343 localUID = *( uidList.at( 0 ) );
1344 } 1344 }
1345 1345
1346 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1346 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1347 if ( !addr.isEmpty() ) { 1347 if ( !addr.isEmpty() ) {
1348 mEditorDialog->setAddressee( addr ); 1348 mEditorDialog->setAddressee( addr );
1349 KApplication::execDialog ( mEditorDialog ); 1349 KApplication::execDialog ( mEditorDialog );
1350 } 1350 }
1351} 1351}
1352 1352
1353/** 1353/**
1354 Shows or edits the detail view for the given uid. If the uid is QString::null, 1354 Shows or edits the detail view for the given uid. If the uid is QString::null,
1355 the method will try to find a selected addressee in the view. 1355 the method will try to find a selected addressee in the view.
1356 */ 1356 */
1357void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1357void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1358{ 1358{
1359 if ( mMultipleViewsAtOnce ) 1359 if ( mMultipleViewsAtOnce )
1360 { 1360 {
1361 editContact( uid ); 1361 editContact( uid );
1362 } 1362 }
1363 else 1363 else
1364 { 1364 {
1365 setDetailsVisible( true ); 1365 setDetailsVisible( true );
1366 mActionDetails->setChecked(true); 1366 mActionDetails->setChecked(true);
1367 } 1367 }
1368 1368
1369} 1369}
1370 1370
1371void KABCore::save() 1371void KABCore::save()
1372{ 1372{
1373 if (syncManager->blockSave()) 1373 if (syncManager->blockSave())
1374 return; 1374 return;
1375 if ( !mModified ) 1375 if ( !mModified )
1376 return; 1376 return;
1377 1377
1378 syncManager->setBlockSave(true); 1378 syncManager->setBlockSave(true);
1379 QString text = i18n( "There was an error while attempting to save\n the " 1379 QString text = i18n( "There was an error while attempting to save\n the "
1380 "address book. Please check that some \nother application is " 1380 "address book. Please check that some \nother application is "
1381 "not using it. " ); 1381 "not using it. " );
1382 message(i18n("Saving ... please wait! "), false); 1382 message(i18n("Saving ... please wait! "), false);
1383 //qApp->processEvents(); 1383 //qApp->processEvents();
1384#ifndef KAB_EMBEDDED 1384#ifndef KAB_EMBEDDED
1385 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1385 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1386 if ( !b || !b->save() ) { 1386 if ( !b || !b->save() ) {
1387 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1387 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1388 } 1388 }
1389#else //KAB_EMBEDDED 1389#else //KAB_EMBEDDED
1390 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1390 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1391 if ( !b || !b->save() ) { 1391 if ( !b || !b->save() ) {
1392 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1392 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1393 } 1393 }
1394#endif //KAB_EMBEDDED 1394#endif //KAB_EMBEDDED
1395 1395
1396 message(i18n("Addressbook saved!")); 1396 message(i18n("Addressbook saved!"));
1397 setModified( false ); 1397 setModified( false );
1398 syncManager->setBlockSave(false); 1398 syncManager->setBlockSave(false);
1399} 1399}
1400 1400
1401 1401
1402void KABCore::undo() 1402void KABCore::undo()
1403{ 1403{
1404 UndoStack::instance()->undo(); 1404 UndoStack::instance()->undo();
1405 1405
1406 // Refresh the view 1406 // Refresh the view
1407 mViewManager->refreshView(); 1407 mViewManager->refreshView();
1408} 1408}
1409 1409
1410void KABCore::redo() 1410void KABCore::redo()
1411{ 1411{
1412 RedoStack::instance()->redo(); 1412 RedoStack::instance()->redo();
1413 1413
1414 // Refresh the view 1414 // Refresh the view
1415 mViewManager->refreshView(); 1415 mViewManager->refreshView();
1416} 1416}
1417void KABCore::setJumpButtonBar( bool visible ) 1417void KABCore::setJumpButtonBar( bool visible )
1418{ 1418{
1419 setJumpButtonBarVisible(visible ); 1419 setJumpButtonBarVisible(visible );
1420 saveSettings(); 1420 saveSettings();
1421} 1421}
1422void KABCore::setJumpButtonBarVisible( bool visible ) 1422void KABCore::setJumpButtonBarVisible( bool visible )
1423{ 1423{
1424 if (mMultipleViewsAtOnce) 1424 if (mMultipleViewsAtOnce)
1425 { 1425 {
1426 if ( visible ) 1426 if ( visible )
1427 mJumpButtonBar->show(); 1427 mJumpButtonBar->show();
1428 else 1428 else
1429 mJumpButtonBar->hide(); 1429 mJumpButtonBar->hide();
1430 } 1430 }
1431 else 1431 else
1432 { 1432 {
1433 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1433 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1434 if (mViewManager->isVisible()) 1434 if (mViewManager->isVisible())
1435 { 1435 {
1436 if ( visible ) 1436 if ( visible )
1437 mJumpButtonBar->show(); 1437 mJumpButtonBar->show();
1438 else 1438 else
1439 mJumpButtonBar->hide(); 1439 mJumpButtonBar->hide();
1440 } 1440 }
1441 else 1441 else
1442 { 1442 {
1443 mJumpButtonBar->hide(); 1443 mJumpButtonBar->hide();
1444 } 1444 }
1445 } 1445 }
1446} 1446}
1447 1447
1448 1448
1449void KABCore::setDetailsToState() 1449void KABCore::setDetailsToState()
1450{ 1450{
1451 setDetailsVisible( mActionDetails->isChecked() ); 1451 setDetailsVisible( mActionDetails->isChecked() );
1452} 1452}
1453void KABCore::setDetailsToggle() 1453void KABCore::setDetailsToggle()
1454{ 1454{
1455 mActionDetails->setChecked( !mActionDetails->isChecked() ); 1455 mActionDetails->setChecked( !mActionDetails->isChecked() );
1456 setDetailsToState(); 1456 setDetailsToState();
1457} 1457}
1458 1458
1459 1459
1460 1460
1461void KABCore::setDetailsVisible( bool visible ) 1461void KABCore::setDetailsVisible( bool visible )
1462{ 1462{
1463 if (visible && mDetails->isHidden()) 1463 if (visible && mDetails->isHidden())
1464 { 1464 {
1465 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1465 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1466 if ( addrList.count() > 0 ) 1466 if ( addrList.count() > 0 )
1467 mDetails->setAddressee( addrList[ 0 ] ); 1467 mDetails->setAddressee( addrList[ 0 ] );
1468 } 1468 }
1469 1469
1470 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1470 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1471 // the listview and the detailview. We do that by changing the splitbar size. 1471 // the listview and the detailview. We do that by changing the splitbar size.
1472 if (mMultipleViewsAtOnce) 1472 if (mMultipleViewsAtOnce)
1473 { 1473 {
1474 if ( visible ) 1474 if ( visible )
1475 mDetails->show(); 1475 mDetails->show();
1476 else 1476 else
1477 mDetails->hide(); 1477 mDetails->hide();
1478 } 1478 }
1479 else 1479 else
1480 { 1480 {
1481 if ( visible ) { 1481 if ( visible ) {
1482 mViewManager->hide(); 1482 mViewManager->hide();
1483 mDetails->show(); 1483 mDetails->show();
1484 mIncSearchWidget->setFocus(); 1484 mIncSearchWidget->setFocus();
1485 } 1485 }
1486 else { 1486 else {
1487 mViewManager->show(); 1487 mViewManager->show();
1488 mDetails->hide(); 1488 mDetails->hide();
1489 mViewManager->setFocusAV(); 1489 mViewManager->setFocusAV();
1490 } 1490 }
1491 setJumpButtonBarVisible( !visible ); 1491 setJumpButtonBarVisible( !visible );
1492 } 1492 }
1493 1493
1494} 1494}
1495 1495
1496void KABCore::extensionChanged( int id ) 1496void KABCore::extensionChanged( int id )
1497{ 1497{
1498 //change the details view only for non desktop systems 1498 //change the details view only for non desktop systems
1499#ifndef DESKTOP_VERSION 1499#ifndef DESKTOP_VERSION
1500 1500
1501 if (id == 0) 1501 if (id == 0)
1502 { 1502 {
1503 //the user disabled the extension. 1503 //the user disabled the extension.
1504 1504
1505 if (mMultipleViewsAtOnce) 1505 if (mMultipleViewsAtOnce)
1506 { // enable detailsview again 1506 { // enable detailsview again
1507 setDetailsVisible( true ); 1507 setDetailsVisible( true );
1508 mActionDetails->setChecked( true ); 1508 mActionDetails->setChecked( true );
1509 } 1509 }
1510 else 1510 else
1511 { //go back to the listview 1511 { //go back to the listview
1512 setDetailsVisible( false ); 1512 setDetailsVisible( false );
1513 mActionDetails->setChecked( false ); 1513 mActionDetails->setChecked( false );
1514 mActionDetails->setEnabled(true); 1514 mActionDetails->setEnabled(true);
1515 } 1515 }
1516 1516
1517 } 1517 }
1518 else 1518 else
1519 { 1519 {
1520 //the user enabled the extension. 1520 //the user enabled the extension.
1521 setDetailsVisible( false ); 1521 setDetailsVisible( false );
1522 mActionDetails->setChecked( false ); 1522 mActionDetails->setChecked( false );
1523 1523
1524 if (!mMultipleViewsAtOnce) 1524 if (!mMultipleViewsAtOnce)
1525 { 1525 {
1526 mActionDetails->setEnabled(false); 1526 mActionDetails->setEnabled(false);
1527 } 1527 }
1528 1528
1529 mExtensionManager->setSelectionChanged(); 1529 mExtensionManager->setSelectionChanged();
1530 1530
1531 } 1531 }
1532 1532
1533#endif// DESKTOP_VERSION 1533#endif// DESKTOP_VERSION
1534 1534
1535} 1535}
1536 1536
1537 1537
1538void KABCore::extensionModified( const KABC::Addressee::List &list ) 1538void KABCore::extensionModified( const KABC::Addressee::List &list )
1539{ 1539{
1540 1540
1541 if ( list.count() != 0 ) { 1541 if ( list.count() != 0 ) {
1542 KABC::Addressee::List::ConstIterator it; 1542 KABC::Addressee::List::ConstIterator it;
1543 for ( it = list.begin(); it != list.end(); ++it ) 1543 for ( it = list.begin(); it != list.end(); ++it )
1544 mAddressBook->insertAddressee( *it ); 1544 mAddressBook->insertAddressee( *it );
1545 if ( list.count() > 1 ) 1545 if ( list.count() > 1 )
1546 setModified(); 1546 setModified();
1547 else 1547 else
1548 setModifiedWOrefresh(); 1548 setModifiedWOrefresh();
1549 } 1549 }
1550 if ( list.count() == 0 ) 1550 if ( list.count() == 0 )
1551 mViewManager->refreshView(); 1551 mViewManager->refreshView();
1552 else 1552 else
1553 mViewManager->refreshView( list[ 0 ].uid() ); 1553 mViewManager->refreshView( list[ 0 ].uid() );
1554 1554
1555 1555
1556 1556
1557} 1557}
1558 1558
1559QString KABCore::getNameByPhone( const QString &phone ) 1559QString KABCore::getNameByPhone( const QString &phone )
1560{ 1560{
1561#ifndef KAB_EMBEDDED 1561#ifndef KAB_EMBEDDED
1562 QRegExp r( "[/*/-/ ]" ); 1562 QRegExp r( "[/*/-/ ]" );
1563 QString localPhone( phone ); 1563 QString localPhone( phone );
1564 1564
1565 bool found = false; 1565 bool found = false;
1566 QString ownerName = ""; 1566 QString ownerName = "";
1567 KABC::AddressBook::Iterator iter; 1567 KABC::AddressBook::Iterator iter;
1568 KABC::PhoneNumber::List::Iterator phoneIter; 1568 KABC::PhoneNumber::List::Iterator phoneIter;
1569 KABC::PhoneNumber::List phoneList; 1569 KABC::PhoneNumber::List phoneList;
1570 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1570 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1571 phoneList = (*iter).phoneNumbers(); 1571 phoneList = (*iter).phoneNumbers();
1572 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1572 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1573 ++phoneIter) { 1573 ++phoneIter) {
1574 // Get rid of separator chars so just the numbers are compared. 1574 // Get rid of separator chars so just the numbers are compared.
1575 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1575 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1576 ownerName = (*iter).formattedName(); 1576 ownerName = (*iter).formattedName();
1577 found = true; 1577 found = true;
1578 } 1578 }
1579 } 1579 }
1580 } 1580 }
1581 1581
1582 return ownerName; 1582 return ownerName;
1583#else //KAB_EMBEDDED 1583#else //KAB_EMBEDDED
1584 qDebug("KABCore::getNameByPhone finsih method"); 1584 qDebug("KABCore::getNameByPhone finsih method");
1585 return ""; 1585 return "";
1586#endif //KAB_EMBEDDED 1586#endif //KAB_EMBEDDED
1587 1587
1588} 1588}
1589 1589
1590void KABCore::openConfigDialog() 1590void KABCore::openConfigDialog()
1591{ 1591{
1592 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1592 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1593 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1593 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1594 ConfigureDialog->addModule(kabcfg ); 1594 ConfigureDialog->addModule(kabcfg );
1595 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1595 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1596 ConfigureDialog->addModule(kdelibcfg ); 1596 ConfigureDialog->addModule(kdelibcfg );
1597 1597
1598 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1598 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1599 this, SLOT( configurationChanged() ) ); 1599 this, SLOT( configurationChanged() ) );
1600 connect( ConfigureDialog, SIGNAL( okClicked() ), 1600 connect( ConfigureDialog, SIGNAL( okClicked() ),
1601 this, SLOT( configurationChanged() ) ); 1601 this, SLOT( configurationChanged() ) );
1602 saveSettings(); 1602 saveSettings();
1603#ifndef DESKTOP_VERSION 1603#ifndef DESKTOP_VERSION
1604 ConfigureDialog->showMaximized(); 1604 ConfigureDialog->showMaximized();
1605#endif 1605#endif
1606 if ( ConfigureDialog->exec() ) 1606 if ( ConfigureDialog->exec() )
1607 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1607 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1608 delete ConfigureDialog; 1608 delete ConfigureDialog;
1609} 1609}
1610 1610
1611void KABCore::openLDAPDialog() 1611void KABCore::openLDAPDialog()
1612{ 1612{
1613#ifndef KAB_EMBEDDED 1613#ifndef KAB_EMBEDDED
1614 if ( !mLdapSearchDialog ) { 1614 if ( !mLdapSearchDialog ) {
1615 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1615 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1616 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1616 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1617 SLOT( refreshView() ) ); 1617 SLOT( refreshView() ) );
1618 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1618 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1619 SLOT( setModified() ) ); 1619 SLOT( setModified() ) );
1620 } else 1620 } else
1621 mLdapSearchDialog->restoreSettings(); 1621 mLdapSearchDialog->restoreSettings();
1622 1622
1623 if ( mLdapSearchDialog->isOK() ) 1623 if ( mLdapSearchDialog->isOK() )
1624 mLdapSearchDialog->exec(); 1624 mLdapSearchDialog->exec();
1625#else //KAB_EMBEDDED 1625#else //KAB_EMBEDDED
1626 qDebug("KABCore::openLDAPDialog() finsih method"); 1626 qDebug("KABCore::openLDAPDialog() finsih method");
1627#endif //KAB_EMBEDDED 1627#endif //KAB_EMBEDDED
1628} 1628}
1629 1629
1630void KABCore::print() 1630void KABCore::print()
1631{ 1631{
1632#ifndef KAB_EMBEDDED 1632#ifndef KAB_EMBEDDED
1633 KPrinter printer; 1633 KPrinter printer;
1634 if ( !printer.setup( this ) ) 1634 if ( !printer.setup( this ) )
1635 return; 1635 return;
1636 1636
1637 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1637 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1638 mViewManager->selectedUids(), this ); 1638 mViewManager->selectedUids(), this );
1639 1639
1640 wizard.exec(); 1640 wizard.exec();
1641#else //KAB_EMBEDDED 1641#else //KAB_EMBEDDED
1642 qDebug("KABCore::print() finsih method"); 1642 qDebug("KABCore::print() finsih method");
1643#endif //KAB_EMBEDDED 1643#endif //KAB_EMBEDDED
1644 1644
1645} 1645}
1646 1646
1647 1647
1648void KABCore::addGUIClient( KXMLGUIClient *client ) 1648void KABCore::addGUIClient( KXMLGUIClient *client )
1649{ 1649{
1650 if ( mGUIClient ) 1650 if ( mGUIClient )
1651 mGUIClient->insertChildClient( client ); 1651 mGUIClient->insertChildClient( client );
1652 else 1652 else
1653 KMessageBox::error( this, "no KXMLGUICLient"); 1653 KMessageBox::error( this, "no KXMLGUICLient");
1654} 1654}
1655 1655
1656 1656
1657void KABCore::configurationChanged() 1657void KABCore::configurationChanged()
1658{ 1658{
1659 mExtensionManager->reconfigure(); 1659 mExtensionManager->reconfigure();
1660} 1660}
1661 1661
1662void KABCore::addressBookChanged() 1662void KABCore::addressBookChanged()
1663{ 1663{
1664/*US 1664/*US
1665 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1665 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1666 while ( it.current() ) { 1666 while ( it.current() ) {
1667 if ( it.current()->dirty() ) { 1667 if ( it.current()->dirty() ) {
1668 QString text = i18n( "Data has been changed externally. Unsaved " 1668 QString text = i18n( "Data has been changed externally. Unsaved "
1669 "changes will be lost." ); 1669 "changes will be lost." );
1670 KMessageBox::information( this, text ); 1670 KMessageBox::information( this, text );
1671 } 1671 }
1672 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1672 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1673 ++it; 1673 ++it;
1674 } 1674 }
1675*/ 1675*/
1676 if (mEditorDialog) 1676 if (mEditorDialog)
1677 { 1677 {
1678 if (mEditorDialog->dirty()) 1678 if (mEditorDialog->dirty())
1679 { 1679 {
1680 QString text = i18n( "Data has been changed externally. Unsaved " 1680 QString text = i18n( "Data has been changed externally. Unsaved "
1681 "changes will be lost." ); 1681 "changes will be lost." );
1682 KMessageBox::information( this, text ); 1682 KMessageBox::information( this, text );
1683 } 1683 }
1684 QString currentuid = mEditorDialog->addressee().uid(); 1684 QString currentuid = mEditorDialog->addressee().uid();
1685 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1685 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1686 } 1686 }
1687 mViewManager->refreshView(); 1687 mViewManager->refreshView();
1688 1688
1689 1689
1690} 1690}
1691 1691
1692AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1692AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1693 const char *name ) 1693 const char *name )
1694{ 1694{
1695 1695
1696 if ( mEditorDialog == 0 ) { 1696 if ( mEditorDialog == 0 ) {
1697 mEditorDialog = new AddresseeEditorDialog( this, parent, 1697 mEditorDialog = new AddresseeEditorDialog( this, parent,
1698 name ? name : "editorDialog" ); 1698 name ? name : "editorDialog" );
1699 1699
1700 1700
1701 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1701 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1702 SLOT( contactModified( const KABC::Addressee& ) ) ); 1702 SLOT( contactModified( const KABC::Addressee& ) ) );
1703 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1703 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1704 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1704 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1705 } 1705 }
1706 1706
1707 return mEditorDialog; 1707 return mEditorDialog;
1708} 1708}
1709 1709
1710void KABCore::slotEditorDestroyed( const QString &uid ) 1710void KABCore::slotEditorDestroyed( const QString &uid )
1711{ 1711{
1712 //mEditorDict.remove( uid ); 1712 //mEditorDict.remove( uid );
1713} 1713}
1714 1714
1715void KABCore::initGUI() 1715void KABCore::initGUI()
1716{ 1716{
1717#ifndef KAB_EMBEDDED 1717#ifndef KAB_EMBEDDED
1718 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1718 QHBoxLayout *topLayout = new QHBoxLayout( this );
1719 topLayout->setSpacing( KDialogBase::spacingHint() ); 1719 topLayout->setSpacing( KDialogBase::spacingHint() );
1720 1720
1721 mExtensionBarSplitter = new QSplitter( this ); 1721 mExtensionBarSplitter = new QSplitter( this );
1722 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1722 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1723 1723
1724 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1724 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1725 1725
1726 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1726 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1727 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1727 mIncSearchWidget = new IncSearchWidget( viewSpace );
1728 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1728 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1729 SLOT( incrementalSearch( const QString& ) ) ); 1729 SLOT( incrementalSearch( const QString& ) ) );
1730 1730
1731 mViewManager = new ViewManager( this, viewSpace ); 1731 mViewManager = new ViewManager( this, viewSpace );
1732 viewSpace->setStretchFactor( mViewManager, 1 ); 1732 viewSpace->setStretchFactor( mViewManager, 1 );
1733 1733
1734 mDetails = new ViewContainer( mDetailsSplitter ); 1734 mDetails = new ViewContainer( mDetailsSplitter );
1735 1735
1736 mJumpButtonBar = new JumpButtonBar( this, this ); 1736 mJumpButtonBar = new JumpButtonBar( this, this );
1737 1737
1738 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1738 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1739 1739
1740 topLayout->addWidget( mExtensionBarSplitter ); 1740 topLayout->addWidget( mExtensionBarSplitter );
1741 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1741 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1742 topLayout->addWidget( mJumpButtonBar ); 1742 topLayout->addWidget( mJumpButtonBar );
1743 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1743 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1744 1744
1745 mXXPortManager = new XXPortManager( this, this ); 1745 mXXPortManager = new XXPortManager( this, this );
1746 1746
1747#else //KAB_EMBEDDED 1747#else //KAB_EMBEDDED
1748 //US initialize viewMenu before settingup viewmanager. 1748 //US initialize viewMenu before settingup viewmanager.
1749 // Viewmanager needs this menu to plugin submenues. 1749 // Viewmanager needs this menu to plugin submenues.
1750 viewMenu = new QPopupMenu( this ); 1750 viewMenu = new QPopupMenu( this );
1751 settingsMenu = new QPopupMenu( this ); 1751 settingsMenu = new QPopupMenu( this );
1752 //filterMenu = new QPopupMenu( this ); 1752 //filterMenu = new QPopupMenu( this );
1753 ImportMenu = new QPopupMenu( this ); 1753 ImportMenu = new QPopupMenu( this );
1754 ExportMenu = new QPopupMenu( this ); 1754 ExportMenu = new QPopupMenu( this );
1755 syncMenu = new QPopupMenu( this ); 1755 syncMenu = new QPopupMenu( this );
1756 changeMenu= new QPopupMenu( this ); 1756 changeMenu= new QPopupMenu( this );
1757 beamMenu= new QPopupMenu( this ); 1757 beamMenu= new QPopupMenu( this );
1758 1758
1759//US since we have no splitter for the embedded system, setup 1759//US since we have no splitter for the embedded system, setup
1760// a layout with two frames. One left and one right. 1760// a layout with two frames. One left and one right.
1761 1761
1762 QBoxLayout *topLayout; 1762 QBoxLayout *topLayout;
1763 1763
1764 // = new QHBoxLayout( this ); 1764 // = new QHBoxLayout( this );
1765// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1765// QBoxLayout *topLayout = (QBoxLayout*)layout();
1766 1766
1767// QWidget *mainBox = new QWidget( this ); 1767// QWidget *mainBox = new QWidget( this );
1768// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1768// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1769 1769
1770#ifdef DESKTOP_VERSION 1770#ifdef DESKTOP_VERSION
1771 topLayout = new QHBoxLayout( this ); 1771 topLayout = new QHBoxLayout( this );
1772 1772
1773 1773
1774 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1774 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1775 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1775 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1776 1776
1777 topLayout->addWidget(mMiniSplitter ); 1777 topLayout->addWidget(mMiniSplitter );
1778 1778
1779 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1779 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1780 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1780 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1781 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1781 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1782 mDetails = new ViewContainer( mMiniSplitter ); 1782 mDetails = new ViewContainer( mMiniSplitter );
1783 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1783 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1784#else 1784#else
1785 if ( QApplication::desktop()->width() > 480 ) { 1785 if ( QApplication::desktop()->width() > 480 ) {
1786 topLayout = new QHBoxLayout( this ); 1786 topLayout = new QHBoxLayout( this );
1787 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1787 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1788 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1788 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1789 } else { 1789 } else {
1790 1790
1791 topLayout = new QHBoxLayout( this ); 1791 topLayout = new QHBoxLayout( this );
1792 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1792 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1793 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1793 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1794 } 1794 }
1795 1795
1796 topLayout->addWidget(mMiniSplitter ); 1796 topLayout->addWidget(mMiniSplitter );
1797 mViewManager = new ViewManager( this, mMiniSplitter ); 1797 mViewManager = new ViewManager( this, mMiniSplitter );
1798 mDetails = new ViewContainer( mMiniSplitter ); 1798 mDetails = new ViewContainer( mMiniSplitter );
1799 1799
1800 1800
1801 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1801 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1802#endif 1802#endif
1803 //eh->hide(); 1803 //eh->hide();
1804 // topLayout->addWidget(mExtensionManager ); 1804 // topLayout->addWidget(mExtensionManager );
1805 1805
1806 1806
1807/*US 1807/*US
1808#ifndef KAB_NOSPLITTER 1808#ifndef KAB_NOSPLITTER
1809 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1809 QHBoxLayout *topLayout = new QHBoxLayout( this );
1810//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1810//US topLayout->setSpacing( KDialogBase::spacingHint() );
1811 topLayout->setSpacing( 10 ); 1811 topLayout->setSpacing( 10 );
1812 1812
1813 mDetailsSplitter = new QSplitter( this ); 1813 mDetailsSplitter = new QSplitter( this );
1814 1814
1815 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1815 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1816 1816
1817 mViewManager = new ViewManager( this, viewSpace ); 1817 mViewManager = new ViewManager( this, viewSpace );
1818 viewSpace->setStretchFactor( mViewManager, 1 ); 1818 viewSpace->setStretchFactor( mViewManager, 1 );
1819 1819
1820 mDetails = new ViewContainer( mDetailsSplitter ); 1820 mDetails = new ViewContainer( mDetailsSplitter );
1821 1821
1822 topLayout->addWidget( mDetailsSplitter ); 1822 topLayout->addWidget( mDetailsSplitter );
1823 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1823 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1824#else //KAB_NOSPLITTER 1824#else //KAB_NOSPLITTER
1825 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1825 QHBoxLayout *topLayout = new QHBoxLayout( this );
1826//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1826//US topLayout->setSpacing( KDialogBase::spacingHint() );
1827 topLayout->setSpacing( 10 ); 1827 topLayout->setSpacing( 10 );
1828 1828
1829// mDetailsSplitter = new QSplitter( this ); 1829// mDetailsSplitter = new QSplitter( this );
1830 1830
1831 QVBox *viewSpace = new QVBox( this ); 1831 QVBox *viewSpace = new QVBox( this );
1832 1832
1833 mViewManager = new ViewManager( this, viewSpace ); 1833 mViewManager = new ViewManager( this, viewSpace );
1834 viewSpace->setStretchFactor( mViewManager, 1 ); 1834 viewSpace->setStretchFactor( mViewManager, 1 );
1835 1835
1836 mDetails = new ViewContainer( this ); 1836 mDetails = new ViewContainer( this );
1837 1837
1838 topLayout->addWidget( viewSpace ); 1838 topLayout->addWidget( viewSpace );
1839// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1839// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1840 topLayout->addWidget( mDetails ); 1840 topLayout->addWidget( mDetails );
1841#endif //KAB_NOSPLITTER 1841#endif //KAB_NOSPLITTER
1842*/ 1842*/
1843 1843
1844 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1844 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1845 syncManager->setBlockSave(false); 1845 syncManager->setBlockSave(false);
1846 1846
1847 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1847 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1848 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1848 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1849 QString sync_file = sentSyncFile(); 1849 QString sync_file = sentSyncFile();
1850 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); 1850 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1());
1851 syncManager->setDefaultFileName( sync_file ); 1851 syncManager->setDefaultFileName( sync_file );
1852 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1852 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1853 1853
1854#endif //KAB_EMBEDDED 1854#endif //KAB_EMBEDDED
1855 initActions(); 1855 initActions();
1856 1856
1857#ifdef KAB_EMBEDDED 1857#ifdef KAB_EMBEDDED
1858 addActionsManually(); 1858 addActionsManually();
1859 //US make sure the export and import menues are initialized before creating the xxPortManager. 1859 //US make sure the export and import menues are initialized before creating the xxPortManager.
1860 mXXPortManager = new XXPortManager( this, this ); 1860 mXXPortManager = new XXPortManager( this, this );
1861 1861
1862 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1862 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1863 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1863 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1864 // mActionQuit->plug ( mMainWindow->toolBar()); 1864 // mActionQuit->plug ( mMainWindow->toolBar());
1865 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1865 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1866 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1866 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1867 // mIncSearchWidget->hide(); 1867 // mIncSearchWidget->hide();
1868 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1868 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1869 SLOT( incrementalSearch( const QString& ) ) ); 1869 SLOT( incrementalSearch( const QString& ) ) );
1870 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); 1870 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) );
1871 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); 1871 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) );
1872 1872
1873 mJumpButtonBar = new JumpButtonBar( this, this ); 1873 mJumpButtonBar = new JumpButtonBar( this, this );
1874 1874
1875 topLayout->addWidget( mJumpButtonBar ); 1875 topLayout->addWidget( mJumpButtonBar );
1876//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1876//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1877 1877
1878// mMainWindow->getIconToolBar()->raise(); 1878// mMainWindow->getIconToolBar()->raise();
1879 1879
1880#endif //KAB_EMBEDDED 1880#endif //KAB_EMBEDDED
1881 1881
1882} 1882}
1883void KABCore::initActions() 1883void KABCore::initActions()
1884{ 1884{
1885//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1885//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1886 1886
1887#ifndef KAB_EMBEDDED 1887#ifndef KAB_EMBEDDED
1888 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1888 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1889 SLOT( clipboardDataChanged() ) ); 1889 SLOT( clipboardDataChanged() ) );
1890#endif //KAB_EMBEDDED 1890#endif //KAB_EMBEDDED
1891 1891
1892 // file menu 1892 // file menu
1893 1893
1894 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1894 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1895 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1895 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1896 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager, 1896 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager,
1897 SLOT( printView() ), actionCollection(), "kaddressbook_print" ); 1897 SLOT( printView() ), actionCollection(), "kaddressbook_print" );
1898 1898
1899 1899
1900 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails, 1900 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails,
1901 SLOT( printView() ), actionCollection(), "kaddressbook_print2" ); 1901 SLOT( printView() ), actionCollection(), "kaddressbook_print2" );
1902 1902
1903 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1903 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1904 SLOT( save() ), actionCollection(), "file_sync" ); 1904 SLOT( save() ), actionCollection(), "file_sync" );
1905 1905
1906 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1906 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1907 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1907 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1908 1908
1909 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1909 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1910 this, SLOT( mailVCard() ), 1910 this, SLOT( mailVCard() ),
1911 actionCollection(), "file_mail_vcard"); 1911 actionCollection(), "file_mail_vcard");
1912 1912
1913 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this, 1913 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this,
1914 SLOT( export2phone() ), actionCollection(), 1914 SLOT( export2phone() ), actionCollection(),
1915 "kaddressbook_ex2phone" ); 1915 "kaddressbook_ex2phone" );
1916 1916
1917 mActionBeamVCard = 0; 1917 mActionBeamVCard = 0;
1918 mActionBeam = 0; 1918 mActionBeam = 0;
1919 1919
1920#ifndef DESKTOP_VERSION 1920#ifndef DESKTOP_VERSION
1921 if ( Ir::supported() ) { 1921 if ( Ir::supported() ) {
1922 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this, 1922 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this,
1923 SLOT( beamVCard() ), actionCollection(), 1923 SLOT( beamVCard() ), actionCollection(),
1924 "kaddressbook_beam_vcard" ); 1924 "kaddressbook_beam_vcard" );
1925 1925
1926 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1926 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1927 SLOT( beamMySelf() ), actionCollection(), 1927 SLOT( beamMySelf() ), actionCollection(),
1928 "kaddressbook_beam_myself" ); 1928 "kaddressbook_beam_myself" );
1929 } 1929 }
1930#endif 1930#endif
1931 1931
1932 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1932 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1933 this, SLOT( editContact2() ), 1933 this, SLOT( editContact2() ),
1934 actionCollection(), "file_properties" ); 1934 actionCollection(), "file_properties" );
1935 1935
1936#ifdef KAB_EMBEDDED 1936#ifdef KAB_EMBEDDED
1937 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1937 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1938 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1938 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1939 mMainWindow, SLOT( exit() ), 1939 mMainWindow, SLOT( exit() ),
1940 actionCollection(), "quit" ); 1940 actionCollection(), "quit" );
1941#endif //KAB_EMBEDDED 1941#endif //KAB_EMBEDDED
1942 1942
1943 // edit menu 1943 // edit menu
1944 if ( mIsPart ) { 1944 if ( mIsPart ) {
1945 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1945 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1946 SLOT( copyContacts() ), actionCollection(), 1946 SLOT( copyContacts() ), actionCollection(),
1947 "kaddressbook_copy" ); 1947 "kaddressbook_copy" );
1948 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1948 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1949 SLOT( cutContacts() ), actionCollection(), 1949 SLOT( cutContacts() ), actionCollection(),
1950 "kaddressbook_cut" ); 1950 "kaddressbook_cut" );
1951 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1951 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1952 SLOT( pasteContacts() ), actionCollection(), 1952 SLOT( pasteContacts() ), actionCollection(),
1953 "kaddressbook_paste" ); 1953 "kaddressbook_paste" );
1954 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1954 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1955 SLOT( selectAllContacts() ), actionCollection(), 1955 SLOT( selectAllContacts() ), actionCollection(),
1956 "kaddressbook_select_all" ); 1956 "kaddressbook_select_all" );
1957 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1957 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1958 SLOT( undo() ), actionCollection(), 1958 SLOT( undo() ), actionCollection(),
1959 "kaddressbook_undo" ); 1959 "kaddressbook_undo" );
1960 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1960 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1961 this, SLOT( redo() ), actionCollection(), 1961 this, SLOT( redo() ), actionCollection(),
1962 "kaddressbook_redo" ); 1962 "kaddressbook_redo" );
1963 } else { 1963 } else {
1964 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1964 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1965 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1965 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1966 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1966 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1967 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1967 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1968 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1968 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1969 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1969 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1970 } 1970 }
1971 1971
1972 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1972 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1973 Key_Delete, this, SLOT( deleteContacts() ), 1973 Key_Delete, this, SLOT( deleteContacts() ),
1974 actionCollection(), "edit_delete" ); 1974 actionCollection(), "edit_delete" );
1975 1975
1976 mActionUndo->setEnabled( false ); 1976 mActionUndo->setEnabled( false );
1977 mActionRedo->setEnabled( false ); 1977 mActionRedo->setEnabled( false );
1978 1978
1979 // settings menu 1979 // settings menu
1980#ifdef KAB_EMBEDDED 1980#ifdef KAB_EMBEDDED
1981//US special menuentry to configure the addressbook resources. On KDE 1981//US special menuentry to configure the addressbook resources. On KDE
1982// you do that through the control center !!! 1982// you do that through the control center !!!
1983 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1983 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1984 SLOT( configureResources() ), actionCollection(), 1984 SLOT( configureResources() ), actionCollection(),
1985 "kaddressbook_configure_resources" ); 1985 "kaddressbook_configure_resources" );
1986#endif //KAB_EMBEDDED 1986#endif //KAB_EMBEDDED
1987 1987
1988 if ( mIsPart ) { 1988 if ( mIsPart ) {
1989 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1989 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1990 SLOT( openConfigDialog() ), actionCollection(), 1990 SLOT( openConfigDialog() ), actionCollection(),
1991 "kaddressbook_configure" ); 1991 "kaddressbook_configure" );
1992 1992
1993 //US not implemented yet 1993 //US not implemented yet
1994 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1994 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1995 // this, SLOT( configureKeyBindings() ), actionCollection(), 1995 // this, SLOT( configureKeyBindings() ), actionCollection(),
1996 // "kaddressbook_configure_shortcuts" ); 1996 // "kaddressbook_configure_shortcuts" );
1997#ifdef KAB_EMBEDDED 1997#ifdef KAB_EMBEDDED
1998 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1998 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1999 mActionConfigureToolbars->setEnabled( false ); 1999 mActionConfigureToolbars->setEnabled( false );
2000#endif //KAB_EMBEDDED 2000#endif //KAB_EMBEDDED
2001 2001
2002 } else { 2002 } else {
2003 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 2003 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
2004 2004
2005 //US not implemented yet 2005 //US not implemented yet
2006 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 2006 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
2007 } 2007 }
2008 2008
2009 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 2009 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
2010 actionCollection(), "options_show_jump_bar" ); 2010 actionCollection(), "options_show_jump_bar" );
2011 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBar( bool ) ) ); 2011 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBar( bool ) ) );
2012 2012
2013 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 2013 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
2014 actionCollection(), "options_show_details" ); 2014 actionCollection(), "options_show_details" );
2015 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 2015 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
2016 2016
2017 2017
2018 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this, 2018 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this,
2019 SLOT( toggleBeamReceive() ), actionCollection(), 2019 SLOT( toggleBeamReceive() ), actionCollection(),
2020 "kaddressbook_beam_rec" ); 2020 "kaddressbook_beam_rec" );
2021 2021
2022 2022
2023 // misc 2023 // misc
2024 // only enable LDAP lookup if we can handle the protocol 2024 // only enable LDAP lookup if we can handle the protocol
2025#ifndef KAB_EMBEDDED 2025#ifndef KAB_EMBEDDED
2026 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 2026 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
2027 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 2027 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
2028 this, SLOT( openLDAPDialog() ), actionCollection(), 2028 this, SLOT( openLDAPDialog() ), actionCollection(),
2029 "ldap_lookup" ); 2029 "ldap_lookup" );
2030 } 2030 }
2031#else //KAB_EMBEDDED 2031#else //KAB_EMBEDDED
2032 //qDebug("KABCore::initActions() LDAP has to be implemented"); 2032 //qDebug("KABCore::initActions() LDAP has to be implemented");
2033#endif //KAB_EMBEDDED 2033#endif //KAB_EMBEDDED
2034 2034
2035 2035
2036 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 2036 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
2037 SLOT( setWhoAmI() ), actionCollection(), 2037 SLOT( setWhoAmI() ), actionCollection(),
2038 "set_personal" ); 2038 "set_personal" );
2039 2039
2040 2040
2041 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 2041 mActionCategories = new KAction( i18n( "Set Categories for Contacts..." ), 0, this,
2042 SLOT( setCategories() ), actionCollection(), 2042 SLOT( setCategories() ), actionCollection(),
2043 "edit_set_categories" ); 2043 "edit_set_categories" );
2044 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this, 2044 mActionEditCategories = new KAction( i18n( "Edit Category List..." ), 0, this,
2045 SLOT( editCategories() ), actionCollection(), 2045 SLOT( editCategories() ), actionCollection(),
2046 "edit__categories" ); 2046 "edit__categories" );
2047 2047
2048 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 2048 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
2049 SLOT( removeVoice() ), actionCollection(), 2049 SLOT( removeVoice() ), actionCollection(),
2050 "remove_voice" ); 2050 "remove_voice" );
2051 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this, 2051 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this,
2052 SLOT( setFormattedName() ), actionCollection(), 2052 SLOT( setFormattedName() ), actionCollection(),
2053 "set_formatted" ); 2053 "set_formatted" );
2054 2054
2055 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 2055 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
2056 SLOT( manageCategories() ), actionCollection(), 2056 SLOT( manageCategories() ), actionCollection(),
2057 "remove_voice" ); 2057 "remove_voice" );
2058 2058
2059 2059
2060 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 2060 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
2061 SLOT( importFromOL() ), actionCollection(), 2061 SLOT( importFromOL() ), actionCollection(),
2062 "import_OL" ); 2062 "import_OL" );
2063#ifdef KAB_EMBEDDED 2063#ifdef KAB_EMBEDDED
2064 mActionLicence = new KAction( i18n( "Licence" ), 0, 2064 mActionLicence = new KAction( i18n( "Licence" ), 0,
2065 this, SLOT( showLicence() ), actionCollection(), 2065 this, SLOT( showLicence() ), actionCollection(),
2066 "licence_about_data" ); 2066 "licence_about_data" );
2067 mActionFaq = new KAction( i18n( "Faq" ), 0, 2067 mActionFaq = new KAction( i18n( "Faq" ), 0,
2068 this, SLOT( faq() ), actionCollection(), 2068 this, SLOT( faq() ), actionCollection(),
2069 "faq_about_data" ); 2069 "faq_about_data" );
2070 mActionWN = new KAction( i18n( "What's New?" ), 0, 2070 mActionWN = new KAction( i18n( "What's New?" ), 0,
2071 this, SLOT( whatsnew() ), actionCollection(), 2071 this, SLOT( whatsnew() ), actionCollection(),
2072 "wn" ); 2072 "wn" );
2073 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 2073 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
2074 this, SLOT( synchowto() ), actionCollection(), 2074 this, SLOT( synchowto() ), actionCollection(),
2075 "sync" ); 2075 "sync" );
2076 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 2076 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
2077 this, SLOT( kdesynchowto() ), actionCollection(), 2077 this, SLOT( kdesynchowto() ), actionCollection(),
2078 "kdesync" ); 2078 "kdesync" );
2079 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 2079 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
2080 this, SLOT( multisynchowto() ), actionCollection(), 2080 this, SLOT( multisynchowto() ), actionCollection(),
2081 "multisync" ); 2081 "multisync" );
2082 2082
2083 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 2083 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
2084 this, SLOT( createAboutData() ), actionCollection(), 2084 this, SLOT( createAboutData() ), actionCollection(),
2085 "kaddressbook_about_data" ); 2085 "kaddressbook_about_data" );
2086#endif //KAB_EMBEDDED 2086#endif //KAB_EMBEDDED
2087 2087
2088 clipboardDataChanged(); 2088 clipboardDataChanged();
2089 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2089 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2090 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2090 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2091} 2091}
2092 2092
2093//US we need this function, to plug all actions into the correct menues. 2093//US we need this function, to plug all actions into the correct menues.
2094// KDE uses a XML format to plug the actions, but we work her without this overhead. 2094// KDE uses a XML format to plug the actions, but we work her without this overhead.
2095void KABCore::addActionsManually() 2095void KABCore::addActionsManually()
2096{ 2096{
2097//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 2097//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
2098 2098
2099#ifdef KAB_EMBEDDED 2099#ifdef KAB_EMBEDDED
2100 QPopupMenu *fileMenu = new QPopupMenu( this ); 2100 QPopupMenu *fileMenu = new QPopupMenu( this );
2101 QPopupMenu *editMenu = new QPopupMenu( this ); 2101 QPopupMenu *editMenu = new QPopupMenu( this );
2102 QPopupMenu *helpMenu = new QPopupMenu( this ); 2102 QPopupMenu *helpMenu = new QPopupMenu( this );
2103 2103
2104 KToolBar* tb = mMainWindow->toolBar(); 2104 KToolBar* tb = mMainWindow->toolBar();
2105 2105
2106#ifndef DESKTOP_VERSION 2106#ifndef DESKTOP_VERSION
2107 if ( KABPrefs::instance()->mFullMenuBarVisible ) { 2107 if ( KABPrefs::instance()->mFullMenuBarVisible ) {
2108#endif 2108#endif
2109 QMenuBar* mb = mMainWindow->menuBar(); 2109 QMenuBar* mb = mMainWindow->menuBar();
2110 2110
2111 //US setup menubar. 2111 //US setup menubar.
2112 //Disable the following block if you do not want to have a menubar. 2112 //Disable the following block if you do not want to have a menubar.
2113 mb->insertItem( i18n("&File"), fileMenu ); 2113 mb->insertItem( i18n("&File"), fileMenu );
2114 mb->insertItem( i18n("&Edit"), editMenu ); 2114 mb->insertItem( i18n("&Edit"), editMenu );
2115 mb->insertItem( i18n("&View"), viewMenu ); 2115 mb->insertItem( i18n("&View"), viewMenu );
2116 mb->insertItem( i18n("&Settings"), settingsMenu ); 2116 mb->insertItem( i18n("&Settings"), settingsMenu );
2117 mb->insertItem( i18n("Synchronize"), syncMenu ); 2117 mb->insertItem( i18n("Synchronize"), syncMenu );
2118 //mb->insertItem( i18n("&Change"), changeMenu ); 2118 //mb->insertItem( i18n("&Change"), changeMenu );
2119 mb->insertItem( i18n("&Help"), helpMenu ); 2119 mb->insertItem( i18n("&Help"), helpMenu );
2120 mIncSearchWidget = new IncSearchWidget( tb ); 2120 mIncSearchWidget = new IncSearchWidget( tb );
2121 // tb->insertWidget(-1, 0, mIncSearchWidget); 2121 // tb->insertWidget(-1, 0, mIncSearchWidget);
2122#ifndef DESKTOP_VERSION 2122#ifndef DESKTOP_VERSION
2123 } else { 2123 } else {
2124 //US setup toolbar 2124 //US setup toolbar
2125 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 2125 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
2126 QPopupMenu *popupBarTB = new QPopupMenu( this ); 2126 QPopupMenu *popupBarTB = new QPopupMenu( this );
2127 menuBarTB->insertItem( "ME", popupBarTB); 2127 menuBarTB->insertItem( "ME", popupBarTB);
2128 tb->insertWidget(-1, 0, menuBarTB); 2128 tb->insertWidget(-1, 0, menuBarTB);
2129 mIncSearchWidget = new IncSearchWidget( tb ); 2129 mIncSearchWidget = new IncSearchWidget( tb );
2130 2130
2131 tb->enableMoving(false); 2131 tb->enableMoving(false);
2132 popupBarTB->insertItem( i18n("&File"), fileMenu ); 2132 popupBarTB->insertItem( i18n("&File"), fileMenu );
2133 popupBarTB->insertItem( i18n("&Edit"), editMenu ); 2133 popupBarTB->insertItem( i18n("&Edit"), editMenu );
2134 popupBarTB->insertItem( i18n("&View"), viewMenu ); 2134 popupBarTB->insertItem( i18n("&View"), viewMenu );
2135 popupBarTB->insertItem( i18n("&Settings"), settingsMenu ); 2135 popupBarTB->insertItem( i18n("&Settings"), settingsMenu );
2136 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 2136 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
2137 mViewManager->getFilterAction()->plug ( popupBarTB); 2137 mViewManager->getFilterAction()->plug ( popupBarTB);
2138 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu ); 2138 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu );
2139 popupBarTB->insertItem( i18n("&Help"), helpMenu ); 2139 popupBarTB->insertItem( i18n("&Help"), helpMenu );
2140 if (QApplication::desktop()->width() > 320 ) { 2140 if (QApplication::desktop()->width() > 320 ) {
2141 // mViewManager->getFilterAction()->plug ( tb); 2141 // mViewManager->getFilterAction()->plug ( tb);
2142 } 2142 }
2143 } 2143 }
2144#endif 2144#endif
2145 // mActionQuit->plug ( mMainWindow->toolBar()); 2145 // mActionQuit->plug ( mMainWindow->toolBar());
2146 2146
2147 2147
2148 2148
2149 //US Now connect the actions with the menue entries. 2149 //US Now connect the actions with the menue entries.
2150#ifdef DESKTOP_VERSION 2150#ifdef DESKTOP_VERSION
2151 mActionPrint->plug( fileMenu ); 2151 mActionPrint->plug( fileMenu );
2152 mActionPrintDetails->plug( fileMenu ); 2152 mActionPrintDetails->plug( fileMenu );
2153 fileMenu->insertSeparator(); 2153 fileMenu->insertSeparator();
2154#endif 2154#endif
2155 mActionMail->plug( fileMenu ); 2155 mActionMail->plug( fileMenu );
2156 fileMenu->insertSeparator(); 2156 fileMenu->insertSeparator();
2157 2157
2158 mActionNewContact->plug( fileMenu ); 2158 mActionNewContact->plug( fileMenu );
2159 mActionNewContact->plug( tb ); 2159 mActionNewContact->plug( tb );
2160 2160
2161 mActionEditAddressee->plug( fileMenu ); 2161 mActionEditAddressee->plug( fileMenu );
2162 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 2162 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
2163 // (!KABPrefs::instance()->mMultipleViewsAtOnce )) 2163 // (!KABPrefs::instance()->mMultipleViewsAtOnce ))
2164 mActionEditAddressee->plug( tb ); 2164 mActionEditAddressee->plug( tb );
2165 2165
2166 fileMenu->insertSeparator(); 2166 fileMenu->insertSeparator();
2167 mActionSave->plug( fileMenu ); 2167 mActionSave->plug( fileMenu );
2168 fileMenu->insertItem( "&Import", ImportMenu ); 2168 fileMenu->insertItem( "&Import", ImportMenu );
2169 fileMenu->insertItem( "&Export", ExportMenu ); 2169 fileMenu->insertItem( "&Export", ExportMenu );
2170 fileMenu->insertItem( i18n("&Change"), changeMenu ); 2170 fileMenu->insertItem( i18n("&Change"), changeMenu );
2171#ifndef DESKTOP_VERSION 2171#ifndef DESKTOP_VERSION
2172 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu ); 2172 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu );
2173#endif 2173#endif
2174#if 0 2174#if 0
2175 // PENDING fix MailVCard 2175 // PENDING fix MailVCard
2176 fileMenu->insertSeparator(); 2176 fileMenu->insertSeparator();
2177 mActionMailVCard->plug( fileMenu ); 2177 mActionMailVCard->plug( fileMenu );
2178#endif 2178#endif
2179#ifndef DESKTOP_VERSION 2179#ifndef DESKTOP_VERSION
2180 if ( Ir::supported() ) mActionBR->plug( beamMenu ); 2180 if ( Ir::supported() ) mActionBR->plug( beamMenu );
2181 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu ); 2181 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu );
2182 if ( Ir::supported() ) mActionBeam->plug( beamMenu ); 2182 if ( Ir::supported() ) mActionBeam->plug( beamMenu );
2183#endif 2183#endif
2184 fileMenu->insertSeparator(); 2184 fileMenu->insertSeparator();
2185 mActionQuit->plug( fileMenu ); 2185 mActionQuit->plug( fileMenu );
2186#ifdef _OL_IMPORT_ 2186#ifdef _OL_IMPORT_
2187 mActionImportOL->plug( ImportMenu ); 2187 mActionImportOL->plug( ImportMenu );
2188#endif 2188#endif
2189 // edit menu 2189 // edit menu
2190 mActionUndo->plug( editMenu ); 2190 mActionUndo->plug( editMenu );
2191 mActionRedo->plug( editMenu ); 2191 mActionRedo->plug( editMenu );
2192 editMenu->insertSeparator(); 2192 editMenu->insertSeparator();
2193 mActionCut->plug( editMenu ); 2193 mActionCut->plug( editMenu );
2194 mActionCopy->plug( editMenu ); 2194 mActionCopy->plug( editMenu );
2195 mActionPaste->plug( editMenu ); 2195 mActionPaste->plug( editMenu );
2196 mActionDelete->plug( editMenu ); 2196 mActionDelete->plug( editMenu );
2197 editMenu->insertSeparator(); 2197 editMenu->insertSeparator();
2198 mActionSelectAll->plug( editMenu ); 2198 mActionSelectAll->plug( editMenu );
2199 2199
2200 mActionSetFormattedName->plug( changeMenu ); 2200 mActionSetFormattedName->plug( changeMenu );
2201 mActionRemoveVoice->plug( changeMenu ); 2201 mActionRemoveVoice->plug( changeMenu );
2202 // settings menu 2202 // settings menu
2203//US special menuentry to configure the addressbook resources. On KDE 2203//US special menuentry to configure the addressbook resources. On KDE
2204// you do that through the control center !!! 2204// you do that through the control center !!!
2205 mActionConfigResources->plug( settingsMenu ); 2205 mActionConfigResources->plug( settingsMenu );
2206 settingsMenu->insertSeparator(); 2206 settingsMenu->insertSeparator();
2207 2207
2208 mActionConfigKAddressbook->plug( settingsMenu ); 2208 mActionConfigKAddressbook->plug( settingsMenu );
2209 2209
2210 if ( mIsPart ) { 2210 if ( mIsPart ) {
2211 //US not implemented yet 2211 //US not implemented yet
2212 //mActionConfigShortcuts->plug( settingsMenu ); 2212 //mActionConfigShortcuts->plug( settingsMenu );
2213 //mActionConfigureToolbars->plug( settingsMenu ); 2213 //mActionConfigureToolbars->plug( settingsMenu );
2214 2214
2215 } else { 2215 } else {
2216 //US not implemented yet 2216 //US not implemented yet
2217 //mActionKeyBindings->plug( settingsMenu ); 2217 //mActionKeyBindings->plug( settingsMenu );
2218 } 2218 }
2219 2219
2220 settingsMenu->insertSeparator(); 2220 settingsMenu->insertSeparator();
2221 2221
2222 mActionJumpBar->plug( settingsMenu ); 2222 mActionJumpBar->plug( settingsMenu );
2223 mActionDetails->plug( settingsMenu ); 2223 mActionDetails->plug( settingsMenu );
2224 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2224 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2225 mActionDetails->plug( tb ); 2225 mActionDetails->plug( tb );
2226 settingsMenu->insertSeparator(); 2226 settingsMenu->insertSeparator();
2227#ifndef DESKTOP_VERSION 2227#ifndef DESKTOP_VERSION
2228 if ( Ir::supported() ) mActionBR->plug(settingsMenu ); 2228 if ( Ir::supported() ) mActionBR->plug(settingsMenu );
2229 settingsMenu->insertSeparator(); 2229 settingsMenu->insertSeparator();
2230#endif 2230#endif
2231 2231
2232 mActionWhoAmI->plug( settingsMenu ); 2232 mActionWhoAmI->plug( settingsMenu );
2233 mActionEditCategories->plug( settingsMenu ); 2233 mActionEditCategories->plug( settingsMenu );
2234 mActionEditCategories->plug( changeMenu ); 2234 mActionEditCategories->plug( changeMenu );
2235 mActionCategories->plug( changeMenu ); 2235 mActionCategories->plug( changeMenu );
2236 mActionManageCategories->plug( changeMenu ); 2236 mActionManageCategories->plug( changeMenu );
2237 2237
2238 mActionCategories->plug( settingsMenu ); 2238 mActionCategories->plug( settingsMenu );
2239 mActionManageCategories->plug( settingsMenu ); 2239 mActionManageCategories->plug( settingsMenu );
2240 2240
2241 2241
2242 mActionWN->plug( helpMenu ); 2242 mActionWN->plug( helpMenu );
2243 mActionSyncHowto->plug( helpMenu ); 2243 mActionSyncHowto->plug( helpMenu );
2244 mActionKdeSyncHowto->plug( helpMenu ); 2244 mActionKdeSyncHowto->plug( helpMenu );
2245 mActionMultiSyncHowto->plug( helpMenu ); 2245 mActionMultiSyncHowto->plug( helpMenu );
2246 mActionFaq->plug( helpMenu ); 2246 mActionFaq->plug( helpMenu );
2247 mActionLicence->plug( helpMenu ); 2247 mActionLicence->plug( helpMenu );
2248 mActionAboutKAddressbook->plug( helpMenu ); 2248 mActionAboutKAddressbook->plug( helpMenu );
2249 2249
2250 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2250 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2251 2251
2252 mActionSave->plug( tb ); 2252 mActionSave->plug( tb );
2253 mViewManager->getFilterAction()->plug ( tb); 2253 mViewManager->getFilterAction()->plug ( tb);
2254 //LR hide filteraction on started in 480x640 2254 //LR hide filteraction on started in 480x640
2255 if (QApplication::desktop()->width() == 480 ) { 2255 if (QApplication::desktop()->width() == 480 ) {
2256 mViewManager->getFilterAction()->setComboWidth( 0 ); 2256 mViewManager->getFilterAction()->setComboWidth( 0 );
2257 } 2257 }
2258 mActionUndo->plug( tb ); 2258 mActionUndo->plug( tb );
2259 mActionDelete->plug( tb ); 2259 mActionDelete->plug( tb );
2260 mActionRedo->plug( tb ); 2260 mActionRedo->plug( tb );
2261 } else { 2261 } else {
2262 mActionSave->plug( tb ); 2262 mActionSave->plug( tb );
2263 tb->enableMoving(false); 2263 tb->enableMoving(false);
2264 } 2264 }
2265 //mActionQuit->plug ( tb ); 2265 //mActionQuit->plug ( tb );
2266 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2266 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2267 2267
2268 //US link the searchwidget first to this. 2268 //US link the searchwidget first to this.
2269 // The real linkage to the toolbar happens later. 2269 // The real linkage to the toolbar happens later.
2270//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2270//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2271//US tb->insertItem( mIncSearchWidget ); 2271//US tb->insertItem( mIncSearchWidget );
2272/*US 2272/*US
2273 mIncSearchWidget = new IncSearchWidget( tb ); 2273 mIncSearchWidget = new IncSearchWidget( tb );
2274 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2274 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2275 SLOT( incrementalSearch( const QString& ) ) ); 2275 SLOT( incrementalSearch( const QString& ) ) );
2276 2276
2277 mJumpButtonBar = new JumpButtonBar( this, this ); 2277 mJumpButtonBar = new JumpButtonBar( this, this );
2278 2278
2279//US topLayout->addWidget( mJumpButtonBar ); 2279//US topLayout->addWidget( mJumpButtonBar );
2280 this->layout()->add( mJumpButtonBar ); 2280 this->layout()->add( mJumpButtonBar );
2281*/ 2281*/
2282 2282
2283#endif //KAB_EMBEDDED 2283#endif //KAB_EMBEDDED
2284 2284
2285 mActionExport2phone->plug( ExportMenu ); 2285 mActionExport2phone->plug( ExportMenu );
2286 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2286 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2287 syncManager->fillSyncMenu(); 2287 syncManager->fillSyncMenu();
2288 2288
2289} 2289}
2290void KABCore::showLicence() 2290void KABCore::showLicence()
2291{ 2291{
2292 KApplication::showLicence(); 2292 KApplication::showLicence();
2293} 2293}
2294 2294
2295void KABCore::manageCategories( ) 2295void KABCore::manageCategories( )
2296{ 2296{
2297 KABCatPrefs* cp = new KABCatPrefs(); 2297 KABCatPrefs* cp = new KABCatPrefs();
2298 cp->show(); 2298 cp->show();
2299 int w =cp->sizeHint().width() ; 2299 int w =cp->sizeHint().width() ;
2300 int h = cp->sizeHint().height() ; 2300 int h = cp->sizeHint().height() ;
2301 int dw = QApplication::desktop()->width(); 2301 int dw = QApplication::desktop()->width();
2302 int dh = QApplication::desktop()->height(); 2302 int dh = QApplication::desktop()->height();
2303 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2303 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2304 if ( !cp->exec() ) { 2304 if ( !cp->exec() ) {
2305 delete cp; 2305 delete cp;
2306 return; 2306 return;
2307 } 2307 }
2308 int count = 0; 2308 int count = 0;
2309 int cc = 0; 2309 int cc = 0;
2310 message( i18n("Please wait, processing categories...")); 2310 message( i18n("Please wait, processing categories..."));
2311 if ( cp->addCat() ) { 2311 if ( cp->addCat() ) {
2312 KABC::AddressBook::Iterator it; 2312 KABC::AddressBook::Iterator it;
2313 QStringList catList = KABPrefs::instance()->mCustomCategories; 2313 QStringList catList = KABPrefs::instance()->mCustomCategories;
2314 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2314 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2315 ++cc; 2315 ++cc;
2316 if ( cc %10 == 0) 2316 if ( cc %10 == 0)
2317 message(i18n("Processing contact #%1").arg(cc)); 2317 message(i18n("Processing contact #%1").arg(cc));
2318 QStringList catIncList = (*it).categories(); 2318 QStringList catIncList = (*it).categories();
2319 int i; 2319 int i;
2320 for( i = 0; i< catIncList.count(); ++i ) { 2320 for( i = 0; i< catIncList.count(); ++i ) {
2321 if ( !catList.contains (catIncList[i])) { 2321 if ( !catList.contains (catIncList[i])) {
2322 catList.append( catIncList[i] ); 2322 catList.append( catIncList[i] );
2323 //qDebug("add cat %s ", catIncList[i].latin1()); 2323 //qDebug("add cat %s ", catIncList[i].latin1());
2324 ++count; 2324 ++count;
2325 } 2325 }
2326 } 2326 }
2327 } 2327 }
2328 catList.sort(); 2328 catList.sort();
2329 KABPrefs::instance()->mCustomCategories = catList; 2329 KABPrefs::instance()->mCustomCategories = catList;
2330 KABPrefs::instance()->writeConfig(); 2330 KABPrefs::instance()->writeConfig();
2331 message(QString::number( count )+ i18n(" categories added to list! ")); 2331 message(QString::number( count )+ i18n(" categories added to list! "));
2332 } else { 2332 } else {
2333 QStringList catList = KABPrefs::instance()->mCustomCategories; 2333 QStringList catList = KABPrefs::instance()->mCustomCategories;
2334 QStringList catIncList; 2334 QStringList catIncList;
2335 QStringList newCatList; 2335 QStringList newCatList;
2336 KABC::AddressBook::Iterator it; 2336 KABC::AddressBook::Iterator it;
2337 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2337 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2338 ++cc; 2338 ++cc;
2339 if ( cc %10 == 0) 2339 if ( cc %10 == 0)
2340 message(i18n("Processing contact #%1").arg(cc)); 2340 message(i18n("Processing contact #%1").arg(cc));
2341 QStringList catIncList = (*it).categories(); 2341 QStringList catIncList = (*it).categories();
2342 int i; 2342 int i;
2343 if ( catIncList.count() ) { 2343 if ( catIncList.count() ) {
2344 newCatList.clear(); 2344 newCatList.clear();
2345 for( i = 0; i< catIncList.count(); ++i ) { 2345 for( i = 0; i< catIncList.count(); ++i ) {
2346 if ( catList.contains (catIncList[i])) { 2346 if ( catList.contains (catIncList[i])) {
2347 newCatList.append( catIncList[i] ); 2347 newCatList.append( catIncList[i] );
2348 } 2348 }
2349 } 2349 }
2350 newCatList.sort(); 2350 newCatList.sort();
2351 (*it).setCategories( newCatList ); 2351 (*it).setCategories( newCatList );
2352 mAddressBook->insertAddressee( (*it) ); 2352 mAddressBook->insertAddressee( (*it) );
2353 } 2353 }
2354 } 2354 }
2355 setModified( true ); 2355 setModified( true );
2356 mViewManager->refreshView(); 2356 mViewManager->refreshView();
2357 message( i18n("Removing categories done!")); 2357 message( i18n("Removing categories done!"));
2358 } 2358 }
2359 delete cp; 2359 delete cp;
2360} 2360}
2361void KABCore::removeVoice() 2361void KABCore::removeVoice()
2362{ 2362{
2363 if ( KMessageBox::questionYesNo( this, i18n("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?") ) == KMessageBox::No ) 2363 if ( KMessageBox::questionYesNo( this, i18n("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?") ) == KMessageBox::No )
2364 return; 2364 return;
2365 XXPortSelectDialog dlg( this, false, this ); 2365 XXPortSelectDialog dlg( this, false, this );
2366 if ( !dlg.exec() ) 2366 if ( !dlg.exec() )
2367 return; 2367 return;
2368 mAddressBook->setUntagged(); 2368 mAddressBook->setUntagged();
2369 dlg.tagSelected(); 2369 dlg.tagSelected();
2370 message(i18n("Removing voice..."), false ); 2370 message(i18n("Removing voice..."), false );
2371 KABC::AddressBook::Iterator it; 2371 KABC::AddressBook::Iterator it;
2372 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2372 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2373 if ( (*it).tagged() ) { 2373 if ( (*it).tagged() ) {
2374 (*it).removeVoice(); 2374 (*it).removeVoice();
2375 } 2375 }
2376 } 2376 }
2377 message(i18n("Refreshing view...") ); 2377 message(i18n("Refreshing view...") );
2378 qApp->processEvents(); 2378 qApp->processEvents();
2379 mViewManager->refreshView( "" ); 2379 mViewManager->refreshView( "" );
2380 Addressee add; 2380 Addressee add;
2381 mDetails->setAddressee( add ); 2381 mDetails->setAddressee( add );
2382 message(i18n("Remove voice completed!") ); 2382 message(i18n("Remove voice completed!") );
2383 2383
2384 2384
2385 2385
2386} 2386}
2387 2387
2388void KABCore::setFormattedName() 2388void KABCore::setFormattedName()
2389{ 2389{
2390 KABFormatPrefs setpref; 2390 KABFormatPrefs setpref;
2391 if ( !setpref.exec() ) { 2391 if ( !setpref.exec() ) {
2392 return; 2392 return;
2393 } 2393 }
2394 XXPortSelectDialog dlg( this, false, this ); 2394 XXPortSelectDialog dlg( this, false, this );
2395 if ( !dlg.exec() ) 2395 if ( !dlg.exec() )
2396 return; 2396 return;
2397 mAddressBook->setUntagged(); 2397 mAddressBook->setUntagged();
2398 dlg.tagSelected(); 2398 dlg.tagSelected();
2399 int count = 0; 2399 int count = 0;
2400 KABC::AddressBook::Iterator it; 2400 KABC::AddressBook::Iterator it;
2401 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2401 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2402 if ( (*it).tagged() ) { 2402 if ( (*it).tagged() ) {
2403 ++count; 2403 ++count;
2404 if ( count %10 == 0 ) 2404 if ( count %10 == 0 )
2405 message(i18n("Changing contact #%1").arg( count ) ); 2405 message(i18n("Changing contact #%1").arg( count ) );
2406 qApp->processEvents(); 2406 qApp->processEvents();
2407 QString fName; 2407 QString fName;
2408 if ( setpref.simple->isChecked() ) 2408 if ( setpref.simple->isChecked() )
2409 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName ); 2409 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName );
2410 else if ( setpref.full->isChecked() ) 2410 else if ( setpref.full->isChecked() )
2411 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName ); 2411 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName );
2412 else if ( setpref.reverse->isChecked() ) 2412 else if ( setpref.reverse->isChecked() )
2413 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName ); 2413 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName );
2414 else 2414 else
2415 fName = (*it).organization(); 2415 fName = (*it).organization();
2416 if ( setpref.setCompany->isChecked() ) 2416 if ( setpref.setCompany->isChecked() )
2417 if ( fName.isEmpty() || fName =="," ) 2417 if ( fName.isEmpty() || fName =="," )
2418 fName = (*it).organization(); 2418 fName = (*it).organization();
2419 (*it).setFormattedName( fName ); 2419 (*it).setFormattedName( fName );
2420 } 2420 }
2421 } 2421 }
2422 message(i18n("Refreshing view...") ); 2422 message(i18n("Refreshing view...") );
2423 qApp->processEvents(); 2423 qApp->processEvents();
2424 mViewManager->refreshView( "" ); 2424 mViewManager->refreshView( "" );
2425 Addressee add; 2425 Addressee add;
2426 mDetails->setAddressee( add ); 2426 mDetails->setAddressee( add );
2427 message(i18n("Setting formatted name completed!") ); 2427 message(i18n("Setting formatted name completed!") );
2428} 2428}
2429 2429
2430void KABCore::clipboardDataChanged() 2430void KABCore::clipboardDataChanged()
2431{ 2431{
2432 2432
2433 if ( mReadWrite ) 2433 if ( mReadWrite )
2434 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 2434 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
2435 2435
2436} 2436}
2437 2437
2438void KABCore::updateActionMenu() 2438void KABCore::updateActionMenu()
2439{ 2439{
2440 UndoStack *undo = UndoStack::instance(); 2440 UndoStack *undo = UndoStack::instance();
2441 RedoStack *redo = RedoStack::instance(); 2441 RedoStack *redo = RedoStack::instance();
2442 2442
2443 if ( undo->isEmpty() ) 2443 if ( undo->isEmpty() )
2444 mActionUndo->setText( i18n( "Undo" ) ); 2444 mActionUndo->setText( i18n( "Undo" ) );
2445 else 2445 else
2446 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 2446 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
2447 2447
2448 mActionUndo->setEnabled( !undo->isEmpty() ); 2448 mActionUndo->setEnabled( !undo->isEmpty() );
2449 2449
2450 if ( !redo->top() ) 2450 if ( !redo->top() )
2451 mActionRedo->setText( i18n( "Redo" ) ); 2451 mActionRedo->setText( i18n( "Redo" ) );
2452 else 2452 else
2453 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2453 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
2454 2454
2455 mActionRedo->setEnabled( !redo->isEmpty() ); 2455 mActionRedo->setEnabled( !redo->isEmpty() );
2456} 2456}
2457 2457
2458void KABCore::configureKeyBindings() 2458void KABCore::configureKeyBindings()
2459{ 2459{
2460#ifndef KAB_EMBEDDED 2460#ifndef KAB_EMBEDDED
2461 KKeyDialog::configure( actionCollection(), true ); 2461 KKeyDialog::configure( actionCollection(), true );
2462#else //KAB_EMBEDDED 2462#else //KAB_EMBEDDED
2463 qDebug("KABCore::configureKeyBindings() not implemented"); 2463 qDebug("KABCore::configureKeyBindings() not implemented");
2464#endif //KAB_EMBEDDED 2464#endif //KAB_EMBEDDED
2465} 2465}
2466 2466
2467#ifdef KAB_EMBEDDED 2467#ifdef KAB_EMBEDDED
2468void KABCore::configureResources() 2468void KABCore::configureResources()
2469{ 2469{
2470 KRES::KCMKResources dlg( this, "" , 0 ); 2470 KRES::KCMKResources dlg( this, "" , 0 );
2471 2471
2472 if ( !dlg.exec() ) 2472 if ( !dlg.exec() )
2473 return; 2473 return;
2474 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2474 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2475} 2475}
2476#endif //KAB_EMBEDDED 2476#endif //KAB_EMBEDDED
2477 2477
2478 2478
2479/* this method will be called through the QCop interface from Ko/Pi to select addresses 2479/* this method will be called through the QCop interface from Ko/Pi to select addresses
2480 * for the attendees list of an event. 2480 * for the attendees list of an event.
2481 */ 2481 */
2482void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2482void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2483{ 2483{
2484 QStringList nameList; 2484 QStringList nameList;
2485 QStringList emailList; 2485 QStringList emailList;
2486 QStringList uidList; 2486 QStringList uidList;
2487 2487
2488 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2488 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2489 uint i=0; 2489 uint i=0;
2490 for (i=0; i < list.count(); i++) 2490 for (i=0; i < list.count(); i++)
2491 { 2491 {
2492 nameList.append(list[i].realName()); 2492 nameList.append(list[i].realName());
2493 emailList.append(list[i].preferredEmail()); 2493 emailList.append(list[i].preferredEmail());
2494 uidList.append(list[i].uid()); 2494 uidList.append(list[i].uid());
2495 } 2495 }
2496 2496
2497 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2497 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2498 2498
2499} 2499}
2500 2500
2501/* this method will be called through the QCop interface from Ko/Pi to select birthdays 2501/* this method will be called through the QCop interface from Ko/Pi to select birthdays
2502 * to put them into the calendar. 2502 * to put them into the calendar.
2503 */ 2503 */
2504void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid) 2504void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid)
2505{ 2505{
2506 // qDebug("KABCore::requestForBirthdayList"); 2506 // qDebug("KABCore::requestForBirthdayList");
2507 QStringList birthdayList; 2507 QStringList birthdayList;
2508 QStringList anniversaryList; 2508 QStringList anniversaryList;
2509 QStringList realNameList; 2509 QStringList realNameList;
2510 QStringList preferredEmailList; 2510 QStringList preferredEmailList;
2511 QStringList assembledNameList; 2511 QStringList assembledNameList;
2512 QStringList uidList; 2512 QStringList uidList;
2513 2513
2514 KABC::AddressBook::Iterator it; 2514 KABC::AddressBook::Iterator it;
2515 2515
2516 int count = 0; 2516 int count = 0;
2517 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2517 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2518 ++count; 2518 ++count;
2519 } 2519 }
2520 QProgressBar bar(count,0 ); 2520 QProgressBar bar(count,0 );
2521 int w = 300; 2521 int w = 300;
2522 if ( QApplication::desktop()->width() < 320 ) 2522 if ( QApplication::desktop()->width() < 320 )
2523 w = 220; 2523 w = 220;
2524 int h = bar.sizeHint().height() ; 2524 int h = bar.sizeHint().height() ;
2525 int dw = QApplication::desktop()->width(); 2525 int dw = QApplication::desktop()->width();
2526 int dh = QApplication::desktop()->height(); 2526 int dh = QApplication::desktop()->height();
2527 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2527 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2528 bar.show(); 2528 bar.show();
2529 bar.setCaption (i18n("Collecting birthdays - close to abort!") ); 2529 bar.setCaption (i18n("Collecting birthdays - close to abort!") );
2530 qApp->processEvents(); 2530 qApp->processEvents();
2531 2531
2532 QDate bday; 2532 QDate bday;
2533 QString anni; 2533 QString anni;
2534 QString formattedbday; 2534 QString formattedbday;
2535 2535
2536 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) 2536 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it )
2537 { 2537 {
2538 if ( ! bar.isVisible() ) 2538 if ( ! bar.isVisible() )
2539 return; 2539 return;
2540 bar.setProgress( count++ ); 2540 bar.setProgress( count++ );
2541 qApp->processEvents(); 2541 qApp->processEvents();
2542 bday = (*it).birthday().date(); 2542 bday = (*it).birthday().date();
2543 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" ); 2543 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" );
2544 2544
2545 if ( bday.isValid() || !anni.isEmpty()) 2545 if ( bday.isValid() || !anni.isEmpty())
2546 { 2546 {
2547 if (bday.isValid()) 2547 if (bday.isValid())
2548 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate); 2548 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate);
2549 else 2549 else
2550 formattedbday = "NOTVALID"; 2550 formattedbday = "NOTVALID";
2551 if (anni.isEmpty()) 2551 if (anni.isEmpty())
2552 anni = "INVALID"; 2552 anni = "INVALID";
2553 2553
2554 birthdayList.append(formattedbday); 2554 birthdayList.append(formattedbday);
2555 anniversaryList.append(anni); //should be ISODate 2555 anniversaryList.append(anni); //should be ISODate
2556 realNameList.append((*it).realName()); 2556 realNameList.append((*it).realName());
2557 preferredEmailList.append((*it).preferredEmail()); 2557 preferredEmailList.append((*it).preferredEmail());
2558 assembledNameList.append((*it).assembledName()); 2558 assembledNameList.append((*it).assembledName());
2559 uidList.append((*it).uid()); 2559 uidList.append((*it).uid());
2560 2560
2561 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() ); 2561 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() );
2562 } 2562 }
2563 } 2563 }
2564 2564
2565 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList); 2565 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList);
2566 2566
2567} 2567}
2568 2568
2569/* this method will be called through the QCop interface from other apps to show details of a contact. 2569/* this method will be called through the QCop interface from other apps to show details of a contact.
2570 */ 2570 */
2571void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2571void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2572{ 2572{
2573 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2573 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2574 2574
2575 QString foundUid = QString::null; 2575 QString foundUid = QString::null;
2576 if ( ! uid.isEmpty() ) { 2576 if ( ! uid.isEmpty() ) {
2577 Addressee adrr = mAddressBook->findByUid( uid ); 2577 Addressee adrr = mAddressBook->findByUid( uid );
2578 if ( !adrr.isEmpty() ) { 2578 if ( !adrr.isEmpty() ) {
2579 foundUid = uid; 2579 foundUid = uid;
2580 } 2580 }
2581 if ( email == "sendbacklist" ) { 2581 if ( email == "sendbacklist" ) {
2582 //qDebug("ssssssssssssssssssssssend "); 2582 //qDebug("ssssssssssssssssssssssend ");
2583 QStringList nameList; 2583 QStringList nameList;
2584 QStringList emailList; 2584 QStringList emailList;
2585 QStringList uidList; 2585 QStringList uidList;
2586 nameList.append(adrr.realName()); 2586 nameList.append(adrr.realName());
2587 emailList = adrr.emails(); 2587 emailList = adrr.emails();
2588 uidList.append( adrr.preferredEmail()); 2588 uidList.append( adrr.preferredEmail());
2589 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 2589 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
2590 return; 2590 return;
2591 } 2591 }
2592 2592
2593 } 2593 }
2594 2594
2595 if ( email == "sendbacklist" ) 2595 if ( email == "sendbacklist" )
2596 return; 2596 return;
2597 if (foundUid.isEmpty()) 2597 if (foundUid.isEmpty())
2598 { 2598 {
2599 //find the uid of the person first 2599 //find the uid of the person first
2600 Addressee::List namelist; 2600 Addressee::List namelist;
2601 Addressee::List emaillist; 2601 Addressee::List emaillist;
2602 2602
2603 if (!name.isEmpty()) 2603 if (!name.isEmpty())
2604 namelist = mAddressBook->findByName( name ); 2604 namelist = mAddressBook->findByName( name );
2605 2605
2606 if (!email.isEmpty()) 2606 if (!email.isEmpty())
2607 emaillist = mAddressBook->findByEmail( email ); 2607 emaillist = mAddressBook->findByEmail( email );
2608 //qDebug("count %d %d ", namelist.count(),emaillist.count() ); 2608 //qDebug("count %d %d ", namelist.count(),emaillist.count() );
2609 //check if we have a match in Namelist and Emaillist 2609 //check if we have a match in Namelist and Emaillist
2610 if ((namelist.count() == 0) && (emaillist.count() > 0)) { 2610 if ((namelist.count() == 0) && (emaillist.count() > 0)) {
2611 foundUid = emaillist[0].uid(); 2611 foundUid = emaillist[0].uid();
2612 } 2612 }
2613 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2613 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2614 foundUid = namelist[0].uid(); 2614 foundUid = namelist[0].uid();
2615 else 2615 else
2616 { 2616 {
2617 for (int i = 0; i < namelist.count(); i++) 2617 for (int i = 0; i < namelist.count(); i++)
2618 { 2618 {
2619 for (int j = 0; j < emaillist.count(); j++) 2619 for (int j = 0; j < emaillist.count(); j++)
2620 { 2620 {
2621 if (namelist[i] == emaillist[j]) 2621 if (namelist[i] == emaillist[j])
2622 { 2622 {
2623 foundUid = namelist[i].uid(); 2623 foundUid = namelist[i].uid();
2624 } 2624 }
2625 } 2625 }
2626 } 2626 }
2627 } 2627 }
2628 } 2628 }
2629 else 2629 else
2630 { 2630 {
2631 foundUid = uid; 2631 foundUid = uid;
2632 } 2632 }
2633 2633
2634 if (!foundUid.isEmpty()) 2634 if (!foundUid.isEmpty())
2635 { 2635 {
2636 2636
2637 // raise Ka/Pi if it is in the background 2637 // raise Ka/Pi if it is in the background
2638#ifndef DESKTOP_VERSION 2638#ifndef DESKTOP_VERSION
2639#ifndef KORG_NODCOP 2639#ifndef KORG_NODCOP
2640 //QCopEnvelope e("QPE/Application/kapi", "raise()"); 2640 //QCopEnvelope e("QPE/Application/kapi", "raise()");
2641#endif 2641#endif
2642#endif 2642#endif
2643 2643
2644 mMainWindow->showMaximized(); 2644 mMainWindow->showMaximized();
2645 mMainWindow-> raise(); 2645 mMainWindow-> raise();
2646 2646
2647 mViewManager->setSelected( "", false); 2647 mViewManager->setSelected( "", false);
2648 mViewManager->refreshView( "" ); 2648 mViewManager->refreshView( "" );
2649 mViewManager->setSelected( foundUid, true ); 2649 mViewManager->setSelected( foundUid, true );
2650 mViewManager->refreshView( foundUid ); 2650 mViewManager->refreshView( foundUid );
2651 2651
2652 if ( !mMultipleViewsAtOnce ) 2652 if ( !mMultipleViewsAtOnce )
2653 { 2653 {
2654 setDetailsVisible( true ); 2654 setDetailsVisible( true );
2655 mActionDetails->setChecked(true); 2655 mActionDetails->setChecked(true);
2656 } 2656 }
2657 } 2657 }
2658} 2658}
2659 2659
2660void KABCore::whatsnew() 2660void KABCore::whatsnew()
2661{ 2661{
2662 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 2662 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
2663} 2663}
2664void KABCore::synchowto() 2664void KABCore::synchowto()
2665{ 2665{
2666 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 2666 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
2667} 2667}
2668void KABCore::kdesynchowto() 2668void KABCore::kdesynchowto()
2669{ 2669{
2670 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 2670 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
2671} 2671}
2672void KABCore::multisynchowto() 2672void KABCore::multisynchowto()
2673{ 2673{
2674 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 2674 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
2675} 2675}
2676void KABCore::faq() 2676void KABCore::faq()
2677{ 2677{
2678 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" ); 2678 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2679} 2679}
2680 2680
2681#include <libkcal/syncdefines.h> 2681#include <libkcal/syncdefines.h>
2682 2682
2683KABC::Addressee KABCore::getLastSyncAddressee() 2683KABC::Addressee KABCore::getLastSyncAddressee()
2684{ 2684{
2685 Addressee lse; 2685 Addressee lse;
2686 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2686 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2687 2687
2688 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2688 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2689 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2689 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2690 if (lse.isEmpty()) { 2690 if (lse.isEmpty()) {
2691 qDebug("KA: Creating new last-syncAddressee "); 2691 qDebug("KA: Creating new last-syncAddressee ");
2692 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2692 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2693 QString sum = ""; 2693 QString sum = "";
2694 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2694 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2695 sum = "E: "; 2695 sum = "E: ";
2696 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event")); 2696 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2697 lse.setRevision( mLastAddressbookSync ); 2697 lse.setRevision( mLastAddressbookSync );
2698 lse.setCategories( i18n("SyncEvent") ); 2698 lse.setCategories( i18n("SyncEvent") );
2699 mAddressBook->insertAddressee( lse ); 2699 mAddressBook->insertAddressee( lse );
2700 } 2700 }
2701 return lse; 2701 return lse;
2702} 2702}
2703int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2703int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2704{ 2704{
2705 2705
2706 //void setZaurusId(int id); 2706 //void setZaurusId(int id);
2707 // int zaurusId() const; 2707 // int zaurusId() const;
2708 // void setZaurusUid(int id); 2708 // void setZaurusUid(int id);
2709 // int zaurusUid() const; 2709 // int zaurusUid() const;
2710 // void setZaurusStat(int id); 2710 // void setZaurusStat(int id);
2711 // int zaurusStat() const; 2711 // int zaurusStat() const;
2712 // 0 equal 2712 // 0 equal
2713 // 1 take local 2713 // 1 take local
2714 // 2 take remote 2714 // 2 take remote
2715 // 3 cancel 2715 // 3 cancel
2716 QDateTime lastSync = mLastAddressbookSync; 2716 QDateTime lastSync = mLastAddressbookSync;
2717 QDateTime localMod = local->revision(); 2717 QDateTime localMod = local->revision();
2718 QDateTime remoteMod = remote->revision(); 2718 QDateTime remoteMod = remote->revision();
2719 2719
2720 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2720 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2721 2721
2722 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2722 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2723 bool remCh, locCh; 2723 bool remCh, locCh;
2724 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2724 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2725 //if ( remCh ) 2725 //if ( remCh )
2726 // qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2726 // qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2727 locCh = ( localMod > mLastAddressbookSync ); 2727 locCh = ( localMod > mLastAddressbookSync );
2728 //qDebug("cahnged rem %d loc %d",remCh, locCh ); 2728 //qDebug("cahnged rem %d loc %d",remCh, locCh );
2729 if ( !remCh && ! locCh ) { 2729 if ( !remCh && ! locCh ) {
2730 //qDebug("both not changed "); 2730 //qDebug("both not changed ");
2731 lastSync = localMod.addDays(1); 2731 lastSync = localMod.addDays(1);
2732 if ( mode <= SYNC_PREF_ASK ) 2732 if ( mode <= SYNC_PREF_ASK )
2733 return 0; 2733 return 0;
2734 } else { 2734 } else {
2735 if ( locCh ) { 2735 if ( locCh ) {
2736 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1()); 2736 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1());
2737 lastSync = localMod.addDays( -1 ); 2737 lastSync = localMod.addDays( -1 );
2738 if ( !remCh ) 2738 if ( !remCh )
2739 remoteMod =( lastSync.addDays( -1 ) ); 2739 remoteMod =( lastSync.addDays( -1 ) );
2740 } else { 2740 } else {
2741 //qDebug(" not loc changed "); 2741 //qDebug(" not loc changed ");
2742 lastSync = localMod.addDays( 1 ); 2742 lastSync = localMod.addDays( 1 );
2743 if ( remCh ) { 2743 if ( remCh ) {
2744 //qDebug("rem changed "); 2744 //qDebug("rem changed ");
2745 remoteMod =( lastSync.addDays( 1 ) ); 2745 remoteMod =( lastSync.addDays( 1 ) );
2746 } 2746 }
2747 2747
2748 } 2748 }
2749 } 2749 }
2750 full = true; 2750 full = true;
2751 if ( mode < SYNC_PREF_ASK ) 2751 if ( mode < SYNC_PREF_ASK )
2752 mode = SYNC_PREF_ASK; 2752 mode = SYNC_PREF_ASK;
2753 } else { 2753 } else {
2754 if ( localMod == remoteMod ) 2754 if ( localMod == remoteMod )
2755 return 0; 2755 return 0;
2756 2756
2757 } 2757 }
2758 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec()); 2758 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec());
2759 //qDebug("lastsync %s ", lastSync.toString().latin1() ); 2759 //qDebug("lastsync %s ", lastSync.toString().latin1() );
2760 //full = true; //debug only 2760 //full = true; //debug only
2761 if ( full ) { 2761 if ( full ) {
2762 bool equ = ( (*local) == (*remote) ); 2762 bool equ = ( (*local) == (*remote) );
2763 if ( equ ) { 2763 if ( equ ) {
2764 //qDebug("equal "); 2764 //qDebug("equal ");
2765 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2765 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2766 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 2766 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2767 } 2767 }
2768 if ( mode < SYNC_PREF_FORCE_LOCAL ) 2768 if ( mode < SYNC_PREF_FORCE_LOCAL )
2769 return 0; 2769 return 0;
2770 2770
2771 }//else //debug only 2771 }//else //debug only
2772 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 2772 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2773 } 2773 }
2774 int result; 2774 int result;
2775 bool localIsNew; 2775 bool localIsNew;
2776 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); 2776 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
2777 2777
2778 if ( full && mode < SYNC_PREF_NEWEST ) 2778 if ( full && mode < SYNC_PREF_NEWEST )
2779 mode = SYNC_PREF_ASK; 2779 mode = SYNC_PREF_ASK;
2780 2780
2781 switch( mode ) { 2781 switch( mode ) {
2782 case SYNC_PREF_LOCAL: 2782 case SYNC_PREF_LOCAL:
2783 if ( lastSync > remoteMod ) 2783 if ( lastSync > remoteMod )
2784 return 1; 2784 return 1;
2785 if ( lastSync > localMod ) 2785 if ( lastSync > localMod )
2786 return 2; 2786 return 2;
2787 return 1; 2787 return 1;
2788 break; 2788 break;
2789 case SYNC_PREF_REMOTE: 2789 case SYNC_PREF_REMOTE:
2790 if ( lastSync > remoteMod ) 2790 if ( lastSync > remoteMod )
2791 return 1; 2791 return 1;
2792 if ( lastSync > localMod ) 2792 if ( lastSync > localMod )
2793 return 2; 2793 return 2;
2794 return 2; 2794 return 2;
2795 break; 2795 break;
2796 case SYNC_PREF_NEWEST: 2796 case SYNC_PREF_NEWEST:
2797 if ( localMod > remoteMod ) 2797 if ( localMod > remoteMod )
2798 return 1; 2798 return 1;
2799 else 2799 else
2800 return 2; 2800 return 2;
2801 break; 2801 break;
2802 case SYNC_PREF_ASK: 2802 case SYNC_PREF_ASK:
2803 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 2803 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
2804 if ( lastSync > remoteMod ) 2804 if ( lastSync > remoteMod )
2805 return 1; 2805 return 1;
2806 if ( lastSync > localMod ) { 2806 if ( lastSync > localMod ) {
2807 return 2; 2807 return 2;
2808 } 2808 }
2809 localIsNew = localMod >= remoteMod; 2809 localIsNew = localMod >= remoteMod;
2810 //qDebug("conflict! ************************************** "); 2810 //qDebug("conflict! ************************************** ");
2811 { 2811 {
2812 KABC::AddresseeChooser acd ( *local,*remote, localIsNew , this ); 2812 KABC::AddresseeChooser acd ( *local,*remote, localIsNew , this );
2813 result = acd.executeD(localIsNew); 2813 result = acd.executeD(localIsNew);
2814 return result; 2814 return result;
2815 } 2815 }
2816 break; 2816 break;
2817 case SYNC_PREF_FORCE_LOCAL: 2817 case SYNC_PREF_FORCE_LOCAL:
2818 return 1; 2818 return 1;
2819 break; 2819 break;
2820 case SYNC_PREF_FORCE_REMOTE: 2820 case SYNC_PREF_FORCE_REMOTE:
2821 return 2; 2821 return 2;
2822 break; 2822 break;
2823 2823
2824 default: 2824 default:
2825 // SYNC_PREF_TAKE_BOTH not implemented 2825 // SYNC_PREF_TAKE_BOTH not implemented
2826 break; 2826 break;
2827 } 2827 }
2828 return 0; 2828 return 0;
2829} 2829}
2830 2830
2831 2831
2832bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2832bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2833{ 2833{
2834 bool syncOK = true; 2834 bool syncOK = true;
2835 int addedAddressee = 0; 2835 int addedAddressee = 0;
2836 int addedAddresseeR = 0; 2836 int addedAddresseeR = 0;
2837 int deletedAddresseeR = 0; 2837 int deletedAddresseeR = 0;
2838 int deletedAddresseeL = 0; 2838 int deletedAddresseeL = 0;
2839 int changedLocal = 0; 2839 int changedLocal = 0;
2840 int changedRemote = 0; 2840 int changedRemote = 0;
2841 int filteredIN = 0; 2841 int filteredIN = 0;
2842 int filteredOUT = 0; 2842 int filteredOUT = 0;
2843 2843
2844 QString mCurrentSyncName = syncManager->getCurrentSyncName(); 2844 QString mCurrentSyncName = syncManager->getCurrentSyncName();
2845 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2845 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2846 2846
2847 //QPtrList<Addressee> el = local->rawAddressees(); 2847 //QPtrList<Addressee> el = local->rawAddressees();
2848 Addressee addresseeR; 2848 Addressee addresseeR;
2849 QString uid; 2849 QString uid;
2850 int take; 2850 int take;
2851 Addressee addresseeL; 2851 Addressee addresseeL;
2852 Addressee addresseeRSync; 2852 Addressee addresseeRSync;
2853 Addressee addresseeLSync; 2853 Addressee addresseeLSync;
2854 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2854 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2855 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2855 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2856 bool fullDateRange = false; 2856 bool fullDateRange = false;
2857 local->resetTempSyncStat(); 2857 local->resetTempSyncStat();
2858 mLastAddressbookSync = QDateTime::currentDateTime(); 2858 mLastAddressbookSync = QDateTime::currentDateTime();
2859 if ( syncManager->syncWithDesktop() ) { 2859 if ( syncManager->syncWithDesktop() ) {
2860 // remote->removeSyncInfo( QString());//remove all info 2860 // remote->removeSyncInfo( QString());//remove all info
2861 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 2861 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
2862 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent; 2862 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent;
2863 qDebug("KA: using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() ); 2863 qDebug("KA: using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() );
2864 } else { 2864 } else {
2865 qDebug("KA: KSyncManager::mRequestedSyncEvent has invalid datatime "); 2865 qDebug("KA: KSyncManager::mRequestedSyncEvent has invalid datatime ");
2866 } 2866 }
2867 } 2867 }
2868 QDateTime modifiedCalendar = mLastAddressbookSync; 2868 QDateTime modifiedCalendar = mLastAddressbookSync;
2869 addresseeLSync = getLastSyncAddressee(); 2869 addresseeLSync = getLastSyncAddressee();
2870 qDebug("KA: Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2870 qDebug("KA: Last Sync %s ", addresseeLSync.revision().toString().latin1());
2871 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2871 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2872 if ( !addresseeR.isEmpty() ) { 2872 if ( !addresseeR.isEmpty() ) {
2873 addresseeRSync = addresseeR; 2873 addresseeRSync = addresseeR;
2874 remote->removeAddressee(addresseeR ); 2874 remote->removeAddressee(addresseeR );
2875 2875
2876 } else { 2876 } else {
2877 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2877 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2878 addresseeRSync = addresseeLSync ; 2878 addresseeRSync = addresseeLSync ;
2879 } else { 2879 } else {
2880 //qDebug("FULLDATE 1"); 2880 //qDebug("FULLDATE 1");
2881 fullDateRange = true; 2881 fullDateRange = true;
2882 Addressee newAdd; 2882 Addressee newAdd;
2883 addresseeRSync = newAdd; 2883 addresseeRSync = newAdd;
2884 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2884 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2885 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2885 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2886 addresseeRSync.setRevision( mLastAddressbookSync ); 2886 addresseeRSync.setRevision( mLastAddressbookSync );
2887 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2887 addresseeRSync.setCategories( i18n("SyncAddressee") );
2888 } 2888 }
2889 } 2889 }
2890 if ( addresseeLSync.revision() == mLastAddressbookSync ) { 2890 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2891 // qDebug("FULLDATE 2"); 2891 // qDebug("FULLDATE 2");
2892 fullDateRange = true; 2892 fullDateRange = true;
2893 } 2893 }
2894 if ( ! fullDateRange ) { 2894 if ( ! fullDateRange ) {
2895 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2895 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2896 2896
2897 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2897 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2898 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2898 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2899 fullDateRange = true; 2899 fullDateRange = true;
2900 //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); 2900 //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2901 } 2901 }
2902 } 2902 }
2903 // fullDateRange = true; // debug only! 2903 // fullDateRange = true; // debug only!
2904 if ( fullDateRange ) 2904 if ( fullDateRange )
2905 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2905 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2906 else 2906 else
2907 mLastAddressbookSync = addresseeLSync.revision(); 2907 mLastAddressbookSync = addresseeLSync.revision();
2908 // for resyncing if own file has changed 2908 // for resyncing if own file has changed
2909 // PENDING fixme later when implemented 2909 // PENDING fixme later when implemented
2910#if 0 2910#if 0
2911 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2911 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2912 mLastAddressbookSync = loadedFileVersion; 2912 mLastAddressbookSync = loadedFileVersion;
2913 qDebug("setting mLastAddressbookSync "); 2913 qDebug("setting mLastAddressbookSync ");
2914 } 2914 }
2915#endif 2915#endif
2916 2916
2917 2917
2918 // ********** setting filters **************** 2918 // ********** setting filters ****************
2919 Filter filterIN = mViewManager->getFilterByName( syncManager->mFilterInAB ); 2919 Filter filterIN = mViewManager->getFilterByName( syncManager->mFilterInAB );
2920 Filter filterOUT = mViewManager->getFilterByName( syncManager->mFilterOutAB ); 2920 Filter filterOUT = mViewManager->getFilterByName( syncManager->mFilterOutAB );
2921 2921
2922 //qDebug("*************************** "); 2922 //qDebug("*************************** ");
2923 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2923 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2924 QStringList er = remote->uidList(); 2924 QStringList er = remote->uidList();
2925 Addressee inR ;//= er.first(); 2925 Addressee inR ;//= er.first();
2926 Addressee inL; 2926 Addressee inL;
2927 2927
2928 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count()); 2928 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count());
2929 2929
2930 int modulo = (er.count()/10)+1; 2930 int modulo = (er.count()/10)+1;
2931 int incCounter = 0; 2931 int incCounter = 0;
2932 while ( incCounter < er.count()) { 2932 while ( incCounter < er.count()) {
2933 if (syncManager->isProgressBarCanceled()) 2933 if (syncManager->isProgressBarCanceled())
2934 return false; 2934 return false;
2935 if ( incCounter % modulo == 0 ) 2935 if ( incCounter % modulo == 0 )
2936 syncManager->showProgressBar(incCounter); 2936 syncManager->showProgressBar(incCounter);
2937 2937
2938 uid = er[ incCounter ]; 2938 uid = er[ incCounter ];
2939 bool skipIncidence = false; 2939 bool skipIncidence = false;
2940 if ( uid.left(19) == QString("last-syncAddressee-") ) 2940 if ( uid.left(19) == QString("last-syncAddressee-") )
2941 skipIncidence = true; 2941 skipIncidence = true;
2942 QString idS,OidS; 2942 QString idS,OidS;
2943 qApp->processEvents(); 2943 qApp->processEvents();
2944 if ( !skipIncidence ) { 2944 if ( !skipIncidence ) {
2945 inL = local->findByUid( uid ); 2945 inL = local->findByUid( uid );
2946 inR = remote->findByUid( uid ); 2946 inR = remote->findByUid( uid );
2947 //inL.setResource( 0 ); 2947 //inL.setResource( 0 );
2948 //inR.setResource( 0 ); 2948 //inR.setResource( 0 );
2949 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2949 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2950 if ( !inL.resource() || inL.resource()->includeInSync() ) { 2950 if ( !inL.resource() || inL.resource()->includeInSync() ) {
2951 if ( (take = takeAddressee( &inL, &inR, mode, fullDateRange )) ) { 2951 if ( (take = takeAddressee( &inL, &inR, mode, fullDateRange )) ) {
2952 //qDebug("take %d %s ", take, inL.summary().latin1()); 2952 //qDebug("take %d %s ", take, inL.summary().latin1());
2953 if ( take == 3 ) 2953 if ( take == 3 )
2954 return false; 2954 return false;
2955 if ( take == 1 ) {// take local ********************** 2955 if ( take == 1 ) {// take local **********************
2956 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2956 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2957 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2957 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2958 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2958 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2959 local->insertAddressee( inL, false ); 2959 local->insertAddressee( inL, false );
2960 idS = inR.externalUID(); 2960 idS = inR.externalUID();
2961 OidS = inR.originalExternalUID(); 2961 OidS = inR.originalExternalUID();
2962 } 2962 }
2963 else 2963 else
2964 idS = inR.IDStr(); 2964 idS = inR.IDStr();
2965 remote->removeAddressee( inR ); 2965 remote->removeAddressee( inR );
2966 inR = inL; 2966 inR = inL;
2967 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2967 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2968 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2968 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2969 inR.setOriginalExternalUID( OidS ); 2969 inR.setOriginalExternalUID( OidS );
2970 inR.setExternalUID( idS ); 2970 inR.setExternalUID( idS );
2971 if ( syncManager->syncWithDesktop() ) { 2971 if ( syncManager->syncWithDesktop() ) {
2972 inR.setIDStr("changed" ); 2972 inR.setIDStr("changed" );
2973 } 2973 }
2974 //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" ); 2974 //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" );
2975 } else { 2975 } else {
2976 inR.setIDStr( idS ); 2976 inR.setIDStr( idS );
2977 } 2977 }
2978 inR.setResource( 0 ); 2978 inR.setResource( 0 );
2979 remote->insertAddressee( inR , false); 2979 remote->insertAddressee( inR , false);
2980 ++changedRemote; 2980 ++changedRemote;
2981 } else { // take == 2 take remote ********************** 2981 } else { // take == 2 take remote **********************
2982 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2982 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2983 if ( inR.revision().date().year() < 2004 ) 2983 if ( inR.revision().date().year() < 2004 )
2984 inR.setRevision( modifiedCalendar ); 2984 inR.setRevision( modifiedCalendar );
2985 } 2985 }
2986 idS = inL.IDStr(); 2986 idS = inL.IDStr();
2987 local->removeAddressee( inL ); 2987 local->removeAddressee( inL );
2988 inL = inR; 2988 inL = inR;
2989 inL.setIDStr( idS ); 2989 inL.setIDStr( idS );
2990 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2990 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2991 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2991 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2992 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2992 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2993 } 2993 }
2994 inL.setResource( 0 ); 2994 inL.setResource( 0 );
2995 local->insertAddressee( inL , false ); 2995 local->insertAddressee( inL , false );
2996 ++changedLocal; 2996 ++changedLocal;
2997 } 2997 }
2998 } 2998 }
2999 } 2999 }
3000 } else { // no conflict ********** add or delete remote 3000 } else { // no conflict ********** add or delete remote
3001 if ( filterIN.name().isEmpty() || filterIN.filterAddressee( inR ) ) { 3001 if ( filterIN.name().isEmpty() || filterIN.filterAddressee( inR ) ) {
3002 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 3002 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
3003 QString des = addresseeLSync.note(); 3003 QString des = addresseeLSync.note();
3004 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 3004 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
3005 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 3005 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
3006 remote->insertAddressee( inR, false ); 3006 remote->insertAddressee( inR, false );
3007 ++deletedAddresseeR; 3007 ++deletedAddresseeR;
3008 } else { 3008 } else {
3009 inR.setRevision( modifiedCalendar ); 3009 inR.setRevision( modifiedCalendar );
3010 remote->insertAddressee( inR, false ); 3010 remote->insertAddressee( inR, false );
3011 inL = inR; 3011 inL = inR;
3012 inL.setIDStr( ":" ); 3012 inL.setIDStr( ":" );
3013 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 3013 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
3014 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 3014 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
3015 inL.setResource( 0 ); 3015 inL.setResource( 0 );
3016 local->insertAddressee( inL , false); 3016 local->insertAddressee( inL , false);
3017 ++addedAddressee; 3017 ++addedAddressee;
3018 } 3018 }
3019 } else { 3019 } else {
3020 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) { 3020 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
3021 inR.setRevision( modifiedCalendar ); 3021 inR.setRevision( modifiedCalendar );
3022 remote->insertAddressee( inR, false ); 3022 remote->insertAddressee( inR, false );
3023 inR.setResource( 0 ); 3023 inR.setResource( 0 );
3024 local->insertAddressee( inR, false ); 3024 local->insertAddressee( inR, false );
3025 ++addedAddressee; 3025 ++addedAddressee;
3026 } else { 3026 } else {
3027 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR); 3027 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
3028 remote->removeAddressee( inR ); 3028 remote->removeAddressee( inR );
3029 ++deletedAddresseeR; 3029 ++deletedAddresseeR;
3030 } 3030 }
3031 } 3031 }
3032 } else { 3032 } else {
3033 ++filteredIN; 3033 ++filteredIN;
3034 } 3034 }
3035 } 3035 }
3036 } 3036 }
3037 ++incCounter; 3037 ++incCounter;
3038 } 3038 }
3039 er.clear(); 3039 er.clear();
3040 QStringList el = local->uidList(); 3040 QStringList el = local->uidList();
3041 modulo = (el.count()/10)+1; 3041 modulo = (el.count()/10)+1;
3042 3042
3043 syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count()); 3043 syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count());
3044 incCounter = 0; 3044 incCounter = 0;
3045 while ( incCounter < el.count()) { 3045 while ( incCounter < el.count()) {
3046 qApp->processEvents(); 3046 qApp->processEvents();
3047 if (syncManager->isProgressBarCanceled()) 3047 if (syncManager->isProgressBarCanceled())
3048 return false; 3048 return false;
3049 if ( incCounter % modulo == 0 ) 3049 if ( incCounter % modulo == 0 )
3050 syncManager->showProgressBar(incCounter); 3050 syncManager->showProgressBar(incCounter);
3051 uid = el[ incCounter ]; 3051 uid = el[ incCounter ];
3052 bool skipIncidence = false; 3052 bool skipIncidence = false;
3053 if ( uid.left(19) == QString("last-syncAddressee-") ) 3053 if ( uid.left(19) == QString("last-syncAddressee-") )
3054 skipIncidence = true; 3054 skipIncidence = true;
3055 if ( !skipIncidence ) { 3055 if ( !skipIncidence ) {
3056 inL = local->findByUid( uid ); 3056 inL = local->findByUid( uid );
3057 if ( !inL.resource() || inL.resource()->includeInSync() ) { 3057 if ( !inL.resource() || inL.resource()->includeInSync() ) {
3058 inR = remote->findByUid( uid ); 3058 inR = remote->findByUid( uid );
3059 if ( inR.isEmpty() ){ 3059 if ( inR.isEmpty() ){
3060 if ( filterOUT.name().isEmpty() || filterOUT.filterAddressee( inL ) ) { 3060 if ( filterOUT.name().isEmpty() || filterOUT.filterAddressee( inL ) ) {
3061 // no conflict ********** add or delete local 3061 // no conflict ********** add or delete local
3062 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 3062 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
3063 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 3063 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
3064 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 3064 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
3065 local->removeAddressee( inL ); 3065 local->removeAddressee( inL );
3066 ++deletedAddresseeL; 3066 ++deletedAddresseeL;
3067 } else { 3067 } else {
3068 if ( ! syncManager->mWriteBackExistingOnly ) { 3068 if ( ! syncManager->mWriteBackExistingOnly ) {
3069 inL.removeID(mCurrentSyncDevice ); 3069 inL.removeID(mCurrentSyncDevice );
3070 ++addedAddresseeR; 3070 ++addedAddresseeR;
3071 inL.setRevision( modifiedCalendar ); 3071 inL.setRevision( modifiedCalendar );
3072 local->insertAddressee( inL, false ); 3072 local->insertAddressee( inL, false );
3073 inR = inL; 3073 inR = inL;
3074 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL ); 3074 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL );
3075 inR.setResource( 0 ); 3075 inR.setResource( 0 );
3076 remote->insertAddressee( inR, false ); 3076 remote->insertAddressee( inR, false );
3077 } 3077 }
3078 } 3078 }
3079 } else { 3079 } else {
3080 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { 3080 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) {
3081 //qDebug("data %s ", inL.revision().toString().latin1()); 3081 //qDebug("data %s ", inL.revision().toString().latin1());
3082 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 3082 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
3083 local->removeAddressee( inL ); 3083 local->removeAddressee( inL );
3084 ++deletedAddresseeL; 3084 ++deletedAddresseeL;
3085 } else { 3085 } else {
3086 if ( ! syncManager->mWriteBackExistingOnly ) { 3086 if ( ! syncManager->mWriteBackExistingOnly ) {
3087 ++addedAddresseeR; 3087 ++addedAddresseeR;
3088 inL.setRevision( modifiedCalendar ); 3088 inL.setRevision( modifiedCalendar );
3089 local->insertAddressee( inL, false ); 3089 local->insertAddressee( inL, false );
3090 inR = inL; 3090 inR = inL;
3091 inR.setIDStr( ":" ); 3091 inR.setIDStr( ":" );
3092 inR.setResource( 0 ); 3092 inR.setResource( 0 );
3093 remote->insertAddressee( inR, false ); 3093 remote->insertAddressee( inR, false );
3094 } 3094 }
3095 } 3095 }
3096 } 3096 }
3097 } else { 3097 } else {
3098 ++filteredOUT; 3098 ++filteredOUT;
3099 } 3099 }
3100 } 3100 }
3101 } 3101 }
3102 } 3102 }
3103 ++incCounter; 3103 ++incCounter;
3104 } 3104 }
3105 el.clear(); 3105 el.clear();
3106 syncManager->hideProgressBar(); 3106 syncManager->hideProgressBar();
3107 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); 3107 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
3108 // get rid of micro seconds 3108 // get rid of micro seconds
3109 QTime t = mLastAddressbookSync.time(); 3109 QTime t = mLastAddressbookSync.time();
3110 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 3110 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) );
3111 addresseeLSync.setRevision( mLastAddressbookSync ); 3111 addresseeLSync.setRevision( mLastAddressbookSync );
3112 addresseeRSync.setRevision( mLastAddressbookSync ); 3112 addresseeRSync.setRevision( mLastAddressbookSync );
3113 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ; 3113 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ;
3114 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName ); 3114 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName );
3115 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ; 3115 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ;
3116 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") ); 3116 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") );
3117 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ; 3117 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ;
3118 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() ); 3118 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() );
3119 addresseeRSync.setNote( "" ) ; 3119 addresseeRSync.setNote( "" ) ;
3120 addresseeLSync.setNote( "" ); 3120 addresseeLSync.setNote( "" );
3121 3121
3122 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 3122 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
3123 remote->insertAddressee( addresseeRSync, false ); 3123 remote->insertAddressee( addresseeRSync, false );
3124 local->insertAddressee( addresseeLSync, false ); 3124 local->insertAddressee( addresseeLSync, false );
3125 QString mes; 3125 QString mes;
3126 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR, filteredIN, filteredOUT ); 3126 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR, filteredIN, filteredOUT );
3127 qDebug( mes ); 3127 qDebug( mes );
3128 mes = i18n("Local addressbook changed!\n") +mes; 3128 mes = i18n("Local addressbook changed!\n") +mes;
3129 if ( syncManager->mShowSyncSummary ) { 3129 if ( syncManager->mShowSyncSummary ) {
3130 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 3130 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
3131 i18n("KA/Pi Synchronization"),i18n("Write back"))) { 3131 i18n("KA/Pi Synchronization"),i18n("Write back"))) {
3132 qDebug("KA: WB cancelled "); 3132 qDebug("KA: WB cancelled ");
3133 return false; 3133 return false;
3134 } 3134 }
3135 } 3135 }
3136 return syncOK; 3136 return syncOK;
3137} 3137}
3138 3138
3139 3139
3140//this is a overwritten callbackmethods from the syncinterface 3140//this is a overwritten callbackmethods from the syncinterface
3141bool KABCore::sync(KSyncManager* manager, QString filename, int mode) 3141bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
3142{ 3142{
3143 3143
3144 //pending prepare addresseeview for output 3144 //pending prepare addresseeview for output
3145 //pending detect, if remote file has REV field. if not switch to external sync 3145 //pending detect, if remote file has REV field. if not switch to external sync
3146 mGlobalSyncMode = SYNC_MODE_NORMAL; 3146 mGlobalSyncMode = SYNC_MODE_NORMAL;
3147 if ( manager != syncManager ) 3147 if ( manager != syncManager )
3148 qDebug("KABCore::sync:: ERROR! :: manager != syncManager "); 3148 qDebug("KABCore::sync:: ERROR! :: manager != syncManager ");
3149 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 3149 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
3150 3150
3151 AddressBook abLocal(filename,"syncContact"); 3151 AddressBook abLocal(filename,"syncContact");
3152 bool syncOK = false; 3152 bool syncOK = false;
3153 if ( abLocal.load() ) { 3153 if ( abLocal.load() ) {
3154 qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode ); 3154 qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode );
3155 bool external = false; 3155 bool external = false;
3156 bool isXML = false; 3156 bool isXML = false;
3157 if ( filename.right(4) == ".xml") { 3157 if ( filename.right(4) == ".xml") {
3158 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3158 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3159 isXML = true; 3159 isXML = true;
3160 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 3160 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
3161 } else { 3161 } else {
3162 external = !manager->mIsKapiFile; 3162 external = !manager->mIsKapiFile;
3163 if ( external ) { 3163 if ( external ) {
3164 qDebug("KA: Sync::Setting vcf mode to external "); 3164 qDebug("KA: Sync::Setting vcf mode to external ");
3165 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3165 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3166 AddressBook::Iterator it; 3166 AddressBook::Iterator it;
3167 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 3167 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
3168 (*it).setID( mCurrentSyncDevice, (*it).uid() ); 3168 (*it).setID( mCurrentSyncDevice, (*it).uid() );
3169 (*it).computeCsum( mCurrentSyncDevice ); 3169 (*it).computeCsum( mCurrentSyncDevice );
3170 } 3170 }
3171 } 3171 }
3172 } 3172 }
3173 //AddressBook::Iterator it; 3173 //AddressBook::Iterator it;
3174 //QStringList vcards; 3174 //QStringList vcards;
3175 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 3175 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
3176 // qDebug("Name %s ", (*it).familyName().latin1()); 3176 // qDebug("Name %s ", (*it).familyName().latin1());
3177 //} 3177 //}
3178 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 3178 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
3179 if ( syncOK ) { 3179 if ( syncOK ) {
3180 if ( syncManager->mWriteBackFile ) 3180 if ( syncManager->mWriteBackFile )
3181 { 3181 {
3182 if ( external ) 3182 if ( external )
3183 abLocal.removeSyncAddressees( !isXML); 3183 abLocal.removeSyncAddressees( !isXML);
3184 qDebug("KA: Sync::Saving remote AB "); 3184 qDebug("KA: Sync::Saving remote AB ");
3185 if ( ! abLocal.saveAB()) 3185 if ( ! abLocal.saveAB())
3186 qDebug("KA: sync::Error writing back AB to file "); 3186 qDebug("KA: sync::Error writing back AB to file ");
3187 if ( external ) { 3187 if ( external ) {
3188 // afterwrite processing 3188 // afterwrite processing
3189 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); 3189 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML);
3190 } 3190 }
3191 } 3191 }
3192 } 3192 }
3193 setModified(); 3193 setModified();
3194 3194
3195 } 3195 }
3196 abLocal.removeResources(); 3196 abLocal.removeResources();
3197 if ( syncOK ) 3197 if ( syncOK )
3198 mViewManager->refreshView(); 3198 mViewManager->refreshView();
3199 return syncOK; 3199 return syncOK;
3200 3200
3201} 3201}
3202void KABCore::removeSyncInfo( QString syncProfile) 3202void KABCore::removeSyncInfo( QString syncProfile)
3203{ 3203{
3204 qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1()); 3204 qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1());
3205 mAddressBook->removeSyncInfo( syncProfile ); 3205 mAddressBook->removeSyncInfo( syncProfile );
3206 setModified(); 3206 setModified();
3207} 3207}
3208 3208
3209 3209
3210//this is a overwritten callbackmethods from the syncinterface 3210//this is a overwritten callbackmethods from the syncinterface
3211bool KABCore::syncExternal(KSyncManager* manager, QString resource) 3211bool KABCore::syncExternal(KSyncManager* manager, QString resource)
3212{ 3212{
3213 if ( resource == "phone" ) 3213 if ( resource == "phone" )
3214 return syncPhone(); 3214 return syncPhone();
3215 disableBR( true ); 3215 disableBR( true );
3216 if ( manager != syncManager ) 3216 if ( manager != syncManager )
3217 qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); 3217 qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager ");
3218 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 3218 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
3219 3219
3220 AddressBook abLocal( resource,"syncContact"); 3220 AddressBook abLocal( resource,"syncContact");
3221 bool syncOK = false; 3221 bool syncOK = false;
3222 message(i18n("Loading DTM address data..."), false); 3222 message(i18n("Loading DTM address data..."), false);
3223 if ( abLocal.load() ) { 3223 if ( abLocal.load() ) {
3224 qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); 3224 qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1());
3225 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3225 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3226 message(i18n("Sync preprocessing..."),false); 3226 message(i18n("Sync preprocessing..."),false);
3227 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); 3227 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false );
3228 message(i18n("Synchronizing..."),false); 3228 message(i18n("Synchronizing..."),false);
3229 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 3229 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
3230 if ( syncOK ) { 3230 if ( syncOK ) {
3231 if ( syncManager->mWriteBackFile ) { 3231 if ( syncManager->mWriteBackFile ) {
3232 abLocal.removeSyncAddressees( false ); 3232 abLocal.removeSyncAddressees( false );
3233 message(i18n("Saving DTM address data..."),false); 3233 message(i18n("Saving DTM address data..."),false);
3234 abLocal.saveAB(); 3234 abLocal.saveAB();
3235 message(i18n("Sync postprocessing..."),false); 3235 message(i18n("Sync postprocessing..."),false);
3236 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); 3236 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
3237 } 3237 }
3238 } else 3238 } else
3239 message( i18n("Sync cancelled or failed.") ); 3239 message( i18n("Sync cancelled or failed.") );
3240 setModified(); 3240 setModified();
3241 } 3241 }
3242 abLocal.removeResources(); 3242 abLocal.removeResources();
3243 if ( syncOK ) { 3243 if ( syncOK ) {
3244 mViewManager->refreshView(); 3244 mViewManager->refreshView();
3245 message(i18n("DTM syncing finished.")); 3245 message(i18n("DTM syncing finished."));
3246 } 3246 }
3247 disableBR( false ); 3247 disableBR( false );
3248 return syncOK; 3248 return syncOK;
3249 3249
3250} 3250}
3251void KABCore::message( QString m, bool startTimer) 3251void KABCore::message( QString m, bool startTimer)
3252{ 3252{
3253 topLevelWidget()->setCaption( m ); 3253 topLevelWidget()->setCaption( m );
3254 qApp->processEvents(); 3254 qApp->processEvents();
3255 if ( startTimer ) 3255 if ( startTimer )
3256 mMessageTimer->start( 15000, true ); 3256 mMessageTimer->start( 15000, true );
3257 else 3257 else
3258 mMessageTimer->stop(); 3258 mMessageTimer->stop();
3259} 3259}
3260bool KABCore::syncPhone() 3260bool KABCore::syncPhone()
3261{ 3261{
3262 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 3262 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
3263 QString fileName = getPhoneFile(); 3263 QString fileName = getPhoneFile();
3264 if ( !PhoneAccess::readFromPhone( fileName) ) { 3264 if ( !PhoneAccess::readFromPhone( fileName) ) {
3265 message(i18n("Phone access failed!")); 3265 message(i18n("Phone access failed!"));
3266 return false; 3266 return false;
3267 } 3267 }
3268 AddressBook abLocal( fileName,"syncContact"); 3268 AddressBook abLocal( fileName,"syncContact");
3269 bool syncOK = false; 3269 bool syncOK = false;
3270 { 3270 {
3271 abLocal.importFromFile( fileName ); 3271 abLocal.importFromFile( fileName );
3272 qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); 3272 qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1());
3273 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 3273 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
3274 abLocal.preparePhoneSync( mCurrentSyncDevice, true ); 3274 abLocal.preparePhoneSync( mCurrentSyncDevice, true );
3275 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 3275 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
3276 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 3276 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
3277 if ( syncOK ) { 3277 if ( syncOK ) {
3278 if ( syncManager->mWriteBackFile ) { 3278 if ( syncManager->mWriteBackFile ) {
3279 abLocal.removeSyncAddressees( true ); 3279 abLocal.removeSyncAddressees( true );
3280 abLocal.saveABphone( fileName ); 3280 abLocal.saveABphone( fileName );
3281 abLocal.findNewExtIds( fileName, mCurrentSyncDevice ); 3281 abLocal.findNewExtIds( fileName, mCurrentSyncDevice );
3282 //abLocal.preparePhoneSync( mCurrentSyncDevice, false ); 3282 //abLocal.preparePhoneSync( mCurrentSyncDevice, false );
3283 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); 3283 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true );
3284 } 3284 }
3285 } 3285 }
3286 setModified(); 3286 setModified();
3287 } 3287 }
3288 abLocal.removeResources(); 3288 abLocal.removeResources();
3289 if ( syncOK ) 3289 if ( syncOK )
3290 mViewManager->refreshView(); 3290 mViewManager->refreshView();
3291 return syncOK; 3291 return syncOK;
3292} 3292}
3293void KABCore::getFile( bool success ) 3293void KABCore::getFile( bool success )
3294{ 3294{
3295 if ( ! success ) { 3295 if ( ! success ) {
3296 message( i18n("Error receiving file. Nothing changed!") ); 3296 message( i18n("Error receiving file. Nothing changed!") );
3297 return; 3297 return;
3298 } 3298 }
3299 int count = mAddressBook->importFromFile( sentSyncFile() , false, true ); 3299 int count = mAddressBook->importFromFile( sentSyncFile() , false, true );
3300 if ( count ) 3300 if ( count )
3301 setModified( true ); 3301 setModified( true );
3302 message( i18n("Pi-Sync successful!") ); 3302 message( i18n("Pi-Sync successful!") );
3303 mViewManager->refreshView(); 3303 mViewManager->refreshView();
3304} 3304}
3305void KABCore::syncFileRequest() 3305void KABCore::syncFileRequest()
3306{ 3306{
3307 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) { 3307 if ( KABPrefs::instance()->mPassiveSyncWithDesktop ) {
3308 syncManager->slotSyncMenu( 999 ); 3308 syncManager->slotSyncMenu( 999 );
3309 } 3309 }
3310 mAddressBook->export2File( sentSyncFile() ); 3310 mAddressBook->export2File( sentSyncFile() );
3311} 3311}
3312QString KABCore::sentSyncFile() 3312QString KABCore::sentSyncFile()
3313{ 3313{
3314#ifdef DESKTOP_VERSION 3314#ifdef DESKTOP_VERSION
3315 return locateLocal( "tmp", "copysyncab.vcf" ); 3315 return locateLocal( "tmp", "copysyncab.vcf" );
3316#else 3316#else
3317 return QString( "/tmp/copysyncab.vcf" ); 3317 return QString( "/tmp/copysyncab.vcf" );
3318#endif 3318#endif
3319} 3319}
3320 3320
3321void KABCore::setCaptionBack() 3321void KABCore::setCaptionBack()
3322{ 3322{
3323 mMessageTimer->stop(); 3323 mMessageTimer->stop();
3324 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") ); 3324 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") );
3325} 3325}
diff --git a/korganizer/filteredit_base.cpp b/korganizer/filteredit_base.cpp
index 15a4aaa..505edf6 100644
--- a/korganizer/filteredit_base.cpp
+++ b/korganizer/filteredit_base.cpp
@@ -1,145 +1,152 @@
1/**************************************************************************** 1/****************************************************************************
2** Form implementation generated from reading ui file 'filteredit_base.ui' 2** Form implementation generated from reading ui file 'filteredit_base.ui'
3** 3**
4** Created: Fr Jan 21 21:25:30 2005 4** Created: Fr Jan 21 21:25:30 2005
5** by: The User Interface Compiler ($Id$) 5** by: The User Interface Compiler ($Id$)
6** 6**
7** WARNING! All changes made in this file will be lost! 7** WARNING! All changes made in this file will be lost!
8****************************************************************************/ 8****************************************************************************/
9 9
10#include "filteredit_base.h" 10#include "filteredit_base.h"
11 11
12#include <qvariant.h> 12#include <qvariant.h>
13#include <qpushbutton.h> 13#include <qpushbutton.h>
14#include <qframe.h> 14#include <qframe.h>
15#include <qbuttongroup.h> 15#include <qbuttongroup.h>
16#include <qapplication.h>
16#include <qradiobutton.h> 17#include <qradiobutton.h>
17#include <qlistbox.h> 18#include <qlistbox.h>
18#include <qlabel.h> 19#include <qlabel.h>
19#include <qcheckbox.h> 20#include <qcheckbox.h>
20#include <qlayout.h> 21#include <qlayout.h>
21#include <qtooltip.h> 22#include <qtooltip.h>
22#include <qwhatsthis.h> 23#include <qwhatsthis.h>
23#include "tr.h" 24#include "tr.h"
24 25
25/* 26/*
26 * Constructs a FilterEdit_base as a child of 'parent', with the 27 * Constructs a FilterEdit_base as a child of 'parent', with the
27 * name 'name' and widget flags set to 'f'. 28 * name 'name' and widget flags set to 'f'.
28 */ 29 */
29FilterEdit_base::FilterEdit_base( QWidget* parent, const char* name, WFlags fl ) 30FilterEdit_base::FilterEdit_base( QWidget* parent, const char* name, WFlags fl )
30 : QWidget( parent, name, fl ) 31 : QWidget( parent, name, fl )
31{ 32{
32 if ( !name ) 33 if ( !name )
33 setName( "FilterEdit_base" ); 34 setName( "FilterEdit_base" );
34 FilterEdit_baseLayout = new QVBoxLayout( this, 0, 0, "FilterEdit_baseLayout"); 35 FilterEdit_baseLayout = new QVBoxLayout( this, 0, 0, "FilterEdit_baseLayout");
35 36
36 mCriteriaFrame = new QFrame( this, "mCriteriaFrame" ); 37 mCriteriaFrame = new QFrame( this, "mCriteriaFrame" );
37 mCriteriaFrame->setFrameShape( QFrame::StyledPanel ); 38 mCriteriaFrame->setFrameShape( QFrame::StyledPanel );
38 mCriteriaFrame->setFrameShadow( QFrame::Raised ); 39 mCriteriaFrame->setFrameShadow( QFrame::Raised );
39 mCriteriaFrameLayout = new QVBoxLayout( mCriteriaFrame, 3, 2, "mCriteriaFrameLayout"); 40 mCriteriaFrameLayout = new QVBoxLayout( mCriteriaFrame, 3, 2, "mCriteriaFrameLayout");
40 41
41 ButtonGroup1 = new QButtonGroup( mCriteriaFrame, "ButtonGroup1" ); 42 ButtonGroup1 = new QButtonGroup( mCriteriaFrame, "ButtonGroup1" );
42 ButtonGroup1->setColumnLayout(0, Qt::Vertical ); 43 ButtonGroup1->setColumnLayout(0, Qt::Vertical );
43 ButtonGroup1->layout()->setSpacing( 6 ); 44 ButtonGroup1->layout()->setSpacing( 6 );
44 ButtonGroup1->layout()->setMargin( 6 ); 45 ButtonGroup1->layout()->setMargin( 6 );
45 ButtonGroup1Layout = new QGridLayout( ButtonGroup1->layout() ); 46 ButtonGroup1Layout = new QGridLayout( ButtonGroup1->layout() );
46 ButtonGroup1Layout->setAlignment( Qt::AlignTop ); 47 ButtonGroup1Layout->setAlignment( Qt::AlignTop );
47 48
48 layout4 = new QHBoxLayout( 0, 0, 6, "layout4"); 49 layout4 = new QHBoxLayout( 0, 0, 6, "layout4");
49 50
50 mCatShowCheck = new QRadioButton( ButtonGroup1, "mCatShowCheck" ); 51 mCatShowCheck = new QRadioButton( ButtonGroup1, "mCatShowCheck" );
51 layout4->addWidget( mCatShowCheck ); 52 layout4->addWidget( mCatShowCheck );
52 53
53 mCatHideCheck = new QRadioButton( ButtonGroup1, "mCatHideCheck" ); 54 mCatHideCheck = new QRadioButton( ButtonGroup1, "mCatHideCheck" );
54 layout4->addWidget( mCatHideCheck ); 55 layout4->addWidget( mCatHideCheck );
55 56
56 mCatEditButton = new QPushButton( ButtonGroup1, "mCatEditButton" ); 57 mCatEditButton = new QPushButton( ButtonGroup1, "mCatEditButton" );
57 layout4->addWidget( mCatEditButton ); 58 layout4->addWidget( mCatEditButton );
58 59
59 ButtonGroup1Layout->addLayout( layout4, 0, 0 ); 60 ButtonGroup1Layout->addLayout( layout4, 0, 0 );
60 61
61 mCatList = new QListBox( ButtonGroup1, "mCatList" ); 62 mCatList = new QListBox( ButtonGroup1, "mCatList" );
62 63
63 ButtonGroup1Layout->addWidget( mCatList, 1, 0 ); 64 ButtonGroup1Layout->addWidget( mCatList, 1, 0 );
64 mCriteriaFrameLayout->addWidget( ButtonGroup1 ); 65 mCriteriaFrameLayout->addWidget( ButtonGroup1 );
65 66
66 layout7 = new QHBoxLayout( 0, 0, 6, "layout7"); 67 layout7 = new QHBoxLayout( 0, 0, 6, "layout7");
67 68
68 textLabel1 = new QLabel( mCriteriaFrame, "textLabel1" ); 69 textLabel1 = new QLabel( mCriteriaFrame, "textLabel1" );
69 layout7->addWidget( textLabel1 ); 70 layout7->addWidget( textLabel1 );
70 71
71 mRecurringCheck = new QCheckBox( mCriteriaFrame, "mRecurringCheck" ); 72 mRecurringCheck = new QCheckBox( mCriteriaFrame, "mRecurringCheck" );
72 layout7->addWidget( mRecurringCheck ); 73 layout7->addWidget( mRecurringCheck );
73 74
74 mCompletedCheck = new QCheckBox( mCriteriaFrame, "mCompletedCheck" ); 75 mCompletedCheck = new QCheckBox( mCriteriaFrame, "mCompletedCheck" );
75 layout7->addWidget( mCompletedCheck ); 76 layout7->addWidget( mCompletedCheck );
76 mCriteriaFrameLayout->addLayout( layout7 ); 77 mCriteriaFrameLayout->addLayout( layout7 );
77 78
78 layout9 = new QHBoxLayout( 0, 0, 6, "layout9"); 79 layout9 = new QHBoxLayout( 0, 0, 6, "layout9");
79 80
80 textLabel1_2 = new QLabel( mCriteriaFrame, "textLabel1_2" ); 81 textLabel1_2 = new QLabel( mCriteriaFrame, "textLabel1_2" );
81 layout9->addWidget( textLabel1_2 ); 82 layout9->addWidget( textLabel1_2 );
82 83
83 mEventCheck = new QCheckBox( mCriteriaFrame, "mEventCheck" ); 84 mEventCheck = new QCheckBox( mCriteriaFrame, "mEventCheck" );
84 layout9->addWidget( mEventCheck ); 85 layout9->addWidget( mEventCheck );
85 86
86 mTodoCheck = new QCheckBox( mCriteriaFrame, "mTodoCheck" ); 87 mTodoCheck = new QCheckBox( mCriteriaFrame, "mTodoCheck" );
87 layout9->addWidget( mTodoCheck ); 88 layout9->addWidget( mTodoCheck );
88 89
89 mJournalCheck = new QCheckBox( mCriteriaFrame, "mJournalCheck" ); 90 mJournalCheck = new QCheckBox( mCriteriaFrame, "mJournalCheck" );
90 layout9->addWidget( mJournalCheck ); 91 layout9->addWidget( mJournalCheck );
91 mCriteriaFrameLayout->addLayout( layout9 ); 92 mCriteriaFrameLayout->addLayout( layout9 );
92 93
93 layout2 = new QHBoxLayout( 0, 0, 0, "layout2"); 94 layout2 = new QHBoxLayout( 0, 0, 0, "layout2");
94 95
95 textLabel2 = new QLabel( mCriteriaFrame, "textLabel2" ); 96 textLabel2 = new QLabel( mCriteriaFrame, "textLabel2" );
96 layout2->addWidget( textLabel2 ); 97 layout2->addWidget( textLabel2 );
97 98
98 mPublicCheck = new QCheckBox( mCriteriaFrame, "mPublicCheck" ); 99 mPublicCheck = new QCheckBox( mCriteriaFrame, "mPublicCheck" );
99 layout2->addWidget( mPublicCheck ); 100 layout2->addWidget( mPublicCheck );
100 101
101 mPrivateCheck = new QCheckBox( mCriteriaFrame, "mPrivateCheck" ); 102 mPrivateCheck = new QCheckBox( mCriteriaFrame, "mPrivateCheck" );
102 layout2->addWidget( mPrivateCheck ); 103 layout2->addWidget( mPrivateCheck );
103 104
104 mConfidentialCheck = new QCheckBox( mCriteriaFrame, "mConfidentialCheck" ); 105 mConfidentialCheck = new QCheckBox( mCriteriaFrame, "mConfidentialCheck" );
105 mConfidentialCheck->setChecked( FALSE ); 106 mConfidentialCheck->setChecked( FALSE );
106 layout2->addWidget( mConfidentialCheck ); 107 layout2->addWidget( mConfidentialCheck );
107 mCriteriaFrameLayout->addLayout( layout2 ); 108 mCriteriaFrameLayout->addLayout( layout2 );
108 FilterEdit_baseLayout->addWidget( mCriteriaFrame ); 109 FilterEdit_baseLayout->addWidget( mCriteriaFrame );
109 languageChange(); 110 languageChange();
110 resize( QSize(324, 281).expandedTo(minimumSizeHint()) ); 111 resize( QSize(300, 200).expandedTo(minimumSizeHint()) );
111 clearWState( WState_Polished ); 112 clearWState( WState_Polished );
112} 113}
113 114
114/* 115/*
115 * Destroys the object and frees any allocated resources 116 * Destroys the object and frees any allocated resources
116 */ 117 */
117FilterEdit_base::~FilterEdit_base() 118FilterEdit_base::~FilterEdit_base()
118{ 119{
119 // no need to delete child widgets, Qt does it all for us 120 // no need to delete child widgets, Qt does it all for us
120} 121}
121 122
122/* 123/*
123 * Sets the strings of the subwidgets using the current 124 * Sets the strings of the subwidgets using the current
124 * language. 125 * language.
125 */ 126 */
126void FilterEdit_base::languageChange() 127void FilterEdit_base::languageChange()
127{ 128{
128 setCaption( tr( "FilterEditor" ) ); 129 setCaption( tr( "FilterEditor" ) );
129 ButtonGroup1->setTitle( tr( "Categories" ) ); 130 ButtonGroup1->setTitle( tr( "Categories" ) );
130 mCatShowCheck->setText( tr( "Include" ) ); 131 mCatShowCheck->setText( tr( "Include" ) );
131 mCatHideCheck->setText( tr( "Exclude" ) ); 132 mCatHideCheck->setText( tr( "Exclude" ) );
132 mCatEditButton->setText( tr( "Edit Selection..." ) ); 133 mCatEditButton->setText( tr( "Edit Selection..." ) );
133 textLabel1->setText( tr( "Exclude" ) ); 134 textLabel1->setText( tr( "Exclude" ) );
134 mRecurringCheck->setText( tr( "recurring events" ) ); 135 if (QApplication::desktop()->width() > 480 ) {
135 mCompletedCheck->setText( tr( "completed to-dos" ) ); 136 mCompletedCheck->setText( tr( "completed to-dos" ) );
137 mRecurringCheck->setText( tr( "recurring events" ) );
138 }
139 else {
140 mCompletedCheck->setText( tr( "compl.todos" ) );
141 mRecurringCheck->setText( tr( "recurr. events" ) );
142 }
136 textLabel1_2->setText( tr( "Exclude" ) ); 143 textLabel1_2->setText( tr( "Exclude" ) );
137 mEventCheck->setText( tr( "events" ) ); 144 mEventCheck->setText( tr( "events" ) );
138 mTodoCheck->setText( tr( "todos" ) ); 145 mTodoCheck->setText( tr( "todos" ) );
139 mJournalCheck->setText( tr( "journals" ) ); 146 mJournalCheck->setText( tr( "journals" ) );
140 textLabel2->setText( tr( "Include" ) ); 147 textLabel2->setText( tr( "Include" ) );
141 mPublicCheck->setText( tr( "public" ) ); 148 mPublicCheck->setText( tr( "public" ) );
142 mPrivateCheck->setText( tr( "private" ) ); 149 mPrivateCheck->setText( tr( "private" ) );
143 mConfidentialCheck->setText( tr( "confidential" ) ); 150 mConfidentialCheck->setText( tr( "confidential" ) );
144} 151}
145 152
diff --git a/korganizer/koeditordetails.cpp b/korganizer/koeditordetails.cpp
index b73d22f..cf0a458 100644
--- a/korganizer/koeditordetails.cpp
+++ b/korganizer/koeditordetails.cpp
@@ -1,440 +1,441 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in thse hope that it will be useful, 10 This program is distributed in thse 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 <qtooltip.h> 24#include <qtooltip.h>
25#include <qfiledialog.h> 25#include <qfiledialog.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qvgroupbox.h> 29#include <qvgroupbox.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qapp.h> 32#include <qapp.h>
33 33
34#include <klocale.h> 34#include <klocale.h>
35#include <kglobal.h> 35#include <kglobal.h>
36#include <kiconloader.h> 36#include <kiconloader.h>
37#include <kstandarddirs.h> 37#include <kstandarddirs.h>
38#include <kmessagebox.h> 38#include <kmessagebox.h>
39#ifndef KORG_NOKABC 39#ifndef KORG_NOKABC
40 40
41#ifdef DESKTOP_VERSION 41#ifdef DESKTOP_VERSION
42#include <kabc/addresseedialog.h> 42#include <kabc/addresseedialog.h>
43#else //DESKTOP_VERSION 43#else //DESKTOP_VERSION
44#include <externalapphandler.h> 44#include <externalapphandler.h>
45#endif //DESKTOP_VERSION 45#endif //DESKTOP_VERSION
46 46
47#endif 47#endif
48 48
49#include <libkcal/incidence.h> 49#include <libkcal/incidence.h>
50 50
51#include "koprefs.h" 51#include "koprefs.h"
52 52
53#include "koeditordetails.h" 53#include "koeditordetails.h"
54 54
55template <> 55template <>
56CustomListViewItem<class Attendee *>::~CustomListViewItem() 56CustomListViewItem<class Attendee *>::~CustomListViewItem()
57{ 57{
58 delete mData; 58 delete mData;
59} 59}
60 60
61template <> 61template <>
62void CustomListViewItem<class Attendee *>::updateItem() 62void CustomListViewItem<class Attendee *>::updateItem()
63{ 63{
64 setText(0,mData->name()); 64 setText(0,mData->name());
65 setText(1,mData->email()); 65 setText(1,mData->email());
66 setText(2,mData->roleStr()); 66 setText(2,mData->roleStr());
67 setText(3,mData->statusStr()); 67 setText(3,mData->statusStr());
68 if (mData->RSVP() && !mData->email().isEmpty()) 68 if (mData->RSVP() && !mData->email().isEmpty())
69 setPixmap(4,SmallIcon("mailappt")); 69 setPixmap(4,SmallIcon("mailappt"));
70 else 70 else
71 setPixmap(4,SmallIcon("nomailappt")); 71 setPixmap(4,SmallIcon("nomailappt"));
72} 72}
73 73
74 74
75KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name) 75KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name)
76 : QWidget( parent, name), mDisableItemUpdate( false ) 76 : QWidget( parent, name), mDisableItemUpdate( false )
77{ 77{
78 QGridLayout *topLayout = new QGridLayout(this); 78 QGridLayout *topLayout = new QGridLayout(this);
79 topLayout->setSpacing(spacing); 79 topLayout->setSpacing(spacing);
80 80
81 QString organizer = KOPrefs::instance()->email(); 81 QString organizer = KOPrefs::instance()->email();
82 mOrganizerLabel = new QLabel(i18n("Organizer: %1").arg(organizer),this); 82 mOrganizerLabel = new QLabel(i18n("Organizer: %1").arg(organizer),this);
83 83
84 mListView = new KListView(this,"mListView"); 84 mListView = new KListView(this,"mListView");
85 mListView->addColumn(i18n("Name"),180); 85 mListView->addColumn(i18n("Name"),180);
86 mListView->addColumn(i18n("Email"),180); 86 mListView->addColumn(i18n("Email"),180);
87 mListView->addColumn(i18n("Role"),60); 87 mListView->addColumn(i18n("Role"),60);
88 mListView->addColumn(i18n("Status"),100); 88 mListView->addColumn(i18n("Status"),100);
89 mListView->addColumn(i18n("RSVP"),35); 89 mListView->addColumn(i18n("RSVP"),35);
90 if ( KOPrefs::instance()->mCompactDialogs ) { 90 if ( KOPrefs::instance()->mCompactDialogs ) {
91 //mListView->setFixedHeight(78); 91 //mListView->setFixedHeight(78);
92 } 92 }
93 93
94 connect(mListView,SIGNAL(selectionChanged(QListViewItem *)), 94 connect(mListView,SIGNAL(selectionChanged(QListViewItem *)),
95 SLOT(updateAttendeeInput())); 95 SLOT(updateAttendeeInput()));
96 96
97 QLabel *attendeeLabel = new QLabel(this); 97 QLabel *attendeeLabel = new QLabel(this);
98 attendeeLabel->setText(i18n("Name:")); 98 attendeeLabel->setText(i18n("Name:"));
99 attendeeLabel->setFixedSize( attendeeLabel->sizeHint() ); 99 attendeeLabel->setFixedSize( attendeeLabel->sizeHint() );
100 mNameEdit = new QLineEdit(this); 100 mNameEdit = new QLineEdit(this);
101 connect(mNameEdit,SIGNAL(textChanged(const QString &)), 101 connect(mNameEdit,SIGNAL(textChanged(const QString &)),
102 SLOT(updateAttendeeItem())); 102 SLOT(updateAttendeeItem()));
103 103
104 mUidEdit = new QLineEdit(0); 104 mUidEdit = new QLineEdit(0);
105 mUidEdit->setText(""); 105 mUidEdit->setText("");
106 106
107 QLabel *emailLabel = new QLabel(this); 107 QLabel *emailLabel = new QLabel(this);
108 emailLabel->setText(i18n("Email:")); 108 emailLabel->setText(i18n("Email:"));
109 mEmailEdit = new QLineEdit(this); 109 mEmailEdit = new QLineEdit(this);
110 connect(mEmailEdit,SIGNAL(textChanged(const QString &)), 110 connect(mEmailEdit,SIGNAL(textChanged(const QString &)),
111 SLOT(updateAttendeeItem())); 111 SLOT(updateAttendeeItem()));
112 112
113 QLabel *attendeeRoleLabel = new QLabel(this); 113 QLabel *attendeeRoleLabel = new QLabel(this);
114 attendeeRoleLabel->setText(i18n("Role:")); 114 attendeeRoleLabel->setText(i18n("Role:"));
115 mRoleCombo = new QComboBox(false,this); 115 mRoleCombo = new QComboBox(false,this);
116 mRoleCombo->insertStringList(Attendee::roleList()); 116 mRoleCombo->insertStringList(Attendee::roleList());
117 connect(mRoleCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem())); 117 connect(mRoleCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem()));
118 118
119 QLabel *statusLabel = new QLabel(this); 119 QLabel *statusLabel = new QLabel(this);
120 statusLabel->setText( i18n("Status:") ); 120 statusLabel->setText( i18n("Status:") );
121 121
122 mStatusCombo = new QComboBox(false,this); 122 mStatusCombo = new QComboBox(false,this);
123 mStatusCombo->insertStringList(Attendee::statusList()); 123 mStatusCombo->insertStringList(Attendee::statusList());
124 connect(mStatusCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem())); 124 connect(mStatusCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem()));
125 125
126 mRsvpButton = new QCheckBox(this); 126 mRsvpButton = new QCheckBox(this);
127 mRsvpButton->setText(i18n("Request response")); 127 mRsvpButton->setText(i18n("Request response"));
128 connect(mRsvpButton,SIGNAL(clicked()),SLOT(updateAttendeeItem())); 128 connect(mRsvpButton,SIGNAL(clicked()),SLOT(updateAttendeeItem()));
129 QWidget *buttonBox = new QWidget(this); 129 QWidget *buttonBox = new QWidget(this);
130 QVBoxLayout *buttonLayout = new QVBoxLayout(buttonBox); 130 QVBoxLayout *buttonLayout = new QVBoxLayout(buttonBox);
131 131
132 QPushButton *newButton = new QPushButton(i18n("&New"),buttonBox); 132 QPushButton *newButton = new QPushButton(i18n("&New"),buttonBox);
133 buttonLayout->addWidget(newButton); 133 buttonLayout->addWidget(newButton);
134 connect(newButton,SIGNAL(clicked()),SLOT(addNewAttendee())); 134 connect(newButton,SIGNAL(clicked()),SLOT(addNewAttendee()));
135 135
136 mRemoveButton = new QPushButton(i18n("&Remove"),buttonBox); 136 mRemoveButton = new QPushButton(i18n("&Remove"),buttonBox);
137 buttonLayout->addWidget(mRemoveButton); 137 buttonLayout->addWidget(mRemoveButton);
138 connect(mRemoveButton, SIGNAL(clicked()),SLOT(removeAttendee())); 138 connect(mRemoveButton, SIGNAL(clicked()),SLOT(removeAttendee()));
139 139
140 mAddressBookButton = new QPushButton(i18n("Address &Book..."),this); 140 mAddressBookButton = new QPushButton(i18n("Address &Book..."),this);
141 // buttonLayout->addWidget(mAddressBookButton); 141 // buttonLayout->addWidget(mAddressBookButton);
142 connect(mAddressBookButton,SIGNAL(clicked()),SLOT(openAddressBook())); 142 connect(mAddressBookButton,SIGNAL(clicked()),SLOT(openAddressBook()));
143 //mRoleCombo->setFixedSize( mRoleCombo->sizeHint () ); 143 //mRoleCombo->setFixedSize( mRoleCombo->sizeHint () );
144 144
145 if (qApp->desktop()->width() < 640 ) { 145 if (qApp->desktop()->width() < 640 ) {
146 if ( qApp->desktop()->width() < 300 ) 146 if ( qApp->desktop()->width() < 300 )
147 mListView->setFixedHeight(80); 147 topLayout->setSpacing(1);
148 ;//mListView->setFixedHeight(80);
148 topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,3); 149 topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,3);
149 topLayout->addMultiCellWidget(mListView,1,1,0,3); 150 topLayout->addMultiCellWidget(mListView,1,1,0,3);
150 topLayout->addWidget(attendeeLabel,3,0); 151 topLayout->addWidget(attendeeLabel,3,0);
151 topLayout->addMultiCellWidget(mNameEdit,3,3,1,2); 152 topLayout->addMultiCellWidget(mNameEdit,3,3,1,2);
152 topLayout->addWidget(emailLabel,4,0); 153 topLayout->addWidget(emailLabel,4,0);
153 topLayout->addMultiCellWidget(mEmailEdit,4,4,1,2); 154 topLayout->addMultiCellWidget(mEmailEdit,4,4,1,2);
154 topLayout->addWidget(attendeeRoleLabel,5,0); 155 topLayout->addWidget(attendeeRoleLabel,5,0);
155 topLayout->addMultiCellWidget(mRoleCombo,5,5,1,3); 156 topLayout->addMultiCellWidget(mRoleCombo,5,5,1,3);
156 topLayout->addWidget(statusLabel,6,0); 157 topLayout->addWidget(statusLabel,6,0);
157 topLayout->addMultiCellWidget(mStatusCombo,6,6,1,3); 158 topLayout->addMultiCellWidget(mStatusCombo,6,6,1,3);
158 topLayout->addMultiCellWidget(mAddressBookButton,2,2,2,3); 159 topLayout->addMultiCellWidget(mAddressBookButton,2,2,2,3);
159 topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); 160 topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1);
160 topLayout->addMultiCellWidget(buttonBox,3,4,3,3); 161 topLayout->addMultiCellWidget(buttonBox,3,4,3,3);
161 topLayout->setRowStretch(1,2); 162 topLayout->setRowStretch(1,2);
162 topLayout->setColStretch(0,0); 163 topLayout->setColStretch(0,0);
163 topLayout->setColStretch(1,2); 164 topLayout->setColStretch(1,2);
164 topLayout->setColStretch(2,1); 165 topLayout->setColStretch(2,1);
165 topLayout->setColStretch(3,1); 166 topLayout->setColStretch(3,1);
166 167
167 } else { 168 } else {
168 topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,5); 169 topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,5);
169 topLayout->addMultiCellWidget(mListView,1,1,0,5); 170 topLayout->addMultiCellWidget(mListView,1,1,0,5);
170 topLayout->addWidget(attendeeLabel,3,0); 171 topLayout->addWidget(attendeeLabel,3,0);
171 topLayout->addMultiCellWidget(mNameEdit,3,3,1,4); 172 topLayout->addMultiCellWidget(mNameEdit,3,3,1,4);
172 topLayout->addWidget(emailLabel,4,0); 173 topLayout->addWidget(emailLabel,4,0);
173 topLayout->addMultiCellWidget(mEmailEdit,4,4,1,4); 174 topLayout->addMultiCellWidget(mEmailEdit,4,4,1,4);
174 topLayout->addWidget(attendeeRoleLabel,5,0); 175 topLayout->addWidget(attendeeRoleLabel,5,0);
175 topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2); 176 topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2);
176 topLayout->addWidget(statusLabel,5,3); 177 topLayout->addWidget(statusLabel,5,3);
177 topLayout->addMultiCellWidget(mStatusCombo,5,5,4,5); 178 topLayout->addMultiCellWidget(mStatusCombo,5,5,4,5);
178 topLayout->addMultiCellWidget(mAddressBookButton,2,2,4,5); 179 topLayout->addMultiCellWidget(mAddressBookButton,2,2,4,5);
179 topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); 180 topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1);
180 topLayout->addMultiCellWidget(buttonBox,3,4,5,5); 181 topLayout->addMultiCellWidget(buttonBox,3,4,5,5);
181 topLayout->setRowStretch(1,5); 182 topLayout->setRowStretch(1,5);
182 topLayout->setColStretch(0,0); 183 topLayout->setColStretch(0,0);
183 } 184 }
184// #if 0 185// #if 0
185// topLayout->setColStretch(2,1); 186// topLayout->setColStretch(2,1);
186// topLayout->addWidget(statusLabel,3,3); 187// topLayout->addWidget(statusLabel,3,3);
187// topLayout->addWidget(mStatusCombo,3,4); 188// topLayout->addWidget(mStatusCombo,3,4);
188// #else 189// #else
189// topLayout->addWidget(statusLabel,4,3); 190// topLayout->addWidget(statusLabel,4,3);
190// // topLayout->addWidget(mStatusCombo,4,3); 191// // topLayout->addWidget(mStatusCombo,4,3);
191// topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5); 192// topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5);
192 193
193// #endif 194// #endif
194// // topLayout->setRowStretch(5,1); 195// // topLayout->setRowStretch(5,1);
195// topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1); 196// topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1);
196// topLayout->addMultiCellWidget(buttonBox,2,3,5,5); 197// topLayout->addMultiCellWidget(buttonBox,2,3,5,5);
197// topLayout->setRowStretch(1,5); 198// topLayout->setRowStretch(1,5);
198// topLayout->setColStretch(0,0); 199// topLayout->setColStretch(0,0);
199 200
200#ifdef KORG_NOKABC 201#ifdef KORG_NOKABC
201 mAddressBookButton->hide(); 202 mAddressBookButton->hide();
202#endif 203#endif
203 204
204 updateAttendeeInput(); 205 updateAttendeeInput();
205#ifndef DESKTOP_VERSION 206#ifndef DESKTOP_VERSION
206//US listen for arriving address resultsets 207//US listen for arriving address resultsets
207 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), 208 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)),
208 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); 209 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&)));
209#endif 210#endif
210 211
211} 212}
212 213
213KOEditorDetails::~KOEditorDetails() 214KOEditorDetails::~KOEditorDetails()
214{ 215{
215} 216}
216 217
217void KOEditorDetails::removeAttendee() 218void KOEditorDetails::removeAttendee()
218{ 219{
219 AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem(); 220 AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem();
220 if (!aItem) return; 221 if (!aItem) return;
221 222
222 Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(), 223 Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(),
223 aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(), 224 aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(),
224 aItem->data()->uid()); 225 aItem->data()->uid());
225 mdelAttendees.append(delA); 226 mdelAttendees.append(delA);
226 227
227 delete aItem; 228 delete aItem;
228 229
229 updateAttendeeInput(); 230 updateAttendeeInput();
230} 231}
231 232
232 233
233void KOEditorDetails::openAddressBook() 234void KOEditorDetails::openAddressBook()
234{ 235{
235#ifndef KORG_NOKABC 236#ifndef KORG_NOKABC
236 237
237#ifdef DESKTOP_VERSION 238#ifdef DESKTOP_VERSION
238 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 239 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
239 uint i=0; 240 uint i=0;
240 for (i=0; i < list.count(); i++) { 241 for (i=0; i < list.count(); i++) {
241 insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) ); 242 insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) );
242 } 243 }
243#else 244#else
244 bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 245 bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
245 // the result should now arrive through method insertAttendees 246 // the result should now arrive through method insertAttendees
246#endif 247#endif
247 248
248 249
249#if 0 250#if 0
250 KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this); 251 KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this);
251 if (!a.isEmpty()) { 252 if (!a.isEmpty()) {
252 insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) ); 253 insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) );
253 } 254 }
254#endif 255#endif
255#endif 256#endif
256} 257}
257 258
258 259
259void KOEditorDetails::addNewAttendee() 260void KOEditorDetails::addNewAttendee()
260{ 261{
261#if 0 262#if 0
262 // this is cool. If they didn't enter an email address, 263 // this is cool. If they didn't enter an email address,
263 // try to look it up in the address book and fill it in for them. 264 // try to look it up in the address book and fill it in for them.
264 if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) { 265 if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) {
265 KabAPI addrBook; 266 KabAPI addrBook;
266 QString name; 267 QString name;
267 std::list<AddressBook::Entry> entries; 268 std::list<AddressBook::Entry> entries;
268 name = mNameEdit->text(); 269 name = mNameEdit->text();
269 if (addrBook.init() == AddressBook::NoError) { 270 if (addrBook.init() == AddressBook::NoError) {
270 if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) { 271 if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) {
271 kdDebug() << "positive match" << endl; 272 kdDebug() << "positive match" << endl;
272 // take first email address 273 // take first email address
273 if (!entries.front().emails.isEmpty() && 274 if (!entries.front().emails.isEmpty() &&
274 entries.front().emails.first().length()>0) 275 entries.front().emails.first().length()>0)
275 mEmailEdit->setText(entries.front().emails.first()); 276 mEmailEdit->setText(entries.front().emails.first());
276 } 277 }
277 } 278 }
278 } 279 }
279#endif 280#endif
280 281
281 Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)")); 282 Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)"));
282 insertAttendee(a); 283 insertAttendee(a);
283} 284}
284 285
285//the map includes name/email pairs, that comes from Ka/Pi 286//the map includes name/email pairs, that comes from Ka/Pi
286void KOEditorDetails::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList) 287void KOEditorDetails::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList)
287{ 288{
288 if (uid == this->name()) 289 if (uid == this->name())
289 { 290 {
290 for ( int i = 0; i < nameList.count(); i++) 291 for ( int i = 0; i < nameList.count(); i++)
291 { 292 {
292 QString _name = nameList[i]; 293 QString _name = nameList[i];
293 QString _email = emailList[i]; 294 QString _email = emailList[i];
294 QString _uid = uidList[i]; 295 QString _uid = uidList[i];
295 296
296 Attendee *a = new Attendee(_name,_email,false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant, _uid); 297 Attendee *a = new Attendee(_name,_email,false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant, _uid);
297 insertAttendee(a); 298 insertAttendee(a);
298 } 299 }
299 } 300 }
300 301
301} 302}
302 303
303void KOEditorDetails::insertAttendee(Attendee *a) 304void KOEditorDetails::insertAttendee(Attendee *a)
304{ 305{
305 AttendeeListItem *first = (AttendeeListItem*) mListView->firstChild(); 306 AttendeeListItem *first = (AttendeeListItem*) mListView->firstChild();
306 while (first) { 307 while (first) {
307 if ( first->data()->name() == a->name() && first->data()->email() == a->email() ) 308 if ( first->data()->name() == a->name() && first->data()->email() == a->email() )
308 return; 309 return;
309 first = (AttendeeListItem*) first->nextSibling(); 310 first = (AttendeeListItem*) first->nextSibling();
310 } 311 }
311 312
312 AttendeeListItem *item = new AttendeeListItem(a,mListView); 313 AttendeeListItem *item = new AttendeeListItem(a,mListView);
313 mListView->setSelected( item, true ); 314 mListView->setSelected( item, true );
314} 315}
315 316
316void KOEditorDetails::setDefaults() 317void KOEditorDetails::setDefaults()
317{ 318{
318 mRsvpButton->setChecked(true); 319 mRsvpButton->setChecked(true);
319 mListView->clear(); 320 mListView->clear();
320 mdelAttendees.clear(); 321 mdelAttendees.clear();
321 clearAttendeeInput(); 322 clearAttendeeInput();
322 mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email())); 323 mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email()));
323 324
324 mNameEdit->setText(""); 325 mNameEdit->setText("");
325 mUidEdit->setText(""); 326 mUidEdit->setText("");
326 mEmailEdit->setText(""); 327 mEmailEdit->setText("");
327 mRoleCombo->setCurrentItem( 0 ); 328 mRoleCombo->setCurrentItem( 0 );
328 mStatusCombo->setCurrentItem( 0 ); 329 mStatusCombo->setCurrentItem( 0 );
329 330
330} 331}
331 332
332void KOEditorDetails::readEvent(Incidence *event) 333void KOEditorDetails::readEvent(Incidence *event)
333{ 334{
334 setDefaults(); 335 setDefaults();
335 //mListView->clear(); 336 //mListView->clear();
336 //mdelAttendees.clear(); 337 //mdelAttendees.clear();
337 QPtrList<Attendee> tmpAList = event->attendees(); 338 QPtrList<Attendee> tmpAList = event->attendees();
338 Attendee *a; 339 Attendee *a;
339 for (a = tmpAList.first(); a; a = tmpAList.next()) 340 for (a = tmpAList.first(); a; a = tmpAList.next())
340 insertAttendee(new Attendee(*a)); 341 insertAttendee(new Attendee(*a));
341 342
342 mListView->setSelected( mListView->firstChild(), true ); 343 mListView->setSelected( mListView->firstChild(), true );
343 mOrganizerLabel->setText(i18n("Organizer: %1").arg(event->organizer())); 344 mOrganizerLabel->setText(i18n("Organizer: %1").arg(event->organizer()));
344} 345}
345 346
346void KOEditorDetails::writeEvent(Incidence *event) 347void KOEditorDetails::writeEvent(Incidence *event)
347{ 348{
348 event->clearAttendees(); 349 event->clearAttendees();
349 QListViewItem *item; 350 QListViewItem *item;
350 AttendeeListItem *a; 351 AttendeeListItem *a;
351 for (item = mListView->firstChild(); item; 352 for (item = mListView->firstChild(); item;
352 item = item->nextSibling()) { 353 item = item->nextSibling()) {
353 a = (AttendeeListItem *)item; 354 a = (AttendeeListItem *)item;
354 event->addAttendee(new Attendee(*(a->data()))); 355 event->addAttendee(new Attendee(*(a->data())));
355 } 356 }
356 event->setOrganizer(KOPrefs::instance()->email()); 357 event->setOrganizer(KOPrefs::instance()->email());
357} 358}
358 359
359void KOEditorDetails::cancelAttendeeEvent(Incidence *event) 360void KOEditorDetails::cancelAttendeeEvent(Incidence *event)
360{ 361{
361 event->clearAttendees(); 362 event->clearAttendees();
362 Attendee * att; 363 Attendee * att;
363 for (att=mdelAttendees.first();att;att=mdelAttendees.next()) { 364 for (att=mdelAttendees.first();att;att=mdelAttendees.next()) {
364 event->addAttendee(new Attendee(*att)); 365 event->addAttendee(new Attendee(*att));
365 } 366 }
366 mdelAttendees.clear(); 367 mdelAttendees.clear();
367} 368}
368 369
369bool KOEditorDetails::validateInput() 370bool KOEditorDetails::validateInput()
370{ 371{
371 return true; 372 return true;
372} 373}
373 374
374void KOEditorDetails::updateAttendeeInput() 375void KOEditorDetails::updateAttendeeInput()
375{ 376{
376 QListViewItem *item = mListView->selectedItem(); 377 QListViewItem *item = mListView->selectedItem();
377 AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); 378 AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item );
378 if (aItem) { 379 if (aItem) {
379 fillAttendeeInput( aItem ); 380 fillAttendeeInput( aItem );
380 } else { 381 } else {
381 clearAttendeeInput(); 382 clearAttendeeInput();
382 } 383 }
383} 384}
384 385
385void KOEditorDetails::clearAttendeeInput() 386void KOEditorDetails::clearAttendeeInput()
386{ 387{
387 mNameEdit->setText(""); 388 mNameEdit->setText("");
388 mUidEdit->setText(""); 389 mUidEdit->setText("");
389 mEmailEdit->setText(""); 390 mEmailEdit->setText("");
390 mRoleCombo->setCurrentItem(0); 391 mRoleCombo->setCurrentItem(0);
391 mStatusCombo->setCurrentItem(0); 392 mStatusCombo->setCurrentItem(0);
392 mRsvpButton->setChecked(true); 393 mRsvpButton->setChecked(true);
393 setEnabledAttendeeInput( false ); 394 setEnabledAttendeeInput( false );
394} 395}
395 396
396void KOEditorDetails::fillAttendeeInput( AttendeeListItem *aItem ) 397void KOEditorDetails::fillAttendeeInput( AttendeeListItem *aItem )
397{ 398{
398 Attendee *a = aItem->data(); 399 Attendee *a = aItem->data();
399 mDisableItemUpdate = true; 400 mDisableItemUpdate = true;
400 mNameEdit->setText(a->name()); 401 mNameEdit->setText(a->name());
401 mUidEdit->setText(a->uid()); 402 mUidEdit->setText(a->uid());
402 mEmailEdit->setText(a->email()); 403 mEmailEdit->setText(a->email());
403 mRoleCombo->setCurrentItem(a->role()); 404 mRoleCombo->setCurrentItem(a->role());
404 mStatusCombo->setCurrentItem(a->status()); 405 mStatusCombo->setCurrentItem(a->status());
405 mRsvpButton->setChecked(a->RSVP()); 406 mRsvpButton->setChecked(a->RSVP());
406 407
407 mDisableItemUpdate = false; 408 mDisableItemUpdate = false;
408 409
409 setEnabledAttendeeInput( true ); 410 setEnabledAttendeeInput( true );
410} 411}
411 412
412void KOEditorDetails::setEnabledAttendeeInput( bool enabled ) 413void KOEditorDetails::setEnabledAttendeeInput( bool enabled )
413{ 414{
414 mNameEdit->setEnabled( enabled ); 415 mNameEdit->setEnabled( enabled );
415 mEmailEdit->setEnabled( enabled ); 416 mEmailEdit->setEnabled( enabled );
416 mRoleCombo->setEnabled( enabled ); 417 mRoleCombo->setEnabled( enabled );
417 mStatusCombo->setEnabled( enabled ); 418 mStatusCombo->setEnabled( enabled );
418 mRsvpButton->setEnabled( enabled ); 419 mRsvpButton->setEnabled( enabled );
419 420
420 mRemoveButton->setEnabled( enabled ); 421 mRemoveButton->setEnabled( enabled );
421} 422}
422 423
423void KOEditorDetails::updateAttendeeItem() 424void KOEditorDetails::updateAttendeeItem()
424{ 425{
425 if (mDisableItemUpdate) return; 426 if (mDisableItemUpdate) return;
426 427
427 QListViewItem *item = mListView->selectedItem(); 428 QListViewItem *item = mListView->selectedItem();
428 AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); 429 AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item );
429 if ( !aItem ) return; 430 if ( !aItem ) return;
430 431
431 Attendee *a = aItem->data(); 432 Attendee *a = aItem->data();
432 433
433 a->setName( mNameEdit->text() ); 434 a->setName( mNameEdit->text() );
434 a->setUid( mUidEdit->text() ); 435 a->setUid( mUidEdit->text() );
435 a->setEmail( mEmailEdit->text() ); 436 a->setEmail( mEmailEdit->text() );
436 a->setRole( Attendee::Role( mRoleCombo->currentItem() ) ); 437 a->setRole( Attendee::Role( mRoleCombo->currentItem() ) );
437 a->setStatus( Attendee::PartStat( mStatusCombo->currentItem() ) ); 438 a->setStatus( Attendee::PartStat( mStatusCombo->currentItem() ) );
438 a->setRSVP( mRsvpButton->isChecked() ); 439 a->setRSVP( mRsvpButton->isChecked() );
439 aItem->updateItem(); 440 aItem->updateItem();
440} 441}
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp
index b4fe965..f5eb52e 100644
--- a/korganizer/koeditorgeneral.cpp
+++ b/korganizer/koeditorgeneral.cpp
@@ -1,518 +1,518 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qwidget.h> 24#include <qwidget.h>
25#include <qtooltip.h> 25#include <qtooltip.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qvgroupbox.h> 29#include <qvgroupbox.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qfile.h> 32#include <qfile.h>
33 33
34 34
35#include <kglobal.h> 35#include <kglobal.h>
36#include <kdebug.h> 36#include <kdebug.h>
37#include <klocale.h> 37#include <klocale.h>
38#include <kiconloader.h> 38#include <kiconloader.h>
39#include <kmessagebox.h> 39#include <kmessagebox.h>
40#include <kfiledialog.h> 40#include <kfiledialog.h>
41#include <kstandarddirs.h> 41#include <kstandarddirs.h>
42 42
43#include <libkcal/todo.h> 43#include <libkcal/todo.h>
44#include <libkcal/event.h> 44#include <libkcal/event.h>
45#include <libkdepim/categoryselectdialog.h> 45#include <libkdepim/categoryselectdialog.h>
46#include <libkdepim/kdateedit.h> 46#include <libkdepim/kdateedit.h>
47 47
48#include "koprefs.h" 48#include "koprefs.h"
49#include "koglobals.h" 49#include "koglobals.h"
50 50
51#include "koeditorgeneral.h" 51#include "koeditorgeneral.h"
52#include "kolocationbox.h" 52#include "kolocationbox.h"
53#ifndef DESKTOP_VERSION 53#ifndef DESKTOP_VERSION
54#include <qpe/qpeapplication.h> 54#include <qpe/qpeapplication.h>
55#else 55#else
56#include <qapplication.h> 56#include <qapplication.h>
57#endif 57#endif
58 58
59KOEditorGeneral::KOEditorGeneral(QObject* parent, const char* name) : 59KOEditorGeneral::KOEditorGeneral(QObject* parent, const char* name) :
60 QObject( parent, name) 60 QObject( parent, name)
61{ 61{
62} 62}
63 63
64KOEditorGeneral::~KOEditorGeneral() 64KOEditorGeneral::~KOEditorGeneral()
65{ 65{
66} 66}
67 67
68void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout) 68void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout)
69{ 69{
70 QGridLayout *headerLayout = new QGridLayout(topLayout); 70 QGridLayout *headerLayout = new QGridLayout(topLayout);
71 71
72#if 0 72#if 0
73 mOwnerLabel = new QLabel(i18n("Owner:"),parent); 73 mOwnerLabel = new QLabel(i18n("Owner:"),parent);
74 headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1); 74 headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1);
75#endif 75#endif
76 76
77 QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent); 77 QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent);
78 headerLayout->addWidget(summaryLabel,1,0); 78 headerLayout->addWidget(summaryLabel,1,0);
79 79
80 mSummaryEdit = new KOLocationBox(TRUE,parent, 10); 80 mSummaryEdit = new KOLocationBox(TRUE,parent, 10);
81 mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); 81 mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) );
82 //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) ); 82 //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) );
83 //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() ); 83 //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() );
84 int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2; 84 int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2;
85 if ( QApplication::desktop()->width() > 320 ) 85 if ( QApplication::desktop()->width() > 320 )
86 mSummaryEdit->setMaximumHeight( hei +6 ); 86 mSummaryEdit->setMaximumHeight( hei +6 );
87 //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding ); 87 //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding );
88 // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink } 88 // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink }
89 // mSummaryEdit = new QLineEdit(parent); 89 // mSummaryEdit = new QLineEdit(parent);
90 headerLayout->addWidget(mSummaryEdit,1,1); 90 headerLayout->addWidget(mSummaryEdit,1,1);
91 connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); 91 connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) );
92 92
93 QLabel *locationLabel = new QLabel(i18n("Location:"),parent); 93 QLabel *locationLabel = new QLabel(i18n("Location:"),parent);
94 headerLayout->addWidget(locationLabel,2,0); 94 headerLayout->addWidget(locationLabel,2,0);
95 95
96 mLocationEdit = new KOLocationBox(TRUE,parent,10); 96 mLocationEdit = new KOLocationBox(TRUE,parent,10);
97 mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); 97 mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) );
98 if ( QApplication::desktop()->width() > 320 ) 98 if ( QApplication::desktop()->width() > 320 )
99 mLocationEdit->setMaximumHeight( hei + 6); 99 mLocationEdit->setMaximumHeight( hei + 6);
100 100
101 // mLocationEdit = new QLineEdit(parent); 101 // mLocationEdit = new QLineEdit(parent);
102 connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); 102 connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) );
103 headerLayout->addWidget(mLocationEdit,2,1); 103 headerLayout->addWidget(mLocationEdit,2,1);
104 headerLayout->setColStretch( 1, 10); 104 headerLayout->setColStretch( 1, 10);
105} 105}
106void KOEditorGeneral::setFocusOn( int i ) 106void KOEditorGeneral::setFocusOn( int i )
107{ 107{
108 qApp->processEvents(); 108 qApp->processEvents();
109 if ( i == 1 ) { 109 if ( i == 1 ) {
110 mDescriptionEdit->setFocus(); 110 mDescriptionEdit->setFocus();
111 mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333); 111 mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333);
112 } 112 }
113 if ( i == 2 ) { 113 if ( i == 2 ) {
114 mSummaryEdit->setFocus(); 114 mSummaryEdit->setFocus();
115 } 115 }
116 116
117} 117}
118void KOEditorGeneral::editCategories() 118void KOEditorGeneral::editCategories()
119{ 119{
120 // qDebug("KOEditorGeneral::editCategories() "); 120 // qDebug("KOEditorGeneral::editCategories() ");
121 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 121 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
122 connect(csd,SIGNAL(categoriesSelected(const QString &)), this ,SLOT(setCategories(const QString &))); 122 connect(csd,SIGNAL(categoriesSelected(const QString &)), this ,SLOT(setCategories(const QString &)));
123 //KOGlobals::fitDialogToScreen( csd ); 123 //KOGlobals::fitDialogToScreen( csd );
124 csd->setSelected( QStringList::split (",", mCategoriesLabel->text()) ); 124 csd->setSelected( QStringList::split (",", mCategoriesLabel->text()) );
125 csd->exec(); 125 csd->exec();
126 delete csd; 126 delete csd;
127} 127}
128void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout) 128void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout)
129{ 129{
130 QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout ); 130 QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout );
131 131
132 mCategoriesButton = new QPushButton(parent); 132 mCategoriesButton = new QPushButton(parent);
133 mCategoriesButton->setText(i18n("Categories...")); 133 mCategoriesButton->setText(i18n("Categories..."));
134 connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); 134 connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() ));
135 categoriesLayout->addWidget(mCategoriesButton); 135 categoriesLayout->addWidget(mCategoriesButton);
136 136
137 mCategoriesLabel = new QLabel(parent); 137 mCategoriesLabel = new QLabel(parent);
138 mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken); 138 mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
139 categoriesLayout->addWidget(mCategoriesLabel,1); 139 categoriesLayout->addWidget(mCategoriesLabel,1);
140} 140}
141 141
142void KOEditorGeneral::initSecrecy(QWidget *parent, QBoxLayout *topLayout) 142void KOEditorGeneral::initSecrecy(QWidget *parent, QBoxLayout *topLayout)
143{ 143{
144 QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout ); 144 QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout );
145 145
146 QLabel *secrecyLabel = new QLabel(i18n("Access:"),parent); 146 QLabel *secrecyLabel = new QLabel(i18n("Access:"),parent);
147 mCancelBox = new QCheckBox ( i18n("Cancelled"), parent); 147 mCancelBox = new QCheckBox ( i18n("Cancelled"), parent);
148 secrecyLayout->addWidget(mCancelBox); 148 secrecyLayout->addWidget(mCancelBox);
149 secrecyLayout->addWidget(secrecyLabel); 149 secrecyLayout->addWidget(secrecyLabel);
150 150
151 mSecrecyCombo = new QComboBox(parent); 151 mSecrecyCombo = new QComboBox(parent);
152 mSecrecyCombo->insertStringList(Incidence::secrecyList()); 152 mSecrecyCombo->insertStringList(Incidence::secrecyList());
153 secrecyLayout->addWidget(mSecrecyCombo); 153 secrecyLayout->addWidget(mSecrecyCombo);
154} 154}
155 155
156void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout) 156void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout)
157{ 157{
158 mDescriptionEdit = new KTextEdit(parent); 158 mDescriptionEdit = new KTextEdit(parent);
159 mDescriptionEdit->setFont(KOPrefs::instance()->mEditBoxFont ); 159 mDescriptionEdit->setFont(KOPrefs::instance()->mEditBoxFont );
160 mDescriptionEdit->append(""); 160 mDescriptionEdit->append("");
161 mDescriptionEdit->setReadOnly(false); 161 mDescriptionEdit->setReadOnly(false);
162 mDescriptionEdit->setOverwriteMode(false); 162 mDescriptionEdit->setOverwriteMode(false);
163 mDescriptionEdit->setWordWrap( KTextEdit::WidgetWidth ); 163 mDescriptionEdit->setWordWrap( KTextEdit::WidgetWidth );
164 topLayout->addWidget(mDescriptionEdit); 164 topLayout->addWidget(mDescriptionEdit);
165#ifndef DESKTOP_VERSION 165#ifndef DESKTOP_VERSION
166 QPEApplication::setStylusOperation( mDescriptionEdit, QPEApplication::RightOnHold ); 166 QPEApplication::setStylusOperation( mDescriptionEdit, QPEApplication::RightOnHold );
167#endif 167#endif
168 168
169} 169}
170 170
171void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout) 171void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout)
172{ 172{
173 QBoxLayout *alarmLayout = new QHBoxLayout(topLayout); 173 QBoxLayout *alarmLayout = new QHBoxLayout(topLayout);
174 174
175 //mAlarmBell = new QLabel(parent); 175 //mAlarmBell = new QLabel(parent);
176 //mAlarmBell->setPixmap(SmallIcon("bell")); 176 //mAlarmBell->setPixmap(SmallIcon("bell"));
177 //alarmLayout->addWidget(mAlarmBell); 177 //alarmLayout->addWidget(mAlarmBell);
178 if ( QApplication::desktop()->width() < 320 ) 178 if ( QApplication::desktop()->width() < 320 )
179 mAlarmButton = new QCheckBox(i18n("Rem."),parent); 179 mAlarmButton = new QCheckBox(i18n("Rem."),parent);
180 else 180 else
181 mAlarmButton = new QCheckBox(i18n("Reminder:"),parent); 181 mAlarmButton = new QCheckBox(i18n("Reminder:"),parent);
182 182
183 connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool))); 183 connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool)));
184 alarmLayout->addWidget(mAlarmButton); 184 alarmLayout->addWidget(mAlarmButton);
185 185
186 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; 186 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ;
187 alarmLayout->addWidget(mAlarmTimeEdit); 187 alarmLayout->addWidget(mAlarmTimeEdit);
188 mAlarmIncrCombo = new QComboBox(false, parent); 188 mAlarmIncrCombo = new QComboBox(false, parent);
189 if ( QApplication::desktop()->width() < 320 ) { 189 if ( QApplication::desktop()->width() < 320 ) {
190 mAlarmIncrCombo->insertItem(i18n("min")); 190 mAlarmIncrCombo->insertItem(i18n("min"));
191 mAlarmIncrCombo->insertItem(i18n("hou")); 191 mAlarmIncrCombo->insertItem(i18n("hou"));
192 mAlarmIncrCombo->insertItem(i18n("day")); 192 mAlarmIncrCombo->insertItem(i18n("day"));
193 mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() ); 193 mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() );
194 mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() ); 194 mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() );
195 } else { 195 } else {
196 mAlarmIncrCombo->insertItem(i18n("minute(s)")); 196 mAlarmIncrCombo->insertItem(i18n("minute(s)"));
197 mAlarmIncrCombo->insertItem(i18n("hour(s)")); 197 mAlarmIncrCombo->insertItem(i18n("hour(s)"));
198 mAlarmIncrCombo->insertItem(i18n("day(s)")); 198 mAlarmIncrCombo->insertItem(i18n("day(s)"));
199 } 199 }
200 200
201 // mAlarmIncrCombo->setMinimumHeight(20); 201 // mAlarmIncrCombo->setMinimumHeight(20);
202 alarmLayout->addWidget(mAlarmIncrCombo); 202 alarmLayout->addWidget(mAlarmIncrCombo);
203 mAlarmSoundButton = new QPushButton(parent); 203 mAlarmSoundButton = new QPushButton(parent);
204 mAlarmSoundButton->setPixmap(SmallIcon("playsound")); 204 mAlarmSoundButton->setPixmap(SmallIcon("playsound"));
205 mAlarmSoundButton->setToggleButton(true); 205 mAlarmSoundButton->setToggleButton(true);
206 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 206 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
207 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); 207 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound()));
208 alarmLayout->addWidget(mAlarmSoundButton); 208 alarmLayout->addWidget(mAlarmSoundButton);
209 209
210 mAlarmProgramButton = new QPushButton(parent); 210 mAlarmProgramButton = new QPushButton(parent);
211 mAlarmProgramButton->setPixmap(SmallIcon("run")); 211 mAlarmProgramButton->setPixmap(SmallIcon("run"));
212 mAlarmProgramButton->setToggleButton(true); 212 mAlarmProgramButton->setToggleButton(true);
213 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 213 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
214 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); 214 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram()));
215 alarmLayout->addWidget(mAlarmProgramButton); 215 alarmLayout->addWidget(mAlarmProgramButton);
216 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); 216 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 );
217 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); 217 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 );
218 // if ( KOPrefs::instance()->mCompactDialogs ) { 218 // if ( KOPrefs::instance()->mCompactDialogs ) {
219 // mAlarmSoundButton->hide(); 219 // mAlarmSoundButton->hide();
220 // mAlarmProgramButton->hide(); 220 // mAlarmProgramButton->hide();
221 // } 221 // }
222} 222}
223 223
224void KOEditorGeneral::pickAlarmSound() 224void KOEditorGeneral::pickAlarmSound()
225{ 225{
226 226
227 //QString prefix = mAlarmSound; 227 //QString prefix = mAlarmSound;
228 if (!mAlarmSoundButton->isOn()) { 228 if (!mAlarmSoundButton->isOn()) {
229 //mAlarmSound = ""; 229 //mAlarmSound = "";
230 QToolTip::remove(mAlarmSoundButton); 230 QToolTip::remove(mAlarmSoundButton);
231 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 231 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
232 mAlarmProgramButton->setOn(true); 232 mAlarmProgramButton->setOn(true);
233 mAlarmSoundButton->setOn(false); 233 mAlarmSoundButton->setOn(false);
234 } else { 234 } else {
235 QString fileName(KFileDialog::getOpenFileName(mAlarmSound, 235 QString fileName(KFileDialog::getOpenFileName(mAlarmSound,
236 i18n("*.wav|Wav Files"), 0)); 236 i18n("*.wav|Wav Files"), 0));
237 if (!fileName.isEmpty()) { 237 if (!fileName.isEmpty()) {
238 mAlarmSound = fileName; 238 mAlarmSound = fileName;
239 QToolTip::remove(mAlarmSoundButton); 239 QToolTip::remove(mAlarmSoundButton);
240 QString dispStr = i18n("Playing '%1'").arg(fileName); 240 QString dispStr = i18n("Playing '%1'").arg(fileName);
241 QToolTip::add(mAlarmSoundButton, dispStr); 241 QToolTip::add(mAlarmSoundButton, dispStr);
242 mAlarmProgramButton->setOn(false); 242 mAlarmProgramButton->setOn(false);
243 mAlarmSoundButton->setOn(true); 243 mAlarmSoundButton->setOn(true);
244 } else { 244 } else {
245 mAlarmProgramButton->setOn(true); 245 mAlarmProgramButton->setOn(true);
246 mAlarmSoundButton->setOn(false); 246 mAlarmSoundButton->setOn(false);
247 247
248 } 248 }
249 } 249 }
250 250
251 if (mAlarmProgramButton->isOn()) 251 if (mAlarmProgramButton->isOn())
252 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); 252 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) );
253 if ( mAlarmSoundButton->isOn()) 253 if ( mAlarmSoundButton->isOn())
254 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio.Al.: ") + mAlarmSound ); 254 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio.Al.: ") + getFittingPath(mAlarmSound) );
255} 255}
256 256
257void KOEditorGeneral::pickAlarmProgram() 257void KOEditorGeneral::pickAlarmProgram()
258{ 258{
259 if (!mAlarmProgramButton->isOn()) { 259 if (!mAlarmProgramButton->isOn()) {
260 //mAlarmProgram = ""; 260 //mAlarmProgram = "";
261 QToolTip::remove(mAlarmProgramButton); 261 QToolTip::remove(mAlarmProgramButton);
262 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 262 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
263 mAlarmProgramButton->setOn(false); 263 mAlarmProgramButton->setOn(false);
264 mAlarmSoundButton->setOn(true); 264 mAlarmSoundButton->setOn(true);
265 } else { 265 } else {
266 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); 266 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0));
267 if (!fileName.isEmpty()) { 267 if (!fileName.isEmpty()) {
268 mAlarmProgram = fileName; 268 mAlarmProgram = fileName;
269 QToolTip::remove(mAlarmProgramButton); 269 QToolTip::remove(mAlarmProgramButton);
270 QString dispStr = i18n("Running '%1'").arg(fileName); 270 QString dispStr = i18n("Running '%1'").arg(fileName);
271 QToolTip::add(mAlarmProgramButton, dispStr); 271 QToolTip::add(mAlarmProgramButton, dispStr);
272 mAlarmSoundButton->setOn(false); 272 mAlarmSoundButton->setOn(false);
273 mAlarmProgramButton->setOn(true); 273 mAlarmProgramButton->setOn(true);
274 } else { 274 } else {
275 mAlarmProgramButton->setOn(false); 275 mAlarmProgramButton->setOn(false);
276 mAlarmSoundButton->setOn(true); 276 mAlarmSoundButton->setOn(true);
277 } 277 }
278 } 278 }
279 if (mAlarmProgramButton->isOn()) 279 if (mAlarmProgramButton->isOn())
280 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); 280 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) );
281 if ( mAlarmSoundButton->isOn()) 281 if ( mAlarmSoundButton->isOn())
282 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound ); 282 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + getFittingPath(mAlarmSound) );
283} 283}
284 284
285 285
286QString KOEditorGeneral::getFittingPath( const QString s ) 286QString KOEditorGeneral::getFittingPath( const QString s )
287{ 287{
288 int maxlen = 50; 288 int maxlen = 50;
289 if ( QApplication::desktop()->width() < 640 ) { 289 if ( QApplication::desktop()->width() < 640 ) {
290 if ( QApplication::desktop()->width() < 320 ) 290 if ( QApplication::desktop()->width() < 320 )
291 maxlen = 22; 291 maxlen = 22;
292 else 292 else
293 maxlen = 35; 293 maxlen = 35;
294 } 294 }
295 if ( s.length() > maxlen ) { 295 if ( s.length() > maxlen ) {
296 return "..."+s.right(maxlen -3); 296 return "..."+s.right(maxlen -3);
297 } 297 }
298 return s; 298 return s;
299} 299}
300 300
301void KOEditorGeneral::enableAlarmEdit(bool enable) 301void KOEditorGeneral::enableAlarmEdit(bool enable)
302{ 302{
303 if ( enable ) { 303 if ( enable ) {
304 if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) { 304 if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) {
305 mAlarmSoundButton->setOn( true ); 305 mAlarmSoundButton->setOn( true );
306 if ( mAlarmSound.isEmpty() ) 306 if ( mAlarmSound.isEmpty() )
307 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 307 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
308 else { 308 else {
309 if ( ! QFile::exists( mAlarmSound ) ) 309 if ( ! QFile::exists( mAlarmSound ) )
310 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 310 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
311 } 311 }
312 } 312 }
313 if (mAlarmProgramButton->isOn()) 313 if (mAlarmProgramButton->isOn())
314 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) ); 314 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) );
315 if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) 315 if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn())
316 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) ); 316 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) );
317 } 317 }
318 else { 318 else {
319 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Alarm disabled for this item")); 319 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Alarm disabled for this item"));
320 320
321 } 321 }
322 mAlarmTimeEdit->setEnabled(enable); 322 mAlarmTimeEdit->setEnabled(enable);
323 mAlarmSoundButton->setEnabled(enable); 323 mAlarmSoundButton->setEnabled(enable);
324 mAlarmProgramButton->setEnabled(enable); 324 mAlarmProgramButton->setEnabled(enable);
325 mAlarmIncrCombo->setEnabled(enable); 325 mAlarmIncrCombo->setEnabled(enable);
326} 326}
327 327
328void KOEditorGeneral::disableAlarmEdit(bool disable) 328void KOEditorGeneral::disableAlarmEdit(bool disable)
329{ 329{
330 enableAlarmEdit( !disable ); 330 enableAlarmEdit( !disable );
331} 331}
332 332
333void KOEditorGeneral::enableAlarm( bool enable ) 333void KOEditorGeneral::enableAlarm( bool enable )
334{ 334{
335 enableAlarmEdit( enable ); 335 enableAlarmEdit( enable );
336} 336}
337 337
338void KOEditorGeneral::alarmDisable(bool disable) 338void KOEditorGeneral::alarmDisable(bool disable)
339{ 339{
340 if (!disable) { 340 if (!disable) {
341 //mAlarmBell->setEnabled(true); 341 //mAlarmBell->setEnabled(true);
342 mAlarmButton->setEnabled(true); 342 mAlarmButton->setEnabled(true);
343 } else { 343 } else {
344 //mAlarmBell->setEnabled(false); 344 //mAlarmBell->setEnabled(false);
345 mAlarmButton->setEnabled(false); 345 mAlarmButton->setEnabled(false);
346 mAlarmButton->setChecked(false); 346 mAlarmButton->setChecked(false);
347 mAlarmTimeEdit->setEnabled(false); 347 mAlarmTimeEdit->setEnabled(false);
348 mAlarmSoundButton->setEnabled(false); 348 mAlarmSoundButton->setEnabled(false);
349 mAlarmProgramButton->setEnabled(false); 349 mAlarmProgramButton->setEnabled(false);
350 mAlarmIncrCombo->setEnabled(false); 350 mAlarmIncrCombo->setEnabled(false);
351 } 351 }
352} 352}
353 353
354void KOEditorGeneral::setCategories(const QString &str) 354void KOEditorGeneral::setCategories(const QString &str)
355{ 355{
356 mCategoriesLabel->setText(str); 356 mCategoriesLabel->setText(str);
357} 357}
358 358
359void KOEditorGeneral::setDefaults(bool allDay) 359void KOEditorGeneral::setDefaults(bool allDay)
360{ 360{
361#if 0 361#if 0
362 mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName()); 362 mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName());
363#endif 363#endif
364 364
365 enableAlarmEdit( !allDay ); 365 enableAlarmEdit( !allDay );
366 366
367 // TODO: Implement a KPrefsComboItem to solve this in a clean way. 367 // TODO: Implement a KPrefsComboItem to solve this in a clean way.
368 int alarmTime; 368 int alarmTime;
369 int a[] = { 1,5,10,15,30,60,180, 1440 }; 369 int a[] = { 1,5,10,15,30,60,180, 1440 };
370 int index = KOPrefs::instance()->mAlarmTime; 370 int index = KOPrefs::instance()->mAlarmTime;
371 if (index < 0 || index > 7) { 371 if (index < 0 || index > 7) {
372 alarmTime = 15; 372 alarmTime = 15;
373 } else { 373 } else {
374 alarmTime = a[index]; 374 alarmTime = a[index];
375 } 375 }
376 mAlarmButton ->setChecked( false ); 376 mAlarmButton ->setChecked( false );
377 mAlarmTimeEdit->setValue(alarmTime); 377 mAlarmTimeEdit->setValue(alarmTime);
378 mAlarmIncrCombo->setCurrentItem(0); 378 mAlarmIncrCombo->setCurrentItem(0);
379 enableAlarmEdit( false ); 379 enableAlarmEdit( false );
380 //alarmDisable (false); 380 //alarmDisable (false);
381 mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); 381 mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic);
382 mCancelBox->setChecked( false ); 382 mCancelBox->setChecked( false );
383 mSummaryEdit->setEditText(""); 383 mSummaryEdit->setEditText("");
384 mLocationEdit->setEditText(""); 384 mLocationEdit->setEditText("");
385 mDescriptionEdit->setText(""); 385 mDescriptionEdit->setText("");
386 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 386 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
387 setCategories(""); 387 setCategories("");
388} 388}
389void KOEditorGeneral::setSecrecy( int num ) 389void KOEditorGeneral::setSecrecy( int num )
390{ 390{
391 mSecrecyCombo->setCurrentItem(num); 391 mSecrecyCombo->setCurrentItem(num);
392} 392}
393void KOEditorGeneral::readIncidence(Incidence *event) 393void KOEditorGeneral::readIncidence(Incidence *event)
394{ 394{
395 395
396 mAlarmIncrCombo->setCurrentItem(0); 396 mAlarmIncrCombo->setCurrentItem(0);
397 mSummaryEdit->setEditText(event->summary()); 397 mSummaryEdit->setEditText(event->summary());
398 mLocationEdit->setEditText(event->location()); 398 mLocationEdit->setEditText(event->location());
399 mDescriptionEdit->setText(event->description()); 399 mDescriptionEdit->setText(event->description());
400 400
401#if 0 401#if 0
402 // organizer information 402 // organizer information
403 mOwnerLabel->setText(i18n("Owner: ") + event->organizer()); 403 mOwnerLabel->setText(i18n("Owner: ") + event->organizer());
404#endif 404#endif
405 405
406 enableAlarmEdit( event->isAlarmEnabled() ); 406 enableAlarmEdit( event->isAlarmEnabled() );
407 //qDebug("KOEditorGeneral::readIncidence(Incidence *event) "); 407 //qDebug("KOEditorGeneral::readIncidence(Incidence *event) ");
408 if(!event->isAlarmEnabled()) { 408 if(!event->isAlarmEnabled()) {
409 // TODO: Implement a KPrefsComboItem to solve this in a clean way. 409 // TODO: Implement a KPrefsComboItem to solve this in a clean way.
410 int alarmTime; 410 int alarmTime;
411 int a[] = { 1,5,10,15,30,60,180, 1440 }; 411 int a[] = { 1,5,10,15,30,60,180, 1440 };
412 int index = KOPrefs::instance()->mAlarmTime; 412 int index = KOPrefs::instance()->mAlarmTime;
413 if (index < 0 || index > 7) { 413 if (index < 0 || index > 7) {
414 alarmTime = 15; 414 alarmTime = 15;
415 } else { 415 } else {
416 alarmTime = a[index]; 416 alarmTime = a[index];
417 } 417 }
418 mAlarmTimeEdit->setValue(alarmTime); 418 mAlarmTimeEdit->setValue(alarmTime);
419 } 419 }
420 mAlarmButton->setChecked( event->isAlarmEnabled() ); 420 mAlarmButton->setChecked( event->isAlarmEnabled() );
421 mSecrecyCombo->setCurrentItem(event->secrecy()); 421 mSecrecyCombo->setCurrentItem(event->secrecy());
422 mCancelBox->setChecked( event->cancelled() ); 422 mCancelBox->setChecked( event->cancelled() );
423 mAlarmProgramButton->setOn(false); 423 mAlarmProgramButton->setOn(false);
424 mAlarmSoundButton->setOn(false); 424 mAlarmSoundButton->setOn(false);
425 425
426 // set up alarm stuff 426 // set up alarm stuff
427 QPtrList<Alarm> alarms = event->alarms(); 427 QPtrList<Alarm> alarms = event->alarms();
428 Alarm* alarm; 428 Alarm* alarm;
429 mAlarmIncrCombo->setCurrentItem(0); 429 mAlarmIncrCombo->setCurrentItem(0);
430 for ( alarm = alarms.first(); alarm; alarm = alarms.next() ) { 430 for ( alarm = alarms.first(); alarm; alarm = alarms.next() ) {
431 int offset; 431 int offset;
432 if ( alarm->hasTime() ) { 432 if ( alarm->hasTime() ) {
433 QDateTime t = alarm->time(); 433 QDateTime t = alarm->time();
434 offset = event->dtStart().secsTo( t ); 434 offset = event->dtStart().secsTo( t );
435 } else { 435 } else {
436 offset = alarm->startOffset().asSeconds(); 436 offset = alarm->startOffset().asSeconds();
437 } 437 }
438 if ( offset != 0 ) { 438 if ( offset != 0 ) {
439 offset = offset / -60; // make minutes 439 offset = offset / -60; // make minutes
440 if (offset % 60 == 0) { // divides evenly into hours? 440 if (offset % 60 == 0) { // divides evenly into hours?
441 offset = offset / 60; 441 offset = offset / 60;
442 mAlarmIncrCombo->setCurrentItem(1); 442 mAlarmIncrCombo->setCurrentItem(1);
443 if (offset % 24 == 0) { // divides evenly into days? 443 if (offset % 24 == 0) { // divides evenly into days?
444 offset = offset / 24; 444 offset = offset / 24;
445 mAlarmIncrCombo->setCurrentItem(2); 445 mAlarmIncrCombo->setCurrentItem(2);
446 } 446 }
447 } 447 }
448 } 448 }
449 mAlarmTimeEdit->setValue( offset ); 449 mAlarmTimeEdit->setValue( offset );
450 if (alarm->type() == Alarm::Procedure) { 450 if (alarm->type() == Alarm::Procedure) {
451 451
452 mAlarmProgram = alarm->programFile(); 452 mAlarmProgram = alarm->programFile();
453 mAlarmProgramButton->setOn(true); 453 mAlarmProgramButton->setOn(true);
454 QString dispStr = i18n("Running '%1'").arg(mAlarmProgram); 454 QString dispStr = i18n("Running '%1'").arg(mAlarmProgram);
455 QToolTip::add(mAlarmProgramButton, dispStr); 455 QToolTip::add(mAlarmProgramButton, dispStr);
456 } 456 }
457 else if (alarm->type() == Alarm::Audio) { 457 else if (alarm->type() == Alarm::Audio) {
458 mAlarmSound = alarm->audioFile(); 458 mAlarmSound = alarm->audioFile();
459 if ( ! QFile::exists( mAlarmSound ) ) 459 if ( ! QFile::exists( mAlarmSound ) )
460 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 460 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
461 mAlarmSoundButton->setOn(true); 461 mAlarmSoundButton->setOn(true);
462 QString dispStr = i18n("Playing '%1'").arg(mAlarmSound); 462 QString dispStr = i18n("Playing '%1'").arg(mAlarmSound);
463 QToolTip::add(mAlarmSoundButton, dispStr); 463 QToolTip::add(mAlarmSoundButton, dispStr);
464 } 464 }
465 mAlarmButton->setChecked(alarm->enabled()); 465 mAlarmButton->setChecked(alarm->enabled());
466 enableAlarmEdit( alarm->enabled() ); 466 enableAlarmEdit( alarm->enabled() );
467 //qDebug("nableAlarmEdit( alarm->enabled() )********* "); 467 //qDebug("nableAlarmEdit( alarm->enabled() )********* ");
468 // TODO: Deal with multiple alarms 468 // TODO: Deal with multiple alarms
469 break; // For now, stop after the first alarm 469 break; // For now, stop after the first alarm
470 } 470 }
471 471
472 setCategories(event->categoriesStr()); 472 setCategories(event->categoriesStr());
473} 473}
474 474
475void KOEditorGeneral::writeIncidence(Incidence *event) 475void KOEditorGeneral::writeIncidence(Incidence *event)
476{ 476{
477 // kdDebug() << "KOEditorGeneral::writeEvent()" << endl; 477 // kdDebug() << "KOEditorGeneral::writeEvent()" << endl;
478 mLocationEdit->save(KOLocationBox::LOCATION); 478 mLocationEdit->save(KOLocationBox::LOCATION);
479 event->setSummary(mSummaryEdit->currentText()); 479 event->setSummary(mSummaryEdit->currentText());
480 event->setLocation(mLocationEdit->currentText()); 480 event->setLocation(mLocationEdit->currentText());
481 event->setDescription(mDescriptionEdit->text()); 481 event->setDescription(mDescriptionEdit->text());
482 event->setCategories(mCategoriesLabel->text()); 482 event->setCategories(mCategoriesLabel->text());
483 event->setSecrecy(mSecrecyCombo->currentItem()); 483 event->setSecrecy(mSecrecyCombo->currentItem());
484 event->setCancelled(mCancelBox->isChecked() );; 484 event->setCancelled(mCancelBox->isChecked() );;
485 // alarm stuff 485 // alarm stuff
486 if (mAlarmButton->isChecked()) { 486 if (mAlarmButton->isChecked()) {
487 if (event->alarms().count() == 0) 487 if (event->alarms().count() == 0)
488 event->newAlarm(); 488 event->newAlarm();
489 QPtrList<Alarm> alarms = event->alarms(); 489 QPtrList<Alarm> alarms = event->alarms();
490 Alarm *alarm; 490 Alarm *alarm;
491 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { 491 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) {
492 alarm->setEnabled(true); 492 alarm->setEnabled(true);
493 int j = mAlarmTimeEdit->value()* -60; 493 int j = mAlarmTimeEdit->value()* -60;
494 if (mAlarmIncrCombo->currentItem() == 1) 494 if (mAlarmIncrCombo->currentItem() == 1)
495 j = j * 60; 495 j = j * 60;
496 else if (mAlarmIncrCombo->currentItem() == 2) 496 else if (mAlarmIncrCombo->currentItem() == 2)
497 j = j * (60 * 24); 497 j = j * (60 * 24);
498 alarm->setStartOffset( j ); 498 alarm->setStartOffset( j );
499 499
500 if (!mAlarmProgram.isEmpty() && mAlarmProgramButton->isOn()) { 500 if (!mAlarmProgram.isEmpty() && mAlarmProgramButton->isOn()) {
501 alarm->setProcedureAlarm(mAlarmProgram); 501 alarm->setProcedureAlarm(mAlarmProgram);
502 } 502 }
503 else if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) 503 else if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn())
504 alarm->setAudioAlarm(mAlarmSound); 504 alarm->setAudioAlarm(mAlarmSound);
505 else 505 else
506 alarm->setType(Alarm::Invalid); 506 alarm->setType(Alarm::Invalid);
507 //alarm->setAudioAlarm("default"); 507 //alarm->setAudioAlarm("default");
508 // TODO: Deal with multiple alarms 508 // TODO: Deal with multiple alarms
509 break; // For now, stop after the first alarm 509 break; // For now, stop after the first alarm
510 } 510 }
511 } else { 511 } else {
512 Alarm* alarm = event->alarms().first(); 512 Alarm* alarm = event->alarms().first();
513 if ( alarm ) { 513 if ( alarm ) {
514 alarm->setEnabled(false); 514 alarm->setEnabled(false);
515 alarm->setType(Alarm::Invalid); 515 alarm->setType(Alarm::Invalid);
516 } 516 }
517 } 517 }
518} 518}
diff --git a/korganizer/koprefsdialog.cpp b/korganizer/koprefsdialog.cpp
index ea73fd0..1b24f56 100644
--- a/korganizer/koprefsdialog.cpp
+++ b/korganizer/koprefsdialog.cpp
@@ -1,1661 +1,1659 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qgroupbox.h> 26#include <qgroupbox.h>
27#include <qbuttongroup.h> 27#include <qbuttongroup.h>
28#include <qlineedit.h> 28#include <qlineedit.h>
29#include <qfont.h> 29#include <qfont.h>
30#include <qslider.h> 30#include <qslider.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qvbox.h> 34#include <qvbox.h>
35#include <qhbox.h> 35#include <qhbox.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qspinbox.h> 37#include <qspinbox.h>
38#include <qdatetime.h> 38#include <qdatetime.h>
39#include <qcheckbox.h> 39#include <qcheckbox.h>
40#include <qradiobutton.h> 40#include <qradiobutton.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qstrlist.h> 42#include <qstrlist.h>
43#include <qapplication.h> 43#include <qapplication.h>
44 44
45#include <kcolorbutton.h> 45#include <kcolorbutton.h>
46#include <kdebug.h> 46#include <kdebug.h>
47#include <klocale.h> 47#include <klocale.h>
48#include <kglobal.h> 48#include <kglobal.h>
49#include <kfontdialog.h> 49#include <kfontdialog.h>
50#include <kfiledialog.h> 50#include <kfiledialog.h>
51#include <kmessagebox.h> 51#include <kmessagebox.h>
52#include <kcolordialog.h> 52#include <kcolordialog.h>
53#include <kiconloader.h> 53#include <kiconloader.h>
54#include <kemailsettings.h> 54#include <kemailsettings.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56 56
57#include <kurlrequester.h> 57#include <kurlrequester.h>
58#include <klineedit.h> 58#include <klineedit.h>
59 59
60#if defined(USE_SOLARIS) 60#if defined(USE_SOLARIS)
61#include <sys/param.h> 61#include <sys/param.h>
62 62
63#define ZONEINFODIR "/usr/share/lib/zoneinfo" 63#define ZONEINFODIR "/usr/share/lib/zoneinfo"
64#define INITFILE "/etc/default/init" 64#define INITFILE "/etc/default/init"
65#endif 65#endif
66 66
67#include "koprefs.h" 67#include "koprefs.h"
68 68
69#include "koprefsdialog.h" 69#include "koprefsdialog.h"
70#include "kpimglobalprefs.h" 70#include "kpimglobalprefs.h"
71 71
72 72
73KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) : 73KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) :
74 KPrefsDialog(KOPrefs::instance(),parent,name,true) 74 KPrefsDialog(KOPrefs::instance(),parent,name,true)
75{ 75{
76 76
77 setCaption( i18n("Preferences - some settings need a restart (nr)")); 77 setCaption( i18n("Preferences - some settings need a restart (nr)"));
78 mCategoryDict.setAutoDelete(true); 78 mCategoryDict.setAutoDelete(true);
79 79
80 KGlobal::locale()->insertCatalogue("timezones"); 80 KGlobal::locale()->insertCatalogue("timezones");
81 81
82 setupGlobalTab(); 82 setupGlobalTab();
83 setupMainTab(); 83 setupMainTab();
84 // setupLocaleTab(); 84 // setupLocaleTab();
85 //setupTimeZoneTab(); 85 //setupTimeZoneTab();
86 setupTimeTab(); 86 setupTimeTab();
87 //setupLocaleDateTab(); 87 //setupLocaleDateTab();
88 setupFontsTab(); 88 setupFontsTab();
89 setupColorsTab(); 89 setupColorsTab();
90 setupViewsTab(); 90 setupViewsTab();
91 //setupSyncTab(); 91 //setupSyncTab();
92 //setupSyncAlgTab(); 92 //setupSyncAlgTab();
93 //setupPrinterTab(); 93 //setupPrinterTab();
94 //setupGroupSchedulingTab(); 94 //setupGroupSchedulingTab();
95 //setupGroupAutomationTab(); 95 //setupGroupAutomationTab();
96 96
97#ifndef DESKTOP_VERSION 97#ifndef DESKTOP_VERSION
98 if ( QApplication::desktop()->height() == 480 ) 98 if ( QApplication::desktop()->height() == 480 )
99 hideButtons(); 99 hideButtons();
100#endif 100#endif
101} 101}
102 102
103 103
104KOPrefsDialog::~KOPrefsDialog() 104KOPrefsDialog::~KOPrefsDialog()
105{ 105{
106} 106}
107void KOPrefsDialog::setupGlobalTab() 107void KOPrefsDialog::setupGlobalTab()
108{ 108{
109 QFrame *topFrame = addPage(i18n("Global"),0,0); 109 QFrame *topFrame = addPage(i18n("Global"),0,0);
110 kdelibcfg = new KDEPIMConfigWidget( KPimGlobalPrefs::instance(), topFrame, "KCMKdeLibConfig" ); 110 kdelibcfg = new KDEPIMConfigWidget( KPimGlobalPrefs::instance(), topFrame, "KCMKdeLibConfig" );
111 QVBoxLayout *topLayout = new QVBoxLayout(topFrame); 111 QVBoxLayout *topLayout = new QVBoxLayout(topFrame);
112 topLayout->addWidget( kdelibcfg ); 112 topLayout->addWidget( kdelibcfg );
113 113
114 114
115} 115}
116void KOPrefsDialog::setupLocaleDateTab() 116void KOPrefsDialog::setupLocaleDateTab()
117{ 117{
118#if 0 118#if 0
119QFrame *topFrame = addPage(i18n("Date Format"),0,0); 119QFrame *topFrame = addPage(i18n("Date Format"),0,0);
120 QGridLayout *topLayout = new QGridLayout(topFrame,3,2); 120 QGridLayout *topLayout = new QGridLayout(topFrame,3,2);
121 topLayout->setSpacing(spacingHint()); 121 topLayout->setSpacing(spacingHint());
122 topLayout->setMargin(marginHint()); 122 topLayout->setMargin(marginHint());
123 int iii = 0; 123 int iii = 0;
124 124
125 125
126 KPrefsDialogWidRadios *syncPrefsGroup = 126 KPrefsDialogWidRadios *syncPrefsGroup =
127 addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame); 127 addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame);
128 QString format; 128 QString format;
129 if ( QApplication::desktop()->width() < 480 ) 129 if ( QApplication::desktop()->width() < 480 )
130 format = "(%d.%m.%Y)"; 130 format = "(%d.%m.%Y)";
131 else 131 else
132 format = "(%d.%m.%Y|%A %d %B %Y)"; 132 format = "(%d.%m.%Y|%A %d %B %Y)";
133 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format)); 133 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format));
134 if ( QApplication::desktop()->width() < 480 ) 134 if ( QApplication::desktop()->width() < 480 )
135 format = "(%m.%d.%Y)"; 135 format = "(%m.%d.%Y)";
136 else 136 else
137 format = "(%m.%d.%Y|%A %B %d %Y)"; 137 format = "(%m.%d.%Y|%A %B %d %Y)";
138 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format)); 138 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format));
139 if ( QApplication::desktop()->width() < 480 ) 139 if ( QApplication::desktop()->width() < 480 )
140 format = "(%Y-%m-%d)"; 140 format = "(%Y-%m-%d)";
141 else 141 else
142 format = "(%Y-%m-%d|%A %Y %B %d)"; 142 format = "(%Y-%m-%d|%A %Y %B %d)";
143 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format)); 143 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format));
144 syncPrefsGroup->addRadio(i18n("User defined")); 144 syncPrefsGroup->addRadio(i18n("User defined"));
145 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 145 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
146 ++iii; 146 ++iii;
147 ++iii; 147 ++iii;
148 QLabel * lab; 148 QLabel * lab;
149 mUserDateFormatLong = new QLineEdit(topFrame); 149 mUserDateFormatLong = new QLineEdit(topFrame);
150 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame); 150 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame);
151 topLayout->addWidget(lab ,iii,0); 151 topLayout->addWidget(lab ,iii,0);
152 topLayout->addWidget(mUserDateFormatLong,iii,1); 152 topLayout->addWidget(mUserDateFormatLong,iii,1);
153 ++iii; 153 ++iii;
154 mUserDateFormatShort = new QLineEdit(topFrame); 154 mUserDateFormatShort = new QLineEdit(topFrame);
155 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame); 155 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame);
156 topLayout->addWidget(lab ,iii,0); 156 topLayout->addWidget(lab ,iii,0);
157 topLayout->addWidget(mUserDateFormatShort,iii,1); 157 topLayout->addWidget(mUserDateFormatShort,iii,1);
158 ++iii; 158 ++iii;
159 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame); 159 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame);
160 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 160 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
161 ++iii; 161 ++iii;
162 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame); 162 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame);
163 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 163 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
164 ++iii; 164 ++iii;
165 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame); 165 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame);
166 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 166 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
167 ++iii; 167 ++iii;
168#endif 168#endif
169 169
170} 170}
171 171
172void KOPrefsDialog::setupLocaleTab() 172void KOPrefsDialog::setupLocaleTab()
173{ 173{
174#if 0 174#if 0
175 QFrame *topFrame = addPage(i18n("Locale"),0,0); 175 QFrame *topFrame = addPage(i18n("Locale"),0,0);
176 QGridLayout *topLayout = new QGridLayout(topFrame,4,2); 176 QGridLayout *topLayout = new QGridLayout(topFrame,4,2);
177 topLayout->setSpacing(spacingHint()); 177 topLayout->setSpacing(spacingHint());
178 topLayout->setMargin(marginHint()); 178 topLayout->setMargin(marginHint());
179 int iii = 0; 179 int iii = 0;
180 KPrefsDialogWidRadios *syncPrefsGroup = 180 KPrefsDialogWidRadios *syncPrefsGroup =
181 addWidRadios(i18n("Language:(needs restart)"),&(KOPrefs::instance()->mPreferredLanguage),topFrame); 181 addWidRadios(i18n("Language:(needs restart)"),&(KOPrefs::instance()->mPreferredLanguage),topFrame);
182 syncPrefsGroup->addRadio(i18n("English")); 182 syncPrefsGroup->addRadio(i18n("English"));
183 syncPrefsGroup->addRadio(i18n("German")); 183 syncPrefsGroup->addRadio(i18n("German"));
184 syncPrefsGroup->addRadio(i18n("French")); 184 syncPrefsGroup->addRadio(i18n("French"));
185 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)")); 185 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)"));
186 if ( QApplication::desktop()->width() < 300 ) 186 if ( QApplication::desktop()->width() < 300 )
187 ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 187 ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
188 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 188 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
189 ++iii; 189 ++iii;
190 190
191 syncPrefsGroup = 191 syncPrefsGroup =
192 addWidRadios(i18n("Time Format(nr):"),&(KOPrefs::instance()->mPreferredTime),topFrame); 192 addWidRadios(i18n("Time Format(nr):"),&(KOPrefs::instance()->mPreferredTime),topFrame);
193 if ( QApplication::desktop()->width() > 300 ) 193 if ( QApplication::desktop()->width() > 300 )
194 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 194 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
195 syncPrefsGroup->addRadio(i18n("24:00")); 195 syncPrefsGroup->addRadio(i18n("24:00"));
196 syncPrefsGroup->addRadio(i18n("12:00am")); 196 syncPrefsGroup->addRadio(i18n("12:00am"));
197 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 197 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
198 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 198 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
199 ++iii; 199 ++iii;
200 KPrefsDialogWidBool *sb; 200 KPrefsDialogWidBool *sb;
201 if ( QApplication::desktop()->width() < 300 ) { 201 if ( QApplication::desktop()->width() < 300 ) {
202 sb = 202 sb =
203 addWidBool(i18n("Week starts on Sunday"), 203 addWidBool(i18n("Week starts on Sunday"),
204 &(KOPrefs::instance()->mWeekStartsOnSunday),topFrame); 204 &(KOPrefs::instance()->mWeekStartsOnSunday),topFrame);
205 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 205 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
206 ++iii; 206 ++iii;
207 sb = 207 sb =
208 addWidBool(i18n("Use short date in (WN/E) view"), 208 addWidBool(i18n("Use short date in (WN/E) view"),
209 &(KOPrefs::instance()->mShortDateInViewer),topFrame); 209 &(KOPrefs::instance()->mShortDateInViewer),topFrame);
210 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 210 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
211 } 211 }
212 else { 212 else {
213 QWidget * hb = new QWidget( topFrame ); 213 QWidget * hb = new QWidget( topFrame );
214 QHBoxLayout *hbLayout = new QHBoxLayout(hb); 214 QHBoxLayout *hbLayout = new QHBoxLayout(hb);
215 sb = 215 sb =
216 addWidBool(i18n("Week starts on Sunday"), 216 addWidBool(i18n("Week starts on Sunday"),
217 &(KOPrefs::instance()->mWeekStartsOnSunday),hb); 217 &(KOPrefs::instance()->mWeekStartsOnSunday),hb);
218 hbLayout->addWidget(sb->checkBox() ); 218 hbLayout->addWidget(sb->checkBox() );
219 sb = 219 sb =
220 addWidBool(i18n("Use short date in (WN/E) view"), 220 addWidBool(i18n("Use short date in (WN/E) view"),
221 &(KOPrefs::instance()->mShortDateInViewer),hb); 221 &(KOPrefs::instance()->mShortDateInViewer),hb);
222 hbLayout->addWidget(sb->checkBox() ); 222 hbLayout->addWidget(sb->checkBox() );
223 topLayout->addMultiCellWidget(hb, iii,iii,0,1); 223 topLayout->addMultiCellWidget(hb, iii,iii,0,1);
224 224
225 } 225 }
226 // KPrefsDialogWidBool *sb; //#ifndef DESKTOP_VERSION 226 // KPrefsDialogWidBool *sb; //#ifndef DESKTOP_VERSION
227#if 0 227#if 0
228 ++iii; 228 ++iii;
229 sb = 229 sb =
230 addWidBool(i18n("Quick load/save (w/o Unicode)"), 230 addWidBool(i18n("Quick load/save (w/o Unicode)"),
231 &(KOPrefs::instance()->mUseQuicksave),topFrame); 231 &(KOPrefs::instance()->mUseQuicksave),topFrame);
232 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 232 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
233#endif 233#endif
234#endif 234#endif
235} 235}
236void KOPrefsDialog::showSyncPage() 236void KOPrefsDialog::showSyncPage()
237{ 237{
238 showPage ( 0 ) ; 238 showPage ( 0 ) ;
239 kdelibcfg->showTimeZoneTab() ; 239 kdelibcfg->showTimeZoneTab() ;
240 240
241} 241}
242void KOPrefsDialog::setupSyncAlgTab() 242void KOPrefsDialog::setupSyncAlgTab()
243{ 243{
244#if 0 244#if 0
245 QLabel * lab; 245 QLabel * lab;
246 QFrame *topFrame = addPage(i18n("Sync Prefs"),0,0); 246 QFrame *topFrame = addPage(i18n("Sync Prefs"),0,0);
247 mSetupSyncAlgTab = topFrame; 247 mSetupSyncAlgTab = topFrame;
248 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 248 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
249 topLayout->setSpacing(spacingHint()); 249 topLayout->setSpacing(spacingHint());
250 topLayout->setMargin(marginHint()); 250 topLayout->setMargin(marginHint());
251 int iii = 0; 251 int iii = 0;
252 252
253 KPrefsDialogWidBool *sb = 253 KPrefsDialogWidBool *sb =
254 addWidBool(i18n("Ask for preferences before syncing"), 254 addWidBool(i18n("Ask for preferences before syncing"),
255 &(KOPrefs::instance()->mAskForPreferences),topFrame); 255 &(KOPrefs::instance()->mAskForPreferences),topFrame);
256 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 256 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
257 257
258 ++iii; 258 ++iii;
259 259
260 KPrefsDialogWidRadios *syncPrefsGroup = 260 KPrefsDialogWidRadios *syncPrefsGroup =
261 addWidRadios(i18n("Sync preferences:"),&(KOPrefs::instance()->mSyncAlgoPrefs), 261 addWidRadios(i18n("Sync preferences:"),&(KOPrefs::instance()->mSyncAlgoPrefs),
262 topFrame); 262 topFrame);
263 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 263 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
264 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 264 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
265 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 265 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
266 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 266 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
267 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 267 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
268 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 268 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
269 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 269 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
270 ++iii; 270 ++iii;
271 sb = 271 sb =
272 addWidBool(i18n("Show summary after syncing"), 272 addWidBool(i18n("Show summary after syncing"),
273 &(KOPrefs::instance()->mShowSyncSummary),topFrame); 273 &(KOPrefs::instance()->mShowSyncSummary),topFrame);
274 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 274 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
275 275
276 ++iii; 276 ++iii;
277#endif 277#endif
278 278
279 279
280 280
281} 281}
282 282
283 283
284void KOPrefsDialog::setupSyncTab() 284void KOPrefsDialog::setupSyncTab()
285{ 285{
286#if 0 286#if 0
287 QLabel * lab; 287 QLabel * lab;
288 QFrame *topFrame = addPage(i18n("Sync Network"),0,0); 288 QFrame *topFrame = addPage(i18n("Sync Network"),0,0);
289 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 289 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
290 topLayout->setSpacing(spacingHint()); 290 topLayout->setSpacing(spacingHint());
291 topLayout->setMargin(marginHint()); 291 topLayout->setMargin(marginHint());
292 lab = new QLabel(i18n("Remote syncing (via ssh/scp)\nnetwork settings "), topFrame); 292 lab = new QLabel(i18n("Remote syncing (via ssh/scp)\nnetwork settings "), topFrame);
293 int iii = 0; 293 int iii = 0;
294 topLayout->addMultiCellWidget(lab , iii,iii,0,1); 294 topLayout->addMultiCellWidget(lab , iii,iii,0,1);
295 ++iii; 295 ++iii;
296 296
297 mRemoteIPEdit = new QLineEdit(topFrame); 297 mRemoteIPEdit = new QLineEdit(topFrame);
298 lab = new QLabel(mRemoteIPEdit, i18n("Remote IP:"), topFrame); 298 lab = new QLabel(mRemoteIPEdit, i18n("Remote IP:"), topFrame);
299 topLayout->addWidget(lab ,iii,0); 299 topLayout->addWidget(lab ,iii,0);
300 topLayout->addWidget(mRemoteIPEdit,iii,1); 300 topLayout->addWidget(mRemoteIPEdit,iii,1);
301 ++iii; 301 ++iii;
302 mRemoteUser = new QLineEdit(topFrame); 302 mRemoteUser = new QLineEdit(topFrame);
303 lab = new QLabel(mRemoteUser, i18n("Remote user:"), topFrame); 303 lab = new QLabel(mRemoteUser, i18n("Remote user:"), topFrame);
304 topLayout->addWidget(lab ,iii,0); 304 topLayout->addWidget(lab ,iii,0);
305 topLayout->addWidget(mRemoteUser, iii,1); 305 topLayout->addWidget(mRemoteUser, iii,1);
306 ++iii; 306 ++iii;
307 307
308 mRemoteFile = new QLineEdit(topFrame); 308 mRemoteFile = new QLineEdit(topFrame);
309 lab = new QLabel(mRemoteFile, i18n("Remote file:"), topFrame); 309 lab = new QLabel(mRemoteFile, i18n("Remote file:"), topFrame);
310 topLayout->addWidget(lab ,iii,0); 310 topLayout->addWidget(lab ,iii,0);
311 topLayout->addWidget(mRemoteFile,iii,1); 311 topLayout->addWidget(mRemoteFile,iii,1);
312 ++iii; 312 ++iii;
313 313
314 mLocalTempFile = new QLineEdit(topFrame); 314 mLocalTempFile = new QLineEdit(topFrame);
315 lab = new QLabel(mLocalTempFile, i18n("Local temp file:"), topFrame); 315 lab = new QLabel(mLocalTempFile, i18n("Local temp file:"), topFrame);
316 topLayout->addWidget(lab ,iii,0); 316 topLayout->addWidget(lab ,iii,0);
317 topLayout->addWidget(mLocalTempFile,iii,1); 317 topLayout->addWidget(mLocalTempFile,iii,1);
318 ++iii; 318 ++iii;
319 319
320 KPrefsDialogWidBool *wb = 320 KPrefsDialogWidBool *wb =
321 addWidBool(i18n("Write back synced file"), 321 addWidBool(i18n("Write back synced file"),
322 &(KOPrefs::instance()->mWriteBackFile),topFrame); 322 &(KOPrefs::instance()->mWriteBackFile),topFrame);
323 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1); 323 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1);
324 ++iii; 324 ++iii;
325 wb = 325 wb =
326 addWidBool(i18n("Write back existing entries only"), 326 addWidBool(i18n("Write back existing entries only"),
327 &(KOPrefs::instance()->mWriteBackExistingOnly),topFrame); 327 &(KOPrefs::instance()->mWriteBackExistingOnly),topFrame);
328 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1); 328 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1);
329 ++iii; 329 ++iii;
330 330
331#endif 331#endif
332} 332}
333 333
334void KOPrefsDialog::setupMainTab() 334void KOPrefsDialog::setupMainTab()
335{ 335{
336 QFrame *topFrame = addPage(i18n("General"),0,0); 336 QFrame *topFrame = addPage(i18n("General"),0,0);
337 // DesktopIcon("identity",KIcon::SizeMedium)); 337 // DesktopIcon("identity",KIcon::SizeMedium));
338 338
339 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 339 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
340 topLayout->setSpacing(spacingHint()); 340 topLayout->setSpacing(spacingHint());
341 topLayout->setMargin(marginHint()); 341 topLayout->setMargin(marginHint());
342 342
343 // KPrefsDialogWidBool *emailControlCenter = 343 // KPrefsDialogWidBool *emailControlCenter =
344// addWidBool(i18n("&Use email settings from Control Center"), 344// addWidBool(i18n("&Use email settings from Control Center"),
345// &(KOPrefs::instance()->mEmailControlCenter),topFrame); 345// &(KOPrefs::instance()->mEmailControlCenter),topFrame);
346// topLayout->addMultiCellWidget(emailControlCenter->checkBox(),0,0,0,1); 346// topLayout->addMultiCellWidget(emailControlCenter->checkBox(),0,0,0,1);
347 // connect(emailControlCenter->checkBox(),SIGNAL(toggled(bool)), 347 // connect(emailControlCenter->checkBox(),SIGNAL(toggled(bool)),
348 // SLOT(toggleEmailSettings(bool))); 348 // SLOT(toggleEmailSettings(bool)));
349 349
350 mNameEdit = new QLineEdit(topFrame); 350 mNameEdit = new QLineEdit(topFrame);
351 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame); 351 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame);
352 topLayout->addWidget(mNameLabel,0,0); 352 topLayout->addWidget(mNameLabel,0,0);
353 topLayout->addWidget(mNameEdit,0,1); 353 topLayout->addWidget(mNameEdit,0,1);
354 354
355 mEmailEdit = new QLineEdit(topFrame); 355 mEmailEdit = new QLineEdit(topFrame);
356 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame); 356 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame);
357 topLayout->addWidget(mEmailLabel,1,0); 357 topLayout->addWidget(mEmailLabel,1,0);
358 topLayout->addWidget(mEmailEdit,1,1); 358 topLayout->addWidget(mEmailEdit,1,1);
359 KPrefsDialogWidBool *wb; 359 KPrefsDialogWidBool *wb;
360 QHBox *dummy; 360 QHBox *dummy;
361 if ( QApplication::desktop()->width() > 480 ) { 361 if ( QApplication::desktop()->width() > 480 ) {
362 dummy = new QHBox(topFrame); 362 dummy = new QHBox(topFrame);
363 } else { 363 } else {
364 dummy = new QVBox(topFrame); 364 dummy = new QVBox(topFrame);
365 } 365 }
366 366
367 topLayout->addMultiCellWidget(dummy, 2,2,0,1); 367 topLayout->addMultiCellWidget(dummy, 2,2,0,1);
368 addWidBool(i18n("Full menu bar(nr)"), 368 addWidBool(i18n("Full menu bar(nr)"),
369 &(KOPrefs::instance()->mShowFullMenu),dummy); 369 &(KOPrefs::instance()->mShowFullMenu),dummy);
370 370
371 371
372 addWidBool(i18n("Mini icons in toolbar(nr)"), 372 addWidBool(i18n("Mini icons in toolbar(nr)"),
373 &(KOPrefs::instance()->mToolBarMiniIcons),dummy); 373 &(KOPrefs::instance()->mToolBarMiniIcons),dummy);
374 374
375 375
376 dummy = new QHBox(topFrame); 376 dummy = new QHBox(topFrame);
377 new QLabel(i18n("Days in What's Next:"),dummy); 377 new QLabel(i18n("Days in What's Next:"),dummy);
378 mWhatsNextSpin = new QSpinBox(1,14,1,dummy); 378 mWhatsNextSpin = new QSpinBox(1,14,1,dummy);
379 379
380 topLayout->addMultiCellWidget(dummy,3,3,0,1); 380 topLayout->addMultiCellWidget(dummy,3,3,0,1);
381 381
382 382
383 383
384 dummy = new QHBox(topFrame); 384 dummy = new QHBox(topFrame);
385 new QLabel(i18n("Days in Next-X-Days:"),dummy); 385 new QLabel(i18n("Days in Next-X-Days:"),dummy);
386 mNextXDaysSpin = new QSpinBox(2,14,1,dummy); 386 mNextXDaysSpin = new QSpinBox(2,14,1,dummy);
387 387
388 topLayout->addMultiCellWidget(dummy,4,4,0,1); 388 topLayout->addMultiCellWidget(dummy,4,4,0,1);
389 389
390 QHBox *prioBox = new QHBox(topFrame); 390 QHBox *prioBox = new QHBox(topFrame);
391 // intervalBox->setSpacing(spacingHint()); 391 // intervalBox->setSpacing(spacingHint());
392 topLayout->addMultiCellWidget(prioBox,5,5,0,1); 392 topLayout->addMultiCellWidget(prioBox,5,5,0,1);
393 QString messa = i18n("Show topmost todo prios in What's Next:"); 393 QString messa = i18n("Show topmost todo prios in What's Next:");
394 394
395 if ( QApplication::desktop()->width() < 300 ) 395 if ( QApplication::desktop()->width() < 300 )
396 messa = i18n("Show topmost todo prios in What's N.:"); 396 messa = i18n("Show topmost todo prios in What's N.:");
397 QLabel *prioLabel = new QLabel(messa, prioBox); 397 QLabel *prioLabel = new QLabel(messa, prioBox);
398 mPrioSpin = new QSpinBox(0,5,1,prioBox); 398 mPrioSpin = new QSpinBox(0,5,1,prioBox);
399 if ( QApplication::desktop()->width() < 300 ) 399 if ( QApplication::desktop()->width() < 300 )
400 mPrioSpin->setFixedWidth( 40 ); 400 mPrioSpin->setFixedWidth( 40 );
401 401
402 // KPrefsDialogWidBool *bcc = 402 // KPrefsDialogWidBool *bcc =
403// addWidBool(i18n("Send copy to owner when mailing events"), 403// addWidBool(i18n("Send copy to owner when mailing events"),
404// &(KOPrefs::instance()->mBcc),topFrame); 404// &(KOPrefs::instance()->mBcc),topFrame);
405// topLayout->addMultiCellWidget(bcc->checkBox(),4,4,0,1); 405// topLayout->addMultiCellWidget(bcc->checkBox(),4,4,0,1);
406 406
407 407
408 // QGroupBox *autoSaveGroup = new QGroupBox(1,Horizontal,i18n("Auto-Save"), topFrame); 408 // QGroupBox *autoSaveGroup = new QGroupBox(1,Horizontal,i18n("Auto-Save"), topFrame);
409 //topLayout->addMultiCellWidget(autoSaveGroup,6,6,0,1); 409 //topLayout->addMultiCellWidget(autoSaveGroup,6,6,0,1);
410 410
411 // addWidBool(i18n("Enable automatic saving of calendar"), 411 // addWidBool(i18n("Enable automatic saving of calendar"),
412 // &(KOPrefs::instance()->mAutoSave),autoSaveGroup); 412 // &(KOPrefs::instance()->mAutoSave),autoSaveGroup);
413 413
414 QHBox *intervalBox = new QHBox(topFrame); 414 QHBox *intervalBox = new QHBox(topFrame);
415 // intervalBox->setSpacing(spacingHint()); 415 // intervalBox->setSpacing(spacingHint());
416 topLayout->addMultiCellWidget(intervalBox,6,6,0,1); 416 topLayout->addMultiCellWidget(intervalBox,6,6,0,1);
417 QLabel *autoSaveIntervalLabel = new QLabel(i18n("Auto save delay in minutes:"),intervalBox); 417 QLabel *autoSaveIntervalLabel = new QLabel(i18n("Auto save delay in minutes:"),intervalBox);
418 mAutoSaveIntervalSpin = new QSpinBox(0,500,1,intervalBox); 418 mAutoSaveIntervalSpin = new QSpinBox(0,500,1,intervalBox);
419 autoSaveIntervalLabel->setBuddy(mAutoSaveIntervalSpin); 419 autoSaveIntervalLabel->setBuddy(mAutoSaveIntervalSpin);
420 /* 420 /*
421 QHBox * agendasize = new QHBox ( topFrame ); 421 QHBox * agendasize = new QHBox ( topFrame );
422 422
423 new QLabel (i18n("AllDayAgenda Height:"), agendasize ); 423 new QLabel (i18n("AllDayAgenda Height:"), agendasize );
424 424
425 425
426 mHourSizeSlider = new QSlider(24,47,1,24,Horizontal,agendasize); 426 mHourSizeSlider = new QSlider(24,47,1,24,Horizontal,agendasize);
427 topLayout->addMultiCellWidget(agendasize,7,7,0,1); 427 topLayout->addMultiCellWidget(agendasize,7,7,0,1);
428 */ 428 */
429 KPrefsDialogWidBool *verticalScreen = 429 KPrefsDialogWidBool *verticalScreen =
430 addWidBool(i18n("Show vertical screen (Needs restart)"), 430 addWidBool(i18n("Show vertical screen (Needs restart)"),
431 &(KOPrefs::instance()->mVerticalScreen),topFrame); 431 &(KOPrefs::instance()->mVerticalScreen),topFrame);
432 //topLayout->addWidget(verticalScreen->checkBox(),ii++,0); 432 //topLayout->addWidget(verticalScreen->checkBox(),ii++,0);
433 topLayout->addMultiCellWidget(verticalScreen->checkBox(),7,7,0,1); 433 topLayout->addMultiCellWidget(verticalScreen->checkBox(),7,7,0,1);
434 434
435 KPrefsDialogWidBool *ask = 435 KPrefsDialogWidBool *ask =
436 addWidBool(i18n("Ask for quit when closing KO/Pi"), 436 addWidBool(i18n("Ask for quit when closing KO/Pi"),
437 &(KOPrefs::instance()->mAskForQuit),topFrame); 437 &(KOPrefs::instance()->mAskForQuit),topFrame);
438 topLayout->addMultiCellWidget(ask->checkBox(),8,8,0,1); 438 topLayout->addMultiCellWidget(ask->checkBox(),8,8,0,1);
439 439
440 440
441 /* 441 /*
442 KPrefsDialogWidBool *confirmCheck = 442 KPrefsDialogWidBool *confirmCheck =
443 addWidBool(i18n("Confirm &deletes"),&(KOPrefs::instance()->mConfirm), 443 addWidBool(i18n("Confirm &deletes"),&(KOPrefs::instance()->mConfirm),
444 topFrame); 444 topFrame);
445 topLayout->addMultiCellWidget(confirmCheck->checkBox(),7,7,0,1); 445 topLayout->addMultiCellWidget(confirmCheck->checkBox(),7,7,0,1);
446 446
447 447
448 mEnableGroupScheduling = 448 mEnableGroupScheduling =
449 addWidBool(i18n("Enable group scheduling"), 449 addWidBool(i18n("Enable group scheduling"),
450 &(KOPrefs::instance()->mEnableGroupScheduling),topFrame); 450 &(KOPrefs::instance()->mEnableGroupScheduling),topFrame);
451 topLayout->addWidget(mEnableGroupScheduling->checkBox(),8,0); 451 topLayout->addWidget(mEnableGroupScheduling->checkBox(),8,0);
452 connect(mEnableGroupScheduling->checkBox(),SIGNAL(clicked()), 452 connect(mEnableGroupScheduling->checkBox(),SIGNAL(clicked()),
453 SLOT(warningGroupScheduling())); 453 SLOT(warningGroupScheduling()));
454 454
455 mEnableProjectView = 455 mEnableProjectView =
456 addWidBool(i18n("Enable project view"), 456 addWidBool(i18n("Enable project view"),
457 &(KOPrefs::instance()->mEnableProjectView),topFrame); 457 &(KOPrefs::instance()->mEnableProjectView),topFrame);
458 topLayout->addWidget(mEnableProjectView->checkBox(),9,0); 458 topLayout->addWidget(mEnableProjectView->checkBox(),9,0);
459 connect(mEnableProjectView->checkBox(),SIGNAL(clicked()), 459 connect(mEnableProjectView->checkBox(),SIGNAL(clicked()),
460 SLOT(warningProjectView())); 460 SLOT(warningProjectView()));
461 461
462 // Can't be disabled anymore 462 // Can't be disabled anymore
463 mEnableGroupScheduling->checkBox()->hide(); 463 mEnableGroupScheduling->checkBox()->hide();
464 464
465 // Disable setting, because this feature now becomes stable 465 // Disable setting, because this feature now becomes stable
466 mEnableProjectView->checkBox()->hide(); 466 mEnableProjectView->checkBox()->hide();
467 467
468 KPrefsDialogWidRadios *defaultFormatGroup = 468 KPrefsDialogWidRadios *defaultFormatGroup =
469 addWidRadios(i18n("Default Calendar Format"), 469 addWidRadios(i18n("Default Calendar Format"),
470 &(KOPrefs::instance()->mDefaultFormat),topFrame); 470 &(KOPrefs::instance()->mDefaultFormat),topFrame);
471 defaultFormatGroup->addRadio(i18n("vCalendar")); 471 defaultFormatGroup->addRadio(i18n("vCalendar"));
472 defaultFormatGroup->addRadio(i18n("iCalendar")); 472 defaultFormatGroup->addRadio(i18n("iCalendar"));
473 473
474 topLayout->addMultiCellWidget(defaultFormatGroup->groupBox(),10,10,0,1); 474 topLayout->addMultiCellWidget(defaultFormatGroup->groupBox(),10,10,0,1);
475 475
476 // Default format unconditionally is iCalendar 476 // Default format unconditionally is iCalendar
477 defaultFormatGroup->groupBox()->hide(); 477 defaultFormatGroup->groupBox()->hide();
478 478
479 KPrefsDialogWidRadios *mailClientGroup = 479 KPrefsDialogWidRadios *mailClientGroup =
480 addWidRadios(i18n("Mail Client"),&(KOPrefs::instance()->mMailClient), 480 addWidRadios(i18n("Mail Client"),&(KOPrefs::instance()->mMailClient),
481 topFrame); 481 topFrame);
482 mailClientGroup->addRadio(i18n("KMail")); 482 mailClientGroup->addRadio(i18n("KMail"));
483 mailClientGroup->addRadio(i18n("Sendmail")); 483 mailClientGroup->addRadio(i18n("Sendmail"));
484 topLayout->addMultiCellWidget(mailClientGroup->groupBox(),11,11,0,1); 484 topLayout->addMultiCellWidget(mailClientGroup->groupBox(),11,11,0,1);
485 485
486 KPrefsDialogWidBool *htmlsave = 486 KPrefsDialogWidBool *htmlsave =
487 addWidBool(i18n("Export to HTML with every save"),&(KOPrefs::instance()->mHtmlWithSave), 487 addWidBool(i18n("Export to HTML with every save"),&(KOPrefs::instance()->mHtmlWithSave),
488 topFrame); 488 topFrame);
489 topLayout->addMultiCellWidget(htmlsave->checkBox(),12,12,0,1); 489 topLayout->addMultiCellWidget(htmlsave->checkBox(),12,12,0,1);
490 490
491 KPrefsDialogWidRadios *destinationGroup = 491 KPrefsDialogWidRadios *destinationGroup =
492 addWidRadios(i18n("New Events/Todos should"),&(KOPrefs::instance()->mDestination), 492 addWidRadios(i18n("New Events/Todos should"),&(KOPrefs::instance()->mDestination),
493 topFrame); 493 topFrame);
494 destinationGroup->addRadio(i18n("be added to the standard resource")); 494 destinationGroup->addRadio(i18n("be added to the standard resource"));
495 destinationGroup->addRadio(i18n("be asked which resource to use")); 495 destinationGroup->addRadio(i18n("be asked which resource to use"));
496 topLayout->addMultiCellWidget(destinationGroup->groupBox(),13,13,0,1); 496 topLayout->addMultiCellWidget(destinationGroup->groupBox(),13,13,0,1);
497 497
498 topLayout->setRowStretch(14,1); 498 topLayout->setRowStretch(14,1);
499 */ 499 */
500} 500}
501 501
502 502
503void KOPrefsDialog::setupTimeTab() 503void KOPrefsDialog::setupTimeTab()
504{ 504{
505 QFrame *topFrame = addPage(i18n("Time"),0,0); 505 QFrame *topFrame = addPage(i18n("Time"),0,0);
506 // DesktopIcon("clock",KIcon::SizeMedium)); 506 // DesktopIcon("clock",KIcon::SizeMedium));
507 507
508 QGridLayout *topLayout = new QGridLayout(topFrame,4,2); 508 QGridLayout *topLayout = new QGridLayout(topFrame,4,2);
509 topLayout->setSpacing(spacingHint()); 509 topLayout->setSpacing(spacingHint());
510 topLayout->setMargin(marginHint()); 510 topLayout->setMargin(marginHint());
511 511
512 QHBox *dummy = new QHBox(topFrame); 512 QHBox *dummy = new QHBox(topFrame);
513 KPrefsDialogWidTime *dayBegins = 513 KPrefsDialogWidTime *dayBegins =
514 addWidTime(i18n("Day begins at:"),&(KOPrefs::instance()->mDayBegins), 514 addWidTime(i18n("Day begins at:"),&(KOPrefs::instance()->mDayBegins),
515 dummy); 515 dummy);
516 //topLayout->addWidget(dayBegins->label(),2,0); 516 //topLayout->addWidget(dayBegins->label(),2,0);
517 517
518 //topLayout->addWidget(dayBegins->spinBox(),2,1); 518 //topLayout->addWidget(dayBegins->spinBox(),2,1);
519 topLayout->addMultiCellWidget(dummy,0,0,0,1); 519 topLayout->addMultiCellWidget(dummy,0,0,0,1);
520 520
521 topLayout->addWidget(new QLabel(i18n("Default appointment time:"), 521 topLayout->addWidget(new QLabel(i18n("Default appointment time:"),
522 topFrame),1,0); 522 topFrame),1,0);
523 mStartTimeSpin = new QSpinBox(0,23,1,topFrame); 523 mStartTimeSpin = new QSpinBox(0,23,1,topFrame);
524 mStartTimeSpin->setSuffix(":00"); 524 mStartTimeSpin->setSuffix(":00");
525 topLayout->addWidget(mStartTimeSpin,1,1); 525 topLayout->addWidget(mStartTimeSpin,1,1);
526 526
527 topLayout->addWidget(new QLabel(i18n("Def. duration of new app.:"), 527 topLayout->addWidget(new QLabel(i18n("Def. duration of new app.:"),
528 topFrame),2,0); 528 topFrame),2,0);
529 mDefaultDurationSpin = new QSpinBox(0,23,1,topFrame); 529 mDefaultDurationSpin = new QSpinBox(0,23,1,topFrame);
530 mDefaultDurationSpin->setSuffix(":00"); 530 mDefaultDurationSpin->setSuffix(":00");
531 topLayout->addWidget(mDefaultDurationSpin,2,1); 531 topLayout->addWidget(mDefaultDurationSpin,2,1);
532 532
533 QStringList alarmList; 533 QStringList alarmList;
534 alarmList << i18n("1 minute") << i18n("5 minutes") << i18n("10 minutes") 534 alarmList << i18n("1 minute") << i18n("5 minutes") << i18n("10 minutes")
535 << i18n("15 minutes") << i18n("30 minutes")<< i18n("1 hour")<< i18n("3 hours") << i18n("24 hours") ; 535 << i18n("15 minutes") << i18n("30 minutes")<< i18n("1 hour")<< i18n("3 hours") << i18n("24 hours") ;
536 topLayout->addWidget(new QLabel(i18n("Default alarm time:"),topFrame), 536 topLayout->addWidget(new QLabel(i18n("Default alarm time:"),topFrame),
537 3,0); 537 3,0);
538 mAlarmTimeCombo = new QComboBox(topFrame); 538 mAlarmTimeCombo = new QComboBox(topFrame);
539 mAlarmTimeCombo->insertStringList(alarmList); 539 mAlarmTimeCombo->insertStringList(alarmList);
540 topLayout->addWidget(mAlarmTimeCombo,3,1); 540 topLayout->addWidget(mAlarmTimeCombo,3,1);
541 541
542 542
543 QGroupBox *workingHoursGroup = new QGroupBox(1,Horizontal, 543 QGroupBox *workingHoursGroup = new QGroupBox(1,Horizontal,
544 i18n("Working Hours"), 544 i18n("Working Hours"),
545 topFrame); 545 topFrame);
546 topLayout->addMultiCellWidget(workingHoursGroup,4,4,0,1); 546 topLayout->addMultiCellWidget(workingHoursGroup,4,4,0,1);
547 workingHoursGroup->layout()->setSpacing( 0 ); 547 workingHoursGroup->layout()->setSpacing( 0 );
548 workingHoursGroup->layout()->setMargin( 4 ); 548 workingHoursGroup->layout()->setMargin( 4 );
549 QHBox *workStartBox = new QHBox(workingHoursGroup); 549 QHBox *workStartBox = new QHBox(workingHoursGroup);
550 // workStartBox->setMargin( 0 ); 550 // workStartBox->setMargin( 0 );
551 addWidTime(i18n("Daily starting hour:"), 551 addWidTime(i18n("Daily starting hour:"),
552 &(KOPrefs::instance()->mWorkingHoursStart),workStartBox); 552 &(KOPrefs::instance()->mWorkingHoursStart),workStartBox);
553 553
554 QHBox *workEndBox = new QHBox(workingHoursGroup); 554 QHBox *workEndBox = new QHBox(workingHoursGroup);
555 //workEndBox->setMargin( 0 ); 555 //workEndBox->setMargin( 0 );
556 addWidTime(i18n("Daily ending hour:"), 556 addWidTime(i18n("Daily ending hour:"),
557 &(KOPrefs::instance()->mWorkingHoursEnd),workEndBox); 557 &(KOPrefs::instance()->mWorkingHoursEnd),workEndBox);
558 QVBox *excludeBox = new QVBox(workingHoursGroup); 558 QVBox *excludeBox = new QVBox(workingHoursGroup);
559 //excludeBox->setMargin( 0 ); 559 //excludeBox->setMargin( 0 );
560 addWidBool(i18n("Exclude holidays"), 560 addWidBool(i18n("Exclude holidays"),
561 &(KOPrefs::instance()->mExcludeHolidays),excludeBox); 561 &(KOPrefs::instance()->mExcludeHolidays),excludeBox);
562 562
563 addWidBool(i18n("Exclude Saturdays"), 563 addWidBool(i18n("Exclude Saturdays"),
564 &(KOPrefs::instance()->mExcludeSaturdays),excludeBox); 564 &(KOPrefs::instance()->mExcludeSaturdays),excludeBox);
565 565
566// KPrefsDialogWidBool *marcusBainsShowSeconds = addWidBool(i18n("Show seconds on Marcus Bains line"), 566// KPrefsDialogWidBool *marcusBainsShowSeconds = addWidBool(i18n("Show seconds on Marcus Bains line"),
567 // &(KOPrefs::instance()->mMarcusBainsShowSeconds), 567 // &(KOPrefs::instance()->mMarcusBainsShowSeconds),
568 // topFrame); 568 // topFrame);
569// topLayout->addWidget(marcusBainsShowSeconds->checkBox(),5,0); 569// topLayout->addWidget(marcusBainsShowSeconds->checkBox(),5,0);
570 570
571 // topLayout->setRowStretch(6,1); 571 // topLayout->setRowStretch(6,1);
572} 572}
573 573
574 574
575void KOPrefsDialog::setupViewsTab() 575void KOPrefsDialog::setupViewsTab()
576{ 576{
577 577
578 QFrame *topFrame = addPage(i18n("Views"),0,0); 578 QFrame *topFrame = addPage(i18n("Views"),0,0);
579 // DesktopIcon("viewmag",KIcon::SizeMedium)); 579 // DesktopIcon("viewmag",KIcon::SizeMedium));
580 580
581 QGridLayout *topLayout = new QGridLayout(topFrame,6,1); 581 QGridLayout *topLayout = new QGridLayout(topFrame,6,1);
582 topLayout->setSpacing(spacingHint()); 582 topLayout->setSpacing(spacingHint());
583 topLayout->setMargin(marginHint()); 583 topLayout->setMargin(marginHint());
584 584
585// QBoxLayout *dayBeginsLayout = new QHBoxLayout; 585// QBoxLayout *dayBeginsLayout = new QHBoxLayout;
586// topLayout->addLayout(dayBeginsLayout,0,0); 586// topLayout->addLayout(dayBeginsLayout,0,0);
587 587
588// KPrefsDialogWidTime *dayBegins = 588// KPrefsDialogWidTime *dayBegins =
589// addWidTime(i18n("Day begins at:"),&(KOPrefs::instance()->mDayBegins), 589// addWidTime(i18n("Day begins at:"),&(KOPrefs::instance()->mDayBegins),
590// topFrame); 590// topFrame);
591// dayBeginsLayout->addWidget(dayBegins->label()); 591// dayBeginsLayout->addWidget(dayBegins->label());
592// dayBeginsLayout->addStretch(1); 592// dayBeginsLayout->addStretch(1);
593// dayBeginsLayout->addWidget(dayBegins->spinBox()); 593// dayBeginsLayout->addWidget(dayBegins->spinBox());
594 594
595// QBoxLayout *nextDaysLayout = new QHBoxLayout; 595// QBoxLayout *nextDaysLayout = new QHBoxLayout;
596// topLayout->addLayout(nextDaysLayout,1,0); 596// topLayout->addLayout(nextDaysLayout,1,0);
597// nextDaysLayout->addWidget(new QLabel(i18n("Days to show in Next-X-Days view:"),topFrame)); 597// nextDaysLayout->addWidget(new QLabel(i18n("Days to show in Next-X-Days view:"),topFrame));
598// mNextXDaysSpin = new QSpinBox(2,14,1,topFrame); 598// mNextXDaysSpin = new QSpinBox(2,14,1,topFrame);
599// nextDaysLayout->addStretch(1); 599// nextDaysLayout->addStretch(1);
600// nextDaysLayout->addWidget(mNextXDaysSpin); 600// nextDaysLayout->addWidget(mNextXDaysSpin);
601 601
602 602
603 int ii = 0; 603 int ii = 0;
604 KPrefsDialogWidBool *dummy = 604 KPrefsDialogWidBool *dummy =
605 addWidBool(i18n("Edit item on doubleclick (if not, show)"), 605 addWidBool(i18n("Edit item on doubleclick (if not, show)"),
606 &(KOPrefs::instance()->mEditOnDoubleClick),topFrame); 606 &(KOPrefs::instance()->mEditOnDoubleClick),topFrame);
607 topLayout->addWidget(dummy->checkBox(),ii++,0); 607 topLayout->addWidget(dummy->checkBox(),ii++,0);
608 608
609 dummy = 609 dummy =
610 addWidBool(i18n("Show time in agenda items"), 610 addWidBool(i18n("Show time in agenda items"),
611 &(KOPrefs::instance()->mShowTimeInAgenda),topFrame); 611 &(KOPrefs::instance()->mShowTimeInAgenda),topFrame);
612 topLayout->addWidget(dummy->checkBox(),ii++,0); 612 topLayout->addWidget(dummy->checkBox(),ii++,0);
613 613
614 dummy = 614 dummy =
615 addWidBool(i18n("Highlight current day in agenda"), 615 addWidBool(i18n("Highlight current day in agenda"),
616 &(KOPrefs::instance()->mHighlightCurrentDay),topFrame); 616 &(KOPrefs::instance()->mHighlightCurrentDay),topFrame);
617 topLayout->addWidget(dummy->checkBox(),ii++,0); 617 topLayout->addWidget(dummy->checkBox(),ii++,0);
618 618
619 dummy = 619 dummy =
620 addWidBool(i18n("Use light color for highlight current day"), 620 addWidBool(i18n("Use light color for highlight current day"),
621 &(KOPrefs::instance()->mUseHighlightLightColor),topFrame); 621 &(KOPrefs::instance()->mUseHighlightLightColor),topFrame);
622 topLayout->addWidget(dummy->checkBox(),ii++,0); 622 topLayout->addWidget(dummy->checkBox(),ii++,0);
623 623
624 KPrefsDialogWidBool *dailyRecur = 624 KPrefsDialogWidBool *dailyRecur =
625 addWidBool(i18n("Show events that recur daily in date nav."), 625 addWidBool(i18n("Show events that recur daily in date nav."),
626 &(KOPrefs::instance()->mDailyRecur),topFrame); 626 &(KOPrefs::instance()->mDailyRecur),topFrame);
627 topLayout->addWidget(dailyRecur->checkBox(),ii++,0); 627 topLayout->addWidget(dailyRecur->checkBox(),ii++,0);
628 628
629 KPrefsDialogWidBool *weeklyRecur = 629 KPrefsDialogWidBool *weeklyRecur =
630 addWidBool(i18n("Show ev. that recur weekly in date nav."), 630 addWidBool(i18n("Show ev. that recur weekly in date nav."),
631 &(KOPrefs::instance()->mWeeklyRecur),topFrame); 631 &(KOPrefs::instance()->mWeeklyRecur),topFrame);
632 topLayout->addWidget(weeklyRecur->checkBox(),ii++,0); 632 topLayout->addWidget(weeklyRecur->checkBox(),ii++,0);
633 if ( QApplication::desktop()->width() > 640 ) { 633 if ( QApplication::desktop()->width() > 640 ) {
634 634
635 KPrefsDialogWidBool *enableToolTips = 635 KPrefsDialogWidBool *enableToolTips =
636 addWidBool(i18n("Enable tooltips displaying summary of ev."), 636 addWidBool(i18n("Enable tooltips displaying summary of ev."),
637 &(KOPrefs::instance()->mEnableToolTips),topFrame); 637 &(KOPrefs::instance()->mEnableToolTips),topFrame);
638 topLayout->addWidget(enableToolTips->checkBox(),ii++,0); 638 topLayout->addWidget(enableToolTips->checkBox(),ii++,0);
639 639
640 } 640 }
641 641
642 KPrefsDialogWidBool *marcusBainsEnabled = 642 KPrefsDialogWidBool *marcusBainsEnabled =
643 addWidBool(i18n("Show Marcus Bains line"), 643 addWidBool(i18n("Show Marcus Bains line"),
644 &(KOPrefs::instance()->mMarcusBainsEnabled),topFrame); 644 &(KOPrefs::instance()->mMarcusBainsEnabled),topFrame);
645 topLayout->addWidget(marcusBainsEnabled->checkBox(),ii++,0); 645 topLayout->addWidget(marcusBainsEnabled->checkBox(),ii++,0);
646 646
647 647
648 // topLayout->addWidget(hourSizeGroup,ii++,0); 648 // topLayout->addWidget(hourSizeGroup,ii++,0);
649 // topLayout->addMultiCellWidget(hourSizeGroup,ii,ii,0,0); 649 // topLayout->addMultiCellWidget(hourSizeGroup,ii,ii,0,0);
650 //topLayout->setRowStretch(11,1); 650 //topLayout->setRowStretch(11,1);
651 651
652 652
653 653
654 654
655 655
656 656
657 topFrame = addPage(i18n("ViewChange"),0,0); 657 topFrame = addPage(i18n("ViewChange"),0,0);
658 // DesktopIcon("viewmag",KIcon::SizeMedium)); 658 // DesktopIcon("viewmag",KIcon::SizeMedium));
659 659
660 topLayout = new QGridLayout(topFrame,6,1); 660 topLayout = new QGridLayout(topFrame,6,1);
661 topLayout->setSpacing(spacingHint()); 661 topLayout->setSpacing(spacingHint());
662 topLayout->setMargin(marginHint()); 662 topLayout->setMargin(marginHint());
663 ii = 0; 663 ii = 0;
664 664
665 665
666 dummy = 666 dummy =
667 addWidBool(i18n("Hold fullscreen on view change"), 667 addWidBool(i18n("Hold fullscreen on view change"),
668 &(KOPrefs::instance()->mViewChangeHoldFullscreen),topFrame); 668 &(KOPrefs::instance()->mViewChangeHoldFullscreen),topFrame);
669 topLayout->addWidget(dummy->checkBox(),ii++,0); 669 topLayout->addWidget(dummy->checkBox(),ii++,0);
670 670
671 dummy = 671 dummy =
672 addWidBool(i18n("Hold non-fullscreen on view change"), 672 addWidBool(i18n("Hold non-fullscreen on view change"),
673 &(KOPrefs::instance()->mViewChangeHoldNonFullscreen),topFrame); 673 &(KOPrefs::instance()->mViewChangeHoldNonFullscreen),topFrame);
674 topLayout->addWidget(dummy->checkBox(),ii++,0); 674 topLayout->addWidget(dummy->checkBox(),ii++,0);
675 675
676 676
677 KPrefsDialogWidBool *fullViewTodo = 677 KPrefsDialogWidBool *fullViewTodo =
678 addWidBool(i18n("Event list view uses full window"), 678 addWidBool(i18n("Event list view uses full window"),
679 &(KOPrefs::instance()->mFullViewTodo),topFrame); 679 &(KOPrefs::instance()->mFullViewTodo),topFrame);
680 topLayout->addWidget(fullViewTodo->checkBox(),ii++,0); 680 topLayout->addWidget(fullViewTodo->checkBox(),ii++,0);
681 681
682 KPrefsDialogWidBool *fullViewMonth = 682 KPrefsDialogWidBool *fullViewMonth =
683 addWidBool(i18n("Next days view uses full window"), 683 addWidBool(i18n("Next days view uses full window"),
684 &(KOPrefs::instance()->mFullViewMonth),topFrame); 684 &(KOPrefs::instance()->mFullViewMonth),topFrame);
685 topLayout->addWidget(fullViewMonth->checkBox(),ii++,0); 685 topLayout->addWidget(fullViewMonth->checkBox(),ii++,0);
686 686
687 dummy = 687 dummy =
688 addWidBool(i18n("Set agenda to DayBeginsAt on change"), 688 addWidBool(i18n("Set agenda to DayBeginsAt on change"),
689 &(KOPrefs::instance()->mSetTimeToDayStartAt),topFrame); 689 &(KOPrefs::instance()->mSetTimeToDayStartAt),topFrame);
690 topLayout->addWidget(dummy->checkBox(),ii++,0); 690 topLayout->addWidget(dummy->checkBox(),ii++,0);
691 691
692 dummy = 692 dummy =
693 addWidBool(i18n("Set agenda to current time on change"), 693 addWidBool(i18n("Set agenda to current time on change"),
694 &(KOPrefs::instance()->mCenterOnCurrentTime),topFrame); 694 &(KOPrefs::instance()->mCenterOnCurrentTime),topFrame);
695 topLayout->addWidget(dummy->checkBox(),ii++,0); 695 topLayout->addWidget(dummy->checkBox(),ii++,0);
696 696
697 dummy = 697 dummy =
698 addWidBool(i18n("Listview uses monthly timespan"), 698 addWidBool(i18n("Listview uses monthly timespan"),
699 &(KOPrefs::instance()->mListViewMonthTimespan),topFrame); 699 &(KOPrefs::instance()->mListViewMonthTimespan),topFrame);
700 topLayout->addWidget(dummy->checkBox(),ii++,0); 700 topLayout->addWidget(dummy->checkBox(),ii++,0);
701 dummy = 701 dummy =
702 addWidBool(i18n("Highlight selection in Time Edit"), 702 addWidBool(i18n("Highlight selection in Time Edit"),
703 &(KOPrefs::instance()->mHightlightDateTimeEdit),topFrame); 703 &(KOPrefs::instance()->mHightlightDateTimeEdit),topFrame);
704 topLayout->addWidget( dummy->checkBox(), ii++,0); 704 topLayout->addWidget( dummy->checkBox(), ii++,0);
705 705
706 706
707 707
708 708
709 709
710 topFrame = addPage(i18n("Month View"),0,0); 710 topFrame = addPage(i18n("Month View"),0,0);
711 // DesktopIcon("viewmag",KIcon::SizeMedium)); 711 // DesktopIcon("viewmag",KIcon::SizeMedium));
712 712
713 topLayout = new QGridLayout(topFrame,5,1); 713 topLayout = new QGridLayout(topFrame,5,1);
714 topLayout->setSpacing(spacingHint()); 714 topLayout->setSpacing(spacingHint());
715 topLayout->setMargin(marginHint()); 715 topLayout->setMargin(marginHint());
716 ii = 0; 716 ii = 0;
717 QLabel *lab; 717 QLabel *lab;
718 QHBox *habo = new QHBox( topFrame ); 718 QHBox *habo = new QHBox( topFrame );
719 if ( QApplication::desktop()->width() < 320 ) { 719 if ( QApplication::desktop()->width() <= 480 ) {
720 lab = new QLabel ( i18n("Show events that recur "), topFrame ); 720 lab = new QLabel ( i18n("Show events that recur "), topFrame );
721 topLayout->addMultiCellWidget(lab,ii, ii,0,1); 721 topLayout->addMultiCellWidget(lab,ii, ii,0,1);
722 ii++; 722 ii++;
723
724 } else { 723 } else {
725 new QLabel ( i18n("Show events that recur "), habo ); 724 new QLabel ( i18n("Show events that recur "), habo );
726
727 } 725 }
728 dailyRecur = 726 dailyRecur =
729 addWidBool(i18n("daily"), 727 addWidBool(i18n("daily"),
730 &(KOPrefs::instance()->mMonthDailyRecur),habo); 728 &(KOPrefs::instance()->mMonthDailyRecur),habo);
731 // topLayout->addWidget(dailyRecur->checkBox(),ii++,0); 729 // topLayout->addWidget(dailyRecur->checkBox(),ii++,0);
732 730
733 weeklyRecur = 731 weeklyRecur =
734 addWidBool(i18n("weekly"), 732 addWidBool(i18n("weekly"),
735 &(KOPrefs::instance()->mMonthWeeklyRecur),habo); 733 &(KOPrefs::instance()->mMonthWeeklyRecur),habo);
736 topLayout->addMultiCellWidget(habo,ii, ii,0,1); 734 topLayout->addMultiCellWidget(habo,ii, ii,0,1);
737 ii++; 735 ii++;
738 736
739 737
740 habo = new QHBox( topFrame ); 738 habo = new QHBox( topFrame );
741 if ( QApplication::desktop()->width() < 320 ) { 739 if ( QApplication::desktop()->width() <= 480 ) {
742 lab = new QLabel (i18n("Show in every cell ") , topFrame ); 740 lab = new QLabel (i18n("Show in every cell ") , topFrame );
743 topLayout->addMultiCellWidget(lab,ii, ii,0,1); 741 topLayout->addMultiCellWidget(lab,ii, ii,0,1);
744 ii++; 742 ii++;
745 743
746 } else { 744 } else {
747 new QLabel ( i18n("Show in every cell "), habo ); 745 new QLabel ( i18n("Show in every cell "), habo );
748 } 746 }
749 weeklyRecur = 747 weeklyRecur =
750 addWidBool(i18n("short month"), 748 addWidBool(i18n("short month"),
751 &(KOPrefs::instance()->mMonthShowShort),habo); 749 &(KOPrefs::instance()->mMonthShowShort),habo);
752 weeklyRecur = 750 weeklyRecur =
753 addWidBool(i18n("icons"), 751 addWidBool(i18n("icons"),
754 &(KOPrefs::instance()->mMonthShowIcons),habo); 752 &(KOPrefs::instance()->mMonthShowIcons),habo);
755 753
756 topLayout->addMultiCellWidget(habo,ii, ii,0,1); 754 topLayout->addMultiCellWidget(habo,ii, ii,0,1);
757 ii++; 755 ii++;
758#ifdef DESKTOP_VERSION 756#ifdef DESKTOP_VERSION
759 KPrefsDialogWidBool *enableMonthScroll = 757 KPrefsDialogWidBool *enableMonthScroll =
760 addWidBool(i18n("Enable scrollbars in month view cells"), 758 addWidBool(i18n("Enable scrollbars in month view cells"),
761 &(KOPrefs::instance()->mEnableMonthScroll),topFrame); 759 &(KOPrefs::instance()->mEnableMonthScroll),topFrame);
762 topLayout->addWidget(enableMonthScroll->checkBox(),ii++,0); 760 topLayout->addWidget(enableMonthScroll->checkBox(),ii++,0);
763#endif 761#endif
764 762
765 dummy = 763 dummy =
766 addWidBool(i18n("Show Sat/Sun together"), 764 addWidBool(i18n("Show Sat/Sun together"),
767 &(KOPrefs::instance()->mMonthViewSatSunTog),topFrame); 765 &(KOPrefs::instance()->mMonthViewSatSunTog),topFrame);
768 topLayout->addWidget(dummy->checkBox(),ii++,0); 766 topLayout->addWidget(dummy->checkBox(),ii++,0);
769 767
770 KPrefsDialogWidBool *coloredCategoriesInMonthView = 768 KPrefsDialogWidBool *coloredCategoriesInMonthView =
771 addWidBool(i18n("Month view uses category colors"), 769 addWidBool(i18n("Month view uses category colors"),
772 &(KOPrefs::instance()->mMonthViewUsesCategoryColor),topFrame); 770 &(KOPrefs::instance()->mMonthViewUsesCategoryColor),topFrame);
773 topLayout->addWidget(coloredCategoriesInMonthView->checkBox(),ii++,0); 771 topLayout->addWidget(coloredCategoriesInMonthView->checkBox(),ii++,0);
774 772
775 dummy = 773 dummy =
776 addWidBool(i18n("Categorie colors are applied to text"), 774 addWidBool(i18n("Categorie colors are applied to text"),
777 &(KOPrefs::instance()->mMonthViewUsesForegroundColor),topFrame); 775 &(KOPrefs::instance()->mMonthViewUsesForegroundColor),topFrame);
778 topLayout->addWidget(dummy->checkBox(),ii++,0); 776 topLayout->addWidget(dummy->checkBox(),ii++,0);
779 coloredCategoriesInMonthView = 777 coloredCategoriesInMonthView =
780 addWidBool(i18n("Month view uses day colors"), 778 addWidBool(i18n("Month view uses day colors"),
781 &(KOPrefs::instance()->mMonthViewUsesDayColors),topFrame); 779 &(KOPrefs::instance()->mMonthViewUsesDayColors),topFrame);
782 topLayout->addWidget(coloredCategoriesInMonthView->checkBox(),ii++,0); 780 topLayout->addWidget(coloredCategoriesInMonthView->checkBox(),ii++,0);
783 781
784 KPrefsDialogWidColor *holidayColor = 782 KPrefsDialogWidColor *holidayColor =
785 addWidColor(i18n("Day color odd months"), 783 addWidColor(i18n("Day color odd months"),
786 &(KOPrefs::instance()->mMonthViewOddColor),topFrame); 784 &(KOPrefs::instance()->mMonthViewOddColor),topFrame);
787 topLayout->addWidget(holidayColor->label(),ii,0); 785 topLayout->addWidget(holidayColor->label(),ii,0);
788 topLayout->addWidget(holidayColor->button(),ii++,1); 786 topLayout->addWidget(holidayColor->button(),ii++,1);
789 787
790 holidayColor = 788 holidayColor =
791 addWidColor(i18n("Day color even months"), 789 addWidColor(i18n("Day color even months"),
792 &(KOPrefs::instance()->mMonthViewEvenColor),topFrame); 790 &(KOPrefs::instance()->mMonthViewEvenColor),topFrame);
793 topLayout->addWidget(holidayColor->label(),ii,0); 791 topLayout->addWidget(holidayColor->label(),ii,0);
794 topLayout->addWidget(holidayColor->button(),ii++,1); 792 topLayout->addWidget(holidayColor->button(),ii++,1);
795 793
796 794
797 holidayColor = 795 holidayColor =
798 addWidColor(i18n("Color for Sundays + category \"Holiday\""), 796 addWidColor(i18n("Color for Sundays + category \"Holiday\""),
799 &(KOPrefs::instance()->mMonthViewHolidayColor),topFrame); 797 &(KOPrefs::instance()->mMonthViewHolidayColor),topFrame);
800 topLayout->addWidget(holidayColor->label(),ii,0); 798 topLayout->addWidget(holidayColor->label(),ii,0);
801 topLayout->addWidget(holidayColor->button(),ii++,1); 799 topLayout->addWidget(holidayColor->button(),ii++,1);
802 // *********************** What'sNext View 800 // *********************** What'sNext View
803 topFrame = addPage(i18n("What's Next View"),0,0); 801 topFrame = addPage(i18n("What's Next View"),0,0);
804 // DesktopIcon("viewmag",KIcon::SizeMedium)); 802 // DesktopIcon("viewmag",KIcon::SizeMedium));
805 803
806 topLayout = new QGridLayout(topFrame,4,1); 804 topLayout = new QGridLayout(topFrame,4,1);
807 topLayout->setSpacing(spacingHint()); 805 topLayout->setSpacing(spacingHint());
808 topLayout->setMargin(marginHint()); 806 topLayout->setMargin(marginHint());
809 ii = 0; 807 ii = 0;
810 KPrefsDialogWidBool *passwdk = 808 KPrefsDialogWidBool *passwdk =
811 809
812 addWidBool(i18n("Show events, that are done in \nWhat's Next view"), 810 addWidBool(i18n("Show events, that are done in \nWhat's Next view"),
813 &(KOPrefs::instance()->mWNViewShowsPast),topFrame); 811 &(KOPrefs::instance()->mWNViewShowsPast),topFrame);
814 topLayout->addWidget(passwdk->checkBox(), ii++,0); 812 topLayout->addWidget(passwdk->checkBox(), ii++,0);
815 passwdk = 813 passwdk =
816 addWidBool(i18n("Show parent To-Do's in What's Next view"), 814 addWidBool(i18n("Show parent To-Do's in What's Next view"),
817 &(KOPrefs::instance()->mWNViewShowsParents),topFrame); 815 &(KOPrefs::instance()->mWNViewShowsParents),topFrame);
818 topLayout->addWidget(passwdk->checkBox(), ii++,0); 816 topLayout->addWidget(passwdk->checkBox(), ii++,0);
819 817
820 passwdk = 818 passwdk =
821 addWidBool(i18n("Show location in What's Next view"), 819 addWidBool(i18n("Show location in What's Next view"),
822 &(KOPrefs::instance()->mWNViewShowLocation),topFrame); 820 &(KOPrefs::instance()->mWNViewShowLocation),topFrame);
823 topLayout->addWidget(passwdk->checkBox(), ii++,0); 821 topLayout->addWidget(passwdk->checkBox(), ii++,0);
824 822
825 passwdk = 823 passwdk =
826 addWidBool(i18n("Show Sync Events in \nWhat's Next/Agenda view"), 824 addWidBool(i18n("Show Sync Events in \nWhat's Next/Agenda view"),
827 &(KOPrefs::instance()->mShowSyncEvents),topFrame); 825 &(KOPrefs::instance()->mShowSyncEvents),topFrame);
828 topLayout->addWidget(passwdk->checkBox(), ii++,0); 826 topLayout->addWidget(passwdk->checkBox(), ii++,0);
829 passwdk = 827 passwdk =
830 addWidBool(i18n("Use short date in \nWhat's Next/Event view"), 828 addWidBool(i18n("Use short date in \nWhat's Next/Event view"),
831 &(KOPrefs::instance()->mShortDateInViewer),topFrame); 829 &(KOPrefs::instance()->mShortDateInViewer),topFrame);
832 topLayout->addWidget(passwdk->checkBox(), ii++,0); 830 topLayout->addWidget(passwdk->checkBox(), ii++,0);
833 831
834 832
835 833
836 834
837 // *********************** Todo View 835 // *********************** Todo View
838 836
839 topFrame = addPage(i18n("Todo View"),0,0); 837 topFrame = addPage(i18n("Todo View"),0,0);
840 // DesktopIcon("viewmag",KIcon::SizeMedium)); 838 // DesktopIcon("viewmag",KIcon::SizeMedium));
841 839
842 topLayout = new QGridLayout(topFrame,4,1); 840 topLayout = new QGridLayout(topFrame,4,1);
843 topLayout->setSpacing(spacingHint()); 841 topLayout->setSpacing(spacingHint());
844 topLayout->setMargin(marginHint()); 842 topLayout->setMargin(marginHint());
845 ii = 0; 843 ii = 0;
846dummy = 844dummy =
847 addWidBool(i18n("Hide not running Todos in To-do view"), 845 addWidBool(i18n("Hide not running Todos in To-do view"),
848 &(KOPrefs::instance()->mHideNonStartedTodos),topFrame); 846 &(KOPrefs::instance()->mHideNonStartedTodos),topFrame);
849 topLayout->addWidget(dummy->checkBox(),ii++,0); 847 topLayout->addWidget(dummy->checkBox(),ii++,0);
850 848
851 849
852 KPrefsDialogWidBool *showCompletedTodo = 850 KPrefsDialogWidBool *showCompletedTodo =
853 addWidBool(i18n("To-do view shows completed Todos"), 851 addWidBool(i18n("To-do view shows completed Todos"),
854 &(KOPrefs::instance()->mShowCompletedTodo),topFrame); 852 &(KOPrefs::instance()->mShowCompletedTodo),topFrame);
855 topLayout->addWidget(showCompletedTodo->checkBox(),ii++,0); 853 topLayout->addWidget(showCompletedTodo->checkBox(),ii++,0);
856 dummy = 854 dummy =
857 addWidBool(i18n("To-do view shows complete as 'xx %'"), 855 addWidBool(i18n("To-do view shows complete as 'xx %'"),
858 &(KOPrefs::instance()->mTodoViewShowsPercentage),topFrame); 856 &(KOPrefs::instance()->mTodoViewShowsPercentage),topFrame);
859 topLayout->addWidget(dummy->checkBox(),ii++,0); 857 topLayout->addWidget(dummy->checkBox(),ii++,0);
860 858
861 dummy = 859 dummy =
862 addWidBool(i18n("Small To-do view uses smaller font"), 860 addWidBool(i18n("Small To-do view uses smaller font"),
863 &(KOPrefs::instance()->mTodoViewUsesSmallFont),topFrame); 861 &(KOPrefs::instance()->mTodoViewUsesSmallFont),topFrame);
864 topLayout->addWidget(dummy->checkBox(),ii++,0); 862 topLayout->addWidget(dummy->checkBox(),ii++,0);
865 863
866 864
867 865
868 dummy = 866 dummy =
869 addWidBool(i18n("Todo view uses category colors"), 867 addWidBool(i18n("Todo view uses category colors"),
870 &(KOPrefs::instance()->mTodoViewUsesCatColors),topFrame); 868 &(KOPrefs::instance()->mTodoViewUsesCatColors),topFrame);
871 topLayout->addWidget(dummy->checkBox(),ii++,0); 869 topLayout->addWidget(dummy->checkBox(),ii++,0);
872 870
873 871
874 QWidget* wid = new QWidget( topFrame ); 872 QWidget* wid = new QWidget( topFrame );
875 // Todo due today color 873 // Todo due today color
876 KPrefsDialogWidColor *todoDueTodayColor = 874 KPrefsDialogWidColor *todoDueTodayColor =
877 addWidColor(i18n("Todo due today color:"), 875 addWidColor(i18n("Todo due today color:"),
878 &(KOPrefs::instance()->mTodoDueTodayColor),wid); 876 &(KOPrefs::instance()->mTodoDueTodayColor),wid);
879 QHBoxLayout *widLayout = new QHBoxLayout(wid); 877 QHBoxLayout *widLayout = new QHBoxLayout(wid);
880 widLayout->addWidget( todoDueTodayColor->label() ); 878 widLayout->addWidget( todoDueTodayColor->label() );
881 widLayout->addWidget( todoDueTodayColor->button() ); 879 widLayout->addWidget( todoDueTodayColor->button() );
882 topLayout->addWidget(wid,ii++,0); 880 topLayout->addWidget(wid,ii++,0);
883 //topLayout->addWidget(todoDueTodayColor->button(),ii++,1); 881 //topLayout->addWidget(todoDueTodayColor->button(),ii++,1);
884 882
885 // Todo overdue color 883 // Todo overdue color
886 wid = new QWidget( topFrame ); 884 wid = new QWidget( topFrame );
887 widLayout = new QHBoxLayout(wid); 885 widLayout = new QHBoxLayout(wid);
888 KPrefsDialogWidColor *todoOverdueColor = 886 KPrefsDialogWidColor *todoOverdueColor =
889 addWidColor(i18n("Todo overdue color:"), 887 addWidColor(i18n("Todo overdue color:"),
890 &(KOPrefs::instance()->mTodoOverdueColor),wid); 888 &(KOPrefs::instance()->mTodoOverdueColor),wid);
891 widLayout->addWidget(todoOverdueColor->label()); 889 widLayout->addWidget(todoOverdueColor->label());
892 widLayout->addWidget(todoOverdueColor->button()); 890 widLayout->addWidget(todoOverdueColor->button());
893 topLayout->addWidget(wid,ii++,0); 891 topLayout->addWidget(wid,ii++,0);
894 892
895 dummy = 893 dummy =
896 addWidBool(i18n("Colors are applied to text"), 894 addWidBool(i18n("Colors are applied to text"),
897 &(KOPrefs::instance()->mTodoViewUsesForegroundColor),topFrame); 895 &(KOPrefs::instance()->mTodoViewUsesForegroundColor),topFrame);
898 topLayout->addWidget(dummy->checkBox(),ii++,0); 896 topLayout->addWidget(dummy->checkBox(),ii++,0);
899 897
900 dummy = 898 dummy =
901 addWidBool(i18n("Allday Agenda view shows todos"), 899 addWidBool(i18n("Allday Agenda view shows todos"),
902 &(KOPrefs::instance()->mShowTodoInAgenda),topFrame); 900 &(KOPrefs::instance()->mShowTodoInAgenda),topFrame);
903 topLayout->addWidget(dummy->checkBox(),ii++,0); 901 topLayout->addWidget(dummy->checkBox(),ii++,0);
904 902
905 903
906 904
907 905
908 topFrame = addPage(i18n("Alarm"),0,0); 906 topFrame = addPage(i18n("Alarm"),0,0);
909 // DesktopIcon("viewmag",KIcon::SizeMedium)); 907 // DesktopIcon("viewmag",KIcon::SizeMedium));
910 908
911 topLayout = new QGridLayout(topFrame,2,1); 909 topLayout = new QGridLayout(topFrame,2,1);
912 topLayout->setSpacing(spacingHint()); 910 topLayout->setSpacing(spacingHint());
913 topLayout->setMargin(marginHint()); 911 topLayout->setMargin(marginHint());
914 int iii = 0; 912 int iii = 0;
915 913
916 dummy = 914 dummy =
917 addWidBool(i18n("Use internal alarm notification"), 915 addWidBool(i18n("Use internal alarm notification"),
918 &(KOPrefs::instance()->mUseInternalAlarmNotification),topFrame); 916 &(KOPrefs::instance()->mUseInternalAlarmNotification),topFrame);
919 topLayout->addWidget(dummy->checkBox(),iii++,0); 917 topLayout->addWidget(dummy->checkBox(),iii++,0);
920 lab = new QLabel( i18n("Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n"), topFrame); 918 lab = new QLabel( i18n("Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n"), topFrame);
921 919
922 topLayout->addWidget(lab ,iii++,0); 920 topLayout->addWidget(lab ,iii++,0);
923#ifndef DESKTOP_VERSION 921#ifndef DESKTOP_VERSION
924 lab->setAlignment( AlignLeft|WordBreak|AlignTop); 922 lab->setAlignment( AlignLeft|WordBreak|AlignTop);
925#else 923#else
926 lab->setAlignment( AlignLeft|BreakAnywhere|WordBreak|AlignTop); 924 lab->setAlignment( AlignLeft|BreakAnywhere|WordBreak|AlignTop);
927 lab->setSizePolicy( QSizePolicy( QSizePolicy::Ignored , QSizePolicy::Ignored,true) ); 925 lab->setSizePolicy( QSizePolicy( QSizePolicy::Ignored , QSizePolicy::Ignored,true) );
928#endif 926#endif
929 927
930 QHBox* dummyBox = new QHBox(topFrame); 928 QHBox* dummyBox = new QHBox(topFrame);
931 new QLabel(i18n("Play beeps count:"),dummyBox); 929 new QLabel(i18n("Play beeps count:"),dummyBox);
932 mAlarmPlayBeeps = new QSpinBox(0,500,1,dummyBox); 930 mAlarmPlayBeeps = new QSpinBox(0,500,1,dummyBox);
933 topLayout->addWidget(dummyBox,iii++,0); 931 topLayout->addWidget(dummyBox,iii++,0);
934 932
935 dummyBox = new QHBox(topFrame); 933 dummyBox = new QHBox(topFrame);
936 new QLabel(i18n("Beeps interval in sec:"),dummyBox); 934 new QLabel(i18n("Beeps interval in sec:"),dummyBox);
937 mAlarmBeepInterval = new QSpinBox(1,600,1,dummyBox); 935 mAlarmBeepInterval = new QSpinBox(1,600,1,dummyBox);
938 topLayout->addWidget(dummyBox,iii++,0); 936 topLayout->addWidget(dummyBox,iii++,0);
939 937
940 dummyBox = new QHBox(topFrame); 938 dummyBox = new QHBox(topFrame);
941 new QLabel(i18n("Default suspend time in min:"),dummyBox); 939 new QLabel(i18n("Default suspend time in min:"),dummyBox);
942 mAlarmSuspendTime = new QSpinBox(1,600,1,dummyBox); 940 mAlarmSuspendTime = new QSpinBox(1,600,1,dummyBox);
943 topLayout->addWidget(dummyBox,iii++,0); 941 topLayout->addWidget(dummyBox,iii++,0);
944 942
945 dummyBox = new QHBox(topFrame); 943 dummyBox = new QHBox(topFrame);
946 new QLabel(i18n("Auto suspend count:"),dummyBox); 944 new QLabel(i18n("Auto suspend count:"),dummyBox);
947 mAlarmSuspendCount = new QSpinBox(0,60,1,dummyBox); 945 mAlarmSuspendCount = new QSpinBox(0,60,1,dummyBox);
948 topLayout->addWidget(dummyBox,iii++,0); 946 topLayout->addWidget(dummyBox,iii++,0);
949 947
950 948
951 949
952 950
953 951
954 952
955 953
956 QHBox* hbo = new QHBox ( topFrame ); 954 QHBox* hbo = new QHBox ( topFrame );
957 mDefaultAlarmFile = new QLineEdit(hbo); 955 mDefaultAlarmFile = new QLineEdit(hbo);
958 QPushButton * loadTemplate = new QPushButton(hbo); 956 QPushButton * loadTemplate = new QPushButton(hbo);
959 QPixmap icon; 957 QPixmap icon;
960 if ( QApplication::desktop()->width() < 321 ) 958 if ( QApplication::desktop()->width() < 321 )
961 icon = SmallIcon("fileimport16"); 959 icon = SmallIcon("fileimport16");
962 else 960 else
963 icon = SmallIcon("fileimport"); 961 icon = SmallIcon("fileimport");
964 loadTemplate->setIconSet (icon ) ; 962 loadTemplate->setIconSet (icon ) ;
965 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( selectSoundFile() ) ); 963 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( selectSoundFile() ) );
966 int size = loadTemplate->sizeHint().height(); 964 int size = loadTemplate->sizeHint().height();
967 loadTemplate->setFixedSize( size, size ); 965 loadTemplate->setFixedSize( size, size );
968 //lab = new QLabel( i18n("This setting is useless for 5500 user!"), topFrame); 966 //lab = new QLabel( i18n("This setting is useless for 5500 user!"), topFrame);
969 // topLayout->addWidget(lab ,iii++,0); 967 // topLayout->addWidget(lab ,iii++,0);
970 lab = new QLabel( i18n("Alarm *.wav file for newly created alarm:"), topFrame); 968 lab = new QLabel( i18n("Alarm *.wav file for newly created alarm:"), topFrame);
971 topLayout->addWidget(lab ,iii++,0); 969 topLayout->addWidget(lab ,iii++,0);
972 topLayout->addWidget(hbo,iii++,0); 970 topLayout->addWidget(hbo,iii++,0);
973 // lab = new QLabel( i18n("Note: This does not mean, that for every alarm this file is replayed. This file here is associated with a newly created alarm."), topFrame); 971 // lab = new QLabel( i18n("Note: This does not mean, that for every alarm this file is replayed. This file here is associated with a newly created alarm."), topFrame);
974 972
975// topLayout->addWidget(lab ,iii++,0); 973// topLayout->addWidget(lab ,iii++,0);
976// #ifndef DESKTOP_VERSION 974// #ifndef DESKTOP_VERSION
977// lab->setAlignment( AlignLeft|WordBreak|AlignTop); 975// lab->setAlignment( AlignLeft|WordBreak|AlignTop);
978// #else 976// #else
979// lab->setAlignment( AlignLeft|BreakAnywhere|WordBreak|AlignTop); 977// lab->setAlignment( AlignLeft|BreakAnywhere|WordBreak|AlignTop);
980// lab->setSizePolicy( QSizePolicy( QSizePolicy::Ignored , QSizePolicy::Ignored,true) ); 978// lab->setSizePolicy( QSizePolicy( QSizePolicy::Ignored , QSizePolicy::Ignored,true) );
981// #endif 979// #endif
982 980
983 981
984} 982}
985 983
986void KOPrefsDialog::selectSoundFile() 984void KOPrefsDialog::selectSoundFile()
987{ 985{
988 QString fileName = mDefaultAlarmFile->text(); 986 QString fileName = mDefaultAlarmFile->text();
989 fileName = KFileDialog::getSaveFileName( mDefaultAlarmFile->text() , "Choose default alarm file", this ); 987 fileName = KFileDialog::getSaveFileName( mDefaultAlarmFile->text() , "Choose default alarm file", this );
990 if ( fileName.length() > 0 ) 988 if ( fileName.length() > 0 )
991 mDefaultAlarmFile->setText( fileName ); 989 mDefaultAlarmFile->setText( fileName );
992} 990}
993void KOPrefsDialog::setupFontsTab() 991void KOPrefsDialog::setupFontsTab()
994{ 992{
995 993
996 QFrame *topFrame = addPage(i18n("Fonts"),0,0); 994 QFrame *topFrame = addPage(i18n("Fonts"),0,0);
997 // DesktopIcon("fonts",KIcon::SizeMedium)); 995 // DesktopIcon("fonts",KIcon::SizeMedium));
998 996
999 QGridLayout *topLayout = new QGridLayout(topFrame,7,3); 997 QGridLayout *topLayout = new QGridLayout(topFrame,7,3);
1000 topLayout->setSpacing(1); 998 topLayout->setSpacing(1);
1001 topLayout->setMargin(3); 999 topLayout->setMargin(3);
1002 KPrefsDialogWidFont * tVFont; 1000 KPrefsDialogWidFont * tVFont;
1003 int i = 0; 1001 int i = 0;
1004 KPrefsDialogWidFont *timeLabelsFont = 1002 KPrefsDialogWidFont *timeLabelsFont =
1005 addWidFont(i18n("23"),i18n("DateNavigator:(nr)"), 1003 addWidFont(i18n("23"),i18n("DateNavigator:(nr)"),
1006 &(KOPrefs::instance()->mDateNavigatorFont),topFrame); 1004 &(KOPrefs::instance()->mDateNavigatorFont),topFrame);
1007 topLayout->addWidget(timeLabelsFont->label(),i,0); 1005 topLayout->addWidget(timeLabelsFont->label(),i,0);
1008 topLayout->addWidget(timeLabelsFont->preview(),i,1); 1006 topLayout->addWidget(timeLabelsFont->preview(),i,1);
1009 topLayout->addWidget(timeLabelsFont->button(),i,2); 1007 topLayout->addWidget(timeLabelsFont->button(),i,2);
1010 ++i; 1008 ++i;
1011 1009
1012 1010
1013 timeLabelsFont = 1011 timeLabelsFont =
1014 addWidFont(i18n("Mon 15"),i18n("Date Labels:"), 1012 addWidFont(i18n("Mon 15"),i18n("Date Labels:"),
1015 &(KOPrefs::instance()->mTimeLabelsFont),topFrame); 1013 &(KOPrefs::instance()->mTimeLabelsFont),topFrame);
1016 topLayout->addWidget(timeLabelsFont->label(),i,0); 1014 topLayout->addWidget(timeLabelsFont->label(),i,0);
1017 topLayout->addWidget(timeLabelsFont->preview(),i,1); 1015 topLayout->addWidget(timeLabelsFont->preview(),i,1);
1018 topLayout->addWidget(timeLabelsFont->button(),i,2); 1016 topLayout->addWidget(timeLabelsFont->button(),i,2);
1019 ++i; 1017 ++i;
1020 1018
1021 KPrefsDialogWidFont *timeBarFont = 1019 KPrefsDialogWidFont *timeBarFont =
1022 addWidFont(KGlobal::locale()->formatTime(QTime(12,34)),i18n("Time bar:"), 1020 addWidFont(KGlobal::locale()->formatTime(QTime(12,34)),i18n("Time bar:"),
1023 &(KOPrefs::instance()->mTimeBarFont),topFrame); 1021 &(KOPrefs::instance()->mTimeBarFont),topFrame);
1024 topLayout->addWidget(timeBarFont->label(),i,0); 1022 topLayout->addWidget(timeBarFont->label(),i,0);
1025 topLayout->addWidget(timeBarFont->preview(),i,1); 1023 topLayout->addWidget(timeBarFont->preview(),i,1);
1026 topLayout->addWidget(timeBarFont->button(),i,2); 1024 topLayout->addWidget(timeBarFont->button(),i,2);
1027 ++i; 1025 ++i;
1028 1026
1029 1027
1030 KPrefsDialogWidFont *marcusBainsFont = 1028 KPrefsDialogWidFont *marcusBainsFont =
1031 addWidFont(KGlobal::locale()->formatTime(QTime(12,34,23)),i18n("M. Bains line:"), 1029 addWidFont(KGlobal::locale()->formatTime(QTime(12,34,23)),i18n("M. Bains line:"),
1032 &(KOPrefs::instance()->mMarcusBainsFont),topFrame); 1030 &(KOPrefs::instance()->mMarcusBainsFont),topFrame);
1033 topLayout->addWidget(marcusBainsFont->label(),i,0); 1031 topLayout->addWidget(marcusBainsFont->label(),i,0);
1034 topLayout->addWidget(marcusBainsFont->preview(),i,1); 1032 topLayout->addWidget(marcusBainsFont->preview(),i,1);
1035 topLayout->addWidget(marcusBainsFont->button(),i,2); 1033 topLayout->addWidget(marcusBainsFont->button(),i,2);
1036 ++i; 1034 ++i;
1037 1035
1038 tVFont = 1036 tVFont =
1039 addWidFont(i18n("Summary"),i18n("Event Viewer:"), 1037 addWidFont(i18n("Summary"),i18n("Event Viewer:"),
1040 &(KOPrefs::instance()->mEventViewFont),topFrame); 1038 &(KOPrefs::instance()->mEventViewFont),topFrame);
1041 topLayout->addWidget(tVFont->label(),i,0); 1039 topLayout->addWidget(tVFont->label(),i,0);
1042 topLayout->addWidget(tVFont->preview(),i,1); 1040 topLayout->addWidget(tVFont->preview(),i,1);
1043 topLayout->addWidget(tVFont->button(),i,2); 1041 topLayout->addWidget(tVFont->button(),i,2);
1044 ++i; 1042 ++i;
1045 1043
1046 1044
1047 1045
1048 tVFont = 1046 tVFont =
1049 addWidFont(i18n("Details"),i18n("EditorBox:"), 1047 addWidFont(i18n("Details"),i18n("EditorBox:"),
1050 &(KOPrefs::instance()->mEditBoxFont),topFrame); 1048 &(KOPrefs::instance()->mEditBoxFont),topFrame);
1051 topLayout->addWidget(tVFont->label(),i,0); 1049 topLayout->addWidget(tVFont->label(),i,0);
1052 topLayout->addWidget(tVFont->preview(),i,1); 1050 topLayout->addWidget(tVFont->preview(),i,1);
1053 topLayout->addWidget(tVFont->button(),i,2); 1051 topLayout->addWidget(tVFont->button(),i,2);
1054 ++i; 1052 ++i;
1055 1053
1056 1054
1057 1055
1058 topLayout->setColStretch(1,1); 1056 topLayout->setColStretch(1,1);
1059 topLayout->setRowStretch(4,1); 1057 topLayout->setRowStretch(4,1);
1060 1058
1061 1059
1062 i = 0; 1060 i = 0;
1063 topFrame = addPage(i18n("View Fonts"),0, 1061 topFrame = addPage(i18n("View Fonts"),0,
1064 DesktopIcon("fonts",KIcon::SizeMedium)); 1062 DesktopIcon("fonts",KIcon::SizeMedium));
1065 1063
1066 topLayout = new QGridLayout(topFrame,7,3); 1064 topLayout = new QGridLayout(topFrame,7,3);
1067 topLayout->setSpacing(1); 1065 topLayout->setSpacing(1);
1068 topLayout->setMargin(3); 1066 topLayout->setMargin(3);
1069 1067
1070 tVFont = 1068 tVFont =
1071 addWidFont(i18n("Configure KO"),i18n("What's Next View:"), 1069 addWidFont(i18n("Configure KO"),i18n("What's Next View:"),
1072 &(KOPrefs::instance()->mWhatsNextFont),topFrame); 1070 &(KOPrefs::instance()->mWhatsNextFont),topFrame);
1073 topLayout->addWidget(tVFont->label(),i,0); 1071 topLayout->addWidget(tVFont->label(),i,0);
1074 topLayout->addWidget(tVFont->preview(),i,1); 1072 topLayout->addWidget(tVFont->preview(),i,1);
1075 topLayout->addWidget(tVFont->button(),i,2); 1073 topLayout->addWidget(tVFont->button(),i,2);
1076 ++i; 1074 ++i;
1077 KPrefsDialogWidFont *agendaViewFont = 1075 KPrefsDialogWidFont *agendaViewFont =
1078 addWidFont(i18n("Event text"),i18n("Agenda view:"), 1076 addWidFont(i18n("Event text"),i18n("Agenda view:"),
1079 &(KOPrefs::instance()->mAgendaViewFont),topFrame); 1077 &(KOPrefs::instance()->mAgendaViewFont),topFrame);
1080 topLayout->addWidget(agendaViewFont->label(),i,0); 1078 topLayout->addWidget(agendaViewFont->label(),i,0);
1081 topLayout->addWidget(agendaViewFont->preview(),i,1); 1079 topLayout->addWidget(agendaViewFont->preview(),i,1);
1082 topLayout->addWidget(agendaViewFont->button(),i,2); 1080 topLayout->addWidget(agendaViewFont->button(),i,2);
1083 ++i; 1081 ++i;
1084 1082
1085 1083
1086 KPrefsDialogWidFont *monthViewFont = 1084 KPrefsDialogWidFont *monthViewFont =
1087 addWidFont(KGlobal::locale()->formatTime(QTime(12,34)) + " " + i18n("Event"), 1085 addWidFont(KGlobal::locale()->formatTime(QTime(12,34)) + " " + i18n("Event"),
1088 i18n("Month view:"),&(KOPrefs::instance()->mMonthViewFont),topFrame); 1086 i18n("Month view:"),&(KOPrefs::instance()->mMonthViewFont),topFrame);
1089 topLayout->addWidget(monthViewFont->label(),i,0); 1087 topLayout->addWidget(monthViewFont->label(),i,0);
1090 topLayout->addWidget(monthViewFont->preview(),i,1); 1088 topLayout->addWidget(monthViewFont->preview(),i,1);
1091 topLayout->addWidget(monthViewFont->button(),i,2); 1089 topLayout->addWidget(monthViewFont->button(),i,2);
1092 ++i; 1090 ++i;
1093 1091
1094 1092
1095 KPrefsDialogWidFont *lVFont = 1093 KPrefsDialogWidFont *lVFont =
1096 addWidFont(i18n("Event"),i18n("List View:"), 1094 addWidFont(i18n("Event"),i18n("List View:"),
1097 &(KOPrefs::instance()->mListViewFont),topFrame); 1095 &(KOPrefs::instance()->mListViewFont),topFrame);
1098 topLayout->addWidget(lVFont->label(),i,0); 1096 topLayout->addWidget(lVFont->label(),i,0);
1099 topLayout->addWidget(lVFont->preview(),i,1); 1097 topLayout->addWidget(lVFont->preview(),i,1);
1100 topLayout->addWidget(lVFont->button(),i,2); 1098 topLayout->addWidget(lVFont->button(),i,2);
1101 ++i; 1099 ++i;
1102 1100
1103 1101
1104 tVFont = 1102 tVFont =
1105 addWidFont(i18n("ToDo"),i18n("ToDoView:"), 1103 addWidFont(i18n("ToDo"),i18n("ToDoView:"),
1106 &(KOPrefs::instance()->mTodoViewFont),topFrame); 1104 &(KOPrefs::instance()->mTodoViewFont),topFrame);
1107 topLayout->addWidget(tVFont->label(),i,0); 1105 topLayout->addWidget(tVFont->label(),i,0);
1108 topLayout->addWidget(tVFont->preview(),i,1); 1106 topLayout->addWidget(tVFont->preview(),i,1);
1109 topLayout->addWidget(tVFont->button(),i,2); 1107 topLayout->addWidget(tVFont->button(),i,2);
1110 ++i; 1108 ++i;
1111 1109
1112 1110
1113 tVFont = 1111 tVFont =
1114 addWidFont(i18n("Today"),i18n("JournalView:"), 1112 addWidFont(i18n("Today"),i18n("JournalView:"),
1115 &(KOPrefs::instance()->mJornalViewFont),topFrame); 1113 &(KOPrefs::instance()->mJornalViewFont),topFrame);
1116 topLayout->addWidget(tVFont->label(),i,0); 1114 topLayout->addWidget(tVFont->label(),i,0);
1117 topLayout->addWidget(tVFont->preview(),i,1); 1115 topLayout->addWidget(tVFont->preview(),i,1);
1118 topLayout->addWidget(tVFont->button(),i,2); 1116 topLayout->addWidget(tVFont->button(),i,2);
1119 ++i; 1117 ++i;
1120 1118
1121 1119
1122 1120
1123 1121
1124 topLayout->setColStretch(1,1); 1122 topLayout->setColStretch(1,1);
1125 topLayout->setRowStretch(4,1); 1123 topLayout->setRowStretch(4,1);
1126 1124
1127 1125
1128 1126
1129 1127
1130} 1128}
1131 1129
1132void KOPrefsDialog::setupColorsTab() 1130void KOPrefsDialog::setupColorsTab()
1133{ 1131{
1134 QFrame *topFrame = addPage(i18n("Colors"),0,0); 1132 QFrame *topFrame = addPage(i18n("Colors"),0,0);
1135 // DesktopIcon("colorize",KIcon::SizeMedium)); 1133 // DesktopIcon("colorize",KIcon::SizeMedium));
1136 1134
1137 QGridLayout *topLayout = new QGridLayout(topFrame,5,2); 1135 QGridLayout *topLayout = new QGridLayout(topFrame,5,2);
1138 // topLayout->setSpacing(spacingHint()); 1136 // topLayout->setSpacing(spacingHint());
1139 // topLayout->setMargin(marginHint()); 1137 // topLayout->setMargin(marginHint());
1140 1138
1141 topLayout->setSpacing(2); 1139 topLayout->setSpacing(2);
1142 topLayout->setMargin(3); 1140 topLayout->setMargin(3);
1143 1141
1144 int ii = 1; 1142 int ii = 1;
1145 QGroupBox *categoryGroup ; 1143 QGroupBox *categoryGroup ;
1146 1144
1147 categoryGroup = new QGroupBox(1,Vertical,i18n("Categories"), 1145 categoryGroup = new QGroupBox(1,Vertical,i18n("Categories"),
1148 topFrame); 1146 topFrame);
1149 topLayout->addMultiCellWidget(categoryGroup,0,0,0,1); 1147 topLayout->addMultiCellWidget(categoryGroup,0,0,0,1);
1150 1148
1151 mCategoryCombo = new QComboBox(categoryGroup); 1149 mCategoryCombo = new QComboBox(categoryGroup);
1152 mCategoryCombo->insertStringList(KOPrefs::instance()->mCustomCategories); 1150 mCategoryCombo->insertStringList(KOPrefs::instance()->mCustomCategories);
1153 connect(mCategoryCombo,SIGNAL(activated(int)),SLOT(updateCategoryColor())); 1151 connect(mCategoryCombo,SIGNAL(activated(int)),SLOT(updateCategoryColor()));
1154 1152
1155 mCategoryButton = new KColorButton(categoryGroup); 1153 mCategoryButton = new KColorButton(categoryGroup);
1156 connect(mCategoryButton,SIGNAL(changed(const QColor &)),SLOT(setCategoryColor())); 1154 connect(mCategoryButton,SIGNAL(changed(const QColor &)),SLOT(setCategoryColor()));
1157 updateCategoryColor(); 1155 updateCategoryColor();
1158 1156
1159 1157
1160 // Holiday Color 1158 // Holiday Color
1161 1159
1162 KPrefsDialogWidColor *holidayColor = 1160 KPrefsDialogWidColor *holidayColor =
1163 addWidColor(i18n("Holiday color:"), 1161 addWidColor(i18n("Holiday color:"),
1164 &(KOPrefs::instance()->mHolidayColor),topFrame); 1162 &(KOPrefs::instance()->mHolidayColor),topFrame);
1165 topLayout->addWidget(holidayColor->label(),ii,0); 1163 topLayout->addWidget(holidayColor->label(),ii,0);
1166 topLayout->addWidget(holidayColor->button(),ii++,1); 1164 topLayout->addWidget(holidayColor->button(),ii++,1);
1167 1165
1168 // Highlight Color 1166 // Highlight Color
1169 KPrefsDialogWidColor *highlightColor = 1167 KPrefsDialogWidColor *highlightColor =
1170 addWidColor(i18n("Highlight color:"), 1168 addWidColor(i18n("Highlight color:"),
1171 &(KOPrefs::instance()->mHighlightColor),topFrame); 1169 &(KOPrefs::instance()->mHighlightColor),topFrame);
1172 topLayout->addWidget(highlightColor->label(),ii,0); 1170 topLayout->addWidget(highlightColor->label(),ii,0);
1173 topLayout->addWidget(highlightColor->button(),ii++,1); 1171 topLayout->addWidget(highlightColor->button(),ii++,1);
1174 1172
1175 // Event color 1173 // Event color
1176 KPrefsDialogWidColor *eventColor = 1174 KPrefsDialogWidColor *eventColor =
1177 addWidColor(i18n("Default event color:"), 1175 addWidColor(i18n("Default event color:"),
1178 &(KOPrefs::instance()->mEventColor),topFrame); 1176 &(KOPrefs::instance()->mEventColor),topFrame);
1179 topLayout->addWidget(eventColor->label(),ii,0); 1177 topLayout->addWidget(eventColor->label(),ii,0);
1180 topLayout->addWidget(eventColor->button(),ii++,1); 1178 topLayout->addWidget(eventColor->button(),ii++,1);
1181 1179
1182 // agenda view background color 1180 // agenda view background color
1183 KPrefsDialogWidColor *agendaBgColor = 1181 KPrefsDialogWidColor *agendaBgColor =
1184 addWidColor(i18n("Agenda view background color:"), 1182 addWidColor(i18n("Agenda view background color:"),
1185 &(KOPrefs::instance()->mAgendaBgColor),topFrame); 1183 &(KOPrefs::instance()->mAgendaBgColor),topFrame);
1186 topLayout->addWidget(agendaBgColor->label(),ii,0); 1184 topLayout->addWidget(agendaBgColor->label(),ii,0);
1187 topLayout->addWidget(agendaBgColor->button(),ii++,1); 1185 topLayout->addWidget(agendaBgColor->button(),ii++,1);
1188 1186
1189 // working hours color 1187 // working hours color
1190 KPrefsDialogWidColor *workingHoursColor = 1188 KPrefsDialogWidColor *workingHoursColor =
1191 addWidColor(i18n("Working hours color:"), 1189 addWidColor(i18n("Working hours color:"),
1192 &(KOPrefs::instance()->mWorkingHoursColor),topFrame); 1190 &(KOPrefs::instance()->mWorkingHoursColor),topFrame);
1193 topLayout->addWidget(workingHoursColor->label(),ii,0); 1191 topLayout->addWidget(workingHoursColor->label(),ii,0);
1194 topLayout->addWidget(workingHoursColor->button(),ii++,1); 1192 topLayout->addWidget(workingHoursColor->button(),ii++,1);
1195 1193
1196 KPrefsDialogWidBool *sb = 1194 KPrefsDialogWidBool *sb =
1197 addWidBool(i18n("Use colors for application:"), 1195 addWidBool(i18n("Use colors for application:"),
1198 &(KOPrefs::instance()->mUseAppColors),topFrame); 1196 &(KOPrefs::instance()->mUseAppColors),topFrame);
1199 topLayout->addMultiCellWidget(sb->checkBox(), ii, ii, 0,1 ); 1197 topLayout->addMultiCellWidget(sb->checkBox(), ii, ii, 0,1 );
1200 1198
1201 ii++; 1199 ii++;
1202 KPrefsDialogWidColor * workingHoursColor1 = 1200 KPrefsDialogWidColor * workingHoursColor1 =
1203 addWidColor(i18n("Buttons, menus, etc.:"), 1201 addWidColor(i18n("Buttons, menus, etc.:"),
1204 &(KOPrefs::instance()->mAppColor1),topFrame); 1202 &(KOPrefs::instance()->mAppColor1),topFrame);
1205 topLayout->addWidget(workingHoursColor1->label(),ii,0); 1203 topLayout->addWidget(workingHoursColor1->label(),ii,0);
1206 topLayout->addWidget(workingHoursColor1->button(),ii++,1); 1204 topLayout->addWidget(workingHoursColor1->button(),ii++,1);
1207 1205
1208 KPrefsDialogWidColor * workingHoursColor2 = 1206 KPrefsDialogWidColor * workingHoursColor2 =
1209 addWidColor(i18n("Frames, labels, etc.:"), 1207 addWidColor(i18n("Frames, labels, etc.:"),
1210 &(KOPrefs::instance()->mAppColor2),topFrame); 1208 &(KOPrefs::instance()->mAppColor2),topFrame);
1211 topLayout->addWidget(workingHoursColor2->label(),ii,0); 1209 topLayout->addWidget(workingHoursColor2->label(),ii,0);
1212 topLayout->addWidget(workingHoursColor2->button(),ii++,1); 1210 topLayout->addWidget(workingHoursColor2->button(),ii++,1);
1213 1211
1214 1212
1215 1213
1216} 1214}
1217 1215
1218void KOPrefsDialog::setCategoryColor() 1216void KOPrefsDialog::setCategoryColor()
1219{ 1217{
1220 mCategoryDict.replace(mCategoryCombo->currentText(), new QColor(mCategoryButton->color())); 1218 mCategoryDict.replace(mCategoryCombo->currentText(), new QColor(mCategoryButton->color()));
1221} 1219}
1222 1220
1223void KOPrefsDialog::updateCategoryColor() 1221void KOPrefsDialog::updateCategoryColor()
1224{ 1222{
1225 QString cat = mCategoryCombo->currentText(); 1223 QString cat = mCategoryCombo->currentText();
1226 QColor *color = mCategoryDict.find(cat); 1224 QColor *color = mCategoryDict.find(cat);
1227 if (!color) { 1225 if (!color) {
1228 color = KOPrefs::instance()->categoryColor(cat); 1226 color = KOPrefs::instance()->categoryColor(cat);
1229 } 1227 }
1230 if (color) { 1228 if (color) {
1231 mCategoryButton->setColor(*color); 1229 mCategoryButton->setColor(*color);
1232 } 1230 }
1233} 1231}
1234 1232
1235void KOPrefsDialog::setupPrinterTab() 1233void KOPrefsDialog::setupPrinterTab()
1236{ 1234{
1237 mPrinterTab = addPage(i18n("Printing"),0, 1235 mPrinterTab = addPage(i18n("Printing"),0,
1238 DesktopIcon("fileprint",KIcon::SizeMedium)); 1236 DesktopIcon("fileprint",KIcon::SizeMedium));
1239 1237
1240 QGridLayout *topLayout = new QGridLayout(mPrinterTab,5,2); 1238 QGridLayout *topLayout = new QGridLayout(mPrinterTab,5,2);
1241 topLayout->setSpacing(spacingHint()); 1239 topLayout->setSpacing(spacingHint());
1242 topLayout->setMargin(marginHint()); 1240 topLayout->setMargin(marginHint());
1243 1241
1244 topLayout->setRowStretch(4,1); 1242 topLayout->setRowStretch(4,1);
1245} 1243}
1246 1244
1247void KOPrefsDialog::setupGroupSchedulingTab() 1245void KOPrefsDialog::setupGroupSchedulingTab()
1248{ 1246{
1249#if 0 1247#if 0
1250 QFrame *topFrame = addPage(i18n("Group Scheduling"),0, 1248 QFrame *topFrame = addPage(i18n("Group Scheduling"),0,
1251 DesktopIcon("personal",KIcon::SizeMedium)); 1249 DesktopIcon("personal",KIcon::SizeMedium));
1252 1250
1253 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 1251 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
1254 topLayout->setSpacing(spacingHint()); 1252 topLayout->setSpacing(spacingHint());
1255 topLayout->setMargin(marginHint()); 1253 topLayout->setMargin(marginHint());
1256 1254
1257#if 0 1255#if 0
1258 KPrefsDialogWidRadios *schedulerGroup = 1256 KPrefsDialogWidRadios *schedulerGroup =
1259 addWidRadios(i18n("Scheduler Mail Client"),&(KOPrefs::instance()->mIMIPScheduler), 1257 addWidRadios(i18n("Scheduler Mail Client"),&(KOPrefs::instance()->mIMIPScheduler),
1260 topFrame); 1258 topFrame);
1261 schedulerGroup->addRadio("Dummy"); // Only for debugging 1259 schedulerGroup->addRadio("Dummy"); // Only for debugging
1262 schedulerGroup->addRadio(i18n("Mail client")); 1260 schedulerGroup->addRadio(i18n("Mail client"));
1263 1261
1264 topLayout->addMultiCellWidget(schedulerGroup->groupBox(),0,0,0,1); 1262 topLayout->addMultiCellWidget(schedulerGroup->groupBox(),0,0,0,1);
1265#endif 1263#endif
1266 1264
1267 KPrefsDialogWidRadios *sendGroup = 1265 KPrefsDialogWidRadios *sendGroup =
1268 addWidRadios(i18n("Scheduler Mails Should Be"),&(KOPrefs::instance()->mIMIPSend), 1266 addWidRadios(i18n("Scheduler Mails Should Be"),&(KOPrefs::instance()->mIMIPSend),
1269 topFrame); 1267 topFrame);
1270 sendGroup->addRadio(i18n("Send to outbox")); 1268 sendGroup->addRadio(i18n("Send to outbox"));
1271 sendGroup->addRadio(i18n("Send directly")); 1269 sendGroup->addRadio(i18n("Send directly"));
1272 1270
1273 topLayout->addMultiCellWidget(sendGroup->groupBox(),1,1,0,1); 1271 topLayout->addMultiCellWidget(sendGroup->groupBox(),1,1,0,1);
1274 1272
1275 topLayout->addMultiCellWidget(new QLabel(i18n("Additional email addresses:"),topFrame),2,2,0,1); 1273 topLayout->addMultiCellWidget(new QLabel(i18n("Additional email addresses:"),topFrame),2,2,0,1);
1276 mAMails = new QListView(topFrame); 1274 mAMails = new QListView(topFrame);
1277 mAMails->addColumn(i18n("Email"),300); 1275 mAMails->addColumn(i18n("Email"),300);
1278 topLayout->addMultiCellWidget(mAMails,3,3,0,1); 1276 topLayout->addMultiCellWidget(mAMails,3,3,0,1);
1279 1277
1280 topLayout->addWidget(new QLabel(i18n("Additional email address:"),topFrame),4,0); 1278 topLayout->addWidget(new QLabel(i18n("Additional email address:"),topFrame),4,0);
1281 aEmailsEdit = new QLineEdit(topFrame); 1279 aEmailsEdit = new QLineEdit(topFrame);
1282 aEmailsEdit->setEnabled(false); 1280 aEmailsEdit->setEnabled(false);
1283 topLayout->addWidget(aEmailsEdit,4,1); 1281 topLayout->addWidget(aEmailsEdit,4,1);
1284 1282
1285 QPushButton *add = new QPushButton(i18n("New"),topFrame,"new"); 1283 QPushButton *add = new QPushButton(i18n("New"),topFrame,"new");
1286 topLayout->addWidget(add,5,0); 1284 topLayout->addWidget(add,5,0);
1287 QPushButton *del = new QPushButton(i18n("Remove"),topFrame,"remove"); 1285 QPushButton *del = new QPushButton(i18n("Remove"),topFrame,"remove");
1288 topLayout->addWidget(del,5,1); 1286 topLayout->addWidget(del,5,1);
1289 1287
1290 //topLayout->setRowStretch(2,1); 1288 //topLayout->setRowStretch(2,1);
1291 connect(add, SIGNAL( clicked() ), this, SLOT(addItem()) ); 1289 connect(add, SIGNAL( clicked() ), this, SLOT(addItem()) );
1292 connect(del, SIGNAL( clicked() ), this, SLOT(removeItem()) ); 1290 connect(del, SIGNAL( clicked() ), this, SLOT(removeItem()) );
1293 connect(aEmailsEdit,SIGNAL( textChanged(const QString&) ), this,SLOT(updateItem())); 1291 connect(aEmailsEdit,SIGNAL( textChanged(const QString&) ), this,SLOT(updateItem()));
1294 connect(mAMails,SIGNAL(selectionChanged(QListViewItem *)),SLOT(updateInput())); 1292 connect(mAMails,SIGNAL(selectionChanged(QListViewItem *)),SLOT(updateInput()));
1295#endif 1293#endif
1296} 1294}
1297 1295
1298void KOPrefsDialog::setupGroupAutomationTab() 1296void KOPrefsDialog::setupGroupAutomationTab()
1299{ 1297{
1300 return; 1298 return;
1301 QFrame *topFrame = addPage(i18n("Group Automation"),0, 1299 QFrame *topFrame = addPage(i18n("Group Automation"),0,
1302 DesktopIcon("personal",KIcon::SizeMedium)); 1300 DesktopIcon("personal",KIcon::SizeMedium));
1303 1301
1304 QGridLayout *topLayout = new QGridLayout(topFrame,5,1); 1302 QGridLayout *topLayout = new QGridLayout(topFrame,5,1);
1305 topLayout->setSpacing(spacingHint()); 1303 topLayout->setSpacing(spacingHint());
1306 topLayout->setMargin(marginHint()); 1304 topLayout->setMargin(marginHint());
1307 1305
1308 KPrefsDialogWidRadios *autoRefreshGroup = 1306 KPrefsDialogWidRadios *autoRefreshGroup =
1309 addWidRadios(i18n("Auto Send Refresh"), 1307 addWidRadios(i18n("Auto Send Refresh"),
1310 &(KOPrefs::instance()->mIMIPAutoRefresh),topFrame); 1308 &(KOPrefs::instance()->mIMIPAutoRefresh),topFrame);
1311 autoRefreshGroup->addRadio(i18n("Never")); 1309 autoRefreshGroup->addRadio(i18n("Never"));
1312 autoRefreshGroup->addRadio(i18n("If attendee is in addressbook")); 1310 autoRefreshGroup->addRadio(i18n("If attendee is in addressbook"));
1313 //autoRefreshGroup->addRadio(i18n("selected emails")); 1311 //autoRefreshGroup->addRadio(i18n("selected emails"));
1314 topLayout->addMultiCellWidget(autoRefreshGroup->groupBox(),0,0,0,0); 1312 topLayout->addMultiCellWidget(autoRefreshGroup->groupBox(),0,0,0,0);
1315 1313
1316 KPrefsDialogWidRadios *autoInsertGroup = 1314 KPrefsDialogWidRadios *autoInsertGroup =
1317 addWidRadios(i18n("Auto Insert IMIP Replies"), 1315 addWidRadios(i18n("Auto Insert IMIP Replies"),
1318 &(KOPrefs::instance()->mIMIPAutoInsertReply),topFrame); 1316 &(KOPrefs::instance()->mIMIPAutoInsertReply),topFrame);
1319 autoInsertGroup->addRadio(i18n("Never")); 1317 autoInsertGroup->addRadio(i18n("Never"));
1320 autoInsertGroup->addRadio(i18n("If attendee is in addressbook")); 1318 autoInsertGroup->addRadio(i18n("If attendee is in addressbook"));
1321 //autoInsertGroup->addRadio(i18n("selected emails")); 1319 //autoInsertGroup->addRadio(i18n("selected emails"));
1322 topLayout->addMultiCellWidget(autoInsertGroup->groupBox(),1,1,0,0); 1320 topLayout->addMultiCellWidget(autoInsertGroup->groupBox(),1,1,0,0);
1323 1321
1324 KPrefsDialogWidRadios *autoRequestGroup = 1322 KPrefsDialogWidRadios *autoRequestGroup =
1325 addWidRadios(i18n("Auto Insert IMIP Requests"), 1323 addWidRadios(i18n("Auto Insert IMIP Requests"),
1326 &(KOPrefs::instance()->mIMIPAutoInsertRequest),topFrame); 1324 &(KOPrefs::instance()->mIMIPAutoInsertRequest),topFrame);
1327 autoRequestGroup->addRadio(i18n("Never")); 1325 autoRequestGroup->addRadio(i18n("Never"));
1328 autoRequestGroup->addRadio(i18n("If organizer is in addressbook")); 1326 autoRequestGroup->addRadio(i18n("If organizer is in addressbook"));
1329 //autoInsertGroup->addRadio(i18n("selected emails")); 1327 //autoInsertGroup->addRadio(i18n("selected emails"));
1330 topLayout->addMultiCellWidget(autoRequestGroup->groupBox(),2,2,0,0); 1328 topLayout->addMultiCellWidget(autoRequestGroup->groupBox(),2,2,0,0);
1331 1329
1332 KPrefsDialogWidRadios *autoFreeBusyGroup = 1330 KPrefsDialogWidRadios *autoFreeBusyGroup =
1333 addWidRadios(i18n("Auto Send FreeBusy Information"), 1331 addWidRadios(i18n("Auto Send FreeBusy Information"),
1334 &(KOPrefs::instance()->mIMIPAutoFreeBusy),topFrame); 1332 &(KOPrefs::instance()->mIMIPAutoFreeBusy),topFrame);
1335 autoFreeBusyGroup->addRadio(i18n("Never")); 1333 autoFreeBusyGroup->addRadio(i18n("Never"));
1336 autoFreeBusyGroup->addRadio(i18n("If requested from an email in addressbook")); 1334 autoFreeBusyGroup->addRadio(i18n("If requested from an email in addressbook"));
1337 //autoFreeBusyGroup->addRadio(i18n("selected emails")); 1335 //autoFreeBusyGroup->addRadio(i18n("selected emails"));
1338 topLayout->addMultiCellWidget(autoFreeBusyGroup->groupBox(),3,3,0,0); 1336 topLayout->addMultiCellWidget(autoFreeBusyGroup->groupBox(),3,3,0,0);
1339 1337
1340 KPrefsDialogWidRadios *autoFreeBusyReplyGroup = 1338 KPrefsDialogWidRadios *autoFreeBusyReplyGroup =
1341 addWidRadios(i18n("Auto Save FreeBusy Replies"), 1339 addWidRadios(i18n("Auto Save FreeBusy Replies"),
1342 &(KOPrefs::instance()->mIMIPAutoFreeBusyReply),topFrame); 1340 &(KOPrefs::instance()->mIMIPAutoFreeBusyReply),topFrame);
1343 autoFreeBusyReplyGroup->addRadio(i18n("Never")); 1341 autoFreeBusyReplyGroup->addRadio(i18n("Never"));
1344 autoFreeBusyReplyGroup->addRadio(i18n("If attendee is in addressbook")); 1342 autoFreeBusyReplyGroup->addRadio(i18n("If attendee is in addressbook"));
1345 //autoFreeBusyGroup->addRadio(i18n("selected emails")); 1343 //autoFreeBusyGroup->addRadio(i18n("selected emails"));
1346 topLayout->addMultiCellWidget(autoFreeBusyReplyGroup->groupBox(),4,4,0,0); 1344 topLayout->addMultiCellWidget(autoFreeBusyReplyGroup->groupBox(),4,4,0,0);
1347} 1345}
1348 1346
1349void KOPrefsDialog::showPrinterTab() 1347void KOPrefsDialog::showPrinterTab()
1350{ 1348{
1351 showPage(pageIndex(mPrinterTab)); 1349 showPage(pageIndex(mPrinterTab));
1352} 1350}
1353 1351
1354 1352
1355void KOPrefsDialog::setCombo(QComboBox *combo, const QString & text, 1353void KOPrefsDialog::setCombo(QComboBox *combo, const QString & text,
1356 const QStringList *tags) 1354 const QStringList *tags)
1357{ 1355{
1358 if (tags) { 1356 if (tags) {
1359 int i = tags->findIndex(text); 1357 int i = tags->findIndex(text);
1360 if (i > 0) combo->setCurrentItem(i); 1358 if (i > 0) combo->setCurrentItem(i);
1361 } else { 1359 } else {
1362 for(int i=0;i<combo->count();++i) { 1360 for(int i=0;i<combo->count();++i) {
1363 if (combo->text(i) == text) { 1361 if (combo->text(i) == text) {
1364 combo->setCurrentItem(i); 1362 combo->setCurrentItem(i);
1365 break; 1363 break;
1366 } 1364 }
1367 } 1365 }
1368 } 1366 }
1369} 1367}
1370 1368
1371void KOPrefsDialog::usrReadConfig() 1369void KOPrefsDialog::usrReadConfig()
1372{ 1370{
1373 kdelibcfg->readConfig(); 1371 kdelibcfg->readConfig();
1374 mNameEdit->setText(KOPrefs::instance()->fullName()); 1372 mNameEdit->setText(KOPrefs::instance()->fullName());
1375 mEmailEdit->setText(KOPrefs::instance()->email()); 1373 mEmailEdit->setText(KOPrefs::instance()->email());
1376 1374
1377 mAutoSaveIntervalSpin->setValue(KOPrefs::instance()->mAutoSaveInterval); 1375 mAutoSaveIntervalSpin->setValue(KOPrefs::instance()->mAutoSaveInterval);
1378 // QDate current ( 2001, 1,1); 1376 // QDate current ( 2001, 1,1);
1379 //mStartDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingStart-1)); 1377 //mStartDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingStart-1));
1380 //mEndDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingEnd-1)); 1378 //mEndDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingEnd-1));
1381 //setCombo(mTimeZoneCombo,i18n(KOPrefs::instance()->mTimeZoneId)); 1379 //setCombo(mTimeZoneCombo,i18n(KOPrefs::instance()->mTimeZoneId));
1382 //mTimezoneOffsetSpin->setValue( KOPrefs::instance()->mTimeZoneOffset); 1380 //mTimezoneOffsetSpin->setValue( KOPrefs::instance()->mTimeZoneOffset);
1383 mStartTimeSpin->setValue(KOPrefs::instance()->mStartTime); 1381 mStartTimeSpin->setValue(KOPrefs::instance()->mStartTime);
1384 mDefaultDurationSpin->setValue(KOPrefs::instance()->mDefaultDuration); 1382 mDefaultDurationSpin->setValue(KOPrefs::instance()->mDefaultDuration);
1385 mAlarmTimeCombo->setCurrentItem(KOPrefs::instance()->mAlarmTime); 1383 mAlarmTimeCombo->setCurrentItem(KOPrefs::instance()->mAlarmTime);
1386 // if (KOPrefs::instance()->mAllDaySize > 47 ) 1384 // if (KOPrefs::instance()->mAllDaySize > 47 )
1387 // KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize/2; 1385 // KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize/2;
1388 //mHourSizeSlider->setValue(KOPrefs::instance()->mAllDaySize); 1386 //mHourSizeSlider->setValue(KOPrefs::instance()->mAllDaySize);
1389 1387
1390 mNextXDaysSpin->setValue(KOPrefs::instance()->mNextXDays); 1388 mNextXDaysSpin->setValue(KOPrefs::instance()->mNextXDays);
1391 mWhatsNextSpin->setValue(KOPrefs::instance()->mWhatsNextDays); 1389 mWhatsNextSpin->setValue(KOPrefs::instance()->mWhatsNextDays);
1392 mPrioSpin->setValue(KOPrefs::instance()->mWhatsNextPrios); 1390 mPrioSpin->setValue(KOPrefs::instance()->mWhatsNextPrios);
1393 // mAMails->clear(); 1391 // mAMails->clear();
1394 // for ( QStringList::Iterator it = KOPrefs::instance()->mAdditionalMails.begin(); 1392 // for ( QStringList::Iterator it = KOPrefs::instance()->mAdditionalMails.begin();
1395// it != KOPrefs::instance()->mAdditionalMails.end(); ++it ) { 1393// it != KOPrefs::instance()->mAdditionalMails.end(); ++it ) {
1396// QListViewItem *item = new QListViewItem(mAMails); 1394// QListViewItem *item = new QListViewItem(mAMails);
1397// item->setText(0,*it); 1395// item->setText(0,*it);
1398// mAMails->insertItem(item); 1396// mAMails->insertItem(item);
1399// } 1397// }
1400 1398
1401 // mRemoteIPEdit->setText(KOPrefs::instance()->mRemoteIP); 1399 // mRemoteIPEdit->setText(KOPrefs::instance()->mRemoteIP);
1402 //mRemoteUser->setText(KOPrefs::instance()->mRemoteUser); 1400 //mRemoteUser->setText(KOPrefs::instance()->mRemoteUser);
1403 //mRemotePassWd->setText(KOPrefs::instance()->mRemotePassWd); 1401 //mRemotePassWd->setText(KOPrefs::instance()->mRemotePassWd);
1404 //mRemoteFile->setText(KOPrefs::instance()->mRemoteFile); 1402 //mRemoteFile->setText(KOPrefs::instance()->mRemoteFile);
1405 1403
1406 //that soundmLocalTempFile->setText(KOPrefs::instance()->mLocalTempFile); 1404 //that soundmLocalTempFile->setText(KOPrefs::instance()->mLocalTempFile);
1407 mDefaultAlarmFile->setText(KOPrefs::instance()->mDefaultAlarmFile); 1405 mDefaultAlarmFile->setText(KOPrefs::instance()->mDefaultAlarmFile);
1408 //QString dummy = KOPrefs::instance()->mUserDateFormatLong; 1406 //QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1409 //mUserDateFormatLong->setText(dummy.replace( QRegExp("K"), QString(",") )); 1407 //mUserDateFormatLong->setText(dummy.replace( QRegExp("K"), QString(",") ));
1410 //dummy = KOPrefs::instance()->mUserDateFormatShort; 1408 //dummy = KOPrefs::instance()->mUserDateFormatShort;
1411 //mUserDateFormatShort->setText(dummy.replace( QRegExp("K"), QString(",") )); 1409 //mUserDateFormatShort->setText(dummy.replace( QRegExp("K"), QString(",") ));
1412 updateCategories(); 1410 updateCategories();
1413 mAlarmPlayBeeps->setValue(KOPrefs::instance()->mAlarmPlayBeeps ); 1411 mAlarmPlayBeeps->setValue(KOPrefs::instance()->mAlarmPlayBeeps );
1414 mAlarmSuspendTime->setValue(KOPrefs::instance()->mAlarmSuspendTime ); 1412 mAlarmSuspendTime->setValue(KOPrefs::instance()->mAlarmSuspendTime );
1415 mAlarmSuspendCount->setValue(KOPrefs::instance()->mAlarmSuspendCount ); 1413 mAlarmSuspendCount->setValue(KOPrefs::instance()->mAlarmSuspendCount );
1416 mAlarmBeepInterval->setValue(KOPrefs::instance()->mAlarmBeepInterval ); 1414 mAlarmBeepInterval->setValue(KOPrefs::instance()->mAlarmBeepInterval );
1417} 1415}
1418 1416
1419 1417
1420void KOPrefsDialog::usrWriteConfig() 1418void KOPrefsDialog::usrWriteConfig()
1421{ 1419{
1422 1420
1423 kdelibcfg->writeConfig(); 1421 kdelibcfg->writeConfig();
1424 // KOPrefs::instance()->mRemoteIP = mRemoteIPEdit->text(); 1422 // KOPrefs::instance()->mRemoteIP = mRemoteIPEdit->text();
1425 //KOPrefs::instance()->mRemoteUser = mRemoteUser->text(); 1423 //KOPrefs::instance()->mRemoteUser = mRemoteUser->text();
1426 //KOPrefs::instance()->mRemotePassWd = mRemotePassWd->text(); 1424 //KOPrefs::instance()->mRemotePassWd = mRemotePassWd->text();
1427 //KOPrefs::instance()->mRemoteFile= mRemoteFile->text(); 1425 //KOPrefs::instance()->mRemoteFile= mRemoteFile->text();
1428 //KOPrefs::instance()->mLocalTempFile =mLocalTempFile->text(); 1426 //KOPrefs::instance()->mLocalTempFile =mLocalTempFile->text();
1429 KOPrefs::instance()->mDefaultAlarmFile =mDefaultAlarmFile->text(); 1427 KOPrefs::instance()->mDefaultAlarmFile =mDefaultAlarmFile->text();
1430 1428
1431 //KOPrefs::instance()->mUserDateFormatShort = mUserDateFormatShort->text().replace( QRegExp(","), QString("K") ); 1429 //KOPrefs::instance()->mUserDateFormatShort = mUserDateFormatShort->text().replace( QRegExp(","), QString("K") );
1432 //KOPrefs::instance()->mUserDateFormatLong = mUserDateFormatLong->text().replace( QRegExp(","), QString("K") ); 1430 //KOPrefs::instance()->mUserDateFormatLong = mUserDateFormatLong->text().replace( QRegExp(","), QString("K") );
1433 KOPrefs::instance()->setFullName(mNameEdit->text()); 1431 KOPrefs::instance()->setFullName(mNameEdit->text());
1434 KOPrefs::instance()->setEmail(mEmailEdit->text()); 1432 KOPrefs::instance()->setEmail(mEmailEdit->text());
1435 1433
1436 KOPrefs::instance()->mAutoSaveInterval = mAutoSaveIntervalSpin->value(); 1434 KOPrefs::instance()->mAutoSaveInterval = mAutoSaveIntervalSpin->value();
1437 1435
1438 // KOPrefs::instance()->mTimeZoneId = mTimeZoneCombo->currentText(); 1436 // KOPrefs::instance()->mTimeZoneId = mTimeZoneCombo->currentText();
1439 //QDate date; 1437 //QDate date;
1440 //date = mStartDateSavingEdit->date(); 1438 //date = mStartDateSavingEdit->date();
1441 //int sub = 0; 1439 //int sub = 0;
1442 //if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 ) 1440 //if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 )
1443 // sub = 1; 1441 // sub = 1;
1444// KOPrefs::instance()->mDaylightsavingStart = date.dayOfYear()-sub; 1442// KOPrefs::instance()->mDaylightsavingStart = date.dayOfYear()-sub;
1445// date = mEndDateSavingEdit->date(); 1443// date = mEndDateSavingEdit->date();
1446// if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 ) 1444// if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 )
1447// sub = 1; 1445// sub = 1;
1448// else 1446// else
1449// sub = 0; 1447// sub = 0;
1450// KOPrefs::instance()->mDaylightsavingEnd = date.dayOfYear()-sub; 1448// KOPrefs::instance()->mDaylightsavingEnd = date.dayOfYear()-sub;
1451// // KOPrefs::instance()->mTimeZoneOffset = mTimezoneOffsetSpin->value(); 1449// // KOPrefs::instance()->mTimeZoneOffset = mTimezoneOffsetSpin->value();
1452 1450
1453 KOPrefs::instance()->mStartTime = mStartTimeSpin->value(); 1451 KOPrefs::instance()->mStartTime = mStartTimeSpin->value();
1454 KOPrefs::instance()->mDefaultDuration = mDefaultDurationSpin->value(); 1452 KOPrefs::instance()->mDefaultDuration = mDefaultDurationSpin->value();
1455 KOPrefs::instance()->mAlarmTime = mAlarmTimeCombo->currentItem(); 1453 KOPrefs::instance()->mAlarmTime = mAlarmTimeCombo->currentItem();
1456 1454
1457 //KOPrefs::instance()->mAllDaySize = mHourSizeSlider->value(); 1455 //KOPrefs::instance()->mAllDaySize = mHourSizeSlider->value();
1458 1456
1459 QDictIterator<QColor> it(mCategoryDict); 1457 QDictIterator<QColor> it(mCategoryDict);
1460 while (it.current()) { 1458 while (it.current()) {
1461 KOPrefs::instance()->setCategoryColor(it.currentKey(),*it.current()); 1459 KOPrefs::instance()->setCategoryColor(it.currentKey(),*it.current());
1462 ++it; 1460 ++it;
1463 } 1461 }
1464 1462
1465 KOPrefs::instance()->mNextXDays = mNextXDaysSpin->value(); 1463 KOPrefs::instance()->mNextXDays = mNextXDaysSpin->value();
1466 KOPrefs::instance()->mWhatsNextDays = mWhatsNextSpin->value(); 1464 KOPrefs::instance()->mWhatsNextDays = mWhatsNextSpin->value();
1467 KOPrefs::instance()->mWhatsNextPrios = mPrioSpin->value(); 1465 KOPrefs::instance()->mWhatsNextPrios = mPrioSpin->value();
1468 1466
1469 KOPrefs::instance()->mAdditionalMails.clear(); 1467 KOPrefs::instance()->mAdditionalMails.clear();
1470 // QListViewItem *item; 1468 // QListViewItem *item;
1471 // item = mAMails->firstChild(); 1469 // item = mAMails->firstChild();
1472 // while (item) 1470 // while (item)
1473 // { 1471 // {
1474 // KOPrefs::instance()->mAdditionalMails.append( item->text(0) ); 1472 // KOPrefs::instance()->mAdditionalMails.append( item->text(0) );
1475 // item = item->nextSibling(); 1473 // item = item->nextSibling();
1476 // } 1474 // }
1477 KOPrefs::instance()->mAlarmPlayBeeps = mAlarmPlayBeeps->value(); 1475 KOPrefs::instance()->mAlarmPlayBeeps = mAlarmPlayBeeps->value();
1478 KOPrefs::instance()->mAlarmSuspendTime = mAlarmSuspendTime->value() ; 1476 KOPrefs::instance()->mAlarmSuspendTime = mAlarmSuspendTime->value() ;
1479 KOPrefs::instance()->mAlarmSuspendCount= mAlarmSuspendCount->value() ; 1477 KOPrefs::instance()->mAlarmSuspendCount= mAlarmSuspendCount->value() ;
1480 KOPrefs::instance()->mAlarmBeepInterval= mAlarmBeepInterval->value() ; 1478 KOPrefs::instance()->mAlarmBeepInterval= mAlarmBeepInterval->value() ;
1481 1479
1482} 1480}
1483 1481
1484void KOPrefsDialog::updateCategories() 1482void KOPrefsDialog::updateCategories()
1485{ 1483{
1486 mCategoryCombo->clear(); 1484 mCategoryCombo->clear();
1487 mCategoryDict.clear(); 1485 mCategoryDict.clear();
1488 mCategoryCombo->insertStringList(KOPrefs::instance()->mCustomCategories); 1486 mCategoryCombo->insertStringList(KOPrefs::instance()->mCustomCategories);
1489 updateCategoryColor(); 1487 updateCategoryColor();
1490} 1488}
1491 1489
1492void KOPrefsDialog::warningGroupScheduling() 1490void KOPrefsDialog::warningGroupScheduling()
1493{ 1491{
1494 warningExperimental(mEnableGroupScheduling->checkBox()->isChecked()); 1492 warningExperimental(mEnableGroupScheduling->checkBox()->isChecked());
1495} 1493}
1496 1494
1497void KOPrefsDialog::warningProjectView() 1495void KOPrefsDialog::warningProjectView()
1498{ 1496{
1499 warningExperimental(mEnableProjectView->checkBox()->isChecked()); 1497 warningExperimental(mEnableProjectView->checkBox()->isChecked());
1500} 1498}
1501 1499
1502void KOPrefsDialog::warningExperimental(bool on) 1500void KOPrefsDialog::warningExperimental(bool on)
1503{ 1501{
1504 if (on) { 1502 if (on) {
1505 KMessageBox::information(this,i18n("This is an experimental feature. " 1503 KMessageBox::information(this,i18n("This is an experimental feature. "
1506 "It may not work, it may do nothing useful and it may cause data loss. " 1504 "It may not work, it may do nothing useful and it may cause data loss. "
1507 "Use with care.\n" 1505 "Use with care.\n"
1508 "You have to restart KOrganizer for this setting to take effect.")); 1506 "You have to restart KOrganizer for this setting to take effect."));
1509 } else { 1507 } else {
1510 KMessageBox::information(this, 1508 KMessageBox::information(this,
1511 i18n("You have to restart KOrganizer for this setting to take effect.")); 1509 i18n("You have to restart KOrganizer for this setting to take effect."));
1512 } 1510 }
1513} 1511}
1514 1512
1515void KOPrefsDialog::toggleEmailSettings(bool on) 1513void KOPrefsDialog::toggleEmailSettings(bool on)
1516{ 1514{
1517 if (on) { 1515 if (on) {
1518 mEmailEdit->setEnabled(false); 1516 mEmailEdit->setEnabled(false);
1519 mNameEdit->setEnabled(false); 1517 mNameEdit->setEnabled(false);
1520 mEmailLabel->setEnabled(false); 1518 mEmailLabel->setEnabled(false);
1521 mNameLabel->setEnabled(false); 1519 mNameLabel->setEnabled(false);
1522 1520
1523 KEMailSettings settings; 1521 KEMailSettings settings;
1524 mNameEdit->setText(settings.getSetting(KEMailSettings::RealName)); 1522 mNameEdit->setText(settings.getSetting(KEMailSettings::RealName));
1525 mEmailEdit->setText(settings.getSetting(KEMailSettings::EmailAddress)); 1523 mEmailEdit->setText(settings.getSetting(KEMailSettings::EmailAddress));
1526 } else { 1524 } else {
1527 mEmailEdit->setEnabled(true); 1525 mEmailEdit->setEnabled(true);
1528 mNameEdit->setEnabled(true); 1526 mNameEdit->setEnabled(true);
1529 mEmailLabel->setEnabled(true); 1527 mEmailLabel->setEnabled(true);
1530 mNameLabel->setEnabled(true); 1528 mNameLabel->setEnabled(true);
1531 } 1529 }
1532} 1530}
1533 1531
1534void KOPrefsDialog::addItem() 1532void KOPrefsDialog::addItem()
1535{ 1533{
1536 // aEmailsEdit->setEnabled(true); 1534 // aEmailsEdit->setEnabled(true);
1537// QListViewItem *item = new QListViewItem(mAMails); 1535// QListViewItem *item = new QListViewItem(mAMails);
1538// mAMails->insertItem(item); 1536// mAMails->insertItem(item);
1539// mAMails->setSelected(item,true); 1537// mAMails->setSelected(item,true);
1540// aEmailsEdit->setText(i18n("(EmptyEmail)")); 1538// aEmailsEdit->setText(i18n("(EmptyEmail)"));
1541} 1539}
1542 1540
1543void KOPrefsDialog::removeItem() 1541void KOPrefsDialog::removeItem()
1544{ 1542{
1545// QListViewItem *item; 1543// QListViewItem *item;
1546// item = mAMails->selectedItem(); 1544// item = mAMails->selectedItem();
1547// if (!item) return; 1545// if (!item) return;
1548// mAMails->takeItem(item); 1546// mAMails->takeItem(item);
1549// item = mAMails->selectedItem(); 1547// item = mAMails->selectedItem();
1550// if (!item) { 1548// if (!item) {
1551// aEmailsEdit->setText(""); 1549// aEmailsEdit->setText("");
1552// aEmailsEdit->setEnabled(false); 1550// aEmailsEdit->setEnabled(false);
1553// } 1551// }
1554// if (mAMails->childCount() == 0) { 1552// if (mAMails->childCount() == 0) {
1555// aEmailsEdit->setEnabled(false); 1553// aEmailsEdit->setEnabled(false);
1556// } 1554// }
1557} 1555}
1558 1556
1559void KOPrefsDialog::updateItem() 1557void KOPrefsDialog::updateItem()
1560{ 1558{
1561 // QListViewItem *item; 1559 // QListViewItem *item;
1562// item = mAMails->selectedItem(); 1560// item = mAMails->selectedItem();
1563// if (!item) return; 1561// if (!item) return;
1564// item->setText(0,aEmailsEdit->text()); 1562// item->setText(0,aEmailsEdit->text());
1565} 1563}
1566 1564
1567void KOPrefsDialog::updateInput() 1565void KOPrefsDialog::updateInput()
1568{ 1566{
1569// QListViewItem *item; 1567// QListViewItem *item;
1570// item = mAMails->selectedItem(); 1568// item = mAMails->selectedItem();
1571// if (!item) return; 1569// if (!item) return;
1572// aEmailsEdit->setEnabled(true); 1570// aEmailsEdit->setEnabled(true);
1573// aEmailsEdit->setText(item->text(0)); 1571// aEmailsEdit->setText(item->text(0));
1574} 1572}
1575void KOPrefsDialog::updateTimezoneOffset( int index ) 1573void KOPrefsDialog::updateTimezoneOffset( int index )
1576{ 1574{
1577 /* 1575 /*
1578 qDebug("updateTimezoneOffset %d ", index); 1576 qDebug("updateTimezoneOffset %d ", index);
1579 if ( index < 24 ) { 1577 if ( index < 24 ) {
1580 mTimezoneOffsetSpin->setEnabled ( false ); 1578 mTimezoneOffsetSpin->setEnabled ( false );
1581 mTimezoneOffsetSpin->setValue( ( index-11 ) * 60 ); 1579 mTimezoneOffsetSpin->setValue( ( index-11 ) * 60 );
1582 1580
1583 1581
1584 } else { 1582 } else {
1585 if ( index == 24 ) { 1583 if ( index == 24 ) {
1586 mTimezoneOffsetSpin->setEnabled ( true ); 1584 mTimezoneOffsetSpin->setEnabled ( true );
1587 mTimezoneOffsetSpin->setValue( KOPrefs::instance()->mTimeZoneOffset); 1585 mTimezoneOffsetSpin->setValue( KOPrefs::instance()->mTimeZoneOffset);
1588 1586
1589 } else { 1587 } else {
1590 mTimezoneOffsetSpin->setEnabled ( false ); 1588 mTimezoneOffsetSpin->setEnabled ( false );
1591 mTimezoneOffsetSpin->setValue( 0 ); 1589 mTimezoneOffsetSpin->setValue( 0 );
1592 } 1590 }
1593 } 1591 }
1594 */ 1592 */
1595} 1593}
1596 1594
1597void KOPrefsDialog::setupTimeZoneTab() 1595void KOPrefsDialog::setupTimeZoneTab()
1598{ 1596{
1599#if 0 1597#if 0
1600 QFrame *topFrame = addPage(i18n("Time Zone"),0,0); 1598 QFrame *topFrame = addPage(i18n("Time Zone"),0,0);
1601 // DesktopIcon("clock",KIcon::SizeMedium)); 1599 // DesktopIcon("clock",KIcon::SizeMedium));
1602 1600
1603 QGridLayout *topLayout = new QGridLayout(topFrame,5,2); 1601 QGridLayout *topLayout = new QGridLayout(topFrame,5,2);
1604 topLayout->setSpacing(spacingHint()); 1602 topLayout->setSpacing(spacingHint());
1605 topLayout->setMargin(marginHint()); 1603 topLayout->setMargin(marginHint());
1606 1604
1607 QHBox *timeZoneBox = new QHBox( topFrame ); 1605 QHBox *timeZoneBox = new QHBox( topFrame );
1608 topLayout->addMultiCellWidget( timeZoneBox, 0, 0, 0, 1 ); 1606 topLayout->addMultiCellWidget( timeZoneBox, 0, 0, 0, 1 );
1609 1607
1610 new QLabel( i18n("Timezone:"), timeZoneBox ); 1608 new QLabel( i18n("Timezone:"), timeZoneBox );
1611 mTimeZoneCombo = new QComboBox( timeZoneBox ); 1609 mTimeZoneCombo = new QComboBox( timeZoneBox );
1612 if ( QApplication::desktop()->width() < 300 ) { 1610 if ( QApplication::desktop()->width() < 300 ) {
1613 mTimeZoneCombo->setMaximumWidth(150); 1611 mTimeZoneCombo->setMaximumWidth(150);
1614 } 1612 }
1615 1613
1616 QStringList list; 1614 QStringList list;
1617 list = KGlobal::locale()->timeZoneList(); 1615 list = KGlobal::locale()->timeZoneList();
1618 mTimeZoneCombo->insertStringList(list); 1616 mTimeZoneCombo->insertStringList(list);
1619 1617
1620 // find the currently set time zone and select it 1618 // find the currently set time zone and select it
1621 QString sCurrentlySet = KOPrefs::instance()->mTimeZoneId; 1619 QString sCurrentlySet = KOPrefs::instance()->mTimeZoneId;
1622 int nCurrentlySet = 11; 1620 int nCurrentlySet = 11;
1623 for (int i = 0; i < mTimeZoneCombo->count(); i++) 1621 for (int i = 0; i < mTimeZoneCombo->count(); i++)
1624 { 1622 {
1625 if (mTimeZoneCombo->text(i) == sCurrentlySet) 1623 if (mTimeZoneCombo->text(i) == sCurrentlySet)
1626 { 1624 {
1627 nCurrentlySet = i; 1625 nCurrentlySet = i;
1628 break; 1626 break;
1629 } 1627 }
1630 } 1628 }
1631 mTimeZoneCombo->setCurrentItem(nCurrentlySet); 1629 mTimeZoneCombo->setCurrentItem(nCurrentlySet);
1632 int iii = 1; 1630 int iii = 1;
1633 KPrefsDialogWidBool *sb = 1631 KPrefsDialogWidBool *sb =
1634 addWidBool(i18n("Timezone has daylight saving"), 1632 addWidBool(i18n("Timezone has daylight saving"),
1635 &(KOPrefs::instance()->mUseDaylightsaving),topFrame); 1633 &(KOPrefs::instance()->mUseDaylightsaving),topFrame);
1636 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 1634 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
1637 ++iii; 1635 ++iii;
1638 QLabel* lab = new QLabel( i18n("Actual start and end is the\nsunday before this date."), topFrame ); 1636 QLabel* lab = new QLabel( i18n("Actual start and end is the\nsunday before this date."), topFrame );
1639 topLayout->addMultiCellWidget(lab, iii,iii,0,1); 1637 topLayout->addMultiCellWidget(lab, iii,iii,0,1);
1640 ++iii; 1638 ++iii;
1641 lab = new QLabel( i18n("The year in the date is ignored."), topFrame ); 1639 lab = new QLabel( i18n("The year in the date is ignored."), topFrame );
1642 topLayout->addMultiCellWidget(lab, iii,iii,0,1); 1640 topLayout->addMultiCellWidget(lab, iii,iii,0,1);
1643 ++iii; 1641 ++iii;
1644 lab = new QLabel( i18n("Daylight start:"), topFrame ); 1642 lab = new QLabel( i18n("Daylight start:"), topFrame );
1645 topLayout->addWidget(lab, iii,0); 1643 topLayout->addWidget(lab, iii,0);
1646 mStartDateSavingEdit = new KDateEdit(topFrame); 1644 mStartDateSavingEdit = new KDateEdit(topFrame);
1647 topLayout->addWidget(mStartDateSavingEdit, iii,1); 1645 topLayout->addWidget(mStartDateSavingEdit, iii,1);
1648 ++iii; 1646 ++iii;
1649 1647
1650 lab = new QLabel( i18n("Daylight end:"), topFrame ); 1648 lab = new QLabel( i18n("Daylight end:"), topFrame );
1651 topLayout->addWidget(lab, iii,0); 1649 topLayout->addWidget(lab, iii,0);
1652 mEndDateSavingEdit = new KDateEdit(topFrame); 1650 mEndDateSavingEdit = new KDateEdit(topFrame);
1653 topLayout->addWidget(mEndDateSavingEdit, iii,1); 1651 topLayout->addWidget(mEndDateSavingEdit, iii,1);
1654 ++iii; 1652 ++iii;
1655 QDate current ( 2001, 1,1); 1653 QDate current ( 2001, 1,1);
1656 mStartDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingStart-1)); 1654 mStartDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingStart-1));
1657 mEndDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingEnd-1)); 1655 mEndDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingEnd-1));
1658#endif 1656#endif
1659 1657
1660} 1658}
1661 1659
diff --git a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp
index d097078..6eaf2f2 100644
--- a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp
+++ b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp
@@ -1,837 +1,841 @@
1/* 1/*
2 This file is part of KdePim/Pi. 2 This file is part of KdePim/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include <qlayout.h> 31#include <qlayout.h>
32#include <qtabwidget.h> 32#include <qtabwidget.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qgroupbox.h> 34#include <qgroupbox.h>
35#include <qlabel.h> 35#include <qlabel.h>
36#include <qlineedit.h> 36#include <qlineedit.h>
37#include <qbuttongroup.h> 37#include <qbuttongroup.h>
38#include <qfile.h> 38#include <qfile.h>
39#include <qvbox.h> 39#include <qvbox.h>
40#include <qdir.h> 40#include <qdir.h>
41#include <qregexp.h> 41#include <qregexp.h>
42 42
43#include <kdialog.h> 43#include <kdialog.h>
44#include <klocale.h> 44#include <klocale.h>
45#include <kdateedit.h> 45#include <kdateedit.h>
46#include <kglobal.h> 46#include <kglobal.h>
47#include <stdlib.h> 47#include <stdlib.h>
48 48
49/*US 49/*US
50#include <qcheckbox.h> 50#include <qcheckbox.h>
51#include <qframe.h> 51#include <qframe.h>
52#include <qpushbutton.h> 52#include <qpushbutton.h>
53#include <qcombobox.h> 53#include <qcombobox.h>
54#include <qlineedit.h> 54#include <qlineedit.h>
55#include <qlabel.h> 55#include <qlabel.h>
56#include <qfile.h> 56#include <qfile.h>
57 57
58#include <kconfig.h> 58#include <kconfig.h>
59#include <kdebug.h> 59#include <kdebug.h>
60#include <kdialog.h> 60#include <kdialog.h>
61#include <klistview.h> 61#include <klistview.h>
62#include <klocale.h> 62#include <klocale.h>
63#include <kglobal.h> 63#include <kglobal.h>
64#include <kmessagebox.h> 64#include <kmessagebox.h>
65#include <kstandarddirs.h> 65#include <kstandarddirs.h>
66 66
67#ifndef KAB_EMBEDDED 67#ifndef KAB_EMBEDDED
68#include <ktrader.h> 68#include <ktrader.h>
69#else // KAB_EMBEDDED 69#else // KAB_EMBEDDED
70#include <mergewidget.h> 70#include <mergewidget.h>
71#include <distributionlistwidget.h> 71#include <distributionlistwidget.h>
72#endif // KAB_EMBEDDED 72#endif // KAB_EMBEDDED
73 73
74#include "addresseewidget.h" 74#include "addresseewidget.h"
75#include "extensionconfigdialog.h" 75#include "extensionconfigdialog.h"
76#include "extensionwidget.h" 76#include "extensionwidget.h"
77*/ 77*/
78 78
79#include "qapplication.h" 79#include "qapplication.h"
80 80
81#include "kpimglobalprefs.h" 81#include "kpimglobalprefs.h"
82 82
83#include "kdepimconfigwidget.h" 83#include "kdepimconfigwidget.h"
84 84
85 85
86KDEPIMConfigWidget::KDEPIMConfigWidget(KPimGlobalPrefs *prefs, QWidget *parent, const char *name ) 86KDEPIMConfigWidget::KDEPIMConfigWidget(KPimGlobalPrefs *prefs, QWidget *parent, const char *name )
87 : KPrefsWidget(prefs, parent, name ) 87 : KPrefsWidget(prefs, parent, name )
88{ 88{
89 mExternalAppsMap.insert(ExternalAppHandler::EMAIL, i18n("Email")); 89 mExternalAppsMap.insert(ExternalAppHandler::EMAIL, i18n("Email"));
90 mExternalAppsMap.insert(ExternalAppHandler::PHONE, i18n("Phone")); 90 mExternalAppsMap.insert(ExternalAppHandler::PHONE, i18n("Phone"));
91 mExternalAppsMap.insert(ExternalAppHandler::SMS, i18n("SMS")); 91 mExternalAppsMap.insert(ExternalAppHandler::SMS, i18n("SMS"));
92 mExternalAppsMap.insert(ExternalAppHandler::FAX, i18n("Fax")); 92 mExternalAppsMap.insert(ExternalAppHandler::FAX, i18n("Fax"));
93 mExternalAppsMap.insert(ExternalAppHandler::PAGER, i18n("Pager")); 93 mExternalAppsMap.insert(ExternalAppHandler::PAGER, i18n("Pager"));
94 mExternalAppsMap.insert(ExternalAppHandler::SIP, i18n("SIP")); 94 mExternalAppsMap.insert(ExternalAppHandler::SIP, i18n("SIP"));
95 95
96 96
97 QVBoxLayout *topLayout = new QVBoxLayout( this, 0, 97 QVBoxLayout *topLayout = new QVBoxLayout( this, 0,
98 KDialog::spacingHint() ); 98 KDialog::spacingHint() );
99 99
100 tabWidget = new QTabWidget( this ); 100 tabWidget = new QTabWidget( this );
101 topLayout->addWidget( tabWidget ); 101 topLayout->addWidget( tabWidget );
102 102
103 103
104 setupLocaleTab(); 104 setupLocaleTab();
105 setupLocaleDateTab(); 105 setupLocaleDateTab();
106 setupTimeZoneTab(); 106 setupTimeZoneTab();
107 setupExternalAppTab(); 107 setupExternalAppTab();
108 setupStoreTab(); 108 setupStoreTab();
109 109
110} 110}
111void KDEPIMConfigWidget::showTimeZoneTab() 111void KDEPIMConfigWidget::showTimeZoneTab()
112{ 112{
113 tabWidget->setCurrentPage ( 3 ) ; 113 tabWidget->setCurrentPage ( 3 ) ;
114} 114}
115void KDEPIMConfigWidget::setupStoreTab() 115void KDEPIMConfigWidget::setupStoreTab()
116{ 116{
117 QVBox *storePage = new QVBox( this ); 117 QVBox *storePage = new QVBox( this );
118 new QLabel( i18n("Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail").arg(KGlobal::dirs()->localkdedir()), storePage ); 118 new QLabel( i18n("Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail").arg(KGlobal::dirs()->localkdedir()), storePage );
119 new QLabel( i18n("<b>Set new data storage dir:</b>"), storePage ); 119 new QLabel( i18n("<b>New data storage dir:</b>"), storePage );
120 mStoreUrl = new KURLRequester( storePage ); 120 mStoreUrl = new KURLRequester( storePage );
121 mStoreUrl->setURL( KGlobal::dirs()->localkdedir() ); 121 mStoreUrl->setURL( KGlobal::dirs()->localkdedir() );
122 new QLabel( i18n("Not existing dirs are created automatically"), storePage ); 122 new QLabel( i18n("New dirs are created automatically"), storePage );
123 QHBox *bb = new QHBox( storePage ); 123 QHBox *bb = new QHBox( storePage );
124 QPushButton * pb = new QPushButton ( i18n("Save settings"), bb ); 124 QPushButton * pb;
125 if ( QApplication::desktop()->width() < 640 )
126 pb = new QPushButton ( i18n("Save"), bb );
127 else
128 pb = new QPushButton ( i18n("Save settings"), bb );
125 connect(pb, SIGNAL( clicked() ), this, SLOT ( saveStoreSettings() ) ); 129 connect(pb, SIGNAL( clicked() ), this, SLOT ( saveStoreSettings() ) );
126 pb = new QPushButton ( i18n("Save standard"), bb ); 130 pb = new QPushButton ( i18n("Save standard"), bb );
127 connect(pb, SIGNAL( clicked() ), this, SLOT ( setStandardStore() ) ); 131 connect(pb, SIGNAL( clicked() ), this, SLOT ( setStandardStore() ) );
128 new QLabel( i18n("<b>New settings are used\nafter a restart</b>"), storePage ); 132 new QLabel( i18n("<b>New settings are used\nafter a restart</b>"), storePage );
129 new QLabel( i18n("The settings of the storage\ndir is saved in the file\n%1").arg(QDir::homeDirPath() + "/.microkdehome" ), storePage ); 133 new QLabel( i18n("Settings are stored in\n%1").arg(QDir::homeDirPath() + "/.microkdehome" ), storePage );
130 tabWidget->addTab( storePage, i18n( "Data storage path" ) ); 134 tabWidget->addTab( storePage, i18n( "Data storage path" ) );
131} 135}
132void KDEPIMConfigWidget::setStandardStore() 136void KDEPIMConfigWidget::setStandardStore()
133{ 137{
134 mStoreUrl->setURL( QDir::homeDirPath() + "/kdepim" ); 138 mStoreUrl->setURL( QDir::homeDirPath() + "/kdepim" );
135 saveStoreSettings(); 139 saveStoreSettings();
136} 140}
137void KDEPIMConfigWidget::saveStoreSettings() 141void KDEPIMConfigWidget::saveStoreSettings()
138{ 142{
139 if ( !mStoreUrl->url().isEmpty() ) { 143 if ( !mStoreUrl->url().isEmpty() ) {
140 KConfig cfg ( QDir::homeDirPath() + "/.microkdehome" ); 144 KConfig cfg ( QDir::homeDirPath() + "/.microkdehome" );
141 cfg.setGroup("Global"); 145 cfg.setGroup("Global");
142 cfg.writeEntry( "MICROKDEHOME", mStoreUrl->url() ); 146 cfg.writeEntry( "MICROKDEHOME", mStoreUrl->url() );
143 qDebug("cfg.writeEntry( MICROKDEHOME, mStoreUrl->url() ); "); 147 qDebug("cfg.writeEntry( MICROKDEHOME, mStoreUrl->url() ); ");
144 cfg.sync(); 148 cfg.sync();
145 } else { 149 } else {
146 mStoreUrl->setURL( QDir::homeDirPath() + "/kdepim" ); 150 mStoreUrl->setURL( QDir::homeDirPath() + "/kdepim" );
147 saveStoreSettings(); 151 saveStoreSettings();
148 } 152 }
149} 153}
150void KDEPIMConfigWidget::setupExternalAppTab() 154void KDEPIMConfigWidget::setupExternalAppTab()
151{ 155{
152 QWidget *externalAppsPage = new QWidget( this ); 156 QWidget *externalAppsPage = new QWidget( this );
153 QVBoxLayout* layout = new QVBoxLayout( externalAppsPage, KDialog::marginHintSmall(), 157 QVBoxLayout* layout = new QVBoxLayout( externalAppsPage, KDialog::marginHintSmall(),
154 KDialog::spacingHintSmall() ); 158 KDialog::spacingHintSmall() );
155 159
156 mExternalApps = new QComboBox( externalAppsPage ); 160 mExternalApps = new QComboBox( externalAppsPage );
157 161
158 QMap<ExternalAppHandler::Types, QString>::Iterator it; 162 QMap<ExternalAppHandler::Types, QString>::Iterator it;
159 for( it = mExternalAppsMap.begin(); it != mExternalAppsMap.end(); ++it ) 163 for( it = mExternalAppsMap.begin(); it != mExternalAppsMap.end(); ++it )
160 mExternalApps->insertItem( it.data(), it.key() ); 164 mExternalApps->insertItem( it.data(), it.key() );
161 165
162 layout->addWidget( mExternalApps ); 166 layout->addWidget( mExternalApps );
163 167
164 connect( mExternalApps, SIGNAL( activated( int ) ), 168 connect( mExternalApps, SIGNAL( activated( int ) ),
165 this, SLOT (externalapp_changed( int ) ) ); 169 this, SLOT (externalapp_changed( int ) ) );
166 170
167 171
168 mExternalAppGroupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Used Mail Client" ), externalAppsPage ); 172 mExternalAppGroupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Used Mail Client" ), externalAppsPage );
169 QGridLayout *boxLayout = new QGridLayout( mExternalAppGroupBox->layout(), 4, 2, -1, "gridlayout" ); 173 QGridLayout *boxLayout = new QGridLayout( mExternalAppGroupBox->layout(), 4, 2, -1, "gridlayout" );
170 mExternalAppGroupBox->layout()->setMargin(5); 174 mExternalAppGroupBox->layout()->setMargin(5);
171 175
172 mClient = new QComboBox( mExternalAppGroupBox ); 176 mClient = new QComboBox( mExternalAppGroupBox );
173 boxLayout->addMultiCellWidget( mClient, 0, 0, 0, 1 ); 177 boxLayout->addMultiCellWidget( mClient, 0, 0, 0, 1 );
174 178
175 connect( mClient, SIGNAL( activated( int ) ), 179 connect( mClient, SIGNAL( activated( int ) ),
176 this, SLOT (client_changed( int ) ) ); 180 this, SLOT (client_changed( int ) ) );
177 181
178 QLabel* lab = new QLabel( i18n("Channel:"), mExternalAppGroupBox); 182 QLabel* lab = new QLabel( i18n("Channel:"), mExternalAppGroupBox);
179 boxLayout->addWidget( lab, 1, 0 ); 183 boxLayout->addWidget( lab, 1, 0 );
180 mChannel = new QLineEdit(mExternalAppGroupBox); 184 mChannel = new QLineEdit(mExternalAppGroupBox);
181 mChannel->setReadOnly(true); 185 mChannel->setReadOnly(true);
182 boxLayout->addMultiCellWidget( mChannel, 2 , 2, 0, 1 ); 186 boxLayout->addMultiCellWidget( mChannel, 2 , 2, 0, 1 );
183 187
184 lab = new QLabel( i18n("Message:"), mExternalAppGroupBox); 188 lab = new QLabel( i18n("Message:"), mExternalAppGroupBox);
185 boxLayout->addWidget( lab, 3, 0 ); 189 boxLayout->addWidget( lab, 3, 0 );
186 mMessage = new QLineEdit(mExternalAppGroupBox); 190 mMessage = new QLineEdit(mExternalAppGroupBox);
187 mMessage->setReadOnly(true); 191 mMessage->setReadOnly(true);
188 boxLayout->addWidget( mMessage , 4, 0); 192 boxLayout->addWidget( mMessage , 4, 0);
189 193
190 lab = new QLabel( i18n("Parameters:"), mExternalAppGroupBox); 194 lab = new QLabel( i18n("Parameters:"), mExternalAppGroupBox);
191 boxLayout->addWidget( lab, 3, 1 ); 195 boxLayout->addWidget( lab, 3, 1 );
192 mParameters = new QLineEdit(mExternalAppGroupBox); 196 mParameters = new QLineEdit(mExternalAppGroupBox);
193 mParameters->setReadOnly(true); 197 mParameters->setReadOnly(true);
194 boxLayout->addWidget( mParameters, 4, 1 ); 198 boxLayout->addWidget( mParameters, 4, 1 );
195 199
196 lab = new QLabel( i18n("HINT: Delimiter=; Name=%1,Email=%2"), mExternalAppGroupBox); 200 lab = new QLabel( i18n("HINT: Delimiter=; Name=%1,Email=%2"), mExternalAppGroupBox);
197 boxLayout->addMultiCellWidget( lab, 5, 5, 0, 1 ); 201 boxLayout->addMultiCellWidget( lab, 5, 5, 0, 1 );
198 202
199 203
200 lab = new QLabel( i18n("extra Message:"), mExternalAppGroupBox); 204 lab = new QLabel( i18n("extra Message:"), mExternalAppGroupBox);
201 boxLayout->addWidget( lab, 6, 0 ); 205 boxLayout->addWidget( lab, 6, 0 );
202 mMessage2 = new QLineEdit(mExternalAppGroupBox); 206 mMessage2 = new QLineEdit(mExternalAppGroupBox);
203 mMessage2->setReadOnly(true); 207 mMessage2->setReadOnly(true);
204 boxLayout->addWidget( mMessage2 , 7, 0); 208 boxLayout->addWidget( mMessage2 , 7, 0);
205 209
206 lab = new QLabel( i18n("extra Parameters:"), mExternalAppGroupBox); 210 lab = new QLabel( i18n("extra Parameters:"), mExternalAppGroupBox);
207 boxLayout->addWidget( lab, 6, 1 ); 211 boxLayout->addWidget( lab, 6, 1 );
208 mParameters2 = new QLineEdit(mExternalAppGroupBox); 212 mParameters2 = new QLineEdit(mExternalAppGroupBox);
209 mParameters2->setReadOnly(true); 213 mParameters2->setReadOnly(true);
210 boxLayout->addWidget( mParameters2, 7, 1 ); 214 boxLayout->addWidget( mParameters2, 7, 1 );
211 215
212 lab = new QLabel( i18n("HINT: Emails=%1,Attachments=%2"), mExternalAppGroupBox); 216 lab = new QLabel( i18n("HINT: Emails=%1,Attachments=%2"), mExternalAppGroupBox);
213 boxLayout->addMultiCellWidget( lab, 8, 8, 0, 1 ); 217 boxLayout->addMultiCellWidget( lab, 8, 8, 0, 1 );
214 218
215 219
216 connect( mChannel, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); 220 connect( mChannel, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) );
217 connect( mMessage, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); 221 connect( mMessage, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) );
218 connect( mParameters, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); 222 connect( mParameters, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) );
219 connect( mMessage2, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); 223 connect( mMessage2, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) );
220 connect( mParameters2, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); 224 connect( mParameters2, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) );
221 225
222 226
223 layout->addWidget( mExternalAppGroupBox ); 227 layout->addWidget( mExternalAppGroupBox );
224 tabWidget->addTab( externalAppsPage, i18n( "External Apps." ) ); 228 tabWidget->addTab( externalAppsPage, i18n( "External Apps." ) );
225 229
226} 230}
227 231
228 232
229void KDEPIMConfigWidget::setupLocaleDateTab() 233void KDEPIMConfigWidget::setupLocaleDateTab()
230{ 234{
231 QWidget *topFrame = new QWidget( this ); 235 QWidget *topFrame = new QWidget( this );
232 QGridLayout *topLayout = new QGridLayout( topFrame, 3, 2); 236 QGridLayout *topLayout = new QGridLayout( topFrame, 3, 2);
233 237
234 topLayout->setSpacing(KDialog::spacingHintSmall()); 238 topLayout->setSpacing(KDialog::spacingHintSmall());
235 topLayout->setMargin(KDialog::marginHintSmall()); 239 topLayout->setMargin(KDialog::marginHintSmall());
236 int iii = 0; 240 int iii = 0;
237 241
238 242
239 KPrefsWidRadios *syncPrefsGroup = 243 KPrefsWidRadios *syncPrefsGroup =
240 addWidRadios(i18n("Date Format:"),&(KPimGlobalPrefs::instance()->mPreferredDate),topFrame); 244 addWidRadios(i18n("Date Format:"),&(KPimGlobalPrefs::instance()->mPreferredDate),topFrame);
241 QString format; 245 QString format;
242 if ( QApplication::desktop()->width() < 480 ) 246 if ( QApplication::desktop()->width() < 480 )
243 format = "(%d.%m.%Y)"; 247 format = "(%d.%m.%Y)";
244 else 248 else
245 format = "(%d.%m.%Y|%A %d %B %Y)"; 249 format = "(%d.%m.%Y|%A %d %B %Y)";
246 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format)); 250 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format));
247 if ( QApplication::desktop()->width() < 480 ) 251 if ( QApplication::desktop()->width() < 480 )
248 format = "(%m.%d.%Y)"; 252 format = "(%m.%d.%Y)";
249 else 253 else
250 format = "(%m.%d.%Y|%A %B %d %Y)"; 254 format = "(%m.%d.%Y|%A %B %d %Y)";
251 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format)); 255 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format));
252 if ( QApplication::desktop()->width() < 480 ) 256 if ( QApplication::desktop()->width() < 480 )
253 format = "(%Y-%m-%d)"; 257 format = "(%Y-%m-%d)";
254 else 258 else
255 format = "(%Y-%m-%d|%A %Y %B %d)"; 259 format = "(%Y-%m-%d|%A %Y %B %d)";
256 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format)); 260 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format));
257 syncPrefsGroup->addRadio(i18n("User defined")); 261 syncPrefsGroup->addRadio(i18n("User defined"));
258 if ( QApplication::desktop()->width() < 480 ) { 262 if ( QApplication::desktop()->width() < 480 ) {
259 syncPrefsGroup->groupBox()->layout()->setMargin( 5 ); 263 syncPrefsGroup->groupBox()->layout()->setMargin( 5 );
260 syncPrefsGroup->groupBox()->layout()->setSpacing( 0 ); 264 syncPrefsGroup->groupBox()->layout()->setSpacing( 0 );
261 } 265 }
262 topLayout->addMultiCellWidget( (QWidget*)syncPrefsGroup->groupBox(),iii,iii,0,1); 266 topLayout->addMultiCellWidget( (QWidget*)syncPrefsGroup->groupBox(),iii,iii,0,1);
263 ++iii; 267 ++iii;
264 ++iii; 268 ++iii;
265 QLabel * lab; 269 QLabel * lab;
266 mUserDateFormatLong = new QLineEdit(topFrame); 270 mUserDateFormatLong = new QLineEdit(topFrame);
267 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame); 271 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame);
268 topLayout->addWidget(lab ,iii,0); 272 topLayout->addWidget(lab ,iii,0);
269 topLayout->addWidget(mUserDateFormatLong,iii,1); 273 topLayout->addWidget(mUserDateFormatLong,iii,1);
270 ++iii; 274 ++iii;
271 mUserDateFormatShort = new QLineEdit(topFrame); 275 mUserDateFormatShort = new QLineEdit(topFrame);
272 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame); 276 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame);
273 topLayout->addWidget(lab ,iii,0); 277 topLayout->addWidget(lab ,iii,0);
274 topLayout->addWidget(mUserDateFormatShort,iii,1); 278 topLayout->addWidget(mUserDateFormatShort,iii,1);
275 ++iii; 279 ++iii;
276 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame); 280 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame);
277 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 281 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
278 ++iii; 282 ++iii;
279 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame); 283 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame);
280 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 284 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
281 ++iii; 285 ++iii;
282 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame); 286 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame);
283 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 287 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
284 ++iii; 288 ++iii;
285 289
286 connect( mUserDateFormatLong, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); 290 connect( mUserDateFormatLong, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) );
287 connect( mUserDateFormatShort, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); 291 connect( mUserDateFormatShort, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) );
288 292
289 293
290 tabWidget->addTab( topFrame, i18n( "Date Format" ) ); 294 tabWidget->addTab( topFrame, i18n( "Date Format" ) );
291} 295}
292 296
293void KDEPIMConfigWidget::setupLocaleTab() 297void KDEPIMConfigWidget::setupLocaleTab()
294{ 298{
295 299
296 QWidget *topFrame = new QWidget( this ); 300 QWidget *topFrame = new QWidget( this );
297 QGridLayout *topLayout = new QGridLayout(topFrame,4,2); 301 QGridLayout *topLayout = new QGridLayout(topFrame,4,2);
298 302
299 topLayout->setSpacing(KDialog::spacingHint()); 303 topLayout->setSpacing(KDialog::spacingHint());
300 topLayout->setMargin(KDialog::marginHint()); 304 topLayout->setMargin(KDialog::marginHint());
301 int iii = 0; 305 int iii = 0;
302 KPrefsWidRadios *syncPrefsGroup = 306 KPrefsWidRadios *syncPrefsGroup =
303 addWidRadios(i18n("Language:(needs restart)"),&(KPimGlobalPrefs::instance()->mPreferredLanguage),topFrame); 307 addWidRadios(i18n("Language:(needs restart)"),&(KPimGlobalPrefs::instance()->mPreferredLanguage),topFrame);
304 syncPrefsGroup->addRadio(i18n("English")); 308 syncPrefsGroup->addRadio(i18n("English"));
305 syncPrefsGroup->addRadio(i18n("German")); 309 syncPrefsGroup->addRadio(i18n("German"));
306 syncPrefsGroup->addRadio(i18n("French")); 310 syncPrefsGroup->addRadio(i18n("French"));
307 syncPrefsGroup->addRadio(i18n("Italian")); 311 syncPrefsGroup->addRadio(i18n("Italian"));
308 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)")); 312 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)"));
309 if ( QApplication::desktop()->width() < 300 ) { 313 if ( QApplication::desktop()->width() < 300 ) {
310 syncPrefsGroup->groupBox()->layout()->setMargin( 5 ); 314 syncPrefsGroup->groupBox()->layout()->setMargin( 5 );
311 syncPrefsGroup->groupBox()->layout()->setSpacing( 0 ); 315 syncPrefsGroup->groupBox()->layout()->setSpacing( 0 );
312 } 316 }
313 topLayout->addMultiCellWidget( (QWidget*)syncPrefsGroup->groupBox(),iii,iii,0,1); 317 topLayout->addMultiCellWidget( (QWidget*)syncPrefsGroup->groupBox(),iii,iii,0,1);
314 ++iii; 318 ++iii;
315 319
316 320
317 tabWidget->addTab( topFrame, i18n( "Language" ) ); 321 tabWidget->addTab( topFrame, i18n( "Language" ) );
318 topFrame = new QWidget( this ); 322 topFrame = new QWidget( this );
319 topLayout = new QGridLayout(topFrame,4,2); 323 topLayout = new QGridLayout(topFrame,4,2);
320 324
321 topLayout->setSpacing(KDialog::spacingHint()); 325 topLayout->setSpacing(KDialog::spacingHint());
322 topLayout->setMargin(KDialog::marginHint()); 326 topLayout->setMargin(KDialog::marginHint());
323 iii = 0; 327 iii = 0;
324 syncPrefsGroup = 328 syncPrefsGroup =
325 addWidRadios(i18n("Time Format(nr):"),&(KPimGlobalPrefs::instance()->mPreferredTime),topFrame); 329 addWidRadios(i18n("Time Format(nr):"),&(KPimGlobalPrefs::instance()->mPreferredTime),topFrame);
326 if ( QApplication::desktop()->width() > 300 ) 330 if ( QApplication::desktop()->width() > 300 )
327 syncPrefsGroup->groupBox()->setOrientation (Qt::Vertical); 331 syncPrefsGroup->groupBox()->setOrientation (Qt::Vertical);
328 syncPrefsGroup->addRadio(i18n("24:00")); 332 syncPrefsGroup->addRadio(i18n("24:00"));
329 syncPrefsGroup->addRadio(i18n("12:00am")); 333 syncPrefsGroup->addRadio(i18n("12:00am"));
330 syncPrefsGroup->groupBox()->setOrientation (Qt::Vertical); 334 syncPrefsGroup->groupBox()->setOrientation (Qt::Vertical);
331 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 335 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
332 ++iii; 336 ++iii;
333 337
334 KPrefsWidBool *sb = addWidBool(i18n("Week starts on Sunday"), 338 KPrefsWidBool *sb = addWidBool(i18n("Week starts on Sunday"),
335 &(KPimGlobalPrefs::instance()->mWeekStartsOnSunday),topFrame); 339 &(KPimGlobalPrefs::instance()->mWeekStartsOnSunday),topFrame);
336 topLayout->addMultiCellWidget((QWidget*)sb->checkBox(), iii,iii,0,1); 340 topLayout->addMultiCellWidget((QWidget*)sb->checkBox(), iii,iii,0,1);
337 ++iii; 341 ++iii;
338 342
339 343
340 tabWidget->addTab( topFrame, i18n( "Time Format" ) ); 344 tabWidget->addTab( topFrame, i18n( "Time Format" ) );
341 345
342} 346}
343 347
344 348
345void KDEPIMConfigWidget::setupTimeZoneTab() 349void KDEPIMConfigWidget::setupTimeZoneTab()
346{ 350{
347 QWidget *topFrame = new QWidget( this ); 351 QWidget *topFrame = new QWidget( this );
348 QGridLayout *topLayout = new QGridLayout( topFrame, 5, 2); 352 QGridLayout *topLayout = new QGridLayout( topFrame, 5, 2);
349 topLayout->setSpacing(KDialog::spacingHintSmall()); 353 topLayout->setSpacing(KDialog::spacingHintSmall());
350 topLayout->setMargin(KDialog::marginHintSmall()); 354 topLayout->setMargin(KDialog::marginHintSmall());
351 355
352 QHBox *timeZoneBox = new QHBox( topFrame ); 356 QHBox *timeZoneBox = new QHBox( topFrame );
353 topLayout->addMultiCellWidget( timeZoneBox, 0, 0, 0, 1 ); 357 topLayout->addMultiCellWidget( timeZoneBox, 0, 0, 0, 1 );
354 358
355 new QLabel( i18n("Timezone:"), timeZoneBox ); 359 new QLabel( i18n("Timezone:"), timeZoneBox );
356 mTimeZoneCombo = new QComboBox( timeZoneBox ); 360 mTimeZoneCombo = new QComboBox( timeZoneBox );
357 if ( QApplication::desktop()->width() < 300 ) { 361 if ( QApplication::desktop()->width() < 300 ) {
358 mTimeZoneCombo->setMaximumWidth(150); 362 mTimeZoneCombo->setMaximumWidth(150);
359 } 363 }
360 364
361 QStringList list; 365 QStringList list;
362 list = KGlobal::locale()->timeZoneList(); 366 list = KGlobal::locale()->timeZoneList();
363 mTimeZoneCombo->insertStringList(list); 367 mTimeZoneCombo->insertStringList(list);
364 368
365 // find the currently set time zone and select it 369 // find the currently set time zone and select it
366 QString sCurrentlySet = KPimGlobalPrefs::instance()->mTimeZoneId; 370 QString sCurrentlySet = KPimGlobalPrefs::instance()->mTimeZoneId;
367 int nCurrentlySet = 11; 371 int nCurrentlySet = 11;
368 for (int i = 0; i < mTimeZoneCombo->count(); i++) 372 for (int i = 0; i < mTimeZoneCombo->count(); i++)
369 { 373 {
370 if (mTimeZoneCombo->text(i) == sCurrentlySet) 374 if (mTimeZoneCombo->text(i) == sCurrentlySet)
371 { 375 {
372 nCurrentlySet = i; 376 nCurrentlySet = i;
373 break; 377 break;
374 } 378 }
375 } 379 }
376 mTimeZoneCombo->setCurrentItem(nCurrentlySet); 380 mTimeZoneCombo->setCurrentItem(nCurrentlySet);
377 int iii = 1; 381 int iii = 1;
378 KPrefsWidBool *sb = 382 KPrefsWidBool *sb =
379 addWidBool(i18n("Add 30 min to selected Timezone"), 383 addWidBool(i18n("Add 30 min to selected Timezone"),
380 &(KPimGlobalPrefs::instance()->mTimeZoneAdd30min),topFrame); 384 &(KPimGlobalPrefs::instance()->mTimeZoneAdd30min),topFrame);
381 topLayout->addMultiCellWidget((QWidget*)sb->checkBox(), iii,iii,0,1); 385 topLayout->addMultiCellWidget((QWidget*)sb->checkBox(), iii,iii,0,1);
382 ++iii; 386 ++iii;
383 sb = 387 sb =
384 addWidBool(i18n("Timezone has daylight saving"), 388 addWidBool(i18n("Timezone has daylight saving"),
385 &(KPimGlobalPrefs::instance()->mUseDaylightsaving),topFrame); 389 &(KPimGlobalPrefs::instance()->mUseDaylightsaving),topFrame);
386 topLayout->addMultiCellWidget((QWidget*)sb->checkBox(), iii,iii,0,1); 390 topLayout->addMultiCellWidget((QWidget*)sb->checkBox(), iii,iii,0,1);
387 ++iii; 391 ++iii;
388 QLabel* lab; 392 QLabel* lab;
389 393
390 lab = new QLabel( i18n("Actual start and end is the\nsunday before this date."), topFrame ); 394 lab = new QLabel( i18n("Actual start and end is the\nsunday before this date."), topFrame );
391 topLayout->addMultiCellWidget(lab, iii,iii,0,1); 395 topLayout->addMultiCellWidget(lab, iii,iii,0,1);
392 ++iii; 396 ++iii;
393 397
394 lab = new QLabel( i18n("The year in the date is ignored."), topFrame ); 398 lab = new QLabel( i18n("The year in the date is ignored."), topFrame );
395 topLayout->addMultiCellWidget(lab, iii,iii,0,1); 399 topLayout->addMultiCellWidget(lab, iii,iii,0,1);
396 ++iii; 400 ++iii;
397 lab = new QLabel( i18n("Daylight start:"), topFrame ); 401 lab = new QLabel( i18n("Daylight start:"), topFrame );
398 topLayout->addWidget(lab, iii,0); 402 topLayout->addWidget(lab, iii,0);
399 mStartDateSavingEdit = new KDateEdit(topFrame); 403 mStartDateSavingEdit = new KDateEdit(topFrame);
400 topLayout->addWidget(mStartDateSavingEdit, iii,1); 404 topLayout->addWidget(mStartDateSavingEdit, iii,1);
401 ++iii; 405 ++iii;
402 406
403 lab = new QLabel( i18n("Daylight end:"), topFrame ); 407 lab = new QLabel( i18n("Daylight end:"), topFrame );
404 topLayout->addWidget(lab, iii,0); 408 topLayout->addWidget(lab, iii,0);
405 mEndDateSavingEdit = new KDateEdit(topFrame); 409 mEndDateSavingEdit = new KDateEdit(topFrame);
406 topLayout->addWidget(mEndDateSavingEdit, iii,1); 410 topLayout->addWidget(mEndDateSavingEdit, iii,1);
407 ++iii; 411 ++iii;
408 QDate current ( 2001, 1,1); 412 QDate current ( 2001, 1,1);
409 mStartDateSavingEdit->setDate(current.addDays(KPimGlobalPrefs::instance()->mDaylightsavingStart-1)); 413 mStartDateSavingEdit->setDate(current.addDays(KPimGlobalPrefs::instance()->mDaylightsavingStart-1));
410 mEndDateSavingEdit->setDate(current.addDays(KPimGlobalPrefs::instance()->mDaylightsavingEnd-1)); 414 mEndDateSavingEdit->setDate(current.addDays(KPimGlobalPrefs::instance()->mDaylightsavingEnd-1));
411 415
412 connect( mStartDateSavingEdit, SIGNAL( dateChanged(QDate)), this, SLOT( modified()) ); 416 connect( mStartDateSavingEdit, SIGNAL( dateChanged(QDate)), this, SLOT( modified()) );
413 connect( mEndDateSavingEdit, SIGNAL( dateChanged(QDate)), this, SLOT( modified()) ); 417 connect( mEndDateSavingEdit, SIGNAL( dateChanged(QDate)), this, SLOT( modified()) );
414 connect( mTimeZoneCombo, SIGNAL( activated( int ) ), this, SLOT (modified() ) ); 418 connect( mTimeZoneCombo, SIGNAL( activated( int ) ), this, SLOT (modified() ) );
415 419
416 420
417 421
418 tabWidget->addTab( topFrame, i18n( "Time Zone" ) ); 422 tabWidget->addTab( topFrame, i18n( "Time Zone" ) );
419 423
420} 424}
421 425
422void KDEPIMConfigWidget::externalapp_changed( int newApp ) 426void KDEPIMConfigWidget::externalapp_changed( int newApp )
423{ 427{
424 // first store the current data 428 // first store the current data
425 saveEditFieldSettings(); 429 saveEditFieldSettings();
426 430
427 // set mCurrentApp 431 // set mCurrentApp
428 mCurrentApp = (ExternalAppHandler::Types)newApp; 432 mCurrentApp = (ExternalAppHandler::Types)newApp;
429 433
430 // set mCurrentClient 434 // set mCurrentClient
431 switch(mCurrentApp) 435 switch(mCurrentApp)
432 { 436 {
433 case(ExternalAppHandler::EMAIL): 437 case(ExternalAppHandler::EMAIL):
434 mCurrentClient = mEmailClient; 438 mCurrentClient = mEmailClient;
435 break; 439 break;
436 case(ExternalAppHandler::PHONE): 440 case(ExternalAppHandler::PHONE):
437 mCurrentClient = mPhoneClient; 441 mCurrentClient = mPhoneClient;
438 break; 442 break;
439 case(ExternalAppHandler::SMS): 443 case(ExternalAppHandler::SMS):
440 mCurrentClient = mSMSClient; 444 mCurrentClient = mSMSClient;
441 break; 445 break;
442 case(ExternalAppHandler::FAX): 446 case(ExternalAppHandler::FAX):
443 mCurrentClient = mFaxClient; 447 mCurrentClient = mFaxClient;
444 break; 448 break;
445 case(ExternalAppHandler::PAGER): 449 case(ExternalAppHandler::PAGER):
446 mCurrentClient = mPagerClient; 450 mCurrentClient = mPagerClient;
447 break; 451 break;
448 case(ExternalAppHandler::SIP): 452 case(ExternalAppHandler::SIP):
449 mCurrentClient = mSipClient; 453 mCurrentClient = mSipClient;
450 break; 454 break;
451 default: 455 default:
452 return; 456 return;
453 } 457 }
454 458
455 // and at last update the widgets 459 // and at last update the widgets
456 updateClientWidgets(); 460 updateClientWidgets();
457} 461}
458 462
459 463
460 464
461void KDEPIMConfigWidget::client_changed( int newClient ) 465void KDEPIMConfigWidget::client_changed( int newClient )
462{ 466{
463 if (newClient == mCurrentClient) 467 if (newClient == mCurrentClient)
464 return; 468 return;
465 469
466 // first store the current data 470 // first store the current data
467 saveEditFieldSettings(); 471 saveEditFieldSettings();
468 472
469 473
470 //then reset the clientvariable 474 //then reset the clientvariable
471 mCurrentClient = newClient; 475 mCurrentClient = newClient;
472 476
473 // and at last update the widgets 477 // and at last update the widgets
474 updateClientWidgets(); 478 updateClientWidgets();
475 479
476 KPrefsWidget::modified(); 480 KPrefsWidget::modified();
477} 481}
478 482
479void KDEPIMConfigWidget::saveEditFieldSettings() 483void KDEPIMConfigWidget::saveEditFieldSettings()
480{ 484{
481 485
482 switch(mCurrentApp) 486 switch(mCurrentApp)
483 { 487 {
484 case(ExternalAppHandler::EMAIL): 488 case(ExternalAppHandler::EMAIL):
485 mEmailClient = mClient->currentItem(); 489 mEmailClient = mClient->currentItem();
486 break; 490 break;
487 case(ExternalAppHandler::PHONE): 491 case(ExternalAppHandler::PHONE):
488 mPhoneClient= mClient->currentItem(); 492 mPhoneClient= mClient->currentItem();
489 break; 493 break;
490 case(ExternalAppHandler::SMS): 494 case(ExternalAppHandler::SMS):
491 mSMSClient = mClient->currentItem(); 495 mSMSClient = mClient->currentItem();
492 break; 496 break;
493 case(ExternalAppHandler::FAX): 497 case(ExternalAppHandler::FAX):
494 mFaxClient = mClient->currentItem(); 498 mFaxClient = mClient->currentItem();
495 break; 499 break;
496 case(ExternalAppHandler::PAGER): 500 case(ExternalAppHandler::PAGER):
497 mPagerClient = mClient->currentItem(); 501 mPagerClient = mClient->currentItem();
498 break; 502 break;
499 case(ExternalAppHandler::SIP): 503 case(ExternalAppHandler::SIP):
500 mSipClient = mClient->currentItem(); 504 mSipClient = mClient->currentItem();
501 break; 505 break;
502 default: 506 default:
503 return; 507 return;
504 } 508 }
505 509
506 //store the current data back to the apropriate membervariables if we had set it to "other" 510 //store the current data back to the apropriate membervariables if we had set it to "other"
507 if ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC)) 511 if ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC))
508 { 512 {
509 mEmailOtherChannel = mChannel->text(); 513 mEmailOtherChannel = mChannel->text();
510 mEmailOtherMessage = mMessage->text(); 514 mEmailOtherMessage = mMessage->text();
511 mEmailOtherMessageParameters = mParameters->text(); 515 mEmailOtherMessageParameters = mParameters->text();
512 mEmailOtherMessage2 = mMessage2->text(); 516 mEmailOtherMessage2 = mMessage2->text();
513 mEmailOtherMessageParameters2 = mParameters2->text(); 517 mEmailOtherMessageParameters2 = mParameters2->text();
514 } 518 }
515 else if ((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC)) 519 else if ((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC))
516 { 520 {
517 mPhoneOtherChannel = mChannel->text(); 521 mPhoneOtherChannel = mChannel->text();
518 mPhoneOtherMessage = mMessage->text(); 522 mPhoneOtherMessage = mMessage->text();
519 mPhoneOtherMessageParameters = mParameters->text(); 523 mPhoneOtherMessageParameters = mParameters->text();
520 } 524 }
521 else if ((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC)) 525 else if ((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC))
522 { 526 {
523 mSMSOtherChannel = mChannel->text(); 527 mSMSOtherChannel = mChannel->text();
524 mSMSOtherMessage = mMessage->text(); 528 mSMSOtherMessage = mMessage->text();
525 mSMSOtherMessageParameters = mParameters->text(); 529 mSMSOtherMessageParameters = mParameters->text();
526 } 530 }
527 else if ((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC)) 531 else if ((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC))
528 { 532 {
529 mFaxOtherChannel = mChannel->text(); 533 mFaxOtherChannel = mChannel->text();
530 mFaxOtherMessage = mMessage->text(); 534 mFaxOtherMessage = mMessage->text();
531 mFaxOtherMessageParameters = mParameters->text(); 535 mFaxOtherMessageParameters = mParameters->text();
532 } 536 }
533 else if ((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC)) 537 else if ((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC))
534 { 538 {
535 mPagerOtherChannel = mChannel->text(); 539 mPagerOtherChannel = mChannel->text();
536 mPagerOtherMessage = mMessage->text(); 540 mPagerOtherMessage = mMessage->text();
537 mPagerOtherMessageParameters = mParameters->text(); 541 mPagerOtherMessageParameters = mParameters->text();
538 } 542 }
539 else if ((mCurrentApp == ExternalAppHandler::SIP) && (mCurrentClient == KPimGlobalPrefs::OTHER_SIC)) 543 else if ((mCurrentApp == ExternalAppHandler::SIP) && (mCurrentClient == KPimGlobalPrefs::OTHER_SIC))
540 { 544 {
541 mSipOtherChannel = mChannel->text(); 545 mSipOtherChannel = mChannel->text();
542 mSipOtherMessage = mMessage->text(); 546 mSipOtherMessage = mMessage->text();
543 mSipOtherMessageParameters = mParameters->text(); 547 mSipOtherMessageParameters = mParameters->text();
544 } 548 }
545 549
546 550
547} 551}
548 552
549void KDEPIMConfigWidget::updateClientWidgets() 553void KDEPIMConfigWidget::updateClientWidgets()
550{ 554{
551 bool blocked = signalsBlocked(); 555 bool blocked = signalsBlocked();
552 blockSignals( true ); 556 blockSignals( true );
553 557
554 // at this point we assume, that mCurrentApp and mCurrentClient are set to the values that we want to display 558 // at this point we assume, that mCurrentApp and mCurrentClient are set to the values that we want to display
555 QMap<ExternalAppHandler::Types, QString>::Iterator it = mExternalAppsMap.find ( mCurrentApp ); 559 QMap<ExternalAppHandler::Types, QString>::Iterator it = mExternalAppsMap.find ( mCurrentApp );
556 if (it == mExternalAppsMap.end()) 560 if (it == mExternalAppsMap.end())
557 return; 561 return;
558 562
559 // update group box 563 // update group box
560 mExternalAppGroupBox->setTitle(i18n( "Used %1 Client" ).arg(it.data())); 564 mExternalAppGroupBox->setTitle(i18n( "Used %1 Client" ).arg(it.data()));
561 565
562 //update the entries in the client combobox 566 //update the entries in the client combobox
563 mClient->clear(); 567 mClient->clear();
564 568
565 QList<DefaultAppItem> items = ExternalAppHandler::instance()->getAvailableDefaultItems(mCurrentApp); 569 QList<DefaultAppItem> items = ExternalAppHandler::instance()->getAvailableDefaultItems(mCurrentApp);
566 DefaultAppItem* dai; 570 DefaultAppItem* dai;
567 for ( dai=items.first(); dai != 0; dai=items.next() ) 571 for ( dai=items.first(); dai != 0; dai=items.next() )
568 { 572 {
569 mClient->insertItem( i18n(dai->_label), dai->_id ); 573 mClient->insertItem( i18n(dai->_label), dai->_id );
570 574
571 if (dai->_id == mCurrentClient) 575 if (dai->_id == mCurrentClient)
572 { 576 {
573 //restore the edit fields with the data of the local membervariables if we had set it to "other". 577 //restore the edit fields with the data of the local membervariables if we had set it to "other".
574 //Otherwise take the default data from externalapphandler. 578 //Otherwise take the default data from externalapphandler.
575 mChannel->setText(dai->_channel); 579 mChannel->setText(dai->_channel);
576 mMessage->setText(dai->_message); 580 mMessage->setText(dai->_message);
577 mParameters->setText(dai->_parameters); 581 mParameters->setText(dai->_parameters);
578 mMessage2->setText(dai->_message2); 582 mMessage2->setText(dai->_message2);
579 mParameters2->setText(dai->_parameters2); 583 mParameters2->setText(dai->_parameters2);
580 584
581 585
582 if ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC)) 586 if ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC))
583 { 587 {
584 mChannel->setText(mEmailOtherChannel); 588 mChannel->setText(mEmailOtherChannel);
585 mMessage->setText(mEmailOtherMessage); 589 mMessage->setText(mEmailOtherMessage);
586 mParameters->setText(mEmailOtherMessageParameters); 590 mParameters->setText(mEmailOtherMessageParameters);
587 mMessage2->setText(mEmailOtherMessage2); 591 mMessage2->setText(mEmailOtherMessage2);
588 mParameters2->setText(mEmailOtherMessageParameters2); 592 mParameters2->setText(mEmailOtherMessageParameters2);
589 } 593 }
590 else if ((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC)) 594 else if ((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC))
591 { 595 {
592 mChannel->setText(mPhoneOtherChannel); 596 mChannel->setText(mPhoneOtherChannel);
593 mMessage->setText(mPhoneOtherMessage); 597 mMessage->setText(mPhoneOtherMessage);
594 mParameters->setText(mPhoneOtherMessageParameters); 598 mParameters->setText(mPhoneOtherMessageParameters);
595 } 599 }
596 else if ((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC)) 600 else if ((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC))
597 { 601 {
598 mChannel->setText(mSMSOtherChannel); 602 mChannel->setText(mSMSOtherChannel);
599 mMessage->setText(mSMSOtherMessage); 603 mMessage->setText(mSMSOtherMessage);
600 mParameters->setText(mSMSOtherMessageParameters); 604 mParameters->setText(mSMSOtherMessageParameters);
601 } 605 }
602 else if ((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC)) 606 else if ((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC))
603 { 607 {
604 mChannel->setText(mFaxOtherChannel); 608 mChannel->setText(mFaxOtherChannel);
605 mMessage->setText(mFaxOtherMessage); 609 mMessage->setText(mFaxOtherMessage);
606 mParameters->setText(mFaxOtherMessageParameters); 610 mParameters->setText(mFaxOtherMessageParameters);
607 } 611 }
608 else if ((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC)) 612 else if ((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC))
609 { 613 {
610 mChannel->setText(mPagerOtherChannel); 614 mChannel->setText(mPagerOtherChannel);
611 mMessage->setText(mPagerOtherMessage); 615 mMessage->setText(mPagerOtherMessage);
612 mParameters->setText(mPagerOtherMessageParameters); 616 mParameters->setText(mPagerOtherMessageParameters);
613 } 617 }
614 else if ((mCurrentApp == ExternalAppHandler::SIP) && (mCurrentClient == KPimGlobalPrefs::OTHER_SIC)) 618 else if ((mCurrentApp == ExternalAppHandler::SIP) && (mCurrentClient == KPimGlobalPrefs::OTHER_SIC))
615 { 619 {
616 mChannel->setText(mSipOtherChannel); 620 mChannel->setText(mSipOtherChannel);
617 mMessage->setText(mSipOtherMessage); 621 mMessage->setText(mSipOtherMessage);
618 mParameters->setText(mSipOtherMessageParameters); 622 mParameters->setText(mSipOtherMessageParameters);
619 } 623 }
620 } 624 }
621 625
622 } 626 }
623 627
624 bool readonly; 628 bool readonly;
625 bool enabled; 629 bool enabled;
626 if ( ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC)) 630 if ( ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC))
627 ||((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC)) 631 ||((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC))
628 ||((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC)) 632 ||((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC))
629 ||((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC)) 633 ||((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC))
630 ||((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC)) 634 ||((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC))
631 ||((mCurrentApp == ExternalAppHandler::SIP) && (mCurrentClient == KPimGlobalPrefs::OTHER_SIC))) 635 ||((mCurrentApp == ExternalAppHandler::SIP) && (mCurrentClient == KPimGlobalPrefs::OTHER_SIC)))
632 { 636 {
633 readonly = false; 637 readonly = false;
634 } 638 }
635 else 639 else
636 { 640 {
637 readonly = true; 641 readonly = true;
638 } 642 }
639 643
640 if ( ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::NONE_EMC)) 644 if ( ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::NONE_EMC))
641 ||((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::NONE_PHC)) 645 ||((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::NONE_PHC))
642 ||((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::NONE_SMC)) 646 ||((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::NONE_SMC))
643 ||((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::NONE_FAC)) 647 ||((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::NONE_FAC))
644 ||((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::NONE_PAC)) 648 ||((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::NONE_PAC))
645 ||((mCurrentApp == ExternalAppHandler::SIP) && (mCurrentClient == KPimGlobalPrefs::NONE_SIC))) 649 ||((mCurrentApp == ExternalAppHandler::SIP) && (mCurrentClient == KPimGlobalPrefs::NONE_SIC)))
646 { 650 {
647 enabled = false; 651 enabled = false;
648 } 652 }
649 else 653 else
650 { 654 {
651 enabled = true; 655 enabled = true;
652 } 656 }
653 657
654 658
655 mChannel->setReadOnly(readonly); 659 mChannel->setReadOnly(readonly);
656 mMessage->setReadOnly(readonly); 660 mMessage->setReadOnly(readonly);
657 mParameters->setReadOnly(readonly); 661 mParameters->setReadOnly(readonly);
658 mMessage2->setReadOnly(readonly); 662 mMessage2->setReadOnly(readonly);
659 mParameters2->setReadOnly(readonly); 663 mParameters2->setReadOnly(readonly);
660 664
661 mChannel->setEnabled(enabled); 665 mChannel->setEnabled(enabled);
662 mMessage->setEnabled(enabled); 666 mMessage->setEnabled(enabled);
663 mParameters->setEnabled(enabled); 667 mParameters->setEnabled(enabled);
664 mMessage2->setEnabled(enabled); 668 mMessage2->setEnabled(enabled);
665 mParameters2->setEnabled(enabled); 669 mParameters2->setEnabled(enabled);
666 670
667 671
668 672
669 mClient->setCurrentItem(mCurrentClient); 673 mClient->setCurrentItem(mCurrentClient);
670 674
671 675
672 // enable/disable the extra message/parameter field 676 // enable/disable the extra message/parameter field
673 if (mCurrentApp == ExternalAppHandler::EMAIL) 677 if (mCurrentApp == ExternalAppHandler::EMAIL)
674 { 678 {
675 } 679 }
676 else 680 else
677 { 681 {
678 mMessage2->setText( "" ); 682 mMessage2->setText( "" );
679 mParameters2->setText( "" ); 683 mParameters2->setText( "" );
680 } 684 }
681 685
682 if (enabled == true) { 686 if (enabled == true) {
683 mMessage2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL); 687 mMessage2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL);
684 mParameters2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL); 688 mParameters2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL);
685 } 689 }
686 690
687 691
688 blockSignals( blocked ); 692 blockSignals( blocked );
689 693
690} 694}
691 695
692void KDEPIMConfigWidget::usrReadConfig() 696void KDEPIMConfigWidget::usrReadConfig()
693{ 697{
694 KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance(); 698 KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance();
695 699
696 bool blocked = signalsBlocked(); 700 bool blocked = signalsBlocked();
697 blockSignals( true ); 701 blockSignals( true );
698 702
699 QString dummy = prefs->mUserDateFormatLong; 703 QString dummy = prefs->mUserDateFormatLong;
700 mUserDateFormatLong->setText(dummy.replace( QRegExp("K"), QString(",") )); 704 mUserDateFormatLong->setText(dummy.replace( QRegExp("K"), QString(",") ));
701 dummy = prefs->mUserDateFormatShort; 705 dummy = prefs->mUserDateFormatShort;
702 mUserDateFormatShort->setText(dummy.replace( QRegExp("K"), QString(",") )); 706 mUserDateFormatShort->setText(dummy.replace( QRegExp("K"), QString(",") ));
703 707
704 QDate current ( 2001, 1,1); 708 QDate current ( 2001, 1,1);
705 mStartDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingStart-1)); 709 mStartDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingStart-1));
706 mEndDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingEnd-1)); 710 mEndDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingEnd-1));
707 setCombo(mTimeZoneCombo,i18n(prefs->mTimeZoneId)); 711 setCombo(mTimeZoneCombo,i18n(prefs->mTimeZoneId));
708 712
709 713
710 714
711 715
712 mEmailClient = prefs->mEmailClient; 716 mEmailClient = prefs->mEmailClient;
713 mEmailOtherChannel = prefs->mEmailOtherChannel; 717 mEmailOtherChannel = prefs->mEmailOtherChannel;
714 mEmailOtherMessage = prefs->mEmailOtherMessage; 718 mEmailOtherMessage = prefs->mEmailOtherMessage;
715 mEmailOtherMessageParameters = prefs->mEmailOtherMessageParameters; 719 mEmailOtherMessageParameters = prefs->mEmailOtherMessageParameters;
716 mEmailOtherMessage2 = prefs->mEmailOtherMessage2; 720 mEmailOtherMessage2 = prefs->mEmailOtherMessage2;
717 mEmailOtherMessageParameters2 = prefs->mEmailOtherMessageParameters2; 721 mEmailOtherMessageParameters2 = prefs->mEmailOtherMessageParameters2;
718 722
719 mPhoneClient = prefs->mPhoneClient; 723 mPhoneClient = prefs->mPhoneClient;
720 mPhoneOtherChannel = prefs->mPhoneOtherChannel; 724 mPhoneOtherChannel = prefs->mPhoneOtherChannel;
721 mPhoneOtherMessage = prefs->mPhoneOtherMessage; 725 mPhoneOtherMessage = prefs->mPhoneOtherMessage;
722 mPhoneOtherMessageParameters = prefs->mPhoneOtherMessageParameters; 726 mPhoneOtherMessageParameters = prefs->mPhoneOtherMessageParameters;
723 727
724 mFaxClient = prefs->mFaxClient; 728 mFaxClient = prefs->mFaxClient;
725 mFaxOtherChannel = prefs->mFaxOtherChannel; 729 mFaxOtherChannel = prefs->mFaxOtherChannel;
726 mFaxOtherMessage = prefs->mFaxOtherMessage; 730 mFaxOtherMessage = prefs->mFaxOtherMessage;
727 mFaxOtherMessageParameters = prefs->mFaxOtherMessageParameters; 731 mFaxOtherMessageParameters = prefs->mFaxOtherMessageParameters;
728 732
729 mSMSClient = prefs->mSMSClient; 733 mSMSClient = prefs->mSMSClient;
730 mSMSOtherChannel = prefs->mSMSOtherChannel; 734 mSMSOtherChannel = prefs->mSMSOtherChannel;
731 mSMSOtherMessage = prefs->mSMSOtherMessage; 735 mSMSOtherMessage = prefs->mSMSOtherMessage;
732 mSMSOtherMessageParameters = prefs->mSMSOtherMessageParameters; 736 mSMSOtherMessageParameters = prefs->mSMSOtherMessageParameters;
733 737
734 mPagerClient = prefs->mPagerClient; 738 mPagerClient = prefs->mPagerClient;
735 mPagerOtherChannel = prefs->mPagerOtherChannel; 739 mPagerOtherChannel = prefs->mPagerOtherChannel;
736 mPagerOtherMessage = prefs->mPagerOtherMessage; 740 mPagerOtherMessage = prefs->mPagerOtherMessage;
737 mPagerOtherMessageParameters = prefs->mPagerOtherMessageParameters; 741 mPagerOtherMessageParameters = prefs->mPagerOtherMessageParameters;
738 742
739 mSipClient = prefs->mSipClient; 743 mSipClient = prefs->mSipClient;
740 mSipOtherChannel = prefs->mSipOtherChannel; 744 mSipOtherChannel = prefs->mSipOtherChannel;
741 mSipOtherMessage = prefs->mSipOtherMessage; 745 mSipOtherMessage = prefs->mSipOtherMessage;
742 mSipOtherMessageParameters = prefs->mSipOtherMessageParameters; 746 mSipOtherMessageParameters = prefs->mSipOtherMessageParameters;
743 747
744 mCurrentApp = ExternalAppHandler::EMAIL; 748 mCurrentApp = ExternalAppHandler::EMAIL;
745 mCurrentClient = mEmailClient; 749 mCurrentClient = mEmailClient;
746 750
747 updateClientWidgets(); 751 updateClientWidgets();
748 752
749 blockSignals( blocked ); 753 blockSignals( blocked );
750 754
751} 755}
752 756
753void KDEPIMConfigWidget::usrWriteConfig() 757void KDEPIMConfigWidget::usrWriteConfig()
754{ 758{
755 KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance(); 759 KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance();
756 760
757 saveEditFieldSettings(); 761 saveEditFieldSettings();
758 762
759 763
760 prefs->mUserDateFormatShort = mUserDateFormatShort->text().replace( QRegExp(","), QString("K") ); 764 prefs->mUserDateFormatShort = mUserDateFormatShort->text().replace( QRegExp(","), QString("K") );
761 prefs->mUserDateFormatLong = mUserDateFormatLong->text().replace( QRegExp(","), QString("K") ); 765 prefs->mUserDateFormatLong = mUserDateFormatLong->text().replace( QRegExp(","), QString("K") );
762 766
763 prefs->mTimeZoneId = mTimeZoneCombo->currentText(); 767 prefs->mTimeZoneId = mTimeZoneCombo->currentText();
764 QDate date; 768 QDate date;
765 date = mStartDateSavingEdit->date(); 769 date = mStartDateSavingEdit->date();
766 int sub = 0; 770 int sub = 0;
767 if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 ) 771 if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 )
768 sub = 1; 772 sub = 1;
769 prefs->mDaylightsavingStart = date.dayOfYear()-sub; 773 prefs->mDaylightsavingStart = date.dayOfYear()-sub;
770 date = mEndDateSavingEdit->date(); 774 date = mEndDateSavingEdit->date();
771 if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 ) 775 if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 )
772 sub = 1; 776 sub = 1;
773 else 777 else
774 sub = 0; 778 sub = 0;
775 prefs->mDaylightsavingEnd = date.dayOfYear()-sub; 779 prefs->mDaylightsavingEnd = date.dayOfYear()-sub;
776 780
777 781
778 prefs->mEmailClient = mEmailClient; 782 prefs->mEmailClient = mEmailClient;
779 prefs->mEmailOtherChannel = mEmailOtherChannel; 783 prefs->mEmailOtherChannel = mEmailOtherChannel;
780 prefs->mEmailOtherMessage = mEmailOtherMessage; 784 prefs->mEmailOtherMessage = mEmailOtherMessage;
781 prefs->mEmailOtherMessageParameters = mEmailOtherMessageParameters; 785 prefs->mEmailOtherMessageParameters = mEmailOtherMessageParameters;
782 prefs->mEmailOtherMessage2 = mEmailOtherMessage2; 786 prefs->mEmailOtherMessage2 = mEmailOtherMessage2;
783 prefs->mEmailOtherMessageParameters2 = mEmailOtherMessageParameters2; 787 prefs->mEmailOtherMessageParameters2 = mEmailOtherMessageParameters2;
784 788
785 prefs->mPhoneClient = mPhoneClient; 789 prefs->mPhoneClient = mPhoneClient;
786 prefs->mPhoneOtherChannel = mPhoneOtherChannel; 790 prefs->mPhoneOtherChannel = mPhoneOtherChannel;
787 prefs->mPhoneOtherMessage = mPhoneOtherMessage; 791 prefs->mPhoneOtherMessage = mPhoneOtherMessage;
788 prefs->mPhoneOtherMessageParameters = mPhoneOtherMessageParameters; 792 prefs->mPhoneOtherMessageParameters = mPhoneOtherMessageParameters;
789 793
790 prefs->mFaxClient = mFaxClient; 794 prefs->mFaxClient = mFaxClient;
791 prefs->mFaxOtherChannel = mFaxOtherChannel; 795 prefs->mFaxOtherChannel = mFaxOtherChannel;
792 prefs->mFaxOtherMessage = mFaxOtherMessage; 796 prefs->mFaxOtherMessage = mFaxOtherMessage;
793 prefs->mFaxOtherMessageParameters = mFaxOtherMessageParameters; 797 prefs->mFaxOtherMessageParameters = mFaxOtherMessageParameters;
794 798
795 prefs->mSMSClient = mSMSClient; 799 prefs->mSMSClient = mSMSClient;
796 prefs->mSMSOtherChannel = mSMSOtherChannel; 800 prefs->mSMSOtherChannel = mSMSOtherChannel;
797 prefs->mSMSOtherMessage = mSMSOtherMessage; 801 prefs->mSMSOtherMessage = mSMSOtherMessage;
798 prefs->mSMSOtherMessageParameters = mSMSOtherMessageParameters; 802 prefs->mSMSOtherMessageParameters = mSMSOtherMessageParameters;
799 803
800 prefs->mPagerClient = mPagerClient; 804 prefs->mPagerClient = mPagerClient;
801 prefs->mPagerOtherChannel = mPagerOtherChannel; 805 prefs->mPagerOtherChannel = mPagerOtherChannel;
802 prefs->mPagerOtherMessage = mPagerOtherMessage; 806 prefs->mPagerOtherMessage = mPagerOtherMessage;
803 prefs->mPagerOtherMessageParameters = mPagerOtherMessageParameters; 807 prefs->mPagerOtherMessageParameters = mPagerOtherMessageParameters;
804 808
805 809
806 prefs->mSipClient = mSipClient; 810 prefs->mSipClient = mSipClient;
807 prefs->mSipOtherChannel = mSipOtherChannel; 811 prefs->mSipOtherChannel = mSipOtherChannel;
808 prefs->mSipOtherMessage = mSipOtherMessage; 812 prefs->mSipOtherMessage = mSipOtherMessage;
809 prefs->mSipOtherMessageParameters = mSipOtherMessageParameters; 813 prefs->mSipOtherMessageParameters = mSipOtherMessageParameters;
810 814
811 //release the cache that other views can access the changed values instantanious 815 //release the cache that other views can access the changed values instantanious
812 ExternalAppHandler::instance()->loadConfig(); 816 ExternalAppHandler::instance()->loadConfig();
813 KPimGlobalPrefs::instance()->setGlobalConfig(); 817 KPimGlobalPrefs::instance()->setGlobalConfig();
814} 818}
815 819
816 820
817void KDEPIMConfigWidget::setCombo(QComboBox *combo, const QString & text, 821void KDEPIMConfigWidget::setCombo(QComboBox *combo, const QString & text,
818 const QStringList *tags) 822 const QStringList *tags)
819{ 823{
820 if (tags) { 824 if (tags) {
821 int i = tags->findIndex(text); 825 int i = tags->findIndex(text);
822 if (i > 0) combo->setCurrentItem(i); 826 if (i > 0) combo->setCurrentItem(i);
823 } else { 827 } else {
824 for(int i=0;i<combo->count();++i) { 828 for(int i=0;i<combo->count();++i) {
825 if (combo->text(i) == text) { 829 if (combo->text(i) == text) {
826 combo->setCurrentItem(i); 830 combo->setCurrentItem(i);
827 break; 831 break;
828 } 832 }
829 } 833 }
830 } 834 }
831} 835}
832 836
833 837
834void KDEPIMConfigWidget::textChanged( const QString& text ) 838void KDEPIMConfigWidget::textChanged( const QString& text )
835{ 839{
836 emit changed( true ); 840 emit changed( true );
837} 841}
diff --git a/version b/version
index b972ae7..628b450 100644
--- a/version
+++ b/version
@@ -1 +1 @@
version = "2.0.0"; version = "2.0.1";