summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-10-27 23:22:36 (UTC)
committer zautrix <zautrix>2005-10-27 23:22:36 (UTC)
commitcbda16d4966c7483d20d1b6b5a64c8af367ea732 (patch) (unidiff)
tree47099fd5b318c47eb1d8fff3d8a3eef6e34f6f23
parentd6d384e50cfd511866958e58cdd3adeb35ed1c4e (diff)
downloadkdepimpi-cbda16d4966c7483d20d1b6b5a64c8af367ea732.zip
kdepimpi-cbda16d4966c7483d20d1b6b5a64c8af367ea732.tar.gz
kdepimpi-cbda16d4966c7483d20d1b6b5a64c8af367ea732.tar.bz2
us fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt5
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt1
-rw-r--r--korganizer/komonthview.cpp14
-rw-r--r--libkdepim/kdatepicker.cpp8
-rw-r--r--microkde/kdatetbl.cpp32
5 files changed, 34 insertions, 26 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index edf7eb1..681e433 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,82 +1,87 @@
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.2.6 ************
4
5KO/Pi:
6Made navigation in datepicker more userfriendly when using keyboard for scrolling.
7
3********** VERSION 2.2.5 ************ 8********** VERSION 2.2.5 ************
4 9
5Bugfixes in KO/Pi, KA/Pi and OM/Pi. 10Bugfixes in KO/Pi, KA/Pi and OM/Pi.
6Added possibility to disable auto saving in KO/Pi. 11Added possibility to disable auto saving in KO/Pi.
7How to disable it? Good question! Next question, please? 12How to disable it? Good question! Next question, please?
8Added info about count of events/todos/journals to calendar info. 13Added info about count of events/todos/journals to calendar info.
9 14
10 15
11********** VERSION 2.2.4 ************ 16********** VERSION 2.2.4 ************
12 17
13KO/Pi alarm applet: Made font smaller and added a dealy before starting KO/Pi to avoid problems accessing data storage when an alarm did wake up the Z. 18KO/Pi alarm applet: Made font smaller and added a dealy before starting KO/Pi to avoid problems accessing data storage when an alarm did wake up the Z.
14Added 3 sec notification about a started timer. 19Added 3 sec notification about a started timer.
15 20
16KO/Pi: 21KO/Pi:
17Added export option for all data to File->Export menu. 22Added export option for all data to File->Export menu.
18Better management if a save error occours. 23Better management if a save error occours.
19Added 15 sec delay in automatic saving when Z wake up from suspend and the automatic save timer did expire - to avoid problems accessing data storage directly after wake up. 24Added 15 sec delay in automatic saving when Z wake up from suspend and the automatic save timer did expire - to avoid problems accessing data storage directly after wake up.
20Fix for displaying month names of an utf8 translated language (like Russian). I hope a Russian version of KO/Pi will be available soon. 25Fix for displaying month names of an utf8 translated language (like Russian). I hope a Russian version of KO/Pi will be available soon.
21 26
22Added duration info about multiday events. 27Added duration info about multiday events.
23Changed behaviour of "Set complete" in Todo viewer: Now Todo viewer closes not automatically. 28Changed behaviour of "Set complete" in Todo viewer: Now Todo viewer closes not automatically.
24 29
25KA/Pi: 30KA/Pi:
26Added for vCard import the option to import contact data in Latin1 format. 31Added for vCard import the option to import contact data in Latin1 format.
27 32
28********** VERSION 2.2.3 ************ 33********** VERSION 2.2.3 ************
29 34
30KO/Pi: 35KO/Pi:
31Fixed a problem with (non empty) exception dates in the exception date edit dialog of recurring events for newly created events. 36Fixed a problem with (non empty) exception dates in the exception date edit dialog of recurring events for newly created events.
32 37
33Fixed usability problem in KA/Pi: 38Fixed usability problem in KA/Pi:
34Now searching works for "all phone numbers and all addresses" if "all fields" is selected as search option. 39Now searching works for "all phone numbers and all addresses" if "all fields" is selected as search option.
35 40
36Changed some behaviour in OM/Pi mail management to make it more usable. 41Changed some behaviour in OM/Pi mail management to make it more usable.
37 42
38 43
39********** VERSION 2.2.2 ************ 44********** VERSION 2.2.2 ************
40 45
41KO/Pi: 46KO/Pi:
42Fixed a problem with the sort order of last modified date in list view. 47Fixed a problem with the sort order of last modified date in list view.
43KA/Pi: 48KA/Pi:
44Fixed a resource config read problem on windows. 49Fixed a resource config read problem on windows.
45 50
46 51
47********** VERSION 2.2.1 ************ 52********** VERSION 2.2.1 ************
48 53
49KO/Pi: 54KO/Pi:
50Fixed a problem displaying very long allday events in agenda view in single day mode. 55Fixed a problem displaying very long allday events in agenda view in single day mode.
51Fixed a problem with the default settings for new todos. 56Fixed a problem with the default settings for new todos.
52Added an error message dialog if saving of calendar files is not possible. 57Added an error message dialog if saving of calendar files is not possible.
53Made it impossible to close KO/Pi if saving fails. 58Made it impossible to close KO/Pi if saving fails.
54Fixed a problem adding calendars on windows such that these calendars can be used on the memory stick. 59Fixed a problem adding calendars on windows such that these calendars can be used on the memory stick.
55Added config options for conflict detection. 60Added config options for conflict detection.
56 61
57KA/Pi: 62KA/Pi:
58Added a config option to turn on asking before a contact is deleted. 63Added a config option to turn on asking before a contact is deleted.
59Fixed a problem with the default view and view selection at startup. 64Fixed a problem with the default view and view selection at startup.
60Formatted name is now set on import, if formatted name is empty. 65Formatted name is now set on import, if formatted name is empty.
61Fixed a problem of displaying images in the contact details view: 66Fixed a problem of displaying images in the contact details view:
62Now the wid/hei ratio is not changed. 67Now the wid/hei ratio is not changed.
63I a picture is larger than 128 pixels in wid or hei it is downscaled to 68I a picture is larger than 128 pixels in wid or hei it is downscaled to
64max 128 pixels wid/hei. 69max 128 pixels wid/hei.
65 70
66********** VERSION 2.2.0 ************ 71********** VERSION 2.2.0 ************
67 72
68New stable release! 73New stable release!
69Fixed some minor usability problems. 74Fixed some minor usability problems.
70Added writing of next alarm to a file for usage on pdaXrom. 75Added writing of next alarm to a file for usage on pdaXrom.
71 76
72 77
73************************************* 78*************************************
74 79
75You can find the complete changelog 80You can find the complete changelog
76from version 1.7.7 to 2.2.0 81from version 1.7.7 to 2.2.0
77in the source package or on 82in the source package or on
78 83
79http://www.pi-sync.net/html/changelog.html 84http://www.pi-sync.net/html/changelog.html
80 85
81 86
82 87
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index 288ce4b..767e243 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -45,1537 +45,1536 @@
45{ "Access:","Zugriff:" }, 45{ "Access:","Zugriff:" },
46{ "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" }, 46{ "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" },
47{ "Action","Aktion" }, 47{ "Action","Aktion" },
48{ "Add Filter","Filter Hinzufügen" }, 48{ "Add Filter","Filter Hinzufügen" },
49{ "&Add","Hinzufügen" }, 49{ "&Add","Hinzufügen" },
50{ "Add","Hinzufügen" }, 50{ "Add","Hinzufügen" },
51{ "Additional email addresses:","Zusätzliche E-Mail Adressen:" }, 51{ "Additional email addresses:","Zusätzliche E-Mail Adressen:" },
52{ "Additional email address:","Zusätzliche E-Mail Adresse:" }, 52{ "Additional email address:","Zusätzliche E-Mail Adresse:" },
53{ "&Addressbook","&Adressbuch" }, 53{ "&Addressbook","&Adressbuch" },
54{ "Address &Book...","Adress&buch..." }, 54{ "Address &Book...","Adress&buch..." },
55{ "Agenda Size","Agende Größe" }, 55{ "Agenda Size","Agende Größe" },
56{ "Agenda Size:","Größe der Agenda:" }, 56{ "Agenda Size:","Größe der Agenda:" },
57{ "Agenda view:","Agenda Ansicht:" }, 57{ "Agenda view:","Agenda Ansicht:" },
58{ "Agenda view background color:","Hintergrund der Agenda Ansicht:" }, 58{ "Agenda view background color:","Hintergrund der Agenda Ansicht:" },
59{ "All attendees","Alle Teilnehmer" }, 59{ "All attendees","Alle Teilnehmer" },
60{ "AllDayAgenda Height:","Höhe Ganztages Agenda:" }, 60{ "AllDayAgenda Height:","Höhe Ganztages Agenda:" },
61{ "All day event","Ganztägig" }, 61{ "All day event","Ganztägig" },
62{ "Anonymous","Anonym" }, 62{ "Anonymous","Anonym" },
63{ "Apply","Anwenden" }, 63{ "Apply","Anwenden" },
64{ "Apr","Apr" }, 64{ "Apr","Apr" },
65{ "April","April" }, 65{ "April","April" },
66{"Ask for every entry on conflict","Frage bei Konflikten nach"}, 66{"Ask for every entry on conflict","Frage bei Konflikten nach"},
67{ "Ask for preferences before syncing","Vor dem Syncronisieren nachfragen" }, 67{ "Ask for preferences before syncing","Vor dem Syncronisieren nachfragen" },
68{ "Ask for quit when closing KO/Pi","Vor dem Beenden von KO/Pi nachfragen" }, 68{ "Ask for quit when closing KO/Pi","Vor dem Beenden von KO/Pi nachfragen" },
69{ "Attendees","Teilnehmer" }, 69{ "Attendees","Teilnehmer" },
70{ "Aug","Aug" }, 70{ "Aug","Aug" },
71{ "August","August" }, 71{ "August","August" },
72{ "Auto-Save","Automatisches Abspeichern" }, 72{ "Auto-Save","Automatisches Abspeichern" },
73{ "Auto save delay in minutes:","Verzög.autom.Speichern in Min" }, 73{ "Auto save delay in minutes:","Verzög.autom.Speichern in Min" },
74{ "Auto saving...","Automatische Sicherung..." }, 74{ "Auto saving...","Automatische Sicherung..." },
75{ "Begin on:","Starte mit:" }, 75{ "Begin on:","Starte mit:" },
76{ "Begins on: %1","Starte mit: %1" }, 76{ "Begins on: %1","Starte mit: %1" },
77{ "<b>From:</b> %1 <b>To:</b> %2","<b>Vom:</b> %1 <b>Zum:</b> %2" }, 77{ "<b>From:</b> %1 <b>To:</b> %2","<b>Vom:</b> %1 <b>Zum:</b> %2" },
78{ "<b>On:</b> %1","<b>Am:</b> %1" }, 78{ "<b>On:</b> %1","<b>Am:</b> %1" },
79{ "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Am:</b> %1 <b>Vom:S</b> %2 <b>Zum:</b> %3" }, 79{ "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Am:</b> %1 <b>Vom:S</b> %2 <b>Zum:</b> %3" },
80{ "<b>Original event:</b><p>","<b>Original Termin:</b><p>" }, 80{ "<b>Original event:</b><p>","<b>Original Termin:</b><p>" },
81{ " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" }, 81{ " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" },
82{ "Busy","Belegt" }, 82{ "Busy","Belegt" },
83{ "&Cancel","Abbre&chen" }, 83{ "&Cancel","Abbre&chen" },
84{ "Cancel","Abbrechen" }, 84{ "Cancel","Abbrechen" },
85{ "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" }, 85{ "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" },
86{ "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." }, 86{ "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." },
87{ "Categories...","Kategorien..." }, 87{ "Categories...","Kategorien..." },
88{ "Categories","Kategorien" }, 88{ "Categories","Kategorien" },
89{ "Category","Kategorie" }, 89{ "Category","Kategorie" },
90{ "Center View","Zentriere Ansicht" }, 90{ "Center View","Zentriere Ansicht" },
91{ "Change","Ändere" }, 91{ "Change","Ändere" },
92{ "Cinema","Kino" }, 92{ "Cinema","Kino" },
93{ "Clone Item","Klone Eintrag" }, 93{ "Clone Item","Klone Eintrag" },
94{ "&Close","S&chließen" }, 94{ "&Close","S&chließen" },
95{ "Close","Schließen" }, 95{ "Close","Schließen" },
96{ "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" }, 96{ "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" },
97{ "Colors","Farben" }, 97{ "Colors","Farben" },
98{ "completed","erledigt" }, 98{ "completed","erledigt" },
99{ "completed on %1","erledigt am %1" }, 99{ "completed on %1","erledigt am %1" },
100{ "Complete","Erledigt" }, 100{ "Complete","Erledigt" },
101{ "Confidential","Vertraulich" }, 101{ "Confidential","Vertraulich" },
102{ "Configure...","Einstellungen..." }, 102{ "Configure...","Einstellungen..." },
103{ "Confirm &deletes","Löschvogang bestätigen" }, 103{ "Confirm &deletes","Löschvogang bestätigen" },
104{ "Couldn't load calendar\n '%1'.","Kann Kalender\n '%1' nicht laden." }, 104{ "Couldn't load calendar\n '%1'.","Kann Kalender\n '%1' nicht laden." },
105{ "Counter-event Viewer","Terminzähler Ansicht" }, 105{ "Counter-event Viewer","Terminzähler Ansicht" },
106{ "Daily ending hour:","Feierabend:" }, 106{ "Daily ending hour:","Feierabend:" },
107{ "Daily starting hour:","Anfangszeit:" }, 107{ "Daily starting hour:","Anfangszeit:" },
108{ "Daily","Täglich" }, 108{ "Daily","Täglich" },
109{ "Date Format","Datums Format" }, 109{ "Date Format","Datums Format" },
110{ "Date Format:","Datums Format:" }, 110{ "Date Format:","Datums Format:" },
111{ "DateNavigator:(nr)","Datums Navigator" }, 111{ "DateNavigator:(nr)","Datums Navigator" },
112{ "Dates: ","Datum: " }, 112{ "Dates: ","Datum: " },
113{ "Date && Time","Datum && Zeit" }, 113{ "Date && Time","Datum && Zeit" },
114{ "Day begins at:","Der Tag beginnt um:" }, 114{ "Day begins at:","Der Tag beginnt um:" },
115{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" }, 115{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" },
116{ "Days in What's Next:","Tage in What's Next:" }, 116{ "Days in What's Next:","Tage in What's Next:" },
117{ "day(s)","Tag(e)" }, 117{ "day(s)","Tag(e)" },
118{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" }, 118{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" },
119{ "day","Tag" }, 119{ "day","Tag" },
120{ "Dec","Dez" }, 120{ "Dec","Dez" },
121{ "December","Dezember" }, 121{ "December","Dezember" },
122{ "Default alarm time:","Standard Alarmzeit:" }, 122{ "Default alarm time:","Standard Alarmzeit:" },
123{ "Default appointment time:","Standard Termin Startzeit:" }, 123{ "Default appointment time:","Standard Termin Startzeit:" },
124{ "Default event color:","Standard Terminfarbe:" }, 124{ "Default event color:","Standard Terminfarbe:" },
125{ "Default","Standard" }, 125{ "Default","Standard" },
126{ "Def. duration of new app.:","Standard Termin Länge:" }, 126{ "Def. duration of new app.:","Standard Termin Länge:" },
127{ "Delete All","Lösche alles" }, 127{ "Delete All","Lösche alles" },
128{ "Delete all selected","Lösche alle Selektierten" }, 128{ "Delete all selected","Lösche alle Selektierten" },
129{ "Delete Current","Aktuellen löschen" }, 129{ "Delete Current","Aktuellen löschen" },
130{ "Delete Event...","Lösche Termin..." }, 130{ "Delete Event...","Lösche Termin..." },
131{ "Delete Event","Lösche Termin" }, 131{ "Delete Event","Lösche Termin" },
132{ "&Delete...","Lösche..." }, 132{ "&Delete...","Lösche..." },
133{ "Delete...","Lösche..." }, 133{ "Delete...","Lösche..." },
134{ "Delete","Lösche" }, 134{ "Delete","Lösche" },
135{ "Delete Todo...","Lösche Todo..." }, 135{ "Delete Todo...","Lösche Todo..." },
136{ "Delete To-Do","Lösche Todo" }, 136{ "Delete To-Do","Lösche Todo" },
137{ "Deleting item %d ...","Lösche Eintrag %d..." }, 137{ "Deleting item %d ...","Lösche Eintrag %d..." },
138{ "Descriptions","Beschreibungen" }, 138{ "Descriptions","Beschreibungen" },
139{ "Deselect all","Deselektiere Alle" }, 139{ "Deselect all","Deselektiere Alle" },
140{ "Details","Details" }, 140{ "Details","Details" },
141{ "Dinner","Abendessen" }, 141{ "Dinner","Abendessen" },
142{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI beenden?" }, 142{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI beenden?" },
143{ "Due Date","Fällig am" }, 143{ "Due Date","Fällig am" },
144{ "Due: ","Fällig: "}, 144{ "Due: ","Fällig: "},
145{ "Due Time","Fällig um" }, 145{ "Due Time","Fällig um" },
146{ "Due:","Fällig:"}, 146{ "Due:","Fällig:"},
147{ "Duration: ","Dauer: " }, 147{ "Duration: ","Dauer: " },
148{ "Edit...","Bearbeite..." }, 148{ "Edit...","Bearbeite..." },
149{ "Edit Event...","Bearbeite Termin..." }, 149{ "Edit Event...","Bearbeite Termin..." },
150{ "Edit Event","Bearbeite Termin" }, 150{ "Edit Event","Bearbeite Termin" },
151{ "Edit exceptions","Bearbeite Ausnahmen" }, 151{ "Edit exceptions","Bearbeite Ausnahmen" },
152{ "EditorBox:","Editor Fenster:" }, 152{ "EditorBox:","Editor Fenster:" },
153{ "Edit Recurrence Range","Bearbeite Wiederholung" }, 153{ "Edit Recurrence Range","Bearbeite Wiederholung" },
154{ "Edit Todo...","Berabeite Todo..." }, 154{ "Edit Todo...","Berabeite Todo..." },
155{ "Edit To-Do","Todo bearbeiten" }, 155{ "Edit To-Do","Todo bearbeiten" },
156{ "E&mail address:","E&mail Adresse:" }, 156{ "E&mail address:","E&mail Adresse:" },
157{ "(EmptyEmail)","(KeineEmail)" }, 157{ "(EmptyEmail)","(KeineEmail)" },
158{ "(EmptyName)","(KeinName)" }, 158{ "(EmptyName)","(KeinName)" },
159{ "Enable Recurrence","Wiederholung anschalten" }, 159{ "Enable Recurrence","Wiederholung anschalten" },
160{ "End after","Endet nach"}, 160{ "End after","Endet nach"},
161{ "End by:","Endet am"}, 161{ "End by:","Endet am"},
162{ "End/Due Date","Ende/Fällig am" }, 162{ "End/Due Date","Ende/Fällig am" },
163{ "End:","Ende:" }, 163{ "End:","Ende:" },
164{ "End/Due Time","Ende/Fällig um" }, 164{ "End/Due Time","Ende/Fällig um" },
165{ "English","Englisch" }, 165{ "English","Englisch" },
166{ "Event","Termin" }, 166{ "Event","Termin" },
167{ "Event list","Termin Liste" }, 167{ "Event list","Termin Liste" },
168{ "Events","Termine" }, 168{ "Events","Termine" },
169{ "Event Viewer:","Termin Übersicht:" }, 169{ "Event Viewer:","Termin Übersicht:" },
170{ "every","jede" }, 170{ "every","jede" },
171{ "Exceptions...","Ausnahmen..." }, 171{ "Exceptions...","Ausnahmen..." },
172{ "Exceptions","Ausnahmen" }, 172{ "Exceptions","Ausnahmen" },
173{ "Exclude holidays","Ohne freie Tage" }, 173{ "Exclude holidays","Ohne freie Tage" },
174{ "Exclude Saturdays","Ohne Samstage" }, 174{ "Exclude Saturdays","Ohne Samstage" },
175{ "Feb","Feb" }, 175{ "Feb","Feb" },
176{ "February","Februar" }, 176{ "February","Februar" },
177{ "&Find","Suche!" }, 177{ "&Find","Suche!" },
178{ "Fonts","Schriftart" }, 178{ "Fonts","Schriftart" },
179{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" }, 179{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" },
180{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"}, 180{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"},
181{ "Free","Frei" }, 181{ "Free","Frei" },
182{ "Friday","Freitag" }, 182{ "Friday","Freitag" },
183{ "Fri","Fr" }, 183{ "Fri","Fr" },
184{ "From:","Vom:" }, 184{ "From:","Vom:" },
185{ "Full &name:","Vor- und &Nachname:" }, 185{ "Full &name:","Vor- und &Nachname:" },
186{ "General","Allgemein" }, 186{ "General","Allgemein" },
187{ "German","Deutsch" }, 187{ "German","Deutsch" },
188{ "Gifts","Geschenke" }, 188{ "Gifts","Geschenke" },
189{ "Go to Today","Heute anzeigen" }, 189{ "Go to Today","Heute anzeigen" },
190{ "Help","Hilfe" }, 190{ "Help","Hilfe" },
191{ "Hide Dates","Daten ausblenden" }, 191{ "Hide Dates","Daten ausblenden" },
192{ "Highlight color:","Markierungen:" }, 192{ "Highlight color:","Markierungen:" },
193{ "Holiday color:","Freie Tage:" }, 193{ "Holiday color:","Freie Tage:" },
194{ "hour(s)","Stunde(n)" }, 194{ "hour(s)","Stunde(n)" },
195{ "In %1 days: ","In %1 Tagen: " }, 195{ "In %1 days: ","In %1 Tagen: " },
196{ "Incomplete Todo:","Unerledigte Aufgaben:" }, 196{ "Incomplete Todo:","Unerledigte Aufgaben:" },
197{ "Information","Information" }, 197{ "Information","Information" },
198{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" }, 198{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" },
199{ "Jan","Jan" }, 199{ "Jan","Jan" },
200{ "January","Januar" }, 200{ "January","Januar" },
201{ "JournalView:","Journal Ansicht:" }, 201{ "JournalView:","Journal Ansicht:" },
202{ "Journals","Journale" }, 202{ "Journals","Journale" },
203{ "Jul","Jul" }, 203{ "Jul","Jul" },
204{ "July","Juli" }, 204{ "July","Juli" },
205{ "Jump to date","Springe zum Datum" }, 205{ "Jump to date","Springe zum Datum" },
206{ "June","Juni" }, 206{ "June","Juni" },
207{ "Jun","Jun" }, 207{ "Jun","Jun" },
208{ "Key Bindings...","Tastenzuordnung..." }, 208{ "Key Bindings...","Tastenzuordnung..." },
209{ "Kids","Kinder" }, 209{ "Kids","Kinder" },
210{ "Known Problems...","Bekannte Probleme..." }, 210{ "Known Problems...","Bekannte Probleme..." },
211{ "KO/Pi Find ","KO/Pi Suchdialog " }, 211{ "KO/Pi Find ","KO/Pi Suchdialog " },
212{ "KO/Pi Find: ","KO/Pi Suchen: " }, 212{ "KO/Pi Find: ","KO/Pi Suchen: " },
213{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." }, 213{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." },
214{ "Language:(needs restart)","Sprache (Neustart!)" }, 214{ "Language:(needs restart)","Sprache (Neustart!)" },
215{ "Language:","Sprache" }, 215{ "Language:","Sprache" },
216{ "Large","Etwas mehr" }, 216{ "Large","Etwas mehr" },
217{ "List View:","Listenansicht:" }, 217{ "List View:","Listenansicht:" },
218{ "List View","Listenansicht" }, 218{ "List View","Listenansicht" },
219{ "Load/Save","Laden/Speichern" }, 219{ "Load/Save","Laden/Speichern" },
220{ "Load Template","Lade Vorlage" }, 220{ "Load Template","Lade Vorlage" },
221{ "Locale","Lokalisation" }, 221{ "Locale","Lokalisation" },
222{ "Local temp file:","Lokale temp. Datei:" }, 222{ "Local temp file:","Lokale temp. Datei:" },
223{ "Location: ","Ort: " }, 223{ "Location: ","Ort: " },
224{ "Location:","Ort:" }, 224{ "Location:","Ort:" },
225{ "Mail client","Mail Programm" }, 225{ "Mail client","Mail Programm" },
226{ "Mail Client","Mail Programm" }, 226{ "Mail Client","Mail Programm" },
227{ "March","März" }, 227{ "March","März" },
228{ "Mar","Mär" }, 228{ "Mar","Mär" },
229{ "May","Mai" }, 229{ "May","Mai" },
230{ "M. Bains line:","M. Bains Linie:" }, 230{ "M. Bains line:","M. Bains Linie:" },
231{ "Medium","Medium" }, 231{ "Medium","Medium" },
232{ "Method","Methode" }, 232{ "Method","Methode" },
233{ "minute(s)","Minute(n)" }, 233{ "minute(s)","Minute(n)" },
234{ "Monday","Montag" }, 234{ "Monday","Montag" },
235{ "Mon","Mo" }, 235{ "Mon","Mo" },
236{ "Monthly","Monatlich" }, 236{ "Monthly","Monatlich" },
237{ "Month not long enough","Monat ist nicht lang genug" }, 237{ "Month not long enough","Monat ist nicht lang genug" },
238{ "month(s)","Monat(e)" }, 238{ "month(s)","Monat(e)" },
239{ "Month view:","Monatsansicht:" }, 239{ "Month view:","Monatsansicht:" },
240{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" }, 240{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" },
241{ "Todo view uses category colors","Todo Ansicht zeigt Kategorie Farben" }, 241{ "Todo view uses category colors","Todo Ansicht zeigt Kategorie Farben" },
242{ "Move &Down","Nach unten verschieben" }, 242{ "Move &Down","Nach unten verschieben" },
243{ "Move &Up","Nach oben verschieben" }, 243{ "Move &Up","Nach oben verschieben" },
244{ "Name:","Name:" }, 244{ "Name:","Name:" },
245{ "Name","Name" }, 245{ "Name","Name" },
246{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin löschen möchten?" }, 246{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin löschen möchten?" },
247{ "%n Days","%n Tage" }, 247{ "%n Days","%n Tage" },
248{ "Never","Nie" }, 248{ "Never","Nie" },
249{ "New event...","Neuer Termin..." }, 249{ "New event...","Neuer Termin..." },
250{ "New event","Neuer Termin" }, 250{ "New event","Neuer Termin" },
251{ "New Event...","Neuer Termin..." }, 251{ "New Event...","Neuer Termin..." },
252{ "New Events/Todos should","Neue Termine/Todos sollten" }, 252{ "New Events/Todos should","Neue Termine/Todos sollten" },
253{ "&New","&Neu" }, 253{ "&New","&Neu" },
254{ "New","Neu", }, 254{ "New","Neu", },
255{ "New Sub-Todo...","Neues Sub-Todo..." }, 255{ "New Sub-Todo...","Neues Sub-Todo..." },
256{ "New Todo...","Neues Todo..." }, 256{ "New Todo...","Neues Todo..." },
257{ "Next Alarm: ","Nächster Alarm: ", }, 257{ "Next Alarm: ","Nächster Alarm: ", },
258{ "&Next Day","&Nächster Tag", }, 258{ "&Next Day","&Nächster Tag", },
259{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" }, 259{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" },
260{ "Next month","Nächster Monat" }, 260{ "Next month","Nächster Monat" },
261{ "&Next Week","&Nächste Woche" }, 261{ "&Next Week","&Nächste Woche" },
262{ "Next year","Nächstes Jahr" }, 262{ "Next year","Nächstes Jahr" },
263{ "Next Year","Nächstes Jahr" }, 263{ "Next Year","Nächstes Jahr" },
264{ "%n h","%n Std" }, 264{ "%n h","%n Std" },
265{ "No ending date","Kein End-Datum", }, 265{ "No ending date","Kein End-Datum", },
266{ "No event, nothing to do.","Kein Termin, nichts zu tun.", }, 266{ "No event, nothing to do.","Kein Termin, nichts zu tun.", },
267{ "No event selected.","Kein Termin selektiert" }, 267{ "No event selected.","Kein Termin selektiert" },
268{ "No","Nein" }, 268{ "No","Nein" },
269{ "No program set","Kein Programm ausgewählt", }, 269{ "No program set","Kein Programm ausgewählt", },
270{ "Normal","Normal" }, 270{ "Normal","Normal" },
271{ "[No selection]","Keine Selektion", }, 271{ "[No selection]","Keine Selektion", },
272{ "No sound set","Kein Sound ausgewählt", }, 272{ "No sound set","Kein Sound ausgewählt", },
273{ "no time ","keine Zeit ", }, 273{ "no time ","keine Zeit ", },
274{ "no time","keine Zeit", }, 274{ "no time","keine Zeit", },
275{ "No Time","Keine Zeit" }, 275{ "No Time","Keine Zeit" },
276{ "November","November" }, 276{ "November","November" },
277{ "Nov","Nov", }, 277{ "Nov","Nov", },
278{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" }, 278{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" },
279{ "occurrence(s)","Vorkommen" }, 279{ "occurrence(s)","Vorkommen" },
280{ "October","Oktober" }, 280{ "October","Oktober" },
281{ "Oct","Okt", }, 281{ "Oct","Okt", },
282{ "O-due!","Ü-fällig! " }, 282{ "O-due!","Ü-fällig! " },
283{ "&OK","&OK" }, 283{ "&OK","&OK" },
284{ "Ok+Show!","Ok+Anzeigen" }, 284{ "Ok+Show!","Ok+Anzeigen" },
285{ "Organizer: %1","Organisator %1" }, 285{ "Organizer: %1","Organisator %1" },
286{ "Organizer","Organisator" }, 286{ "Organizer","Organisator" },
287{ "Owner: ","Besitzer: " }, 287{ "Owner: ","Besitzer: " },
288{ "Owner:","Besitzer:" }, 288{ "Owner:","Besitzer:" },
289{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 289{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
290{ "Pick a date to display","Wähle einen Tag zum anzeigen aus" }, 290{ "Pick a date to display","Wähle einen Tag zum anzeigen aus" },
291{ "Please specify a valid due date.","Bitte gültiges Fälligkeitsdatum angeben."}, 291{ "Please specify a valid due date.","Bitte gültiges Fälligkeitsdatum angeben."},
292{ "Please specify a valid end date,\nfor example '%1'.","Bitte gültiges Enddatum angeben,\nz.B.'%1'." }, 292{ "Please specify a valid end date,\nfor example '%1'.","Bitte gültiges Enddatum angeben,\nz.B.'%1'." },
293{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." }, 293{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." },
294{ "Please specify a valid start date,\nfor example '%1'.","Bitte gültiges Startdatum angeben,\nz.B. '%1'." }, 294{ "Please specify a valid start date,\nfor example '%1'.","Bitte gültiges Startdatum angeben,\nz.B. '%1'." },
295{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."}, 295{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."},
296{ "Please specify a valid start time,\nfor example '%1'.","Bitte gültige Startzeit angeben,\nz.B. '%1'." }, 296{ "Please specify a valid start time,\nfor example '%1'.","Bitte gültige Startzeit angeben,\nz.B. '%1'." },
297{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" }, 297{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" },
298{ "&Previous Day","Vorheriger Tag" }, 298{ "&Previous Day","Vorheriger Tag" },
299{ "Previous month","Vorheriger Monat" }, 299{ "Previous month","Vorheriger Monat" },
300{ "Previous Month","Vorheriger Monat" }, 300{ "Previous Month","Vorheriger Monat" },
301{ "&Previous Week","Vorherige Woche" }, 301{ "&Previous Week","Vorherige Woche" },
302{ "Previous year","Vorheriges Jahr" }, 302{ "Previous year","Vorheriges Jahr" },
303{ "Previous Year","Vorheriges Jahr" }, 303{ "Previous Year","Vorheriges Jahr" },
304{ "Printing","Drucken" }, 304{ "Printing","Drucken" },
305{ "Priority:","Priorität:" }, 305{ "Priority:","Priorität:" },
306{ "Private","Privat" }, 306{ "Private","Privat" },
307{ "Proceed","Weiter" }, 307{ "Proceed","Weiter" },
308{ "Public","Öffentlich" }, 308{ "Public","Öffentlich" },
309{ "Purge","Entferne" }, 309{ "Purge","Entferne" },
310{ "Purge Completed...","Entferne erledigte Todos..." }, 310{ "Purge Completed...","Entferne erledigte Todos..." },
311{ "Purge Todos","Todos bereinigen" }, 311{ "Purge Todos","Todos bereinigen" },
312{ "read-only","schreibgeschützt" }, 312{ "read-only","schreibgeschützt" },
313{ "Recur every","Wiederh. alle" }, 313{ "Recur every","Wiederh. alle" },
314{ "Recur in the month of","Wiederh. im Monat" }, 314{ "Recur in the month of","Wiederh. im Monat" },
315{ "Recur on the","Wiederh. am" }, 315{ "Recur on the","Wiederh. am" },
316{ "Recur on this day","Wiederh. am diesen Tag" }, 316{ "Recur on this day","Wiederh. am diesen Tag" },
317{ "Recurrence Range...","Wiederholungs Zeitraum..." }, 317{ "Recurrence Range...","Wiederholungs Zeitraum..." },
318{ "Recurrence Range","Wiederholungs Zeitraum" }, 318{ "Recurrence Range","Wiederholungs Zeitraum" },
319{ "Recurrence Rule","Wiederholungs Regel" }, 319{ "Recurrence Rule","Wiederholungs Regel" },
320{ "Recurrence","Wiederholung" }, 320{ "Recurrence","Wiederholung" },
321{ "Recurs","Wiederholung" }, 321{ "Recurs","Wiederholung" },
322{"&Reject","Abweisen"}, 322{"&Reject","Abweisen"},
323{ "Reminder:","Alarm:" }, 323{ "Reminder:","Alarm:" },
324{ "Rem.:","Alarm:" }, 324{ "Rem.:","Alarm:" },
325{ "Rem.","Alarm:" }, 325{ "Rem.","Alarm:" },
326{ "Remote file:","Remote Datei:"}, 326{ "Remote file:","Remote Datei:"},
327{ "Remote IP:","Remote (ferne) IP:" }, 327{ "Remote IP:","Remote (ferne) IP:" },
328{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " }, 328{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " },
329{ "Remote user:","Remote Benutzer"}, 329{ "Remote user:","Remote Benutzer"},
330{ "&Remove","Entfe&rnen" }, 330{ "&Remove","Entfe&rnen" },
331{ "Remove","Entfernen" }, 331{ "Remove","Entfernen" },
332{ "Request response","Bemerkung anfordern" }, 332{ "Request response","Bemerkung anfordern" },
333{ "Role:","Rolle:" }, 333{ "Role:","Rolle:" },
334{ "Role","Rolle" }, 334{ "Role","Rolle" },
335{ "Sat","Sa" }, 335{ "Sat","Sa" },
336{ "Saturday","Samstag" }, 336{ "Saturday","Samstag" },
337{ "Search for:","Suche nach:" }, 337{ "Search for:","Suche nach:" },
338{ "Search In","Suche in" }, 338{ "Search In","Suche in" },
339{ "Search...","Suche..." }, 339{ "Search...","Suche..." },
340{ "Search","Suche" }, 340{ "Search","Suche" },
341{ "Select Addresses","Wähle Adressen" }, 341{ "Select Addresses","Wähle Adressen" },
342{ "Select all","Selektiere Alle" }, 342{ "Select all","Selektiere Alle" },
343{ "Select a month","Wähle Monat" }, 343{ "Select a month","Wähle Monat" },
344{ "Select a week","Wähle Woche" }, 344{ "Select a week","Wähle Woche" },
345{ "Select a year","Wähle Jahr" }, 345{ "Select a year","Wähle Jahr" },
346{ "Send directly","Sende direkt" }, 346{ "Send directly","Sende direkt" },
347{ "&Send Messages","&Sende Nachrichten", }, 347{ "&Send Messages","&Sende Nachrichten", },
348{ "Sep","Sep" }, 348{ "Sep","Sep" },
349{ "September","September" }, 349{ "September","September" },
350{ "Shopping","Einkaufen" }, 350{ "Shopping","Einkaufen" },
351{ "Show Dates","Zeige Daten" }, 351{ "Show Dates","Zeige Daten" },
352{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." }, 352{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." },
353{ "Show Event","Termin anzeigen" }, 353{ "Show Event","Termin anzeigen" },
354{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." }, 354{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." },
355{ "Show Marcus Bains line","Zeige Marcus Bains Linie" }, 355{ "Show Marcus Bains line","Zeige Marcus Bains Linie" },
356{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." }, 356{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." },
357{ "Show time as:","Zeige Zeit als" }, 357{ "Show time as:","Zeige Zeit als" },
358{ "Show Todo","Todo anzeigen" }, 358{ "Show Todo","Todo anzeigen" },
359{ "Vertical screen layout(Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" }, 359{ "Vertical screen layout(Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" },
360{ "&Show","Anzeigen" }, 360{ "&Show","Anzeigen" },
361{ "Show...","Anzeigen..." }, 361{ "Show...","Anzeigen..." },
362{ "Show","Anzeigen" }, 362{ "Show","Anzeigen" },
363{ "Small","Klein" }, 363{ "Small","Klein" },
364{ "Sorry","Tut mir leid" }, 364{ "Sorry","Tut mir leid" },
365{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"}, 365{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"},
366{ "Start:","Start:" }, 366{ "Start:","Start:" },
367{ "Start Date","Start am" }, 367{ "Start Date","Start am" },
368{ "Start date: %1","Start Datum: %1" }, 368{ "Start date: %1","Start Datum: %1" },
369{ "Start Time","Start um" }, 369{ "Start Time","Start um" },
370{ "Status:","Status:" }, 370{ "Status:","Status:" },
371{ "Status","Status:" }, 371{ "Status","Status:" },
372{ "Summaries","Titel" }, 372{ "Summaries","Titel" },
373{ "Summary:","Titel:" }, 373{ "Summary:","Titel:" },
374{ "Summary","Titel" }, 374{ "Summary","Titel" },
375{ "Sunday","Sonntag" }, 375{ "Sunday","Sonntag" },
376{ "Sun","So" }, 376{ "Sun","So" },
377{ "Sync preferences:","Sync Einstellungen" }, 377{ "Sync preferences:","Sync Einstellungen" },
378{ "Sync Prefs","Sync Einstellungen" }, 378{ "Sync Prefs","Sync Einstellungen" },
379{ "Syncronize","Daten abgleich" }, 379{ "Syncronize","Daten abgleich" },
380{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" }, 380{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" },
381{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" }, 381{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" },
382{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" }, 382{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" },
383{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges Todo" }, 383{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges Todo" },
384{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" }, 384{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" },
385{ "Template...","Vorlage..." }, 385{ "Template...","Vorlage..." },
386{ "This day","Dieser Tag" }, 386{ "This day","Dieser Tag" },
387{ "This is an experimental feature. ","Dieses Feature ist experimentel" }, 387{ "This is an experimental feature. ","Dieses Feature ist experimentel" },
388{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." }, 388{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." },
389{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." }, 389{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." },
390{ "Thu","Do" }, 390{ "Thu","Do" },
391{ "Thursday","Donnerstag" }, 391{ "Thursday","Donnerstag" },
392{ "Time associated","Mit Zeit" }, 392{ "Time associated","Mit Zeit" },
393{ "Time bar:","Uhrzeit Zeile:" }, 393{ "Time bar:","Uhrzeit Zeile:" },
394{ "Time && Date","Zeit und Datum" }, 394{ "Time && Date","Zeit und Datum" },
395{ "Time Format","Zeit Format" }, 395{ "Time Format","Zeit Format" },
396{ "Time Format(nr):","Zeit Format(Neustart!)" }, 396{ "Time Format(nr):","Zeit Format(Neustart!)" },
397{ "Date Labels:","Datumsleiste:" }, 397{ "Date Labels:","Datumsleiste:" },
398{ "Time: ","Zeit: " }, 398{ "Time: ","Zeit: " },
399{ "Timezone:","Zeitzone:" }, 399{ "Timezone:","Zeitzone:" },
400{ "To: ","Bis: " }, 400{ "To: ","Bis: " },
401{ "To:","Bis:" }, 401{ "To:","Bis:" },
402{ "Today: ","Heute: " }, 402{ "Today: ","Heute: " },
403{ "Todo due today color:","Heute fällige Todos" }, 403{ "Todo due today color:","Heute fällige Todos" },
404{ "To-do items:","To-Do items:" }, 404{ "To-do items:","To-Do items:" },
405{ "Todo overdue color:","Überfällige Todos" }, 405{ "Todo overdue color:","Überfällige Todos" },
406{ "Todo","Todo" }, 406{ "Todo","Todo" },
407{ "To-do view shows completed Todos","Todo Ansicht zeigt erledigte Todos" }, 407{ "To-do view shows completed Todos","Todo Ansicht zeigt erledigte Todos" },
408{ "ToDoView:","Todo Ansicht:" }, 408{ "ToDoView:","Todo Ansicht:" },
409{ "Toggle Alarm","Wechsle Alarm" }, 409{ "Toggle Alarm","Wechsle Alarm" },
410{ "Toggle Allday","Umschalten Ganztag" }, 410{ "Toggle Allday","Umschalten Ganztag" },
411{ "Tomorrow: ","Morgen: " }, 411{ "Tomorrow: ","Morgen: " },
412{ "Tue","Di" }, 412{ "Tue","Di" },
413{ "Tuesday","Dienstag" }, 413{ "Tuesday","Dienstag" },
414{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" }, 414{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" },
415{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." }, 415{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." },
416{ "Unknown","Unbekannt" }, 416{ "Unknown","Unbekannt" },
417{ "Up","Hinauf" }, 417{ "Up","Hinauf" },
418{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" }, 418{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" },
419{ "User defined","Benutzerdefiniert" }, 419{ "User defined","Benutzerdefiniert" },
420{ "User long date:","Format langes Datum:" }, 420{ "User long date:","Format langes Datum:" },
421{ "User short date:","Forma kurzes Datum:" }, 421{ "User short date:","Forma kurzes Datum:" },
422{ "View","Ansicht" }, 422{ "View","Ansicht" },
423{ "View Fonts","Schriftarten Ansichten" }, 423{ "View Fonts","Schriftarten Ansichten" },
424{ "Views","Ansichten" }, 424{ "Views","Ansichten" },
425{ "Wed","Mi" }, 425{ "Wed","Mi" },
426{ "Wednesday","Mittwoch" }, 426{ "Wednesday","Mittwoch" },
427{ "Week %1","Woche %1" }, 427{ "Week %1","Woche %1" },
428{ "Weekly","Wöchentlich" }, 428{ "Weekly","Wöchentlich" },
429{ "Week starts on Sunday","Woche beginnt Sonntags" }, 429{ "Week starts on Sunday","Woche beginnt Sonntags" },
430{ "What's Next View:","What's Next Anz." }, 430{ "What's Next View:","What's Next Anz." },
431{ "What's next ?","Was kommt als nächstes?(What's Next)" }, 431{ "What's next ?","Was kommt als nächstes?(What's Next)" },
432{ "Working Hours","Tägliche Arbeitszeit" }, 432{ "Working Hours","Tägliche Arbeitszeit" },
433{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" }, 433{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" },
434{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" }, 434{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" },
435{ "Write back synced file","Syncronisierte Datei zurückschreiben" }, 435{ "Write back synced file","Syncronisierte Datei zurückschreiben" },
436{ "Yearly","Jährlich" }, 436{ "Yearly","Jährlich" },
437{ "year(s)","Jahr(e)" }, 437{ "year(s)","Jahr(e)" },
438{ "Yes","Ja" }, 438{ "Yes","Ja" },
439{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" }, 439{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" },
440{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." }, 440{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." },
441{ "week(s) on:","Woche(n) am: " }, 441{ "week(s) on:","Woche(n) am: " },
442{ "Full menu bar(nr)","Volle Menuleiste(bn)" }, 442{ "Full menu bar(nr)","Volle Menuleiste(bn)" },
443{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 443{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
444{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 444{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
445{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 445{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
446{ "Daylight start:","Sommerzeit Start:" }, 446{ "Daylight start:","Sommerzeit Start:" },
447{ "Daylight end:","Sommerzeit Ende:" }, 447{ "Daylight end:","Sommerzeit Ende:" },
448{ "Time Zone","Zeitzone" }, 448{ "Time Zone","Zeitzone" },
449{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" }, 449{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" },
450{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" }, 450{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" },
451{ "minutely","minütlich" }, 451{ "minutely","minütlich" },
452{ "hourly","stündlich" }, 452{ "hourly","stündlich" },
453{ "daily","täglich" }, 453{ "daily","täglich" },
454{ "weekly","wöchentlich" }, 454{ "weekly","wöchentlich" },
455{ "monthly","monatlich" }, 455{ "monthly","monatlich" },
456{ "day-monthly","tag-monatlich" }, 456{ "day-monthly","tag-monatlich" },
457{ "month-yearly","monat-jährlich" }, 457{ "month-yearly","monat-jährlich" },
458{ "day-yearly","tag-jährlich" }, 458{ "day-yearly","tag-jährlich" },
459{ "position-yearly","pos-jährlich" }, 459{ "position-yearly","pos-jährlich" },
460{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" }, 460{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" },
461{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" }, 461{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" },
462{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" }, 462{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" },
463{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" }, 463{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" },
464{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" }, 464{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" },
465{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." }, 465{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." },
466{ "Event list view uses full window","Listenansicht nutzt Vollbild" }, 466{ "Event list view uses full window","Listenansicht nutzt Vollbild" },
467{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" }, 467{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" },
468{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" }, 468{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" },
469{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" }, 469{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" },
470{ "ViewChange","Ansichtswechsel" }, 470{ "ViewChange","Ansichtswechsel" },
471{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" }, 471{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" },
472{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" }, 472{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" },
473{ "File","Datei" }, 473{ "File","Datei" },
474{ "Clone...","Dupliziere..." }, 474{ "Clone...","Dupliziere..." },
475{ "Move...","Bewege..." }, 475{ "Move...","Bewege..." },
476{ "Beam...","Sende via IR..." }, 476{ "Beam...","Sende via IR..." },
477{ "&Clone...","Dupliziere..." }, 477{ "&Clone...","Dupliziere..." },
478{ "&Move...","Bewege..." }, 478{ "&Move...","Bewege..." },
479{ "&Beam...","Sende via IR..." }, 479{ "&Beam...","Sende via IR..." },
480{ "Show Completed","Zeige erledigte Todos" }, 480{ "Show Completed","Zeige erledigte Todos" },
481{ "Show Quick Todo","Zeige Quick-Todo" }, 481{ "Show Quick Todo","Zeige Quick-Todo" },
482{ "Unparent Todo","Un-sub Todo" }, 482{ "Unparent Todo","Un-sub Todo" },
483{ "Save selected to file...","Speichere Selektierte..." }, 483{ "Save selected to file...","Speichere Selektierte..." },
484{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." }, 484{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." },
485{ "Set Categ. for selected...","Setze Kateg. für Selekt." }, 485{ "Set Categ. for selected...","Setze Kateg. für Selekt." },
486{ "Beam via IR...","Sende via IR..." }, 486{ "Beam via IR...","Sende via IR..." },
487{ "Search","Suchen" }, 487{ "Search","Suchen" },
488{ "Date Picker","Datum auswählen" }, 488{ "Date Picker","Datum auswählen" },
489{ "Day View","Tagesansicht" }, 489{ "Day View","Tagesansicht" },
490{ "Work Week","Arbeitswoche" }, 490{ "Work Week","Arbeitswoche" },
491{ "Week","Wochenansicht" }, 491{ "Week","Wochenansicht" },
492{ "Month","Monatsansicht" }, 492{ "Month","Monatsansicht" },
493{ "Todo View","Todo Liste" }, 493{ "Todo View","Todo Liste" },
494{ "Journal","Journal" }, 494{ "Journal","Journal" },
495{ "Next days","Nächste Tage" }, 495{ "Next days","Nächste Tage" },
496{ "Print agenda selection...","Drucke Agendaselektion..." }, 496{ "Print agenda selection...","Drucke Agendaselektion..." },
497{ "Toggle DateNavigator","Navigator umschalten" }, 497{ "Toggle DateNavigator","Navigator umschalten" },
498{ "Toggle FilterView","Filteransicht umschalten" }, 498{ "Toggle FilterView","Filteransicht umschalten" },
499{ "Prev. month","Vorheriger Monat" }, 499{ "Prev. month","Vorheriger Monat" },
500{ "Go backward","Gehe zurück" }, 500{ "Go backward","Gehe zurück" },
501{ "Go forward","Gehe weiter" }, 501{ "Go forward","Gehe weiter" },
502{ "Synchronize","Synchronisieren" }, 502{ "Synchronize","Synchronisieren" },
503{ "AgendaSize","Agendagröße" }, 503{ "AgendaSize","Agendagröße" },
504{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" }, 504{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" },
505{ "Import last file","Importiere letzte Datei" }, 505{ "Import last file","Importiere letzte Datei" },
506{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." }, 506{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." },
507{ "Save Backup...","Speichere Backup..." }, 507{ "Save Backup...","Speichere Backup..." },
508{ "Export VCalendar","Exportiere VCalendar" }, 508{ "Export VCalendar","Exportiere VCalendar" },
509{ "Manage new categories...","Verwalte neue Kategorien..." }, 509{ "Manage new categories...","Verwalte neue Kategorien..." },
510{ "Beam complete calendar...","Sende kompletten Kalender..." }, 510{ "Beam complete calendar...","Sende kompletten Kalender..." },
511{ "Beam filtered calendar...","Sende gefilterten Kalender..." }, 511{ "Beam filtered calendar...","Sende gefilterten Kalender..." },
512{ "Remote via ssh","Über Netzwerk via ssh" }, 512{ "Remote via ssh","Über Netzwerk via ssh" },
513{ "With local file","Mit lokaler Datei" }, 513{ "With local file","Mit lokaler Datei" },
514{ "With last file","Mit letzter Datei" }, 514{ "With last file","Mit letzter Datei" },
515{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" }, 515{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" },
516{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" }, 516{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" },
517{ "Save filename","Speichern: Dateinamen wählen" }, 517{ "Save filename","Speichern: Dateinamen wählen" },
518{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" }, 518{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" },
519{ "KO/Pi: Warning!","KO/Pi: Warnung!" }, 519{ "KO/Pi: Warning!","KO/Pi: Warnung!" },
520{ "Overwrite!","Überschreibe!" }, 520{ "Overwrite!","Überschreibe!" },
521{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 521{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
522{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Alle selektierten Einträge werden\nunwiederbringlich gelöscht.\n(Löschen kann auf dem\nPDA einige Zeit dauern)\n" }, 522{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Alle selektierten Einträge werden\nunwiederbringlich gelöscht.\n(Löschen kann auf dem\nPDA einige Zeit dauern)\n" },
523{ "KO/Pi Confirmation","KO/Pi Bestätigung" }, 523{ "KO/Pi Confirmation","KO/Pi Bestätigung" },
524{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" }, 524{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" },
525{ "Deleting item %d ...","Lösche Eintrag %d ..." }, 525{ "Deleting item %d ...","Lösche Eintrag %d ..." },
526{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." }, 526{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." },
527{ "Size","Größe" }, 527{ "Size","Größe" },
528{ "Date","Datum" }, 528{ "Date","Datum" },
529{ "Mime Type","Datei Typ" }, 529{ "Mime Type","Datei Typ" },
530{ "All Files","Alle Dateien" }, 530{ "All Files","Alle Dateien" },
531{ "Files","Dateien" }, 531{ "Files","Dateien" },
532{ "Documents","DoKumente" }, 532{ "Documents","DoKumente" },
533{ "Select Categories","Selektiere Kategorien" }, 533{ "Select Categories","Selektiere Kategorien" },
534{ " &Deselect All "," Auswahl aufheben " }, 534{ " &Deselect All "," Auswahl aufheben " },
535{ "A&dd","Hinzu" }, 535{ "A&dd","Hinzu" },
536{ "&Modify","Ändern" }, 536{ "&Modify","Ändern" },
537{ "Edit Categories","Editiere Kategorien" }, 537{ "Edit Categories","Editiere Kategorien" },
538{ " &Edit Categories "," &Editiere Kategorien " }, 538{ " &Edit Categories "," &Editiere Kategorien " },
539{ "Beam Options","Beam Einstellungen" }, 539{ "Beam Options","Beam Einstellungen" },
540{ " With timezone "," Mit Zeitzone " }, 540{ " With timezone "," Mit Zeitzone " },
541{ " Local time ", " Lokale Zeit " }, 541{ " Local time ", " Lokale Zeit " },
542{ "Manage new Categories","Verwalte neue Kategorien" }, 542{ "Manage new Categories","Verwalte neue Kategorien" },
543{ "Add to category list","Füge zur Kategorieliste hinzu" }, 543{ "Add to category list","Füge zur Kategorieliste hinzu" },
544{ "Remove from Events/Todos","Entferne von Terminen/Todos" }, 544{ "Remove from Events/Todos","Entferne von Terminen/Todos" },
545{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" }, 545{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" },
546{ "File format","Datei Format" }, 546{ "File format","Datei Format" },
547{ "Time format","Zeit Format" }, 547{ "Time format","Zeit Format" },
548{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." }, 548{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." },
549{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" }, 549{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" },
550{ "h","Std" }, 550{ "h","Std" },
551{ "min","Min" }, 551{ "min","Min" },
552{ "hou","Std" }, 552{ "hou","Std" },
553{ "day","Tag" }, 553{ "day","Tag" },
554{ "French","Französich" }, 554{ "French","Französich" },
555{ "Time","Zeit" }, 555{ "Time","Zeit" },
556{ "Event Viewer","Termin Anzeige" }, 556{ "Event Viewer","Termin Anzeige" },
557{ "Cancel Sync","Sync Abbrechen" }, 557{ "Cancel Sync","Sync Abbrechen" },
558{ "Remote","Fern" }, 558{ "Remote","Fern" },
559{ "Local","Lokal" }, 559{ "Local","Lokal" },
560{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" }, 560{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" },
561{ "Local: ","Lokal: " }, 561{ "Local: ","Lokal: " },
562{ "Remote: ","Fern: " }, 562{ "Remote: ","Fern: " },
563{ "Last modified: ","Zuletzt geändert: " }, 563{ "Last modified: ","Zuletzt geändert: " },
564{ "Location: ","Ort: " }, 564{ "Location: ","Ort: " },
565{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" }, 565{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" },
566{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" }, 566{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" },
567{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " }, 567{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " },
568{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" }, 568{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" },
569{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " }, 569{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " },
570{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" }, 570{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" },
571{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." }, 571{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." },
572{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" }, 572{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" },
573{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" }, 573{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" },
574{ "( %1 min before )","( %1 min vorher )" }, 574{ "( %1 min before )","( %1 min vorher )" },
575{ "<b>Alarm on: ","<b>Alarm am: " }, 575{ "<b>Alarm on: ","<b>Alarm am: " },
576{ "<b>Details: </b>","<b>Details: </b>" }, 576{ "<b>Details: </b>","<b>Details: </b>" },
577{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 577{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
578{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" }, 578{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" },
579{ "Organizer","Organisator" }, 579{ "Organizer","Organisator" },
580{ "Save","Speichern" }, 580{ "Save","Speichern" },
581{ "Exit (+save)","Beenden(+speichern)" }, 581{ "Exit (+save)","Beenden(+speichern)" },
582{ "Home","Zuhause" }, 582{ "Home","Zuhause" },
583{ "Office","Büro" }, 583{ "Office","Büro" },
584{ "Library","Bibliothek" }, 584{ "Library","Bibliothek" },
585{ "Doctor","Arzt" }, 585{ "Doctor","Arzt" },
586{ "Beach","Strand" }, 586{ "Beach","Strand" },
587{ "Conference room","Konferenzraum" }, 587{ "Conference room","Konferenzraum" },
588{ "Drive Home","Heimfahrt" }, 588{ "Drive Home","Heimfahrt" },
589{ "Watch TV","Tv gucken" }, 589{ "Watch TV","Tv gucken" },
590{ "Phone call","Telefonanruf" }, 590{ "Phone call","Telefonanruf" },
591{ "Pay bill","Rechnung bezahlen" }, 591{ "Pay bill","Rechnung bezahlen" },
592{ "Read book","Buch lesen" }, 592{ "Read book","Buch lesen" },
593{ "Watering plants","Pflanzen giessen" }, 593{ "Watering plants","Pflanzen giessen" },
594{"Appointment","Verabredung" }, 594{"Appointment","Verabredung" },
595{"Birthday","Geburtstag" }, 595{"Birthday","Geburtstag" },
596{"Business","Geschäft" }, 596{"Business","Geschäft" },
597{"Business Travel","Geschäftsreise" }, 597{"Business Travel","Geschäftsreise" },
598{"Cinema","Kino" }, 598{"Cinema","Kino" },
599{"Customer","Kunde" }, 599{"Customer","Kunde" },
600{"Break","Pause" }, 600{"Break","Pause" },
601{"Breakfast","Frühstück" }, 601{"Breakfast","Frühstück" },
602{"Competition","Wettkampf" }, 602{"Competition","Wettkampf" },
603{"Dinner","Abendessen" }, 603{"Dinner","Abendessen" },
604{"Education","Erziehung" }, 604{"Education","Erziehung" },
605{"Family","Familie" }, 605{"Family","Familie" },
606{"Favorites","Favoriten" }, 606{"Favorites","Favoriten" },
607{"Festival","Festival" }, 607{"Festival","Festival" },
608{"Fishing","Angeln" }, 608{"Fishing","Angeln" },
609{"Flight","Flug" }, 609{"Flight","Flug" },
610{"Gifts","Geschenk" }, 610{"Gifts","Geschenk" },
611{"Holiday","Feiertag" }, 611{"Holiday","Feiertag" },
612{"Holiday Cards","Ansichtskarten" }, 612{"Holiday Cards","Ansichtskarten" },
613{"Hot Contacts","Heisse Kontakte" }, 613{"Hot Contacts","Heisse Kontakte" },
614{"Hiking","Wandern" }, 614{"Hiking","Wandern" },
615{"Hunting","Jagen" }, 615{"Hunting","Jagen" },
616{"Key Customer","Wichtiger Kunde" }, 616{"Key Customer","Wichtiger Kunde" },
617{"Kids","Kinder" }, 617{"Kids","Kinder" },
618{"Lunch","Mittagessen" }, 618{"Lunch","Mittagessen" },
619{"Meeting","Treffen" }, 619{"Meeting","Treffen" },
620{"Miscellaneous","Verschiedenes" }, 620{"Miscellaneous","Verschiedenes" },
621{"Partner","Partner" }, 621{"Partner","Partner" },
622{"Party","Partie" }, 622{"Party","Partie" },
623{"Personal","Privat" }, 623{"Personal","Privat" },
624{"Personal Travel","Privatreise"}, 624{"Personal Travel","Privatreise"},
625{"PHB","PHB" }, 625{"PHB","PHB" },
626{"Phone Calls","Telefonanruf" }, 626{"Phone Calls","Telefonanruf" },
627{"Projects","Projekt" }, 627{"Projects","Projekt" },
628{"Recurring","Wiederholend" }, 628{"Recurring","Wiederholend" },
629{"School","Schule" }, 629{"School","Schule" },
630{"Shopping","Einkaufen" }, 630{"Shopping","Einkaufen" },
631{"Speach","Rede" }, 631{"Speach","Rede" },
632{"Special Occasion","Spez.Gelegenheit" }, 632{"Special Occasion","Spez.Gelegenheit" },
633{"Sports","Sport" }, 633{"Sports","Sport" },
634{"Talk","Vortrag" }, 634{"Talk","Vortrag" },
635{"Travel","Reise" }, 635{"Travel","Reise" },
636{"TV","TV" }, 636{"TV","TV" },
637{"Germany","Deutschland" }, 637{"Germany","Deutschland" },
638{"Sweden","Schweden" }, 638{"Sweden","Schweden" },
639{"Forest","Wald" }, 639{"Forest","Wald" },
640{ "Desert","Wüste" }, 640{ "Desert","Wüste" },
641{ "Kitchen","Küche" }, 641{ "Kitchen","Küche" },
642{ "Lake","See" }, 642{ "Lake","See" },
643{"University","Universität"}, 643{"University","Universität"},
644{"Vacation","Urlaub" }, 644{"Vacation","Urlaub" },
645{"VIP","VIP" }, 645{"VIP","VIP" },
646{ "Import Sharp Calendar","Importiere Sharp Kalender" }, 646{ "Import Sharp Calendar","Importiere Sharp Kalender" },
647{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" }, 647{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" },
648{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" }, 648{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" },
649{ "Cancelled","Gecancelt" }, 649{ "Cancelled","Gecancelt" },
650{ "Multiple sync","Mehrfach Sync" }, 650{ "Multiple sync","Mehrfach Sync" },
651{ "Local file","Lokale Datei" }, 651{ "Local file","Lokale Datei" },
652{ "Last file","Letzte Datei" }, 652{ "Last file","Letzte Datei" },
653{ "Keys + Colors...","Tasten + Farben..." }, 653{ "Keys + Colors...","Tasten + Farben..." },
654{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" }, 654{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" },
655{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" }, 655{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" },
656{ "Choose...","Wähle..." }, 656{ "Choose...","Wähle..." },
657{ "Use colors for application:","Setze Farben für Programm:" }, 657{ "Use colors for application:","Setze Farben für Programm:" },
658{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" }, 658{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" },
659{ "Frames, labels, etc.:","Rahmen, Label, etc.:" }, 659{ "Frames, labels, etc.:","Rahmen, Label, etc.:" },
660{ "Show parent To-Do's","Zeige Ober-Todos" }, 660{ "Show parent To-Do's","Zeige Ober-Todos" },
661{ "Show location","Zeige Orte" }, 661{ "Show location","Zeige Orte" },
662{ "Show events that recur ","Zeige Termine, die sich wiederholen:" }, 662{ "Show events that recur ","Zeige Termine, die sich wiederholen:" },
663{ "Show in every cell ","Zeige in jeder Zelle " }, 663{ "Show in every cell ","Zeige in jeder Zelle " },
664{ "short month","kurzen Monat" }, 664{ "short month","kurzen Monat" },
665{ "icons","Icons" }, 665{ "icons","Icons" },
666{ "Show Sat/Sun together","Zeige Sam/Son zusammen" }, 666{ "Show Sat/Sun together","Zeige Sam/Son zusammen" },
667{ "Category colors are applied to text","Kategorie Farben färben Text" }, 667{ "Category colors are applied to text","Kategorie Farben färben Text" },
668{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" }, 668{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" },
669{ "Day color odd months","Tagesfarbe ungerade Monate" }, 669{ "Day color odd months","Tagesfarbe ungerade Monate" },
670{ "Day color even months","Tagesfarbe gerade Monate" }, 670{ "Day color even months","Tagesfarbe gerade Monate" },
671{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" }, 671{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" },
672{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" }, 672{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" },
673{ "Small To-do view uses smaller font","Kleine Todo Ansicht nutzt kleineren Font" }, 673{ "Small To-do view uses smaller font","Kleine Todo Ansicht nutzt kleineren Font" },
674{ "Colors are applied to text","Farben werden auf Text angewendet" }, 674{ "Colors are applied to text","Farben werden auf Text angewendet" },
675{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" }, 675{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" },
676{ "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" }, 676{ "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" },
677{ "Play beeps count:","Anzahl der Alarmpiepse: " }, 677{ "Play beeps count:","Anzahl der Alarmpiepse: " },
678{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " }, 678{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " },
679{ "Default suspend time in min:","Standard Supendierungs Zeit: " }, 679{ "Default suspend time in min:","Standard Supendierungs Zeit: " },
680{ "Auto suspend count:","Anzahl der auto Suspendierungen" }, 680{ "Auto suspend count:","Anzahl der auto Suspendierungen" },
681{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" }, 681{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" },
682{ "New profile","Neues Profil" }, 682{ "New profile","Neues Profil" },
683{ "Clone profile","Klone Profil" }, 683{ "Clone profile","Klone Profil" },
684{ "Delete profile","Lösche Profil" }, 684{ "Delete profile","Lösche Profil" },
685{ "Profile:","Profil:" }, 685{ "Profile:","Profil:" },
686{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" }, 686{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" },
687{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 687{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
688{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 688{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
689{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 689{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
690{ "Write back file","Schreibe Datei zurück" }, 690{ "Write back file","Schreibe Datei zurück" },
691{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 691{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
692{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 692{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
693{ "Local device name:","Name dieses Gerätes:" }, 693{ "Local device name:","Name dieses Gerätes:" },
694{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 694{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
695{ "Sync preferences","Synchronisations Einstellungen" }, 695{ "Sync preferences","Synchronisations Einstellungen" },
696{ "Profile kind","Profil Art" }, 696{ "Profile kind","Profil Art" },
697{ "Local file","Lokale Datei" }, 697{ "Local file","Lokale Datei" },
698{ "Local file:","Lokale Datei:" }, 698{ "Local file:","Lokale Datei:" },
699{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 699{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
700{ "Fill in default values for:","Setze Beispiel Werte ein für:" }, 700{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
701{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" }, 701{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
702{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"}, 702{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"},
703{ "Device","Gerät:" }, 703{ "Device","Gerät:" },
704{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" }, 704{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" },
705{ "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" }, 705{ "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" },
706{ "Synchronization successful","Synchronisation erfolgreich" }, 706{ "Synchronization successful","Synchronisation erfolgreich" },
707{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." }, 707{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." },
708{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" }, 708{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" },
709{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" }, 709{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" },
710{ "Enter password","Passwort eingeben" }, 710{ "Enter password","Passwort eingeben" },
711{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" }, 711{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" },
712{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." }, 712{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." },
713{ "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" }, 713{ "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" },
714{ "Writing back file result: ","Resultat des Dateizurückschreibens: " }, 714{ "Writing back file result: ","Resultat des Dateizurückschreibens: " },
715{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" }, 715{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" },
716{ "Edit Calendar Filters","Editiere Kalendar Filter" }, 716{ "Edit Calendar Filters","Editiere Kalendar Filter" },
717{ "Enter filter name:","Neuer Filter Name:" }, 717{ "Enter filter name:","Neuer Filter Name:" },
718{ "Add Filter","Filter hinzufügen" }, 718{ "Add Filter","Filter hinzufügen" },
719{ "Question","Frage" }, 719{ "Question","Frage" },
720{ "Filter position: ","Filter Position: " }, 720{ "Filter position: ","Filter Position: " },
721{ "Month View","Monatsansicht" }, 721{ "Month View","Monatsansicht" },
722{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" }, 722{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" },
723{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 723{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
724{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, 724{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
725{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" }, 725{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" },
726{ "Access: ","Zugriff: " }, 726{ "Access: ","Zugriff: " },
727{ "Needs Action","Aktion notwendig" }, 727{ "Needs Action","Aktion notwendig" },
728{ "Accepted","Akzeptiert" }, 728{ "Accepted","Akzeptiert" },
729{ "Declined","Abgelehnt" }, 729{ "Declined","Abgelehnt" },
730{ "Tentative","Vorläufig" }, 730{ "Tentative","Vorläufig" },
731{ "Delegated","Beauftragt" }, 731{ "Delegated","Beauftragt" },
732{ "Completed","Vollständig" }, 732{ "Completed","Vollständig" },
733{ "In Process","In Bearbeitung" }, 733{ "In Process","In Bearbeitung" },
734{ "Participant","Teilnehmer" }, 734{ "Participant","Teilnehmer" },
735{ "Optional Participant","Möglicher Teilnehmer" }, 735{ "Optional Participant","Möglicher Teilnehmer" },
736{ "Observer","Beobachter" }, 736{ "Observer","Beobachter" },
737{ "Chair","Vorsitzender" }, 737{ "Chair","Vorsitzender" },
738{ "Not supported \non desktop!\n","" }, 738{ "Not supported \non desktop!\n","" },
739{ "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) " }, 739{ "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) " },
740{ "Date range: ","Datums Zeitspanne: " }, 740{ "Date range: ","Datums Zeitspanne: " },
741{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " }, 741{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " },
742{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." }, 742{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." },
743{ "Add / remove events","Add./entferne Termine" }, 743{ "Add / remove events","Add./entferne Termine" },
744{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, 744{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." },
745{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, 745{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." },
746{ "Overwrite","Überschreiben" }, 746{ "Overwrite","Überschreiben" },
747{ "Sync+save","Syncen+speichern" }, 747{ "Sync+save","Syncen+speichern" },
748{ "Default","Standard" }, 748{ "Default","Standard" },
749{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, 749{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " },
750{ " %d items?"," %d Einträge?" }, 750{ " %d items?"," %d Einträge?" },
751{ "\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?" }, 751{ "\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?" },
752{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, 752{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" },
753{ "Current","Aktuelle" }, 753{ "Current","Aktuelle" },
754{ "\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" }, 754{ "\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" },
755{ "All","Alle" }, 755{ "All","Alle" },
756{ "Data Loss Warning","Datenverlust Warnung" }, 756{ "Data Loss Warning","Datenverlust Warnung" },
757{ "Proceed","Weitermachen" }, 757{ "Proceed","Weitermachen" },
758{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, 758{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" },
759{ "Filter disabled ","Filter abgeschaltet" }, 759{ "Filter disabled ","Filter abgeschaltet" },
760{ "Filter selected: ","Gewählter Filter: " }, 760{ "Filter selected: ","Gewählter Filter: " },
761{ "Toggle Cancel","Gecancelt ändern" }, 761{ "Toggle Cancel","Gecancelt ändern" },
762{ "&Toggle Cancel","Gecancel&t ändern" }, 762{ "&Toggle Cancel","Gecancel&t ändern" },
763{ "Configure Toolbar","Konfiguriere Toolbar" }, 763{ "Configure Toolbar","Konfiguriere Toolbar" },
764{ "Stretched TB","Gedehnte TB" }, 764{ "Stretched TB","Gedehnte TB" },
765{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, 765{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" },
766{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, 766{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" },
767{ "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" }, 767{ "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" },
768{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, 768{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" },
769{ "Imported file successfully","Datei erfolgreich importiert" }, 769{ "Imported file successfully","Datei erfolgreich importiert" },
770{ "Error importing file","Fehler beim Importieren der Datei" }, 770{ "Error importing file","Fehler beim Importieren der Datei" },
771{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, 771{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" },
772{ "Export iCal filename(*.ics)","Export iCal Dateiname(*.ics)" }, 772{ "Export iCal filename(*.ics)","Export iCal Dateiname(*.ics)" },
773{ "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" }, 773{ "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{ "Overwrite!","Überschreiben!" }, 774{ "Overwrite!","Überschreiben!" },
775{ "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" }, 775{ "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{ "Load backup filename","Lade Backup Dateiname" }, 776{ "Load backup filename","Lade Backup Dateiname" },
777{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, 777{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" },
778{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, 778{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" },
779{ "Save backup filename","Speichere Backup Dateiname" }, 779{ "Save backup filename","Speichere Backup Dateiname" },
780{ "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" }, 780{ "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{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 781{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
782{ "Details of attendee","Teilnehmerdetails" }, 782{ "Details of attendee","Teilnehmerdetails" },
783{ "Work phone:\n","Telefon Arbeit:\n" }, 783{ "Work phone:\n","Telefon Arbeit:\n" },
784{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, 784{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" },
785{ "Home phone:\n","Telefon privat:\n" }, 785{ "Home phone:\n","Telefon privat:\n" },
786{ "Mobile home phone:\n","Mobiltelefon privat:\n" }, 786{ "Mobile home phone:\n","Mobiltelefon privat:\n" },
787{ "Email:\n","Email:\n" }, 787{ "Email:\n","Email:\n" },
788{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, 788{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" },
789{ "Audio Al.: ","Audio Al.: " }, 789{ "Audio Al.: ","Audio Al.: " },
790{ "Proc.Al.: ","Proz.Al.: " }, 790{ "Proc.Al.: ","Proz.Al.: " },
791{ "No sound set","Kein Sound definiert" }, 791{ "No sound set","Kein Sound definiert" },
792{ "*.wav|Wav Files","*.wav|Wav Dateien" }, 792{ "*.wav|Wav Files","*.wav|Wav Dateien" },
793{ "No program set","Kein Programm definiert" }, 793{ "No program set","Kein Programm definiert" },
794{ "Running '%1'","Ausführen '%1'" }, 794{ "Running '%1'","Ausführen '%1'" },
795{ "Playing '%1'","Abspielen '%1'" }, 795{ "Playing '%1'","Abspielen '%1'" },
796{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, 796{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" },
797{ "Load!","Laden!" }, 797{ "Load!","Laden!" },
798{ "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" }, 798{ "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{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, 799{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" },
800{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, 800{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" },
801{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 801{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
802{ "Features + hints...","Eigenschaften + Tipps..." }, 802{ "Features + hints...","Eigenschaften + Tipps..." },
803{ "User translation...","Benutzer Übersetzung..." }, 803{ "User translation...","Benutzer Übersetzung..." },
804{ "Sync HowTo...","Synchronisation HowTo..." }, 804{ "Sync HowTo...","Synchronisation HowTo..." },
805{ "Print calendar...","Drucke Kalender..." }, 805{ "Print calendar...","Drucke Kalender..." },
806{ "Anniversary","Jahrestag" }, 806{ "Anniversary","Jahrestag" },
807{ "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" }, 807{ "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{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, 808{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" },
809{ "Next recurrence is on: ","Nächste Wiederholung ist am:" }, 809{ "Next recurrence is on: ","Nächste Wiederholung ist am:" },
810{ "<b>Alarm on: </b>","<b>Alarm am: </b>" }, 810{ "<b>Alarm on: </b>","<b>Alarm am: </b>" },
811{ "<b>Access: </b>","<b>Zugriff: </b>" }, 811{ "<b>Access: </b>","<b>Zugriff: </b>" },
812{ "(%1 min before)","(%1 min vorher)" }, 812{ "(%1 min before)","(%1 min vorher)" },
813{ "<b>Categories: </b>","<b>Kategorien: </b>" }, 813{ "<b>Categories: </b>","<b>Kategorien: </b>" },
814{ "Save Journal/Description...","Speichere Journal/Details..." }, 814{ "Save Journal/Description...","Speichere Journal/Details..." },
815{ "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." }, 815{ "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{ "Continue","Weitermachen" }, 816{ "Continue","Weitermachen" },
817{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, 817{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" },
818{ "Attendee:","Teilnehmer:" }, 818{ "Attendee:","Teilnehmer:" },
819{ "Click OK to search ->","Klicke zum Suchen auf OK ->" }, 819{ "Click OK to search ->","Klicke zum Suchen auf OK ->" },
820{ "On day ","Am Tag " }, 820{ "On day ","Am Tag " },
821{ "%1 of ","%1 des Monats" }, 821{ "%1 of ","%1 des Monats" },
822{ "%1 of the year","%1 des Jahres" }, 822{ "%1 of the year","%1 des Jahres" },
823{ "Anonymous","Anonymo" }, 823{ "Anonymous","Anonymo" },
824{ "nobody@nowhere","niemand@nirgendwo" }, 824{ "nobody@nowhere","niemand@nirgendwo" },
825{ "calendar.html","calendar.html" }, 825{ "calendar.html","calendar.html" },
826{ " Local Time"," Lokale Zeit" }, 826{ " Local Time"," Lokale Zeit" },
827{ "Unknown Name","Unbekannter Name" }, 827{ "Unknown Name","Unbekannter Name" },
828{ "unknown@nowhere","unbekannt@nirgendwo" }, 828{ "unknown@nowhere","unbekannt@nirgendwo" },
829{ "Beam via IR!","Beam via IR!" }, 829{ "Beam via IR!","Beam via IR!" },
830{ "Next Month","Nächster Monat" }, 830{ "Next Month","Nächster Monat" },
831{ "Prio","Prio" }, 831{ "Prio","Prio" },
832{ "Reparent Todo","Mache Sub-Todo" }, 832{ "Reparent Todo","Mache Sub-Todo" },
833{ "tomorrow","morgen" }, 833{ "tomorrow","morgen" },
834{ "today","heute" }, 834{ "today","heute" },
835{ "yesterday","gestern" }, 835{ "yesterday","gestern" },
836{ "Ok","Ok" }, 836{ "Ok","Ok" },
837{ "Ok+Agenda","Ok+Agenda" }, 837{ "Ok+Agenda","Ok+Agenda" },
838{ "Email","Email" }, 838{ "Email","Email" },
839{ "RSVP","RSVP" }, 839{ "RSVP","RSVP" },
840{ "Email:","Email:" }, 840{ "Email:","Email:" },
841{ "Appointment Time ","Termin Zeit " }, 841{ "Appointment Time ","Termin Zeit " },
842{ "2","2" }, 842{ "2","2" },
843{ "3","3" }, 843{ "3","3" },
844{ "4","4" }, 844{ "4","4" },
845{ " 0 %"," 0 %" }, 845{ " 0 %"," 0 %" },
846{ " 20 %"," 20 %" }, 846{ " 20 %"," 20 %" },
847{ " 40 %"," 40 %" }, 847{ " 40 %"," 40 %" },
848{ " 60 %"," 60 %" }, 848{ " 60 %"," 60 %" },
849{ " 80 %"," 80 %" }, 849{ " 80 %"," 80 %" },
850{ "100 %","100 %" }, 850{ "100 %","100 %" },
851{ "Filter","Filter" }, 851{ "Filter","Filter" },
852{ "Configure","Konfiguriere" }, 852{ "Configure","Konfiguriere" },
853{ "What's Next","What's Next" }, 853{ "What's Next","What's Next" },
854{ "Complete calendar...","Kompletten Kalender..." }, 854{ "Complete calendar...","Kompletten Kalender..." },
855{ "Filtered calendar...","Gefilterten Kalender..." }, 855{ "Filtered calendar...","Gefilterten Kalender..." },
856{ "Export to phone","Exportiere zum Handy" }, 856{ "Export to phone","Exportiere zum Handy" },
857{ "Beam receive enabled","Beam Empfang an" }, 857{ "Beam receive enabled","Beam Empfang an" },
858{ "What's new?","Was ist neu?" }, 858{ "What's new?","Was ist neu?" },
859{ "FAQ...","FAQ..." }, 859{ "FAQ...","FAQ..." },
860{ "Licence...","Licence..." }, 860{ "Licence...","Licence..." },
861{ "What's This?","What's This?" }, 861{ "What's This?","What's This?" },
862{ "&Edit...","Bearbeite..." }, 862{ "&Edit...","Bearbeite..." },
863{ "Oktober","Oktober" }, 863{ "Oktober","Oktober" },
864{ "Title","Titel" }, 864{ "Title","Titel" },
865{ "%1 %","%1 %" }, 865{ "%1 %","%1 %" },
866{ "Enable Pi-Sync","Schalte Pi-Sync an" }, 866{ "Enable Pi-Sync","Schalte Pi-Sync an" },
867{ "Import!","Importiere!" }, 867{ "Import!","Importiere!" },
868{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" }, 868{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" },
869{ "Export to phone options","Export ans Handy Optionen" }, 869{ "Export to phone options","Export ans Handy Optionen" },
870{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 870{ "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{ "I/O device: ","I/O device: " }, 871{ "I/O device: ","I/O device: " },
872{ "Connection: ","Connection: " }, 872{ "Connection: ","Connection: " },
873{ "Model(opt.): ","Model(opt.): " }, 873{ "Model(opt.): ","Model(opt.): " },
874{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" }, 874{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" },
875{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, 875{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " },
876{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" }, 876{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" },
877{ "Export to mobile phone!","Exportiere auf das Handy!" }, 877{ "Export to mobile phone!","Exportiere auf das Handy!" },
878{ "Export complete calendar","Exportiere kompletten Kalender" }, 878{ "Export complete calendar","Exportiere kompletten Kalender" },
879{ "Writing to phone...","Sende Daten ans Handy..." }, 879{ "Writing to phone...","Sende Daten ans Handy..." },
880{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 880{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
881{ "Retry","Nochmal versuchen" }, 881{ "Retry","Nochmal versuchen" },
882{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 882{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
883{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 883{ "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 exporting to phone!","Fehler beim Export auf das Handy!" }, 884{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
885{ "Export filtered calendar","Exportiere gefilterten Kalender" }, 885{ "Export filtered calendar","Exportiere gefilterten Kalender" },
886{ "Preferences","Vorlieben" }, 886{ "Preferences","Vorlieben" },
887{ "Global","Global" }, 887{ "Global","Global" },
888{ "Phone","Phone" }, 888{ "Phone","Phone" },
889{ "SMS","SMS" }, 889{ "SMS","SMS" },
890{ "Fax","Fax" }, 890{ "Fax","Fax" },
891{ "Pager","Pager" }, 891{ "Pager","Pager" },
892{ "SIP","SIP" }, 892{ "SIP","SIP" },
893{ "Italian","Italienisch" }, 893{ "Italian","Italienisch" },
894{ "24:00","24:00" }, 894{ "24:00","24:00" },
895{ "12:00am","12:00am" }, 895{ "12:00am","12:00am" },
896{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 896{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
897{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 897{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
898{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 898{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
899{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 899{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
900{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 900{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
901{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 901{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
902{ "Used Mail Client","Benutzter Mail Client" }, 902{ "Used Mail Client","Benutzter Mail Client" },
903{ "Channel:","Channel:" }, 903{ "Channel:","Channel:" },
904{ "Message:","Message:" }, 904{ "Message:","Message:" },
905{ "Parameters:","Parameter:" }, 905{ "Parameters:","Parameter:" },
906{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 906{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
907{ "extra Message:","extra Message:" }, 907{ "extra Message:","extra Message:" },
908{ "extra Parameters:","extra Parameter:" }, 908{ "extra Parameters:","extra Parameter:" },
909{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 909{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
910{ "External Apps.","Externe Appl." }, 910{ "External Apps.","Externe Appl." },
911{ "24 hours","24 Std." }, 911{ "24 hours","24 Std." },
912{ "3 hours","3 Std." }, 912{ "3 hours","3 Std." },
913{ "1 hour","1 Std." }, 913{ "1 hour","1 Std." },
914{ "15 minutes","15 Min." }, 914{ "15 minutes","15 Min." },
915{ "5 minutes","5 Min." }, 915{ "5 minutes","5 Min." },
916{ "1 minute","1 Min." }, 916{ "1 minute","1 Min." },
917{ "23","23" }, 917{ "23","23" },
918{ "Mon 15","Mon 15" }, 918{ "Mon 15","Mon 15" },
919{ "Configure KO","Konfiguriere KO" }, 919{ "Configure KO","Konfiguriere KO" },
920{ "Event text","Termin Text" }, 920{ "Event text","Termin Text" },
921{ "ToDo","Todo" }, 921{ "ToDo","Todo" },
922{ "Today","Heute" }, 922{ "Today","Heute" },
923{ "What's Next View","What's Next Ansicht" }, 923{ "What's Next View","What's Next Ansicht" },
924{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, 924{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" },
925{ "Alarm","Alarm" }, 925{ "Alarm","Alarm" },
926{ "Used %1 Client","Benutzter %1 Client" }, 926{ "Used %1 Client","Benutzter %1 Client" },
927{ "No email client installed","Kein Email Klient installiert" }, 927{ "No email client installed","Kein Email Klient installiert" },
928{ "Userdefined email client","Benutzerdef. Email Klient" }, 928{ "Userdefined email client","Benutzerdef. Email Klient" },
929{ "OM/Pi email client","OM/Pi Email Klient" }, 929{ "OM/Pi email client","OM/Pi Email Klient" },
930{ "Include in multiple ","Beziehe in multiple " }, 930{ "Include in multiple ","Beziehe in multiple " },
931{ "calendar ","Kalender " }, 931{ "calendar ","Kalender " },
932{ "addressbook ","Adressbuch " }, 932{ "addressbook ","Adressbuch " },
933{ "pwmanager","PWmanager" }, 933{ "pwmanager","PWmanager" },
934{ " sync"," Sync ein" }, 934{ " sync"," Sync ein" },
935{ "Write back synced data","Schreibe gesyncte Daten zurück" }, 935{ "Write back synced data","Schreibe gesyncte Daten zurück" },
936{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" }, 936{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" },
937{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" }, 937{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" },
938{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, 938{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " },
939{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 939{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
940{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, 940{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" },
941{ "Help...","Hilfe..." }, 941{ "Help...","Hilfe..." },
942{ "Local file Cal:","Lokale Datei Kal:" }, 942{ "Local file Cal:","Lokale Datei Kal:" },
943{ "Local file ABook:","Lokale Datei ABuch:" }, 943{ "Local file ABook:","Lokale Datei ABuch:" },
944{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 944{ "Local file PWMgr:","Lokale Datei PWMgr:" },
945{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 945{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
946{ "Calendar:","Kalender:" }, 946{ "Calendar:","Kalender:" },
947{ "AddressBook:","AdressBuch:" }, 947{ "AddressBook:","AdressBuch:" },
948{ "PWManager:","PWManager:" }, 948{ "PWManager:","PWManager:" },
949{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 949{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
950{ "ssh/scp","ssh/scp" }, 950{ "ssh/scp","ssh/scp" },
951{ "ftp","ftp" }, 951{ "ftp","ftp" },
952{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, 952{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" },
953{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, 953{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" },
954{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, 954{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" },
955{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, 955{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" },
956{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, 956{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" },
957{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, 957{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" },
958{ "KDE-Pim sync config","KDE-Pim sync Konfig" }, 958{ "KDE-Pim sync config","KDE-Pim sync Konfig" },
959{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" }, 959{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" },
960{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Model\nautomatisch erkannt\nwerden kann)\nOder füge Model Name ein:\n" }, 960{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Model\nautomatisch erkannt\nwerden kann)\nOder füge Model Name ein:\n" },
961{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, 961{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" },
962{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, 962{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" },
963{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, 963{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" },
964{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" }, 964{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" },
965{ "Disable Pi-Sync","Schalte Pi-Sync aus" }, 965{ "Disable Pi-Sync","Schalte Pi-Sync aus" },
966{ "Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!","Wollen Sie wirklich\nmit allen selektierten\nProfilen "Multi-Syncen"?\nDas Syncen dauert einige Zeit -\nalle Profile werden zweimal gesynct!" }, 966{ "Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!","Wollen Sie wirklich\nmit allen selektierten\nProfilen "Multi-Syncen"?\nDas Syncen dauert einige Zeit -\nalle Profile werden zweimal gesynct!" },
967{ "KDE-Pim Sync","KDE-Pim Sync" }, 967{ "KDE-Pim Sync","KDE-Pim Sync" },
968{ "Multiple profiles","Multi-Sync Profile" }, 968{ "Multiple profiles","Multi-Sync Profile" },
969{ "Device: ","Gerät: " }, 969{ "Device: ","Gerät: " },
970{ "Multiple sync started.","Multi-Sync gestartet." }, 970{ "Multiple sync started.","Multi-Sync gestartet." },
971{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" }, 971{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" },
972{ "Turn filter on","Schalte Filter an" }, 972{ "Turn filter on","Schalte Filter an" },
973{ "Turn filter off","Schalte Filter aus" }, 973{ "Turn filter off","Schalte Filter aus" },
974{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" }, 974{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" },
975{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" }, 975{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" },
976{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" }, 976{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" },
977{ "<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n","<p><b>Schwarz</b>: Termin/Todo mit Teilnehmern. Sie sind der Organisator!</p>\n" }, 977{ "<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n","<p><b>Schwarz</b>: Termin/Todo mit Teilnehmern. Sie sind der Organisator!</p>\n" },
978{ "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrün</b>: Information(Beschreibung) verfügbar.([i] in WN Ansicht)</p>\n" }, 978{ "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrün</b>: Information(Beschreibung) verfügbar.([i] in WN Ansicht)</p>\n" },
979{ "<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n","<p><b>Blau</b>: Wiederholender Termin.([r] in Whats'Next Ansicht)</p>\n" }, 979{ "<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n","<p><b>Blau</b>: Wiederholender Termin.([r] in Whats'Next Ansicht)</p>\n" },
980{ "<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n","<p><b>Rot</b>: Alarm gesetzt.([a] in Whats'Next Ansicht)</p>\n" }, 980{ "<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n","<p><b>Rot</b>: Alarm gesetzt.([a] in Whats'Next Ansicht)</p>\n" },
981{ "<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n","<p><b>Kreuz</b>: Eintrag gecancelt.([c] in Whats'Next Ansicht)</p>\n" }, 981{ "<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n","<p><b>Kreuz</b>: Eintrag gecancelt.([c] in Whats'Next Ansicht)</p>\n" },
982{ "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(für quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" }, 982{ "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(für quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" },
983{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" }, 983{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" },
984{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" }, 984{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" },
985{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" }, 985{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" },
986{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" }, 986{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" },
987{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" }, 987{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" },
988{ "<p><b>shift+up/down</b>: Goto first/last item</p>\n","<p><b>shift+up/down</b>: Gehe zum ersten/letzten Eintrag</p>\n" }, 988{ "<p><b>shift+up/down</b>: Goto first/last item</p>\n","<p><b>shift+up/down</b>: Gehe zum ersten/letzten Eintrag</p>\n" },
989{ "<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n","<p><b>ctrl+up/down</b>: Gehe hoch/runter 20% aller Einträge</p>\n" }, 989{ "<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n","<p><b>ctrl+up/down</b>: Gehe hoch/runter 20% aller Einträge</p>\n" },
990{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" }, 990{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" },
991{ "<p><b>return+shift</b>: Deselect item+one step down</p>\n","<p><b>return+shift</b>: Deselektiere Item+Cursor einen Eintrag runter</p>\n" }, 991{ "<p><b>return+shift</b>: Deselect item+one step down</p>\n","<p><b>return+shift</b>: Deselektiere Item+Cursor einen Eintrag runter</p>\n" },
992{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" }, 992{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" },
993{ "<p><b>I</b>: Show info of current item+one step down.</p>\n","<p><b>I</b>: Zeige Detail-Ansicht vom sel.Eintrag+Cursor einen Eintrag runter.</p>\n" }, 993{ "<p><b>I</b>: Show info of current item+one step down.</p>\n","<p><b>I</b>: Zeige Detail-Ansicht vom sel.Eintrag+Cursor einen Eintrag runter.</p>\n" },
994{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" }, 994{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" },
995{ "<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n","<p><b>return+shift</b>: Markiere Todo als nicht erledigt+Cursor einen Eintrag runter</p>\n" }, 995{ "<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n","<p><b>return+shift</b>: Markiere Todo als nicht erledigt+Cursor einen Eintrag runter</p>\n" },
996{ "<p><b>return</b>: Mark item as completed+one step down.</p>\n","<p><b>return</b>: Markiere Todo als erledigt+Cursor einen Eintrag runter.</p>\n" }, 996{ "<p><b>return</b>: Mark item as completed+one step down.</p>\n","<p><b>return</b>: Markiere Todo als erledigt+Cursor einen Eintrag runter.</p>\n" },
997{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" }, 997{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" },
998{ "<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n","<p><b>shift+P</b>: Mache Todo zum neuen <b>P</b>arent Todo für das Todo, welches mit shift+Sselektiert wurde.</p>\n" }, 998{ "<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n","<p><b>shift+P</b>: Mache Todo zum neuen <b>P</b>arent Todo für das Todo, welches mit shift+Sselektiert wurde.</p>\n" },
999{ "<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n","<p><b>shift+S</b>: Mache Todo zum <b>S</b>ubtodo</p>\n" }, 999{ "<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n","<p><b>shift+S</b>: Mache Todo zum <b>S</b>ubtodo</p>\n" },
1000{ "<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n","<p><b>shift+U</b>: <b>U</b>nparent Todo (Mache Sub-Todo zum Toplevel Todo)</p>\n" }, 1000{ "<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n","<p><b>shift+U</b>: <b>U</b>nparent Todo (Mache Sub-Todo zum Toplevel Todo)</p>\n" },
1001{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" }, 1001{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" },
1002{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" }, 1002{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" },
1003{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" }, 1003{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" },
1004{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" }, 1004{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" },
1005{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" }, 1005{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" },
1006{ "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" }, 1006{ "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" },
1007{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: Nächste Woche | <b>right+ctrl</b>: Nächste Woche</p>\n" }, 1007{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: Nächste Woche | <b>right+ctrl</b>: Nächste Woche</p>\n" },
1008{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" }, 1008{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" },
1009{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" }, 1009{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" },
1010{ "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda Höhe</p>\n" }, 1010{ "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda Höhe</p>\n" },
1011{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" }, 1011{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" },
1012{ "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" }, 1012{ "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" },
1013{ "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" }, 1013{ "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" },
1014{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" }, 1014{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" },
1015{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" }, 1015{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" },
1016{ "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" }, 1016{ "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" },
1017{ "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: Nächste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " }, 1017{ "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: Nächste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " },
1018{ "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" }, 1018{ "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" },
1019{ "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" }, 1019{ "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" },
1020{ "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" }, 1020{ "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" },
1021{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) für selektiertes Item</p>\n" }, 1021{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) für selektiertes Item</p>\n" },
1022{ "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" }, 1022{ "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" },
1023{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" }, 1023{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" },
1024{ "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas geändert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgründen wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\nÄnderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie können eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" }, 1024{ "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas geändert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgründen wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\nÄnderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie können eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" },
1025{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" }, 1025{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" },
1026{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" }, 1026{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" },
1027{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" }, 1027{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" },
1028{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" }, 1028{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" },
1029{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfür den Zaurus ist verfügbar\nals zusätzliche Anwendung\n" }, 1029{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfür den Zaurus ist verfügbar\nals zusätzliche Anwendung\n" },
1030{ "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann möglicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterstützt.\n" }, 1030{ "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann möglicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterstützt.\n" },
1031{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" }, 1031{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" },
1032{ "KO/Pi FAQ","KO/Pi FAQ" }, 1032{ "KO/Pi FAQ","KO/Pi FAQ" },
1033{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" }, 1033{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" },
1034{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" }, 1034{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" },
1035{ "About KOrganizer/Pi","Über KOrganizer/Pi" }, 1035{ "About KOrganizer/Pi","Über KOrganizer/Pi" },
1036{ "From: ","Von: " }, 1036{ "From: ","Von: " },
1037{ "Remove sync info","Entferne Sync Info" }, 1037{ "Remove sync info","Entferne Sync Info" },
1038{ "For all profiles","Für alle Profile" }, 1038{ "For all profiles","Für alle Profile" },
1039{ "Hide not Running","Verstecke nicht Laufende" }, 1039{ "Hide not Running","Verstecke nicht Laufende" },
1040{ "ME","ME" }, 1040{ "ME","ME" },
1041{ "Toolbar","Toolbar" }, 1041{ "Toolbar","Toolbar" },
1042{ "Undo Delete...","UNDO Löschen..." }, 1042{ "Undo Delete...","UNDO Löschen..." },
1043{ "Undo Delete","Löschen rückgängig machen" }, 1043{ "Undo Delete","Löschen rückgängig machen" },
1044{ "KDE Sync HowTo...","KDE Sync HowTo..." }, 1044{ "KDE Sync HowTo...","KDE Sync HowTo..." },
1045{ "Multi Sync HowTo...","Multi Sync HowTo..." }, 1045{ "Multi Sync HowTo...","Multi Sync HowTo..." },
1046{ "Januar","Januar" }, 1046{ "Januar","Januar" },
1047{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" }, 1047{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" },
1048{ "No Filter","Kein Filter" }, 1048{ "No Filter","Kein Filter" },
1049{ "Multiple Sync options","Multi Sync Optionen" }, 1049{ "Multiple Sync options","Multi Sync Optionen" },
1050{ "Sync algo options","Sync Ablauf Optionen" }, 1050{ "Sync algo options","Sync Ablauf Optionen" },
1051{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 1051{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
1052{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 1052{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
1053{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 1053{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
1054{ "Write back options","Optionen zum Zurückschreiben" }, 1054{ "Write back options","Optionen zum Zurückschreiben" },
1055{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 1055{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
1056{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 1056{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
1057{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 1057{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
1058{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 1058{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
1059{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 1059{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
1060{ "Time period","Zeitspanne" }, 1060{ "Time period","Zeitspanne" },
1061{ "From ","Von " }, 1061{ "From ","Von " },
1062{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 1062{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
1063{ " weeks in the future "," Wochen in der Zukunft " }, 1063{ " weeks in the future "," Wochen in der Zukunft " },
1064{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 1064{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
1065{ "Local temp file:","Lokale temp Datei:" }, 1065{ "Local temp file:","Lokale temp Datei:" },
1066{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 1066{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
1067{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 1067{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
1068{ "Language","Sprache" }, 1068{ "Language","Sprache" },
1069{ "Time Format","Zeit Format" }, 1069{ "Time Format","Zeit Format" },
1070{ "Time Zone","Zeit Zone" }, 1070{ "Time Zone","Zeit Zone" },
1071{ "%1 groups subscribed","%1 Guppen abboniert" }, 1071{ "%1 groups subscribed","%1 Guppen abboniert" },
1072{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, 1072{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
1073{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 1073{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
1074{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 1074{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
1075{ "Save settings","Speichere Einstellungen" }, 1075{ "Save settings","Speichere Einstellungen" },
1076{ "Save standard","Speichere Standard" }, 1076{ "Save standard","Speichere Standard" },
1077{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 1077{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
1078{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 1078{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
1079{ "Data storage path","Daten Speicherpfad" }, 1079{ "Data storage path","Daten Speicherpfad" },
1080{ "Language","Sprache" }, 1080{ "Language","Sprache" },
1081{ "Show time in agenda items","Zeige Zeit in Agenda Items" }, 1081{ "Show time in agenda items","Zeige Zeit in Agenda Items" },
1082{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" }, 1082{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" },
1083{ "Show events that are done","Zeige abgelaufene Termine" }, 1083{ "Show events that are done","Zeige abgelaufene Termine" },
1084{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" }, 1084{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" },
1085{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 1085{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
1086{ "KO/Pi","KO/Pi" }, 1086{ "KO/Pi","KO/Pi" },
1087{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" }, 1087{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" },
1088{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." }, 1088{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." },
1089{ "Sound.Al.: ","Sound.Al.: " }, 1089{ "Sound.Al.: ","Sound.Al.: " },
1090{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" }, 1090{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" },
1091{ "Restore","Wiederherstellen" }, 1091{ "Restore","Wiederherstellen" },
1092{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklich\nwiederherstellen?" }, 1092{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklich\nwiederherstellen?" },
1093{ "% completed","% erledigt" }, 1093{ "% completed","% erledigt" },
1094{ "%d item(s) found.","%d Item(s) gefunden." }, 1094{ "%d item(s) found.","%d Item(s) gefunden." },
1095{ "Set complete","Setze auf erledigt" }, 1095{ "Set complete","Setze auf erledigt" },
1096{ "(cancelled)","(gecancelt)" }, 1096{ "(cancelled)","(gecancelt)" },
1097{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" }, 1097{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" },
1098{ " Local time "," Lokale Zeit " }, 1098{ " Local time "," Lokale Zeit " },
1099{ "Form2","Form2" }, 1099{ "Form2","Form2" },
1100{ "Filter enabled","Filter angeschaltet" }, 1100{ "Filter enabled","Filter angeschaltet" },
1101{ "Edit Filters","Ändere Filter" }, 1101{ "Edit Filters","Ändere Filter" },
1102{ "Print What's Next View...","Drucke What's Next Ansicht..." }, 1102{ "Print What's Next View...","Drucke What's Next Ansicht..." },
1103{ "Agenda","Agenda" }, 1103{ "Agenda","Agenda" },
1104{ " ("," (" }, 1104{ " ("," (" },
1105{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" }, 1105{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" },
1106{ "Print","Print" }, 1106{ "Print","Print" },
1107{ "&Setup Printer...","Drucker &Setup..." }, 1107{ "&Setup Printer...","Drucker &Setup..." },
1108{ "View Type","Zeige Typ" }, 1108{ "View Type","Zeige Typ" },
1109{ "Page &orientation:","Seiten Ausrichtung:" }, 1109{ "Page &orientation:","Seiten Ausrichtung:" },
1110{ "Use Default of Selected Style","Default des selektierten Stils" }, 1110{ "Use Default of Selected Style","Default des selektierten Stils" },
1111{ "Use Default Setting of Printer","Default Einstellung des Druckers" }, 1111{ "Use Default Setting of Printer","Default Einstellung des Druckers" },
1112{ "Portrait","Portrait" }, 1112{ "Portrait","Portrait" },
1113{ "Landscape","Landschaft" }, 1113{ "Landscape","Landschaft" },
1114{ "Print day","Drucke Tag" }, 1114{ "Print day","Drucke Tag" },
1115{ "CalPrintDay_Base","CalPrintDay_Base" }, 1115{ "CalPrintDay_Base","CalPrintDay_Base" },
1116{ "Date && Time Range","Datum && Zeitspanne" }, 1116{ "Date && Time Range","Datum && Zeitspanne" },
1117{ "&End date:","&Enddatum:" }, 1117{ "&End date:","&Enddatum:" },
1118{ "&Start date:","&Startdatum:" }, 1118{ "&Start date:","&Startdatum:" },
1119{ "Start &time:","Startzeit:" }, 1119{ "Start &time:","Startzeit:" },
1120{ "End ti&me:","Endzeit:" }, 1120{ "End ti&me:","Endzeit:" },
1121{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, 1121{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" },
1122{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, 1122{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" },
1123{ "Alt+D","Alt+D" }, 1123{ "Alt+D","Alt+D" },
1124{ "&Use colors","Nutze Farben" }, 1124{ "&Use colors","Nutze Farben" },
1125{ "Alt+U","Alt+U" }, 1125{ "Alt+U","Alt+U" },
1126{ "Print week","Drucke Woche" }, 1126{ "Print week","Drucke Woche" },
1127{ "CalPrintWeek_Base","CalPrintWeek_Base" }, 1127{ "CalPrintWeek_Base","CalPrintWeek_Base" },
1128{ "Use &colors","Nutze Farben" }, 1128{ "Use &colors","Nutze Farben" },
1129{ "Type of View","Typ der Ansicht" }, 1129{ "Type of View","Typ der Ansicht" },
1130{ "Print as &Filofax page","Drucke als &Filofax Seite" }, 1130{ "Print as &Filofax page","Drucke als &Filofax Seite" },
1131{ "Alt+F","Alt+F" }, 1131{ "Alt+F","Alt+F" },
1132{ "Print as &timetable view:","Drucke als Zeittabelle:" }, 1132{ "Print as &timetable view:","Drucke als Zeittabelle:" },
1133{ "Alt+T","Alt+T" }, 1133{ "Alt+T","Alt+T" },
1134{ "Print as split week view","Drucke als gesplittete Wochenansicht" }, 1134{ "Print as split week view","Drucke als gesplittete Wochenansicht" },
1135{ "Print month","Drucke Monat" }, 1135{ "Print month","Drucke Monat" },
1136{ "CalPrintMonth_Base","CalPrintMonth_Base" }, 1136{ "CalPrintMonth_Base","CalPrintMonth_Base" },
1137{ "&Start month:","&Startmonat:" }, 1137{ "&Start month:","&Startmonat:" },
1138{ "&End month:","&Endmonat:" }, 1138{ "&End month:","&Endmonat:" },
1139{ "Print week &numbers","Drucke Wochen Nummer(n)" }, 1139{ "Print week &numbers","Drucke Wochen Nummer(n)" },
1140{ "Print todos","Drucke Todos" }, 1140{ "Print todos","Drucke Todos" },
1141{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, 1141{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" },
1142{ "Include &description of the item","Inclusive Itembeschreibung" }, 1142{ "Include &description of the item","Inclusive Itembeschreibung" },
1143{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, 1143{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" },
1144{ "Include &priority of the item","Inclusive Priorität des Items" }, 1144{ "Include &priority of the item","Inclusive Priorität des Items" },
1145{ "Items to Print","Zu druckende Items" }, 1145{ "Items to Print","Zu druckende Items" },
1146{ "&From:","Von:" }, 1146{ "&From:","Von:" },
1147{ "&To:","Bis:" }, 1147{ "&To:","Bis:" },
1148{ "Print &all todo items","Drucke alle Todo Items" }, 1148{ "Print &all todo items","Drucke alle Todo Items" },
1149{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, 1149{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" },
1150{ "Only items due in the &range:","Nur Items in dem Zeitraum:" }, 1150{ "Only items due in the &range:","Nur Items in dem Zeitraum:" },
1151{ "Todo List","Todo Liste" }, 1151{ "Todo List","Todo Liste" },
1152{ "&Title:","&Titel:" }, 1152{ "&Title:","&Titel:" },
1153{ "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" }, 1153{ "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" },
1154{ "Todo list","Todo Liste" }, 1154{ "Todo list","Todo Liste" },
1155{ "&Print...","Drucke..." }, 1155{ "&Print...","Drucke..." },
1156{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, 1156{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" },
1157{ "[Unconfigured]","[Unkonfiguriert]" }, 1157{ "[Unconfigured]","[Unkonfiguriert]" },
1158{ "OK","OK" }, 1158{ "OK","OK" },
1159{ "FilterEditor","FilterEditor" }, 1159{ "FilterEditor","FilterEditor" },
1160{ "Include","Inclusive" }, 1160{ "Include","Inclusive" },
1161{ "Exclude","Exclusive" }, 1161{ "Exclude","Exclusive" },
1162{ "Edit Selection...","Editiere Auswahl" }, 1162{ "Edit Selection...","Editiere Auswahl" },
1163{ "recurring events","wiederholende Termine" }, 1163{ "recurring events","wiederholende Termine" },
1164{ "recurr. events","wiederh.Termine" }, 1164{ "recurr. events","wiederh.Termine" },
1165{ "completed to-dos","erledigte Todos" }, 1165{ "completed to-dos","erledigte Todos" },
1166{ "events","Termine" }, 1166{ "events","Termine" },
1167{ "todos","Todos" }, 1167{ "todos","Todos" },
1168{ "journals","Journale" }, 1168{ "journals","Journale" },
1169{ "public","öffentl." }, 1169{ "public","öffentl." },
1170{ "private","privat" }, 1170{ "private","privat" },
1171{ "confidential","vertraul." }, 1171{ "confidential","vertraul." },
1172{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gelöscht!" }, 1172{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gelöscht!" },
1173{ "Yesterday","Gestern" }, 1173{ "Yesterday","Gestern" },
1174{ "Day after tomorrow","Übermorgen" }, 1174{ "Day after tomorrow","Übermorgen" },
1175{ "Tomorrow","Morgen" }, 1175{ "Tomorrow","Morgen" },
1176{ "Day before yesterday","Vorgestern" }, 1176{ "Day before yesterday","Vorgestern" },
1177{ "Size %1","Größe %1" }, 1177{ "Size %1","Größe %1" },
1178{ "New Agendasize: %1","Neue Agendagröße: %1" }, 1178{ "New Agendasize: %1","Neue Agendagröße: %1" },
1179{ " (%1 y.)"," (%1 J.)" }, 1179{ " (%1 y.)"," (%1 J.)" },
1180{ "Allday:","Ganztägig:" }, 1180{ "Allday:","Ganztägig:" },
1181{ "compl.todos","erled.Todos" }, 1181{ "compl.todos","erled.Todos" },
1182{ "Day view","Tagesansicht" }, 1182{ "Day view","Tagesansicht" },
1183{ "Next days","Nächste Tage" }, 1183{ "Next days","Nächste Tage" },
1184{ "Next week","Nächste Woche" }, 1184{ "Next week","Nächste Woche" },
1185{ "Next two weeks","Nächste zwei Wochen" }, 1185{ "Next two weeks","Nächste zwei Wochen" },
1186{ "This month","Dieser Monat" }, 1186{ "This month","Dieser Monat" },
1187{ "Journal view","Journal" }, 1187{ "Journal view","Journal" },
1188{ "Display all opened","Zeige alle geöffnet" }, 1188{ "Display all opened","Zeige alle geöffnet" },
1189{ "Display all closed","Zeige alle geschlossen" }, 1189{ "Display all closed","Zeige alle geschlossen" },
1190{ "Display all flat","Zeige alle flach" }, 1190{ "Display all flat","Zeige alle flach" },
1191{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" }, 1191{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" },
1192{ "Default todo done color:","Standard Todo erledigt Farbe" }, 1192{ "Default todo done color:","Standard Todo erledigt Farbe" },
1193{ "Select week %1-%2","Wähle Woche %1-%2" }, 1193{ "Select week %1-%2","Wähle Woche %1-%2" },
1194{ "Select Week","Wähle Woche" }, 1194{ "Select Week","Wähle Woche" },
1195{ "Set alarm...","Setze Alarm..." }, 1195{ "Set alarm...","Setze Alarm..." },
1196{ "Set Alarm!","Setze Alarm!" }, 1196{ "Set Alarm!","Setze Alarm!" },
1197{ "Changed alarm for %1 items","Alarm für %1 Items geändert" }, 1197{ "Changed alarm for %1 items","Alarm für %1 Items geändert" },
1198{ " and "," und " }, 1198{ " and "," und " },
1199{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" }, 1199{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" },
1200{ "Mail to selected","Mail an Ausgewählte" }, 1200{ "Mail to selected","Mail an Ausgewählte" },
1201{ "Mail to all","Mail an Alle" }, 1201{ "Mail to all","Mail an Alle" },
1202{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" }, 1202{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" },
1203{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" }, 1203{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" },
1204{ " on"," am" }, 1204{ " on"," am" },
1205{ " completed on "," erledigt am " }, 1205{ " completed on "," erledigt am " },
1206{ "Save as Event template","Speichere als Vorlage" }, 1206{ "Save as Event template","Speichere als Vorlage" },
1207{ "Load Event template","Lade Termin Vorlage" }, 1207{ "Load Event template","Lade Termin Vorlage" },
1208{ "Save as Journal template","Speichere als Journal Vorlage" }, 1208{ "Save as Journal template","Speichere als Journal Vorlage" },
1209{ "Insert Journal template","Füge Journal Vorlage ein" }, 1209{ "Insert Journal template","Füge Journal Vorlage ein" },
1210{ "Sub todos:<br>","Unter-Todos:<br>" }, 1210{ "Sub todos:<br>","Unter-Todos:<br>" },
1211{ "Parent todo:<br>","Über-Todo:<br>" }, 1211{ "Parent todo:<br>","Über-Todo:<br>" },
1212{ "Set current as color category","Setze Gewählte als Farbkategorie" }, 1212{ "Set current as color category","Setze Gewählte als Farbkategorie" },
1213{ " completed"," erledigt" }, 1213{ " completed"," erledigt" },
1214{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" }, 1214{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" },
1215{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, 1215{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
1216{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, 1216{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
1217{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, 1217{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
1218{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" }, 1218{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" },
1219{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, 1219{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
1220{ "Error","Fehler" }, 1220{ "Error","Fehler" },
1221{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, 1221{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." },
1222{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, 1222{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
1223{ "Warning","Warnung" }, 1223{ "Warning","Warnung" },
1224{ "Select week number","Wähle Wochen Nummer" }, 1224{ "Select week number","Wähle Wochen Nummer" },
1225{ "Februar","Februar" }, 1225{ "Februar","Februar" },
1226{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" }, 1226{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" },
1227{ "W","W" }, 1227{ "W","W" },
1228{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" }, 1228{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" },
1229{ "T: %1","T: %1" }, 1229{ "T: %1","T: %1" },
1230{ "Start: ","Start: " }, 1230{ "Start: ","Start: " },
1231{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, 1231{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " },
1232{ "Password for remote access:","Passwort für fernen Zugriff:" }, 1232{ "Password for remote access:","Passwort für fernen Zugriff:" },
1233{ "Remote IP address:","Ferne IP Adresse:" }, 1233{ "Remote IP address:","Ferne IP Adresse:" },
1234{ "Remote port number:","Ferne Port Nummer:" }, 1234{ "Remote port number:","Ferne Port Nummer:" },
1235{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, 1235{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
1236{ "Remote from: ","Fern von: " }, 1236{ "Remote from: ","Fern von: " },
1237{ "Local from: ","Lokal von: " }, 1237{ "Local from: ","Lokal von: " },
1238{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" }, 1238{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" },
1239{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, 1239{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" },
1240{ "Write back","Schreibe zurück" }, 1240{ "Write back","Schreibe zurück" },
1241{ "KO/Pi Synchronization","KO/Pi Synchronisation" }, 1241{ "KO/Pi Synchronization","KO/Pi Synchronisation" },
1242{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, 1242{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
1243{ "Received sync request","Sync Anfrage erhalten" }, 1243{ "Received sync request","Sync Anfrage erhalten" },
1244{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." }, 1244{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." },
1245{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, 1245{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
1246{ "Data saved to temp file!","Daten in temp Datei gespeichert!" }, 1246{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
1247{ "Sending file...","Sende Datei..." }, 1247{ "Sending file...","Sende Datei..." },
1248{ "Waiting for synced file...","Warte auf gesyncte Daten..." }, 1248{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
1249{ "Receiving synced file...","Gesyncte Daten erhalten..." }, 1249{ "Receiving synced file...","Gesyncte Daten erhalten..." },
1250{ "Received %1 bytes","%1 Bytes erhalten" }, 1250{ "Received %1 bytes","%1 Bytes erhalten" },
1251{ "Writing file to disk...","Speichere Datei..." }, 1251{ "Writing file to disk...","Speichere Datei..." },
1252{ "Pi-Sync successful!","Pi-Sync erfolgreich!" }, 1252{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
1253{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, 1253{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" },
1254{ "Synchronize!","Synchronisiere!" }, 1254{ "Synchronize!","Synchronisiere!" },
1255{ "High clock skew!","Großer Uhrzeitunterschied!" }, 1255{ "High clock skew!","Großer Uhrzeitunterschied!" },
1256{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, 1256{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
1257{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" }, 1257{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" },
1258{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." }, 1258{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." },
1259{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" }, 1259{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" },
1260{ "List week view","Listenwochenansicht" }, 1260{ "List week view","Listenwochenansicht" },
1261{ "List week","Listenwochenansicht" }, 1261{ "List week","Listenwochenansicht" },
1262{ "Next Week","Nächste Woche" }, 1262{ "Next Week","Nächste Woche" },
1263{ "Previous Week","Vorherige Woche" }, 1263{ "Previous Week","Vorherige Woche" },
1264{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." }, 1264{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." },
1265{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" }, 1265{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" },
1266{ "Details","Details" }, 1266{ "Details","Details" },
1267{ "Created time","Erstellt Zeit" }, 1267{ "Created time","Erstellt Zeit" },
1268{ "Last modified time","Geändert Zeit" }, 1268{ "Last modified time","Geändert Zeit" },
1269{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" }, 1269{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" },
1270{ "View Options","Anzeige Optionen" }, 1270{ "View Options","Anzeige Optionen" },
1271{ "<b>Created: ","<b>Erstellt am: " }, 1271{ "<b>Created: ","<b>Erstellt am: " },
1272{ "<b>Last modified: ","<b>Zuletzt geändert am: " }, 1272{ "<b>Last modified: ","<b>Zuletzt geändert am: " },
1273{ "Journal: ","Journal: " }, 1273{ "Journal: ","Journal: " },
1274{ "yearly","jährlich" }, 1274{ "yearly","jährlich" },
1275{ "(%1) ","%1-" }, 1275{ "(%1) ","%1-" },
1276{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" }, 1276{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" },
1277{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" }, 1277{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" },
1278{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" }, 1278{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" },
1279{ "Summary/Loc.","Titel/Ort" }, 1279{ "Summary/Loc.","Titel/Ort" },
1280{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." }, 1280{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." },
1281{ "Week Number","Wochennummer" }, 1281{ "Week Number","Wochennummer" },
1282{ "Import","Importiere" }, 1282{ "Import","Importiere" },
1283{ "Export","Exportiere" }, 1283{ "Export","Exportiere" },
1284{ "Beam","Beame" }, 1284{ "Beam","Beame" },
1285{ "Export","Exportiere" }, 1285{ "Export","Exportiere" },
1286{ "As iCal (ics) file...","Als iCal (ics) Datei..." }, 1286{ "As iCal (ics) file...","Als iCal (ics) Datei..." },
1287{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." }, 1287{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." },
1288{ "Journal/Details...","Journale/Details..." }, 1288{ "Journal/Details...","Journale/Details..." },
1289{ "Agenda View","Agenda Ansicht" }, 1289{ "Agenda View","Agenda Ansicht" },
1290{ "Show current time","Zeige aktuelle Zeit" }, 1290{ "Show current time","Zeige aktuelle Zeit" },
1291{ "Edit new item","Bearbeite neuen Eintrag" }, 1291{ "Edit new item","Bearbeite neuen Eintrag" },
1292{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" }, 1292{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" },
1293{ "There is no next alarm.","Es gibt keinen nächsten Alarm." }, 1293{ "There is no next alarm.","Es gibt keinen nächsten Alarm." },
1294{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" }, 1294{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" },
1295{ "The next alarm is in:\n","Der nächste Alarm ist in:\n" }, 1295{ "The next alarm is in:\n","Der nächste Alarm ist in:\n" },
1296{ "%1 days\n","%1 Tagen\n" }, 1296{ "%1 days\n","%1 Tagen\n" },
1297{ "1 day\n","1 Tag\n" }, 1297{ "1 day\n","1 Tag\n" },
1298{ "%1 hours\n","%1 Stunden\n" }, 1298{ "%1 hours\n","%1 Stunden\n" },
1299{ "1 hour\n","1 Stunde\n" }, 1299{ "1 hour\n","1 Stunde\n" },
1300{ "%1 minutes\n","%1 Minuten\n" }, 1300{ "%1 minutes\n","%1 Minuten\n" },
1301{ "1 minute\n","1 Minute\n" }, 1301{ "1 minute\n","1 Minute\n" },
1302{ "Only one toolbar","Nur eine Toolbar" }, 1302{ "Only one toolbar","Nur eine Toolbar" },
1303{ "Print","Drucke" }, 1303{ "Print","Drucke" },
1304{ "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." }, 1304{ "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." },
1305{ "There is nothing selected!","Es ist nichts ausgewählt!" }, 1305{ "There is nothing selected!","Es ist nichts ausgewählt!" },
1306{ "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " }, 1306{ "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " },
1307{ "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" }, 1307{ "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" },
1308{ "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" }, 1308{ "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" },
1309{ "KO/Pi Printout","KO/Pi Ausdruck" }, 1309{ "KO/Pi Printout","KO/Pi Ausdruck" },
1310{ "Print unscaled","Drucke unskaliert" }, 1310{ "Print unscaled","Drucke unskaliert" },
1311{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." }, 1311{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." },
1312{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." }, 1312{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." },
1313{ "Printout Mode","Druck Modus" }, 1313{ "Printout Mode","Druck Modus" },
1314{ "Filter menu icon","Filtermenu Icon" }, 1314{ "Filter menu icon","Filtermenu Icon" },
1315{ "<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" }, 1315{ "<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" },
1316{ "<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" }, 1316{ "<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" },
1317{ "%1d","%1t" }, 1317{ "%1d","%1t" },
1318{ "%1h","%1std" }, 1318{ "%1h","%1std" },
1319{ "%1min","%1min" }, 1319{ "%1min","%1min" },
1320{ "( %1 before )","( %1 vorher )" }, 1320{ "( %1 before )","( %1 vorher )" },
1321{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" }, 1321{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" },
1322{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" }, 1322{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" },
1323{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." }, 1323{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." },
1324{ "Show Sync Events","Zeige Sync-Ereignisse" }, 1324{ "Show Sync Events","Zeige Sync-Ereignisse" },
1325{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" }, 1325{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" },
1326{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" }, 1326{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" },
1327{ " on "," am " }, 1327{ " on "," am " },
1328{ "On: ","Am: " }, 1328{ "On: ","Am: " },
1329{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" }, 1329{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" },
1330{ "Start/Stop todo...","Starte/Stoppe Todo..." }, 1330{ "Start/Stop todo...","Starte/Stoppe Todo..." },
1331{ "Color for running todos:","Farbe für laufende Todos:" }, 1331{ "Color for running todos:","Farbe für laufende Todos:" },
1332{ "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?" }, 1332{ "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?" },
1333{ "Todo is started","Todo ist gestartet" }, 1333{ "Todo is started","Todo ist gestartet" },
1334{ "Stop todo","Stoppe Todo" }, 1334{ "Stop todo","Stoppe Todo" },
1335{ "Todo is stopped","Todo ist gestoppt" }, 1335{ "Todo is stopped","Todo ist gestoppt" },
1336{ "Start todo","Starte Todo" }, 1336{ "Start todo","Starte Todo" },
1337{ "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?" }, 1337{ "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?" },
1338{ "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?" }, 1338{ "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?" },
1339{ "Todo has subtodos","Todo hat Untertodos" }, 1339{ "Todo has subtodos","Todo hat Untertodos" },
1340{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" }, 1340{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" },
1341{ "Colors","Farben" }, 1341{ "Colors","Farben" },
1342{ "Click on new parent item","Klicke auf neues Übertodo" }, 1342{ "Click on new parent item","Klicke auf neues Übertodo" },
1343{ "Reparenting aborted!","Übertodo setzen abgebrochen" }, 1343{ "Reparenting aborted!","Übertodo setzen abgebrochen" },
1344{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" }, 1344{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" },
1345{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" }, 1345{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" },
1346{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" }, 1346{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" },
1347{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, 1347{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
1348{ "times","Zeiten" }, 1348{ "times","Zeiten" },
1349{ "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?" }, 1349{ "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?" },
1350{ "Backup enabled","Backup angeschaltet" }, 1350{ "Backup enabled","Backup angeschaltet" },
1351{ "Use standard backup dir","Standard Backupverzeichnis" }, 1351{ "Use standard backup dir","Standard Backupverzeichnis" },
1352{ "Number of Backups:","Anzahl der Backups" }, 1352{ "Number of Backups:","Anzahl der Backups" },
1353{ "Make backup every ","Mache ein Backup alle " }, 1353{ "Make backup every ","Mache ein Backup alle " },
1354{ " days"," Tage" }, 1354{ " days"," Tage" },
1355{ "Creating backup ... please wait ...","Erstelle Backup ... bitte warten ..." }, 1355{ "Creating backup ... please wait ...","Erstelle Backup ... bitte warten ..." },
1356{ "Backup Failed!","Backup Problem!" }, 1356{ "Backup Failed!","Backup Problem!" },
1357{ "Try again now","Versuche jetzt nochmal" }, 1357{ "Try again now","Versuche jetzt nochmal" },
1358{ "Try again later","Versuche später nochmal" }, 1358{ "Try again later","Versuche später nochmal" },
1359{ "Try again tomorrow","Versuche morgen nochmal" }, 1359{ "Try again tomorrow","Versuche morgen nochmal" },
1360{ "Disable backup","Schalte Backup ab" }, 1360{ "Disable backup","Schalte Backup ab" },
1361{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, 1361{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
1362{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, 1362{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
1363{ "Choose action","Wähle Aktion" }, 1363{ "Choose action","Wähle Aktion" },
1364{ "Comment for todo:","Kommentar zum Todo:" }, 1364{ "Comment for todo:","Kommentar zum Todo:" },
1365{ "Stop+note","Stop+Notiz" }, 1365{ "Stop+note","Stop+Notiz" },
1366{ "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" }, 1366{ "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" },
1367{ "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" }, 1367{ "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" },
1368{ "You missed the alarms for the following events or todos:","Sie verpassten die Alarme für folgende Termine oder Todos:" }, 1368{ "You missed the alarms for the following events or todos:","Sie verpassten die Alarme für folgende Termine oder Todos:" },
1369{ "Print complete list...","Drucke komplette Liste..." }, 1369{ "Print complete list...","Drucke komplette Liste..." },
1370{ "Hide all selected","Verstecke Ausgewählte" }, 1370{ "Hide all selected","Verstecke Ausgewählte" },
1371{ "Add items","hinzufügen" }, 1371{ "Add items","hinzufügen" },
1372{ "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?" }, 1372{ "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?" },
1373{ "Print List View...","Drucke Listenansicht..." }, 1373{ "Print List View...","Drucke Listenansicht..." },
1374{ "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." }, 1374{ "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." },
1375{ "Configure KO/Pi...","Konfiguriere KO/Pi..." }, 1375{ "Configure KO/Pi...","Konfiguriere KO/Pi..." },
1376{ "Global Settings...","Globale Einstellungen..." }, 1376{ "Global Settings...","Globale Einstellungen..." },
1377{ "<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" }, 1377{ "<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" },
1378{ "(disabled)","(abgeschaltet)" }, 1378{ "(disabled)","(abgeschaltet)" },
1379{ "New Calendar","Neuer Kalender" }, 1379{ "New Calendar","Neuer Kalender" },
1380{ "Calendar","Kalender" }, 1380{ "Calendar","Kalender" },
1381{ "Filter selector","Filterauswahl" }, 1381{ "Filter selector","Filterauswahl" },
1382{ "Filtermenu","Filtermenu" }, 1382{ "Filtermenu","Filtermenu" },
1383{ "Toggle Fullscreen","Vollbild umschalten" }, 1383{ "Toggle Fullscreen","Vollbild umschalten" },
1384{ "Toggle Resource View","Resourcenansicht umschalten" }, 1384{ "Toggle Resource View","Resourcenansicht umschalten" },
1385{ "Storage HowTo...","Speicherort HowTo..." }, 1385{ "Storage HowTo...","Speicherort HowTo..." },
1386{ "Timetracking HowTo...","Timetracking HowTo..." }, 1386{ "Timetracking HowTo...","Timetracking HowTo..." },
1387{ "Juni","Juni" }, 1387{ "Juni","Juni" },
1388{ "Juli","Juli" }, 1388{ "Juli","Juli" },
1389{ "ToDo:","ToDo:" }, 1389{ "ToDo:","ToDo:" },
1390{ "Set Calendar","Setze Kalender" }, 1390{ "Set Calendar","Setze Kalender" },
1391{ "Todo: %1","Todo: %1" }, 1391{ "Todo: %1","Todo: %1" },
1392{ ": (Prio ",": (Prio " }, 1392{ ": (Prio ",": (Prio " },
1393{ "Todos","Todos" }, 1393{ "Todos","Todos" },
1394{ "Todo Viewer","Todo Anzeige" }, 1394{ "Todo Viewer","Todo Anzeige" },
1395{ "Todo ","Todo " }, 1395{ "Todo ","Todo " },
1396{ " Calendar \n Resource "," Kalender \n Resource " }, 1396{ " Calendar \n Resource "," Kalender \n Resource " },
1397{ " Color "," Farbe " }, 1397{ " Color "," Farbe " },
1398{ "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!)" }, 1398{ "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!)" },
1399{ "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" }, 1399{ "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" },
1400{ "Add new Calendar","Füge Kalender hinzu" }, 1400{ "Add new Calendar","Füge Kalender hinzu" },
1401{ "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" }, 1401{ "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" },
1402{ "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" }, 1402{ "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" },
1403{ "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" }, 1403{ "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" },
1404{ "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." }, 1404{ "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." },
1405{ "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>" }, 1405{ "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>" },
1406{ "Global application font for all apps:","Globale Schriftart:" }, 1406{ "Global application font for all apps:","Globale Schriftart:" },
1407{ "Application Font","Applikationsschriftart" }, 1407{ "Application Font","Applikationsschriftart" },
1408{ "Kx/Pi","Kx/Pi" }, 1408{ "Kx/Pi","Kx/Pi" },
1409{ "Backup","Backup" }, 1409{ "Backup","Backup" },
1410{ "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" }, 1410{ "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" },
1411{ "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!" }, 1411{ "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!" },
1412{ "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!" }, 1412{ "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!" },
1413{ "Choose Color","Wähle Farbe" }, 1413{ "Choose Color","Wähle Farbe" },
1414{ " OK "," OK " }, 1414{ " OK "," OK " },
1415{ " Cancel "," Abbrechen " }, 1415{ " Cancel "," Abbrechen " },
1416{ "Matching items will be added to list","Passende werden zur Liste hinzugefügt" }, 1416{ "Matching items will be added to list","Passende werden zur Liste hinzugefügt" },
1417{ "Matching items will be removed from list","Passende werden von der Liste entfernt" }, 1417{ "Matching items will be removed from list","Passende werden von der Liste entfernt" },
1418{ "Search on displayed list only","Suche auf der dargestellten Liste" }, 1418{ "Search on displayed list only","Suche auf der dargestellten Liste" },
1419{ "List will be cleared before search","Liste wird vor der Suche gelöscht" }, 1419{ "List will be cleared before search","Liste wird vor der Suche gelöscht" },
1420{ "<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>" }, 1420{ "<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>" },
1421{ "%1\nis running!","%1\nist am Laufen!" }, 1421{ "%1\nis running!","%1\nist am Laufen!" },
1422{ "Additional Comment:","Zusätzlicher Kommentar:" }, 1422{ "Additional Comment:","Zusätzlicher Kommentar:" },
1423{ "Stop and save","Stopp und Speichern" }, 1423{ "Stop and save","Stopp und Speichern" },
1424{ "Continue running","Weiter laufen lassen" }, 1424{ "Continue running","Weiter laufen lassen" },
1425{ "Stop - do not save","Stopp - nicht Speichern" }, 1425{ "Stop - do not save","Stopp - nicht Speichern" },
1426{ "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?" }, 1426{ "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?" },
1427{ "Time mismatch!","Zeiten stimmen nicht!" }, 1427{ "Time mismatch!","Zeiten stimmen nicht!" },
1428{ "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" }, 1428{ "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" },
1429{ "Yes, stop todo","Ja, stoppe Todo" }, 1429{ "Yes, stop todo","Ja, stoppe Todo" },
1430{ "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" }, 1430{ "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" },
1431{ "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" }, 1431{ "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" },
1432{ "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." }, 1432{ "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." },
1433{ "Spouse","Ehegatte" }, 1433{ "Spouse","Ehegatte" },
1434{ "Notes","Notizen" }, 1434{ "Notes","Notizen" },
1435{ "Messanger","Messanger" }, 1435{ "Messanger","Messanger" },
1436{ "Assistant","Assistent" }, 1436{ "Assistant","Assistent" },
1437{ "Manager","Manager" }, 1437{ "Manager","Manager" },
1438{ "Secrecy","Sichtbar" }, 1438{ "Secrecy","Sichtbar" },
1439{ "male","männlich" }, 1439{ "male","männlich" },
1440{ "female","weiblich" }, 1440{ "female","weiblich" },
1441{ "Hide!","Verbergen!" }, 1441{ "Hide!","Verbergen!" },
1442{ "Show!","Anzeigen!" }, 1442{ "Show!","Anzeigen!" },
1443{ "Details","Details" }, 1443{ "Details","Details" },
1444{ "Profession","Beruf" }, 1444{ "Profession","Beruf" },
1445{ "Children","Kinder" }, 1445{ "Children","Kinder" },
1446{ "Department","Abteilung" }, 1446{ "Department","Abteilung" },
1447{ "Backup cancelled","Backup abgebrochen" }, 1447{ "Backup cancelled","Backup abgebrochen" },
1448{ "Backup globally disabled","Backup global abgeschaltet" }, 1448{ "Backup globally disabled","Backup global abgeschaltet" },
1449{ "Backup succesfully finished","Backup erfolgreich beendet" }, 1449{ "Backup succesfully finished","Backup erfolgreich beendet" },
1450{ "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" }, 1450{ "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" },
1451{ "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" }, 1451{ "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" },
1452{ "Birthdays","Geburtstage" }, 1452{ "Birthdays","Geburtstage" },
1453{ "KO/Pi import information!","KO/Pi Import Information!" }, 1453{ "KO/Pi import information!","KO/Pi Import Information!" },
1454{ "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" }, 1454{ "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" },
1455{ "Cancel - do not start"," Abbrechen - Todo nicht starten" }, 1455{ "Cancel - do not start"," Abbrechen - Todo nicht starten" },
1456{ "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?"" }, 1456{ "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?"" },
1457{ "Reload","Neu laden" }, 1457{ "Reload","Neu laden" },
1458{ "Timezone settings","Zeitzoneneinstellung" }, 1458{ "Timezone settings","Zeitzoneneinstellung" },
1459{ "Title: ","Titel: " }, 1459{ "Title: ","Titel: " },
1460{ "Journal from: ","Journal vom: " }, 1460{ "Journal from: ","Journal vom: " },
1461{ "Journal: %1 from ","Journal: %1 vom " }, 1461{ "Journal: %1 from ","Journal: %1 vom " },
1462{ "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" }, 1462{ "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" },
1463{ "Selected Item","Ausgewähltes Item" }, 1463{ "Selected Item","Ausgewähltes Item" },
1464{ "Select Date...","Wähle Datum..." }, 1464{ "Select Date...","Wähle Datum..." },
1465{ "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:" }, 1465{ "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:" },
1466{ "Change category list now!","Ändere Kategorieliste jetzt!" }, 1466{ "Change category list now!","Ändere Kategorieliste jetzt!" },
1467{ "Edit category list...","Ändere Kategorieliste..." }, 1467{ "Edit category list...","Ändere Kategorieliste..." },
1468{ "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, 1468{ "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" },
1469{ "Filepath: ","Dateipfad: " }, 1469{ "Filepath: ","Dateipfad: " },
1470{ "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, 1470{ "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" },
1471{ "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, 1471{ "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" },
1472{ "Pending Suspend Alarm","Laufender Suspend Alarm" }, 1472{ "Pending Suspend Alarm","Laufender Suspend Alarm" },
1473{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, 1473{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" },
1474{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, 1474{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" },
1475{ "Loading of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, 1475{ "Loading of calendar(s) failed","Laden von Kalendern fehlgeschlagen" },
1476{ "Alarm Options","Alarm Einstellungen" }, 1476{ "Alarm Options","Alarm Einstellungen" },
1477{ "Delete selected...","Lösche Ausgewählte..." }, 1477{ "Delete selected...","Lösche Ausgewählte..." },
1478{ "None","Nichts" }, 1478{ "None","Nichts" },
1479{ "Selection","Auswahl" }, 1479{ "Selection","Auswahl" },
1480{ "Set categories","Setze Kategorien" }, 1480{ "Set categories","Setze Kategorien" },
1481{ "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!" }, 1481{ "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!" },
1482{ "Reset","Neu setzen" }, 1482{ "Reset","Neu setzen" },
1483{ "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)?" }, 1483{ "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)?" },
1484{ "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" }, 1484{ "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" },
1485{ "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" }, 1485{ "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" },
1486{ "\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" }, 1486{ "\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" },
1487{ "\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" }, 1487{ "\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" },
1488{ "Edit","Edit" }, 1488{ "Edit","Edit" },
1489{ "Last Modified","Zuletzt geändert" }, 1489{ "Last Modified","Zuletzt geändert" },
1490{ "Journal viewer","Journal Anzeige" }, 1490{ "Journal viewer","Journal Anzeige" },
1491{ "Configure Calendar Files...","Konfiguriere Kalenderdateien..." }, 1491{ "Configure Calendar Files...","Konfiguriere Kalenderdateien..." },
1492{ "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." }, 1492{ "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." },
1493{ "Hide Completed","Verstecke erledigte Todos" }, 1493{ "Hide Completed","Verstecke erledigte Todos" },
1494{ "Show not Running","Zeige nicht Laufende" }, 1494{ "Show not Running","Zeige nicht Laufende" },
1495{ "Click to add new Todo","Klick für neues Todo!" }, 1495{ "Click to add new Todo","Klick für neues Todo!" },
1496{ "Show next conflict for","Zeige nächsten Konflikt für" }, 1496{ "Show next conflict for","Zeige nächsten Konflikt für" },
1497{ "All events","Alle Termine" }, 1497{ "All events","Alle Termine" },
1498{ "Allday events","Ganztagestermine" }, 1498{ "Allday events","Ganztagestermine" },
1499{ "Events with time","Termine mit Zeit" }, 1499{ "Events with time","Termine mit Zeit" },
1500{ "No conflict found","Kein Konflikt gefunden" }, 1500{ "No conflict found","Kein Konflikt gefunden" },
1501{ "Conflict %1 <-> %2","Konflikt %1 <-> %2" }, 1501{ "Conflict %1 <-> %2","Konflikt %1 <-> %2" },
1502{ "<p><b>Q</b>: Show next date with conflicting events\n ","<p><b>Q</b>: Zeige nächstes Datum mit Terminen im Konflikt\n " }, 1502{ "<p><b>Q</b>: Show next date with conflicting events\n ","<p><b>Q</b>: Zeige nächstes Datum mit Terminen im Konflikt\n " },
1503{ "Week view mode uses row layout","Wochenansicht Modus nutzt Reihenlayout" }, 1503{ "Week view mode uses row layout","Wochenansicht Modus nutzt Reihenlayout" },
1504{ "The event\n%1\nconflicts with event\n%2\nat date\n%3.\n","Der Termin\n%1\nist im Konflikt mit Termin\n%2\nam Datum\n%3.\n" }, 1504{ "The event\n%1\nconflicts with event\n%2\nat date\n%3.\n","Der Termin\n%1\nist im Konflikt mit Termin\n%2\nam Datum\n%3.\n" },
1505{ "KO/Pi Conflict detected","KO/Pi Konflikt erkannt" }, 1505{ "KO/Pi Conflict detected","KO/Pi Konflikt erkannt" },
1506{ "Show date","Zeige Datum" }, 1506{ "Show date","Zeige Datum" },
1507{ "No problem!","Null Problemo!" }, 1507{ "No problem!","Null Problemo!" },
1508{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" }, 1508{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" },
1509{ "Pi-Sync Port Error","Pi-Sync Port Fehler" }, 1509{ "Pi-Sync Port Error","Pi-Sync Port Fehler" },
1510{ "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" }, 1510{ "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" },
1511{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" }, 1511{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" },
1512{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" }, 1512{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" },
1513{ "Pi-Sync Error","Pi-Sync Fehler" }, 1513{ "Pi-Sync Error","Pi-Sync Fehler" },
1514{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" }, 1514{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" },
1515{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" }, 1515{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" },
1516{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." }, 1516{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." },
1517{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" }, 1517{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" },
1518{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, 1518{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" },
1519{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, 1519{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" },
1520{ "Receiving file from remote...","Empfange entfernte Datei..." }, 1520{ "Receiving file from remote...","Empfange entfernte Datei..." },
1521{ "Sending back synced file...","Sende synchronisierte Datei zurück..." }, 1521{ "Sending back synced file...","Sende synchronisierte Datei zurück..." },
1522{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, 1522{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" },
1523{ "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" }, 1523{ "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" },
1524{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, 1524{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." },
1525{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, 1525{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" },
1526{ "Writing back file ...","Schreibe Datei zurück..." }, 1526{ "Writing back file ...","Schreibe Datei zurück..." },
1527{ "Sending back file ...","Sende Datei zurück..." }, 1527{ "Sending back file ...","Sende Datei zurück..." },
1528{ "Eeek, there I am ticklish!","Hihi, da bin ich kitzlig!" }, 1528{ "Eeek, there I am ticklish!","Hihi, da bin ich kitzlig!" },
1529{ "Created","Angelegt" }, 1529{ "Created","Angelegt" },
1530{ "Last Modified Sub","Zuletzt geändertes Sub" }, 1530{ "Last Modified Sub","Zuletzt geändertes Sub" },
1531{ "Checking conflicts ... please wait","Überprüfe Konflikte ... bitte warten" }, 1531{ "Checking conflicts ... please wait","Überprüfe Konflikte ... bitte warten" },
1532{ "Show times on two lines","Zeige Zeiten auf zwei Zeilen" }, 1532{ "Show times on two lines","Zeige Zeiten auf zwei Zeilen" },
1533{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, 1533{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" },
1534{ "Duration","Dauer" }, 1534{ "Duration","Dauer" },
1535{ " day"," Tag" }, 1535{ " day"," Tag" },
1536{ "Click this button to display all todos in a <b>flat</b> hierarchy","Klicke diesen Knopf um alle Todos in einer <b>flachen</b> Hierarchie darzustellen" }, 1536{ "Click this button to display all todos in a <b>flat</b> hierarchy","Klicke diesen Knopf um alle Todos in einer <b>flachen</b> Hierarchie darzustellen" },
1537{ "Click this button to display all todos <b>openend</b>","Klicke diesen Knopf um alle Todos <b>geöffnet</b> darzustellen" }, 1537{ "Click this button to display all todos <b>openend</b>","Klicke diesen Knopf um alle Todos <b>geöffnet</b> darzustellen" },
1538{ "Click this button to display all todos <b>closed</b>","Klicke diesen Knopf um alle Todos <b>geschlossen</b> darzustellen" }, 1538{ "Click this button to display all todos <b>closed</b>","Klicke diesen Knopf um alle Todos <b>geschlossen</b> darzustellen" },
1539{ "Click this button to toggle show/hide <b>running</b> todos","Klicke diesen Knopf um <b>zeige Laufende</b> umzuschalten" }, 1539{ "Click this button to toggle show/hide <b>running</b> todos","Klicke diesen Knopf um <b>zeige Laufende</b> umzuschalten" },
1540{ "Click this button to toggle show/hide <b>completed</b> todos","Klicke diesen Knopf um <b>zeige Erledigte</b> umzuschalten" }, 1540{ "Click this button to toggle show/hide <b>completed</b> todos","Klicke diesen Knopf um <b>zeige Erledigte</b> umzuschalten" },
1541{ "Click this button to add a new subtodo to the currently selected todo","Klicke diesen Knopf um ein Untertodo zu dem gerade selektierten Todo hinzuzufügen" }, 1541{ "Click this button to add a new subtodo to the currently selected todo","Klicke diesen Knopf um ein Untertodo zu dem gerade selektierten Todo hinzuzufügen" },
1542{ "In this column you can <b>set a calendar to be visible</b>. If a calendar is not visible its entries are not displayed in the views. You can add items to it and it is loaded/saved as usual.","In dieser Spalte kann man einen <b>Kalender auf sichtbar schalten</b>. Wenn ein Kalender nicht sichtbar ist werden seine Einträge nicht in den Ansichten angezeigt. Man kann Einträge hinzufügen und laden/speichern wie gewöhnlich." }, 1542{ "In this column you can <b>set a calendar to be visible</b>. If a calendar is not visible its entries are not displayed in the views. You can add items to it and it is loaded/saved as usual.","In dieser Spalte kann man einen <b>Kalender auf sichtbar schalten</b>. Wenn ein Kalender nicht sichtbar ist werden seine Einträge nicht in den Ansichten angezeigt. Man kann Einträge hinzufügen und laden/speichern wie gewöhnlich." },
1543{ "In this column you can see the <b>name of the calendar</b>. If you click on the name button you will get an information box about the loaded calendar file. If the file was not loaded at startup you can try to load it here again.","In dieser Spalte wird der <b>Name des Kalenders</b> angezeigt. Wenn Sie auf den Namen klicken wird Information über die Kalenderdatei angezeigt. Wenn die Datei beim Start nicht geladen wurde können Sie hier erneut versuchen sie zu laden." }, 1543{ "In this column you can see the <b>name of the calendar</b>. If you click on the name button you will get an information box about the loaded calendar file. If the file was not loaded at startup you can try to load it here again.","In dieser Spalte wird der <b>Name des Kalenders</b> angezeigt. Wenn Sie auf den Namen klicken wird Information über die Kalenderdatei angezeigt. Wenn die Datei beim Start nicht geladen wurde können Sie hier erneut versuchen sie zu laden." },
1544{ "In this column you can <b>disable the alarms of a calendar all together</b>. The alarm data in the calendar itself is not changed, the alarms are marked internally as "do not use". Useful if you load a calendar of another person but do not want to get notified about alarms of that person.","In dieser Spalte können die <b>Alarme eines Kalenders alle zusammen abgeschaltet werden</b>. Die Alarmdaten im Kalender selbst werden nicht verändert, es werde die Alarme intern als "nicht beachten" markiert. Nützlich wenn Sie den Kalender einer anderen Person laden aber nicht über dessen Alarme unterrichtet werden wollen." }, 1544{ "In this column you can <b>disable the alarms of a calendar all together</b>. The alarm data in the calendar itself is not changed, the alarms are marked internally as "do not use". Useful if you load a calendar of another person but do not want to get notified about alarms of that person.","In dieser Spalte können die <b>Alarme eines Kalenders alle zusammen abgeschaltet werden</b>. Die Alarmdaten im Kalender selbst werden nicht verändert, es werde die Alarme intern als "nicht beachten" markiert. Nützlich wenn Sie den Kalender einer anderen Person laden aber nicht über dessen Alarme unterrichtet werden wollen." },
1545{ "In this column you can <b>set a calendar and all entries of the calendar to read only</b>. If a calendar is readonly the entries cannot be edited and no items can be added to the calendar. If you change a setting of a calendar to readonly in this column all data will be saved because the data of a readonly calendar is not saved later.","In dieser Spalte können Sie einen <b>Kalender und alle Einträge auf schreibgeschützt setzen</b>. Einträge eines schreibgeschützten Kalenders können nicht verändert werden und es können keine Einträge zum Kalender hinzugefügt werden. Wenn Sie die Einstellung eines Kalenders in dieser Spalte auf schreibgeschützt setzen werden alle Daten automatisch abgespeichert, da die Daten eines schreibgeschützten Kalenders später nicht mehr gespeichert werden." }, 1545{ "In this column you can <b>set a calendar and all entries of the calendar to read only</b>. If a calendar is readonly the entries cannot be edited and no items can be added to the calendar. If you change a setting of a calendar to readonly in this column all data will be saved because the data of a readonly calendar is not saved later.","In dieser Spalte können Sie einen <b>Kalender und alle Einträge auf schreibgeschützt setzen</b>. Einträge eines schreibgeschützten Kalenders können nicht verändert werden und es können keine Einträge zum Kalender hinzugefügt werden. Wenn Sie die Einstellung eines Kalenders in dieser Spalte auf schreibgeschützt setzen werden alle Daten automatisch abgespeichert, da die Daten eines schreibgeschützten Kalenders später nicht mehr gespeichert werden." },
1546{ "Click this button to <b>add a calendar</b>. You can add an existing calendar file or you can add a new calendar and KO/Pi creates a new empty calendar file for you.","Klicken Sie diesen Knopf <b>um einen Kalender hinzuzufügen</b>. Sie können eine existierende Kalenderdatei hinzufügen oder einen neuen Kalender und KO/Pi legt dann eine neue leere Kalenderdatei für Sie an." }, 1546{ "Click this button to <b>add a calendar</b>. You can add an existing calendar file or you can add a new calendar and KO/Pi creates a new empty calendar file for you.","Klicken Sie diesen Knopf <b>um einen Kalender hinzuzufügen</b>. Sie können eine existierende Kalenderdatei hinzufügen oder einen neuen Kalender und KO/Pi legt dann eine neue leere Kalenderdatei für Sie an." },
1547{ "<b>iCal (*.ics) file on disk:</b><br>(will be created, if not existing)","<b>iCal (*.ics) Datei:</b><br>(Datei wird angelegt, wenn sie nicht existiert)" }, 1547{ "<b>iCal (*.ics) file on disk:</b><br>(will be created, if not existing)","<b>iCal (*.ics) Datei:</b><br>(Datei wird angelegt, wenn sie nicht existiert)" },
1548{ "Error saving data","Fehler beim Abspeichern" }, 1548{ "Error saving data","Fehler beim Abspeichern" },
1549{ "Calendar(s) not saved:","Nicht gespeicherte Kalender:" }, 1549{ "Calendar(s) not saved:","Nicht gespeicherte Kalender:" },
1550{ "Enable conflict detection","Schalte Konflikterkennung an" }, 1550{ "Enable conflict detection","Schalte Konflikterkennung an" },
1551{ "Filter for the edited event","Filter für den bearbeiteten Termin" }, 1551{ "Filter for the edited event","Filter für den bearbeiteten Termin" },
1552{ "Filter for other events","Filter für die anderen Termine" }, 1552{ "Filter for other events","Filter für die anderen Termine" },
1553{ "Check Allday with Allday","Prüfe GanzTag mit GanzTag" }, 1553{ "Check Allday with Allday","Prüfe GanzTag mit GanzTag" },
1554{ "Check Allday with NonAllday","Prüfe GanzTag mit NichtGanzTag" }, 1554{ "Check Allday with NonAllday","Prüfe GanzTag mit NichtGanzTag" },
1555{ "Check NonAllday with Allday","Prüfe NichtGanzTag mit GanzTag" }, 1555{ "Check NonAllday with Allday","Prüfe NichtGanzTag mit GanzTag" },
1556{ "Check NonAllday with NonAllday","Prüfe NichtGanzTag mit NichtGanzTag" }, 1556{ "Check NonAllday with NonAllday","Prüfe NichtGanzTag mit NichtGanzTag" },
1557{ "Conflict detection","Konflikterkennung" }, 1557{ "Conflict detection","Konflikterkennung" },
1558{ "Loading calendar files ... please wait","Lade Kalenderdateien ... bitte warten" }, 1558{ "Loading calendar files ... please wait","Lade Kalenderdateien ... bitte warten" },
1559{ "Show multiday allday ev. in date nav.","Zeige Multi-Ganzt.Term.in Datums Nav." }, 1559{ "Show multiday allday ev. in date nav.","Zeige Multi-Ganzt.Term.in Datums Nav." },
1560{ "Include events which "show as free"","Inklusive Termine mit "Zeige Zeit als frei"" }, 1560{ "Include events which "show as free"","Inklusive Termine mit "Zeige Zeit als frei"" },
1561{ "Conflict detection checks an <b>edited event</b> with <b>other events</b> for overlapping.","Konflikterkennung prüft einen <b>bearbeiteten Termin</b> auf Überschneidungen mit <b>anderen Terminen</b>." }, 1561{ "Conflict detection checks an <b>edited event</b> with <b>other events</b> for overlapping.","Konflikterkennung prüft einen <b>bearbeiteten Termin</b> auf Überschneidungen mit <b>anderen Terminen</b>." },
1562{ " Yes, close "," Ja, beenden " }, 1562{ " Yes, close "," Ja, beenden " },
1563{ "Export All Data","Exportiere alle Daten" }, 1563{ "Export All Data","Exportiere alle Daten" },
1564{ "You can save all data\nto another file via\nFile->Export->Export All Data","Sie können alle Daten in\neine andere Datei speichern unter\nDatei->Exportiere->Exportiere alle Daten" }, 1564{ "You can save all data\nto another file via\nFile->Export->Export All Data","Sie können alle Daten in\neine andere Datei speichern unter\nDatei->Exportiere->Exportiere alle Daten" },
1565{ "<p><b>Duration:</b> %1 days</p>","<p><b>Dauer:</b> %1 Tage</p>" }, 1565{ "<p><b>Duration:</b> %1 days</p>","<p><b>Dauer:</b> %1 Tage</p>" },
1566{ " (Duration: %1 days)"," (Dauer: %1 Tage)" }, 1566{ " (Duration: %1 days)"," (Dauer: %1 Tage)" },
1567{ "Autosave enabled!","Auto-Speichern angeschaltet!" }, 1567{ "Autosave enabled!","Auto-Speichern angeschaltet!" },
1568{ "Autosave disabled! Save timer stopped!","Auto-Speichern ausgeschaltet! Speicher Timer gestoppt!" }, 1568{ "Autosave disabled! Save timer stopped!","Auto-Speichern ausgeschaltet! Speicher Timer gestoppt!" },
1569{ "Autosave disabled!","Auto-Speichern ist ausgeschaltet!" }, 1569{ "Autosave disabled!","Auto-Speichern ist ausgeschaltet!" },
1570{ "Yes, Save!","Ja, Speichern!" }, 1570{ "Yes, Save!","Ja, Speichern!" },
1571{ "Calendar is modified\nbut Autosave is disabled!\nDo you want\nto save the data?","Der Kalender wurde verändert,\naber Auto-Speichern ist\nabgeschaltet. Möchten Sie\ndie Daten speichern?" }, 1571{ "Calendar is modified\nbut Autosave is disabled!\nDo you want\nto save the data?","Der Kalender wurde verändert,\naber Auto-Speichern ist\nabgeschaltet. Möchten Sie\ndie Daten speichern?" },
1572{ "<p><b>C+ctrl</b>: Dis/enable automatic saving</p>\n","<p><b>C+ctrl</b>: Auto-Speichern ab/anschalten</p>\n" }, 1572{ "<p><b>C+ctrl</b>: Dis/enable automatic saving</p>\n","<p><b>C+ctrl</b>: Auto-Speichern ab/anschalten</p>\n" },
1573{ "<br>The calendar contains<br><b>%1 events<br>%2 todos<br>%3 journals</b>","<br>Der Kalender enthält<br><b>%1 Termine<br>%2 Todos<br>%3 Journale</b>" }, 1573{ "<br>The calendar contains<br><b>%1 events<br>%2 todos<br>%3 journals</b>","<br>Der Kalender enthält<br><b>%1 Termine<br>%2 Todos<br>%3 Journale</b>" },
1574{ "","" }, 1574{ "","" },
1575{ "","" }, 1575{ "","" },
1576{ "","" }, 1576{ "","" },
1577{ "","" }, 1577{ "","" },
1578{ "","" }, 1578{ "","" },
1579{ "","" }, 1579{ "","" },
1580{ "","" }, 1580{ "","" },
1581{ "","" },
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 610aae6..85e9166 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -1,2282 +1,2290 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qpopupmenu.h> 20#include <qpopupmenu.h>
21#include <qfont.h> 21#include <qfont.h>
22#include <qfontmetrics.h> 22#include <qfontmetrics.h>
23#include <qkeycode.h> 23#include <qkeycode.h>
24#include <qhbox.h> 24#include <qhbox.h>
25#include <qvbox.h> 25#include <qvbox.h>
26#include <qwidgetstack.h> 26#include <qwidgetstack.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28#include <qtooltip.h> 28#include <qtooltip.h>
29#include <qpainter.h> 29#include <qpainter.h>
30#include <qtimer.h> 30#include <qtimer.h>
31#include <qwhatsthis.h> 31#include <qwhatsthis.h>
32#ifndef DESKTOP_VERSION 32#ifndef DESKTOP_VERSION
33#include <qpe/qpeapplication.h> 33#include <qpe/qpeapplication.h>
34#else 34#else
35#include <qapplication.h> 35#include <qapplication.h>
36#endif 36#endif
37 37
38#include <kdebug.h> 38#include <kdebug.h>
39#include <klocale.h> 39#include <klocale.h>
40#include <kglobal.h> 40#include <kglobal.h>
41#include <kconfig.h> 41#include <kconfig.h>
42#include <kiconloader.h> 42#include <kiconloader.h>
43 43
44#include <kcalendarsystem.h> 44#include <kcalendarsystem.h>
45 45
46#ifndef KORG_NOPRINTER 46#ifndef KORG_NOPRINTER
47#include "calprinter.h" 47#include "calprinter.h"
48#endif 48#endif
49#include "koprefs.h" 49#include "koprefs.h"
50#ifndef KORG_NOPLUGINS 50#ifndef KORG_NOPLUGINS
51#include "kocore.h" 51#include "kocore.h"
52#endif 52#endif
53#include "koglobals.h" 53#include "koglobals.h"
54#include <libkcal/kincidenceformatter.h> 54#include <libkcal/kincidenceformatter.h>
55 55
56#include "komonthview.h" 56#include "komonthview.h"
57 57
58#define PIXMAP_SIZE 5 58#define PIXMAP_SIZE 5
59#ifdef DESKTOP_VERSION 59#ifdef DESKTOP_VERSION
60QToolTipGroup *MonthViewCell::mToolTipGroup = 0; 60QToolTipGroup *MonthViewCell::mToolTipGroup = 0;
61#endif 61#endif
62class KNOWhatsThis :public QWhatsThis 62class KNOWhatsThis :public QWhatsThis
63{ 63{
64public: 64public:
65 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { }; 65 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { };
66 //~KNOWhatsThis( ) {qDebug("~KNOWhatsThis( ) "); }; 66 //~KNOWhatsThis( ) {qDebug("~KNOWhatsThis( ) "); };
67 67
68protected: 68protected:
69 virtual QString text( const QPoint& p) 69 virtual QString text( const QPoint& p)
70 { 70 {
71 return _wid->getWhatsThisText(p) ; 71 return _wid->getWhatsThisText(p) ;
72 }; 72 };
73private: 73private:
74 KNoScrollListBox* _wid; 74 KNoScrollListBox* _wid;
75 75
76}; 76};
77 77
78 78
79KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name) 79KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name)
80 : QListBox(parent, name, WRepaintNoErase) 80 : QListBox(parent, name, WRepaintNoErase)
81{ 81{
82#ifndef DESKTOP_VERSION 82#ifndef DESKTOP_VERSION
83 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 83 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
84#endif 84#endif
85 mBlockDeselect = false; 85 mBlockDeselect = false;
86 mWT = new KNOWhatsThis(this); 86 mWT = new KNOWhatsThis(this);
87 resetOnFocusIn = true; 87 resetOnFocusIn = true;
88 setVScrollBarMode(QScrollView::AlwaysOff); 88 setVScrollBarMode(QScrollView::AlwaysOff);
89 setHScrollBarMode(QScrollView::AlwaysOff); 89 setHScrollBarMode(QScrollView::AlwaysOff);
90} 90}
91KNoScrollListBox::~KNoScrollListBox() 91KNoScrollListBox::~KNoScrollListBox()
92{ 92{
93#if QT_VERSION >= 0x030000 93#if QT_VERSION >= 0x030000
94 94
95#else 95#else
96 delete mWT; 96 delete mWT;
97#endif 97#endif
98} 98}
99 99
100 100
101void KNoScrollListBox::focusInEvent ( QFocusEvent * e ) 101void KNoScrollListBox::focusInEvent ( QFocusEvent * e )
102{ 102{
103 QListBox::focusInEvent ( e ); 103 QListBox::focusInEvent ( e );
104 if ( count() ){ 104 if ( count() ){
105 int ci = currentItem(); 105 int ci = currentItem();
106 if ( ci < 0 ) ci = 0; 106 if ( ci < 0 ) ci = 0;
107 107
108 setCurrentItem( ci ); 108 setCurrentItem( ci );
109 setSelected ( ci, true ); 109 setSelected ( ci, true );
110 emit highlighted( item ( ci ) ); 110 emit highlighted( item ( ci ) );
111 111
112 resetOnFocusIn = true; 112 resetOnFocusIn = true;
113 113
114 if ( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) { 114 if ( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) {
115 QListBoxItem *fi = firstItem (); 115 QListBoxItem *fi = firstItem ();
116 if (fi ) { 116 if (fi ) {
117 int ihei = fi->height( this ); 117 int ihei = fi->height( this );
118 int hei = numRows () * ihei; 118 int hei = numRows () * ihei;
119 if ( hei < height() - horizontalScrollBar()->height () ) { 119 if ( hei < height() - horizontalScrollBar()->height () ) {
120 setVScrollBarMode(QScrollView::AlwaysOff); 120 setVScrollBarMode(QScrollView::AlwaysOff);
121 } 121 }
122 else 122 else
123 setVScrollBarMode(QScrollView::Auto); 123 setVScrollBarMode(QScrollView::Auto);
124 if ( ihei *3 > height() ) { 124 if ( ihei *3 > height() ) {
125 setHScrollBarMode(QScrollView::AlwaysOff); 125 setHScrollBarMode(QScrollView::AlwaysOff);
126 } 126 }
127 else { 127 else {
128 setHScrollBarMode(QScrollView::Auto); 128 setHScrollBarMode(QScrollView::Auto);
129 } 129 }
130 } else { 130 } else {
131 setVScrollBarMode(QScrollView::Auto); 131 setVScrollBarMode(QScrollView::Auto);
132 setHScrollBarMode(QScrollView::Auto); 132 setHScrollBarMode(QScrollView::Auto);
133 } 133 }
134 } 134 }
135 } 135 }
136} 136}
137void KNoScrollListBox::focusOutEvent ( QFocusEvent * e ) 137void KNoScrollListBox::focusOutEvent ( QFocusEvent * e )
138{ 138{
139 if ( ! mBlockDeselect ) { 139 if ( ! mBlockDeselect ) {
140 int i = currentItem (); 140 int i = currentItem ();
141 if ( i >= 0 ) { 141 if ( i >= 0 ) {
142 setSelected ( i, false ); 142 setSelected ( i, false );
143 } 143 }
144 QListBox::focusOutEvent ( e ); 144 QListBox::focusOutEvent ( e );
145 } 145 }
146 setVScrollBarMode(QScrollView::AlwaysOff); 146 setVScrollBarMode(QScrollView::AlwaysOff);
147 setHScrollBarMode(QScrollView::AlwaysOff); 147 setHScrollBarMode(QScrollView::AlwaysOff);
148 if ( ! mBlockDeselect ) 148 if ( ! mBlockDeselect )
149 emit highlightIncidence( 0, (MonthViewCell*)this, 0 ); 149 emit highlightIncidence( 0, (MonthViewCell*)this, 0 );
150 mBlockDeselect = false; 150 mBlockDeselect = false;
151} 151}
152 152
153QString KNoScrollListBox::getWhatsThisText(QPoint p) 153QString KNoScrollListBox::getWhatsThisText(QPoint p)
154{ 154{
155 QListBoxItem* item = itemAt ( p ); 155 QListBoxItem* item = itemAt ( p );
156 if ( ! item ) { 156 if ( ! item ) {
157 return i18n("Click in the cell\nto add an event!"); 157 return i18n("Click in the cell\nto add an event!");
158 } 158 }
159 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence(), 159 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence(),
160 KOPrefs::instance()->mWTshowDetails, 160 KOPrefs::instance()->mWTshowDetails,
161 KOPrefs::instance()->mWTshowCreated, 161 KOPrefs::instance()->mWTshowCreated,
162 KOPrefs::instance()->mWTshowChanged); 162 KOPrefs::instance()->mWTshowChanged);
163} 163}
164void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 164void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
165{ 165{
166 //qDebug("KNoScrollListBox::keyPressEvent "); 166 //qDebug("KNoScrollListBox::keyPressEvent ");
167 switch(e->key()) { 167 switch(e->key()) {
168 case Key_Right: 168 case Key_Right:
169 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 169 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
170 { 170 {
171 e->ignore(); 171 e->ignore();
172 return; 172 return;
173 } 173 }
174 scrollBy(10,0); 174 scrollBy(10,0);
175 break; 175 break;
176 case Key_Left: 176 case Key_Left:
177 if (e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 177 if (e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
178 { 178 {
179 e->ignore(); 179 e->ignore();
180 return; 180 return;
181 } 181 }
182 scrollBy(-10,0); 182 scrollBy(-10,0);
183 break; 183 break;
184 case Key_Up: 184 case Key_Up:
185 if( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) { 185 if( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
186 e->ignore(); 186 e->ignore();
187 break; 187 break;
188 } 188 }
189 if ( count() ) { 189 if ( count() ) {
190 if ( currentItem() == 0 ) { 190 if ( currentItem() == 0 ) {
191 emit prevCell(); 191 emit prevCell();
192 } else { 192 } else {
193 setCurrentItem((currentItem()+count()-1)%count()); 193 setCurrentItem((currentItem()+count()-1)%count());
194 if(!itemVisible(currentItem())) { 194 if(!itemVisible(currentItem())) {
195 if((unsigned int) currentItem() == (count()-1)) { 195 if((unsigned int) currentItem() == (count()-1)) {
196 setTopItem(currentItem()-numItemsVisible()+1); 196 setTopItem(currentItem()-numItemsVisible()+1);
197 } else { 197 } else {
198 setTopItem(topItem()-1); 198 setTopItem(topItem()-1);
199 } 199 }
200 } 200 }
201 } 201 }
202 } 202 }
203 break; 203 break;
204 case Key_Down: 204 case Key_Down:
205 if(e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) { 205 if(e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
206 e->ignore(); 206 e->ignore();
207 break; 207 break;
208 } 208 }
209 if ( count () ) { 209 if ( count () ) {
210 if ( ((uint)currentItem()+1) == count () ) { 210 if ( ((uint)currentItem()+1) == count () ) {
211 emit nextCell(); 211 emit nextCell();
212 } else { 212 } else {
213 setCurrentItem((currentItem()+1)%count()); 213 setCurrentItem((currentItem()+1)%count());
214 if(!itemVisible(currentItem())) { 214 if(!itemVisible(currentItem())) {
215 if(currentItem() == 0) { 215 if(currentItem() == 0) {
216 setTopItem(0); 216 setTopItem(0);
217 } else { 217 } else {
218 setTopItem(topItem()+1); 218 setTopItem(topItem()+1);
219 } 219 }
220 } 220 }
221 } 221 }
222 } 222 }
223 break; 223 break;
224 case Key_I: 224 case Key_I:
225 QTimer::singleShot( 1, this, SLOT ( oneDown() ) ); 225 QTimer::singleShot( 1, this, SLOT ( oneDown() ) );
226 e->ignore(); 226 e->ignore();
227 break; 227 break;
228 case Key_Return: 228 case Key_Return:
229 case Key_Enter: 229 case Key_Enter:
230 { 230 {
231 if ( currentItem() >= 0 ) { 231 if ( currentItem() >= 0 ) {
232 emit doubleClicked( item( currentItem() ) ); 232 emit doubleClicked( item( currentItem() ) );
233 e->accept(); 233 e->accept();
234 } else { 234 } else {
235 e->ignore(); 235 e->ignore();
236 } 236 }
237 } 237 }
238 break; 238 break;
239 case Key_Shift: 239 case Key_Shift:
240 emit shiftDown(); 240 emit shiftDown();
241 break; 241 break;
242 default: 242 default:
243 e->ignore(); 243 e->ignore();
244 break; 244 break;
245 } 245 }
246} 246}
247 247
248void KNoScrollListBox::oneDown() 248void KNoScrollListBox::oneDown()
249{ 249{
250 if ( count () ) { 250 if ( count () ) {
251 if ( ((uint)currentItem()+1) == count () ) { 251 if ( ((uint)currentItem()+1) == count () ) {
252 emit nextCell(); 252 emit nextCell();
253 } else { 253 } else {
254 resetOnFocusIn = false; 254 resetOnFocusIn = false;
255 setCurrentItem((currentItem()+1)%count()); 255 setCurrentItem((currentItem()+1)%count());
256 if(!itemVisible(currentItem())) { 256 if(!itemVisible(currentItem())) {
257 if(currentItem() == 0) { 257 if(currentItem() == 0) {
258 setTopItem(0); 258 setTopItem(0);
259 } else { 259 } else {
260 setTopItem(topItem()+1); 260 setTopItem(topItem()+1);
261 } 261 }
262 } 262 }
263 } 263 }
264 } 264 }
265} 265}
266void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) 266void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
267{ 267{
268 switch(e->key()) { 268 switch(e->key()) {
269 case Key_Shift: 269 case Key_Shift:
270 emit shiftUp(); 270 emit shiftUp();
271 break; 271 break;
272 default: 272 default:
273 break; 273 break;
274 } 274 }
275} 275}
276 276
277void KNoScrollListBox::mousePressEvent(QMouseEvent *e) 277void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
278{ 278{
279 QListBox::mousePressEvent(e); 279 QListBox::mousePressEvent(e);
280 280
281 if(e->button() == RightButton) { 281 if(e->button() == RightButton) {
282 emit rightClick(); 282 emit rightClick();
283 } 283 }
284} 284}
285 285
286MonthViewItem::MonthViewItem( Incidence *incidence, const QString & s) 286MonthViewItem::MonthViewItem( Incidence *incidence, const QString & s)
287 : QListBoxItem() 287 : QListBoxItem()
288{ 288{
289 mblockRepaint = true; 289 mblockRepaint = true;
290 isWeekItem = KOPrefs::instance()->mMonthViewWeek; 290 isWeekItem = KOPrefs::instance()->mMonthViewWeek;
291 recycle( incidence, s ); 291 recycle( incidence, s );
292} 292}
293void MonthViewItem::recycle( Incidence *incidence, const QString & s) 293void MonthViewItem::recycle( Incidence *incidence, const QString & s)
294{ 294{
295 mDisplayHighlighted = false; 295 mDisplayHighlighted = false;
296 setText( s ); 296 setText( s );
297 mMultiday = 0; 297 mMultiday = 0;
298 mIncidence = incidence; 298 mIncidence = incidence;
299 mRecur = false; 299 mRecur = false;
300 mAlarm = false; 300 mAlarm = false;
301 mReply = false; 301 mReply = false;
302 mInfo = false; 302 mInfo = false;
303 mdayPos = 0; 303 mdayPos = 0;
304} 304}
305 305
306bool MonthViewItem::setHighlightedFalse() 306bool MonthViewItem::setHighlightedFalse()
307{ 307{
308 if ( !mDisplayHighlighted ) 308 if ( !mDisplayHighlighted )
309 return false; 309 return false;
310 mDisplayHighlighted = false; 310 mDisplayHighlighted = false;
311 return true; 311 return true;
312} 312}
313 313
314bool MonthViewItem::setHighlighted( Incidence * inc ) 314bool MonthViewItem::setHighlighted( Incidence * inc )
315{ 315{
316 if ( inc == mIncidence ) { 316 if ( inc == mIncidence ) {
317 if ( mDisplayHighlighted ) 317 if ( mDisplayHighlighted )
318 return false; 318 return false;
319 mDisplayHighlighted = true; 319 mDisplayHighlighted = true;
320 return true; 320 return true;
321 } else { 321 } else {
322 if ( !mDisplayHighlighted ) 322 if ( !mDisplayHighlighted )
323 return false; 323 return false;
324 mDisplayHighlighted = false; 324 mDisplayHighlighted = false;
325 return true; 325 return true;
326 } 326 }
327 return false; 327 return false;
328} 328}
329void MonthViewItem::paint(QPainter *p) 329void MonthViewItem::paint(QPainter *p)
330{ 330{
331 if ( mblockRepaint || !mIncidence ) { 331 if ( mblockRepaint || !mIncidence ) {
332 return; 332 return;
333 } 333 }
334#if QT_VERSION >= 0x030000 334#if QT_VERSION >= 0x030000
335 bool sel = isSelected(); 335 bool sel = isSelected();
336#else 336#else
337 bool sel = selected(); 337 bool sel = selected();
338#endif 338#endif
339 int heihei = height( listBox () ); 339 int heihei = height( listBox () );
340 int x = 1; 340 int x = 1;
341 if (KOPrefs::instance()->mMonthViewUsesCategoryColor || mDisplayHighlighted || sel ) 341 if (KOPrefs::instance()->mMonthViewUsesCategoryColor || mDisplayHighlighted || sel )
342 { 342 {
343 343
344 p->setBackgroundColor( palette().color( QPalette::Normal, \ 344 p->setBackgroundColor( palette().color( QPalette::Normal, \
345 sel ||mDisplayHighlighted ? QColorGroup::Highlight : QColorGroup::Background ) ); 345 sel ||mDisplayHighlighted ? QColorGroup::Highlight : QColorGroup::Background ) );
346 p->eraseRect( 0, 0, listBox()->maxItemWidth(), heihei ); 346 p->eraseRect( 0, 0, listBox()->maxItemWidth(), heihei );
347 } 347 }
348 348
349 //int y = 3;//(height() - mRecurPixmap.height()) /2; 349 //int y = 3;//(height() - mRecurPixmap.height()) /2;
350 int size = PIXMAP_SIZE; 350 int size = PIXMAP_SIZE;
351 if ( QApplication::desktop()->width() < 300 ) 351 if ( QApplication::desktop()->width() < 300 )
352 size = 3; 352 size = 3;
353 int y = (heihei - size -1 ) /2; 353 int y = (heihei - size -1 ) /2;
354 354
355 if ( mIncidence->calID() > 1 ) { 355 if ( mIncidence->calID() > 1 ) {
356 p->fillRect ( x, y-2,size,size+4, KOPrefs::instance()->defaultColor( mIncidence->calID() ) ); 356 p->fillRect ( x, y-2,size,size+4, KOPrefs::instance()->defaultColor( mIncidence->calID() ) );
357 p->drawRect ( x, y-2,size,size+4); 357 p->drawRect ( x, y-2,size,size+4);
358 x += size + 1; 358 x += size + 1;
359 } 359 }
360 if ( KOPrefs::instance()->mMonthShowIcons ) { 360 if ( KOPrefs::instance()->mMonthShowIcons ) {
361 if ( mInfo ) { 361 if ( mInfo ) {
362 p->fillRect ( x, y,size,size, Qt::darkGreen ); 362 p->fillRect ( x, y,size,size, Qt::darkGreen );
363 x += size + 1; 363 x += size + 1;
364 } 364 }
365 if ( mRecur ) { 365 if ( mRecur ) {
366 p->fillRect ( x, y,size,size, Qt::blue ); 366 p->fillRect ( x, y,size,size, Qt::blue );
367 x += size + 1; 367 x += size + 1;
368 } 368 }
369 if ( mAlarm ) { 369 if ( mAlarm ) {
370 p->fillRect ( x, y,size,size, Qt::red ); 370 p->fillRect ( x, y,size,size, Qt::red );
371 x += size + 1; 371 x += size + 1;
372 } 372 }
373 if ( mReply ) { 373 if ( mReply ) {
374 p->fillRect ( x, y,size,size, Qt::yellow ); 374 p->fillRect ( x, y,size,size, Qt::yellow );
375 x += size + 1; 375 x += size + 1;
376 } 376 }
377 } 377 }
378 378
379 379
380 380
381 381
382 if ( sel ) p->setPen( Qt::white ); 382 if ( sel ) p->setPen( Qt::white );
383 else p->setPen( palette().color( QPalette::Normal,QColorGroup::Foreground ) ); 383 else p->setPen( palette().color( QPalette::Normal,QColorGroup::Foreground ) );
384 384
385#if 0 385#if 0
386 p->setPen( palette().color( QPalette::Normal, sel ? \ 386 p->setPen( palette().color( QPalette::Normal, sel ? \
387 QColorGroup::HighlightedText : QColorGroup::Foreground ) ); 387 QColorGroup::HighlightedText : QColorGroup::Foreground ) );
388#endif 388#endif
389 QColor textColor = p->pen().color(); 389 QColor textColor = p->pen().color();
390 390
391 391
392 if ( mMultiday ) { 392 if ( mMultiday ) {
393 int yyy = y+(size/2); 393 int yyy = y+(size/2);
394 int sizeM = size+2; 394 int sizeM = size+2;
395 p->setBrush( QBrush( textColor ) ); 395 p->setBrush( QBrush( textColor ) );
396 p->drawLine ( x+1, yyy, x +sizeM +sizeM/2-1, yyy ) ; 396 p->drawLine ( x+1, yyy, x +sizeM +sizeM/2-1, yyy ) ;
397 if ( mMultiday == 2 || mMultiday == 3 ) { 397 if ( mMultiday == 2 || mMultiday == 3 ) {
398 QPointArray pa ( 3 ); 398 QPointArray pa ( 3 );
399 pa.setPoint (0, x, yyy ); 399 pa.setPoint (0, x, yyy );
400 pa.setPoint (1, x+sizeM/2, yyy+sizeM/2 ); 400 pa.setPoint (1, x+sizeM/2, yyy+sizeM/2 );
401 pa.setPoint (2, x+sizeM/2, yyy-sizeM/2 ); 401 pa.setPoint (2, x+sizeM/2, yyy-sizeM/2 );
402 p->drawPolygon( pa ); 402 p->drawPolygon( pa );
403 } 403 }
404 if ( mMultiday == 2 || mMultiday == 1 ) { 404 if ( mMultiday == 2 || mMultiday == 1 ) {
405 QPointArray pa ( 3 ); 405 QPointArray pa ( 3 );
406 pa.setPoint (0, x+sizeM +sizeM/2, yyy ); 406 pa.setPoint (0, x+sizeM +sizeM/2, yyy );
407 pa.setPoint (1, x+sizeM, yyy+sizeM/2 ); 407 pa.setPoint (1, x+sizeM, yyy+sizeM/2 );
408 pa.setPoint (2, x+sizeM, yyy-sizeM/2 ); 408 pa.setPoint (2, x+sizeM, yyy-sizeM/2 );
409 p->drawPolygon( pa ); 409 p->drawPolygon( pa );
410 } 410 }
411 if ( mMultiday == 1 ) { 411 if ( mMultiday == 1 ) {
412 // p->fillRect ( x, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); 412 // p->fillRect ( x, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) );
413 p->drawLine ( x+1, yyy-sizeM/2, x+1, yyy+sizeM/2 ); 413 p->drawLine ( x+1, yyy-sizeM/2, x+1, yyy+sizeM/2 );
414 } 414 }
415 if ( mMultiday == 3 ) { 415 if ( mMultiday == 3 ) {
416 // p->fillRect ( x+sizeM, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); 416 // p->fillRect ( x+sizeM, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) );
417 p->drawLine ( x+sizeM +sizeM/2-1, yyy-sizeM/2, x+sizeM +sizeM/2-1, yyy+sizeM/2 ); 417 p->drawLine ( x+sizeM +sizeM/2-1, yyy-sizeM/2, x+sizeM +sizeM/2-1, yyy+sizeM/2 );
418 418
419 } 419 }
420 x += sizeM/2 + 1; 420 x += sizeM/2 + 1;
421 x += sizeM + 1; 421 x += sizeM + 1;
422 } 422 }
423 423
424 if ( mIncidence->typeID() == todoID ){ 424 if ( mIncidence->typeID() == todoID ){
425 Todo* td = ( Todo* ) mIncidence; 425 Todo* td = ( Todo* ) mIncidence;
426 if ( td->isCompleted() ) { 426 if ( td->isCompleted() ) {
427 int half = size/2; 427 int half = size/2;
428 p->drawLine ( x, heihei/2, x +half , heihei/2 +half ) ; 428 p->drawLine ( x, heihei/2, x +half , heihei/2 +half ) ;
429 p->drawLine ( x +half , heihei/2 +half , x +half+half +2 , heihei/2 -2 ) ; 429 p->drawLine ( x +half , heihei/2 +half , x +half+half +2 , heihei/2 -2 ) ;
430 x += half+half + 4; 430 x += half+half + 4;
431 431
432 } else { 432 } else {
433 int val = td->percentComplete()/20; 433 int val = td->percentComplete()/20;
434 p->fillRect ( x+1, y-2, val ,size+4,textColor ); 434 p->fillRect ( x+1, y-2, val ,size+4,textColor );
435 p->drawRect ( x, y-2,7,size+4); 435 p->drawRect ( x, y-2,7,size+4);
436 x += size + 3; 436 x += size + 3;
437 } 437 }
438 } 438 }
439 QFontMetrics fm = p->fontMetrics(); 439 QFontMetrics fm = p->fontMetrics();
440 int yPos; 440 int yPos;
441 int pmheight = size; 441 int pmheight = size;
442 if( pmheight < fm.height() ) 442 if( pmheight < fm.height() )
443 yPos = fm.ascent() + fm.leading()/2; 443 yPos = fm.ascent() + fm.leading()/2;
444 else 444 else
445 yPos = pmheight/2 - fm.height()/2 + fm.ascent(); 445 yPos = pmheight/2 - fm.height()/2 + fm.ascent();
446 446
447 if ( KOPrefs::instance()->mMonthShowTimes || isWeekItem) { 447 if ( KOPrefs::instance()->mMonthShowTimes || isWeekItem) {
448 p->drawText( x, yPos, text() ); 448 p->drawText( x, yPos, text() );
449 if ( mIncidence->cancelled() ) { 449 if ( mIncidence->cancelled() ) {
450 int wid = fm.width( text() ); 450 int wid = fm.width( text() );
451 p->drawLine( x, heihei/2 ,x+wid, heihei/2 ); 451 p->drawLine( x, heihei/2 ,x+wid, heihei/2 );
452 } 452 }
453 } else { 453 } else {
454 QString pText = text(); 454 QString pText = text();
455 if( pText.mid(2,1) == ":" ) 455 if( pText.mid(2,1) == ":" )
456 pText = pText.mid( 6 ); 456 pText = pText.mid( 6 );
457 p->drawText( x, yPos, pText ); 457 p->drawText( x, yPos, pText );
458 if ( mIncidence->cancelled() ) { 458 if ( mIncidence->cancelled() ) {
459 int wid = fm.width( pText ); 459 int wid = fm.width( pText );
460 p->drawLine( x, heihei/2 ,x+wid, heihei/2 ); 460 p->drawLine( x, heihei/2 ,x+wid, heihei/2 );
461 } 461 }
462 } 462 }
463} 463}
464 464
465int MonthViewItem::height(const QListBox *lb) const 465int MonthViewItem::height(const QListBox *lb) const
466{ 466{
467 int ret = 10; 467 int ret = 10;
468 if ( lb ) 468 if ( lb )
469 ret = lb->fontMetrics().lineSpacing()+1; 469 ret = lb->fontMetrics().lineSpacing()+1;
470 return ret; 470 return ret;
471} 471}
472 472
473int MonthViewItem::width(const QListBox *lb) const 473int MonthViewItem::width(const QListBox *lb) const
474{ 474{
475 if( KOPrefs::instance()->mEnableMonthScroll || isWeekItem ) { 475 if( KOPrefs::instance()->mEnableMonthScroll || isWeekItem ) {
476 int size = PIXMAP_SIZE; 476 int size = PIXMAP_SIZE;
477 if ( QApplication::desktop()->width() < 300 ) 477 if ( QApplication::desktop()->width() < 300 )
478 size = 3; 478 size = 3;
479 int x = 1; 479 int x = 1;
480 if ( KOPrefs::instance()->mMonthShowIcons ) { 480 if ( KOPrefs::instance()->mMonthShowIcons ) {
481 if ( mInfo ) { 481 if ( mInfo ) {
482 x += size + 1; 482 x += size + 1;
483 } 483 }
484 if( mRecur ) { 484 if( mRecur ) {
485 x += size+1; 485 x += size+1;
486 } 486 }
487 if( mAlarm ) { 487 if( mAlarm ) {
488 x += size+1; 488 x += size+1;
489 } 489 }
490 if( mReply ) { 490 if( mReply ) {
491 x += size+1; 491 x += size+1;
492 } 492 }
493 } 493 }
494 if( mMultiday ) { 494 if( mMultiday ) {
495 x += size+1+2+size/2; 495 x += size+1+2+size/2;
496 } 496 }
497 return( x + lb->fontMetrics().width( text() ) + 1 ); 497 return( x + lb->fontMetrics().width( text() ) + 1 );
498 } 498 }
499 if ( ! lb ) 499 if ( ! lb )
500 return 10; 500 return 10;
501 return lb->width(); 501 return lb->width();
502} 502}
503 503
504 504
505MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par ) 505MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par )
506 : KNoScrollListBox( par ), 506 : KNoScrollListBox( par ),
507 mMonthView( parent ) 507 mMonthView( parent )
508{ 508{
509 //QVBoxLayout *topLayout = new QVBoxLayout( this ); 509 //QVBoxLayout *topLayout = new QVBoxLayout( this );
510 currentPalette = 0; 510 currentPalette = 0;
511 // mLabel = new QLabel( this );QPushButton 511 // mLabel = new QLabel( this );QPushButton
512 mLabel = new QPushButton( this ); 512 mLabel = new QPushButton( this );
513 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); 513 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
514 //mLabel->setLineWidth( 1 ); 514 //mLabel->setLineWidth( 1 );
515 //mLabel->setAlignment( AlignCenter ); 515 //mLabel->setAlignment( AlignCenter );
516 mLabel->setFlat( true ); 516 mLabel->setFlat( true );
517 mLabel->setFocusPolicy(NoFocus); 517 mLabel->setFocusPolicy(NoFocus);
518 //mItemList = new KNoScrollListBox( this ); 518 //mItemList = new KNoScrollListBox( this );
519 setMinimumSize( 10, 10 ); 519 setMinimumSize( 10, 10 );
520 setFrameStyle( QFrame::Panel | QFrame::Plain ); 520 setFrameStyle( QFrame::Panel | QFrame::Plain );
521 setLineWidth( 1 ); 521 setLineWidth( 1 );
522 //topLayout->addWidget( mItemList ); 522 //topLayout->addWidget( mItemList );
523 mLabel->raise(); 523 mLabel->raise();
524 // QColor( 0,0,255 ) QColor( 160,1600,255 ) 524 // QColor( 0,0,255 ) QColor( 160,1600,255 )
525 mStandardPalette = palette(); 525 mStandardPalette = palette();
526 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); 526 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
527 527
528 enableScrollBars( false ); 528 enableScrollBars( false );
529 updateConfig(); 529 updateConfig();
530 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); 530 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
531 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); 531 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
532 connect( this , SIGNAL( doubleClicked( QListBoxItem *) ), 532 connect( this , SIGNAL( doubleClicked( QListBoxItem *) ),
533 SLOT( defaultAction( QListBoxItem * ) ) ); 533 SLOT( defaultAction( QListBoxItem * ) ) );
534 connect( this, SIGNAL( rightButtonPressed( QListBoxItem *, 534 connect( this, SIGNAL( rightButtonPressed( QListBoxItem *,
535 const QPoint &) ), 535 const QPoint &) ),
536 SLOT( contextMenu( QListBoxItem * ) ) ); 536 SLOT( contextMenu( QListBoxItem * ) ) );
537 connect( this, SIGNAL( highlighted( QListBoxItem *) ), 537 connect( this, SIGNAL( highlighted( QListBoxItem *) ),
538 SLOT( selection( QListBoxItem * ) ) ); 538 SLOT( selection( QListBoxItem * ) ) );
539 539
540 /* 540 /*
541 connect( this, SIGNAL( clicked( QListBoxItem * ) ), 541 connect( this, SIGNAL( clicked( QListBoxItem * ) ),
542 SLOT( selection( QListBoxItem * ) ) ); 542 SLOT( selection( QListBoxItem * ) ) );
543 */ 543 */
544} 544}
545#ifdef DESKTOP_VERSION 545#ifdef DESKTOP_VERSION
546QToolTipGroup *MonthViewCell::toolTipGroup() 546QToolTipGroup *MonthViewCell::toolTipGroup()
547{ 547{
548 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); 548 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
549 return mToolTipGroup; 549 return mToolTipGroup;
550} 550}
551#endif 551#endif
552 552
553void MonthViewCell::setDate( const QDate &date ) 553void MonthViewCell::setDate( const QDate &date )
554{ 554{
555 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; 555 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
556 mDate = date; 556 mDate = date;
557 557
558 558
559 559
560 //resizeEvent( 0 ); 560 //resizeEvent( 0 );
561} 561}
562 562
563QDate MonthViewCell::date() const 563QDate MonthViewCell::date() const
564{ 564{
565 return mDate; 565 return mDate;
566} 566}
567 567
568void MonthViewCell::setPrimary( bool primary ) 568void MonthViewCell::setPrimary( bool primary )
569{ 569{
570 mPrimary = primary; 570 mPrimary = primary;
571 //setMyPalette(); 571 //setMyPalette();
572} 572}
573void MonthViewCell::setMyPalette() 573void MonthViewCell::setMyPalette()
574{ 574{
575 575
576 if ( mHoliday) { 576 if ( mHoliday) {
577 if ( currentPalette == 1 ) return; 577 if ( currentPalette == 1 ) return;
578 mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) )); 578 mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) ));
579 setPalette( mHolidayPalette ); 579 setPalette( mHolidayPalette );
580 //mLabel->setPalette( mHolidayPalette ); 580 //mLabel->setPalette( mHolidayPalette );
581 currentPalette = 1; 581 currentPalette = 1;
582 582
583 } else { 583 } else {
584 if ( mPrimary ) { 584 if ( mPrimary ) {
585 if ( currentPalette == 2 ) return; 585 if ( currentPalette == 2 ) return;
586 mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); 586 mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) ));
587 //mLabel->setPalette( mPrimaryPalette ); 587 //mLabel->setPalette( mPrimaryPalette );
588 setPalette( mPrimaryPalette ); 588 setPalette( mPrimaryPalette );
589 currentPalette = 2; 589 currentPalette = 2;
590 590
591 } else { 591 } else {
592 if ( currentPalette == 3 ) return; 592 if ( currentPalette == 3 ) return;
593 setPalette( mNonPrimaryPalette ); 593 setPalette( mNonPrimaryPalette );
594 mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); 594 mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) ));
595 //mLabel->setPalette( mNonPrimaryPalette );; 595 //mLabel->setPalette( mNonPrimaryPalette );;
596 currentPalette = 3; 596 currentPalette = 3;
597 } 597 }
598 } 598 }
599 //QPalette pal = palette(); 599 //QPalette pal = palette();
600 600
601 //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); 601 //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) ));
602} 602}
603QPalette MonthViewCell::getPalette () 603QPalette MonthViewCell::getPalette ()
604{ 604{
605 if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) 605 if ( !KOPrefs::instance()->mMonthViewUsesDayColors )
606 return mStandardPalette; 606 return mStandardPalette;
607 if ( mHoliday) { 607 if ( mHoliday) {
608 return mHolidayPalette ; 608 return mHolidayPalette ;
609 } else { 609 } else {
610 if ( mPrimary ) { 610 if ( mPrimary ) {
611 return mPrimaryPalette ; 611 return mPrimaryPalette ;
612 } 612 }
613 } 613 }
614 return mNonPrimaryPalette; 614 return mNonPrimaryPalette;
615} 615}
616bool MonthViewCell::isPrimary() const 616bool MonthViewCell::isPrimary() const
617{ 617{
618 return mPrimary; 618 return mPrimary;
619} 619}
620 620
621void MonthViewCell::setHoliday( bool holiday ) 621void MonthViewCell::setHoliday( bool holiday )
622{ 622{
623 mHoliday = holiday; 623 mHoliday = holiday;
624 //setMyPalette(); 624 //setMyPalette();
625} 625}
626 626
627void MonthViewCell::setHoliday( const QString &holiday ) 627void MonthViewCell::setHoliday( const QString &holiday )
628{ 628{
629 mHolidayString = holiday; 629 mHolidayString = holiday;
630 630
631 if ( !holiday.isEmpty() ) { 631 if ( !holiday.isEmpty() ) {
632 setHoliday( true ); 632 setHoliday( true );
633 } 633 }
634} 634}
635 635
636void MonthViewCell::startUpdateCell() 636void MonthViewCell::startUpdateCell()
637{ 637{
638 blockSignals( true ); 638 blockSignals( true );
639 mdayCount = 0; 639 mdayCount = 0;
640 setFocusPolicy(NoFocus); 640 setFocusPolicy(NoFocus);
641 if ( !mMonthView->isUpdatePossible() ) 641 if ( !mMonthView->isUpdatePossible() )
642 return; 642 return;
643 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 643 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
644 while ( mitem ) { 644 while ( mitem ) {
645 mitem->setBlockRepaint( true ); 645 mitem->setBlockRepaint( true );
646 mitem = (MonthViewItem *)mitem->next(); 646 mitem = (MonthViewItem *)mitem->next();
647 } 647 }
648 if ( mAvailItemList.count() > 20 ) { 648 if ( mAvailItemList.count() > 20 ) {
649 mAvailItemList.setAutoDelete( true ); 649 mAvailItemList.setAutoDelete( true );
650 mAvailItemList.clear(); 650 mAvailItemList.clear();
651 mAvailItemList.setAutoDelete( false ); 651 mAvailItemList.setAutoDelete( false );
652 clear(); 652 clear();
653 } 653 }
654 654
655 setPrimary( mDate.month()%2 ); 655 setPrimary( mDate.month()%2 );
656 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 656 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
657 if ( mDate == QDate::currentDate() ) { 657 if ( mDate == QDate::currentDate() ) {
658 setLineWidth( 3 ); 658 setLineWidth( 3 );
659 } else { 659 } else {
660 setLineWidth( 1 ); 660 setLineWidth( 1 );
661 } 661 }
662 MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem (); 662 MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem ();
663 //clear(); 663 //clear();
664 while ( CurrentAvailItem ) { 664 while ( CurrentAvailItem ) {
665 MonthViewItem *item = CurrentAvailItem; 665 MonthViewItem *item = CurrentAvailItem;
666 //item->setHighlightedFalse(); 666 //item->setHighlightedFalse();
667 item->recycle( 0, ""); 667 item->recycle( 0, "");
668 CurrentAvailItem = (MonthViewItem *)item->next(); 668 CurrentAvailItem = (MonthViewItem *)item->next();
669 mAvailItemList.append( item ); 669 mAvailItemList.append( item );
670 takeItem ( item ); 670 takeItem ( item );
671 } 671 }
672 672
673#ifdef DESKTOP_VERSION 673#ifdef DESKTOP_VERSION
674 QToolTip::remove(this); 674 QToolTip::remove(this);
675#endif 675#endif
676 mToolTip.clear(); 676 mToolTip.clear();
677 //qApp->processEvents(); 677 //qApp->processEvents();
678#if 0 678#if 0
679 if ( !mHolidayString.isEmpty() ) { 679 if ( !mHolidayString.isEmpty() ) {
680 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 680 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
681 item->setPalette( mHolidayPalette ); 681 item->setPalette( mHolidayPalette );
682 insertItem( item ); 682 insertItem( item );
683 mToolTip.append ( mHolidayString ); 683 mToolTip.append ( mHolidayString );
684 } 684 }
685#endif 685#endif
686} 686}
687 687
688int MonthViewCell::insertEvent(Event *event) 688int MonthViewCell::insertEvent(Event *event)
689{ 689{
690 bool useToolTips = true; 690 bool useToolTips = true;
691#ifndef DESKTOP_VERSION 691#ifndef DESKTOP_VERSION
692 useToolTips = false; 692 useToolTips = false;
693#endif 693#endif
694 QString mToolTipText; 694 QString mToolTipText;
695 setFocusPolicy(WheelFocus); 695 setFocusPolicy(WheelFocus);
696 if ( !(event->doesRecur() == Recurrence::rNone) ) { 696 if ( !(event->doesRecur() == Recurrence::rNone) ) {
697 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 697 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
698 return mdayCount; 698 return mdayCount;
699 else 699 else
700 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 700 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
701 return mdayCount; 701 return mdayCount;
702 } 702 }
703 703
704 if ( event->isHoliday()) { 704 if ( event->isHoliday()) {
705 setHoliday( true ); 705 setHoliday( true );
706 if ( mDate.dayOfWeek() == 7 ) 706 if ( mDate.dayOfWeek() == 7 )
707 setLineWidth( 3 ); 707 setLineWidth( 3 );
708 } 708 }
709 QString text; 709 QString text;
710 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day 710 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day
711 if (event->isMultiDay()) { 711 if (event->isMultiDay()) {
712 QString prefix = "<->";multiday = 2; 712 QString prefix = "<->";multiday = 2;
713 QString time; 713 QString time;
714 if ( event->doesRecur() ) { 714 if ( event->doesRecur() ) {
715 if ( event->recursOn( mDate) ) { 715 if ( event->recursOn( mDate) ) {
716 prefix ="->" ;multiday = 1; 716 prefix ="->" ;multiday = 1;
717 } 717 }
718 else { 718 else {
719 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 719 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
720 if ( event->recursOn( mDate.addDays( -days)) ) { 720 if ( event->recursOn( mDate.addDays( -days)) ) {
721 prefix ="<-" ;multiday = 3; 721 prefix ="<-" ;multiday = 3;
722 } 722 }
723 } 723 }
724 724
725 } else { 725 } else {
726 if (mDate == event->dtStart().date()) { 726 if (mDate == event->dtStart().date()) {
727 prefix ="->" ;multiday = 1; 727 prefix ="->" ;multiday = 1;
728 } else if (mDate == event->dtEnd().date()) { 728 } else if (mDate == event->dtEnd().date()) {
729 prefix ="<-" ;multiday = 3; 729 prefix ="<-" ;multiday = 3;
730 } 730 }
731 } 731 }
732 if ( !event->doesFloat() ) { 732 if ( !event->doesFloat() ) {
733 if ( mDate == event->dtStart().date () ) 733 if ( mDate == event->dtStart().date () )
734 time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; 734 time = KGlobal::locale()->formatTime(event->dtStart().time())+" ";
735 else if ( mDate == event->dtEnd().date () ) 735 else if ( mDate == event->dtEnd().date () )
736 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 736 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
737 737
738 } 738 }
739 text = time + event->summary(); 739 text = time + event->summary();
740
741 int dur = 0;
742 if ( event->doesFloat() ) {
743 dur = event->dtStart().daysTo(event->dtEnd())+1;
744
745 }
740 if ( useToolTips ) { 746 if ( useToolTips ) {
741 mToolTipText += prefix + text; 747 mToolTipText += prefix + text;
742 if ( event->doesFloat() ) { 748 if ( dur ) {
743 mToolTipText += i18n(" (Duration: %1 days)" ).arg ( event->dtStart().daysTo(event->dtEnd())+1); 749 mToolTipText += i18n(" (Duration: %1 days)" ).arg ( dur );
744
745 } 750 }
746 } 751 }
752 if ( dur ) {
753 text += " ("+ QString::number( dur ) + i18n(" days" ) + ")";
754 }
747 } else { 755 } else {
748 if (event->doesFloat()) { 756 if (event->doesFloat()) {
749 text = event->summary(); 757 text = event->summary();
750 if ( useToolTips ) 758 if ( useToolTips )
751 mToolTipText += text; 759 mToolTipText += text;
752 } 760 }
753 else { 761 else {
754 text = KGlobal::locale()->formatTime(event->dtStart().time()); 762 text = KGlobal::locale()->formatTime(event->dtStart().time());
755 text += " " + event->summary(); 763 text += " " + event->summary();
756 if ( useToolTips ) 764 if ( useToolTips )
757 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 765 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
758 } 766 }
759 } 767 }
760 if ( useToolTips && ! event->location().isEmpty() ) { 768 if ( useToolTips && ! event->location().isEmpty() ) {
761 mToolTipText += " (" + event->location() +")"; 769 mToolTipText += " (" + event->location() +")";
762 } 770 }
763 MonthViewItem *item ; 771 MonthViewItem *item ;
764 772
765 if ( mAvailItemList.count() ) { 773 if ( mAvailItemList.count() ) {
766 item = mAvailItemList.first(); 774 item = mAvailItemList.first();
767 mAvailItemList.remove( item ); 775 mAvailItemList.remove( item );
768 item->recycle( event, text ); 776 item->recycle( event, text );
769 } else { 777 } else {
770 item = new MonthViewItem( event, text ); 778 item = new MonthViewItem( event, text );
771 } 779 }
772 780
773 QPalette pal; 781 QPalette pal;
774 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 782 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
775 QStringList categories = event->categories(); 783 QStringList categories = event->categories();
776 QString cat = categories.first(); 784 QString cat = categories.first();
777 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 785 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
778 pal = getPalette(); 786 pal = getPalette();
779 if (cat.isEmpty()) { 787 if (cat.isEmpty()) {
780 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 788 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
781 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() )); 789 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() ));
782 } else { 790 } else {
783 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 791 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
784 } 792 }
785 793
786 } else { 794 } else {
787 if (cat.isEmpty()) { 795 if (cat.isEmpty()) {
788 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 796 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
789 pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() )); 797 pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() ));
790 } else { 798 } else {
791 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 799 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
792 } 800 }
793 } 801 }
794 802
795 } else { 803 } else {
796 pal = mStandardPalette ; 804 pal = mStandardPalette ;
797 } 805 }
798 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor); 806 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor);
799 item->setPalette( pal ); 807 item->setPalette( pal );
800 item->setRecur( event->doesRecur() ); 808 item->setRecur( event->doesRecur() );
801 item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() ); 809 item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() );
802 item->setMoreInfo( event->description().length() > 0 ); 810 item->setMoreInfo( event->description().length() > 0 );
803#ifdef DESKTOP_VERSION 811#ifdef DESKTOP_VERSION
804 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 812 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
805 KOPrefs::instance()->email()); 813 KOPrefs::instance()->email());
806 if ( me != 0 ) { 814 if ( me != 0 ) {
807 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 815 if ( me->status() == Attendee::NeedsAction && me->RSVP())
808 item->setReply(true && multiday < 2); 816 item->setReply(true && multiday < 2);
809 else 817 else
810 item->setReply(false); 818 item->setReply(false);
811 } else 819 } else
812 item->setReply(false); 820 item->setReply(false);
813#endif 821#endif
814 822
815 item->setMultiDay( multiday ); 823 item->setMultiDay( multiday );
816 if ( multiday ) { 824 if ( multiday ) {
817 insertItem( item ,mdayCount); 825 insertItem( item ,mdayCount);
818 ++mdayCount; 826 ++mdayCount;
819 } else { 827 } else {
820 uint i = mdayCount; 828 uint i = mdayCount;
821 uint pos = mdayCount; 829 uint pos = mdayCount;
822 uint itcount = count(); 830 uint itcount = count();
823 if ( itcount > 1000 ) { 831 if ( itcount > 1000 ) {
824 qDebug("KO: Bug in MonthViewCell::insertEvent %u ", itcount); 832 qDebug("KO: Bug in MonthViewCell::insertEvent %u ", itcount);
825 itcount = 0; 833 itcount = 0;
826 } 834 }
827 for ( i = pos; i < itcount;++i ) { 835 for ( i = pos; i < itcount;++i ) {
828 // qDebug("i %d mday %u count %d ",i,itcount,mdayCount ); 836 // qDebug("i %d mday %u count %d ",i,itcount,mdayCount );
829 QListBoxItem* it = this->item ( i ); 837 QListBoxItem* it = this->item ( i );
830 if ( it && text < it->text() ) { 838 if ( it && text < it->text() ) {
831 pos = i; 839 pos = i;
832 break; 840 break;
833 } 841 }
834 ++pos; 842 ++pos;
835 } 843 }
836 insertItem( item ,pos); 844 insertItem( item ,pos);
837 } 845 }
838 if ( useToolTips ) { 846 if ( useToolTips ) {
839 mToolTip.append( mToolTipText ); 847 mToolTip.append( mToolTipText );
840 } 848 }
841 return mdayCount; 849 return mdayCount;
842} 850}
843void MonthViewCell::insertTodo(Todo *todo) 851void MonthViewCell::insertTodo(Todo *todo)
844{ 852{
845 setFocusPolicy(WheelFocus); 853 setFocusPolicy(WheelFocus);
846 QString text; 854 QString text;
847 if (todo->hasDueDate()) { 855 if (todo->hasDueDate()) {
848 if (!todo->doesFloat()) { 856 if (!todo->doesFloat()) {
849 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 857 text += KGlobal::locale()->formatTime(todo->dtDue().time());
850 text += " "; 858 text += " ";
851 } 859 }
852 } 860 }
853 text += todo->summary(); 861 text += todo->summary();
854 MonthViewItem *item ; 862 MonthViewItem *item ;
855 if ( mAvailItemList.count() ) { 863 if ( mAvailItemList.count() ) {
856 item = mAvailItemList.first(); 864 item = mAvailItemList.first();
857 mAvailItemList.remove( item ); 865 mAvailItemList.remove( item );
858 item->recycle( todo, text ); 866 item->recycle( todo, text );
859 } else { 867 } else {
860 item = new MonthViewItem( todo, text ); 868 item = new MonthViewItem( todo, text );
861 } 869 }
862 //MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 870 //MonthViewItem *item = new MonthViewItem( todo, mDate, text );
863 //item->setPalette( mStandardPalette ); 871 //item->setPalette( mStandardPalette );
864 QPalette pal; 872 QPalette pal;
865 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 873 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
866 QStringList categories = todo->categories(); 874 QStringList categories = todo->categories();
867 QString cat = categories.first(); 875 QString cat = categories.first();
868 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 876 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
869 pal = getPalette(); 877 pal = getPalette();
870 if (cat.isEmpty()) { 878 if (cat.isEmpty()) {
871 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 879 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
872 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() )); 880 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() ));
873 } else { 881 } else {
874 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 882 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
875 } 883 }
876 884
877 } else { 885 } else {
878 if (cat.isEmpty()) { 886 if (cat.isEmpty()) {
879 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 887 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
880 pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() )); 888 pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() ));
881 } else { 889 } else {
882 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 890 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
883 } 891 }
884 } 892 }
885 893
886 } else { 894 } else {
887 pal = mStandardPalette ; 895 pal = mStandardPalette ;
888 } 896 }
889 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor); 897 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor);
890 item->setPalette( pal ); 898 item->setPalette( pal );
891 item->setRecur( todo->doesRecur() ); 899 item->setRecur( todo->doesRecur() );
892 item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() ); 900 item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() );
893 item->setMoreInfo( todo->description().length() > 0 ); 901 item->setMoreInfo( todo->description().length() > 0 );
894 insertItem( item , count()); 902 insertItem( item , count());
895#ifdef DESKTOP_VERSION 903#ifdef DESKTOP_VERSION
896 mToolTip.append( text ); 904 mToolTip.append( text );
897#endif 905#endif
898} 906}
899void MonthViewCell::repaintfinishUpdateCell() 907void MonthViewCell::repaintfinishUpdateCell()
900{ 908{
901 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 909 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
902 while ( mitem ) { 910 while ( mitem ) {
903 mitem->setBlockRepaint( false ); 911 mitem->setBlockRepaint( false );
904 updateItem ( mitem ); 912 updateItem ( mitem );
905 mitem = (MonthViewItem *)mitem->next(); 913 mitem = (MonthViewItem *)mitem->next();
906 } 914 }
907 blockSignals( false ); 915 blockSignals( false );
908} 916}
909void MonthViewCell::finishUpdateCell() 917void MonthViewCell::finishUpdateCell()
910{ 918{
911 919
912 920
913 921
914#ifdef DESKTOP_VERSION 922#ifdef DESKTOP_VERSION
915 if (mToolTip.count() > 0 ) { 923 if (mToolTip.count() > 0 ) {
916 mToolTip.sort(); 924 mToolTip.sort();
917 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); 925 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),"");
918 } 926 }
919#endif 927#endif
920 //sort(); 928 //sort();
921 //setMyPalette(); 929 //setMyPalette();
922 setMyPalette(); 930 setMyPalette();
923 931
924 resizeEvent( 0 ); 932 resizeEvent( 0 );
925 933
926} 934}
927void MonthViewCell::updateCell() 935void MonthViewCell::updateCell()
928{ 936{
929 if ( !mMonthView->isUpdatePossible() ) 937 if ( !mMonthView->isUpdatePossible() )
930 return; 938 return;
931 startUpdateCell(); 939 startUpdateCell();
932 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 940 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
933 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 941 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
934 Event *event; 942 Event *event;
935 for( event = events.first(); event; event = events.next() ) { // for event 943 for( event = events.first(); event; event = events.next() ) { // for event
936 insertEvent(event); 944 insertEvent(event);
937 } 945 }
938 // insert due todos 946 // insert due todos
939 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 947 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
940 Todo *todo; 948 Todo *todo;
941 for(todo = todos.first(); todo; todo = todos.next()) { 949 for(todo = todos.first(); todo; todo = todos.next()) {
942 insertTodo( todo ); 950 insertTodo( todo );
943 } 951 }
944 finishUpdateCell(); 952 finishUpdateCell();
945 // if ( isVisible()) 953 // if ( isVisible())
946 //qApp->processEvents(); 954 //qApp->processEvents();
947} 955}
948 956
949void MonthViewCell::updateConfig( bool bigFont ) // = false 957void MonthViewCell::updateConfig( bool bigFont ) // = false
950{ 958{
951 959
952 if ( bigFont ) { 960 if ( bigFont ) {
953 QFont fo = KOPrefs::instance()->mMonthViewFont; 961 QFont fo = KOPrefs::instance()->mMonthViewFont;
954 int ps = fo.pointSize() + 2; 962 int ps = fo.pointSize() + 2;
955 if ( ps < 18 ) 963 if ( ps < 18 )
956 ps += 2; 964 ps += 2;
957 fo.setPointSize( ps ); 965 fo.setPointSize( ps );
958 setFont( fo ); 966 setFont( fo );
959 } else 967 } else
960 setFont( KOPrefs::instance()->mMonthViewFont ); 968 setFont( KOPrefs::instance()->mMonthViewFont );
961 969
962 QFontMetrics fm( font() ); 970 QFontMetrics fm( font() );
963 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 971 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
964 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 972 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
965 mHolidayPalette = mStandardPalette; 973 mHolidayPalette = mStandardPalette;
966 mPrimaryPalette = mStandardPalette; 974 mPrimaryPalette = mStandardPalette;
967 mNonPrimaryPalette = mStandardPalette; 975 mNonPrimaryPalette = mStandardPalette;
968 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 976 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
969 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 977 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
970 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 978 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
971 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 979 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
972 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 980 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
973 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 981 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
974 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 982 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
975 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 983 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
976 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 984 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
977 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 985 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
978 } 986 }
979 //updateCell(); 987 //updateCell();
980} 988}
981 989
982void MonthViewCell::enableScrollBars( bool enabled ) 990void MonthViewCell::enableScrollBars( bool enabled )
983{ 991{
984 992
985 return; 993 return;
986 if ( enabled ) { 994 if ( enabled ) {
987 QListBoxItem *fi = firstItem (); 995 QListBoxItem *fi = firstItem ();
988 if (fi ) { 996 if (fi ) {
989 int ihei = fi->height( this ); 997 int ihei = fi->height( this );
990 int hei = numRows () * ihei; 998 int hei = numRows () * ihei;
991 if ( hei < height() - horizontalScrollBar()->height () ) { 999 if ( hei < height() - horizontalScrollBar()->height () ) {
992 setVScrollBarMode(QScrollView::AlwaysOff); 1000 setVScrollBarMode(QScrollView::AlwaysOff);
993 } 1001 }
994 else 1002 else
995 setVScrollBarMode(QScrollView::Auto); 1003 setVScrollBarMode(QScrollView::Auto);
996 if ( ihei *3 > height() ) { 1004 if ( ihei *3 > height() ) {
997 setHScrollBarMode(QScrollView::AlwaysOff); 1005 setHScrollBarMode(QScrollView::AlwaysOff);
998 } 1006 }
999 else { 1007 else {
1000 setHScrollBarMode(QScrollView::Auto); 1008 setHScrollBarMode(QScrollView::Auto);
1001 } 1009 }
1002 } else { 1010 } else {
1003 setVScrollBarMode(QScrollView::Auto); 1011 setVScrollBarMode(QScrollView::Auto);
1004 setHScrollBarMode(QScrollView::Auto); 1012 setHScrollBarMode(QScrollView::Auto);
1005 } 1013 }
1006 } else { 1014 } else {
1007 setVScrollBarMode(QScrollView::AlwaysOff); 1015 setVScrollBarMode(QScrollView::AlwaysOff);
1008 setHScrollBarMode(QScrollView::AlwaysOff); 1016 setHScrollBarMode(QScrollView::AlwaysOff);
1009 } 1017 }
1010} 1018}
1011 1019
1012Incidence *MonthViewCell::selectedIncidence() 1020Incidence *MonthViewCell::selectedIncidence()
1013{ 1021{
1014 int index = currentItem(); 1022 int index = currentItem();
1015 if ( index < 0 ) return 0; 1023 if ( index < 0 ) return 0;
1016 1024
1017 MonthViewItem *mitem = 1025 MonthViewItem *mitem =
1018 static_cast<MonthViewItem *>( item( index ) ); 1026 static_cast<MonthViewItem *>( item( index ) );
1019 1027
1020 if ( !mitem ) return 0; 1028 if ( !mitem ) return 0;
1021 1029
1022 return mitem->incidence(); 1030 return mitem->incidence();
1023} 1031}
1024 1032
1025QDate MonthViewCell::selectedIncidenceDate() 1033QDate MonthViewCell::selectedIncidenceDate()
1026{ 1034{
1027 QDate qd; 1035 QDate qd;
1028 int index = currentItem(); 1036 int index = currentItem();
1029 if ( index < 0 ) return qd; 1037 if ( index < 0 ) return qd;
1030 return mDate; 1038 return mDate;
1031} 1039}
1032 1040
1033void MonthViewCell::deselect() 1041void MonthViewCell::deselect()
1034{ 1042{
1035 clearSelection(); 1043 clearSelection();
1036 enableScrollBars( false ); 1044 enableScrollBars( false );
1037 // updateCell(); 1045 // updateCell();
1038} 1046}
1039void MonthViewCell::select() 1047void MonthViewCell::select()
1040{ 1048{
1041 ;// updateCell(); 1049 ;// updateCell();
1042} 1050}
1043 1051
1044void MonthViewCell::resizeEvent ( QResizeEvent * e ) 1052void MonthViewCell::resizeEvent ( QResizeEvent * e )
1045{ 1053{
1046 if ( !mMonthView->isUpdatePossible() ) 1054 if ( !mMonthView->isUpdatePossible() )
1047 return; 1055 return;
1048 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height()); 1056 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height());
1049 deselect(); 1057 deselect();
1050 mLabel->setMaximumHeight( height() - lineWidth()*2 ); 1058 mLabel->setMaximumHeight( height() - lineWidth()*2 );
1051 1059
1052 QString text; 1060 QString text;
1053 //mLabel->setText( text ); 1061 //mLabel->setText( text );
1054 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 1062 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
1055 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 1063 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
1056 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " " + QString::number( mDate.day() ); 1064 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " " + QString::number( mDate.day() );
1057 mLabel->resize( mLabelBigSize ); 1065 mLabel->resize( mLabelBigSize );
1058 } else { 1066 } else {
1059 mLabel->resize( mLabelSize ); 1067 mLabel->resize( mLabelSize );
1060 text = QString::number( mDate.day() ); 1068 text = QString::number( mDate.day() );
1061 } 1069 }
1062 mLabel->setText( text ); 1070 mLabel->setText( text );
1063 1071
1064 int size = height() - mLabel->height() - lineWidth()-1; 1072 int size = height() - mLabel->height() - lineWidth()-1;
1065 //qDebug("LW %d ", lineWidth()); 1073 //qDebug("LW %d ", lineWidth());
1066 if ( size > 0 ) 1074 if ( size > 0 )
1067 verticalScrollBar()->setMaximumHeight( size ); 1075 verticalScrollBar()->setMaximumHeight( size );
1068 size = width() - mLabel->width() -lineWidth()-1; 1076 size = width() - mLabel->width() -lineWidth()-1;
1069 if ( size > 0 ) 1077 if ( size > 0 )
1070 horizontalScrollBar()->setMaximumWidth( size ); 1078 horizontalScrollBar()->setMaximumWidth( size );
1071 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() ); 1079 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() );
1072 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 1080 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
1073 // mItemList->resize ( width(), height () ); 1081 // mItemList->resize ( width(), height () );
1074 if ( e ) 1082 if ( e )
1075 KNoScrollListBox::resizeEvent ( e ); 1083 KNoScrollListBox::resizeEvent ( e );
1076} 1084}
1077 1085
1078void MonthViewCell::defaultAction( QListBoxItem *item ) 1086void MonthViewCell::defaultAction( QListBoxItem *item )
1079{ 1087{
1080 1088
1081 if ( !item ) { 1089 if ( !item ) {
1082 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1090 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1083 emit newEventSignal( dt ); 1091 emit newEventSignal( dt );
1084 return; 1092 return;
1085 } 1093 }
1086 1094
1087 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 1095 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
1088 Incidence *incidence = eventItem->incidence(); 1096 Incidence *incidence = eventItem->incidence();
1089 if ( incidence ) mMonthView->defaultAction( incidence ); 1097 if ( incidence ) mMonthView->defaultAction( incidence );
1090} 1098}
1091void MonthViewCell::showDay() 1099void MonthViewCell::showDay()
1092{ 1100{
1093 emit showDaySignal( date() ); 1101 emit showDaySignal( date() );
1094} 1102}
1095void MonthViewCell::newEvent() 1103void MonthViewCell::newEvent()
1096{ 1104{
1097 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1105 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1098 emit newEventSignal( dt ); 1106 emit newEventSignal( dt );
1099} 1107}
1100void MonthViewCell::cellClicked( QListBoxItem *item ) 1108void MonthViewCell::cellClicked( QListBoxItem *item )
1101{ 1109{
1102 mMonthView->setSelectedCell( this ); 1110 mMonthView->setSelectedCell( this );
1103 if ( item == 0 ) { 1111 if ( item == 0 ) {
1104 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1112 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1105 emit newEventSignal( dt ); 1113 emit newEventSignal( dt );
1106 return; 1114 return;
1107 } 1115 }
1108 1116
1109} 1117}
1110 1118
1111void MonthViewCell::contextMenu( QListBoxItem *item ) 1119void MonthViewCell::contextMenu( QListBoxItem *item )
1112{ 1120{
1113 mMonthView->setPopupCell( this ); 1121 mMonthView->setPopupCell( this );
1114 if ( !item ) { 1122 if ( !item ) {
1115 mMonthView->showContextMenu( 0 ); 1123 mMonthView->showContextMenu( 0 );
1116 return; 1124 return;
1117 } 1125 }
1118 //selection( item ); 1126 //selection( item );
1119 //qApp->processEvents(); 1127 //qApp->processEvents();
1120 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 1128 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
1121 Incidence *incidence = eventItem->incidence(); 1129 Incidence *incidence = eventItem->incidence();
1122 if ( incidence ) { 1130 if ( incidence ) {
1123 mBlockDeselect = true; 1131 mBlockDeselect = true;
1124 mMonthView->showContextMenu( incidence ); 1132 mMonthView->showContextMenu( incidence );
1125 } 1133 }
1126} 1134}
1127 1135
1128void MonthViewCell::selection( QListBoxItem *item ) 1136void MonthViewCell::selection( QListBoxItem *item )
1129{ 1137{
1130 if ( !item ) { 1138 if ( !item ) {
1131 emit highlightIncidence( 0 , this, 0 ); 1139 emit highlightIncidence( 0 , this, 0 );
1132 return; 1140 return;
1133 } 1141 }
1134 MonthViewItem * it = (static_cast<MonthViewItem *>( item )); 1142 MonthViewItem * it = (static_cast<MonthViewItem *>( item ));
1135 emit highlightIncidence( it->incidence(), this, it->multiDay() ); 1143 emit highlightIncidence( it->incidence(), this, it->multiDay() );
1136 mMonthView->setSelectedCell( this ); 1144 mMonthView->setSelectedCell( this );
1137} 1145}
1138 1146
1139void MonthViewCell::deHighLight() 1147void MonthViewCell::deHighLight()
1140{ 1148{
1141 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 1149 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
1142 while ( mitem ) { 1150 while ( mitem ) {
1143 if ( mitem->setHighlightedFalse() ) 1151 if ( mitem->setHighlightedFalse() )
1144 updateItem ( mitem ); 1152 updateItem ( mitem );
1145 mitem = (MonthViewItem *)mitem->next(); 1153 mitem = (MonthViewItem *)mitem->next();
1146 } 1154 }
1147} 1155}
1148// returns true if no inc found 1156// returns true if no inc found
1149bool MonthViewCell::doHighLight( Incidence * inc ) 1157bool MonthViewCell::doHighLight( Incidence * inc )
1150{ 1158{
1151 1159
1152 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 1160 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
1153 while ( mitem ) { 1161 while ( mitem ) {
1154 if ( mitem->incidence() == inc ) { 1162 if ( mitem->incidence() == inc ) {
1155 if ( mitem->setHighlighted( inc ) ) 1163 if ( mitem->setHighlighted( inc ) )
1156 updateItem ( mitem ); 1164 updateItem ( mitem );
1157 return false; 1165 return false;
1158 } 1166 }
1159 mitem = (MonthViewItem *)mitem->next(); 1167 mitem = (MonthViewItem *)mitem->next();
1160 } 1168 }
1161 return true; 1169 return true;
1162} 1170}
1163// ******************************************************************************* 1171// *******************************************************************************
1164// ******************************************************************************* 1172// *******************************************************************************
1165// ******************************************************************************* 1173// *******************************************************************************
1166 1174
1167 1175
1168KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 1176KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
1169 : KOEventView( calendar, parent, name ), 1177 : KOEventView( calendar, parent, name ),
1170 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 1178 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
1171 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 1179 mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
1172{ 1180{
1173 mFlagKeyPressed = false; 1181 mFlagKeyPressed = false;
1174 mShortDayLabelsM = false; 1182 mShortDayLabelsM = false;
1175 mShortDayLabelsW = false; 1183 mShortDayLabelsW = false;
1176 skipResize = false; 1184 skipResize = false;
1177 clPending = true; 1185 clPending = true;
1178 mPopupCell = 0; 1186 mPopupCell = 0;
1179 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" ); 1187 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" );
1180 mWidStack = new QWidgetStack( this ); 1188 mWidStack = new QWidgetStack( this );
1181 QVBoxLayout* hb = new QVBoxLayout( this ); 1189 QVBoxLayout* hb = new QVBoxLayout( this );
1182 mMonthView = new QWidget( mWidStack ); 1190 mMonthView = new QWidget( mWidStack );
1183 mWeekView = new QWidget( mWidStack ); 1191 mWeekView = new QWidget( mWidStack );
1184#if QT_VERSION >= 0x030000 1192#if QT_VERSION >= 0x030000
1185 mWidStack->addWidget(mMonthView ); 1193 mWidStack->addWidget(mMonthView );
1186 mWidStack->addWidget(mWeekView ); 1194 mWidStack->addWidget(mWeekView );
1187#else 1195#else
1188 mWidStack->addWidget( mMonthView, 1 ); 1196 mWidStack->addWidget( mMonthView, 1 );
1189 mWidStack->addWidget( mWeekView , 1 ); 1197 mWidStack->addWidget( mWeekView , 1 );
1190#endif 1198#endif
1191 hb->addWidget( mNavigatorBar ); 1199 hb->addWidget( mNavigatorBar );
1192 hb->addWidget( mWidStack ); 1200 hb->addWidget( mWidStack );
1193 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 1201 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
1194 updatePossible = false; 1202 updatePossible = false;
1195 //updatePossible = true; 1203 //updatePossible = true;
1196 mCells.setAutoDelete( true ); 1204 mCells.setAutoDelete( true );
1197 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1205 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1198 mDayLabels.resize( mDaysPerWeek ); 1206 mDayLabels.resize( mDaysPerWeek );
1199 mDayLabelsW.resize( mDaysPerWeek ); 1207 mDayLabelsW.resize( mDaysPerWeek );
1200 QFont bfont = font(); 1208 QFont bfont = font();
1201 if ( QApplication::desktop()->width() < 650 ) { 1209 if ( QApplication::desktop()->width() < 650 ) {
1202 bfont.setPointSize( bfont.pointSize() - 2 ); 1210 bfont.setPointSize( bfont.pointSize() - 2 );
1203 } 1211 }
1204 bfont.setBold( true ); 1212 bfont.setBold( true );
1205 int i; 1213 int i;
1206 1214
1207 for( i = 0; i < mDaysPerWeek; i++ ) { 1215 for( i = 0; i < mDaysPerWeek; i++ ) {
1208 QLabel *label = new QLabel( mMonthView ); 1216 QLabel *label = new QLabel( mMonthView );
1209 label->setFont(bfont); 1217 label->setFont(bfont);
1210 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1218 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1211 label->setLineWidth(1); 1219 label->setLineWidth(1);
1212 label->setAlignment(AlignCenter); 1220 label->setAlignment(AlignCenter);
1213 mDayLabels.insert( i, label ); 1221 mDayLabels.insert( i, label );
1214 label = new QLabel( mWeekView ); 1222 label = new QLabel( mWeekView );
1215 label->setFont(bfont); 1223 label->setFont(bfont);
1216 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1224 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1217 label->setLineWidth(1); 1225 label->setLineWidth(1);
1218 label->setAlignment(AlignCenter); 1226 label->setAlignment(AlignCenter);
1219 mDayLabelsW.insert( i, label ); 1227 mDayLabelsW.insert( i, label );
1220 } 1228 }
1221 1229
1222 bfont.setBold( false ); 1230 bfont.setBold( false );
1223 mWeekLabels.resize( mNumWeeks+1 ); 1231 mWeekLabels.resize( mNumWeeks+1 );
1224 mWeekLabelsW.resize( 2 ); 1232 mWeekLabelsW.resize( 2 );
1225 for( i = 0; i < mNumWeeks+1; i++ ) { 1233 for( i = 0; i < mNumWeeks+1; i++ ) {
1226 KOWeekButton *label = new KOWeekButton( mMonthView ); 1234 KOWeekButton *label = new KOWeekButton( mMonthView );
1227 label->setFocusPolicy(NoFocus); 1235 label->setFocusPolicy(NoFocus);
1228 label->setFont(bfont); 1236 label->setFont(bfont);
1229 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1237 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1230 label->setFlat(true); 1238 label->setFlat(true);
1231 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1239 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1232 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1240 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1233 //label->setLineWidth(1); 1241 //label->setLineWidth(1);
1234 //label->setAlignment(AlignCenter); 1242 //label->setAlignment(AlignCenter);
1235 mWeekLabels.insert( i, label ); 1243 mWeekLabels.insert( i, label );
1236 } 1244 }
1237 mWeekLabels[mNumWeeks]->setText( i18n("W")); 1245 mWeekLabels[mNumWeeks]->setText( i18n("W"));
1238 mWeekLabels[mNumWeeks]->setFocusPolicy(WheelFocus); 1246 mWeekLabels[mNumWeeks]->setFocusPolicy(WheelFocus);
1239 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 1247 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
1240 1248
1241 for( i = 0; i < 1+1; i++ ) { 1249 for( i = 0; i < 1+1; i++ ) {
1242 KOWeekButton *label = new KOWeekButton( mWeekView ); 1250 KOWeekButton *label = new KOWeekButton( mWeekView );
1243 label->setFocusPolicy(NoFocus); 1251 label->setFocusPolicy(NoFocus);
1244 label->setFont(bfont); 1252 label->setFont(bfont);
1245 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1253 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1246 label->setFlat(true); 1254 label->setFlat(true);
1247 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1255 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1248 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1256 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1249 //label->setLineWidth(1); 1257 //label->setLineWidth(1);
1250 //label->setAlignment(AlignCenter); 1258 //label->setAlignment(AlignCenter);
1251 mWeekLabelsW.insert( i, label ); 1259 mWeekLabelsW.insert( i, label );
1252 } 1260 }
1253 mWeekLabelsW[1]->setText( i18n("W")); 1261 mWeekLabelsW[1]->setText( i18n("W"));
1254 mWeekLabelsW[1]->setFocusPolicy(WheelFocus); 1262 mWeekLabelsW[1]->setFocusPolicy(WheelFocus);
1255 1263
1256 1264
1257 int row, col; 1265 int row, col;
1258 mCells.resize( mNumCells ); 1266 mCells.resize( mNumCells );
1259 for( row = 0; row < mNumWeeks; ++row ) { 1267 for( row = 0; row < mNumWeeks; ++row ) {
1260 for( col = 0; col < mDaysPerWeek; ++col ) { 1268 for( col = 0; col < mDaysPerWeek; ++col ) {
1261 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 1269 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
1262 mCells.insert( row * mDaysPerWeek + col, cell ); 1270 mCells.insert( row * mDaysPerWeek + col, cell );
1263 1271
1264 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1272 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1265 SLOT( defaultAction( Incidence * ) ) ); 1273 SLOT( defaultAction( Incidence * ) ) );
1266 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1274 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1267 SIGNAL( newEventSignal( QDateTime ) ) ); 1275 SIGNAL( newEventSignal( QDateTime ) ) );
1268 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1276 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1269 SIGNAL( showDaySignal( QDate ) ) ); 1277 SIGNAL( showDaySignal( QDate ) ) );
1270 connect( cell, SIGNAL( nextCell() ), 1278 connect( cell, SIGNAL( nextCell() ),
1271 SLOT( nextCell() ) ); 1279 SLOT( nextCell() ) );
1272 connect( cell, SIGNAL( prevCell() ), 1280 connect( cell, SIGNAL( prevCell() ),
1273 SLOT( prevCell() ) ); 1281 SLOT( prevCell() ) );
1274 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ), 1282 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ),
1275 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) )); 1283 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1276 } 1284 }
1277 } 1285 }
1278 mCellsW.resize( mDaysPerWeek ); 1286 mCellsW.resize( mDaysPerWeek );
1279 for( col = 0; col < mDaysPerWeek; ++col ) { 1287 for( col = 0; col < mDaysPerWeek; ++col ) {
1280 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 1288 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
1281 mCellsW.insert( col, cell ); 1289 mCellsW.insert( col, cell );
1282 1290
1283 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1291 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1284 SLOT( defaultAction( Incidence * ) ) ); 1292 SLOT( defaultAction( Incidence * ) ) );
1285 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1293 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1286 SIGNAL( newEventSignal( QDateTime ) ) ); 1294 SIGNAL( newEventSignal( QDateTime ) ) );
1287 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1295 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1288 SIGNAL( showDaySignal( QDate ) ) ); 1296 SIGNAL( showDaySignal( QDate ) ) );
1289 connect( cell, SIGNAL( nextCell() ), 1297 connect( cell, SIGNAL( nextCell() ),
1290 SLOT( nextCell() ) ); 1298 SLOT( nextCell() ) );
1291 connect( cell, SIGNAL( prevCell() ), 1299 connect( cell, SIGNAL( prevCell() ),
1292 SLOT( prevCell() ) ); 1300 SLOT( prevCell() ) );
1293 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ), 1301 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ),
1294 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) )); 1302 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1295 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 1303 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
1296 } 1304 }
1297 1305
1298 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 1306 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
1299 mContextMenu = eventPopup(); 1307 mContextMenu = eventPopup();
1300 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1308 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1301 i18n("New Event..."),this, 1309 i18n("New Event..."),this,
1302 SLOT(slotNewEvent()),false); 1310 SLOT(slotNewEvent()),false);
1303 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1311 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1304 i18n("New Todo..."),this, 1312 i18n("New Todo..."),this,
1305 SLOT(slotNewTodo()),false); 1313 SLOT(slotNewTodo()),false);
1306 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1314 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1307 i18n("Journal"),this, 1315 i18n("Journal"),this,
1308 SLOT(slotEditJournal()),false); 1316 SLOT(slotEditJournal()),false);
1309 1317
1310 connect (mContextMenu ,SIGNAL(categoryChanged( Incidence * )),this, 1318 connect (mContextMenu ,SIGNAL(categoryChanged( Incidence * )),this,
1311 SLOT( catChanged( Incidence * ) )); 1319 SLOT( catChanged( Incidence * ) ));
1312 1320
1313 1321
1314 QString pathString = ""; 1322 QString pathString = "";
1315 if ( !KOPrefs::instance()->mToolBarMiniIcons ) { 1323 if ( !KOPrefs::instance()->mToolBarMiniIcons ) {
1316 if ( QApplication::desktop()->width() < 480 ) 1324 if ( QApplication::desktop()->width() < 480 )
1317 pathString += "icons16/"; 1325 pathString += "icons16/";
1318 } else 1326 } else
1319 pathString += "iconsmini/"; 1327 pathString += "iconsmini/";
1320 mNewItemMenu = new QPopupMenu( this ); 1328 mNewItemMenu = new QPopupMenu( this );
1321 mNewItemMenu->insertItem( SmallIcon( pathString +"newevent" ), i18n("New Event..."),this, SLOT(slotNewEvent())); 1329 mNewItemMenu->insertItem( SmallIcon( pathString +"newevent" ), i18n("New Event..."),this, SLOT(slotNewEvent()));
1322 mNewItemMenu->insertItem( SmallIcon( pathString +"newtodo" ),i18n("New Todo..."),this,SLOT(slotNewTodo()),false); 1330 mNewItemMenu->insertItem( SmallIcon( pathString +"newtodo" ),i18n("New Todo..."),this,SLOT(slotNewTodo()),false);
1323 mNewItemMenu->insertItem( SmallIcon( pathString +"journal" ),i18n("Journal"),this,SLOT(slotEditJournal()),false); 1331 mNewItemMenu->insertItem( SmallIcon( pathString +"journal" ),i18n("Journal"),this,SLOT(slotEditJournal()),false);
1324 1332
1325 // updateConfig(); //useless here... 1333 // updateConfig(); //useless here...
1326 // ... but we need mWidthLongDayLabel computed 1334 // ... but we need mWidthLongDayLabel computed
1327 QFontMetrics fontmetric(mDayLabels[0]->font()); 1335 QFontMetrics fontmetric(mDayLabels[0]->font());
1328 mWidthLongDayLabel = 0; 1336 mWidthLongDayLabel = 0;
1329 for (int i = 0; i < 7; i++) { 1337 for (int i = 0; i < 7; i++) {
1330 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1338 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1331 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1339 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1332 } 1340 }
1333 1341
1334 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 1342 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1335 1343
1336#if 0 1344#if 0
1337 if ( mShowWeekView ) 1345 if ( mShowWeekView )
1338 mWidStack->raiseWidget( mWeekView ); 1346 mWidStack->raiseWidget( mWeekView );
1339 else 1347 else
1340 mWidStack->raiseWidget( mMonthView ); 1348 mWidStack->raiseWidget( mMonthView );
1341#endif 1349#endif
1342 1350
1343 emit incidenceSelected( 0 ); 1351 emit incidenceSelected( 0 );
1344 1352
1345 mComputeLayoutTimer = new QTimer( this ); 1353 mComputeLayoutTimer = new QTimer( this );
1346 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout())); 1354 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout()));
1347 1355
1348 1356
1349#ifndef DESKTOP_VERSION 1357#ifndef DESKTOP_VERSION
1350 resize( QApplication::desktop()->size() ); 1358 resize( QApplication::desktop()->size() );
1351#else 1359#else
1352 resize(640, 480 ); 1360 resize(640, 480 );
1353 updatePossible = true; 1361 updatePossible = true;
1354#endif 1362#endif
1355 computeLayout(); 1363 computeLayout();
1356 1364
1357 if ( mShowWeekView ) 1365 if ( mShowWeekView )
1358 mWidStack->raiseWidget( mWeekView ); 1366 mWidStack->raiseWidget( mWeekView );
1359 else 1367 else
1360 mWidStack->raiseWidget( mMonthView ); 1368 mWidStack->raiseWidget( mMonthView );
1361} 1369}
1362 1370
1363KOMonthView::~KOMonthView() 1371KOMonthView::~KOMonthView()
1364{ 1372{
1365 delete mContextMenu; 1373 delete mContextMenu;
1366} 1374}
1367 1375
1368void KOMonthView::catChanged( Incidence * ) 1376void KOMonthView::catChanged( Incidence * )
1369{ 1377{
1370 updateView(); 1378 updateView();
1371} 1379}
1372void KOMonthView::incidenceHighlighted( Incidence * inc , MonthViewCell* mc, int mday ) 1380void KOMonthView::incidenceHighlighted( Incidence * inc , MonthViewCell* mc, int mday )
1373{ 1381{
1374 static Incidence * lastInc = 0; 1382 static Incidence * lastInc = 0;
1375 static MonthViewCell * lastCell = 0; 1383 static MonthViewCell * lastCell = 0;
1376 1384
1377 if ( lastInc == inc && lastCell == mc ) 1385 if ( lastInc == inc && lastCell == mc )
1378 return; 1386 return;
1379 lastInc = inc; 1387 lastInc = inc;
1380 lastCell = mc; 1388 lastCell = mc;
1381 //qDebug("KOMonthView::incidenceHighlighted %d %d %d", inc, mc, mday ); 1389 //qDebug("KOMonthView::incidenceHighlighted %d %d %d", inc, mc, mday );
1382 1390
1383 bool weekview = false; 1391 bool weekview = false;
1384 uint index = 0; 1392 uint index = 0;
1385 for (uint i = 0; i < mCellsW.count(); ++i) { 1393 for (uint i = 0; i < mCellsW.count(); ++i) {
1386 if ( mCellsW[i] == mc ) { 1394 if ( mCellsW[i] == mc ) {
1387 weekview = true; 1395 weekview = true;
1388 index = i; 1396 index = i;
1389 break; 1397 break;
1390 } 1398 }
1391 } 1399 }
1392 QPtrVector<MonthViewCell> *cells; 1400 QPtrVector<MonthViewCell> *cells;
1393 if ( weekview ) 1401 if ( weekview )
1394 cells = &mCellsW; 1402 cells = &mCellsW;
1395 else { 1403 else {
1396 for (uint i = 0; i < mCells.count(); ++i) { 1404 for (uint i = 0; i < mCells.count(); ++i) {
1397 if ( mCells[i] == mc ) { 1405 if ( mCells[i] == mc ) {
1398 index = i; 1406 index = i;
1399 break; 1407 break;
1400 } 1408 }
1401 } 1409 }
1402 cells = &mCells; 1410 cells = &mCells;
1403 } 1411 }
1404 for (uint i = 0; i < (*cells).count(); ++i) { 1412 for (uint i = 0; i < (*cells).count(); ++i) {
1405 (*cells)[i]->deHighLight(); 1413 (*cells)[i]->deHighLight();
1406 } 1414 }
1407 if ( ! inc ) 1415 if ( ! inc )
1408 return; 1416 return;
1409 1417
1410 uint count = (*cells).count(); 1418 uint count = (*cells).count();
1411 bool goLeft = (mday > 1 && index > 0); 1419 bool goLeft = (mday > 1 && index > 0);
1412 bool goRight = (mday < 3 && mday > 0 && index < count -1); 1420 bool goRight = (mday < 3 && mday > 0 && index < count -1);
1413 for (uint iii = 1; iii < count; ++iii) { 1421 for (uint iii = 1; iii < count; ++iii) {
1414 if ( goLeft ) { 1422 if ( goLeft ) {
1415 int left = index - iii; 1423 int left = index - iii;
1416 if ( left >= 0 ) { 1424 if ( left >= 0 ) {
1417 if ( (*cells)[(uint)left]->doHighLight(inc) ) 1425 if ( (*cells)[(uint)left]->doHighLight(inc) )
1418 goLeft = false; 1426 goLeft = false;
1419 } else 1427 } else
1420 goLeft = false; 1428 goLeft = false;
1421 } 1429 }
1422 if ( goRight ) { 1430 if ( goRight ) {
1423 uint right = index + iii; 1431 uint right = index + iii;
1424 if ( right < count ) { 1432 if ( right < count ) {
1425 if ( (*cells)[right]->doHighLight(inc) ) 1433 if ( (*cells)[right]->doHighLight(inc) )
1426 goRight = false; 1434 goRight = false;
1427 1435
1428 } else 1436 } else
1429 goRight = false; 1437 goRight = false;
1430 } 1438 }
1431 1439
1432 } 1440 }
1433#if 0 1441#if 0
1434 if ( mday > 1 && index > 0 ) 1442 if ( mday > 1 && index > 0 )
1435 for (int i = index-1; i >= 0; --i) { 1443 for (int i = index-1; i >= 0; --i) {
1436 //qDebug("index %d iii %d ", index, i); 1444 //qDebug("index %d iii %d ", index, i);
1437 if ( (*cells)[(uint)i]->doHighLight(inc) ) 1445 if ( (*cells)[(uint)i]->doHighLight(inc) )
1438 break; 1446 break;
1439 } 1447 }
1440 if ( mday < 3 && mday > 0 && index < (*cells).count()-1) 1448 if ( mday < 3 && mday > 0 && index < (*cells).count()-1)
1441 for (uint i = index+1; i < (*cells).count(); ++i) { 1449 for (uint i = index+1; i < (*cells).count(); ++i) {
1442 if ( (*cells)[i]->doHighLight(inc) ) 1450 if ( (*cells)[i]->doHighLight(inc) )
1443 break; 1451 break;
1444 } 1452 }
1445#endif 1453#endif
1446 1454
1447} 1455}
1448void KOMonthView::selectInternalWeekNum ( int n ) 1456void KOMonthView::selectInternalWeekNum ( int n )
1449{ 1457{
1450 switchView(); 1458 switchView();
1451 if ( !KOPrefs::instance()->mMonthViewWeek ) 1459 if ( !KOPrefs::instance()->mMonthViewWeek )
1452 emit selectMonth (); 1460 emit selectMonth ();
1453 else 1461 else
1454 emit selectWeekNum ( n ); 1462 emit selectWeekNum ( n );
1455} 1463}
1456 1464
1457int KOMonthView::currentWeek() 1465int KOMonthView::currentWeek()
1458{ 1466{
1459 if ( mShowWeekView ) 1467 if ( mShowWeekView )
1460 return mWeekLabelsW[0]->getWeekNum(); 1468 return mWeekLabelsW[0]->getWeekNum();
1461 return mWeekLabels[0]->getWeekNum(); 1469 return mWeekLabels[0]->getWeekNum();
1462} 1470}
1463void KOMonthView::switchView() 1471void KOMonthView::switchView()
1464{ 1472{
1465 if ( selectedCell( ) ) 1473 if ( selectedCell( ) )
1466 selectedCell()->deselect(); 1474 selectedCell()->deselect();
1467 mShowWeekView = !mShowWeekView; 1475 mShowWeekView = !mShowWeekView;
1468 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 1476 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
1469 if ( clPending ) { 1477 if ( clPending ) {
1470 computeLayout(); 1478 computeLayout();
1471 updateConfig(); 1479 updateConfig();
1472 } 1480 }
1473 if ( mShowWeekView ) 1481 if ( mShowWeekView )
1474 mWidStack->raiseWidget( mWeekView ); 1482 mWidStack->raiseWidget( mWeekView );
1475 else 1483 else
1476 mWidStack->raiseWidget( mMonthView ); 1484 mWidStack->raiseWidget( mMonthView );
1477 clPending = false; 1485 clPending = false;
1478} 1486}
1479 1487
1480int KOMonthView::maxDatesHint() 1488int KOMonthView::maxDatesHint()
1481{ 1489{
1482 return mNumCells; 1490 return mNumCells;
1483} 1491}
1484 1492
1485int KOMonthView::currentDateCount() 1493int KOMonthView::currentDateCount()
1486{ 1494{
1487 return mNumCells; 1495 return mNumCells;
1488} 1496}
1489 1497
1490QPtrList<Incidence> KOMonthView::selectedIncidences() 1498QPtrList<Incidence> KOMonthView::selectedIncidences()
1491{ 1499{
1492 QPtrList<Incidence> selected; 1500 QPtrList<Incidence> selected;
1493 1501
1494 if ( mSelectedCell ) { 1502 if ( mSelectedCell ) {
1495 Incidence *incidence = mSelectedCell->selectedIncidence(); 1503 Incidence *incidence = mSelectedCell->selectedIncidence();
1496 if ( incidence ) selected.append( incidence ); 1504 if ( incidence ) selected.append( incidence );
1497 } 1505 }
1498 1506
1499 return selected; 1507 return selected;
1500} 1508}
1501 1509
1502DateList KOMonthView::selectedDates() 1510DateList KOMonthView::selectedDates()
1503{ 1511{
1504 DateList selected; 1512 DateList selected;
1505 1513
1506 if ( mSelectedCell ) { 1514 if ( mSelectedCell ) {
1507 QDate qd = mSelectedCell->selectedIncidenceDate(); 1515 QDate qd = mSelectedCell->selectedIncidenceDate();
1508 if ( qd.isValid() ) selected.append( qd ); 1516 if ( qd.isValid() ) selected.append( qd );
1509 } 1517 }
1510 1518
1511 return selected; 1519 return selected;
1512} 1520}
1513#if 0 1521#if 0
1514void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1522void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1515 const QDate &td) 1523 const QDate &td)
1516{ 1524{
1517#ifndef KORG_NOPRINTER 1525#ifndef KORG_NOPRINTER
1518 calPrinter->preview(CalPrinter::Month, fd, td); 1526 calPrinter->preview(CalPrinter::Month, fd, td);
1519#endif 1527#endif
1520} 1528}
1521#endif 1529#endif
1522void KOMonthView::updateConfig() 1530void KOMonthView::updateConfig()
1523{ 1531{
1524 1532
1525 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1533 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1526 1534
1527 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) { 1535 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1528 mWeekStartsMonday = true; 1536 mWeekStartsMonday = true;
1529 } 1537 }
1530 QFontMetrics fontmetric(mDayLabels[0]->font()); 1538 QFontMetrics fontmetric(mDayLabels[0]->font());
1531 mWidthLongDayLabel = 0; 1539 mWidthLongDayLabel = 0;
1532 1540
1533 for (int i = 0; i < 7; i++) { 1541 for (int i = 0; i < 7; i++) {
1534 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1542 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1535 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1543 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1536 } 1544 }
1537 bool temp = mShowSatSunComp ; 1545 bool temp = mShowSatSunComp ;
1538 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1546 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1539 if ( ! mShowWeekView ) { 1547 if ( ! mShowWeekView ) {
1540 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 1548 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
1541 computeLayout(); 1549 computeLayout();
1542 } else 1550 } else
1543 doComputeLayoutWeek(); 1551 doComputeLayoutWeek();
1544 updateDayLabels(); 1552 updateDayLabels();
1545 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 1553 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
1546 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 1554 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
1547 //resizeEvent( 0 ); 1555 //resizeEvent( 0 );
1548 for (uint i = 0; i < mCells.count(); ++i) { 1556 for (uint i = 0; i < mCells.count(); ++i) {
1549 mCells[i]->updateConfig(); 1557 mCells[i]->updateConfig();
1550 } 1558 }
1551 1559
1552 for (uint i = 0; i < mCellsW.count(); ++i) { 1560 for (uint i = 0; i < mCellsW.count(); ++i) {
1553 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont); 1561 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont);
1554 } 1562 }
1555#ifdef DESKTOP_VERSION 1563#ifdef DESKTOP_VERSION
1556 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); 1564 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
1557#endif 1565#endif
1558 updateView(); 1566 updateView();
1559} 1567}
1560 1568
1561void KOMonthView::updateDayLabels() 1569void KOMonthView::updateDayLabels()
1562{ 1570{
1563 1571
1564 QPtrVector<QLabel> *mDayLabelsT; 1572 QPtrVector<QLabel> *mDayLabelsT;
1565 1573
1566 mDayLabelsT = &mDayLabelsW; 1574 mDayLabelsT = &mDayLabelsW;
1567 for (int i = 0; i < 7; i++) { 1575 for (int i = 0; i < 7; i++) {
1568 { 1576 {
1569 bool show = mShortDayLabelsW; 1577 bool show = mShortDayLabelsW;
1570 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1578 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1571 show = true; 1579 show = true;
1572 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1580 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1573 } 1581 }
1574 } 1582 }
1575 mDayLabelsT = &mDayLabels; 1583 mDayLabelsT = &mDayLabels;
1576 for (int i = 0; i < 7; i++) { 1584 for (int i = 0; i < 7; i++) {
1577 if (KGlobal::locale()->weekStartsMonday() || KOPrefs::instance()->mMonthViewSatSunTog ) { 1585 if (KGlobal::locale()->weekStartsMonday() || KOPrefs::instance()->mMonthViewSatSunTog ) {
1578 bool show = mShortDayLabelsM; 1586 bool show = mShortDayLabelsM;
1579 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1587 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1580 show = true; 1588 show = true;
1581 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1589 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1582 } else { 1590 } else {
1583 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM)); 1591 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM));
1584 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM)); 1592 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM));
1585 1593
1586 } 1594 }
1587 } 1595 }
1588 1596
1589} 1597}
1590 1598
1591void KOMonthView::clearList() 1599void KOMonthView::clearList()
1592{ 1600{
1593 unsigned int i; 1601 unsigned int i;
1594 for( i = 0; i < mCells.size(); ++i ) { 1602 for( i = 0; i < mCells.size(); ++i ) {
1595 mCells[i]->clear(); 1603 mCells[i]->clear();
1596 } 1604 }
1597 for( i = 0; i < mCellsW.size(); ++i ) { 1605 for( i = 0; i < mCellsW.size(); ++i ) {
1598 mCellsW[i]->clear(); 1606 mCellsW[i]->clear();
1599 } 1607 }
1600} 1608}
1601void KOMonthView::showDates(const QDate &start, const QDate &) 1609void KOMonthView::showDates(const QDate &start, const QDate &)
1602{ 1610{
1603 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 1611 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
1604 1612
1605 QPtrVector<MonthViewCell> *cells; 1613 QPtrVector<MonthViewCell> *cells;
1606 QPtrVector<QLabel> *dayLabels; 1614 QPtrVector<QLabel> *dayLabels;
1607 QPtrVector<KOWeekButton> *weekLabels; 1615 QPtrVector<KOWeekButton> *weekLabels;
1608 uint weekNum = 6; 1616 uint weekNum = 6;
1609 mStartDate = start; 1617 mStartDate = start;
1610 if ( mShowWeekView ) { 1618 if ( mShowWeekView ) {
1611 weekNum = 1; 1619 weekNum = 1;
1612 cells = &mCellsW; 1620 cells = &mCellsW;
1613 dayLabels = &mDayLabelsW; 1621 dayLabels = &mDayLabelsW;
1614 weekLabels = &mWeekLabelsW; 1622 weekLabels = &mWeekLabelsW;
1615 if ( !KGlobal::locale()->weekStartsMonday() ) { 1623 if ( !KGlobal::locale()->weekStartsMonday() ) {
1616 mStartDate = mStartDate.addDays( 1 ); 1624 mStartDate = mStartDate.addDays( 1 );
1617 } 1625 }
1618 } else { 1626 } else {
1619 cells = &mCells; 1627 cells = &mCells;
1620 dayLabels = &mDayLabels; 1628 dayLabels = &mDayLabels;
1621 weekLabels = &mWeekLabels; 1629 weekLabels = &mWeekLabels;
1622 } 1630 }
1623 1631
1624 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1632 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1625 1633
1626 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) { 1634 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1627 mWeekStartsMonday = true; 1635 mWeekStartsMonday = true;
1628 } 1636 }
1629 int startWeekDay = mWeekStartsMonday ? 1 : 7; 1637 int startWeekDay = mWeekStartsMonday ? 1 : 7;
1630 1638
1631 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 1639 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
1632 mStartDate = mStartDate.addDays( -1 ); 1640 mStartDate = mStartDate.addDays( -1 );
1633 } 1641 }
1634 uint i; 1642 uint i;
1635 for( i = 0; i < (*cells).size(); ++i ) { 1643 for( i = 0; i < (*cells).size(); ++i ) {
1636 QDate date = mStartDate.addDays( i ); 1644 QDate date = mStartDate.addDays( i );
1637 (*cells)[i]->setDate( date ); 1645 (*cells)[i]->setDate( date );
1638 1646
1639#ifndef KORG_NOPLUGINS 1647#ifndef KORG_NOPLUGINS
1640 // add holiday, if present 1648 // add holiday, if present
1641 QString hstring(KOCore::self()->holiday(date)); 1649 QString hstring(KOCore::self()->holiday(date));
1642 (*cells)[i]->setHoliday( hstring ); 1650 (*cells)[i]->setHoliday( hstring );
1643#endif 1651#endif
1644 1652
1645 } 1653 }
1646 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 1654 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
1647 for( i = 0; i < weekNum; ++i ) { 1655 for( i = 0; i < weekNum; ++i ) {
1648 int wno; 1656 int wno;
1649 // remember, according to ISO 8601, the first week of the year is the 1657 // remember, according to ISO 8601, the first week of the year is the
1650 // first week that contains a thursday. Thus we must subtract off 4, 1658 // first week that contains a thursday. Thus we must subtract off 4,
1651 // not just 1. 1659 // not just 1.
1652 int dayOfYear = date.dayOfYear(); 1660 int dayOfYear = date.dayOfYear();
1653 if (dayOfYear % 7 != 0) 1661 if (dayOfYear % 7 != 0)
1654 wno = dayOfYear / 7 + 1; 1662 wno = dayOfYear / 7 + 1;
1655 else 1663 else
1656 wno =dayOfYear / 7; 1664 wno =dayOfYear / 7;
1657 (*weekLabels)[i]->setWeekNum( wno ); 1665 (*weekLabels)[i]->setWeekNum( wno );
1658 date = date.addDays( 7 ); 1666 date = date.addDays( 7 );
1659 } 1667 }
1660 updateView(); 1668 updateView();
1661} 1669}
1662 1670
1663void KOMonthView::showEvents(QPtrList<Event>) 1671void KOMonthView::showEvents(QPtrList<Event>)
1664{ 1672{
1665 qDebug("KOMonthView::selectEvents is not implemented yet. "); 1673 qDebug("KOMonthView::selectEvents is not implemented yet. ");
1666} 1674}
1667 1675
1668void KOMonthView::changeEventDisplay(Event *, int) 1676void KOMonthView::changeEventDisplay(Event *, int)
1669{ 1677{
1670 // this should be re-written to be much more efficient, but this 1678 // this should be re-written to be much more efficient, but this
1671 // quick-and-dirty-hack gets the job done for right now. 1679 // quick-and-dirty-hack gets the job done for right now.
1672 //qDebug("KOMonthView::changeEventDisplay "); 1680 //qDebug("KOMonthView::changeEventDisplay ");
1673 updateView(); 1681 updateView();
1674} 1682}
1675 1683
1676void KOMonthView::updateView() 1684void KOMonthView::updateView()
1677{ 1685{
1678 1686
1679 if ( !updatePossible ) 1687 if ( !updatePossible )
1680 return; 1688 return;
1681 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU "); 1689 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ");
1682 //QTime ti; 1690 //QTime ti;
1683 //ti.start(); 1691 //ti.start();
1684 clearSelection(); 1692 clearSelection();
1685 QPtrVector<MonthViewCell> *cells; 1693 QPtrVector<MonthViewCell> *cells;
1686 if ( mShowWeekView ) { 1694 if ( mShowWeekView ) {
1687 cells = &mCellsW; 1695 cells = &mCellsW;
1688 } else { 1696 } else {
1689 cells = &mCells; 1697 cells = &mCells;
1690 } 1698 }
1691#if 1 1699#if 1
1692 int i; 1700 int i;
1693 int timeSpan = (*cells).size()-1; 1701 int timeSpan = (*cells).size()-1;
1694 if ( KOPrefs::instance()->mMonthViewWeek ) 1702 if ( KOPrefs::instance()->mMonthViewWeek )
1695 timeSpan = 6; 1703 timeSpan = 6;
1696 for( i = 0; i < timeSpan + 1; ++i ) { 1704 for( i = 0; i < timeSpan + 1; ++i ) {
1697 (*cells)[i]->startUpdateCell(); 1705 (*cells)[i]->startUpdateCell();
1698 } 1706 }
1699 1707
1700 QPtrList<Event> events = calendar()->events(); 1708 QPtrList<Event> events = calendar()->events();
1701 Event *event; 1709 Event *event;
1702 QDateTime dt; 1710 QDateTime dt;
1703 QDate endDate = mStartDate.addDays( timeSpan ); 1711 QDate endDate = mStartDate.addDays( timeSpan );
1704 for( event = events.first(); event; event = events.next() ) { // for event 1712 for( event = events.first(); event; event = events.next() ) { // for event
1705 if ( event->doesRecur() ) { 1713 if ( event->doesRecur() ) {
1706 bool last; 1714 bool last;
1707 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1715 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1708 QDateTime incidenceEnd; 1716 QDateTime incidenceEnd;
1709 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1717 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1710 bool invalid = false; 1718 bool invalid = false;
1711 while( true ) { 1719 while( true ) {
1712 if ( incidenceStart.isValid() ) { 1720 if ( incidenceStart.isValid() ) {
1713 incidenceEnd = incidenceStart.addDays( eventlen ); 1721 incidenceEnd = incidenceStart.addDays( eventlen );
1714 int st = incidenceStart.date().daysTo( endDate ); 1722 int st = incidenceStart.date().daysTo( endDate );
1715 if ( st >= 0 ) { // start before timeend 1723 if ( st >= 0 ) { // start before timeend
1716 int end = mStartDate.daysTo( incidenceEnd.date() ); 1724 int end = mStartDate.daysTo( incidenceEnd.date() );
1717 if ( end >= 0 ) { // end after timestart --- got one! 1725 if ( end >= 0 ) { // end after timestart --- got one!
1718 //normalize 1726 //normalize
1719 st = timeSpan - st; 1727 st = timeSpan - st;
1720 if ( st < 0 ) st = 0; 1728 if ( st < 0 ) st = 0;
1721 if ( end > timeSpan ) end = timeSpan; 1729 if ( end > timeSpan ) end = timeSpan;
1722 int iii; 1730 int iii;
1723 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1731 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1724 for ( iii = st;iii<= end;++iii) 1732 for ( iii = st;iii<= end;++iii)
1725 (*cells)[iii]->insertEvent( event ); 1733 (*cells)[iii]->insertEvent( event );
1726 } 1734 }
1727 } 1735 }
1728 } else { 1736 } else {
1729 if ( invalid ) 1737 if ( invalid )
1730 break; 1738 break;
1731 invalid = true; 1739 invalid = true;
1732 //qDebug("invalid %s", event->summary().latin1()); 1740 //qDebug("invalid %s", event->summary().latin1());
1733 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; 1741 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
1734 } 1742 }
1735 if ( last ) 1743 if ( last )
1736 break; 1744 break;
1737 bool ok; 1745 bool ok;
1738 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1746 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1739 if ( ! ok ) 1747 if ( ! ok )
1740 break; 1748 break;
1741 if ( incidenceStart.date() > endDate ) 1749 if ( incidenceStart.date() > endDate )
1742 break; 1750 break;
1743 } 1751 }
1744 } else { // no recur 1752 } else { // no recur
1745 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") ) 1753 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") )
1746 if ( event->uid().left(15) == QString("last-syncEvent-") ) 1754 if ( event->uid().left(15) == QString("last-syncEvent-") )
1747 continue; 1755 continue;
1748 int st = event->dtStart().date().daysTo( endDate ); 1756 int st = event->dtStart().date().daysTo( endDate );
1749 if ( st >= 0 ) { // start before timeend 1757 if ( st >= 0 ) { // start before timeend
1750 int end = mStartDate.daysTo( event->dtEnd().date() ); 1758 int end = mStartDate.daysTo( event->dtEnd().date() );
1751 if ( end >= 0 ) { // end after timestart --- got one! 1759 if ( end >= 0 ) { // end after timestart --- got one!
1752 //normalize 1760 //normalize
1753 st = timeSpan - st; 1761 st = timeSpan - st;
1754 if ( st < 0 ) st = 0; 1762 if ( st < 0 ) st = 0;
1755 if ( end > timeSpan ) end = timeSpan; 1763 if ( end > timeSpan ) end = timeSpan;
1756 int iii; 1764 int iii;
1757 for ( iii = st;iii<= end;++iii) 1765 for ( iii = st;iii<= end;++iii)
1758 (*cells)[iii]->insertEvent( event ); 1766 (*cells)[iii]->insertEvent( event );
1759 } 1767 }
1760 } 1768 }
1761 } 1769 }
1762 } 1770 }
1763 // insert due todos 1771 // insert due todos
1764 QPtrList<Todo> todos = calendar()->todos( ); 1772 QPtrList<Todo> todos = calendar()->todos( );
1765 Todo *todo; 1773 Todo *todo;
1766 for(todo = todos.first(); todo; todo = todos.next()) { 1774 for(todo = todos.first(); todo; todo = todos.next()) {
1767 //insertTodo( todo ); 1775 //insertTodo( todo );
1768 if ( todo->hasDueDate() ) { 1776 if ( todo->hasDueDate() ) {
1769 int day = mStartDate.daysTo( todo->dtDue().date() ); 1777 int day = mStartDate.daysTo( todo->dtDue().date() );
1770 if ( day >= 0 && day < timeSpan + 1) { 1778 if ( day >= 0 && day < timeSpan + 1) {
1771 (*cells)[day]->insertTodo( todo ); 1779 (*cells)[day]->insertTodo( todo );
1772 } 1780 }
1773 } 1781 }
1774 } 1782 }
1775 1783
1776 for( i = 0; i < timeSpan+1; ++i ) { 1784 for( i = 0; i < timeSpan+1; ++i ) {
1777 (*cells)[i]->finishUpdateCell(); 1785 (*cells)[i]->finishUpdateCell();
1778 } 1786 }
1779 processSelectionChange(); 1787 processSelectionChange();
1780 //qApp->processEvents(); 1788 //qApp->processEvents();
1781 for( i = 0; i < timeSpan+1; ++i ) { 1789 for( i = 0; i < timeSpan+1; ++i ) {
1782 //(*cells)[i]->repaintfinishUpdateCell(); 1790 //(*cells)[i]->repaintfinishUpdateCell();
1783 QTimer::singleShot( 0, (*cells)[i], SLOT ( repaintfinishUpdateCell() ) ); 1791 QTimer::singleShot( 0, (*cells)[i], SLOT ( repaintfinishUpdateCell() ) );
1784 } 1792 }
1785 setKeyBFocus(); 1793 setKeyBFocus();
1786#else 1794#else
1787 // old code 1795 // old code
1788 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1796 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1789 int i; 1797 int i;
1790 for( i = 0; i < (*cells).count(); ++i ) { 1798 for( i = 0; i < (*cells).count(); ++i ) {
1791 (*cells)[i]->updateCell(); 1799 (*cells)[i]->updateCell();
1792 } 1800 }
1793 1801
1794 //qDebug("KOMonthView::updateView() "); 1802 //qDebug("KOMonthView::updateView() ");
1795 processSelectionChange(); 1803 processSelectionChange();
1796 // qDebug("---------------------------------------------------------------------+ "); 1804 // qDebug("---------------------------------------------------------------------+ ");
1797 (*cells)[0]->setFocus(); 1805 (*cells)[0]->setFocus();
1798#endif 1806#endif
1799 1807
1800 //qDebug("update time %d ", ti.elapsed()); 1808 //qDebug("update time %d ", ti.elapsed());
1801} 1809}
1802 1810
1803void KOMonthView::setKeyBoardFocus() 1811void KOMonthView::setKeyBoardFocus()
1804{ 1812{
1805 //qDebug("KOMonthView::setKeyBoardFocus() "); 1813 //qDebug("KOMonthView::setKeyBoardFocus() ");
1806 bool shootAgain = false; 1814 bool shootAgain = false;
1807 if ( mShowWeekView ) { 1815 if ( mShowWeekView ) {
1808 shootAgain = !mWeekLabelsW[1]->hasFocus(); 1816 shootAgain = !mWeekLabelsW[1]->hasFocus();
1809 mWeekLabelsW[1]->setFocus(); 1817 mWeekLabelsW[1]->setFocus();
1810 } 1818 }
1811 else { 1819 else {
1812 shootAgain = !mWeekLabels[mNumWeeks]->hasFocus(); 1820 shootAgain = !mWeekLabels[mNumWeeks]->hasFocus();
1813 mWeekLabels[mNumWeeks]->setFocus(); 1821 mWeekLabels[mNumWeeks]->setFocus();
1814 } 1822 }
1815 --mKBFcounter; 1823 --mKBFcounter;
1816 if ( shootAgain && mKBFcounter > 0 ) { 1824 if ( shootAgain && mKBFcounter > 0 ) {
1817 QTimer::singleShot( 50, this, SLOT ( setKeyBoardFocus() ) ); 1825 QTimer::singleShot( 50, this, SLOT ( setKeyBoardFocus() ) );
1818 } 1826 }
1819} 1827}
1820void KOMonthView::setKeyBFocus() 1828void KOMonthView::setKeyBFocus()
1821{ 1829{
1822 //qDebug("KOMonthView::setKeyBFocus() "); 1830 //qDebug("KOMonthView::setKeyBFocus() ");
1823 mKBFcounter = 10; 1831 mKBFcounter = 10;
1824 QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) ); 1832 QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) );
1825} 1833}
1826void KOMonthView::resizeEvent(QResizeEvent * e) 1834void KOMonthView::resizeEvent(QResizeEvent * e)
1827{ 1835{
1828 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); 1836 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height());
1829 if ( isVisible() ) { 1837 if ( isVisible() ) {
1830 //qDebug("KOMonthView::isVisible "); 1838 //qDebug("KOMonthView::isVisible ");
1831 slotComputeLayout(); 1839 slotComputeLayout();
1832 } else 1840 } else
1833 mComputeLayoutTimer->start( 100 ); 1841 mComputeLayoutTimer->start( 100 );
1834 if ( e ) 1842 if ( e )
1835 KOEventView::resizeEvent( e ); 1843 KOEventView::resizeEvent( e );
1836} 1844}
1837 1845
1838void KOMonthView::slotComputeLayout() 1846void KOMonthView::slotComputeLayout()
1839{ 1847{
1840 mComputeLayoutTimer->stop(); 1848 mComputeLayoutTimer->stop();
1841 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() ); 1849 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() );
1842 computeLayout(); 1850 computeLayout();
1843 clPending = true; 1851 clPending = true;
1844 setKeyBFocus(); 1852 setKeyBFocus();
1845} 1853}
1846 1854
1847void KOMonthView::doComputeLayoutWeek() 1855void KOMonthView::doComputeLayoutWeek()
1848{ 1856{
1849 1857
1850 int daysToShow; 1858 int daysToShow;
1851 bool combinedSatSun = false; 1859 bool combinedSatSun = false;
1852 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1860 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1853 daysToShow = 6; 1861 daysToShow = 6;
1854 combinedSatSun = true; 1862 combinedSatSun = true;
1855 } 1863 }
1856 int wid = width();//e 1864 int wid = width();//e
1857 int hei = height()-1-mNavigatorBar->height(); 1865 int hei = height()-1-mNavigatorBar->height();
1858#ifdef DESKTOP_VERSION 1866#ifdef DESKTOP_VERSION
1859 if ( !KOPrefs::instance()->mMonthViewWeekRowlayout ) { 1867 if ( !KOPrefs::instance()->mMonthViewWeekRowlayout ) {
1860 daysToShow = 2; 1868 daysToShow = 2;
1861 } else 1869 } else
1862#endif 1870#endif
1863 { 1871 {
1864 if ( wid < hei + 40 ) 1872 if ( wid < hei + 40 )
1865 daysToShow = 2; 1873 daysToShow = 2;
1866 else 1874 else
1867 daysToShow = 3; 1875 daysToShow = 3;
1868 } 1876 }
1869 bool landscape = (daysToShow == 3); 1877 bool landscape = (daysToShow == 3);
1870 mShowSatSunComp = true; 1878 mShowSatSunComp = true;
1871 combinedSatSun = true; 1879 combinedSatSun = true;
1872 1880
1873 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ "); 1881 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ ");
1874 QFontMetrics fm ( mWeekLabels[0]->font() ); 1882 QFontMetrics fm ( mWeekLabels[0]->font() );
1875 int weeklabelwid = fm.width( "888" ); 1883 int weeklabelwid = fm.width( "888" );
1876 wid -= weeklabelwid; 1884 wid -= weeklabelwid;
1877 1885
1878 int colWid = wid / daysToShow; 1886 int colWid = wid / daysToShow;
1879 int dayLabelHei = mDayLabelsW[0]->sizeHint().height(); 1887 int dayLabelHei = mDayLabelsW[0]->sizeHint().height();
1880 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); 1888 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow );
1881 int colModulo = wid % daysToShow; 1889 int colModulo = wid % daysToShow;
1882 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; 1890 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1;
1883 //qDebug("rowmod %d ", rowModulo); 1891 //qDebug("rowmod %d ", rowModulo);
1884 int i; 1892 int i;
1885 int x,y,w,h; 1893 int x,y,w,h;
1886 x= 0; 1894 x= 0;
1887 y= 0; 1895 y= 0;
1888 w = colWid; 1896 w = colWid;
1889 h = dayLabelHei ; 1897 h = dayLabelHei ;
1890 for ( i = 0; i < 7; i++) { 1898 for ( i = 0; i < 7; i++) {
1891 if ( i && !( i % daysToShow) && i < 6) { 1899 if ( i && !( i % daysToShow) && i < 6) {
1892 y += hei/(5-daysToShow); 1900 y += hei/(5-daysToShow);
1893 x = 0; 1901 x = 0;
1894 w = colWid; 1902 w = colWid;
1895 } 1903 }
1896 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1904 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1897 ++w; 1905 ++w;
1898 } 1906 }
1899 int xC,yC,wC,hC; 1907 int xC,yC,wC,hC;
1900 if ( i >= 5 ) { 1908 if ( i >= 5 ) {
1901 int wi = width() - x - weeklabelwid; 1909 int wi = width() - x - weeklabelwid;
1902 if ( i == 5 ) { 1910 if ( i == 5 ) {
1903 xC = x+weeklabelwid; 1911 xC = x+weeklabelwid;
1904 yC = y; 1912 yC = y;
1905 wC = wi/2+wi%2; 1913 wC = wi/2+wi%2;
1906 hC = h; 1914 hC = h;
1907 } else { 1915 } else {
1908 xC = x+weeklabelwid; 1916 xC = x+weeklabelwid;
1909 yC = y; 1917 yC = y;
1910 wC = wi; 1918 wC = wi;
1911 hC = h; 1919 hC = h;
1912 } 1920 }
1913 x = x - w + wi - (wi/2 ); 1921 x = x - w + wi - (wi/2 );
1914 } 1922 }
1915 else { 1923 else {
1916 int wi = w; 1924 int wi = w;
1917 if ( !(( i+1) % daysToShow)) { 1925 if ( !(( i+1) % daysToShow)) {
1918 wi = width() - x - weeklabelwid; 1926 wi = width() - x - weeklabelwid;
1919 } 1927 }
1920 xC = x+weeklabelwid; 1928 xC = x+weeklabelwid;
1921 yC = y; 1929 yC = y;
1922 wC = wi; 1930 wC = wi;
1923 hC = h; 1931 hC = h;
1924 } 1932 }
1925 mDayLabelsW[mapWeekLayout(i,landscape)]->setGeometry( xC,yC,wC,hC); 1933 mDayLabelsW[mapWeekLayout(i,landscape)]->setGeometry( xC,yC,wC,hC);
1926 1934
1927 1935
1928 x += w; 1936 x += w;
1929 } 1937 }
1930 x= 0; 1938 x= 0;
1931 y= dayLabelHei; 1939 y= dayLabelHei;
1932 w = colWid; 1940 w = colWid;
1933 h = cellHei; 1941 h = cellHei;
1934 int max = 0; 1942 int max = 0;
1935 int w_count = mCellsW.count(); 1943 int w_count = mCellsW.count();
1936 for ( i = 0; i < w_count; ++i) { 1944 for ( i = 0; i < w_count; ++i) {
1937 if ( i > 6 ) { 1945 if ( i > 6 ) {
1938 mCellsW[i]->hide(); 1946 mCellsW[i]->hide();
1939 continue; 1947 continue;
1940 } 1948 }
1941 1949
1942 w = colWid; 1950 w = colWid;
1943 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1951 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1944 ++w; 1952 ++w;
1945 } 1953 }
1946 if ( i == (daysToShow-1-rowModulo)*7) 1954 if ( i == (daysToShow-1-rowModulo)*7)
1947 ++h; 1955 ++h;
1948 1956
1949 int xC,yC,wC,hC; 1957 int xC,yC,wC,hC;
1950 if ( i >= 5 ) { 1958 if ( i >= 5 ) {
1951 if ( i ==5 ) { 1959 if ( i ==5 ) {
1952 max = h/2; 1960 max = h/2;
1953 xC = x+weeklabelwid; 1961 xC = x+weeklabelwid;
1954 yC = y; 1962 yC = y;
1955 wC = w; 1963 wC = w;
1956 hC = max; 1964 hC = max;
1957 x -= w ;y += h/2; 1965 x -= w ;y += h/2;
1958 } else { 1966 } else {
1959 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { 1967 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) {
1960 ++w; 1968 ++w;
1961 } 1969 }
1962 max = h-h/2; 1970 max = h-h/2;
1963 xC = x+weeklabelwid; 1971 xC = x+weeklabelwid;
1964 yC = y; 1972 yC = y;
1965 wC = w; 1973 wC = w;
1966 hC = max; 1974 hC = max;
1967 y -= h/2; 1975 y -= h/2;
1968 } 1976 }
1969 } else { 1977 } else {
1970 max = h; 1978 max = h;
1971 xC = x+weeklabelwid; 1979 xC = x+weeklabelwid;
1972 yC = y; 1980 yC = y;
1973 wC = w; 1981 wC = w;
1974 hC = h; 1982 hC = h;
1975 } 1983 }
1976 mCellsW[mapWeekLayout(i,landscape)]->setGeometry ( xC,yC,wC,hC ); 1984 mCellsW[mapWeekLayout(i,landscape)]->setGeometry ( xC,yC,wC,hC );
1977 1985
1978 1986
1979 x += w; 1987 x += w;
1980 if ( x + w/2 > wid ) { 1988 if ( x + w/2 > wid ) {
1981 x = 0; 1989 x = 0;
1982 y += h+dayLabelHei ; 1990 y += h+dayLabelHei ;
1983 } 1991 }
1984 //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 ); 1992 //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 );
1985 } 1993 }
1986 y= dayLabelHei; 1994 y= dayLabelHei;
1987 h = cellHei ; 1995 h = cellHei ;
1988 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1996 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1989 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1997 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1990 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1998 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1991 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1999 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1992 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ; 2000 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ;
1993 updateDayLabels(); 2001 updateDayLabels();
1994 //bool forceUpdate = !updatePossible; 2002 //bool forceUpdate = !updatePossible;
1995 updatePossible = true; 2003 updatePossible = true;
1996 //mWeekLabels[mNumWeeks]->setText( i18n("M")); 2004 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1997 //if ( forceUpdate ) 2005 //if ( forceUpdate )
1998 // updateView(); 2006 // updateView();
1999} 2007}
2000void KOMonthView::computeLayoutWeek() 2008void KOMonthView::computeLayoutWeek()
2001{ 2009{
2002 static int lastWid = 0; 2010 static int lastWid = 0;
2003 static int lastHei = 0; 2011 static int lastHei = 0;
2004 int tWid = topLevelWidget()->size().width(); 2012 int tWid = topLevelWidget()->size().width();
2005 int tHei = topLevelWidget()->size().height(); 2013 int tHei = topLevelWidget()->size().height();
2006 int wid = width();//e 2014 int wid = width();//e
2007 int hei = height()-1-mNavigatorBar->height(); 2015 int hei = height()-1-mNavigatorBar->height();
2008 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 2016 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
2009 return; 2017 return;
2010 2018
2011 if ( lastWid == width() && lastHei == height() ) { 2019 if ( lastWid == width() && lastHei == height() ) {
2012 //qDebug("KOListWeekView::No compute layout needed "); 2020 //qDebug("KOListWeekView::No compute layout needed ");
2013 return; 2021 return;
2014 } 2022 }
2015 lastWid = width(); 2023 lastWid = width();
2016 lastHei = height(); 2024 lastHei = height();
2017 doComputeLayoutWeek(); 2025 doComputeLayoutWeek();
2018} 2026}
2019int KOMonthView::mapWeekLayout( int index, bool landscape ) 2027int KOMonthView::mapWeekLayout( int index, bool landscape )
2020{ 2028{
2021 if ( KOPrefs::instance()->mMonthViewWeekRowlayout ) 2029 if ( KOPrefs::instance()->mMonthViewWeekRowlayout )
2022 return index; 2030 return index;
2023 int diff = 0; 2031 int diff = 0;
2024 if ( !landscape ) diff = 1; 2032 if ( !landscape ) diff = 1;
2025 switch( index ) { 2033 switch( index ) {
2026 case 0: 2034 case 0:
2027 case 5: 2035 case 5:
2028 case 6: 2036 case 6:
2029 return index; 2037 return index;
2030 break; 2038 break;
2031 case 1: 2039 case 1:
2032 return 2+diff; 2040 return 2+diff;
2033 break; 2041 break;
2034 case 2: 2042 case 2:
2035 return 4-(3*diff); 2043 return 4-(3*diff);
2036 break; 2044 break;
2037 case 3: 2045 case 3:
2038 return 1+(3*diff); 2046 return 1+(3*diff);
2039 break; 2047 break;
2040 case 4: 2048 case 4:
2041 return 3-diff; 2049 return 3-diff;
2042 break; 2050 break;
2043 default: 2051 default:
2044 qDebug("KO: Error in mapping week layout "); 2052 qDebug("KO: Error in mapping week layout ");
2045 return index; 2053 return index;
2046 break; 2054 break;
2047 } 2055 }
2048 return index; 2056 return index;
2049} 2057}
2050void KOMonthView::computeLayout() 2058void KOMonthView::computeLayout()
2051{ 2059{
2052 2060
2053 2061
2054 static int lastWid = 0; 2062 static int lastWid = 0;
2055 static int lastHei = 0; 2063 static int lastHei = 0;
2056 2064
2057 if ( mShowWeekView ){ 2065 if ( mShowWeekView ){
2058 computeLayoutWeek(); 2066 computeLayoutWeek();
2059 return; 2067 return;
2060 } 2068 }
2061 int daysToShow = 7; 2069 int daysToShow = 7;
2062 bool combinedSatSun = false; 2070 bool combinedSatSun = false;
2063 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 2071 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
2064 daysToShow = 6; 2072 daysToShow = 6;
2065 combinedSatSun = true; 2073 combinedSatSun = true;
2066 } 2074 }
2067 int tWid = topLevelWidget()->size().width(); 2075 int tWid = topLevelWidget()->size().width();
2068 int tHei = topLevelWidget()->size().height(); 2076 int tHei = topLevelWidget()->size().height();
2069 2077
2070 int wid = width();//e 2078 int wid = width();//e
2071 int hei = height()-1-mNavigatorBar->height(); 2079 int hei = height()-1-mNavigatorBar->height();
2072 2080
2073 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) { 2081 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) {
2074 return; 2082 return;
2075 } 2083 }
2076 if ( lastWid == width() && lastHei == height() ){ 2084 if ( lastWid == width() && lastHei == height() ){
2077 //qDebug("KOMonthview::No compute layout needed "); 2085 //qDebug("KOMonthview::No compute layout needed ");
2078 return; 2086 return;
2079 } 2087 }
2080 2088
2081 lastWid = width(); 2089 lastWid = width();
2082 lastHei = height(); 2090 lastHei = height();
2083 //qDebug("KOMonthView::computeLayout() MMM ------------------- "); 2091 //qDebug("KOMonthView::computeLayout() MMM ------------------- ");
2084 QFontMetrics fm ( mWeekLabels[0]->font() ); 2092 QFontMetrics fm ( mWeekLabels[0]->font() );
2085 int weeklabelwid = fm.width( "888" ); 2093 int weeklabelwid = fm.width( "888" );
2086 wid -= weeklabelwid; 2094 wid -= weeklabelwid;
2087 2095
2088 int colWid = wid / daysToShow; 2096 int colWid = wid / daysToShow;
2089 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 2097 int dayLabelHei = mDayLabels[0]->sizeHint().height();
2090 int cellHei = (hei - dayLabelHei) /6; 2098 int cellHei = (hei - dayLabelHei) /6;
2091 int colModulo = wid % daysToShow; 2099 int colModulo = wid % daysToShow;
2092 int rowModulo = (hei- dayLabelHei) % 6; 2100 int rowModulo = (hei- dayLabelHei) % 6;
2093 //qDebug("rowmod %d ", rowModulo); 2101 //qDebug("rowmod %d ", rowModulo);
2094 int i; 2102 int i;
2095 int x,y,w,h; 2103 int x,y,w,h;
2096 x= 0; 2104 x= 0;
2097 y= 0; 2105 y= 0;
2098 w = colWid; 2106 w = colWid;
2099 h = dayLabelHei ; 2107 h = dayLabelHei ;
2100 for ( i = 0; i < 7; i++) { 2108 for ( i = 0; i < 7; i++) {
2101 if ( i == daysToShow-colModulo ) 2109 if ( i == daysToShow-colModulo )
2102 ++w; 2110 ++w;
2103 if ( combinedSatSun ) { 2111 if ( combinedSatSun ) {
2104 if ( i >= daysToShow-1 ) { 2112 if ( i >= daysToShow-1 ) {
2105 2113
2106 if ( i == 6 ) 2114 if ( i == 6 )
2107 mDayLabels[i]->setGeometry( x+weeklabelwid,y,width()-x-weeklabelwid,h); 2115 mDayLabels[i]->setGeometry( x+weeklabelwid,y,width()-x-weeklabelwid,h);
2108 else 2116 else
2109 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h); 2117 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
2110 x -= w/2 ; 2118 x -= w/2 ;
2111 } 2119 }
2112 else 2120 else
2113 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 2121 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
2114 } else 2122 } else
2115 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 2123 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
2116 x += w; 2124 x += w;
2117 } 2125 }
2118 x= 0; 2126 x= 0;
2119 y= dayLabelHei; 2127 y= dayLabelHei;
2120 w = colWid; 2128 w = colWid;
2121 h = cellHei ; 2129 h = cellHei ;
2122 int max = 0; 2130 int max = 0;
2123 int mc_count = mCells.count(); 2131 int mc_count = mCells.count();
2124 for ( i = 0; i < mc_count; ++i) { 2132 for ( i = 0; i < mc_count; ++i) {
2125 //qDebug("iii %d ", i); 2133 //qDebug("iii %d ", i);
2126 w = colWid; 2134 w = colWid;
2127 if ( ((i) % 7) >= 7-colModulo ) { 2135 if ( ((i) % 7) >= 7-colModulo ) {
2128 ++w; 2136 ++w;
2129 } 2137 }
2130 if ( i == (6-rowModulo)*7) 2138 if ( i == (6-rowModulo)*7)
2131 ++h; 2139 ++h;
2132 if ( combinedSatSun ) { 2140 if ( combinedSatSun ) {
2133 if ( (i)%7 >= daysToShow-1 ) { 2141 if ( (i)%7 >= daysToShow-1 ) {
2134 if ( (i)%7 == daysToShow-1 ) { 2142 if ( (i)%7 == daysToShow-1 ) {
2135 w = width()-x-weeklabelwid; 2143 w = width()-x-weeklabelwid;
2136 max = h/2; 2144 max = h/2;
2137 mCells[i]->setGeometry ( x+weeklabelwid,y,w,max ); 2145 mCells[i]->setGeometry ( x+weeklabelwid,y,w,max );
2138 x -= w ;y += h/2; 2146 x -= w ;y += h/2;
2139 } else { 2147 } else {
2140 w = width()-x-weeklabelwid; 2148 w = width()-x-weeklabelwid;
2141 max = h-h/2; 2149 max = h-h/2;
2142 mCells[i]->setGeometry ( x+weeklabelwid,y,w,max ); 2150 mCells[i]->setGeometry ( x+weeklabelwid,y,w,max );
2143 y -= h/2; 2151 y -= h/2;
2144 } 2152 }
2145 } else { 2153 } else {
2146 max = h; 2154 max = h;
2147 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 2155 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
2148 } 2156 }
2149 2157
2150 } 2158 }
2151 else { 2159 else {
2152 max = h; 2160 max = h;
2153 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 2161 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
2154 } 2162 }
2155 x += w; 2163 x += w;
2156 if ( x + w/2 > wid ) { 2164 if ( x + w/2 > wid ) {
2157 x = 0; 2165 x = 0;
2158 y += h; 2166 y += h;
2159 } 2167 }
2160 //mCells[i]->dateLabel()->setMaximumHeight( max- mCells[i]->lineWidth()*2 ); 2168 //mCells[i]->dateLabel()->setMaximumHeight( max- mCells[i]->lineWidth()*2 );
2161 } 2169 }
2162 y= dayLabelHei; 2170 y= dayLabelHei;
2163 h = cellHei ; 2171 h = cellHei ;
2164 for ( i = 0; i < 6; i++) { 2172 for ( i = 0; i < 6; i++) {
2165 if ( i == (6-rowModulo)) 2173 if ( i == (6-rowModulo))
2166 ++h; 2174 ++h;
2167 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h); 2175 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
2168 y += h; 2176 y += h;
2169 } 2177 }
2170 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 2178 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
2171 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 2179 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
2172 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 2180 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
2173 mShortDayLabelsM = mDayLabels[0]->width()-2 < mWidthLongDayLabel ; 2181 mShortDayLabelsM = mDayLabels[0]->width()-2 < mWidthLongDayLabel ;
2174 updateDayLabels(); 2182 updateDayLabels();
2175 //bool forceUpdate = !updatePossible; 2183 //bool forceUpdate = !updatePossible;
2176 updatePossible = true; 2184 updatePossible = true;
2177 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 2185 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
2178} 2186}
2179 2187
2180void KOMonthView::showContextMenu( Incidence *incidence ) 2188void KOMonthView::showContextMenu( Incidence *incidence )
2181{ 2189{
2182 if( incidence ) 2190 if( incidence )
2183 mContextMenu->showIncidencePopup(incidence); 2191 mContextMenu->showIncidencePopup(incidence);
2184 else { 2192 else {
2185 //qDebug("KOMonthView::showContextMenu "); 2193 //qDebug("KOMonthView::showContextMenu ");
2186 mNewItemMenu->popup(QCursor::pos()); 2194 mNewItemMenu->popup(QCursor::pos());
2187 } 2195 }
2188 /* 2196 /*
2189 if( incidence && incidence->typeID() == eventID ) { 2197 if( incidence && incidence->typeID() == eventID ) {
2190 Event *event = static_cast<Event *>(incidence); 2198 Event *event = static_cast<Event *>(incidence);
2191 mContextMenu->showEventPopup(event); 2199 mContextMenu->showEventPopup(event);
2192 } else { 2200 } else {
2193 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; 2201 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
2194 } 2202 }
2195 */ 2203 */
2196} 2204}
2197MonthViewCell * KOMonthView::selectedCell( ) 2205MonthViewCell * KOMonthView::selectedCell( )
2198{ 2206{
2199 return mSelectedCell; 2207 return mSelectedCell;
2200} 2208}
2201void KOMonthView::setSelectedCell( MonthViewCell *cell ) 2209void KOMonthView::setSelectedCell( MonthViewCell *cell )
2202{ 2210{
2203 //qDebug("KOMonthView::setSelectedCell %d", cell); 2211 //qDebug("KOMonthView::setSelectedCell %d", cell);
2204 if ( mSelectedCell && mSelectedCell != cell ) { 2212 if ( mSelectedCell && mSelectedCell != cell ) {
2205 MonthViewCell * mvc = mSelectedCell; 2213 MonthViewCell * mvc = mSelectedCell;
2206 mSelectedCell = cell; 2214 mSelectedCell = cell;
2207 mvc->deselect(); 2215 mvc->deselect();
2208 } else 2216 } else
2209 mSelectedCell = cell; 2217 mSelectedCell = cell;
2210 // if ( mSelectedCell ) 2218 // if ( mSelectedCell )
2211 // mSelectedCell->select(); 2219 // mSelectedCell->select();
2212 if ( !mSelectedCell ) 2220 if ( !mSelectedCell )
2213 emit incidenceSelected( 0 ); 2221 emit incidenceSelected( 0 );
2214 else 2222 else
2215 emit incidenceSelected( mSelectedCell->selectedIncidence() ); 2223 emit incidenceSelected( mSelectedCell->selectedIncidence() );
2216} 2224}
2217 2225
2218void KOMonthView::processSelectionChange() 2226void KOMonthView::processSelectionChange()
2219{ 2227{
2220 QPtrList<Incidence> incidences = selectedIncidences(); 2228 QPtrList<Incidence> incidences = selectedIncidences();
2221 if (incidences.count() > 0) { 2229 if (incidences.count() > 0) {
2222 emit incidenceSelected( incidences.first() ); 2230 emit incidenceSelected( incidences.first() );
2223 } else { 2231 } else {
2224 emit incidenceSelected( 0 ); 2232 emit incidenceSelected( 0 );
2225 clearSelection(); 2233 clearSelection();
2226 } 2234 }
2227} 2235}
2228 2236
2229void KOMonthView::clearSelection() 2237void KOMonthView::clearSelection()
2230{ 2238{
2231 if ( mSelectedCell ) { 2239 if ( mSelectedCell ) {
2232 mSelectedCell->deselect(); 2240 mSelectedCell->deselect();
2233 mSelectedCell = 0; 2241 mSelectedCell = 0;
2234 } 2242 }
2235} 2243}
2236 2244
2237void KOMonthView::keyReleaseEvent ( QKeyEvent * e) 2245void KOMonthView::keyReleaseEvent ( QKeyEvent * e)
2238{ 2246{
2239 if ( !e->isAutoRepeat() ) { 2247 if ( !e->isAutoRepeat() ) {
2240 mFlagKeyPressed = false; 2248 mFlagKeyPressed = false;
2241 } 2249 }
2242} 2250}
2243 2251
2244void KOMonthView::keyPressEvent ( QKeyEvent * e ) 2252void KOMonthView::keyPressEvent ( QKeyEvent * e )
2245{ 2253{
2246 2254
2247 qApp->processEvents(); 2255 qApp->processEvents();
2248 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 2256 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
2249 //e->ignore(); 2257 //e->ignore();
2250 e->accept(); 2258 e->accept();
2251 return; 2259 return;
2252 } 2260 }
2253 if (! e->isAutoRepeat() ) 2261 if (! e->isAutoRepeat() )
2254 mFlagKeyPressed = true; 2262 mFlagKeyPressed = true;
2255 switch(e->key()) { 2263 switch(e->key()) {
2256 case Key_Up: 2264 case Key_Up:
2257 { 2265 {
2258 if ( mShowWeekView ) { 2266 if ( mShowWeekView ) {
2259 emit selectWeekNum ( currentWeek() - 1 ); 2267 emit selectWeekNum ( currentWeek() - 1 );
2260 } 2268 }
2261 else { 2269 else {
2262 emit prevMonth(); 2270 emit prevMonth();
2263 } 2271 }
2264 } 2272 }
2265 e->accept(); 2273 e->accept();
2266 break; 2274 break;
2267 case Key_Down: 2275 case Key_Down:
2268 { 2276 {
2269 if ( mShowWeekView ) { 2277 if ( mShowWeekView ) {
2270 emit selectWeekNum ( currentWeek() +1); 2278 emit selectWeekNum ( currentWeek() +1);
2271 } 2279 }
2272 else { 2280 else {
2273 emit nextMonth(); 2281 emit nextMonth();
2274 } 2282 }
2275 2283
2276 } 2284 }
2277 e->accept(); 2285 e->accept();
2278 break; 2286 break;
2279 case Key_Return: 2287 case Key_Return:
2280 case Key_Enter: 2288 case Key_Enter:
2281 { 2289 {
2282 selectInternalWeekNum ( currentWeek() ); 2290 selectInternalWeekNum ( currentWeek() );
diff --git a/libkdepim/kdatepicker.cpp b/libkdepim/kdatepicker.cpp
index 25b4e81..68ef943 100644
--- a/libkdepim/kdatepicker.cpp
+++ b/libkdepim/kdatepicker.cpp
@@ -1,490 +1,498 @@
1/* -*- C++ -*- 1/* -*- C++ -*-
2 This file is part of the KDE libraries 2 This file is part of the KDE libraries
3 Copyright (C) 1997 Tim D. Gilman (tdgilman@best.org) 3 Copyright (C) 1997 Tim D. Gilman (tdgilman@best.org)
4 (C) 1998-2001 Mirko Boehm (mirko@kde.org) 4 (C) 1998-2001 Mirko Boehm (mirko@kde.org)
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include "kdatepicker.h" 21#include "kdatepicker.h"
22#include <kglobal.h> 22#include <kglobal.h>
23#include <kapplication.h> 23#include <kapplication.h>
24#include <klocale.h> 24#include <klocale.h>
25#include <kiconloader.h> 25#include <kiconloader.h>
26#include <qframe.h> 26#include <qframe.h>
27#include <qpainter.h> 27#include <qpainter.h>
28#include <qdialog.h> 28#include <qdialog.h>
29#include <qtoolbutton.h> 29#include <qtoolbutton.h>
30#include <qfont.h> 30#include <qfont.h>
31#include <qapplication.h> 31#include <qapplication.h>
32#include <qlineedit.h> 32#include <qlineedit.h>
33#include <qvalidator.h> 33#include <qvalidator.h>
34#include <kdebug.h> 34#include <kdebug.h>
35#include <knotifyclient.h> 35#include <knotifyclient.h>
36#include <kglobalsettings.h> 36#include <kglobalsettings.h>
37#include "kdatetbl.h" 37#include "kdatetbl.h"
38#include "kdateedit.h" 38#include "kdateedit.h"
39//#include "kdatepicker.moc" 39//#include "kdatepicker.moc"
40 40
41 41
42KDatePicker::KDatePicker(QWidget *parent, QDate dt, const char *name) 42KDatePicker::KDatePicker(QWidget *parent, QDate dt, const char *name)
43 : QFrame(parent,name), 43 : QFrame(parent,name),
44 yearForward(new QToolButton(this)), 44 yearForward(new QToolButton(this)),
45 yearBackward(new QToolButton(this)), 45 yearBackward(new QToolButton(this)),
46 monthForward(new QToolButton(this)), 46 monthForward(new QToolButton(this)),
47 monthBackward(new QToolButton(this)), 47 monthBackward(new QToolButton(this)),
48 selectMonth(new QToolButton(this)), 48 selectMonth(new QToolButton(this)),
49 selectYear(new QToolButton(this)), 49 selectYear(new QToolButton(this)),
50 todayBut(new QToolButton(this)), 50 todayBut(new QToolButton(this)),
51 //line(new QLineEdit(this)), 51 //line(new QLineEdit(this)),
52 val(new KDateValidator(this)) 52 val(new KDateValidator(this))
53 //table(new KDateTable(this)), 53 //table(new KDateTable(this)),
54 //fontsize(1) 54 //fontsize(1)
55{ 55{
56 QFont fo = KGlobalSettings::generalFont(); 56 QFont fo = KGlobalSettings::generalFont();
57 int add = 2; 57 int add = 2;
58 if ( QApplication::desktop()->width() >= 480 && QApplication::desktop()->width() <= 640 ) 58 if ( QApplication::desktop()->width() >= 480 && QApplication::desktop()->width() <= 640 )
59 add += 4; 59 add += 4;
60 fo.setPointSize(fo.pointSize()+add ); 60 fo.setPointSize(fo.pointSize()+add );
61 setFont( fo ); 61 setFont( fo );
62 table = new KDateTable(this); 62 table = new KDateTable(this);
63 setFontSize(font().pointSize()); 63 setFontSize(font().pointSize());
64 //line->setValidator(val); 64 //line->setValidator(val);
65 lineDate = new KDateEdit( this, "dateediipicker", true ); 65 lineDate = new KDateEdit( this, "dateediipicker", true );
66 yearForward->setPixmap(SmallIcon("3rightarrowB")); 66 yearForward->setPixmap(SmallIcon("3rightarrowB"));
67 yearBackward->setPixmap(SmallIcon("3leftarrowB")); 67 yearBackward->setPixmap(SmallIcon("3leftarrowB"));
68 monthForward->setPixmap(SmallIcon("2rightarrowB")); 68 monthForward->setPixmap(SmallIcon("2rightarrowB"));
69 monthBackward->setPixmap(SmallIcon("2leftarrowB")); 69 monthBackward->setPixmap(SmallIcon("2leftarrowB"));
70 todayBut->setPixmap(SmallIcon("today")); 70 todayBut->setPixmap(SmallIcon("today"));
71 setDate(dt); // set button texts 71 setDate(dt); // set button texts
72 connect(table, SIGNAL(dateChanged(QDate)), SLOT(dateChangedSlot(QDate))); 72 connect(table, SIGNAL(dateChanged(QDate)), SLOT(dateChangedSlot(QDate)));
73 connect(table, SIGNAL(tableClicked()), SLOT(tableClickedSlot())); 73 connect(table, SIGNAL(tableClicked()), SLOT(tableClickedSlot()));
74 connect(monthForward, SIGNAL(clicked()), SLOT(monthForwardClicked())); 74 connect(monthForward, SIGNAL(clicked()), SLOT(monthForwardClicked()));
75 connect(monthBackward, SIGNAL(clicked()), SLOT(monthBackwardClicked())); 75 connect(monthBackward, SIGNAL(clicked()), SLOT(monthBackwardClicked()));
76 connect(yearForward, SIGNAL(clicked()), SLOT(yearForwardClicked())); 76 connect(yearForward, SIGNAL(clicked()), SLOT(yearForwardClicked()));
77 connect(yearBackward, SIGNAL(clicked()), SLOT(yearBackwardClicked())); 77 connect(yearBackward, SIGNAL(clicked()), SLOT(yearBackwardClicked()));
78 connect(selectMonth, SIGNAL(clicked()), SLOT(selectMonthClicked())); 78 connect(selectMonth, SIGNAL(clicked()), SLOT(selectMonthClicked()));
79 connect(selectYear, SIGNAL(clicked()), SLOT(selectYearClicked())); 79 connect(selectYear, SIGNAL(clicked()), SLOT(selectYearClicked()));
80 connect(todayBut, SIGNAL(clicked()), SLOT(goToday())); 80 connect(todayBut, SIGNAL(clicked()), SLOT(goToday()));
81 //connect(line, SIGNAL(returnPressed()), SLOT(lineEnterPressed())); 81 //connect(line, SIGNAL(returnPressed()), SLOT(lineEnterPressed()));
82 connect(lineDate, SIGNAL(dateChanged(QDate)), SLOT(slotSetDate(QDate))); 82 connect(lineDate, SIGNAL(dateChanged(QDate)), SLOT(slotSetDate(QDate)));
83 connect(lineDate, SIGNAL(returnPressed()), SLOT(lineEnterPressed())); 83 connect(lineDate, SIGNAL(returnPressed()), SLOT(lineEnterPressed()));
84 table->setFocus(); 84 table->setFocus();
85 85
86} 86}
87 87
88KDatePicker::~KDatePicker() 88KDatePicker::~KDatePicker()
89{ 89{
90} 90}
91 91
92void 92void
93KDatePicker::resizeEvent(QResizeEvent*) 93KDatePicker::resizeEvent(QResizeEvent*)
94{ 94{
95 QWidget *buttons[] = { 95 QWidget *buttons[] = {
96 yearBackward, 96 yearBackward,
97 monthBackward, 97 monthBackward,
98 selectMonth, 98 selectMonth,
99 selectYear, 99 selectYear,
100 monthForward, 100 monthForward,
101 yearForward }; 101 yearForward };
102 const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]); 102 const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]);
103 QSize sizes[NoOfButtons]; 103 QSize sizes[NoOfButtons];
104 int buttonHeight=0; 104 int buttonHeight=0;
105 int count; 105 int count;
106 int w; 106 int w;
107 int x=0; 107 int x=0;
108 // ----- calculate button row height: 108 // ----- calculate button row height:
109 for(count=0; count<NoOfButtons; ++count) { 109 for(count=0; count<NoOfButtons; ++count) {
110 int xS = buttons[count]->sizeHint().width(); 110 int xS = buttons[count]->sizeHint().width();
111 int yS = buttons[count]->sizeHint().height(); 111 int yS = buttons[count]->sizeHint().height();
112 if ( QApplication::desktop()->width() < 320 ) 112 if ( QApplication::desktop()->width() < 320 )
113 sizes[count]=QSize ( xS+4, yS ); 113 sizes[count]=QSize ( xS+4, yS );
114 else 114 else
115 sizes[count]=QSize ( xS+10, yS ); 115 sizes[count]=QSize ( xS+10, yS );
116 116
117 buttonHeight=QMAX(buttonHeight, sizes[count].height()); 117 buttonHeight=QMAX(buttonHeight, sizes[count].height());
118 } 118 }
119 buttonHeight += 10; 119 buttonHeight += 10;
120 // ----- calculate size of the month button: 120 // ----- calculate size of the month button:
121 w=0; 121 w=0;
122 for(count=0; count<NoOfButtons; ++count) { 122 for(count=0; count<NoOfButtons; ++count) {
123 if(buttons[count]!=selectMonth) 123 if(buttons[count]!=selectMonth)
124 { 124 {
125 w+=sizes[count].width(); 125 w+=sizes[count].width();
126 } else { 126 } else {
127 x=count; 127 x=count;
128 } 128 }
129 } 129 }
130 sizes[x].setWidth(width()-w); // stretch the month button 130 sizes[x].setWidth(width()-w); // stretch the month button
131 // ----- place the buttons: 131 // ----- place the buttons:
132 x=0; 132 x=0;
133 for(count=0; count<NoOfButtons; ++count) 133 for(count=0; count<NoOfButtons; ++count)
134 { 134 {
135 w=sizes[count].width(); 135 w=sizes[count].width();
136 buttons[count]->setGeometry(x, 0, w, buttonHeight); 136 buttons[count]->setGeometry(x, 0, w, buttonHeight);
137 x+=w; 137 x+=w;
138 } 138 }
139 // ----- place the line edit for direct input: 139 // ----- place the line edit for direct input:
140 sizes[0]=lineDate->sizeHint(); 140 sizes[0]=lineDate->sizeHint();
141 //line->setGeometry(0, height()-sizes[0].height(), width(), sizes[0].height()); 141 //line->setGeometry(0, height()-sizes[0].height(), width(), sizes[0].height());
142 int todaywid = todayBut->sizeHint().width(); 142 int todaywid = todayBut->sizeHint().width();
143todayBut->setGeometry(0, height()-sizes[0].height(),todaywid, sizes[0].height()); 143todayBut->setGeometry(0, height()-sizes[0].height(),todaywid, sizes[0].height());
144 lineDate->setGeometry(0+todaywid, height()-sizes[0].height(), width()-todaywid, sizes[0].height()); 144 lineDate->setGeometry(0+todaywid, height()-sizes[0].height(), width()-todaywid, sizes[0].height());
145 // ----- adjust the table: 145 // ----- adjust the table:
146 table->setGeometry(0, buttonHeight, width(), 146 table->setGeometry(0, buttonHeight, width(),
147 height()-buttonHeight-sizes[0].height()); 147 height()-buttonHeight-sizes[0].height());
148} 148}
149 149
150void 150void
151KDatePicker::dateChangedSlot(QDate date) 151KDatePicker::dateChangedSlot(QDate date)
152{ 152{
153 lineDate->setDate( date );//(KGlobal::locale()->formatDate(date, true)); 153 lineDate->setDate( date );//(KGlobal::locale()->formatDate(date, true));
154 //line->setText(KGlobal::locale()->formatDate(date, true)); 154 //line->setText(KGlobal::locale()->formatDate(date, true));
155 QString temp;
156 selectMonth->setText(KGlobal::locale()->monthName(date.month(), false));
157 temp.setNum(date.year());
158 selectYear->setText(temp);
155 emit(dateChanged(date)); 159 emit(dateChanged(date));
156} 160}
157 161
158void 162void
159KDatePicker::tableClickedSlot() 163KDatePicker::tableClickedSlot()
160{ 164{
161 165
162 emit(dateSelected(table->getDate())); 166 emit(dateSelected(table->getDate()));
163 emit(tableClicked()); 167 emit(tableClicked());
164} 168}
165 169
166const QDate& 170const QDate&
167KDatePicker::getDate() const 171KDatePicker::getDate() const
168{ 172{
169 return table->getDate(); 173 return table->getDate();
170} 174}
171 175
172const QDate & 176const QDate &
173KDatePicker::date() const 177KDatePicker::date() const
174{ 178{
175 return table->getDate(); 179 return table->getDate();
176} 180}
177 181
178void KDatePicker::goToday() 182void KDatePicker::goToday()
179{ 183{
180 slotSetDate( QDate::currentDate() ); 184 slotSetDate( QDate::currentDate() );
181 185
182} 186}
183void KDatePicker::slotSetDate( QDate date ) 187void KDatePicker::slotSetDate( QDate date )
184{ 188{
185 189
186 if(date.isValid()) { 190 if(date.isValid()) {
187 QString temp; 191 QString temp;
188 // ----- 192 // -----
189 table->setDate(date); 193 table->setDate(date);
190 selectMonth->setText(KGlobal::locale()->monthName(date.month(), false)); 194 selectMonth->setText(KGlobal::locale()->monthName(date.month(), false));
191 temp.setNum(date.year()); 195 temp.setNum(date.year());
192 selectYear->setText(temp); 196 selectYear->setText(temp);
193 //line->setText(KGlobal::locale()->formatDate(date, true)); 197 //line->setText(KGlobal::locale()->formatDate(date, true));
194 lineDate->setDate( date ); 198 lineDate->setDate( date );
195 } 199 }
196 200
197} 201}
198bool 202bool
199KDatePicker::setDate(const QDate& date) 203KDatePicker::setDate(const QDate& date)
200{ 204{
201 table->setFocus(); 205 table->setFocus();
202 if(date.isValid()) { 206 if(date.isValid()) {
203 QString temp; 207 QString temp;
204 // ----- 208 // -----
205 table->setDate(date); 209 table->setDate(date);
206 selectMonth->setText(KGlobal::locale()->monthName(date.month(), false)); 210 selectMonth->setText(KGlobal::locale()->monthName(date.month(), false));
207 temp.setNum(date.year()); 211 temp.setNum(date.year());
208 selectYear->setText(temp); 212 selectYear->setText(temp);
209 //line->setText(KGlobal::locale()->formatDate(date, true)); 213 //line->setText(KGlobal::locale()->formatDate(date, true));
210 lineDate->setDate( date ); 214 lineDate->setDate( date );
211 return true; 215 return true;
212 } else { 216 } else {
213 217
214 return false; 218 return false;
215 } 219 }
216 220
217 221
218} 222}
219 223
220void 224void
221KDatePicker::monthForwardClicked() 225KDatePicker::monthForwardClicked()
222{ 226{
223 QDate temp=table->getDate(); 227 QDate temp=table->getDate();
224 int day=temp.day(); 228 int day=temp.day();
225 // ----- 229 // -----
226 if(temp.month()==12) { 230 if(temp.month()==12) {
227 temp.setYMD(temp.year()+1, 1, 1); 231 temp.setYMD(temp.year()+1, 1, 1);
228 } else { 232 } else {
229 temp.setYMD(temp.year(), temp.month()+1, 1); 233 temp.setYMD(temp.year(), temp.month()+1, 1);
230 } 234 }
231 if(temp.daysInMonth()<day) { 235 if(temp.daysInMonth()<day) {
232 temp.setYMD(temp.year(), temp.month(), temp.daysInMonth()); 236 temp.setYMD(temp.year(), temp.month(), temp.daysInMonth());
233 } else { 237 } else {
234 temp.setYMD(temp.year(), temp.month(), day); 238 temp.setYMD(temp.year(), temp.month(), day);
235 } 239 }
236 // assert(temp.isValid()); 240 // assert(temp.isValid());
237 setDate(temp); 241 setDate(temp);
238} 242}
239 243
240void 244void
241KDatePicker::monthBackwardClicked() 245KDatePicker::monthBackwardClicked()
242{ 246{
243 QDate temp=table->getDate(); 247 QDate temp=table->getDate();
244 int day=temp.day(); 248 int day=temp.day();
245 // ----- 249 // -----
246 if(temp.month()==1) 250 if(temp.month()==1)
247 { 251 {
248 temp.setYMD(temp.year()-1, 12, 1); 252 temp.setYMD(temp.year()-1, 12, 1);
249 } else { 253 } else {
250 temp.setYMD(temp.year(), temp.month()-1, 1); 254 temp.setYMD(temp.year(), temp.month()-1, 1);
251 } 255 }
252 if(temp.daysInMonth()<day) 256 if(temp.daysInMonth()<day)
253 { 257 {
254 temp.setYMD(temp.year(), temp.month(), temp.daysInMonth()); 258 temp.setYMD(temp.year(), temp.month(), temp.daysInMonth());
255 } else { 259 } else {
256 temp.setYMD(temp.year(), temp.month(), day); 260 temp.setYMD(temp.year(), temp.month(), day);
257 } 261 }
258 // assert(temp.isValid()); 262 // assert(temp.isValid());
259 setDate(temp); 263 setDate(temp);
260} 264}
261 265
262void 266void
263KDatePicker::yearForwardClicked() 267KDatePicker::yearForwardClicked()
264{ 268{
265 QDate temp=table->getDate(); 269 QDate temp=table->getDate();
266 int day=temp.day(); 270 int day=temp.day();
267 // ----- 271 // -----
268 temp.setYMD(temp.year()+1, temp.month(), 1); 272 temp.setYMD(temp.year()+1, temp.month(), 1);
269 if(temp.daysInMonth()<day) 273 if(temp.daysInMonth()<day)
270 { 274 {
271 temp.setYMD(temp.year(), temp.month(), temp.daysInMonth()); 275 temp.setYMD(temp.year(), temp.month(), temp.daysInMonth());
272 } else { 276 } else {
273 temp.setYMD(temp.year(), temp.month(), day); 277 temp.setYMD(temp.year(), temp.month(), day);
274 } 278 }
275 // assert(temp.isValid()); 279 // assert(temp.isValid());
276 setDate(temp); 280 setDate(temp);
277} 281}
278 282
279void 283void
280KDatePicker::yearBackwardClicked() 284KDatePicker::yearBackwardClicked()
281{ 285{
282 QDate temp=table->getDate(); 286 QDate temp=table->getDate();
283 int day=temp.day(); 287 int day=temp.day();
284 // ----- 288 // -----
285 temp.setYMD(temp.year()-1, temp.month(), 1); 289 temp.setYMD(temp.year()-1, temp.month(), 1);
286 if(temp.daysInMonth()<day) 290 if(temp.daysInMonth()<day)
287 { 291 {
288 temp.setYMD(temp.year(), temp.month(), temp.daysInMonth()); 292 temp.setYMD(temp.year(), temp.month(), temp.daysInMonth());
289 } else { 293 } else {
290 temp.setYMD(temp.year(), temp.month(), day); 294 temp.setYMD(temp.year(), temp.month(), day);
291 } 295 }
292 // assert(temp.isValid()); 296 // assert(temp.isValid());
293 setDate(temp); 297 setDate(temp);
294} 298}
295 299
296void 300void
297KDatePicker::selectMonthClicked() 301KDatePicker::selectMonthClicked()
298{ 302{
299 int month; 303 int month;
300 KPopupFrame* popup = new KPopupFrame(this); 304 KPopupFrame* popup = new KPopupFrame(this);
301 KDateInternalMonthPicker* picker = new KDateInternalMonthPicker(popup); 305 KDateInternalMonthPicker* picker = new KDateInternalMonthPicker(popup);
302 // ----- 306 // -----
303 picker->resize(picker->sizeHint()); 307 picker->resize(picker->sizeHint());
304 popup->setMainWidget(picker); 308 popup->setMainWidget(picker);
305 picker->setFocus(); 309 picker->setFocus();
306 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 310 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
307 if(popup->exec(selectMonth->mapToGlobal(QPoint(0, selectMonth->height())))) 311 if(popup->exec(selectMonth->mapToGlobal(QPoint(0, selectMonth->height()))))
308 { 312 {
309 QDate date; 313 QDate date;
310 int day; 314 int day;
311 // ----- 315 // -----
312 month=picker->getResult(); 316 month=picker->getResult();
313 date=table->getDate(); 317 date=table->getDate();
314 day=date.day(); 318 day=date.day();
315 // ----- construct a valid date in this month: 319 // ----- construct a valid date in this month:
316 date.setYMD(date.year(), month, 1); 320 date.setYMD(date.year(), month, 1);
317 date.setYMD(date.year(), month, QMIN(day, date.daysInMonth())); 321 date.setYMD(date.year(), month, QMIN(day, date.daysInMonth()));
318 // ----- set this month 322 // ----- set this month
319 setDate(date); 323 setDate(date);
320 } else { 324 } else {
321 KNotifyClient::beep(); 325 KNotifyClient::beep();
322 } 326 }
323 delete popup; 327 delete popup;
324} 328}
325 329
326void 330void
327KDatePicker::selectYearClicked() 331KDatePicker::selectYearClicked()
328{ 332{
329 int year; 333 int year;
330 KPopupFrame* popup = new KPopupFrame(this); 334 KPopupFrame* popup = new KPopupFrame(this);
331 KDateInternalYearSelector* picker = new KDateInternalYearSelector(fontsize, popup); 335 KDateInternalYearSelector* picker = new KDateInternalYearSelector(fontsize, popup);
332 // ----- 336 // -----
333 picker->resize(picker->sizeHint()); 337 picker->resize(picker->sizeHint());
334 popup->setMainWidget(picker); 338 popup->setMainWidget(picker);
335 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 339 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
336 picker->setFocus(); 340 picker->setFocus();
337 if(popup->exec(selectYear->mapToGlobal(QPoint(0, selectMonth->height())))) 341 if(popup->exec(selectYear->mapToGlobal(QPoint(0, selectMonth->height()))))
338 { 342 {
339 QDate date; 343 QDate date;
340 int day; 344 int day;
341 // ----- 345 // -----
342 year=picker->getYear(); 346 year=picker->getYear();
343 date=table->getDate(); 347 date=table->getDate();
344 day=date.day(); 348 day=date.day();
345 // ----- construct a valid date in this month: 349 // ----- construct a valid date in this month:
346 date.setYMD(year, date.month(), 1); 350 date.setYMD(year, date.month(), 1);
347 date.setYMD(year, date.month(), QMIN(day, date.daysInMonth())); 351 date.setYMD(year, date.month(), QMIN(day, date.daysInMonth()));
348 // ----- set this month 352 // ----- set this month
349 setDate(date); 353 setDate(date);
350 } else { 354 } else {
351 KNotifyClient::beep(); 355 KNotifyClient::beep();
352 } 356 }
353 delete popup; 357 delete popup;
354} 358}
355 359
356void 360void
357KDatePicker::setEnabled(bool enable) 361KDatePicker::setEnabled(bool enable)
358{ 362{
359 QWidget *widgets[]= { 363 QWidget *widgets[]= {
360 yearForward, yearBackward, monthForward, monthBackward, 364 yearForward, yearBackward, monthForward, monthBackward,
361 selectMonth, selectYear, 365 selectMonth, selectYear,
362 lineDate, table }; 366 lineDate, table };
363 const int Size=sizeof(widgets)/sizeof(widgets[0]); 367 const int Size=sizeof(widgets)/sizeof(widgets[0]);
364 int count; 368 int count;
365 // ----- 369 // -----
366 for(count=0; count<Size; ++count) 370 for(count=0; count<Size; ++count)
367 { 371 {
368 widgets[count]->setEnabled(enable); 372 widgets[count]->setEnabled(enable);
369 } 373 }
370} 374}
371 375
372void 376void
373KDatePicker::lineEnterPressed() 377KDatePicker::lineEnterPressed()
374{ 378{
375 QDate temp; 379 QDate temp;
376 // ----- 380 // -----
377 temp = lineDate->date(); 381 temp = lineDate->date();
378 //if(val->date(line->text(), temp)==QValidator::Acceptable) 382 //if(val->date(line->text(), temp)==QValidator::Acceptable)
379 //{ 383 //{
380 emit(dateEntered(temp)); 384 emit(dateEntered(temp));
381 setDate(temp); 385 setDate(temp);
382 // } else { 386 // } else {
383// KNotifyClient::beep(); 387// KNotifyClient::beep();
384// } 388// }
385} 389}
386 390
387QSize 391QSize
388KDatePicker::sizeHint() const 392KDatePicker::sizeHint() const
389{ 393{
390 QSize tableSize=table->sizeHint(); 394 QSize tableSize=table->sizeHint();
391 QWidget *buttons[]={ 395 QWidget *buttons[]={
392 yearBackward, 396 yearBackward,
393 monthBackward, 397 monthBackward,
394 selectMonth, 398 selectMonth,
395 selectYear, 399 selectYear,
396 monthForward, 400 monthForward,
397 yearForward }; 401 yearForward };
398 const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]); 402 const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]);
399 QSize sizes[NoOfButtons]; 403 QSize sizes[NoOfButtons];
400 int cx=0, cy=0, count; 404 int cx=0, cy=0, count;
401 // ----- store the size hints: 405 // ----- store the size hints:
402 for(count=0; count<NoOfButtons; ++count) 406 for(count=0; count<NoOfButtons; ++count)
403 { 407 {
404 sizes[count]=buttons[count]->sizeHint(); 408 sizes[count]=buttons[count]->sizeHint();
405 if(buttons[count]==selectMonth) 409 if(buttons[count]==selectMonth)
406 { 410 {
407 cx+=maxMonthRect.width()+15; 411 cx+=maxMonthRect.width()+15;
408 } else { 412 } else {
409 cx+=sizes[count].width()+15; 413 cx+=sizes[count].width()+15;
410 } 414 }
411 cy=QMAX(sizes[count].height(), cy); 415 cy=QMAX(sizes[count].height(), cy);
412 } 416 }
413 // ----- calculate width hint: 417 // ----- calculate width hint:
414 cx=QMAX(cx, tableSize.width()); // line edit ignored 418 cx=QMAX(cx, tableSize.width()); // line edit ignored
415 if ( cx > QApplication::desktop()->width() -5 ) 419 if ( cx > QApplication::desktop()->width() -5 )
416 cx = QApplication::desktop()->width() -5; 420 cx = QApplication::desktop()->width() -5;
417 // ----- calculate height hint: 421 // ----- calculate height hint:
418 cy+=tableSize.height()+lineDate->sizeHint().height(); 422 cy+=tableSize.height()+lineDate->sizeHint().height();
419 423
420 return QSize(cx, cy); 424 return QSize(cx, cy);
421} 425}
422 426
423void 427void
424KDatePicker::setFontSize(int s) 428KDatePicker::setFontSize(int s)
425{ 429{
426 QWidget *buttons[]= { 430 QWidget *buttons[]= {
427 // yearBackward, 431 // yearBackward,
428 // monthBackward, 432 // monthBackward,
429 selectMonth, 433 selectMonth,
430 selectYear, 434 selectYear,
431 // monthForward, 435 // monthForward,
432 // yearForward 436 // yearForward
433 }; 437 };
434 const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]); 438 const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]);
435 int count; 439 int count;
436 QFont font; 440 QFont font;
437 QRect r; 441 QRect r;
438 // ----- 442 // -----
439 fontsize=s; 443 fontsize=s;
440 for(count=0; count<NoOfButtons; ++count) 444 for(count=0; count<NoOfButtons; ++count)
441 { 445 {
442 font=buttons[count]->font(); 446 font=buttons[count]->font();
443 font.setPointSize(s); 447 font.setPointSize(s);
444 buttons[count]->setFont(font); 448 buttons[count]->setFont(font);
445 } 449 }
446 QFontMetrics metrics(selectMonth->fontMetrics()); 450 QFontMetrics metrics(selectMonth->fontMetrics());
447 for(int i=1; i <= 12; ++i) 451 for(int i=1; i <= 12; ++i)
448 { // maxMonthRect is used by sizeHint() 452 { // maxMonthRect is used by sizeHint()
449 r=metrics.boundingRect(KGlobal::locale()->monthName(i, false)); 453 r=metrics.boundingRect(KGlobal::locale()->monthName(i, false));
450 maxMonthRect.setWidth(QMAX(r.width(), maxMonthRect.width())); 454 maxMonthRect.setWidth(QMAX(r.width(), maxMonthRect.width()));
451 maxMonthRect.setHeight(QMAX(r.height(), maxMonthRect.height())); 455 maxMonthRect.setHeight(QMAX(r.height(), maxMonthRect.height()));
452 } 456 }
453 table->setFontSize(s); 457 table->setFontSize(s);
454} 458}
455 459
456void KDatePicker::virtual_hook( int id, void* data ) 460void KDatePicker::virtual_hook( int id, void* data )
457{ /*BASE::virtual_hook( id, data );*/ } 461{ /*BASE::virtual_hook( id, data );*/ }
458 462
459void KDatePicker::keyPressEvent ( QKeyEvent * e ) 463void KDatePicker::keyPressEvent ( QKeyEvent * e )
460{ 464{
461 switch ( e->key() ) { 465 switch ( e->key() ) {
462 case Qt::Key_Right: 466 case Qt::Key_Right:
463 monthForwardClicked(); 467 monthForwardClicked();
464 break; 468 break;
465 case Qt::Key_Left: 469 case Qt::Key_Left:
466 monthBackwardClicked(); 470 monthBackwardClicked();
467 break; 471 break;
468 472
469 case Qt::Key_Down: 473 case Qt::Key_Down:
470 yearForwardClicked(); 474 yearForwardClicked();
471 475
472 break; 476 break;
473 477
474 case Qt::Key_Up: 478 case Qt::Key_Up:
475 yearBackwardClicked(); 479 yearBackwardClicked();
476 break; 480 break;
477 481
482 case Qt::Key_T:
483 goToday();
484 break;
485
478 case Qt::Key_Return: 486 case Qt::Key_Return:
479 case Qt::Key_Enter: 487 case Qt::Key_Enter:
480 case Qt::Key_Space: 488 case Qt::Key_Space:
481 tableClickedSlot(); 489 tableClickedSlot();
482 break; 490 break;
483 case Qt::Key_Escape: 491 case Qt::Key_Escape:
484 e->ignore(); 492 e->ignore();
485 break; 493 break;
486 default: 494 default:
487 break; 495 break;
488 } 496 }
489 497
490} 498}
diff --git a/microkde/kdatetbl.cpp b/microkde/kdatetbl.cpp
index 4271b55..353f78d 100644
--- a/microkde/kdatetbl.cpp
+++ b/microkde/kdatetbl.cpp
@@ -1,944 +1,932 @@
1/* -*- C++ -*- 1/* -*- C++ -*-
2 This file is part of the KDE libraries 2 This file is part of the KDE libraries
3 Copyright (C) 1997 Tim D. Gilman (tdgilman@best.org) 3 Copyright (C) 1997 Tim D. Gilman (tdgilman@best.org)
4 (C) 1998-2001 Mirko Boehm (mirko@kde.org) 4 (C) 1998-2001 Mirko Boehm (mirko@kde.org)
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/////////////////// KDateTable widget class ////////////////////// 21/////////////////// KDateTable widget class //////////////////////
22// 22//
23// Copyright (C) 1997 Tim D. Gilman 23// Copyright (C) 1997 Tim D. Gilman
24// (C) 1998-2001 Mirko Boehm 24// (C) 1998-2001 Mirko Boehm
25// Written using Qt (http://www.troll.no) for the 25// Written using Qt (http://www.troll.no) for the
26// KDE project (http://www.kde.org) 26// KDE project (http://www.kde.org)
27// 27//
28// This is a support class for the KDatePicker class. It just 28// This is a support class for the KDatePicker class. It just
29// draws the calender table without titles, but could theoretically 29// draws the calender table without titles, but could theoretically
30// be used as a standalone. 30// be used as a standalone.
31// 31//
32// When a date is selected by the user, it emits a signal: 32// When a date is selected by the user, it emits a signal:
33// dateSelected(QDate) 33// dateSelected(QDate)
34 34
35#include <kglobal.h> 35#include <kglobal.h>
36#include <kglobalsettings.h> 36#include <kglobalsettings.h>
37#include <kapplication.h> 37#include <kapplication.h>
38#include <klocale.h> 38#include <klocale.h>
39#include <kdebug.h> 39#include <kdebug.h>
40#include <knotifyclient.h> 40#include <knotifyclient.h>
41#include "kdatetbl.h" 41#include "kdatetbl.h"
42#include <qdatetime.h> 42#include <qdatetime.h>
43#include <qstring.h> 43#include <qstring.h>
44#include <qpen.h> 44#include <qpen.h>
45#include <qpainter.h> 45#include <qpainter.h>
46#include <qdialog.h> 46#include <qdialog.h>
47#include <assert.h> 47#include <assert.h>
48#include <qapplication.h> 48#include <qapplication.h>
49 49
50KDateValidator::KDateValidator(QWidget* parent, const char* name) 50KDateValidator::KDateValidator(QWidget* parent, const char* name)
51 : QValidator(parent, name) 51 : QValidator(parent, name)
52{ 52{
53} 53}
54 54
55QValidator::State 55QValidator::State
56KDateValidator::validate(QString& text, int&) const 56KDateValidator::validate(QString& text, int&) const
57{ 57{
58 QDate temp; 58 QDate temp;
59 // ----- everything is tested in date(): 59 // ----- everything is tested in date():
60 return date(text, temp); 60 return date(text, temp);
61} 61}
62 62
63QValidator::State 63QValidator::State
64KDateValidator::date(const QString& text, QDate& d) const 64KDateValidator::date(const QString& text, QDate& d) const
65{ 65{
66 QDate tmp = KGlobal::locale()->readDate(text); 66 QDate tmp = KGlobal::locale()->readDate(text);
67 if (!tmp.isNull()) 67 if (!tmp.isNull())
68 { 68 {
69 d = tmp; 69 d = tmp;
70 return Acceptable; 70 return Acceptable;
71 } else 71 } else
72 return Valid; 72 return Valid;
73} 73}
74 74
75void 75void
76KDateValidator::fixup( QString& ) const 76KDateValidator::fixup( QString& ) const
77{ 77{
78 78
79} 79}
80 80
81KDateTable::KDateTable(QWidget *parent, QDate date_, const char* name, WFlags f) 81KDateTable::KDateTable(QWidget *parent, QDate date_, const char* name, WFlags f)
82 : QGridView(parent, name, f) 82 : QGridView(parent, name, f)
83{ 83{
84 setFont( KGlobalSettings::generalFont() ); 84 setFont( KGlobalSettings::generalFont() );
85 if(!date_.isValid()) 85 if(!date_.isValid())
86 { 86 {
87 date_=QDate::currentDate(); 87 date_=QDate::currentDate();
88 } 88 }
89 setFocusPolicy( QWidget::StrongFocus ); 89 setFocusPolicy( QWidget::StrongFocus );
90 setNumRows(7); // 6 weeks max + headline 90 setNumRows(7); // 6 weeks max + headline
91 setNumCols(7); // 7 days a week 91 setNumCols(7); // 7 days a week
92 setHScrollBarMode(AlwaysOff); 92 setHScrollBarMode(AlwaysOff);
93 setVScrollBarMode(AlwaysOff); 93 setVScrollBarMode(AlwaysOff);
94 viewport()->setBackgroundColor(QColor(220,245,255)); 94 viewport()->setBackgroundColor(QColor(220,245,255));
95#if 0 95#if 0
96 viewport()->setEraseColor(lightGray); 96 viewport()->setEraseColor(lightGray);
97#endif 97#endif
98 mMarkCurrent = false; 98 mMarkCurrent = false;
99 setDate(date_); // this initializes firstday, numdays, numDaysPrevMonth 99 setDate(date_); // this initializes firstday, numdays, numDaysPrevMonth
100} 100}
101 101
102void 102void
103KDateTable::paintCell(QPainter *painter, int row, int col) 103KDateTable::paintCell(QPainter *painter, int row, int col)
104{ 104{
105 QRect rect; 105 QRect rect;
106 QString text; 106 QString text;
107 QPen pen; 107 QPen pen;
108 int w=cellWidth(); 108 int w=cellWidth();
109 int h=cellHeight(); 109 int h=cellHeight();
110 int pos; 110 int pos;
111 QBrush brushBlue(blue); 111 QBrush brushBlue(blue);
112 QBrush brushLightblue(QColor(220,245,255)); 112 QBrush brushLightblue(QColor(220,245,255));
113 QFont _font=font(); 113 QFont _font=font();
114 // ----- 114 // -----
115 if(row==0) 115 if(row==0)
116 { // we are drawing the headline 116 { // we are drawing the headline
117 _font.setBold(true); 117 _font.setBold(true);
118 painter->setFont(_font); 118 painter->setFont(_font);
119 bool normalday = true; 119 bool normalday = true;
120 QString daystr; 120 QString daystr;
121 if (KGlobal::locale()->weekStartsMonday()) 121 if (KGlobal::locale()->weekStartsMonday())
122 { 122 {
123 daystr = KGlobal::locale()->weekDayName(col+1, true); 123 daystr = KGlobal::locale()->weekDayName(col+1, true);
124 if (col == 5 || col == 6) 124 if (col == 5 || col == 6)
125 normalday = false; 125 normalday = false;
126 } else { 126 } else {
127 daystr = KGlobal::locale()->weekDayName(col==0? 7 : col, true); 127 daystr = KGlobal::locale()->weekDayName(col==0? 7 : col, true);
128 if (col == 0 || col == 6) 128 if (col == 0 || col == 6)
129 normalday = false; 129 normalday = false;
130 } 130 }
131 if (!normalday) 131 if (!normalday)
132 { 132 {
133 painter->setPen(QColor(220,245,255)); 133 painter->setPen(QColor(220,245,255));
134 painter->setBrush(brushLightblue); 134 painter->setBrush(brushLightblue);
135 painter->drawRect(0, 0, w, h); 135 painter->drawRect(0, 0, w, h);
136 painter->setPen(blue); 136 painter->setPen(blue);
137 } else { 137 } else {
138 painter->setPen(blue); 138 painter->setPen(blue);
139 painter->setBrush(brushBlue); 139 painter->setBrush(brushBlue);
140 painter->drawRect(0, 0, w, h); 140 painter->drawRect(0, 0, w, h);
141 painter->setPen(white); 141 painter->setPen(white);
142 } 142 }
143 painter->drawText(0, 0, w, h-1, AlignCenter, 143 painter->drawText(0, 0, w, h-1, AlignCenter,
144 daystr, -1, &rect); 144 daystr, -1, &rect);
145 painter->setPen(black); 145 painter->setPen(black);
146 painter->moveTo(0, h-1); 146 painter->moveTo(0, h-1);
147 painter->lineTo(w-1, h-1); 147 painter->lineTo(w-1, h-1);
148 // ----- draw the weekday: 148 // ----- draw the weekday:
149 } else { 149 } else {
150 painter->setFont(_font); 150 painter->setFont(_font);
151 pos=7*(row-1)+col; 151 pos=7*(row-1)+col;
152 if (KGlobal::locale()->weekStartsMonday()) 152 if (KGlobal::locale()->weekStartsMonday())
153 pos++; 153 pos++;
154 if(pos<firstday || (firstday+numdays<=pos)) 154 if(pos<firstday || (firstday+numdays<=pos))
155 { // we are either 155 { // we are either
156 // ° painting a day of the previous month or 156 // ° painting a day of the previous month or
157 // ° painting a day of the following month 157 // ° painting a day of the following month
158 if(pos<firstday) 158 if(pos<firstday)
159 { // previous month 159 { // previous month
160 text.setNum(numDaysPrevMonth+pos-firstday+1); 160 text.setNum(numDaysPrevMonth+pos-firstday+1);
161 } else { // following month 161 } else { // following month
162 text.setNum(pos-firstday-numdays+1); 162 text.setNum(pos-firstday-numdays+1);
163 } 163 }
164 painter->setPen(gray); 164 painter->setPen(gray);
165 } else { // paint a day of the current month 165 } else { // paint a day of the current month
166 text.setNum(pos-firstday+1); 166 text.setNum(pos-firstday+1);
167 painter->setPen(black); 167 painter->setPen(black);
168 } 168 }
169 169
170 pen=painter->pen(); 170 pen=painter->pen();
171 if(firstday+date.day()-1==pos) 171 if(firstday+date.day()-1==pos)
172 { 172 {
173 if(mMarkCurrent && firstday+QDate::currentDate().day()-1==pos) 173 if(mMarkCurrent && firstday+QDate::currentDate().day()-1==pos)
174 painter->setPen(green); 174 painter->setPen(green);
175 else 175 else
176 painter->setPen(red); 176 painter->setPen(red);
177 if(hasFocus()) 177 if(hasFocus())
178 { 178 {
179 painter->setBrush(darkRed); 179 painter->setBrush(darkRed);
180 pen=white; 180 pen=white;
181 } else { 181 } else {
182 painter->setBrush(darkGray); 182 painter->setBrush(darkGray);
183 pen=white; 183 pen=white;
184 } 184 }
185 } else { 185 } else {
186 if(mMarkCurrent && firstday+QDate::currentDate().day()-1==pos) 186 if(mMarkCurrent && firstday+QDate::currentDate().day()-1==pos)
187 { 187 {
188 painter->setPen(green); 188 painter->setPen(green);
189 painter->setBrush(darkGreen); 189 painter->setBrush(darkGreen);
190 pen=white; 190 pen=white;
191 } else { 191 } else {
192 painter->setBrush(QColor(220,245,255)); 192 painter->setBrush(QColor(220,245,255));
193 painter->setPen(QColor(220,245,255)); 193 painter->setPen(QColor(220,245,255));
194 } 194 }
195 } 195 }
196 painter->drawRect(0, 0, w, h); 196 painter->drawRect(0, 0, w, h);
197 painter->setPen(pen); 197 painter->setPen(pen);
198 painter->drawText(0, 0, w, h, AlignCenter, text, -1, &rect); 198 painter->drawText(0, 0, w, h, AlignCenter, text, -1, &rect);
199 } 199 }
200 /* 200 /*
201 if(rect.width()>maxCell.width()) maxCell.setWidth(rect.width()); 201 if(rect.width()>maxCell.width()) maxCell.setWidth(rect.width());
202 if(rect.height()>maxCell.height()) { 202 if(rect.height()>maxCell.height()) {
203 maxCell.setHeight(rect.height()); 203 maxCell.setHeight(rect.height());
204 } 204 }
205 */ 205 */
206} 206}
207 207
208void 208void
209KDateTable::keyPressEvent( QKeyEvent *e ) 209KDateTable::keyPressEvent( QKeyEvent *e )
210{ 210{
211 /* 211 /*
212 // not working properly 212 // not working properly
213 if ( e->key() == Qt::Key_Prior ) { 213 if ( e->key() == Qt::Key_Prior ) {
214 if ( date.month() == 1 ) { 214 if ( date.month() == 1 ) {
215 KNotifyClient::beep(); 215 KNotifyClient::beep();
216 return; 216 return;
217 } 217 }
218 int day = date.day(); 218 int day = date.day();
219 if ( day > 27 ) 219 if ( day > 27 )
220 while ( !QDate::isValid( date.year(), date.month()-1, day ) ) 220 while ( !QDate::isValid( date.year(), date.month()-1, day ) )
221 day--; 221 day--;
222 setDate(QDate(date.year(), date.month()-1, day)); 222 setDate(QDate(date.year(), date.month()-1, day));
223 return; 223 return;
224 } 224 }
225 if ( e->key() == Qt::Key_Next ) { 225 if ( e->key() == Qt::Key_Next ) {
226 if ( date.month() == 12 ) { 226 if ( date.month() == 12 ) {
227 KNotifyClient::beep(); 227 KNotifyClient::beep();
228 return; 228 return;
229 } 229 }
230 int day = date.day(); 230 int day = date.day();
231 if ( day > 27 ) 231 if ( day > 27 )
232 while ( !QDate::isValid( date.year(), date.month()+1, day ) ) 232 while ( !QDate::isValid( date.year(), date.month()+1, day ) )
233 day--; 233 day--;
234 setDate(QDate(date.year(), date.month()+1, day)); 234 setDate(QDate(date.year(), date.month()+1, day));
235 return; 235 return;
236 } 236 }
237 */ 237 */
238 int dayoff = KGlobal::locale()->weekStartsMonday() ? 1 : 0; 238 int dayoff = KGlobal::locale()->weekStartsMonday() ? 1 : 0;
239 239
240 int temp=firstday+date.day()-dayoff; 240 int temp=firstday+date.day()-dayoff;
241 int pos = temp; 241 int pos = temp;
242 bool irgnore = true; 242 bool irgnore = true;
243 int add = 0;
243 if ( e->state() != Qt::ControlButton ) { 244 if ( e->state() != Qt::ControlButton ) {
244 if ( e->key() == Qt::Key_Up ) { 245 if ( e->key() == Qt::Key_Up ) {
245 pos -= 7; 246 add -= 7;
246 irgnore = false; 247 irgnore = false;
247 } 248 }
248 if ( e->key() == Qt::Key_Down ) { 249 if ( e->key() == Qt::Key_Down ) {
249 pos += 7; 250 add += 7;
250 irgnore = false; 251 irgnore = false;
251 } 252 }
252 if ( e->key() == Qt::Key_Left ) { 253 if ( e->key() == Qt::Key_Left ) {
253 pos--; 254 --add;
254 irgnore = false; 255 irgnore = false;
255 } 256 }
256 if ( e->key() == Qt::Key_Right ) { 257 if ( e->key() == Qt::Key_Right ) {
257 pos++; 258 ++add;
258 irgnore = false; 259 irgnore = false;
259 } 260 }
260 } 261 }
261 if ( irgnore ) 262 if ( irgnore ) {
262 e->ignore(); 263 e->ignore();
263
264 if(pos+dayoff<=firstday)
265 { // this day is in the previous month
266 KNotifyClient::beep();
267 return;
268 }
269 if(firstday+numdays<pos+dayoff)
270 { // this date is in the next month
271 KNotifyClient::beep(i18n( "Month not long enough" ));
272 return;
273 }
274
275 if ( pos == temp )
276 return; 264 return;
265 }
277 266
278 setDate(QDate(date.year(), date.month(), pos-firstday+dayoff)); 267 pos += add;
268 setDate(date.addDays( add ));
279 updateCell(temp/7+1, temp%7); // Update the previously selected cell 269 updateCell(temp/7+1, temp%7); // Update the previously selected cell
280 updateCell(pos/7+1, pos%7); // Update the selected cell 270 updateCell(pos/7+1, pos%7); // Update the selected cell
281 assert(QDate(date.year(), date.month(), pos-firstday+dayoff).isValid()); 271
282
283
284} 272}
285 273
286void 274void
287KDateTable::viewportResizeEvent(QResizeEvent * e) 275KDateTable::viewportResizeEvent(QResizeEvent * e)
288{ 276{
289 QGridView::viewportResizeEvent(e); 277 QGridView::viewportResizeEvent(e);
290 278
291 setCellWidth(viewport()->width()/7); 279 setCellWidth(viewport()->width()/7);
292 setCellHeight(viewport()->height()/7); 280 setCellHeight(viewport()->height()/7);
293} 281}
294 282
295void 283void
296KDateTable::setFontSize(int size) 284KDateTable::setFontSize(int size)
297{ 285{
298 int count; 286 int count;
299 QRect rect; 287 QRect rect;
300 // ----- store rectangles: 288 // ----- store rectangles:
301 fontsize=size; 289 fontsize=size;
302 QFont _font = font(); 290 QFont _font = font();
303 _font.setPointSize(fontsize); 291 _font.setPointSize(fontsize);
304 setFont( _font ); 292 setFont( _font );
305 _font.setBold( true ); 293 _font.setBold( true );
306 QFontMetrics metrics(_font); 294 QFontMetrics metrics(_font);
307 295
308 // ----- find largest day name: 296 // ----- find largest day name:
309 maxCell.setWidth(0); 297 maxCell.setWidth(0);
310 maxCell.setHeight(0); 298 maxCell.setHeight(0);
311 for(count=0; count<7; ++count) 299 for(count=0; count<7; ++count)
312 { 300 {
313 rect=metrics.boundingRect(KGlobal::locale()->weekDayName(count+1, true)); 301 rect=metrics.boundingRect(KGlobal::locale()->weekDayName(count+1, true));
314 maxCell.setWidth(QMAX(maxCell.width(), rect.width())); 302 maxCell.setWidth(QMAX(maxCell.width(), rect.width()));
315 maxCell.setHeight(QMAX(maxCell.height(), rect.height())); 303 maxCell.setHeight(QMAX(maxCell.height(), rect.height()));
316 } 304 }
317 // ----- compare with a real wide number and add some space: 305 // ----- compare with a real wide number and add some space:
318 rect=metrics.boundingRect(QString::fromLatin1("88")); 306 rect=metrics.boundingRect(QString::fromLatin1("88"));
319 maxCell.setWidth(QMAX(maxCell.width()+2, rect.width())); 307 maxCell.setWidth(QMAX(maxCell.width()+2, rect.width()));
320#ifdef DESKTOP_VERSION 308#ifdef DESKTOP_VERSION
321 maxCell.setHeight(QMAX(maxCell.height()+8, rect.height())); 309 maxCell.setHeight(QMAX(maxCell.height()+8, rect.height()));
322#else 310#else
323 maxCell.setHeight(QMAX(maxCell.height()+4, rect.height())); 311 maxCell.setHeight(QMAX(maxCell.height()+4, rect.height()));
324#endif 312#endif
325 if ( maxCell.width() * 1000 / maxCell.height() > 1900 ) { 313 if ( maxCell.width() * 1000 / maxCell.height() > 1900 ) {
326 maxCell.setHeight(maxCell.width() * 1000 / 1900 ); 314 maxCell.setHeight(maxCell.width() * 1000 / 1900 );
327 //qDebug("setmax "); 315 //qDebug("setmax ");
328 } 316 }
329} 317}
330 318
331void 319void
332KDateTable::contentsMousePressEvent(QMouseEvent *e) 320KDateTable::contentsMousePressEvent(QMouseEvent *e)
333{ 321{
334 if(e->type()!=QEvent::MouseButtonPress) 322 if(e->type()!=QEvent::MouseButtonPress)
335 { // the KDatePicker only reacts on mouse press events: 323 { // the KDatePicker only reacts on mouse press events:
336 return; 324 return;
337 } 325 }
338 if(!isEnabled()) 326 if(!isEnabled())
339 { 327 {
340 KNotifyClient::beep(); 328 KNotifyClient::beep();
341 return; 329 return;
342 } 330 }
343 331
344 int dayoff = KGlobal::locale()->weekStartsMonday() ? 1 : 0; 332 int dayoff = KGlobal::locale()->weekStartsMonday() ? 1 : 0;
345 // ----- 333 // -----
346 int row, col, pos, temp; 334 int row, col, pos, temp;
347 QPoint mouseCoord; 335 QPoint mouseCoord;
348 // ----- 336 // -----
349 mouseCoord = e->pos(); 337 mouseCoord = e->pos();
350 row=rowAt(mouseCoord.y()); 338 row=rowAt(mouseCoord.y());
351 col=columnAt(mouseCoord.x()); 339 col=columnAt(mouseCoord.x());
352 if(row<0 || col<0) 340 if(row<0 || col<0)
353 { // the user clicked on the frame of the table 341 { // the user clicked on the frame of the table
354 return; 342 return;
355 } 343 }
356 pos=7*(row-1)+col+1; 344 pos=7*(row-1)+col+1;
357#if 0 345#if 0
358 if(pos+dayoff<=firstday) 346 if(pos+dayoff<=firstday)
359 { // this day is in the previous month 347 { // this day is in the previous month
360 KNotifyClient::beep(); 348 KNotifyClient::beep();
361 return; 349 return;
362 } 350 }
363 if(firstday+numdays<pos+dayoff) 351 if(firstday+numdays<pos+dayoff)
364 { // this date is in the next month 352 { // this date is in the next month
365 KNotifyClient::beep(); 353 KNotifyClient::beep();
366 return; 354 return;
367 } 355 }
368#endif 356#endif
369 temp=firstday+date.day()-dayoff-1; 357 temp=firstday+date.day()-dayoff-1;
370 QDate da = QDate(date.year(), date.month(),1); 358 QDate da = QDate(date.year(), date.month(),1);
371 setDate(da.addDays( pos-firstday+dayoff-1)); 359 setDate(da.addDays( pos-firstday+dayoff-1));
372 updateCell(temp/7+1, temp%7); // Update the previously selected cell 360 updateCell(temp/7+1, temp%7); // Update the previously selected cell
373 updateCell(row, col); // Update the selected cell 361 updateCell(row, col); // Update the selected cell
374 // assert(QDate(date.year(), date.month(), pos-firstday+dayoff).isValid()); 362 // assert(QDate(date.year(), date.month(), pos-firstday+dayoff).isValid());
375 emit(tableClicked()); 363 emit(tableClicked());
376} 364}
377 365
378bool 366bool
379KDateTable::setDate(const QDate& date_) 367KDateTable::setDate(const QDate& date_)
380{ 368{
381 bool changed=false; 369 bool changed=false;
382 QDate temp; 370 QDate temp;
383 mMarkCurrent = false; 371 mMarkCurrent = false;
384 // ----- 372 // -----
385 if(!date_.isValid()) 373 if(!date_.isValid())
386 { 374 {
387 kdDebug() << "KDateTable::setDate: refusing to set invalid date." << endl; 375 kdDebug() << "KDateTable::setDate: refusing to set invalid date." << endl;
388 return false; 376 return false;
389 } 377 }
390 if(date!=date_) 378 if(date!=date_)
391 { 379 {
392 date=date_; 380 date=date_;
393 changed=true; 381 changed=true;
394 } 382 }
395 mMarkCurrent = ( date.month() == QDate::currentDate().month() && date.year() == QDate::currentDate().year() ); 383 mMarkCurrent = ( date.month() == QDate::currentDate().month() && date.year() == QDate::currentDate().year() );
396 temp.setYMD(date.year(), date.month(), 1); 384 temp.setYMD(date.year(), date.month(), 1);
397 firstday=temp.dayOfWeek(); 385 firstday=temp.dayOfWeek();
398 if(firstday==1) firstday=8; 386 if(firstday==1) firstday=8;
399 numdays=date.daysInMonth(); 387 numdays=date.daysInMonth();
400 if(date.month()==1) 388 if(date.month()==1)
401 { // set to december of previous year 389 { // set to december of previous year
402 temp.setYMD(date.year()-1, 12, 1); 390 temp.setYMD(date.year()-1, 12, 1);
403 } else { // set to previous month 391 } else { // set to previous month
404 temp.setYMD(date.year(), date.month()-1, 1); 392 temp.setYMD(date.year(), date.month()-1, 1);
405 } 393 }
406 numDaysPrevMonth=temp.daysInMonth(); 394 numDaysPrevMonth=temp.daysInMonth();
407 if(changed) 395 if(changed)
408 { 396 {
409 repaintContents(false); 397 repaintContents(false);
410 } 398 }
411 emit(dateChanged(date)); 399 emit(dateChanged(date));
412 return true; 400 return true;
413} 401}
414 402
415const QDate& 403const QDate&
416KDateTable::getDate() const 404KDateTable::getDate() const
417{ 405{
418 return date; 406 return date;
419} 407}
420 408
421void KDateTable::focusInEvent( QFocusEvent *e ) 409void KDateTable::focusInEvent( QFocusEvent *e )
422{ 410{
423 repaintContents(false); 411 repaintContents(false);
424 QGridView::focusInEvent( e ); 412 QGridView::focusInEvent( e );
425} 413}
426 414
427void KDateTable::focusOutEvent( QFocusEvent *e ) 415void KDateTable::focusOutEvent( QFocusEvent *e )
428{ 416{
429 repaintContents(false); 417 repaintContents(false);
430 QGridView::focusOutEvent( e ); 418 QGridView::focusOutEvent( e );
431} 419}
432 420
433QSize 421QSize
434KDateTable::sizeHint() const 422KDateTable::sizeHint() const
435{ 423{
436 if(maxCell.height()>0 && maxCell.width()>0) 424 if(maxCell.height()>0 && maxCell.width()>0)
437 { 425 {
438 return QSize((maxCell.width()+2)*numCols()+2*frameWidth(), 426 return QSize((maxCell.width()+2)*numCols()+2*frameWidth(),
439 (maxCell.height()+4)*numRows()+2*frameWidth()); 427 (maxCell.height()+4)*numRows()+2*frameWidth());
440 } else { 428 } else {
441 return QSize(-1, -1); 429 return QSize(-1, -1);
442 } 430 }
443} 431}
444 432
445KDateInternalMonthPicker::KDateInternalMonthPicker 433KDateInternalMonthPicker::KDateInternalMonthPicker
446(QWidget* parent, const char* name) 434(QWidget* parent, const char* name)
447 : QGridView(parent, name), 435 : QGridView(parent, name),
448 result(0) // invalid 436 result(0) // invalid
449{ 437{
450 QRect rect; 438 QRect rect;
451 QFont font; 439 QFont font;
452 // ----- 440 // -----
453 activeCol = -1; 441 activeCol = -1;
454 activeRow = -1; 442 activeRow = -1;
455 font=KGlobalSettings::generalFont(); 443 font=KGlobalSettings::generalFont();
456 int fontsize = 10; 444 int fontsize = 10;
457 int add = 2; 445 int add = 2;
458 if ( QApplication::desktop()->width() >= 480 && QApplication::desktop()->width() <= 640 ) 446 if ( QApplication::desktop()->width() >= 480 && QApplication::desktop()->width() <= 640 )
459 add += 8; 447 add += 8;
460 if ( QApplication::desktop()->width() > 640 ) 448 if ( QApplication::desktop()->width() > 640 )
461 add += 6; 449 add += 6;
462 font.setPointSize(fontsize+add); 450 font.setPointSize(fontsize+add);
463 setFont(font); 451 setFont(font);
464 setHScrollBarMode(AlwaysOff); 452 setHScrollBarMode(AlwaysOff);
465 setVScrollBarMode(AlwaysOff); 453 setVScrollBarMode(AlwaysOff);
466 setFrameStyle(QFrame::NoFrame); 454 setFrameStyle(QFrame::NoFrame);
467 setNumRows(4); 455 setNumRows(4);
468 setNumCols(3); 456 setNumCols(3);
469 // enable to find drawing failures: 457 // enable to find drawing failures:
470 // setTableFlags(Tbl_clipCellPainting); 458 // setTableFlags(Tbl_clipCellPainting);
471#if 0 459#if 0
472 viewport()->setEraseColor(lightGray); // for consistency with the datepicker 460 viewport()->setEraseColor(lightGray); // for consistency with the datepicker
473#endif 461#endif
474 // ----- find the preferred size 462 // ----- find the preferred size
475 // (this is slow, possibly, but unfortunatly it is needed here): 463 // (this is slow, possibly, but unfortunatly it is needed here):
476 QFontMetrics metrics(font); 464 QFontMetrics metrics(font);
477 for(int i=1; i <= 12; ++i) 465 for(int i=1; i <= 12; ++i)
478 { 466 {
479 rect=metrics.boundingRect(KGlobal::locale()->monthName(i, false)); 467 rect=metrics.boundingRect(KGlobal::locale()->monthName(i, false));
480 if(max.width()<rect.width()) max.setWidth(rect.width()); 468 if(max.width()<rect.width()) max.setWidth(rect.width());
481 if(max.height()<rect.height()) max.setHeight(rect.height()); 469 if(max.height()<rect.height()) max.setHeight(rect.height());
482 } 470 }
483 471
484} 472}
485 473
486QSize 474QSize
487KDateInternalMonthPicker::sizeHint() const 475KDateInternalMonthPicker::sizeHint() const
488{ 476{
489 return QSize((max.width()+6)*numCols()+2*frameWidth(), 477 return QSize((max.width()+6)*numCols()+2*frameWidth(),
490 (max.height()+6)*numRows()+2*frameWidth()); 478 (max.height()+6)*numRows()+2*frameWidth());
491} 479}
492 480
493int 481int
494KDateInternalMonthPicker::getResult() const 482KDateInternalMonthPicker::getResult() const
495{ 483{
496 return result; 484 return result;
497} 485}
498 486
499void 487void
500KDateInternalMonthPicker::setupPainter(QPainter *p) 488KDateInternalMonthPicker::setupPainter(QPainter *p)
501{ 489{
502 p->setPen(black); 490 p->setPen(black);
503} 491}
504 492
505void 493void
506KDateInternalMonthPicker::viewportResizeEvent(QResizeEvent*) 494KDateInternalMonthPicker::viewportResizeEvent(QResizeEvent*)
507{ 495{
508 setCellWidth(width()/3); 496 setCellWidth(width()/3);
509 setCellHeight(height()/4); 497 setCellHeight(height()/4);
510} 498}
511 499
512void 500void
513KDateInternalMonthPicker::paintCell(QPainter* painter, int row, int col) 501KDateInternalMonthPicker::paintCell(QPainter* painter, int row, int col)
514{ 502{
515 int index; 503 int index;
516 QString text; 504 QString text;
517 // ----- find the number of the cell: 505 // ----- find the number of the cell:
518 index=3*row+col+1; 506 index=3*row+col+1;
519 text=KGlobal::locale()->monthName(index, false); 507 text=KGlobal::locale()->monthName(index, false);
520 painter->drawText(0, 0, cellWidth(), cellHeight(), AlignCenter, text); 508 painter->drawText(0, 0, cellWidth(), cellHeight(), AlignCenter, text);
521 if ( activeCol == col && activeRow == row ) 509 if ( activeCol == col && activeRow == row )
522 painter->drawRect( 0, 0, cellWidth(), cellHeight() ); 510 painter->drawRect( 0, 0, cellWidth(), cellHeight() );
523} 511}
524 512
525void 513void
526KDateInternalMonthPicker::contentsMousePressEvent(QMouseEvent *e) 514KDateInternalMonthPicker::contentsMousePressEvent(QMouseEvent *e)
527{ 515{
528 if(!isEnabled() || e->button() != LeftButton) 516 if(!isEnabled() || e->button() != LeftButton)
529 { 517 {
530 KNotifyClient::beep(); 518 KNotifyClient::beep();
531 return; 519 return;
532 } 520 }
533 // ----- 521 // -----
534 int row, col; 522 int row, col;
535 QPoint mouseCoord; 523 QPoint mouseCoord;
536 // ----- 524 // -----
537 mouseCoord = e->pos(); 525 mouseCoord = e->pos();
538 row=rowAt(mouseCoord.y()); 526 row=rowAt(mouseCoord.y());
539 col=columnAt(mouseCoord.x()); 527 col=columnAt(mouseCoord.x());
540 528
541 if(row<0 || col<0) 529 if(row<0 || col<0)
542 { // the user clicked on the frame of the table 530 { // the user clicked on the frame of the table
543 activeCol = -1; 531 activeCol = -1;
544 activeRow = -1; 532 activeRow = -1;
545 } else { 533 } else {
546 activeCol = col; 534 activeCol = col;
547 activeRow = row; 535 activeRow = row;
548 updateCell( row, col /*, false */ ); 536 updateCell( row, col /*, false */ );
549 } 537 }
550} 538}
551 539
552void 540void
553KDateInternalMonthPicker::contentsMouseMoveEvent(QMouseEvent *e) 541KDateInternalMonthPicker::contentsMouseMoveEvent(QMouseEvent *e)
554{ 542{
555 if (e->state() & LeftButton) 543 if (e->state() & LeftButton)
556 { 544 {
557 int row, col; 545 int row, col;
558 QPoint mouseCoord; 546 QPoint mouseCoord;
559 // ----- 547 // -----
560 mouseCoord = e->pos(); 548 mouseCoord = e->pos();
561 row=rowAt(mouseCoord.y()); 549 row=rowAt(mouseCoord.y());
562 col=columnAt(mouseCoord.x()); 550 col=columnAt(mouseCoord.x());
563 int tmpRow = -1, tmpCol = -1; 551 int tmpRow = -1, tmpCol = -1;
564 if(row<0 || col<0) 552 if(row<0 || col<0)
565 { // the user clicked on the frame of the table 553 { // the user clicked on the frame of the table
566 if ( activeCol > -1 ) 554 if ( activeCol > -1 )
567 { 555 {
568 tmpRow = activeRow; 556 tmpRow = activeRow;
569 tmpCol = activeCol; 557 tmpCol = activeCol;
570 } 558 }
571 activeCol = -1; 559 activeCol = -1;
572 activeRow = -1; 560 activeRow = -1;
573 } else { 561 } else {
574 bool differentCell = (activeRow != row || activeCol != col); 562 bool differentCell = (activeRow != row || activeCol != col);
575 if ( activeCol > -1 && differentCell) 563 if ( activeCol > -1 && differentCell)
576 { 564 {
577 tmpRow = activeRow; 565 tmpRow = activeRow;
578 tmpCol = activeCol; 566 tmpCol = activeCol;
579 } 567 }
580 if ( differentCell) 568 if ( differentCell)
581 { 569 {
582 activeRow = row; 570 activeRow = row;
583 activeCol = col; 571 activeCol = col;
584 updateCell( row, col /*, false */ ); // mark the new active cell 572 updateCell( row, col /*, false */ ); // mark the new active cell
585 } 573 }
586 } 574 }
587 if ( tmpRow > -1 ) // repaint the former active cell 575 if ( tmpRow > -1 ) // repaint the former active cell
588 updateCell( tmpRow, tmpCol /*, true */ ); 576 updateCell( tmpRow, tmpCol /*, true */ );
589 } 577 }
590} 578}
591 579
592void 580void
593KDateInternalMonthPicker::contentsMouseReleaseEvent(QMouseEvent *e) 581KDateInternalMonthPicker::contentsMouseReleaseEvent(QMouseEvent *e)
594{ 582{
595 if(!isEnabled()) 583 if(!isEnabled())
596 { 584 {
597 return; 585 return;
598 } 586 }
599 // ----- 587 // -----
600 int row, col, pos; 588 int row, col, pos;
601 QPoint mouseCoord; 589 QPoint mouseCoord;
602 // ----- 590 // -----
603 mouseCoord = e->pos(); 591 mouseCoord = e->pos();
604 row=rowAt(mouseCoord.y()); 592 row=rowAt(mouseCoord.y());
605 col=columnAt(mouseCoord.x()); 593 col=columnAt(mouseCoord.x());
606 if(row<0 || col<0) 594 if(row<0 || col<0)
607 { // the user clicked on the frame of the table 595 { // the user clicked on the frame of the table
608 emit(closeMe(0)); 596 emit(closeMe(0));
609 } 597 }
610 pos=3*row+col+1; 598 pos=3*row+col+1;
611 result=pos; 599 result=pos;
612 emit(closeMe(1)); 600 emit(closeMe(1));
613} 601}
614 602
615 603
616 604
617KDateInternalYearSelector::KDateInternalYearSelector 605KDateInternalYearSelector::KDateInternalYearSelector
618(int fontsize, QWidget* parent, const char* name) 606(int fontsize, QWidget* parent, const char* name)
619 : QLineEdit(parent, name), 607 : QLineEdit(parent, name),
620 val(new QIntValidator(this)), 608 val(new QIntValidator(this)),
621 result(0) 609 result(0)
622{ 610{
623 QFont font; 611 QFont font;
624 // ----- 612 // -----
625 font=KGlobalSettings::generalFont(); 613 font=KGlobalSettings::generalFont();
626 font.setPointSize(fontsize); 614 font.setPointSize(fontsize);
627 setFont(font); 615 setFont(font);
628#if 0 616#if 0
629 setFrameStyle(QFrame::NoFrame); 617 setFrameStyle(QFrame::NoFrame);
630#endif 618#endif
631 // we have to respect the limits of QDate here, I fear: 619 // we have to respect the limits of QDate here, I fear:
632 val->setRange(0, 8000); 620 val->setRange(0, 8000);
633 setValidator(val); 621 setValidator(val);
634 connect(this, SIGNAL(returnPressed()), SLOT(yearEnteredSlot())); 622 connect(this, SIGNAL(returnPressed()), SLOT(yearEnteredSlot()));
635} 623}
636 624
637void 625void
638KDateInternalYearSelector::yearEnteredSlot() 626KDateInternalYearSelector::yearEnteredSlot()
639{ 627{
640 bool ok; 628 bool ok;
641 int year; 629 int year;
642 QDate date; 630 QDate date;
643 // ----- check if this is a valid year: 631 // ----- check if this is a valid year:
644 year=text().toInt(&ok); 632 year=text().toInt(&ok);
645 if(!ok) 633 if(!ok)
646 { 634 {
647 KNotifyClient::beep(); 635 KNotifyClient::beep();
648 return; 636 return;
649 } 637 }
650 date.setYMD(year, 1, 1); 638 date.setYMD(year, 1, 1);
651 if(!date.isValid()) 639 if(!date.isValid())
652 { 640 {
653 KNotifyClient::beep(); 641 KNotifyClient::beep();
654 return; 642 return;
655 } 643 }
656 result=year; 644 result=year;
657 emit(closeMe(1)); 645 emit(closeMe(1));
658} 646}
659 647
660int 648int
661KDateInternalYearSelector::getYear() 649KDateInternalYearSelector::getYear()
662{ 650{
663 return result; 651 return result;
664} 652}
665 653
666void 654void
667KDateInternalYearSelector::setYear(int year) 655KDateInternalYearSelector::setYear(int year)
668{ 656{
669 QString temp; 657 QString temp;
670 // ----- 658 // -----
671 temp.setNum(year); 659 temp.setNum(year);
672 setText(temp); 660 setText(temp);
673} 661}
674 662
675KPopupFrame::KPopupFrame(QWidget* parent, const char* name) 663KPopupFrame::KPopupFrame(QWidget* parent, const char* name)
676 : QFrame(parent, name, WType_Popup), 664 : QFrame(parent, name, WType_Popup),
677 result(0), // rejected 665 result(0), // rejected
678 main(0) 666 main(0)
679{ 667{
680 setFrameStyle(QFrame::Box|QFrame::Raised); 668 setFrameStyle(QFrame::Box|QFrame::Raised);
681 setMidLineWidth(2); 669 setMidLineWidth(2);
682} 670}
683 671
684void 672void
685KPopupFrame::keyPressEvent(QKeyEvent* e) 673KPopupFrame::keyPressEvent(QKeyEvent* e)
686{ 674{
687 if(e->key()==Key_Escape) 675 if(e->key()==Key_Escape)
688 { 676 {
689 result=0; // rejected 677 result=0; // rejected
690 qApp->exit_loop(); 678 qApp->exit_loop();
691 } 679 }
692} 680}
693 681
694void 682void
695KPopupFrame::close(int r) 683KPopupFrame::close(int r)
696{ 684{
697 result=r; 685 result=r;
698 qApp->exit_loop(); 686 qApp->exit_loop();
699} 687}
700 688
701void 689void
702KPopupFrame::setMainWidget(QWidget* m) 690KPopupFrame::setMainWidget(QWidget* m)
703{ 691{
704 main=m; 692 main=m;
705 if(main!=0) 693 if(main!=0)
706 { 694 {
707 resize(main->width()+2*frameWidth(), main->height()+2*frameWidth()); 695 resize(main->width()+2*frameWidth(), main->height()+2*frameWidth());
708 } 696 }
709} 697}
710 698
711void 699void
712KPopupFrame::resizeEvent(QResizeEvent*) 700KPopupFrame::resizeEvent(QResizeEvent*)
713{ 701{
714 if(main!=0) 702 if(main!=0)
715 { 703 {
716 main->setGeometry(frameWidth(), frameWidth(), 704 main->setGeometry(frameWidth(), frameWidth(),
717 width()-2*frameWidth(), height()-2*frameWidth()); 705 width()-2*frameWidth(), height()-2*frameWidth());
718 } 706 }
719} 707}
720 708
721void 709void
722KPopupFrame::popup(const QPoint &pos) 710KPopupFrame::popup(const QPoint &pos)
723{ 711{
724 // Make sure the whole popup is visible. 712 // Make sure the whole popup is visible.
725 QRect d = QApplication::desktop()->frameGeometry(); 713 QRect d = QApplication::desktop()->frameGeometry();
726 int x = pos.x(); 714 int x = pos.x();
727 int y = pos.y(); 715 int y = pos.y();
728 int w = width(); 716 int w = width();
729 int h = height(); 717 int h = height();
730 if (x+w > d.x()+d.width()) 718 if (x+w > d.x()+d.width())
731 x = d.width() - w; 719 x = d.width() - w;
732 if (y+h > d.y()+d.height()) 720 if (y+h > d.y()+d.height())
733 y = d.height() - h; 721 y = d.height() - h;
734 if (x < d.x()) 722 if (x < d.x())
735 x = 0; 723 x = 0;
736 if (y < d.y()) 724 if (y < d.y())
737 y = 0; 725 y = 0;
738 726
739 // Pop the thingy up. 727 // Pop the thingy up.
740 move(x, y); 728 move(x, y);
741 show(); 729 show();
742} 730}
743 731
744int 732int
745KPopupFrame::exec(QPoint pos) 733KPopupFrame::exec(QPoint pos)
746{ 734{
747 popup(pos); 735 popup(pos);
748 repaint(); 736 repaint();
749 qApp->enter_loop(); 737 qApp->enter_loop();
750 hide(); 738 hide();
751 return result; 739 return result;
752} 740}
753 741
754int 742int
755KPopupFrame::exec(int x, int y) 743KPopupFrame::exec(int x, int y)
756{ 744{
757 return exec(QPoint(x, y)); 745 return exec(QPoint(x, y));
758} 746}
759 747
760void KPopupFrame::virtual_hook( int, void* ) 748void KPopupFrame::virtual_hook( int, void* )
761{ /*BASE::virtual_hook( id, data );*/ } 749{ /*BASE::virtual_hook( id, data );*/ }
762 750
763void KDateTable::virtual_hook( int, void* ) 751void KDateTable::virtual_hook( int, void* )
764{ /*BASE::virtual_hook( id, data );*/ } 752{ /*BASE::virtual_hook( id, data );*/ }
765 753
766//#include "kdatetbl.moc" 754//#include "kdatetbl.moc"
767 755
768 756
769KDateInternalWeekPicker::KDateInternalWeekPicker 757KDateInternalWeekPicker::KDateInternalWeekPicker
770(QWidget* parent, const char* name) 758(QWidget* parent, const char* name)
771 : QGridView(parent, name), 759 : QGridView(parent, name),
772 result(0) // invalid 760 result(0) // invalid
773{ 761{
774 QRect rect; 762 QRect rect;
775 QFont font; 763 QFont font;
776 // ----- 764 // -----
777 activeCol = -1; 765 activeCol = -1;
778 activeRow = -1; 766 activeRow = -1;
779 font=KGlobalSettings::generalFont(); 767 font=KGlobalSettings::generalFont();
780 int fontsize = 10; 768 int fontsize = 10;
781 int add = 2; 769 int add = 2;
782 if ( QApplication::desktop()->width() >= 480 && QApplication::desktop()->width() <= 640 ) 770 if ( QApplication::desktop()->width() >= 480 && QApplication::desktop()->width() <= 640 )
783 add += 6; 771 add += 6;
784 font.setPointSize(fontsize+add); 772 font.setPointSize(fontsize+add);
785 setFont(font); 773 setFont(font);
786 setHScrollBarMode(AlwaysOff); 774 setHScrollBarMode(AlwaysOff);
787 setVScrollBarMode(AlwaysOff); 775 setVScrollBarMode(AlwaysOff);
788 setFrameStyle(QFrame::NoFrame); 776 setFrameStyle(QFrame::NoFrame);
789 if ( QApplication::desktop()->height() > 240 ) { 777 if ( QApplication::desktop()->height() > 240 ) {
790 setNumRows(13); 778 setNumRows(13);
791 setNumCols(4); 779 setNumCols(4);
792 } else { 780 } else {
793 setNumRows(4); 781 setNumRows(4);
794 setNumCols(13); 782 setNumCols(13);
795 } 783 }
796 // enable to find drawing failures: 784 // enable to find drawing failures:
797 // setTableFlags(Tbl_clipCellPainting); 785 // setTableFlags(Tbl_clipCellPainting);
798#if 0 786#if 0
799 viewport()->setEraseColor(lightGray); // for consistency with the datepicker 787 viewport()->setEraseColor(lightGray); // for consistency with the datepicker
800#endif 788#endif
801 // ----- find the preferred size 789 // ----- find the preferred size
802 // (this is slow, possibly, but unfortunatly it is needed here): 790 // (this is slow, possibly, but unfortunatly it is needed here):
803 QFontMetrics metrics(font); 791 QFontMetrics metrics(font);
804 for(int i=1; i <= 52; ++i) 792 for(int i=1; i <= 52; ++i)
805 { 793 {
806 rect=metrics.boundingRect(QString::number( i )); 794 rect=metrics.boundingRect(QString::number( i ));
807 if(max.width()<rect.width()) max.setWidth(rect.width()); 795 if(max.width()<rect.width()) max.setWidth(rect.width());
808 if(max.height()<rect.height()) max.setHeight(rect.height()); 796 if(max.height()<rect.height()) max.setHeight(rect.height());
809 } 797 }
810 if ( QApplication::desktop()->width() > 640 ) { 798 if ( QApplication::desktop()->width() > 640 ) {
811 799
812 max.setWidth(max.width()+6); 800 max.setWidth(max.width()+6);
813 max.setHeight(max.height()+8); 801 max.setHeight(max.height()+8);
814 } 802 }
815} 803}
816 804
817QSize 805QSize
818KDateInternalWeekPicker::sizeHint() const 806KDateInternalWeekPicker::sizeHint() const
819{ 807{
820 return QSize((max.width()+6)*numCols()+2*frameWidth(), 808 return QSize((max.width()+6)*numCols()+2*frameWidth(),
821 (max.height()+6)*numRows()+2*frameWidth()); 809 (max.height()+6)*numRows()+2*frameWidth());
822} 810}
823 811
824int 812int
825KDateInternalWeekPicker::getResult() const 813KDateInternalWeekPicker::getResult() const
826{ 814{
827 return result; 815 return result;
828} 816}
829 817
830void 818void
831KDateInternalWeekPicker::setupPainter(QPainter *p) 819KDateInternalWeekPicker::setupPainter(QPainter *p)
832{ 820{
833 p->setPen(black); 821 p->setPen(black);
834} 822}
835 823
836void 824void
837KDateInternalWeekPicker::viewportResizeEvent(QResizeEvent*) 825KDateInternalWeekPicker::viewportResizeEvent(QResizeEvent*)
838{ 826{
839 setCellWidth(width()/ numCols()); 827 setCellWidth(width()/ numCols());
840 setCellHeight(height()/ numRows()); 828 setCellHeight(height()/ numRows());
841} 829}
842 830
843void 831void
844KDateInternalWeekPicker::paintCell(QPainter* painter, int row, int col) 832KDateInternalWeekPicker::paintCell(QPainter* painter, int row, int col)
845{ 833{
846 int index; 834 int index;
847 QString text; 835 QString text;
848 // ----- find the number of the cell: 836 // ----- find the number of the cell:
849 index=numCols()*row+col+1; 837 index=numCols()*row+col+1;
850 text=QString::number( index ); 838 text=QString::number( index );
851 painter->drawText(0, 0, cellWidth(), cellHeight(), AlignCenter, text); 839 painter->drawText(0, 0, cellWidth(), cellHeight(), AlignCenter, text);
852 if ( activeCol == col && activeRow == row ) 840 if ( activeCol == col && activeRow == row )
853 painter->drawRect( 0, 0, cellWidth(), cellHeight() ); 841 painter->drawRect( 0, 0, cellWidth(), cellHeight() );
854} 842}
855 843
856void 844void
857KDateInternalWeekPicker::contentsMousePressEvent(QMouseEvent *e) 845KDateInternalWeekPicker::contentsMousePressEvent(QMouseEvent *e)
858{ 846{
859 if(!isEnabled() || e->button() != LeftButton) 847 if(!isEnabled() || e->button() != LeftButton)
860 { 848 {
861 KNotifyClient::beep(); 849 KNotifyClient::beep();
862 return; 850 return;
863 } 851 }
864 // ----- 852 // -----
865 int row, col; 853 int row, col;
866 QPoint mouseCoord; 854 QPoint mouseCoord;
867 // ----- 855 // -----
868 mouseCoord = e->pos(); 856 mouseCoord = e->pos();
869 row=rowAt(mouseCoord.y()); 857 row=rowAt(mouseCoord.y());
870 col=columnAt(mouseCoord.x()); 858 col=columnAt(mouseCoord.x());
871 859
872 if(row<0 || col<0) 860 if(row<0 || col<0)
873 { // the user clicked on the frame of the table 861 { // the user clicked on the frame of the table
874 activeCol = -1; 862 activeCol = -1;
875 activeRow = -1; 863 activeRow = -1;
876 } else { 864 } else {
877 activeCol = col; 865 activeCol = col;
878 activeRow = row; 866 activeRow = row;
879 updateCell( row, col /*, false */ ); 867 updateCell( row, col /*, false */ );
880 } 868 }
881} 869}
882 870
883void 871void
884KDateInternalWeekPicker::contentsMouseMoveEvent(QMouseEvent *e) 872KDateInternalWeekPicker::contentsMouseMoveEvent(QMouseEvent *e)
885{ 873{
886 if (e->state() & LeftButton) 874 if (e->state() & LeftButton)
887 { 875 {
888 int row, col; 876 int row, col;
889 QPoint mouseCoord; 877 QPoint mouseCoord;
890 // ----- 878 // -----
891 mouseCoord = e->pos(); 879 mouseCoord = e->pos();
892 row=rowAt(mouseCoord.y()); 880 row=rowAt(mouseCoord.y());
893 col=columnAt(mouseCoord.x()); 881 col=columnAt(mouseCoord.x());
894 int tmpRow = -1, tmpCol = -1; 882 int tmpRow = -1, tmpCol = -1;
895 if(row<0 || col<0) 883 if(row<0 || col<0)
896 { // the user clicked on the frame of the table 884 { // the user clicked on the frame of the table
897 if ( activeCol > -1 ) 885 if ( activeCol > -1 )
898 { 886 {
899 tmpRow = activeRow; 887 tmpRow = activeRow;
900 tmpCol = activeCol; 888 tmpCol = activeCol;
901 } 889 }
902 activeCol = -1; 890 activeCol = -1;
903 activeRow = -1; 891 activeRow = -1;
904 } else { 892 } else {
905 bool differentCell = (activeRow != row || activeCol != col); 893 bool differentCell = (activeRow != row || activeCol != col);
906 if ( activeCol > -1 && differentCell) 894 if ( activeCol > -1 && differentCell)
907 { 895 {
908 tmpRow = activeRow; 896 tmpRow = activeRow;
909 tmpCol = activeCol; 897 tmpCol = activeCol;
910 } 898 }
911 if ( differentCell) 899 if ( differentCell)
912 { 900 {
913 activeRow = row; 901 activeRow = row;
914 activeCol = col; 902 activeCol = col;
915 updateCell( row, col /*, false */ ); // mark the new active cell 903 updateCell( row, col /*, false */ ); // mark the new active cell
916 } 904 }
917 } 905 }
918 if ( tmpRow > -1 ) // repaint the former active cell 906 if ( tmpRow > -1 ) // repaint the former active cell
919 updateCell( tmpRow, tmpCol /*, true */ ); 907 updateCell( tmpRow, tmpCol /*, true */ );
920 } 908 }
921} 909}
922 910
923void 911void
924KDateInternalWeekPicker::contentsMouseReleaseEvent(QMouseEvent *e) 912KDateInternalWeekPicker::contentsMouseReleaseEvent(QMouseEvent *e)
925{ 913{
926 if(!isEnabled()) 914 if(!isEnabled())
927 { 915 {
928 return; 916 return;
929 } 917 }
930 // ----- 918 // -----
931 int row, col, pos; 919 int row, col, pos;
932 QPoint mouseCoord; 920 QPoint mouseCoord;
933 // ----- 921 // -----
934 mouseCoord = e->pos(); 922 mouseCoord = e->pos();
935 row=rowAt(mouseCoord.y()); 923 row=rowAt(mouseCoord.y());
936 col=columnAt(mouseCoord.x()); 924 col=columnAt(mouseCoord.x());
937 if(row<0 || col<0) 925 if(row<0 || col<0)
938 { // the user clicked on the frame of the table 926 { // the user clicked on the frame of the table
939 emit(closeMe(0)); 927 emit(closeMe(0));
940 } 928 }
941 pos=numCols()*row+col+1; 929 pos=numCols()*row+col+1;
942 result=pos; 930 result=pos;
943 emit(closeMe(1)); 931 emit(closeMe(1));
944} 932}