summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-04-15 11:25:00 (UTC)
committer zautrix <zautrix>2005-04-15 11:25:00 (UTC)
commitd2f51718bdfa5b05e6f7e609ec75f616e3f0a7c1 (patch) (unidiff)
tree2fd31b41a449604610a38464a02a4d4fc5de0e1a
parent068b5535de440c93415bae4e13c8efeaadffc5f2 (diff)
downloadkdepimpi-d2f51718bdfa5b05e6f7e609ec75f616e3f0a7c1.zip
kdepimpi-d2f51718bdfa5b05e6f7e609ec75f616e3f0a7c1.tar.gz
kdepimpi-d2f51718bdfa5b05e6f7e609ec75f616e3f0a7c1.tar.bz2
fixxx
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt3
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt6
-rw-r--r--bin/kdepim/korganizer/usertranslation.txt774
-rw-r--r--korganizer/calendarview.cpp2
4 files changed, 510 insertions, 275 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index aa6ab0a..7473549 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,270 +1,271 @@
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********** VERSION 2.0.27 ************ 3********** VERSION 2.0.27 ************
4 4
5More bugfixes. 5More bugfixes.
6Added possibility to clone in KO/Pi a todo with all its subtodos. 6Added possibility to clone in KO/Pi a todo with all its subtodos.
7Added config option for alternate background in list views.
8
7Added a timetracker funtionality in KO/Pi for todos in the todo view. 9Added a timetracker funtionality in KO/Pi for todos in the todo view.
8If a todo is set to started and then to stopped it is saving information about the runtime in 10If a todo is set to started and then to stopped it is saving information about the runtime in
9<yourhome>/kdepim/apps/timetrackerdir. 11<yourhome>/kdepim/apps/timetrackerdir.
10To read, display, print this information an external program is needed which will be developed. 12To read, display, print this information an external program is needed which will be developed.
11It will display the data in a Gantt timetable view with one row for each todo. 13It will display the data in a Gantt timetable view with one row for each todo.
12It will have many possibilities sorting the data after category, parent todos, attendees, ... and for creating/printing status reports/summaries. 14It will have many possibilities sorting the data after category, parent todos, attendees, ... and for creating/printing status reports/summaries.
13Merging of data from different computers/users will be quite easy because every run is stored in a single file. 15Merging of data from different computers/users will be quite easy because every run is stored in a single file.
14The program will be only available for the desktop (Linux+Windows) and it will be not Open Source.
15 16
16********** VERSION 2.0.26 ************ 17********** VERSION 2.0.26 ************
17 18
18Added two more fields to the KA/Pi view config: 19Added two more fields to the KA/Pi view config:
19A "Mobile (home)" and a "Mobile (work)" field. 20A "Mobile (home)" and a "Mobile (work)" field.
20Fixed utf8 import (e.g. for Japaneese text) in KA/Pi. 21Fixed utf8 import (e.g. for Japaneese text) in KA/Pi.
21 22
22Some alarm applet enhancements, e.g. sound stops automatically if value of suspend spinbox changes. 23Some alarm applet enhancements, e.g. sound stops automatically if value of suspend spinbox changes.
23And again fixed some more small bugs. 24And again fixed some more small bugs.
24 25
25********** VERSION 2.0.25 ************ 26********** VERSION 2.0.25 ************
26 27
27And again fixed some bugs. 28And again fixed some bugs.
28 29
29********** VERSION 2.0.24 ************ 30********** VERSION 2.0.24 ************
30 31
31Fixed again a lot of small bugs. 32Fixed again a lot of small bugs.
32Some performance optimizations in date navigator. 33Some performance optimizations in date navigator.
33Month view displays now multi days events on top of each cell, such that it is more likely that all multi days items of one event are in the same row. 34Month view displays now multi days events on top of each cell, such that it is more likely that all multi days items of one event are in the same row.
34 35
35********** VERSION 2.0.23 ************ 36********** VERSION 2.0.23 ************
36 37
37Fixed again a lot of small and strange bugs, e.g. the missing toolbar of KA/Pi after a new installation. 38Fixed again a lot of small and strange bugs, e.g. the missing toolbar of KA/Pi after a new installation.
38Fixed the (agenda) layout of KO/Pi on 5500er. 39Fixed the (agenda) layout of KO/Pi on 5500er.
39Some usebility enhancements (e.g. reselection the current item of the todo view after some changes). 40Some usebility enhancements (e.g. reselection the current item of the todo view after some changes).
40 41
41********** VERSION 2.0.22 ************ 42********** VERSION 2.0.22 ************
42 43
43KO/Pi: 44KO/Pi:
44Fix for creating events/todos via the abgenda context menu. 45Fix for creating events/todos via the abgenda context menu.
45Added option to split toolbar to 3 toolbars. 46Added option to split toolbar to 3 toolbars.
46(Toolbar moving s disabled for this option due to a bug in Qt somewhere). 47(Toolbar moving s disabled for this option due to a bug in Qt somewhere).
47Added option to show one small filter-view-toolbar. 48Added option to show one small filter-view-toolbar.
48Added a print option to the desktop version: 49Added a print option to the desktop version:
49Now you can print out the view of the "Event Viewer". 50Now you can print out the view of the "Event Viewer".
50That means you can print all data of one particular event/todo. 51That means you can print all data of one particular event/todo.
51Added scaling options to printout of Event Viewer and What'sNext View. 52Added scaling options to printout of Event Viewer and What'sNext View.
52Fixed some problems in the month view in "week start sunday" mode. 53Fixed some problems in the month view in "week start sunday" mode.
53KA/Pi: 54KA/Pi:
54Added two more config options. 55Added two more config options.
55Fixed resizing problem of address request dialog when orientation was switched. 56Fixed resizing problem of address request dialog when orientation was switched.
56Cleaned up the menu structure. 57Cleaned up the menu structure.
57Fixed some more problems. 58Fixed some more problems.
58 59
59Fixed the annoying problem that scrolling continued after the key was released in KO/Pi Monthview and the KA/Pi views. 60Fixed the annoying problem that scrolling continued after the key was released in KO/Pi Monthview and the KA/Pi views.
60 61
61And, this is a really cool option (Ben did suggest it): 62And, this is a really cool option (Ben did suggest it):
62Now KO/Pi and KA/Pi can be run from a USB stick: 63Now KO/Pi and KA/Pi can be run from a USB stick:
63All data is read from and written to the stick. 64All data is read from and written to the stick.
64You can enable this in the global configure option TAB with: 65You can enable this in the global configure option TAB with:
65Save using LOCAL storage. 66Save using LOCAL storage.
66Just put KDE-Pim/Pi on a memory stick and you can access all your PIM data on every computer with Windows XP. It will work with the ME and Linux versions as well. I will put a memory stick version for teh next stable release online. 67Just put KDE-Pim/Pi on a memory stick and you can access all your PIM data on every computer with Windows XP. It will work with the ME and Linux versions as well. I will put a memory stick version for teh next stable release online.
67 68
68********** VERSION 2.0.21 ************ 69********** VERSION 2.0.21 ************
69 70
70Fixed another SMTP problem in OM/Pi. 71Fixed another SMTP problem in OM/Pi.
71Some small changed in the new datenavigator in KO/Pi. 72Some small changed in the new datenavigator in KO/Pi.
72Changed default setting for new filter in KA/Pi to "exclude categories". 73Changed default setting for new filter in KA/Pi to "exclude categories".
73Changed the default font size for 640x480 display . 74Changed the default font size for 640x480 display .
74Changed popup menu behaviour in agenda and list view. 75Changed popup menu behaviour in agenda and list view.
75Fixed some layout problems of the date label size in the month view. 76Fixed some layout problems of the date label size in the month view.
76Made month view update faster. 77Made month view update faster.
77Made first datenavigator repainting faster. 78Made first datenavigator repainting faster.
78Changed the title of the event/todo edit dialogs. 79Changed the title of the event/todo edit dialogs.
79Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course). 80Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course).
80Many small usebility fixes in KO/Pi. 81Many small usebility fixes in KO/Pi.
81Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi. 82Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi.
82The set of possible "next views" are the views you have toolbar buttons for. 83The set of possible "next views" are the views you have toolbar buttons for.
83 84
84Made alarm sound working on Linux. 85Made alarm sound working on Linux.
85 86
86KO/Pi alarm applet changed: 87KO/Pi alarm applet changed:
87Made buttons in alarm dialog much bigger. 88Made buttons in alarm dialog much bigger.
88Made setting of timer more user friendly by showing the actual timer fire time and making the buttons in the timer settings much bigger. 89Made setting of timer more user friendly by showing the actual timer fire time and making the buttons in the timer settings much bigger.
89The goal was it to make it possible to use a finger tip ( and not the stylus ) on the touchscreen to adjust the settings. 90The goal was it to make it possible to use a finger tip ( and not the stylus ) on the touchscreen to adjust the settings.
90 91
91And because this version is realeased at Easter, I added an Easter-egg: 92And because this version is realeased at Easter, I added an Easter-egg:
92With a new undocumented command you can get a message box about the next alarm. 93With a new undocumented command you can get a message box about the next alarm.
93Good luck to find it! 94Good luck to find it!
94 95
95 96
96 97
97********** VERSION 2.0.20 ************ 98********** VERSION 2.0.20 ************
98 99
99Two small fixes in OM/Pi. 100Two small fixes in OM/Pi.
100 101
101Better resizing of the new datenavigator in KO/Pi. 102Better resizing of the new datenavigator in KO/Pi.
102 103
103********** VERSION 2.0.19 ************ 104********** VERSION 2.0.19 ************
104KO/Pi: 105KO/Pi:
105Enhancements and bugfixes in the new datenavigator. 106Enhancements and bugfixes in the new datenavigator.
106Bugfix in this changelog: 107Bugfix in this changelog:
107The datenavigator was changed in version 2.0.18, not the datepicker. 108The datenavigator was changed in version 2.0.18, not the datepicker.
108 109
109********** VERSION 2.0.18 ************ 110********** VERSION 2.0.18 ************
110KO/Pi: 111KO/Pi:
111Fixed some minor problems. 112Fixed some minor problems.
112Cleaned up the KO/Pi config dialog. 113Cleaned up the KO/Pi config dialog.
113Fixed problem moving events in aganda view. 114Fixed problem moving events in aganda view.
114Made datepicker scaleable, i.e. if the datenavigator shows now a 115Made datepicker scaleable, i.e. if the datenavigator shows now a
115datenavigator matrix depending on its size. 116datenavigator matrix depending on its size.
116Birthdays are now displayed green in the datenavigator. 117Birthdays are now displayed green in the datenavigator.
117What'sThis Help in datenavigator shows all events of the day. 118What'sThis Help in datenavigator shows all events of the day.
118 119
119OM/Pi: 120OM/Pi:
120Updated the backend mail library to the latest version. 121Updated the backend mail library to the latest version.
121Please backup your mail before using this version. 122Please backup your mail before using this version.
122 123
123********** VERSION 2.0.17 ************ 124********** VERSION 2.0.17 ************
124 125
125KO/Pi: 126KO/Pi:
126Tooltips in month view were not sorted. Fixed. 127Tooltips in month view were not sorted. Fixed.
127Daylabel in agenda view ( for display of one day ) was too short. Fixed. 128Daylabel in agenda view ( for display of one day ) was too short. Fixed.
128Conflict display dialog for syncing was not on top of other windows. Fixed. 129Conflict display dialog for syncing was not on top of other windows. Fixed.
129Fixed some minor problems. 130Fixed some minor problems.
130 131
131Fixed an endless loop when importing vcs file with RESOURCES entry. 132Fixed an endless loop when importing vcs file with RESOURCES entry.
132 133
133********** VERSION 2.0.16 ************ 134********** VERSION 2.0.16 ************
134OM/Pi: 135OM/Pi:
135Fixed the SMTP account setting the option. 136Fixed the SMTP account setting the option.
136Fixed something in mail sending. 137Fixed something in mail sending.
137 138
138KO/Pi: 139KO/Pi:
139Added possibility to export selected events/todos as vcal file. 140Added possibility to export selected events/todos as vcal file.
140 141
141********** VERSION 2.0.15 ************ 142********** VERSION 2.0.15 ************
142 143
143PwM/Pi: 144PwM/Pi:
144Added keyboard shorcuts for 145Added keyboard shorcuts for
145- toggling summary view (space bar) 146- toggling summary view (space bar)
146- delete item (delete + backspace key) 147- delete item (delete + backspace key)
147- add new item ( i + n key) 148- add new item ( i + n key)
148Fixed length of info in the title. 149Fixed length of info in the title.
149 150
150KO/Pi-KA/Pi: 151KO/Pi-KA/Pi:
151Changed "ME" menu bar entry to an icon. 152Changed "ME" menu bar entry to an icon.
152 153
153KO/Pi: 154KO/Pi:
154Fixed two minor bugs in displaying todos. 155Fixed two minor bugs in displaying todos.
155If in month view a cell is selected, the key shortcut "d" shows now that date. 156If in month view a cell is selected, the key shortcut "d" shows now that date.
156Added complete info for a todo in month view as an icon left of the text. 157Added complete info for a todo in month view as an icon left of the text.
157Fixed problems of displaying data when "<" or ">" are used in summary/location/description. 158Fixed problems of displaying data when "<" or ">" are used in summary/location/description.
158Fixed problem of search dialog size when switching displays. 159Fixed problem of search dialog size when switching displays.
159Cancel key now closes date picker. 160Cancel key now closes date picker.
160Rearranged KO/Pi file menu structure. 161Rearranged KO/Pi file menu structure.
161 162
162OM/Pi: 163OM/Pi:
163Added to the SMTP account setting the option 164Added to the SMTP account setting the option
164"No secure connection". 165"No secure connection".
165You have to configure your SMTP accounts again, sorry. 166You have to configure your SMTP accounts again, sorry.
166 167
167KA/Pi: 168KA/Pi:
168Added support for importing quoted-printable. 169Added support for importing quoted-printable.
169Support was added by Peter P.. Thanks, Peter! 170Support was added by Peter P.. Thanks, Peter!
170 171
171 172
172********** VERSION 2.0.14 ************ 173********** VERSION 2.0.14 ************
173 174
174Made Passwordmanager PwM/Pi more userfriendly: 175Made Passwordmanager PwM/Pi more userfriendly:
175Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 176Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
176Fixed bug in KO/Pi todo printing. 177Fixed bug in KO/Pi todo printing.
177Made Qtopia calendar import possible on desktop . 178Made Qtopia calendar import possible on desktop .
178 179
179********** VERSION 2.0.13 ************ 180********** VERSION 2.0.13 ************
180 181
181Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 182Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
182 183
183In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 184In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
184 185
185OM/Pi: 186OM/Pi:
186Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 187Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
187Added missing German translation. 188Added missing German translation.
188Added warning if path is specified in local folder settings of account config. 189Added warning if path is specified in local folder settings of account config.
189 190
190********** VERSION 2.0.12 ************ 191********** VERSION 2.0.12 ************
191 192
192KO/Pi: 193KO/Pi:
193Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 194Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
194Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 195Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
195Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 196Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
196 197
197Fixed problem in pi-sync mode when wrong password was sent. 198Fixed problem in pi-sync mode when wrong password was sent.
198 199
199OM/Pi: 200OM/Pi:
200Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 201Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
201Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 202Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
202 203
203********** VERSION 2.0.11 ************ 204********** VERSION 2.0.11 ************
204 205
205Fixed some problems in pi-sync mode 206Fixed some problems in pi-sync mode
206(e.g. details of events were not synced properly) 207(e.g. details of events were not synced properly)
207 208
208********** VERSION 2.0.10 ************ 209********** VERSION 2.0.10 ************
209 210
210KO/Pi: 211KO/Pi:
211In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 212In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
212This is fixed. 213This is fixed.
213Changed the search dialog a bit to make it more user friendly. 214Changed the search dialog a bit to make it more user friendly.
214(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 215(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
215 216
216Added config option to hide the week number in KO/Pi toolbar. 217Added config option to hide the week number in KO/Pi toolbar.
217 218
218********** VERSION 2.0.9 ************ 219********** VERSION 2.0.9 ************
219 220
220Made month view icons for multiday events a bit nicer. 221Made month view icons for multiday events a bit nicer.
221Some minor fixes in KO/Pi 222Some minor fixes in KO/Pi
222(e.g. go to today did not work for new week view properly). 223(e.g. go to today did not work for new week view properly).
223 224
224 225
225********** VERSION 2.0.8 ************ 226********** VERSION 2.0.8 ************
226 227
227Fixed a problem in dependency info in the ipk files for the Zaurus. 228Fixed a problem in dependency info in the ipk files for the Zaurus.
228 229
229Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar. 230Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar.
230 231
231Added a "go today" button to the datepicker. 232Added a "go today" button to the datepicker.
232 233
233Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 234Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
234and made it configureable to show these values. 235and made it configureable to show these values.
235 236
236Fixed a problem for events (from external iCal files) that do have a duration but no end date. 237Fixed a problem for events (from external iCal files) that do have a duration but no end date.
237 238
238 239
239********** VERSION 2.0.7 ************ 240********** VERSION 2.0.7 ************
240 241
241Added global application font settings 242Added global application font settings
242(for all KDE-Pim/Pi apps) to the general settings. 243(for all KDE-Pim/Pi apps) to the general settings.
243 244
244Fixed a problem in OM/Pi when trying to login to some IMAP servers 245Fixed a problem in OM/Pi when trying to login to some IMAP servers
245(like the IMAP server of Apple: mail.mac.com ) 246(like the IMAP server of Apple: mail.mac.com )
246 247
247Added recurring todos to KO/Pi. 248Added recurring todos to KO/Pi.
248 249
249 250
250********** VERSION 2.0.6 ************ 251********** VERSION 2.0.6 ************
251 252
252Stable release 2.0.6! 253Stable release 2.0.6!
253 254
254Some bugfixes in the pi-sync mode. 255Some bugfixes in the pi-sync mode.
255Added German translation for pi-sync mode. 256Added German translation for pi-sync mode.
256 257
257KO/Pi: 258KO/Pi:
258Made the todolist using alternate background. 259Made the todolist using alternate background.
259 260
260Other minor fixes in KO/Pi. 261Other minor fixes in KO/Pi.
261 262
262 263
263You can find the complete changelog 264You can find the complete changelog
264from version 1.7.7 to 2.0.5 265from version 1.7.7 to 2.0.5
265in the source package or on 266in the source package or on
266 267
267http://www.pi-sync.net/html/changelog.html 268http://www.pi-sync.net/html/changelog.html
268 269
269 270
270 271
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index 4d44e32..907eb23 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -1,1363 +1,1361 @@
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 ToDos?","Alle bereits erledigten Todos löschen?" },
129{ "Delete All","Lösche alles" }, 128{ "Delete All","Lösche alles" },
130{ "Delete all selected","Lösche alle Selektierten" }, 129{ "Delete all selected","Lösche alle Selektierten" },
131{ "Delete Current","Aktuellen löschen" }, 130{ "Delete Current","Aktuellen löschen" },
132{ "Delete Event...","Lösche Termin..." }, 131{ "Delete Event...","Lösche Termin..." },
133{ "Delete Event","Lösche Termin" }, 132{ "Delete Event","Lösche Termin" },
134{ "&Delete","Löschen" }, 133{ "&Delete","Löschen" },
135{ "Delete...","Löschen..." }, 134{ "Delete...","Löschen..." },
136{ "Delete","Löschen" }, 135{ "Delete","Löschen" },
137{ "Delete Todo...","Lösche Todo..." }, 136{ "Delete Todo...","Lösche Todo..." },
138{ "Delete To-Do","Lösche Todo" }, 137{ "Delete To-Do","Lösche Todo" },
139{ "Deleting item %d ...","Lösche Eintrag %d..." }, 138{ "Deleting item %d ...","Lösche Eintrag %d..." },
140{ "Descriptions","Beschreibungen" }, 139{ "Descriptions","Beschreibungen" },
141{ "Deselect all","Deselektiere Alle" }, 140{ "Deselect all","Deselektiere Alle" },
142{ "Details","Details" }, 141{ "Details","Details" },
143{ "Dinner","Abendessen" }, 142{ "Dinner","Abendessen" },
144{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" }, 143{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" },
145{ "Due Date","Fällig am" }, 144{ "Due Date","Fällig am" },
146{ "Due: ","Fällig: "}, 145{ "Due: ","Fällig: "},
147{ "Due Time","Fällig um" }, 146{ "Due Time","Fällig um" },
148{ "Due:","Fällig:"}, 147{ "Due:","Fällig:"},
149{ "Duration: ","Dauer: " }, 148{ "Duration: ","Dauer: " },
150{ "Edit...","Bearbeite..." }, 149{ "Edit...","Bearbeite..." },
151{ "Edit","Bearbeite" }, 150{ "Edit","Bearbeite" },
152{ "Edit Event...","Bearbeite Termin..." }, 151{ "Edit Event...","Bearbeite Termin..." },
153{ "Edit Event","Bearbeite Termin" }, 152{ "Edit Event","Bearbeite Termin" },
154{ "Edit exceptions","Bearbeite Ausnahmen" }, 153{ "Edit exceptions","Bearbeite Ausnahmen" },
155{ "EditorBox:","Editor Fenster:" }, 154{ "EditorBox:","Editor Fenster:" },
156{ "Edit Recurrence Range","Bearbeite Wiederholung" }, 155{ "Edit Recurrence Range","Bearbeite Wiederholung" },
157{ "Edit Todo...","Berabeite Todo..." }, 156{ "Edit Todo...","Berabeite Todo..." },
158{ "Edit To-Do","Todo bearbeiten" }, 157{ "Edit To-Do","Todo bearbeiten" },
159{ "E&mail address:","E&mail Adresse:" }, 158{ "E&mail address:","E&mail Adresse:" },
160{ "(EmptyEmail)","(KeineEmail)" }, 159{ "(EmptyEmail)","(KeineEmail)" },
161{ "(EmptyName)","(KeinName)" }, 160{ "(EmptyName)","(KeinName)" },
162{ "Enable Recurrence","Wiederholung anschalten" }, 161{ "Enable Recurrence","Wiederholung anschalten" },
163{ "End after","Endet nach"}, 162{ "End after","Endet nach"},
164{ "End by:","Endet am"}, 163{ "End by:","Endet am"},
165{ "End Date","End Datum" }, 164{ "End Date","End Datum" },
166{ "End:","Ende:" }, 165{ "End:","Ende:" },
167{ "End Time","End Zeit" }, 166{ "End Time","End Zeit" },
168{ "English","Englisch" }, 167{ "English","Englisch" },
169{ "Event","Termin" }, 168{ "Event","Termin" },
170{ "Event list","Termin Liste" }, 169{ "Event list","Termin Liste" },
171{ "Events","Termine" }, 170{ "Events","Termine" },
172{ "Event Viewer:","Termin Übersicht:" }, 171{ "Event Viewer:","Termin Übersicht:" },
173{ "every","jede" }, 172{ "every","jede" },
174{ "Exceptions...","Ausnahmen..." }, 173{ "Exceptions...","Ausnahmen..." },
175{ "Exceptions","Ausnahmen" }, 174{ "Exceptions","Ausnahmen" },
176{ "Exclude holidays","Ohne freie Tage" }, 175{ "Exclude holidays","Ohne freie Tage" },
177{ "Exclude Saturdays","Ohne Samstage" }, 176{ "Exclude Saturdays","Ohne Samstage" },
178{ "Feb","Feb" }, 177{ "Feb","Feb" },
179{ "February","Februar" }, 178{ "February","Februar" },
180{ "&Find","Suche!" }, 179{ "&Find","Suche!" },
181{ "Fonts","Schriftart" }, 180{ "Fonts","Schriftart" },
182{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" }, 181{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" },
183{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"}, 182{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"},
184{ "Free","Frei" }, 183{ "Free","Frei" },
185{ "Friday","Freitag" }, 184{ "Friday","Freitag" },
186{ "Fri","Fr" }, 185{ "Fri","Fr" },
187{ "From:","Vom:" }, 186{ "From:","Vom:" },
188{ "Full &name:","Vor- und &Nachname:" }, 187{ "Full &name:","Vor- und &Nachname:" },
189{ "General","Allgemein" }, 188{ "General","Allgemein" },
190{ "German","Deutsch" }, 189{ "German","Deutsch" },
191{ "Gifts","Geschenke" }, 190{ "Gifts","Geschenke" },
192{ "Go to Today","Heute anzeigen" }, 191{ "Go to Today","Heute anzeigen" },
193{ "Help","Hilfe" }, 192{ "Help","Hilfe" },
194{ "Hide Dates","Daten ausblenden" }, 193{ "Hide Dates","Daten ausblenden" },
195{ "Highlight color:","Markierungen:" }, 194{ "Highlight color:","Markierungen:" },
196{ "Holiday color:","Freie Tage:" }, 195{ "Holiday color:","Freie Tage:" },
197{ "hour(s)","Stunde(n)" }, 196{ "hour(s)","Stunde(n)" },
198{ "In %1 days: ","In %1 Tagen: " }, 197{ "In %1 days: ","In %1 Tagen: " },
199{ "Incomplete Todo:","Unerledigte Aufgaben:" }, 198{ "Incomplete Todo:","Unerledigte Aufgaben:" },
200{ "Information","Information" }, 199{ "Information","Information" },
201{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" }, 200{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" },
202{ "Jan","Jan" }, 201{ "Jan","Jan" },
203{ "January","Januar" }, 202{ "January","Januar" },
204{ "JournalView:","Journal Ansicht:" }, 203{ "JournalView:","Journal Ansicht:" },
205{ "Journals","Journale" }, 204{ "Journals","Journale" },
206{ "Jul","Jul" }, 205{ "Jul","Jul" },
207{ "July","Juli" }, 206{ "July","Juli" },
208{ "Jump to date","Springe zum Datum" }, 207{ "Jump to date","Springe zum Datum" },
209{ "June","Juni" }, 208{ "June","Juni" },
210{ "Jun","Jun" }, 209{ "Jun","Jun" },
211{ "Key Bindings...","Tastenzuordnung..." }, 210{ "Key Bindings...","Tastenzuordnung..." },
212{ "Kids","Kinder" }, 211{ "Kids","Kinder" },
213{ "Known Problems...","Bekannte Probleme..." }, 212{ "Known Problems...","Bekannte Probleme..." },
214{ "KO/Pi Find ","KO/Pi Suchdialog " }, 213{ "KO/Pi Find ","KO/Pi Suchdialog " },
215{ "KO/Pi Find: ","KO/Pi Suchen: " }, 214{ "KO/Pi Find: ","KO/Pi Suchen: " },
216{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." }, 215{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." },
217{ "Language:(needs restart)","Sprache (Neustart!)" }, 216{ "Language:(needs restart)","Sprache (Neustart!)" },
218{ "Language:","Sprache" }, 217{ "Language:","Sprache" },
219{ "Large","Etwas mehr" }, 218{ "Large","Etwas mehr" },
220{ "List View:","Listenansicht:" }, 219{ "List View:","Listenansicht:" },
221{ "List View","Listenansicht" }, 220{ "List View","Listenansicht" },
222{ "Load/Save","Laden/Speichern" }, 221{ "Load/Save","Laden/Speichern" },
223{ "Load Template","Lade Vorlage" }, 222{ "Load Template","Lade Vorlage" },
224{ "Locale","Localisation" }, 223{ "Locale","Localisation" },
225{ "Local temp file:","Lokale temp. Datei:" }, 224{ "Local temp file:","Lokale temp. Datei:" },
226{ "Location: ","Ort: " }, 225{ "Location: ","Ort: " },
227{ "Location:","Ort:" }, 226{ "Location:","Ort:" },
228{ "Mail client","Mail Programm" }, 227{ "Mail client","Mail Programm" },
229{ "Mail Client","Mail Programm" }, 228{ "Mail Client","Mail Programm" },
230{ "March","März" }, 229{ "March","März" },
231{ "Mar","Mär" }, 230{ "Mar","Mär" },
232{ "May","Mai" }, 231{ "May","Mai" },
233{ "M. Bains line:","M. Bains Linie:" }, 232{ "M. Bains line:","M. Bains Linie:" },
234{ "Medium","Medium" }, 233{ "Medium","Medium" },
235{ "Method","Methode" }, 234{ "Method","Methode" },
236{ "minute(s)","Minute(n)" }, 235{ "minute(s)","Minute(n)" },
237{ "Monday","Montag" }, 236{ "Monday","Montag" },
238{ "Mon","Mo" }, 237{ "Mon","Mo" },
239{ "Monthly","Monatlich" }, 238{ "Monthly","Monatlich" },
240{ "Month not long enough","Monat ist nicht lang genug" }, 239{ "Month not long enough","Monat ist nicht lang genug" },
241{ "month(s)","Monat(e)" }, 240{ "month(s)","Monat(e)" },
242{ "Month view:","Monatsansicht:" }, 241{ "Month view:","Monatsansicht:" },
243{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" }, 242{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" },
244{ "Todo view uses category colors","To-Do Ansicht zeigt Kategorie Farben" }, 243{ "Todo view uses category colors","To-Do Ansicht zeigt Kategorie Farben" },
245{ "Move &Down","Nach unten verschieben" }, 244{ "Move &Down","Nach unten verschieben" },
246{ "Move &Up","Nach oben verschieben" }, 245{ "Move &Up","Nach oben verschieben" },
247{ "Name:","Name:" }, 246{ "Name:","Name:" },
248{ "Name","Name" }, 247{ "Name","Name" },
249{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin löschen möchten?" }, 248{ "\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" }, 249{ "%n Days","%n Tage" },
251{ "Never","Nie" }, 250{ "Never","Nie" },
252{ "New event...","Neuer Termin..." }, 251{ "New event...","Neuer Termin..." },
253{ "New event","Neuer Termin" }, 252{ "New event","Neuer Termin" },
254{ "New Event...","Neuer Termin..." }, 253{ "New Event...","Neuer Termin..." },
255{ "New Events/Todos should","Neue Termine/Todos sollten" }, 254{ "New Events/Todos should","Neue Termine/Todos sollten" },
256{ "&New","&Neu" }, 255{ "&New","&Neu" },
257{ "New","Neu", }, 256{ "New","Neu", },
258{ "New Sub-Todo...","Neues Sub-Todo..." }, 257{ "New Sub-Todo...","Neues Sub-Todo..." },
259{ "New Todo...","Neues Todo..." }, 258{ "New Todo...","Neues Todo..." },
260{ "Next Alarm: ","Nächster Alarm: ", }, 259{ "Next Alarm: ","Nächster Alarm: ", },
261{ "&Next Day","&Nächster Tag", }, 260{ "&Next Day","&Nächster Tag", },
262{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" }, 261{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" },
263{ "Next month","Nächster Monat" }, 262{ "Next month","Nächster Monat" },
264{ "&Next Week","&Nächste Woche" }, 263{ "&Next Week","&Nächste Woche" },
265{ "Next year","Nächstes Jahr" }, 264{ "Next year","Nächstes Jahr" },
266{ "Next Year","Nächstes Jahr" }, 265{ "Next Year","Nächstes Jahr" },
267{ "%n h","%n Std" }, 266{ "%n h","%n Std" },
268{ "No ending date","Kein End-Datum", }, 267{ "No ending date","Kein End-Datum", },
269{ "No event, nothing to do.","Kein Termin, nichts zu tun.", }, 268{ "No event, nothing to do.","Kein Termin, nichts zu tun.", },
270{ "No event selected.","Kein Termin selektiert" }, 269{ "No event selected.","Kein Termin selektiert" },
271{ "No","Nein" }, 270{ "No","Nein" },
272{ "No program set","Kein Programm ausgewählt", }, 271{ "No program set","Kein Programm ausgewählt", },
273{ "Normal","Normal" }, 272{ "Normal","Normal" },
274{ "[No selection]","Keine Selektion", }, 273{ "[No selection]","Keine Selektion", },
275{ "No sound set","Kein Sound ausgewählt", }, 274{ "No sound set","Kein Sound ausgewählt", },
276{ "no time ","keine Zeit ", }, 275{ "no time ","keine Zeit ", },
277{ "no time","keine Zeit", }, 276{ "no time","keine Zeit", },
278{ "No Time","Keine Zeit" }, 277{ "No Time","Keine Zeit" },
279{ "November","November" }, 278{ "November","November" },
280{ "Nov","Nov", }, 279{ "Nov","Nov", },
281{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" }, 280{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" },
282{ "occurrence(s)","Vorkommen" }, 281{ "occurrence(s)","Vorkommen" },
283{ "October","Oktober" }, 282{ "October","Oktober" },
284{ "Oct","Okt", }, 283{ "Oct","Okt", },
285{ "O-due!","Ü-fällig! " }, 284{ "O-due!","Ü-fällig! " },
286{ "&OK","&OK" }, 285{ "&OK","&OK" },
287{ "Ok+Show!","Ok+Anzeigen" }, 286{ "Ok+Show!","Ok+Anzeigen" },
288{ "Organizer: %1","Organisator %1" }, 287{ "Organizer: %1","Organisator %1" },
289{ "Organizer","Organisator" }, 288{ "Organizer","Organisator" },
290{ "Owner: ","Besitzer: " }, 289{ "Owner: ","Besitzer: " },
291{ "Owner:","Besitzer:" }, 290{ "Owner:","Besitzer:" },
292{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 291{ "<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" }, 292{ "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."}, 293{ "Please specify a valid due date.","Bitte gültiges Fälligkeitsdatum angeben."},
295{ "Please specify a valid end date,\nfor example '%1'.","Bitte gültiges Enddatum angeben,\nz.B.'%1'." }, 294{ "Please specify a valid end date,\nfor example '%1'.","Bitte gültiges Enddatum angeben,\nz.B.'%1'." },
296{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." }, 295{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." },
297{ "Please specify a valid start date,\nfor example '%1'.","Bitte gültiges Startdatum angeben,\nz.B. '%1'." }, 296{ "Please specify a valid start date,\nfor example '%1'.","Bitte gültiges Startdatum angeben,\nz.B. '%1'." },
298{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."}, 297{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."},
299{ "Please specify a valid start time,\nfor example '%1'.","Bitte gültige Startzeit angeben,\nz.B. '%1'." }, 298{ "Please specify a valid start time,\nfor example '%1'.","Bitte gültige Startzeit angeben,\nz.B. '%1'." },
300{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" }, 299{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" },
301{ "&Previous Day","Vorheriger Tag" }, 300{ "&Previous Day","Vorheriger Tag" },
302{ "Previous month","Vorheriger Monat" }, 301{ "Previous month","Vorheriger Monat" },
303{ "Previous Month","Vorheriger Monat" }, 302{ "Previous Month","Vorheriger Monat" },
304{ "&Previous Week","Vorherige Woche" }, 303{ "&Previous Week","Vorherige Woche" },
305{ "Previous year","Vorheriges Jahr" }, 304{ "Previous year","Vorheriges Jahr" },
306{ "Previous Year","Vorheriges Jahr" }, 305{ "Previous Year","Vorheriges Jahr" },
307{ "Printing","Drucken" }, 306{ "Printing","Drucken" },
308{ "Priority:","Priorität:" }, 307{ "Priority:","Priorität:" },
309{ "Private","Privat" }, 308{ "Private","Privat" },
310{ "Proceed","Weiter" }, 309{ "Proceed","Weiter" },
311{ "Public","Öffentlich" }, 310{ "Public","Öffentlich" },
312{ "Purge","Entferne" }, 311{ "Purge","Entferne" },
313{ "Purge Completed","Entferne erledigte Todos" }, 312{ "Purge Completed","Entferne erledigte Todos" },
314{ "Purge To-Dos","Todos bereinigen" }, 313{ "Purge Todos","Todos bereinigen" },
315{ "read-only","schreibgeschützt" }, 314{ "read-only","schreibgeschützt" },
316{ "Recur every","Wiederh. alle" }, 315{ "Recur every","Wiederh. alle" },
317{ "Recur in the month of","Wiederh. im Monat" }, 316{ "Recur in the month of","Wiederh. im Monat" },
318{ "Recur on the","Wiederh. am" }, 317{ "Recur on the","Wiederh. am" },
319{ "Recur on this day","Wiederh. am diesen Tag" }, 318{ "Recur on this day","Wiederh. am diesen Tag" },
320{ "Recurrence Range...","Wiederholungs Zeitraum..." }, 319{ "Recurrence Range...","Wiederholungs Zeitraum..." },
321{ "Recurrence Range","Wiederholungs Zeitraum" }, 320{ "Recurrence Range","Wiederholungs Zeitraum" },
322{ "Recurrence Rule","Wiederholungs Regel" }, 321{ "Recurrence Rule","Wiederholungs Regel" },
323{ "Recurrence","Wiederholung" }, 322{ "Recurrence","Wiederholung" },
324{ "Recurs","Wiederholung" }, 323{ "Recurs","Wiederholung" },
325{"&Reject","Abweisen"}, 324{"&Reject","Abweisen"},
326{ "Reminder:","Alarm:" }, 325{ "Reminder:","Alarm:" },
327{ "Rem.:","Alarm:" }, 326{ "Rem.:","Alarm:" },
328{ "Rem.","Alarm:" }, 327{ "Rem.","Alarm:" },
329{ "Remote file:","Remote Datei:"}, 328{ "Remote file:","Remote Datei:"},
330{ "Remote IP:","Remote (ferne) IP:" }, 329{ "Remote IP:","Remote (ferne) IP:" },
331{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " }, 330{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " },
332{ "Remote user:","Remote Benutzer"}, 331{ "Remote user:","Remote Benutzer"},
333{ "&Remove","Entfe&rnen" }, 332{ "&Remove","Entfe&rnen" },
334{ "Remove","Entfernen" }, 333{ "Remove","Entfernen" },
335{ "Request response","Bemerkung anfordern" }, 334{ "Request response","Bemerkung anfordern" },
336{ "Role:","Rolle:" }, 335{ "Role:","Rolle:" },
337{ "Role","Rolle" }, 336{ "Role","Rolle" },
338{ "Sat","Sa" }, 337{ "Sat","Sa" },
339{ "Saturday","Samstag" }, 338{ "Saturday","Samstag" },
340{ "Search for:","Suche nach:" }, 339{ "Search for:","Suche nach:" },
341{ "Search In","Suche in" }, 340{ "Search In","Suche in" },
342{ "Search...","Suche..." }, 341{ "Search...","Suche..." },
343{ "Search","Suche" }, 342{ "Search","Suche" },
344{ "Select Addresses","Wähle Adressen" }, 343{ "Select Addresses","Wähle Adressen" },
345{ "Select all","Selektiere Alle" }, 344{ "Select all","Selektiere Alle" },
346{ "Select a month","Wähle Monat" }, 345{ "Select a month","Wähle Monat" },
347{ "Select a week","Wähle Woche" }, 346{ "Select a week","Wähle Woche" },
348{ "Select a year","Wähle Jahr" }, 347{ "Select a year","Wähle Jahr" },
349{ "Send directly","Sende direkt" }, 348{ "Send directly","Sende direkt" },
350{ "&Send Messages","&Sende Nachrichten", }, 349{ "&Send Messages","&Sende Nachrichten", },
351{ "Sep","Sep" }, 350{ "Sep","Sep" },
352{ "September","September" }, 351{ "September","September" },
353{ "Shopping","Einkaufen" }, 352{ "Shopping","Einkaufen" },
354{ "Show Dates","Zeige Daten" }, 353{ "Show Dates","Zeige Daten" },
355{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." }, 354{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." },
356{ "Show Event...","Zeige Termin..." }, 355{ "Show Event...","Zeige Termin..." },
357{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." }, 356{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." },
358{ "Show Marcus Bains line","Zeige Marcus Bains Linie" }, 357{ "Show Marcus Bains line","Zeige Marcus Bains Linie" },
359{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." }, 358{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." },
360{ "Show time as:","Zeige Zeit als" }, 359{ "Show time as:","Zeige Zeit als" },
361{ "Show Todo...","Zeige To-Do" }, 360{ "Show Todo...","Zeige To-Do" },
362{ "Show vertical screen (Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" }, 361{ "Show vertical screen (Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" },
363{ "&Show","Zeige" }, 362{ "&Show","Zeige" },
364{ "Show...","Zeige..." }, 363{ "Show...","Zeige..." },
365{ "Show","Zeige" }, 364{ "Show","Zeige" },
366{ "Small","Klein" }, 365{ "Small","Klein" },
367{ "Sorry","Entschuldigung" }, 366{ "Sorry","Entschuldigung" },
368{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"}, 367{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"},
369{ "Start:","Start:" }, 368{ "Start:","Start:" },
370{ "Start Date","Start Datum" }, 369{ "Start Date","Start Datum" },
371{ "Start date: %1","Start Datum: %1" }, 370{ "Start date: %1","Start Datum: %1" },
372{ "Start Time","Start Zeit" }, 371{ "Start Time","Start Zeit" },
373{ "Status:","Status:" }, 372{ "Status:","Status:" },
374{ "Status","Status:" }, 373{ "Status","Status:" },
375{ "Summaries","Titel" }, 374{ "Summaries","Titel" },
376{ "Summary:","Titel:" }, 375{ "Summary:","Titel:" },
377{ "Summary","Titel" }, 376{ "Summary","Titel" },
378{ "Sunday","Sonntag" }, 377{ "Sunday","Sonntag" },
379{ "Sun","So" }, 378{ "Sun","So" },
380{ "Sync preferences:","Sync Einstellungen" }, 379{ "Sync preferences:","Sync Einstellungen" },
381{ "Sync Prefs","Sync Einstellungen" }, 380{ "Sync Prefs","Sync Einstellungen" },
382{ "Syncronize","Daten abgleich" }, 381{ "Syncronize","Daten abgleich" },
383{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" }, 382{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" },
384{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" }, 383{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" },
385{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" }, 384{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" },
386{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges To-Do" }, 385{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges To-Do" },
387{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" }, 386{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" },
388{ "Template...","Vorlage..." }, 387{ "Template...","Vorlage..." },
389{ "This day","Dieser Tag" }, 388{ "This day","Dieser Tag" },
390{ "This is an experimental feature. ","Dieses Feature ist experimentel" }, 389{ "This is an experimental feature. ","Dieses Feature ist experimentel" },
391{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." }, 390{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." },
392{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." }, 391{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." },
393{ "Thu","Do" }, 392{ "Thu","Do" },
394{ "Thursday","Donnerstag" }, 393{ "Thursday","Donnerstag" },
395{ "Time associated","Mit Zeit" }, 394{ "Time associated","Mit Zeit" },
396{ "Time bar:","Uhrzeit Zeile:" }, 395{ "Time bar:","Uhrzeit Zeile:" },
397{ "Time && Date","Zeit und Datum" }, 396{ "Time && Date","Zeit und Datum" },
398{ "Time Format","Zeit Format" }, 397{ "Time Format","Zeit Format" },
399{ "Time Format(nr):","Zeit Format(Neustart!)" }, 398{ "Time Format(nr):","Zeit Format(Neustart!)" },
400{ "Date Labels:","Datumsleiste:" }, 399{ "Date Labels:","Datumsleiste:" },
401{ "Time: ","Zeit: " }, 400{ "Time: ","Zeit: " },
402{ "Timezone:","Zeitzone:" }, 401{ "Timezone:","Zeitzone:" },
403{ "To: ","Bis: " }, 402{ "To: ","Bis: " },
404{ "To:","Bis:" }, 403{ "To:","Bis:" },
405{ "Today: ","Heute: " }, 404{ "Today: ","Heute: " },
406{ "Todo due today color:","Heute fällige To-Do's" }, 405{ "Todo due today color:","Heute fällige To-Do's" },
407{ "To-do items:","To-Do items:" }, 406{ "To-do items:","To-Do items:" },
408{ "Todo overdue color:","Überfällige To-Do's" }, 407{ "Todo overdue color:","Überfällige To-Do's" },
409{ "Todo","Todo" }, 408{ "Todo","Todo" },
410{ "To-do view shows completed Todos","To-do Ansicht zeigt erledigte To-dos" }, 409{ "To-do view shows completed Todos","To-do Ansicht zeigt erledigte To-dos" },
411{ "ToDoView:","Todo Ansicht:" }, 410{ "ToDoView:","Todo Ansicht:" },
412{ "Toggle Alarm","Wechsle Alarm" }, 411{ "Toggle Alarm","Wechsle Alarm" },
413{ "Toggle Allday","Umschalten Ganztag" }, 412{ "Toggle Allday","Umschalten Ganztag" },
414{ "Tomorrow: ","Morgen: " }, 413{ "Tomorrow: ","Morgen: " },
415{ "Tue","Di" }, 414{ "Tue","Di" },
416{ "Tuesday","Dienstag" }, 415{ "Tuesday","Dienstag" },
417{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" }, 416{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" },
418{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." }, 417{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." },
419{ "Unknown","Unbekannt" }, 418{ "Unknown","Unbekannt" },
420{ "Up","Hinauf" }, 419{ "Up","Hinauf" },
421{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" }, 420{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" },
422{ "User defined","Benutzerdefiniert" }, 421{ "User defined","Benutzerdefiniert" },
423{ "User long date:","Format langes Datum:" }, 422{ "User long date:","Format langes Datum:" },
424{ "User short date:","Forma kurzes Datum:" }, 423{ "User short date:","Forma kurzes Datum:" },
425{ "View","Ansicht" }, 424{ "View","Ansicht" },
426{ "View Fonts","Schriftarten Ansichten" }, 425{ "View Fonts","Schriftarten Ansichten" },
427{ "Views","Ansichten" }, 426{ "Views","Ansichten" },
428{ "Wed","Mi" }, 427{ "Wed","Mi" },
429{ "Wednesday","Mittwoch" }, 428{ "Wednesday","Mittwoch" },
430{ "Week %1","Woche %1" }, 429{ "Week %1","Woche %1" },
431{ "Weekly","Wöchentlich" }, 430{ "Weekly","Wöchentlich" },
432{ "Week starts on Sunday","Woche beginnt Sonntags" }, 431{ "Week starts on Sunday","Woche beginnt Sonntags" },
433{ "What's Next View:","What's Next Anz." }, 432{ "What's Next View:","What's Next Anz." },
434{ "What's next ?","Was kommt als nächstes?(What's Next)" }, 433{ "What's next ?","Was kommt als nächstes?(What's Next)" },
435{ "Working Hours","Tägliche Arbeitszeit" }, 434{ "Working Hours","Tägliche Arbeitszeit" },
436{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" }, 435{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" },
437{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" }, 436{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" },
438{ "Write back synced file","Syncronisierte Datei zurückschreiben" }, 437{ "Write back synced file","Syncronisierte Datei zurückschreiben" },
439{ "Yearly","Jährlich" }, 438{ "Yearly","Jährlich" },
440{ "year(s)","Jahr(e)" }, 439{ "year(s)","Jahr(e)" },
441{ "Yes","Ja" }, 440{ "Yes","Ja" },
442{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" }, 441{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" },
443{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." }, 442{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." },
444{ "week(s) on:","Woche(n) am: " }, 443{ "week(s) on:","Woche(n) am: " },
445{ "Full menu bar(nr)","Volle Menuleiste(bn)" }, 444{ "Full menu bar(nr)","Volle Menuleiste(bn)" },
446{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 445{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
447{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 446{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
448{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 447{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
449{ "Daylight start:","Sommerzeit Beginn:" }, 448{ "Daylight start:","Sommerzeit Beginn:" },
450{ "Daylight end:","Sommerzeit Ende:" }, 449{ "Daylight end:","Sommerzeit Ende:" },
451{ "Time Zone","Zeitzone" }, 450{ "Time Zone","Zeitzone" },
452{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" }, 451{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" },
453{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" }, 452{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" },
454{ "minutely","minütlich" }, 453{ "minutely","minütlich" },
455{ "hourly","stündlich" }, 454{ "hourly","stündlich" },
456{ "daily","täglich" }, 455{ "daily","täglich" },
457{ "weekly","wöchentlich" }, 456{ "weekly","wöchentlich" },
458{ "monthly","monatlich" }, 457{ "monthly","monatlich" },
459{ "day-monthly","tag-monatlich" }, 458{ "day-monthly","tag-monatlich" },
460{ "month-yearly","monat-jährlich" }, 459{ "month-yearly","monat-jährlich" },
461{ "day-yearly","tag-jährlich" }, 460{ "day-yearly","tag-jährlich" },
462{ "position-yearly","pos-jährlich" }, 461{ "position-yearly","pos-jährlich" },
463{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" }, 462{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" },
464{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" }, 463{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" },
465{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" }, 464{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" },
466{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" }, 465{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" },
467{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" }, 466{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" },
468{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." }, 467{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." },
469{ "Event list view uses full window","Listenansicht nutzt Vollbild" }, 468{ "Event list view uses full window","Listenansicht nutzt Vollbild" },
470{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" }, 469{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" },
471{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" }, 470{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" },
472{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" }, 471{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" },
473{ "ViewChange","Ansichtswechsel" }, 472{ "ViewChange","Ansichtswechsel" },
474{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" }, 473{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" },
475{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" }, 474{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" },
476{ "File","Datei" }, 475{ "File","Datei" },
477{ "Clone...","Dupliziere.." }, 476{ "Clone...","Dupliziere.." },
478{ "Move...","Bewege..." }, 477{ "Move...","Bewege..." },
479{ "Beam...","Sende via IR..." }, 478{ "Beam...","Sende via IR..." },
480{ "&Clone...","Dupliziere.." }, 479{ "&Clone...","Dupliziere.." },
481{ "&Move...","Bewege..." }, 480{ "&Move...","Bewege..." },
482{ "&Beam...","Sende via IR..." }, 481{ "&Beam...","Sende via IR..." },
483{ "Show Completed","Zeige erledigte Todos" }, 482{ "Show Completed","Zeige erledigte Todos" },
484{ "Show Quick Todo","Zeige Quick Todo" }, 483{ "Show Quick Todo","Zeige Quick Todo" },
485{ "Unparent Todo","Un-sub Todo" }, 484{ "Unparent Todo","Un-sub Todo" },
486{ "Save selected to file...","Speichere Selektierte..." }, 485{ "Save selected to file...","Speichere Selektierte..." },
487{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." }, 486{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." },
488{ "Set Categ. for selected...","Setze Kateg. für Selekt." }, 487{ "Set Categ. for selected...","Setze Kateg. für Selekt." },
489{ "Beam selected via IR","Sende Selekt. via IR..." }, 488{ "Beam selected via IR","Sende Selekt. via IR..." },
490{ "Search","Suchen" }, 489{ "Search","Suchen" },
491{ "Date Picker","Datum auswählen" }, 490{ "Date Picker","Datum auswählen" },
492{ "Day View","Tagesansicht" }, 491{ "Day View","Tagesansicht" },
493{ "Work Week","Arbeitswoche" }, 492{ "Work Week","Arbeitswoche" },
494{ "Week","Wochenansicht" }, 493{ "Week","Wochenansicht" },
495{ "Month","Monatsansicht" }, 494{ "Month","Monatsansicht" },
496{ "Todo View","Todo Liste" }, 495{ "Todo View","Todo Liste" },
497{ "Journal","Journal Ansicht" }, 496{ "Journal","Journal Ansicht" },
498{ "Next days","Nächste Tage" }, 497{ "Next days","Nächste Tage" },
499{ "Print agenda selection...","Drucke Agendaselektion..." }, 498{ "Print agenda selection...","Drucke Agendaselektion..." },
500{ "Toggle DateNavigator","Navigator umschalten" }, 499{ "Toggle DateNavigator","Navigator umschalten" },
501{ "Toggle FilterView","Filteransicht umschalten" }, 500{ "Toggle FilterView","Filteransicht umschalten" },
502{ "Prev. month","Vorheriger Monat" }, 501{ "Prev. month","Vorheriger Monat" },
503{ "Go backward","Gehe zurück" }, 502{ "Go backward","Gehe zurück" },
504{ "Go forward","Gehe weiter" }, 503{ "Go forward","Gehe weiter" },
505{ "Synchronize","Synchronisieren" }, 504{ "Synchronize","Synchronisieren" },
506{ "AgendaSize","Agendagröße" }, 505{ "AgendaSize","Agendagröße" },
507{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" }, 506{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" },
508{ "Import last file","Importiere letzte Datei" }, 507{ "Import last file","Importiere letzte Datei" },
509{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." }, 508{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." },
510{ "Load Calendar Backup","Lade Kalender Backup" }, 509{ "Load Calendar Backup","Lade Kalender Backup" },
511{ "Save Calendar Backup","Speichere Kalender Backup" }, 510{ "Save Calendar Backup","Speichere Kalender Backup" },
512{ "Export VCalendar","Exportiere VCalendar" }, 511{ "Export VCalendar","Exportiere VCalendar" },
513{ "Manage new categories...","Verwalte neue Kategorien..." }, 512{ "Manage new categories...","Verwalte neue Kategorien..." },
514{ "Beam complete calendar...","Sende kompletten Kalender via IR" }, 513{ "Beam complete calendar...","Sende kompletten Kalender via IR" },
515{ "Beam filtered calendar...","Sende gefilterten Kalender via IR" }, 514{ "Beam filtered calendar...","Sende gefilterten Kalender via IR" },
516{ "Remote via ssh","Über Netzwerk via ssh" }, 515{ "Remote via ssh","Über Netzwerk via ssh" },
517{ "With local file","Mit lokaler Datei" }, 516{ "With local file","Mit lokaler Datei" },
518{ "With last file","Mit letzter Datei" }, 517{ "With last file","Mit letzter Datei" },
519{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" }, 518{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" },
520{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" }, 519{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" },
521{ "Save filename","Speichern: Dateinamen wählen" }, 520{ "Save filename","Speichern: Dateinamen wählen" },
522{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" }, 521{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" },
523{ "KO/Pi: Warning!","KO/Pi: Warnung!" }, 522{ "KO/Pi: Warning!","KO/Pi: Warnung!" },
524{ "Overwrite!","Überschreibe!" }, 523{ "Overwrite!","Überschreibe!" },
525{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 524{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
526{ "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" }, 525{ "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" },
527{ "KO/Pi Confirmation","KO/Pi Bestätigung" }, 526{ "KO/Pi Confirmation","KO/Pi Bestätigung" },
528{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" }, 527{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" },
529{ "Deleting item %d ...","Lösche Eintrag %d ..." }, 528{ "Deleting item %d ...","Lösche Eintrag %d ..." },
530{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." }, 529{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." },
531{ "Size","Größe" }, 530{ "Size","Größe" },
532{ "Date","Datum" }, 531{ "Date","Datum" },
533{ "Mime Type","Datei Typ" }, 532{ "Mime Type","Datei Typ" },
534{ "All Files","Alle Dateien" }, 533{ "All Files","Alle Dateien" },
535{ "Files","Dateien" }, 534{ "Files","Dateien" },
536{ "Documents","DoKumente" }, 535{ "Documents","DoKumente" },
537{ "Select Categories","Selektiere Kategorien" }, 536{ "Select Categories","Selektiere Kategorien" },
538{ " &Deselect All "," Auswahl aufheben " }, 537{ " &Deselect All "," Auswahl aufheben " },
539{ "A&dd","Hinzu" }, 538{ "A&dd","Hinzu" },
540{ "&Modify","Ändern" }, 539{ "&Modify","Ändern" },
541{ "Edit Categories","Editiere Kategorien" }, 540{ "Edit Categories","Editiere Kategorien" },
542{ " &Edit Categories "," &Editiere Kategorien " }, 541{ " &Edit Categories "," &Editiere Kategorien " },
543{ "Beam Options","Beam Einstellungen" }, 542{ "Beam Options","Beam Einstellungen" },
544{ " With timezone "," Mit Zeitzone " }, 543{ " With timezone "," Mit Zeitzone " },
545{ " Local time ", " Lokale Zeit " }, 544{ " Local time ", " Lokale Zeit " },
546{ "Manage new Categories","Verwalte neue Kategorien" }, 545{ "Manage new Categories","Verwalte neue Kategorien" },
547{ "Add to category list","Füge zur Kategorieliste hinzu" }, 546{ "Add to category list","Füge zur Kategorieliste hinzu" },
548{ "Remove from Events/Todos","Entferne von Terminen/Todos" }, 547{ "Remove from Events/Todos","Entferne von Terminen/Todos" },
549{ "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 " }, 548{ "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 " },
550{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" }, 549{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" },
551{ "File format","Datei Format" }, 550{ "File format","Datei Format" },
552{ "Time format","Zeit Format" }, 551{ "Time format","Zeit Format" },
553{ "Delete all\ncompleted To-Dos?","Lösche alle\nerledigten To-Dos?" },
554{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." }, 552{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." },
555{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" }, 553{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" },
556{ "h","Std" }, 554{ "h","Std" },
557{ "min","Min" }, 555{ "min","Min" },
558{ "hou","Std" }, 556{ "hou","Std" },
559{ "day","Tag" }, 557{ "day","Tag" },
560{ "French","Französich" }, 558{ "French","Französich" },
561{ "Time","Zeit" }, 559{ "Time","Zeit" },
562{ "Event Viewer","Termin Ansicht" }, 560{ "Event Viewer","Termin Ansicht" },
563{ "Cancel Sync","Sync Abbrechen" }, 561{ "Cancel Sync","Sync Abbrechen" },
564{ "Remote","Fern" }, 562{ "Remote","Fern" },
565{ "Local","Lokal" }, 563{ "Local","Lokal" },
566{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" }, 564{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" },
567{ "Local: ","Lokal: " }, 565{ "Local: ","Lokal: " },
568{ "Remote: ","Fern: " }, 566{ "Remote: ","Fern: " },
569{ "Last modified: ","Zuletzt geändert: " }, 567{ "Last modified: ","Zuletzt geändert: " },
570{ "Location: ","Ort: " }, 568{ "Location: ","Ort: " },
571{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" }, 569{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" },
572{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" }, 570{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" },
573{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " }, 571{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " },
574{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" }, 572{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" },
575{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " }, 573{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " },
576{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" }, 574{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" },
577{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." }, 575{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." },
578{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" }, 576{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" },
579{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" }, 577{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" },
580{ "( %1 min before )","( %1 min vorher )" }, 578{ "( %1 min before )","( %1 min vorher )" },
581{ "<b>Alarm on: ","<b>Alarm am: " }, 579{ "<b>Alarm on: ","<b>Alarm am: " },
582{ "<b>Details: </b>","<b>Details: </b>" }, 580{ "<b>Details: </b>","<b>Details: </b>" },
583{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 581{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
584{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" }, 582{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" },
585{ "Organizer","Organisator" }, 583{ "Organizer","Organisator" },
586{ "Save","Speichern" }, 584{ "Save","Speichern" },
587{ "Exit (+save)","Beenden (+ speichern)" }, 585{ "Exit (+save)","Beenden (+ speichern)" },
588{ "Home","Zuhause" }, 586{ "Home","Zuhause" },
589{ "Office","Büro" }, 587{ "Office","Büro" },
590{ "Libary","Bücherei" }, 588{ "Libary","Bücherei" },
591{ "Doctor","Arzt" }, 589{ "Doctor","Arzt" },
592{ "Beach","Strand" }, 590{ "Beach","Strand" },
593{ "Conference room","Konferenzraum" }, 591{ "Conference room","Konferenzraum" },
594{ "Drive Home","Heimfahrt" }, 592{ "Drive Home","Heimfahrt" },
595{ "Watch TV","Tv gucken" }, 593{ "Watch TV","Tv gucken" },
596{ "Phone call","Telefonanruf" }, 594{ "Phone call","Telefonanruf" },
597{ "Pay bill","Rechnung bezahlen" }, 595{ "Pay bill","Rechnung bezahlen" },
598{ "Read book","Buch lesen" }, 596{ "Read book","Buch lesen" },
599{ "Watering plants","Pflanzen giessen" }, 597{ "Watering plants","Pflanzen giessen" },
600{"Appointment","Verabredung" }, 598{"Appointment","Verabredung" },
601{"Birthday","Geburtstag" }, 599{"Birthday","Geburtstag" },
602{"Business","Geschäft" }, 600{"Business","Geschäft" },
603{"Business Travel","Geschäftsreise" }, 601{"Business Travel","Geschäftsreise" },
604{"Cinema","Kino" }, 602{"Cinema","Kino" },
605{"Customer","Kunde" }, 603{"Customer","Kunde" },
606{"Break","Pause" }, 604{"Break","Pause" },
607{"Breakfast","Frühstück" }, 605{"Breakfast","Frühstück" },
608{"Competition","Wettkampf" }, 606{"Competition","Wettkampf" },
609{"Dinner","Abendessen" }, 607{"Dinner","Abendessen" },
610{"Education","Erziehung" }, 608{"Education","Erziehung" },
611{"Family","Familie" }, 609{"Family","Familie" },
612{"Favorites","Favoriten" }, 610{"Favorites","Favoriten" },
613{"Festival","Festival" }, 611{"Festival","Festival" },
614{"Fishing","Angeln" }, 612{"Fishing","Angeln" },
615{"Flight","Flug" }, 613{"Flight","Flug" },
616{"Gifts","Geschenk" }, 614{"Gifts","Geschenk" },
617{"Holiday","Feiertag" }, 615{"Holiday","Feiertag" },
618{"Holiday Cards","Ansichtskarten" }, 616{"Holiday Cards","Ansichtskarten" },
619{"Hot Contacts","Heisse Kontakte" }, 617{"Hot Contacts","Heisse Kontakte" },
620{"Hiking","Wandern" }, 618{"Hiking","Wandern" },
621{"Hunting","Jagen" }, 619{"Hunting","Jagen" },
622{"Key Customer","Wichtiger Kunde" }, 620{"Key Customer","Wichtiger Kunde" },
623{"Kids","Kinder" }, 621{"Kids","Kinder" },
624{"Lunch","Mittagessen" }, 622{"Lunch","Mittagessen" },
625{"Meeting","Treffen" }, 623{"Meeting","Treffen" },
626{"Miscellaneous","Verschiedenes" }, 624{"Miscellaneous","Verschiedenes" },
627{"Partner","Partner" }, 625{"Partner","Partner" },
628{"Party","Partie" }, 626{"Party","Partie" },
629{"Personal","Privat" }, 627{"Personal","Privat" },
630{"Personal Travel","Privatreise"}, 628{"Personal Travel","Privatreise"},
631{"PHB","PHB" }, 629{"PHB","PHB" },
632{"Phone Calls","Telefonanruf" }, 630{"Phone Calls","Telefonanruf" },
633{"Projects","Projekt" }, 631{"Projects","Projekt" },
634{"Recurring","Wiederholend" }, 632{"Recurring","Wiederholend" },
635{"School","Schule" }, 633{"School","Schule" },
636{"Shopping","Einkaufen" }, 634{"Shopping","Einkaufen" },
637{"Speach","Rede" }, 635{"Speach","Rede" },
638{"Special Occasion","Spez.Gelegenheit" }, 636{"Special Occasion","Spez.Gelegenheit" },
639{"Sports","Sport" }, 637{"Sports","Sport" },
640{"Talk","Vortrag" }, 638{"Talk","Vortrag" },
641{"Travel","Reise" }, 639{"Travel","Reise" },
642{"TV","TV" }, 640{"TV","TV" },
643{"Germany","Deutschland" }, 641{"Germany","Deutschland" },
644{"Sweden","Schweden" }, 642{"Sweden","Schweden" },
645{"Forest","Wald" }, 643{"Forest","Wald" },
646{ "Desert","Wüste" }, 644{ "Desert","Wüste" },
647{ "Kitchen","Küche" }, 645{ "Kitchen","Küche" },
648{ "Lake","See" }, 646{ "Lake","See" },
649{"University","Universität"}, 647{"University","Universität"},
650{"Vacation","Urlaub" }, 648{"Vacation","Urlaub" },
651{"VIP","VIP" }, 649{"VIP","VIP" },
652{ "Import Sharp Calendar","Importiere Sharp Kalender" }, 650{ "Import Sharp Calendar","Importiere Sharp Kalender" },
653{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" }, 651{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" },
654{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" }, 652{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" },
655{ "Cancelled","Gecancelt" }, 653{ "Cancelled","Gecancelt" },
656{ "Multiple sync","Mehrfach Sync" }, 654{ "Multiple sync","Mehrfach Sync" },
657{ "Local file","Lokale Datei" }, 655{ "Local file","Lokale Datei" },
658{ "Last file","Letzte Datei" }, 656{ "Last file","Letzte Datei" },
659{ "Keys + Colors...","Tasten + Farben..." }, 657{ "Keys + Colors...","Tasten + Farben..." },
660{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" }, 658{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" },
661{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" }, 659{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" },
662{ "Choose...","Wähle..." }, 660{ "Choose...","Wähle..." },
663{ "Use colors for application:","Setze Farben für Programm:" }, 661{ "Use colors for application:","Setze Farben für Programm:" },
664{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" }, 662{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" },
665{ "Frames, labels, etc.:","Rahmen, Label, etc.:" }, 663{ "Frames, labels, etc.:","Rahmen, Label, etc.:" },
666{ "Show parent To-Do's","Zeige Ober-Todos" }, 664{ "Show parent To-Do's","Zeige Ober-Todos" },
667{ "Show location","Zeige Orte" }, 665{ "Show location","Zeige Orte" },
668{ "Show events that recur ","Zeige Termine, die sich wiederholen:" }, 666{ "Show events that recur ","Zeige Termine, die sich wiederholen:" },
669{ "Show in every cell ","Zeige in jeder Zelle " }, 667{ "Show in every cell ","Zeige in jeder Zelle " },
670{ "short month","kurzen Monat" }, 668{ "short month","kurzen Monat" },
671{ "icons","Icons" }, 669{ "icons","Icons" },
672{ "Show Sat/Sun together","Zeige Sam/Son zusammen" }, 670{ "Show Sat/Sun together","Zeige Sam/Son zusammen" },
673{ "Categorie colors are applied to text","Kategorie Farben färben Text" }, 671{ "Categorie colors are applied to text","Kategorie Farben färben Text" },
674{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" }, 672{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" },
675{ "Day color odd months","Tagesfarbe ungerade Monate" }, 673{ "Day color odd months","Tagesfarbe ungerade Monate" },
676{ "Day color even months","Tagesfarbe gerade Monate" }, 674{ "Day color even months","Tagesfarbe gerade Monate" },
677{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" }, 675{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" },
678{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" }, 676{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" },
679{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" }, 677{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" },
680{ "Colors are applied to text","Farben werden auf Text angewendet" }, 678{ "Colors are applied to text","Farben werden auf Text angewendet" },
681{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" }, 679{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" },
682{ "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" }, 680{ "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" },
683{ "Play beeps count:","Anzahl der Alarmpiepse: " }, 681{ "Play beeps count:","Anzahl der Alarmpiepse: " },
684{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " }, 682{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " },
685{ "Default suspend time in min:","Standard Supendierungs Zeit: " }, 683{ "Default suspend time in min:","Standard Supendierungs Zeit: " },
686{ "Auto suspend count:","Anzahl der auto Suspendierungen" }, 684{ "Auto suspend count:","Anzahl der auto Suspendierungen" },
687{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" }, 685{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" },
688{ "New profile","Neues Profil" }, 686{ "New profile","Neues Profil" },
689{ "Clone profile","Klone Profil" }, 687{ "Clone profile","Klone Profil" },
690{ "Delete profile","Lösche Profil" }, 688{ "Delete profile","Lösche Profil" },
691{ "Profile:","Profil:" }, 689{ "Profile:","Profil:" },
692{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" }, 690{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" },
693{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 691{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
694{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 692{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
695{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 693{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
696{ "Write back file","Schreibe Datei zurück" }, 694{ "Write back file","Schreibe Datei zurück" },
697{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 695{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
698{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 696{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
699{ "Local device name:","Name dieses Gerätes:" }, 697{ "Local device name:","Name dieses Gerätes:" },
700{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 698{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
701{ "Sync preferences","Synchronisations Einstellungen" }, 699{ "Sync preferences","Synchronisations Einstellungen" },
702{ "Profile kind","Profil Art" }, 700{ "Profile kind","Profil Art" },
703{ "Local file","Lokale Datei" }, 701{ "Local file","Lokale Datei" },
704{ "Local file:","Lokale Datei:" }, 702{ "Local file:","Lokale Datei:" },
705{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 703{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
706{ "Fill in default values for:","Setze Beispiel Werte ein für:" }, 704{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
707{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" }, 705{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
708{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"}, 706{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"},
709{ "Device","Gerät:" }, 707{ "Device","Gerät:" },
710{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" }, 708{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" },
711{ "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" }, 709{ "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" },
712{ "Synchronization successful","Synchronisation erfolgreich" }, 710{ "Synchronization successful","Synchronisation erfolgreich" },
713{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." }, 711{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." },
714{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" }, 712{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" },
715{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" }, 713{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" },
716{ "Enter password","Passwort eingeben" }, 714{ "Enter password","Passwort eingeben" },
717{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" }, 715{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" },
718{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." }, 716{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." },
719{ "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" }, 717{ "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" },
720{ "Writing back file result: ","Resultat des Dateizurückschreibens: " }, 718{ "Writing back file result: ","Resultat des Dateizurückschreibens: " },
721{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" }, 719{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" },
722{ "Edit Calendar Filters","Editiere Kalendar Filter" }, 720{ "Edit Calendar Filters","Editiere Kalendar Filter" },
723{ "Enter filter name:","Neuer Filter Name:" }, 721{ "Enter filter name:","Neuer Filter Name:" },
724{ "Add Filter","Filter hinzufügen" }, 722{ "Add Filter","Filter hinzufügen" },
725{ "Question","Frage" }, 723{ "Question","Frage" },
726{ "Filter position: ","Filter Position: " }, 724{ "Filter position: ","Filter Position: " },
727{ "Month View","Monatsansicht" }, 725{ "Month View","Monatsansicht" },
728{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" }, 726{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" },
729{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 727{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
730{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, 728{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
731{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" }, 729{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" },
732{ "Access: ","Zugriff: " }, 730{ "Access: ","Zugriff: " },
733{ "Needs Action","Aktion notwendig" }, 731{ "Needs Action","Aktion notwendig" },
734{ "Accepted","Akzeptiert" }, 732{ "Accepted","Akzeptiert" },
735{ "Declined","Abgelehnt" }, 733{ "Declined","Abgelehnt" },
736{ "Tentative","Vorläufig" }, 734{ "Tentative","Vorläufig" },
737{ "Delegated","Beauftragt" }, 735{ "Delegated","Beauftragt" },
738{ "Completed","Vollständig" }, 736{ "Completed","Vollständig" },
739{ "In Process","In Bearbeitung" }, 737{ "In Process","In Bearbeitung" },
740{ "Participant","Teilnehmer" }, 738{ "Participant","Teilnehmer" },
741{ "Optional Participant","Möglicher Teilnehmer" }, 739{ "Optional Participant","Möglicher Teilnehmer" },
742{ "Observer","Beobachter" }, 740{ "Observer","Beobachter" },
743{ "Chair","Vorsitzender" }, 741{ "Chair","Vorsitzender" },
744{ "Not supported \non desktop!\n","" }, 742{ "Not supported \non desktop!\n","" },
745{ "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 vertikale Auswahl zum Drucken zu bestimmen,\nbitte einen vertikalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen.\n(Es wird danach direkt der Termin Dialog angezeigt\n - dort bitte auf Abbrechen klicken) " }, 743{ "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 vertikale Auswahl zum Drucken zu bestimmen,\nbitte einen vertikalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen.\n(Es wird danach direkt der Termin Dialog angezeigt\n - dort bitte auf Abbrechen klicken) " },
746{ "Date range: ","Datums Zeitspanne: " }, 744{ "Date range: ","Datums Zeitspanne: " },
747{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " }, 745{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " },
748{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." }, 746{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." },
749{ "Add / remove events","Add./entferne Termine" }, 747{ "Add / remove events","Add./entferne Termine" },
750{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, 748{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." },
751{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, 749{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." },
752{ "\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" }, 750{ "\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" },
753{ "Overwrite","Überschreiben" }, 751{ "Overwrite","Überschreiben" },
754{ "Sync+save","Syncen+speichern" }, 752{ "Sync+save","Syncen+speichern" },
755{ "Default","Standard" }, 753{ "Default","Standard" },
756{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, 754{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " },
757{ " %d items?"," %d Einträge?" }, 755{ " %d items?"," %d Einträge?" },
758{ "\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?" }, 756{ "\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?" },
759{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, 757{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" },
760{ "Current","Aktuelle" }, 758{ "Current","Aktuelle" },
761{ "\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" }, 759{ "\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" },
762{ "All","Alle" }, 760{ "All","Alle" },
763{ "Data Loss Warning","Datenverlust Warnung" }, 761{ "Data Loss Warning","Datenverlust Warnung" },
764{ "Proceed","Weitermachen" }, 762{ "Proceed","Weitermachen" },
765{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, 763{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" },
766{ "Filter disabled ","Filter abgeschaltet" }, 764{ "Filter disabled ","Filter abgeschaltet" },
767{ "Filter selected: ","Gewählter Filter: " }, 765{ "Filter selected: ","Gewählter Filter: " },
768{ "Toggle Cancel","Gecancelt ändern" }, 766{ "Toggle Cancel","Gecancelt ändern" },
769{ "&Toggle Cancel","Gecancel&t ändern" }, 767{ "&Toggle Cancel","Gecancel&t ändern" },
770{ "Configure Toolbar","Konfiguriere Toolbar" }, 768{ "Configure Toolbar","Konfiguriere Toolbar" },
771{ "Stretched TB","Gedehnte TB" }, 769{ "Stretched TB","Gedehnte TB" },
772{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, 770{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" },
773{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, 771{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" },
774{ "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" }, 772{ "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" },
775{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, 773{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" },
776{ "Imported file successfully","Datei erfolgreich importiert" }, 774{ "Imported file successfully","Datei erfolgreich importiert" },
777{ "Error importing file","Fehler beim Importieren der Datei" }, 775{ "Error importing file","Fehler beim Importieren der Datei" },
778{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, 776{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" },
779{ "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" }, 777{ "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" },
780{ "Overwrite!","Überschreiben!" }, 778{ "Overwrite!","Überschreiben!" },
781{ "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" }, 779{ "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" },
782{ "Load backup filename","Lade Backup Dateiname" }, 780{ "Load backup filename","Lade Backup Dateiname" },
783{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, 781{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" },
784{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, 782{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" },
785{ "Save backup filename","Speichere Backup Dateiname" }, 783{ "Save backup filename","Speichere Backup Dateiname" },
786{ "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" }, 784{ "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" },
787{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 785{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
788{ "Details of attendee","Teilnehmerdetails" }, 786{ "Details of attendee","Teilnehmerdetails" },
789{ "Work phone:\n","Telefon Arbeit:\n" }, 787{ "Work phone:\n","Telefon Arbeit:\n" },
790{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, 788{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" },
791{ "Home phone:\n","Telefon privat:\n" }, 789{ "Home phone:\n","Telefon privat:\n" },
792{ "Mobile home phone:\n","Mobiltelefon privat:\n" }, 790{ "Mobile home phone:\n","Mobiltelefon privat:\n" },
793{ "Email:\n","Email:\n" }, 791{ "Email:\n","Email:\n" },
794{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, 792{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" },
795{ "Audio Al.: ","Audio Al.: " }, 793{ "Audio Al.: ","Audio Al.: " },
796{ "Proc.Al.: ","Proz.Al.: " }, 794{ "Proc.Al.: ","Proz.Al.: " },
797{ "No sound set","Kein Sound definiert" }, 795{ "No sound set","Kein Sound definiert" },
798{ "*.wav|Wav Files","*.wav|Wav Dateien" }, 796{ "*.wav|Wav Files","*.wav|Wav Dateien" },
799{ "No program set","Kein Programm definiert" }, 797{ "No program set","Kein Programm definiert" },
800{ "Running '%1'","Ausführen '%1'" }, 798{ "Running '%1'","Ausführen '%1'" },
801{ "Playing '%1'","Abspielen '%1'" }, 799{ "Playing '%1'","Abspielen '%1'" },
802{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, 800{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" },
803{ "Load!","Laden!" }, 801{ "Load!","Laden!" },
804{ "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" }, 802{ "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" },
805{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, 803{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" },
806{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, 804{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" },
807{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 805{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
808{ "Features + hints...","Eigenschaften + Tipps..." }, 806{ "Features + hints...","Eigenschaften + Tipps..." },
809{ "User translation...","Benutzer Übersetzung..." }, 807{ "User translation...","Benutzer Übersetzung..." },
810{ "Sync HowTo...","Synchronisation HowTo..." }, 808{ "Sync HowTo...","Synchronisation HowTo..." },
811{ "Print calendar...","Drucke Kalender..." }, 809{ "Print calendar...","Drucke Kalender..." },
812{ "Anniversary","Jahrestag" }, 810{ "Anniversary","Jahrestag" },
813{ "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" }, 811{ "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" },
814{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, 812{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" },
815{ "Next recurrence is on: ","Nächste Wiederholung ist am:" }, 813{ "Next recurrence is on: ","Nächste Wiederholung ist am:" },
816{ "<b>Alarm on: </b>","<b>Alarm am: </b>" }, 814{ "<b>Alarm on: </b>","<b>Alarm am: </b>" },
817{ "<b>Access: </b>","<b>Zugriff: </b>" }, 815{ "<b>Access: </b>","<b>Zugriff: </b>" },
818{ "(%1 min before)","(%1 min vorher)" }, 816{ "(%1 min before)","(%1 min vorher)" },
819{ "<b>Categories: </b>","<b>Kategorien: </b>" }, 817{ "<b>Categories: </b>","<b>Kategorien: </b>" },
820{ "Save Journal/Description...","Speichere Journal/Details..." }, 818{ "Save Journal/Description...","Speichere Journal/Details..." },
821{ "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." }, 819{ "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." },
822{ "Continue","Weitermachen" }, 820{ "Continue","Weitermachen" },
823{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, 821{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" },
824{ "Attendee:","Teilnehmer:" }, 822{ "Attendee:","Teilnehmer:" },
825{ "Click OK to search ->","Klicke zum Suchen auf OK ->" }, 823{ "Click OK to search ->","Klicke zum Suchen auf OK ->" },
826{ "On day ","Am Tag " }, 824{ "On day ","Am Tag " },
827{ "%1 of ","%1 des Monats" }, 825{ "%1 of ","%1 des Monats" },
828{ "%1 of the year","%1 des Jahres" }, 826{ "%1 of the year","%1 des Jahres" },
829{ "Anonymous","Anonymo" }, 827{ "Anonymous","Anonymo" },
830{ "nobody@nowhere","niemand@nirgendwo" }, 828{ "nobody@nowhere","niemand@nirgendwo" },
831{ "calendar.html","calendar.html" }, 829{ "calendar.html","calendar.html" },
832{ " Local Time"," Locale Zeit" }, 830{ " Local Time"," Locale Zeit" },
833{ "Unknown Name","Unbekannter Name" }, 831{ "Unknown Name","Unbekannter Name" },
834{ "unknown@nowhere","unbekannt@nirgendwo" }, 832{ "unknown@nowhere","unbekannt@nirgendwo" },
835{ "Beam via IR!","Beam via IR!" }, 833{ "Beam via IR!","Beam via IR!" },
836{ "Next Month","Nächster Monat" }, 834{ "Next Month","Nächster Monat" },
837{ "Prio","Prio" }, 835{ "Prio","Prio" },
838{ "Reparent Todo","Mache Sub-Todo" }, 836{ "Reparent Todo","Mache Sub-Todo" },
839{ "tomorrow","morgen" }, 837{ "tomorrow","morgen" },
840{ "today","heute" }, 838{ "today","heute" },
841{ "yesterday","gestern" }, 839{ "yesterday","gestern" },
842{ "Ok","Ok" }, 840{ "Ok","Ok" },
843{ "Ok+Agenda","Ok+Agenda" }, 841{ "Ok+Agenda","Ok+Agenda" },
844{ "Email","Email" }, 842{ "Email","Email" },
845{ "RSVP","RSVP" }, 843{ "RSVP","RSVP" },
846{ "Email:","Email:" }, 844{ "Email:","Email:" },
847{ "Appointment Time ","Termin Zeit " }, 845{ "Appointment Time ","Termin Zeit " },
848{ "2","2" }, 846{ "2","2" },
849{ "3","3" }, 847{ "3","3" },
850{ "4","4" }, 848{ "4","4" },
851{ " 0 %"," 0 %" }, 849{ " 0 %"," 0 %" },
852{ " 20 %"," 20 %" }, 850{ " 20 %"," 20 %" },
853{ " 40 %"," 40 %" }, 851{ " 40 %"," 40 %" },
854{ " 60 %"," 60 %" }, 852{ " 60 %"," 60 %" },
855{ " 80 %"," 80 %" }, 853{ " 80 %"," 80 %" },
856{ "100 %","100 %" }, 854{ "100 %","100 %" },
857{ "Filter","Filter" }, 855{ "Filter","Filter" },
858{ "Configure","Konfiguriere" }, 856{ "Configure","Konfiguriere" },
859{ "What's Next","What's Next" }, 857{ "What's Next","What's Next" },
860{ "Complete calendar...","Kompletten Kalender..." }, 858{ "Complete calendar...","Kompletten Kalender..." },
861{ "Filtered calendar...","Gefilterten Kalender..." }, 859{ "Filtered calendar...","Gefilterten Kalender..." },
862{ "Export to phone","Exportiere zum Handy" }, 860{ "Export to phone","Exportiere zum Handy" },
863{ "Beam receive enabled","Beam Empfang an" }, 861{ "Beam receive enabled","Beam Empfang an" },
864{ "What's new?","Was ist neu?" }, 862{ "What's new?","Was ist neu?" },
865{ "FAQ...","FAQ..." }, 863{ "FAQ...","FAQ..." },
866{ "Licence...","Licence..." }, 864{ "Licence...","Licence..." },
867{ "What's This?","What's This?" }, 865{ "What's This?","What's This?" },
868{ "&Edit...","&Editiere..." }, 866{ "&Edit...","&Editiere..." },
869{ "Oktober","Oktober" }, 867{ "Oktober","Oktober" },
870{ "Title","Titel" }, 868{ "Title","Titel" },
871{ "%1 %","%1 %" }, 869{ "%1 %","%1 %" },
872{ "Enable Pi-Sync","Schalte Pi-Sync an" }, 870{ "Enable Pi-Sync","Schalte Pi-Sync an" },
873{ "Import!","Importiere!" }, 871{ "Import!","Importiere!" },
874{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" }, 872{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" },
875{ "Export to phone options","Export ans Handy Optionen" }, 873{ "Export to phone options","Export ans Handy Optionen" },
876{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 874{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." },
877{ "I/O device: ","I/O device: " }, 875{ "I/O device: ","I/O device: " },
878{ "Connection: ","Connection: " }, 876{ "Connection: ","Connection: " },
879{ "Model(opt.): ","Model(opt.): " }, 877{ "Model(opt.): ","Model(opt.): " },
880{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" }, 878{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" },
881{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, 879{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " },
882{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" }, 880{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" },
883{ "Export to mobile phone!","Exportiere auf das Handy!" }, 881{ "Export to mobile phone!","Exportiere auf das Handy!" },
884{ "Export complete calendar","Exportiere kompletten Kalender" }, 882{ "Export complete calendar","Exportiere kompletten Kalender" },
885{ "Writing to phone...","Sende Daten ans Handy..." }, 883{ "Writing to phone...","Sende Daten ans Handy..." },
886{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 884{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
887{ "Retry","Nochmal versuchen" }, 885{ "Retry","Nochmal versuchen" },
888{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 886{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
889{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 887{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" },
890{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 888{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
891{ "Export filtered calendar","Exportiere gefilterten Kalender" }, 889{ "Export filtered calendar","Exportiere gefilterten Kalender" },
892{ "Preferences","Vorlieben" }, 890{ "Preferences","Vorlieben" },
893{ "Global","Global" }, 891{ "Global","Global" },
894{ "Phone","Phone" }, 892{ "Phone","Phone" },
895{ "SMS","SMS" }, 893{ "SMS","SMS" },
896{ "Fax","Fax" }, 894{ "Fax","Fax" },
897{ "Pager","Pager" }, 895{ "Pager","Pager" },
898{ "SIP","SIP" }, 896{ "SIP","SIP" },
899{ "Italian","Italienisch" }, 897{ "Italian","Italienisch" },
900{ "24:00","24:00" }, 898{ "24:00","24:00" },
901{ "12:00am","12:00am" }, 899{ "12:00am","12:00am" },
902{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 900{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
903{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 901{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
904{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 902{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
905{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 903{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
906{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 904{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
907{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 905{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
908{ "Used Mail Client","Benutzter Mail Client" }, 906{ "Used Mail Client","Benutzter Mail Client" },
909{ "Channel:","Channel:" }, 907{ "Channel:","Channel:" },
910{ "Message:","Message:" }, 908{ "Message:","Message:" },
911{ "Parameters:","Parameter:" }, 909{ "Parameters:","Parameter:" },
912{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 910{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
913{ "extra Message:","extra Message:" }, 911{ "extra Message:","extra Message:" },
914{ "extra Parameters:","extra Parameter:" }, 912{ "extra Parameters:","extra Parameter:" },
915{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 913{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
916{ "External Apps.","Externe Appl." }, 914{ "External Apps.","Externe Appl." },
917{ "24 hours","24 Std." }, 915{ "24 hours","24 Std." },
918{ "3 hours","3 Std." }, 916{ "3 hours","3 Std." },
919{ "1 hour","1 Std." }, 917{ "1 hour","1 Std." },
920{ "15 minutes","15 Min." }, 918{ "15 minutes","15 Min." },
921{ "5 minutes","5 Min." }, 919{ "5 minutes","5 Min." },
922{ "1 minute","1 Min." }, 920{ "1 minute","1 Min." },
923{ "23","23" }, 921{ "23","23" },
924{ "Mon 15","Mon 15" }, 922{ "Mon 15","Mon 15" },
925{ "Configure KO","Konfiguriere KO" }, 923{ "Configure KO","Konfiguriere KO" },
926{ "Event text","Termin Text" }, 924{ "Event text","Termin Text" },
927{ "ToDo","Todo" }, 925{ "ToDo","Todo" },
928{ "Today","Heute" }, 926{ "Today","Heute" },
929{ "What's Next View","What's Next Ansicht" }, 927{ "What's Next View","What's Next Ansicht" },
930{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, 928{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" },
931{ "Alarm","Alarm" }, 929{ "Alarm","Alarm" },
932{ "Used %1 Client","Benutzter %1 Client" }, 930{ "Used %1 Client","Benutzter %1 Client" },
933{ "No email client installed","Kein Email Klient installiert" }, 931{ "No email client installed","Kein Email Klient installiert" },
934{ "Userdefined email client","Benutzerdef. Email Klient" }, 932{ "Userdefined email client","Benutzerdef. Email Klient" },
935{ "OM/Pi email client","OM/Pi Email Klient" }, 933{ "OM/Pi email client","OM/Pi Email Klient" },
936{ "Include in multiple ","Beziehe in multiple " }, 934{ "Include in multiple ","Beziehe in multiple " },
937{ "calendar ","Kalender " }, 935{ "calendar ","Kalender " },
938{ "addressbook ","Adressbuch " }, 936{ "addressbook ","Adressbuch " },
939{ "pwmanager","PWmanager" }, 937{ "pwmanager","PWmanager" },
940{ " sync"," Sync ein" }, 938{ " sync"," Sync ein" },
941{ "Write back synced data","Schreibe gesyncte Daten zurück" }, 939{ "Write back synced data","Schreibe gesyncte Daten zurück" },
942{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" }, 940{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" },
943{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" }, 941{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" },
944{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, 942{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " },
945{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 943{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
946{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, 944{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" },
947{ "Help...","Hilfe..." }, 945{ "Help...","Hilfe..." },
948{ "Local file Cal:","Lokale Datei Kal:" }, 946{ "Local file Cal:","Lokale Datei Kal:" },
949{ "Local file ABook:","Lokale Datei ABuch:" }, 947{ "Local file ABook:","Lokale Datei ABuch:" },
950{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 948{ "Local file PWMgr:","Lokale Datei PWMgr:" },
951{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 949{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
952{ "Calendar:","Kalender:" }, 950{ "Calendar:","Kalender:" },
953{ "AddressBook:","AdressBuch:" }, 951{ "AddressBook:","AdressBuch:" },
954{ "PWManager:","PWManager:" }, 952{ "PWManager:","PWManager:" },
955{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 953{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
956{ "ssh/scp","ssh/scp" }, 954{ "ssh/scp","ssh/scp" },
957{ "ftp","ftp" }, 955{ "ftp","ftp" },
958{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, 956{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" },
959{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, 957{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" },
960{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, 958{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" },
961{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, 959{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" },
962{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, 960{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" },
963{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, 961{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" },
964{ "KDE-Pim sync config","KDE-Pim sync Konfig" }, 962{ "KDE-Pim sync config","KDE-Pim sync Konfig" },
965{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" }, 963{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" },
966{ "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" }, 964{ "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" },
967{ "Port number (Default: %1)","Port Nummer (Default: %1)" }, 965{ "Port number (Default: %1)","Port Nummer (Default: %1)" },
968{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, 966{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" },
969{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, 967{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" },
970{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, 968{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" },
971{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" }, 969{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" },
972{ "Disable Pi-Sync","Schalte Pi-Sync aus" }, 970{ "Disable Pi-Sync","Schalte Pi-Sync aus" },
973{ "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!" }, 971{ "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!" },
974{ "KDE-Pim Sync","KDE-Pim Sync" }, 972{ "KDE-Pim Sync","KDE-Pim Sync" },
975{ "Multiple profiles","Multi-Sync Profile" }, 973{ "Multiple profiles","Multi-Sync Profile" },
976{ "Device: ","Gerät: " }, 974{ "Device: ","Gerät: " },
977{ "Multiple sync started.","Multi-Sync gestartet." }, 975{ "Multiple sync started.","Multi-Sync gestartet." },
978{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" }, 976{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" },
979{ "Turn filter on","Schalte Filter an" }, 977{ "Turn filter on","Schalte Filter an" },
980{ "Turn filter off","Schalte Filter aus" }, 978{ "Turn filter off","Schalte Filter aus" },
981{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" }, 979{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" },
982{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" }, 980{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" },
983{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" }, 981{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" },
984{ "<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" }, 982{ "<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" },
985{ "<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" }, 983{ "<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" },
986{ "<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" }, 984{ "<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" },
987{ "<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" }, 985{ "<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" },
988{ "<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" }, 986{ "<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" },
989{ "<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" }, 987{ "<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" },
990{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" }, 988{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" },
991{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" }, 989{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" },
992{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" }, 990{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" },
993{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" }, 991{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" },
994{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" }, 992{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" },
995{ "<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" }, 993{ "<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" },
996{ "<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" }, 994{ "<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" },
997{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" }, 995{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" },
998{ "<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" }, 996{ "<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" },
999{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" }, 997{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" },
1000{ "<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" }, 998{ "<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" },
1001{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" }, 999{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" },
1002{ "<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" }, 1000{ "<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" },
1003{ "<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" }, 1001{ "<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" },
1004{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" }, 1002{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" },
1005{ "<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" }, 1003{ "<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" },
1006{ "<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" }, 1004{ "<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" },
1007{ "<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" }, 1005{ "<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" },
1008{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" }, 1006{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" },
1009{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" }, 1007{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" },
1010{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" }, 1008{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" },
1011{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" }, 1009{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" },
1012{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" }, 1010{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" },
1013{ "<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" }, 1011{ "<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" },
1014{ "<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" }, 1012{ "<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" },
1015{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" }, 1013{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" },
1016{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" }, 1014{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" },
1017{ "<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" }, 1015{ "<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" },
1018{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" }, 1016{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" },
1019{ "<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" }, 1017{ "<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" },
1020{ "<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" }, 1018{ "<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" },
1021{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" }, 1019{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" },
1022{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" }, 1020{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" },
1023{ "<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" }, 1021{ "<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" },
1024{ "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: Nächste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " }, 1022{ "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: Nächste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " },
1025{ "<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" }, 1023{ "<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" },
1026{ "<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" }, 1024{ "<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" },
1027{ "<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" }, 1025{ "<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" },
1028{ "<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" }, 1026{ "<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" },
1029{ "<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" }, 1027{ "<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" },
1030{ "<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" }, 1028{ "<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" },
1031{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" }, 1029{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" },
1032{ "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" }, 1030{ "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" },
1033{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" }, 1031{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" },
1034{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" }, 1032{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" },
1035{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" }, 1033{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" },
1036{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" }, 1034{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" },
1037{ "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" }, 1035{ "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" },
1038{ "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" }, 1036{ "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" },
1039{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" }, 1037{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" },
1040{ "KO/Pi FAQ","KO/Pi FAQ" }, 1038{ "KO/Pi FAQ","KO/Pi FAQ" },
1041{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" }, 1039{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" },
1042{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" }, 1040{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" },
1043{ "About KOrganizer/Pi","Über KOrganizer/Pi" }, 1041{ "About KOrganizer/Pi","Über KOrganizer/Pi" },
1044{ "From: ","Von: " }, 1042{ "From: ","Von: " },
1045{ "Remove sync info","Entferne Sync Info" }, 1043{ "Remove sync info","Entferne Sync Info" },
1046{ "For all profiles","Für alle Profile" }, 1044{ "For all profiles","Für alle Profile" },
1047{ "Hide not Running","Verstecke nicht Laufende" }, 1045{ "Hide not Running","Verstecke nicht Laufende" },
1048{ "ME","ME" }, 1046{ "ME","ME" },
1049{ "Toolbar","Toolbar" }, 1047{ "Toolbar","Toolbar" },
1050{ "Undo Delete...","Löschen rückgängig machen..." }, 1048{ "Undo Delete...","Löschen rückgängig machen..." },
1051{ "Undo Delete","Löschen rückgängig machen" }, 1049{ "Undo Delete","Löschen rückgängig machen" },
1052{ "KDE Sync HowTo...","KDE Sync HowTo..." }, 1050{ "KDE Sync HowTo...","KDE Sync HowTo..." },
1053{ "Multi Sync HowTo...","Multi Sync HowTo..." }, 1051{ "Multi Sync HowTo...","Multi Sync HowTo..." },
1054{ "Januar","Januar" }, 1052{ "Januar","Januar" },
1055{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" }, 1053{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" },
1056{ "No Filter","Kein Filter" }, 1054{ "No Filter","Kein Filter" },
1057{ "Multiple Sync options","Multi Sync Optionen" }, 1055{ "Multiple Sync options","Multi Sync Optionen" },
1058{ "Sync algo options","Sync Ablauf Optionen" }, 1056{ "Sync algo options","Sync Ablauf Optionen" },
1059{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 1057{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
1060{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 1058{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
1061{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 1059{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
1062{ "Write back options","Optionen zum Zurückschreiben" }, 1060{ "Write back options","Optionen zum Zurückschreiben" },
1063{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 1061{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
1064{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 1062{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
1065{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 1063{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
1066{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 1064{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
1067{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 1065{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
1068{ "Time period","Zeitspanne" }, 1066{ "Time period","Zeitspanne" },
1069{ "From ","Von " }, 1067{ "From ","Von " },
1070{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 1068{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
1071{ " weeks in the future "," Wochen in der Zukunft " }, 1069{ " weeks in the future "," Wochen in der Zukunft " },
1072{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 1070{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
1073{ "Local temp file:","Lokale temp Datei:" }, 1071{ "Local temp file:","Lokale temp Datei:" },
1074{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 1072{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
1075{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 1073{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
1076{ "Language","Sprache" }, 1074{ "Language","Sprache" },
1077{ "Time Format","Zeit Format" }, 1075{ "Time Format","Zeit Format" },
1078{ "Time Zone","Zeit Zone" }, 1076{ "Time Zone","Zeit Zone" },
1079{ "%1 groups subscribed","%1 Guppen abboniert" }, 1077{ "%1 groups subscribed","%1 Guppen abboniert" },
1080{ "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" }, 1078{ "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" },
1081{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 1079{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
1082{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 1080{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
1083{ "Save settings","Speichere Einstellungen" }, 1081{ "Save settings","Speichere Einstellungen" },
1084{ "Save standard","Speichere Standard" }, 1082{ "Save standard","Speichere Standard" },
1085{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 1083{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
1086{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 1084{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
1087{ "Data storage path","Daten Speicherpfad" }, 1085{ "Data storage path","Daten Speicherpfad" },
1088{ "Language","Sprache" }, 1086{ "Language","Sprache" },
1089{ "Show time in agenda items","Zeige Zeit in Agenda Items" }, 1087{ "Show time in agenda items","Zeige Zeit in Agenda Items" },
1090{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" }, 1088{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" },
1091{ "Show events, that are done","Zeige abgelaufene Termine" }, 1089{ "Show events, that are done","Zeige abgelaufene Termine" },
1092{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" }, 1090{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" },
1093{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 1091{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
1094{ "KO/Pi","KO/Pi" }, 1092{ "KO/Pi","KO/Pi" },
1095{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" }, 1093{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" },
1096{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." }, 1094{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." },
1097{ "Sound.Al.: ","Sound.Al.: " }, 1095{ "Sound.Al.: ","Sound.Al.: " },
1098{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" }, 1096{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" },
1099{ "Restore","Wiederherstellen" }, 1097{ "Restore","Wiederherstellen" },
1100{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklicht\nwiederherstellen?" }, 1098{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklicht\nwiederherstellen?" },
1101{ "% completed","% erledigt" }, 1099{ "% completed","% erledigt" },
1102{ "%d item(s) found.","%d Item(s) gefunden." }, 1100{ "%d item(s) found.","%d Item(s) gefunden." },
1103{ "Set complete","Setze auf erledigt" }, 1101{ "Set complete","Setze auf erledigt" },
1104{ "(cancelled)","(gecancelt)" }, 1102{ "(cancelled)","(gecancelt)" },
1105{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" }, 1103{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" },
1106{ " Local time "," Locale Zeit " }, 1104{ " Local time "," Locale Zeit " },
1107{ "Form2","Form2" }, 1105{ "Form2","Form2" },
1108{ "Filter enabled","Filter angeschaltet" }, 1106{ "Filter enabled","Filter angeschaltet" },
1109{ "Edit Filters","Ändere Filter" }, 1107{ "Edit Filters","Ändere Filter" },
1110{ "Print What's Next View...","Drucke What's Next Ansicht..." }, 1108{ "Print What's Next View...","Drucke What's Next Ansicht..." },
1111{ "Agenda","Agenda" }, 1109{ "Agenda","Agenda" },
1112{ " ("," (" }, 1110{ " ("," (" },
1113{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" }, 1111{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" },
1114{ "Print","Print" }, 1112{ "Print","Print" },
1115{ "&Setup Printer...","Drucker &Setup..." }, 1113{ "&Setup Printer...","Drucker &Setup..." },
1116{ "View Type","Zeige Typ" }, 1114{ "View Type","Zeige Typ" },
1117{ "Page &orientation:","Seiten Ausrichtung:" }, 1115{ "Page &orientation:","Seiten Ausrichtung:" },
1118{ "Use Default of Selected Style","Default des selektierten Stils" }, 1116{ "Use Default of Selected Style","Default des selektierten Stils" },
1119{ "Use Default Setting of Printer","Default Einstellung des Druckers" }, 1117{ "Use Default Setting of Printer","Default Einstellung des Druckers" },
1120{ "Portrait","Portrait" }, 1118{ "Portrait","Portrait" },
1121{ "Landscape","Landschaft" }, 1119{ "Landscape","Landschaft" },
1122{ "Print day","Drucke Tag" }, 1120{ "Print day","Drucke Tag" },
1123{ "CalPrintDay_Base","CalPrintDay_Base" }, 1121{ "CalPrintDay_Base","CalPrintDay_Base" },
1124{ "Date && Time Range","Datum && Zeitspanne" }, 1122{ "Date && Time Range","Datum && Zeitspanne" },
1125{ "&End date:","&Enddatum:" }, 1123{ "&End date:","&Enddatum:" },
1126{ "&Start date:","&Startdatum:" }, 1124{ "&Start date:","&Startdatum:" },
1127{ "Start &time:","Startzeit:" }, 1125{ "Start &time:","Startzeit:" },
1128{ "End ti&me:","Endzeit:" }, 1126{ "End ti&me:","Endzeit:" },
1129{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, 1127{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" },
1130{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, 1128{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" },
1131{ "Alt+D","Alt+D" }, 1129{ "Alt+D","Alt+D" },
1132{ "&Use colors","Nutze Farben" }, 1130{ "&Use colors","Nutze Farben" },
1133{ "Alt+U","Alt+U" }, 1131{ "Alt+U","Alt+U" },
1134{ "Print week","Drucke Woche" }, 1132{ "Print week","Drucke Woche" },
1135{ "CalPrintWeek_Base","CalPrintWeek_Base" }, 1133{ "CalPrintWeek_Base","CalPrintWeek_Base" },
1136{ "Use &colors","Nutze Farben" }, 1134{ "Use &colors","Nutze Farben" },
1137{ "Type of View","Typ der Ansicht" }, 1135{ "Type of View","Typ der Ansicht" },
1138{ "Print as &Filofax page","Drucke als &Filofax Seite" }, 1136{ "Print as &Filofax page","Drucke als &Filofax Seite" },
1139{ "Alt+F","Alt+F" }, 1137{ "Alt+F","Alt+F" },
1140{ "Print as &timetable view:","Drucke als Zeittabelle:" }, 1138{ "Print as &timetable view:","Drucke als Zeittabelle:" },
1141{ "Alt+T","Alt+T" }, 1139{ "Alt+T","Alt+T" },
1142{ "Print as split week view","Drucke als gesplittete Wochenansicht" }, 1140{ "Print as split week view","Drucke als gesplittete Wochenansicht" },
1143{ "Print month","Drucke Monat" }, 1141{ "Print month","Drucke Monat" },
1144{ "CalPrintMonth_Base","CalPrintMonth_Base" }, 1142{ "CalPrintMonth_Base","CalPrintMonth_Base" },
1145{ "&Start month:","&Startmonat:" }, 1143{ "&Start month:","&Startmonat:" },
1146{ "&End month:","&Endmonat:" }, 1144{ "&End month:","&Endmonat:" },
1147{ "Print week &numbers","Drucke Wochen Nummer(n)" }, 1145{ "Print week &numbers","Drucke Wochen Nummer(n)" },
1148{ "Print todos","Drucke Todos" }, 1146{ "Print todos","Drucke Todos" },
1149{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, 1147{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" },
1150{ "Include &description of the item","Inclusive Itembeschreibung" }, 1148{ "Include &description of the item","Inclusive Itembeschreibung" },
1151{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, 1149{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" },
1152{ "Include &priority of the item","Inclusive Priorität des Items" }, 1150{ "Include &priority of the item","Inclusive Priorität des Items" },
1153{ "Items to Print","Zu druckende Items" }, 1151{ "Items to Print","Zu druckende Items" },
1154{ "&From:","Von:" }, 1152{ "&From:","Von:" },
1155{ "&To:","Bis:" }, 1153{ "&To:","Bis:" },
1156{ "Print &all todo items","Drucke alle Todo Items" }, 1154{ "Print &all todo items","Drucke alle Todo Items" },
1157{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, 1155{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" },
1158{ "Only items due in the &range:","Nur Items in dem Zeitraum:" }, 1156{ "Only items due in the &range:","Nur Items in dem Zeitraum:" },
1159{ "Todo List","Todo Liste" }, 1157{ "Todo List","Todo Liste" },
1160{ "&Title:","&Titel:" }, 1158{ "&Title:","&Titel:" },
1161{ "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" }, 1159{ "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" },
1162{ "Todo list","Todo Liste" }, 1160{ "Todo list","Todo Liste" },
1163{ "&Print...","Drucke..." }, 1161{ "&Print...","Drucke..." },
1164{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, 1162{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" },
1165{ "[Unconfigured]","[Unkonfiguriert]" }, 1163{ "[Unconfigured]","[Unkonfiguriert]" },
1166{ "OK","OK" }, 1164{ "OK","OK" },
1167{ "FilterEditor","FilterEditor" }, 1165{ "FilterEditor","FilterEditor" },
1168{ "Include","Inclusive" }, 1166{ "Include","Inclusive" },
1169{ "Exclude","Exclusive" }, 1167{ "Exclude","Exclusive" },
1170{ "Edit Selection...","Editiere Auswahl" }, 1168{ "Edit Selection...","Editiere Auswahl" },
1171{ "recurring events","wiederholende Termine" }, 1169{ "recurring events","wiederholende Termine" },
1172{ "recurr. events","wiederh.Termine" }, 1170{ "recurr. events","wiederh.Termine" },
1173{ "completed to-dos","erledigte Todos" }, 1171{ "completed to-dos","erledigte Todos" },
1174{ "events","Termine" }, 1172{ "events","Termine" },
1175{ "todos","Todos" }, 1173{ "todos","Todos" },
1176{ "journals","Journale" }, 1174{ "journals","Journale" },
1177{ "public","öffentl." }, 1175{ "public","öffentl." },
1178{ "private","privat" }, 1176{ "private","privat" },
1179{ "confidential","vertraul." }, 1177{ "confidential","vertraul." },
1180{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gelöscht!" }, 1178{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gelöscht!" },
1181{ "Yesterday","Gestern" }, 1179{ "Yesterday","Gestern" },
1182{ "Day after tomorrow","Übermorgen" }, 1180{ "Day after tomorrow","Übermorgen" },
1183{ "Tomorrow","Morgen" }, 1181{ "Tomorrow","Morgen" },
1184{ "Day before yesterday","Vorgestern" }, 1182{ "Day before yesterday","Vorgestern" },
1185{ "Size %1","Größe %1" }, 1183{ "Size %1","Größe %1" },
1186{ "New Agendasize: %1","Neue Agendagröße: %1" }, 1184{ "New Agendasize: %1","Neue Agendagröße: %1" },
1187{ " (%1 y.)"," (%1 J.)" }, 1185{ " (%1 y.)"," (%1 J.)" },
1188{ "Allday:","Ganztägig:" }, 1186{ "Allday:","Ganztägig:" },
1189{ "compl.todos","erled.Todos" }, 1187{ "compl.todos","erled.Todos" },
1190{ "Day view","Tagesansicht" }, 1188{ "Day view","Tagesansicht" },
1191{ "Next days","Nächste Tage" }, 1189{ "Next days","Nächste Tage" },
1192{ "Next week","Nächste Woche" }, 1190{ "Next week","Nächste Woche" },
1193{ "Next two weeks","Nächste zwei Wochen" }, 1191{ "Next two weeks","Nächste zwei Wochen" },
1194{ "This month","Dieser Monat" }, 1192{ "This month","Dieser Monat" },
1195{ "Journal view","Journal" }, 1193{ "Journal view","Journal" },
1196{ "Display all opened","Zeige alle geöffnet" }, 1194{ "Display all opened","Zeige alle geöffnet" },
1197{ "Display all closed","Zeige alle geschlossen" }, 1195{ "Display all closed","Zeige alle geschlossen" },
1198{ "Display all flat","Zeige alle flach" }, 1196{ "Display all flat","Zeige alle flach" },
1199{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" }, 1197{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" },
1200{ "Default todo done color:","Standard Todo erledigt Farbe" }, 1198{ "Default todo done color:","Standard Todo erledigt Farbe" },
1201{ "Select week %1-%2","Wähle Woche %1-%2" }, 1199{ "Select week %1-%2","Wähle Woche %1-%2" },
1202{ "Select Week","Wähle Woche" }, 1200{ "Select Week","Wähle Woche" },
1203{ "Set alarm for selected...","Setze Alarm für Selekt..." }, 1201{ "Set alarm for selected...","Setze Alarm für Selekt..." },
1204{ "Set Alarm!","Setze Alarm!" }, 1202{ "Set Alarm!","Setze Alarm!" },
1205{ "Canged alarm for %1 items","Alarm für %1 Items geändert" }, 1203{ "Canged alarm for %1 items","Alarm für %1 Items geändert" },
1206{ " and "," und " }, 1204{ " and "," und " },
1207{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" }, 1205{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" },
1208{ "Mail to selected","Mail an Ausgewählte" }, 1206{ "Mail to selected","Mail an Ausgewählte" },
1209{ "Mail to all","Mail an Alle" }, 1207{ "Mail to all","Mail an Alle" },
1210{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" }, 1208{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" },
1211{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" }, 1209{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" },
1212{ " on"," am" }, 1210{ " on"," am" },
1213{ " completed on "," erledigt am " }, 1211{ " completed on "," erledigt am " },
1214{ "Save as Event template","Speichere als Vorlage" }, 1212{ "Save as Event template","Speichere als Vorlage" },
1215{ "Load Event template","Lade Termin Vorlage" }, 1213{ "Load Event template","Lade Termin Vorlage" },
1216{ "Save as Journal template","Speichere als Journal Vorlage" }, 1214{ "Save as Journal template","Speichere als Journal Vorlage" },
1217{ "Insert Journal template","Füge Journal Vorlage ein" }, 1215{ "Insert Journal template","Füge Journal Vorlage ein" },
1218{ "Sub todos:<br>","Unter Todos:<br>" }, 1216{ "Sub todos:<br>","Unter Todos:<br>" },
1219{ "Parent todo:<br>","Über Todo:<br>" }, 1217{ "Parent todo:<br>","Über Todo:<br>" },
1220{ "Set current as color category","Setze Gewählte als Farbkategorie" }, 1218{ "Set current as color category","Setze Gewählte als Farbkategorie" },
1221{ " completed"," erledigt" }, 1219{ " completed"," erledigt" },
1222{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" }, 1220{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" },
1223{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, 1221{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
1224{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, 1222{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
1225{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, 1223{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
1226{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" }, 1224{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" },
1227{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, 1225{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
1228{ "Error","Fehler" }, 1226{ "Error","Fehler" },
1229{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, 1227{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." },
1230{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, 1228{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
1231{ "Warning","Warnung" }, 1229{ "Warning","Warnung" },
1232{ "Select week number","Wähle Wochen Nummer" }, 1230{ "Select week number","Wähle Wochen Nummer" },
1233{ "Februar","Februar" }, 1231{ "Februar","Februar" },
1234{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" }, 1232{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" },
1235{ "W","W" }, 1233{ "W","W" },
1236{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" }, 1234{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" },
1237{ "T: %1","T: %1" }, 1235{ "T: %1","T: %1" },
1238{ "Start: ","Start: " }, 1236{ "Start: ","Start: " },
1239{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, 1237{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " },
1240{ "Password for remote access:","Passwort für fernen Zugriff:" }, 1238{ "Password for remote access:","Passwort für fernen Zugriff:" },
1241{ "Remote IP address:","Ferne IP Adresse:" }, 1239{ "Remote IP address:","Ferne IP Adresse:" },
1242{ "Remote port number:","Ferne Port Nummer:" }, 1240{ "Remote port number:","Ferne Port Nummer:" },
1243{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, 1241{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
1244{ "Remote from: ","Fern von: " }, 1242{ "Remote from: ","Fern von: " },
1245{ "Local from: ","Lokal von: " }, 1243{ "Local from: ","Lokal von: " },
1246{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" }, 1244{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" },
1247{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, 1245{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" },
1248{ "Write back","Schreibe zurück" }, 1246{ "Write back","Schreibe zurück" },
1249{ "KO/Pi Synchronization","KO/Pi Synchronisation" }, 1247{ "KO/Pi Synchronization","KO/Pi Synchronisation" },
1250{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, 1248{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
1251{ "Received sync request","Sync Anfrage erhalten" }, 1249{ "Received sync request","Sync Anfrage erhalten" },
1252{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." }, 1250{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." },
1253{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, 1251{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
1254{ "Data saved to temp file!","Daten in temp Datei gespeichert!" }, 1252{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
1255{ "Sending file...","Sende Datei..." }, 1253{ "Sending file...","Sende Datei..." },
1256{ "Waiting for synced file...","Warte auf gesyncte Daten..." }, 1254{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
1257{ "Receiving synced file...","Gesyncte Daten erhalten..." }, 1255{ "Receiving synced file...","Gesyncte Daten erhalten..." },
1258{ "Received %1 bytes","%1 Bytes erhalten" }, 1256{ "Received %1 bytes","%1 Bytes erhalten" },
1259{ "Writing file to disk...","Speichere Datei..." }, 1257{ "Writing file to disk...","Speichere Datei..." },
1260{ "Pi-Sync successful!","Pi-Sync erfolgreich!" }, 1258{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
1261{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, 1259{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" },
1262{ "Synchronize!","Synchronisiere!" }, 1260{ "Synchronize!","Synchronisiere!" },
1263{ "High clock skew!","Großer Uhrzeitunterschied!" }, 1261{ "High clock skew!","Großer Uhrzeitunterschied!" },
1264{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, 1262{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
1265{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" }, 1263{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" },
1266{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." }, 1264{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." },
1267{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" }, 1265{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" },
1268{ "List week view","Listenwochenansicht" }, 1266{ "List week view","Listenwochenansicht" },
1269{ "List week","Listenwochenansicht" }, 1267{ "List week","Listenwochenansicht" },
1270{ "Next Week","Nächste Woche" }, 1268{ "Next Week","Nächste Woche" },
1271{ "Previous Week","Vorherige Woche" }, 1269{ "Previous Week","Vorherige Woche" },
1272{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." }, 1270{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." },
1273{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" }, 1271{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" },
1274{ "Details","Details" }, 1272{ "Details","Details" },
1275{ "Created time","Erstellt Zeit" }, 1273{ "Created time","Erstellt Zeit" },
1276{ "Last modified time","Geändert Zeit" }, 1274{ "Last modified time","Geändert Zeit" },
1277{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" }, 1275{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" },
1278{ "View Options","Anzeige Optionen" }, 1276{ "View Options","Anzeige Optionen" },
1279{ "<b>Created: ","<b>Erstellt am: " }, 1277{ "<b>Created: ","<b>Erstellt am: " },
1280{ "<b>Last modified: ","<b>Zuletzt geändert am: " }, 1278{ "<b>Last modified: ","<b>Zuletzt geändert am: " },
1281{ "Journal: ","Journal: " }, 1279{ "Journal: ","Journal: " },
1282{ "yearly","jährlich" }, 1280{ "yearly","jährlich" },
1283{ "(%1) ","%1-" }, 1281{ "(%1) ","%1-" },
1284{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" }, 1282{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" },
1285{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" }, 1283{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" },
1286{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" }, 1284{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" },
1287{ "Summary/Loc.","Titel/Ort" }, 1285{ "Summary/Loc.","Titel/Ort" },
1288{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." }, 1286{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." },
1289{ "Week Number","Wochennummer" }, 1287{ "Week Number","Wochennummer" },
1290{ "Import","Importiere" }, 1288{ "Import","Importiere" },
1291{ "Export","Exportiere" }, 1289{ "Export","Exportiere" },
1292{ "Beam","Beame" }, 1290{ "Beam","Beame" },
1293{ "Export selected","Exportiere Selektierte" }, 1291{ "Export selected","Exportiere Selektierte" },
1294{ "As iCal (ics) file...","Als iCal (ics) Datei..." }, 1292{ "As iCal (ics) file...","Als iCal (ics) Datei..." },
1295{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." }, 1293{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." },
1296{ "Journal/Details...","Journale/Details..." }, 1294{ "Journal/Details...","Journale/Details..." },
1297{ "Agenda View","Agenda Ansicht" }, 1295{ "Agenda View","Agenda Ansicht" },
1298{ "Show current time","Zeige aktuelle Zeit" }, 1296{ "Show current time","Zeige aktuelle Zeit" },
1299{ "Edit new item","Bearbeite neuen Eintrag" }, 1297{ "Edit new item","Bearbeite neuen Eintrag" },
1300{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" }, 1298{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" },
1301{ "There is no next alarm.","Es gibt keinen nächsten Alarm." }, 1299{ "There is no next alarm.","Es gibt keinen nächsten Alarm." },
1302{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" }, 1300{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" },
1303{ "The next alarm is in:\n","Der nächste Alarm ist in:\n" }, 1301{ "The next alarm is in:\n","Der nächste Alarm ist in:\n" },
1304{ "%1 days\n","%1 Tagen\n" }, 1302{ "%1 days\n","%1 Tagen\n" },
1305{ "1 day\n","1 Tag\n" }, 1303{ "1 day\n","1 Tag\n" },
1306{ "%1 hours\n","%1 Stunden\n" }, 1304{ "%1 hours\n","%1 Stunden\n" },
1307{ "1 hour\n","1 Stunde\n" }, 1305{ "1 hour\n","1 Stunde\n" },
1308{ "%1 minutes\n","%1 Minuten\n" }, 1306{ "%1 minutes\n","%1 Minuten\n" },
1309{ "1 minute\n","1 Minute\n" }, 1307{ "1 minute\n","1 Minute\n" },
1310{ "Only one toolbar","Nur eine Toolbar" }, 1308{ "Only one toolbar","Nur eine Toolbar" },
1311{ "Print","Drucke" }, 1309{ "Print","Drucke" },
1312{ "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." }, 1310{ "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." },
1313{ "There is nothing selected!","Es ist nichts ausgewählt!" }, 1311{ "There is nothing selected!","Es ist nichts ausgewählt!" },
1314{ "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " }, 1312{ "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " },
1315{ "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" }, 1313{ "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" },
1316{ "This prints the view as you see it.\n(With the complete content, of course.)\nYou may change the print layout by resizing the view.\nPrint unscaled may print several pages\ndepending on the amount of data.\nPrint scaled down will print all on one page.\nPrint scaled up/down will print all on one page,\nbut will scale up the text to page boundaries,\nif the text is smaller than the page.\nYou can select page geometry setup in the next dialog.\n","Dies druckt die Ansicht wie man sie sieht.\n(Mit dem kompletten Inhalt natürlich.)\nMan kann das Layout ändern durch ändern der Fenstergröße.\nDrucke unskaliert druckt ggf. mehrere Seiten\nabhängig von der Menge der Daten.\nDrucke runterskaliert um auf eine Seite zu passen\ndruckt alles auf eine Seite.\nDrucke hoch/runterskaliert um genau auf eine Seite zu passen\nvergrößert den Text gegebenenfalls.\nDas Seitenlayout kann im nächsten Dialog gewählt werden.\n" }, 1314{ "This prints the view as you see it.\n(With the complete content, of course.)\nYou may change the print layout by resizing the view.\nPrint unscaled may print several pages\ndepending on the amount of data.\nPrint scaled down will print all on one page.\nPrint scaled up/down will print all on one page,\nbut will scale up the text to page boundaries,\nif the text is smaller than the page.\nYou can select page geometry setup in the next dialog.\n","Dies druckt die Ansicht wie man sie sieht.\n(Mit dem kompletten Inhalt natürlich.)\nMan kann das Layout ändern durch ändern der Fenstergröße.\nDrucke unskaliert druckt ggf. mehrere Seiten\nabhängig von der Menge der Daten.\nDrucke runterskaliert um auf eine Seite zu passen\ndruckt alles auf eine Seite.\nDrucke hoch/runterskaliert um genau auf eine Seite zu passen\nvergrößert den Text gegebenenfalls.\nDas Seitenlayout kann im nächsten Dialog gewählt werden.\n" },
1317{ "KO/Pi Printout","KO/Pi Ausdruck" }, 1315{ "KO/Pi Printout","KO/Pi Ausdruck" },
1318{ "Print unscaled","Drucke unskaliert" }, 1316{ "Print unscaled","Drucke unskaliert" },
1319{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." }, 1317{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." },
1320{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." }, 1318{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." },
1321{ "Printout Mode","Druck Modus" }, 1319{ "Printout Mode","Druck Modus" },
1322{ "Filter menu icon","Filtermenu Icon" }, 1320{ "Filter menu icon","Filtermenu Icon" },
1323{ "<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n","<p><b>A+(shift oder ctrl)</b>: Zeige Zeit bis zum nächsten Alarm</p>\n" }, 1321{ "<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n","<p><b>A+(shift oder ctrl)</b>: Zeige Zeit bis zum nächsten Alarm</p>\n" },
1324{ "<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n","<p><b>N</b>: Wechsle zur nächsten Ansicht, die ein Icon in der Toolbar hat</p>\n" }, 1322{ "<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n","<p><b>N</b>: Wechsle zur nächsten Ansicht, die ein Icon in der Toolbar hat</p>\n" },
1325{ "%1d","%1t" }, 1323{ "%1d","%1t" },
1326{ "%1h","%1std" }, 1324{ "%1h","%1std" },
1327{ "%1min","%1min" }, 1325{ "%1min","%1min" },
1328{ "( %1 before )","( %1 vorher )" }, 1326{ "( %1 before )","( %1 vorher )" },
1329{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" }, 1327{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" },
1330{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" }, 1328{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" },
1331{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." }, 1329{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." },
1332{ "Show Sync Events in WN+Agenda","Zeige Sync-Ereignisse in WN+Agenda" }, 1330{ "Show Sync Events in WN+Agenda","Zeige Sync-Ereignisse in WN+Agenda" },
1333{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" }, 1331{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" },
1334{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" }, 1332{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" },
1335{ " on "," am " }, 1333{ " on "," am " },
1336{ "On: ","Am: " }, 1334{ "On: ","Am: " },
1337{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" }, 1335{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" },
1338{ "Start/Stop todo...","Starte/Stoppe Todo..." }, 1336{ "Start/Stop todo...","Starte/Stoppe Todo..." },
1339{ "Color for running todos:","Farbe für laufende Todos:" }, 1337{ "Color for running todos:","Farbe für laufende Todos:" },
1340{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" }, 1338{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" },
1341{ "Todo is started","Todo is gestarted" }, 1339{ "Todo is started","Todo is gestarted" },
1342{ "Stop todo","Stoppe Todo" }, 1340{ "Stop todo","Stoppe Todo" },
1343{ "Todo is stopped","Todo ist gestoppt" }, 1341{ "Todo is stopped","Todo ist gestoppt" },
1344{ "Start todo","Starte Todo" }, 1342{ "Start todo","Starte Todo" },
1345{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" }, 1343{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" },
1346{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" }, 1344{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" },
1347{ "Todo has subtodos","Todo hat Untertodos" }, 1345{ "Todo has subtodos","Todo hat Untertodos" },
1348{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" }, 1346{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" },
1349{ "Alternate background","Abwechselnder Hintergrund" }, 1347{ "Alternate background","Abwechselnder Hintergrund" },
1350{ "Colors","Farben" }, 1348{ "Colors","Farben" },
1351{ "Click on new parent item","Klicke auf neues Übertodo" }, 1349{ "Click on new parent item","Klicke auf neues Übertodo" },
1352{ "Reparenting aborted!","Übertodo setzen abgebrochen" }, 1350{ "Reparenting aborted!","Übertodo setzen abgebrochen" },
1353{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" }, 1351{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" },
1354{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" }, 1352{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" },
1355{ "","" }, 1353{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" },
1356{ "","" }, 1354{ "","" },
1357{ "","" }, 1355{ "","" },
1358{ "","" }, 1356{ "","" },
1359{ "","" }, 1357{ "","" },
1360{ "","" }, 1358{ "","" },
1361{ "","" }, 1359{ "","" },
1362{ "","" }, 1360{ "","" },
1363{ "","" }, 1361{ "","" },
diff --git a/bin/kdepim/korganizer/usertranslation.txt b/bin/kdepim/korganizer/usertranslation.txt
index 8355b90..907eb23 100644
--- a/bin/kdepim/korganizer/usertranslation.txt
+++ b/bin/kdepim/korganizer/usertranslation.txt
@@ -1,1125 +1,1361 @@
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...","�er..." }, 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�iger 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 Hinzufgen" }, 48{ "Add Filter","Filter Hinzufügen" },
49{ "&Add","Hinzufgen" }, 49{ "&Add","Hinzufügen" },
50{ "Add","Hinzufgen" }, 50{ "Add","Hinzufügen" },
51{ "Additional email addresses:","Zus�zliche E-Mail Adressen:" }, 51{ "Additional email addresses:","Zusätzliche E-Mail Adressen:" },
52{ "Additional email address:","Zus�zliche 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�e Ganztages Agenda:" }, 60{ "AllDayAgenda Height:","Höhe Ganztages Agenda:" },
61{ "Allday","Ganzt�ig" }, 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�.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{ "Bigger","Gr�er" },
79{ "Biggest","Riesig" },
80{ "Big","Gro� },
81{ "<b>On:</b> %1","<b>Am:</b> %1" }, 78{ "<b>On:</b> %1","<b>Am:</b> %1" },
82{ "<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" },
83{ "<b>Original event:</b><p>","<b>Original Termin:</b><p>" }, 80{ "<b>Original event:</b><p>","<b>Original Termin:</b><p>" },
84{ " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation ver�dert" }, 81{ " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" },
85{ "Busy","Belegt" }, 82{ "Busy","Belegt" },
86{ "&Cancel","Abbre&chen" }, 83{ "&Cancel","Abbre&chen" },
87{ "Cancel","Abbrechen" }, 84{ "Cancel","Abbrechen" },
88{ "Cannot delete To-Do\nwhich has children.","Kann Todo nicht l�chen,\n da noch Eintr�e vorhanden sind" }, 85{ "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" },
89{ "Cannot delete To-Do which has children.","Kann Todo nicht l�chen, da noch Eintr�e vorhanden sind" }, 86{ "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." },
90{ "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgew�lt." },
91{ "Categories...","Kategorien..." }, 87{ "Categories...","Kategorien..." },
92{ "Categories","Kategorien" }, 88{ "Categories","Kategorien" },
93{ "Category","Kategorie" }, 89{ "Category","Kategorie" },
94{ "Center View","Zentriere Ansicht" }, 90{ "Center View","Zentriere Ansicht" },
95{ "Change","�dere" }, 91{ "Change","Ändere" },
96{ "Cinema","Kino" }, 92{ "Cinema","Kino" },
97{ "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" },
98{ "Clone Item","Klone Eintrag" }, 94{ "Clone Item","Klone Eintrag" },
99{ "&Close","S&chlie�n" }, 95{ "&Close","S&chließen" },
100{ "Close","Schlie�n" }, 96{ "Close","Schließen" },
101{ "Close this dialog to abort deletion!","Zum Abbrechen des L�chvorganges Dialog schlie�n!" }, 97{ "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" },
102{ "Colors","Farben" }, 98{ "Colors","Farben" },
103{ "completed","erledigt" }, 99{ "completed","erledigt" },
104{ "completed on %1","erledigt am %1" }, 100{ "completed on %1","erledigt am %1" },
105{ "Complete","Erledigt" }, 101{ "Complete","Erledigt" },
106{ "Confidential","Vertraulich" }, 102{ "Confidential","Vertraulich" },
107{ "Configure...","Einstellungen..." }, 103{ "Configure...","Einstellungen..." },
108{ "Confirm &deletes","L�chvogang best�igen" }, 104{ "Confirm &deletes","Löschvogang bestätigen" },
109{ "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." },
110{ "Counter-event Viewer","Terminz�ler Ansicht" }, 106{ "Counter-event Viewer","Terminzähler Ansicht" },
111{ "Daily ending hour:","Feierabend:" }, 107{ "Daily ending hour:","Feierabend:" },
112{ "Daily starting hour:","Anfangszeit:" }, 108{ "Daily starting hour:","Anfangszeit:" },
113{ "Daily","T�lich" }, 109{ "Daily","Täglich" },
114{ "Date Format","Datums Format" }, 110{ "Date Format","Datums Format" },
115{ "Date Format:","Datums Format:" }, 111{ "Date Format:","Datums Format:" },
116{ "DateNavigator:(nr)","Datums Navigator" }, 112{ "DateNavigator:(nr)","Datums Navigator" },
117{ "Dates: ","Datum: " }, 113{ "Dates: ","Datum: " },
118{ "Date && Time","Datum && Zeit" }, 114{ "Date && Time","Datum && Zeit" },
119{ "Day begins at:","Der Tag beginnt um:" }, 115{ "Day begins at:","Der Tag beginnt um:" },
120{ "Days in Next-X-Days:","Tage in N�hste-X-Tage:" }, 116{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" },
121{ "Days in What's Next:","Tage in What's Next:" }, 117{ "Days in What's Next:","Tage in What's Next:" },
122{ "day(s)","Tag(e)" }, 118{ "day(s)","Tag(e)" },
123{ "Days to show in Next-X-Days view:","Welche Tage in N�hste-X-Tagen anzeigen:" }, 119{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" },
124{ "day","Tag" }, 120{ "day","Tag" },
125{ "Dec","Dez" }, 121{ "Dec","Dez" },
126{ "December","Dezember" }, 122{ "December","Dezember" },
127{ "Default alarm time:","Standard Alarmzeit:" }, 123{ "Default alarm time:","Standard Alarmzeit:" },
128{ "Default appointment time:","Standard Termin Startzeit:" }, 124{ "Default appointment time:","Standard Termin Startzeit:" },
129{ "Default event color:","Standard Terminfarbe:" }, 125{ "Default event color:","Standard Terminfarbe:" },
130{ "Default","Standard" }, 126{ "Default","Standard" },
131{ "Def. duration of new app.:","Standard Termin L�ge:" }, 127{ "Def. duration of new app.:","Standard Termin Länge:" },
132{ "Delete all completed To-Dos?","Alle bereits erledigten Todos l�chen?" }, 128{ "Delete All","Lösche alles" },
133{ "Delete All","L�che alles" }, 129{ "Delete all selected","Lösche alle Selektierten" },
134{ "Delete all selected","L�che alle Selektierten" }, 130{ "Delete Current","Aktuellen löschen" },
135{ "Delete Current","Aktuellen l�chen" }, 131{ "Delete Event...","Lösche Termin..." },
136{ "Delete Event...","L�che Termin..." }, 132{ "Delete Event","Lösche Termin" },
137{ "Delete Event","L�che Termin" }, 133{ "&Delete","Löschen" },
138{ "&Delete","L�chen" }, 134{ "Delete...","Löschen..." },
139{ "Delete...","L�chen..." }, 135{ "Delete","Löschen" },
140{ "Delete","L�chen" }, 136{ "Delete Todo...","Lösche Todo..." },
141{ "Delete Todo...","L�che Todo..." }, 137{ "Delete To-Do","Lösche Todo" },
142{ "Delete To-Do","L�che Todo" }, 138{ "Deleting item %d ...","Lösche Eintrag %d..." },
143{ "Deleting item %d ...","L�che Eintrag %d..." },
144{ "Descriptions","Beschreibungen" }, 139{ "Descriptions","Beschreibungen" },
145{ "Deselect All","Deselektiere Alle" }, 140{ "Deselect all","Deselektiere Alle" },
146{ "Details","Details" }, 141{ "Details","Details" },
147{ "Dinner","Abendessen" }, 142{ "Dinner","Abendessen" },
148{ "Do you really want\nto close KO/Pi?","M�hten Sie wirklich\nKO/PI verlassen?" }, 143{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" },
149{ "Due Date","F�lig am" }, 144{ "Due Date","Fällig am" },
150{ "Due: ","F�lig: "}, 145{ "Due: ","Fällig: "},
151{ "Due Time","F�lig um" }, 146{ "Due Time","Fällig um" },
152{ "Due:","F�lig:"}, 147{ "Due:","Fällig:"},
153{ "Duration: ","Dauer: " }, 148{ "Duration: ","Dauer: " },
154{ "Edit...","Bearbeite..." }, 149{ "Edit...","Bearbeite..." },
155{ "Edit","Bearbeite" }, 150{ "Edit","Bearbeite" },
156{ "Edit Event...","Bearbeite Termin..." }, 151{ "Edit Event...","Bearbeite Termin..." },
157{ "Edit Event","Bearbeite Termin" }, 152{ "Edit Event","Bearbeite Termin" },
158{ "Edit exceptions","Bearbeite Ausnahmen" }, 153{ "Edit exceptions","Bearbeite Ausnahmen" },
159{ "EditorBox:","Editor Fenster:" }, 154{ "EditorBox:","Editor Fenster:" },
160{ "Edit Recurrence Range","Bearbeite Wiederholung" }, 155{ "Edit Recurrence Range","Bearbeite Wiederholung" },
161{ "Edit Todo...","Berabeite Todo..." }, 156{ "Edit Todo...","Berabeite Todo..." },
162{ "Edit To-Do","Todo bearbeiten" }, 157{ "Edit To-Do","Todo bearbeiten" },
163{ "E&mail address:","E&mail Adresse:" }, 158{ "E&mail address:","E&mail Adresse:" },
164{ "(EmptyEmail)","(KeineEmail)" }, 159{ "(EmptyEmail)","(KeineEmail)" },
165{ "(EmptyName)","(KeinName)" }, 160{ "(EmptyName)","(KeinName)" },
166{ "Enable Recurrence","Wiederholender Termin" }, 161{ "Enable Recurrence","Wiederholung anschalten" },
167{ "End after","Endet nach"}, 162{ "End after","Endet nach"},
168{ "End by:","Endet am"}, 163{ "End by:","Endet am"},
169{ "End Date","End Datum" }, 164{ "End Date","End Datum" },
170{ "End:","Ende:" }, 165{ "End:","Ende:" },
171{ "End Time","End Zeit" }, 166{ "End Time","End Zeit" },
172{ "English","Englisch" }, 167{ "English","Englisch" },
173{ "Event","Termin" }, 168{ "Event","Termin" },
174{ "Event list","Termin Liste" }, 169{ "Event list","Termin Liste" },
175{ "Events","Termine" }, 170{ "Events","Termine" },
176{ "Event Viewer:","Termin �ersicht:" }, 171{ "Event Viewer:","Termin Übersicht:" },
177{ "every","jede" }, 172{ "every","jede" },
178{ "Exceptions...","Ausnahmen..." }, 173{ "Exceptions...","Ausnahmen..." },
179{ "Exceptions","Ausnahmen" }, 174{ "Exceptions","Ausnahmen" },
180{ "Exclude holidays","Ohne freie Tage" }, 175{ "Exclude holidays","Ohne freie Tage" },
181{ "Exclude Saturdays","Ohne Samstage" }, 176{ "Exclude Saturdays","Ohne Samstage" },
182{ "Feb","Feb" }, 177{ "Feb","Feb" },
183{ "February","Februar" }, 178{ "February","Februar" },
184{ "&Find","Suche!" }, 179{ "&Find","Suche!" },
185{ "Fonts","Schriftart" }, 180{ "Fonts","Schriftart" },
186{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" }, 181{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" },
187{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"}, 182{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"},
188{ "Free","Frei" }, 183{ "Free","Frei" },
189{ "Friday","Freitag" }, 184{ "Friday","Freitag" },
190{ "Fri","Fr" }, 185{ "Fri","Fr" },
191{ "From:","Vom:" }, 186{ "From:","Vom:" },
192{ "Full &name:","Vor- und &Nachname:" }, 187{ "Full &name:","Vor- und &Nachname:" },
193{ "General","Allgemein" }, 188{ "General","Allgemein" },
194{ "German","Deutsch" }, 189{ "German","Deutsch" },
195{ "Gifts","Geschenke" }, 190{ "Gifts","Geschenke" },
196{ "Go to Today","Heute anzeigen" }, 191{ "Go to Today","Heute anzeigen" },
197{ "Help","Hilfe" }, 192{ "Help","Hilfe" },
198{ "Hide Dates","Daten ausblenden" }, 193{ "Hide Dates","Daten ausblenden" },
199{ "Highlight color:","Markierungen:" }, 194{ "Highlight color:","Markierungen:" },
200{ "Holiday color:","Freie Tage:" }, 195{ "Holiday color:","Freie Tage:" },
201{ "hour(s)","Stunde(n)" }, 196{ "hour(s)","Stunde(n)" },
202{ "In %1 days: ","In %1 Tagen: " }, 197{ "In %1 days: ","In %1 Tagen: " },
203{ "Incomplete Todo:","Unerledigte Aufgaben:" }, 198{ "Incomplete Todo:","Unerledigte Aufgaben:" },
204{ "Information","Information" }, 199{ "Information","Information" },
205{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausfhren" }, 200{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" },
206{ "Jan","Jan" }, 201{ "Jan","Jan" },
207{ "January","Januar" }, 202{ "January","Januar" },
208{ "JournalView:","Journal Ansicht:" }, 203{ "JournalView:","Journal Ansicht:" },
209{ "Journals","Journale" }, 204{ "Journals","Journale" },
210{ "Jul","Jul" }, 205{ "Jul","Jul" },
211{ "July","Juli" }, 206{ "July","Juli" },
212{ "Jump to date","Springe zum Datum" }, 207{ "Jump to date","Springe zum Datum" },
213{ "June","Juni" }, 208{ "June","Juni" },
214{ "Jun","Jun" }, 209{ "Jun","Jun" },
215{ "Key Bindings...","Tastenzuordnung..." }, 210{ "Key Bindings...","Tastenzuordnung..." },
216{ "Kids","Kinder" }, 211{ "Kids","Kinder" },
217{ "Known Problems...","Bekannte Probleme..." }, 212{ "Known Problems...","Bekannte Probleme..." },
218{ "KO/Pi Find ","KO/Pi Suchdialog " }, 213{ "KO/Pi Find ","KO/Pi Suchdialog " },
219{ "KO/Pi Find: ","KO/Pi Suchen: " }, 214{ "KO/Pi Find: ","KO/Pi Suchen: " },
220{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit fr eine Kaffeepause ..." }, 215{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." },
221{ "Language:(needs restart)","Sprache (Neustart!)" }, 216{ "Language:(needs restart)","Sprache (Neustart!)" },
222{ "Language:","Sprache" }, 217{ "Language:","Sprache" },
223{ "Large","Etwas mehr" }, 218{ "Large","Etwas mehr" },
224{ "List View:","Listenansicht:" }, 219{ "List View:","Listenansicht:" },
225{ "List View","Listenansicht" }, 220{ "List View","Listenansicht" },
226{ "Load/Save","Laden/Speichern" }, 221{ "Load/Save","Laden/Speichern" },
227{ "Load Template","Lade Vorlage" }, 222{ "Load Template","Lade Vorlage" },
228{ "Locale","Localisation" }, 223{ "Locale","Localisation" },
229{ "Local temp file:","Lokale temp. Datei:" }, 224{ "Local temp file:","Lokale temp. Datei:" },
230{ "Location: ","Ort: " }, 225{ "Location: ","Ort: " },
231{ "Location:","Ort:" }, 226{ "Location:","Ort:" },
232{ "Mail client","Mail Programm" }, 227{ "Mail client","Mail Programm" },
233{ "Mail Client","Mail Programm" }, 228{ "Mail Client","Mail Programm" },
234{ "March","M�z" }, 229{ "March","März" },
235{ "Mar","M�" }, 230{ "Mar","Mär" },
236{ "May","Mai" }, 231{ "May","Mai" },
237{ "M. Bains line:","M. Bains Linie:" }, 232{ "M. Bains line:","M. Bains Linie:" },
238{ "Medium","Medium" }, 233{ "Medium","Medium" },
239{ "Method","Methode" }, 234{ "Method","Methode" },
240{ "minute(s)","Minute(n)" }, 235{ "minute(s)","Minute(n)" },
241{ "Monday","Montag" }, 236{ "Monday","Montag" },
242{ "Mon","Mo" }, 237{ "Mon","Mo" },
243{ "Monthly","Monatlich" }, 238{ "Monthly","Monatlich" },
244{ "Month not long enough","Monat ist nicht lang genug" }, 239{ "Month not long enough","Monat ist nicht lang genug" },
245{ "month(s)","Monat(e)" }, 240{ "month(s)","Monat(e)" },
246{ "Month view:","Monatsansicht:" }, 241{ "Month view:","Monatsansicht:" },
247{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" }, 242{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" },
248{ "Todo view uses category colors","To-Do Ansicht zeigt Kategorie Farben" }, 243{ "Todo view uses category colors","To-Do Ansicht zeigt Kategorie Farben" },
249{ "Move &Down","Nach unten verschieben" }, 244{ "Move &Down","Nach unten verschieben" },
250{ "Move &Up","Nach oben verschieben" }, 245{ "Move &Up","Nach oben verschieben" },
251{ "Name:","Name:" }, 246{ "Name:","Name:" },
252{ "Name","Name" }, 247{ "Name","Name" },
253{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin l�chen m�hten?" }, 248{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin löschen möchten?" },
254{ "%n Days","%n Tage" }, 249{ "%n Days","%n Tage" },
255{ "Never","Nie" }, 250{ "Never","Nie" },
256{ "New event...","Neuer Termin..." }, 251{ "New event...","Neuer Termin..." },
257{ "New event","Neuer Termin" }, 252{ "New event","Neuer Termin" },
258{ "New Event...","Neuer Termin..." }, 253{ "New Event...","Neuer Termin..." },
259{ "New Events/Todos should","Neue Termine/Todos sollten" }, 254{ "New Events/Todos should","Neue Termine/Todos sollten" },
260{ "&New","&Neu" }, 255{ "&New","&Neu" },
261{ "New","Neu", }, 256{ "New","Neu", },
262{ "New Sub-Todo...","Neues Sub-Todo..." }, 257{ "New Sub-Todo...","Neues Sub-Todo..." },
263{ "New Todo...","Neues Todo..." }, 258{ "New Todo...","Neues Todo..." },
264{ "Next Alarm: ","N�hster Alarm: ", }, 259{ "Next Alarm: ","Nächster Alarm: ", },
265{ "&Next Day","&N�hster Tag", }, 260{ "&Next Day","&Nächster Tag", },
266{ "Next days view uses full window","N�hste-X-Tage nutzt Vollbild" }, 261{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" },
267{ "Next month","N�hster Monat" }, 262{ "Next month","Nächster Monat" },
268{ "&Next Week","&N�hste Woche" }, 263{ "&Next Week","&Nächste Woche" },
269{ "Next year","N�hstes Jahr" }, 264{ "Next year","Nächstes Jahr" },
270{ "Next Year","N�hstes Jahr" }, 265{ "Next Year","Nächstes Jahr" },
271{ "%n h","%n Std" }, 266{ "%n h","%n Std" },
272{ "No ending date","Kein End-Datum", }, 267{ "No ending date","Kein End-Datum", },
273{ "No event, nothing to do.","Kein Termin, nichts zu tun.", }, 268{ "No event, nothing to do.","Kein Termin, nichts zu tun.", },
274{ "No event selected.","Kein Termin selektiert" }, 269{ "No event selected.","Kein Termin selektiert" },
275{ "No","Nein" }, 270{ "No","Nein" },
276{ "No program set","Kein Programm ausgew�lt", }, 271{ "No program set","Kein Programm ausgewählt", },
277{ "Normal","Normal" }, 272{ "Normal","Normal" },
278{ "[No selection]","Keine Selektion", }, 273{ "[No selection]","Keine Selektion", },
279{ "No sound set","Kein Sound ausgew�lt", }, 274{ "No sound set","Kein Sound ausgewählt", },
280{ "no time ","keine Zeit ", }, 275{ "no time ","keine Zeit ", },
281{ "no time","keine Zeit", }, 276{ "no time","keine Zeit", },
282{ "No Time","Keine Zeit" }, 277{ "No Time","Keine Zeit" },
283{ "November","November" }, 278{ "November","November" },
284{ "Nov","Nov", }, 279{ "Nov","Nov", },
285{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" }, 280{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" },
286{ "occurrence(s)","Vorkommen" }, 281{ "occurrence(s)","Vorkommen" },
287{ "October","Oktober" }, 282{ "October","Oktober" },
288{ "Oct","Okt", }, 283{ "Oct","Okt", },
289{ "O-due!","�f�lig! " }, 284{ "O-due!","Ü-fällig! " },
290{ "&OK","&OK" }, 285{ "&OK","&OK" },
291{ "Ok+Show!","Ok+Anzeigen" }, 286{ "Ok+Show!","Ok+Anzeigen" },
292{ "Organizer: %1","Organisator %1" }, 287{ "Organizer: %1","Organisator %1" },
293{ "Organizer","Organisator" }, 288{ "Organizer","Organisator" },
294{ "Owner: ","Besitzer: " }, 289{ "Owner: ","Besitzer: " },
295{ "Owner:","Besitzer:" }, 290{ "Owner:","Besitzer:" },
296{ "<p><b>Priority:</b> %2</p>","<p><b>Priorit�:</b> %2</p>" }, 291{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
297{ "Pick a date to display","W�le einen Tag zum anzeigen aus" }, 292{ "Pick a date to display","Wähle einen Tag zum anzeigen aus" },
298{ "Please specify a valid due date.","Bitte gltiges F�ligkeitsdatum angeben."}, 293{ "Please specify a valid due date.","Bitte gültiges Fälligkeitsdatum angeben."},
299{ "Please specify a valid end date, for example '%1'.","Bitte gltiges Enddatum angeben, z.B.'%1'." }, 294{ "Please specify a valid end date,\nfor example '%1'.","Bitte gültiges Enddatum angeben,\nz.B.'%1'." },
300{ "Please specify a valid start date.","Bitte gltiges Startdatum angeben." }, 295{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." },
301{ "Please specify a valid start date, for example '%1'.","Bitte gltiges Startdatum angeben, z.B. '%1'." }, 296{ "Please specify a valid start date,\nfor example '%1'.","Bitte gültiges Startdatum angeben,\nz.B. '%1'." },
302{ "Please specify a valid start time.","Bitte gltige Startzeit angeben."}, 297{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."},
303{ "Please specify a valid start time, for example '%1'.","Bitte gltige Startzeit angeben, z.B. '%1'." }, 298{ "Please specify a valid start time,\nfor example '%1'.","Bitte gültige Startzeit angeben,\nz.B. '%1'." },
304{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" }, 299{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" },
305{ "&Previous Day","Vorheriger Tag" }, 300{ "&Previous Day","Vorheriger Tag" },
306{ "Previous month","Vorheriger Monat" }, 301{ "Previous month","Vorheriger Monat" },
307{ "Previous Month","Vorheriger Monat" }, 302{ "Previous Month","Vorheriger Monat" },
308{ "&Previous Week","Vorherige Woche" }, 303{ "&Previous Week","Vorherige Woche" },
309{ "Previous year","Vorheriges Jahr" }, 304{ "Previous year","Vorheriges Jahr" },
310{ "Previous Year","Vorheriges Jahr" }, 305{ "Previous Year","Vorheriges Jahr" },
311{ "Printing","Drucken" }, 306{ "Printing","Drucken" },
312{ "Priority:","Priorit�:" }, 307{ "Priority:","Priorität:" },
313{ "Private","Privat" }, 308{ "Private","Privat" },
314{ "Proceed","Weiter" }, 309{ "Proceed","Weiter" },
315{ "Public","�fentlich" }, 310{ "Public","Öffentlich" },
316{ "Purge","Entferne" }, 311{ "Purge","Entferne" },
317{ "Purge Completed","Entferne erledigte ToDos" }, 312{ "Purge Completed","Entferne erledigte Todos" },
318{ "Purge To-Dos","Todos bereinigen" }, 313{ "Purge Todos","Todos bereinigen" },
319{ "read-only","schreibgeschtzt" }, 314{ "read-only","schreibgeschützt" },
320{ "Recur every","Wiederh. alle" }, 315{ "Recur every","Wiederh. alle" },
321{ "Recur in the month of","Wiederh. im Monat" }, 316{ "Recur in the month of","Wiederh. im Monat" },
322{ "Recur on the","Wiederh. am" }, 317{ "Recur on the","Wiederh. am" },
323{ "Recur on this day","Wiederh. am diesen Tag" }, 318{ "Recur on this day","Wiederh. am diesen Tag" },
324{ "Recurrence Range...","Wiederholungs Zeitraum..." }, 319{ "Recurrence Range...","Wiederholungs Zeitraum..." },
325{ "Recurrence Range","Wiederholungs Zeitraum" }, 320{ "Recurrence Range","Wiederholungs Zeitraum" },
326{ "Recurrence Rule","Wiederholungs Regel" }, 321{ "Recurrence Rule","Wiederholungs Regel" },
327{ "Recurrence","Wiederholung" }, 322{ "Recurrence","Wiederholung" },
328{ "Recurs","Wiederholung" }, 323{ "Recurs","Wiederholung" },
329{"&Reject","Abweisen"}, 324{"&Reject","Abweisen"},
330{ "Reminder:","Alarm:" }, 325{ "Reminder:","Alarm:" },
331{ "Rem.:","Alarm:" }, 326{ "Rem.:","Alarm:" },
332{ "Rem.","Alarm:" }, 327{ "Rem.","Alarm:" },
333{ "Remote file:","Remote Datei:"}, 328{ "Remote file:","Remote Datei:"},
334{ "Remote IP:","Remote (ferne) IP:" }, 329{ "Remote IP:","Remote (ferne) IP:" },
335{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " }, 330{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " },
336{ "Remote user:","Remote Benutzer"}, 331{ "Remote user:","Remote Benutzer"},
337{ "&Remove","Entfe&rnen" }, 332{ "&Remove","Entfe&rnen" },
338{ "Remove","Entfernen" }, 333{ "Remove","Entfernen" },
339{ "Request response","Bemerkung anfordern" }, 334{ "Request response","Bemerkung anfordern" },
340{ "Role:","Rolle:" }, 335{ "Role:","Rolle:" },
341{ "Role","Rolle" }, 336{ "Role","Rolle" },
342{ "Sat","Sa" }, 337{ "Sat","Sa" },
343{ "Saturday","Samstag" }, 338{ "Saturday","Samstag" },
344{ "Search for:","Suche nach:" }, 339{ "Search for:","Suche nach:" },
345{ "Search In","Suche in" }, 340{ "Search In","Suche in" },
346{ "Search...","Suche..." }, 341{ "Search...","Suche..." },
347{ "Search","Suche" }, 342{ "Search","Suche" },
348{ "Select Addresses","W�le Adressen" }, 343{ "Select Addresses","Wähle Adressen" },
349{ "Select all","Selektiere Alle" }, 344{ "Select all","Selektiere Alle" },
350{ "Select a month","W�le Monat" }, 345{ "Select a month","Wähle Monat" },
351{ "Select a week","W�le Woche" }, 346{ "Select a week","Wähle Woche" },
352{ "Select a year","W�le Jahr" }, 347{ "Select a year","Wähle Jahr" },
353{ "Send directly","Sende direkt" }, 348{ "Send directly","Sende direkt" },
354{ "&Send Messages","&Sende Nachrichten", }, 349{ "&Send Messages","&Sende Nachrichten", },
355{ "Sep","Sep" }, 350{ "Sep","Sep" },
356{ "September","September" }, 351{ "September","September" },
357{ "Shopping","Einkaufen" }, 352{ "Shopping","Einkaufen" },
358{ "Use short date in (WN/E) view","Kurzdatum in (WN/Termin) Ansicht" },
359{ "Show Dates","Zeige Daten" }, 353{ "Show Dates","Zeige Daten" },
360{ "Show events that recur daily in date nav.","Zeige t�l.wiederh.Term.in Datums Nav." }, 354{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." },
361{ "Show Event...","Zeige Termin..." }, 355{ "Show Event...","Zeige Termin..." },
362{ "Show ev. that recur weekly in date nav.","Zeige w�h.wiederh.Term.in Datums Nav." }, 356{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." },
363{ "Show Marcus Bains line","Zeige Marcus Bains Linie" }, 357{ "Show Marcus Bains line","Zeige Marcus Bains Linie" },
364{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." }, 358{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." },
365{ "Show time as:","Zeige Zeit als" }, 359{ "Show time as:","Zeige Zeit als" },
366{ "Show Todo...","Zeige To-Do" }, 360{ "Show Todo...","Zeige To-Do" },
367{ "Show topmost todo prios in What's N.:","Anz. h�hster Prios in What's N.:"},
368{ "Show topmost todo prios in What's Next:","Anz. h�hster Prios in What's Next:"},
369{ "Show vertical screen (Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" }, 361{ "Show vertical screen (Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" },
370{ "&Show","Zeige" }, 362{ "&Show","Zeige" },
371{ "Show...","Zeige..." }, 363{ "Show...","Zeige..." },
372{ "Show","Zeige" }, 364{ "Show","Zeige" },
373{ "Small","Klein" }, 365{ "Small","Klein" },
374{ "Sorry","Entschuldigung" }, 366{ "Sorry","Entschuldigung" },
375{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"}, 367{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"},
376{ "Start:","Start:" }, 368{ "Start:","Start:" },
377{ "Start Date","Start Datum" }, 369{ "Start Date","Start Datum" },
378{ "Start date: %1","Start Datum: %1" }, 370{ "Start date: %1","Start Datum: %1" },
379{ "Start Time","Start Zeit" }, 371{ "Start Time","Start Zeit" },
380{ "Status:","Status:" }, 372{ "Status:","Status:" },
381{ "Status","Status:" }, 373{ "Status","Status:" },
382{ "Summaries","Titel" }, 374{ "Summaries","Titel" },
383{ "Summary:","Titel:" }, 375{ "Summary:","Titel:" },
384{ "Summary","Titel" }, 376{ "Summary","Titel" },
385{ "Sunday","Sonntag" }, 377{ "Sunday","Sonntag" },
386{ "Sun","So" }, 378{ "Sun","So" },
387{ "Sync preferences:","Sync Einstellungen" }, 379{ "Sync preferences:","Sync Einstellungen" },
388{ "Sync Prefs","Sync Einstellungen" }, 380{ "Sync Prefs","Sync Einstellungen" },
389{ "Syncronize","Daten abgleich" }, 381{ "Syncronize","Daten abgleich" },
390{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" }, 382{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" },
391{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" }, 383{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" },
392{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" }, 384{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" },
393{ "Template '%1' does not contain a valid Todo.","Template '%1' enth�t kein gltiges To-Do" }, 385{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges To-Do" },
394{ "Template does not contain a valid Event.","Template '%1' enth�t keinen gltigen Termin" }, 386{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" },
395{ "Template...","Vorlage..." }, 387{ "Template...","Vorlage..." },
396{ "This day","Dieser Tag" }, 388{ "This day","Dieser Tag" },
397{ "This is an experimental feature. ","Dieses Feature ist experimentel" }, 389{ "This is an experimental feature. ","Dieses Feature ist experimentel" },
398{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gel�cht." }, 390{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." },
399{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gel�cht." }, 391{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." },
400{ "Thu","Do" }, 392{ "Thu","Do" },
401{ "Thursday","Donnerstag" }, 393{ "Thursday","Donnerstag" },
402{ "Time associated","Mit Zeit" }, 394{ "Time associated","Mit Zeit" },
403{ "Time bar:","Uhrzeit Zeile:" }, 395{ "Time bar:","Uhrzeit Zeile:" },
404{ "Time && Date","Zeit und Datum" }, 396{ "Time && Date","Zeit und Datum" },
405{ "Time Format","Zeit Format" }, 397{ "Time Format","Zeit Format" },
406{ "Time Format(nr):","Zeit Format(Neustart!)" }, 398{ "Time Format(nr):","Zeit Format(Neustart!)" },
407{ "Date Labels:","Datumsleiste:" }, 399{ "Date Labels:","Datumsleiste:" },
408{ "Time: ","Zeit: " }, 400{ "Time: ","Zeit: " },
409{ "Timezone:","Zeitzone:" }, 401{ "Timezone:","Zeitzone:" },
410{ "Tiny","Sehr klein" },
411{ "To: ","Bis: " }, 402{ "To: ","Bis: " },
412{ "To:","Bis:" }, 403{ "To:","Bis:" },
413{ "Today: ","Heute: " }, 404{ "Today: ","Heute: " },
414{ "Todo due today color:","Heute f�lige To-Do's" }, 405{ "Todo due today color:","Heute fällige To-Do's" },
415{ "To-do items:","To-Do items:" }, 406{ "To-do items:","To-Do items:" },
416{ "Todo overdue color:","�erf�lige To-Do's" }, 407{ "Todo overdue color:","Überfällige To-Do's" },
417{ "Todo","Todo" }, 408{ "Todo","Todo" },
418{ "To-do view shows completed Todos","To-do Ansicht zeigt erledigte To-dos" }, 409{ "To-do view shows completed Todos","To-do Ansicht zeigt erledigte To-dos" },
419{ "ToDoView:","Todo Ansicht:" }, 410{ "ToDoView:","Todo Ansicht:" },
420{ "Toggle Alarm","Wechsle Alarm" }, 411{ "Toggle Alarm","Wechsle Alarm" },
421{ "Toggle Allday","Umschalten Ganztag" }, 412{ "Toggle Allday","Umschalten Ganztag" },
422{ "Tomorrow: ","Morgen: " }, 413{ "Tomorrow: ","Morgen: " },
423{ "Tue","Di" }, 414{ "Tue","Di" },
424{ "Tuesday","Dienstag" }, 415{ "Tuesday","Dienstag" },
425{ "Two entries are in conflict, if: ","Zwei Eintr�e haben einen Konflikt, wenn:" }, 416{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" },
426{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." }, 417{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." },
427{ "Unknown","Unbekannt" }, 418{ "Unknown","Unbekannt" },
428{ "Up","Hinauf" }, 419{ "Up","Hinauf" },
429{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" }, 420{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" },
430{ "User defined","Benutzerdefiniert" }, 421{ "User defined","Benutzerdefiniert" },
431{ "User long date:","Format langes Datum:" }, 422{ "User long date:","Format langes Datum:" },
432{ "User short date:","Forma kurzes Datum:" }, 423{ "User short date:","Forma kurzes Datum:" },
433{ "View","Ansicht" }, 424{ "View","Ansicht" },
434{ "View Fonts","Schriftarten Ansichten" }, 425{ "View Fonts","Schriftarten Ansichten" },
435{ "Views","Ansichten" }, 426{ "Views","Ansichten" },
436{ "Wed","Mi" }, 427{ "Wed","Mi" },
437{ "Wednesday","Mittwoch" }, 428{ "Wednesday","Mittwoch" },
438{ "Week %1","Woche %1" }, 429{ "Week %1","Woche %1" },
439{ "Weekly","W�hentlich" }, 430{ "Weekly","Wöchentlich" },
440{ "Week starts on Sunday","Woche beginnt Sonntags" }, 431{ "Week starts on Sunday","Woche beginnt Sonntags" },
441{ "What's Next View:","What's Next Anz." }, 432{ "What's Next View:","What's Next Anz." },
442{ "What's next ?","Was kommt als n�hstes?(What's Next)" }, 433{ "What's next ?","Was kommt als nächstes?(What's Next)" },
443{ "Working Hours","T�liche Arbeitszeit" }, 434{ "Working Hours","Tägliche Arbeitszeit" },
444{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" }, 435{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" },
445{ "Write back existing entries only","Nur exisitierende Eintr�e zurckschreiben" }, 436{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" },
446{ "Write back synced file","Syncronisierte Datei zurckschreiben" }, 437{ "Write back synced file","Syncronisierte Datei zurückschreiben" },
447{ "Yearly","J�rlich" }, 438{ "Yearly","Jährlich" },
448{ "year(s)","Jahr(e)" }, 439{ "year(s)","Jahr(e)" },
449{ "Yes","Ja" }, 440{ "Yes","Ja" },
450{ "You have %d item(s) selected.\n","Sie haben %d Eintr�e ausgew�lt.\n" }, 441{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" },
451{ "You have to restart KOrganizer for this setting to take effect.","Sie mssem Korganizer neu starten, damit diese Einstellung aktiviert wird." }, 442{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." },
452{ "week(s) on:","Woche(n) am: " }, 443{ "week(s) on:","Woche(n) am: " },
453{ "Full menu bar(nr)","Volle Menuleiste(bn)" }, 444{ "Full menu bar(nr)","Volle Menuleiste(bn)" },
454{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 445{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
455{ "Actual start and end is the\nsunday before this date.","Tats�hlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 446{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
456{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 447{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
457{ "Daylight start:","Sommerzeit Beginn:" }, 448{ "Daylight start:","Sommerzeit Beginn:" },
458{ "Daylight end:","Sommerzeit Ende:" }, 449{ "Daylight end:","Sommerzeit Ende:" },
459{ "Time Zone","Zeitzone" }, 450{ "Time Zone","Zeitzone" },
460{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" }, 451{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" },
461{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" }, 452{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" },
462{ "minutely","mintlich" }, 453{ "minutely","minütlich" },
463{ "hourly","stndlich" }, 454{ "hourly","stündlich" },
464{ "daily","t�lich" }, 455{ "daily","täglich" },
465{ "weekly","w�hentlich" }, 456{ "weekly","wöchentlich" },
466{ "monthly","monatlich" }, 457{ "monthly","monatlich" },
467{ "day-monthly","tag-monatlich" }, 458{ "day-monthly","tag-monatlich" },
468{ "month-yearly","monat-j�rlich" }, 459{ "month-yearly","monat-jährlich" },
469{ "day-yearly","tag-j�rlich" }, 460{ "day-yearly","tag-jährlich" },
470{ "position-yearly","pos-j�rlich" }, 461{ "position-yearly","pos-jährlich" },
471{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" }, 462{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" },
472{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" }, 463{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" },
473{ "Use light color for highlight current day","Helle Farbe fr >>heute<< Hervorhebung" }, 464{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" },
474{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" }, 465{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" },
475{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" }, 466{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" },
476{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." }, 467{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." },
477{ "Event list view uses full window","Listenansicht nutzt Vollbild" }, 468{ "Event list view uses full window","Listenansicht nutzt Vollbild" },
478{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" }, 469{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" },
479{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" }, 470{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" },
480{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" }, 471{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" },
481{ "ViewChange","Ansichtswechsel" }, 472{ "ViewChange","Ansichtswechsel" },
482{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" }, 473{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" },
483{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos fr 5500 Nutzer" }, 474{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" },
484{ "File","Datei" }, 475{ "File","Datei" },
485{ "Clone...","Dupliziere.." }, 476{ "Clone...","Dupliziere.." },
486{ "Move...","Bewege..." }, 477{ "Move...","Bewege..." },
487{ "Beam...","Sende via IR..." }, 478{ "Beam...","Sende via IR..." },
488{ "&Clone...","Dupliziere.." }, 479{ "&Clone...","Dupliziere.." },
489{ "&Move...","Bewege..." }, 480{ "&Move...","Bewege..." },
490{ "&Beam...","Sende via IR..." }, 481{ "&Beam...","Sende via IR..." },
491{ "Show Completed","Zeige erledigte Todos" }, 482{ "Show Completed","Zeige erledigte Todos" },
492{ "Show Quick Todo","Zeige Quick Todo" }, 483{ "Show Quick Todo","Zeige Quick Todo" },
493{ "Unparent Todo","Un-sub Todo" }, 484{ "Unparent Todo","Un-sub Todo" },
494{ "Save selected to file...","Speichere Selektierte..." }, 485{ "Save selected to file...","Speichere Selektierte..." },
495{ "Add Categ. to selected...","Fge zu Selekt. Kateg. hinzu..." }, 486{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." },
496{ "Set Categ. for selected...","Setze Kateg. fr Selekt." }, 487{ "Set Categ. for selected...","Setze Kateg. für Selekt." },
497{ "Beam selected via IR","Sende Selekt. via IR..." }, 488{ "Beam selected via IR","Sende Selekt. via IR..." },
498{ "Search","Suchen" }, 489{ "Search","Suchen" },
499{ "Date Picker","Datum ausw�len" }, 490{ "Date Picker","Datum auswählen" },
500{ "Day View","Tagesansicht" }, 491{ "Day View","Tagesansicht" },
501{ "Work Week","Arbeitswoche" }, 492{ "Work Week","Arbeitswoche" },
502{ "Week","Wochenansicht" }, 493{ "Week","Wochenansicht" },
503{ "Month","Monatsansicht" }, 494{ "Month","Monatsansicht" },
504{ "Todo View","Todo Liste" }, 495{ "Todo View","Todo Liste" },
505{ "Journal","Journal Ansicht" }, 496{ "Journal","Journal Ansicht" },
506{ "Next days","N�hste Tage" }, 497{ "Next days","Nächste Tage" },
507{ "Print agenda selection...","Drucke Agendaselektion..." }, 498{ "Print agenda selection...","Drucke Agendaselektion..." },
508{ "Toggle DateNavigator","Navigator umschalten" }, 499{ "Toggle DateNavigator","Navigator umschalten" },
509{ "Toggle FilterView","Filteransicht umschalten" }, 500{ "Toggle FilterView","Filteransicht umschalten" },
510{ "Prev. month","Vorheriger Monat" }, 501{ "Prev. month","Vorheriger Monat" },
511{ "Go backward","Gehe zurck" }, 502{ "Go backward","Gehe zurück" },
512{ "Go forward","Gehe weiter" }, 503{ "Go forward","Gehe weiter" },
513{ "Synchronize","Synchronisieren" }, 504{ "Synchronize","Synchronisieren" },
514{ "AgendaSize","Agendagr�e" }, 505{ "AgendaSize","Agendagröße" },
515{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" }, 506{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" },
516{ "Import last file","Importiere letzte Datei" }, 507{ "Import last file","Importiere letzte Datei" },
517{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." }, 508{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." },
518{ "Load Calendar Backup","Lade Kalender Backup" }, 509{ "Load Calendar Backup","Lade Kalender Backup" },
519{ "Save Calendar Backup","Speichere Kalender Backup" }, 510{ "Save Calendar Backup","Speichere Kalender Backup" },
520{ "Export VCalendar","Exportiere VCalendar" }, 511{ "Export VCalendar","Exportiere VCalendar" },
521{ "Manage new categories...","Verwalte neue Kategorien..." }, 512{ "Manage new categories...","Verwalte neue Kategorien..." },
522{ "Beam complete calendar...","Sende kompletten Kalender via IR" }, 513{ "Beam complete calendar...","Sende kompletten Kalender via IR" },
523{ "Beam filtered calendar...","Sende gefilterten Kalender via IR" }, 514{ "Beam filtered calendar...","Sende gefilterten Kalender via IR" },
524{ "Remote via ssh","�er Netzwerk via ssh" }, 515{ "Remote via ssh","Über Netzwerk via ssh" },
525{ "With local file","Mit lokaler Datei" }, 516{ "With local file","Mit lokaler Datei" },
526{ "With last file","Mit letzter Datei" }, 517{ "With last file","Mit letzter Datei" },
527{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" }, 518{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" },
528{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" }, 519{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" },
529{ "Save filename","Speichern: Dateinamen w�len" }, 520{ "Save filename","Speichern: Dateinamen wählen" },
530{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\n�erschreiben?\n" }, 521{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" },
531{ "KO/Pi: Warning!","KO/Pi: Warnung!" }, 522{ "KO/Pi: Warning!","KO/Pi: Warnung!" },
532{ "Overwrite!","�erschreibe!" }, 523{ "Overwrite!","Überschreibe!" },
533{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 524{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
534{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Alle selektierten Eintr�e werden\nunwiederbringlich gel�cht.\n(L�chen kann auf dem\nPDA einige Zeit dauern)\n" }, 525{ "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" },
535{ "KO/Pi Confirmation","KO/Pi Best�igung" }, 526{ "KO/Pi Confirmation","KO/Pi Bestätigung" },
536{ "Close dialog to abort deletion!","Schlie� Dialog um das L�chen abzubrechen!" }, 527{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" },
537{ "Deleting item %d ...","L�che Eintrag %d ..." }, 528{ "Deleting item %d ...","Lösche Eintrag %d ..." },
538{ "%d items remaining in list.","%d Eintr�e sind in der Liste verblieben." }, 529{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." },
539{ "Size","Gr�e" }, 530{ "Size","Größe" },
540{ "Date","Datum" }, 531{ "Date","Datum" },
541{ "Mime Type","Datei Typ" }, 532{ "Mime Type","Datei Typ" },
542{ "All Files","Alle Dateien" }, 533{ "All Files","Alle Dateien" },
543{ "Files","Dateien" }, 534{ "Files","Dateien" },
544{ "Documents","DoKumente" }, 535{ "Documents","DoKumente" },
545{ "Select Categories","Selektiere Kategorien" }, 536{ "Select Categories","Selektiere Kategorien" },
546{ " &Deselect All "," Auswahl aufheben " }, 537{ " &Deselect All "," Auswahl aufheben " },
547{ "A&dd","Hinzu" }, 538{ "A&dd","Hinzu" },
548{ "&Modify","�dern" }, 539{ "&Modify","Ändern" },
549{ "Edit Categories","Editiere Kategorien" }, 540{ "Edit Categories","Editiere Kategorien" },
550{ " &Edit Categories "," &Editiere Kategorien " }, 541{ " &Edit Categories "," &Editiere Kategorien " },
551{ "Beam Options","Beam Einstellungen" }, 542{ "Beam Options","Beam Einstellungen" },
552{ " With timezone "," Mit Zeitzone " }, 543{ " With timezone "," Mit Zeitzone " },
553{ " Local time ", " Lokale Zeit " }, 544{ " Local time ", " Lokale Zeit " },
554{ "Manage new Categories","Verwalte neue Kategorien" }, 545{ "Manage new Categories","Verwalte neue Kategorien" },
555{ "Add to category list","Fge zur Kategorieliste hinzu" }, 546{ "Add to category list","Füge zur Kategorieliste hinzu" },
556{ "Remove from Events/Todos","Entferne von Terminen/Todos" }, 547{ "Remove from Events/Todos","Entferne von Terminen/Todos" },
557{ "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�len Sie, was passieren soll:\n " }, 548{ "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 " },
558{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" }, 549{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" },
559{ "File format","Datei Format" }, 550{ "File format","Datei Format" },
560{ "Time format","Zeit Format" }, 551{ "Time format","Zeit Format" },
561{ "Delete all\ncompleted To-Dos?","L�che alle\nerledigten To-Dos?" },
562{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." }, 552{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." },
563{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" }, 553{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" },
564{ "h","Std" }, 554{ "h","Std" },
565{ "min","Min" }, 555{ "min","Min" },
566{ "hou","Std" }, 556{ "hou","Std" },
567{ "day","Tag" }, 557{ "day","Tag" },
568{ "French","Franz�ich" }, 558{ "French","Französich" },
569{ "Time","Zeit" }, 559{ "Time","Zeit" },
570{ "Event Viewer","Termin Ansicht" }, 560{ "Event Viewer","Termin Ansicht" },
571{ "Cancel Sync","Sync Abbrechen" }, 561{ "Cancel Sync","Sync Abbrechen" },
572{ "Remote","Fern" }, 562{ "Remote","Fern" },
573{ "Local","Lokal" }, 563{ "Local","Lokal" },
574{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag w�len" }, 564{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" },
575{ "Local: ","Lokal: " }, 565{ "Local: ","Lokal: " },
576{ "Remote: ","Fern: " }, 566{ "Remote: ","Fern: " },
577{ "Last modified: ","Zuletzt ge�dert: " }, 567{ "Last modified: ","Zuletzt geändert: " },
578{ "Location: ","Ort: " }, 568{ "Location: ","Ort: " },
579{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" }, 569{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" },
580{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" }, 570{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" },
581{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " }, 571{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " },
582{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" }, 572{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" },
583{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " }, 573{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " },
584{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" }, 574{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" },
585{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." }, 575{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." },
586{ "<b>Next recurrence is on:</b>","<b>N�hste Wiederholung ist am:</b>" }, 576{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" },
587{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" }, 577{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" },
588{ "( %1 min before )","( %1 min vorher )" }, 578{ "( %1 min before )","( %1 min vorher )" },
589{ "<b>Alarm on: ","<b>Alarm am: " }, 579{ "<b>Alarm on: ","<b>Alarm am: " },
590{ "<b>Details: </b>","<b>Details: </b>" }, 580{ "<b>Details: </b>","<b>Details: </b>" },
591{ "<p><b>Priority:</b> %2</p>","<p><b>Priorit�:</b> %2</p>" }, 581{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
592{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" }, 582{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" },
593{ "Organizer","Organisator" }, 583{ "Organizer","Organisator" },
594{ "Save","Speichern" }, 584{ "Save","Speichern" },
595{ "Exit (+save)","Beenden (+ speichern)" }, 585{ "Exit (+save)","Beenden (+ speichern)" },
596{ "Home","Zuhause" }, 586{ "Home","Zuhause" },
597{ "Office","Bro" }, 587{ "Office","Büro" },
598{ "Libary","Bcherei" }, 588{ "Libary","Bücherei" },
599{ "Doctor","Arzt" }, 589{ "Doctor","Arzt" },
600{ "Beach","Strand" }, 590{ "Beach","Strand" },
601{ "Conference room","Konferenzraum" }, 591{ "Conference room","Konferenzraum" },
602{ "Drive Home","Heimfahrt" }, 592{ "Drive Home","Heimfahrt" },
603{ "Watch TV","Tv gucken" }, 593{ "Watch TV","Tv gucken" },
604{ "Phone call","Telefonanruf" }, 594{ "Phone call","Telefonanruf" },
605{ "Pay bill","Rechnung bezahlen" }, 595{ "Pay bill","Rechnung bezahlen" },
606{ "Read book","Buch lesen" }, 596{ "Read book","Buch lesen" },
607{ "Watering plants","Pflanzen giessen" }, 597{ "Watering plants","Pflanzen giessen" },
608{"Appointment","Verabredung" }, 598{"Appointment","Verabredung" },
609{"Birthday","Geburtstag" }, 599{"Birthday","Geburtstag" },
610{"Business","Gesch�t" }, 600{"Business","Geschäft" },
611{"Business Travel","Gesch�tsreise" }, 601{"Business Travel","Geschäftsreise" },
612{"Cinema","Kino" }, 602{"Cinema","Kino" },
613{"Customer","Kunde" }, 603{"Customer","Kunde" },
614{"Break","Pause" }, 604{"Break","Pause" },
615{"Breakfast","Frhstck" }, 605{"Breakfast","Frühstück" },
616{"Competition","Wettkampf" }, 606{"Competition","Wettkampf" },
617{"Dinner","Abendessen" }, 607{"Dinner","Abendessen" },
618{"Education","Erziehung" }, 608{"Education","Erziehung" },
619{"Family","Familie" }, 609{"Family","Familie" },
620{"Favorites","Favoriten" }, 610{"Favorites","Favoriten" },
621{"Festival","Festival" }, 611{"Festival","Festival" },
622{"Fishing","Angeln" }, 612{"Fishing","Angeln" },
623{"Flight","Flug" }, 613{"Flight","Flug" },
624{"Gifts","Geschenk" }, 614{"Gifts","Geschenk" },
625{"Holiday","Feiertag" }, 615{"Holiday","Feiertag" },
626{"Holiday Cards","Ansichtskarten" }, 616{"Holiday Cards","Ansichtskarten" },
627{"Hot Contacts","Heisse Kontakte" }, 617{"Hot Contacts","Heisse Kontakte" },
628{"Hiking","Wandern" }, 618{"Hiking","Wandern" },
629{"Hunting","Jagen" }, 619{"Hunting","Jagen" },
630{"Key Customer","Wichtiger Kunde" }, 620{"Key Customer","Wichtiger Kunde" },
631{"Kids","Kinder" }, 621{"Kids","Kinder" },
632{"Lunch","Mittagessen" }, 622{"Lunch","Mittagessen" },
633{"Meeting","Treffen" }, 623{"Meeting","Treffen" },
634{"Miscellaneous","Verschiedenes" }, 624{"Miscellaneous","Verschiedenes" },
635{"Partner","Partner" }, 625{"Partner","Partner" },
636{"Party","Partie" }, 626{"Party","Partie" },
637{"Personal","Privat" }, 627{"Personal","Privat" },
638{"Personal Travel","Privatreise"}, 628{"Personal Travel","Privatreise"},
639{"PHB","PHB" }, 629{"PHB","PHB" },
640{"Phone Calls","Telefonanruf" }, 630{"Phone Calls","Telefonanruf" },
641{"Projects","Projekt" }, 631{"Projects","Projekt" },
642{"Recurring","Wiederholend" }, 632{"Recurring","Wiederholend" },
643{"School","Schule" }, 633{"School","Schule" },
644{"Shopping","Einkaufen" }, 634{"Shopping","Einkaufen" },
645{"Speach","Rede" }, 635{"Speach","Rede" },
646{"Special Occasion","Spez.Gelegenheit" }, 636{"Special Occasion","Spez.Gelegenheit" },
647{"Sports","Sport" }, 637{"Sports","Sport" },
648{"Talk","Vortrag" }, 638{"Talk","Vortrag" },
649{"Travel","Reise" }, 639{"Travel","Reise" },
650{"TV","TV" }, 640{"TV","TV" },
651{"Germany","Deutschland" }, 641{"Germany","Deutschland" },
652{"Sweden","Schweden" }, 642{"Sweden","Schweden" },
653{"Forest","Wald" }, 643{"Forest","Wald" },
654{ "Desert","Wste" }, 644{ "Desert","Wüste" },
655{ "Kitchen","Kche" }, 645{ "Kitchen","Küche" },
656{ "Lake","See" }, 646{ "Lake","See" },
657{"University","Universit�"}, 647{"University","Universität"},
658{"Vacation","Urlaub" }, 648{"Vacation","Urlaub" },
659{"VIP","VIP" }, 649{"VIP","VIP" },
660{ "Import Sharp Calendar","Importiere Sharp Kalender" }, 650{ "Import Sharp Calendar","Importiere Sharp Kalender" },
661{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" }, 651{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" },
662{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" }, 652{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" },
663{ "Cancelled","Gecancelt" }, 653{ "Cancelled","Gecancelt" },
664{ "Multiple sync","Mehrfach Sync" }, 654{ "Multiple sync","Mehrfach Sync" },
665{ "Local file","Lokale Datei" }, 655{ "Local file","Lokale Datei" },
666{ "Last file","Letzte Datei" }, 656{ "Last file","Letzte Datei" },
667{ "Keys + Colors...","Tasten + Farben..." }, 657{ "Keys + Colors...","Tasten + Farben..." },
668{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" }, 658{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" },
669{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" }, 659{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" },
670{ "Choose...","W�le..." }, 660{ "Choose...","Wähle..." },
671{ "Use colors for application:","Setze Farben fr Programm:" }, 661{ "Use colors for application:","Setze Farben für Programm:" },
672{ "Buttons, menus, etc.:","Kn�fe, Menu, etc.:" }, 662{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" },
673{ "Frames, labels, etc.:","Rahmen, Label, etc.:" }, 663{ "Frames, labels, etc.:","Rahmen, Label, etc.:" },
674{ "Show parent To-Do's in What's Next view","Zeige Ober-Todo in What's Next Anz." }, 664{ "Show parent To-Do's","Zeige Ober-Todos" },
675{ "Show location in What's Next view","Zeige Ort in What's Next Anz." }, 665{ "Show location","Zeige Orte" },
676{ "Show events that recur ","Zeige Termine, die sich wiederholen:" }, 666{ "Show events that recur ","Zeige Termine, die sich wiederholen:" },
677{ "Show in every cell ","Zeige in jeder Zelle " }, 667{ "Show in every cell ","Zeige in jeder Zelle " },
678{ "short month","kurzen Monat" }, 668{ "short month","kurzen Monat" },
679{ "icons","Icons" }, 669{ "icons","Icons" },
680{ "Show Sat/Sun together","Zeige Sam/Son zusammen" }, 670{ "Show Sat/Sun together","Zeige Sam/Son zusammen" },
681{ "Categorie colors are applied to text","Kategorie Farben f�ben Text" }, 671{ "Categorie colors are applied to text","Kategorie Farben färben Text" },
682{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" }, 672{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" },
683{ "Day color odd months","Tagesfarbe ungerade Monate" }, 673{ "Day color odd months","Tagesfarbe ungerade Monate" },
684{ "Day color even months","Tagesfarbe gerade Monate" }, 674{ "Day color even months","Tagesfarbe gerade Monate" },
685{ "Color for Sundays + category \"Holiday\"","Farbe fr Sonntag + Kateg.\" Feiertag\"" }, 675{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" },
686{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" }, 676{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" },
687{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" }, 677{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" },
688{ "Colors are applied to text","Farben werden auf Text angewendet" }, 678{ "Colors are applied to text","Farben werden auf Text angewendet" },
689{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" }, 679{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" },
690{ "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�ausgefhrt werden damit die Benachrichtigung funktioniert. Empfehlung fr Zaurus: Diese Option nicht w�len und KO/Pi Alarm Applet installieren.\n" }, 680{ "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" },
691{ "Play beeps count:","Anzahl der Alarmpiepse: " }, 681{ "Play beeps count:","Anzahl der Alarmpiepse: " },
692{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " }, 682{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " },
693{ "Default suspend time in min:","Standard Supendierungs Zeit: " }, 683{ "Default suspend time in min:","Standard Supendierungs Zeit: " },
694{ "Auto suspend count:","Anzahl der auto Suspendierungen" }, 684{ "Auto suspend count:","Anzahl der auto Suspendierungen" },
695{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei fr neu angelegte Alarme:" }, 685{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" },
696{ "New profile","Neues Profil" }, 686{ "New profile","Neues Profil" },
697{ "Clone profile","Klone Profil" }, 687{ "Clone profile","Klone Profil" },
698{ "Delete profile","L�che Profil" }, 688{ "Delete profile","Lösche Profil" },
699{ "Profile:","Profil:" }, 689{ "Profile:","Profil:" },
700{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" }, 690{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" },
701{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 691{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
702{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 692{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
703{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 693{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
704{ "Write back file","Schreibe Datei zurck" }, 694{ "Write back file","Schreibe Datei zurück" },
705{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 695{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
706{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 696{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
707{ "Local device name:","Name dieses Ger�es:" }, 697{ "Local device name:","Name dieses Gerätes:" },
708{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 698{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
709{ "Sync preferences","Synchronisations Einstellungen" }, 699{ "Sync preferences","Synchronisations Einstellungen" },
710{ "Profile kind","Profil Art" }, 700{ "Profile kind","Profil Art" },
711{ "Local file","Lokale Datei" }, 701{ "Local file","Lokale Datei" },
712{ "Local file:","Lokale Datei:" }, 702{ "Local file:","Lokale Datei:" },
713{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 703{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
714{ "Fill in default values for:","Setze Beispiel Werte ein fr:" }, 704{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
715{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter fr ein Passwort!" }, 705{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
716{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"}, 706{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"},
717{ "Device","Ger�:" }, 707{ "Device","Gerät:" },
718{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" }, 708{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" },
719{ "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","Synchronisationsbersicht:\n\n %d items lokal hinzugefgt\n %d items entfernt hinzugefgt\n %d items lokal ge�dert\n %d items entfernt ge�dert\n %d items lokal gel�cht\n %d items entfernt gel�cht\n" }, 709{ "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" },
720{ "Synchronization successful","Synchronisation erfolgreich" }, 710{ "Synchronization successful","Synchronisation erfolgreich" },
721{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." }, 711{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." },
722{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" }, 712{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" },
723{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" }, 713{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" },
724{ "Enter password","Passwort eingeben" }, 714{ "Enter password","Passwort eingeben" },
725{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" }, 715{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" },
726{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." }, 716{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." },
727{ "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 fr das Fehlschlagen\nzu erfahren.\n" }, 717{ "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" },
728{ "Writing back file result: ","Resultat des Dateizurckschreibens: " }, 718{ "Writing back file result: ","Resultat des Dateizurückschreibens: " },
729{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" }, 719{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" },
730{ "Edit Calendar Filters","Editiere Kalendar Filter" }, 720{ "Edit Calendar Filters","Editiere Kalendar Filter" },
731{ "Enter filter name:","Neuer Filter Name:" }, 721{ "Enter filter name:","Neuer Filter Name:" },
732{ "Add Filter","Filter hinzufgen" }, 722{ "Add Filter","Filter hinzufügen" },
733{ "Question","Frage" }, 723{ "Question","Frage" },
734{ "Filter position: ","Filter Position: " }, 724{ "Filter position: ","Filter Position: " },
735{ "Month View","Monatsansicht" }, 725{ "Month View","Monatsansicht" },
736{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gel�cht werden!" }, 726{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" },
737{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 727{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
738{ "Local device name undefined!\nPlease define device name!","Name dieses Ger�es undefiniert!\nBitte Namen angeben!" }, 728{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
739{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen w�len!" }, 729{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" },
740{ "Access: ","Zugriff: " }, 730{ "Access: ","Zugriff: " },
741{ "Needs Action","Aktion notwendig" }, 731{ "Needs Action","Aktion notwendig" },
742{ "Accepted","Akzeptiert" }, 732{ "Accepted","Akzeptiert" },
743{ "Declined","Abgelehnt" }, 733{ "Declined","Abgelehnt" },
744{ "Tentative","Vorl�fig" }, 734{ "Tentative","Vorläufig" },
745{ "Delegated","Beauftragt" }, 735{ "Delegated","Beauftragt" },
746{ "Completed","Vollst�dig" }, 736{ "Completed","Vollständig" },
747{ "In Process","In Bearbeitung" }, 737{ "In Process","In Bearbeitung" },
748{ "Participant","Teilnehmer" }, 738{ "Participant","Teilnehmer" },
749{ "Optional Participant","M�licher Teilnehmer" }, 739{ "Optional Participant","Möglicher Teilnehmer" },
750{ "Observer","Beobachter" }, 740{ "Observer","Beobachter" },
751{ "Chair","Vorsitzender" }, 741{ "Chair","Vorsitzender" },
752{ "Not supported \non desktop!\n","" }, 742{ "Not supported \non desktop!\n","" },
753{ "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 gedrckter linker Maustaste)\nin einer Spalte ausw�len. " }, 743{ "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 vertikale Auswahl zum Drucken zu bestimmen,\nbitte einen vertikalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen.\n(Es wird danach direkt der Termin Dialog angezeigt\n - dort bitte auf Abbrechen klicken) " },
754{ "Date range: ","Datums Zeitspanne: " }, 744{ "Date range: ","Datums Zeitspanne: " },
755{ "Not supported \non PDA!\n","Nicht verfgbar\nauf dem PDA. " }, 745{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " },
756{ "Syncing - close to abort!","Syncing-schlie� um abzubrechen." }, 746{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." },
757{ "Add / remove events","Add./entferne Termine" }, 747{ "Add / remove events","Add./entferne Termine" },
758{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, 748{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." },
759{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, 749{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." },
760{ "\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�dert!\nDatei Gr�se: %1 Bytes.\nZuletzt ge�dert: %2\nM�hten Sie:\n\n - Speichern und die Datei berschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, 750{ "\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" },
761{ "Overwrite","�erschreiben" }, 751{ "Overwrite","Überschreiben" },
762{ "Sync+save","Syncen+speichern" }, 752{ "Sync+save","Syncen+speichern" },
763{ "Default","Standard" }, 753{ "Default","Standard" },
764{ " Categories added to list! "," Kategorien zur Liste hinzugefgt! " }, 754{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " },
765{ " %d items?"," %d Eintr�e?" }, 755{ " %d items?"," %d Einträge?" },
766{ "\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�chen m�hten?" }, 756{ "\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?" },
767{ " ?\n\nDelete:\n"," ?\n\nL�che:\n" }, 757{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" },
768{ "Current","Aktuelle" }, 758{ "Current","Aktuelle" },
769{ "\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�hten sie alle Wiederholungen\nl�chen, oder nur die aktuelle am:\n" }, 759{ "\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" },
770{ "All","Alle" }, 760{ "All","Alle" },
771{ "Data Loss Warning","Datenverlust Warnung" }, 761{ "Data Loss Warning","Datenverlust Warnung" },
772{ "Proceed","Weitermachen" }, 762{ "Proceed","Weitermachen" },
773{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Eintr�e k�nen\nnicht in eine vCalendar\nDatei exportiert werden!" }, 763{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" },
774{ "Filter disabled ","Filter abgeschaltet" }, 764{ "Filter disabled ","Filter abgeschaltet" },
775{ "Filter selected: ","Gew�lter Filter: " }, 765{ "Filter selected: ","Gewählter Filter: " },
776{ "Toggle Cancel","Gecancelt �dern" }, 766{ "Toggle Cancel","Gecancelt ändern" },
777{ "&Toggle Cancel","Gecancel&t �dern" }, 767{ "&Toggle Cancel","Gecancel&t ändern" },
778{ "Configure Toolbar","Konfiguriere Toolbar" }, 768{ "Configure Toolbar","Konfiguriere Toolbar" },
779{ "Stretched TB","Gedehnte TB" }, 769{ "Stretched TB","Gedehnte TB" },
780{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, 770{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" },
781{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, 771{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" },
782{ "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�e ignoriert!\nSie k�nen eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import rckg�gig machen zu k�nen.\n" }, 772{ "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" },
783{ "Not supported \non desktop!\n","Nur verfgbar auf PDA!" }, 773{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" },
784{ "Imported file successfully","Datei erfolgreich importiert" }, 774{ "Imported file successfully","Datei erfolgreich importiert" },
785{ "Error importing file","Fehler beim Importieren der Datei" }, 775{ "Error importing file","Fehler beim Importieren der Datei" },
786{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, 776{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" },
787{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\n�erschreiben?\n" }, 777{ "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" },
788{ "Overwrite!","�erschreiben!" }, 778{ "Overwrite!","Überschreiben!" },
789{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Eintr�e\nwerden nicht importiert!\n" }, 779{ "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" },
790{ "Load backup filename","Lade Backup Dateiname" }, 780{ "Load backup filename","Lade Backup Dateiname" },
791{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, 781{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" },
792{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, 782{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" },
793{ "Save backup filename","Speichere Backup Dateiname" }, 783{ "Save backup filename","Speichere Backup Dateiname" },
794{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\n�erschreiben?\n" }, 784{ "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" },
795{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 785{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
796{ "Details of attendee","Teilnehmerdetails" }, 786{ "Details of attendee","Teilnehmerdetails" },
797{ "Work phone:\n","Telefon Arbeit:\n" }, 787{ "Work phone:\n","Telefon Arbeit:\n" },
798{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, 788{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" },
799{ "Home phone:\n","Telefon privat:\n" }, 789{ "Home phone:\n","Telefon privat:\n" },
800{ "Mobile home phone:\n","Mobiltelefon privat:\n" }, 790{ "Mobile home phone:\n","Mobiltelefon privat:\n" },
801{ "Email:\n","Email:\n" }, 791{ "Email:\n","Email:\n" },
802{ "Alarm disabled","Alarm deaktiviert" }, 792{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" },
803{ "Audio.Al.: ","Audio Al.: " }, 793{ "Audio Al.: ","Audio Al.: " },
804{ "Proc.Al.: ","Proc.Al.: " }, 794{ "Proc.Al.: ","Proz.Al.: " },
805{ "No sound set","Kein Sound definiert" }, 795{ "No sound set","Kein Sound definiert" },
806{ "*.wav|Wav Files","*.wav|Wav Dateien" }, 796{ "*.wav|Wav Files","*.wav|Wav Dateien" },
807{ "No program set","Kein Programm definiert" }, 797{ "No program set","Kein Programm definiert" },
808{ "Running '%1'","Ausfhren '%1'" }, 798{ "Running '%1'","Ausführen '%1'" },
809{ "Playing '%1'","Abspielen '%1'" }, 799{ "Playing '%1'","Abspielen '%1'" },
810{ "Show Sync Events in WN/Agenda view","Zeige Sync Events in WN/Agenda Ansicht" },
811{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, 800{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" },
812{ "Load!","Laden!" }, 801{ "Load!","Laden!" },
813{ "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�cht die aktuellen Daten!\n" }, 802{ "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" },
814{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, 803{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" },
815{ "KO/Pi User translation HowTo","KO/Pi Benutzer-�ersetzung HowTo" }, 804{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" },
816{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 805{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
817{ "Features + hints...","Eigenschaften + Tipps..." }, 806{ "Features + hints...","Eigenschaften + Tipps..." },
818{ "User translation...","Benutzer �ersetzung..." }, 807{ "User translation...","Benutzer Übersetzung..." },
819{ "Sync HowTo...","Synchronisation HowTo..." }, 808{ "Sync HowTo...","Synchronisation HowTo..." },
820{ "Print calendar...","Drucke Kalender..." }, 809{ "Print calendar...","Drucke Kalender..." },
821{ "Anniversary","Jahrestag" }, 810{ "Anniversary","Jahrestag" },
822{ "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�e ignoriert\nwenn sie nicht ver�dert wurden.\n" }, 811{ "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" },
823{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, 812{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" },
824{ "Next recurrence is on: ","N�hste Wiederholung ist am:" }, 813{ "Next recurrence is on: ","Nächste Wiederholung ist am:" },
825{ "<b>Alarm on: </b>","<b>Alarm am: </b>" }, 814{ "<b>Alarm on: </b>","<b>Alarm am: </b>" },
826{ "<b>Access: </b>","<b>Zugriff: </b>" }, 815{ "<b>Access: </b>","<b>Zugriff: </b>" },
827{ "(%1 min before)","(%1 min vorher)" }, 816{ "(%1 min before)","(%1 min vorher)" },
828{ "<b>Categories: </b>","<b>Kategorien: </b>" }, 817{ "<b>Categories: </b>","<b>Kategorien: </b>" },
829{ "Save Journal/Description...","Speichere Journal/Details..." }, 818{ "Save Journal/Description...","Speichere Journal/Details..." },
830{ "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." }, 819{ "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." },
831{ "Continue","Weitermachen" }, 820{ "Continue","Weitermachen" },
832{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefgt" }, 821{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" },
833{ "Attendee:","Teilnehmer:" }, 822{ "Attendee:","Teilnehmer:" },
834{ "Click OK to search ->","Klicke zum Suchen auf OK ->" }, 823{ "Click OK to search ->","Klicke zum Suchen auf OK ->" },
835{ "On day ","Am Tag " }, 824{ "On day ","Am Tag " },
836{ "%1 of ","%1 des Monats" }, 825{ "%1 of ","%1 des Monats" },
837{ "%1 of the year","%1 des Jahres" }, 826{ "%1 of the year","%1 des Jahres" },
838{ "Anonymous","Anonymo" }, 827{ "Anonymous","Anonymo" },
839{ "nobody@nowhere","niemand@nirgendwo" }, 828{ "nobody@nowhere","niemand@nirgendwo" },
840{ "calendar.html","calendar.html" }, 829{ "calendar.html","calendar.html" },
841{ " Local Time"," Locale Zeit" }, 830{ " Local Time"," Locale Zeit" },
842{ "Unknown Name","Unbekannter Name" }, 831{ "Unknown Name","Unbekannter Name" },
843{ "unknown@nowhere","unbekannt@nirgendwo" }, 832{ "unknown@nowhere","unbekannt@nirgendwo" },
844{ "Beam via IR!","Beam via IR!" }, 833{ "Beam via IR!","Beam via IR!" },
845{ "Next Month","N�hster Monat" }, 834{ "Next Month","Nächster Monat" },
846{ "Prio","Prio" }, 835{ "Prio","Prio" },
847{ "Reparent Todo","Mache Sub-Todo" }, 836{ "Reparent Todo","Mache Sub-Todo" },
848{ "tomorrow","morgen" }, 837{ "tomorrow","morgen" },
849{ "today","heute" }, 838{ "today","heute" },
850{ "yesterday","gestern" }, 839{ "yesterday","gestern" },
851{ "Ok","Ok" }, 840{ "Ok","Ok" },
852{ "Ok+Agenda","Ok+Agenda" }, 841{ "Ok+Agenda","Ok+Agenda" },
853{ "Email","Email" }, 842{ "Email","Email" },
854{ "RSVP","RSVP" }, 843{ "RSVP","RSVP" },
855{ "Email:","Email:" }, 844{ "Email:","Email:" },
856{ "Appointment Time ","Termin Zeit " }, 845{ "Appointment Time ","Termin Zeit " },
857{ "2","2" }, 846{ "2","2" },
858{ "3","3" }, 847{ "3","3" },
859{ "4","4" }, 848{ "4","4" },
860{ " 0 %"," 0 %" }, 849{ " 0 %"," 0 %" },
861{ " 20 %"," 20 %" }, 850{ " 20 %"," 20 %" },
862{ " 40 %"," 40 %" }, 851{ " 40 %"," 40 %" },
863{ " 60 %"," 60 %" }, 852{ " 60 %"," 60 %" },
864{ " 80 %"," 80 %" }, 853{ " 80 %"," 80 %" },
865{ "100 %","100 %" }, 854{ "100 %","100 %" },
866{ "Filter","Filter" }, 855{ "Filter","Filter" },
867{ "Configure","Konfiguriere" }, 856{ "Configure","Konfiguriere" },
868{ "What's Next","What's Next" }, 857{ "What's Next","What's Next" },
869{ "Complete calendar...","Kompletten Kalender..." }, 858{ "Complete calendar...","Kompletten Kalender..." },
870{ "Filtered calendar...","Gefilterten Kalender..." }, 859{ "Filtered calendar...","Gefilterten Kalender..." },
871{ "Export to phone","Exportiere zum Handy" }, 860{ "Export to phone","Exportiere zum Handy" },
872{ "Beam receive enabled","Beam Empfang an" }, 861{ "Beam receive enabled","Beam Empfang an" },
873{ "What's new?","Was ist neu?" }, 862{ "What's new?","Was ist neu?" },
874{ "FAQ...","FAQ..." }, 863{ "FAQ...","FAQ..." },
875{ "Licence...","Licence..." }, 864{ "Licence...","Licence..." },
876{ "What's This?","What's This?" }, 865{ "What's This?","What's This?" },
877{ "&Edit...","&Editiere..." }, 866{ "&Edit...","&Editiere..." },
878{ "Oktober","Oktober" }, 867{ "Oktober","Oktober" },
879{ "Title","Titel" }, 868{ "Title","Titel" },
880{ "%1 %","%1 %" }, 869{ "%1 %","%1 %" },
881{ "Enable Pi-Sync","Schalte Pi-Sync an" }, 870{ "Enable Pi-Sync","Schalte Pi-Sync an" },
882{ "Import!","Importiere!" }, 871{ "Import!","Importiere!" },
883{ "inserting birthdays - close to abort!","Burzeltage werden eingefgt - schlie� um abzubrechen!" }, 872{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" },
884{ "Export to phone options","Export ans Handy Optionen" }, 873{ "Export to phone options","Export ans Handy Optionen" },
885{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 874{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." },
886{ "I/O device: ","I/O device: " }, 875{ "I/O device: ","I/O device: " },
887{ "Connection: ","Connection: " }, 876{ "Connection: ","Connection: " },
888{ "Model(opt.): ","Model(opt.): " }, 877{ "Model(opt.): ","Model(opt.): " },
889{ "Write back events in future only","Schreibe nur zuknftige Termine zurck" }, 878{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" },
890{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, 879{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " },
891{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das l�cht alle alten\nToDo/Kalender Daten auf dem Handy!" }, 880{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" },
892{ "Export to mobile phone!","Exportiere auf das Handy!" }, 881{ "Export to mobile phone!","Exportiere auf das Handy!" },
893{ "Export complete calendar","Exportiere kompletten Kalender" }, 882{ "Export complete calendar","Exportiere kompletten Kalender" },
894{ "Writing to phone...","Sende Daten ans Handy..." }, 883{ "Writing to phone...","Sende Daten ans Handy..." },
895{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 884{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
896{ "Retry","Nochmal versuchen" }, 885{ "Retry","Nochmal versuchen" },
897{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 886{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
898{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Ger�!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 887{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" },
899{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 888{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
900{ "Export filtered calendar","Exportiere gefilterten Kalender" }, 889{ "Export filtered calendar","Exportiere gefilterten Kalender" },
901{ "Preferences","Vorlieben" }, 890{ "Preferences","Vorlieben" },
902{ "Global","Global" }, 891{ "Global","Global" },
903{ "Phone","Phone" }, 892{ "Phone","Phone" },
904{ "SMS","SMS" }, 893{ "SMS","SMS" },
905{ "Fax","Fax" }, 894{ "Fax","Fax" },
906{ "Pager","Pager" }, 895{ "Pager","Pager" },
907{ "SIP","SIP" }, 896{ "SIP","SIP" },
908{ "Italian","Italienisch" }, 897{ "Italian","Italienisch" },
909{ "24:00","24:00" }, 898{ "24:00","24:00" },
910{ "12:00am","12:00am" }, 899{ "12:00am","12:00am" },
911{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 900{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
912{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 901{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
913{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 902{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
914{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 903{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
915{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 904{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
916{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 905{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
917{ "Used Mail Client","Benutzter Mail Client" }, 906{ "Used Mail Client","Benutzter Mail Client" },
918{ "Channel:","Channel:" }, 907{ "Channel:","Channel:" },
919{ "Message:","Message:" }, 908{ "Message:","Message:" },
920{ "Parameters:","Parameter:" }, 909{ "Parameters:","Parameter:" },
921{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 910{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
922{ "extra Message:","extra Message:" }, 911{ "extra Message:","extra Message:" },
923{ "extra Parameters:","extra Parameter:" }, 912{ "extra Parameters:","extra Parameter:" },
924{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 913{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
925{ "External Apps.","Externe Appl." }, 914{ "External Apps.","Externe Appl." },
926{ "24 hours","24 Std." }, 915{ "24 hours","24 Std." },
927{ "3 hours","3 Std." }, 916{ "3 hours","3 Std." },
928{ "1 hour","1 Std." }, 917{ "1 hour","1 Std." },
929{ "15 minutes","15 Min." }, 918{ "15 minutes","15 Min." },
930{ "5 minutes","5 Min." }, 919{ "5 minutes","5 Min." },
931{ "1 minute","1 Min." }, 920{ "1 minute","1 Min." },
932{ "23","23" }, 921{ "23","23" },
933{ "Mon 15","Mon 15" }, 922{ "Mon 15","Mon 15" },
934{ "Configure KO","Konfiguriere KO" }, 923{ "Configure KO","Konfiguriere KO" },
935{ "Event text","Termin Text" }, 924{ "Event text","Termin Text" },
936{ "ToDo","ToDo" }, 925{ "ToDo","Todo" },
937{ "Today","Heute" }, 926{ "Today","Heute" },
938{ "What's Next View","What's Next Ansicht" }, 927{ "What's Next View","What's Next Ansicht" },
939{ "Show Sync Events in \nWhat's Next/Agenda view","Zeige Sync Termine in \nWhat's Next/Agenda view" },
940{ "Use short date in \nWhat's Next/Event view","Zeige Kurzdatum in \nWhat's Next/Event view" },
941{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, 928{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" },
942{ "Alarm","Alarm" }, 929{ "Alarm","Alarm" },
943{ "Used %1 Client","Benutzter %1 Client" }, 930{ "Used %1 Client","Benutzter %1 Client" },
944{ "No email client installed","Kein Email Klient installiert" }, 931{ "No email client installed","Kein Email Klient installiert" },
945{ "Userdefined email client","Benutzerdef. Email Klient" }, 932{ "Userdefined email client","Benutzerdef. Email Klient" },
946{ "OM/Pi email client","OM/Pi Email Klient" }, 933{ "OM/Pi email client","OM/Pi Email Klient" },
947{ "Include in multiple ","Beziehe in multiple " }, 934{ "Include in multiple ","Beziehe in multiple " },
948{ "calendar ","Kalender " }, 935{ "calendar ","Kalender " },
949{ "addressbook ","Adressbuch " }, 936{ "addressbook ","Adressbuch " },
950{ "pwmanager","PWmanager" }, 937{ "pwmanager","PWmanager" },
951{ " sync"," Sync ein" }, 938{ " sync"," Sync ein" },
952{ "Write back synced data","Schreibe gesyncte Daten zurck" }, 939{ "Write back synced data","Schreibe gesyncte Daten zurück" },
953{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Eintr�e zurck" }, 940{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" },
954{ "-- Write back (calendar) entries in future only","-- Schreibe nur zuknftige Kalender-Eintr�e zurck" }, 941{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" },
955{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, 942{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " },
956{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 943{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
957{ "Mobile device (cell phone)","Mobiles Ger� (Handy)" }, 944{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" },
958{ "Help...","Hilfe..." }, 945{ "Help...","Hilfe..." },
959{ "Local file Cal:","Lokale Datei Kal:" }, 946{ "Local file Cal:","Lokale Datei Kal:" },
960{ "Local file ABook:","Lokale Datei ABuch:" }, 947{ "Local file ABook:","Lokale Datei ABuch:" },
961{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 948{ "Local file PWMgr:","Lokale Datei PWMgr:" },
962{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 949{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
963{ "Calendar:","Kalender:" }, 950{ "Calendar:","Kalender:" },
964{ "AddressBook:","AdressBuch:" }, 951{ "AddressBook:","AdressBuch:" },
965{ "PWManager:","PWManager:" }, 952{ "PWManager:","PWManager:" },
966{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 953{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
967{ "ssh/scp","ssh/scp" }, 954{ "ssh/scp","ssh/scp" },
968{ "ftp","ftp" }, 955{ "ftp","ftp" },
969{ "Password for remote access: (could be the same for each)","Passwort fr entfernten Zugriff: (kann dasselbe sein fr alle)" }, 956{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" },
970{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein fr alle)" }, 957{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" },
971{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte fr alle unterschiedlich sein)" }, 958{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" },
972{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Ger�" }, 959{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" },
973{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Ger�" }, 960{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" },
974{ "Insert device where\nphone is connected. E.g.:\n","Fge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, 961{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" },
975{ "KDE-Pim sync config","KDE-Pim sync Konfig" }, 962{ "KDE-Pim sync config","KDE-Pim sync Konfig" },
976{ "Insert kind of connection,e.g.:\n","Fge Art der Verbindung ein,z.B.:\n" }, 963{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" },
977{ "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 fge Model Name ein:\n" }, 964{ "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" },
978{ "Port number (Default: %1)","Port Nummer (Default: %1)" }, 965{ "Port number (Default: %1)","Port Nummer (Default: %1)" },
979{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, 966{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" },
980{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, 967{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" },
981{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, 968{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" },
982{ "Enter port for Pi-Sync","Port Nummer fr Pi-Sync" }, 969{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" },
983{ "Disable Pi-Sync","Schalte Pi-Sync aus" }, 970{ "Disable Pi-Sync","Schalte Pi-Sync aus" },
984{ "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!" }, 971{ "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!" },
985{ "KDE-Pim Sync","KDE-Pim Sync" }, 972{ "KDE-Pim Sync","KDE-Pim Sync" },
986{ "Multiple profiles","Multi-Sync Profile" }, 973{ "Multiple profiles","Multi-Sync Profile" },
987{ "Device: ","Ger�: " }, 974{ "Device: ","Gerät: " },
988{ "Multiple sync started.","Multi-Sync gestartet." }, 975{ "Multiple sync started.","Multi-Sync gestartet." },
989{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert fr Multi-Sync" }, 976{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" },
990{ "Turn filter on","Schalte Filter an" }, 977{ "Turn filter on","Schalte Filter an" },
991{ "Turn filter off","Schalte Filter aus" }, 978{ "Turn filter off","Schalte Filter aus" },
992{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" }, 979{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" },
993{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschtzt</p>\n" }, 980{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" },
994{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" }, 981{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" },
995{ "<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" }, 982{ "<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" },
996{ "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrn</b>: Information(Beschreibung) verfgbar.([i] in WN Ansicht)</p>\n" }, 983{ "<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" },
997{ "<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" }, 984{ "<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" },
998{ "<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" }, 985{ "<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" },
999{ "<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" }, 986{ "<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" },
1000{ "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(fr quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" }, 987{ "<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" },
1001{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" }, 988{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" },
1002{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" }, 989{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" },
1003{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" }, 990{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" },
1004{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schlie� Dialog.</p>\n" }, 991{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" },
1005{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" }, 992{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" },
1006{ "<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" }, 993{ "<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" },
1007{ "<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�e</p>\n" }, 994{ "<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" },
1008{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: N�hster/vorheriger Eintrag</p>\n" }, 995{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" },
1009{ "<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" }, 996{ "<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" },
1010{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" }, 997{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" },
1011{ "<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" }, 998{ "<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" },
1012{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" }, 999{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" },
1013{ "<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" }, 1000{ "<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" },
1014{ "<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" }, 1001{ "<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" },
1015{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" }, 1002{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" },
1016{ "<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 fr das Todo, welches mit shift+Sselektiert wurde.</p>\n" }, 1003{ "<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" },
1017{ "<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" }, 1004{ "<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" },
1018{ "<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" }, 1005{ "<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" },
1019{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" }, 1006{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" },
1020{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" }, 1007{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" },
1021{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" }, 1008{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" },
1022{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" }, 1009{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" },
1023{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: L�che selektiertes Item</p>\n" }, 1010{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" },
1024{ "<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" }, 1011{ "<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" },
1025{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: N�hste Woche | <b>right+ctrl</b>: N�hste Woche</p>\n" }, 1012{ "<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" },
1026{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" }, 1013{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" },
1027{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" }, 1014{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" },
1028{ "<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�e</p>\n" }, 1015{ "<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" },
1029{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Fge Sub-Todo hinzu | <b>X</b>: Zeige/verstecke Datenavigator</p>\n" }, 1016{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" },
1030{ "<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" }, 1017{ "<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" },
1031{ "<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" }, 1018{ "<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" },
1032{ "<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" }, 1019{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" },
1033{ "<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" }, 1020{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" },
1034{ "<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" }, 1021{ "<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" },
1035{ "<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ","<p><b>N</b>: N�hste-Tage Ansicht days view| <b>W</b>: What's next Ansicht\n " }, 1022{ "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: Nächste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " },
1036{ "<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" }, 1023{ "<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" },
1037{ "<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" }, 1024{ "<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" },
1038{ "<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" }, 1025{ "<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" },
1039{ "<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" }, 1026{ "<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" },
1040{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) fr selektiertes Item</p>\n" }, 1027{ "<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" },
1041{ "<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" }, 1028{ "<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" },
1042{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" }, 1029{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" },
1043{ "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�dert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgrnden wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\n�derungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie k�nen eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" }, 1030{ "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" },
1044{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" }, 1031{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" },
1045{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" }, 1032{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" },
1046{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" }, 1033{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" },
1047{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" }, 1034{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" },
1048{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfr den Zaurus ist verfgbar\nals zus�zliche Anwendung\n" }, 1035{ "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" },
1049{ "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�licherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht untersttzt.\n" }, 1036{ "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" },
1050{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" }, 1037{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" },
1051{ "KO/Pi FAQ","KO/Pi FAQ" }, 1038{ "KO/Pi FAQ","KO/Pi FAQ" },
1052{ "(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.info\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.info\n","(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.info\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 fr\nLinux, Zaurus-PDA und Windows\nwww.korganizer.org\nwww.pi-sync.info\n" }, 1039{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" },
1053{ "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n","PDA-Edition\nfr: Zaurus 5x00 / 7x0 / 8x0\n" },
1054{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" }, 1040{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" },
1055{ "About KOrganizer/Pi","�er KOrganizer/Pi" }, 1041{ "About KOrganizer/Pi","Über KOrganizer/Pi" },
1056{ "From: ","Von: " }, 1042{ "From: ","Von: " },
1057{ "Remove sync info","Entferne Sync Info" }, 1043{ "Remove sync info","Entferne Sync Info" },
1058{ "For all profiles","Fr alle Profile" }, 1044{ "For all profiles","Für alle Profile" },
1059{ "Hide not Running","Verstecke nicht Laufende" }, 1045{ "Hide not Running","Verstecke nicht Laufende" },
1060{ "ME","ME" }, 1046{ "ME","ME" },
1061{ "Toolbar","Toolbar" }, 1047{ "Toolbar","Toolbar" },
1062{ "Undo Delete...","L�chen rckg�gig machen..." }, 1048{ "Undo Delete...","Löschen rückgängig machen..." },
1063{ "Undo Delete","L�chen rckg�gig machen" }, 1049{ "Undo Delete","Löschen rückgängig machen" },
1064{ "KDE Sync HowTo...","KDE Sync HowTo..." }, 1050{ "KDE Sync HowTo...","KDE Sync HowTo..." },
1065{ "Multi Sync HowTo...","Multi Sync HowTo..." }, 1051{ "Multi Sync HowTo...","Multi Sync HowTo..." },
1066{ "Januar","Januar" }, 1052{ "Januar","Januar" },
1067{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" }, 1053{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" },
1068{ "No Filter","Kein Filter" }, 1054{ "No Filter","Kein Filter" },
1069{ "Multiple Sync options","Multi Sync Optionen" }, 1055{ "Multiple Sync options","Multi Sync Optionen" },
1070{ "Sync algo options","Sync Ablauf Optionen" }, 1056{ "Sync algo options","Sync Ablauf Optionen" },
1071{ "Apply filter when adding data to local:","Filter fr das Hinzufgen von Daten zu Lokal:" }, 1057{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
1072{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 1058{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
1073{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 1059{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
1074{ "Write back options","Optionen zum Zurckschreiben" }, 1060{ "Write back options","Optionen zum Zurückschreiben" },
1075{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Eintr�e zurck" }, 1061{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
1076{ "Apply filter when adding data to remote:","Filter fr das Hinzufgen von Daten zu Entfernt:" }, 1062{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
1077{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 1063{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
1078{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 1064{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
1079{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Eintr�e fr Zeitspanne zurck" }, 1065{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
1080{ "Time period","Zeitspanne" }, 1066{ "Time period","Zeitspanne" },
1081{ "From ","Von " }, 1067{ "From ","Von " },
1082{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 1068{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
1083{ " weeks in the future "," Wochen in der Zukunft " }, 1069{ " weeks in the future "," Wochen in der Zukunft " },
1084{ "Profile kind specific settings","Profil Art abh�gige Einstellungen" }, 1070{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
1085{ "Local temp file:","Lokale temp Datei:" }, 1071{ "Local temp file:","Lokale temp Datei:" },
1086{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 1072{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
1087{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 1073{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
1088
1089
1090
1091
1092{ "Language","Sprache" }, 1074{ "Language","Sprache" },
1093{ "Time Format","Zeit Format" }, 1075{ "Time Format","Zeit Format" },
1094{ "Time Zone","Zeit Zone" }, 1076{ "Time Zone","Zeit Zone" },
1095{ "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" }, 1077{ "%1 groups subscribed","%1 Guppen abboniert" },
1096{ "<b>Set new data storage dir:</b>","<b>Setze neues Datenspeicherverzeichnis:</b>" }, 1078{ "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" },
1097{ "Not existing dirs are created automatically","Nicht existierende Verzeichnisse werden erstellt" }, 1079{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
1080{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
1098{ "Save settings","Speichere Einstellungen" }, 1081{ "Save settings","Speichere Einstellungen" },
1099{ "Save standard","Speichere Standard" }, 1082{ "Save standard","Speichere Standard" },
1100{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 1083{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
1101{ "The settings of the storage\ndir is saved in the file\n%1","Die Einstellungen des Speicherverzeichnisses\nwerden in folgender Datei gespeichert:\n%1" }, 1084{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
1102{ "Data storage path","Daten Speicherpfad" }, 1085{ "Data storage path","Daten Speicherpfad" },
1103{ "Language","Sprache" }, 1086{ "Language","Sprache" },
1104{ "Show time in agenda items","Zeige Zeit in Agenda Items" }, 1087{ "Show time in agenda items","Zeige Zeit in Agenda Items" },
1105{ "Color for Sundays + category "Holiday"","Farbe fr Sonntags + Kategorie "Feiertag"" }, 1088{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" },
1106{ "Show events, that are done in \nWhat's Next view","Zeige abgelaufene Termine in\nWhat's Next Ansicht" }, 1089{ "Show events, that are done","Zeige abgelaufene Termine" },
1107{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos in To-do Ansicht" }, 1090{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" },
1108{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 1091{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
1109{ "KO/Pi","KO/Pi" }, 1092{ "KO/Pi","KO/Pi" },
1110{ "There is nothing to undo!","Es gibt nichts zum\nRckg�gigmachen!" }, 1093{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" },
1111{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." }, 1094{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." },
1112{ "Sound.Al.: ","Sound.Al.: " }, 1095{ "Sound.Al.: ","Sound.Al.: " },
1113{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" }, 1096{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" },
1114{ "Restore","Wiederherstellen" }, 1097{ "Restore","Wiederherstellen" },
1115{ "\nAre you sure you want\nto restore this?","\nM�hten Sie das wirklicht\nwiederherstellen?" }, 1098{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklicht\nwiederherstellen?" },
1116{ "% completed","% komplett" }, 1099{ "% completed","% erledigt" },
1117{ "%d item(s) found.","%d Item(s) gefunden." }, 1100{ "%d item(s) found.","%d Item(s) gefunden." },
1118{ "Set complete","МединтекÑ-2005" }, 1101{ "Set complete","Setze auf erledigt" },
1119{ "(cancelled)","(gecancelt)" }, 1102{ "(cancelled)","(gecancelt)" },
1120{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" }, 1103{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" },
1104{ " Local time "," Locale Zeit " },
1105{ "Form2","Form2" },
1106{ "Filter enabled","Filter angeschaltet" },
1107{ "Edit Filters","Ändere Filter" },
1108{ "Print What's Next View...","Drucke What's Next Ansicht..." },
1109{ "Agenda","Agenda" },
1110{ " ("," (" },
1111{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" },
1112{ "Print","Print" },
1113{ "&Setup Printer...","Drucker &Setup..." },
1114{ "View Type","Zeige Typ" },
1115{ "Page &orientation:","Seiten Ausrichtung:" },
1116{ "Use Default of Selected Style","Default des selektierten Stils" },
1117{ "Use Default Setting of Printer","Default Einstellung des Druckers" },
1118{ "Portrait","Portrait" },
1119{ "Landscape","Landschaft" },
1120{ "Print day","Drucke Tag" },
1121{ "CalPrintDay_Base","CalPrintDay_Base" },
1122{ "Date && Time Range","Datum && Zeitspanne" },
1123{ "&End date:","&Enddatum:" },
1124{ "&Start date:","&Startdatum:" },
1125{ "Start &time:","Startzeit:" },
1126{ "End ti&me:","Endzeit:" },
1127{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" },
1128{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" },
1129{ "Alt+D","Alt+D" },
1130{ "&Use colors","Nutze Farben" },
1131{ "Alt+U","Alt+U" },
1132{ "Print week","Drucke Woche" },
1133{ "CalPrintWeek_Base","CalPrintWeek_Base" },
1134{ "Use &colors","Nutze Farben" },
1135{ "Type of View","Typ der Ansicht" },
1136{ "Print as &Filofax page","Drucke als &Filofax Seite" },
1137{ "Alt+F","Alt+F" },
1138{ "Print as &timetable view:","Drucke als Zeittabelle:" },
1139{ "Alt+T","Alt+T" },
1140{ "Print as split week view","Drucke als gesplittete Wochenansicht" },
1141{ "Print month","Drucke Monat" },
1142{ "CalPrintMonth_Base","CalPrintMonth_Base" },
1143{ "&Start month:","&Startmonat:" },
1144{ "&End month:","&Endmonat:" },
1145{ "Print week &numbers","Drucke Wochen Nummer(n)" },
1146{ "Print todos","Drucke Todos" },
1147{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" },
1148{ "Include &description of the item","Inclusive Itembeschreibung" },
1149{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" },
1150{ "Include &priority of the item","Inclusive Priorität des Items" },
1151{ "Items to Print","Zu druckende Items" },
1152{ "&From:","Von:" },
1153{ "&To:","Bis:" },
1154{ "Print &all todo items","Drucke alle Todo Items" },
1155{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" },
1156{ "Only items due in the &range:","Nur Items in dem Zeitraum:" },
1157{ "Todo List","Todo Liste" },
1158{ "&Title:","&Titel:" },
1159{ "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" },
1160{ "Todo list","Todo Liste" },
1161{ "&Print...","Drucke..." },
1162{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" },
1163{ "[Unconfigured]","[Unkonfiguriert]" },
1164{ "OK","OK" },
1165{ "FilterEditor","FilterEditor" },
1166{ "Include","Inclusive" },
1167{ "Exclude","Exclusive" },
1168{ "Edit Selection...","Editiere Auswahl" },
1169{ "recurring events","wiederholende Termine" },
1170{ "recurr. events","wiederh.Termine" },
1171{ "completed to-dos","erledigte Todos" },
1172{ "events","Termine" },
1173{ "todos","Todos" },
1174{ "journals","Journale" },
1175{ "public","öffentl." },
1176{ "private","privat" },
1177{ "confidential","vertraul." },
1178{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gelöscht!" },
1179{ "Yesterday","Gestern" },
1180{ "Day after tomorrow","Übermorgen" },
1181{ "Tomorrow","Morgen" },
1182{ "Day before yesterday","Vorgestern" },
1183{ "Size %1","Größe %1" },
1184{ "New Agendasize: %1","Neue Agendagröße: %1" },
1185{ " (%1 y.)"," (%1 J.)" },
1186{ "Allday:","Ganztägig:" },
1187{ "compl.todos","erled.Todos" },
1188{ "Day view","Tagesansicht" },
1189{ "Next days","Nächste Tage" },
1190{ "Next week","Nächste Woche" },
1191{ "Next two weeks","Nächste zwei Wochen" },
1192{ "This month","Dieser Monat" },
1193{ "Journal view","Journal" },
1194{ "Display all opened","Zeige alle geöffnet" },
1195{ "Display all closed","Zeige alle geschlossen" },
1196{ "Display all flat","Zeige alle flach" },
1197{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" },
1198{ "Default todo done color:","Standard Todo erledigt Farbe" },
1199{ "Select week %1-%2","Wähle Woche %1-%2" },
1200{ "Select Week","Wähle Woche" },
1201{ "Set alarm for selected...","Setze Alarm für Selekt..." },
1202{ "Set Alarm!","Setze Alarm!" },
1203{ "Canged alarm for %1 items","Alarm für %1 Items geändert" },
1204{ " and "," und " },
1205{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" },
1206{ "Mail to selected","Mail an Ausgewählte" },
1207{ "Mail to all","Mail an Alle" },
1208{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" },
1209{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" },
1210{ " on"," am" },
1211{ " completed on "," erledigt am " },
1212{ "Save as Event template","Speichere als Vorlage" },
1213{ "Load Event template","Lade Termin Vorlage" },
1214{ "Save as Journal template","Speichere als Journal Vorlage" },
1215{ "Insert Journal template","Füge Journal Vorlage ein" },
1216{ "Sub todos:<br>","Unter Todos:<br>" },
1217{ "Parent todo:<br>","Über Todo:<br>" },
1218{ "Set current as color category","Setze Gewählte als Farbkategorie" },
1219{ " completed"," erledigt" },
1220{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" },
1221{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
1222{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
1223{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
1224{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" },
1225{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
1226{ "Error","Fehler" },
1227{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." },
1228{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
1229{ "Warning","Warnung" },
1230{ "Select week number","Wähle Wochen Nummer" },
1231{ "Februar","Februar" },
1232{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" },
1233{ "W","W" },
1234{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" },
1235{ "T: %1","T: %1" },
1236{ "Start: ","Start: " },
1237{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " },
1238{ "Password for remote access:","Passwort für fernen Zugriff:" },
1239{ "Remote IP address:","Ferne IP Adresse:" },
1240{ "Remote port number:","Ferne Port Nummer:" },
1241{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
1242{ "Remote from: ","Fern von: " },
1243{ "Local from: ","Lokal von: " },
1244{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" },
1245{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" },
1246{ "Write back","Schreibe zurück" },
1247{ "KO/Pi Synchronization","KO/Pi Synchronisation" },
1248{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
1249{ "Received sync request","Sync Anfrage erhalten" },
1250{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." },
1251{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
1252{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
1253{ "Sending file...","Sende Datei..." },
1254{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
1255{ "Receiving synced file...","Gesyncte Daten erhalten..." },
1256{ "Received %1 bytes","%1 Bytes erhalten" },
1257{ "Writing file to disk...","Speichere Datei..." },
1258{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
1259{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" },
1260{ "Synchronize!","Synchronisiere!" },
1261{ "High clock skew!","Großer Uhrzeitunterschied!" },
1262{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
1263{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" },
1264{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." },
1265{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" },
1266{ "List week view","Listenwochenansicht" },
1267{ "List week","Listenwochenansicht" },
1268{ "Next Week","Nächste Woche" },
1269{ "Previous Week","Vorherige Woche" },
1270{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." },
1271{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" },
1272{ "Details","Details" },
1273{ "Created time","Erstellt Zeit" },
1274{ "Last modified time","Geändert Zeit" },
1275{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" },
1276{ "View Options","Anzeige Optionen" },
1277{ "<b>Created: ","<b>Erstellt am: " },
1278{ "<b>Last modified: ","<b>Zuletzt geändert am: " },
1279{ "Journal: ","Journal: " },
1280{ "yearly","jährlich" },
1281{ "(%1) ","%1-" },
1282{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" },
1283{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" },
1284{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" },
1285{ "Summary/Loc.","Titel/Ort" },
1286{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." },
1287{ "Week Number","Wochennummer" },
1288{ "Import","Importiere" },
1289{ "Export","Exportiere" },
1290{ "Beam","Beame" },
1291{ "Export selected","Exportiere Selektierte" },
1292{ "As iCal (ics) file...","Als iCal (ics) Datei..." },
1293{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." },
1294{ "Journal/Details...","Journale/Details..." },
1295{ "Agenda View","Agenda Ansicht" },
1296{ "Show current time","Zeige aktuelle Zeit" },
1297{ "Edit new item","Bearbeite neuen Eintrag" },
1298{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" },
1299{ "There is no next alarm.","Es gibt keinen nächsten Alarm." },
1300{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" },
1301{ "The next alarm is in:\n","Der nächste Alarm ist in:\n" },
1302{ "%1 days\n","%1 Tagen\n" },
1303{ "1 day\n","1 Tag\n" },
1304{ "%1 hours\n","%1 Stunden\n" },
1305{ "1 hour\n","1 Stunde\n" },
1306{ "%1 minutes\n","%1 Minuten\n" },
1307{ "1 minute\n","1 Minute\n" },
1308{ "Only one toolbar","Nur eine Toolbar" },
1309{ "Print","Drucke" },
1310{ "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." },
1311{ "There is nothing selected!","Es ist nichts ausgewählt!" },
1312{ "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " },
1313{ "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" },
1314{ "This prints the view as you see it.\n(With the complete content, of course.)\nYou may change the print layout by resizing the view.\nPrint unscaled may print several pages\ndepending on the amount of data.\nPrint scaled down will print all on one page.\nPrint scaled up/down will print all on one page,\nbut will scale up the text to page boundaries,\nif the text is smaller than the page.\nYou can select page geometry setup in the next dialog.\n","Dies druckt die Ansicht wie man sie sieht.\n(Mit dem kompletten Inhalt natürlich.)\nMan kann das Layout ändern durch ändern der Fenstergröße.\nDrucke unskaliert druckt ggf. mehrere Seiten\nabhängig von der Menge der Daten.\nDrucke runterskaliert um auf eine Seite zu passen\ndruckt alles auf eine Seite.\nDrucke hoch/runterskaliert um genau auf eine Seite zu passen\nvergrößert den Text gegebenenfalls.\nDas Seitenlayout kann im nächsten Dialog gewählt werden.\n" },
1315{ "KO/Pi Printout","KO/Pi Ausdruck" },
1316{ "Print unscaled","Drucke unskaliert" },
1317{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." },
1318{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." },
1319{ "Printout Mode","Druck Modus" },
1320{ "Filter menu icon","Filtermenu Icon" },
1321{ "<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n","<p><b>A+(shift oder ctrl)</b>: Zeige Zeit bis zum nächsten Alarm</p>\n" },
1322{ "<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n","<p><b>N</b>: Wechsle zur nächsten Ansicht, die ein Icon in der Toolbar hat</p>\n" },
1323{ "%1d","%1t" },
1324{ "%1h","%1std" },
1325{ "%1min","%1min" },
1326{ "( %1 before )","( %1 vorher )" },
1327{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" },
1328{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" },
1329{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." },
1330{ "Show Sync Events in WN+Agenda","Zeige Sync-Ereignisse in WN+Agenda" },
1331{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" },
1332{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" },
1333{ " on "," am " },
1334{ "On: ","Am: " },
1335{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" },
1336{ "Start/Stop todo...","Starte/Stoppe Todo..." },
1337{ "Color for running todos:","Farbe für laufende Todos:" },
1338{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" },
1339{ "Todo is started","Todo is gestarted" },
1340{ "Stop todo","Stoppe Todo" },
1341{ "Todo is stopped","Todo ist gestoppt" },
1342{ "Start todo","Starte Todo" },
1343{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" },
1344{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" },
1345{ "Todo has subtodos","Todo hat Untertodos" },
1346{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" },
1347{ "Alternate background","Abwechselnder Hintergrund" },
1348{ "Colors","Farben" },
1349{ "Click on new parent item","Klicke auf neues Übertodo" },
1350{ "Reparenting aborted!","Übertodo setzen abgebrochen" },
1351{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" },
1352{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" },
1353{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" },
1354{ "","" },
1355{ "","" },
1356{ "","" },
1121{ "","" }, 1357{ "","" },
1122{ "","" }, 1358{ "","" },
1123{ "","" }, 1359{ "","" },
1124{ "","" }, 1360{ "","" },
1125{ "","" }, 1361{ "","" },
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index bd7376a..904bbe2 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,4151 +1,4151 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Requires the Qt and KDE widget libraries, available at no cost at 4 Requires the Qt and KDE widget libraries, available at no cost at
5 http://www.troll.no and http://www.kde.org respectively 5 http://www.troll.no and http://www.kde.org respectively
6 6
7 Copyright (c) 1997, 1998, 1999 7 Copyright (c) 1997, 1998, 1999
8 Preston Brown (preston.brown@yale.edu) 8 Preston Brown (preston.brown@yale.edu)
9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl) 9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl)
10 Ian Dawes (iadawes@globalserve.net) 10 Ian Dawes (iadawes@globalserve.net)
11 Laszlo Boloni (boloni@cs.purdue.edu) 11 Laszlo Boloni (boloni@cs.purdue.edu)
12 12
13 Copyright (c) 2000, 2001, 2002 13 Copyright (c) 2000, 2001, 2002
14 Cornelius Schumacher <schumacher@kde.org> 14 Cornelius Schumacher <schumacher@kde.org>
15 15
16 This program is free software; you can redistribute it and/or modify 16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by 17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or 18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version. 19 (at your option) any later version.
20 20
21 This program is distributed in the hope that it will be useful, 21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
24 GNU General Public License for more details. 24 GNU General Public License for more details.
25 25
26 You should have received a copy of the GNU General Public License 26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software 27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33#include <qapplication.h> 33#include <qapplication.h>
34#include <qradiobutton.h> 34#include <qradiobutton.h>
35#include <qbuttongroup.h> 35#include <qbuttongroup.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qclipboard.h> 37#include <qclipboard.h>
38#include <qcursor.h> 38#include <qcursor.h>
39#include <qmessagebox.h> 39#include <qmessagebox.h>
40#include <qprogressbar.h> 40#include <qprogressbar.h>
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qwidgetstack.h> 43#include <qwidgetstack.h>
44#include <qptrlist.h> 44#include <qptrlist.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qgroupbox.h> 46#include <qgroupbox.h>
47#include <qfile.h> 47#include <qfile.h>
48#include <qdir.h> 48#include <qdir.h>
49#ifndef KORG_NOSPLITTER 49#ifndef KORG_NOSPLITTER
50#include <qsplitter.h> 50#include <qsplitter.h>
51#endif 51#endif
52 52
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kdebug.h> 54#include <kdebug.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57#include <kmessagebox.h> 57#include <kmessagebox.h>
58#include <knotifyclient.h> 58#include <knotifyclient.h>
59#include <kconfig.h> 59#include <kconfig.h>
60 60
61#include <libkdepim/ksyncprefsdialog.h> 61#include <libkdepim/ksyncprefsdialog.h>
62#include <krun.h> 62#include <krun.h>
63#include <kdirwatch.h> 63#include <kdirwatch.h>
64#include <libkdepim/kdatepicker.h> 64#include <libkdepim/kdatepicker.h>
65#include <libkdepim/ksyncprofile.h> 65#include <libkdepim/ksyncprofile.h>
66#include <libkdepim/kpimglobalprefs.h> 66#include <libkdepim/kpimglobalprefs.h>
67 67
68#include <libkcal/vcaldrag.h> 68#include <libkcal/vcaldrag.h>
69#include <libkcal/icaldrag.h> 69#include <libkcal/icaldrag.h>
70#include <libkcal/icalformat.h> 70#include <libkcal/icalformat.h>
71#include <libkcal/vcalformat.h> 71#include <libkcal/vcalformat.h>
72#include <libkcal/scheduler.h> 72#include <libkcal/scheduler.h>
73#include <libkcal/calendarlocal.h> 73#include <libkcal/calendarlocal.h>
74#include <libkcal/journal.h> 74#include <libkcal/journal.h>
75#include <libkcal/calfilter.h> 75#include <libkcal/calfilter.h>
76#include <libkcal/attendee.h> 76#include <libkcal/attendee.h>
77#include <libkcal/dndfactory.h> 77#include <libkcal/dndfactory.h>
78#include <libkcal/freebusy.h> 78#include <libkcal/freebusy.h>
79#include <libkcal/filestorage.h> 79#include <libkcal/filestorage.h>
80#include <libkcal/calendarresources.h> 80#include <libkcal/calendarresources.h>
81#include <libkcal/qtopiaformat.h> 81#include <libkcal/qtopiaformat.h>
82#include "../kalarmd/alarmdialog.h" 82#include "../kalarmd/alarmdialog.h"
83 83
84#ifndef DESKTOP_VERSION 84#ifndef DESKTOP_VERSION
85#include <libkcal/sharpformat.h> 85#include <libkcal/sharpformat.h>
86#include <externalapphandler.h> 86#include <externalapphandler.h>
87#endif 87#endif
88#include <libkcal/phoneformat.h> 88#include <libkcal/phoneformat.h>
89#ifndef KORG_NOMAIL 89#ifndef KORG_NOMAIL
90#include "komailclient.h" 90#include "komailclient.h"
91#endif 91#endif
92#ifndef KORG_NOPRINTER 92#ifndef KORG_NOPRINTER
93#include "calprinter.h" 93#include "calprinter.h"
94#endif 94#endif
95#ifndef KORG_NOPLUGINS 95#ifndef KORG_NOPLUGINS
96#include "kocore.h" 96#include "kocore.h"
97#endif 97#endif
98#include "koeventeditor.h" 98#include "koeventeditor.h"
99#include "kotodoeditor.h" 99#include "kotodoeditor.h"
100#include "koprefs.h" 100#include "koprefs.h"
101#include "koeventviewerdialog.h" 101#include "koeventviewerdialog.h"
102#include "publishdialog.h" 102#include "publishdialog.h"
103#include "kofilterview.h" 103#include "kofilterview.h"
104#include "koglobals.h" 104#include "koglobals.h"
105#include "koviewmanager.h" 105#include "koviewmanager.h"
106#include "koagendaview.h" 106#include "koagendaview.h"
107#include "kodialogmanager.h" 107#include "kodialogmanager.h"
108#include "outgoingdialog.h" 108#include "outgoingdialog.h"
109#include "incomingdialog.h" 109#include "incomingdialog.h"
110#include "datenavigatorcontainer.h" 110#include "datenavigatorcontainer.h"
111#include "statusdialog.h" 111#include "statusdialog.h"
112#include "kdatenavigator.h" 112#include "kdatenavigator.h"
113#include "kotodoview.h" 113#include "kotodoview.h"
114#include "datenavigator.h" 114#include "datenavigator.h"
115#include "resourceview.h" 115#include "resourceview.h"
116#include "navigatorbar.h" 116#include "navigatorbar.h"
117#include "searchdialog.h" 117#include "searchdialog.h"
118#include "mainwindow.h" 118#include "mainwindow.h"
119 119
120#include "calendarview.h" 120#include "calendarview.h"
121#ifndef DESKTOP_VERSION 121#ifndef DESKTOP_VERSION
122#include <qtopia/alarmserver.h> 122#include <qtopia/alarmserver.h>
123#endif 123#endif
124#ifndef _WIN32_ 124#ifndef _WIN32_
125#include <stdlib.h> 125#include <stdlib.h>
126#include <stdio.h> 126#include <stdio.h>
127#include <unistd.h> 127#include <unistd.h>
128#else 128#else
129#include <qprocess.h> 129#include <qprocess.h>
130#endif 130#endif
131 131
132#ifdef DESKTOP_VERSION 132#ifdef DESKTOP_VERSION
133#include <kabc/stdaddressbook.h> 133#include <kabc/stdaddressbook.h>
134#endif 134#endif
135using namespace KOrg; 135using namespace KOrg;
136using namespace KCal; 136using namespace KCal;
137extern int globalFlagBlockAgenda; 137extern int globalFlagBlockAgenda;
138extern int globalFlagBlockStartup; 138extern int globalFlagBlockStartup;
139 139
140 140
141 141
142class KOBeamPrefs : public QDialog 142class KOBeamPrefs : public QDialog
143{ 143{
144 public: 144 public:
145 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 145 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
146 QDialog( parent, name, true ) 146 QDialog( parent, name, true )
147 { 147 {
148 setCaption( i18n("Beam Options") ); 148 setCaption( i18n("Beam Options") );
149 QVBoxLayout* lay = new QVBoxLayout( this ); 149 QVBoxLayout* lay = new QVBoxLayout( this );
150 lay->setSpacing( 3 ); 150 lay->setSpacing( 3 );
151 lay->setMargin( 3 ); 151 lay->setMargin( 3 );
152 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 152 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
153 lay->addWidget( format ); 153 lay->addWidget( format );
154 format->setExclusive ( true ) ; 154 format->setExclusive ( true ) ;
155 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 155 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
156 lay->addWidget( time ); time->setExclusive ( true ) ; 156 lay->addWidget( time ); time->setExclusive ( true ) ;
157 vcal = new QRadioButton(" vCalendar ", format ); 157 vcal = new QRadioButton(" vCalendar ", format );
158 ical = new QRadioButton(" iCalendar ", format ); 158 ical = new QRadioButton(" iCalendar ", format );
159 vcal->setChecked( true ); 159 vcal->setChecked( true );
160 tz = new QRadioButton(i18n(" With timezone "), time ); 160 tz = new QRadioButton(i18n(" With timezone "), time );
161 local = new QRadioButton(i18n(" Local time "), time ); 161 local = new QRadioButton(i18n(" Local time "), time );
162 tz->setChecked( true ); 162 tz->setChecked( true );
163 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 163 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
164 lay->addWidget( ok ); 164 lay->addWidget( ok );
165 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 165 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
166 lay->addWidget( cancel ); 166 lay->addWidget( cancel );
167 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 167 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
168 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 168 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
169 resize( 200, 200 ); 169 resize( 200, 200 );
170 } 170 }
171 171
172 bool beamVcal() { return vcal->isChecked(); } 172 bool beamVcal() { return vcal->isChecked(); }
173 bool beamLocal() { return local->isChecked(); } 173 bool beamLocal() { return local->isChecked(); }
174private: 174private:
175 QRadioButton* vcal, *ical, *local, *tz; 175 QRadioButton* vcal, *ical, *local, *tz;
176}; 176};
177class KOCatPrefs : public QDialog 177class KOCatPrefs : public QDialog
178{ 178{
179 public: 179 public:
180 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 180 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
181 QDialog( parent, name, true ) 181 QDialog( parent, name, true )
182 { 182 {
183 setCaption( i18n("Manage new Categories") ); 183 setCaption( i18n("Manage new Categories") );
184 QVBoxLayout* lay = new QVBoxLayout( this ); 184 QVBoxLayout* lay = new QVBoxLayout( this );
185 lay->setSpacing( 3 ); 185 lay->setSpacing( 3 );
186 lay->setMargin( 3 ); 186 lay->setMargin( 3 );
187 QLabel * lab = new QLabel( i18n("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 "), this ); 187 QLabel * lab = new QLabel( i18n("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 "), this );
188 lay->addWidget( lab ); 188 lay->addWidget( lab );
189 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 189 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
190 lay->addWidget( format ); 190 lay->addWidget( format );
191 format->setExclusive ( true ) ; 191 format->setExclusive ( true ) ;
192 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 192 addCatBut = new QRadioButton(i18n("Add to category list"), format );
193 new QRadioButton(i18n("Remove from Events/Todos"), format ); 193 new QRadioButton(i18n("Remove from Events/Todos"), format );
194 addCatBut->setChecked( true ); 194 addCatBut->setChecked( true );
195 QPushButton * ok = new QPushButton( i18n("OK"), this ); 195 QPushButton * ok = new QPushButton( i18n("OK"), this );
196 lay->addWidget( ok ); 196 lay->addWidget( ok );
197 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 197 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
198 lay->addWidget( cancel ); 198 lay->addWidget( cancel );
199 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 199 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
200 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 200 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
201 resize( 200, 200 ); 201 resize( 200, 200 );
202 } 202 }
203 203
204 bool addCat() { return addCatBut->isChecked(); } 204 bool addCat() { return addCatBut->isChecked(); }
205private: 205private:
206 QRadioButton* addCatBut; 206 QRadioButton* addCatBut;
207}; 207};
208 208
209 209
210 210
211CalendarView::CalendarView( CalendarResources *calendar, 211CalendarView::CalendarView( CalendarResources *calendar,
212 QWidget *parent, const char *name ) 212 QWidget *parent, const char *name )
213 : CalendarViewBase( parent, name ), 213 : CalendarViewBase( parent, name ),
214 mCalendar( calendar ), 214 mCalendar( calendar ),
215 mResourceManager( calendar->resourceManager() ) 215 mResourceManager( calendar->resourceManager() )
216{ 216{
217 217
218 mEventEditor = 0; 218 mEventEditor = 0;
219 mTodoEditor = 0; 219 mTodoEditor = 0;
220 220
221 init(); 221 init();
222} 222}
223 223
224CalendarView::CalendarView( Calendar *calendar, 224CalendarView::CalendarView( Calendar *calendar,
225 QWidget *parent, const char *name ) 225 QWidget *parent, const char *name )
226 : CalendarViewBase( parent, name ), 226 : CalendarViewBase( parent, name ),
227 mCalendar( calendar ), 227 mCalendar( calendar ),
228 mResourceManager( 0 ) 228 mResourceManager( 0 )
229{ 229{
230 230
231 mEventEditor = 0; 231 mEventEditor = 0;
232 mTodoEditor = 0; 232 mTodoEditor = 0;
233 init(); 233 init();
234} 234}
235 235
236void CalendarView::init() 236void CalendarView::init()
237{ 237{
238 mNextAlarmDateTime = QDateTime::currentDateTime(); 238 mNextAlarmDateTime = QDateTime::currentDateTime();
239 setFocusPolicy ( NoFocus ); 239 setFocusPolicy ( NoFocus );
240 mViewerCallerIsSearchDialog = false; 240 mViewerCallerIsSearchDialog = false;
241 mBlockShowDates = false; 241 mBlockShowDates = false;
242 beamDialog = new KOBeamPrefs(); 242 beamDialog = new KOBeamPrefs();
243 mDatePickerMode = 0; 243 mDatePickerMode = 0;
244 mCurrentSyncDevice = ""; 244 mCurrentSyncDevice = "";
245 writeLocale(); 245 writeLocale();
246 mViewManager = new KOViewManager( this ); 246 mViewManager = new KOViewManager( this );
247 mDialogManager = new KODialogManager( this ); 247 mDialogManager = new KODialogManager( this );
248 mEventViewerDialog = 0; 248 mEventViewerDialog = 0;
249 mModified = false; 249 mModified = false;
250 mReadOnly = false; 250 mReadOnly = false;
251 mSelectedIncidence = 0; 251 mSelectedIncidence = 0;
252 mCalPrinter = 0; 252 mCalPrinter = 0;
253 mFilters.setAutoDelete(true); 253 mFilters.setAutoDelete(true);
254 254
255 mCalendar->registerObserver( this ); 255 mCalendar->registerObserver( this );
256 // TODO: Make sure that view is updated, when calendar is changed. 256 // TODO: Make sure that view is updated, when calendar is changed.
257 257
258 mStorage = new FileStorage( mCalendar ); 258 mStorage = new FileStorage( mCalendar );
259 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 259 mNavigator = new DateNavigator( this, "datevav", mViewManager );
260 260
261 QBoxLayout *topLayout = (QBoxLayout*)layout(); 261 QBoxLayout *topLayout = (QBoxLayout*)layout();
262#ifndef KORG_NOSPLITTER 262#ifndef KORG_NOSPLITTER
263 // create the main layout frames. 263 // create the main layout frames.
264 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 264 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
265 topLayout->addWidget(mPanner); 265 topLayout->addWidget(mPanner);
266 266
267 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 267 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
268 "CalendarView::LeftFrame"); 268 "CalendarView::LeftFrame");
269 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 269 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
270 270
271 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 271 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
272 "CalendarView::DateNavigator" ); 272 "CalendarView::DateNavigator" );
273 273
274 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 274 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
275 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 275 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
276 mTodoList->setNavigator( mNavigator ); 276 mTodoList->setNavigator( mNavigator );
277 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 277 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
278 278
279#ifdef KORG_NORESOURCEVIEW 279#ifdef KORG_NORESOURCEVIEW
280 mResourceView = 0; 280 mResourceView = 0;
281#else 281#else
282 if ( mResourceManager ) { 282 if ( mResourceManager ) {
283 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 283 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
284 mResourceView->updateView(); 284 mResourceView->updateView();
285 connect( mResourceView, SIGNAL( resourcesChanged() ), 285 connect( mResourceView, SIGNAL( resourcesChanged() ),
286 SLOT( updateView() ) ); 286 SLOT( updateView() ) );
287 } else { 287 } else {
288 mResourceView = 0; 288 mResourceView = 0;
289 } 289 }
290#endif 290#endif
291 QWidget *rightBox = new QWidget( mPanner ); 291 QWidget *rightBox = new QWidget( mPanner );
292 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 292 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
293 293
294 mRightFrame = new QWidgetStack( rightBox ); 294 mRightFrame = new QWidgetStack( rightBox );
295 rightLayout->addWidget( mRightFrame, 1 ); 295 rightLayout->addWidget( mRightFrame, 1 );
296 296
297 mLeftFrame = mLeftSplitter; 297 mLeftFrame = mLeftSplitter;
298#else 298#else
299 //QWidget *mainBox = new QWidget( this ); 299 //QWidget *mainBox = new QWidget( this );
300 //QWidget *leftFrame = new QWidget( mainBox ); 300 //QWidget *leftFrame = new QWidget( mainBox );
301 //QBoxLayout * mainBoxLayout; 301 //QBoxLayout * mainBoxLayout;
302 if ( KOPrefs::instance()->mVerticalScreen ) { 302 if ( KOPrefs::instance()->mVerticalScreen ) {
303 //mainBoxLayout = new QVBoxLayout(mainBox); 303 //mainBoxLayout = new QVBoxLayout(mainBox);
304 //leftFrameLayout = new QHBoxLayout(leftFrame ); 304 //leftFrameLayout = new QHBoxLayout(leftFrame );
305 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 305 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
306 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 306 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
307 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 307 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
308 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 308 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
309 } else { 309 } else {
310 //mainBoxLayout = new QHBoxLayout(mainBox); 310 //mainBoxLayout = new QHBoxLayout(mainBox);
311 //leftFrameLayout = new QVBoxLayout(leftFrame ); 311 //leftFrameLayout = new QVBoxLayout(leftFrame );
312 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 312 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
313 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 313 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
314 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 314 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
315 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 315 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
316 } 316 }
317 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 317 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
318 //QBoxLayout * leftFrameLayout; 318 //QBoxLayout * leftFrameLayout;
319 topLayout->addWidget( mMainFrame ); 319 topLayout->addWidget( mMainFrame );
320 //mainBoxLayout->addWidget (mLeftFrame); 320 //mainBoxLayout->addWidget (mLeftFrame);
321 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 321 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
322 "CalendarView::DateNavigator" ); 322 "CalendarView::DateNavigator" );
323#if 0 323#if 0
324 // FIXME 324 // FIXME
325 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 325 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
326 "CalendarView::DateNavigator", QDate::currentDate()); 326 "CalendarView::DateNavigator", QDate::currentDate());
327#endif 327#endif
328 // mDateNavigator->blockSignals( true ); 328 // mDateNavigator->blockSignals( true );
329 //leftFrameLayout->addWidget( mDateNavigator ); 329 //leftFrameLayout->addWidget( mDateNavigator );
330 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 330 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
331 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 331 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
332 mTodoList->setNavigator( mNavigator ); 332 mTodoList->setNavigator( mNavigator );
333#if 0 333#if 0
334 if ( QApplication::desktop()->width() < 480 ) { 334 if ( QApplication::desktop()->width() < 480 ) {
335 leftFrameLayout->addWidget(mFilterView); 335 leftFrameLayout->addWidget(mFilterView);
336 leftFrameLayout->addWidget(mTodoList, 2 ); 336 leftFrameLayout->addWidget(mTodoList, 2 );
337 337
338 } else { 338 } else {
339 leftFrameLayout->addWidget(mTodoList,2 ); 339 leftFrameLayout->addWidget(mTodoList,2 );
340 leftFrameLayout->addWidget(mFilterView ); 340 leftFrameLayout->addWidget(mFilterView );
341 } 341 }
342#endif 342#endif
343 mFilterView->hide(); 343 mFilterView->hide();
344 QWidget *rightBox = new QWidget( mMainFrame ); 344 QWidget *rightBox = new QWidget( mMainFrame );
345 //mainBoxLayout->addWidget ( rightBox, 10 ); 345 //mainBoxLayout->addWidget ( rightBox, 10 );
346 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 346 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
347 mRightFrame = new QWidgetStack( rightBox ); 347 mRightFrame = new QWidgetStack( rightBox );
348 rightLayout->addWidget( mRightFrame, 10 ); 348 rightLayout->addWidget( mRightFrame, 10 );
349 349
350 //mLeftFrame = (QWidget *)leftFrame; 350 //mLeftFrame = (QWidget *)leftFrame;
351 if ( KOPrefs::instance()->mVerticalScreen ) { 351 if ( KOPrefs::instance()->mVerticalScreen ) {
352 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 352 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
353 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 353 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
354 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 354 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
355 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 355 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
356 } else { 356 } else {
357 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 357 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
358 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 358 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
359 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 359 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
360 } 360 }
361 if ( !KOPrefs::instance()->mShowDateNavigator) 361 if ( !KOPrefs::instance()->mShowDateNavigator)
362 mDateNavigator->hide(); 362 mDateNavigator->hide();
363 //qDebug("Calendarview Size %d %d ", width(), height()); 363 //qDebug("Calendarview Size %d %d ", width(), height());
364#endif 364#endif
365 365
366 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 366 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
367 SLOT( showDates( const KCal::DateList & ) ) ); 367 SLOT( showDates( const KCal::DateList & ) ) );
368 368
369 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 369 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
370 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 370 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
371 371
372 372
373 373
374 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 374 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
375 mViewManager, SLOT( showMonth( const QDate & ) ) ); 375 mViewManager, SLOT( showMonth( const QDate & ) ) );
376 376
377 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 377 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
378 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 378 mNavigator, SLOT( selectWeek( const QDate & ) ) );
379 379
380 connect( mDateNavigator, SIGNAL( goPrevYear() ), 380 connect( mDateNavigator, SIGNAL( goPrevYear() ),
381 mNavigator, SLOT( selectPreviousYear() ) ); 381 mNavigator, SLOT( selectPreviousYear() ) );
382 connect( mDateNavigator, SIGNAL( goNextYear() ), 382 connect( mDateNavigator, SIGNAL( goNextYear() ),
383 mNavigator, SLOT( selectNextYear() ) ); 383 mNavigator, SLOT( selectNextYear() ) );
384 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 384 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
385 mNavigator, SLOT( selectPreviousMonth() ) ); 385 mNavigator, SLOT( selectPreviousMonth() ) );
386 connect( mDateNavigator, SIGNAL( goNextMonth() ), 386 connect( mDateNavigator, SIGNAL( goNextMonth() ),
387 mNavigator, SLOT( selectNextMonth() ) ); 387 mNavigator, SLOT( selectNextMonth() ) );
388 388
389 connect( mDateNavigator, SIGNAL( goPrevious() ), 389 connect( mDateNavigator, SIGNAL( goPrevious() ),
390 mNavigator, SLOT( selectPrevious() ) ); 390 mNavigator, SLOT( selectPrevious() ) );
391 connect( mDateNavigator, SIGNAL( goNext() ), 391 connect( mDateNavigator, SIGNAL( goNext() ),
392 mNavigator, SLOT( selectNext() ) ); 392 mNavigator, SLOT( selectNext() ) );
393 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 393 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
394 mNavigator, SLOT( slotMonthSelect( int ) ) ); 394 mNavigator, SLOT( slotMonthSelect( int ) ) );
395 395
396 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 396 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
397 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 397 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
398#if 0 398#if 0
399 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 399 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
400 SLOT( incidenceAdded( Incidence *) ) ); 400 SLOT( incidenceAdded( Incidence *) ) );
401#endif 401#endif
402 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 402 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
403 403
404 connect( this, SIGNAL( configChanged() ), 404 connect( this, SIGNAL( configChanged() ),
405 mDateNavigator, SLOT( updateConfig() ) ); 405 mDateNavigator, SLOT( updateConfig() ) );
406 406
407 connect( mTodoList, SIGNAL( newTodoSignal() ), 407 connect( mTodoList, SIGNAL( newTodoSignal() ),
408 SLOT( newTodo() ) ); 408 SLOT( newTodo() ) );
409 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 409 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
410 SLOT( newSubTodo( Todo * ) ) ); 410 SLOT( newSubTodo( Todo * ) ) );
411 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 411 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
412 SLOT( editTodo( Todo * ) ) ); 412 SLOT( editTodo( Todo * ) ) );
413 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 413 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
414 SLOT( showTodo( Todo *) ) ); 414 SLOT( showTodo( Todo *) ) );
415 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 415 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
416 SLOT( deleteTodo( Todo *) ) ); 416 SLOT( deleteTodo( Todo *) ) );
417 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 417 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
418 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 418 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
419 SLOT( purgeCompleted() ) ); 419 SLOT( purgeCompleted() ) );
420 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 420 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
421 SIGNAL( todoModified( Todo *, int ) ) ); 421 SIGNAL( todoModified( Todo *, int ) ) );
422 422
423 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 423 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
424 this, SLOT ( cloneIncidence( Incidence * ) ) ); 424 this, SLOT ( cloneIncidence( Incidence * ) ) );
425 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 425 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
426 this, SLOT (cancelIncidence( Incidence * ) ) ); 426 this, SLOT (cancelIncidence( Incidence * ) ) );
427 427
428 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 428 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
429 this, SLOT ( moveIncidence( Incidence * ) ) ); 429 this, SLOT ( moveIncidence( Incidence * ) ) );
430 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 430 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
431 this, SLOT ( beamIncidence( Incidence * ) ) ); 431 this, SLOT ( beamIncidence( Incidence * ) ) );
432 432
433 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 433 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
434 this, SLOT ( todo_unsub( Todo * ) ) ); 434 this, SLOT ( todo_unsub( Todo * ) ) );
435 435
436 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 436 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
437 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 437 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
438 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 438 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
439 SLOT( updateTodo( Todo *, int ) ) ); 439 SLOT( updateTodo( Todo *, int ) ) );
440 connect( this, SIGNAL( todoModified( Todo *, int )), this, 440 connect( this, SIGNAL( todoModified( Todo *, int )), this,
441 SLOT( changeTodoDisplay( Todo *, int ) ) ); 441 SLOT( changeTodoDisplay( Todo *, int ) ) );
442 442
443 443
444 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 444 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
445 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 445 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
446 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 446 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
447 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 447 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
448 448
449 449
450 450
451 451
452 452
453 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 453 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
454 SLOT(checkClipboard())); 454 SLOT(checkClipboard()));
455 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 455 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
456 SLOT( processTodoListSelection( Incidence * ) ) ); 456 SLOT( processTodoListSelection( Incidence * ) ) );
457 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 457 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
458 458
459 // kdDebug() << "CalendarView::CalendarView() done" << endl; 459 // kdDebug() << "CalendarView::CalendarView() done" << endl;
460 460
461 mDateFrame = new QVBox(0,0,WType_Popup); 461 mDateFrame = new QVBox(0,0,WType_Popup);
462 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 462 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
463 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 463 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
464 mDateFrame->setLineWidth(3); 464 mDateFrame->setLineWidth(3);
465 mDateFrame->hide(); 465 mDateFrame->hide();
466 mDateFrame->setCaption( i18n( "Pick a date to display")); 466 mDateFrame->setCaption( i18n( "Pick a date to display"));
467 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 467 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
468 468
469 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 469 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
470 470
471 mEventEditor = mDialogManager->getEventEditor(); 471 mEventEditor = mDialogManager->getEventEditor();
472 mTodoEditor = mDialogManager->getTodoEditor(); 472 mTodoEditor = mDialogManager->getTodoEditor();
473 473
474 mFlagEditDescription = false; 474 mFlagEditDescription = false;
475 475
476 mSuspendTimer = new QTimer( this ); 476 mSuspendTimer = new QTimer( this );
477 mAlarmTimer = new QTimer( this ); 477 mAlarmTimer = new QTimer( this );
478 mRecheckAlarmTimer = new QTimer( this ); 478 mRecheckAlarmTimer = new QTimer( this );
479 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 479 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
480 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 480 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
481 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 481 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
482 mAlarmDialog = new AlarmDialog( this ); 482 mAlarmDialog = new AlarmDialog( this );
483 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 483 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
484 mAlarmDialog->setServerNotification( false ); 484 mAlarmDialog->setServerNotification( false );
485 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 485 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
486 486
487 487
488#ifndef DESKTOP_VERSION 488#ifndef DESKTOP_VERSION
489//US listen for arriving address resultsets 489//US listen for arriving address resultsets
490 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 490 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
491 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 491 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
492#endif 492#endif
493 mDateNavigator->setCalendar( mCalendar ); 493 mDateNavigator->setCalendar( mCalendar );
494} 494}
495 495
496 496
497CalendarView::~CalendarView() 497CalendarView::~CalendarView()
498{ 498{
499 // kdDebug() << "~CalendarView()" << endl; 499 // kdDebug() << "~CalendarView()" << endl;
500 //qDebug("CalendarView::~CalendarView() "); 500 //qDebug("CalendarView::~CalendarView() ");
501 delete mDialogManager; 501 delete mDialogManager;
502 delete mViewManager; 502 delete mViewManager;
503 delete mStorage; 503 delete mStorage;
504 delete mDateFrame ; 504 delete mDateFrame ;
505 delete beamDialog; 505 delete beamDialog;
506 delete mEventViewerDialog; 506 delete mEventViewerDialog;
507 //kdDebug() << "~CalendarView() done" << endl; 507 //kdDebug() << "~CalendarView() done" << endl;
508} 508}
509 509
510void CalendarView::showDay( QDate d ) 510void CalendarView::showDay( QDate d )
511{ 511{
512 dateNavigator()->blockSignals( true ); 512 dateNavigator()->blockSignals( true );
513 dateNavigator()->selectDate( d ); 513 dateNavigator()->selectDate( d );
514 dateNavigator()->blockSignals( false ); 514 dateNavigator()->blockSignals( false );
515 mViewManager->showDayView(); 515 mViewManager->showDayView();
516 //dateNavigator()->selectDate( d ); 516 //dateNavigator()->selectDate( d );
517} 517}
518void CalendarView::timerAlarm() 518void CalendarView::timerAlarm()
519{ 519{
520 //qDebug("CalendarView::timerAlarm() "); 520 //qDebug("CalendarView::timerAlarm() ");
521 computeAlarm(mAlarmNotification ); 521 computeAlarm(mAlarmNotification );
522} 522}
523 523
524void CalendarView::suspendAlarm() 524void CalendarView::suspendAlarm()
525{ 525{
526 //qDebug(" CalendarView::suspendAlarm() "); 526 //qDebug(" CalendarView::suspendAlarm() ");
527 computeAlarm(mSuspendAlarmNotification ); 527 computeAlarm(mSuspendAlarmNotification );
528 528
529} 529}
530 530
531void CalendarView::startAlarm( QString mess , QString filename) 531void CalendarView::startAlarm( QString mess , QString filename)
532{ 532{
533 533
534 topLevelWidget()->showNormal(); 534 topLevelWidget()->showNormal();
535 topLevelWidget()->setActiveWindow(); 535 topLevelWidget()->setActiveWindow();
536 topLevelWidget()->raise(); 536 topLevelWidget()->raise();
537 537
538 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 538 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
539 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 539 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
540 540
541} 541}
542 542
543void CalendarView::checkNextTimerAlarm() 543void CalendarView::checkNextTimerAlarm()
544{ 544{
545 mCalendar->checkAlarmForIncidence( 0, true ); 545 mCalendar->checkAlarmForIncidence( 0, true );
546} 546}
547 547
548void CalendarView::computeAlarm( QString msg ) 548void CalendarView::computeAlarm( QString msg )
549{ 549{
550 550
551 QString mess = msg; 551 QString mess = msg;
552 QString mAlarmMessage = mess.mid( 9 ); 552 QString mAlarmMessage = mess.mid( 9 );
553 QString filename = MainWindow::resourcePath(); 553 QString filename = MainWindow::resourcePath();
554 filename += "koalarm.wav"; 554 filename += "koalarm.wav";
555 QString tempfilename; 555 QString tempfilename;
556 if ( mess.left( 13 ) == "suspend_alarm") { 556 if ( mess.left( 13 ) == "suspend_alarm") {
557 bool error = false; 557 bool error = false;
558 int len = mess.mid( 13 ).find("+++"); 558 int len = mess.mid( 13 ).find("+++");
559 if ( len < 2 ) 559 if ( len < 2 )
560 error = true; 560 error = true;
561 else { 561 else {
562 tempfilename = mess.mid( 13, len ); 562 tempfilename = mess.mid( 13, len );
563 if ( !QFile::exists( tempfilename ) ) 563 if ( !QFile::exists( tempfilename ) )
564 error = true; 564 error = true;
565 } 565 }
566 if ( ! error ) { 566 if ( ! error ) {
567 filename = tempfilename; 567 filename = tempfilename;
568 } 568 }
569 mAlarmMessage = mess.mid( 13+len+3 ); 569 mAlarmMessage = mess.mid( 13+len+3 );
570 //qDebug("suspend file %s ",tempfilename.latin1() ); 570 //qDebug("suspend file %s ",tempfilename.latin1() );
571 startAlarm( mAlarmMessage, filename); 571 startAlarm( mAlarmMessage, filename);
572 return; 572 return;
573 } 573 }
574 if ( mess.left( 11 ) == "timer_alarm") { 574 if ( mess.left( 11 ) == "timer_alarm") {
575 //mTimerTime = 0; 575 //mTimerTime = 0;
576 startAlarm( mess.mid( 11 ), filename ); 576 startAlarm( mess.mid( 11 ), filename );
577 return; 577 return;
578 } 578 }
579 if ( mess.left( 10 ) == "proc_alarm") { 579 if ( mess.left( 10 ) == "proc_alarm") {
580 bool error = false; 580 bool error = false;
581 int len = mess.mid( 10 ).find("+++"); 581 int len = mess.mid( 10 ).find("+++");
582 if ( len < 2 ) 582 if ( len < 2 )
583 error = true; 583 error = true;
584 else { 584 else {
585 tempfilename = mess.mid( 10, len ); 585 tempfilename = mess.mid( 10, len );
586 if ( !QFile::exists( tempfilename ) ) 586 if ( !QFile::exists( tempfilename ) )
587 error = true; 587 error = true;
588 } 588 }
589 if ( error ) { 589 if ( error ) {
590 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 590 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
591 mAlarmMessage += mess.mid( 10+len+3+9 ); 591 mAlarmMessage += mess.mid( 10+len+3+9 );
592 } else { 592 } else {
593 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 593 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
594 //qDebug("-----system command %s ",tempfilename.latin1() ); 594 //qDebug("-----system command %s ",tempfilename.latin1() );
595#ifndef _WIN32_ 595#ifndef _WIN32_
596 if ( vfork () == 0 ) { 596 if ( vfork () == 0 ) {
597 execl ( tempfilename.latin1(), 0 ); 597 execl ( tempfilename.latin1(), 0 );
598 return; 598 return;
599 } 599 }
600#else 600#else
601 QProcess* p = new QProcess(); 601 QProcess* p = new QProcess();
602 p->addArgument( tempfilename.latin1() ); 602 p->addArgument( tempfilename.latin1() );
603 p->start(); 603 p->start();
604 return; 604 return;
605#endif 605#endif
606 606
607 return; 607 return;
608 } 608 }
609 609
610 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 610 //qDebug("+++++++system command %s ",tempfilename.latin1() );
611 } 611 }
612 if ( mess.left( 11 ) == "audio_alarm") { 612 if ( mess.left( 11 ) == "audio_alarm") {
613 bool error = false; 613 bool error = false;
614 int len = mess.mid( 11 ).find("+++"); 614 int len = mess.mid( 11 ).find("+++");
615 if ( len < 2 ) 615 if ( len < 2 )
616 error = true; 616 error = true;
617 else { 617 else {
618 tempfilename = mess.mid( 11, len ); 618 tempfilename = mess.mid( 11, len );
619 if ( !QFile::exists( tempfilename ) ) 619 if ( !QFile::exists( tempfilename ) )
620 error = true; 620 error = true;
621 } 621 }
622 if ( ! error ) { 622 if ( ! error ) {
623 filename = tempfilename; 623 filename = tempfilename;
624 } 624 }
625 mAlarmMessage = mess.mid( 11+len+3+9 ); 625 mAlarmMessage = mess.mid( 11+len+3+9 );
626 //qDebug("audio file command %s ",tempfilename.latin1() ); 626 //qDebug("audio file command %s ",tempfilename.latin1() );
627 } 627 }
628 if ( mess.left( 9 ) == "cal_alarm") { 628 if ( mess.left( 9 ) == "cal_alarm") {
629 mAlarmMessage = mess.mid( 9 ) ; 629 mAlarmMessage = mess.mid( 9 ) ;
630 } 630 }
631 631
632 startAlarm( mAlarmMessage, filename ); 632 startAlarm( mAlarmMessage, filename );
633 633
634 634
635} 635}
636 636
637void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 637void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
638{ 638{
639 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 639 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
640 640
641 mSuspendAlarmNotification = noti; 641 mSuspendAlarmNotification = noti;
642 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 642 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
643 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 643 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
644 mSuspendTimer->start( ms , true ); 644 mSuspendTimer->start( ms , true );
645 645
646} 646}
647 647
648void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 648void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
649{ 649{
650 mNextAlarmDateTime = qdt; 650 mNextAlarmDateTime = qdt;
651 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 651 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
652 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 652 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
653#ifndef DESKTOP_VERSION 653#ifndef DESKTOP_VERSION
654 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 654 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
655#endif 655#endif
656 return; 656 return;
657 } 657 }
658 int maxSec; 658 int maxSec;
659 //maxSec = 5; //testing only 659 //maxSec = 5; //testing only
660 maxSec = 86400+3600; // one day+1hour 660 maxSec = 86400+3600; // one day+1hour
661 mAlarmNotification = noti; 661 mAlarmNotification = noti;
662 int sec = QDateTime::currentDateTime().secsTo( qdt ); 662 int sec = QDateTime::currentDateTime().secsTo( qdt );
663 if ( sec > maxSec ) { 663 if ( sec > maxSec ) {
664 mRecheckAlarmTimer->start( maxSec * 1000 ); 664 mRecheckAlarmTimer->start( maxSec * 1000 );
665 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 665 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
666 return; 666 return;
667 } else { 667 } else {
668 mRecheckAlarmTimer->stop(); 668 mRecheckAlarmTimer->stop();
669 } 669 }
670 //qDebug("Alarm timer started with secs: %d ", sec); 670 //qDebug("Alarm timer started with secs: %d ", sec);
671 mAlarmTimer->start( sec *1000 , true ); 671 mAlarmTimer->start( sec *1000 , true );
672 672
673} 673}
674// called by mRecheckAlarmTimer to get next alarm 674// called by mRecheckAlarmTimer to get next alarm
675// we need this, because a QTimer has only a max range of 25 days 675// we need this, because a QTimer has only a max range of 25 days
676void CalendarView::recheckTimerAlarm() 676void CalendarView::recheckTimerAlarm()
677{ 677{
678 mAlarmTimer->stop(); 678 mAlarmTimer->stop();
679 mRecheckAlarmTimer->stop(); 679 mRecheckAlarmTimer->stop();
680 mCalendar->checkAlarmForIncidence( 0, true ); 680 mCalendar->checkAlarmForIncidence( 0, true );
681} 681}
682void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 682void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
683{ 683{
684 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 684 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
685 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 685 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
686#ifndef DESKTOP_VERSION 686#ifndef DESKTOP_VERSION
687 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 687 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
688#endif 688#endif
689 return; 689 return;
690 } 690 }
691 mAlarmTimer->stop(); 691 mAlarmTimer->stop();
692} 692}
693void CalendarView::selectWeekNum ( int num ) 693void CalendarView::selectWeekNum ( int num )
694{ 694{
695 dateNavigator()->blockSignals( true ); 695 dateNavigator()->blockSignals( true );
696 dateNavigator()->selectWeek( num ); 696 dateNavigator()->selectWeek( num );
697 dateNavigator()->blockSignals( false ); 697 dateNavigator()->blockSignals( false );
698 mViewManager->showWeekView(); 698 mViewManager->showWeekView();
699} 699}
700KOViewManager *CalendarView::viewManager() 700KOViewManager *CalendarView::viewManager()
701{ 701{
702 return mViewManager; 702 return mViewManager;
703} 703}
704 704
705KODialogManager *CalendarView::dialogManager() 705KODialogManager *CalendarView::dialogManager()
706{ 706{
707 return mDialogManager; 707 return mDialogManager;
708} 708}
709 709
710QDate CalendarView::startDate() 710QDate CalendarView::startDate()
711{ 711{
712 DateList dates = mNavigator->selectedDates(); 712 DateList dates = mNavigator->selectedDates();
713 713
714 return dates.first(); 714 return dates.first();
715} 715}
716 716
717QDate CalendarView::endDate() 717QDate CalendarView::endDate()
718{ 718{
719 DateList dates = mNavigator->selectedDates(); 719 DateList dates = mNavigator->selectedDates();
720 720
721 return dates.last(); 721 return dates.last();
722} 722}
723 723
724 724
725void CalendarView::createPrinter() 725void CalendarView::createPrinter()
726{ 726{
727#ifndef KORG_NOPRINTER 727#ifndef KORG_NOPRINTER
728 if (!mCalPrinter) { 728 if (!mCalPrinter) {
729 mCalPrinter = new CalPrinter(this, mCalendar); 729 mCalPrinter = new CalPrinter(this, mCalendar);
730 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 730 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
731 } 731 }
732#endif 732#endif
733} 733}
734 734
735 735
736//KOPrefs::instance()->mWriteBackFile 736//KOPrefs::instance()->mWriteBackFile
737//KOPrefs::instance()->mWriteBackExistingOnly 737//KOPrefs::instance()->mWriteBackExistingOnly
738 738
739// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 739// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
740// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 740// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
741// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 741// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
742// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 742// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
743// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 743// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
744// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 744// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
745 745
746int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 746int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
747{ 747{
748 748
749 // 0 equal 749 // 0 equal
750 // 1 take local 750 // 1 take local
751 // 2 take remote 751 // 2 take remote
752 // 3 cancel 752 // 3 cancel
753 QDateTime lastSync = mLastCalendarSync; 753 QDateTime lastSync = mLastCalendarSync;
754 QDateTime localMod = local->lastModified(); 754 QDateTime localMod = local->lastModified();
755 QDateTime remoteMod = remote->lastModified(); 755 QDateTime remoteMod = remote->lastModified();
756 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 756 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
757 bool remCh, locCh; 757 bool remCh, locCh;
758 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 758 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
759 //if ( remCh ) 759 //if ( remCh )
760 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 760 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
761 locCh = ( localMod > mLastCalendarSync ); 761 locCh = ( localMod > mLastCalendarSync );
762 if ( !remCh && ! locCh ) { 762 if ( !remCh && ! locCh ) {
763 //qDebug("both not changed "); 763 //qDebug("both not changed ");
764 lastSync = localMod.addDays(1); 764 lastSync = localMod.addDays(1);
765 if ( mode <= SYNC_PREF_ASK ) 765 if ( mode <= SYNC_PREF_ASK )
766 return 0; 766 return 0;
767 } else { 767 } else {
768 if ( locCh ) { 768 if ( locCh ) {
769 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 769 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
770 lastSync = localMod.addDays( -1 ); 770 lastSync = localMod.addDays( -1 );
771 if ( !remCh ) 771 if ( !remCh )
772 remoteMod = ( lastSync.addDays( -1 ) ); 772 remoteMod = ( lastSync.addDays( -1 ) );
773 } else { 773 } else {
774 //qDebug(" not loc changed "); 774 //qDebug(" not loc changed ");
775 lastSync = localMod.addDays( 1 ); 775 lastSync = localMod.addDays( 1 );
776 if ( remCh ) 776 if ( remCh )
777 remoteMod =( lastSync.addDays( 1 ) ); 777 remoteMod =( lastSync.addDays( 1 ) );
778 778
779 } 779 }
780 } 780 }
781 full = true; 781 full = true;
782 if ( mode < SYNC_PREF_ASK ) 782 if ( mode < SYNC_PREF_ASK )
783 mode = SYNC_PREF_ASK; 783 mode = SYNC_PREF_ASK;
784 } else { 784 } else {
785 if ( localMod == remoteMod ) 785 if ( localMod == remoteMod )
786 // if ( local->revision() == remote->revision() ) 786 // if ( local->revision() == remote->revision() )
787 return 0; 787 return 0;
788 788
789 } 789 }
790 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 790 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
791 791
792 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 792 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
793 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 793 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
794 //full = true; //debug only 794 //full = true; //debug only
795 if ( full ) { 795 if ( full ) {
796 bool equ = false; 796 bool equ = false;
797 if ( local->type() == "Event" ) { 797 if ( local->type() == "Event" ) {
798 equ = (*((Event*) local) == *((Event*) remote)); 798 equ = (*((Event*) local) == *((Event*) remote));
799 } 799 }
800 else if ( local->type() =="Todo" ) 800 else if ( local->type() =="Todo" )
801 equ = (*((Todo*) local) == (*(Todo*) remote)); 801 equ = (*((Todo*) local) == (*(Todo*) remote));
802 else if ( local->type() =="Journal" ) 802 else if ( local->type() =="Journal" )
803 equ = (*((Journal*) local) == *((Journal*) remote)); 803 equ = (*((Journal*) local) == *((Journal*) remote));
804 if ( equ ) { 804 if ( equ ) {
805 //qDebug("equal "); 805 //qDebug("equal ");
806 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 806 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
807 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 807 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
808 } 808 }
809 if ( mode < SYNC_PREF_FORCE_LOCAL ) 809 if ( mode < SYNC_PREF_FORCE_LOCAL )
810 return 0; 810 return 0;
811 811
812 }//else //debug only 812 }//else //debug only
813 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 813 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
814 } 814 }
815 int result; 815 int result;
816 bool localIsNew; 816 bool localIsNew;
817 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 817 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
818 818
819 819
820 // ************************************************ 820 // ************************************************
821 // ************************************************ 821 // ************************************************
822 // ************************************************ 822 // ************************************************
823 // We may have that lastSync > remoteMod AND lastSync > localMod 823 // We may have that lastSync > remoteMod AND lastSync > localMod
824 // BUT remoteMod != localMod 824 // BUT remoteMod != localMod
825 825
826 826
827 if ( full && mode < SYNC_PREF_NEWEST ) 827 if ( full && mode < SYNC_PREF_NEWEST )
828 mode = SYNC_PREF_ASK; 828 mode = SYNC_PREF_ASK;
829 829
830 switch( mode ) { 830 switch( mode ) {
831 case SYNC_PREF_LOCAL: 831 case SYNC_PREF_LOCAL:
832 if ( lastSync > remoteMod ) 832 if ( lastSync > remoteMod )
833 return 1; 833 return 1;
834 if ( lastSync > localMod ) 834 if ( lastSync > localMod )
835 return 2; 835 return 2;
836 return 1; 836 return 1;
837 break; 837 break;
838 case SYNC_PREF_REMOTE: 838 case SYNC_PREF_REMOTE:
839 if ( lastSync > localMod ) 839 if ( lastSync > localMod )
840 return 2; 840 return 2;
841 if ( lastSync > remoteMod ) 841 if ( lastSync > remoteMod )
842 return 1; 842 return 1;
843 return 2; 843 return 2;
844 break; 844 break;
845 case SYNC_PREF_NEWEST: 845 case SYNC_PREF_NEWEST:
846 if ( localMod >= remoteMod ) 846 if ( localMod >= remoteMod )
847 return 1; 847 return 1;
848 else 848 else
849 return 2; 849 return 2;
850 break; 850 break;
851 case SYNC_PREF_ASK: 851 case SYNC_PREF_ASK:
852 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 852 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
853 if ( lastSync > remoteMod && lastSync > localMod) 853 if ( lastSync > remoteMod && lastSync > localMod)
854 return 0; 854 return 0;
855 if ( lastSync > remoteMod ) 855 if ( lastSync > remoteMod )
856 return 1; 856 return 1;
857 if ( lastSync > localMod ) 857 if ( lastSync > localMod )
858 return 2; 858 return 2;
859 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 859 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
860 localIsNew = localMod >= remoteMod; 860 localIsNew = localMod >= remoteMod;
861 if ( localIsNew ) 861 if ( localIsNew )
862 getEventViewerDialog()->setColorMode( 1 ); 862 getEventViewerDialog()->setColorMode( 1 );
863 else 863 else
864 getEventViewerDialog()->setColorMode( 2 ); 864 getEventViewerDialog()->setColorMode( 2 );
865 getEventViewerDialog()->setIncidence(local); 865 getEventViewerDialog()->setIncidence(local);
866 if ( localIsNew ) 866 if ( localIsNew )
867 getEventViewerDialog()->setColorMode( 2 ); 867 getEventViewerDialog()->setColorMode( 2 );
868 else 868 else
869 getEventViewerDialog()->setColorMode( 1 ); 869 getEventViewerDialog()->setColorMode( 1 );
870 getEventViewerDialog()->addIncidence(remote); 870 getEventViewerDialog()->addIncidence(remote);
871 getEventViewerDialog()->setColorMode( 0 ); 871 getEventViewerDialog()->setColorMode( 0 );
872 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 872 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
873 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 873 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
874 getEventViewerDialog()->showMe(); 874 getEventViewerDialog()->showMe();
875 result = getEventViewerDialog()->executeS( localIsNew ); 875 result = getEventViewerDialog()->executeS( localIsNew );
876 return result; 876 return result;
877 877
878 break; 878 break;
879 case SYNC_PREF_FORCE_LOCAL: 879 case SYNC_PREF_FORCE_LOCAL:
880 return 1; 880 return 1;
881 break; 881 break;
882 case SYNC_PREF_FORCE_REMOTE: 882 case SYNC_PREF_FORCE_REMOTE:
883 return 2; 883 return 2;
884 break; 884 break;
885 885
886 default: 886 default:
887 // SYNC_PREF_TAKE_BOTH not implemented 887 // SYNC_PREF_TAKE_BOTH not implemented
888 break; 888 break;
889 } 889 }
890 return 0; 890 return 0;
891} 891}
892Event* CalendarView::getLastSyncEvent() 892Event* CalendarView::getLastSyncEvent()
893{ 893{
894 Event* lse; 894 Event* lse;
895 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 895 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
896 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 896 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
897 if (!lse) { 897 if (!lse) {
898 lse = new Event(); 898 lse = new Event();
899 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 899 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
900 QString sum = ""; 900 QString sum = "";
901 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 901 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
902 sum = "E: "; 902 sum = "E: ";
903 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 903 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
904 lse->setDtStart( mLastCalendarSync ); 904 lse->setDtStart( mLastCalendarSync );
905 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 905 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
906 lse->setCategories( i18n("SyncEvent") ); 906 lse->setCategories( i18n("SyncEvent") );
907 lse->setReadOnly( true ); 907 lse->setReadOnly( true );
908 mCalendar->addEvent( lse ); 908 mCalendar->addEvent( lse );
909 } 909 }
910 910
911 return lse; 911 return lse;
912 912
913} 913}
914 914
915// we check, if the to delete event has a id for a profile 915// we check, if the to delete event has a id for a profile
916// if yes, we set this id in the profile to delete 916// if yes, we set this id in the profile to delete
917void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 917void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
918{ 918{
919 if ( lastSync.count() == 0 ) { 919 if ( lastSync.count() == 0 ) {
920 //qDebug(" lastSync.count() == 0"); 920 //qDebug(" lastSync.count() == 0");
921 return; 921 return;
922 } 922 }
923 if ( toDelete->type() == "Journal" ) 923 if ( toDelete->type() == "Journal" )
924 return; 924 return;
925 925
926 Event* eve = lastSync.first(); 926 Event* eve = lastSync.first();
927 927
928 while ( eve ) { 928 while ( eve ) {
929 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 929 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
930 if ( !id.isEmpty() ) { 930 if ( !id.isEmpty() ) {
931 QString des = eve->description(); 931 QString des = eve->description();
932 QString pref = "e"; 932 QString pref = "e";
933 if ( toDelete->type() == "Todo" ) 933 if ( toDelete->type() == "Todo" )
934 pref = "t"; 934 pref = "t";
935 des += pref+ id + ","; 935 des += pref+ id + ",";
936 eve->setReadOnly( false ); 936 eve->setReadOnly( false );
937 eve->setDescription( des ); 937 eve->setDescription( des );
938 //qDebug("setdes %s ", des.latin1()); 938 //qDebug("setdes %s ", des.latin1());
939 eve->setReadOnly( true ); 939 eve->setReadOnly( true );
940 } 940 }
941 eve = lastSync.next(); 941 eve = lastSync.next();
942 } 942 }
943 943
944} 944}
945void CalendarView::checkExternalId( Incidence * inc ) 945void CalendarView::checkExternalId( Incidence * inc )
946{ 946{
947 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 947 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
948 checkExternSyncEvent( lastSync, inc ); 948 checkExternSyncEvent( lastSync, inc );
949 949
950} 950}
951bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 951bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
952{ 952{
953 bool syncOK = true; 953 bool syncOK = true;
954 int addedEvent = 0; 954 int addedEvent = 0;
955 int addedEventR = 0; 955 int addedEventR = 0;
956 int deletedEventR = 0; 956 int deletedEventR = 0;
957 int deletedEventL = 0; 957 int deletedEventL = 0;
958 int changedLocal = 0; 958 int changedLocal = 0;
959 int changedRemote = 0; 959 int changedRemote = 0;
960 int filteredIN = 0; 960 int filteredIN = 0;
961 int filteredOUT = 0; 961 int filteredOUT = 0;
962 //QPtrList<Event> el = local->rawEvents(); 962 //QPtrList<Event> el = local->rawEvents();
963 Event* eventR; 963 Event* eventR;
964 QString uid; 964 QString uid;
965 int take; 965 int take;
966 Event* eventL; 966 Event* eventL;
967 Event* eventRSync; 967 Event* eventRSync;
968 Event* eventLSync; 968 Event* eventLSync;
969 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 969 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
970 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 970 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
971 bool fullDateRange = false; 971 bool fullDateRange = false;
972 local->resetTempSyncStat(); 972 local->resetTempSyncStat();
973 mLastCalendarSync = QDateTime::currentDateTime(); 973 mLastCalendarSync = QDateTime::currentDateTime();
974 if ( mSyncManager->syncWithDesktop() ) { 974 if ( mSyncManager->syncWithDesktop() ) {
975 remote->resetPilotStat(1); 975 remote->resetPilotStat(1);
976 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 976 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
977 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 977 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
978 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 978 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
979 } else { 979 } else {
980 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 980 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
981 } 981 }
982 } 982 }
983 QDateTime modifiedCalendar = mLastCalendarSync; 983 QDateTime modifiedCalendar = mLastCalendarSync;
984 eventLSync = getLastSyncEvent(); 984 eventLSync = getLastSyncEvent();
985 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 985 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
986 if ( eventR ) { 986 if ( eventR ) {
987 eventRSync = (Event*) eventR->clone(); 987 eventRSync = (Event*) eventR->clone();
988 remote->deleteEvent(eventR ); 988 remote->deleteEvent(eventR );
989 989
990 } else { 990 } else {
991 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 991 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
992 eventRSync = (Event*)eventLSync->clone(); 992 eventRSync = (Event*)eventLSync->clone();
993 } else { 993 } else {
994 fullDateRange = true; 994 fullDateRange = true;
995 eventRSync = new Event(); 995 eventRSync = new Event();
996 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 996 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
997 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 997 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
998 eventRSync->setDtStart( mLastCalendarSync ); 998 eventRSync->setDtStart( mLastCalendarSync );
999 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 999 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1000 eventRSync->setCategories( i18n("SyncEvent") ); 1000 eventRSync->setCategories( i18n("SyncEvent") );
1001 } 1001 }
1002 } 1002 }
1003 if ( eventLSync->dtStart() == mLastCalendarSync ) 1003 if ( eventLSync->dtStart() == mLastCalendarSync )
1004 fullDateRange = true; 1004 fullDateRange = true;
1005 1005
1006 if ( ! fullDateRange ) { 1006 if ( ! fullDateRange ) {
1007 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1007 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1008 1008
1009 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1009 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1010 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1010 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1011 fullDateRange = true; 1011 fullDateRange = true;
1012 } 1012 }
1013 } 1013 }
1014 if ( mSyncManager->syncWithDesktop() ) { 1014 if ( mSyncManager->syncWithDesktop() ) {
1015 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1015 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1016 } 1016 }
1017 if ( fullDateRange ) 1017 if ( fullDateRange )
1018 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1018 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1019 else 1019 else
1020 mLastCalendarSync = eventLSync->dtStart(); 1020 mLastCalendarSync = eventLSync->dtStart();
1021 // for resyncing if own file has changed 1021 // for resyncing if own file has changed
1022 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1022 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1023 mLastCalendarSync = loadedFileVersion; 1023 mLastCalendarSync = loadedFileVersion;
1024 //qDebug("setting mLastCalendarSync "); 1024 //qDebug("setting mLastCalendarSync ");
1025 } 1025 }
1026 //qDebug("*************************** "); 1026 //qDebug("*************************** ");
1027 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1027 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1028 QPtrList<Incidence> er = remote->rawIncidences(); 1028 QPtrList<Incidence> er = remote->rawIncidences();
1029 Incidence* inR = er.first(); 1029 Incidence* inR = er.first();
1030 Incidence* inL; 1030 Incidence* inL;
1031 QProgressBar bar( er.count(),0 ); 1031 QProgressBar bar( er.count(),0 );
1032 bar.setCaption (i18n("Syncing - close to abort!") ); 1032 bar.setCaption (i18n("Syncing - close to abort!") );
1033 1033
1034 // ************** setting up filter ************* 1034 // ************** setting up filter *************
1035 CalFilter *filterIN = 0; 1035 CalFilter *filterIN = 0;
1036 CalFilter *filterOUT = 0; 1036 CalFilter *filterOUT = 0;
1037 CalFilter *filter = mFilters.first(); 1037 CalFilter *filter = mFilters.first();
1038 while(filter) { 1038 while(filter) {
1039 if ( filter->name() == mSyncManager->mFilterInCal ) 1039 if ( filter->name() == mSyncManager->mFilterInCal )
1040 filterIN = filter; 1040 filterIN = filter;
1041 if ( filter->name() == mSyncManager->mFilterOutCal ) 1041 if ( filter->name() == mSyncManager->mFilterOutCal )
1042 filterOUT = filter; 1042 filterOUT = filter;
1043 filter = mFilters.next(); 1043 filter = mFilters.next();
1044 } 1044 }
1045 int w = 300; 1045 int w = 300;
1046 if ( QApplication::desktop()->width() < 320 ) 1046 if ( QApplication::desktop()->width() < 320 )
1047 w = 220; 1047 w = 220;
1048 int h = bar.sizeHint().height() ; 1048 int h = bar.sizeHint().height() ;
1049 int dw = QApplication::desktop()->width(); 1049 int dw = QApplication::desktop()->width();
1050 int dh = QApplication::desktop()->height(); 1050 int dh = QApplication::desktop()->height();
1051 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1051 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1052 bar.show(); 1052 bar.show();
1053 int modulo = (er.count()/10)+1; 1053 int modulo = (er.count()/10)+1;
1054 int incCounter = 0; 1054 int incCounter = 0;
1055 while ( inR ) { 1055 while ( inR ) {
1056 if ( ! bar.isVisible() ) 1056 if ( ! bar.isVisible() )
1057 return false; 1057 return false;
1058 if ( incCounter % modulo == 0 ) 1058 if ( incCounter % modulo == 0 )
1059 bar.setProgress( incCounter ); 1059 bar.setProgress( incCounter );
1060 ++incCounter; 1060 ++incCounter;
1061 uid = inR->uid(); 1061 uid = inR->uid();
1062 bool skipIncidence = false; 1062 bool skipIncidence = false;
1063 if ( uid.left(15) == QString("last-syncEvent-") ) 1063 if ( uid.left(15) == QString("last-syncEvent-") )
1064 skipIncidence = true; 1064 skipIncidence = true;
1065 QString idS; 1065 QString idS;
1066 qApp->processEvents(); 1066 qApp->processEvents();
1067 if ( !skipIncidence ) { 1067 if ( !skipIncidence ) {
1068 inL = local->incidence( uid ); 1068 inL = local->incidence( uid );
1069 if ( inL ) { // maybe conflict - same uid in both calendars 1069 if ( inL ) { // maybe conflict - same uid in both calendars
1070 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1070 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1071 //qDebug("take %d %s ", take, inL->summary().latin1()); 1071 //qDebug("take %d %s ", take, inL->summary().latin1());
1072 if ( take == 3 ) 1072 if ( take == 3 )
1073 return false; 1073 return false;
1074 if ( take == 1 ) {// take local ********************** 1074 if ( take == 1 ) {// take local **********************
1075 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1075 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1076 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1076 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1077 else 1077 else
1078 idS = inR->IDStr(); 1078 idS = inR->IDStr();
1079 remote->deleteIncidence( inR ); 1079 remote->deleteIncidence( inR );
1080 inR = inL->clone(); 1080 inR = inL->clone();
1081 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1081 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1082 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1082 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1083 inR->setIDStr( idS ); 1083 inR->setIDStr( idS );
1084 remote->addIncidence( inR ); 1084 remote->addIncidence( inR );
1085 if ( mSyncManager->syncWithDesktop() ) 1085 if ( mSyncManager->syncWithDesktop() )
1086 inR->setPilotId( 2 ); 1086 inR->setPilotId( 2 );
1087 ++changedRemote; 1087 ++changedRemote;
1088 } else {// take remote ********************** 1088 } else {// take remote **********************
1089 idS = inL->IDStr(); 1089 idS = inL->IDStr();
1090 int pid = inL->pilotId(); 1090 int pid = inL->pilotId();
1091 local->deleteIncidence( inL ); 1091 local->deleteIncidence( inL );
1092 inL = inR->clone(); 1092 inL = inR->clone();
1093 if ( mSyncManager->syncWithDesktop() ) 1093 if ( mSyncManager->syncWithDesktop() )
1094 inL->setPilotId( pid ); 1094 inL->setPilotId( pid );
1095 inL->setIDStr( idS ); 1095 inL->setIDStr( idS );
1096 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1096 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1097 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1097 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1098 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1098 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1099 } 1099 }
1100 local->addIncidence( inL ); 1100 local->addIncidence( inL );
1101 ++changedLocal; 1101 ++changedLocal;
1102 } 1102 }
1103 } 1103 }
1104 } else { // no conflict ********** add or delete remote 1104 } else { // no conflict ********** add or delete remote
1105 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1105 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1106 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1106 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1107 QString des = eventLSync->description(); 1107 QString des = eventLSync->description();
1108 QString pref = "e"; 1108 QString pref = "e";
1109 if ( inR->type() == "Todo" ) 1109 if ( inR->type() == "Todo" )
1110 pref = "t"; 1110 pref = "t";
1111 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1111 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1112 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1112 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1113 //remote->deleteIncidence( inR ); 1113 //remote->deleteIncidence( inR );
1114 ++deletedEventR; 1114 ++deletedEventR;
1115 } else { 1115 } else {
1116 inR->setLastModified( modifiedCalendar ); 1116 inR->setLastModified( modifiedCalendar );
1117 inL = inR->clone(); 1117 inL = inR->clone();
1118 inL->setIDStr( ":" ); 1118 inL->setIDStr( ":" );
1119 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1119 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1120 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1120 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1121 local->addIncidence( inL ); 1121 local->addIncidence( inL );
1122 ++addedEvent; 1122 ++addedEvent;
1123 1123
1124 } 1124 }
1125 } else { 1125 } else {
1126 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1126 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1127 inR->setLastModified( modifiedCalendar ); 1127 inR->setLastModified( modifiedCalendar );
1128 inL = inR->clone(); 1128 inL = inR->clone();
1129 inL->setIDStr( ":" ); 1129 inL->setIDStr( ":" );
1130 local->addIncidence( inL ); 1130 local->addIncidence( inL );
1131 ++addedEvent; 1131 ++addedEvent;
1132 1132
1133 } else { 1133 } else {
1134 checkExternSyncEvent(eventRSyncSharp, inR); 1134 checkExternSyncEvent(eventRSyncSharp, inR);
1135 remote->deleteIncidence( inR ); 1135 remote->deleteIncidence( inR );
1136 ++deletedEventR; 1136 ++deletedEventR;
1137 } 1137 }
1138 } 1138 }
1139 } else { 1139 } else {
1140 ++filteredIN; 1140 ++filteredIN;
1141 } 1141 }
1142 } 1142 }
1143 } 1143 }
1144 inR = er.next(); 1144 inR = er.next();
1145 } 1145 }
1146 QPtrList<Incidence> el = local->rawIncidences(); 1146 QPtrList<Incidence> el = local->rawIncidences();
1147 inL = el.first(); 1147 inL = el.first();
1148 modulo = (el.count()/10)+1; 1148 modulo = (el.count()/10)+1;
1149 bar.setCaption (i18n("Add / remove events") ); 1149 bar.setCaption (i18n("Add / remove events") );
1150 bar.setTotalSteps ( el.count() ) ; 1150 bar.setTotalSteps ( el.count() ) ;
1151 bar.show(); 1151 bar.show();
1152 incCounter = 0; 1152 incCounter = 0;
1153 1153
1154 while ( inL ) { 1154 while ( inL ) {
1155 1155
1156 qApp->processEvents(); 1156 qApp->processEvents();
1157 if ( ! bar.isVisible() ) 1157 if ( ! bar.isVisible() )
1158 return false; 1158 return false;
1159 if ( incCounter % modulo == 0 ) 1159 if ( incCounter % modulo == 0 )
1160 bar.setProgress( incCounter ); 1160 bar.setProgress( incCounter );
1161 ++incCounter; 1161 ++incCounter;
1162 uid = inL->uid(); 1162 uid = inL->uid();
1163 bool skipIncidence = false; 1163 bool skipIncidence = false;
1164 if ( uid.left(15) == QString("last-syncEvent-") ) 1164 if ( uid.left(15) == QString("last-syncEvent-") )
1165 skipIncidence = true; 1165 skipIncidence = true;
1166 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1166 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1167 skipIncidence = true; 1167 skipIncidence = true;
1168 if ( !skipIncidence ) { 1168 if ( !skipIncidence ) {
1169 inR = remote->incidence( uid ); 1169 inR = remote->incidence( uid );
1170 if ( ! inR ) { 1170 if ( ! inR ) {
1171 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1171 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1172 // no conflict ********** add or delete local 1172 // no conflict ********** add or delete local
1173 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1173 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1174 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1174 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1175 checkExternSyncEvent(eventLSyncSharp, inL); 1175 checkExternSyncEvent(eventLSyncSharp, inL);
1176 local->deleteIncidence( inL ); 1176 local->deleteIncidence( inL );
1177 ++deletedEventL; 1177 ++deletedEventL;
1178 } else { 1178 } else {
1179 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1179 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1180 inL->removeID(mCurrentSyncDevice ); 1180 inL->removeID(mCurrentSyncDevice );
1181 ++addedEventR; 1181 ++addedEventR;
1182 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1182 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1183 inL->setLastModified( modifiedCalendar ); 1183 inL->setLastModified( modifiedCalendar );
1184 inR = inL->clone(); 1184 inR = inL->clone();
1185 inR->setIDStr( ":" ); 1185 inR->setIDStr( ":" );
1186 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1186 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1187 remote->addIncidence( inR ); 1187 remote->addIncidence( inR );
1188 } 1188 }
1189 } 1189 }
1190 } else { 1190 } else {
1191 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1191 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1192 checkExternSyncEvent(eventLSyncSharp, inL); 1192 checkExternSyncEvent(eventLSyncSharp, inL);
1193 local->deleteIncidence( inL ); 1193 local->deleteIncidence( inL );
1194 ++deletedEventL; 1194 ++deletedEventL;
1195 } else { 1195 } else {
1196 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1196 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1197 ++addedEventR; 1197 ++addedEventR;
1198 inL->setLastModified( modifiedCalendar ); 1198 inL->setLastModified( modifiedCalendar );
1199 inR = inL->clone(); 1199 inR = inL->clone();
1200 inR->setIDStr( ":" ); 1200 inR->setIDStr( ":" );
1201 remote->addIncidence( inR ); 1201 remote->addIncidence( inR );
1202 } 1202 }
1203 } 1203 }
1204 } 1204 }
1205 } else { 1205 } else {
1206 ++filteredOUT; 1206 ++filteredOUT;
1207 } 1207 }
1208 } 1208 }
1209 } 1209 }
1210 inL = el.next(); 1210 inL = el.next();
1211 } 1211 }
1212 int delFut = 0; 1212 int delFut = 0;
1213 int remRem = 0; 1213 int remRem = 0;
1214 if ( mSyncManager->mWriteBackInFuture ) { 1214 if ( mSyncManager->mWriteBackInFuture ) {
1215 er = remote->rawIncidences(); 1215 er = remote->rawIncidences();
1216 remRem = er.count(); 1216 remRem = er.count();
1217 inR = er.first(); 1217 inR = er.first();
1218 QDateTime dt; 1218 QDateTime dt;
1219 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1219 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1220 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1220 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1221 while ( inR ) { 1221 while ( inR ) {
1222 if ( inR->type() == "Todo" ) { 1222 if ( inR->type() == "Todo" ) {
1223 Todo * t = (Todo*)inR; 1223 Todo * t = (Todo*)inR;
1224 if ( t->hasDueDate() ) 1224 if ( t->hasDueDate() )
1225 dt = t->dtDue(); 1225 dt = t->dtDue();
1226 else 1226 else
1227 dt = cur.addSecs( 62 ); 1227 dt = cur.addSecs( 62 );
1228 } 1228 }
1229 else if (inR->type() == "Event" ) { 1229 else if (inR->type() == "Event" ) {
1230 bool ok; 1230 bool ok;
1231 dt = inR->getNextOccurence( cur, &ok ); 1231 dt = inR->getNextOccurence( cur, &ok );
1232 if ( !ok ) 1232 if ( !ok )
1233 dt = cur.addSecs( -62 ); 1233 dt = cur.addSecs( -62 );
1234 } 1234 }
1235 else 1235 else
1236 dt = inR->dtStart(); 1236 dt = inR->dtStart();
1237 if ( dt < cur || dt > end ) { 1237 if ( dt < cur || dt > end ) {
1238 remote->deleteIncidence( inR ); 1238 remote->deleteIncidence( inR );
1239 ++delFut; 1239 ++delFut;
1240 } 1240 }
1241 inR = er.next(); 1241 inR = er.next();
1242 } 1242 }
1243 } 1243 }
1244 bar.hide(); 1244 bar.hide();
1245 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1245 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1246 eventLSync->setReadOnly( false ); 1246 eventLSync->setReadOnly( false );
1247 eventLSync->setDtStart( mLastCalendarSync ); 1247 eventLSync->setDtStart( mLastCalendarSync );
1248 eventRSync->setDtStart( mLastCalendarSync ); 1248 eventRSync->setDtStart( mLastCalendarSync );
1249 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1249 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1250 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1250 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1251 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1251 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1252 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1252 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1253 eventLSync->setReadOnly( true ); 1253 eventLSync->setReadOnly( true );
1254 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1254 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1255 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal... 1255 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal...
1256 remote->addEvent( eventRSync ); 1256 remote->addEvent( eventRSync );
1257 else 1257 else
1258 delete eventRSync; 1258 delete eventRSync;
1259 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1259 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1260 QString mes; 1260 QString mes;
1261 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\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT ); 1261 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\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT );
1262 QString delmess; 1262 QString delmess;
1263 if ( delFut ) { 1263 if ( delFut ) {
1264 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut); 1264 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut);
1265 mes += delmess; 1265 mes += delmess;
1266 } 1266 }
1267 mes = i18n("Local calendar changed!\n") +mes; 1267 mes = i18n("Local calendar changed!\n") +mes;
1268 mCalendar->checkAlarmForIncidence( 0, true ); 1268 mCalendar->checkAlarmForIncidence( 0, true );
1269 qDebug( mes ); 1269 qDebug( mes );
1270 if ( mSyncManager->mShowSyncSummary ) { 1270 if ( mSyncManager->mShowSyncSummary ) {
1271 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1271 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1272 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1272 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1273 qDebug("KO: WB cancelled "); 1273 qDebug("KO: WB cancelled ");
1274 mSyncManager->mWriteBackFile = false; 1274 mSyncManager->mWriteBackFile = false;
1275 return syncOK; 1275 return syncOK;
1276 } 1276 }
1277 } 1277 }
1278 return syncOK; 1278 return syncOK;
1279} 1279}
1280 1280
1281void CalendarView::setSyncDevice( QString s ) 1281void CalendarView::setSyncDevice( QString s )
1282{ 1282{
1283 mCurrentSyncDevice= s; 1283 mCurrentSyncDevice= s;
1284} 1284}
1285void CalendarView::setSyncName( QString s ) 1285void CalendarView::setSyncName( QString s )
1286{ 1286{
1287 mCurrentSyncName= s; 1287 mCurrentSyncName= s;
1288} 1288}
1289bool CalendarView::syncCalendar(QString filename, int mode) 1289bool CalendarView::syncCalendar(QString filename, int mode)
1290{ 1290{
1291 //qDebug("syncCalendar %s ", filename.latin1()); 1291 //qDebug("syncCalendar %s ", filename.latin1());
1292 mGlobalSyncMode = SYNC_MODE_NORMAL; 1292 mGlobalSyncMode = SYNC_MODE_NORMAL;
1293 CalendarLocal* calendar = new CalendarLocal(); 1293 CalendarLocal* calendar = new CalendarLocal();
1294 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1294 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1295 FileStorage* storage = new FileStorage( calendar ); 1295 FileStorage* storage = new FileStorage( calendar );
1296 bool syncOK = false; 1296 bool syncOK = false;
1297 storage->setFileName( filename ); 1297 storage->setFileName( filename );
1298 // qDebug("loading ... "); 1298 // qDebug("loading ... ");
1299 if ( storage->load() ) { 1299 if ( storage->load() ) {
1300 getEventViewerDialog()->setSyncMode( true ); 1300 getEventViewerDialog()->setSyncMode( true );
1301 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1301 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1302 getEventViewerDialog()->setSyncMode( false ); 1302 getEventViewerDialog()->setSyncMode( false );
1303 if ( syncOK ) { 1303 if ( syncOK ) {
1304 if ( mSyncManager->mWriteBackFile ) 1304 if ( mSyncManager->mWriteBackFile )
1305 { 1305 {
1306 storage->setSaveFormat( new ICalFormat() ); 1306 storage->setSaveFormat( new ICalFormat() );
1307 storage->save(); 1307 storage->save();
1308 } 1308 }
1309 } 1309 }
1310 setModified( true ); 1310 setModified( true );
1311 } 1311 }
1312 delete storage; 1312 delete storage;
1313 delete calendar; 1313 delete calendar;
1314 if ( syncOK ) 1314 if ( syncOK )
1315 updateView(); 1315 updateView();
1316 return syncOK; 1316 return syncOK;
1317} 1317}
1318 1318
1319void CalendarView::syncExternal( int mode ) 1319void CalendarView::syncExternal( int mode )
1320{ 1320{
1321 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1321 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1322 1322
1323 qApp->processEvents(); 1323 qApp->processEvents();
1324 CalendarLocal* calendar = new CalendarLocal(); 1324 CalendarLocal* calendar = new CalendarLocal();
1325 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1325 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1326 bool syncOK = false; 1326 bool syncOK = false;
1327 bool loadSuccess = false; 1327 bool loadSuccess = false;
1328 PhoneFormat* phoneFormat = 0; 1328 PhoneFormat* phoneFormat = 0;
1329 emit tempDisableBR(true); 1329 emit tempDisableBR(true);
1330#ifndef DESKTOP_VERSION 1330#ifndef DESKTOP_VERSION
1331 SharpFormat* sharpFormat = 0; 1331 SharpFormat* sharpFormat = 0;
1332 if ( mode == 0 ) { // sharp 1332 if ( mode == 0 ) { // sharp
1333 sharpFormat = new SharpFormat () ; 1333 sharpFormat = new SharpFormat () ;
1334 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1334 loadSuccess = sharpFormat->load( calendar, mCalendar );
1335 1335
1336 } else 1336 } else
1337#endif 1337#endif
1338 if ( mode == 1 ) { // phone 1338 if ( mode == 1 ) { // phone
1339 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1339 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1340 mSyncManager->mPhoneDevice, 1340 mSyncManager->mPhoneDevice,
1341 mSyncManager->mPhoneConnection, 1341 mSyncManager->mPhoneConnection,
1342 mSyncManager->mPhoneModel); 1342 mSyncManager->mPhoneModel);
1343 loadSuccess = phoneFormat->load( calendar,mCalendar); 1343 loadSuccess = phoneFormat->load( calendar,mCalendar);
1344 1344
1345 } else { 1345 } else {
1346 emit tempDisableBR(false); 1346 emit tempDisableBR(false);
1347 return; 1347 return;
1348 } 1348 }
1349 if ( loadSuccess ) { 1349 if ( loadSuccess ) {
1350 getEventViewerDialog()->setSyncMode( true ); 1350 getEventViewerDialog()->setSyncMode( true );
1351 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1351 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1352 getEventViewerDialog()->setSyncMode( false ); 1352 getEventViewerDialog()->setSyncMode( false );
1353 qApp->processEvents(); 1353 qApp->processEvents();
1354 if ( syncOK ) { 1354 if ( syncOK ) {
1355 if ( mSyncManager->mWriteBackFile ) 1355 if ( mSyncManager->mWriteBackFile )
1356 { 1356 {
1357 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1357 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1358 Incidence* inc = iL.first(); 1358 Incidence* inc = iL.first();
1359 if ( phoneFormat ) { 1359 if ( phoneFormat ) {
1360 while ( inc ) { 1360 while ( inc ) {
1361 inc->removeID(mCurrentSyncDevice); 1361 inc->removeID(mCurrentSyncDevice);
1362 inc = iL.next(); 1362 inc = iL.next();
1363 } 1363 }
1364 } 1364 }
1365#ifndef DESKTOP_VERSION 1365#ifndef DESKTOP_VERSION
1366 if ( sharpFormat ) 1366 if ( sharpFormat )
1367 sharpFormat->save(calendar); 1367 sharpFormat->save(calendar);
1368#endif 1368#endif
1369 if ( phoneFormat ) 1369 if ( phoneFormat )
1370 phoneFormat->save(calendar); 1370 phoneFormat->save(calendar);
1371 iL = calendar->rawIncidences(); 1371 iL = calendar->rawIncidences();
1372 inc = iL.first(); 1372 inc = iL.first();
1373 Incidence* loc; 1373 Incidence* loc;
1374 while ( inc ) { 1374 while ( inc ) {
1375 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1375 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1376 loc = mCalendar->incidence(inc->uid() ); 1376 loc = mCalendar->incidence(inc->uid() );
1377 if ( loc ) { 1377 if ( loc ) {
1378 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1378 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1379 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1379 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1380 } 1380 }
1381 } 1381 }
1382 inc = iL.next(); 1382 inc = iL.next();
1383 } 1383 }
1384 Incidence* lse = getLastSyncEvent(); 1384 Incidence* lse = getLastSyncEvent();
1385 if ( lse ) { 1385 if ( lse ) {
1386 lse->setReadOnly( false ); 1386 lse->setReadOnly( false );
1387 lse->setDescription( "" ); 1387 lse->setDescription( "" );
1388 lse->setReadOnly( true ); 1388 lse->setReadOnly( true );
1389 } 1389 }
1390 } 1390 }
1391 } else { 1391 } else {
1392 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 1392 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
1393 } 1393 }
1394 setModified( true ); 1394 setModified( true );
1395 } else { 1395 } else {
1396 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1396 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1397 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1397 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1398 question, i18n("Ok")) ; 1398 question, i18n("Ok")) ;
1399 1399
1400 } 1400 }
1401 delete calendar; 1401 delete calendar;
1402 updateView(); 1402 updateView();
1403 emit tempDisableBR(false); 1403 emit tempDisableBR(false);
1404 return ;//syncOK; 1404 return ;//syncOK;
1405 1405
1406} 1406}
1407 1407
1408bool CalendarView::importBday() 1408bool CalendarView::importBday()
1409{ 1409{
1410#ifndef KORG_NOKABC 1410#ifndef KORG_NOKABC
1411 1411
1412#ifdef DESKTOP_VERSION 1412#ifdef DESKTOP_VERSION
1413 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1413 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1414 KABC::AddressBook::Iterator it; 1414 KABC::AddressBook::Iterator it;
1415 int count = 0; 1415 int count = 0;
1416 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1416 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1417 ++count; 1417 ++count;
1418 } 1418 }
1419 QProgressBar bar(count,0 ); 1419 QProgressBar bar(count,0 );
1420 int w = 300; 1420 int w = 300;
1421 if ( QApplication::desktop()->width() < 320 ) 1421 if ( QApplication::desktop()->width() < 320 )
1422 w = 220; 1422 w = 220;
1423 int h = bar.sizeHint().height() ; 1423 int h = bar.sizeHint().height() ;
1424 int dw = QApplication::desktop()->width(); 1424 int dw = QApplication::desktop()->width();
1425 int dh = QApplication::desktop()->height(); 1425 int dh = QApplication::desktop()->height();
1426 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1426 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1427 bar.show(); 1427 bar.show();
1428 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1428 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1429 qApp->processEvents(); 1429 qApp->processEvents();
1430 count = 0; 1430 count = 0;
1431 int addCount = 0; 1431 int addCount = 0;
1432 KCal::Attendee* a = 0; 1432 KCal::Attendee* a = 0;
1433 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1433 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1434 if ( ! bar.isVisible() ) 1434 if ( ! bar.isVisible() )
1435 return false; 1435 return false;
1436 bar.setProgress( count++ ); 1436 bar.setProgress( count++ );
1437 qApp->processEvents(); 1437 qApp->processEvents();
1438 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1438 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1439 if ( (*it).birthday().date().isValid() ){ 1439 if ( (*it).birthday().date().isValid() ){
1440 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1440 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1441 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1441 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1442 ++addCount; 1442 ++addCount;
1443 } 1443 }
1444 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1444 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1445 if ( anni.isValid() ){ 1445 if ( anni.isValid() ){
1446 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1446 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1447 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1447 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1448 ++addCount; 1448 ++addCount;
1449 } 1449 }
1450 } 1450 }
1451 updateView(); 1451 updateView();
1452 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1452 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1453#else //DESKTOP_VERSION 1453#else //DESKTOP_VERSION
1454 1454
1455 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 1455 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
1456 // the result should now arrive through method insertBirthdays 1456 // the result should now arrive through method insertBirthdays
1457 1457
1458#endif //DESKTOP_VERSION 1458#endif //DESKTOP_VERSION
1459 1459
1460#endif //KORG_NOKABC 1460#endif //KORG_NOKABC
1461 1461
1462 1462
1463 return true; 1463 return true;
1464} 1464}
1465 1465
1466// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 1466// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
1467void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 1467void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
1468 const QStringList& anniversaryList, const QStringList& realNameList, 1468 const QStringList& anniversaryList, const QStringList& realNameList,
1469 const QStringList& emailList, const QStringList& assembledNameList, 1469 const QStringList& emailList, const QStringList& assembledNameList,
1470 const QStringList& uidList) 1470 const QStringList& uidList)
1471{ 1471{
1472 //qDebug("KO::CalendarView::insertBirthdays"); 1472 //qDebug("KO::CalendarView::insertBirthdays");
1473 if (uid == this->name()) 1473 if (uid == this->name())
1474 { 1474 {
1475 int count = birthdayList.count(); 1475 int count = birthdayList.count();
1476 int addCount = 0; 1476 int addCount = 0;
1477 KCal::Attendee* a = 0; 1477 KCal::Attendee* a = 0;
1478 1478
1479 //qDebug("CalView 1 %i", count); 1479 //qDebug("CalView 1 %i", count);
1480 1480
1481 QProgressBar bar(count,0 ); 1481 QProgressBar bar(count,0 );
1482 int w = 300; 1482 int w = 300;
1483 if ( QApplication::desktop()->width() < 320 ) 1483 if ( QApplication::desktop()->width() < 320 )
1484 w = 220; 1484 w = 220;
1485 int h = bar.sizeHint().height() ; 1485 int h = bar.sizeHint().height() ;
1486 int dw = QApplication::desktop()->width(); 1486 int dw = QApplication::desktop()->width();
1487 int dh = QApplication::desktop()->height(); 1487 int dh = QApplication::desktop()->height();
1488 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1488 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1489 bar.show(); 1489 bar.show();
1490 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 1490 bar.setCaption (i18n("inserting birthdays - close to abort!") );
1491 qApp->processEvents(); 1491 qApp->processEvents();
1492 1492
1493 QDate birthday; 1493 QDate birthday;
1494 QDate anniversary; 1494 QDate anniversary;
1495 QString realName; 1495 QString realName;
1496 QString email; 1496 QString email;
1497 QString assembledName; 1497 QString assembledName;
1498 QString uid; 1498 QString uid;
1499 bool ok = true; 1499 bool ok = true;
1500 for ( int i = 0; i < count; i++) 1500 for ( int i = 0; i < count; i++)
1501 { 1501 {
1502 if ( ! bar.isVisible() ) 1502 if ( ! bar.isVisible() )
1503 return; 1503 return;
1504 bar.setProgress( i ); 1504 bar.setProgress( i );
1505 qApp->processEvents(); 1505 qApp->processEvents();
1506 1506
1507 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 1507 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
1508 if (!ok) { 1508 if (!ok) {
1509 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 1509 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
1510 } 1510 }
1511 1511
1512 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 1512 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
1513 if (!ok) { 1513 if (!ok) {
1514 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 1514 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
1515 } 1515 }
1516 realName = realNameList[i]; 1516 realName = realNameList[i];
1517 email = emailList[i]; 1517 email = emailList[i];
1518 assembledName = assembledNameList[i]; 1518 assembledName = assembledNameList[i];
1519 uid = uidList[i]; 1519 uid = uidList[i];
1520 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() ); 1520 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() );
1521 1521
1522 if ( birthday.isValid() ){ 1522 if ( birthday.isValid() ){
1523 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1523 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1524 KCal::Attendee::ReqParticipant,uid) ; 1524 KCal::Attendee::ReqParticipant,uid) ;
1525 if ( addAnniversary( birthday, assembledName, a, true ) ) 1525 if ( addAnniversary( birthday, assembledName, a, true ) )
1526 ++addCount; 1526 ++addCount;
1527 } 1527 }
1528 1528
1529 if ( anniversary.isValid() ){ 1529 if ( anniversary.isValid() ){
1530 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1530 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1531 KCal::Attendee::ReqParticipant,uid) ; 1531 KCal::Attendee::ReqParticipant,uid) ;
1532 if ( addAnniversary( anniversary, assembledName, a, false ) ) 1532 if ( addAnniversary( anniversary, assembledName, a, false ) )
1533 ++addCount; 1533 ++addCount;
1534 } 1534 }
1535 } 1535 }
1536 1536
1537 updateView(); 1537 updateView();
1538 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1538 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1539 1539
1540 } 1540 }
1541 1541
1542} 1542}
1543 1543
1544 1544
1545 1545
1546bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1546bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1547{ 1547{
1548 //qDebug("addAnni "); 1548 //qDebug("addAnni ");
1549 Event * ev = new Event(); 1549 Event * ev = new Event();
1550 ev->setOrganizer(KOPrefs::instance()->email()); 1550 ev->setOrganizer(KOPrefs::instance()->email());
1551 if ( a ) { 1551 if ( a ) {
1552 ev->addAttendee( a ); 1552 ev->addAttendee( a );
1553 } 1553 }
1554 QString kind; 1554 QString kind;
1555 if ( birthday ) { 1555 if ( birthday ) {
1556 kind = i18n( "Birthday" ); 1556 kind = i18n( "Birthday" );
1557 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 1557 ev->setSummary( name + " (" + QString::number(date.year()) +")");
1558 } 1558 }
1559 else { 1559 else {
1560 kind = i18n( "Anniversary" ); 1560 kind = i18n( "Anniversary" );
1561 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 1561 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
1562 } 1562 }
1563 ev->setCategories( kind ); 1563 ev->setCategories( kind );
1564 ev->setDtStart( QDateTime(date) ); 1564 ev->setDtStart( QDateTime(date) );
1565 ev->setDtEnd( QDateTime(date) ); 1565 ev->setDtEnd( QDateTime(date) );
1566 ev->setFloats( true ); 1566 ev->setFloats( true );
1567 Recurrence * rec = ev->recurrence(); 1567 Recurrence * rec = ev->recurrence();
1568 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1568 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1569 rec->addYearlyNum( date.month() ); 1569 rec->addYearlyNum( date.month() );
1570 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1570 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1571 delete ev; 1571 delete ev;
1572 return false; 1572 return false;
1573 } 1573 }
1574 return true; 1574 return true;
1575 1575
1576} 1576}
1577bool CalendarView::importQtopia( const QString &categories, 1577bool CalendarView::importQtopia( const QString &categories,
1578 const QString &datebook, 1578 const QString &datebook,
1579 const QString &todolist ) 1579 const QString &todolist )
1580{ 1580{
1581 1581
1582 QtopiaFormat qtopiaFormat; 1582 QtopiaFormat qtopiaFormat;
1583 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1583 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1584 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1584 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1585 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1585 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1586 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1586 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1587 1587
1588 updateView(); 1588 updateView();
1589 return true; 1589 return true;
1590 1590
1591#if 0 1591#if 0
1592 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1592 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1593 mCurrentSyncDevice = "qtopia-XML"; 1593 mCurrentSyncDevice = "qtopia-XML";
1594 if ( mSyncManager->mAskForPreferences ) 1594 if ( mSyncManager->mAskForPreferences )
1595 edit_sync_options(); 1595 edit_sync_options();
1596 qApp->processEvents(); 1596 qApp->processEvents();
1597 CalendarLocal* calendar = new CalendarLocal(); 1597 CalendarLocal* calendar = new CalendarLocal();
1598 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1598 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1599 bool syncOK = false; 1599 bool syncOK = false;
1600 QtopiaFormat qtopiaFormat; 1600 QtopiaFormat qtopiaFormat;
1601 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1601 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1602 bool loadOk = true; 1602 bool loadOk = true;
1603 if ( !categories.isEmpty() ) 1603 if ( !categories.isEmpty() )
1604 loadOk = qtopiaFormat.load( calendar, categories ); 1604 loadOk = qtopiaFormat.load( calendar, categories );
1605 if ( loadOk && !datebook.isEmpty() ) 1605 if ( loadOk && !datebook.isEmpty() )
1606 loadOk = qtopiaFormat.load( calendar, datebook ); 1606 loadOk = qtopiaFormat.load( calendar, datebook );
1607 if ( loadOk && !todolist.isEmpty() ) 1607 if ( loadOk && !todolist.isEmpty() )
1608 loadOk = qtopiaFormat.load( calendar, todolist ); 1608 loadOk = qtopiaFormat.load( calendar, todolist );
1609 1609
1610 if ( loadOk ) { 1610 if ( loadOk ) {
1611 getEventViewerDialog()->setSyncMode( true ); 1611 getEventViewerDialog()->setSyncMode( true );
1612 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1612 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1613 getEventViewerDialog()->setSyncMode( false ); 1613 getEventViewerDialog()->setSyncMode( false );
1614 qApp->processEvents(); 1614 qApp->processEvents();
1615 if ( syncOK ) { 1615 if ( syncOK ) {
1616 if ( mSyncManager->mWriteBackFile ) 1616 if ( mSyncManager->mWriteBackFile )
1617 { 1617 {
1618 // write back XML file 1618 // write back XML file
1619 1619
1620 } 1620 }
1621 setModified( true ); 1621 setModified( true );
1622 } 1622 }
1623 } else { 1623 } else {
1624 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1624 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1625 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1625 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1626 question, i18n("Ok")) ; 1626 question, i18n("Ok")) ;
1627 } 1627 }
1628 delete calendar; 1628 delete calendar;
1629 updateView(); 1629 updateView();
1630 return syncOK; 1630 return syncOK;
1631 1631
1632 1632
1633#endif 1633#endif
1634 1634
1635} 1635}
1636 1636
1637void CalendarView::setSyncEventsReadOnly() 1637void CalendarView::setSyncEventsReadOnly()
1638{ 1638{
1639 Event * ev; 1639 Event * ev;
1640 QPtrList<Event> eL = mCalendar->rawEvents(); 1640 QPtrList<Event> eL = mCalendar->rawEvents();
1641 ev = eL.first(); 1641 ev = eL.first();
1642 while ( ev ) { 1642 while ( ev ) {
1643 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1643 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1644 ev->setReadOnly( true ); 1644 ev->setReadOnly( true );
1645 ev = eL.next(); 1645 ev = eL.next();
1646 } 1646 }
1647} 1647}
1648bool CalendarView::openCalendar(QString filename, bool merge) 1648bool CalendarView::openCalendar(QString filename, bool merge)
1649{ 1649{
1650 1650
1651 if (filename.isEmpty()) { 1651 if (filename.isEmpty()) {
1652 return false; 1652 return false;
1653 } 1653 }
1654 1654
1655 if (!QFile::exists(filename)) { 1655 if (!QFile::exists(filename)) {
1656 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1656 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1657 return false; 1657 return false;
1658 } 1658 }
1659 1659
1660 globalFlagBlockAgenda = 1; 1660 globalFlagBlockAgenda = 1;
1661 if (!merge) mCalendar->close(); 1661 if (!merge) mCalendar->close();
1662 1662
1663 mStorage->setFileName( filename ); 1663 mStorage->setFileName( filename );
1664 1664
1665 if ( mStorage->load() ) { 1665 if ( mStorage->load() ) {
1666 if ( merge ) ;//setModified( true ); 1666 if ( merge ) ;//setModified( true );
1667 else { 1667 else {
1668 //setModified( true ); 1668 //setModified( true );
1669 mViewManager->setDocumentId( filename ); 1669 mViewManager->setDocumentId( filename );
1670 mDialogManager->setDocumentId( filename ); 1670 mDialogManager->setDocumentId( filename );
1671 mTodoList->setDocumentId( filename ); 1671 mTodoList->setDocumentId( filename );
1672 } 1672 }
1673 globalFlagBlockAgenda = 2; 1673 globalFlagBlockAgenda = 2;
1674 // if ( getLastSyncEvent() ) 1674 // if ( getLastSyncEvent() )
1675 // getLastSyncEvent()->setReadOnly( true ); 1675 // getLastSyncEvent()->setReadOnly( true );
1676 mCalendar->reInitAlarmSettings(); 1676 mCalendar->reInitAlarmSettings();
1677 setSyncEventsReadOnly(); 1677 setSyncEventsReadOnly();
1678 updateUnmanagedViews(); 1678 updateUnmanagedViews();
1679 updateView(); 1679 updateView();
1680 if ( filename != MainWindow::defaultFileName() ) { 1680 if ( filename != MainWindow::defaultFileName() ) {
1681 saveCalendar( MainWindow::defaultFileName() ); 1681 saveCalendar( MainWindow::defaultFileName() );
1682 } else { 1682 } else {
1683 QFileInfo finf ( MainWindow::defaultFileName()); 1683 QFileInfo finf ( MainWindow::defaultFileName());
1684 if ( finf.exists() ) { 1684 if ( finf.exists() ) {
1685 setLoadedFileVersion( finf.lastModified () ); 1685 setLoadedFileVersion( finf.lastModified () );
1686 } 1686 }
1687 } 1687 }
1688 return true; 1688 return true;
1689 } else { 1689 } else {
1690 // while failing to load, the calendar object could 1690 // while failing to load, the calendar object could
1691 // have become partially populated. Clear it out. 1691 // have become partially populated. Clear it out.
1692 if ( !merge ) { 1692 if ( !merge ) {
1693 mCalendar->close(); 1693 mCalendar->close();
1694 mViewManager->setDocumentId( filename ); 1694 mViewManager->setDocumentId( filename );
1695 mDialogManager->setDocumentId( filename ); 1695 mDialogManager->setDocumentId( filename );
1696 mTodoList->setDocumentId( filename ); 1696 mTodoList->setDocumentId( filename );
1697 } 1697 }
1698 1698
1699 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1699 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1700 1700
1701 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1701 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1702 globalFlagBlockAgenda = 2; 1702 globalFlagBlockAgenda = 2;
1703 mCalendar->reInitAlarmSettings(); 1703 mCalendar->reInitAlarmSettings();
1704 setSyncEventsReadOnly(); 1704 setSyncEventsReadOnly();
1705 updateUnmanagedViews(); 1705 updateUnmanagedViews();
1706 updateView(); 1706 updateView();
1707 } 1707 }
1708 return false; 1708 return false;
1709} 1709}
1710void CalendarView::showOpenError() 1710void CalendarView::showOpenError()
1711{ 1711{
1712 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1712 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1713} 1713}
1714void CalendarView::setLoadedFileVersion(QDateTime dt) 1714void CalendarView::setLoadedFileVersion(QDateTime dt)
1715{ 1715{
1716 loadedFileVersion = dt; 1716 loadedFileVersion = dt;
1717} 1717}
1718bool CalendarView::checkFileChanged(QString fn) 1718bool CalendarView::checkFileChanged(QString fn)
1719{ 1719{
1720 QFileInfo finf ( fn ); 1720 QFileInfo finf ( fn );
1721 if ( !finf.exists() ) 1721 if ( !finf.exists() )
1722 return true; 1722 return true;
1723 QDateTime dt = finf.lastModified (); 1723 QDateTime dt = finf.lastModified ();
1724 if ( dt <= loadedFileVersion ) 1724 if ( dt <= loadedFileVersion )
1725 return false; 1725 return false;
1726 return true; 1726 return true;
1727 1727
1728} 1728}
1729void CalendarView::watchSavedFile() 1729void CalendarView::watchSavedFile()
1730{ 1730{
1731 QFileInfo finf ( MainWindow::defaultFileName()); 1731 QFileInfo finf ( MainWindow::defaultFileName());
1732 if ( !finf.exists() ) 1732 if ( !finf.exists() )
1733 return; 1733 return;
1734 QDateTime dt = finf.lastModified (); 1734 QDateTime dt = finf.lastModified ();
1735 if ( dt < loadedFileVersion ) { 1735 if ( dt < loadedFileVersion ) {
1736 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1736 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1737 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1737 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1738 return; 1738 return;
1739 } 1739 }
1740 loadedFileVersion = dt; 1740 loadedFileVersion = dt;
1741} 1741}
1742 1742
1743bool CalendarView::checkFileVersion(QString fn) 1743bool CalendarView::checkFileVersion(QString fn)
1744{ 1744{
1745 QFileInfo finf ( fn ); 1745 QFileInfo finf ( fn );
1746 if ( !finf.exists() ) 1746 if ( !finf.exists() )
1747 return true; 1747 return true;
1748 QDateTime dt = finf.lastModified (); 1748 QDateTime dt = finf.lastModified ();
1749 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1749 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1750 //qDebug("file on disk version %s",dt.toString().latin1()); 1750 //qDebug("file on disk version %s",dt.toString().latin1());
1751 if ( dt <= loadedFileVersion ) 1751 if ( dt <= loadedFileVersion )
1752 return true; 1752 return true;
1753 int km = KMessageBox::warningYesNoCancel(this, i18n("\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").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 1753 int km = KMessageBox::warningYesNoCancel(this, i18n("\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").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
1754 i18n("KO/Pi Warning"),i18n("Overwrite"), 1754 i18n("KO/Pi Warning"),i18n("Overwrite"),
1755 i18n("Sync+save")); 1755 i18n("Sync+save"));
1756 1756
1757 if ( km == KMessageBox::Cancel ) 1757 if ( km == KMessageBox::Cancel )
1758 return false; 1758 return false;
1759 if ( km == KMessageBox::Yes ) 1759 if ( km == KMessageBox::Yes )
1760 return true; 1760 return true;
1761 1761
1762 setSyncDevice("deleteaftersync" ); 1762 setSyncDevice("deleteaftersync" );
1763 mSyncManager->mAskForPreferences = true; 1763 mSyncManager->mAskForPreferences = true;
1764 mSyncManager->mSyncAlgoPrefs = 3; 1764 mSyncManager->mSyncAlgoPrefs = 3;
1765 mSyncManager->mWriteBackFile = false; 1765 mSyncManager->mWriteBackFile = false;
1766 mSyncManager->mWriteBackExistingOnly = false; 1766 mSyncManager->mWriteBackExistingOnly = false;
1767 mSyncManager->mShowSyncSummary = false; 1767 mSyncManager->mShowSyncSummary = false;
1768 syncCalendar( fn, 3 ); 1768 syncCalendar( fn, 3 );
1769 Event * e = getLastSyncEvent(); 1769 Event * e = getLastSyncEvent();
1770 mCalendar->deleteEvent ( e ); 1770 mCalendar->deleteEvent ( e );
1771 updateView(); 1771 updateView();
1772 return true; 1772 return true;
1773} 1773}
1774 1774
1775bool CalendarView::saveCalendar( QString filename ) 1775bool CalendarView::saveCalendar( QString filename )
1776{ 1776{
1777 1777
1778 // Store back all unsaved data into calendar object 1778 // Store back all unsaved data into calendar object
1779 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1779 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1780 if ( mViewManager->currentView() ) 1780 if ( mViewManager->currentView() )
1781 mViewManager->currentView()->flushView(); 1781 mViewManager->currentView()->flushView();
1782 1782
1783 1783
1784 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 1784 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
1785 mStorage->setSaveFormat( new ICalFormat() ); 1785 mStorage->setSaveFormat( new ICalFormat() );
1786 mStorage->setFileName( filename ); 1786 mStorage->setFileName( filename );
1787 bool success; 1787 bool success;
1788 success = mStorage->save(); 1788 success = mStorage->save();
1789 if ( !success ) { 1789 if ( !success ) {
1790 return false; 1790 return false;
1791 } 1791 }
1792 if ( filename == MainWindow::defaultFileName() ) { 1792 if ( filename == MainWindow::defaultFileName() ) {
1793 setLoadedFileVersion( lfv ); 1793 setLoadedFileVersion( lfv );
1794 watchSavedFile(); 1794 watchSavedFile();
1795 } 1795 }
1796 return true; 1796 return true;
1797} 1797}
1798 1798
1799void CalendarView::closeCalendar() 1799void CalendarView::closeCalendar()
1800{ 1800{
1801 1801
1802 // child windows no longer valid 1802 // child windows no longer valid
1803 emit closingDown(); 1803 emit closingDown();
1804 1804
1805 mCalendar->close(); 1805 mCalendar->close();
1806 setModified(false); 1806 setModified(false);
1807 updateView(); 1807 updateView();
1808} 1808}
1809 1809
1810void CalendarView::archiveCalendar() 1810void CalendarView::archiveCalendar()
1811{ 1811{
1812 mDialogManager->showArchiveDialog(); 1812 mDialogManager->showArchiveDialog();
1813} 1813}
1814 1814
1815 1815
1816void CalendarView::readSettings() 1816void CalendarView::readSettings()
1817{ 1817{
1818 1818
1819 1819
1820 // mViewManager->showAgendaView(); 1820 // mViewManager->showAgendaView();
1821 QString str; 1821 QString str;
1822 //qDebug("CalendarView::readSettings() "); 1822 //qDebug("CalendarView::readSettings() ");
1823 // read settings from the KConfig, supplying reasonable 1823 // read settings from the KConfig, supplying reasonable
1824 // defaults where none are to be found 1824 // defaults where none are to be found
1825 KConfig *config = KOGlobals::config(); 1825 KConfig *config = KOGlobals::config();
1826#ifndef KORG_NOSPLITTER 1826#ifndef KORG_NOSPLITTER
1827 config->setGroup("KOrganizer Geometry"); 1827 config->setGroup("KOrganizer Geometry");
1828 1828
1829 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1829 QValueList<int> sizes = config->readIntListEntry("Separator1");
1830 if (sizes.count() != 2) { 1830 if (sizes.count() != 2) {
1831 sizes << mDateNavigator->minimumSizeHint().width(); 1831 sizes << mDateNavigator->minimumSizeHint().width();
1832 sizes << 300; 1832 sizes << 300;
1833 } 1833 }
1834 mPanner->setSizes(sizes); 1834 mPanner->setSizes(sizes);
1835 1835
1836 sizes = config->readIntListEntry("Separator2"); 1836 sizes = config->readIntListEntry("Separator2");
1837 if ( ( mResourceView && sizes.count() == 4 ) || 1837 if ( ( mResourceView && sizes.count() == 4 ) ||
1838 ( !mResourceView && sizes.count() == 3 ) ) { 1838 ( !mResourceView && sizes.count() == 3 ) ) {
1839 mLeftSplitter->setSizes(sizes); 1839 mLeftSplitter->setSizes(sizes);
1840 } 1840 }
1841#endif 1841#endif
1842 globalFlagBlockAgenda = 1; 1842 globalFlagBlockAgenda = 1;
1843 mViewManager->showAgendaView(); 1843 mViewManager->showAgendaView();
1844 //mViewManager->readSettings( config ); 1844 //mViewManager->readSettings( config );
1845 mTodoList->restoreLayout(config,QString("Todo Layout")); 1845 mTodoList->restoreLayout(config,QString("Todo Layout"));
1846 readFilterSettings(config); 1846 readFilterSettings(config);
1847 1847
1848#ifdef DESKTOP_VERSION 1848#ifdef DESKTOP_VERSION
1849 config->setGroup("WidgetLayout"); 1849 config->setGroup("WidgetLayout");
1850 QStringList list; 1850 QStringList list;
1851 list = config->readListEntry("MainLayout"); 1851 list = config->readListEntry("MainLayout");
1852 int x,y,w,h; 1852 int x,y,w,h;
1853 if ( ! list.isEmpty() ) { 1853 if ( ! list.isEmpty() ) {
1854 x = list[0].toInt(); 1854 x = list[0].toInt();
1855 y = list[1].toInt(); 1855 y = list[1].toInt();
1856 w = list[2].toInt(); 1856 w = list[2].toInt();
1857 h = list[3].toInt(); 1857 h = list[3].toInt();
1858 KApplication::testCoords( &x,&y,&w,&h ); 1858 KApplication::testCoords( &x,&y,&w,&h );
1859 topLevelWidget()->setGeometry(x,y,w,h); 1859 topLevelWidget()->setGeometry(x,y,w,h);
1860 1860
1861 } else { 1861 } else {
1862 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1862 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1863 } 1863 }
1864 list = config->readListEntry("EditEventLayout"); 1864 list = config->readListEntry("EditEventLayout");
1865 if ( ! list.isEmpty() ) { 1865 if ( ! list.isEmpty() ) {
1866 x = list[0].toInt(); 1866 x = list[0].toInt();
1867 y = list[1].toInt(); 1867 y = list[1].toInt();
1868 w = list[2].toInt(); 1868 w = list[2].toInt();
1869 h = list[3].toInt(); 1869 h = list[3].toInt();
1870 KApplication::testCoords( &x,&y,&w,&h ); 1870 KApplication::testCoords( &x,&y,&w,&h );
1871 mEventEditor->setGeometry(x,y,w,h); 1871 mEventEditor->setGeometry(x,y,w,h);
1872 1872
1873 } 1873 }
1874 list = config->readListEntry("EditTodoLayout"); 1874 list = config->readListEntry("EditTodoLayout");
1875 if ( ! list.isEmpty() ) { 1875 if ( ! list.isEmpty() ) {
1876 x = list[0].toInt(); 1876 x = list[0].toInt();
1877 y = list[1].toInt(); 1877 y = list[1].toInt();
1878 w = list[2].toInt(); 1878 w = list[2].toInt();
1879 h = list[3].toInt(); 1879 h = list[3].toInt();
1880 KApplication::testCoords( &x,&y,&w,&h ); 1880 KApplication::testCoords( &x,&y,&w,&h );
1881 mTodoEditor->setGeometry(x,y,w,h); 1881 mTodoEditor->setGeometry(x,y,w,h);
1882 1882
1883 } 1883 }
1884 list = config->readListEntry("ViewerLayout"); 1884 list = config->readListEntry("ViewerLayout");
1885 if ( ! list.isEmpty() ) { 1885 if ( ! list.isEmpty() ) {
1886 x = list[0].toInt(); 1886 x = list[0].toInt();
1887 y = list[1].toInt(); 1887 y = list[1].toInt();
1888 w = list[2].toInt(); 1888 w = list[2].toInt();
1889 h = list[3].toInt(); 1889 h = list[3].toInt();
1890 KApplication::testCoords( &x,&y,&w,&h ); 1890 KApplication::testCoords( &x,&y,&w,&h );
1891 getEventViewerDialog()->setGeometry(x,y,w,h); 1891 getEventViewerDialog()->setGeometry(x,y,w,h);
1892 } 1892 }
1893#endif 1893#endif
1894 config->setGroup( "Views" ); 1894 config->setGroup( "Views" );
1895 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1895 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1896 1896
1897 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 1897 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
1898 1898
1899 int resetval = 0; 1899 int resetval = 0;
1900 int maxVal = 0; 1900 int maxVal = 0;
1901 if (sizes.count() != 3) { 1901 if (sizes.count() != 3) {
1902 if ( KOPrefs::instance()->mVerticalScreen ) { 1902 if ( KOPrefs::instance()->mVerticalScreen ) {
1903 resetval = mDateNavigator->sizeHint().width()+2; 1903 resetval = mDateNavigator->sizeHint().width()+2;
1904 } else { 1904 } else {
1905 resetval = mDateNavigator->sizeHint().height()+2; 1905 resetval = mDateNavigator->sizeHint().height()+2;
1906 } 1906 }
1907 } 1907 }
1908 if ( resetval ) { 1908 if ( resetval ) {
1909 sizes.clear(); 1909 sizes.clear();
1910 if ( KOPrefs::instance()->mVerticalScreen ) { 1910 if ( KOPrefs::instance()->mVerticalScreen ) {
1911 maxVal = QApplication::desktop()->width() -10; 1911 maxVal = QApplication::desktop()->width() -10;
1912 } else { 1912 } else {
1913 maxVal = QApplication::desktop()->height()-10; 1913 maxVal = QApplication::desktop()->height()-10;
1914 } 1914 }
1915 sizes << resetval; 1915 sizes << resetval;
1916 if ( maxVal < resetval + resetval) 1916 if ( maxVal < resetval + resetval)
1917 resetval = maxVal - resetval; 1917 resetval = maxVal - resetval;
1918 sizes << resetval; 1918 sizes << resetval;
1919 sizes << 100; 1919 sizes << 100;
1920 } 1920 }
1921 mLeftFrame->setSizes(sizes); 1921 mLeftFrame->setSizes(sizes);
1922 sizes = config->readIntListEntry("Main Splitter Frame"); 1922 sizes = config->readIntListEntry("Main Splitter Frame");
1923 resetval = 0; 1923 resetval = 0;
1924 maxVal = 0; 1924 maxVal = 0;
1925 if (sizes.count() != 2) { 1925 if (sizes.count() != 2) {
1926 if ( !KOPrefs::instance()->mVerticalScreen ) { 1926 if ( !KOPrefs::instance()->mVerticalScreen ) {
1927 resetval = mDateNavigator->sizeHint().width()+2; 1927 resetval = mDateNavigator->sizeHint().width()+2;
1928 } else { 1928 } else {
1929 resetval = mDateNavigator->sizeHint().height()+2; 1929 resetval = mDateNavigator->sizeHint().height()+2;
1930 } 1930 }
1931 } 1931 }
1932 if ( resetval ) { 1932 if ( resetval ) {
1933 sizes.clear(); 1933 sizes.clear();
1934 if ( !KOPrefs::instance()->mVerticalScreen ) { 1934 if ( !KOPrefs::instance()->mVerticalScreen ) {
1935 maxVal = QApplication::desktop()->width() -10; 1935 maxVal = QApplication::desktop()->width() -10;
1936 } else { 1936 } else {
1937 maxVal = QApplication::desktop()->height()-10; 1937 maxVal = QApplication::desktop()->height()-10;
1938 } 1938 }
1939 sizes << resetval; 1939 sizes << resetval;
1940 if ( maxVal < resetval + resetval) 1940 if ( maxVal < resetval + resetval)
1941 resetval = maxVal - resetval; 1941 resetval = maxVal - resetval;
1942 sizes << resetval; 1942 sizes << resetval;
1943 } 1943 }
1944 mMainFrame->setSizes(sizes); 1944 mMainFrame->setSizes(sizes);
1945 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1945 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1946 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1946 else if ( dateCount == 7 ) mNavigator->selectWeek();
1947 else mNavigator->selectDates( dateCount ); 1947 else mNavigator->selectDates( dateCount );
1948 // mViewManager->readSettings( config ); 1948 // mViewManager->readSettings( config );
1949 updateConfig(); 1949 updateConfig();
1950 globalFlagBlockAgenda = 2; 1950 globalFlagBlockAgenda = 2;
1951 mViewManager->readSettings( config ); 1951 mViewManager->readSettings( config );
1952 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); 1952 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) );
1953} 1953}
1954 1954
1955 1955
1956void CalendarView::writeSettings() 1956void CalendarView::writeSettings()
1957{ 1957{
1958 // kdDebug() << "CalendarView::writeSettings" << endl; 1958 // kdDebug() << "CalendarView::writeSettings" << endl;
1959 1959
1960 KConfig *config = KOGlobals::config(); 1960 KConfig *config = KOGlobals::config();
1961 1961
1962 mViewManager->writeSettings( config ); 1962 mViewManager->writeSettings( config );
1963 mTodoList->saveLayout(config,QString("Todo Layout")); 1963 mTodoList->saveLayout(config,QString("Todo Layout"));
1964 mDialogManager->writeSettings( config ); 1964 mDialogManager->writeSettings( config );
1965 //KOPrefs::instance()->usrWriteConfig(); 1965 //KOPrefs::instance()->usrWriteConfig();
1966 KOPrefs::instance()->writeConfig(); 1966 KOPrefs::instance()->writeConfig();
1967 1967
1968 writeFilterSettings(config); 1968 writeFilterSettings(config);
1969 1969
1970 config->setGroup( "Views" ); 1970 config->setGroup( "Views" );
1971 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1971 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1972 1972
1973 QValueList<int> listINT = mLeftFrame->sizes(); 1973 QValueList<int> listINT = mLeftFrame->sizes();
1974 config->writeEntry("Left Splitter Frame",listINT); 1974 config->writeEntry("Left Splitter Frame",listINT);
1975 QValueList<int> listINT2 = mMainFrame->sizes(); 1975 QValueList<int> listINT2 = mMainFrame->sizes();
1976 config->writeEntry("Main Splitter Frame",listINT2); 1976 config->writeEntry("Main Splitter Frame",listINT2);
1977#ifdef DESKTOP_VERSION 1977#ifdef DESKTOP_VERSION
1978 config->setGroup("WidgetLayout"); 1978 config->setGroup("WidgetLayout");
1979 QStringList list ;//= config->readListEntry("MainLayout"); 1979 QStringList list ;//= config->readListEntry("MainLayout");
1980 int x,y,w,h; 1980 int x,y,w,h;
1981 QWidget* wid; 1981 QWidget* wid;
1982 wid = topLevelWidget(); 1982 wid = topLevelWidget();
1983 x = wid->geometry().x(); 1983 x = wid->geometry().x();
1984 y = wid->geometry().y(); 1984 y = wid->geometry().y();
1985 w = wid->width(); 1985 w = wid->width();
1986 h = wid->height(); 1986 h = wid->height();
1987 list.clear(); 1987 list.clear();
1988 list << QString::number( x ); 1988 list << QString::number( x );
1989 list << QString::number( y ); 1989 list << QString::number( y );
1990 list << QString::number( w ); 1990 list << QString::number( w );
1991 list << QString::number( h ); 1991 list << QString::number( h );
1992 config->writeEntry("MainLayout",list ); 1992 config->writeEntry("MainLayout",list );
1993 1993
1994 wid = mEventEditor; 1994 wid = mEventEditor;
1995 x = wid->geometry().x(); 1995 x = wid->geometry().x();
1996 y = wid->geometry().y(); 1996 y = wid->geometry().y();
1997 w = wid->width(); 1997 w = wid->width();
1998 h = wid->height(); 1998 h = wid->height();
1999 list.clear(); 1999 list.clear();
2000 list << QString::number( x ); 2000 list << QString::number( x );
2001 list << QString::number( y ); 2001 list << QString::number( y );
2002 list << QString::number( w ); 2002 list << QString::number( w );
2003 list << QString::number( h ); 2003 list << QString::number( h );
2004 config->writeEntry("EditEventLayout",list ); 2004 config->writeEntry("EditEventLayout",list );
2005 2005
2006 wid = mTodoEditor; 2006 wid = mTodoEditor;
2007 x = wid->geometry().x(); 2007 x = wid->geometry().x();
2008 y = wid->geometry().y(); 2008 y = wid->geometry().y();
2009 w = wid->width(); 2009 w = wid->width();
2010 h = wid->height(); 2010 h = wid->height();
2011 list.clear(); 2011 list.clear();
2012 list << QString::number( x ); 2012 list << QString::number( x );
2013 list << QString::number( y ); 2013 list << QString::number( y );
2014 list << QString::number( w ); 2014 list << QString::number( w );
2015 list << QString::number( h ); 2015 list << QString::number( h );
2016 config->writeEntry("EditTodoLayout",list ); 2016 config->writeEntry("EditTodoLayout",list );
2017 wid = getEventViewerDialog(); 2017 wid = getEventViewerDialog();
2018 x = wid->geometry().x(); 2018 x = wid->geometry().x();
2019 y = wid->geometry().y(); 2019 y = wid->geometry().y();
2020 w = wid->width(); 2020 w = wid->width();
2021 h = wid->height(); 2021 h = wid->height();
2022 list.clear(); 2022 list.clear();
2023 list << QString::number( x ); 2023 list << QString::number( x );
2024 list << QString::number( y ); 2024 list << QString::number( y );
2025 list << QString::number( w ); 2025 list << QString::number( w );
2026 list << QString::number( h ); 2026 list << QString::number( h );
2027 config->writeEntry("ViewerLayout",list ); 2027 config->writeEntry("ViewerLayout",list );
2028 wid = mDialogManager->getSearchDialog(); 2028 wid = mDialogManager->getSearchDialog();
2029 if ( wid ) { 2029 if ( wid ) {
2030 x = wid->geometry().x(); 2030 x = wid->geometry().x();
2031 y = wid->geometry().y(); 2031 y = wid->geometry().y();
2032 w = wid->width(); 2032 w = wid->width();
2033 h = wid->height(); 2033 h = wid->height();
2034 list.clear(); 2034 list.clear();
2035 list << QString::number( x ); 2035 list << QString::number( x );
2036 list << QString::number( y ); 2036 list << QString::number( y );
2037 list << QString::number( w ); 2037 list << QString::number( w );
2038 list << QString::number( h ); 2038 list << QString::number( h );
2039 config->writeEntry("SearchLayout",list ); 2039 config->writeEntry("SearchLayout",list );
2040 } 2040 }
2041#endif 2041#endif
2042 2042
2043 2043
2044 config->sync(); 2044 config->sync();
2045} 2045}
2046 2046
2047void CalendarView::readFilterSettings(KConfig *config) 2047void CalendarView::readFilterSettings(KConfig *config)
2048{ 2048{
2049 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 2049 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
2050 2050
2051 mFilters.clear(); 2051 mFilters.clear();
2052 2052
2053 config->setGroup("General"); 2053 config->setGroup("General");
2054 QStringList filterList = config->readListEntry("CalendarFilters"); 2054 QStringList filterList = config->readListEntry("CalendarFilters");
2055 2055
2056 QStringList::ConstIterator it = filterList.begin(); 2056 QStringList::ConstIterator it = filterList.begin();
2057 QStringList::ConstIterator end = filterList.end(); 2057 QStringList::ConstIterator end = filterList.end();
2058 while(it != end) { 2058 while(it != end) {
2059 // kdDebug() << " filter: " << (*it) << endl; 2059 // kdDebug() << " filter: " << (*it) << endl;
2060 2060
2061 CalFilter *filter; 2061 CalFilter *filter;
2062 filter = new CalFilter(*it); 2062 filter = new CalFilter(*it);
2063 config->setGroup("Filter_" + (*it).utf8()); 2063 config->setGroup("Filter_" + (*it).utf8());
2064 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 2064 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
2065 filter->setCriteria(config->readNumEntry("Criteria",0)); 2065 filter->setCriteria(config->readNumEntry("Criteria",0));
2066 filter->setCategoryList(config->readListEntry("CategoryList")); 2066 filter->setCategoryList(config->readListEntry("CategoryList"));
2067 mFilters.append(filter); 2067 mFilters.append(filter);
2068 2068
2069 ++it; 2069 ++it;
2070 } 2070 }
2071 2071
2072 if (mFilters.count() == 0) { 2072 if (mFilters.count() == 0) {
2073 CalFilter *filter = new CalFilter(i18n("Default")); 2073 CalFilter *filter = new CalFilter(i18n("Default"));
2074 mFilters.append(filter); 2074 mFilters.append(filter);
2075 } 2075 }
2076 mFilterView->updateFilters(); 2076 mFilterView->updateFilters();
2077 config->setGroup("FilterView"); 2077 config->setGroup("FilterView");
2078 2078
2079 mFilterView->blockSignals(true); 2079 mFilterView->blockSignals(true);
2080 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 2080 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
2081 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 2081 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
2082 mFilterView->blockSignals(false); 2082 mFilterView->blockSignals(false);
2083 // We do it manually to avoid it being done twice by the above calls 2083 // We do it manually to avoid it being done twice by the above calls
2084 updateFilter(); 2084 updateFilter();
2085} 2085}
2086 2086
2087void CalendarView::writeFilterSettings(KConfig *config) 2087void CalendarView::writeFilterSettings(KConfig *config)
2088{ 2088{
2089 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 2089 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
2090 2090
2091 QStringList filterList; 2091 QStringList filterList;
2092 2092
2093 CalFilter *filter = mFilters.first(); 2093 CalFilter *filter = mFilters.first();
2094 while(filter) { 2094 while(filter) {
2095 // kdDebug() << " fn: " << filter->name() << endl; 2095 // kdDebug() << " fn: " << filter->name() << endl;
2096 filterList << filter->name(); 2096 filterList << filter->name();
2097 config->setGroup("Filter_" + filter->name().utf8()); 2097 config->setGroup("Filter_" + filter->name().utf8());
2098 config->writeEntry("Criteria",filter->criteria()); 2098 config->writeEntry("Criteria",filter->criteria());
2099 config->writeEntry("CategoryList",filter->categoryList()); 2099 config->writeEntry("CategoryList",filter->categoryList());
2100 filter = mFilters.next(); 2100 filter = mFilters.next();
2101 } 2101 }
2102 config->setGroup("General"); 2102 config->setGroup("General");
2103 config->writeEntry("CalendarFilters",filterList); 2103 config->writeEntry("CalendarFilters",filterList);
2104 2104
2105 config->setGroup("FilterView"); 2105 config->setGroup("FilterView");
2106 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 2106 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
2107 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 2107 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
2108} 2108}
2109 2109
2110 2110
2111void CalendarView::goToday() 2111void CalendarView::goToday()
2112{ 2112{
2113 if ( mViewManager->currentView()->isMonthView() ) 2113 if ( mViewManager->currentView()->isMonthView() )
2114 mNavigator->selectTodayMonth(); 2114 mNavigator->selectTodayMonth();
2115 else 2115 else
2116 mNavigator->selectToday(); 2116 mNavigator->selectToday();
2117} 2117}
2118 2118
2119void CalendarView::goNext() 2119void CalendarView::goNext()
2120{ 2120{
2121 mNavigator->selectNext(); 2121 mNavigator->selectNext();
2122} 2122}
2123 2123
2124void CalendarView::goPrevious() 2124void CalendarView::goPrevious()
2125{ 2125{
2126 mNavigator->selectPrevious(); 2126 mNavigator->selectPrevious();
2127} 2127}
2128void CalendarView::goNextMonth() 2128void CalendarView::goNextMonth()
2129{ 2129{
2130 mNavigator->selectNextMonth(); 2130 mNavigator->selectNextMonth();
2131} 2131}
2132 2132
2133void CalendarView::goPreviousMonth() 2133void CalendarView::goPreviousMonth()
2134{ 2134{
2135 mNavigator->selectPreviousMonth(); 2135 mNavigator->selectPreviousMonth();
2136} 2136}
2137void CalendarView::writeLocale() 2137void CalendarView::writeLocale()
2138{ 2138{
2139 //KPimGlobalPrefs::instance()->setGlobalConfig(); 2139 //KPimGlobalPrefs::instance()->setGlobalConfig();
2140#if 0 2140#if 0
2141 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 2141 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
2142 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 2142 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
2143 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 2143 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
2144 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 2144 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
2145 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 2145 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
2146 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 2146 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
2147 dummy = KOPrefs::instance()->mUserDateFormatShort; 2147 dummy = KOPrefs::instance()->mUserDateFormatShort;
2148 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 2148 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
2149 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 2149 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
2150 KOPrefs::instance()->mDaylightsavingStart, 2150 KOPrefs::instance()->mDaylightsavingStart,
2151 KOPrefs::instance()->mDaylightsavingEnd ); 2151 KOPrefs::instance()->mDaylightsavingEnd );
2152 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId ); 2152 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId );
2153#endif 2153#endif
2154} 2154}
2155void CalendarView::updateConfig() 2155void CalendarView::updateConfig()
2156{ 2156{
2157 writeLocale(); 2157 writeLocale();
2158 if ( KOPrefs::instance()->mUseAppColors ) 2158 if ( KOPrefs::instance()->mUseAppColors )
2159 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2159 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2160 emit configChanged(); 2160 emit configChanged();
2161 mTodoList->updateConfig(); 2161 mTodoList->updateConfig();
2162 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2162 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2163 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2163 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2164 // To make the "fill window" configurations work 2164 // To make the "fill window" configurations work
2165 //mViewManager->raiseCurrentView(); 2165 //mViewManager->raiseCurrentView();
2166} 2166}
2167 2167
2168 2168
2169void CalendarView::eventChanged(Event *event) 2169void CalendarView::eventChanged(Event *event)
2170{ 2170{
2171 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2171 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2172 //updateUnmanagedViews(); 2172 //updateUnmanagedViews();
2173} 2173}
2174 2174
2175void CalendarView::eventAdded(Event *event) 2175void CalendarView::eventAdded(Event *event)
2176{ 2176{
2177 changeEventDisplay(event,KOGlobals::EVENTADDED); 2177 changeEventDisplay(event,KOGlobals::EVENTADDED);
2178} 2178}
2179 2179
2180void CalendarView::eventToBeDeleted(Event *) 2180void CalendarView::eventToBeDeleted(Event *)
2181{ 2181{
2182 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2182 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2183} 2183}
2184 2184
2185void CalendarView::eventDeleted() 2185void CalendarView::eventDeleted()
2186{ 2186{
2187 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2187 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2188} 2188}
2189void CalendarView::changeTodoDisplay(Todo *which, int action) 2189void CalendarView::changeTodoDisplay(Todo *which, int action)
2190{ 2190{
2191 changeIncidenceDisplay((Incidence *)which, action); 2191 changeIncidenceDisplay((Incidence *)which, action);
2192 mDateNavigator->updateView(); //LR 2192 mDateNavigator->updateView(); //LR
2193 //mDialogManager->updateSearchDialog(); 2193 //mDialogManager->updateSearchDialog();
2194 2194
2195 if (which) { 2195 if (which) {
2196 mViewManager->updateWNview(); 2196 mViewManager->updateWNview();
2197 //mTodoList->updateView(); 2197 //mTodoList->updateView();
2198 } 2198 }
2199 2199
2200} 2200}
2201 2201
2202void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2202void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2203{ 2203{
2204 updateUnmanagedViews(); 2204 updateUnmanagedViews();
2205 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 2205 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
2206 if ( action == KOGlobals::EVENTDELETED ) { //delete 2206 if ( action == KOGlobals::EVENTDELETED ) { //delete
2207 mCalendar->checkAlarmForIncidence( 0, true ); 2207 mCalendar->checkAlarmForIncidence( 0, true );
2208 if ( mEventViewerDialog ) 2208 if ( mEventViewerDialog )
2209 mEventViewerDialog->hide(); 2209 mEventViewerDialog->hide();
2210 } 2210 }
2211 else 2211 else
2212 mCalendar->checkAlarmForIncidence( which , false ); 2212 mCalendar->checkAlarmForIncidence( which , false );
2213} 2213}
2214 2214
2215// most of the changeEventDisplays() right now just call the view's 2215// most of the changeEventDisplays() right now just call the view's
2216// total update mode, but they SHOULD be recoded to be more refresh-efficient. 2216// total update mode, but they SHOULD be recoded to be more refresh-efficient.
2217void CalendarView::changeEventDisplay(Event *which, int action) 2217void CalendarView::changeEventDisplay(Event *which, int action)
2218{ 2218{
2219 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 2219 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
2220 changeIncidenceDisplay((Incidence *)which, action); 2220 changeIncidenceDisplay((Incidence *)which, action);
2221 mDateNavigator->updateView(); 2221 mDateNavigator->updateView();
2222 //mDialogManager->updateSearchDialog(); 2222 //mDialogManager->updateSearchDialog();
2223 2223
2224 if (which) { 2224 if (which) {
2225 // If there is an event view visible update the display 2225 // If there is an event view visible update the display
2226 mViewManager->currentView()->changeEventDisplay(which,action); 2226 mViewManager->currentView()->changeEventDisplay(which,action);
2227 // TODO: check, if update needed 2227 // TODO: check, if update needed
2228 // if (which->getTodoStatus()) { 2228 // if (which->getTodoStatus()) {
2229 mTodoList->updateView(); 2229 mTodoList->updateView();
2230 // } 2230 // }
2231 } else { 2231 } else {
2232 mViewManager->currentView()->updateView(); 2232 mViewManager->currentView()->updateView();
2233 } 2233 }
2234} 2234}
2235 2235
2236 2236
2237void CalendarView::updateTodoViews() 2237void CalendarView::updateTodoViews()
2238{ 2238{
2239 mTodoList->updateView(); 2239 mTodoList->updateView();
2240 mViewManager->currentView()->updateView(); 2240 mViewManager->currentView()->updateView();
2241 2241
2242} 2242}
2243 2243
2244 2244
2245void CalendarView::updateView(const QDate &start, const QDate &end) 2245void CalendarView::updateView(const QDate &start, const QDate &end)
2246{ 2246{
2247 mTodoList->updateView(); 2247 mTodoList->updateView();
2248 mViewManager->updateView(start, end); 2248 mViewManager->updateView(start, end);
2249 //mDateNavigator->updateView(); 2249 //mDateNavigator->updateView();
2250} 2250}
2251 2251
2252void CalendarView::updateView() 2252void CalendarView::updateView()
2253{ 2253{
2254 DateList tmpList = mNavigator->selectedDates(); 2254 DateList tmpList = mNavigator->selectedDates();
2255 2255
2256 if ( KOPrefs::instance()->mHideNonStartedTodos ) 2256 if ( KOPrefs::instance()->mHideNonStartedTodos )
2257 mTodoList->updateView(); 2257 mTodoList->updateView();
2258 // We assume that the navigator only selects consecutive days. 2258 // We assume that the navigator only selects consecutive days.
2259 updateView( tmpList.first(), tmpList.last() ); 2259 updateView( tmpList.first(), tmpList.last() );
2260} 2260}
2261 2261
2262void CalendarView::updateUnmanagedViews() 2262void CalendarView::updateUnmanagedViews()
2263{ 2263{
2264 mDateNavigator->updateDayMatrix(); 2264 mDateNavigator->updateDayMatrix();
2265} 2265}
2266 2266
2267int CalendarView::msgItemDelete(const QString name) 2267int CalendarView::msgItemDelete(const QString name)
2268{ 2268{
2269 return KMessageBox::warningContinueCancel(this,name +"\n\n"+ 2269 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
2270 i18n("This item will be\npermanently deleted."), 2270 i18n("This item will be\npermanently deleted."),
2271 i18n("KO/Pi Confirmation"),i18n("Delete")); 2271 i18n("KO/Pi Confirmation"),i18n("Delete"));
2272} 2272}
2273 2273
2274 2274
2275void CalendarView::edit_cut() 2275void CalendarView::edit_cut()
2276{ 2276{
2277 Event *anEvent=0; 2277 Event *anEvent=0;
2278 2278
2279 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2279 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2280 2280
2281 if (mViewManager->currentView()->isEventView()) { 2281 if (mViewManager->currentView()->isEventView()) {
2282 if ( incidence && incidence->type() == "Event" ) { 2282 if ( incidence && incidence->type() == "Event" ) {
2283 anEvent = static_cast<Event *>(incidence); 2283 anEvent = static_cast<Event *>(incidence);
2284 } 2284 }
2285 } 2285 }
2286 2286
2287 if (!anEvent) { 2287 if (!anEvent) {
2288 KNotifyClient::beep(); 2288 KNotifyClient::beep();
2289 return; 2289 return;
2290 } 2290 }
2291 DndFactory factory( mCalendar ); 2291 DndFactory factory( mCalendar );
2292 factory.cutIncidence(anEvent); 2292 factory.cutIncidence(anEvent);
2293 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2293 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2294} 2294}
2295 2295
2296void CalendarView::edit_copy() 2296void CalendarView::edit_copy()
2297{ 2297{
2298 Event *anEvent=0; 2298 Event *anEvent=0;
2299 2299
2300 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2300 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2301 2301
2302 if (mViewManager->currentView()->isEventView()) { 2302 if (mViewManager->currentView()->isEventView()) {
2303 if ( incidence && incidence->type() == "Event" ) { 2303 if ( incidence && incidence->type() == "Event" ) {
2304 anEvent = static_cast<Event *>(incidence); 2304 anEvent = static_cast<Event *>(incidence);
2305 } 2305 }
2306 } 2306 }
2307 2307
2308 if (!anEvent) { 2308 if (!anEvent) {
2309 KNotifyClient::beep(); 2309 KNotifyClient::beep();
2310 return; 2310 return;
2311 } 2311 }
2312 DndFactory factory( mCalendar ); 2312 DndFactory factory( mCalendar );
2313 factory.copyIncidence(anEvent); 2313 factory.copyIncidence(anEvent);
2314} 2314}
2315 2315
2316void CalendarView::edit_paste() 2316void CalendarView::edit_paste()
2317{ 2317{
2318 QDate date = mNavigator->selectedDates().first(); 2318 QDate date = mNavigator->selectedDates().first();
2319 2319
2320 DndFactory factory( mCalendar ); 2320 DndFactory factory( mCalendar );
2321 Event *pastedEvent = (Event *)factory.pasteIncidence( date ); 2321 Event *pastedEvent = (Event *)factory.pasteIncidence( date );
2322 2322
2323 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2323 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2324} 2324}
2325 2325
2326void CalendarView::edit_options() 2326void CalendarView::edit_options()
2327{ 2327{
2328 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId; 2328 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId;
2329 emit save(); 2329 emit save();
2330 emit saveStopTimer(); 2330 emit saveStopTimer();
2331 mDialogManager->showOptionsDialog(); 2331 mDialogManager->showOptionsDialog();
2332 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) { 2332 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) {
2333 emit saveStopTimer(); 2333 emit saveStopTimer();
2334 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto apply timezone changes?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"), 2334 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto apply timezone changes?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"),
2335 i18n("Timezone settings"),i18n("Reload"))) { 2335 i18n("Timezone settings"),i18n("Reload"))) {
2336 qDebug("KO: TZ reload cancelled "); 2336 qDebug("KO: TZ reload cancelled ");
2337 return; 2337 return;
2338 } 2338 }
2339 qDebug("KO: Timezone change "); 2339 qDebug("KO: Timezone change ");
2340 openCalendar( MainWindow::defaultFileName() ); 2340 openCalendar( MainWindow::defaultFileName() );
2341 setModified(true); 2341 setModified(true);
2342 } 2342 }
2343 else 2343 else
2344 qDebug("KO: No tz change "); 2344 qDebug("KO: No tz change ");
2345 2345
2346} 2346}
2347 2347
2348 2348
2349void CalendarView::slotSelectPickerDate( QDate d) 2349void CalendarView::slotSelectPickerDate( QDate d)
2350{ 2350{
2351 mDateFrame->hide(); 2351 mDateFrame->hide();
2352 if ( mDatePickerMode == 1 ) { 2352 if ( mDatePickerMode == 1 ) {
2353 mNavigator->slotDaySelect( d ); 2353 mNavigator->slotDaySelect( d );
2354 } else if ( mDatePickerMode == 2 ) { 2354 } else if ( mDatePickerMode == 2 ) {
2355 if ( mMoveIncidence->type() == "Todo" ) { 2355 if ( mMoveIncidence->type() == "Todo" ) {
2356 Todo * to = (Todo *) mMoveIncidence; 2356 Todo * to = (Todo *) mMoveIncidence;
2357 QTime tim; 2357 QTime tim;
2358 int len = 0; 2358 int len = 0;
2359 if ( to->hasStartDate() && to->hasDueDate() ) 2359 if ( to->hasStartDate() && to->hasDueDate() )
2360 len = to->dtStart().secsTo( to->dtDue()); 2360 len = to->dtStart().secsTo( to->dtDue());
2361 if ( to->hasDueDate() ) 2361 if ( to->hasDueDate() )
2362 tim = to->dtDue().time(); 2362 tim = to->dtDue().time();
2363 else { 2363 else {
2364 tim = QTime ( 0,0,0 ); 2364 tim = QTime ( 0,0,0 );
2365 to->setFloats( true ); 2365 to->setFloats( true );
2366 to->setHasDueDate( true ); 2366 to->setHasDueDate( true );
2367 } 2367 }
2368 QDateTime dt ( d,tim ); 2368 QDateTime dt ( d,tim );
2369 to->setDtDue( dt ); 2369 to->setDtDue( dt );
2370 2370
2371 if ( to->hasStartDate() ) { 2371 if ( to->hasStartDate() ) {
2372 if ( len>0 ) 2372 if ( len>0 )
2373 to->setDtStart(to->dtDue().addSecs( -len )); 2373 to->setDtStart(to->dtDue().addSecs( -len ));
2374 else 2374 else
2375 if (to->dtStart() > to->dtDue() ) 2375 if (to->dtStart() > to->dtDue() )
2376 to->setDtStart(to->dtDue().addDays( -3 )); 2376 to->setDtStart(to->dtDue().addDays( -3 ));
2377 } 2377 }
2378 2378
2379 todoChanged( to ); 2379 todoChanged( to );
2380 } else { 2380 } else {
2381 if ( mMoveIncidence->doesRecur() ) { 2381 if ( mMoveIncidence->doesRecur() ) {
2382#if 0 2382#if 0
2383 // PENDING implement this 2383 // PENDING implement this
2384 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 2384 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
2385 mCalendar()->addIncidence( newInc ); 2385 mCalendar()->addIncidence( newInc );
2386 if ( mMoveIncidence->type() == "Todo" ) 2386 if ( mMoveIncidence->type() == "Todo" )
2387 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 2387 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
2388 else 2388 else
2389 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 2389 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
2390 mMoveIncidence = newInc; 2390 mMoveIncidence = newInc;
2391 2391
2392#endif 2392#endif
2393 } 2393 }
2394 QTime tim = mMoveIncidence->dtStart().time(); 2394 QTime tim = mMoveIncidence->dtStart().time();
2395 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2395 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2396 QDateTime dt ( d,tim ); 2396 QDateTime dt ( d,tim );
2397 mMoveIncidence->setDtStart( dt ); 2397 mMoveIncidence->setDtStart( dt );
2398 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2398 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2399 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2399 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2400 } 2400 }
2401 2401
2402 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2402 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2403 } 2403 }
2404} 2404}
2405 2405
2406void CalendarView::removeCategories() 2406void CalendarView::removeCategories()
2407{ 2407{
2408 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2408 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2409 QStringList catList = KOPrefs::instance()->mCustomCategories; 2409 QStringList catList = KOPrefs::instance()->mCustomCategories;
2410 QStringList catIncList; 2410 QStringList catIncList;
2411 QStringList newCatList; 2411 QStringList newCatList;
2412 Incidence* inc = incList.first(); 2412 Incidence* inc = incList.first();
2413 int i; 2413 int i;
2414 int count = 0; 2414 int count = 0;
2415 while ( inc ) { 2415 while ( inc ) {
2416 newCatList.clear(); 2416 newCatList.clear();
2417 catIncList = inc->categories() ; 2417 catIncList = inc->categories() ;
2418 for( i = 0; i< catIncList.count(); ++i ) { 2418 for( i = 0; i< catIncList.count(); ++i ) {
2419 if ( catList.contains (catIncList[i])) 2419 if ( catList.contains (catIncList[i]))
2420 newCatList.append( catIncList[i] ); 2420 newCatList.append( catIncList[i] );
2421 } 2421 }
2422 newCatList.sort(); 2422 newCatList.sort();
2423 inc->setCategories( newCatList.join(",") ); 2423 inc->setCategories( newCatList.join(",") );
2424 inc = incList.next(); 2424 inc = incList.next();
2425 } 2425 }
2426} 2426}
2427 2427
2428int CalendarView::addCategories() 2428int CalendarView::addCategories()
2429{ 2429{
2430 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2430 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2431 QStringList catList = KOPrefs::instance()->mCustomCategories; 2431 QStringList catList = KOPrefs::instance()->mCustomCategories;
2432 QStringList catIncList; 2432 QStringList catIncList;
2433 Incidence* inc = incList.first(); 2433 Incidence* inc = incList.first();
2434 int i; 2434 int i;
2435 int count = 0; 2435 int count = 0;
2436 while ( inc ) { 2436 while ( inc ) {
2437 catIncList = inc->categories() ; 2437 catIncList = inc->categories() ;
2438 for( i = 0; i< catIncList.count(); ++i ) { 2438 for( i = 0; i< catIncList.count(); ++i ) {
2439 if ( !catList.contains (catIncList[i])) { 2439 if ( !catList.contains (catIncList[i])) {
2440 catList.append( catIncList[i] ); 2440 catList.append( catIncList[i] );
2441 //qDebug("add cat %s ", catIncList[i].latin1()); 2441 //qDebug("add cat %s ", catIncList[i].latin1());
2442 ++count; 2442 ++count;
2443 } 2443 }
2444 } 2444 }
2445 inc = incList.next(); 2445 inc = incList.next();
2446 } 2446 }
2447 catList.sort(); 2447 catList.sort();
2448 KOPrefs::instance()->mCustomCategories = catList; 2448 KOPrefs::instance()->mCustomCategories = catList;
2449 return count; 2449 return count;
2450} 2450}
2451 2451
2452void CalendarView::manageCategories() 2452void CalendarView::manageCategories()
2453{ 2453{
2454 KOCatPrefs* cp = new KOCatPrefs(); 2454 KOCatPrefs* cp = new KOCatPrefs();
2455 cp->show(); 2455 cp->show();
2456 int w =cp->sizeHint().width() ; 2456 int w =cp->sizeHint().width() ;
2457 int h = cp->sizeHint().height() ; 2457 int h = cp->sizeHint().height() ;
2458 int dw = QApplication::desktop()->width(); 2458 int dw = QApplication::desktop()->width();
2459 int dh = QApplication::desktop()->height(); 2459 int dh = QApplication::desktop()->height();
2460 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2460 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2461 if ( !cp->exec() ) { 2461 if ( !cp->exec() ) {
2462 delete cp; 2462 delete cp;
2463 return; 2463 return;
2464 } 2464 }
2465 int count = 0; 2465 int count = 0;
2466 if ( cp->addCat() ) { 2466 if ( cp->addCat() ) {
2467 count = addCategories(); 2467 count = addCategories();
2468 if ( count ) { 2468 if ( count ) {
2469 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2469 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2470 writeSettings(); 2470 writeSettings();
2471 } else 2471 } else
2472 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! ")); 2472 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
2473 } else { 2473 } else {
2474 removeCategories(); 2474 removeCategories();
2475 updateView(); 2475 updateView();
2476 } 2476 }
2477 delete cp; 2477 delete cp;
2478} 2478}
2479 2479
2480void CalendarView::beamIncidence(Incidence * Inc) 2480void CalendarView::beamIncidence(Incidence * Inc)
2481{ 2481{
2482 QPtrList<Incidence> delSel ; 2482 QPtrList<Incidence> delSel ;
2483 delSel.append(Inc); 2483 delSel.append(Inc);
2484 beamIncidenceList( delSel ); 2484 beamIncidenceList( delSel );
2485} 2485}
2486void CalendarView::beamCalendar() 2486void CalendarView::beamCalendar()
2487{ 2487{
2488 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2488 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2489 //qDebug("beamCalendar() "); 2489 //qDebug("beamCalendar() ");
2490 beamIncidenceList( delSel ); 2490 beamIncidenceList( delSel );
2491} 2491}
2492void CalendarView::beamFilteredCalendar() 2492void CalendarView::beamFilteredCalendar()
2493{ 2493{
2494 QPtrList<Incidence> delSel = mCalendar->incidences(); 2494 QPtrList<Incidence> delSel = mCalendar->incidences();
2495 //qDebug("beamFilteredCalendar() "); 2495 //qDebug("beamFilteredCalendar() ");
2496 beamIncidenceList( delSel ); 2496 beamIncidenceList( delSel );
2497} 2497}
2498void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2498void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2499{ 2499{
2500 if ( beamDialog->exec () == QDialog::Rejected ) 2500 if ( beamDialog->exec () == QDialog::Rejected )
2501 return; 2501 return;
2502#ifdef DESKTOP_VERSION 2502#ifdef DESKTOP_VERSION
2503 QString fn = locateLocal( "tmp", "kopibeamfile" ); 2503 QString fn = locateLocal( "tmp", "kopibeamfile" );
2504#else 2504#else
2505 QString fn = "/tmp/kopibeamfile"; 2505 QString fn = "/tmp/kopibeamfile";
2506#endif 2506#endif
2507 QString mes; 2507 QString mes;
2508 bool createbup = true; 2508 bool createbup = true;
2509 if ( createbup ) { 2509 if ( createbup ) {
2510 QString description = "\n"; 2510 QString description = "\n";
2511 CalendarLocal* cal = new CalendarLocal(); 2511 CalendarLocal* cal = new CalendarLocal();
2512 if ( beamDialog->beamLocal() ) 2512 if ( beamDialog->beamLocal() )
2513 cal->setLocalTime(); 2513 cal->setLocalTime();
2514 else 2514 else
2515 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2515 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2516 Incidence *incidence = delSel.first(); 2516 Incidence *incidence = delSel.first();
2517 bool addText = false; 2517 bool addText = false;
2518 if ( delSel.count() < 10 ) 2518 if ( delSel.count() < 10 )
2519 addText = true; 2519 addText = true;
2520 else { 2520 else {
2521 description.sprintf(i18n(" %d items?"),delSel.count() ); 2521 description.sprintf(i18n(" %d items?"),delSel.count() );
2522 } 2522 }
2523 while ( incidence ) { 2523 while ( incidence ) {
2524 Incidence *in = incidence->clone(); 2524 Incidence *in = incidence->clone();
2525 if ( ! in->summary().isEmpty() ) { 2525 if ( ! in->summary().isEmpty() ) {
2526 in->setDescription(""); 2526 in->setDescription("");
2527 } else { 2527 } else {
2528 in->setSummary( in->description().left(20)); 2528 in->setSummary( in->description().left(20));
2529 in->setDescription(""); 2529 in->setDescription("");
2530 } 2530 }
2531 if ( addText ) 2531 if ( addText )
2532 description += in->summary() + "\n"; 2532 description += in->summary() + "\n";
2533 cal->addIncidence( in ); 2533 cal->addIncidence( in );
2534 incidence = delSel.next(); 2534 incidence = delSel.next();
2535 } 2535 }
2536 if ( beamDialog->beamVcal() ) { 2536 if ( beamDialog->beamVcal() ) {
2537 fn += ".vcs"; 2537 fn += ".vcs";
2538 FileStorage storage( cal, fn, new VCalFormat ); 2538 FileStorage storage( cal, fn, new VCalFormat );
2539 storage.save(); 2539 storage.save();
2540 } else { 2540 } else {
2541 fn += ".ics"; 2541 fn += ".ics";
2542 FileStorage storage( cal, fn, new ICalFormat( ) ); 2542 FileStorage storage( cal, fn, new ICalFormat( ) );
2543 storage.save(); 2543 storage.save();
2544 } 2544 }
2545 delete cal; 2545 delete cal;
2546 mes = i18n("KO/Pi: Ready for beaming"); 2546 mes = i18n("KO/Pi: Ready for beaming");
2547 topLevelWidget()->setCaption(mes); 2547 topLevelWidget()->setCaption(mes);
2548 KApplication::convert2latin1( fn ); 2548 KApplication::convert2latin1( fn );
2549#ifndef DESKTOP_VERSION 2549#ifndef DESKTOP_VERSION
2550 Ir *ir = new Ir( this ); 2550 Ir *ir = new Ir( this );
2551 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2551 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2552 ir->send( fn, description, "text/x-vCalendar" ); 2552 ir->send( fn, description, "text/x-vCalendar" );
2553#endif 2553#endif
2554 } 2554 }
2555} 2555}
2556void CalendarView::beamDone( Ir *ir ) 2556void CalendarView::beamDone( Ir *ir )
2557{ 2557{
2558#ifndef DESKTOP_VERSION 2558#ifndef DESKTOP_VERSION
2559 delete ir; 2559 delete ir;
2560#endif 2560#endif
2561 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 2561 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
2562 topLevelWidget()->raise(); 2562 topLevelWidget()->raise();
2563} 2563}
2564 2564
2565void CalendarView::moveIncidence(Incidence * inc ) 2565void CalendarView::moveIncidence(Incidence * inc )
2566{ 2566{
2567 if ( !inc ) return; 2567 if ( !inc ) return;
2568 showDatePickerPopup(); 2568 showDatePickerPopup();
2569 mDatePickerMode = 2; 2569 mDatePickerMode = 2;
2570 mMoveIncidence = inc ; 2570 mMoveIncidence = inc ;
2571 QDate da; 2571 QDate da;
2572 if ( mMoveIncidence->type() == "Todo" ) { 2572 if ( mMoveIncidence->type() == "Todo" ) {
2573 Todo * to = (Todo *) mMoveIncidence; 2573 Todo * to = (Todo *) mMoveIncidence;
2574 if ( to->hasDueDate() ) 2574 if ( to->hasDueDate() )
2575 da = to->dtDue().date(); 2575 da = to->dtDue().date();
2576 else 2576 else
2577 da = QDate::currentDate(); 2577 da = QDate::currentDate();
2578 } else { 2578 } else {
2579 da = mMoveIncidence->dtStart().date(); 2579 da = mMoveIncidence->dtStart().date();
2580 } 2580 }
2581 //PENDING set date for recurring incidence to date of recurrence 2581 //PENDING set date for recurring incidence to date of recurrence
2582 //mMoveIncidenceOldDate; 2582 //mMoveIncidenceOldDate;
2583 mDatePicker->setDate( da ); 2583 mDatePicker->setDate( da );
2584} 2584}
2585void CalendarView::showDatePickerPopup() 2585void CalendarView::showDatePickerPopup()
2586{ 2586{
2587 if ( mDateFrame->isVisible() ) 2587 if ( mDateFrame->isVisible() )
2588 mDateFrame->hide(); 2588 mDateFrame->hide();
2589 else { 2589 else {
2590 int offX = 0, offY = 0; 2590 int offX = 0, offY = 0;
2591#ifdef DESKTOP_VERSION 2591#ifdef DESKTOP_VERSION
2592 int w =mDatePicker->sizeHint().width() ; 2592 int w =mDatePicker->sizeHint().width() ;
2593 int h = mDatePicker->sizeHint().height() ; 2593 int h = mDatePicker->sizeHint().height() ;
2594 int dw = topLevelWidget()->width(); 2594 int dw = topLevelWidget()->width();
2595 int dh = topLevelWidget()->height(); 2595 int dh = topLevelWidget()->height();
2596 offX = topLevelWidget()->x(); 2596 offX = topLevelWidget()->x();
2597 offY = topLevelWidget()->y(); 2597 offY = topLevelWidget()->y();
2598#else 2598#else
2599 int w =mDatePicker->sizeHint().width() ; 2599 int w =mDatePicker->sizeHint().width() ;
2600 int h = mDatePicker->sizeHint().height() ; 2600 int h = mDatePicker->sizeHint().height() ;
2601 int dw = QApplication::desktop()->width(); 2601 int dw = QApplication::desktop()->width();
2602 int dh = QApplication::desktop()->height(); 2602 int dh = QApplication::desktop()->height();
2603#endif 2603#endif
2604 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 2604 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
2605 mDateFrame->show(); 2605 mDateFrame->show();
2606 } 2606 }
2607} 2607}
2608void CalendarView::showDatePicker( ) 2608void CalendarView::showDatePicker( )
2609{ 2609{
2610 showDatePickerPopup(); 2610 showDatePickerPopup();
2611 mDatePickerMode = 1; 2611 mDatePickerMode = 1;
2612 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2612 mDatePicker->setDate( mNavigator->selectedDates().first() );
2613} 2613}
2614 2614
2615void CalendarView::showEventEditor() 2615void CalendarView::showEventEditor()
2616{ 2616{
2617#ifdef DESKTOP_VERSION 2617#ifdef DESKTOP_VERSION
2618 int x,y,w,h; 2618 int x,y,w,h;
2619 x = mEventEditor->geometry().x(); 2619 x = mEventEditor->geometry().x();
2620 y = mEventEditor->geometry().y(); 2620 y = mEventEditor->geometry().y();
2621 w = mEventEditor->width(); 2621 w = mEventEditor->width();
2622 h = mEventEditor->height(); 2622 h = mEventEditor->height();
2623 mEventEditor->show(); 2623 mEventEditor->show();
2624 mEventEditor->setGeometry(x,y,w,h); 2624 mEventEditor->setGeometry(x,y,w,h);
2625#else 2625#else
2626 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 2626 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
2627 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2627 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2628 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 2628 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
2629 qApp->processEvents(); 2629 qApp->processEvents();
2630 delete mEventEditor; 2630 delete mEventEditor;
2631 mEventEditor = mDialogManager->getEventEditor(); 2631 mEventEditor = mDialogManager->getEventEditor();
2632 topLevelWidget()->setCaption( i18n("") ); 2632 topLevelWidget()->setCaption( i18n("") );
2633 } 2633 }
2634 mEventEditor->showMaximized(); 2634 mEventEditor->showMaximized();
2635#endif 2635#endif
2636} 2636}
2637void CalendarView::showTodoEditor() 2637void CalendarView::showTodoEditor()
2638{ 2638{
2639#ifdef DESKTOP_VERSION 2639#ifdef DESKTOP_VERSION
2640 int x,y,w,h; 2640 int x,y,w,h;
2641 x = mTodoEditor->geometry().x(); 2641 x = mTodoEditor->geometry().x();
2642 y = mTodoEditor->geometry().y(); 2642 y = mTodoEditor->geometry().y();
2643 w = mTodoEditor->width(); 2643 w = mTodoEditor->width();
2644 h = mTodoEditor->height(); 2644 h = mTodoEditor->height();
2645 mTodoEditor->show(); 2645 mTodoEditor->show();
2646 mTodoEditor->setGeometry(x,y,w,h); 2646 mTodoEditor->setGeometry(x,y,w,h);
2647#else 2647#else
2648 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 2648 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
2649 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2649 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2650 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 2650 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
2651 qApp->processEvents(); 2651 qApp->processEvents();
2652 delete mTodoEditor; 2652 delete mTodoEditor;
2653 mTodoEditor = mDialogManager->getTodoEditor(); 2653 mTodoEditor = mDialogManager->getTodoEditor();
2654 topLevelWidget()->setCaption( i18n("") ); 2654 topLevelWidget()->setCaption( i18n("") );
2655 } 2655 }
2656 mTodoEditor->showMaximized(); 2656 mTodoEditor->showMaximized();
2657#endif 2657#endif
2658} 2658}
2659 2659
2660void CalendarView::cloneIncidence() 2660void CalendarView::cloneIncidence()
2661{ 2661{
2662 Incidence *incidence = currentSelection(); 2662 Incidence *incidence = currentSelection();
2663 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2663 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2664 if ( incidence ) { 2664 if ( incidence ) {
2665 cloneIncidence(incidence); 2665 cloneIncidence(incidence);
2666 } 2666 }
2667} 2667}
2668void CalendarView::moveIncidence() 2668void CalendarView::moveIncidence()
2669{ 2669{
2670 Incidence *incidence = currentSelection(); 2670 Incidence *incidence = currentSelection();
2671 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2671 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2672 if ( incidence ) { 2672 if ( incidence ) {
2673 moveIncidence(incidence); 2673 moveIncidence(incidence);
2674 } 2674 }
2675} 2675}
2676void CalendarView::beamIncidence() 2676void CalendarView::beamIncidence()
2677{ 2677{
2678 Incidence *incidence = currentSelection(); 2678 Incidence *incidence = currentSelection();
2679 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2679 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2680 if ( incidence ) { 2680 if ( incidence ) {
2681 beamIncidence(incidence); 2681 beamIncidence(incidence);
2682 } 2682 }
2683} 2683}
2684void CalendarView::toggleCancelIncidence() 2684void CalendarView::toggleCancelIncidence()
2685{ 2685{
2686 Incidence *incidence = currentSelection(); 2686 Incidence *incidence = currentSelection();
2687 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2687 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2688 if ( incidence ) { 2688 if ( incidence ) {
2689 cancelIncidence(incidence); 2689 cancelIncidence(incidence);
2690 } 2690 }
2691} 2691}
2692 2692
2693 2693
2694void CalendarView::cancelIncidence(Incidence * inc ) 2694void CalendarView::cancelIncidence(Incidence * inc )
2695{ 2695{
2696 inc->setCancelled( ! inc->cancelled() ); 2696 inc->setCancelled( ! inc->cancelled() );
2697 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2697 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2698 updateView(); 2698 updateView();
2699} 2699}
2700void CalendarView::cloneIncidence(Incidence * orgInc ) 2700void CalendarView::cloneIncidence(Incidence * orgInc )
2701{ 2701{
2702 Incidence * newInc = orgInc->clone(); 2702 Incidence * newInc = orgInc->clone();
2703 newInc->recreate(); 2703 newInc->recreate();
2704 2704
2705 if ( newInc->type() == "Todo" ) { 2705 if ( newInc->type() == "Todo" ) {
2706 Todo* t = (Todo*) newInc; 2706 Todo* t = (Todo*) newInc;
2707 bool cloneSub = false; 2707 bool cloneSub = false;
2708 if ( orgInc->relations().count() ) { 2708 if ( orgInc->relations().count() ) {
2709 int result = KMessageBox::warningYesNoCancel(this, 2709 int result = KMessageBox::warningYesNoCancel(this,
2710 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( newInc->summary().left ( 25 ) ), 2710 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( newInc->summary().left ( 25 ) ),
2711 i18n("Todo has subtodos"), 2711 i18n("Todo has subtodos"),
2712 i18n("Yes"), 2712 i18n("Yes"),
2713 i18n("No")); 2713 i18n("No"));
2714 2714
2715 if ( result == KMessageBox::Cancel ) { 2715 if ( result == KMessageBox::Cancel ) {
2716 delete t; 2716 delete t;
2717 return; 2717 return;
2718 } 2718 }
2719 if (result == KMessageBox::Yes) cloneSub = true; 2719 if (result == KMessageBox::Yes) cloneSub = true;
2720 } 2720 }
2721 showTodoEditor(); 2721 showTodoEditor();
2722 mTodoEditor->editTodo( t ); 2722 mTodoEditor->editTodo( t );
2723 if ( mTodoEditor->exec() ) { 2723 if ( mTodoEditor->exec() ) {
2724 if ( cloneSub ) { 2724 if ( cloneSub ) {
2725 orgInc->cloneRelations( t ); 2725 orgInc->cloneRelations( t );
2726 mCalendar->addIncidenceBranch( t ); 2726 mCalendar->addIncidenceBranch( t );
2727 updateView(); 2727 updateView();
2728 2728
2729 } else { 2729 } else {
2730 mCalendar->addTodo( t ); 2730 mCalendar->addTodo( t );
2731 updateView(); 2731 updateView();
2732 } 2732 }
2733 } else { 2733 } else {
2734 delete t; 2734 delete t;
2735 } 2735 }
2736 } 2736 }
2737 else { 2737 else {
2738 Event* e = (Event*) newInc; 2738 Event* e = (Event*) newInc;
2739 showEventEditor(); 2739 showEventEditor();
2740 mEventEditor->editEvent( e ); 2740 mEventEditor->editEvent( e );
2741 if ( mEventEditor->exec() ) { 2741 if ( mEventEditor->exec() ) {
2742 mCalendar->addEvent( e ); 2742 mCalendar->addEvent( e );
2743 updateView(); 2743 updateView();
2744 } else { 2744 } else {
2745 delete e; 2745 delete e;
2746 } 2746 }
2747 } 2747 }
2748 setActiveWindow(); 2748 setActiveWindow();
2749} 2749}
2750 2750
2751void CalendarView::newEvent() 2751void CalendarView::newEvent()
2752{ 2752{
2753 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2753 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2754 KOAgendaView *aView = mViewManager->agendaView(); 2754 KOAgendaView *aView = mViewManager->agendaView();
2755 if (aView) { 2755 if (aView) {
2756 if (aView->selectionStart().isValid()) { 2756 if (aView->selectionStart().isValid()) {
2757 if (aView->selectedIsAllDay()) { 2757 if (aView->selectedIsAllDay()) {
2758 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2758 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2759 } else { 2759 } else {
2760 newEvent(aView->selectionStart(),aView->selectionEnd()); 2760 newEvent(aView->selectionStart(),aView->selectionEnd());
2761 } 2761 }
2762 return; 2762 return;
2763 } 2763 }
2764 } 2764 }
2765 2765
2766 QDate date = mNavigator->selectedDates().first(); 2766 QDate date = mNavigator->selectedDates().first();
2767 QDateTime current = QDateTime::currentDateTime(); 2767 QDateTime current = QDateTime::currentDateTime();
2768 if ( date <= current.date() ) { 2768 if ( date <= current.date() ) {
2769 int hour = current.time().hour() +1; 2769 int hour = current.time().hour() +1;
2770 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2770 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2771 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2771 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2772 } else 2772 } else
2773 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2773 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2774 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2774 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2775 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2775 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2776} 2776}
2777 2777
2778void CalendarView::newEvent(QDateTime fh) 2778void CalendarView::newEvent(QDateTime fh)
2779{ 2779{
2780 newEvent(fh, 2780 newEvent(fh,
2781 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2781 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2782} 2782}
2783 2783
2784void CalendarView::newEvent(QDate dt) 2784void CalendarView::newEvent(QDate dt)
2785{ 2785{
2786 newEvent(QDateTime(dt, QTime(0,0,0)), 2786 newEvent(QDateTime(dt, QTime(0,0,0)),
2787 QDateTime(dt, QTime(0,0,0)), true); 2787 QDateTime(dt, QTime(0,0,0)), true);
2788} 2788}
2789void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 2789void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
2790{ 2790{
2791 newEvent(fromHint, toHint, false); 2791 newEvent(fromHint, toHint, false);
2792} 2792}
2793void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2793void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2794{ 2794{
2795 2795
2796 showEventEditor(); 2796 showEventEditor();
2797 mEventEditor->newEvent(fromHint,toHint,allDay); 2797 mEventEditor->newEvent(fromHint,toHint,allDay);
2798 if ( mFilterView->filtersEnabled() ) { 2798 if ( mFilterView->filtersEnabled() ) {
2799 CalFilter *filter = mFilterView->selectedFilter(); 2799 CalFilter *filter = mFilterView->selectedFilter();
2800 if (filter && filter->showCategories()) { 2800 if (filter && filter->showCategories()) {
2801 mEventEditor->setCategories(filter->categoryList().join(",") ); 2801 mEventEditor->setCategories(filter->categoryList().join(",") );
2802 } 2802 }
2803 if ( filter ) 2803 if ( filter )
2804 mEventEditor->setSecrecy( filter->getSecrecy() ); 2804 mEventEditor->setSecrecy( filter->getSecrecy() );
2805 } 2805 }
2806 mEventEditor->exec(); 2806 mEventEditor->exec();
2807 setActiveWindow(); 2807 setActiveWindow();
2808} 2808}
2809void CalendarView::todoAdded(Todo * t) 2809void CalendarView::todoAdded(Todo * t)
2810{ 2810{
2811 2811
2812 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2812 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2813 updateTodoViews(); 2813 updateTodoViews();
2814} 2814}
2815void CalendarView::todoChanged(Todo * t) 2815void CalendarView::todoChanged(Todo * t)
2816{ 2816{
2817 emit todoModified( t, 4 ); 2817 emit todoModified( t, 4 );
2818 // updateTodoViews(); 2818 // updateTodoViews();
2819} 2819}
2820void CalendarView::todoToBeDeleted(Todo *) 2820void CalendarView::todoToBeDeleted(Todo *)
2821{ 2821{
2822 //qDebug("todoToBeDeleted(Todo *) "); 2822 //qDebug("todoToBeDeleted(Todo *) ");
2823 updateTodoViews(); 2823 updateTodoViews();
2824} 2824}
2825void CalendarView::todoDeleted() 2825void CalendarView::todoDeleted()
2826{ 2826{
2827 //qDebug(" todoDeleted()"); 2827 //qDebug(" todoDeleted()");
2828 updateTodoViews(); 2828 updateTodoViews();
2829} 2829}
2830 2830
2831 2831
2832void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 2832void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
2833{ 2833{
2834 showTodoEditor(); 2834 showTodoEditor();
2835 mTodoEditor->newTodo(dt,0,allday); 2835 mTodoEditor->newTodo(dt,0,allday);
2836 if ( mFilterView->filtersEnabled() ) { 2836 if ( mFilterView->filtersEnabled() ) {
2837 CalFilter *filter = mFilterView->selectedFilter(); 2837 CalFilter *filter = mFilterView->selectedFilter();
2838 if (filter && filter->showCategories()) { 2838 if (filter && filter->showCategories()) {
2839 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2839 mTodoEditor->setCategories(filter->categoryList().join(",") );
2840 } 2840 }
2841 if ( filter ) 2841 if ( filter )
2842 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2842 mTodoEditor->setSecrecy( filter->getSecrecy() );
2843 } 2843 }
2844 mTodoEditor->exec(); 2844 mTodoEditor->exec();
2845 setActiveWindow(); 2845 setActiveWindow();
2846} 2846}
2847 2847
2848void CalendarView::newTodo() 2848void CalendarView::newTodo()
2849{ 2849{
2850 newTodoDateTime( QDateTime(),true ); 2850 newTodoDateTime( QDateTime(),true );
2851} 2851}
2852 2852
2853void CalendarView::newSubTodo() 2853void CalendarView::newSubTodo()
2854{ 2854{
2855 Todo *todo = selectedTodo(); 2855 Todo *todo = selectedTodo();
2856 if ( todo ) newSubTodo( todo ); 2856 if ( todo ) newSubTodo( todo );
2857} 2857}
2858 2858
2859void CalendarView::newSubTodo(Todo *parentEvent) 2859void CalendarView::newSubTodo(Todo *parentEvent)
2860{ 2860{
2861 2861
2862 showTodoEditor(); 2862 showTodoEditor();
2863 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 2863 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
2864 mTodoEditor->exec(); 2864 mTodoEditor->exec();
2865 setActiveWindow(); 2865 setActiveWindow();
2866} 2866}
2867 2867
2868void CalendarView::newFloatingEvent() 2868void CalendarView::newFloatingEvent()
2869{ 2869{
2870 DateList tmpList = mNavigator->selectedDates(); 2870 DateList tmpList = mNavigator->selectedDates();
2871 QDate date = tmpList.first(); 2871 QDate date = tmpList.first();
2872 2872
2873 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2873 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2874 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2874 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2875} 2875}
2876 2876
2877 2877
2878void CalendarView::editEvent( Event *event ) 2878void CalendarView::editEvent( Event *event )
2879{ 2879{
2880 2880
2881 if ( !event ) return; 2881 if ( !event ) return;
2882 if ( event->isReadOnly() ) { 2882 if ( event->isReadOnly() ) {
2883 showEvent( event ); 2883 showEvent( event );
2884 return; 2884 return;
2885 } 2885 }
2886 showEventEditor(); 2886 showEventEditor();
2887 mEventEditor->editEvent( event , mFlagEditDescription); 2887 mEventEditor->editEvent( event , mFlagEditDescription);
2888 mEventEditor->exec(); 2888 mEventEditor->exec();
2889 setActiveWindow(); 2889 setActiveWindow();
2890 2890
2891} 2891}
2892void CalendarView::editJournal( Journal *jour ) 2892void CalendarView::editJournal( Journal *jour )
2893{ 2893{
2894 if ( !jour ) return; 2894 if ( !jour ) return;
2895 mDialogManager->hideSearchDialog(); 2895 mDialogManager->hideSearchDialog();
2896 mViewManager->showJournalView(); 2896 mViewManager->showJournalView();
2897 mNavigator->slotDaySelect( jour->dtStart().date() ); 2897 mNavigator->slotDaySelect( jour->dtStart().date() );
2898} 2898}
2899void CalendarView::editTodo( Todo *todo ) 2899void CalendarView::editTodo( Todo *todo )
2900{ 2900{
2901 if ( !todo ) return; 2901 if ( !todo ) return;
2902 2902
2903 if ( todo->isReadOnly() ) { 2903 if ( todo->isReadOnly() ) {
2904 showTodo( todo ); 2904 showTodo( todo );
2905 return; 2905 return;
2906 } 2906 }
2907 showTodoEditor(); 2907 showTodoEditor();
2908 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2908 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2909 mTodoEditor->exec(); 2909 mTodoEditor->exec();
2910 setActiveWindow(); 2910 setActiveWindow();
2911 2911
2912} 2912}
2913 2913
2914KOEventViewerDialog* CalendarView::getEventViewerDialog() 2914KOEventViewerDialog* CalendarView::getEventViewerDialog()
2915{ 2915{
2916 if ( !mEventViewerDialog ) { 2916 if ( !mEventViewerDialog ) {
2917 mEventViewerDialog = new KOEventViewerDialog(0); 2917 mEventViewerDialog = new KOEventViewerDialog(0);
2918 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2918 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2919 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2919 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2920 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2920 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2921 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2921 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2922 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2922 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2923 viewManager(), SLOT( showAgendaView( bool ) ) ); 2923 viewManager(), SLOT( showAgendaView( bool ) ) );
2924 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 2924 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
2925 this, SLOT( slotViewerClosed() ) ); 2925 this, SLOT( slotViewerClosed() ) );
2926 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 2926 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
2927 this, SLOT( todoChanged(Todo *) ) ); 2927 this, SLOT( todoChanged(Todo *) ) );
2928 mEventViewerDialog->resize( 640, 480 ); 2928 mEventViewerDialog->resize( 640, 480 );
2929 2929
2930 } 2930 }
2931 return mEventViewerDialog; 2931 return mEventViewerDialog;
2932} 2932}
2933void CalendarView::showEvent(Event *event) 2933void CalendarView::showEvent(Event *event)
2934{ 2934{
2935 getEventViewerDialog()->setEvent(event); 2935 getEventViewerDialog()->setEvent(event);
2936 getEventViewerDialog()->showMe(); 2936 getEventViewerDialog()->showMe();
2937} 2937}
2938 2938
2939void CalendarView::showTodo(Todo *event) 2939void CalendarView::showTodo(Todo *event)
2940{ 2940{
2941 getEventViewerDialog()->setTodo(event); 2941 getEventViewerDialog()->setTodo(event);
2942 getEventViewerDialog()->showMe(); 2942 getEventViewerDialog()->showMe();
2943} 2943}
2944void CalendarView::showJournal( Journal *jour ) 2944void CalendarView::showJournal( Journal *jour )
2945{ 2945{
2946 getEventViewerDialog()->setJournal(jour); 2946 getEventViewerDialog()->setJournal(jour);
2947 getEventViewerDialog()->showMe(); 2947 getEventViewerDialog()->showMe();
2948 2948
2949} 2949}
2950// void CalendarView::todoModified (Todo *event, int changed) 2950// void CalendarView::todoModified (Todo *event, int changed)
2951// { 2951// {
2952// // if (mDialogList.find (event) != mDialogList.end ()) { 2952// // if (mDialogList.find (event) != mDialogList.end ()) {
2953// // kdDebug() << "Todo modified and open" << endl; 2953// // kdDebug() << "Todo modified and open" << endl;
2954// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2954// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2955// // temp->modified (changed); 2955// // temp->modified (changed);
2956 2956
2957// // } 2957// // }
2958 2958
2959// mViewManager->updateView(); 2959// mViewManager->updateView();
2960// } 2960// }
2961 2961
2962void CalendarView::appointment_show() 2962void CalendarView::appointment_show()
2963{ 2963{
2964 Event *anEvent = 0; 2964 Event *anEvent = 0;
2965 2965
2966 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2966 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2967 2967
2968 if (mViewManager->currentView()->isEventView()) { 2968 if (mViewManager->currentView()->isEventView()) {
2969 if ( incidence && incidence->type() == "Event" ) { 2969 if ( incidence && incidence->type() == "Event" ) {
2970 anEvent = static_cast<Event *>(incidence); 2970 anEvent = static_cast<Event *>(incidence);
2971 } 2971 }
2972 } 2972 }
2973 2973
2974 if (!anEvent) { 2974 if (!anEvent) {
2975 KNotifyClient::beep(); 2975 KNotifyClient::beep();
2976 return; 2976 return;
2977 } 2977 }
2978 2978
2979 showEvent(anEvent); 2979 showEvent(anEvent);
2980} 2980}
2981 2981
2982void CalendarView::appointment_edit() 2982void CalendarView::appointment_edit()
2983{ 2983{
2984 Event *anEvent = 0; 2984 Event *anEvent = 0;
2985 2985
2986 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2986 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2987 2987
2988 if (mViewManager->currentView()->isEventView()) { 2988 if (mViewManager->currentView()->isEventView()) {
2989 if ( incidence && incidence->type() == "Event" ) { 2989 if ( incidence && incidence->type() == "Event" ) {
2990 anEvent = static_cast<Event *>(incidence); 2990 anEvent = static_cast<Event *>(incidence);
2991 } 2991 }
2992 } 2992 }
2993 2993
2994 if (!anEvent) { 2994 if (!anEvent) {
2995 KNotifyClient::beep(); 2995 KNotifyClient::beep();
2996 return; 2996 return;
2997 } 2997 }
2998 2998
2999 editEvent(anEvent); 2999 editEvent(anEvent);
3000} 3000}
3001 3001
3002void CalendarView::appointment_delete() 3002void CalendarView::appointment_delete()
3003{ 3003{
3004 Event *anEvent = 0; 3004 Event *anEvent = 0;
3005 3005
3006 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3006 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3007 3007
3008 if (mViewManager->currentView()->isEventView()) { 3008 if (mViewManager->currentView()->isEventView()) {
3009 if ( incidence && incidence->type() == "Event" ) { 3009 if ( incidence && incidence->type() == "Event" ) {
3010 anEvent = static_cast<Event *>(incidence); 3010 anEvent = static_cast<Event *>(incidence);
3011 } 3011 }
3012 } 3012 }
3013 3013
3014 if (!anEvent) { 3014 if (!anEvent) {
3015 KNotifyClient::beep(); 3015 KNotifyClient::beep();
3016 return; 3016 return;
3017 } 3017 }
3018 3018
3019 deleteEvent(anEvent); 3019 deleteEvent(anEvent);
3020} 3020}
3021 3021
3022void CalendarView::todo_resub( Todo * parent, Todo * sub ) 3022void CalendarView::todo_resub( Todo * parent, Todo * sub )
3023{ 3023{
3024 if (!sub) return; 3024 if (!sub) return;
3025 if ( sub->relatedTo() == parent ) 3025 if ( sub->relatedTo() == parent )
3026 return; 3026 return;
3027 sub->setRelatedTo(parent); 3027 sub->setRelatedTo(parent);
3028 sub->updated(); 3028 sub->updated();
3029 setModified(true); 3029 setModified(true);
3030 updateView(); 3030 updateView();
3031} 3031}
3032void CalendarView::todo_unsub(Todo *anTodo ) 3032void CalendarView::todo_unsub(Todo *anTodo )
3033{ 3033{
3034 todo_resub( 0, anTodo ); 3034 todo_resub( 0, anTodo );
3035} 3035}
3036 3036
3037void CalendarView::deleteTodo(Todo *todo) 3037void CalendarView::deleteTodo(Todo *todo)
3038{ 3038{
3039 if (!todo) { 3039 if (!todo) {
3040 KNotifyClient::beep(); 3040 KNotifyClient::beep();
3041 return; 3041 return;
3042 } 3042 }
3043 if (KOPrefs::instance()->mConfirm) { 3043 if (KOPrefs::instance()->mConfirm) {
3044 QString text = todo->summary().left(20); 3044 QString text = todo->summary().left(20);
3045 if (!todo->relations().isEmpty()) { 3045 if (!todo->relations().isEmpty()) {
3046 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 3046 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
3047 3047
3048 } 3048 }
3049 switch (msgItemDelete(text)) { 3049 switch (msgItemDelete(text)) {
3050 case KMessageBox::Continue: // OK 3050 case KMessageBox::Continue: // OK
3051 bool deleteT = false; 3051 bool deleteT = false;
3052 if (!todo->relations().isEmpty()) { 3052 if (!todo->relations().isEmpty()) {
3053 deleteT = removeCompletedSubTodos( todo ); 3053 deleteT = removeCompletedSubTodos( todo );
3054 } 3054 }
3055 // deleteT == true: todo already deleted in removeCompletedSubTodos 3055 // deleteT == true: todo already deleted in removeCompletedSubTodos
3056 if ( !deleteT ) { 3056 if ( !deleteT ) {
3057 checkExternalId( todo ); 3057 checkExternalId( todo );
3058 calendar()->deleteTodo(todo); 3058 calendar()->deleteTodo(todo);
3059 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3059 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3060 updateView(); 3060 updateView();
3061 } 3061 }
3062 break; 3062 break;
3063 } // switch 3063 } // switch
3064 } else { 3064 } else {
3065 checkExternalId( todo ); 3065 checkExternalId( todo );
3066 mCalendar->deleteTodo(todo); 3066 mCalendar->deleteTodo(todo);
3067 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3067 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3068 updateView(); 3068 updateView();
3069 } 3069 }
3070 3070
3071 emit updateSearchDialog(); 3071 emit updateSearchDialog();
3072} 3072}
3073void CalendarView::deleteJournal(Journal *jour) 3073void CalendarView::deleteJournal(Journal *jour)
3074{ 3074{
3075 if (!jour) { 3075 if (!jour) {
3076 KNotifyClient::beep(); 3076 KNotifyClient::beep();
3077 return; 3077 return;
3078 } 3078 }
3079 if (KOPrefs::instance()->mConfirm) { 3079 if (KOPrefs::instance()->mConfirm) {
3080 switch (msgItemDelete( jour->description().left(20))) { 3080 switch (msgItemDelete( jour->description().left(20))) {
3081 case KMessageBox::Continue: // OK 3081 case KMessageBox::Continue: // OK
3082 calendar()->deleteJournal(jour); 3082 calendar()->deleteJournal(jour);
3083 updateView(); 3083 updateView();
3084 break; 3084 break;
3085 } // switch 3085 } // switch
3086 } else { 3086 } else {
3087 calendar()->deleteJournal(jour);; 3087 calendar()->deleteJournal(jour);;
3088 updateView(); 3088 updateView();
3089 } 3089 }
3090 emit updateSearchDialog(); 3090 emit updateSearchDialog();
3091} 3091}
3092 3092
3093void CalendarView::deleteEvent(Event *anEvent) 3093void CalendarView::deleteEvent(Event *anEvent)
3094{ 3094{
3095 if (!anEvent) { 3095 if (!anEvent) {
3096 KNotifyClient::beep(); 3096 KNotifyClient::beep();
3097 return; 3097 return;
3098 } 3098 }
3099 3099
3100 if (anEvent->recurrence()->doesRecur()) { 3100 if (anEvent->recurrence()->doesRecur()) {
3101 QDate itemDate = mViewManager->currentSelectionDate(); 3101 QDate itemDate = mViewManager->currentSelectionDate();
3102 int km; 3102 int km;
3103 if (!itemDate.isValid()) { 3103 if (!itemDate.isValid()) {
3104 //kdDebug() << "Date Not Valid" << endl; 3104 //kdDebug() << "Date Not Valid" << endl;
3105 if (KOPrefs::instance()->mConfirm) { 3105 if (KOPrefs::instance()->mConfirm) {
3106 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3106 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3107 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3107 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3108 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3108 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3109 if ( km == KMessageBox::Continue ) 3109 if ( km == KMessageBox::Continue )
3110 km = KMessageBox::No; // No = all below 3110 km = KMessageBox::No; // No = all below
3111 } else 3111 } else
3112 km = KMessageBox::No; 3112 km = KMessageBox::No;
3113 } else { 3113 } else {
3114 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 3114 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) +
3115 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3115 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3116 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3116 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3117 i18n("KO/Pi Confirmation"),i18n("Current"), 3117 i18n("KO/Pi Confirmation"),i18n("Current"),
3118 i18n("All")); 3118 i18n("All"));
3119 } 3119 }
3120 switch(km) { 3120 switch(km) {
3121 3121
3122 case KMessageBox::No: // Continue // all 3122 case KMessageBox::No: // Continue // all
3123 //qDebug("KMessageBox::No "); 3123 //qDebug("KMessageBox::No ");
3124 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3124 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3125 schedule(Scheduler::Cancel,anEvent); 3125 schedule(Scheduler::Cancel,anEvent);
3126 3126
3127 checkExternalId( anEvent); 3127 checkExternalId( anEvent);
3128 mCalendar->deleteEvent(anEvent); 3128 mCalendar->deleteEvent(anEvent);
3129 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3129 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3130 break; 3130 break;
3131 3131
3132 // Disabled because it does not work 3132 // Disabled because it does not work
3133 //#if 0 3133 //#if 0
3134 case KMessageBox::Yes: // just this one 3134 case KMessageBox::Yes: // just this one
3135 //QDate qd = mNavigator->selectedDates().first(); 3135 //QDate qd = mNavigator->selectedDates().first();
3136 //if (!qd.isValid()) { 3136 //if (!qd.isValid()) {
3137 // kdDebug() << "no date selected, or invalid date" << endl; 3137 // kdDebug() << "no date selected, or invalid date" << endl;
3138 // KNotifyClient::beep(); 3138 // KNotifyClient::beep();
3139 // return; 3139 // return;
3140 //} 3140 //}
3141 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3141 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3142 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3142 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3143 anEvent->addExDate(itemDate); 3143 anEvent->addExDate(itemDate);
3144 int duration = anEvent->recurrence()->duration(); 3144 int duration = anEvent->recurrence()->duration();
3145 if ( duration > 0 ) { 3145 if ( duration > 0 ) {
3146 anEvent->recurrence()->setDuration( duration - 1 ); 3146 anEvent->recurrence()->setDuration( duration - 1 );
3147 } 3147 }
3148 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3148 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3149 } 3149 }
3150 break; 3150 break;
3151 //#endif 3151 //#endif
3152 } // switch 3152 } // switch
3153 } else { 3153 } else {
3154 if (KOPrefs::instance()->mConfirm) { 3154 if (KOPrefs::instance()->mConfirm) {
3155 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3155 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3156 i18n("\nAre you sure you want\nto delete this event?"), 3156 i18n("\nAre you sure you want\nto delete this event?"),
3157 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3157 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3158 case KMessageBox::Continue: // OK 3158 case KMessageBox::Continue: // OK
3159 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3159 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3160 schedule(Scheduler::Cancel,anEvent); 3160 schedule(Scheduler::Cancel,anEvent);
3161 checkExternalId( anEvent); 3161 checkExternalId( anEvent);
3162 mCalendar->deleteEvent(anEvent); 3162 mCalendar->deleteEvent(anEvent);
3163 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3163 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3164 break; 3164 break;
3165 } // switch 3165 } // switch
3166 } else { 3166 } else {
3167 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3167 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3168 schedule(Scheduler::Cancel,anEvent); 3168 schedule(Scheduler::Cancel,anEvent);
3169 checkExternalId( anEvent); 3169 checkExternalId( anEvent);
3170 mCalendar->deleteEvent(anEvent); 3170 mCalendar->deleteEvent(anEvent);
3171 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3171 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3172 } 3172 }
3173 } // if-else 3173 } // if-else
3174 emit updateSearchDialog(); 3174 emit updateSearchDialog();
3175} 3175}
3176 3176
3177bool CalendarView::deleteEvent(const QString &uid) 3177bool CalendarView::deleteEvent(const QString &uid)
3178{ 3178{
3179 Event *ev = mCalendar->event(uid); 3179 Event *ev = mCalendar->event(uid);
3180 if (ev) { 3180 if (ev) {
3181 deleteEvent(ev); 3181 deleteEvent(ev);
3182 return true; 3182 return true;
3183 } else { 3183 } else {
3184 return false; 3184 return false;
3185 } 3185 }
3186} 3186}
3187 3187
3188/*****************************************************************************/ 3188/*****************************************************************************/
3189 3189
3190void CalendarView::action_mail() 3190void CalendarView::action_mail()
3191{ 3191{
3192#ifndef KORG_NOMAIL 3192#ifndef KORG_NOMAIL
3193 KOMailClient mailClient; 3193 KOMailClient mailClient;
3194 3194
3195 Incidence *incidence = currentSelection(); 3195 Incidence *incidence = currentSelection();
3196 3196
3197 if (!incidence) { 3197 if (!incidence) {
3198 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3198 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3199 return; 3199 return;
3200 } 3200 }
3201 if(incidence->attendeeCount() == 0 ) { 3201 if(incidence->attendeeCount() == 0 ) {
3202 KMessageBox::sorry(this, 3202 KMessageBox::sorry(this,
3203 i18n("Can't generate mail:\nNo attendees defined.\n")); 3203 i18n("Can't generate mail:\nNo attendees defined.\n"));
3204 return; 3204 return;
3205 } 3205 }
3206 3206
3207 CalendarLocal cal_tmp; 3207 CalendarLocal cal_tmp;
3208 Event *event = 0; 3208 Event *event = 0;
3209 Event *ev = 0; 3209 Event *ev = 0;
3210 if ( incidence && incidence->type() == "Event" ) { 3210 if ( incidence && incidence->type() == "Event" ) {
3211 event = static_cast<Event *>(incidence); 3211 event = static_cast<Event *>(incidence);
3212 ev = new Event(*event); 3212 ev = new Event(*event);
3213 cal_tmp.addEvent(ev); 3213 cal_tmp.addEvent(ev);
3214 } 3214 }
3215 ICalFormat mForm(); 3215 ICalFormat mForm();
3216 QString attachment = mForm.toString( &cal_tmp ); 3216 QString attachment = mForm.toString( &cal_tmp );
3217 if (ev) delete(ev); 3217 if (ev) delete(ev);
3218 3218
3219 mailClient.mailAttendees(currentSelection(), attachment); 3219 mailClient.mailAttendees(currentSelection(), attachment);
3220 3220
3221#endif 3221#endif
3222 3222
3223#if 0 3223#if 0
3224 Event *anEvent = 0; 3224 Event *anEvent = 0;
3225 if (mViewManager->currentView()->isEventView()) { 3225 if (mViewManager->currentView()->isEventView()) {
3226 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3226 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3227 } 3227 }
3228 3228
3229 if (!anEvent) { 3229 if (!anEvent) {
3230 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3230 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3231 return; 3231 return;
3232 } 3232 }
3233 if(anEvent->attendeeCount() == 0 ) { 3233 if(anEvent->attendeeCount() == 0 ) {
3234 KMessageBox::sorry(this, 3234 KMessageBox::sorry(this,
3235 i18n("Can't generate mail:\nNo attendees defined.\n")); 3235 i18n("Can't generate mail:\nNo attendees defined.\n"));
3236 return; 3236 return;
3237 } 3237 }
3238 3238
3239 mailobject.emailEvent(anEvent); 3239 mailobject.emailEvent(anEvent);
3240#endif 3240#endif
3241} 3241}
3242 3242
3243 3243
3244void CalendarView::schedule_publish(Incidence *incidence) 3244void CalendarView::schedule_publish(Incidence *incidence)
3245{ 3245{
3246 Event *event = 0; 3246 Event *event = 0;
3247 Todo *todo = 0; 3247 Todo *todo = 0;
3248 3248
3249 if (incidence == 0) { 3249 if (incidence == 0) {
3250 incidence = mViewManager->currentView()->selectedIncidences().first(); 3250 incidence = mViewManager->currentView()->selectedIncidences().first();
3251 if (incidence == 0) { 3251 if (incidence == 0) {
3252 incidence = mTodoList->selectedIncidences().first(); 3252 incidence = mTodoList->selectedIncidences().first();
3253 } 3253 }
3254 } 3254 }
3255 if ( incidence && incidence->type() == "Event" ) { 3255 if ( incidence && incidence->type() == "Event" ) {
3256 event = static_cast<Event *>(incidence); 3256 event = static_cast<Event *>(incidence);
3257 } else { 3257 } else {
3258 if ( incidence && incidence->type() == "Todo" ) { 3258 if ( incidence && incidence->type() == "Todo" ) {
3259 todo = static_cast<Todo *>(incidence); 3259 todo = static_cast<Todo *>(incidence);
3260 } 3260 }
3261 } 3261 }
3262 3262
3263 if (!event && !todo) { 3263 if (!event && !todo) {
3264 KMessageBox::sorry(this,i18n("No event selected.")); 3264 KMessageBox::sorry(this,i18n("No event selected."));
3265 return; 3265 return;
3266 } 3266 }
3267 3267
3268 PublishDialog *publishdlg = new PublishDialog(); 3268 PublishDialog *publishdlg = new PublishDialog();
3269 if (incidence->attendeeCount()>0) { 3269 if (incidence->attendeeCount()>0) {
3270 QPtrList<Attendee> attendees = incidence->attendees(); 3270 QPtrList<Attendee> attendees = incidence->attendees();
3271 attendees.first(); 3271 attendees.first();
3272 while ( attendees.current()!=0 ) { 3272 while ( attendees.current()!=0 ) {
3273 publishdlg->addAttendee(attendees.current()); 3273 publishdlg->addAttendee(attendees.current());
3274 attendees.next(); 3274 attendees.next();
3275 } 3275 }
3276 } 3276 }
3277 bool send = true; 3277 bool send = true;
3278 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3278 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3279 if ( publishdlg->exec() != QDialog::Accepted ) 3279 if ( publishdlg->exec() != QDialog::Accepted )
3280 send = false; 3280 send = false;
3281 } 3281 }
3282 if ( send ) { 3282 if ( send ) {
3283 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3283 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3284 if ( event ) { 3284 if ( event ) {
3285 Event *ev = new Event(*event); 3285 Event *ev = new Event(*event);
3286 ev->registerObserver(0); 3286 ev->registerObserver(0);
3287 ev->clearAttendees(); 3287 ev->clearAttendees();
3288 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3288 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3289 delete(ev); 3289 delete(ev);
3290 } 3290 }
3291 } else { 3291 } else {
3292 if ( todo ) { 3292 if ( todo ) {
3293 Todo *ev = new Todo(*todo); 3293 Todo *ev = new Todo(*todo);
3294 ev->registerObserver(0); 3294 ev->registerObserver(0);
3295 ev->clearAttendees(); 3295 ev->clearAttendees();
3296 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3296 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3297 delete(ev); 3297 delete(ev);
3298 } 3298 }
3299 } 3299 }
3300 } 3300 }
3301 } 3301 }
3302 delete publishdlg; 3302 delete publishdlg;
3303} 3303}
3304 3304
3305void CalendarView::schedule_request(Incidence *incidence) 3305void CalendarView::schedule_request(Incidence *incidence)
3306{ 3306{
3307 schedule(Scheduler::Request,incidence); 3307 schedule(Scheduler::Request,incidence);
3308} 3308}
3309 3309
3310void CalendarView::schedule_refresh(Incidence *incidence) 3310void CalendarView::schedule_refresh(Incidence *incidence)
3311{ 3311{
3312 schedule(Scheduler::Refresh,incidence); 3312 schedule(Scheduler::Refresh,incidence);
3313} 3313}
3314 3314
3315void CalendarView::schedule_cancel(Incidence *incidence) 3315void CalendarView::schedule_cancel(Incidence *incidence)
3316{ 3316{
3317 schedule(Scheduler::Cancel,incidence); 3317 schedule(Scheduler::Cancel,incidence);
3318} 3318}
3319 3319
3320void CalendarView::schedule_add(Incidence *incidence) 3320void CalendarView::schedule_add(Incidence *incidence)
3321{ 3321{
3322 schedule(Scheduler::Add,incidence); 3322 schedule(Scheduler::Add,incidence);
3323} 3323}
3324 3324
3325void CalendarView::schedule_reply(Incidence *incidence) 3325void CalendarView::schedule_reply(Incidence *incidence)
3326{ 3326{
3327 schedule(Scheduler::Reply,incidence); 3327 schedule(Scheduler::Reply,incidence);
3328} 3328}
3329 3329
3330void CalendarView::schedule_counter(Incidence *incidence) 3330void CalendarView::schedule_counter(Incidence *incidence)
3331{ 3331{
3332 schedule(Scheduler::Counter,incidence); 3332 schedule(Scheduler::Counter,incidence);
3333} 3333}
3334 3334
3335void CalendarView::schedule_declinecounter(Incidence *incidence) 3335void CalendarView::schedule_declinecounter(Incidence *incidence)
3336{ 3336{
3337 schedule(Scheduler::Declinecounter,incidence); 3337 schedule(Scheduler::Declinecounter,incidence);
3338} 3338}
3339 3339
3340void CalendarView::schedule_publish_freebusy(int daysToPublish) 3340void CalendarView::schedule_publish_freebusy(int daysToPublish)
3341{ 3341{
3342 QDateTime start = QDateTime::currentDateTime(); 3342 QDateTime start = QDateTime::currentDateTime();
3343 QDateTime end = start.addDays(daysToPublish); 3343 QDateTime end = start.addDays(daysToPublish);
3344 3344
3345 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 3345 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
3346 freebusy->setOrganizer(KOPrefs::instance()->email()); 3346 freebusy->setOrganizer(KOPrefs::instance()->email());
3347 3347
3348 3348
3349 PublishDialog *publishdlg = new PublishDialog(); 3349 PublishDialog *publishdlg = new PublishDialog();
3350 if ( publishdlg->exec() == QDialog::Accepted ) { 3350 if ( publishdlg->exec() == QDialog::Accepted ) {
3351 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3351 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3352 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 3352 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
3353 delete(freebusy); 3353 delete(freebusy);
3354 } 3354 }
3355 } 3355 }
3356 delete publishdlg; 3356 delete publishdlg;
3357} 3357}
3358 3358
3359void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 3359void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
3360{ 3360{
3361 Event *event = 0; 3361 Event *event = 0;
3362 Todo *todo = 0; 3362 Todo *todo = 0;
3363 3363
3364 if (incidence == 0) { 3364 if (incidence == 0) {
3365 incidence = mViewManager->currentView()->selectedIncidences().first(); 3365 incidence = mViewManager->currentView()->selectedIncidences().first();
3366 if (incidence == 0) { 3366 if (incidence == 0) {
3367 incidence = mTodoList->selectedIncidences().first(); 3367 incidence = mTodoList->selectedIncidences().first();
3368 } 3368 }
3369 } 3369 }
3370 if ( incidence && incidence->type() == "Event" ) { 3370 if ( incidence && incidence->type() == "Event" ) {
3371 event = static_cast<Event *>(incidence); 3371 event = static_cast<Event *>(incidence);
3372 } 3372 }
3373 if ( incidence && incidence->type() == "Todo" ) { 3373 if ( incidence && incidence->type() == "Todo" ) {
3374 todo = static_cast<Todo *>(incidence); 3374 todo = static_cast<Todo *>(incidence);
3375 } 3375 }
3376 3376
3377 if (!event && !todo) { 3377 if (!event && !todo) {
3378 KMessageBox::sorry(this,i18n("No event selected.")); 3378 KMessageBox::sorry(this,i18n("No event selected."));
3379 return; 3379 return;
3380 } 3380 }
3381 3381
3382 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 3382 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
3383 KMessageBox::sorry(this,i18n("The event has no attendees.")); 3383 KMessageBox::sorry(this,i18n("The event has no attendees."));
3384 return; 3384 return;
3385 } 3385 }
3386 3386
3387 Event *ev = 0; 3387 Event *ev = 0;
3388 if (event) ev = new Event(*event); 3388 if (event) ev = new Event(*event);
3389 Todo *to = 0; 3389 Todo *to = 0;
3390 if (todo) to = new Todo(*todo); 3390 if (todo) to = new Todo(*todo);
3391 3391
3392 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 3392 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
3393 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 3393 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
3394 if (!me) { 3394 if (!me) {
3395 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 3395 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
3396 return; 3396 return;
3397 } 3397 }
3398 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 3398 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
3399 StatusDialog *statdlg = new StatusDialog(this); 3399 StatusDialog *statdlg = new StatusDialog(this);
3400 if (!statdlg->exec()==QDialog::Accepted) return; 3400 if (!statdlg->exec()==QDialog::Accepted) return;
3401 me->setStatus( statdlg->status() ); 3401 me->setStatus( statdlg->status() );
3402 delete(statdlg); 3402 delete(statdlg);
3403 } 3403 }
3404 Attendee *menew = new Attendee(*me); 3404 Attendee *menew = new Attendee(*me);
3405 if (ev) { 3405 if (ev) {
3406 ev->clearAttendees(); 3406 ev->clearAttendees();
3407 ev->addAttendee(menew,false); 3407 ev->addAttendee(menew,false);
3408 } else { 3408 } else {
3409 if (to) { 3409 if (to) {
3410 todo->clearAttendees(); 3410 todo->clearAttendees();
3411 todo->addAttendee(menew,false); 3411 todo->addAttendee(menew,false);
3412 } 3412 }
3413 } 3413 }
3414 } 3414 }
3415 3415
3416 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3416 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3417 if (ev) { 3417 if (ev) {
3418 if ( !dlg->addMessage(ev,method) ) delete(ev); 3418 if ( !dlg->addMessage(ev,method) ) delete(ev);
3419 } else { 3419 } else {
3420 if (to) { 3420 if (to) {
3421 if ( !dlg->addMessage(to,method) ) delete(to); 3421 if ( !dlg->addMessage(to,method) ) delete(to);
3422 } 3422 }
3423 } 3423 }
3424} 3424}
3425 3425
3426void CalendarView::openAddressbook() 3426void CalendarView::openAddressbook()
3427{ 3427{
3428 KRun::runCommand("kaddressbook"); 3428 KRun::runCommand("kaddressbook");
3429} 3429}
3430 3430
3431void CalendarView::setModified(bool modified) 3431void CalendarView::setModified(bool modified)
3432{ 3432{
3433 if ( modified ) 3433 if ( modified )
3434 emit signalmodified(); 3434 emit signalmodified();
3435 if (mModified != modified) { 3435 if (mModified != modified) {
3436 mModified = modified; 3436 mModified = modified;
3437 emit modifiedChanged(mModified); 3437 emit modifiedChanged(mModified);
3438 } 3438 }
3439} 3439}
3440 3440
3441bool CalendarView::isReadOnly() 3441bool CalendarView::isReadOnly()
3442{ 3442{
3443 return mReadOnly; 3443 return mReadOnly;
3444} 3444}
3445 3445
3446void CalendarView::setReadOnly(bool readOnly) 3446void CalendarView::setReadOnly(bool readOnly)
3447{ 3447{
3448 if (mReadOnly != readOnly) { 3448 if (mReadOnly != readOnly) {
3449 mReadOnly = readOnly; 3449 mReadOnly = readOnly;
3450 emit readOnlyChanged(mReadOnly); 3450 emit readOnlyChanged(mReadOnly);
3451 } 3451 }
3452} 3452}
3453 3453
3454bool CalendarView::isModified() 3454bool CalendarView::isModified()
3455{ 3455{
3456 return mModified; 3456 return mModified;
3457} 3457}
3458void CalendarView::slotprintSelInc() 3458void CalendarView::slotprintSelInc()
3459{ 3459{
3460 if ( currentSelection() == 0 ) { 3460 if ( currentSelection() == 0 ) {
3461 KMessageBox::sorry(this,i18n("There is nothing selected!")); 3461 KMessageBox::sorry(this,i18n("There is nothing selected!"));
3462 return; 3462 return;
3463 } 3463 }
3464 showIncidence(); 3464 showIncidence();
3465 getEventViewerDialog()->print(); 3465 getEventViewerDialog()->print();
3466 3466
3467} 3467}
3468void CalendarView::printSetup() 3468void CalendarView::printSetup()
3469{ 3469{
3470#ifndef KORG_NOPRINTER 3470#ifndef KORG_NOPRINTER
3471 createPrinter(); 3471 createPrinter();
3472 3472
3473 mCalPrinter->setupPrinter(); 3473 mCalPrinter->setupPrinter();
3474#endif 3474#endif
3475} 3475}
3476 3476
3477void CalendarView::print() 3477void CalendarView::print()
3478{ 3478{
3479#ifndef KORG_NOPRINTER 3479#ifndef KORG_NOPRINTER
3480 createPrinter(); 3480 createPrinter();
3481 3481
3482 DateList tmpDateList = mNavigator->selectedDates(); 3482 DateList tmpDateList = mNavigator->selectedDates();
3483 mCalPrinter->print(CalPrinter::Month, 3483 mCalPrinter->print(CalPrinter::Month,
3484 tmpDateList.first(), tmpDateList.last()); 3484 tmpDateList.first(), tmpDateList.last());
3485#endif 3485#endif
3486} 3486}
3487 3487
3488void CalendarView::printPreview() 3488void CalendarView::printPreview()
3489{ 3489{
3490#ifndef KORG_NOPRINTER 3490#ifndef KORG_NOPRINTER
3491 kdDebug() << "CalendarView::printPreview()" << endl; 3491 kdDebug() << "CalendarView::printPreview()" << endl;
3492 3492
3493 createPrinter(); 3493 createPrinter();
3494 3494
3495 DateList tmpDateList = mNavigator->selectedDates(); 3495 DateList tmpDateList = mNavigator->selectedDates();
3496 3496
3497 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3497 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3498 tmpDateList.last()); 3498 tmpDateList.last());
3499#endif 3499#endif
3500} 3500}
3501 3501
3502void CalendarView::exportICalendar() 3502void CalendarView::exportICalendar()
3503{ 3503{
3504 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3504 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3505 3505
3506 // Force correct extension 3506 // Force correct extension
3507 if (filename.right(4) != ".ics") filename += ".ics"; 3507 if (filename.right(4) != ".ics") filename += ".ics";
3508 3508
3509 FileStorage storage( mCalendar, filename, new ICalFormat() ); 3509 FileStorage storage( mCalendar, filename, new ICalFormat() );
3510 storage.save(); 3510 storage.save();
3511} 3511}
3512 3512
3513bool CalendarView::exportVCalendar( QString filename ) 3513bool CalendarView::exportVCalendar( QString filename )
3514{ 3514{
3515 if (mCalendar->journals().count() > 0) { 3515 if (mCalendar->journals().count() > 0) {
3516 int result = KMessageBox::warningContinueCancel(this, 3516 int result = KMessageBox::warningContinueCancel(this,
3517 i18n("The journal entries can not be\nexported to a vCalendar file."), 3517 i18n("The journal entries can not be\nexported to a vCalendar file."),
3518 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3518 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3519 true); 3519 true);
3520 if (result != KMessageBox::Continue) return false; 3520 if (result != KMessageBox::Continue) return false;
3521 } 3521 }
3522 3522
3523 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3523 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3524 3524
3525 // Force correct extension 3525 // Force correct extension
3526 if (filename.right(4) != ".vcs") filename += ".vcs"; 3526 if (filename.right(4) != ".vcs") filename += ".vcs";
3527 3527
3528 FileStorage storage( mCalendar, filename, new VCalFormat ); 3528 FileStorage storage( mCalendar, filename, new VCalFormat );
3529 return storage.save(); 3529 return storage.save();
3530 3530
3531} 3531}
3532 3532
3533void CalendarView::eventUpdated(Incidence *) 3533void CalendarView::eventUpdated(Incidence *)
3534{ 3534{
3535 setModified(); 3535 setModified();
3536 // Don't call updateView here. The code, which has caused the update of the 3536 // Don't call updateView here. The code, which has caused the update of the
3537 // event is responsible for updating the view. 3537 // event is responsible for updating the view.
3538 // updateView(); 3538 // updateView();
3539} 3539}
3540 3540
3541void CalendarView::adaptNavigationUnits() 3541void CalendarView::adaptNavigationUnits()
3542{ 3542{
3543 if (mViewManager->currentView()->isEventView()) { 3543 if (mViewManager->currentView()->isEventView()) {
3544 int days = mViewManager->currentView()->currentDateCount(); 3544 int days = mViewManager->currentView()->currentDateCount();
3545 if (days == 1) { 3545 if (days == 1) {
3546 emit changeNavStringPrev(i18n("&Previous Day")); 3546 emit changeNavStringPrev(i18n("&Previous Day"));
3547 emit changeNavStringNext(i18n("&Next Day")); 3547 emit changeNavStringNext(i18n("&Next Day"));
3548 } else { 3548 } else {
3549 emit changeNavStringPrev(i18n("&Previous Week")); 3549 emit changeNavStringPrev(i18n("&Previous Week"));
3550 emit changeNavStringNext(i18n("&Next Week")); 3550 emit changeNavStringNext(i18n("&Next Week"));
3551 } 3551 }
3552 } 3552 }
3553} 3553}
3554 3554
3555void CalendarView::processMainViewSelection( Incidence *incidence ) 3555void CalendarView::processMainViewSelection( Incidence *incidence )
3556{ 3556{
3557 if ( incidence ) mTodoList->clearSelection(); 3557 if ( incidence ) mTodoList->clearSelection();
3558 processIncidenceSelection( incidence ); 3558 processIncidenceSelection( incidence );
3559} 3559}
3560 3560
3561void CalendarView::processTodoListSelection( Incidence *incidence ) 3561void CalendarView::processTodoListSelection( Incidence *incidence )
3562{ 3562{
3563 if ( incidence && mViewManager->currentView() ) { 3563 if ( incidence && mViewManager->currentView() ) {
3564 mViewManager->currentView()->clearSelection(); 3564 mViewManager->currentView()->clearSelection();
3565 } 3565 }
3566 processIncidenceSelection( incidence ); 3566 processIncidenceSelection( incidence );
3567} 3567}
3568 3568
3569void CalendarView::processIncidenceSelection( Incidence *incidence ) 3569void CalendarView::processIncidenceSelection( Incidence *incidence )
3570{ 3570{
3571 if ( incidence == mSelectedIncidence ) return; 3571 if ( incidence == mSelectedIncidence ) return;
3572 3572
3573 mSelectedIncidence = incidence; 3573 mSelectedIncidence = incidence;
3574 3574
3575 emit incidenceSelected( mSelectedIncidence ); 3575 emit incidenceSelected( mSelectedIncidence );
3576 3576
3577 if ( incidence && incidence->type() == "Event" ) { 3577 if ( incidence && incidence->type() == "Event" ) {
3578 Event *event = static_cast<Event *>( incidence ); 3578 Event *event = static_cast<Event *>( incidence );
3579 if ( event->organizer() == KOPrefs::instance()->email() ) { 3579 if ( event->organizer() == KOPrefs::instance()->email() ) {
3580 emit organizerEventsSelected( true ); 3580 emit organizerEventsSelected( true );
3581 } else { 3581 } else {
3582 emit organizerEventsSelected(false); 3582 emit organizerEventsSelected(false);
3583 } 3583 }
3584 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3584 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3585 KOPrefs::instance()->email() ) ) { 3585 KOPrefs::instance()->email() ) ) {
3586 emit groupEventsSelected( true ); 3586 emit groupEventsSelected( true );
3587 } else { 3587 } else {
3588 emit groupEventsSelected(false); 3588 emit groupEventsSelected(false);
3589 } 3589 }
3590 return; 3590 return;
3591 } else { 3591 } else {
3592 if ( incidence && incidence->type() == "Todo" ) { 3592 if ( incidence && incidence->type() == "Todo" ) {
3593 emit todoSelected( true ); 3593 emit todoSelected( true );
3594 Todo *event = static_cast<Todo *>( incidence ); 3594 Todo *event = static_cast<Todo *>( incidence );
3595 if ( event->organizer() == KOPrefs::instance()->email() ) { 3595 if ( event->organizer() == KOPrefs::instance()->email() ) {
3596 emit organizerEventsSelected( true ); 3596 emit organizerEventsSelected( true );
3597 } else { 3597 } else {
3598 emit organizerEventsSelected(false); 3598 emit organizerEventsSelected(false);
3599 } 3599 }
3600 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3600 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3601 KOPrefs::instance()->email() ) ) { 3601 KOPrefs::instance()->email() ) ) {
3602 emit groupEventsSelected( true ); 3602 emit groupEventsSelected( true );
3603 } else { 3603 } else {
3604 emit groupEventsSelected(false); 3604 emit groupEventsSelected(false);
3605 } 3605 }
3606 return; 3606 return;
3607 } else { 3607 } else {
3608 emit todoSelected( false ); 3608 emit todoSelected( false );
3609 emit organizerEventsSelected(false); 3609 emit organizerEventsSelected(false);
3610 emit groupEventsSelected(false); 3610 emit groupEventsSelected(false);
3611 } 3611 }
3612 return; 3612 return;
3613 } 3613 }
3614 3614
3615 /* if ( incidence && incidence->type() == "Todo" ) { 3615 /* if ( incidence && incidence->type() == "Todo" ) {
3616 emit todoSelected( true ); 3616 emit todoSelected( true );
3617 } else { 3617 } else {
3618 emit todoSelected( false ); 3618 emit todoSelected( false );
3619 }*/ 3619 }*/
3620} 3620}
3621 3621
3622 3622
3623void CalendarView::checkClipboard() 3623void CalendarView::checkClipboard()
3624{ 3624{
3625#ifndef KORG_NODND 3625#ifndef KORG_NODND
3626 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3626 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3627 emit pasteEnabled(true); 3627 emit pasteEnabled(true);
3628 } else { 3628 } else {
3629 emit pasteEnabled(false); 3629 emit pasteEnabled(false);
3630 } 3630 }
3631#endif 3631#endif
3632} 3632}
3633 3633
3634void CalendarView::showDates(const DateList &selectedDates) 3634void CalendarView::showDates(const DateList &selectedDates)
3635{ 3635{
3636 // kdDebug() << "CalendarView::selectDates()" << endl; 3636 // kdDebug() << "CalendarView::selectDates()" << endl;
3637 3637
3638 3638
3639 if ( !mBlockShowDates ) { 3639 if ( !mBlockShowDates ) {
3640 if ( mViewManager->currentView() ) { 3640 if ( mViewManager->currentView() ) {
3641 updateView( selectedDates.first(), selectedDates.last() ); 3641 updateView( selectedDates.first(), selectedDates.last() );
3642 } else { 3642 } else {
3643 mViewManager->showAgendaView(); 3643 mViewManager->showAgendaView();
3644 } 3644 }
3645 } 3645 }
3646 3646
3647 QDate date = selectedDates.first(); 3647 QDate date = selectedDates.first();
3648 if ( ! date.isValid() ) { 3648 if ( ! date.isValid() ) {
3649 topLevelWidget()->setCaption(""); 3649 topLevelWidget()->setCaption("");
3650 return; 3650 return;
3651 } 3651 }
3652 3652
3653 QString selDates; 3653 QString selDates;
3654 selDates = KGlobal::locale()->formatDate( date, true); 3654 selDates = KGlobal::locale()->formatDate( date, true);
3655 if (selectedDates.first() < selectedDates.last() ) 3655 if (selectedDates.first() < selectedDates.last() )
3656 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3656 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3657 else { 3657 else {
3658 QString addString; 3658 QString addString;
3659 if ( date == QDateTime::currentDateTime().date() ) 3659 if ( date == QDateTime::currentDateTime().date() )
3660 addString = i18n("Today"); 3660 addString = i18n("Today");
3661 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 3661 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
3662 addString = i18n("Tomorrow"); 3662 addString = i18n("Tomorrow");
3663 else if ( date == QDateTime::currentDateTime().date().addDays(-1) ) 3663 else if ( date == QDateTime::currentDateTime().date().addDays(-1) )
3664 addString = i18n("Yesterday"); 3664 addString = i18n("Yesterday");
3665 else if ( date == QDateTime::currentDateTime().date().addDays(-2) ) 3665 else if ( date == QDateTime::currentDateTime().date().addDays(-2) )
3666 addString = i18n("Day before yesterday"); 3666 addString = i18n("Day before yesterday");
3667 else if ( date == QDateTime::currentDateTime().date().addDays(2) ) 3667 else if ( date == QDateTime::currentDateTime().date().addDays(2) )
3668 addString = i18n("Day after tomorrow"); 3668 addString = i18n("Day after tomorrow");
3669 if ( !addString.isEmpty() ) { 3669 if ( !addString.isEmpty() ) {
3670 topLevelWidget()->setCaption( addString+", " + selDates ); 3670 topLevelWidget()->setCaption( addString+", " + selDates );
3671 return; 3671 return;
3672 } 3672 }
3673 } 3673 }
3674 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3674 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3675 3675
3676} 3676}
3677 3677
3678QPtrList<CalFilter> CalendarView::filters() 3678QPtrList<CalFilter> CalendarView::filters()
3679{ 3679{
3680 return mFilters; 3680 return mFilters;
3681 3681
3682} 3682}
3683void CalendarView::editFilters() 3683void CalendarView::editFilters()
3684{ 3684{
3685 // kdDebug() << "CalendarView::editFilters()" << endl; 3685 // kdDebug() << "CalendarView::editFilters()" << endl;
3686 3686
3687 CalFilter *filter = mFilters.first(); 3687 CalFilter *filter = mFilters.first();
3688 while(filter) { 3688 while(filter) {
3689 kdDebug() << " Filter: " << filter->name() << endl; 3689 kdDebug() << " Filter: " << filter->name() << endl;
3690 filter = mFilters.next(); 3690 filter = mFilters.next();
3691 } 3691 }
3692 3692
3693 mDialogManager->showFilterEditDialog(&mFilters); 3693 mDialogManager->showFilterEditDialog(&mFilters);
3694} 3694}
3695void CalendarView::toggleFilter() 3695void CalendarView::toggleFilter()
3696{ 3696{
3697 showFilter(! mFilterView->isVisible()); 3697 showFilter(! mFilterView->isVisible());
3698} 3698}
3699 3699
3700KOFilterView *CalendarView::filterView() 3700KOFilterView *CalendarView::filterView()
3701{ 3701{
3702 return mFilterView; 3702 return mFilterView;
3703} 3703}
3704void CalendarView::selectFilter( int fil ) 3704void CalendarView::selectFilter( int fil )
3705{ 3705{
3706 mFilterView->setSelectedFilter( fil ); 3706 mFilterView->setSelectedFilter( fil );
3707} 3707}
3708void CalendarView::showFilter(bool visible) 3708void CalendarView::showFilter(bool visible)
3709{ 3709{
3710 if (visible) mFilterView->show(); 3710 if (visible) mFilterView->show();
3711 else mFilterView->hide(); 3711 else mFilterView->hide();
3712} 3712}
3713void CalendarView::toggleFilerEnabled( ) 3713void CalendarView::toggleFilerEnabled( )
3714{ 3714{
3715 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3715 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3716 if ( !mFilterView->filtersEnabled() ) 3716 if ( !mFilterView->filtersEnabled() )
3717 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3717 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3718 3718
3719} 3719}
3720void CalendarView::updateFilter() 3720void CalendarView::updateFilter()
3721{ 3721{
3722 CalFilter *filter = mFilterView->selectedFilter(); 3722 CalFilter *filter = mFilterView->selectedFilter();
3723 if (filter) { 3723 if (filter) {
3724 QString mess; 3724 QString mess;
3725 if (mFilterView->filtersEnabled()) { 3725 if (mFilterView->filtersEnabled()) {
3726 mess = i18n("Filter selected: ")+filter->name(); 3726 mess = i18n("Filter selected: ")+filter->name();
3727 filter->setEnabled(true); 3727 filter->setEnabled(true);
3728 } 3728 }
3729 else filter->setEnabled(false); 3729 else filter->setEnabled(false);
3730 mCalendar->setFilter(filter); 3730 mCalendar->setFilter(filter);
3731 updateView(); 3731 updateView();
3732 if ( !mess.isEmpty() ) 3732 if ( !mess.isEmpty() )
3733 topLevelWidget()->setCaption( mess ); 3733 topLevelWidget()->setCaption( mess );
3734 3734
3735 } 3735 }
3736} 3736}
3737 3737
3738void CalendarView::filterEdited() 3738void CalendarView::filterEdited()
3739{ 3739{
3740 mFilterView->updateFilters(); 3740 mFilterView->updateFilters();
3741 updateFilter(); 3741 updateFilter();
3742 writeSettings(); 3742 writeSettings();
3743} 3743}
3744 3744
3745 3745
3746void CalendarView::takeOverEvent() 3746void CalendarView::takeOverEvent()
3747{ 3747{
3748 Incidence *incidence = currentSelection(); 3748 Incidence *incidence = currentSelection();
3749 3749
3750 if (!incidence) return; 3750 if (!incidence) return;
3751 3751
3752 incidence->setOrganizer(KOPrefs::instance()->email()); 3752 incidence->setOrganizer(KOPrefs::instance()->email());
3753 incidence->recreate(); 3753 incidence->recreate();
3754 incidence->setReadOnly(false); 3754 incidence->setReadOnly(false);
3755 3755
3756 updateView(); 3756 updateView();
3757} 3757}
3758 3758
3759void CalendarView::takeOverCalendar() 3759void CalendarView::takeOverCalendar()
3760{ 3760{
3761 // TODO: Create Calendar::allIncidences() function and use it here 3761 // TODO: Create Calendar::allIncidences() function and use it here
3762 3762
3763 QPtrList<Event> events = mCalendar->events(); 3763 QPtrList<Event> events = mCalendar->events();
3764 for(uint i=0; i<events.count(); ++i) { 3764 for(uint i=0; i<events.count(); ++i) {
3765 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3765 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3766 events.at(i)->recreate(); 3766 events.at(i)->recreate();
3767 events.at(i)->setReadOnly(false); 3767 events.at(i)->setReadOnly(false);
3768 } 3768 }
3769 3769
3770 QPtrList<Todo> todos = mCalendar->todos(); 3770 QPtrList<Todo> todos = mCalendar->todos();
3771 for(uint i=0; i<todos.count(); ++i) { 3771 for(uint i=0; i<todos.count(); ++i) {
3772 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3772 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3773 todos.at(i)->recreate(); 3773 todos.at(i)->recreate();
3774 todos.at(i)->setReadOnly(false); 3774 todos.at(i)->setReadOnly(false);
3775 } 3775 }
3776 3776
3777 QPtrList<Journal> journals = mCalendar->journals(); 3777 QPtrList<Journal> journals = mCalendar->journals();
3778 for(uint i=0; i<journals.count(); ++i) { 3778 for(uint i=0; i<journals.count(); ++i) {
3779 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3779 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3780 journals.at(i)->recreate(); 3780 journals.at(i)->recreate();
3781 journals.at(i)->setReadOnly(false); 3781 journals.at(i)->setReadOnly(false);
3782 } 3782 }
3783 3783
3784 updateView(); 3784 updateView();
3785} 3785}
3786 3786
3787void CalendarView::showIntro() 3787void CalendarView::showIntro()
3788{ 3788{
3789 kdDebug() << "To be implemented." << endl; 3789 kdDebug() << "To be implemented." << endl;
3790} 3790}
3791 3791
3792QWidgetStack *CalendarView::viewStack() 3792QWidgetStack *CalendarView::viewStack()
3793{ 3793{
3794 return mRightFrame; 3794 return mRightFrame;
3795} 3795}
3796 3796
3797QWidget *CalendarView::leftFrame() 3797QWidget *CalendarView::leftFrame()
3798{ 3798{
3799 return ( QWidget *)mLeftFrame; 3799 return ( QWidget *)mLeftFrame;
3800} 3800}
3801 3801
3802DateNavigator *CalendarView::dateNavigator() 3802DateNavigator *CalendarView::dateNavigator()
3803{ 3803{
3804 return mNavigator; 3804 return mNavigator;
3805} 3805}
3806 3806
3807KDateNavigator* CalendarView::dateNavigatorWidget() 3807KDateNavigator* CalendarView::dateNavigatorWidget()
3808{ 3808{
3809 return mDateNavigator->navigatorView(); 3809 return mDateNavigator->navigatorView();
3810} 3810}
3811void CalendarView::toggleDateNavigatorWidget() 3811void CalendarView::toggleDateNavigatorWidget()
3812{ 3812{
3813 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 3813 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
3814 3814
3815 if (!KOPrefs::instance()->mShowDateNavigator ) 3815 if (!KOPrefs::instance()->mShowDateNavigator )
3816 mDateNavigator->hide(); 3816 mDateNavigator->hide();
3817 else 3817 else
3818 mDateNavigator->show(); 3818 mDateNavigator->show();
3819} 3819}
3820void CalendarView::addView(KOrg::BaseView *view) 3820void CalendarView::addView(KOrg::BaseView *view)
3821{ 3821{
3822 mViewManager->addView(view); 3822 mViewManager->addView(view);
3823} 3823}
3824 3824
3825void CalendarView::showView(KOrg::BaseView *view) 3825void CalendarView::showView(KOrg::BaseView *view)
3826{ 3826{
3827 mViewManager->showView(view, mLeftFrame->isVisible()); 3827 mViewManager->showView(view, mLeftFrame->isVisible());
3828} 3828}
3829 3829
3830Incidence *CalendarView::currentSelection() 3830Incidence *CalendarView::currentSelection()
3831{ 3831{
3832 return mViewManager->currentSelection(); 3832 return mViewManager->currentSelection();
3833} 3833}
3834void CalendarView::toggleAllDaySize() 3834void CalendarView::toggleAllDaySize()
3835{ 3835{
3836 /* 3836 /*
3837 if ( KOPrefs::instance()->mAllDaySize > 47 ) 3837 if ( KOPrefs::instance()->mAllDaySize > 47 )
3838 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 3838 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
3839 else 3839 else
3840 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 3840 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
3841 */ 3841 */
3842 viewManager()->agendaView()->toggleAllDay(); 3842 viewManager()->agendaView()->toggleAllDay();
3843} 3843}
3844void CalendarView::toggleExpand() 3844void CalendarView::toggleExpand()
3845{ 3845{
3846 // if ( mLeftFrame->isHidden() ) { 3846 // if ( mLeftFrame->isHidden() ) {
3847 // mLeftFrame->show(); 3847 // mLeftFrame->show();
3848 // emit calendarViewExpanded( false ); 3848 // emit calendarViewExpanded( false );
3849 // } else { 3849 // } else {
3850 // mLeftFrame->hide(); 3850 // mLeftFrame->hide();
3851 // emit calendarViewExpanded( true ); 3851 // emit calendarViewExpanded( true );
3852 // } 3852 // }
3853 //qDebug(" CalendarView::toggleExpand()"); 3853 //qDebug(" CalendarView::toggleExpand()");
3854 globalFlagBlockAgenda = 1; 3854 globalFlagBlockAgenda = 1;
3855 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 3855 emit calendarViewExpanded( !mLeftFrame->isHidden() );
3856 globalFlagBlockAgenda = 5; 3856 globalFlagBlockAgenda = 5;
3857 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 3857 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
3858 //mViewManager->showView( 0, true ); 3858 //mViewManager->showView( 0, true );
3859} 3859}
3860 3860
3861void CalendarView::calendarModified( bool modified, Calendar * ) 3861void CalendarView::calendarModified( bool modified, Calendar * )
3862{ 3862{
3863 setModified( modified ); 3863 setModified( modified );
3864} 3864}
3865 3865
3866Todo *CalendarView::selectedTodo() 3866Todo *CalendarView::selectedTodo()
3867{ 3867{
3868 Incidence *incidence = currentSelection(); 3868 Incidence *incidence = currentSelection();
3869 if ( incidence && incidence->type() == "Todo" ) { 3869 if ( incidence && incidence->type() == "Todo" ) {
3870 return static_cast<Todo *>( incidence ); 3870 return static_cast<Todo *>( incidence );
3871 } 3871 }
3872 3872
3873 incidence = mTodoList->selectedIncidences().first(); 3873 incidence = mTodoList->selectedIncidences().first();
3874 if ( incidence && incidence->type() == "Todo" ) { 3874 if ( incidence && incidence->type() == "Todo" ) {
3875 return static_cast<Todo *>( incidence ); 3875 return static_cast<Todo *>( incidence );
3876 } 3876 }
3877 3877
3878 return 0; 3878 return 0;
3879} 3879}
3880 3880
3881void CalendarView::dialogClosing(Incidence *in) 3881void CalendarView::dialogClosing(Incidence *in)
3882{ 3882{
3883 // mDialogList.remove(in); 3883 // mDialogList.remove(in);
3884} 3884}
3885 3885
3886void CalendarView::showIncidence() 3886void CalendarView::showIncidence()
3887{ 3887{
3888 mViewerCallerIsSearchDialog = false; 3888 mViewerCallerIsSearchDialog = false;
3889 Incidence *incidence = currentSelection(); 3889 Incidence *incidence = currentSelection();
3890 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3890 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3891 if ( incidence ) { 3891 if ( incidence ) {
3892 ShowIncidenceVisitor v; 3892 ShowIncidenceVisitor v;
3893 v.act( incidence, this ); 3893 v.act( incidence, this );
3894 } 3894 }
3895} 3895}
3896void CalendarView::editIncidenceDescription() 3896void CalendarView::editIncidenceDescription()
3897{ 3897{
3898 mFlagEditDescription = true; 3898 mFlagEditDescription = true;
3899 editIncidence(); 3899 editIncidence();
3900 mFlagEditDescription = false; 3900 mFlagEditDescription = false;
3901} 3901}
3902void CalendarView::editIncidence() 3902void CalendarView::editIncidence()
3903{ 3903{
3904 // qDebug("editIncidence() "); 3904 // qDebug("editIncidence() ");
3905 Incidence *incidence = currentSelection(); 3905 Incidence *incidence = currentSelection();
3906 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3906 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3907 if ( incidence ) { 3907 if ( incidence ) {
3908 EditIncidenceVisitor v; 3908 EditIncidenceVisitor v;
3909 v.act( incidence, this ); 3909 v.act( incidence, this );
3910 } 3910 }
3911} 3911}
3912 3912
3913void CalendarView::deleteIncidence() 3913void CalendarView::deleteIncidence()
3914{ 3914{
3915 Incidence *incidence = currentSelection(); 3915 Incidence *incidence = currentSelection();
3916 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3916 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3917 if ( incidence ) { 3917 if ( incidence ) {
3918 deleteIncidence(incidence); 3918 deleteIncidence(incidence);
3919 } 3919 }
3920} 3920}
3921 3921
3922void CalendarView::showIncidence(Incidence *incidence) 3922void CalendarView::showIncidence(Incidence *incidence)
3923{ 3923{
3924 mViewerCallerIsSearchDialog = false; 3924 mViewerCallerIsSearchDialog = false;
3925 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 3925 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
3926 if ( sender() && mDialogManager->getSearchDialog() ) { 3926 if ( sender() && mDialogManager->getSearchDialog() ) {
3927 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 3927 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
3928 mViewerCallerIsSearchDialog = true; 3928 mViewerCallerIsSearchDialog = true;
3929 } 3929 }
3930 } 3930 }
3931 if ( incidence ) { 3931 if ( incidence ) {
3932 ShowIncidenceVisitor v; 3932 ShowIncidenceVisitor v;
3933 v.act( incidence, this ); 3933 v.act( incidence, this );
3934 } 3934 }
3935} 3935}
3936 3936
3937void CalendarView::editIncidence(Incidence *incidence) 3937void CalendarView::editIncidence(Incidence *incidence)
3938{ 3938{
3939 if ( incidence ) { 3939 if ( incidence ) {
3940 3940
3941 EditIncidenceVisitor v; 3941 EditIncidenceVisitor v;
3942 v.act( incidence, this ); 3942 v.act( incidence, this );
3943 3943
3944 } 3944 }
3945} 3945}
3946 3946
3947void CalendarView::deleteIncidence(Incidence *incidence) 3947void CalendarView::deleteIncidence(Incidence *incidence)
3948{ 3948{
3949 //qDebug(" CalendarView::deleteIncidence "); 3949 //qDebug(" CalendarView::deleteIncidence ");
3950 if ( incidence ) { 3950 if ( incidence ) {
3951 DeleteIncidenceVisitor v; 3951 DeleteIncidenceVisitor v;
3952 v.act( incidence, this ); 3952 v.act( incidence, this );
3953 } 3953 }
3954} 3954}
3955 3955
3956 3956
3957void CalendarView::lookForOutgoingMessages() 3957void CalendarView::lookForOutgoingMessages()
3958{ 3958{
3959 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3959 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3960 ogd->loadMessages(); 3960 ogd->loadMessages();
3961} 3961}
3962 3962
3963void CalendarView::lookForIncomingMessages() 3963void CalendarView::lookForIncomingMessages()
3964{ 3964{
3965 IncomingDialog *icd = mDialogManager->incomingDialog(); 3965 IncomingDialog *icd = mDialogManager->incomingDialog();
3966 icd->retrieve(); 3966 icd->retrieve();
3967} 3967}
3968 3968
3969bool CalendarView::removeCompletedSubTodos( Todo* t ) 3969bool CalendarView::removeCompletedSubTodos( Todo* t )
3970{ 3970{
3971 bool deleteTodo = true; 3971 bool deleteTodo = true;
3972 QPtrList<Incidence> subTodos; 3972 QPtrList<Incidence> subTodos;
3973 Incidence *aTodo; 3973 Incidence *aTodo;
3974 subTodos = t->relations(); 3974 subTodos = t->relations();
3975 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3975 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3976 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3976 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3977 deleteTodo = false; 3977 deleteTodo = false;
3978 } 3978 }
3979 if ( deleteTodo ) { 3979 if ( deleteTodo ) {
3980 if ( t->isCompleted() && !t->doesRecur()) { 3980 if ( t->isCompleted() && !t->doesRecur()) {
3981 checkExternalId( t ); 3981 checkExternalId( t );
3982 mCalendar->deleteTodo( t ); 3982 mCalendar->deleteTodo( t );
3983 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3983 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3984 } 3984 }
3985 else 3985 else
3986 deleteTodo = false; 3986 deleteTodo = false;
3987 } 3987 }
3988 return deleteTodo; 3988 return deleteTodo;
3989 3989
3990} 3990}
3991void CalendarView::purgeCompleted() 3991void CalendarView::purgeCompleted()
3992{ 3992{
3993 int result = KMessageBox::warningContinueCancel(this, 3993 int result = KMessageBox::warningContinueCancel(this,
3994 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3994 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
3995 3995
3996 if (result == KMessageBox::Continue) { 3996 if (result == KMessageBox::Continue) {
3997 3997
3998 QPtrList<Todo> todoCal; 3998 QPtrList<Todo> todoCal;
3999 QPtrList<Todo> rootTodos; 3999 QPtrList<Todo> rootTodos;
4000 //QPtrList<Incidence> rel; 4000 //QPtrList<Incidence> rel;
4001 Todo *aTodo;//, *rTodo; 4001 Todo *aTodo;//, *rTodo;
4002 Incidence *rIncidence; 4002 Incidence *rIncidence;
4003 bool childDelete = false; 4003 bool childDelete = false;
4004 bool deletedOne = true; 4004 bool deletedOne = true;
4005 todoCal = calendar()->todos(); 4005 todoCal = calendar()->todos();
4006 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 4006 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
4007 if ( !aTodo->relatedTo() ) 4007 if ( !aTodo->relatedTo() )
4008 rootTodos.append( aTodo ); 4008 rootTodos.append( aTodo );
4009 } 4009 }
4010 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 4010 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
4011 removeCompletedSubTodos( aTodo ); 4011 removeCompletedSubTodos( aTodo );
4012 } 4012 }
4013 4013
4014 updateView(); 4014 updateView();
4015 } 4015 }
4016} 4016}
4017 4017
4018void CalendarView::slotCalendarChanged() 4018void CalendarView::slotCalendarChanged()
4019{ 4019{
4020 ; 4020 ;
4021} 4021}
4022 4022
4023void CalendarView::keyPressEvent ( QKeyEvent *e) 4023void CalendarView::keyPressEvent ( QKeyEvent *e)
4024{ 4024{
4025 //qDebug(" alendarView::keyPressEvent "); 4025 //qDebug(" alendarView::keyPressEvent ");
4026 e->ignore(); 4026 e->ignore();
4027} 4027}
4028 4028
4029 4029
4030bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 4030bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
4031{ 4031{
4032 // mSyncManager = manager; 4032 // mSyncManager = manager;
4033 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 4033 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
4034 qDebug("KO: SyncKDE request detected!"); 4034 qDebug("KO: SyncKDE request detected!");
4035 } 4035 }
4036 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4036 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4037 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4037 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4038 return syncCalendar( filename, mode ); 4038 return syncCalendar( filename, mode );
4039} 4039}
4040bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4040bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4041{ 4041{
4042 //mSyncManager = manager; 4042 //mSyncManager = manager;
4043 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4043 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4044 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4044 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4045 if ( resource == "sharp" ) 4045 if ( resource == "sharp" )
4046 syncExternal( 0 ); 4046 syncExternal( 0 );
4047 if ( resource == "phone" ) 4047 if ( resource == "phone" )
4048 syncExternal( 1 ); 4048 syncExternal( 1 );
4049 // pending setmodified 4049 // pending setmodified
4050 return true; 4050 return true;
4051} 4051}
4052void CalendarView::setSyncManager(KSyncManager* manager) 4052void CalendarView::setSyncManager(KSyncManager* manager)
4053{ 4053{
4054 mSyncManager = manager; 4054 mSyncManager = manager;
4055} 4055}
4056 4056
4057void CalendarView::removeSyncInfo( QString syncProfile) 4057void CalendarView::removeSyncInfo( QString syncProfile)
4058{ 4058{
4059 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4059 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4060 mCalendar->removeSyncInfo( syncProfile ); 4060 mCalendar->removeSyncInfo( syncProfile );
4061 4061
4062} 4062}
4063 4063
4064void CalendarView::undo_delete() 4064void CalendarView::undo_delete()
4065{ 4065{
4066 //qDebug("undo_delete() "); 4066 //qDebug("undo_delete() ");
4067 Incidence* undo = mCalendar->undoIncidence(); 4067 Incidence* undo = mCalendar->undoIncidence();
4068 if ( !undo ) { 4068 if ( !undo ) {
4069 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4069 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4070 i18n("KO/Pi")); 4070 i18n("KO/Pi"));
4071 return; 4071 return;
4072 } 4072 }
4073 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4073 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) +
4074 i18n("\nAre you sure you want\nto restore this?"), 4074 i18n("\nAre you sure you want\nto restore this?"),
4075 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4075 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4076 mCalendar->undoDeleteIncidence(); 4076 mCalendar->undoDeleteIncidence();
4077 updateView(); 4077 updateView();
4078 } 4078 }
4079} 4079}
4080 4080
4081void CalendarView::slotViewerClosed() 4081void CalendarView::slotViewerClosed()
4082{ 4082{
4083 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4083 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4084} 4084}
4085 4085
4086void CalendarView::resetFocus() 4086void CalendarView::resetFocus()
4087{ 4087{
4088 if ( mViewerCallerIsSearchDialog ) { 4088 if ( mViewerCallerIsSearchDialog ) {
4089 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4089 if ( mDialogManager->getSearchDialog()->isVisible() ){
4090 mDialogManager->getSearchDialog()->raise(); 4090 mDialogManager->getSearchDialog()->raise();
4091 mDialogManager->getSearchDialog()->setActiveWindow(); 4091 mDialogManager->getSearchDialog()->setActiveWindow();
4092 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4092 mDialogManager->getSearchDialog()->listview()->resetFocus();
4093 } else 4093 } else
4094 mViewerCallerIsSearchDialog = false; 4094 mViewerCallerIsSearchDialog = false;
4095 } 4095 }
4096 if ( !mViewerCallerIsSearchDialog ) { 4096 if ( !mViewerCallerIsSearchDialog ) {
4097 //mViewManager->currentView()->setFocus(); 4097 //mViewManager->currentView()->setFocus();
4098 //qDebug("sssssssssssssssset focus "); 4098 //qDebug("sssssssssssssssset focus ");
4099 topLevelWidget()->raise(); 4099 topLevelWidget()->raise();
4100 setActiveWindow(); 4100 setActiveWindow();
4101 //setFocus(); 4101 //setFocus();
4102 } 4102 }
4103 mViewerCallerIsSearchDialog = false; 4103 mViewerCallerIsSearchDialog = false;
4104} 4104}
4105 4105
4106void CalendarView::showNextAlarms() 4106void CalendarView::showNextAlarms()
4107{ 4107{
4108 QString message; 4108 QString message;
4109 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 4109 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4110 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 4110 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4111 QString sum = mCalendar->nextSummary(); 4111 QString sum = mCalendar->nextSummary();
4112 QDateTime nextA = mNextAlarmDateTime; 4112 QDateTime nextA = mNextAlarmDateTime;
4113 QDateTime cur = QDateTime::currentDateTime(); 4113 QDateTime cur = QDateTime::currentDateTime();
4114 int secs = cur.secsTo( nextA ); 4114 int secs = cur.secsTo( nextA );
4115 int min = secs /60; 4115 int min = secs /60;
4116 int hours = min /60; 4116 int hours = min /60;
4117 min = min % 60; 4117 min = min % 60;
4118 int days = hours /24; 4118 int days = hours /24;
4119 hours = hours % 24; 4119 hours = hours % 24;
4120 4120
4121 //message = i18n("The next alarm is in:\n"); 4121 //message = i18n("The next alarm is in:\n");
4122 if ( days > 1 ) 4122 if ( days > 1 )
4123 message += i18n("%1 days\n").arg( days ); 4123 message += i18n("%1 days\n").arg( days );
4124 else if ( days == 1 ) 4124 else if ( days == 1 )
4125 message += i18n("1 day\n"); 4125 message += i18n("1 day\n");
4126 if ( hours > 1 ) 4126 if ( hours > 1 )
4127 message += i18n("%1 hours\n").arg( hours ); 4127 message += i18n("%1 hours\n").arg( hours );
4128 else if ( hours == 1 ) 4128 else if ( hours == 1 )
4129 message += i18n("1 hour\n"); 4129 message += i18n("1 hour\n");
4130 if ( min > 1 ) 4130 if ( min > 1 )
4131 message += i18n("%1 minutes\n").arg( min ); 4131 message += i18n("%1 minutes\n").arg( min );
4132 else if ( min == 1 ) 4132 else if ( min == 1 )
4133 message += i18n("1 minute\n"); 4133 message += i18n("1 minute\n");
4134 if ( message.isEmpty() ) 4134 if ( message.isEmpty() )
4135 message = i18n("The next alarm is in\nless than one minute!"); 4135 message = i18n("The next alarm is in\nless than one minute!");
4136 else 4136 else
4137 message = i18n("The next alarm is in:\n") + message; 4137 message = i18n("The next alarm is in:\n") + message;
4138 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 4138 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4139 } else { 4139 } else {
4140 message = i18n("There is no next alarm."); 4140 message = i18n("There is no next alarm.");
4141 4141
4142 } 4142 }
4143#ifdef DESKTOP_VERSION 4143#ifdef DESKTOP_VERSION
4144 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 4144 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
4145 message += i18n("\nThe internal alarm notification is disabled!\n"); 4145 message += i18n("\nThe internal alarm notification is disabled!\n");
4146 message += i18n("Enable it in the settings menu, TAB alarm."); 4146 message += i18n("Enable it in the settings menu, TAB alarm.");
4147 } 4147 }
4148 4148
4149#endif 4149#endif
4150 KMessageBox::information( this, message); 4150 KMessageBox::information( this, message);
4151} 4151}