summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt8
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt3
-rw-r--r--korganizer/calendarview.cpp2
-rw-r--r--korganizer/kofilterview.h1
-rw-r--r--korganizer/komonthview.cpp8
-rw-r--r--korganizer/komonthview.h3
-rw-r--r--korganizer/mainwindow.cpp9
7 files changed, 25 insertions, 9 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 352ab63..30bb856 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,185 +1,193 @@
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.1.12 ************
4
5KO/Pi:
6Many small usability fixes, e.g. rearranged the popup menus such that they are better to use on the Zaurus.
7Fixed a problem with the month view when file was saved but KO/Pi was not the active window.
8Fixed some problems in the resource config dialog (e.g. added a warning if you set all calendars to read-only).
9Fixed some other small problems.
10
3********** VERSION 2.1.11 ************ 11********** VERSION 2.1.11 ************
4 12
5KO/Pi: 13KO/Pi:
6Because we can have many calendars now in KO/Pi we can have more than one journal entry per day. 14Because we can have many calendars now in KO/Pi we can have more than one journal entry per day.
7Added features to handle (and add ) more than one journal entry per day. 15Added features to handle (and add ) more than one journal entry per day.
8Added option for a journal title. 16Added option for a journal title.
9 17
10Added info about the calendar, the item belongs to, to the event/todo/journal viewer. 18Added info about the calendar, the item belongs to, to the event/todo/journal viewer.
11Fixed a problem of the alarm of completed recurring todos. 19Fixed a problem of the alarm of completed recurring todos.
12Added to the event/todo editor to set quickly the category of an item. 20Added to the event/todo editor to set quickly the category of an item.
13 21
14 22
15Fixed some problems when calling KO/Pi or KA/Pi from the alarm applet. 23Fixed some problems when calling KO/Pi or KA/Pi from the alarm applet.
16 24
17Added KA/Pi multi sync to the multi sync called from the alarm applet. 25Added KA/Pi multi sync to the multi sync called from the alarm applet.
18 26
19********** VERSION 2.1.10 ************ 27********** VERSION 2.1.10 ************
20 28
21KO/Pi: 29KO/Pi:
22Importing Birthdays will now create another file resource "Birthdays" and import the birthday data from KA/Pi into that file. 30Importing Birthdays will now create another file resource "Birthdays" and import the birthday data from KA/Pi into that file.
23When a multidayevent is selected in monthview all occurences of this event in the monthview are now hightlighted. 31When a multidayevent is selected in monthview all occurences of this event in the monthview are now hightlighted.
24Fixed a bug in searching for a small timerange, i.e. one day. 32Fixed a bug in searching for a small timerange, i.e. one day.
25 33
26KA/Pi: 34KA/Pi:
27Fixed two problems in csv export. 35Fixed two problems in csv export.
28Fixed problems when calling the contact selection dialog from KO/Pi or OM/Pi. 36Fixed problems when calling the contact selection dialog from KO/Pi or OM/Pi.
29 37
30********** VERSION 2.1.9 ************ 38********** VERSION 2.1.9 ************
31 39
32KO/Pi: 40KO/Pi:
33Fixed some problems of the new search options in the search dialog. 41Fixed some problems of the new search options in the search dialog.
34Fixed some problems in the new resource config options. 42Fixed some problems in the new resource config options.
35Changed the recurrence edit of events and todos such that the recurrence edit page now is notified about a change of the start date on the first page. 43Changed the recurrence edit of events and todos such that the recurrence edit page now is notified about a change of the start date on the first page.
36Fixed a problem creating new events in the agenda view if at the day/time is already an agenda item shown: 44Fixed a problem creating new events in the agenda view if at the day/time is already an agenda item shown:
37Now you can click on the bottom/top of an allday agenda item or on the left/right side of an agenda item to get the "new todo/new event" popup. 45Now you can click on the bottom/top of an allday agenda item or on the left/right side of an agenda item to get the "new todo/new event" popup.
38 46
39Fixed a problem in recurrence range in syncing with DTM. 47Fixed a problem in recurrence range in syncing with DTM.
40 48
41KA/Pi: 49KA/Pi:
42Made it posiible to show in the contact overview the details of all data available for that contact( e.g. office, spouse, children, nickname ...) 50Made it posiible to show in the contact overview the details of all data available for that contact( e.g. office, spouse, children, nickname ...)
43 51
44PwM/Pi: 52PwM/Pi:
45Added "sec" to the timeout config settings to make it clear the timeout values are seconds. 53Added "sec" to the timeout config settings to make it clear the timeout values are seconds.
46 54
47********** VERSION 2.1.8 ************ 55********** VERSION 2.1.8 ************
48 56
49KO/Pi: 57KO/Pi:
50Added info about the completion state of a todo in the ListView/Searchdialog. 58Added info about the completion state of a todo in the ListView/Searchdialog.
51If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well. 59If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well.
52Fixed some updating problems when changing the filter. 60Fixed some updating problems when changing the filter.
53 61
54KA/Pi: 62KA/Pi:
55In the addressee selection dialog now the formatted name is shown, if not empty. 63In the addressee selection dialog now the formatted name is shown, if not empty.
56Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category. 64Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category.
57Now in the addressee selection dialog a selected contact is remove with a single click from the selected list. 65Now in the addressee selection dialog a selected contact is remove with a single click from the selected list.
58 66
59Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored. 67Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored.
60Fixed the sorting for size in the file selector on the Z. 68Fixed the sorting for size in the file selector on the Z.
61 69
62Changed the color selection dialog on the Zaurus to a more user friendly version. 70Changed the color selection dialog on the Zaurus to a more user friendly version.
63 71
64********** VERSION 2.1.7 ************ 72********** VERSION 2.1.7 ************
65 73
66KO/Pi: 74KO/Pi:
67Fixed several problems in the new Resource handling. 75Fixed several problems in the new Resource handling.
68Added more options to the search dialog. 76Added more options to the search dialog.
69Fixed a problem in the Month view. 77Fixed a problem in the Month view.
70Added more options to the dialog when setting a todo to stopped. 78Added more options to the dialog when setting a todo to stopped.
71 79
72Fixed two small problems in KO/Pi Alarm applet. 80Fixed two small problems in KO/Pi Alarm applet.
73 81
74********** VERSION 2.1.6 ************ 82********** VERSION 2.1.6 ************
75 83
76This release is for testing only. 84This release is for testing only.
77 85
78KO/Pi: 86KO/Pi:
79Added to the list view (the list view is used in search dialog as well) the possibility to print it. 87Added to the list view (the list view is used in search dialog as well) the possibility to print it.
80Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view. 88Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view.
81Added to the list view the possibility to add all subtodos of selected todos to an export/beam. 89Added to the list view the possibility to add all subtodos of selected todos to an export/beam.
82Added to the search dialog the possibility to make an additive search such that you can get a better list for export/printout. 90Added to the search dialog the possibility to make an additive search such that you can get a better list for export/printout.
83Added to the search dialog the possibility to hide the checkboxes such that there is more space for the list view on the Zaurus. 91Added to the search dialog the possibility to hide the checkboxes such that there is more space for the list view on the Zaurus.
84Fixed a problem in the AlarmTimer Applet: Now utf8 messages are displayed properly. 92Fixed a problem in the AlarmTimer Applet: Now utf8 messages are displayed properly.
85 93
86Added support for multiple calendar files in KO/Pi. Only local ical (*.ics) files are supported as calendars. 94Added support for multiple calendar files in KO/Pi. Only local ical (*.ics) files are supported as calendars.
87In the sync profile config it is still missing to specify a particular calendar to sync with this profile. That setting will be added later. 95In the sync profile config it is still missing to specify a particular calendar to sync with this profile. That setting will be added later.
88Now on every sync the set of calendars is synced which are enabled in the resource view. 96Now on every sync the set of calendars is synced which are enabled in the resource view.
89 97
90A calendar is enabled in the resource view if the "eye" column is checked. 98A calendar is enabled in the resource view if the "eye" column is checked.
91You can set a calendar to be the default for new items( "+" column ). 99You can set a calendar to be the default for new items( "+" column ).
92You can tell KO/Pi to ignore all alarm of a calendar ( "bell" column ) and you can set it readonly. 100You can tell KO/Pi to ignore all alarm of a calendar ( "bell" column ) and you can set it readonly.
93To find out how to add a new calendar and how to remove a calendar is left as an exercise to the reader ... 101To find out how to add a new calendar and how to remove a calendar is left as an exercise to the reader ...
94 102
95 103
96********** VERSION 2.1.5 ************ 104********** VERSION 2.1.5 ************
97 105
98This is the new stable version. 106This is the new stable version.
99Bugfix: 107Bugfix:
100Fixed a problem with agenda popup on the desktop in KO/Pi. 108Fixed a problem with agenda popup on the desktop in KO/Pi.
101Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization. 109Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization.
102Added config option to not display completed todos in agenda view. 110Added config option to not display completed todos in agenda view.
103Addressee view is now using the formatted name, if defined. 111Addressee view is now using the formatted name, if defined.
104That makes it possible to display "lastname, firstname" in that view now. 112That makes it possible to display "lastname, firstname" in that view now.
105To set the formatted name for all contacts, please use menu: 113To set the formatted name for all contacts, please use menu:
106Edit->Change->Set formatted name. 114Edit->Change->Set formatted name.
107Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows. 115Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows.
108 116
109********** VERSION 2.1.4 ************ 117********** VERSION 2.1.4 ************
110 118
111Fixed two more bugs in the KA/Pi CSV import dialog: 119Fixed two more bugs in the KA/Pi CSV import dialog:
112Made it possible to read multi-line fields and import it to the "Note" field. 120Made it possible to read multi-line fields and import it to the "Note" field.
113Fixed a problem in mapping custom fields, whatever a custem field is... 121Fixed a problem in mapping custom fields, whatever a custem field is...
114 122
115********** VERSION 2.1.3 ************ 123********** VERSION 2.1.3 ************
116 124
117Changed the menu structure of the alarm applet: 125Changed the menu structure of the alarm applet:
118Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List". 126Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List".
119 127
120Fixed several problems in the KA/Pi CSV import dialog: 128Fixed several problems in the KA/Pi CSV import dialog:
121Added "Category", made codec configureable and made it possible to map many fields to the "Note" field. 129Added "Category", made codec configureable and made it possible to map many fields to the "Note" field.
122 130
123 131
124********** VERSION 2.1.2 ************ 132********** VERSION 2.1.2 ************
125 133
126Fixed a problem closing the alarm dialog on Zaurus with "OK" button. 134Fixed a problem closing the alarm dialog on Zaurus with "OK" button.
127 135
128Fixed a problem when importing data from Outlook with mutiple categories set. 136Fixed a problem when importing data from Outlook with mutiple categories set.
129 137
130Changed display of days in datenavigator: 138Changed display of days in datenavigator:
131Birthdays are now blue, not dark green. 139Birthdays are now blue, not dark green.
132When todo view is shown, no birtdays are shown and days with due todos are shown blue. 140When todo view is shown, no birtdays are shown and days with due todos are shown blue.
133When journal view is shown, only holidays are shown and days with journals are blue. 141When journal view is shown, only holidays are shown and days with journals are blue.
134 142
135Added Backup options to global config: 143Added Backup options to global config:
136You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ). 144You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ).
137It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again. 145It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again.
138The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups. 146The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups.
139 147
140********** VERSION 2.1.1 ************ 148********** VERSION 2.1.1 ************
141 149
142Stable release 2.1.1! 150Stable release 2.1.1!
143 151
144KO/Pi: 152KO/Pi:
145Fixed one problem in the layout of the edit dialogs on the Zaurus with 640x480 display. 153Fixed one problem in the layout of the edit dialogs on the Zaurus with 640x480 display.
146 154
147********** VERSION 2.1.0 ************ 155********** VERSION 2.1.0 ************
148 156
149Stable release 2.1.0! 157Stable release 2.1.0!
150 158
151Summary of changes/fixes compared to version 2.0.6: 159Summary of changes/fixes compared to version 2.0.6:
152 160
153Many bugs of version 2.0.6 fixed. 161Many bugs of version 2.0.6 fixed.
154Most of them were small bugs, but some of them were important. 162Most of them were small bugs, but some of them were important.
155It is recommended to use version 2.1.0 and not version 2.0.6. 163It is recommended to use version 2.1.0 and not version 2.0.6.
156 164
157Important changes: 165Important changes:
158 166
159Added recurring todos to KO/Pi. 167Added recurring todos to KO/Pi.
160 168
161Added global application font settings (for all KDE-Pim/Pi apps) to the general settings. 169Added global application font settings (for all KDE-Pim/Pi apps) to the general settings.
162 170
163Made Passwordmanager PwM/Pi more userfriendly: Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 171Made Passwordmanager PwM/Pi more userfriendly: Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
164 172
165Datenavigator can now display many months. Very useful on the desktop. 173Datenavigator can now display many months. Very useful on the desktop.
166 174
167KO/Pi alarm applet changed: Made buttons in alarm dialog much bigger and other usebility enhancements. 175KO/Pi alarm applet changed: Made buttons in alarm dialog much bigger and other usebility enhancements.
168 176
169Made alarm sound working on Linux desktop. 177Made alarm sound working on Linux desktop.
170 178
171Made KO/Pi and KA/Pi running from a memory stick. Please read storage HowTo for details. 179Made KO/Pi and KA/Pi running from a memory stick. Please read storage HowTo for details.
172 180
173Added timetracking feature in KO/Pi todo view. Please read timetraker HowTo for details. 181Added timetracking feature in KO/Pi todo view. Please read timetraker HowTo for details.
174 182
175Many other usebility enhancements. 183Many other usebility enhancements.
176Special thanks to Ben for his suggestions! 184Special thanks to Ben for his suggestions!
177 185
178You can find the complete changelog 186You can find the complete changelog
179from version 1.7.7 to 2.1.0 187from version 1.7.7 to 2.1.0
180in the source package or on 188in the source package or on
181 189
182http://www.pi-sync.net/html/changelog.html 190http://www.pi-sync.net/html/changelog.html
183 191
184 192
185 193
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index 9c22730..5fece5b 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -556,385 +556,384 @@
556{ "French","Französich" }, 556{ "French","Französich" },
557{ "Time","Zeit" }, 557{ "Time","Zeit" },
558{ "Event Viewer","Termin Ansicht" }, 558{ "Event Viewer","Termin Ansicht" },
559{ "Cancel Sync","Sync Abbrechen" }, 559{ "Cancel Sync","Sync Abbrechen" },
560{ "Remote","Fern" }, 560{ "Remote","Fern" },
561{ "Local","Lokal" }, 561{ "Local","Lokal" },
562{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" }, 562{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" },
563{ "Local: ","Lokal: " }, 563{ "Local: ","Lokal: " },
564{ "Remote: ","Fern: " }, 564{ "Remote: ","Fern: " },
565{ "Last modified: ","Zuletzt geändert: " }, 565{ "Last modified: ","Zuletzt geändert: " },
566{ "Location: ","Ort: " }, 566{ "Location: ","Ort: " },
567{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" }, 567{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" },
568{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" }, 568{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" },
569{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " }, 569{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " },
570{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" }, 570{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" },
571{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " }, 571{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " },
572{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" }, 572{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" },
573{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." }, 573{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." },
574{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" }, 574{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" },
575{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" }, 575{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" },
576{ "( %1 min before )","( %1 min vorher )" }, 576{ "( %1 min before )","( %1 min vorher )" },
577{ "<b>Alarm on: ","<b>Alarm am: " }, 577{ "<b>Alarm on: ","<b>Alarm am: " },
578{ "<b>Details: </b>","<b>Details: </b>" }, 578{ "<b>Details: </b>","<b>Details: </b>" },
579{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 579{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
580{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" }, 580{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" },
581{ "Organizer","Organisator" }, 581{ "Organizer","Organisator" },
582{ "Save","Speichern" }, 582{ "Save","Speichern" },
583{ "Exit (+save)","Beenden(+speichern)" }, 583{ "Exit (+save)","Beenden(+speichern)" },
584{ "Home","Zuhause" }, 584{ "Home","Zuhause" },
585{ "Office","Büro" }, 585{ "Office","Büro" },
586{ "Library","Bibliothek" }, 586{ "Library","Bibliothek" },
587{ "Doctor","Arzt" }, 587{ "Doctor","Arzt" },
588{ "Beach","Strand" }, 588{ "Beach","Strand" },
589{ "Conference room","Konferenzraum" }, 589{ "Conference room","Konferenzraum" },
590{ "Drive Home","Heimfahrt" }, 590{ "Drive Home","Heimfahrt" },
591{ "Watch TV","Tv gucken" }, 591{ "Watch TV","Tv gucken" },
592{ "Phone call","Telefonanruf" }, 592{ "Phone call","Telefonanruf" },
593{ "Pay bill","Rechnung bezahlen" }, 593{ "Pay bill","Rechnung bezahlen" },
594{ "Read book","Buch lesen" }, 594{ "Read book","Buch lesen" },
595{ "Watering plants","Pflanzen giessen" }, 595{ "Watering plants","Pflanzen giessen" },
596{"Appointment","Verabredung" }, 596{"Appointment","Verabredung" },
597{"Birthday","Geburtstag" }, 597{"Birthday","Geburtstag" },
598{"Business","Geschäft" }, 598{"Business","Geschäft" },
599{"Business Travel","Geschäftsreise" }, 599{"Business Travel","Geschäftsreise" },
600{"Cinema","Kino" }, 600{"Cinema","Kino" },
601{"Customer","Kunde" }, 601{"Customer","Kunde" },
602{"Break","Pause" }, 602{"Break","Pause" },
603{"Breakfast","Frühstück" }, 603{"Breakfast","Frühstück" },
604{"Competition","Wettkampf" }, 604{"Competition","Wettkampf" },
605{"Dinner","Abendessen" }, 605{"Dinner","Abendessen" },
606{"Education","Erziehung" }, 606{"Education","Erziehung" },
607{"Family","Familie" }, 607{"Family","Familie" },
608{"Favorites","Favoriten" }, 608{"Favorites","Favoriten" },
609{"Festival","Festival" }, 609{"Festival","Festival" },
610{"Fishing","Angeln" }, 610{"Fishing","Angeln" },
611{"Flight","Flug" }, 611{"Flight","Flug" },
612{"Gifts","Geschenk" }, 612{"Gifts","Geschenk" },
613{"Holiday","Feiertag" }, 613{"Holiday","Feiertag" },
614{"Holiday Cards","Ansichtskarten" }, 614{"Holiday Cards","Ansichtskarten" },
615{"Hot Contacts","Heisse Kontakte" }, 615{"Hot Contacts","Heisse Kontakte" },
616{"Hiking","Wandern" }, 616{"Hiking","Wandern" },
617{"Hunting","Jagen" }, 617{"Hunting","Jagen" },
618{"Key Customer","Wichtiger Kunde" }, 618{"Key Customer","Wichtiger Kunde" },
619{"Kids","Kinder" }, 619{"Kids","Kinder" },
620{"Lunch","Mittagessen" }, 620{"Lunch","Mittagessen" },
621{"Meeting","Treffen" }, 621{"Meeting","Treffen" },
622{"Miscellaneous","Verschiedenes" }, 622{"Miscellaneous","Verschiedenes" },
623{"Partner","Partner" }, 623{"Partner","Partner" },
624{"Party","Partie" }, 624{"Party","Partie" },
625{"Personal","Privat" }, 625{"Personal","Privat" },
626{"Personal Travel","Privatreise"}, 626{"Personal Travel","Privatreise"},
627{"PHB","PHB" }, 627{"PHB","PHB" },
628{"Phone Calls","Telefonanruf" }, 628{"Phone Calls","Telefonanruf" },
629{"Projects","Projekt" }, 629{"Projects","Projekt" },
630{"Recurring","Wiederholend" }, 630{"Recurring","Wiederholend" },
631{"School","Schule" }, 631{"School","Schule" },
632{"Shopping","Einkaufen" }, 632{"Shopping","Einkaufen" },
633{"Speach","Rede" }, 633{"Speach","Rede" },
634{"Special Occasion","Spez.Gelegenheit" }, 634{"Special Occasion","Spez.Gelegenheit" },
635{"Sports","Sport" }, 635{"Sports","Sport" },
636{"Talk","Vortrag" }, 636{"Talk","Vortrag" },
637{"Travel","Reise" }, 637{"Travel","Reise" },
638{"TV","TV" }, 638{"TV","TV" },
639{"Germany","Deutschland" }, 639{"Germany","Deutschland" },
640{"Sweden","Schweden" }, 640{"Sweden","Schweden" },
641{"Forest","Wald" }, 641{"Forest","Wald" },
642{ "Desert","Wüste" }, 642{ "Desert","Wüste" },
643{ "Kitchen","Küche" }, 643{ "Kitchen","Küche" },
644{ "Lake","See" }, 644{ "Lake","See" },
645{"University","Universität"}, 645{"University","Universität"},
646{"Vacation","Urlaub" }, 646{"Vacation","Urlaub" },
647{"VIP","VIP" }, 647{"VIP","VIP" },
648{ "Import Sharp Calendar","Importiere Sharp Kalender" }, 648{ "Import Sharp Calendar","Importiere Sharp Kalender" },
649{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" }, 649{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" },
650{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" }, 650{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" },
651{ "Cancelled","Gecancelt" }, 651{ "Cancelled","Gecancelt" },
652{ "Multiple sync","Mehrfach Sync" }, 652{ "Multiple sync","Mehrfach Sync" },
653{ "Local file","Lokale Datei" }, 653{ "Local file","Lokale Datei" },
654{ "Last file","Letzte Datei" }, 654{ "Last file","Letzte Datei" },
655{ "Keys + Colors...","Tasten + Farben..." }, 655{ "Keys + Colors...","Tasten + Farben..." },
656{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" }, 656{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" },
657{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" }, 657{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" },
658{ "Choose...","Wähle..." }, 658{ "Choose...","Wähle..." },
659{ "Use colors for application:","Setze Farben für Programm:" }, 659{ "Use colors for application:","Setze Farben für Programm:" },
660{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" }, 660{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" },
661{ "Frames, labels, etc.:","Rahmen, Label, etc.:" }, 661{ "Frames, labels, etc.:","Rahmen, Label, etc.:" },
662{ "Show parent To-Do's","Zeige Ober-Todos" }, 662{ "Show parent To-Do's","Zeige Ober-Todos" },
663{ "Show location","Zeige Orte" }, 663{ "Show location","Zeige Orte" },
664{ "Show events that recur ","Zeige Termine, die sich wiederholen:" }, 664{ "Show events that recur ","Zeige Termine, die sich wiederholen:" },
665{ "Show in every cell ","Zeige in jeder Zelle " }, 665{ "Show in every cell ","Zeige in jeder Zelle " },
666{ "short month","kurzen Monat" }, 666{ "short month","kurzen Monat" },
667{ "icons","Icons" }, 667{ "icons","Icons" },
668{ "Show Sat/Sun together","Zeige Sam/Son zusammen" }, 668{ "Show Sat/Sun together","Zeige Sam/Son zusammen" },
669{ "Category colors are applied to text","Kategorie Farben färben Text" }, 669{ "Category colors are applied to text","Kategorie Farben färben Text" },
670{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" }, 670{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" },
671{ "Day color odd months","Tagesfarbe ungerade Monate" }, 671{ "Day color odd months","Tagesfarbe ungerade Monate" },
672{ "Day color even months","Tagesfarbe gerade Monate" }, 672{ "Day color even months","Tagesfarbe gerade Monate" },
673{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" }, 673{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" },
674{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" }, 674{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" },
675{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" }, 675{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" },
676{ "Colors are applied to text","Farben werden auf Text angewendet" }, 676{ "Colors are applied to text","Farben werden auf Text angewendet" },
677{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" }, 677{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" },
678{ "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" }, 678{ "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" },
679{ "Play beeps count:","Anzahl der Alarmpiepse: " }, 679{ "Play beeps count:","Anzahl der Alarmpiepse: " },
680{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " }, 680{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " },
681{ "Default suspend time in min:","Standard Supendierungs Zeit: " }, 681{ "Default suspend time in min:","Standard Supendierungs Zeit: " },
682{ "Auto suspend count:","Anzahl der auto Suspendierungen" }, 682{ "Auto suspend count:","Anzahl der auto Suspendierungen" },
683{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" }, 683{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" },
684{ "New profile","Neues Profil" }, 684{ "New profile","Neues Profil" },
685{ "Clone profile","Klone Profil" }, 685{ "Clone profile","Klone Profil" },
686{ "Delete profile","Lösche Profil" }, 686{ "Delete profile","Lösche Profil" },
687{ "Profile:","Profil:" }, 687{ "Profile:","Profil:" },
688{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" }, 688{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" },
689{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 689{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
690{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 690{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
691{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 691{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
692{ "Write back file","Schreibe Datei zurück" }, 692{ "Write back file","Schreibe Datei zurück" },
693{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 693{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
694{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 694{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
695{ "Local device name:","Name dieses Gerätes:" }, 695{ "Local device name:","Name dieses Gerätes:" },
696{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 696{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
697{ "Sync preferences","Synchronisations Einstellungen" }, 697{ "Sync preferences","Synchronisations Einstellungen" },
698{ "Profile kind","Profil Art" }, 698{ "Profile kind","Profil Art" },
699{ "Local file","Lokale Datei" }, 699{ "Local file","Lokale Datei" },
700{ "Local file:","Lokale Datei:" }, 700{ "Local file:","Lokale Datei:" },
701{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 701{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
702{ "Fill in default values for:","Setze Beispiel Werte ein für:" }, 702{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
703{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" }, 703{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
704{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"}, 704{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"},
705{ "Device","Gerät:" }, 705{ "Device","Gerät:" },
706{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" }, 706{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" },
707{ "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" }, 707{ "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" },
708{ "Synchronization successful","Synchronisation erfolgreich" }, 708{ "Synchronization successful","Synchronisation erfolgreich" },
709{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." }, 709{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." },
710{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" }, 710{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" },
711{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" }, 711{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" },
712{ "Enter password","Passwort eingeben" }, 712{ "Enter password","Passwort eingeben" },
713{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" }, 713{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" },
714{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." }, 714{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." },
715{ "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" }, 715{ "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" },
716{ "Writing back file result: ","Resultat des Dateizurückschreibens: " }, 716{ "Writing back file result: ","Resultat des Dateizurückschreibens: " },
717{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" }, 717{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" },
718{ "Edit Calendar Filters","Editiere Kalendar Filter" }, 718{ "Edit Calendar Filters","Editiere Kalendar Filter" },
719{ "Enter filter name:","Neuer Filter Name:" }, 719{ "Enter filter name:","Neuer Filter Name:" },
720{ "Add Filter","Filter hinzufügen" }, 720{ "Add Filter","Filter hinzufügen" },
721{ "Question","Frage" }, 721{ "Question","Frage" },
722{ "Filter position: ","Filter Position: " }, 722{ "Filter position: ","Filter Position: " },
723{ "Month View","Monatsansicht" }, 723{ "Month View","Monatsansicht" },
724{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" }, 724{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" },
725{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 725{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
726{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, 726{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
727{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" }, 727{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" },
728{ "Access: ","Zugriff: " }, 728{ "Access: ","Zugriff: " },
729{ "Needs Action","Aktion notwendig" }, 729{ "Needs Action","Aktion notwendig" },
730{ "Accepted","Akzeptiert" }, 730{ "Accepted","Akzeptiert" },
731{ "Declined","Abgelehnt" }, 731{ "Declined","Abgelehnt" },
732{ "Tentative","Vorläufig" }, 732{ "Tentative","Vorläufig" },
733{ "Delegated","Beauftragt" }, 733{ "Delegated","Beauftragt" },
734{ "Completed","Vollständig" }, 734{ "Completed","Vollständig" },
735{ "In Process","In Bearbeitung" }, 735{ "In Process","In Bearbeitung" },
736{ "Participant","Teilnehmer" }, 736{ "Participant","Teilnehmer" },
737{ "Optional Participant","Möglicher Teilnehmer" }, 737{ "Optional Participant","Möglicher Teilnehmer" },
738{ "Observer","Beobachter" }, 738{ "Observer","Beobachter" },
739{ "Chair","Vorsitzender" }, 739{ "Chair","Vorsitzender" },
740{ "Not supported \non desktop!\n","" }, 740{ "Not supported \non desktop!\n","" },
741{ "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) " }, 741{ "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) " },
742{ "Date range: ","Datums Zeitspanne: " }, 742{ "Date range: ","Datums Zeitspanne: " },
743{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " }, 743{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " },
744{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." }, 744{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." },
745{ "Add / remove events","Add./entferne Termine" }, 745{ "Add / remove events","Add./entferne Termine" },
746{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, 746{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." },
747{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, 747{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." },
748{ "\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" },
749{ "Overwrite","Überschreiben" }, 748{ "Overwrite","Überschreiben" },
750{ "Sync+save","Syncen+speichern" }, 749{ "Sync+save","Syncen+speichern" },
751{ "Default","Standard" }, 750{ "Default","Standard" },
752{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, 751{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " },
753{ " %d items?"," %d Einträge?" }, 752{ " %d items?"," %d Einträge?" },
754{ "\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?" }, 753{ "\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?" },
755{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, 754{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" },
756{ "Current","Aktuelle" }, 755{ "Current","Aktuelle" },
757{ "\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" }, 756{ "\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" },
758{ "All","Alle" }, 757{ "All","Alle" },
759{ "Data Loss Warning","Datenverlust Warnung" }, 758{ "Data Loss Warning","Datenverlust Warnung" },
760{ "Proceed","Weitermachen" }, 759{ "Proceed","Weitermachen" },
761{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, 760{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" },
762{ "Filter disabled ","Filter abgeschaltet" }, 761{ "Filter disabled ","Filter abgeschaltet" },
763{ "Filter selected: ","Gewählter Filter: " }, 762{ "Filter selected: ","Gewählter Filter: " },
764{ "Toggle Cancel","Gecancelt ändern" }, 763{ "Toggle Cancel","Gecancelt ändern" },
765{ "&Toggle Cancel","Gecancel&t ändern" }, 764{ "&Toggle Cancel","Gecancel&t ändern" },
766{ "Configure Toolbar","Konfiguriere Toolbar" }, 765{ "Configure Toolbar","Konfiguriere Toolbar" },
767{ "Stretched TB","Gedehnte TB" }, 766{ "Stretched TB","Gedehnte TB" },
768{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, 767{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" },
769{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, 768{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" },
770{ "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" }, 769{ "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" },
771{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, 770{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" },
772{ "Imported file successfully","Datei erfolgreich importiert" }, 771{ "Imported file successfully","Datei erfolgreich importiert" },
773{ "Error importing file","Fehler beim Importieren der Datei" }, 772{ "Error importing file","Fehler beim Importieren der Datei" },
774{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, 773{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" },
775{ "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" }, 774{ "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" },
776{ "Overwrite!","Überschreiben!" }, 775{ "Overwrite!","Überschreiben!" },
777{ "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" }, 776{ "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" },
778{ "Load backup filename","Lade Backup Dateiname" }, 777{ "Load backup filename","Lade Backup Dateiname" },
779{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, 778{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" },
780{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, 779{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" },
781{ "Save backup filename","Speichere Backup Dateiname" }, 780{ "Save backup filename","Speichere Backup Dateiname" },
782{ "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" }, 781{ "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" },
783{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 782{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
784{ "Details of attendee","Teilnehmerdetails" }, 783{ "Details of attendee","Teilnehmerdetails" },
785{ "Work phone:\n","Telefon Arbeit:\n" }, 784{ "Work phone:\n","Telefon Arbeit:\n" },
786{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, 785{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" },
787{ "Home phone:\n","Telefon privat:\n" }, 786{ "Home phone:\n","Telefon privat:\n" },
788{ "Mobile home phone:\n","Mobiltelefon privat:\n" }, 787{ "Mobile home phone:\n","Mobiltelefon privat:\n" },
789{ "Email:\n","Email:\n" }, 788{ "Email:\n","Email:\n" },
790{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, 789{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" },
791{ "Audio Al.: ","Audio Al.: " }, 790{ "Audio Al.: ","Audio Al.: " },
792{ "Proc.Al.: ","Proz.Al.: " }, 791{ "Proc.Al.: ","Proz.Al.: " },
793{ "No sound set","Kein Sound definiert" }, 792{ "No sound set","Kein Sound definiert" },
794{ "*.wav|Wav Files","*.wav|Wav Dateien" }, 793{ "*.wav|Wav Files","*.wav|Wav Dateien" },
795{ "No program set","Kein Programm definiert" }, 794{ "No program set","Kein Programm definiert" },
796{ "Running '%1'","Ausführen '%1'" }, 795{ "Running '%1'","Ausführen '%1'" },
797{ "Playing '%1'","Abspielen '%1'" }, 796{ "Playing '%1'","Abspielen '%1'" },
798{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, 797{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" },
799{ "Load!","Laden!" }, 798{ "Load!","Laden!" },
800{ "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" }, 799{ "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" },
801{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, 800{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" },
802{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, 801{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" },
803{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 802{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
804{ "Features + hints...","Eigenschaften + Tipps..." }, 803{ "Features + hints...","Eigenschaften + Tipps..." },
805{ "User translation...","Benutzer Übersetzung..." }, 804{ "User translation...","Benutzer Übersetzung..." },
806{ "Sync HowTo...","Synchronisation HowTo..." }, 805{ "Sync HowTo...","Synchronisation HowTo..." },
807{ "Print calendar...","Drucke Kalender..." }, 806{ "Print calendar...","Drucke Kalender..." },
808{ "Anniversary","Jahrestag" }, 807{ "Anniversary","Jahrestag" },
809{ "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" }, 808{ "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" },
810{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, 809{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" },
811{ "Next recurrence is on: ","Nächste Wiederholung ist am:" }, 810{ "Next recurrence is on: ","Nächste Wiederholung ist am:" },
812{ "<b>Alarm on: </b>","<b>Alarm am: </b>" }, 811{ "<b>Alarm on: </b>","<b>Alarm am: </b>" },
813{ "<b>Access: </b>","<b>Zugriff: </b>" }, 812{ "<b>Access: </b>","<b>Zugriff: </b>" },
814{ "(%1 min before)","(%1 min vorher)" }, 813{ "(%1 min before)","(%1 min vorher)" },
815{ "<b>Categories: </b>","<b>Kategorien: </b>" }, 814{ "<b>Categories: </b>","<b>Kategorien: </b>" },
816{ "Save Journal/Description...","Speichere Journal/Details..." }, 815{ "Save Journal/Description...","Speichere Journal/Details..." },
817{ "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." }, 816{ "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." },
818{ "Continue","Weitermachen" }, 817{ "Continue","Weitermachen" },
819{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, 818{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" },
820{ "Attendee:","Teilnehmer:" }, 819{ "Attendee:","Teilnehmer:" },
821{ "Click OK to search ->","Klicke zum Suchen auf OK ->" }, 820{ "Click OK to search ->","Klicke zum Suchen auf OK ->" },
822{ "On day ","Am Tag " }, 821{ "On day ","Am Tag " },
823{ "%1 of ","%1 des Monats" }, 822{ "%1 of ","%1 des Monats" },
824{ "%1 of the year","%1 des Jahres" }, 823{ "%1 of the year","%1 des Jahres" },
825{ "Anonymous","Anonymo" }, 824{ "Anonymous","Anonymo" },
826{ "nobody@nowhere","niemand@nirgendwo" }, 825{ "nobody@nowhere","niemand@nirgendwo" },
827{ "calendar.html","calendar.html" }, 826{ "calendar.html","calendar.html" },
828{ " Local Time"," Lokale Zeit" }, 827{ " Local Time"," Lokale Zeit" },
829{ "Unknown Name","Unbekannter Name" }, 828{ "Unknown Name","Unbekannter Name" },
830{ "unknown@nowhere","unbekannt@nirgendwo" }, 829{ "unknown@nowhere","unbekannt@nirgendwo" },
831{ "Beam via IR!","Beam via IR!" }, 830{ "Beam via IR!","Beam via IR!" },
832{ "Next Month","Nächster Monat" }, 831{ "Next Month","Nächster Monat" },
833{ "Prio","Prio" }, 832{ "Prio","Prio" },
834{ "Reparent Todo","Mache Sub-Todo" }, 833{ "Reparent Todo","Mache Sub-Todo" },
835{ "tomorrow","morgen" }, 834{ "tomorrow","morgen" },
836{ "today","heute" }, 835{ "today","heute" },
837{ "yesterday","gestern" }, 836{ "yesterday","gestern" },
838{ "Ok","Ok" }, 837{ "Ok","Ok" },
839{ "Ok+Agenda","Ok+Agenda" }, 838{ "Ok+Agenda","Ok+Agenda" },
840{ "Email","Email" }, 839{ "Email","Email" },
841{ "RSVP","RSVP" }, 840{ "RSVP","RSVP" },
842{ "Email:","Email:" }, 841{ "Email:","Email:" },
843{ "Appointment Time ","Termin Zeit " }, 842{ "Appointment Time ","Termin Zeit " },
844{ "2","2" }, 843{ "2","2" },
845{ "3","3" }, 844{ "3","3" },
846{ "4","4" }, 845{ "4","4" },
847{ " 0 %"," 0 %" }, 846{ " 0 %"," 0 %" },
848{ " 20 %"," 20 %" }, 847{ " 20 %"," 20 %" },
849{ " 40 %"," 40 %" }, 848{ " 40 %"," 40 %" },
850{ " 60 %"," 60 %" }, 849{ " 60 %"," 60 %" },
851{ " 80 %"," 80 %" }, 850{ " 80 %"," 80 %" },
852{ "100 %","100 %" }, 851{ "100 %","100 %" },
853{ "Filter","Filter" }, 852{ "Filter","Filter" },
854{ "Configure","Konfiguriere" }, 853{ "Configure","Konfiguriere" },
855{ "What's Next","What's Next" }, 854{ "What's Next","What's Next" },
856{ "Complete calendar...","Kompletten Kalender..." }, 855{ "Complete calendar...","Kompletten Kalender..." },
857{ "Filtered calendar...","Gefilterten Kalender..." }, 856{ "Filtered calendar...","Gefilterten Kalender..." },
858{ "Export to phone","Exportiere zum Handy" }, 857{ "Export to phone","Exportiere zum Handy" },
859{ "Beam receive enabled","Beam Empfang an" }, 858{ "Beam receive enabled","Beam Empfang an" },
860{ "What's new?","Was ist neu?" }, 859{ "What's new?","Was ist neu?" },
861{ "FAQ...","FAQ..." }, 860{ "FAQ...","FAQ..." },
862{ "Licence...","Licence..." }, 861{ "Licence...","Licence..." },
863{ "What's This?","What's This?" }, 862{ "What's This?","What's This?" },
864{ "&Edit...","&Editiere..." }, 863{ "&Edit...","&Editiere..." },
865{ "Oktober","Oktober" }, 864{ "Oktober","Oktober" },
866{ "Title","Titel" }, 865{ "Title","Titel" },
867{ "%1 %","%1 %" }, 866{ "%1 %","%1 %" },
868{ "Enable Pi-Sync","Schalte Pi-Sync an" }, 867{ "Enable Pi-Sync","Schalte Pi-Sync an" },
869{ "Import!","Importiere!" }, 868{ "Import!","Importiere!" },
870{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" }, 869{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" },
871{ "Export to phone options","Export ans Handy Optionen" }, 870{ "Export to phone options","Export ans Handy Optionen" },
872{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 871{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." },
873{ "I/O device: ","I/O device: " }, 872{ "I/O device: ","I/O device: " },
874{ "Connection: ","Connection: " }, 873{ "Connection: ","Connection: " },
875{ "Model(opt.): ","Model(opt.): " }, 874{ "Model(opt.): ","Model(opt.): " },
876{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" }, 875{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" },
877{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, 876{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " },
878{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" }, 877{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" },
879{ "Export to mobile phone!","Exportiere auf das Handy!" }, 878{ "Export to mobile phone!","Exportiere auf das Handy!" },
880{ "Export complete calendar","Exportiere kompletten Kalender" }, 879{ "Export complete calendar","Exportiere kompletten Kalender" },
881{ "Writing to phone...","Sende Daten ans Handy..." }, 880{ "Writing to phone...","Sende Daten ans Handy..." },
882{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 881{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
883{ "Retry","Nochmal versuchen" }, 882{ "Retry","Nochmal versuchen" },
884{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 883{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
885{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 884{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" },
886{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 885{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
887{ "Export filtered calendar","Exportiere gefilterten Kalender" }, 886{ "Export filtered calendar","Exportiere gefilterten Kalender" },
888{ "Preferences","Vorlieben" }, 887{ "Preferences","Vorlieben" },
889{ "Global","Global" }, 888{ "Global","Global" },
890{ "Phone","Phone" }, 889{ "Phone","Phone" },
891{ "SMS","SMS" }, 890{ "SMS","SMS" },
892{ "Fax","Fax" }, 891{ "Fax","Fax" },
893{ "Pager","Pager" }, 892{ "Pager","Pager" },
894{ "SIP","SIP" }, 893{ "SIP","SIP" },
895{ "Italian","Italienisch" }, 894{ "Italian","Italienisch" },
896{ "24:00","24:00" }, 895{ "24:00","24:00" },
897{ "12:00am","12:00am" }, 896{ "12:00am","12:00am" },
898{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 897{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
899{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 898{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
900{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 899{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
901{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 900{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
902{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 901{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
903{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 902{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
904{ "Used Mail Client","Benutzter Mail Client" }, 903{ "Used Mail Client","Benutzter Mail Client" },
905{ "Channel:","Channel:" }, 904{ "Channel:","Channel:" },
906{ "Message:","Message:" }, 905{ "Message:","Message:" },
907{ "Parameters:","Parameter:" }, 906{ "Parameters:","Parameter:" },
908{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 907{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
909{ "extra Message:","extra Message:" }, 908{ "extra Message:","extra Message:" },
910{ "extra Parameters:","extra Parameter:" }, 909{ "extra Parameters:","extra Parameter:" },
911{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 910{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
912{ "External Apps.","Externe Appl." }, 911{ "External Apps.","Externe Appl." },
913{ "24 hours","24 Std." }, 912{ "24 hours","24 Std." },
914{ "3 hours","3 Std." }, 913{ "3 hours","3 Std." },
915{ "1 hour","1 Std." }, 914{ "1 hour","1 Std." },
916{ "15 minutes","15 Min." }, 915{ "15 minutes","15 Min." },
917{ "5 minutes","5 Min." }, 916{ "5 minutes","5 Min." },
918{ "1 minute","1 Min." }, 917{ "1 minute","1 Min." },
919{ "23","23" }, 918{ "23","23" },
920{ "Mon 15","Mon 15" }, 919{ "Mon 15","Mon 15" },
921{ "Configure KO","Konfiguriere KO" }, 920{ "Configure KO","Konfiguriere KO" },
922{ "Event text","Termin Text" }, 921{ "Event text","Termin Text" },
923{ "ToDo","Todo" }, 922{ "ToDo","Todo" },
924{ "Today","Heute" }, 923{ "Today","Heute" },
925{ "What's Next View","What's Next Ansicht" }, 924{ "What's Next View","What's Next Ansicht" },
926{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, 925{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" },
927{ "Alarm","Alarm" }, 926{ "Alarm","Alarm" },
928{ "Used %1 Client","Benutzter %1 Client" }, 927{ "Used %1 Client","Benutzter %1 Client" },
929{ "No email client installed","Kein Email Klient installiert" }, 928{ "No email client installed","Kein Email Klient installiert" },
930{ "Userdefined email client","Benutzerdef. Email Klient" }, 929{ "Userdefined email client","Benutzerdef. Email Klient" },
931{ "OM/Pi email client","OM/Pi Email Klient" }, 930{ "OM/Pi email client","OM/Pi Email Klient" },
932{ "Include in multiple ","Beziehe in multiple " }, 931{ "Include in multiple ","Beziehe in multiple " },
933{ "calendar ","Kalender " }, 932{ "calendar ","Kalender " },
934{ "addressbook ","Adressbuch " }, 933{ "addressbook ","Adressbuch " },
935{ "pwmanager","PWmanager" }, 934{ "pwmanager","PWmanager" },
936{ " sync"," Sync ein" }, 935{ " sync"," Sync ein" },
937{ "Write back synced data","Schreibe gesyncte Daten zurück" }, 936{ "Write back synced data","Schreibe gesyncte Daten zurück" },
938{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" }, 937{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" },
939{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" }, 938{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" },
940{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, 939{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " },
@@ -1299,199 +1298,199 @@
1299{ "%1 days\n","%1 Tagen\n" }, 1298{ "%1 days\n","%1 Tagen\n" },
1300{ "1 day\n","1 Tag\n" }, 1299{ "1 day\n","1 Tag\n" },
1301{ "%1 hours\n","%1 Stunden\n" }, 1300{ "%1 hours\n","%1 Stunden\n" },
1302{ "1 hour\n","1 Stunde\n" }, 1301{ "1 hour\n","1 Stunde\n" },
1303{ "%1 minutes\n","%1 Minuten\n" }, 1302{ "%1 minutes\n","%1 Minuten\n" },
1304{ "1 minute\n","1 Minute\n" }, 1303{ "1 minute\n","1 Minute\n" },
1305{ "Only one toolbar","Nur eine Toolbar" }, 1304{ "Only one toolbar","Nur eine Toolbar" },
1306{ "Print","Drucke" }, 1305{ "Print","Drucke" },
1307{ "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." }, 1306{ "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." },
1308{ "There is nothing selected!","Es ist nichts ausgewählt!" }, 1307{ "There is nothing selected!","Es ist nichts ausgewählt!" },
1309{ "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " }, 1308{ "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " },
1310{ "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" }, 1309{ "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" },
1311{ "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" }, 1310{ "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" },
1312{ "KO/Pi Printout","KO/Pi Ausdruck" }, 1311{ "KO/Pi Printout","KO/Pi Ausdruck" },
1313{ "Print unscaled","Drucke unskaliert" }, 1312{ "Print unscaled","Drucke unskaliert" },
1314{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." }, 1313{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." },
1315{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." }, 1314{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." },
1316{ "Printout Mode","Druck Modus" }, 1315{ "Printout Mode","Druck Modus" },
1317{ "Filter menu icon","Filtermenu Icon" }, 1316{ "Filter menu icon","Filtermenu Icon" },
1318{ "<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" }, 1317{ "<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" },
1319{ "<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" }, 1318{ "<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" },
1320{ "%1d","%1t" }, 1319{ "%1d","%1t" },
1321{ "%1h","%1std" }, 1320{ "%1h","%1std" },
1322{ "%1min","%1min" }, 1321{ "%1min","%1min" },
1323{ "( %1 before )","( %1 vorher )" }, 1322{ "( %1 before )","( %1 vorher )" },
1324{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" }, 1323{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" },
1325{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" }, 1324{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" },
1326{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." }, 1325{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." },
1327{ "Show Sync Events","Zeige Sync-Ereignisse" }, 1326{ "Show Sync Events","Zeige Sync-Ereignisse" },
1328{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" }, 1327{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" },
1329{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" }, 1328{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" },
1330{ " on "," am " }, 1329{ " on "," am " },
1331{ "On: ","Am: " }, 1330{ "On: ","Am: " },
1332{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" }, 1331{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" },
1333{ "Start/Stop todo...","Starte/Stoppe Todo..." }, 1332{ "Start/Stop todo...","Starte/Stoppe Todo..." },
1334{ "Color for running todos:","Farbe für laufende Todos:" }, 1333{ "Color for running todos:","Farbe für laufende Todos:" },
1335{ "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?" }, 1334{ "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?" },
1336{ "Todo is started","Todo ist gestartet" }, 1335{ "Todo is started","Todo ist gestartet" },
1337{ "Stop todo","Stoppe Todo" }, 1336{ "Stop todo","Stoppe Todo" },
1338{ "Todo is stopped","Todo ist gestoppt" }, 1337{ "Todo is stopped","Todo ist gestoppt" },
1339{ "Start todo","Starte Todo" }, 1338{ "Start todo","Starte Todo" },
1340{ "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?" }, 1339{ "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?" },
1341{ "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?" }, 1340{ "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?" },
1342{ "Todo has subtodos","Todo hat Untertodos" }, 1341{ "Todo has subtodos","Todo hat Untertodos" },
1343{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" }, 1342{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" },
1344{ "Colors","Farben" }, 1343{ "Colors","Farben" },
1345{ "Click on new parent item","Klicke auf neues Übertodo" }, 1344{ "Click on new parent item","Klicke auf neues Übertodo" },
1346{ "Reparenting aborted!","Übertodo setzen abgebrochen" }, 1345{ "Reparenting aborted!","Übertodo setzen abgebrochen" },
1347{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" }, 1346{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" },
1348{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" }, 1347{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" },
1349{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" }, 1348{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" },
1350{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, 1349{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
1351{ "times","Zeiten" }, 1350{ "times","Zeiten" },
1352{ "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nMöchten Sie die Kategorien\nauch für alle Untertodos setzen?" }, 1351{ "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nMöchten Sie die Kategorien\nauch für alle Untertodos setzen?" },
1353{ "Backup enabled","Backup angeschaltet" }, 1352{ "Backup enabled","Backup angeschaltet" },
1354{ "Use standard backup dir","Standard Backupverzeichnis" }, 1353{ "Use standard backup dir","Standard Backupverzeichnis" },
1355{ "Number of Backups:","Anzahl der Backups" }, 1354{ "Number of Backups:","Anzahl der Backups" },
1356{ "Make backup every ","Mache ein Backup alle " }, 1355{ "Make backup every ","Mache ein Backup alle " },
1357{ " days"," Tage" }, 1356{ " days"," Tage" },
1358{ "Creating backup ... please wait ...","Erstelle Backup ... bitte warten ..." }, 1357{ "Creating backup ... please wait ...","Erstelle Backup ... bitte warten ..." },
1359{ "Backup Failed!","Backup Problem!" }, 1358{ "Backup Failed!","Backup Problem!" },
1360{ "Try again now","Versuche jetzt nochmal" }, 1359{ "Try again now","Versuche jetzt nochmal" },
1361{ "Try again later","Versuche später nochmal" }, 1360{ "Try again later","Versuche später nochmal" },
1362{ "Try again tomorrow","Versuche morgen nochmal" }, 1361{ "Try again tomorrow","Versuche morgen nochmal" },
1363{ "Disable backup","Schalte Backup ab" }, 1362{ "Disable backup","Schalte Backup ab" },
1364{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, 1363{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
1365{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, 1364{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
1366{ "Choose action","Wähle Aktion" }, 1365{ "Choose action","Wähle Aktion" },
1367{ "Comment for todo:","Kommentar zum Todo:" }, 1366{ "Comment for todo:","Kommentar zum Todo:" },
1368{ "Stop+note","Stop+Notiz" }, 1367{ "Stop+note","Stop+Notiz" },
1369{ "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" }, 1368{ "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" },
1370{ "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" }, 1369{ "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" },
1371{ "You missed the alarms for the following events or todos:","Sie verpassten die Alarme für folgende Termine oder Todos:" }, 1370{ "You missed the alarms for the following events or todos:","Sie verpassten die Alarme für folgende Termine oder Todos:" },
1372{ "Print complete list","Drucke komplette Liste" }, 1371{ "Print complete list","Drucke komplette Liste" },
1373{ "Hide all selected","Verstecke Selektierte" }, 1372{ "Hide all selected","Verstecke Selektierte" },
1374{ "Add items","hinzufügen" }, 1373{ "Add items","hinzufügen" },
1375{ "One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?","Ein (oder mehrere) ausgewähltes\nTodo hat Untertodos!\nMöchten Sie der Auswahlliste\nalle Untertodos von allen\nausgewählten Todos hinzufügen?" }, 1374{ "One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?","Ein (oder mehrere) ausgewähltes\nTodo hat Untertodos!\nMöchten Sie der Auswahlliste\nalle Untertodos von allen\nausgewählten Todos hinzufügen?" },
1376{ "Print List View...","Drucke Listenansicht..." }, 1375{ "Print List View...","Drucke Listenansicht..." },
1377{ "You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.","Sie können die <b>Listenansicht</b> und die Listenansicht im <b>Suchdialog</b> ausdrucken! Um das zu machen gehen Sie bitte zur <b>Listenansicht</b> oder zum <b>Suchdialog</b>. Rechtsklicken Sie auf die Liste. Wählen Sie im Popupmenu den Eintrag <b>Drucke komplette Liste</b>. Das druckt die Liste so, wie man sie sieht. Sie können Listeneinträge entfernen ohne die korrespondierenden Ereignisse/Todos zu löschen! Selektieren sie einfach alle Einträge, die sie nicht ausdrucken möchten. Dann Rechtsklicken Sie auf einen Eintrag und wählen <b>Verstecke Selektierte</b>. Danach können Sie die Liste ohne diese Einträge ausdrucken." }, 1376{ "You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.","Sie können die <b>Listenansicht</b> und die Listenansicht im <b>Suchdialog</b> ausdrucken! Um das zu machen gehen Sie bitte zur <b>Listenansicht</b> oder zum <b>Suchdialog</b>. Rechtsklicken Sie auf die Liste. Wählen Sie im Popupmenu den Eintrag <b>Drucke komplette Liste</b>. Das druckt die Liste so, wie man sie sieht. Sie können Listeneinträge entfernen ohne die korrespondierenden Ereignisse/Todos zu löschen! Selektieren sie einfach alle Einträge, die sie nicht ausdrucken möchten. Dann Rechtsklicken Sie auf einen Eintrag und wählen <b>Verstecke Selektierte</b>. Danach können Sie die Liste ohne diese Einträge ausdrucken." },
1378{ "Configure KO/Pi...","Konfiguriere KO/Pi..." }, 1377{ "Configure KO/Pi...","Konfiguriere KO/Pi..." },
1379{ "Global Settings...","Globale Einstellungen..." }, 1378{ "Global Settings...","Globale Einstellungen..." },
1380{ "<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n","<p><b>R</b>: Zeige Resource Ansicht | <b>F</b>: Editiere Filter </p>\n" }, 1379{ "<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n","<p><b>R</b>: Zeige Resource Ansicht | <b>F</b>: Editiere Filter </p>\n" },
1381{ "(disabled)","(abgeschaltet)" }, 1380{ "(disabled)","(abgeschaltet)" },
1382{ "New Calendar","Neuer Kalender" }, 1381{ "New Calendar","Neuer Kalender" },
1383{ "Calendar","Kalender" }, 1382{ "Calendar","Kalender" },
1384{ "Filter selector","Filterauswahl" }, 1383{ "Filter selector","Filterauswahl" },
1385{ "Filtermenu","Filtermenu" }, 1384{ "Filtermenu","Filtermenu" },
1386{ "Toggle Fullscreen","Vollbild umschalten" }, 1385{ "Toggle Fullscreen","Vollbild umschalten" },
1387{ "Toggle Resource View","Resourcenansicht umschalten" }, 1386{ "Toggle Resource View","Resourcenansicht umschalten" },
1388{ "Storage HowTo...","Speicherort HowTo..." }, 1387{ "Storage HowTo...","Speicherort HowTo..." },
1389{ "Timetracking HowTo...","Timetracking HowTo..." }, 1388{ "Timetracking HowTo...","Timetracking HowTo..." },
1390{ "Juni","Juni" }, 1389{ "Juni","Juni" },
1391{ "Juli","Juli" }, 1390{ "Juli","Juli" },
1392{ "ToDo:","ToDo:" }, 1391{ "ToDo:","ToDo:" },
1393{ "Set Calendar","Setze Kalender" }, 1392{ "Set Calendar","Setze Kalender" },
1394{ "Todo: %1","Todo: %1" }, 1393{ "Todo: %1","Todo: %1" },
1395{ ": (Prio ",": (Prio " }, 1394{ ": (Prio ",": (Prio " },
1396{ "Todos","Todos" }, 1395{ "Todos","Todos" },
1397{ "Todo Viewer","Todo Viewer" }, 1396{ "Todo Viewer","Todo Viewer" },
1398{ "Todo ","Todo " }, 1397{ "Todo ","Todo " },
1399{ " Calendar \n Resource "," Kalender \n Resource " }, 1398{ " Calendar \n Resource "," Kalender \n Resource " },
1400{ " Color "," Farbe " }, 1399{ " Color "," Farbe " },
1401{ "The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>. Möchten Sie diesen Kalender aus KO/Pi entfernen? (Die Datei wird dabei nicht gelöscht!)" }, 1400{ "The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>. Möchten Sie diesen Kalender aus KO/Pi entfernen? (Die Datei wird dabei nicht gelöscht!)" },
1402{ "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" }, 1401{ "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" },
1403{ "Add new Calendar","Füge Kalender hinzu" }, 1402{ "Add new Calendar","Füge Kalender hinzu" },
1404{ "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" }, 1403{ "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" },
1405{ "<b>Local ical (*.ics) file:</b>","<b>Lokale ical (*.ics) Datei:</b>" }, 1404{ "<b>Local ical (*.ics) file:</b>","<b>Lokale ical (*.ics) Datei:</b>" },
1406{ "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" }, 1405{ "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" },
1407{ "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" }, 1406{ "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" },
1408{ "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." }, 1407{ "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." },
1409{ "The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>","Der Kalender <b>%1</b> ist nicht geladen! Das Laden der Datei <b>%2</b> schlug fehl! <b>Soll erneut versucht werden den Kalender zu laden?</b>" }, 1408{ "The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>","Der Kalender <b>%1</b> ist nicht geladen! Das Laden der Datei <b>%2</b> schlug fehl! <b>Soll erneut versucht werden den Kalender zu laden?</b>" },
1410{ "Global application font for all apps:","Globale Schriftart:" }, 1409{ "Global application font for all apps:","Globale Schriftart:" },
1411{ "Application Font","Applikationsschriftart" }, 1410{ "Application Font","Applikationsschriftart" },
1412{ "Kx/Pi","Kx/Pi" }, 1411{ "Kx/Pi","Kx/Pi" },
1413{ "Backup","Backup" }, 1412{ "Backup","Backup" },
1414{ "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" }, 1413{ "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" },
1415{ "Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!","Sorry, der Kalendername \n%1\nist schon in Benutzung!\nBitte wählen Sie einen anderen!" }, 1414{ "Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!","Sorry, der Kalendername \n%1\nist schon in Benutzung!\nBitte wählen Sie einen anderen!" },
1416{ "Sorry, the file \n%1\nis already loaded!\nPlease choose another file!","Sorry, die Datei \n%1\nist schon geladen!\nBitte wählen Sie eine andere!" }, 1415{ "Sorry, the file \n%1\nis already loaded!\nPlease choose another file!","Sorry, die Datei \n%1\nist schon geladen!\nBitte wählen Sie eine andere!" },
1417{ "Choose Color","Wähle Farbe" }, 1416{ "Choose Color","Wähle Farbe" },
1418{ " OK "," OK " }, 1417{ " OK "," OK " },
1419{ " Cancel "," Abbrechen " }, 1418{ " Cancel "," Abbrechen " },
1420{ "Matching items will be added to list","Passende werden zur Liste hinzugefügt" }, 1419{ "Matching items will be added to list","Passende werden zur Liste hinzugefügt" },
1421{ "Matching items will be removed from list","Passende werden von der Liste entfernt" }, 1420{ "Matching items will be removed from list","Passende werden von der Liste entfernt" },
1422{ "Search on displayed list only","Suche auf der dargestellten Liste" }, 1421{ "Search on displayed list only","Suche auf der dargestellten Liste" },
1423{ "List will be cleared before search","Liste wird vor der Suche gelöscht" }, 1422{ "List will be cleared before search","Liste wird vor der Suche gelöscht" },
1424{ "<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>","<center>%1</center> <center>ist nicht am Laufen. Möchten Sie den Zustand auf "laufend" setzen?</center>" }, 1423{ "<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>","<center>%1</center> <center>ist nicht am Laufen. Möchten Sie den Zustand auf "laufend" setzen?</center>" },
1425{ "%1\nis running!","%1\nist am Laufen!" }, 1424{ "%1\nis running!","%1\nist am Laufen!" },
1426{ "Additional Comment:","Zusätzlicher Kommentar:" }, 1425{ "Additional Comment:","Zusätzlicher Kommentar:" },
1427{ "Stop and save","Stopp und Speichern" }, 1426{ "Stop and save","Stopp und Speichern" },
1428{ "Continue running","Weiter laufen lassen" }, 1427{ "Continue running","Weiter laufen lassen" },
1429{ "Stop - do not save","Stopp - nicht Speichern" }, 1428{ "Stop - do not save","Stopp - nicht Speichern" },
1430{ "Do you really want to set\nthe state to stopped\nwithout saving the data?","Möchten sie den Zustand\nwirklich auf gestoppt setzen\nohne die Daten abzuspeichern?" }, 1429{ "Do you really want to set\nthe state to stopped\nwithout saving the data?","Möchten sie den Zustand\nwirklich auf gestoppt setzen\nohne die Daten abzuspeichern?" },
1431{ "Time mismatch!","Zeiten stimmen nicht!" }, 1430{ "Time mismatch!","Zeiten stimmen nicht!" },
1432{ "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" }, 1431{ "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" },
1433{ "Yes, stop todo","Ja, stoppe Todo" }, 1432{ "Yes, stop todo","Ja, stoppe Todo" },
1434{ "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" }, 1433{ "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" },
1435{ "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" }, 1434{ "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" },
1436{ "Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.","Bitte wählen Sie den <b>Default-Kalender</b> in dieser Spalte. Neu angelegte oder importierte Einträge werden dem Default-Kalender hinzugefügt." }, 1435{ "Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.","Bitte wählen Sie den <b>Default-Kalender</b> in dieser Spalte. Neu angelegte oder importierte Einträge werden dem Default-Kalender hinzugefügt." },
1437{ "Spouse","Ehegatte" }, 1436{ "Spouse","Ehegatte" },
1438{ "Notes","Notizen" }, 1437{ "Notes","Notizen" },
1439{ "Messanger","Messanger" }, 1438{ "Messanger","Messanger" },
1440{ "Assistant","Assistent" }, 1439{ "Assistant","Assistent" },
1441{ "Manager","Manager" }, 1440{ "Manager","Manager" },
1442{ "Secrecy","Sichtbar" }, 1441{ "Secrecy","Sichtbar" },
1443{ "male","männlich" }, 1442{ "male","männlich" },
1444{ "female","weiblich" }, 1443{ "female","weiblich" },
1445{ "Hide!","Verbergen!" }, 1444{ "Hide!","Verbergen!" },
1446{ "Show!","Anzeigen!" }, 1445{ "Show!","Anzeigen!" },
1447{ "Details","Details" }, 1446{ "Details","Details" },
1448{ "Profession","Beruf" }, 1447{ "Profession","Beruf" },
1449{ "Children","Kinder" }, 1448{ "Children","Kinder" },
1450{ "Department","Abteilung" }, 1449{ "Department","Abteilung" },
1451{ "Backup cancelled","Backup abgebrochen" }, 1450{ "Backup cancelled","Backup abgebrochen" },
1452{ "Backup globally disabled","Backup global abgeschaltet" }, 1451{ "Backup globally disabled","Backup global abgeschaltet" },
1453{ "Backup succesfully finished","Backup erfolgreich beendet" }, 1452{ "Backup succesfully finished","Backup erfolgreich beendet" },
1454{ "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" }, 1453{ "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" },
1455{ "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" }, 1454{ "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" },
1456{ "Birthdays","Geburtstage" }, 1455{ "Birthdays","Geburtstage" },
1457{ "KO/Pi import information!","KO/Pi Import Information!" }, 1456{ "KO/Pi import information!","KO/Pi Import Information!" },
1458{ "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" }, 1457{ "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" },
1459{ "Cancel - do not start"," Abbrechen - Todo nicht starten" }, 1458{ "Cancel - do not start"," Abbrechen - Todo nicht starten" },
1460{ "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde geändert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu ändern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" }, 1459{ "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde geändert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu ändern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" },
1461{ "Reload","Neu laden" }, 1460{ "Reload","Neu laden" },
1462{ "Timezone settings","Zeitzoneneinstellung" }, 1461{ "Timezone settings","Zeitzoneneinstellung" },
1463{ "Title: ","Titel: " }, 1462{ "Title: ","Titel: " },
1464{ "Journal from: ","Journal vom: " }, 1463{ "Journal from: ","Journal vom: " },
1465{ "Journal: %1 from ","Journal: %1 vom " }, 1464{ "Journal: %1 from ","Journal: %1 vom " },
1466{ "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" }, 1465{ "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" },
1467{ "Selected Item","Ausgewähltes Item" }, 1466{ "Selected Item","Ausgewähltes Item" },
1468{ "Select Date...","Wähle Datum..." }, 1467{ "Select Date...","Wähle Datum..." },
1469{ "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugefügt werden. Bitte wählen Sie, was <b>jetzt</b> passieren soll:" }, 1468{ "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugefügt werden. Bitte wählen Sie, was <b>jetzt</b> passieren soll:" },
1470{ "Change category list now!","Ändere Kategorieliste jetzt!" }, 1469{ "Change category list now!","Ändere Kategorieliste jetzt!" },
1471{ "Edit category list...","Ändere Kategorieliste..." }, 1470{ "Edit category list...","Ändere Kategorieliste..." },
1472{ "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, 1471{ "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" },
1473{ "Filepath: ","Dateipfad: " }, 1472{ "Filepath: ","Dateipfad: " },
1474{ "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, 1473{ "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" },
1475{ "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, 1474{ "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" },
1476{ "Pending Suspend Alarm","Laufender Suspend Alarm" }, 1475{ "Pending Suspend Alarm","Laufender Suspend Alarm" },
1477{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, 1476{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" },
1478{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, 1477{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" },
1479{ "Loding of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, 1478{ "Loding of calendar(s) failed","Laden von Kalendern fehlgeschlagen" },
1480{ "Alarm Options","Alarm Einstellungen" }, 1479{ "Alarm Options","Alarm Einstellungen" },
1481{ "Delete selected...","Lösche Ausgewählte..." }, 1480{ "Delete selected...","Lösche Ausgewählte..." },
1482{ "None","Nichts" }, 1481{ "None","Nichts" },
1483{ "Selection","Auswahl" }, 1482{ "Selection","Auswahl" },
1484{ "Set categories","Setze Kategorien" }, 1483{ "Set categories","Setze Kategorien" },
1485{ "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" }, 1484{ "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" },
1486{ "Reset","Neu setzen" }, 1485{ "Reset","Neu setzen" },
1487{ "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" }, 1486{ "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" },
1488{ "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" }, 1487{ "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" },
1489{ "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" }, 1488{ "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" },
1490{ "\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n","\nKEIN\n SCHREIBBARER\n KALENDER\n GEFUNDEN!\n\nBitte korrigieren Sie\nihre Kalendereinstellungen!\n" }, 1489{ "\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n","\nKEIN\n SCHREIBBARER\n KALENDER\n GEFUNDEN!\n\nBitte korrigieren Sie\nihre Kalendereinstellungen!\n" },
1490{ "\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie Datei\n%1\nwurde verändert!\nDatei Grösse: %2 Bytes.\nZuletzt geändert: %3\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" },
1491{ "","" }, 1491{ "","" },
1492{ "","" }, 1492{ "","" },
1493{ "","" }, 1493{ "","" },
1494{ "","" }, 1494{ "","" },
1495{ "","" }, 1495{ "","" },
1496{ "","" }, 1496{ "","" },
1497{ "","" }, \ No newline at end of file
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 678143d..5c88abd 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1907,385 +1907,385 @@ bool CalendarView::importQtopia( const QString &categories,
1907 1907
1908void CalendarView::setSyncEventsReadOnly() 1908void CalendarView::setSyncEventsReadOnly()
1909{ 1909{
1910 mCalendar->setSyncEventsReadOnly(); 1910 mCalendar->setSyncEventsReadOnly();
1911} 1911}
1912 1912
1913bool CalendarView::loadCalendars() 1913bool CalendarView::loadCalendars()
1914{ 1914{
1915 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1915 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1916 KopiCalendarFile * cal = calendars.first(); 1916 KopiCalendarFile * cal = calendars.first();
1917 mCalendar->setDefaultCalendar( 1 ); 1917 mCalendar->setDefaultCalendar( 1 );
1918 openCalendar( MainWindow::defaultFileName(), false ); 1918 openCalendar( MainWindow::defaultFileName(), false );
1919 cal = calendars.next(); 1919 cal = calendars.next();
1920 while ( cal ) { 1920 while ( cal ) {
1921 addCalendar( cal ); 1921 addCalendar( cal );
1922 cal = calendars.next(); 1922 cal = calendars.next();
1923 } 1923 }
1924 restoreCalendarSettings(); 1924 restoreCalendarSettings();
1925 return true; 1925 return true;
1926} 1926}
1927bool CalendarView::restoreCalendarSettings() 1927bool CalendarView::restoreCalendarSettings()
1928{ 1928{
1929 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1929 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1930 KopiCalendarFile * cal = calendars.first(); 1930 KopiCalendarFile * cal = calendars.first();
1931 while ( cal ) { 1931 while ( cal ) {
1932 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 1932 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
1933 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 1933 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
1934 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 1934 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
1935 if ( cal->isStandard ) 1935 if ( cal->isStandard )
1936 mCalendar->setDefaultCalendar( cal->mCalNumber ); 1936 mCalendar->setDefaultCalendar( cal->mCalNumber );
1937 cal = calendars.next(); 1937 cal = calendars.next();
1938 } 1938 }
1939 setSyncEventsReadOnly(); 1939 setSyncEventsReadOnly();
1940 mCalendar->reInitAlarmSettings(); 1940 mCalendar->reInitAlarmSettings();
1941 updateUnmanagedViews(); 1941 updateUnmanagedViews();
1942 updateView(); 1942 updateView();
1943 return true; 1943 return true;
1944} 1944}
1945void CalendarView::addCalendarId( int id ) 1945void CalendarView::addCalendarId( int id )
1946{ 1946{
1947 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); 1947 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
1948 if ( cal ) 1948 if ( cal )
1949 addCalendar( cal ); 1949 addCalendar( cal );
1950} 1950}
1951bool CalendarView::addCalendar( KopiCalendarFile * cal ) 1951bool CalendarView::addCalendar( KopiCalendarFile * cal )
1952{ 1952{
1953 cal->mErrorOnLoad = false; 1953 cal->mErrorOnLoad = false;
1954 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { 1954 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) {
1955 cal->mLoadDt = QDateTime::currentDateTime(); 1955 cal->mLoadDt = QDateTime::currentDateTime();
1956 return true; 1956 return true;
1957 } 1957 }
1958 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() ); 1958 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() );
1959 cal->mErrorOnLoad = true; 1959 cal->mErrorOnLoad = true;
1960 return false; 1960 return false;
1961} 1961}
1962bool CalendarView::openCalendar(QString filename, bool merge) 1962bool CalendarView::openCalendar(QString filename, bool merge)
1963{ 1963{
1964 1964
1965 if (filename.isEmpty()) { 1965 if (filename.isEmpty()) {
1966 return false; 1966 return false;
1967 } 1967 }
1968 1968
1969 if (!QFile::exists(filename)) { 1969 if (!QFile::exists(filename)) {
1970 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1970 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1971 return false; 1971 return false;
1972 } 1972 }
1973 1973
1974 globalFlagBlockAgenda = 1; 1974 globalFlagBlockAgenda = 1;
1975 clearAllViews(); 1975 clearAllViews();
1976 if (!merge) { 1976 if (!merge) {
1977 mViewManager->setDocumentId( filename ); 1977 mViewManager->setDocumentId( filename );
1978 mCalendar->close(); 1978 mCalendar->close();
1979 } 1979 }
1980 mStorage->setFileName( filename ); 1980 mStorage->setFileName( filename );
1981 1981
1982 if ( mStorage->load() ) { 1982 if ( mStorage->load() ) {
1983 if ( merge ) ;//setModified( true ); 1983 if ( merge ) ;//setModified( true );
1984 else { 1984 else {
1985 //setModified( true ); 1985 //setModified( true );
1986 mViewManager->setDocumentId( filename ); 1986 mViewManager->setDocumentId( filename );
1987 mDialogManager->setDocumentId( filename ); 1987 mDialogManager->setDocumentId( filename );
1988 mTodoList->setDocumentId( filename ); 1988 mTodoList->setDocumentId( filename );
1989 } 1989 }
1990 globalFlagBlockAgenda = 2; 1990 globalFlagBlockAgenda = 2;
1991 // if ( getLastSyncEvent() ) 1991 // if ( getLastSyncEvent() )
1992 // getLastSyncEvent()->setReadOnly( true ); 1992 // getLastSyncEvent()->setReadOnly( true );
1993 mCalendar->reInitAlarmSettings(); 1993 mCalendar->reInitAlarmSettings();
1994 setSyncEventsReadOnly(); 1994 setSyncEventsReadOnly();
1995 updateUnmanagedViews(); 1995 updateUnmanagedViews();
1996 updateView(); 1996 updateView();
1997 if ( filename != MainWindow::defaultFileName() ) { 1997 if ( filename != MainWindow::defaultFileName() ) {
1998 saveCalendar( MainWindow::defaultFileName() ); 1998 saveCalendar( MainWindow::defaultFileName() );
1999 } else { 1999 } else {
2000 QFileInfo finf ( MainWindow::defaultFileName()); 2000 QFileInfo finf ( MainWindow::defaultFileName());
2001 if ( finf.exists() ) { 2001 if ( finf.exists() ) {
2002 setLoadedFileVersion( finf.lastModified () ); 2002 setLoadedFileVersion( finf.lastModified () );
2003 } 2003 }
2004 } 2004 }
2005 return true; 2005 return true;
2006 } else { 2006 } else {
2007 // while failing to load, the calendar object could 2007 // while failing to load, the calendar object could
2008 // have become partially populated. Clear it out. 2008 // have become partially populated. Clear it out.
2009 if ( !merge ) { 2009 if ( !merge ) {
2010 mCalendar->close(); 2010 mCalendar->close();
2011 mViewManager->setDocumentId( filename ); 2011 mViewManager->setDocumentId( filename );
2012 mDialogManager->setDocumentId( filename ); 2012 mDialogManager->setDocumentId( filename );
2013 mTodoList->setDocumentId( filename ); 2013 mTodoList->setDocumentId( filename );
2014 } 2014 }
2015 2015
2016 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2016 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2017 2017
2018 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2018 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2019 globalFlagBlockAgenda = 2; 2019 globalFlagBlockAgenda = 2;
2020 mCalendar->reInitAlarmSettings(); 2020 mCalendar->reInitAlarmSettings();
2021 setSyncEventsReadOnly(); 2021 setSyncEventsReadOnly();
2022 updateUnmanagedViews(); 2022 updateUnmanagedViews();
2023 updateView(); 2023 updateView();
2024 } 2024 }
2025 return false; 2025 return false;
2026} 2026}
2027void CalendarView::showOpenError() 2027void CalendarView::showOpenError()
2028{ 2028{
2029 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2029 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2030} 2030}
2031void CalendarView::setLoadedFileVersion(QDateTime dt) 2031void CalendarView::setLoadedFileVersion(QDateTime dt)
2032{ 2032{
2033 loadedFileVersion = dt; 2033 loadedFileVersion = dt;
2034} 2034}
2035bool CalendarView::checkFileChanged(QString fn) 2035bool CalendarView::checkFileChanged(QString fn)
2036{ 2036{
2037 QFileInfo finf ( fn ); 2037 QFileInfo finf ( fn );
2038 if ( !finf.exists() ) 2038 if ( !finf.exists() )
2039 return true; 2039 return true;
2040 QDateTime dt = finf.lastModified (); 2040 QDateTime dt = finf.lastModified ();
2041 if ( dt <= loadedFileVersion ) 2041 if ( dt <= loadedFileVersion )
2042 return false; 2042 return false;
2043 return true; 2043 return true;
2044 2044
2045} 2045}
2046void CalendarView::watchSavedFile() 2046void CalendarView::watchSavedFile()
2047{ 2047{
2048 QFileInfo finf ( MainWindow::defaultFileName()); 2048 QFileInfo finf ( MainWindow::defaultFileName());
2049 if ( !finf.exists() ) 2049 if ( !finf.exists() )
2050 return; 2050 return;
2051 QDateTime dt = finf.lastModified (); 2051 QDateTime dt = finf.lastModified ();
2052 if ( dt < loadedFileVersion ) { 2052 if ( dt < loadedFileVersion ) {
2053 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2053 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2054 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2054 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2055 return; 2055 return;
2056 } 2056 }
2057 loadedFileVersion = dt; 2057 loadedFileVersion = dt;
2058} 2058}
2059bool CalendarView::checkAllFileVersions() 2059bool CalendarView::checkAllFileVersions()
2060{ 2060{
2061 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2061 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2062 KopiCalendarFile * cal = calendars.first(); 2062 KopiCalendarFile * cal = calendars.first();
2063 mCalendar->setDefaultCalendar( 1 ); 2063 mCalendar->setDefaultCalendar( 1 );
2064 mCalendar->setDefaultCalendarEnabledOnly(); 2064 mCalendar->setDefaultCalendarEnabledOnly();
2065 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2065 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2066 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2066 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2067 restoreCalendarSettings(); 2067 restoreCalendarSettings();
2068 return false; 2068 return false;
2069 } 2069 }
2070 } 2070 }
2071 cal = calendars.next(); 2071 cal = calendars.next();
2072 QDateTime storeTemp = loadedFileVersion; 2072 QDateTime storeTemp = loadedFileVersion;
2073 while ( cal ) { 2073 while ( cal ) {
2074 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2074 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2075 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2075 mCalendar->setDefaultCalendar( cal->mCalNumber );
2076 mCalendar->setDefaultCalendarEnabledOnly(); 2076 mCalendar->setDefaultCalendarEnabledOnly();
2077 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2077 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2078 if ( !checkFileVersion(cal->mFileName )) { 2078 if ( !checkFileVersion(cal->mFileName )) {
2079 loadedFileVersion = storeTemp; 2079 loadedFileVersion = storeTemp;
2080 restoreCalendarSettings(); 2080 restoreCalendarSettings();
2081 return false; 2081 return false;
2082 } 2082 }
2083 } 2083 }
2084 cal = calendars.next(); 2084 cal = calendars.next();
2085 } 2085 }
2086 loadedFileVersion = storeTemp; 2086 loadedFileVersion = storeTemp;
2087 return true; 2087 return true;
2088} 2088}
2089bool CalendarView::checkFileVersion(QString fn) 2089bool CalendarView::checkFileVersion(QString fn)
2090{ 2090{
2091 QFileInfo finf ( fn ); 2091 QFileInfo finf ( fn );
2092 if ( !finf.exists() ) 2092 if ( !finf.exists() )
2093 return true; 2093 return true;
2094 QDateTime dt = finf.lastModified (); 2094 QDateTime dt = finf.lastModified ();
2095 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2095 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2096 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2096 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2097 if ( dt <= loadedFileVersion ) 2097 if ( dt <= loadedFileVersion )
2098 return true; 2098 return true;
2099 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\n on disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(fn).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2099 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2100 i18n("KO/Pi Warning"),i18n("Overwrite"), 2100 i18n("KO/Pi Warning"),i18n("Overwrite"),
2101 i18n("Sync+save")); 2101 i18n("Sync+save"));
2102 2102
2103 if ( km == KMessageBox::Cancel ) 2103 if ( km == KMessageBox::Cancel )
2104 return false; 2104 return false;
2105 if ( km == KMessageBox::Yes ) 2105 if ( km == KMessageBox::Yes )
2106 return true; 2106 return true;
2107 2107
2108 setSyncDevice("deleteaftersync" ); 2108 setSyncDevice("deleteaftersync" );
2109 mSyncManager->mAskForPreferences = true; 2109 mSyncManager->mAskForPreferences = true;
2110 mSyncManager->mSyncAlgoPrefs = 3; 2110 mSyncManager->mSyncAlgoPrefs = 3;
2111 mSyncManager->mWriteBackFile = false; 2111 mSyncManager->mWriteBackFile = false;
2112 mSyncManager->mWriteBackExistingOnly = false; 2112 mSyncManager->mWriteBackExistingOnly = false;
2113 mSyncManager->mShowSyncSummary = false; 2113 mSyncManager->mShowSyncSummary = false;
2114 syncCalendar( fn, 3 ); 2114 syncCalendar( fn, 3 );
2115 Event * e = getLastSyncEvent(); 2115 Event * e = getLastSyncEvent();
2116 if ( e ) 2116 if ( e )
2117 mCalendar->deleteEvent( e ); 2117 mCalendar->deleteEvent( e );
2118 return true; 2118 return true;
2119} 2119}
2120bool CalendarView::saveCalendars() 2120bool CalendarView::saveCalendars()
2121{ 2121{
2122 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2122 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2123 KopiCalendarFile * cal = calendars.first(); 2123 KopiCalendarFile * cal = calendars.first();
2124 mCalendar->setDefaultCalendar( 1 ); 2124 mCalendar->setDefaultCalendar( 1 );
2125 mCalendar->setDefaultCalendarEnabledOnly(); 2125 mCalendar->setDefaultCalendarEnabledOnly();
2126 saveCalendar( MainWindow::defaultFileName() ); 2126 saveCalendar( MainWindow::defaultFileName() );
2127 cal = calendars.next(); 2127 cal = calendars.next();
2128 while ( cal ) { 2128 while ( cal ) {
2129 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2129 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2130 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2130 mCalendar->setDefaultCalendar( cal->mCalNumber );
2131 mCalendar->setDefaultCalendarEnabledOnly(); 2131 mCalendar->setDefaultCalendarEnabledOnly();
2132 if ( saveCalendar( cal->mFileName ) ) 2132 if ( saveCalendar( cal->mFileName ) )
2133 cal->mLoadDt = QDateTime::currentDateTime(); 2133 cal->mLoadDt = QDateTime::currentDateTime();
2134 } 2134 }
2135 cal = calendars.next(); 2135 cal = calendars.next();
2136 } 2136 }
2137 restoreCalendarSettings(); 2137 restoreCalendarSettings();
2138 return true; 2138 return true;
2139} 2139}
2140bool CalendarView::saveCalendar( QString filename ) 2140bool CalendarView::saveCalendar( QString filename )
2141{ 2141{
2142 2142
2143 // Store back all unsaved data into calendar object 2143 // Store back all unsaved data into calendar object
2144 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2144 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2145 if ( mViewManager->currentView() ) 2145 if ( mViewManager->currentView() )
2146 mViewManager->currentView()->flushView(); 2146 mViewManager->currentView()->flushView();
2147 2147
2148 2148
2149 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2149 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2150 mStorage->setSaveFormat( new ICalFormat() ); 2150 mStorage->setSaveFormat( new ICalFormat() );
2151 mStorage->setFileName( filename ); 2151 mStorage->setFileName( filename );
2152 bool success; 2152 bool success;
2153 success = mStorage->save(); 2153 success = mStorage->save();
2154 if ( !success ) { 2154 if ( !success ) {
2155 return false; 2155 return false;
2156 } 2156 }
2157 if ( filename == MainWindow::defaultFileName() ) { 2157 if ( filename == MainWindow::defaultFileName() ) {
2158 setLoadedFileVersion( lfv ); 2158 setLoadedFileVersion( lfv );
2159 watchSavedFile(); 2159 watchSavedFile();
2160 } 2160 }
2161 return true; 2161 return true;
2162} 2162}
2163 2163
2164void CalendarView::closeCalendar() 2164void CalendarView::closeCalendar()
2165{ 2165{
2166 2166
2167 // child windows no longer valid 2167 // child windows no longer valid
2168 clearAllViews(); 2168 clearAllViews();
2169 emit closingDown(); 2169 emit closingDown();
2170 2170
2171 mCalendar->close(); 2171 mCalendar->close();
2172 setModified(false); 2172 setModified(false);
2173 updateView(); 2173 updateView();
2174} 2174}
2175 2175
2176void CalendarView::archiveCalendar() 2176void CalendarView::archiveCalendar()
2177{ 2177{
2178 mDialogManager->showArchiveDialog(); 2178 mDialogManager->showArchiveDialog();
2179} 2179}
2180 2180
2181 2181
2182void CalendarView::readSettings() 2182void CalendarView::readSettings()
2183{ 2183{
2184 2184
2185 2185
2186 // mViewManager->showAgendaView(); 2186 // mViewManager->showAgendaView();
2187 QString str; 2187 QString str;
2188 //qDebug("CalendarView::readSettings() "); 2188 //qDebug("CalendarView::readSettings() ");
2189 // read settings from the KConfig, supplying reasonable 2189 // read settings from the KConfig, supplying reasonable
2190 // defaults where none are to be found 2190 // defaults where none are to be found
2191 KConfig *config = KOGlobals::config(); 2191 KConfig *config = KOGlobals::config();
2192#ifndef KORG_NOSPLITTER 2192#ifndef KORG_NOSPLITTER
2193 config->setGroup("KOrganizer Geometry"); 2193 config->setGroup("KOrganizer Geometry");
2194 2194
2195 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2195 QValueList<int> sizes = config->readIntListEntry("Separator1");
2196 if (sizes.count() != 2) { 2196 if (sizes.count() != 2) {
2197 sizes << mDateNavigator->minimumSizeHint().width(); 2197 sizes << mDateNavigator->minimumSizeHint().width();
2198 sizes << 300; 2198 sizes << 300;
2199 } 2199 }
2200 mPanner->setSizes(sizes); 2200 mPanner->setSizes(sizes);
2201 2201
2202 sizes = config->readIntListEntry("Separator2"); 2202 sizes = config->readIntListEntry("Separator2");
2203 if ( ( mResourceView && sizes.count() == 4 ) || 2203 if ( ( mResourceView && sizes.count() == 4 ) ||
2204 ( !mResourceView && sizes.count() == 3 ) ) { 2204 ( !mResourceView && sizes.count() == 3 ) ) {
2205 mLeftSplitter->setSizes(sizes); 2205 mLeftSplitter->setSizes(sizes);
2206 } 2206 }
2207#endif 2207#endif
2208 globalFlagBlockAgenda = 1; 2208 globalFlagBlockAgenda = 1;
2209 mViewManager->showAgendaView(); 2209 mViewManager->showAgendaView();
2210 //mViewManager->readSettings( config ); 2210 //mViewManager->readSettings( config );
2211 mTodoList->restoreLayout(config,QString("Todo Layout")); 2211 mTodoList->restoreLayout(config,QString("Todo Layout"));
2212 readFilterSettings(config); 2212 readFilterSettings(config);
2213 2213
2214#ifdef DESKTOP_VERSION 2214#ifdef DESKTOP_VERSION
2215 config->setGroup("WidgetLayout"); 2215 config->setGroup("WidgetLayout");
2216 QStringList list; 2216 QStringList list;
2217 list = config->readListEntry("MainLayout"); 2217 list = config->readListEntry("MainLayout");
2218 int x,y,w,h; 2218 int x,y,w,h;
2219 if ( ! list.isEmpty() ) { 2219 if ( ! list.isEmpty() ) {
2220 x = list[0].toInt(); 2220 x = list[0].toInt();
2221 y = list[1].toInt(); 2221 y = list[1].toInt();
2222 w = list[2].toInt(); 2222 w = list[2].toInt();
2223 h = list[3].toInt(); 2223 h = list[3].toInt();
2224 KApplication::testCoords( &x,&y,&w,&h ); 2224 KApplication::testCoords( &x,&y,&w,&h );
2225 topLevelWidget()->setGeometry(x,y,w,h); 2225 topLevelWidget()->setGeometry(x,y,w,h);
2226 2226
2227 } else { 2227 } else {
2228 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2228 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2229 } 2229 }
2230 list = config->readListEntry("EditEventLayout"); 2230 list = config->readListEntry("EditEventLayout");
2231 if ( ! list.isEmpty() ) { 2231 if ( ! list.isEmpty() ) {
2232 x = list[0].toInt(); 2232 x = list[0].toInt();
2233 y = list[1].toInt(); 2233 y = list[1].toInt();
2234 w = list[2].toInt(); 2234 w = list[2].toInt();
2235 h = list[3].toInt(); 2235 h = list[3].toInt();
2236 KApplication::testCoords( &x,&y,&w,&h ); 2236 KApplication::testCoords( &x,&y,&w,&h );
2237 mEventEditor->setGeometry(x,y,w,h); 2237 mEventEditor->setGeometry(x,y,w,h);
2238 2238
2239 } 2239 }
2240 list = config->readListEntry("EditTodoLayout"); 2240 list = config->readListEntry("EditTodoLayout");
2241 if ( ! list.isEmpty() ) { 2241 if ( ! list.isEmpty() ) {
2242 x = list[0].toInt(); 2242 x = list[0].toInt();
2243 y = list[1].toInt(); 2243 y = list[1].toInt();
2244 w = list[2].toInt(); 2244 w = list[2].toInt();
2245 h = list[3].toInt(); 2245 h = list[3].toInt();
2246 KApplication::testCoords( &x,&y,&w,&h ); 2246 KApplication::testCoords( &x,&y,&w,&h );
2247 mTodoEditor->setGeometry(x,y,w,h); 2247 mTodoEditor->setGeometry(x,y,w,h);
2248 2248
2249 } 2249 }
2250 list = config->readListEntry("ViewerLayout"); 2250 list = config->readListEntry("ViewerLayout");
2251 if ( ! list.isEmpty() ) { 2251 if ( ! list.isEmpty() ) {
2252 x = list[0].toInt(); 2252 x = list[0].toInt();
2253 y = list[1].toInt(); 2253 y = list[1].toInt();
2254 w = list[2].toInt(); 2254 w = list[2].toInt();
2255 h = list[3].toInt(); 2255 h = list[3].toInt();
2256 KApplication::testCoords( &x,&y,&w,&h ); 2256 KApplication::testCoords( &x,&y,&w,&h );
2257 getEventViewerDialog()->setGeometry(x,y,w,h); 2257 getEventViewerDialog()->setGeometry(x,y,w,h);
2258 } 2258 }
2259#endif 2259#endif
2260 config->setGroup( "Views" ); 2260 config->setGroup( "Views" );
2261 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 2261 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
2262 2262
2263 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 2263 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
2264 2264
2265 int resetval = 0; 2265 int resetval = 0;
2266 int maxVal = 0; 2266 int maxVal = 0;
2267 if (sizes.count() != 3) { 2267 if (sizes.count() != 3) {
2268 if ( KOPrefs::instance()->mVerticalScreen ) { 2268 if ( KOPrefs::instance()->mVerticalScreen ) {
2269 resetval = mDateNavigator->sizeHint().width()+2; 2269 resetval = mDateNavigator->sizeHint().width()+2;
2270 } else { 2270 } else {
2271 resetval = mDateNavigator->sizeHint().height()+2; 2271 resetval = mDateNavigator->sizeHint().height()+2;
2272 } 2272 }
2273 } 2273 }
2274 if ( resetval ) { 2274 if ( resetval ) {
2275 sizes.clear(); 2275 sizes.clear();
2276 if ( KOPrefs::instance()->mVerticalScreen ) { 2276 if ( KOPrefs::instance()->mVerticalScreen ) {
2277 maxVal = QApplication::desktop()->width() -10; 2277 maxVal = QApplication::desktop()->width() -10;
2278 } else { 2278 } else {
2279 maxVal = QApplication::desktop()->height()-10; 2279 maxVal = QApplication::desktop()->height()-10;
2280 } 2280 }
2281 sizes << resetval; 2281 sizes << resetval;
2282 if ( maxVal < resetval + resetval) 2282 if ( maxVal < resetval + resetval)
2283 resetval = maxVal - resetval; 2283 resetval = maxVal - resetval;
2284 sizes << resetval; 2284 sizes << resetval;
2285 sizes << 100; 2285 sizes << 100;
2286 } 2286 }
2287 mLeftFrame->setSizes(sizes); 2287 mLeftFrame->setSizes(sizes);
2288 sizes = config->readIntListEntry("Main Splitter Frame"); 2288 sizes = config->readIntListEntry("Main Splitter Frame");
2289 resetval = 0; 2289 resetval = 0;
2290 maxVal = 0; 2290 maxVal = 0;
2291 if (sizes.count() != 2) { 2291 if (sizes.count() != 2) {
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 874fc6a..4322299 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -1,219 +1,220 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef KOFILTERVIEW_H 23#ifndef KOFILTERVIEW_H
24#define KOFILTERVIEW_H 24#define KOFILTERVIEW_H
25 25
26#include <qstring.h> 26#include <qstring.h>
27#include <qcheckbox.h> 27#include <qcheckbox.h>
28#include <qapplication.h>
28#include <qradiobutton.h> 29#include <qradiobutton.h>
29#include <qlayout.h> 30#include <qlayout.h>
30#include <qlabel.h> 31#include <qlabel.h>
31#include <qdialog.h> 32#include <qdialog.h>
32#include <qscrollview.h> 33#include <qscrollview.h>
33#include <qpushbutton.h> 34#include <qpushbutton.h>
34#include <kconfig.h> 35#include <kconfig.h>
35#include "kofilterview_base.h" 36#include "kofilterview_base.h"
36 37
37#include <libkcal/calfilter.h> 38#include <libkcal/calfilter.h>
38 39
39#include <kurlrequester.h> 40#include <kurlrequester.h>
40#include <klineedit.h> 41#include <klineedit.h>
41#include <kglobal.h> 42#include <kglobal.h>
42#include <kmessagebox.h> 43#include <kmessagebox.h>
43 44
44class QGridLayout; 45class QGridLayout;
45 46
46using namespace KCal; 47using namespace KCal;
47 48
48class KONewCalPrefs : public QDialog 49class KONewCalPrefs : public QDialog
49{ 50{
50 Q_OBJECT 51 Q_OBJECT
51 public: 52 public:
52 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) : 53 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) :
53 QDialog( parent, name, true ) 54 QDialog( parent, name, true )
54 { 55 {
55 setCaption( i18n("Add new Calendar") ); 56 setCaption( i18n("Add new Calendar") );
56 QVBoxLayout* lay = new QVBoxLayout( this ); 57 QVBoxLayout* lay = new QVBoxLayout( this );
57 lay->setSpacing( 3 ); 58 lay->setSpacing( 3 );
58 lay->setMargin( 3 ); 59 lay->setMargin( 3 );
59 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this ); 60 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this );
60 lay->addWidget( lab ); 61 lay->addWidget( lab );
61 nameE = new KLineEdit( this ); 62 nameE = new KLineEdit( this );
62 lay->addWidget( nameE ); 63 lay->addWidget( nameE );
63 lab = new QLabel( i18n("<b>Local ical (*.ics) file:</b>"), this ); 64 lab = new QLabel( i18n("<b>Local ical (*.ics) file:</b>"), this );
64 lay->addWidget( lab ); 65 lay->addWidget( lab );
65 url = new KURLRequester ( this ); 66 url = new KURLRequester ( this );
66 lay->addWidget( url ); 67 lay->addWidget( url );
67 QPushButton * ok = new QPushButton( i18n("OK"), this ); 68 QPushButton * ok = new QPushButton( i18n("OK"), this );
68 lay->addWidget( ok ); 69 lay->addWidget( ok );
69 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 70 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
70 lay->addWidget( cancel ); 71 lay->addWidget( cancel );
71 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) ); 72 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) );
72 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 73 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
73 int minwid = 220; 74 int minwid = 220;
74 if ( QApplication::desktop()->width() >= 320 ) minwid = 300; 75 if ( QApplication::desktop()->width() >= 320 ) minwid = 300;
75 setMinimumWidth( minwid ); 76 setMinimumWidth( minwid );
76 resize(sizeHint() ); 77 resize(sizeHint() );
77 } 78 }
78 79
79 QString calName() { return nameE->text(); } 80 QString calName() { return nameE->text(); }
80 QString calFileName() { return url->url(); } 81 QString calFileName() { return url->url(); }
81 82
82public slots: 83public slots:
83void checkValid() { 84void checkValid() {
84 if ( nameE->text().isEmpty() ) { 85 if ( nameE->text().isEmpty() ) {
85 KMessageBox::information( this, i18n("Sorry, the calendar name is empty!") ); 86 KMessageBox::information( this, i18n("Sorry, the calendar name is empty!") );
86 nameE->setText( "LPQJ_"+ QString::number( QTime::currentTime().msec () )); 87 nameE->setText( "LPQJ_"+ QString::number( QTime::currentTime().msec () ));
87 return; 88 return;
88 } 89 }
89 if ( url->url().isEmpty() ) { 90 if ( url->url().isEmpty() ) {
90 KMessageBox::information( this, i18n("Sorry, the file name is empty!") ); 91 KMessageBox::information( this, i18n("Sorry, the file name is empty!") );
91 return; 92 return;
92 } 93 }
93 accept(); 94 accept();
94} 95}
95 96
96public: 97public:
97 KLineEdit* nameE; 98 KLineEdit* nameE;
98 KURLRequester *url; 99 KURLRequester *url;
99}; 100};
100 101
101class KOCalButton : public QPushButton 102class KOCalButton : public QPushButton
102{ 103{
103 Q_OBJECT 104 Q_OBJECT
104 public: 105 public:
105 KOCalButton( QWidget *parent=0, const char *name=0 ) : 106 KOCalButton( QWidget *parent=0, const char *name=0 ) :
106 QPushButton( parent, name) 107 QPushButton( parent, name)
107 { 108 {
108 connect( this, SIGNAL( clicked() ), 109 connect( this, SIGNAL( clicked() ),
109 SLOT( bottonClicked() )); 110 SLOT( bottonClicked() ));
110 mNumber = -1; 111 mNumber = -1;
111 setFocusPolicy(NoFocus); 112 setFocusPolicy(NoFocus);
112 } 113 }
113 void setNum ( int num ) {mNumber = num; } 114 void setNum ( int num ) {mNumber = num; }
114 signals: 115 signals:
115 void selectNum ( int ); 116 void selectNum ( int );
116private: 117private:
117 int mNumber; 118 int mNumber;
118 void keyPressEvent ( QKeyEvent * e ) 119 void keyPressEvent ( QKeyEvent * e )
119 { 120 {
120 e->ignore(); 121 e->ignore();
121 } 122 }
122 123
123private slots : 124private slots :
124 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); } 125 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); }
125}; 126};
126class KOCalCheckButton : public QCheckBox 127class KOCalCheckButton : public QCheckBox
127{ 128{
128 Q_OBJECT 129 Q_OBJECT
129 public: 130 public:
130 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) : 131 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) :
131 QCheckBox( parent, name) 132 QCheckBox( parent, name)
132 { 133 {
133 connect( this, SIGNAL( toggled ( bool ) ), 134 connect( this, SIGNAL( toggled ( bool ) ),
134 SLOT( bottonClicked( bool ) )); 135 SLOT( bottonClicked( bool ) ));
135 mNumber = -1; 136 mNumber = -1;
136 setFocusPolicy(NoFocus); 137 setFocusPolicy(NoFocus);
137 //setMaximumWidth( 10 ); 138 //setMaximumWidth( 10 );
138 139
139 } 140 }
140 void setNum ( int num ) {mNumber = num; } 141 void setNum ( int num ) {mNumber = num; }
141 signals: 142 signals:
142 void selectNum ( int, bool ); 143 void selectNum ( int, bool );
143private: 144private:
144 int mNumber; 145 int mNumber;
145 void keyPressEvent ( QKeyEvent * e ) 146 void keyPressEvent ( QKeyEvent * e )
146 { 147 {
147 e->ignore(); 148 e->ignore();
148 } 149 }
149 150
150private slots : 151private slots :
151 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); } 152 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
152}; 153};
153 154
154class KOCalRadioButton : public QRadioButton 155class KOCalRadioButton : public QRadioButton
155{ 156{
156 Q_OBJECT 157 Q_OBJECT
157 public: 158 public:
158 KOCalRadioButton( QWidget *parent=0, const char *name=0 ) : 159 KOCalRadioButton( QWidget *parent=0, const char *name=0 ) :
159 QRadioButton( parent, name) 160 QRadioButton( parent, name)
160 { 161 {
161 connect( this, SIGNAL( toggled ( bool ) ), 162 connect( this, SIGNAL( toggled ( bool ) ),
162 SLOT( bottonClicked( bool ) )); 163 SLOT( bottonClicked( bool ) ));
163 mNumber = -1; 164 mNumber = -1;
164 setFocusPolicy(NoFocus); 165 setFocusPolicy(NoFocus);
165 //setMaximumWidth( 10 ); 166 //setMaximumWidth( 10 );
166 167
167 } 168 }
168 int num() { return mNumber;} 169 int num() { return mNumber;}
169 void setNum ( int num ) {mNumber = num; } 170 void setNum ( int num ) {mNumber = num; }
170 signals: 171 signals:
171 void selectNum ( int ); 172 void selectNum ( int );
172private: 173private:
173 int mNumber; 174 int mNumber;
174 void keyPressEvent ( QKeyEvent * e ) 175 void keyPressEvent ( QKeyEvent * e )
175 { 176 {
176 e->ignore(); 177 e->ignore();
177 } 178 }
178 179
179private slots : 180private slots :
180 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber); } 181 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber); }
181}; 182};
182 183
183 184
184 185
185class KOFilterView : public KOFilterView_base 186class KOFilterView : public KOFilterView_base
186{ 187{
187 Q_OBJECT 188 Q_OBJECT
188 public: 189 public:
189 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0); 190 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0);
190 ~KOFilterView(); 191 ~KOFilterView();
191 192
192 void updateFilters(); 193 void updateFilters();
193 194
194 bool filtersEnabled(); 195 bool filtersEnabled();
195 void setFiltersEnabled(bool); 196 void setFiltersEnabled(bool);
196 CalFilter *selectedFilter(); 197 CalFilter *selectedFilter();
197 void setSelectedFilter(QString); 198 void setSelectedFilter(QString);
198 void setSelectedFilter( int ); 199 void setSelectedFilter( int );
199 200
200 signals: 201 signals:
201 void filterChanged(); 202 void filterChanged();
202 void editFilters(); 203 void editFilters();
203 204
204 private: 205 private:
205 QPtrList<CalFilter> *mFilters; 206 QPtrList<CalFilter> *mFilters;
206}; 207};
207 208
208class KOCalEditView : public QScrollView 209class KOCalEditView : public QScrollView
209{ 210{
210 Q_OBJECT 211 Q_OBJECT
211 public: 212 public:
212 KOCalEditView( QWidget* parent=0,const char* name=0); 213 KOCalEditView( QWidget* parent=0,const char* name=0);
213 ~KOCalEditView(); 214 ~KOCalEditView();
214 int addCalendar( QString calName, QString fileName, bool ask = true ); 215 int addCalendar( QString calName, QString fileName, bool ask = true );
215 int getBirtdayID(); 216 int getBirtdayID();
216 public slots: 217 public slots:
217 void addCal(); 218 void addCal();
218 void enableAll(); 219 void enableAll();
219 void enableAlarm(); 220 void enableAlarm();
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 264cf28..4fc447e 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -1603,409 +1603,411 @@ void KOMonthView::showDates(const QDate &start, const QDate &)
1603 1603
1604 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) { 1604 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1605 mWeekStartsMonday = true; 1605 mWeekStartsMonday = true;
1606 } 1606 }
1607 int startWeekDay = mWeekStartsMonday ? 1 : 7; 1607 int startWeekDay = mWeekStartsMonday ? 1 : 7;
1608 1608
1609 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 1609 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
1610 mStartDate = mStartDate.addDays( -1 ); 1610 mStartDate = mStartDate.addDays( -1 );
1611 } 1611 }
1612 bool primary = false; 1612 bool primary = false;
1613 uint i; 1613 uint i;
1614 for( i = 0; i < (*cells).size(); ++i ) { 1614 for( i = 0; i < (*cells).size(); ++i ) {
1615 QDate date = mStartDate.addDays( i ); 1615 QDate date = mStartDate.addDays( i );
1616 (*cells)[i]->setDate( date ); 1616 (*cells)[i]->setDate( date );
1617 1617
1618#ifndef KORG_NOPLUGINS 1618#ifndef KORG_NOPLUGINS
1619 // add holiday, if present 1619 // add holiday, if present
1620 QString hstring(KOCore::self()->holiday(date)); 1620 QString hstring(KOCore::self()->holiday(date));
1621 (*cells)[i]->setHoliday( hstring ); 1621 (*cells)[i]->setHoliday( hstring );
1622#endif 1622#endif
1623 1623
1624 } 1624 }
1625 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 1625 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
1626 for( i = 0; i < weekNum; ++i ) { 1626 for( i = 0; i < weekNum; ++i ) {
1627 int wno; 1627 int wno;
1628 // remember, according to ISO 8601, the first week of the year is the 1628 // remember, according to ISO 8601, the first week of the year is the
1629 // first week that contains a thursday. Thus we must subtract off 4, 1629 // first week that contains a thursday. Thus we must subtract off 4,
1630 // not just 1. 1630 // not just 1.
1631 int dayOfYear = date.dayOfYear(); 1631 int dayOfYear = date.dayOfYear();
1632 if (dayOfYear % 7 != 0) 1632 if (dayOfYear % 7 != 0)
1633 wno = dayOfYear / 7 + 1; 1633 wno = dayOfYear / 7 + 1;
1634 else 1634 else
1635 wno =dayOfYear / 7; 1635 wno =dayOfYear / 7;
1636 (*weekLabels)[i]->setWeekNum( wno ); 1636 (*weekLabels)[i]->setWeekNum( wno );
1637 date = date.addDays( 7 ); 1637 date = date.addDays( 7 );
1638 } 1638 }
1639 updateView(); 1639 updateView();
1640} 1640}
1641 1641
1642void KOMonthView::showEvents(QPtrList<Event>) 1642void KOMonthView::showEvents(QPtrList<Event>)
1643{ 1643{
1644 qDebug("KOMonthView::selectEvents is not implemented yet. "); 1644 qDebug("KOMonthView::selectEvents is not implemented yet. ");
1645} 1645}
1646 1646
1647void KOMonthView::changeEventDisplay(Event *, int) 1647void KOMonthView::changeEventDisplay(Event *, int)
1648{ 1648{
1649 // this should be re-written to be much more efficient, but this 1649 // this should be re-written to be much more efficient, but this
1650 // quick-and-dirty-hack gets the job done for right now. 1650 // quick-and-dirty-hack gets the job done for right now.
1651 //qDebug("KOMonthView::changeEventDisplay "); 1651 //qDebug("KOMonthView::changeEventDisplay ");
1652 updateView(); 1652 updateView();
1653} 1653}
1654 1654
1655void KOMonthView::updateView() 1655void KOMonthView::updateView()
1656{ 1656{
1657 1657
1658 if ( !updatePossible ) 1658 if ( !updatePossible )
1659 return; 1659 return;
1660 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU "); 1660 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ");
1661 //QTime ti; 1661 //QTime ti;
1662 //ti.start(); 1662 //ti.start();
1663 clearSelection(); 1663 clearSelection();
1664 QPtrVector<MonthViewCell> *cells; 1664 QPtrVector<MonthViewCell> *cells;
1665 if ( mShowWeekView ) { 1665 if ( mShowWeekView ) {
1666 cells = &mCellsW; 1666 cells = &mCellsW;
1667 } else { 1667 } else {
1668 cells = &mCells; 1668 cells = &mCells;
1669 } 1669 }
1670#if 1 1670#if 1
1671 int i; 1671 int i;
1672 int timeSpan = (*cells).size()-1; 1672 int timeSpan = (*cells).size()-1;
1673 if ( KOPrefs::instance()->mMonthViewWeek ) 1673 if ( KOPrefs::instance()->mMonthViewWeek )
1674 timeSpan = 6; 1674 timeSpan = 6;
1675 for( i = 0; i < timeSpan + 1; ++i ) { 1675 for( i = 0; i < timeSpan + 1; ++i ) {
1676 (*cells)[i]->startUpdateCell(); 1676 (*cells)[i]->startUpdateCell();
1677 } 1677 }
1678 1678
1679 QPtrList<Event> events = calendar()->events(); 1679 QPtrList<Event> events = calendar()->events();
1680 Event *event; 1680 Event *event;
1681 QDateTime dt; 1681 QDateTime dt;
1682 bool ok; 1682 bool ok;
1683 QDate endDate = mStartDate.addDays( timeSpan ); 1683 QDate endDate = mStartDate.addDays( timeSpan );
1684 for( event = events.first(); event; event = events.next() ) { // for event 1684 for( event = events.first(); event; event = events.next() ) { // for event
1685 if ( event->doesRecur() ) { 1685 if ( event->doesRecur() ) {
1686 bool last; 1686 bool last;
1687 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1687 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1688 QDateTime incidenceEnd; 1688 QDateTime incidenceEnd;
1689 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1689 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1690 bool invalid = false; 1690 bool invalid = false;
1691 while( true ) { 1691 while( true ) {
1692 if ( incidenceStart.isValid() ) { 1692 if ( incidenceStart.isValid() ) {
1693 incidenceEnd = incidenceStart.addDays( eventlen ); 1693 incidenceEnd = incidenceStart.addDays( eventlen );
1694 int st = incidenceStart.date().daysTo( endDate ); 1694 int st = incidenceStart.date().daysTo( endDate );
1695 if ( st >= 0 ) { // start before timeend 1695 if ( st >= 0 ) { // start before timeend
1696 int end = mStartDate.daysTo( incidenceEnd.date() ); 1696 int end = mStartDate.daysTo( incidenceEnd.date() );
1697 if ( end >= 0 ) { // end after timestart --- got one! 1697 if ( end >= 0 ) { // end after timestart --- got one!
1698 //normalize 1698 //normalize
1699 st = timeSpan - st; 1699 st = timeSpan - st;
1700 if ( st < 0 ) st = 0; 1700 if ( st < 0 ) st = 0;
1701 if ( end > timeSpan ) end = timeSpan; 1701 if ( end > timeSpan ) end = timeSpan;
1702 int iii; 1702 int iii;
1703 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1703 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1704 for ( iii = st;iii<= end;++iii) 1704 for ( iii = st;iii<= end;++iii)
1705 (*cells)[iii]->insertEvent( event ); 1705 (*cells)[iii]->insertEvent( event );
1706 } 1706 }
1707 } 1707 }
1708 } else { 1708 } else {
1709 if ( invalid ) 1709 if ( invalid )
1710 break; 1710 break;
1711 invalid = true; 1711 invalid = true;
1712 //qDebug("invalid %s", event->summary().latin1()); 1712 //qDebug("invalid %s", event->summary().latin1());
1713 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; 1713 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
1714 } 1714 }
1715 if ( last ) 1715 if ( last )
1716 break; 1716 break;
1717 bool ok; 1717 bool ok;
1718 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1718 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1719 if ( ! ok ) 1719 if ( ! ok )
1720 break; 1720 break;
1721 if ( incidenceStart.date() > endDate ) 1721 if ( incidenceStart.date() > endDate )
1722 break; 1722 break;
1723 } 1723 }
1724 } else { // no recur 1724 } else { // no recur
1725 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") ) 1725 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") )
1726 if ( event->uid().left(15) == QString("last-syncEvent-") ) 1726 if ( event->uid().left(15) == QString("last-syncEvent-") )
1727 continue; 1727 continue;
1728 int st = event->dtStart().date().daysTo( endDate ); 1728 int st = event->dtStart().date().daysTo( endDate );
1729 if ( st >= 0 ) { // start before timeend 1729 if ( st >= 0 ) { // start before timeend
1730 int end = mStartDate.daysTo( event->dtEnd().date() ); 1730 int end = mStartDate.daysTo( event->dtEnd().date() );
1731 if ( end >= 0 ) { // end after timestart --- got one! 1731 if ( end >= 0 ) { // end after timestart --- got one!
1732 //normalize 1732 //normalize
1733 st = timeSpan - st; 1733 st = timeSpan - st;
1734 if ( st < 0 ) st = 0; 1734 if ( st < 0 ) st = 0;
1735 if ( end > timeSpan ) end = timeSpan; 1735 if ( end > timeSpan ) end = timeSpan;
1736 int iii; 1736 int iii;
1737 for ( iii = st;iii<= end;++iii) 1737 for ( iii = st;iii<= end;++iii)
1738 (*cells)[iii]->insertEvent( event ); 1738 (*cells)[iii]->insertEvent( event );
1739 } 1739 }
1740 } 1740 }
1741 } 1741 }
1742 } 1742 }
1743 // insert due todos 1743 // insert due todos
1744 QPtrList<Todo> todos = calendar()->todos( ); 1744 QPtrList<Todo> todos = calendar()->todos( );
1745 Todo *todo; 1745 Todo *todo;
1746 for(todo = todos.first(); todo; todo = todos.next()) { 1746 for(todo = todos.first(); todo; todo = todos.next()) {
1747 //insertTodo( todo ); 1747 //insertTodo( todo );
1748 if ( todo->hasDueDate() ) { 1748 if ( todo->hasDueDate() ) {
1749 int day = mStartDate.daysTo( todo->dtDue().date() ); 1749 int day = mStartDate.daysTo( todo->dtDue().date() );
1750 if ( day >= 0 && day < timeSpan + 1) { 1750 if ( day >= 0 && day < timeSpan + 1) {
1751 (*cells)[day]->insertTodo( todo ); 1751 (*cells)[day]->insertTodo( todo );
1752 } 1752 }
1753 } 1753 }
1754 } 1754 }
1755 1755
1756 for( i = 0; i < timeSpan+1; ++i ) { 1756 for( i = 0; i < timeSpan+1; ++i ) {
1757 (*cells)[i]->finishUpdateCell(); 1757 (*cells)[i]->finishUpdateCell();
1758 } 1758 }
1759 processSelectionChange(); 1759 processSelectionChange();
1760 //qApp->processEvents(); 1760 //qApp->processEvents();
1761 for( i = 0; i < timeSpan+1; ++i ) { 1761 for( i = 0; i < timeSpan+1; ++i ) {
1762 //(*cells)[i]->repaintfinishUpdateCell(); 1762 //(*cells)[i]->repaintfinishUpdateCell();
1763 QTimer::singleShot( 0, (*cells)[i], SLOT ( repaintfinishUpdateCell() ) ); 1763 QTimer::singleShot( 0, (*cells)[i], SLOT ( repaintfinishUpdateCell() ) );
1764 } 1764 }
1765 setKeyBFocus(); 1765 setKeyBFocus();
1766#else 1766#else
1767 // old code 1767 // old code
1768 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1768 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1769 int i; 1769 int i;
1770 for( i = 0; i < (*cells).count(); ++i ) { 1770 for( i = 0; i < (*cells).count(); ++i ) {
1771 (*cells)[i]->updateCell(); 1771 (*cells)[i]->updateCell();
1772 } 1772 }
1773 1773
1774 //qDebug("KOMonthView::updateView() "); 1774 //qDebug("KOMonthView::updateView() ");
1775 processSelectionChange(); 1775 processSelectionChange();
1776 // qDebug("---------------------------------------------------------------------+ "); 1776 // qDebug("---------------------------------------------------------------------+ ");
1777 (*cells)[0]->setFocus(); 1777 (*cells)[0]->setFocus();
1778#endif 1778#endif
1779 1779
1780 //qDebug("update time %d ", ti.elapsed()); 1780 //qDebug("update time %d ", ti.elapsed());
1781} 1781}
1782 1782
1783void KOMonthView::setKeyBoardFocus() 1783void KOMonthView::setKeyBoardFocus()
1784{ 1784{
1785 //qDebug("KOMonthView::setKeyBoardFocus() "); 1785 //qDebug("KOMonthView::setKeyBoardFocus() ");
1786 bool shootAgain = false; 1786 bool shootAgain = false;
1787 if ( mShowWeekView ) { 1787 if ( mShowWeekView ) {
1788 shootAgain = !mWeekLabelsW[1]->hasFocus(); 1788 shootAgain = !mWeekLabelsW[1]->hasFocus();
1789 mWeekLabelsW[1]->setFocus(); 1789 mWeekLabelsW[1]->setFocus();
1790 } 1790 }
1791 else { 1791 else {
1792 shootAgain = !mWeekLabels[mNumWeeks]->hasFocus(); 1792 shootAgain = !mWeekLabels[mNumWeeks]->hasFocus();
1793 mWeekLabels[mNumWeeks]->setFocus(); 1793 mWeekLabels[mNumWeeks]->setFocus();
1794 } 1794 }
1795 if ( shootAgain ) { 1795 --mKBFcounter;
1796 QTimer::singleShot( 0, this, SLOT ( setKeyBFocus() ) ); 1796 if ( shootAgain && mKBFcounter > 0 ) {
1797 QTimer::singleShot( 50, this, SLOT ( setKeyBoardFocus() ) );
1797 } 1798 }
1798} 1799}
1799void KOMonthView::setKeyBFocus() 1800void KOMonthView::setKeyBFocus()
1800{ 1801{
1801 //qDebug("KOMonthView::setKeyBFocus() "); 1802 //qDebug("KOMonthView::setKeyBFocus() ");
1803 mKBFcounter = 10;
1802 QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) ); 1804 QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) );
1803} 1805}
1804void KOMonthView::resizeEvent(QResizeEvent * e) 1806void KOMonthView::resizeEvent(QResizeEvent * e)
1805{ 1807{
1806 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); 1808 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height());
1807 if ( isVisible() ) { 1809 if ( isVisible() ) {
1808 //qDebug("KOMonthView::isVisible "); 1810 //qDebug("KOMonthView::isVisible ");
1809 slotComputeLayout(); 1811 slotComputeLayout();
1810 } else 1812 } else
1811 mComputeLayoutTimer->start( 100 ); 1813 mComputeLayoutTimer->start( 100 );
1812} 1814}
1813 1815
1814void KOMonthView::slotComputeLayout() 1816void KOMonthView::slotComputeLayout()
1815{ 1817{
1816 mComputeLayoutTimer->stop(); 1818 mComputeLayoutTimer->stop();
1817 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() ); 1819 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() );
1818 computeLayout(); 1820 computeLayout();
1819 clPending = true; 1821 clPending = true;
1820 setKeyBFocus(); 1822 setKeyBFocus();
1821} 1823}
1822void KOMonthView::computeLayoutWeek() 1824void KOMonthView::computeLayoutWeek()
1823{ 1825{
1824 static int lastWid = 0; 1826 static int lastWid = 0;
1825 static int lastHei = 0; 1827 static int lastHei = 0;
1826 int daysToShow; 1828 int daysToShow;
1827 bool combinedSatSun = false; 1829 bool combinedSatSun = false;
1828 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1830 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1829 daysToShow = 6; 1831 daysToShow = 6;
1830 combinedSatSun = true; 1832 combinedSatSun = true;
1831 } 1833 }
1832 int tWid = topLevelWidget()->size().width(); 1834 int tWid = topLevelWidget()->size().width();
1833 int tHei = topLevelWidget()->size().height(); 1835 int tHei = topLevelWidget()->size().height();
1834 1836
1835 int wid = width();//e 1837 int wid = width();//e
1836 int hei = height()-1-mNavigatorBar->height(); 1838 int hei = height()-1-mNavigatorBar->height();
1837 1839
1838 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1840 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1839 return; 1841 return;
1840 1842
1841 if ( lastWid == width() && lastHei == height() ) { 1843 if ( lastWid == width() && lastHei == height() ) {
1842 //qDebug("KOListWeekView::No compute layout needed "); 1844 //qDebug("KOListWeekView::No compute layout needed ");
1843 return; 1845 return;
1844 } 1846 }
1845 lastWid = width(); 1847 lastWid = width();
1846 lastHei = height(); 1848 lastHei = height();
1847 1849
1848 1850
1849 if ( wid < hei ) 1851 if ( wid < hei )
1850 daysToShow = 2; 1852 daysToShow = 2;
1851 else 1853 else
1852 daysToShow = 3; 1854 daysToShow = 3;
1853 mShowSatSunComp = true; 1855 mShowSatSunComp = true;
1854 combinedSatSun = true; 1856 combinedSatSun = true;
1855 1857
1856 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ "); 1858 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ ");
1857 QFontMetrics fm ( mWeekLabels[0]->font() ); 1859 QFontMetrics fm ( mWeekLabels[0]->font() );
1858 int weeklabelwid = fm.width( "888" ); 1860 int weeklabelwid = fm.width( "888" );
1859 wid -= weeklabelwid; 1861 wid -= weeklabelwid;
1860 1862
1861 int colWid = wid / daysToShow; 1863 int colWid = wid / daysToShow;
1862 int lastCol = wid - ( colWid*6 ); 1864 int lastCol = wid - ( colWid*6 );
1863 int dayLabelHei = mDayLabelsW[0]->sizeHint().height(); 1865 int dayLabelHei = mDayLabelsW[0]->sizeHint().height();
1864 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); 1866 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow );
1865 int colModulo = wid % daysToShow; 1867 int colModulo = wid % daysToShow;
1866 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; 1868 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1;
1867 //qDebug("rowmod %d ", rowModulo); 1869 //qDebug("rowmod %d ", rowModulo);
1868 int i; 1870 int i;
1869 int x,y,w,h; 1871 int x,y,w,h;
1870 x= 0; 1872 x= 0;
1871 y= 0; 1873 y= 0;
1872 w = colWid; 1874 w = colWid;
1873 h = dayLabelHei ; 1875 h = dayLabelHei ;
1874 for ( i = 0; i < 7; i++) { 1876 for ( i = 0; i < 7; i++) {
1875 if ( i && !( i % daysToShow) && i < 6) { 1877 if ( i && !( i % daysToShow) && i < 6) {
1876 y += hei/(5-daysToShow); 1878 y += hei/(5-daysToShow);
1877 x = 0; 1879 x = 0;
1878 w = colWid; 1880 w = colWid;
1879 } 1881 }
1880 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1882 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1881 ++w; 1883 ++w;
1882 } 1884 }
1883 if ( i >= 5 ) { 1885 if ( i >= 5 ) {
1884 int wi = width() - x - weeklabelwid; 1886 int wi = width() - x - weeklabelwid;
1885 if ( i == 5 ) { 1887 if ( i == 5 ) {
1886 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi/2+wi%2,h); 1888 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi/2+wi%2,h);
1887 } else { 1889 } else {
1888 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi,h); 1890 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi,h);
1889 } 1891 }
1890 x = x - w + wi - (wi/2 ); 1892 x = x - w + wi - (wi/2 );
1891 } 1893 }
1892 else { 1894 else {
1893 int wi = w; 1895 int wi = w;
1894 if ( !(( i+1) % daysToShow)) { 1896 if ( !(( i+1) % daysToShow)) {
1895 wi = width() - x - weeklabelwid; 1897 wi = width() - x - weeklabelwid;
1896 } 1898 }
1897 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi,h); 1899 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi,h);
1898 } 1900 }
1899 x += w; 1901 x += w;
1900 } 1902 }
1901 x= 0; 1903 x= 0;
1902 y= dayLabelHei; 1904 y= dayLabelHei;
1903 w = colWid; 1905 w = colWid;
1904 h = cellHei; 1906 h = cellHei;
1905 int max = 0; 1907 int max = 0;
1906 for ( i = 0; i < mCellsW.count(); ++i) { 1908 for ( i = 0; i < mCellsW.count(); ++i) {
1907 if ( i > 6 ) { 1909 if ( i > 6 ) {
1908 mCellsW[i]->hide(); 1910 mCellsW[i]->hide();
1909 continue; 1911 continue;
1910 } 1912 }
1911 1913
1912 w = colWid; 1914 w = colWid;
1913 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1915 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1914 ++w; 1916 ++w;
1915 } 1917 }
1916 if ( i == (daysToShow-1-rowModulo)*7) 1918 if ( i == (daysToShow-1-rowModulo)*7)
1917 ++h; 1919 ++h;
1918 1920
1919 if ( i >= 5 ) { 1921 if ( i >= 5 ) {
1920 if ( i ==5 ) { 1922 if ( i ==5 ) {
1921 max = h/2; 1923 max = h/2;
1922 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max ); 1924 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max );
1923 x -= w ;y += h/2; 1925 x -= w ;y += h/2;
1924 } else { 1926 } else {
1925 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { 1927 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) {
1926 ++w; 1928 ++w;
1927 } 1929 }
1928 max = h-h/2; 1930 max = h-h/2;
1929 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max ); 1931 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max );
1930 y -= h/2; 1932 y -= h/2;
1931 } 1933 }
1932 } else { 1934 } else {
1933 max = h; 1935 max = h;
1934 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1936 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h );
1935 } 1937 }
1936 1938
1937 1939
1938 x += w; 1940 x += w;
1939 if ( x + w/2 > wid ) { 1941 if ( x + w/2 > wid ) {
1940 x = 0; 1942 x = 0;
1941 y += h+dayLabelHei ; 1943 y += h+dayLabelHei ;
1942 } 1944 }
1943 //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 ); 1945 //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 );
1944 } 1946 }
1945 y= dayLabelHei; 1947 y= dayLabelHei;
1946 h = cellHei ; 1948 h = cellHei ;
1947 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1949 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1948 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1950 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1949 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1951 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1950 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1952 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1951 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ; 1953 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ;
1952 updateDayLabels(); 1954 updateDayLabels();
1953 //bool forceUpdate = !updatePossible; 1955 //bool forceUpdate = !updatePossible;
1954 updatePossible = true; 1956 updatePossible = true;
1955 //mWeekLabels[mNumWeeks]->setText( i18n("M")); 1957 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1956 //if ( forceUpdate ) 1958 //if ( forceUpdate )
1957 // updateView(); 1959 // updateView();
1958} 1960}
1959void KOMonthView::computeLayout() 1961void KOMonthView::computeLayout()
1960{ 1962{
1961 1963
1962 1964
1963 static int lastWid = 0; 1965 static int lastWid = 0;
1964 static int lastHei = 0; 1966 static int lastHei = 0;
1965 1967
1966 if ( mShowWeekView ){ 1968 if ( mShowWeekView ){
1967 computeLayoutWeek(); 1969 computeLayoutWeek();
1968 return; 1970 return;
1969 } 1971 }
1970 int daysToShow = 7; 1972 int daysToShow = 7;
1971 bool combinedSatSun = false; 1973 bool combinedSatSun = false;
1972 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1974 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1973 daysToShow = 6; 1975 daysToShow = 6;
1974 combinedSatSun = true; 1976 combinedSatSun = true;
1975 } 1977 }
1976 int tWid = topLevelWidget()->size().width(); 1978 int tWid = topLevelWidget()->size().width();
1977 int tHei = topLevelWidget()->size().height(); 1979 int tHei = topLevelWidget()->size().height();
1978 1980
1979 int wid = width();//e 1981 int wid = width();//e
1980 int hei = height()-1-mNavigatorBar->height(); 1982 int hei = height()-1-mNavigatorBar->height();
1981 1983
1982 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) { 1984 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) {
1983 return; 1985 return;
1984 } 1986 }
1985 if ( lastWid == width() && lastHei == height() ){ 1987 if ( lastWid == width() && lastHei == height() ){
1986 //qDebug("KOMonthview::No compute layout needed "); 1988 //qDebug("KOMonthview::No compute layout needed ");
1987 return; 1989 return;
1988 } 1990 }
1989 1991
1990 lastWid = width(); 1992 lastWid = width();
1991 lastHei = height(); 1993 lastHei = height();
1992 //qDebug("KOMonthView::computeLayout() MMM ------------------- "); 1994 //qDebug("KOMonthView::computeLayout() MMM ------------------- ");
1993 QFontMetrics fm ( mWeekLabels[0]->font() ); 1995 QFontMetrics fm ( mWeekLabels[0]->font() );
1994 int weeklabelwid = fm.width( "888" ); 1996 int weeklabelwid = fm.width( "888" );
1995 wid -= weeklabelwid; 1997 wid -= weeklabelwid;
1996 1998
1997 int colWid = wid / daysToShow; 1999 int colWid = wid / daysToShow;
1998 int lastCol = wid - ( colWid*6 ); 2000 int lastCol = wid - ( colWid*6 );
1999 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 2001 int dayLabelHei = mDayLabels[0]->sizeHint().height();
2000 int cellHei = (hei - dayLabelHei) /6; 2002 int cellHei = (hei - dayLabelHei) /6;
2001 int colModulo = wid % daysToShow; 2003 int colModulo = wid % daysToShow;
2002 int rowModulo = (hei- dayLabelHei) % 6; 2004 int rowModulo = (hei- dayLabelHei) % 6;
2003 //qDebug("rowmod %d ", rowModulo); 2005 //qDebug("rowmod %d ", rowModulo);
2004 int i; 2006 int i;
2005 int x,y,w,h; 2007 int x,y,w,h;
2006 x= 0; 2008 x= 0;
2007 y= 0; 2009 y= 0;
2008 w = colWid; 2010 w = colWid;
2009 h = dayLabelHei ; 2011 h = dayLabelHei ;
2010 for ( i = 0; i < 7; i++) { 2012 for ( i = 0; i < 7; i++) {
2011 if ( i == daysToShow-colModulo ) 2013 if ( i == daysToShow-colModulo )
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 0bd6b1c..a41eb54 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -89,257 +89,258 @@ class KNoScrollListBox: public QListBox
89 void highlightIncidence( Incidence * , MonthViewCell*, int ); 89 void highlightIncidence( Incidence * , MonthViewCell*, int );
90 90
91 protected slots: 91 protected slots:
92 void oneDown(); 92 void oneDown();
93 void keyPressEvent(QKeyEvent *); 93 void keyPressEvent(QKeyEvent *);
94 void keyReleaseEvent(QKeyEvent *); 94 void keyReleaseEvent(QKeyEvent *);
95 void mousePressEvent(QMouseEvent *); 95 void mousePressEvent(QMouseEvent *);
96 void focusInEvent ( QFocusEvent * ); 96 void focusInEvent ( QFocusEvent * );
97 void focusOutEvent ( QFocusEvent * ); 97 void focusOutEvent ( QFocusEvent * );
98 98
99 private: 99 private:
100 bool resetOnFocusIn; 100 bool resetOnFocusIn;
101 KNOWhatsThis * mWT; 101 KNOWhatsThis * mWT;
102}; 102};
103 103
104 104
105class MonthViewItem: public QListBoxItem 105class MonthViewItem: public QListBoxItem
106{ 106{
107 public: 107 public:
108 MonthViewItem( Incidence *,const QString & title ); 108 MonthViewItem( Incidence *,const QString & title );
109 void recycle( Incidence *incidence, const QString & s); 109 void recycle( Incidence *incidence, const QString & s);
110 void setRecur(bool on) { mRecur = on; } 110 void setRecur(bool on) { mRecur = on; }
111 void setAlarm(bool on) { mAlarm = on; } 111 void setAlarm(bool on) { mAlarm = on; }
112 void setReply(bool on) { mReply = on; } 112 void setReply(bool on) { mReply = on; }
113 void setMoreInfo(bool on) { mInfo = on; } 113 void setMoreInfo(bool on) { mInfo = on; }
114 void setMultiDay(int type) { mMultiday = type; } 114 void setMultiDay(int type) { mMultiday = type; }
115 int multiDay() { return mMultiday; } 115 int multiDay() { return mMultiday; }
116 void setMultiDayPos(int type) { mdayPos = type; } 116 void setMultiDayPos(int type) { mdayPos = type; }
117 int gettMultiDayPos() { return mdayPos; } 117 int gettMultiDayPos() { return mdayPos; }
118 void setBlockRepaint(bool on) { mblockRepaint = on; } 118 void setBlockRepaint(bool on) { mblockRepaint = on; }
119 bool setHighlighted( Incidence * ); 119 bool setHighlighted( Incidence * );
120 120
121 void setPalette(const QPalette &p) { mPalette = p; } 121 void setPalette(const QPalette &p) { mPalette = p; }
122 QPalette palette() const { return mPalette; } 122 QPalette palette() const { return mPalette; }
123 bool setHighlightedFalse(); 123 bool setHighlightedFalse();
124 Incidence *incidence() const { return mIncidence; } 124 Incidence *incidence() const { return mIncidence; }
125 125
126 protected: 126 protected:
127 virtual void paint(QPainter *); 127 virtual void paint(QPainter *);
128 virtual int height(const QListBox *) const; 128 virtual int height(const QListBox *) const;
129 virtual int width(const QListBox *) const; 129 virtual int width(const QListBox *) const;
130 130
131 private: 131 private:
132 int mdayPos; 132 int mdayPos;
133 bool isWeekItem; 133 bool isWeekItem;
134 bool mblockRepaint; 134 bool mblockRepaint;
135 int mMultiday; 135 int mMultiday;
136 bool mRecur; 136 bool mRecur;
137 bool mAlarm; 137 bool mAlarm;
138 bool mReply; 138 bool mReply;
139 bool mInfo; 139 bool mInfo;
140 bool mDisplayHighlighted; 140 bool mDisplayHighlighted;
141 141
142 QPalette mPalette; 142 QPalette mPalette;
143 QDate mDate; 143 QDate mDate;
144 144
145 Incidence *mIncidence; 145 Incidence *mIncidence;
146}; 146};
147 147
148 148
149class KOMonthView; 149class KOMonthView;
150 150
151class MonthViewCell : public KNoScrollListBox 151class MonthViewCell : public KNoScrollListBox
152{ 152{
153 Q_OBJECT 153 Q_OBJECT
154 public: 154 public:
155 MonthViewCell(KOMonthView *,QWidget* ); 155 MonthViewCell(KOMonthView *,QWidget* );
156 ~MonthViewCell() {mAvailItemList.setAutoDelete( true );} 156 ~MonthViewCell() {mAvailItemList.setAutoDelete( true );}
157 157
158 void setDate( const QDate & ); 158 void setDate( const QDate & );
159 QDate date() const; 159 QDate date() const;
160 160
161 void setPrimary( bool ); 161 void setPrimary( bool );
162 bool isPrimary() const; 162 bool isPrimary() const;
163 163
164 void setHoliday( bool ); 164 void setHoliday( bool );
165 void setHoliday( const QString & ); 165 void setHoliday( const QString & );
166 166
167 void updateCell(); 167 void updateCell();
168 void startUpdateCell(); 168 void startUpdateCell();
169 void finishUpdateCell(); 169 void finishUpdateCell();
170 int insertEvent(Event *); 170 int insertEvent(Event *);
171 void insertTodo(Todo *); 171 void insertTodo(Todo *);
172 172
173 void updateConfig( bool bigFont = false ); 173 void updateConfig( bool bigFont = false );
174 174
175 void enableScrollBars( bool ); 175 void enableScrollBars( bool );
176 176
177 Incidence *selectedIncidence(); 177 Incidence *selectedIncidence();
178 QDate selectedIncidenceDate(); 178 QDate selectedIncidenceDate();
179 QPushButton * dateLabel() { return mLabel; } 179 QPushButton * dateLabel() { return mLabel; }
180 bool doHighLight( Incidence *); 180 bool doHighLight( Incidence *);
181 void deselect(); 181 void deselect();
182 void select(); 182 void select();
183#ifdef DESKTOP_VERSION 183#ifdef DESKTOP_VERSION
184 static QToolTipGroup *toolTipGroup(); 184 static QToolTipGroup *toolTipGroup();
185#endif 185#endif
186 signals: 186 signals:
187 void defaultAction( Incidence * ); 187 void defaultAction( Incidence * );
188 void newEventSignal( QDateTime ); 188 void newEventSignal( QDateTime );
189 void showDaySignal( QDate ); 189 void showDaySignal( QDate );
190 190
191 protected: 191 protected:
192 QStringList mToolTip; 192 QStringList mToolTip;
193 void resizeEvent( QResizeEvent * ); 193 void resizeEvent( QResizeEvent * );
194 194
195public slots: 195public slots:
196 void showDay(); 196 void showDay();
197 void deHighLight(); 197 void deHighLight();
198 void repaintfinishUpdateCell(); 198 void repaintfinishUpdateCell();
199 protected slots: 199 protected slots:
200 void defaultAction( QListBoxItem * ); 200 void defaultAction( QListBoxItem * );
201 void contextMenu( QListBoxItem * ); 201 void contextMenu( QListBoxItem * );
202 void selection( QListBoxItem * ); 202 void selection( QListBoxItem * );
203 void cellClicked( QListBoxItem * ); 203 void cellClicked( QListBoxItem * );
204 void newEvent(); 204 void newEvent();
205 205
206 private: 206 private:
207 int mdayCount; 207 int mdayCount;
208 QPtrList <MonthViewItem> mAvailItemList; 208 QPtrList <MonthViewItem> mAvailItemList;
209 KOMonthView *mMonthView; 209 KOMonthView *mMonthView;
210 int currentPalette; 210 int currentPalette;
211 211
212 QDate mDate; 212 QDate mDate;
213 bool mPrimary; 213 bool mPrimary;
214 bool mHoliday; 214 bool mHoliday;
215 QString mHolidayString; 215 QString mHolidayString;
216 216
217 //QLabel *mLabel; 217 //QLabel *mLabel;
218 QPushButton *mLabel; 218 QPushButton *mLabel;
219 //QListBox *mItemList; 219 //QListBox *mItemList;
220#ifdef DESKTOP_VERSION 220#ifdef DESKTOP_VERSION
221 static QToolTipGroup *mToolTipGroup; 221 static QToolTipGroup *mToolTipGroup;
222#endif 222#endif
223 QSize mLabelSize; 223 QSize mLabelSize;
224 QSize mLabelBigSize; 224 QSize mLabelBigSize;
225 QPalette mHolidayPalette; 225 QPalette mHolidayPalette;
226 QPalette mStandardPalette; 226 QPalette mStandardPalette;
227 QPalette mPrimaryPalette; 227 QPalette mPrimaryPalette;
228 QPalette mNonPrimaryPalette; 228 QPalette mNonPrimaryPalette;
229 void setMyPalette(); 229 void setMyPalette();
230 QPalette getPalette (); 230 QPalette getPalette ();
231 231
232}; 232};
233 233
234 234
235class KOMonthView: public KOEventView 235class KOMonthView: public KOEventView
236{ 236{
237 Q_OBJECT 237 Q_OBJECT
238 public: 238 public:
239 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 ); 239 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 );
240 ~KOMonthView(); 240 ~KOMonthView();
241 241
242 /** Returns maximum number of days supported by the komonthview */ 242 /** Returns maximum number of days supported by the komonthview */
243 virtual int maxDatesHint(); 243 virtual int maxDatesHint();
244 244
245 /** Returns number of currently shown dates. */ 245 /** Returns number of currently shown dates. */
246 virtual int currentDateCount(); 246 virtual int currentDateCount();
247 247
248 /** returns the currently selected events */ 248 /** returns the currently selected events */
249 virtual QPtrList<Incidence> selectedIncidences(); 249 virtual QPtrList<Incidence> selectedIncidences();
250 250
251 /** returns dates of the currently selected events */ 251 /** returns dates of the currently selected events */
252 virtual DateList selectedDates(); 252 virtual DateList selectedDates();
253 253
254 virtual void printPreview(CalPrinter *calPrinter, 254 virtual void printPreview(CalPrinter *calPrinter,
255 const QDate &, const QDate &); 255 const QDate &, const QDate &);
256 bool isMonthView() { return !mShowWeekView; } 256 bool isMonthView() { return !mShowWeekView; }
257 bool isUpdatePossible() { return updatePossible; } 257 bool isUpdatePossible() { return updatePossible; }
258 258
259 MonthViewCell * selectedCell(); 259 MonthViewCell * selectedCell();
260 bool skipResize; 260 bool skipResize;
261 NavigatorBar* navigatorBar() { return mNavigatorBar ;} 261 NavigatorBar* navigatorBar() { return mNavigatorBar ;}
262 void clearList(); 262 void clearList();
263 public slots: 263 public slots:
264 void incidenceHighlighted( Incidence *, MonthViewCell*, int ); 264 void incidenceHighlighted( Incidence *, MonthViewCell*, int );
265 void nextCell(); 265 void nextCell();
266 void prevCell(); 266 void prevCell();
267 virtual void updateView(); 267 virtual void updateView();
268 virtual void updateConfig(); 268 virtual void updateConfig();
269 virtual void showDates(const QDate &start, const QDate &end); 269 virtual void showDates(const QDate &start, const QDate &end);
270 virtual void showEvents(QPtrList<Event> eventList); 270 virtual void showEvents(QPtrList<Event> eventList);
271 271
272 void changeEventDisplay(Event *, int); 272 void changeEventDisplay(Event *, int);
273 273
274 void clearSelection(); 274 void clearSelection();
275 275
276 void showContextMenu( Incidence * ); 276 void showContextMenu( Incidence * );
277 277
278 void setSelectedCell( MonthViewCell * ); 278 void setSelectedCell( MonthViewCell * );
279 void setPopupCell( MonthViewCell * ); 279 void setPopupCell( MonthViewCell * );
280 void switchView(); 280 void switchView();
281 void setKeyBoardFocus();
282 void setKeyBFocus(); 281 void setKeyBFocus();
283 282
284 protected slots: 283 protected slots:
284 void setKeyBoardFocus();
285 void slotNewTodo(); 285 void slotNewTodo();
286 void slotNewEvent(); 286 void slotNewEvent();
287 void slotEditJournal(); 287 void slotEditJournal();
288 void slotComputeLayout(); 288 void slotComputeLayout();
289 void selectInternalWeekNum ( int ); 289 void selectInternalWeekNum ( int );
290 void processSelectionChange(); 290 void processSelectionChange();
291 signals: 291 signals:
292 void nextMonth(); 292 void nextMonth();
293 void prevMonth(); 293 void prevMonth();
294 void selectWeekNum ( int ); 294 void selectWeekNum ( int );
295 void selectMonth (); 295 void selectMonth ();
296 void showDaySignal( QDate ); 296 void showDaySignal( QDate );
297 void newTodoSignal( QDateTime, bool ); 297 void newTodoSignal( QDateTime, bool );
298 void showJournalSignal( int,QDate ); 298 void showJournalSignal( int,QDate );
299 protected: 299 protected:
300 void resizeEvent(QResizeEvent *); 300 void resizeEvent(QResizeEvent *);
301 void viewChanged(); 301 void viewChanged();
302 void updateDayLabels(); 302 void updateDayLabels();
303 303
304 private: 304 private:
305 int mKBFcounter;
305 QTimer* mComputeLayoutTimer; 306 QTimer* mComputeLayoutTimer;
306 NavigatorBar* mNavigatorBar; 307 NavigatorBar* mNavigatorBar;
307 int currentWeek(); 308 int currentWeek();
308 bool clPending; 309 bool clPending;
309 QWidgetStack * mWidStack; 310 QWidgetStack * mWidStack;
310 QWidget* mMonthView; 311 QWidget* mMonthView;
311 QWidget* mWeekView; 312 QWidget* mWeekView;
312 bool mShowWeekView; 313 bool mShowWeekView;
313 bool updatePossible; 314 bool updatePossible;
314 int mDaysPerWeek; 315 int mDaysPerWeek;
315 int mNumWeeks; 316 int mNumWeeks;
316 int mNumCells; 317 int mNumCells;
317 //bool mWeekStartsMonday; 318 //bool mWeekStartsMonday;
318 bool mShowSatSunComp; 319 bool mShowSatSunComp;
319 void computeLayout(); 320 void computeLayout();
320 void computeLayoutWeek(); 321 void computeLayoutWeek();
321 322
322 QPtrVector<MonthViewCell> mCells; 323 QPtrVector<MonthViewCell> mCells;
323 QPtrVector<QLabel> mDayLabels; 324 QPtrVector<QLabel> mDayLabels;
324 QPtrVector<KOWeekButton> mWeekLabels; 325 QPtrVector<KOWeekButton> mWeekLabels;
325 QPtrVector<MonthViewCell> mCellsW; 326 QPtrVector<MonthViewCell> mCellsW;
326 QPtrVector<QLabel> mDayLabelsW; 327 QPtrVector<QLabel> mDayLabelsW;
327 QPtrVector<KOWeekButton> mWeekLabelsW; 328 QPtrVector<KOWeekButton> mWeekLabelsW;
328 329
329 bool mShortDayLabelsM; 330 bool mShortDayLabelsM;
330 bool mShortDayLabelsW; 331 bool mShortDayLabelsW;
331 int mWidthLongDayLabel; 332 int mWidthLongDayLabel;
332 333
333 QDate mStartDate; 334 QDate mStartDate;
334 335
335 MonthViewCell *mSelectedCell; 336 MonthViewCell *mSelectedCell;
336 MonthViewCell *mPopupCell; 337 MonthViewCell *mPopupCell;
337 bool mFlagKeyPressed; 338 bool mFlagKeyPressed;
338 KOEventPopupMenu *mContextMenu; 339 KOEventPopupMenu *mContextMenu;
339 QPopupMenu *mNewItemMenu; 340 QPopupMenu *mNewItemMenu;
340 void keyPressEvent ( QKeyEvent * ) ; 341 void keyPressEvent ( QKeyEvent * ) ;
341 void keyReleaseEvent ( QKeyEvent * ) ; 342 void keyReleaseEvent ( QKeyEvent * ) ;
342 343
343}; 344};
344 345
345#endif 346#endif
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 862d437..f68f032 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1723,412 +1723,417 @@ void MainWindow::processIncidenceSelection( Incidence *incidence )
1723void MainWindow::enableIncidenceActions( bool enabled ) 1723void MainWindow::enableIncidenceActions( bool enabled )
1724{ 1724{
1725 1725
1726#ifndef DESKTOP_VERSION 1726#ifndef DESKTOP_VERSION
1727 mCurrentItemMenu->setEnabled( enabled ); 1727 mCurrentItemMenu->setEnabled( enabled );
1728#else 1728#else
1729 mShowAction->setEnabled( enabled ); 1729 mShowAction->setEnabled( enabled );
1730 mEditAction->setEnabled( enabled ); 1730 mEditAction->setEnabled( enabled );
1731 mDeleteAction->setEnabled( enabled ); 1731 mDeleteAction->setEnabled( enabled );
1732 1732
1733 mCloneAction->setEnabled( enabled ); 1733 mCloneAction->setEnabled( enabled );
1734 mMoveAction->setEnabled( enabled ); 1734 mMoveAction->setEnabled( enabled );
1735 mBeamAction->setEnabled( enabled ); 1735 mBeamAction->setEnabled( enabled );
1736 mCancelAction->setEnabled( enabled ); 1736 mCancelAction->setEnabled( enabled );
1737#endif 1737#endif
1738} 1738}
1739 1739
1740void MainWindow::importOL() 1740void MainWindow::importOL()
1741{ 1741{
1742#ifdef _OL_IMPORT_ 1742#ifdef _OL_IMPORT_
1743 mView->clearAllViews(); 1743 mView->clearAllViews();
1744 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1744 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1745 id->exec(); 1745 id->exec();
1746 delete id; 1746 delete id;
1747 mView->calendar()->checkAlarmForIncidence( 0, true ); 1747 mView->calendar()->checkAlarmForIncidence( 0, true );
1748 mView->updateView(); 1748 mView->updateView();
1749#endif 1749#endif
1750} 1750}
1751void MainWindow::importBday() 1751void MainWindow::importBday()
1752{ 1752{
1753 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"), 1753 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"),
1754 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1754 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1755 i18n("Import!"), i18n("Cancel"), 0, 1755 i18n("Import!"), i18n("Cancel"), 0,
1756 0, 1 ); 1756 0, 1 );
1757 if ( result == 0 ) { 1757 if ( result == 0 ) {
1758 mView->importBday(); 1758 mView->importBday();
1759 1759
1760 } 1760 }
1761 1761
1762 1762
1763} 1763}
1764void MainWindow::importQtopia() 1764void MainWindow::importQtopia()
1765{ 1765{
1766 //#ifndef DESKTOP_VERSION 1766 //#ifndef DESKTOP_VERSION
1767 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); 1767 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing");
1768#ifdef DESKTOP_VERSION 1768#ifdef DESKTOP_VERSION
1769 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); 1769 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml");
1770#endif 1770#endif
1771 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, 1771 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess,
1772 i18n("Import!"), i18n("Cancel"), 0, 1772 i18n("Import!"), i18n("Cancel"), 0,
1773 0, 1 ); 1773 0, 1 );
1774 if ( result == 0 ) { 1774 if ( result == 0 ) {
1775#ifndef DESKTOP_VERSION 1775#ifndef DESKTOP_VERSION
1776 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1776 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1777 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1777 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1778 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1778 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1779#else 1779#else
1780 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; 1780 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml";
1781 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; 1781 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml";
1782 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; 1782 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml";
1783#endif 1783#endif
1784 mView->importQtopia( categories, datebook, todolist ); 1784 mView->importQtopia( categories, datebook, todolist );
1785 } 1785 }
1786 mView->calendar()->reInitAlarmSettings(); 1786 mView->calendar()->reInitAlarmSettings();
1787#if 0 1787#if 0
1788 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1788 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1789 i18n("Not supported \non desktop!\n"), 1789 i18n("Not supported \non desktop!\n"),
1790 i18n("Ok"), i18n("Cancel"), 0, 1790 i18n("Ok"), i18n("Cancel"), 0,
1791 0, 1 ); 1791 0, 1 );
1792 1792
1793#endif 1793#endif
1794} 1794}
1795 1795
1796void MainWindow::saveOnClose() 1796void MainWindow::saveOnClose()
1797{ 1797{
1798 KOPrefs *p = KOPrefs::instance(); 1798 KOPrefs *p = KOPrefs::instance();
1799 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1799 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1800 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal ); 1800 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal );
1801 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal ); 1801 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal );
1802 if ( filterToolBar ) { 1802 if ( filterToolBar ) {
1803 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal ); 1803 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal );
1804 } 1804 }
1805#ifdef DESKTOP_VERSION 1805#ifdef DESKTOP_VERSION
1806 1806
1807 QPoint myP; 1807 QPoint myP;
1808 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) ); 1808 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) );
1809 if ( p->mToolBarHor ) 1809 if ( p->mToolBarHor )
1810 p->mToolBarUp = myP.y() > height()/2; 1810 p->mToolBarUp = myP.y() > height()/2;
1811 else 1811 else
1812 p->mToolBarUp = myP.x() > width()/2; 1812 p->mToolBarUp = myP.x() > width()/2;
1813 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) ); 1813 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) );
1814 if ( p->mToolBarHorV ) 1814 if ( p->mToolBarHorV )
1815 p->mToolBarUpV = myP.y() > height()/2; 1815 p->mToolBarUpV = myP.y() > height()/2;
1816 else 1816 else
1817 p->mToolBarUpV = myP.x() > width()/2 ; 1817 p->mToolBarUpV = myP.x() > width()/2 ;
1818 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) ); 1818 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) );
1819 if ( p->mToolBarHorN ) 1819 if ( p->mToolBarHorN )
1820 p->mToolBarUpN = myP.y() > height()/2; 1820 p->mToolBarUpN = myP.y() > height()/2;
1821 else 1821 else
1822 p->mToolBarUpN = myP.x() > width()/2 ; 1822 p->mToolBarUpN = myP.x() > width()/2 ;
1823 if ( filterToolBar ) { 1823 if ( filterToolBar ) {
1824 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) ); 1824 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) );
1825 if ( p->mToolBarHorF ) 1825 if ( p->mToolBarHorF )
1826 p->mToolBarUpF = myP.y() > height()/2; 1826 p->mToolBarUpF = myP.y() > height()/2;
1827 else 1827 else
1828 p->mToolBarUpF = myP.x() > width()/2 ; 1828 p->mToolBarUpF = myP.x() > width()/2 ;
1829 } 1829 }
1830#else 1830#else
1831 if ( p->mToolBarHor ) 1831 if ( p->mToolBarHor )
1832 p->mToolBarUp = iconToolBar->y() > height()/2; 1832 p->mToolBarUp = iconToolBar->y() > height()/2;
1833 else 1833 else
1834 p->mToolBarUp = iconToolBar->x() > width()/2; 1834 p->mToolBarUp = iconToolBar->x() > width()/2;
1835 if ( p->mToolBarHorV ) 1835 if ( p->mToolBarHorV )
1836 p->mToolBarUpV = viewToolBar->y() > height()/2; 1836 p->mToolBarUpV = viewToolBar->y() > height()/2;
1837 else 1837 else
1838 p->mToolBarUpV = viewToolBar->x() > width()/2 ; 1838 p->mToolBarUpV = viewToolBar->x() > width()/2 ;
1839 1839
1840 if ( p->mToolBarHorN ) 1840 if ( p->mToolBarHorN )
1841 p->mToolBarUpN = navigatorToolBar->y() > height()/2; 1841 p->mToolBarUpN = navigatorToolBar->y() > height()/2;
1842 else 1842 else
1843 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ; 1843 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ;
1844 if ( filterToolBar ) { 1844 if ( filterToolBar ) {
1845 if ( p->mToolBarHorF ) 1845 if ( p->mToolBarHorF )
1846 p->mToolBarUpF = filterToolBar->y() > height()/2; 1846 p->mToolBarUpF = filterToolBar->y() > height()/2;
1847 else 1847 else
1848 p->mToolBarUpF = filterToolBar->x() > width()/2 ; 1848 p->mToolBarUpF = filterToolBar->x() > width()/2 ;
1849 } 1849 }
1850#endif 1850#endif
1851 save(); 1851 save();
1852 mView->writeSettings(); 1852 mView->writeSettings();
1853 mView->checkSuspendAlarm(); 1853 mView->checkSuspendAlarm();
1854} 1854}
1855void MainWindow::slotModifiedChanged( bool ) 1855void MainWindow::slotModifiedChanged( bool )
1856{ 1856{
1857 if ( mBlockAtStartup ) 1857 if ( mBlockAtStartup )
1858 return; 1858 return;
1859 1859
1860 int msec; 1860 int msec;
1861 // we store the changes after 1 minute, 1861 // we store the changes after 1 minute,
1862 // and for safety reasons after 10 minutes again 1862 // and for safety reasons after 10 minutes again
1863 if ( !mSyncManager->blockSave() ) 1863 if ( !mSyncManager->blockSave() )
1864 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1864 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1865 else 1865 else
1866 msec = 1000 * 600; 1866 msec = 1000 * 600;
1867 mSaveTimer.start( msec, true ); // 1 minute 1867 mSaveTimer.start( msec, true ); // 1 minute
1868 qDebug("KO: Saving File in %d secs!", msec/1000); 1868 qDebug("KO: Saving File in %d secs!", msec/1000);
1869 mCalendarModifiedFlag = true; 1869 mCalendarModifiedFlag = true;
1870} 1870}
1871void MainWindow::saveStopTimer() 1871void MainWindow::saveStopTimer()
1872{ 1872{
1873 mSaveTimer.stop(); 1873 mSaveTimer.stop();
1874} 1874}
1875void MainWindow::backupAllFiles() 1875void MainWindow::backupAllFiles()
1876{ 1876{
1877 QDate reference ( 2000,1,1); 1877 QDate reference ( 2000,1,1);
1878 int daysTo = reference.daysTo ( QDate::currentDate() ); 1878 int daysTo = reference.daysTo ( QDate::currentDate() );
1879 setCaption(i18n("Creating backup ... please wait ..." )); 1879 setCaption(i18n("Creating backup ... please wait ..." ));
1880 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate); 1880 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate);
1881 // we need the file path, the backup dir and the number of bups as param 1881 // we need the file path, the backup dir and the number of bups as param
1882 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir; 1882 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir;
1883 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir) 1883 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir)
1884 bupDir = KGlobalSettings::backupDataDir(); 1884 bupDir = KGlobalSettings::backupDataDir();
1885 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 1885 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
1886 if ( retval == 0 ) { 1886 if ( retval == 0 ) {
1887 setCaption(i18n("Backup cancelled" )); 1887 setCaption(i18n("Backup cancelled" ));
1888 qDebug("KO: Backup cancelled. Will try again tomorrow "); 1888 qDebug("KO: Backup cancelled. Will try again tomorrow ");
1889 // retval == 0 : backup skipped for today, try again tomorrow 1889 // retval == 0 : backup skipped for today, try again tomorrow
1890 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1; 1890 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1;
1891 } else if ( retval == 1 ){ 1891 } else if ( retval == 1 ){
1892 qDebug("KO: Backup created."); 1892 qDebug("KO: Backup created.");
1893 // backup ok 1893 // backup ok
1894 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1894 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1895 KopiCalendarFile * cal = calendars.first(); 1895 KopiCalendarFile * cal = calendars.first();
1896 cal = calendars.next(); 1896 cal = calendars.next();
1897 while ( cal ) { 1897 while ( cal ) {
1898 if ( !cal->mErrorOnLoad ) { 1898 if ( !cal->mErrorOnLoad ) {
1899 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 1899 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
1900 } 1900 }
1901 cal = calendars.next(); 1901 cal = calendars.next();
1902 } 1902 }
1903 KOPrefs::instance()->mLastBackupDate = daysTo; 1903 KOPrefs::instance()->mLastBackupDate = daysTo;
1904 setCaption(i18n("Backup succesfully finished" )); 1904 setCaption(i18n("Backup succesfully finished" ));
1905 } else if ( retval == 2 ){ 1905 } else if ( retval == 2 ){
1906 setCaption(i18n("Backup globally disabled" )); 1906 setCaption(i18n("Backup globally disabled" ));
1907 qDebug("KO: Backup globally cancelled."); 1907 qDebug("KO: Backup globally cancelled.");
1908 // backup globally cancelled 1908 // backup globally cancelled
1909 KPimGlobalPrefs::instance()->mBackupEnabled = false; 1909 KPimGlobalPrefs::instance()->mBackupEnabled = false;
1910 } 1910 }
1911 // retval == 3: do nothing, try again later 1911 // retval == 3: do nothing, try again later
1912} 1912}
1913void MainWindow::save() 1913void MainWindow::save()
1914{ 1914{
1915
1915 if ( mView->viewManager()->journalView() ) 1916 if ( mView->viewManager()->journalView() )
1916 mView->viewManager()->journalView()->checkModified(); 1917 mView->viewManager()->journalView()->checkModified();
1917 if ( !mCalendarModifiedFlag ) { 1918 if ( !mCalendarModifiedFlag ) {
1918 qDebug("KO: Calendar not modified. Nothing saved."); 1919 qDebug("KO: Calendar not modified. Nothing saved.");
1919 return; 1920 return;
1920 } 1921 }
1921 if ( mSyncManager->blockSave() ) 1922 if ( mSyncManager->blockSave() )
1922 return; 1923 return;
1923 mSyncManager->setBlockSave(true); 1924 mSyncManager->setBlockSave(true);
1924 if ( mView->checkAllFileVersions() ) { 1925 if ( mView->checkAllFileVersions() ) {
1925 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){ 1926 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){
1926 QDate reference ( 2000,1,1); 1927 QDate reference ( 2000,1,1);
1927 int daysTo = reference.daysTo ( QDate::currentDate() ); 1928 int daysTo = reference.daysTo ( QDate::currentDate() );
1928 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) { 1929 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) {
1929 backupAllFiles(); 1930 backupAllFiles();
1930 } 1931 }
1931 ; // KPimGlobalPrefs::instance()->mLastBackupDate 1932 ; // KPimGlobalPrefs::instance()->mLastBackupDate
1932 } 1933 }
1933 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1934 QTime neededSaveTime = QDateTime::currentDateTime().time();
1934 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1935 if ( !isMinimized () )
1936 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1935 qDebug("KO: Start saving data to file!"); 1937 qDebug("KO: Start saving data to file!");
1936 mView->saveCalendars(); 1938 mView->saveCalendars();
1937 mCalendarModifiedFlag = false; 1939 mCalendarModifiedFlag = false;
1938 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1940 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1939 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1941 qDebug("KO: Needed %d ms for saving.",msNeeded );
1940 QString savemes; 1942 QString savemes;
1941 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1943 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1942 setCaption(savemes); 1944 if ( !isMinimized () )
1945 setCaption(savemes);
1946 else
1947 qDebug(savemes);
1943 } else 1948 } else
1944 setCaption(i18n("Saving cancelled!")); 1949 setCaption(i18n("Saving cancelled!"));
1945 mSyncManager->setBlockSave( false ); 1950 mSyncManager->setBlockSave( false );
1946} 1951}
1947 1952
1948void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1953void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1949{ 1954{
1950 if ( !e->isAutoRepeat() ) { 1955 if ( !e->isAutoRepeat() ) {
1951 mFlagKeyPressed = false; 1956 mFlagKeyPressed = false;
1952 } 1957 }
1953} 1958}
1954void MainWindow::keyPressEvent ( QKeyEvent * e ) 1959void MainWindow::keyPressEvent ( QKeyEvent * e )
1955{ 1960{
1956 qApp->processEvents(); 1961 qApp->processEvents();
1957 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1962 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1958 e->ignore(); 1963 e->ignore();
1959 // qDebug(" ignore %d",e->isAutoRepeat() ); 1964 // qDebug(" ignore %d",e->isAutoRepeat() );
1960 return; 1965 return;
1961 } 1966 }
1962 if (! e->isAutoRepeat() ) 1967 if (! e->isAutoRepeat() )
1963 mFlagKeyPressed = true; 1968 mFlagKeyPressed = true;
1964 KOPrefs *p = KOPrefs::instance(); 1969 KOPrefs *p = KOPrefs::instance();
1965 bool showSelectedDates = false; 1970 bool showSelectedDates = false;
1966 int size; 1971 int size;
1967 int pro = 0; 1972 int pro = 0;
1968 //qDebug("MainWindow::keyPressEvent "); 1973 //qDebug("MainWindow::keyPressEvent ");
1969 switch ( e->key() ) { 1974 switch ( e->key() ) {
1970 case Qt::Key_Right: 1975 case Qt::Key_Right:
1971 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1976 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1972 mView->goNextMonth(); 1977 mView->goNextMonth();
1973 else 1978 else
1974 mView->goNext(); 1979 mView->goNext();
1975 showSelectedDates = true; 1980 showSelectedDates = true;
1976 break; 1981 break;
1977 case Qt::Key_Left: 1982 case Qt::Key_Left:
1978 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1983 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1979 mView->goPreviousMonth(); 1984 mView->goPreviousMonth();
1980 else 1985 else
1981 mView->goPrevious(); 1986 mView->goPrevious();
1982 showSelectedDates = true; 1987 showSelectedDates = true;
1983 break; 1988 break;
1984 case Qt::Key_Down: 1989 case Qt::Key_Down:
1985 mView->viewManager()->agendaView()->scrollOneHourDown(); 1990 mView->viewManager()->agendaView()->scrollOneHourDown();
1986 break; 1991 break;
1987 case Qt::Key_Up: 1992 case Qt::Key_Up:
1988 mView->viewManager()->agendaView()->scrollOneHourUp(); 1993 mView->viewManager()->agendaView()->scrollOneHourUp();
1989 break; 1994 break;
1990 case Qt::Key_K: 1995 case Qt::Key_K:
1991 mView->viewManager()->showMonthViewWeek(); 1996 mView->viewManager()->showMonthViewWeek();
1992 break; 1997 break;
1993 case Qt::Key_I: 1998 case Qt::Key_I:
1994 mView->showIncidence(); 1999 mView->showIncidence();
1995 break; 2000 break;
1996 case Qt::Key_Delete: 2001 case Qt::Key_Delete:
1997 case Qt::Key_Backspace: 2002 case Qt::Key_Backspace:
1998 mView->deleteIncidence(); 2003 mView->deleteIncidence();
1999 break; 2004 break;
2000 case Qt::Key_D: 2005 case Qt::Key_D:
2001 mView->viewManager()->showDayView(); 2006 mView->viewManager()->showDayView();
2002 showSelectedDates = true; 2007 showSelectedDates = true;
2003 break; 2008 break;
2004 case Qt::Key_O: 2009 case Qt::Key_O:
2005 mView->toggleFilerEnabled( ); 2010 mView->toggleFilerEnabled( );
2006 break; 2011 break;
2007 case Qt::Key_0: 2012 case Qt::Key_0:
2008 case Qt::Key_1: 2013 case Qt::Key_1:
2009 case Qt::Key_2: 2014 case Qt::Key_2:
2010 case Qt::Key_3: 2015 case Qt::Key_3:
2011 case Qt::Key_4: 2016 case Qt::Key_4:
2012 case Qt::Key_5: 2017 case Qt::Key_5:
2013 case Qt::Key_6: 2018 case Qt::Key_6:
2014 case Qt::Key_7: 2019 case Qt::Key_7:
2015 case Qt::Key_8: 2020 case Qt::Key_8:
2016 case Qt::Key_9: 2021 case Qt::Key_9:
2017 pro = e->key()-48; 2022 pro = e->key()-48;
2018 if ( pro == 0 ) 2023 if ( pro == 0 )
2019 pro = 10; 2024 pro = 10;
2020 if ( e->state() == Qt::ControlButton) 2025 if ( e->state() == Qt::ControlButton)
2021 pro += 10; 2026 pro += 10;
2022 break; 2027 break;
2023 case Qt::Key_M: 2028 case Qt::Key_M:
2024 mView->viewManager()->showMonthView(); 2029 mView->viewManager()->showMonthView();
2025 showSelectedDates = true; 2030 showSelectedDates = true;
2026 break; 2031 break;
2027 case Qt::Key_Insert: 2032 case Qt::Key_Insert:
2028 mView->newEvent(); 2033 mView->newEvent();
2029 break; 2034 break;
2030 case Qt::Key_S : 2035 case Qt::Key_S :
2031 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 2036 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
2032 mView->newSubTodo(); 2037 mView->newSubTodo();
2033 else 2038 else
2034 mView->dialogManager()->showSearchDialog(); 2039 mView->dialogManager()->showSearchDialog();
2035 break; 2040 break;
2036 case Qt::Key_Y : 2041 case Qt::Key_Y :
2037 case Qt::Key_Z : 2042 case Qt::Key_Z :
2038 mView->viewManager()->showWorkWeekView(); 2043 mView->viewManager()->showWorkWeekView();
2039 showSelectedDates = true; 2044 showSelectedDates = true;
2040 break; 2045 break;
2041 case Qt::Key_U : 2046 case Qt::Key_U :
2042 mView->viewManager()->showWeekView(); 2047 mView->viewManager()->showWeekView();
2043 showSelectedDates = true; 2048 showSelectedDates = true;
2044 break; 2049 break;
2045 case Qt::Key_H : 2050 case Qt::Key_H :
2046 keyBindings(); 2051 keyBindings();
2047 break; 2052 break;
2048 case Qt::Key_W: 2053 case Qt::Key_W:
2049 mView->viewManager()->showWhatsNextView(); 2054 mView->viewManager()->showWhatsNextView();
2050 break; 2055 break;
2051 case Qt::Key_L: 2056 case Qt::Key_L:
2052 mView->viewManager()->showListView(); 2057 mView->viewManager()->showListView();
2053 break; 2058 break;
2054 case Qt::Key_N: 2059 case Qt::Key_N:
2055 mView->viewManager()->showNextView(); 2060 mView->viewManager()->showNextView();
2056 break; 2061 break;
2057 case Qt::Key_V: 2062 case Qt::Key_V:
2058 mView->viewManager()->showTodoView(); 2063 mView->viewManager()->showTodoView();
2059 break; 2064 break;
2060 case Qt::Key_C: 2065 case Qt::Key_C:
2061 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 2066 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
2062 break; 2067 break;
2063 case Qt::Key_P: 2068 case Qt::Key_P:
2064 mView->showDatePicker( ); 2069 mView->showDatePicker( );
2065 break; 2070 break;
2066 case Qt::Key_F: 2071 case Qt::Key_F:
2067 mView->editFilters(); 2072 mView->editFilters();
2068 break; 2073 break;
2069 case Qt::Key_R: 2074 case Qt::Key_R:
2070 mView->toggleFilter(); 2075 mView->toggleFilter();
2071 break; 2076 break;
2072 case Qt::Key_X: 2077 case Qt::Key_X:
2073 if ( e->state() == Qt::ControlButton ) 2078 if ( e->state() == Qt::ControlButton )
2074 mView->toggleDateNavigatorWidget(); 2079 mView->toggleDateNavigatorWidget();
2075 else { 2080 else {
2076 mView->viewManager()->showNextXView(); 2081 mView->viewManager()->showNextXView();
2077 showSelectedDates = true; 2082 showSelectedDates = true;
2078 } 2083 }
2079 break; 2084 break;
2080 case Qt::Key_Space: 2085 case Qt::Key_Space:
2081 mView->toggleExpand(); 2086 mView->toggleExpand();
2082 break; 2087 break;
2083 case Qt::Key_A: 2088 case Qt::Key_A:
2084 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) 2089 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton )
2085 mView->showNextAlarms(); 2090 mView->showNextAlarms();
2086 else 2091 else
2087 mView->toggleAllDaySize(); 2092 mView->toggleAllDaySize();
2088 break; 2093 break;
2089 case Qt::Key_T: 2094 case Qt::Key_T:
2090 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2095 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2091 mView->newTodo(); 2096 mView->newTodo();
2092 else { 2097 else {
2093 mView->goToday(); 2098 mView->goToday();
2094 showSelectedDates = true; 2099 showSelectedDates = true;
2095 } 2100 }
2096 break; 2101 break;
2097 case Qt::Key_J: 2102 case Qt::Key_J:
2098 mView->viewManager()->showJournalView(); 2103 mView->viewManager()->showJournalView();
2099 break; 2104 break;
2100 case Qt::Key_B: 2105 case Qt::Key_B:
2101 mView->editIncidenceDescription();; 2106 mView->editIncidenceDescription();;
2102 break; 2107 break;
2103 // case Qt::Key_Return: 2108 // case Qt::Key_Return:
2104 case Qt::Key_E: 2109 case Qt::Key_E:
2105 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2110 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2106 mView->newEvent(); 2111 mView->newEvent();
2107 else 2112 else
2108 mView->editIncidence(); 2113 mView->editIncidence();
2109 break; 2114 break;
2110 case Qt::Key_Plus: 2115 case Qt::Key_Plus:
2111 size = p->mHourSize +2; 2116 size = p->mHourSize +2;
2112 if ( size <= 22 ) 2117 if ( size <= 22 )
2113 configureAgenda( size ); 2118 configureAgenda( size );
2114 break; 2119 break;
2115 case Qt::Key_Minus: 2120 case Qt::Key_Minus:
2116 size = p->mHourSize - 2; 2121 size = p->mHourSize - 2;
2117 if ( size >= 4 ) 2122 if ( size >= 4 )
2118 configureAgenda( size ); 2123 configureAgenda( size );
2119 break; 2124 break;
2120 2125
2121 2126
2122 default: 2127 default:
2123 e->ignore(); 2128 e->ignore();
2124 } 2129 }
2125 if ( pro > 0 ) { 2130 if ( pro > 0 ) {
2126 selectFilter( pro+1 ); 2131 selectFilter( pro+1 );
2127 } 2132 }
2128 if ( showSelectedDates ) { 2133 if ( showSelectedDates ) {
2129 ;// setCaptionToDates(); 2134 ;// setCaptionToDates();
2130 } 2135 }
2131 2136
2132} 2137}
2133void MainWindow::fillFilterMenuTB() 2138void MainWindow::fillFilterMenuTB()
2134{ 2139{