summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt9
-rw-r--r--kalarmd/simplealarmdaemonimpl.cpp8
-rw-r--r--korganizer/calendarview.cpp13
-rw-r--r--korganizer/calendarview.h3
-rw-r--r--korganizer/mainwindow.cpp69
-rw-r--r--korganizer/mainwindow.h5
6 files changed, 74 insertions, 33 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index 2c0d626..6f76c7e 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -14,257 +14,257 @@
14{ "1 h","1 Std" }, 14{ "1 h","1 Std" },
15{ "1 (high)","1 (hoch)" }, 15{ "1 (high)","1 (hoch)" },
16{ "5 (low)","5" }, 16{ "5 (low)","5" },
17{ "1st","1." }, 17{ "1st","1." },
18{ "20th","20." }, 18{ "20th","20." },
19{ "21st","21." }, 19{ "21st","21." },
20{ "22nd","22." }, 20{ "22nd","22." },
21{ "23rd","23." }, 21{ "23rd","23." },
22{ "24:00 Hour Format","24:00 Stunden Format" }, 22{ "24:00 Hour Format","24:00 Stunden Format" },
23{ "24th","24." }, 23{ "24th","24." },
24{ "25th","25." }, 24{ "25th","25." },
25{ "26th","26." }, 25{ "26th","26." },
26{ "27th","27." }, 26{ "27th","27." },
27{ "28th","28." }, 27{ "28th","28." },
28{ "29th","29." }, 28{ "29th","29." },
29{ "2nd","2." }, 29{ "2nd","2." },
30{ "30 minutes","30 Minuten" }, 30{ "30 minutes","30 Minuten" },
31{ "30th","30." }, 31{ "30th","30." },
32{ "31st","31." }, 32{ "31st","31." },
33{ "3rd","3." }, 33{ "3rd","3." },
34{ "4th","4." }, 34{ "4th","4." },
35{ "5 (lowest)","5 (Niedrigster)" }, 35{ "5 (lowest)","5 (Niedrigster)" },
36{ "5th","5." }, 36{ "5th","5." },
37{ "6th","6." }, 37{ "6th","6." },
38{ "7th","7." }, 38{ "7th","7." },
39{ "8th","8." }, 39{ "8th","8." },
40{ "9th","9." }, 40{ "9th","9." },
41{ "About...","Über..." }, 41{ "About...","Über..." },
42{ "&Accept","&Akzeptieren" }, 42{ "&Accept","&Akzeptieren" },
43{ "Accept","Akzeptieren" }, 43{ "Accept","Akzeptieren" },
44{ "Accept A&ll","A&lles Akzepieren" }, 44{ "Accept A&ll","A&lles Akzepieren" },
45{ "Access:","Zugriff:" }, 45{ "Access:","Zugriff:" },
46{ "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" }, 46{ "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" },
47{ "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 verlassen?" }, 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" },
@@ -644,256 +644,257 @@
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{ "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" },
773{ "Overwrite!","Überschreiben!" }, 774{ "Overwrite!","Überschreiben!" },
774{ "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" },
775{ "Load backup filename","Lade Backup Dateiname" }, 776{ "Load backup filename","Lade Backup Dateiname" },
776{ "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!" },
777{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, 778{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" },
778{ "Save backup filename","Speichere Backup Dateiname" }, 779{ "Save backup filename","Speichere Backup Dateiname" },
779{ "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" },
780{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 781{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
781{ "Details of attendee","Teilnehmerdetails" }, 782{ "Details of attendee","Teilnehmerdetails" },
782{ "Work phone:\n","Telefon Arbeit:\n" }, 783{ "Work phone:\n","Telefon Arbeit:\n" },
783{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, 784{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" },
784{ "Home phone:\n","Telefon privat:\n" }, 785{ "Home phone:\n","Telefon privat:\n" },
785{ "Mobile home phone:\n","Mobiltelefon privat:\n" }, 786{ "Mobile home phone:\n","Mobiltelefon privat:\n" },
786{ "Email:\n","Email:\n" }, 787{ "Email:\n","Email:\n" },
787{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, 788{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" },
788{ "Audio Al.: ","Audio Al.: " }, 789{ "Audio Al.: ","Audio Al.: " },
789{ "Proc.Al.: ","Proz.Al.: " }, 790{ "Proc.Al.: ","Proz.Al.: " },
790{ "No sound set","Kein Sound definiert" }, 791{ "No sound set","Kein Sound definiert" },
791{ "*.wav|Wav Files","*.wav|Wav Dateien" }, 792{ "*.wav|Wav Files","*.wav|Wav Dateien" },
792{ "No program set","Kein Programm definiert" }, 793{ "No program set","Kein Programm definiert" },
793{ "Running '%1'","Ausführen '%1'" }, 794{ "Running '%1'","Ausführen '%1'" },
794{ "Playing '%1'","Abspielen '%1'" }, 795{ "Playing '%1'","Abspielen '%1'" },
795{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, 796{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" },
796{ "Load!","Laden!" }, 797{ "Load!","Laden!" },
797{ "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" },
798{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, 799{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" },
799{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, 800{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" },
800{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 801{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
801{ "Features + hints...","Eigenschaften + Tipps..." }, 802{ "Features + hints...","Eigenschaften + Tipps..." },
802{ "User translation...","Benutzer Übersetzung..." }, 803{ "User translation...","Benutzer Übersetzung..." },
803{ "Sync HowTo...","Synchronisation HowTo..." }, 804{ "Sync HowTo...","Synchronisation HowTo..." },
804{ "Print calendar...","Drucke Kalender..." }, 805{ "Print calendar...","Drucke Kalender..." },
805{ "Anniversary","Jahrestag" }, 806{ "Anniversary","Jahrestag" },
806{ "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" },
807{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, 808{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" },
808{ "Next recurrence is on: ","Nächste Wiederholung ist am:" }, 809{ "Next recurrence is on: ","Nächste Wiederholung ist am:" },
809{ "<b>Alarm on: </b>","<b>Alarm am: </b>" }, 810{ "<b>Alarm on: </b>","<b>Alarm am: </b>" },
810{ "<b>Access: </b>","<b>Zugriff: </b>" }, 811{ "<b>Access: </b>","<b>Zugriff: </b>" },
811{ "(%1 min before)","(%1 min vorher)" }, 812{ "(%1 min before)","(%1 min vorher)" },
812{ "<b>Categories: </b>","<b>Kategorien: </b>" }, 813{ "<b>Categories: </b>","<b>Kategorien: </b>" },
813{ "Save Journal/Description...","Speichere Journal/Details..." }, 814{ "Save Journal/Description...","Speichere Journal/Details..." },
814{ "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." },
815{ "Continue","Weitermachen" }, 816{ "Continue","Weitermachen" },
816{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, 817{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" },
817{ "Attendee:","Teilnehmer:" }, 818{ "Attendee:","Teilnehmer:" },
818{ "Click OK to search ->","Klicke zum Suchen auf OK ->" }, 819{ "Click OK to search ->","Klicke zum Suchen auf OK ->" },
819{ "On day ","Am Tag " }, 820{ "On day ","Am Tag " },
820{ "%1 of ","%1 des Monats" }, 821{ "%1 of ","%1 des Monats" },
821{ "%1 of the year","%1 des Jahres" }, 822{ "%1 of the year","%1 des Jahres" },
822{ "Anonymous","Anonymo" }, 823{ "Anonymous","Anonymo" },
823{ "nobody@nowhere","niemand@nirgendwo" }, 824{ "nobody@nowhere","niemand@nirgendwo" },
824{ "calendar.html","calendar.html" }, 825{ "calendar.html","calendar.html" },
825{ " Local Time"," Lokale Zeit" }, 826{ " Local Time"," Lokale Zeit" },
826{ "Unknown Name","Unbekannter Name" }, 827{ "Unknown Name","Unbekannter Name" },
827{ "unknown@nowhere","unbekannt@nirgendwo" }, 828{ "unknown@nowhere","unbekannt@nirgendwo" },
828{ "Beam via IR!","Beam via IR!" }, 829{ "Beam via IR!","Beam via IR!" },
829{ "Next Month","Nächster Monat" }, 830{ "Next Month","Nächster Monat" },
830{ "Prio","Prio" }, 831{ "Prio","Prio" },
831{ "Reparent Todo","Mache Sub-Todo" }, 832{ "Reparent Todo","Mache Sub-Todo" },
832{ "tomorrow","morgen" }, 833{ "tomorrow","morgen" },
833{ "today","heute" }, 834{ "today","heute" },
834{ "yesterday","gestern" }, 835{ "yesterday","gestern" },
835{ "Ok","Ok" }, 836{ "Ok","Ok" },
836{ "Ok+Agenda","Ok+Agenda" }, 837{ "Ok+Agenda","Ok+Agenda" },
837{ "Email","Email" }, 838{ "Email","Email" },
838{ "RSVP","RSVP" }, 839{ "RSVP","RSVP" },
839{ "Email:","Email:" }, 840{ "Email:","Email:" },
840{ "Appointment Time ","Termin Zeit " }, 841{ "Appointment Time ","Termin Zeit " },
841{ "2","2" }, 842{ "2","2" },
842{ "3","3" }, 843{ "3","3" },
843{ "4","4" }, 844{ "4","4" },
844{ " 0 %"," 0 %" }, 845{ " 0 %"," 0 %" },
845{ " 20 %"," 20 %" }, 846{ " 20 %"," 20 %" },
846{ " 40 %"," 40 %" }, 847{ " 40 %"," 40 %" },
847{ " 60 %"," 60 %" }, 848{ " 60 %"," 60 %" },
848{ " 80 %"," 80 %" }, 849{ " 80 %"," 80 %" },
849{ "100 %","100 %" }, 850{ "100 %","100 %" },
850{ "Filter","Filter" }, 851{ "Filter","Filter" },
851{ "Configure","Konfiguriere" }, 852{ "Configure","Konfiguriere" },
852{ "What's Next","What's Next" }, 853{ "What's Next","What's Next" },
853{ "Complete calendar...","Kompletten Kalender..." }, 854{ "Complete calendar...","Kompletten Kalender..." },
854{ "Filtered calendar...","Gefilterten Kalender..." }, 855{ "Filtered calendar...","Gefilterten Kalender..." },
855{ "Export to phone","Exportiere zum Handy" }, 856{ "Export to phone","Exportiere zum Handy" },
856{ "Beam receive enabled","Beam Empfang an" }, 857{ "Beam receive enabled","Beam Empfang an" },
857{ "What's new?","Was ist neu?" }, 858{ "What's new?","Was ist neu?" },
858{ "FAQ...","FAQ..." }, 859{ "FAQ...","FAQ..." },
859{ "Licence...","Licence..." }, 860{ "Licence...","Licence..." },
860{ "What's This?","What's This?" }, 861{ "What's This?","What's This?" },
861{ "&Edit...","Bearbeite..." }, 862{ "&Edit...","Bearbeite..." },
862{ "Oktober","Oktober" }, 863{ "Oktober","Oktober" },
863{ "Title","Titel" }, 864{ "Title","Titel" },
864{ "%1 %","%1 %" }, 865{ "%1 %","%1 %" },
865{ "Enable Pi-Sync","Schalte Pi-Sync an" }, 866{ "Enable Pi-Sync","Schalte Pi-Sync an" },
866{ "Import!","Importiere!" }, 867{ "Import!","Importiere!" },
867{ "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!" },
868{ "Export to phone options","Export ans Handy Optionen" }, 869{ "Export to phone options","Export ans Handy Optionen" },
869{ "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." },
870{ "I/O device: ","I/O device: " }, 871{ "I/O device: ","I/O device: " },
871{ "Connection: ","Connection: " }, 872{ "Connection: ","Connection: " },
872{ "Model(opt.): ","Model(opt.): " }, 873{ "Model(opt.): ","Model(opt.): " },
873{ "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" },
874{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, 875{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " },
875{ "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!" },
876{ "Export to mobile phone!","Exportiere auf das Handy!" }, 877{ "Export to mobile phone!","Exportiere auf das Handy!" },
877{ "Export complete calendar","Exportiere kompletten Kalender" }, 878{ "Export complete calendar","Exportiere kompletten Kalender" },
878{ "Writing to phone...","Sende Daten ans Handy..." }, 879{ "Writing to phone...","Sende Daten ans Handy..." },
879{ " 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!" },
880{ "Retry","Nochmal versuchen" }, 881{ "Retry","Nochmal versuchen" },
881{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 882{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
882{ "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!" },
883{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 884{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
884{ "Export filtered calendar","Exportiere gefilterten Kalender" }, 885{ "Export filtered calendar","Exportiere gefilterten Kalender" },
885{ "Preferences","Vorlieben" }, 886{ "Preferences","Vorlieben" },
886{ "Global","Global" }, 887{ "Global","Global" },
887{ "Phone","Phone" }, 888{ "Phone","Phone" },
888{ "SMS","SMS" }, 889{ "SMS","SMS" },
889{ "Fax","Fax" }, 890{ "Fax","Fax" },
890{ "Pager","Pager" }, 891{ "Pager","Pager" },
891{ "SIP","SIP" }, 892{ "SIP","SIP" },
892{ "Italian","Italienisch" }, 893{ "Italian","Italienisch" },
893{ "24:00","24:00" }, 894{ "24:00","24:00" },
894{ "12:00am","12:00am" }, 895{ "12:00am","12:00am" },
895{ "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)" },
896{ "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)" },
897{ "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)" },
898{ "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" },
899{ "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" },
@@ -1433,140 +1434,140 @@
1433{ "Notes","Notizen" }, 1434{ "Notes","Notizen" },
1434{ "Messanger","Messanger" }, 1435{ "Messanger","Messanger" },
1435{ "Assistant","Assistent" }, 1436{ "Assistant","Assistent" },
1436{ "Manager","Manager" }, 1437{ "Manager","Manager" },
1437{ "Secrecy","Sichtbar" }, 1438{ "Secrecy","Sichtbar" },
1438{ "male","männlich" }, 1439{ "male","männlich" },
1439{ "female","weiblich" }, 1440{ "female","weiblich" },
1440{ "Hide!","Verbergen!" }, 1441{ "Hide!","Verbergen!" },
1441{ "Show!","Anzeigen!" }, 1442{ "Show!","Anzeigen!" },
1442{ "Details","Details" }, 1443{ "Details","Details" },
1443{ "Profession","Beruf" }, 1444{ "Profession","Beruf" },
1444{ "Children","Kinder" }, 1445{ "Children","Kinder" },
1445{ "Department","Abteilung" }, 1446{ "Department","Abteilung" },
1446{ "Backup cancelled","Backup abgebrochen" }, 1447{ "Backup cancelled","Backup abgebrochen" },
1447{ "Backup globally disabled","Backup global abgeschaltet" }, 1448{ "Backup globally disabled","Backup global abgeschaltet" },
1448{ "Backup succesfully finished","Backup erfolgreich beendet" }, 1449{ "Backup succesfully finished","Backup erfolgreich beendet" },
1449{ "(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!)" },
1450{ "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" },
1451{ "Birthdays","Geburtstage" }, 1452{ "Birthdays","Geburtstage" },
1452{ "KO/Pi import information!","KO/Pi Import Information!" }, 1453{ "KO/Pi import information!","KO/Pi Import Information!" },
1453{ "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" },
1454{ "Cancel - do not start"," Abbrechen - Todo nicht starten" }, 1455{ "Cancel - do not start"," Abbrechen - Todo nicht starten" },
1455{ "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?"" },
1456{ "Reload","Neu laden" }, 1457{ "Reload","Neu laden" },
1457{ "Timezone settings","Zeitzoneneinstellung" }, 1458{ "Timezone settings","Zeitzoneneinstellung" },
1458{ "Title: ","Titel: " }, 1459{ "Title: ","Titel: " },
1459{ "Journal from: ","Journal vom: " }, 1460{ "Journal from: ","Journal vom: " },
1460{ "Journal: %1 from ","Journal: %1 vom " }, 1461{ "Journal: %1 from ","Journal: %1 vom " },
1461{ "<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>" },
1462{ "Selected Item","Ausgewähltes Item" }, 1463{ "Selected Item","Ausgewähltes Item" },
1463{ "Select Date...","Wähle Datum..." }, 1464{ "Select Date...","Wähle Datum..." },
1464{ "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:" },
1465{ "Change category list now!","Ändere Kategorieliste jetzt!" }, 1466{ "Change category list now!","Ändere Kategorieliste jetzt!" },
1466{ "Edit category list...","Ändere Kategorieliste..." }, 1467{ "Edit category list...","Ändere Kategorieliste..." },
1467{ "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!" },
1468{ "Filepath: ","Dateipfad: " }, 1469{ "Filepath: ","Dateipfad: " },
1469{ "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!" },
1470{ "<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!" },
1471{ "Pending Suspend Alarm","Laufender Suspend Alarm" }, 1472{ "Pending Suspend Alarm","Laufender Suspend Alarm" },
1472{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, 1473{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" },
1473{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, 1474{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" },
1474{ "Loading of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, 1475{ "Loading of calendar(s) failed","Laden von Kalendern fehlgeschlagen" },
1475{ "Alarm Options","Alarm Einstellungen" }, 1476{ "Alarm Options","Alarm Einstellungen" },
1476{ "Delete selected...","Lösche Ausgewählte..." }, 1477{ "Delete selected...","Lösche Ausgewählte..." },
1477{ "None","Nichts" }, 1478{ "None","Nichts" },
1478{ "Selection","Auswahl" }, 1479{ "Selection","Auswahl" },
1479{ "Set categories","Setze Kategorien" }, 1480{ "Set categories","Setze Kategorien" },
1480{ "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!" },
1481{ "Reset","Neu setzen" }, 1482{ "Reset","Neu setzen" },
1482{ "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)?" },
1483{ "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?" },
1484{ "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!" },
1485{ "\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" },
1486{ "\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" },
1487{ "Edit","Edit" }, 1488{ "Edit","Edit" },
1488{ "Last Modified","Zuletzt geändert" }, 1489{ "Last Modified","Zuletzt geändert" },
1489{ "Journal viewer","Journal Anzeige" }, 1490{ "Journal viewer","Journal Anzeige" },
1490{ "Configure Calendar Files...","Konfiguriere Kalenderdateien..." }, 1491{ "Configure Calendar Files...","Konfiguriere Kalenderdateien..." },
1491{ "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>." },
1492{ "Hide Completed","Verstecke erledigte Todos" }, 1493{ "Hide Completed","Verstecke erledigte Todos" },
1493{ "Show not Running","Zeige nicht Laufende" }, 1494{ "Show not Running","Zeige nicht Laufende" },
1494{ "Click to add new Todo","Klick für neues Todo!" }, 1495{ "Click to add new Todo","Klick für neues Todo!" },
1495{ "Show next conflict for","Zeige nächsten Konflikt für" }, 1496{ "Show next conflict for","Zeige nächsten Konflikt für" },
1496{ "All events","Alle Termine" }, 1497{ "All events","Alle Termine" },
1497{ "Allday events","Ganztagestermine" }, 1498{ "Allday events","Ganztagestermine" },
1498{ "Events with time","Termine mit Zeit" }, 1499{ "Events with time","Termine mit Zeit" },
1499{ "No conflict found","Kein Konflikt gefunden" }, 1500{ "No conflict found","Kein Konflikt gefunden" },
1500{ "Conflict %1 <-> %2","Konflikt %1 <-> %2" }, 1501{ "Conflict %1 <-> %2","Konflikt %1 <-> %2" },
1501{ "<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 " },
1502{ "Week view mode uses row layout","Wochenansicht Modus nutzt Reihenlayout" }, 1503{ "Week view mode uses row layout","Wochenansicht Modus nutzt Reihenlayout" },
1503{ "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" },
1504{ "KO/Pi Conflict detected","KO/Pi Konflikt erkannt" }, 1505{ "KO/Pi Conflict detected","KO/Pi Konflikt erkannt" },
1505{ "Show date","Zeige Datum" }, 1506{ "Show date","Zeige Datum" },
1506{ "No problem!","Null Problemo!" }, 1507{ "No problem!","Null Problemo!" },
1507{ "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" },
1508{ "Pi-Sync Port Error","Pi-Sync Port Fehler" }, 1509{ "Pi-Sync Port Error","Pi-Sync Port Fehler" },
1509{ "<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?" },
1510{ "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" },
1511{ "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" },
1512{ "Pi-Sync Error","Pi-Sync Fehler" }, 1513{ "Pi-Sync Error","Pi-Sync Fehler" },
1513{ "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" },
1514{ "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" },
1515{ "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." },
1516{ "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" },
1517{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, 1518{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" },
1518{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, 1519{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" },
1519{ "Receiving file from remote...","Empfange entfernte Datei..." }, 1520{ "Receiving file from remote...","Empfange entfernte Datei..." },
1520{ "Sending back synced file...","Sende synchronisierte Datei zurück..." }, 1521{ "Sending back synced file...","Sende synchronisierte Datei zurück..." },
1521{ "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?" },
1522{ "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" },
1523{ "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." },
1524{ "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)" },
1525{ "Writing back file ...","Schreibe Datei zurück..." }, 1526{ "Writing back file ...","Schreibe Datei zurück..." },
1526{ "Sending back file ...","Sende Datei zurück..." }, 1527{ "Sending back file ...","Sende Datei zurück..." },
1527{ "Eeek, there I am ticklish!","Hihi, da bin ich kitzlig!" }, 1528{ "Eeek, there I am ticklish!","Hihi, da bin ich kitzlig!" },
1528{ "Created","Angelegt" }, 1529{ "Created","Angelegt" },
1529{ "Last Modified Sub","Zuletzt geändertes Sub" }, 1530{ "Last Modified Sub","Zuletzt geändertes Sub" },
1530{ "Checking conflicts ... please wait","Überprüfe Konflikte ... bitte warten" }, 1531{ "Checking conflicts ... please wait","Überprüfe Konflikte ... bitte warten" },
1531{ "Show times on two lines","Zeige Zeiten auf zwei Zeilen" }, 1532{ "Show times on two lines","Zeige Zeiten auf zwei Zeilen" },
1532{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, 1533{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" },
1533{ "Duration","Dauer" }, 1534{ "Duration","Dauer" },
1534{ " day"," Tag" }, 1535{ " day"," Tag" },
1535{ "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" },
1536{ "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" },
1537{ "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" },
1538{ "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" },
1539{ "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" },
1540{ "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" },
1541{ "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." },
1542{ "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." },
1543{ "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." },
1544{ "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." },
1545{ "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." },
1546{ "<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)" },
1547{ "Error saving data","Fehler beim Abspeichern" }, 1548{ "Error saving data","Fehler beim Abspeichern" },
1548{ "Calendar(s) not saved:","Nicht gespeicherte Kalender:" }, 1549{ "Calendar(s) not saved:","Nicht gespeicherte Kalender:" },
1549{ "Enable conflict detection","Schalte Konflikterkennung an" }, 1550{ "Enable conflict detection","Schalte Konflikterkennung an" },
1550{ "Filter for the edited event","Filter für den bearbeiteten Termin" }, 1551{ "Filter for the edited event","Filter für den bearbeiteten Termin" },
1551{ "Filter for other events","Filter für die anderen Termine" }, 1552{ "Filter for other events","Filter für die anderen Termine" },
1552{ "Check Allday with Allday","Prüfe GanzTag mit GanzTag" }, 1553{ "Check Allday with Allday","Prüfe GanzTag mit GanzTag" },
1553{ "Check Allday with NonAllday","Prüfe GanzTag mit NichtGanzTag" }, 1554{ "Check Allday with NonAllday","Prüfe GanzTag mit NichtGanzTag" },
1554{ "Check NonAllday with Allday","Prüfe NichtGanzTag mit GanzTag" }, 1555{ "Check NonAllday with Allday","Prüfe NichtGanzTag mit GanzTag" },
1555{ "Check NonAllday with NonAllday","Prüfe NichtGanzTag mit NichtGanzTag" }, 1556{ "Check NonAllday with NonAllday","Prüfe NichtGanzTag mit NichtGanzTag" },
1556{ "Conflict detection","Konflikterkennung" }, 1557{ "Conflict detection","Konflikterkennung" },
1557{ "Loading calendar files ... please wait","Lade Kalenderdateien ... bitte warten" }, 1558{ "Loading calendar files ... please wait","Lade Kalenderdateien ... bitte warten" },
1558{ "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." },
1559{ "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"" },
1560{ "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>." },
1561{ "","" }, 1562{ " Yes, close "," Ja, beenden " },
1562{ "","" }, 1563{ "Export All Data","Exportiere alle Daten" },
1563{ "","" }, 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{ "","" }, 1565{ "","" },
1565{ "","" }, 1566{ "","" },
1566{ "","" }, 1567{ "","" },
1567{ "","" }, 1568{ "","" },
1568{ "","" }, 1569{ "","" },
1569{ "","" }, 1570{ "","" },
1570{ "","" }, 1571{ "","" },
1571{ "","" }, 1572{ "","" },
1572{ "","" }, 1573{ "","" },
diff --git a/kalarmd/simplealarmdaemonimpl.cpp b/kalarmd/simplealarmdaemonimpl.cpp
index 2acfacf..a0ac232 100644
--- a/kalarmd/simplealarmdaemonimpl.cpp
+++ b/kalarmd/simplealarmdaemonimpl.cpp
@@ -1,205 +1,197 @@
1/* 1/*
2 This file is part of the KOrganizer alarm daemon. 2 This file is part of the KOrganizer alarm daemon.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include "simplealarmdaemonimpl.h" 24#include "simplealarmdaemonimpl.h"
25 25
26#include "alarmdialog.h" 26#include "alarmdialog.h"
27#include <qpopupmenu.h> 27#include <qpopupmenu.h>
28#include <qapp.h> 28#include <qapp.h>
29#include <qdir.h> 29#include <qdir.h>
30#include <qfile.h> 30#include <qfile.h>
31#include <qhbox.h> 31#include <qhbox.h>
32#include <qtimer.h> 32#include <qtimer.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qdatetime.h> 34#include <qdatetime.h>
35#include <qpushbutton.h> 35#include <qpushbutton.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qlineedit.h> 37#include <qlineedit.h>
38#include <qdialog.h> 38#include <qdialog.h>
39#define protected public 39#define protected public
40#include <qspinbox.h> 40#include <qspinbox.h>
41#undef protected 41#undef protected
42#include <qtextstream.h> 42#include <qtextstream.h>
43#include <qtopia/qcopenvelope_qws.h> 43#include <qtopia/qcopenvelope_qws.h>
44#include <qtopia/alarmserver.h> 44#include <qtopia/alarmserver.h>
45 45
46#include <stdlib.h> 46#include <stdlib.h>
47#include <stdio.h> 47#include <stdio.h>
48#include <unistd.h> 48#include <unistd.h>
49 49
50 50
51SimpleAlarmDaemonImpl::SimpleAlarmDaemonImpl( QWidget *parent ) 51SimpleAlarmDaemonImpl::SimpleAlarmDaemonImpl( QWidget *parent )
52 : QLabel( parent ) 52 : QLabel( parent )
53{ 53{
54 mAlarmDialog = new AlarmDialog( 0 ); 54 mAlarmDialog = new AlarmDialog( 0 );
55 mPopUp = new QPopupMenu( this ); 55 mPopUp = new QPopupMenu( this );
56 mPopUp->insertItem( "What's Next?", this, SLOT ( showWN() ) ); 56 mPopUp->insertItem( "What's Next?", this, SLOT ( showWN() ) );
57 mPopUp->insertItem( "Next Days!", this, SLOT ( showKO() ) ); 57 mPopUp->insertItem( "Next Days!", this, SLOT ( showKO() ) );
58 mPopUp->insertSeparator(); 58 mPopUp->insertSeparator();
59 mPopUp->insertItem( "Todo List", this, SLOT ( showTodo() ) ); 59 mPopUp->insertItem( "Todo List", this, SLOT ( showTodo() ) );
60 mPopUp->insertSeparator(); 60 mPopUp->insertSeparator();
61 mPopUp->insertItem( "Addresses", this, SLOT ( showAdd() ) ); 61 mPopUp->insertItem( "Addresses", this, SLOT ( showAdd() ) );
62 mPopUp->insertSeparator(); 62 mPopUp->insertSeparator();
63 mPopUp->insertItem( "Edit Journal", this, SLOT ( writeJournal() ) ); 63 mPopUp->insertItem( "Edit Journal", this, SLOT ( writeJournal() ) );
64 mPopUp->insertItem( "New Event", this, SLOT ( newEvent() ) ); 64 mPopUp->insertItem( "New Event", this, SLOT ( newEvent() ) );
65 mPopUp->insertItem( "New Todo", this, SLOT ( newTodo() ) ); 65 mPopUp->insertItem( "New Todo", this, SLOT ( newTodo() ) );
66 mPopUp->insertItem( "New Mail", this, SLOT ( newMail() ) ); 66 mPopUp->insertItem( "New Mail", this, SLOT ( newMail() ) );
67 mPopUp->insertSeparator(); 67 mPopUp->insertSeparator();
68 mPopUp->insertItem( "Multi Sync", this, SLOT ( ringSync() ) ); 68 mPopUp->insertItem( "Multi Sync", this, SLOT ( ringSync() ) );
69 mTimerPopUp = new QPopupMenu( this ); 69 mTimerPopUp = new QPopupMenu( this );
70 QFont fon = mTimerPopUp->font();
71 int points = 16;
72 if ( QApplication::desktop()->width() < 480 )
73 points = 12;
74 fon.setPointSize( points );
75 //qDebug("point s %d ", fon.pointSize());
76 mTimerPopUp->setFont( fon );
77 mPopUp->setFont( fon );
78 mBeepPopUp = new QPopupMenu( this ); 70 mBeepPopUp = new QPopupMenu( this );
79 mSoundPopUp = new QPopupMenu( this ); 71 mSoundPopUp = new QPopupMenu( this );
80 mPausePopUp = new QPopupMenu( this ); 72 mPausePopUp = new QPopupMenu( this );
81 QPopupMenu* savePopUp = new QPopupMenu( this ); 73 QPopupMenu* savePopUp = new QPopupMenu( this );
82 savePopUp->insertItem( "Save", 0 ); 74 savePopUp->insertItem( "Save", 0 );
83 savePopUp->insertItem( "Load", 1 ); 75 savePopUp->insertItem( "Load", 1 );
84 mSoundPopUp->insertItem( "Buzzer", 0 ); 76 mSoundPopUp->insertItem( "Buzzer", 0 );
85 mSoundPopUp->insertItem( "Wav file", 1 ); 77 mSoundPopUp->insertItem( "Wav file", 1 );
86 mPausePopUp->insertItem( " 1 sec", 1 ); 78 mPausePopUp->insertItem( " 1 sec", 1 );
87 mPausePopUp->insertItem( " 2 sec", 2 ); 79 mPausePopUp->insertItem( " 2 sec", 2 );
88 mPausePopUp->insertItem( " 3 sec", 3 ); 80 mPausePopUp->insertItem( " 3 sec", 3 );
89 mPausePopUp->insertItem( " 5 sec", 5 ); 81 mPausePopUp->insertItem( " 5 sec", 5 );
90 mPausePopUp->insertItem( "10 sec", 10 ); 82 mPausePopUp->insertItem( "10 sec", 10 );
91 mPausePopUp->insertItem( "30 sec", 30 ); 83 mPausePopUp->insertItem( "30 sec", 30 );
92 mPausePopUp->insertItem( " 1 min", 60 ); 84 mPausePopUp->insertItem( " 1 min", 60 );
93 mPausePopUp->insertItem( " 5 min", 300 ); 85 mPausePopUp->insertItem( " 5 min", 300 );
94 mPausePopUp->insertItem( "10 min", 600 ); 86 mPausePopUp->insertItem( "10 min", 600 );
95 mSuspendPopUp = new QPopupMenu( this ); 87 mSuspendPopUp = new QPopupMenu( this );
96 mSuspendPopUp->insertItem( "Off", 0 ); 88 mSuspendPopUp->insertItem( "Off", 0 );
97 mSuspendPopUp->insertItem( " 1x", 1 ); 89 mSuspendPopUp->insertItem( " 1x", 1 );
98 mSuspendPopUp->insertItem( " 2x", 2 ); 90 mSuspendPopUp->insertItem( " 2x", 2 );
99 mSuspendPopUp->insertItem( " 3x", 3 ); 91 mSuspendPopUp->insertItem( " 3x", 3 );
100 mSuspendPopUp->insertItem( " 5x", 5 ); 92 mSuspendPopUp->insertItem( " 5x", 5 );
101 mSuspendPopUp->insertItem( "10x", 10 ); 93 mSuspendPopUp->insertItem( "10x", 10 );
102 mSuspendPopUp->insertItem( "20x", 20 ); 94 mSuspendPopUp->insertItem( "20x", 20 );
103 mSuspendPopUp->insertItem( "30x", 30 ); 95 mSuspendPopUp->insertItem( "30x", 30 );
104 mBeepPopUp->insertItem( "Auto suspend",mSuspendPopUp ); 96 mBeepPopUp->insertItem( "Auto suspend",mSuspendPopUp );
105 mBeepPopUp->insertItem( "Beep interval",mPausePopUp ); 97 mBeepPopUp->insertItem( "Beep interval",mPausePopUp );
106 mBeepPopUp->insertItem( "Replay",mSoundPopUp ); 98 mBeepPopUp->insertItem( "Replay",mSoundPopUp );
107 mBeepPopUp->insertItem( "Config",savePopUp ); 99 mBeepPopUp->insertItem( "Config",savePopUp );
108 mBeepPopUp->insertItem( "300", 300 ); 100 mBeepPopUp->insertItem( "300", 300 );
109 mBeepPopUp->insertItem( "180", 180 ); 101 mBeepPopUp->insertItem( "180", 180 );
110 mBeepPopUp->insertItem( "60", 60 ); 102 mBeepPopUp->insertItem( "60", 60 );
111 mBeepPopUp->insertItem( "30", 30 ); 103 mBeepPopUp->insertItem( "30", 30 );
112 mBeepPopUp->insertItem( "10", 10 ); 104 mBeepPopUp->insertItem( "10", 10 );
113 mBeepPopUp->insertItem( "3", 3 ); 105 mBeepPopUp->insertItem( "3", 3 );
114 mBeepPopUp->insertItem( "1", 1 ); 106 mBeepPopUp->insertItem( "1", 1 );
115 mBeepPopUp->insertItem( "Off", 0 ); 107 mBeepPopUp->insertItem( "Off", 0 );
116 mBeepPopUp->insertSeparator(); 108 mBeepPopUp->insertSeparator();
117 mBeepPopUp->insertItem( "Simulate", 1000 ); 109 mBeepPopUp->insertItem( "Simulate", 1000 );
118 mBeepPopUp->setCheckable( true ); 110 mBeepPopUp->setCheckable( true );
119 mPopUp->insertSeparator(); 111 mPopUp->insertSeparator();
120 mPopUp->insertItem( "Play beeps", mBeepPopUp ); 112 mPopUp->insertItem( "Play beeps", mBeepPopUp );
121 mPopUp->insertSeparator(); 113 mPopUp->insertSeparator();
122 mPopUp->insertItem( "Timer", mTimerPopUp ); 114 mPopUp->insertItem( "Timer", mTimerPopUp );
123 //mPopUp->insertSeparator(); 115 //mPopUp->insertSeparator();
124 //mPopUp->insertItem( "Simulate", this, SLOT ( simulate() ) ); 116 //mPopUp->insertItem( "Simulate", this, SLOT ( simulate() ) );
125 117
126 mPopUp->resize( mPopUp->sizeHint() ); 118 mPopUp->resize( mPopUp->sizeHint() );
127 mPlayBeeps = 60; 119 mPlayBeeps = 60;
128 mBeepPopUp->setItemChecked ( mPlayBeeps, true ); 120 mBeepPopUp->setItemChecked ( mPlayBeeps, true );
129 connect ( mBeepPopUp, SIGNAL( activated ( int ) ), this, SLOT (slotPlayBeep( int ) ) ); 121 connect ( mBeepPopUp, SIGNAL( activated ( int ) ), this, SLOT (slotPlayBeep( int ) ) );
130 connect ( mTimerPopUp, SIGNAL( activated ( int ) ), this, SLOT (confTimer( int ) ) ); 122 connect ( mTimerPopUp, SIGNAL( activated ( int ) ), this, SLOT (confTimer( int ) ) );
131 connect ( mTimerPopUp, SIGNAL(aboutToShow() ), this, SLOT ( showTimer( ) ) ); 123 connect ( mTimerPopUp, SIGNAL(aboutToShow() ), this, SLOT ( showTimer( ) ) );
132 connect ( mSoundPopUp, SIGNAL( activated ( int ) ), this, SLOT (confSound( int ) ) ); 124 connect ( mSoundPopUp, SIGNAL( activated ( int ) ), this, SLOT (confSound( int ) ) );
133 connect ( mPausePopUp, SIGNAL( activated ( int ) ), this, SLOT (confPause( int ) ) ); 125 connect ( mPausePopUp, SIGNAL( activated ( int ) ), this, SLOT (confPause( int ) ) );
134 connect ( mSuspendPopUp, SIGNAL( activated ( int ) ), this, SLOT (confSuspend( int ) ) ); 126 connect ( mSuspendPopUp, SIGNAL( activated ( int ) ), this, SLOT (confSuspend( int ) ) );
135 connect ( savePopUp, SIGNAL( activated ( int ) ), this, SLOT (saveSlot( int ) ) ); 127 connect ( savePopUp, SIGNAL( activated ( int ) ), this, SLOT (saveSlot( int ) ) );
136 mTimerTime = 0; 128 mTimerTime = 0;
137 mCustomText = "Custom Text"; 129 mCustomText = "Custom Text";
138 mCustomMinutes = 7; 130 mCustomMinutes = 7;
139 mTimerPopupConf = 1; 131 mTimerPopupConf = 1;
140 fillTimerPopUp(); 132 fillTimerPopUp();
141 mPausePlay = 0; 133 mPausePlay = 0;
142 confPause( 1 ); 134 confPause( 1 );
143 mSuspend = 0; 135 mSuspend = 0;
144 confSuspend( 0 ); 136 confSuspend( 0 );
145 if ( QApplication::desktop()->width() < 480 ) { 137 if ( QApplication::desktop()->width() < 480 ) {
146 wavAlarm = false; 138 wavAlarm = false;
147 mSoundPopUp->setItemChecked ( 0, true ); 139 mSoundPopUp->setItemChecked ( 0, true );
148 } 140 }
149 else { 141 else {
150 wavAlarm = true; 142 wavAlarm = true;
151 mSoundPopUp->setItemChecked ( 1, true ); 143 mSoundPopUp->setItemChecked ( 1, true );
152 } 144 }
153 saveSlot( 1 ); 145 saveSlot( 1 );
154} 146}
155 147
156SimpleAlarmDaemonImpl::~SimpleAlarmDaemonImpl() 148SimpleAlarmDaemonImpl::~SimpleAlarmDaemonImpl()
157{ 149{
158 //delete mPopUp; 150 //delete mPopUp;
159 delete mAlarmDialog; 151 delete mAlarmDialog;
160} 152}
161void SimpleAlarmDaemonImpl::saveSlot( int load ) 153void SimpleAlarmDaemonImpl::saveSlot( int load )
162{ 154{
163 QString fileName = QDir::homeDirPath() +"/.kopialarmrc"; 155 QString fileName = QDir::homeDirPath() +"/.kopialarmrc";
164 //qDebug("save %d ", load ); 156 //qDebug("save %d ", load );
165 QFile file( fileName ); 157 QFile file( fileName );
166 if ( load ) { 158 if ( load ) {
167 if( !QFile::exists( fileName) ) 159 if( !QFile::exists( fileName) )
168 return; 160 return;
169 if (!file.open( IO_ReadOnly ) ) { 161 if (!file.open( IO_ReadOnly ) ) {
170 return ; 162 return ;
171 } 163 }
172 QString line; 164 QString line;
173 bool ok; 165 bool ok;
174 int val; 166 int val;
175 int len; 167 int len;
176 while ( file.readLine( line, 1024 ) > 0 ) { 168 while ( file.readLine( line, 1024 ) > 0 ) {
177 //qDebug("read %s ", line.latin1()); 169 //qDebug("read %s ", line.latin1());
178 len = line.length(); 170 len = line.length();
179 if ( line.left(4 ) == "PPAU" ) { 171 if ( line.left(4 ) == "PPAU" ) {
180 val = line.mid( 4,len-5).toInt( &ok ); 172 val = line.mid( 4,len-5).toInt( &ok );
181 if ( ok ) { 173 if ( ok ) {
182 confPause( val ); 174 confPause( val );
183 } 175 }
184 } 176 }
185 if ( line.left(4 ) == "SUCO" ) { 177 if ( line.left(4 ) == "SUCO" ) {
186 val = line.mid( 4,len-5).toInt( &ok ); 178 val = line.mid( 4,len-5).toInt( &ok );
187 if ( ok ) 179 if ( ok )
188 confSuspend ( val ); 180 confSuspend ( val );
189 } 181 }
190 if ( line.left(4 ) == "WAAL" ) { 182 if ( line.left(4 ) == "WAAL" ) {
191 val = line.mid( 4,len-5).toInt( &ok ); 183 val = line.mid( 4,len-5).toInt( &ok );
192 if ( ok ) 184 if ( ok )
193 confSound( val ); 185 confSound( val );
194 186
195 } 187 }
196 if ( line.left(4 ) == "PLBE" ) { 188 if ( line.left(4 ) == "PLBE" ) {
197 val = line.mid( 4,len-5).toInt( &ok ); 189 val = line.mid( 4,len-5).toInt( &ok );
198 if ( ok ) 190 if ( ok )
199 slotPlayBeep( val ); 191 slotPlayBeep( val );
200 192
201 } 193 }
202 if ( line.left(4 ) == "CUTE" ) { 194 if ( line.left(4 ) == "CUTE" ) {
203 mCustomText = line.mid( 5,len-6); 195 mCustomText = line.mid( 5,len-6);
204 // qDebug("text ***%s*** ",mCustomText.latin1() ); 196 // qDebug("text ***%s*** ",mCustomText.latin1() );
205 197
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 79fb727..2ba8528 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -2422,256 +2422,257 @@ bool CalendarView::openCalendar(QString filename, bool merge)
2422 updateView(); 2422 updateView();
2423 } 2423 }
2424 return false; 2424 return false;
2425} 2425}
2426void CalendarView::mergeFile( QString fn ) 2426void CalendarView::mergeFile( QString fn )
2427{ 2427{
2428 clearAllViews(); 2428 clearAllViews();
2429 mCalendar->mergeCalendarFile( fn ); 2429 mCalendar->mergeCalendarFile( fn );
2430 mCalendar->reInitAlarmSettings(); 2430 mCalendar->reInitAlarmSettings();
2431 setSyncEventsReadOnly(); 2431 setSyncEventsReadOnly();
2432 updateUnmanagedViews(); 2432 updateUnmanagedViews();
2433 updateView(); 2433 updateView();
2434} 2434}
2435void CalendarView::showOpenError() 2435void CalendarView::showOpenError()
2436{ 2436{
2437 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2437 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2438} 2438}
2439void CalendarView::setLoadedFileVersion(QDateTime dt) 2439void CalendarView::setLoadedFileVersion(QDateTime dt)
2440{ 2440{
2441 loadedFileVersion = dt; 2441 loadedFileVersion = dt;
2442} 2442}
2443bool CalendarView::checkFileChanged(QString fn) 2443bool CalendarView::checkFileChanged(QString fn)
2444{ 2444{
2445 QFileInfo finf ( fn ); 2445 QFileInfo finf ( fn );
2446 if ( !finf.exists() ) 2446 if ( !finf.exists() )
2447 return true; 2447 return true;
2448 QDateTime dt = finf.lastModified (); 2448 QDateTime dt = finf.lastModified ();
2449 if ( dt <= loadedFileVersion ) 2449 if ( dt <= loadedFileVersion )
2450 return false; 2450 return false;
2451 return true; 2451 return true;
2452 2452
2453} 2453}
2454void CalendarView::watchSavedFile() 2454void CalendarView::watchSavedFile()
2455{ 2455{
2456 QFileInfo finf ( MainWindow::defaultFileName()); 2456 QFileInfo finf ( MainWindow::defaultFileName());
2457 if ( !finf.exists() ) 2457 if ( !finf.exists() )
2458 return; 2458 return;
2459 QDateTime dt = finf.lastModified (); 2459 QDateTime dt = finf.lastModified ();
2460 if ( dt < loadedFileVersion ) { 2460 if ( dt < loadedFileVersion ) {
2461 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2461 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2462 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2462 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2463 return; 2463 return;
2464 } 2464 }
2465 loadedFileVersion = dt; 2465 loadedFileVersion = dt;
2466} 2466}
2467bool CalendarView::checkAllFileVersions() 2467bool CalendarView::checkAllFileVersions()
2468{ 2468{
2469 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2469 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2470 KopiCalendarFile * cal = calendars.first(); 2470 KopiCalendarFile * cal = calendars.first();
2471 mCalendar->setDefaultCalendar( 1 ); 2471 mCalendar->setDefaultCalendar( 1 );
2472 mCalendar->setDefaultCalendarEnabledOnly(); 2472 mCalendar->setDefaultCalendarEnabledOnly();
2473 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2473 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2474 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2474 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2475 restoreCalendarSettings(); 2475 restoreCalendarSettings();
2476 return false; 2476 return false;
2477 } 2477 }
2478 } 2478 }
2479 cal = calendars.next(); 2479 cal = calendars.next();
2480 QDateTime storeTemp = loadedFileVersion; 2480 QDateTime storeTemp = loadedFileVersion;
2481 while ( cal ) { 2481 while ( cal ) {
2482 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2482 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2483 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2483 mCalendar->setDefaultCalendar( cal->mCalNumber );
2484 mCalendar->setDefaultCalendarEnabledOnly(); 2484 mCalendar->setDefaultCalendarEnabledOnly();
2485 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2485 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2486 if ( !checkFileVersion(cal->mFileName )) { 2486 if ( !checkFileVersion(cal->mFileName )) {
2487 loadedFileVersion = storeTemp; 2487 loadedFileVersion = storeTemp;
2488 restoreCalendarSettings(); 2488 restoreCalendarSettings();
2489 return false; 2489 return false;
2490 } 2490 }
2491 } 2491 }
2492 cal = calendars.next(); 2492 cal = calendars.next();
2493 } 2493 }
2494 loadedFileVersion = storeTemp; 2494 loadedFileVersion = storeTemp;
2495 return true; 2495 return true;
2496} 2496}
2497bool CalendarView::checkFileVersion(QString fn) 2497bool CalendarView::checkFileVersion(QString fn)
2498{ 2498{
2499 QFileInfo finf ( fn ); 2499 QFileInfo finf ( fn );
2500 if ( !finf.exists() ) 2500 if ( !finf.exists() )
2501 return true; 2501 return true;
2502 QDateTime dt = finf.lastModified (); 2502 QDateTime dt = finf.lastModified ();
2503 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2503 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2504 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2504 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2505 if ( dt <= loadedFileVersion ) 2505 if ( dt <= loadedFileVersion )
2506 return true; 2506 return true;
2507 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2507 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2508 i18n("KO/Pi Warning"),i18n("Overwrite"), 2508 i18n("KO/Pi Warning"),i18n("Overwrite"),
2509 i18n("Sync+save")); 2509 i18n("Sync+save"));
2510 2510
2511 if ( km == KMessageBox::Cancel ) 2511 if ( km == KMessageBox::Cancel )
2512 return false; 2512 return false;
2513 if ( km == KMessageBox::Yes ) 2513 if ( km == KMessageBox::Yes )
2514 return true; 2514 return true;
2515 2515
2516 setSyncDevice("deleteaftersync" ); 2516 setSyncDevice("deleteaftersync" );
2517 mSyncManager->mAskForPreferences = true; 2517 mSyncManager->mAskForPreferences = true;
2518 mSyncManager->mSyncAlgoPrefs = 3; 2518 mSyncManager->mSyncAlgoPrefs = 3;
2519 mSyncManager->mWriteBackFile = false; 2519 mSyncManager->mWriteBackFile = false;
2520 mSyncManager->mWriteBackExistingOnly = false; 2520 mSyncManager->mWriteBackExistingOnly = false;
2521 mSyncManager->mShowSyncSummary = false; 2521 mSyncManager->mShowSyncSummary = false;
2522 syncCalendar( fn, 3 ); 2522 syncCalendar( fn, 3 );
2523 Event * e = getLastSyncEvent(); 2523 Event * e = getLastSyncEvent();
2524 if ( e ) 2524 if ( e )
2525 mCalendar->deleteEvent( e ); 2525 mCalendar->deleteEvent( e );
2526 return true; 2526 return true;
2527} 2527}
2528bool CalendarView::saveCalendars() 2528bool CalendarView::saveCalendars()
2529{ 2529{
2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2531 KopiCalendarFile * cal = calendars.first(); 2531 KopiCalendarFile * cal = calendars.first();
2532 mCalendar->setDefaultCalendar( 1 ); 2532 mCalendar->setDefaultCalendar( 1 );
2533 mCalendar->setDefaultCalendarEnabledOnly(); 2533 mCalendar->setDefaultCalendarEnabledOnly();
2534 QString saveError; 2534 QString saveError;
2535 if ( !saveCalendar( MainWindow::defaultFileName() ) ) 2535 if ( !saveCalendar( MainWindow::defaultFileName() ) )
2536 saveError = cal->mName +"\n"; 2536 saveError = cal->mName +"\n";
2537 cal = calendars.next(); 2537 cal = calendars.next();
2538 while ( cal ) { 2538 while ( cal ) {
2539 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2539 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2540 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2540 mCalendar->setDefaultCalendar( cal->mCalNumber );
2541 mCalendar->setDefaultCalendarEnabledOnly(); 2541 mCalendar->setDefaultCalendarEnabledOnly();
2542 if ( saveCalendar( cal->mFileName ) ) 2542 if ( saveCalendar( cal->mFileName ) )
2543 cal->mLoadDt = QDateTime::currentDateTime(); 2543 cal->mLoadDt = QDateTime::currentDateTime();
2544 else 2544 else
2545 saveError += cal->mName + "\n"; 2545 saveError += cal->mName + "\n";
2546 } 2546 }
2547 cal = calendars.next(); 2547 cal = calendars.next();
2548 } 2548 }
2549 restoreCalendarSettings(); 2549 restoreCalendarSettings();
2550 //saveError = "test error";
2550 if ( !saveError.isEmpty() ) { 2551 if ( !saveError.isEmpty() ) {
2551 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2552 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2552 KMessageBox::error(this, saveError, i18n("Error saving data")); 2553 KMessageBox::error(this, saveError, i18n("Error saving data"));
2553 return false; 2554 return false;
2554 } 2555 }
2555 return true; 2556 return true;
2556} 2557}
2557bool CalendarView::saveCalendar( QString filename ) 2558bool CalendarView::saveCalendar( QString filename )
2558{ 2559{
2559 2560
2560 // Store back all unsaved data into calendar object 2561 // Store back all unsaved data into calendar object
2561 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2562 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2562 if ( mViewManager->currentView() ) 2563 if ( mViewManager->currentView() )
2563 mViewManager->currentView()->flushView(); 2564 mViewManager->currentView()->flushView();
2564 2565
2565 2566
2566 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2567 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2567 mStorage->setSaveFormat( new ICalFormat() ); 2568 mStorage->setSaveFormat( new ICalFormat() );
2568 mStorage->setFileName( filename ); 2569 mStorage->setFileName( filename );
2569 bool success; 2570 bool success;
2570 success = mStorage->save(); 2571 success = mStorage->save();
2571 if ( !success ) { 2572 if ( !success ) {
2572 return false; 2573 return false;
2573 } 2574 }
2574 if ( filename == MainWindow::defaultFileName() ) { 2575 if ( filename == MainWindow::defaultFileName() ) {
2575 setLoadedFileVersion( lfv ); 2576 setLoadedFileVersion( lfv );
2576 watchSavedFile(); 2577 watchSavedFile();
2577 } 2578 }
2578 return true; 2579 return true;
2579} 2580}
2580 2581
2581void CalendarView::closeCalendar() 2582void CalendarView::closeCalendar()
2582{ 2583{
2583 2584
2584 // child windows no longer valid 2585 // child windows no longer valid
2585 clearAllViews(); 2586 clearAllViews();
2586 emit closingDown(); 2587 emit closingDown();
2587 2588
2588 mCalendar->close(); 2589 mCalendar->close();
2589 setModified(false); 2590 setModified(false);
2590 updateView(); 2591 updateView();
2591} 2592}
2592 2593
2593void CalendarView::archiveCalendar() 2594void CalendarView::archiveCalendar()
2594{ 2595{
2595 mDialogManager->showArchiveDialog(); 2596 mDialogManager->showArchiveDialog();
2596} 2597}
2597 2598
2598 2599
2599void CalendarView::readSettings() 2600void CalendarView::readSettings()
2600{ 2601{
2601 2602
2602 2603
2603 // mViewManager->showAgendaView(); 2604 // mViewManager->showAgendaView();
2604 QString str; 2605 QString str;
2605 //qDebug("CalendarView::readSettings() "); 2606 //qDebug("CalendarView::readSettings() ");
2606 // read settings from the KConfig, supplying reasonable 2607 // read settings from the KConfig, supplying reasonable
2607 // defaults where none are to be found 2608 // defaults where none are to be found
2608 KConfig *config = KOGlobals::config(); 2609 KConfig *config = KOGlobals::config();
2609#ifndef KORG_NOSPLITTER 2610#ifndef KORG_NOSPLITTER
2610 config->setGroup("KOrganizer Geometry"); 2611 config->setGroup("KOrganizer Geometry");
2611 2612
2612 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2613 QValueList<int> sizes = config->readIntListEntry("Separator1");
2613 if (sizes.count() != 2) { 2614 if (sizes.count() != 2) {
2614 sizes << mDateNavigator->minimumSizeHint().width(); 2615 sizes << mDateNavigator->minimumSizeHint().width();
2615 sizes << 300; 2616 sizes << 300;
2616 } 2617 }
2617 mPanner->setSizes(sizes); 2618 mPanner->setSizes(sizes);
2618 2619
2619 sizes = config->readIntListEntry("Separator2"); 2620 sizes = config->readIntListEntry("Separator2");
2620 if ( ( mResourceView && sizes.count() == 4 ) || 2621 if ( ( mResourceView && sizes.count() == 4 ) ||
2621 ( !mResourceView && sizes.count() == 3 ) ) { 2622 ( !mResourceView && sizes.count() == 3 ) ) {
2622 mLeftSplitter->setSizes(sizes); 2623 mLeftSplitter->setSizes(sizes);
2623 } 2624 }
2624#endif 2625#endif
2625 globalFlagBlockAgenda = 1; 2626 globalFlagBlockAgenda = 1;
2626 mViewManager->showAgendaView(); 2627 mViewManager->showAgendaView();
2627 //mViewManager->readSettings( config ); 2628 //mViewManager->readSettings( config );
2628 mTodoList->restoreLayout(config,QString("Todo Layout")); 2629 mTodoList->restoreLayout(config,QString("Todo Layout"));
2629 readFilterSettings(config); 2630 readFilterSettings(config);
2630 2631
2631#ifdef DESKTOP_VERSION 2632#ifdef DESKTOP_VERSION
2632 config->setGroup("WidgetLayout"); 2633 config->setGroup("WidgetLayout");
2633 QStringList list; 2634 QStringList list;
2634 list = config->readListEntry("MainLayout"); 2635 list = config->readListEntry("MainLayout");
2635 int x,y,w,h; 2636 int x,y,w,h;
2636 if ( ! list.isEmpty() ) { 2637 if ( ! list.isEmpty() ) {
2637 x = list[0].toInt(); 2638 x = list[0].toInt();
2638 y = list[1].toInt(); 2639 y = list[1].toInt();
2639 w = list[2].toInt(); 2640 w = list[2].toInt();
2640 h = list[3].toInt(); 2641 h = list[3].toInt();
2641 KApplication::testCoords( &x,&y,&w,&h ); 2642 KApplication::testCoords( &x,&y,&w,&h );
2642 topLevelWidget()->setGeometry(x,y,w,h); 2643 topLevelWidget()->setGeometry(x,y,w,h);
2643 2644
2644 } else { 2645 } else {
2645 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2646 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2646 } 2647 }
2647 list = config->readListEntry("EditEventLayout"); 2648 list = config->readListEntry("EditEventLayout");
2648 if ( ! list.isEmpty() ) { 2649 if ( ! list.isEmpty() ) {
2649 x = list[0].toInt(); 2650 x = list[0].toInt();
2650 y = list[1].toInt(); 2651 y = list[1].toInt();
2651 w = list[2].toInt(); 2652 w = list[2].toInt();
2652 h = list[3].toInt(); 2653 h = list[3].toInt();
2653 KApplication::testCoords( &x,&y,&w,&h ); 2654 KApplication::testCoords( &x,&y,&w,&h );
2654 mEventEditor->setGeometry(x,y,w,h); 2655 mEventEditor->setGeometry(x,y,w,h);
2655 2656
2656 } 2657 }
2657 list = config->readListEntry("EditTodoLayout"); 2658 list = config->readListEntry("EditTodoLayout");
2658 if ( ! list.isEmpty() ) { 2659 if ( ! list.isEmpty() ) {
2659 x = list[0].toInt(); 2660 x = list[0].toInt();
2660 y = list[1].toInt(); 2661 y = list[1].toInt();
2661 w = list[2].toInt(); 2662 w = list[2].toInt();
2662 h = list[3].toInt(); 2663 h = list[3].toInt();
2663 KApplication::testCoords( &x,&y,&w,&h ); 2664 KApplication::testCoords( &x,&y,&w,&h );
2664 mTodoEditor->setGeometry(x,y,w,h); 2665 mTodoEditor->setGeometry(x,y,w,h);
2665 2666
2666 } 2667 }
2667 list = config->readListEntry("ViewerLayout"); 2668 list = config->readListEntry("ViewerLayout");
2668 if ( ! list.isEmpty() ) { 2669 if ( ! list.isEmpty() ) {
2669 x = list[0].toInt(); 2670 x = list[0].toInt();
2670 y = list[1].toInt(); 2671 y = list[1].toInt();
2671 w = list[2].toInt(); 2672 w = list[2].toInt();
2672 h = list[3].toInt(); 2673 h = list[3].toInt();
2673 KApplication::testCoords( &x,&y,&w,&h ); 2674 KApplication::testCoords( &x,&y,&w,&h );
2674 getEventViewerDialog()->setGeometry(x,y,w,h); 2675 getEventViewerDialog()->setGeometry(x,y,w,h);
2675 } 2676 }
2676#endif 2677#endif
2677 config->setGroup( "Views" ); 2678 config->setGroup( "Views" );
@@ -4338,266 +4339,268 @@ void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
4338 todo = static_cast<Todo *>(incidence); 4339 todo = static_cast<Todo *>(incidence);
4339 } 4340 }
4340 4341
4341 if (!event && !todo) { 4342 if (!event && !todo) {
4342 KMessageBox::sorry(this,i18n("No event selected.")); 4343 KMessageBox::sorry(this,i18n("No event selected."));
4343 return; 4344 return;
4344 } 4345 }
4345 4346
4346 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 4347 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
4347 KMessageBox::sorry(this,i18n("The event has no attendees.")); 4348 KMessageBox::sorry(this,i18n("The event has no attendees."));
4348 return; 4349 return;
4349 } 4350 }
4350 4351
4351 Event *ev = 0; 4352 Event *ev = 0;
4352 if (event) ev = new Event(*event); 4353 if (event) ev = new Event(*event);
4353 Todo *to = 0; 4354 Todo *to = 0;
4354 if (todo) to = new Todo(*todo); 4355 if (todo) to = new Todo(*todo);
4355 4356
4356 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 4357 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
4357 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 4358 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
4358 if (!me) { 4359 if (!me) {
4359 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 4360 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
4360 return; 4361 return;
4361 } 4362 }
4362 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 4363 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
4363 StatusDialog *statdlg = new StatusDialog(this); 4364 StatusDialog *statdlg = new StatusDialog(this);
4364 if (!statdlg->exec()==QDialog::Accepted) return; 4365 if (!statdlg->exec()==QDialog::Accepted) return;
4365 me->setStatus( statdlg->status() ); 4366 me->setStatus( statdlg->status() );
4366 delete(statdlg); 4367 delete(statdlg);
4367 } 4368 }
4368 Attendee *menew = new Attendee(*me); 4369 Attendee *menew = new Attendee(*me);
4369 if (ev) { 4370 if (ev) {
4370 ev->clearAttendees(); 4371 ev->clearAttendees();
4371 ev->addAttendee(menew,false); 4372 ev->addAttendee(menew,false);
4372 } else { 4373 } else {
4373 if (to) { 4374 if (to) {
4374 todo->clearAttendees(); 4375 todo->clearAttendees();
4375 todo->addAttendee(menew,false); 4376 todo->addAttendee(menew,false);
4376 } 4377 }
4377 } 4378 }
4378 } 4379 }
4379 4380
4380 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4381 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4381 if (ev) { 4382 if (ev) {
4382 if ( !dlg->addMessage(ev,method) ) delete(ev); 4383 if ( !dlg->addMessage(ev,method) ) delete(ev);
4383 } else { 4384 } else {
4384 if (to) { 4385 if (to) {
4385 if ( !dlg->addMessage(to,method) ) delete(to); 4386 if ( !dlg->addMessage(to,method) ) delete(to);
4386 } 4387 }
4387 } 4388 }
4388} 4389}
4389 4390
4390void CalendarView::openAddressbook() 4391void CalendarView::openAddressbook()
4391{ 4392{
4392 KRun::runCommand("kaddressbook"); 4393 KRun::runCommand("kaddressbook");
4393} 4394}
4394 4395
4395void CalendarView::setModified(bool modified) 4396void CalendarView::setModified(bool modified)
4396{ 4397{
4397 //qDebug("CalendarView::setModified %d ", modified); 4398 //qDebug("CalendarView::setModified %d ", modified);
4398 if ( modified ) 4399 if ( modified )
4399 emit signalmodified(); 4400 emit signalmodified();
4400 mModified = modified; 4401 mModified = modified;
4401 if ( mModified ) 4402 if ( mModified )
4402 emit modifiedChanged(mModified); 4403 emit modifiedChanged(mModified);
4403 4404
4404} 4405}
4405 4406
4406bool CalendarView::isReadOnly() 4407bool CalendarView::isReadOnly()
4407{ 4408{
4408 return mReadOnly; 4409 return mReadOnly;
4409} 4410}
4410 4411
4411void CalendarView::setReadOnly(bool readOnly) 4412void CalendarView::setReadOnly(bool readOnly)
4412{ 4413{
4413 if (mReadOnly != readOnly) { 4414 if (mReadOnly != readOnly) {
4414 mReadOnly = readOnly; 4415 mReadOnly = readOnly;
4415 emit readOnlyChanged(mReadOnly); 4416 emit readOnlyChanged(mReadOnly);
4416 } 4417 }
4417} 4418}
4418 4419
4419bool CalendarView::isModified() 4420bool CalendarView::isModified()
4420{ 4421{
4421 return mModified; 4422 return mModified;
4422} 4423}
4423void CalendarView::slotprintSelInc() 4424void CalendarView::slotprintSelInc()
4424{ 4425{
4425 if ( currentSelection() == 0 ) { 4426 if ( currentSelection() == 0 ) {
4426 KMessageBox::sorry(this,i18n("There is nothing selected!")); 4427 KMessageBox::sorry(this,i18n("There is nothing selected!"));
4427 return; 4428 return;
4428 } 4429 }
4429 showIncidence(); 4430 showIncidence();
4430 getEventViewerDialog()->print(); 4431 getEventViewerDialog()->print();
4431 4432
4432} 4433}
4433void CalendarView::printSetup() 4434void CalendarView::printSetup()
4434{ 4435{
4435#ifndef KORG_NOPRINTER 4436#ifndef KORG_NOPRINTER
4436 createPrinter(); 4437 createPrinter();
4437 4438
4438 mCalPrinter->setupPrinter(); 4439 mCalPrinter->setupPrinter();
4439#endif 4440#endif
4440} 4441}
4441 4442
4442void CalendarView::print() 4443void CalendarView::print()
4443{ 4444{
4444#ifndef KORG_NOPRINTER 4445#ifndef KORG_NOPRINTER
4445 createPrinter(); 4446 createPrinter();
4446 4447
4447 DateList tmpDateList = mNavigator->selectedDates(); 4448 DateList tmpDateList = mNavigator->selectedDates();
4448 mCalPrinter->print(CalPrinter::Month, 4449 mCalPrinter->print(CalPrinter::Month,
4449 tmpDateList.first(), tmpDateList.last()); 4450 tmpDateList.first(), tmpDateList.last());
4450#endif 4451#endif
4451} 4452}
4452 4453
4453void CalendarView::printPreview() 4454void CalendarView::printPreview()
4454{ 4455{
4455#ifndef KORG_NOPRINTER 4456#ifndef KORG_NOPRINTER
4456 kdDebug() << "CalendarView::printPreview()" << endl; 4457 kdDebug() << "CalendarView::printPreview()" << endl;
4457 4458
4458 createPrinter(); 4459 createPrinter();
4459 4460
4460 DateList tmpDateList = mNavigator->selectedDates(); 4461 DateList tmpDateList = mNavigator->selectedDates();
4461 4462
4462 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 4463 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
4463 tmpDateList.last()); 4464 tmpDateList.last());
4464#endif 4465#endif
4465} 4466}
4466 4467bool CalendarView::exportICalendar( QString filename )
4467void CalendarView::exportICalendar()
4468{ 4468{
4469 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
4470
4471 // Force correct extension 4469 // Force correct extension
4472 if (filename.right(4) != ".ics") filename += ".ics"; 4470 if (filename.right(4) != ".ics") filename += ".ics";
4473 4471
4474 FileStorage storage( mCalendar, filename, new ICalFormat() ); 4472 FileStorage storage( mCalendar, filename, new ICalFormat() );
4475 storage.save(); 4473 return storage.save();
4474}
4475
4476bool CalendarView::exportICalendar()
4477{
4478 return exportICalendar( KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this) );
4476} 4479}
4477 4480
4478bool CalendarView::exportVCalendar( QString filename ) 4481bool CalendarView::exportVCalendar( QString filename )
4479{ 4482{
4480 if (mCalendar->journals().count() > 0) { 4483 if (mCalendar->journals().count() > 0) {
4481 int result = KMessageBox::warningContinueCancel(this, 4484 int result = KMessageBox::warningContinueCancel(this,
4482 i18n("The journal entries can not be\nexported to a vCalendar file."), 4485 i18n("The journal entries can not be\nexported to a vCalendar file."),
4483 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 4486 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
4484 true); 4487 true);
4485 if (result != KMessageBox::Continue) return false; 4488 if (result != KMessageBox::Continue) return false;
4486 } 4489 }
4487 4490
4488 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 4491 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
4489 4492
4490 // Force correct extension 4493 // Force correct extension
4491 if (filename.right(4) != ".vcs") filename += ".vcs"; 4494 if (filename.right(4) != ".vcs") filename += ".vcs";
4492 4495
4493 FileStorage storage( mCalendar, filename, new VCalFormat ); 4496 FileStorage storage( mCalendar, filename, new VCalFormat );
4494 return storage.save(); 4497 return storage.save();
4495 4498
4496} 4499}
4497 4500
4498void CalendarView::eventUpdated(Incidence *) 4501void CalendarView::eventUpdated(Incidence *)
4499{ 4502{
4500 setModified(); 4503 setModified();
4501 // Don't call updateView here. The code, which has caused the update of the 4504 // Don't call updateView here. The code, which has caused the update of the
4502 // event is responsible for updating the view. 4505 // event is responsible for updating the view.
4503 // updateView(); 4506 // updateView();
4504} 4507}
4505 4508
4506void CalendarView::adaptNavigationUnits() 4509void CalendarView::adaptNavigationUnits()
4507{ 4510{
4508 if (mViewManager->currentView()->isEventView()) { 4511 if (mViewManager->currentView()->isEventView()) {
4509 int days = mViewManager->currentView()->currentDateCount(); 4512 int days = mViewManager->currentView()->currentDateCount();
4510 if (days == 1) { 4513 if (days == 1) {
4511 emit changeNavStringPrev(i18n("&Previous Day")); 4514 emit changeNavStringPrev(i18n("&Previous Day"));
4512 emit changeNavStringNext(i18n("&Next Day")); 4515 emit changeNavStringNext(i18n("&Next Day"));
4513 } else { 4516 } else {
4514 emit changeNavStringPrev(i18n("&Previous Week")); 4517 emit changeNavStringPrev(i18n("&Previous Week"));
4515 emit changeNavStringNext(i18n("&Next Week")); 4518 emit changeNavStringNext(i18n("&Next Week"));
4516 } 4519 }
4517 } 4520 }
4518} 4521}
4519 4522
4520void CalendarView::processMainViewSelection( Incidence *incidence ) 4523void CalendarView::processMainViewSelection( Incidence *incidence )
4521{ 4524{
4522 if ( incidence ) mTodoList->clearSelection(); 4525 if ( incidence ) mTodoList->clearSelection();
4523 processIncidenceSelection( incidence ); 4526 processIncidenceSelection( incidence );
4524} 4527}
4525 4528
4526void CalendarView::processTodoListSelection( Incidence *incidence ) 4529void CalendarView::processTodoListSelection( Incidence *incidence )
4527{ 4530{
4528 if ( incidence && mViewManager->currentView() ) { 4531 if ( incidence && mViewManager->currentView() ) {
4529 mViewManager->currentView()->clearSelection(); 4532 mViewManager->currentView()->clearSelection();
4530 } 4533 }
4531 processIncidenceSelection( incidence ); 4534 processIncidenceSelection( incidence );
4532} 4535}
4533 4536
4534void CalendarView::processIncidenceSelection( Incidence *incidence ) 4537void CalendarView::processIncidenceSelection( Incidence *incidence )
4535{ 4538{
4536 emit incidenceSelected( incidence ); 4539 emit incidenceSelected( incidence );
4537 if ( incidence == mSelectedIncidence ) return; 4540 if ( incidence == mSelectedIncidence ) return;
4538 mSelectedIncidence = incidence; 4541 mSelectedIncidence = incidence;
4539 4542
4540 if ( incidence && incidence->typeID() == eventID ) { 4543 if ( incidence && incidence->typeID() == eventID ) {
4541 Event *event = static_cast<Event *>( incidence ); 4544 Event *event = static_cast<Event *>( incidence );
4542 if ( event->organizer() == KOPrefs::instance()->email() ) { 4545 if ( event->organizer() == KOPrefs::instance()->email() ) {
4543 emit organizerEventsSelected( true ); 4546 emit organizerEventsSelected( true );
4544 } else { 4547 } else {
4545 emit organizerEventsSelected(false); 4548 emit organizerEventsSelected(false);
4546 } 4549 }
4547 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4550 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4548 KOPrefs::instance()->email() ) ) { 4551 KOPrefs::instance()->email() ) ) {
4549 emit groupEventsSelected( true ); 4552 emit groupEventsSelected( true );
4550 } else { 4553 } else {
4551 emit groupEventsSelected(false); 4554 emit groupEventsSelected(false);
4552 } 4555 }
4553 return; 4556 return;
4554 } else { 4557 } else {
4555 if ( incidence && incidence->typeID() == todoID ) { 4558 if ( incidence && incidence->typeID() == todoID ) {
4556 emit todoSelected( true ); 4559 emit todoSelected( true );
4557 Todo *event = static_cast<Todo *>( incidence ); 4560 Todo *event = static_cast<Todo *>( incidence );
4558 if ( event->organizer() == KOPrefs::instance()->email() ) { 4561 if ( event->organizer() == KOPrefs::instance()->email() ) {
4559 emit organizerEventsSelected( true ); 4562 emit organizerEventsSelected( true );
4560 } else { 4563 } else {
4561 emit organizerEventsSelected(false); 4564 emit organizerEventsSelected(false);
4562 } 4565 }
4563 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4566 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4564 KOPrefs::instance()->email() ) ) { 4567 KOPrefs::instance()->email() ) ) {
4565 emit groupEventsSelected( true ); 4568 emit groupEventsSelected( true );
4566 } else { 4569 } else {
4567 emit groupEventsSelected(false); 4570 emit groupEventsSelected(false);
4568 } 4571 }
4569 return; 4572 return;
4570 } else { 4573 } else {
4571 emit todoSelected( false ); 4574 emit todoSelected( false );
4572 emit organizerEventsSelected(false); 4575 emit organizerEventsSelected(false);
4573 emit groupEventsSelected(false); 4576 emit groupEventsSelected(false);
4574 } 4577 }
4575 return; 4578 return;
4576 } 4579 }
4577 4580
4578 /* if ( incidence && incidence->typeID() == todoID ) { 4581 /* if ( incidence && incidence->typeID() == todoID ) {
4579 emit todoSelected( true ); 4582 emit todoSelected( true );
4580 } else { 4583 } else {
4581 emit todoSelected( false ); 4584 emit todoSelected( false );
4582 }*/ 4585 }*/
4583} 4586}
4584 4587
4585 4588
4586void CalendarView::checkClipboard() 4589void CalendarView::checkClipboard()
4587{ 4590{
4588#ifndef KORG_NODND 4591#ifndef KORG_NODND
4589 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 4592 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
4590 emit pasteEnabled(true); 4593 emit pasteEnabled(true);
4591 } else { 4594 } else {
4592 emit pasteEnabled(false); 4595 emit pasteEnabled(false);
4593 } 4596 }
4594#endif 4597#endif
4595} 4598}
4596 4599
4597void CalendarView::showDates(const DateList &selectedDates) 4600void CalendarView::showDates(const DateList &selectedDates)
4598{ 4601{
4599 // kdDebug() << "CalendarView::selectDates()" << endl; 4602 // kdDebug() << "CalendarView::selectDates()" << endl;
4600 4603
4601 4604
4602 if ( !mBlockShowDates ) { 4605 if ( !mBlockShowDates ) {
4603 if ( mViewManager->currentView() ) { 4606 if ( mViewManager->currentView() ) {
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index b223315..8670832 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -251,257 +251,258 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
251 calendar. 251 calendar.
252 */ 252 */
253 void closeCalendar(); 253 void closeCalendar();
254 254
255 /** Archive old events of calendar */ 255 /** Archive old events of calendar */
256 void archiveCalendar(); 256 void archiveCalendar();
257 257
258 void showIncidence(); 258 void showIncidence();
259 void editIncidence(); 259 void editIncidence();
260 void editIncidenceDescription(); 260 void editIncidenceDescription();
261 void deleteIncidence(); 261 void deleteIncidence();
262 void cloneIncidence(); 262 void cloneIncidence();
263 void moveIncidence(); 263 void moveIncidence();
264 void beamIncidence(); 264 void beamIncidence();
265 void toggleCancelIncidence(); 265 void toggleCancelIncidence();
266 266
267 /** create an editeventwin with supplied date/time, and if bool is true, 267 /** create an editeventwin with supplied date/time, and if bool is true,
268 * make the event take all day. */ 268 * make the event take all day. */
269 void newEvent(QDateTime, QDateTime, bool allDay ); 269 void newEvent(QDateTime, QDateTime, bool allDay );
270 void newEvent(QDateTime, QDateTime); 270 void newEvent(QDateTime, QDateTime);
271 void newEvent(QDateTime fh); 271 void newEvent(QDateTime fh);
272 void newEvent(QDate dt); 272 void newEvent(QDate dt);
273 /** create new event without having a date hint. Takes current date as 273 /** create new event without having a date hint. Takes current date as
274 default hint. */ 274 default hint. */
275 void newEvent(); 275 void newEvent();
276 void newFloatingEvent(); 276 void newFloatingEvent();
277 277
278 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 278 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
279 void showIncidence(Incidence *); 279 void showIncidence(Incidence *);
280 void showIncidence(QString uid); 280 void showIncidence(QString uid);
281 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 281 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
282 void editIncidence(Incidence *); 282 void editIncidence(Incidence *);
283 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 283 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
284 void deleteIncidence(Incidence *); 284 void deleteIncidence(Incidence *);
285 void cloneIncidence(Incidence *); 285 void cloneIncidence(Incidence *);
286 void cancelIncidence(Incidence *); 286 void cancelIncidence(Incidence *);
287 /** Create an editor for the supplied event. */ 287 /** Create an editor for the supplied event. */
288 void editEvent(Event *); 288 void editEvent(Event *);
289 /** Delete the supplied event. */ 289 /** Delete the supplied event. */
290 void deleteEvent(Event *); 290 void deleteEvent(Event *);
291 /** Delete the event with the given unique ID. Returns false, if event wasn't 291 /** Delete the event with the given unique ID. Returns false, if event wasn't
292 found. */ 292 found. */
293 bool deleteEvent(const QString &uid); 293 bool deleteEvent(const QString &uid);
294 /** Create a read-only viewer dialog for the supplied event. */ 294 /** Create a read-only viewer dialog for the supplied event. */
295 void showEvent(Event *); 295 void showEvent(Event *);
296 296
297 void editJournal(Journal *); 297 void editJournal(Journal *);
298 void showJournal(Journal *); 298 void showJournal(Journal *);
299 void deleteJournal(Journal *); 299 void deleteJournal(Journal *);
300 /** Create an editor dialog for a todo */ 300 /** Create an editor dialog for a todo */
301 void editTodo(Todo *); 301 void editTodo(Todo *);
302 /** Create a read-only viewer dialog for the supplied todo */ 302 /** Create a read-only viewer dialog for the supplied todo */
303 void showTodo(Todo *); 303 void showTodo(Todo *);
304 /** create new todo */ 304 /** create new todo */
305 void newTodo(); 305 void newTodo();
306 void newTodoDateTime(QDateTime, bool allday); 306 void newTodoDateTime(QDateTime, bool allday);
307 /** create new todo with a parent todo */ 307 /** create new todo with a parent todo */
308 void newSubTodo(); 308 void newSubTodo();
309 /** create new todo with a parent todo */ 309 /** create new todo with a parent todo */
310 void newSubTodo(Todo *); 310 void newSubTodo(Todo *);
311 /** Delete todo */ 311 /** Delete todo */
312 void deleteTodo(Todo *); 312 void deleteTodo(Todo *);
313 313
314 314
315 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 315 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
316 * emitted as result. */ 316 * emitted as result. */
317 void checkClipboard(); 317 void checkClipboard();
318 318
319 /** using the KConfig associated with the kapp variable, read in the 319 /** using the KConfig associated with the kapp variable, read in the
320 * settings from the config file. 320 * settings from the config file.
321 */ 321 */
322 void readSettings(); 322 void readSettings();
323 323
324 /** write current state to config file. */ 324 /** write current state to config file. */
325 void writeSettings(); 325 void writeSettings();
326 326
327 /** read settings for calendar filters */ 327 /** read settings for calendar filters */
328 void readFilterSettings(KConfig *config); 328 void readFilterSettings(KConfig *config);
329 329
330 /** write settings for calendar filters */ 330 /** write settings for calendar filters */
331 void writeFilterSettings(KConfig *config); 331 void writeFilterSettings(KConfig *config);
332 332
333 /** passes on the message that an event has changed to the currently 333 /** passes on the message that an event has changed to the currently
334 * activated view so that it can make appropriate display changes. */ 334 * activated view so that it can make appropriate display changes. */
335 void changeEventDisplay(Event *, int); 335 void changeEventDisplay(Event *, int);
336 void changeIncidenceDisplay(Incidence *, int); 336 void changeIncidenceDisplay(Incidence *, int);
337 void changeTodoDisplay(Todo *, int); 337 void changeTodoDisplay(Todo *, int);
338 338
339 void eventAdded(Event *); 339 void eventAdded(Event *);
340 void eventChanged(Event *); 340 void eventChanged(Event *);
341 void eventToBeDeleted(Event *); 341 void eventToBeDeleted(Event *);
342 void eventDeleted(); 342 void eventDeleted();
343 343
344 void todoAdded(Todo *); 344 void todoAdded(Todo *);
345 void todoChanged(Todo *); 345 void todoChanged(Todo *);
346 void todoToBeDeleted(Todo *); 346 void todoToBeDeleted(Todo *);
347 void todoDeleted(); 347 void todoDeleted();
348 348
349 void updateView(const QDate &start, const QDate &end); 349 void updateView(const QDate &start, const QDate &end);
350 void updateView(); 350 void updateView();
351 void clearAllViews(); 351 void clearAllViews();
352 352
353 /** Full update of visible todo views */ 353 /** Full update of visible todo views */
354 void updateTodoViews(); 354 void updateTodoViews();
355 355
356 void updateUnmanagedViews(); 356 void updateUnmanagedViews();
357 357
358 /** cut the current appointment to the clipboard */ 358 /** cut the current appointment to the clipboard */
359 void edit_cut(); 359 void edit_cut();
360 360
361 /** copy the current appointment(s) to the clipboard */ 361 /** copy the current appointment(s) to the clipboard */
362 void edit_copy(); 362 void edit_copy();
363 363
364 /** paste the current vobject(s) in the clipboard buffer into calendar */ 364 /** paste the current vobject(s) in the clipboard buffer into calendar */
365 void edit_paste(); 365 void edit_paste();
366 366
367 /** edit viewing and configuration options. */ 367 /** edit viewing and configuration options. */
368 void edit_options(); 368 void edit_options();
369 void edit_global_options(); 369 void edit_global_options();
370 /** 370 /**
371 Functions for printing, previewing a print, and setting up printing 371 Functions for printing, previewing a print, and setting up printing
372 parameters. 372 parameters.
373 */ 373 */
374 void print(); 374 void print();
375 void printSetup(); 375 void printSetup();
376 void printPreview(); 376 void printPreview();
377 377
378 /** Export as iCalendar file */ 378 /** Export as iCalendar file */
379 void exportICalendar(); 379 bool exportICalendar();
380 bool exportICalendar( QString fn );
380 381
381 /** Export as vCalendar file */ 382 /** Export as vCalendar file */
382 bool exportVCalendar( QString fn); 383 bool exportVCalendar( QString fn);
383 384
384 /** pop up a dialog to show an existing appointment. */ 385 /** pop up a dialog to show an existing appointment. */
385 void appointment_show(); 386 void appointment_show();
386 /** 387 /**
387 * pop up an Appointment Dialog to edit an existing appointment.Get 388 * pop up an Appointment Dialog to edit an existing appointment.Get
388 * information on the appointment from the list of unique IDs that is 389 * information on the appointment from the list of unique IDs that is
389 * currently in the View, called currIds. 390 * currently in the View, called currIds.
390 */ 391 */
391 void appointment_edit(); 392 void appointment_edit();
392 /** 393 /**
393 * pop up dialog confirming deletion of currently selected event in the 394 * pop up dialog confirming deletion of currently selected event in the
394 * View. 395 * View.
395 */ 396 */
396 void appointment_delete(); 397 void appointment_delete();
397 398
398 /** mails the currently selected event to a particular user as a vCalendar 399 /** mails the currently selected event to a particular user as a vCalendar
399 attachment. */ 400 attachment. */
400 void action_mail(); 401 void action_mail();
401 402
402 /* frees a subtodo from it's relation */ 403 /* frees a subtodo from it's relation */
403 void todo_unsub( Todo * ); 404 void todo_unsub( Todo * );
404 void todo_resub( Todo * parent, Todo * sub ); 405 void todo_resub( Todo * parent, Todo * sub );
405 406
406 /** Take ownership of selected event. */ 407 /** Take ownership of selected event. */
407 void takeOverEvent(); 408 void takeOverEvent();
408 409
409 /** Take ownership of all events in calendar. */ 410 /** Take ownership of all events in calendar. */
410 void takeOverCalendar(); 411 void takeOverCalendar();
411 412
412 /** query whether or not the calendar is "dirty". */ 413 /** query whether or not the calendar is "dirty". */
413 bool isModified(); 414 bool isModified();
414 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 415 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
415 void setModified(bool modified=true); 416 void setModified(bool modified=true);
416 417
417 /** query if the calendar is read-only. */ 418 /** query if the calendar is read-only. */
418 bool isReadOnly(); 419 bool isReadOnly();
419 /** set state of calendar to read-only */ 420 /** set state of calendar to read-only */
420 void setReadOnly(bool readOnly=true); 421 void setReadOnly(bool readOnly=true);
421 422
422 void eventUpdated(Incidence *); 423 void eventUpdated(Incidence *);
423 424
424 /* iTIP scheduling actions */ 425 /* iTIP scheduling actions */
425 void schedule_publish(Incidence *incidence = 0); 426 void schedule_publish(Incidence *incidence = 0);
426 void schedule_request(Incidence *incidence = 0); 427 void schedule_request(Incidence *incidence = 0);
427 void schedule_refresh(Incidence *incidence = 0); 428 void schedule_refresh(Incidence *incidence = 0);
428 void schedule_cancel(Incidence *incidence = 0); 429 void schedule_cancel(Incidence *incidence = 0);
429 void schedule_add(Incidence *incidence = 0); 430 void schedule_add(Incidence *incidence = 0);
430 void schedule_reply(Incidence *incidence = 0); 431 void schedule_reply(Incidence *incidence = 0);
431 void schedule_counter(Incidence *incidence = 0); 432 void schedule_counter(Incidence *incidence = 0);
432 void schedule_declinecounter(Incidence *incidence = 0); 433 void schedule_declinecounter(Incidence *incidence = 0);
433 void schedule_publish_freebusy(int daysToPublish = 30); 434 void schedule_publish_freebusy(int daysToPublish = 30);
434 435
435 void openAddressbook(); 436 void openAddressbook();
436 437
437 void editFilters(); 438 void editFilters();
438 void toggleFilerEnabled(); 439 void toggleFilerEnabled();
439 QPtrList<CalFilter> filters(); 440 QPtrList<CalFilter> filters();
440 void toggleFilter(); 441 void toggleFilter();
441 void showFilter(bool visible); 442 void showFilter(bool visible);
442 void updateFilter(); 443 void updateFilter();
443 void filterEdited(); 444 void filterEdited();
444 void selectFilter( int ); 445 void selectFilter( int );
445 KOFilterView *filterView(); 446 KOFilterView *filterView();
446 447
447 void showIntro(); 448 void showIntro();
448 449
449 /** Move the curdatepient view date to today */ 450 /** Move the curdatepient view date to today */
450 void goToday(); 451 void goToday();
451 452
452 /** Move to the next date(s) in the current view */ 453 /** Move to the next date(s) in the current view */
453 void goNext(); 454 void goNext();
454 455
455 /** Move to the previous date(s) in the current view */ 456 /** Move to the previous date(s) in the current view */
456 void goPrevious(); 457 void goPrevious();
457 /** Move to the next date(s) in the current view */ 458 /** Move to the next date(s) in the current view */
458 void goNextMonth(); 459 void goNextMonth();
459 460
460 /** Move to the previous date(s) in the current view */ 461 /** Move to the previous date(s) in the current view */
461 void goPreviousMonth(); 462 void goPreviousMonth();
462 463
463 void toggleExpand(); 464 void toggleExpand();
464 void toggleDateNavigatorWidget(); 465 void toggleDateNavigatorWidget();
465 void toggleAllDaySize(); 466 void toggleAllDaySize();
466 467
467 /** Look for new messages in the inbox */ 468 /** Look for new messages in the inbox */
468 void lookForIncomingMessages(); 469 void lookForIncomingMessages();
469 /** Look for new messages in the outbox */ 470 /** Look for new messages in the outbox */
470 void lookForOutgoingMessages(); 471 void lookForOutgoingMessages();
471 472
472 void processMainViewSelection( Incidence * ); 473 void processMainViewSelection( Incidence * );
473 void processTodoListSelection( Incidence * ); 474 void processTodoListSelection( Incidence * );
474 475
475 void processIncidenceSelection( Incidence * ); 476 void processIncidenceSelection( Incidence * );
476 477
477 void purgeCompleted(); 478 void purgeCompleted();
478 bool removeCompletedSubTodos( Todo* ); 479 bool removeCompletedSubTodos( Todo* );
479 void slotCalendarChanged(); 480 void slotCalendarChanged();
480 bool importBday(); 481 bool importBday();
481 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 482 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
482 bool importQtopia( const QString &categoriesFile, 483 bool importQtopia( const QString &categoriesFile,
483 const QString &datebookFile, 484 const QString &datebookFile,
484 const QString &tasklistFile ); 485 const QString &tasklistFile );
485 void syncExternal( int mode ); 486 void syncExternal( int mode );
486 void slotSelectPickerDate( QDate ) ; 487 void slotSelectPickerDate( QDate ) ;
487 void showDatePicker() ; 488 void showDatePicker() ;
488 void showDatePickerPopup() ; 489 void showDatePickerPopup() ;
489 void moveIncidence(Incidence *) ; 490 void moveIncidence(Incidence *) ;
490 void beamIncidence(Incidence *) ; 491 void beamIncidence(Incidence *) ;
491 void beamCalendar() ; 492 void beamCalendar() ;
492 void beamFilteredCalendar() ; 493 void beamFilteredCalendar() ;
493 void beamIncidenceList(QPtrList<Incidence>) ; 494 void beamIncidenceList(QPtrList<Incidence>) ;
494 void manageCategories(); 495 void manageCategories();
495 void editCategories(); 496 void editCategories();
496 int addCategories(); 497 int addCategories();
497 void removeCategories(); 498 void removeCategories();
498 void setSyncDevice( QString ); 499 void setSyncDevice( QString );
499 void setSyncName( QString ); 500 void setSyncName( QString );
500 void showDay( QDate ); 501 void showDay( QDate );
501 void undo_delete(); 502 void undo_delete();
502 protected slots: 503 protected slots:
503 void resetFocus(); 504 void resetFocus();
504 void scrollBarValue(int); 505 void scrollBarValue(int);
505 void slotViewerClosed(); 506 void slotViewerClosed();
506 void timerAlarm(); 507 void timerAlarm();
507 void suspendAlarm(); 508 void suspendAlarm();
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 2af605f..98d3e35 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -398,280 +398,299 @@ MainWindow::MainWindow( QWidget *parent, const char *name ) :
398 updateWeek( mView->startDate() ); 398 updateWeek( mView->startDate() );
399 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ), 399 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ),
400 SLOT( updateWeekNum( const KCal::DateList & ) ) ); 400 SLOT( updateWeekNum( const KCal::DateList & ) ) );
401 mBRdisabled = false; 401 mBRdisabled = false;
402 //toggleBeamReceive(); 402 //toggleBeamReceive();
403 403
404 setCaption(i18n("Loading calendar files ... please wait" )); 404 setCaption(i18n("Loading calendar files ... please wait" ));
405 mSaveDelay = 0; 405 mSaveDelay = 0;
406 QTimer::singleShot( 1, this, SLOT ( loadDataAfterStart() )); 406 QTimer::singleShot( 1, this, SLOT ( loadDataAfterStart() ));
407} 407}
408MainWindow::~MainWindow() 408MainWindow::~MainWindow()
409{ 409{
410 //qDebug("MainWindow::~MainWindow() "); 410 //qDebug("MainWindow::~MainWindow() ");
411 //save toolbar location 411 //save toolbar location
412 delete mCalendar; 412 delete mCalendar;
413 delete mSyncManager; 413 delete mSyncManager;
414#ifndef DESKTOP_VERSION 414#ifndef DESKTOP_VERSION
415 if ( infrared ) 415 if ( infrared )
416 delete infrared; 416 delete infrared;
417#endif 417#endif
418 418
419 419
420} 420}
421 421
422void MainWindow::loadDataAfterStart() 422void MainWindow::loadDataAfterStart()
423{ 423{
424 424
425 qDebug("KO: Start loading files..." ); 425 qDebug("KO: Start loading files..." );
426 QTime neededSaveTime = QDateTime::currentDateTime().time(); 426 QTime neededSaveTime = QDateTime::currentDateTime().time();
427 mView->loadCalendars(); 427 mView->loadCalendars();
428 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 428 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
429 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 429 qDebug("KO: Calendar loading time: %d ms",msNeeded );
430 //QTimer::singleShot( 1000, mView, SLOT ( checkFiles() )); 430 //QTimer::singleShot( 1000, mView, SLOT ( checkFiles() ));
431 mView->setModified( false ); 431 mView->setModified( false );
432 mBlockAtStartup = false; 432 mBlockAtStartup = false;
433 mView->setModified( false ); 433 mView->setModified( false );
434 connect(mView , SIGNAL( save() ), this, SLOT( save() ) ); 434 connect(mView , SIGNAL( save() ), this, SLOT( save() ) );
435 processIncidenceSelection( 0 ); 435 processIncidenceSelection( 0 );
436 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 436 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
437 SLOT( processIncidenceSelection( Incidence * ) ) ); 437 SLOT( processIncidenceSelection( Incidence * ) ) );
438 connect( mView, SIGNAL( modifiedChanged( bool ) ), 438 connect( mView, SIGNAL( modifiedChanged( bool ) ),
439 SLOT( slotModifiedChanged( bool ) ) ); 439 SLOT( slotModifiedChanged( bool ) ) );
440 440
441#ifndef DESKTOP_VERSION 441#ifndef DESKTOP_VERSION
442 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 442 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
443 connect( qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), this, SLOT(recieve( const QCString&, const QByteArray& ))); 443 connect( qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), this, SLOT(recieve( const QCString&, const QByteArray& )));
444 disconnect( qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), this, SLOT(receiveStart( const QCString&, const QByteArray& ))); 444 disconnect( qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), this, SLOT(receiveStart( const QCString&, const QByteArray& )));
445 if ( !mCStringMess.isEmpty() ) 445 if ( !mCStringMess.isEmpty() )
446 recieve( mCStringMess, mByteData ); 446 recieve( mCStringMess, mByteData );
447#endif 447#endif
448 448
449 449
450 QTimer::singleShot( 1000, mView, SLOT ( checkFiles() )); 450 QTimer::singleShot( 1000, mView, SLOT ( checkFiles() ));
451} 451}
452 452
453void MainWindow::slotResetFocus() 453void MainWindow::slotResetFocus()
454{ 454{
455 //qDebug(" CalendarView::slotResetFocus() %x %x %x %x", qApp->focusWidget(), menuBar1, mView,iconToolBar); 455 //qDebug(" CalendarView::slotResetFocus() %x %x %x %x", qApp->focusWidget(), menuBar1, mView,iconToolBar);
456 mFocusLoop = 3; 456 mFocusLoop = 3;
457 QTimer::singleShot( 0, this, SLOT(slotResetFocusLoop() )); 457 QTimer::singleShot( 0, this, SLOT(slotResetFocusLoop() ));
458} 458}
459void MainWindow::slotResetFocusLoop() 459void MainWindow::slotResetFocusLoop()
460{ 460{
461 --mFocusLoop; 461 --mFocusLoop;
462 QWidget* fw = mView->viewManager()->currentView(); 462 QWidget* fw = mView->viewManager()->currentView();
463 if ( fw ) { 463 if ( fw ) {
464 //qDebug("loop "); 464 //qDebug("loop ");
465 fw->setFocus(); 465 fw->setFocus();
466 if ( qApp->focusWidget() != fw && mFocusLoop > 0 ) 466 if ( qApp->focusWidget() != fw && mFocusLoop > 0 )
467 QTimer::singleShot( 0, this, SLOT(slotResetFocusLoop() )); 467 QTimer::singleShot( 0, this, SLOT(slotResetFocusLoop() ));
468 } 468 }
469 469
470} 470}
471void MainWindow::disableBR(bool b) 471void MainWindow::disableBR(bool b)
472{ 472{
473#ifndef DESKTOP_VERSION 473#ifndef DESKTOP_VERSION
474 if ( b ) { 474 if ( b ) {
475 if ( infrared ) { 475 if ( infrared ) {
476 toggleBeamReceive(); 476 toggleBeamReceive();
477 mBRdisabled = true; 477 mBRdisabled = true;
478 } 478 }
479 mBRdisabled = true; 479 mBRdisabled = true;
480 } else { 480 } else {
481 if ( mBRdisabled ) { 481 if ( mBRdisabled ) {
482 mBRdisabled = false; 482 mBRdisabled = false;
483 //makes no sense,because other cal ap is probably running 483 //makes no sense,because other cal ap is probably running
484 // toggleBeamReceive(); 484 // toggleBeamReceive();
485 } 485 }
486 } 486 }
487#endif 487#endif
488 488
489} 489}
490bool MainWindow::beamReceiveEnabled() 490bool MainWindow::beamReceiveEnabled()
491{ 491{
492#ifndef DESKTOP_VERSION 492#ifndef DESKTOP_VERSION
493 return ( infrared != 0 ); 493 return ( infrared != 0 );
494#endif 494#endif
495 return false; 495 return false;
496} 496}
497 497
498void MainWindow::toggleBeamReceive() 498void MainWindow::toggleBeamReceive()
499{ 499{
500 if ( mBRdisabled ) 500 if ( mBRdisabled )
501 return; 501 return;
502#ifndef DESKTOP_VERSION 502#ifndef DESKTOP_VERSION
503 if ( infrared ) { 503 if ( infrared ) {
504 qDebug("KO: Disable BeamReceive "); 504 qDebug("KO: Disable BeamReceive ");
505 delete infrared; 505 delete infrared;
506 infrared = 0; 506 infrared = 0;
507 brAction->setOn(false); 507 brAction->setOn(false);
508 return; 508 return;
509 } 509 }
510 qDebug("KO: Enable BeamReceive "); 510 qDebug("KO: Enable BeamReceive ");
511 brAction->setOn(true); 511 brAction->setOn(true);
512 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 512 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
513 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 513 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
514#endif 514#endif
515} 515}
516void MainWindow::showMaximized () 516void MainWindow::showMaximized ()
517{ 517{
518#ifndef DESKTOP_VERSION 518#ifndef DESKTOP_VERSION
519 if ( ! globalFlagBlockStartup ) 519 if ( ! globalFlagBlockStartup )
520 if ( mClosed ) 520 if ( mClosed )
521 mView->goToday(); 521 mView->goToday();
522#endif 522#endif
523 QWidget::showMaximized () ; 523 QWidget::showMaximized () ;
524 mClosed = false; 524 mClosed = false;
525} 525}
526
527bool MainWindow::askForQuitOnSaveError()
528{
529 bool retval = false;
530 switch( QMessageBox::information( this, "KO/Pi",
531 i18n("Error saving data") + "!\n" +
532 i18n("You can save all data\nto another file via\nFile->Export->Export All Data") + "!\n" +
533 i18n("Do you really want\nto close KO/Pi?"),
534 i18n(" Yes, close "), i18n("No"),
535 0, 1 ) ) {
536 case 0:
537 retval = true;
538 break;
539 default:
540 break;
541 }
542 return retval;
543}
544
526void MainWindow::closeEvent( QCloseEvent* ce ) 545void MainWindow::closeEvent( QCloseEvent* ce )
527{ 546{
528 547
529 548
530 549
531 if ( ! KOPrefs::instance()->mAskForQuit ) { 550 if ( ! KOPrefs::instance()->mAskForQuit ) {
532 saveOnClose(); 551 saveOnClose();
533 if ( mCalendarModifiedFlag ) { 552 if ( mCalendarModifiedFlag && !askForQuitOnSaveError() ) {
534 ce->ignore(); 553 ce->ignore();
535 return; 554 return;
536 } 555 }
537 mClosed = true; 556 mClosed = true;
538 ce->accept(); 557 ce->accept();
539 return; 558 return;
540 559
541 } 560 }
542 561
543 switch( QMessageBox::information( this, "KO/Pi", 562 switch( QMessageBox::information( this, "KO/Pi",
544 i18n("Do you really want\nto close KO/Pi?"), 563 i18n("Do you really want\nto close KO/Pi?"),
545 i18n("Close"), i18n("No"), 564 i18n("Close"), i18n("No"),
546 0, 0 ) ) { 565 0, 0 ) ) {
547 case 0: 566 case 0:
548 saveOnClose(); 567 saveOnClose();
549 if ( mCalendarModifiedFlag ) { 568 if ( mCalendarModifiedFlag && !askForQuitOnSaveError() ) {
550 ce->ignore(); 569 ce->ignore();
551 return; 570 return;
552 } 571 }
553 mClosed = true; 572 mClosed = true;
554 ce->accept(); 573 ce->accept();
555 break; 574 break;
556 case 1: 575 case 1:
557 ce->ignore(); 576 ce->ignore();
558 break; 577 break;
559 case 2: 578 case 2:
560 579
561 default: 580 default:
562 break; 581 break;
563 } 582 }
564 583
565 584
566} 585}
567void MainWindow::receiveStart( const QCString& cmsg, const QByteArray& data ) 586void MainWindow::receiveStart( const QCString& cmsg, const QByteArray& data )
568{ 587{
569 qDebug("KO: QCOP start message received: %s ", cmsg.data() ); 588 qDebug("KO: QCOP start message received: %s ", cmsg.data() );
570 mCStringMess = cmsg; 589 mCStringMess = cmsg;
571 mByteData = data; 590 mByteData = data;
572} 591}
573void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 592void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
574{ 593{
575 QDataStream stream( data, IO_ReadOnly ); 594 QDataStream stream( data, IO_ReadOnly );
576 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 595 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
577 //QString datamess; 596 //QString datamess;
578 //qDebug("message "); 597 //qDebug("message ");
579 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 598 qDebug("KO: QCOP message received: %s ", cmsg.data() );
580 599
581 if ( cmsg == "setDocument(QString)" ) { 600 if ( cmsg == "setDocument(QString)" ) {
582 QDataStream stream( data, IO_ReadOnly ); 601 QDataStream stream( data, IO_ReadOnly );
583 QString fileName; 602 QString fileName;
584 stream >> fileName; 603 stream >> fileName;
585 //qDebug("filename %s ", fileName.latin1()); 604 //qDebug("filename %s ", fileName.latin1());
586 showMaximized(); 605 showMaximized();
587 raise(); 606 raise();
588 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 607 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
589 mSyncManager->slotSyncMenu( 1002 ); 608 mSyncManager->slotSyncMenu( 1002 );
590 return; 609 return;
591 } 610 }
592 611
593 if ( cmsg == "-writeFile" ) { 612 if ( cmsg == "-writeFile" ) {
594 // I made from the "-writeFile" an "-writeAlarm" 613 // I made from the "-writeFile" an "-writeAlarm"
595 mView->viewManager()->showWhatsNextView(); 614 mView->viewManager()->showWhatsNextView();
596 mCalendar->checkAlarmForIncidence( 0, true); 615 mCalendar->checkAlarmForIncidence( 0, true);
597 showMaximized(); 616 showMaximized();
598 raise(); 617 raise();
599 return; 618 return;
600 619
601 } 620 }
602 if ( cmsg == "-writeFileSilent" ) { 621 if ( cmsg == "-writeFileSilent" ) {
603 // I made from the "-writeFile" an "-writeAlarm" 622 // I made from the "-writeFile" an "-writeAlarm"
604 // mView->viewManager()->showWhatsNextView(); 623 // mView->viewManager()->showWhatsNextView();
605 mCalendar->checkAlarmForIncidence( 0, true); 624 mCalendar->checkAlarmForIncidence( 0, true);
606 //showMaximized(); 625 //showMaximized();
607 //raise(); 626 //raise();
608 hide(); 627 hide();
609 return; 628 return;
610 } 629 }
611 if ( cmsg == "-newCountdown" ) { 630 if ( cmsg == "-newCountdown" ) {
612 qDebug("newCountdown "); 631 qDebug("newCountdown ");
613 632
614 } 633 }
615 QString msg ; 634 QString msg ;
616 QString allmsg = cmsg; 635 QString allmsg = cmsg;
617 while ( allmsg.length() > 0 ) { 636 while ( allmsg.length() > 0 ) {
618 int nextC = allmsg.find( "-", 1 ); 637 int nextC = allmsg.find( "-", 1 );
619 if ( nextC == -1 ) { 638 if ( nextC == -1 ) {
620 msg = allmsg; 639 msg = allmsg;
621 allmsg = ""; 640 allmsg = "";
622 } else{ 641 } else{
623 msg = allmsg.left( nextC ); 642 msg = allmsg.left( nextC );
624 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 643 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
625 } 644 }
626 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 645 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
627 if ( msg == "-newEvent" ) { 646 if ( msg == "-newEvent" ) {
628 QTimer::singleShot( 0, mView, SLOT ( newEvent())); 647 QTimer::singleShot( 0, mView, SLOT ( newEvent()));
629 } 648 }
630 if ( msg == "-newTodo" ) { 649 if ( msg == "-newTodo" ) {
631 QTimer::singleShot( 0, mView, SLOT ( newTodo())); 650 QTimer::singleShot( 0, mView, SLOT ( newTodo()));
632 } 651 }
633 if ( msg == "-showWN" ) { 652 if ( msg == "-showWN" ) {
634 mView->viewManager()->showWhatsNextView(); 653 mView->viewManager()->showWhatsNextView();
635 } 654 }
636 if ( msg == "-showTodo" ) { 655 if ( msg == "-showTodo" ) {
637 mView->viewManager()->showTodoView(); 656 mView->viewManager()->showTodoView();
638 } 657 }
639 if ( msg == "-showList" ) { 658 if ( msg == "-showList" ) {
640 mView->viewManager()->showListView(); 659 mView->viewManager()->showListView();
641 } 660 }
642 else if ( msg == "-showDay" ) { 661 else if ( msg == "-showDay" ) {
643 mView->viewManager()->showDayView(); 662 mView->viewManager()->showDayView();
644 } 663 }
645 else if ( msg == "-showWWeek" ) { 664 else if ( msg == "-showWWeek" ) {
646 mView->viewManager()->showWorkWeekView(); 665 mView->viewManager()->showWorkWeekView();
647 } 666 }
648 else if ( msg == "-ringSync" ) { 667 else if ( msg == "-ringSync" ) {
649 QTimer::singleShot( 0, this, SLOT (startMultiSync())); 668 QTimer::singleShot( 0, this, SLOT (startMultiSync()));
650 } 669 }
651 else if ( msg == "-showWeek" ) { 670 else if ( msg == "-showWeek" ) {
652 mView->viewManager()->showWeekView(); 671 mView->viewManager()->showWeekView();
653 } 672 }
654 else if ( msg == "-showTodo" ) { 673 else if ( msg == "-showTodo" ) {
655 mView->viewManager()->showTodoView(); 674 mView->viewManager()->showTodoView();
656 } 675 }
657 else if ( msg == "-showJournal" ) { 676 else if ( msg == "-showJournal" ) {
658 mView->dateNavigator()->selectDates( 1 ); 677 mView->dateNavigator()->selectDates( 1 );
659 mView->dateNavigator()->selectToday(); 678 mView->dateNavigator()->selectToday();
660 mView->viewManager()->showJournalView(); 679 mView->viewManager()->showJournalView();
661 } 680 }
662 else if ( msg == "-showKO" ) { 681 else if ( msg == "-showKO" ) {
663 mView->viewManager()->showNextXView(); 682 mView->viewManager()->showNextXView();
664 } 683 }
665 else if ( msg == "-showWNext" ) { 684 else if ( msg == "-showWNext" ) {
666 mView->viewManager()->showWhatsNextView(); 685 mView->viewManager()->showWhatsNextView();
667 } 686 }
668 else if ( msg == "nextView()" ) { 687 else if ( msg == "nextView()" ) {
669 mView->viewManager()->showNextView(); 688 mView->viewManager()->showNextView();
670 } 689 }
671 else if ( msg == "-showNextXView" ) { 690 else if ( msg == "-showNextXView" ) {
672 mView->viewManager()->showNextXView(); 691 mView->viewManager()->showNextXView();
673 } 692 }
674 693
675 694
676 } 695 }
677 696
@@ -1040,256 +1059,260 @@ void MainWindow::initActions()
1040 day7_action->addTo( viewMenu ); 1059 day7_action->addTo( viewMenu );
1041 connect( day7_action, SIGNAL( activated() ), 1060 connect( day7_action, SIGNAL( activated() ),
1042 mView->viewManager(), SLOT( showWeekView() ) ); 1061 mView->viewManager(), SLOT( showWeekView() ) );
1043 1062
1044 icon = loadPixmap( pathString + "workweek2" ); 1063 icon = loadPixmap( pathString + "workweek2" );
1045 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 ); 1064 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 );
1046 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this ); 1065 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this );
1047 day6_action->addTo( viewMenu ); 1066 day6_action->addTo( viewMenu );
1048 connect( day6_action, SIGNAL( activated() ), 1067 connect( day6_action, SIGNAL( activated() ),
1049 mView->viewManager(), SLOT( showMonthViewWeek() ) ); 1068 mView->viewManager(), SLOT( showMonthViewWeek() ) );
1050 1069
1051 icon = loadPixmap( pathString + "month" ); 1070 icon = loadPixmap( pathString + "month" );
1052 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 1071 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
1053 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 1072 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
1054 month_action->addTo( viewMenu ); 1073 month_action->addTo( viewMenu );
1055 connect( month_action, SIGNAL( activated() ), 1074 connect( month_action, SIGNAL( activated() ),
1056 mView->viewManager(), SLOT( showMonthView() ) ); 1075 mView->viewManager(), SLOT( showMonthView() ) );
1057 1076
1058 icon = loadPixmap( pathString + "list" ); 1077 icon = loadPixmap( pathString + "list" );
1059 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 1078 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
1060 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 1079 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
1061 showlist_action->addTo( viewMenu ); 1080 showlist_action->addTo( viewMenu );
1062 connect( showlist_action, SIGNAL( activated() ), 1081 connect( showlist_action, SIGNAL( activated() ),
1063 mView->viewManager(), SLOT( showListView() ) ); 1082 mView->viewManager(), SLOT( showListView() ) );
1064 1083
1065 icon = loadPixmap( pathString + "todo" ); 1084 icon = loadPixmap( pathString + "todo" );
1066 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 1085 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
1067 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 1086 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
1068 todoview_action->addTo( viewMenu ); 1087 todoview_action->addTo( viewMenu );
1069 connect( todoview_action, SIGNAL( activated() ), 1088 connect( todoview_action, SIGNAL( activated() ),
1070 mView->viewManager(), SLOT( showTodoView() ) ); 1089 mView->viewManager(), SLOT( showTodoView() ) );
1071 1090
1072 1091
1073 1092
1074#if 0 1093#if 0
1075 action = new QAction( "view_timespan", "Time Span", 0, this ); 1094 action = new QAction( "view_timespan", "Time Span", 0, this );
1076 action->addTo( viewMenu ); 1095 action->addTo( viewMenu );
1077 connect( action, SIGNAL( activated() ), 1096 connect( action, SIGNAL( activated() ),
1078 mView->viewManager(), SLOT( showTimeSpanView() ) ); 1097 mView->viewManager(), SLOT( showTimeSpanView() ) );
1079#endif 1098#endif
1080 1099
1081 1100
1082 1101
1083 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0, 1102 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0,
1084 this ); 1103 this );
1085 action->addTo( actionMenu ); 1104 action->addTo( actionMenu );
1086 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 1105 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
1087 1106
1088 1107
1089 icon = loadPixmap( pathString + "search" ); 1108 icon = loadPixmap( pathString + "search" );
1090 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5); 1109 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5);
1091 1110
1092 1111
1093 1112
1094 actionMenu->insertSeparator(); 1113 actionMenu->insertSeparator();
1095 action = new QAction( "manage cat", i18n("Edit category list..."), 0, 1114 action = new QAction( "manage cat", i18n("Edit category list..."), 0,
1096 this ); 1115 this );
1097 action->addTo( actionMenu ); 1116 action->addTo( actionMenu );
1098 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) ); 1117 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) );
1099 1118
1100 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 1119 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
1101 this ); 1120 this );
1102 action->addTo( actionMenu ); 1121 action->addTo( actionMenu );
1103 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 1122 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
1104 1123
1105 1124
1106 actionMenu->insertSeparator(); 1125 actionMenu->insertSeparator();
1107 icon = loadPixmap( pathString + "configure" ); 1126 icon = loadPixmap( pathString + "configure" );
1108 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this ); 1127 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this );
1109 action->addTo( actionMenu ); 1128 action->addTo( actionMenu );
1110 connect( action, SIGNAL( activated() ), 1129 connect( action, SIGNAL( activated() ),
1111 mView, SLOT( edit_options() ) ); 1130 mView, SLOT( edit_options() ) );
1112 action = new QAction( i18n("Configure"),icon, i18n("Configure Calendar Files..."), 0, this ); 1131 action = new QAction( i18n("Configure"),icon, i18n("Configure Calendar Files..."), 0, this );
1113 action->addTo( actionMenu ); 1132 action->addTo( actionMenu );
1114 connect( action, SIGNAL( activated() ), 1133 connect( action, SIGNAL( activated() ),
1115 this, SLOT( calHint() ) ); 1134 this, SLOT( calHint() ) );
1116 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this ); 1135 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this );
1117 action->addTo( actionMenu ); 1136 action->addTo( actionMenu );
1118 connect( action, SIGNAL( activated() ), 1137 connect( action, SIGNAL( activated() ),
1119 mView, SLOT( edit_global_options() ) ); 1138 mView, SLOT( edit_global_options() ) );
1120 if ( KOPrefs::instance()->mShowFullMenu ) { 1139 if ( KOPrefs::instance()->mShowFullMenu ) {
1121 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 1140 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
1122 1141
1123 } 1142 }
1124 // actionMenu->insertSeparator(); 1143 // actionMenu->insertSeparator();
1125 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 1144 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
1126 this ); 1145 this );
1127 action->addTo( importMenu_X ); 1146 action->addTo( importMenu_X );
1128 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 1147 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
1129 action = new QAction( "import_quick", i18n("Import last file"), 0, 1148 action = new QAction( "import_quick", i18n("Import last file"), 0,
1130 this ); 1149 this );
1131 action->addTo( importMenu_X ); 1150 action->addTo( importMenu_X );
1132 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 1151 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
1133 importMenu_X->insertSeparator(); 1152 importMenu_X->insertSeparator();
1134 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 1153 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
1135 this ); 1154 this );
1136 action->addTo( importMenu_X ); 1155 action->addTo( importMenu_X );
1137 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 1156 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
1138 //#ifndef DESKTOP_VERSION 1157 //#ifndef DESKTOP_VERSION
1139 importMenu_X->insertSeparator(); 1158 importMenu_X->insertSeparator();
1140 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 1159 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
1141 this ); 1160 this );
1142 action->addTo( importMenu_X ); 1161 action->addTo( importMenu_X );
1143 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 1162 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
1144 //#else 1163 //#else
1145#ifdef _OL_IMPORT_ 1164#ifdef _OL_IMPORT_
1146 importMenu_X->insertSeparator(); 1165 importMenu_X->insertSeparator();
1147 action = new QAction( "import_ol", i18n("Import from OL"), 0, 1166 action = new QAction( "import_ol", i18n("Import from OL"), 0,
1148 this ); 1167 this );
1149 action->addTo( importMenu_X ); 1168 action->addTo( importMenu_X );
1150 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 1169 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
1151#endif 1170#endif
1152 //#endif 1171 //#endif
1153 1172
1154 //importMenu->insertSeparator(); 1173 //importMenu->insertSeparator();
1155#if 0 1174#if 0
1156 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 1175 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
1157 this ); 1176 this );
1158 action->addTo( importMenu ); 1177 action->addTo( importMenu );
1159 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 1178 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
1160#endif 1179#endif
1161 action = new QAction( "save_cal", i18n("Save Backup..."), 0, 1180 action = new QAction( "save_cal", i18n("Save Backup..."), 0,
1162 this ); 1181 this );
1163 action->addTo( importMenu ); 1182 action->addTo( importMenu );
1164 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 1183 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
1165 importMenu->insertSeparator(); 1184 importMenu->insertSeparator();
1166 importMenu->insertItem( i18n("Import"), importMenu_X ); 1185 importMenu->insertItem( i18n("Import"), importMenu_X );
1167 //importMenu->insertSeparator(); 1186 //importMenu->insertSeparator();
1187 action = new QAction( "export ical", i18n("Export All Data"), 0,
1188 this );
1189 action->addTo( exportMenu_X );
1190 connect( action, SIGNAL( activated() ), SLOT( exportICalendar() ) );
1168 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 1191 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
1169 this ); 1192 this );
1170 action->addTo( exportMenu_X ); 1193 action->addTo( exportMenu_X );
1171 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 1194 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
1172 1195
1173 1196
1174 //LR 1197 //LR
1175 QPopupMenu *ex2phone = new QPopupMenu( this ); 1198 QPopupMenu *ex2phone = new QPopupMenu( this );
1176 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1199 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1177 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1200 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1178 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 1201 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
1179 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone ); 1202 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone );
1180 1203
1181 importMenu->insertItem( i18n("Export"), exportMenu_X ); 1204 importMenu->insertItem( i18n("Export"), exportMenu_X );
1182 mPrintSelAction = 0; 1205 mPrintSelAction = 0;
1183#ifndef DESKTOP_VERSION 1206#ifndef DESKTOP_VERSION
1184 //importMenu->insertSeparator(); 1207 //importMenu->insertSeparator();
1185 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0, 1208 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0,
1186 this ); 1209 this );
1187 brAction->addTo( beamMenu_X ); 1210 brAction->addTo( beamMenu_X );
1188 brAction->setToggleAction (true ) ; 1211 brAction->setToggleAction (true ) ;
1189 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 1212 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
1190 1213
1191 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 1214 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
1192 this ); 1215 this );
1193 action->addTo( beamMenu_X ); 1216 action->addTo( beamMenu_X );
1194 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 1217 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
1195 1218
1196 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 1219 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
1197 this ); 1220 this );
1198 action->addTo( beamMenu_X ); 1221 action->addTo( beamMenu_X );
1199 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 1222 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
1200 importMenu->insertItem( i18n("Beam"), beamMenu_X ); 1223 importMenu->insertItem( i18n("Beam"), beamMenu_X );
1201#else 1224#else
1202 //importMenu->insertSeparator(); 1225 //importMenu->insertSeparator();
1203 icon = loadPixmap( pathString + "print" ); 1226 icon = loadPixmap( pathString + "print" );
1204 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 1227 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
1205 action->addTo( beamMenu_X ); 1228 action->addTo( beamMenu_X );
1206 connect( action, SIGNAL( activated() ), 1229 connect( action, SIGNAL( activated() ),
1207 this, SLOT( printCal() ) ); 1230 this, SLOT( printCal() ) );
1208 1231
1209 icon = loadPixmap( pathString + "week" ); 1232 icon = loadPixmap( pathString + "week" );
1210 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 1233 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
1211 action->addTo( beamMenu_X ); 1234 action->addTo( beamMenu_X );
1212 connect( action, SIGNAL( activated() ), 1235 connect( action, SIGNAL( activated() ),
1213 this, SLOT( printSel() ) ); 1236 this, SLOT( printSel() ) );
1214 icon = loadPixmap( pathString + "whatsnext" ); 1237 icon = loadPixmap( pathString + "whatsnext" );
1215 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this ); 1238 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this );
1216 action->addTo( beamMenu_X ); 1239 action->addTo( beamMenu_X );
1217 connect( action, SIGNAL( activated() ), 1240 connect( action, SIGNAL( activated() ),
1218 mView->viewManager(), SLOT( slotprintWNV() ) ); 1241 mView->viewManager(), SLOT( slotprintWNV() ) );
1219 1242
1220 1243
1221 icon = loadPixmap( pathString + "list" ); 1244 icon = loadPixmap( pathString + "list" );
1222 action = new QAction( i18n("Print List View..."),icon,i18n("Print List View..."), 0, this ); 1245 action = new QAction( i18n("Print List View..."),icon,i18n("Print List View..."), 0, this );
1223 action->addTo( beamMenu_X ); 1246 action->addTo( beamMenu_X );
1224 connect( action, SIGNAL( activated() ), 1247 connect( action, SIGNAL( activated() ),
1225 this, SLOT( printListView() ) ); 1248 this, SLOT( printListView() ) );
1226 1249
1227 icon = loadPixmap( pathString + "newevent" ); 1250 icon = loadPixmap( pathString + "newevent" );
1228 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this ); 1251 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this );
1229 action->addTo( beamMenu_X ); 1252 action->addTo( beamMenu_X );
1230 connect( action, SIGNAL( activated() ), 1253 connect( action, SIGNAL( activated() ),
1231 mView, SLOT( slotprintSelInc() ) ); 1254 mView, SLOT( slotprintSelInc() ) );
1232 mPrintSelAction = action; 1255 mPrintSelAction = action;
1233 importMenu->insertItem( i18n("Print"), beamMenu_X ); 1256 importMenu->insertItem( i18n("Print"), beamMenu_X );
1234#endif 1257#endif
1235 1258
1236 importMenu->insertSeparator(); 1259 importMenu->insertSeparator();
1237 action = new QAction( "beam all", i18n("Save"), 0, 1260 action = new QAction( "beam all", i18n("Save"), 0,
1238 this ); 1261 this );
1239 action->addTo( importMenu ); 1262 action->addTo( importMenu );
1240 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 1263 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
1241 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 1264 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
1242 this ); 1265 this );
1243 action->addTo( importMenu ); 1266 action->addTo( importMenu );
1244 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 1267 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
1245 1268
1246 //menuBar->insertItem( "Configure",configureMenu ); 1269 //menuBar->insertItem( "Configure",configureMenu );
1247 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 1270 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
1248 icon = loadPixmap( "korganizer/korganizer" ); 1271 icon = loadPixmap( "korganizer/korganizer" );
1249 1272
1250 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 1273 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
1251 action->addTo( helpMenu ); 1274 action->addTo( helpMenu );
1252 connect( action, SIGNAL( activated() ), 1275 connect( action, SIGNAL( activated() ),
1253 SLOT( whatsNew() ) ); 1276 SLOT( whatsNew() ) );
1254 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 1277 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
1255 action->addTo( helpMenu ); 1278 action->addTo( helpMenu );
1256 connect( action, SIGNAL( activated() ), 1279 connect( action, SIGNAL( activated() ),
1257 SLOT( features() ) ); 1280 SLOT( features() ) );
1258 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 1281 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
1259 action->addTo( helpMenu ); 1282 action->addTo( helpMenu );
1260 connect( action, SIGNAL( activated() ), 1283 connect( action, SIGNAL( activated() ),
1261 SLOT( keyBindings() ) ); 1284 SLOT( keyBindings() ) );
1262 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this ); 1285 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this );
1263 action->addTo( helpMenu ); 1286 action->addTo( helpMenu );
1264 connect( action, SIGNAL( activated() ), 1287 connect( action, SIGNAL( activated() ),
1265 SLOT( storagehowto() ) ); 1288 SLOT( storagehowto() ) );
1266 action = new QAction( "Timetracking Howto", i18n("Timetracking HowTo..."), 0,this ); 1289 action = new QAction( "Timetracking Howto", i18n("Timetracking HowTo..."), 0,this );
1267 action->addTo( helpMenu ); 1290 action->addTo( helpMenu );
1268 connect( action, SIGNAL( activated() ), 1291 connect( action, SIGNAL( activated() ),
1269 SLOT( timetrackinghowto() ) ); 1292 SLOT( timetrackinghowto() ) );
1270 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 1293 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
1271 action->addTo( helpMenu ); 1294 action->addTo( helpMenu );
1272 connect( action, SIGNAL( activated() ), 1295 connect( action, SIGNAL( activated() ),
1273 SLOT( synchowto() ) ); 1296 SLOT( synchowto() ) );
1274 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); 1297 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this );
1275 action->addTo( helpMenu ); 1298 action->addTo( helpMenu );
1276 connect( action, SIGNAL( activated() ), 1299 connect( action, SIGNAL( activated() ),
1277 SLOT( kdesynchowto() ) ); 1300 SLOT( kdesynchowto() ) );
1278 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this ); 1301 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this );
1279 action->addTo( helpMenu ); 1302 action->addTo( helpMenu );
1280 connect( action, SIGNAL( activated() ), 1303 connect( action, SIGNAL( activated() ),
1281 SLOT( multisynchowto() ) ); 1304 SLOT( multisynchowto() ) );
1282 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 1305 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
1283 action->addTo( helpMenu ); 1306 action->addTo( helpMenu );
1284 connect( action, SIGNAL( activated() ), 1307 connect( action, SIGNAL( activated() ),
1285 SLOT( aboutAutoSaving() ) ); 1308 SLOT( aboutAutoSaving() ) );
1286 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 1309 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
1287 action->addTo( helpMenu ); 1310 action->addTo( helpMenu );
1288 connect( action, SIGNAL( activated() ), 1311 connect( action, SIGNAL( activated() ),
1289 SLOT( aboutKnownBugs() ) ); 1312 SLOT( aboutKnownBugs() ) );
1290 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 1313 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
1291 action->addTo( helpMenu ); 1314 action->addTo( helpMenu );
1292 connect( action, SIGNAL( activated() ), 1315 connect( action, SIGNAL( activated() ),
1293 SLOT( usertrans() ) ); 1316 SLOT( usertrans() ) );
1294 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 1317 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
1295 action->addTo( helpMenu ); 1318 action->addTo( helpMenu );
@@ -1842,312 +1865,314 @@ void MainWindow::importOL()
1842 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1865 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1843 id->exec(); 1866 id->exec();
1844 delete id; 1867 delete id;
1845 mView->calendar()->checkAlarmForIncidence( 0, true ); 1868 mView->calendar()->checkAlarmForIncidence( 0, true );
1846 mView->updateView(); 1869 mView->updateView();
1847#endif 1870#endif
1848} 1871}
1849void MainWindow::importBday() 1872void MainWindow::importBday()
1850{ 1873{
1851 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"), 1874 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"),
1852 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1875 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1853 i18n("Import!"), i18n("Cancel"), 0, 1876 i18n("Import!"), i18n("Cancel"), 0,
1854 0, 1 ); 1877 0, 1 );
1855 if ( result == 0 ) { 1878 if ( result == 0 ) {
1856 mView->importBday(); 1879 mView->importBday();
1857 1880
1858 } 1881 }
1859 1882
1860 1883
1861} 1884}
1862void MainWindow::importQtopia() 1885void MainWindow::importQtopia()
1863{ 1886{
1864 //#ifndef DESKTOP_VERSION 1887 //#ifndef DESKTOP_VERSION
1865 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); 1888 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing");
1866#ifdef DESKTOP_VERSION 1889#ifdef DESKTOP_VERSION
1867 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); 1890 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml");
1868#endif 1891#endif
1869 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, 1892 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess,
1870 i18n("Import!"), i18n("Cancel"), 0, 1893 i18n("Import!"), i18n("Cancel"), 0,
1871 0, 1 ); 1894 0, 1 );
1872 if ( result == 0 ) { 1895 if ( result == 0 ) {
1873#ifndef DESKTOP_VERSION 1896#ifndef DESKTOP_VERSION
1874 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1897 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1875 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1898 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1876 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1899 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1877#else 1900#else
1878 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; 1901 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml";
1879 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; 1902 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml";
1880 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; 1903 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml";
1881#endif 1904#endif
1882 mView->importQtopia( categories, datebook, todolist ); 1905 mView->importQtopia( categories, datebook, todolist );
1883 } 1906 }
1884 mView->calendar()->reInitAlarmSettings(); 1907 mView->calendar()->reInitAlarmSettings();
1885#if 0 1908#if 0
1886 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1909 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1887 i18n("Not supported \non desktop!\n"), 1910 i18n("Not supported \non desktop!\n"),
1888 i18n("Ok"), i18n("Cancel"), 0, 1911 i18n("Ok"), i18n("Cancel"), 0,
1889 0, 1 ); 1912 0, 1 );
1890 1913
1891#endif 1914#endif
1892} 1915}
1893 1916
1894void MainWindow::saveOnClose() 1917void MainWindow::saveOnClose()
1895{ 1918{
1896 KOPrefs *p = KOPrefs::instance(); 1919 KOPrefs *p = KOPrefs::instance();
1897 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1920 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1898 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal ); 1921 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal );
1899 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal ); 1922 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal );
1900 if ( filterToolBar ) { 1923 if ( filterToolBar ) {
1901 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal ); 1924 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal );
1902 } 1925 }
1903#ifdef DESKTOP_VERSION 1926#ifdef DESKTOP_VERSION
1904 1927
1905 QPoint myP; 1928 QPoint myP;
1906 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) ); 1929 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) );
1907 if ( p->mToolBarHor ) 1930 if ( p->mToolBarHor )
1908 p->mToolBarUp = myP.y() > height()/2; 1931 p->mToolBarUp = myP.y() > height()/2;
1909 else 1932 else
1910 p->mToolBarUp = myP.x() > width()/2; 1933 p->mToolBarUp = myP.x() > width()/2;
1911 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) ); 1934 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) );
1912 if ( p->mToolBarHorV ) 1935 if ( p->mToolBarHorV )
1913 p->mToolBarUpV = myP.y() > height()/2; 1936 p->mToolBarUpV = myP.y() > height()/2;
1914 else 1937 else
1915 p->mToolBarUpV = myP.x() > width()/2 ; 1938 p->mToolBarUpV = myP.x() > width()/2 ;
1916 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) ); 1939 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) );
1917 if ( p->mToolBarHorN ) 1940 if ( p->mToolBarHorN )
1918 p->mToolBarUpN = myP.y() > height()/2; 1941 p->mToolBarUpN = myP.y() > height()/2;
1919 else 1942 else
1920 p->mToolBarUpN = myP.x() > width()/2 ; 1943 p->mToolBarUpN = myP.x() > width()/2 ;
1921 if ( filterToolBar ) { 1944 if ( filterToolBar ) {
1922 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) ); 1945 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) );
1923 if ( p->mToolBarHorF ) 1946 if ( p->mToolBarHorF )
1924 p->mToolBarUpF = myP.y() > height()/2; 1947 p->mToolBarUpF = myP.y() > height()/2;
1925 else 1948 else
1926 p->mToolBarUpF = myP.x() > width()/2 ; 1949 p->mToolBarUpF = myP.x() > width()/2 ;
1927 } 1950 }
1928#else 1951#else
1929 if ( p->mToolBarHor ) 1952 if ( p->mToolBarHor )
1930 p->mToolBarUp = iconToolBar->y() > height()/2; 1953 p->mToolBarUp = iconToolBar->y() > height()/2;
1931 else 1954 else
1932 p->mToolBarUp = iconToolBar->x() > width()/2; 1955 p->mToolBarUp = iconToolBar->x() > width()/2;
1933 if ( p->mToolBarHorV ) 1956 if ( p->mToolBarHorV )
1934 p->mToolBarUpV = viewToolBar->y() > height()/2; 1957 p->mToolBarUpV = viewToolBar->y() > height()/2;
1935 else 1958 else
1936 p->mToolBarUpV = viewToolBar->x() > width()/2 ; 1959 p->mToolBarUpV = viewToolBar->x() > width()/2 ;
1937 1960
1938 if ( p->mToolBarHorN ) 1961 if ( p->mToolBarHorN )
1939 p->mToolBarUpN = navigatorToolBar->y() > height()/2; 1962 p->mToolBarUpN = navigatorToolBar->y() > height()/2;
1940 else 1963 else
1941 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ; 1964 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ;
1942 if ( filterToolBar ) { 1965 if ( filterToolBar ) {
1943 if ( p->mToolBarHorF ) 1966 if ( p->mToolBarHorF )
1944 p->mToolBarUpF = filterToolBar->y() > height()/2; 1967 p->mToolBarUpF = filterToolBar->y() > height()/2;
1945 else 1968 else
1946 p->mToolBarUpF = filterToolBar->x() > width()/2 ; 1969 p->mToolBarUpF = filterToolBar->x() > width()/2 ;
1947 } 1970 }
1948#endif 1971#endif
1949 save(); 1972 save();
1950 mView->writeSettings(); 1973 mView->writeSettings();
1951 mView->checkSuspendAlarm(); 1974 mView->checkSuspendAlarm();
1952} 1975}
1953void MainWindow::slotModifiedChanged( bool ) 1976void MainWindow::slotModifiedChanged( bool )
1954{ 1977{
1955 if ( mBlockAtStartup ) 1978 if ( mBlockAtStartup )
1956 return; 1979 return;
1957 1980
1958 int msec; 1981 int msec;
1959 if ( mCalendarModifiedFlag ) { 1982 if ( mCalendarModifiedFlag ) {
1960 //qDebug(" MainWindow timer is running "); 1983 //qDebug(" MainWindow timer is running ");
1961 return; 1984 return;
1962 } 1985 }
1963 // we store the changes after 1 minute, 1986 // we store the changes after 1 minute,
1964 // and for safety reasons after 10 minutes again 1987 // and for safety reasons after 10 minutes again
1965 if ( !mSyncManager->blockSave() ) 1988 if ( !mSyncManager->blockSave() )
1966 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1989 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1967 else 1990 else
1968 msec = 1000 * 600; 1991 msec = 1000 * 600;
1969 mSaveTimer.start( msec, true ); // 1 minute 1992 mSaveTimer.start( msec, true ); // 1 minute
1970 mSaveTime.restart(); 1993 mSaveTimerStart = QDateTime::currentDateTime();
1971 mSaveDelay = msec/1000; 1994 mSaveDelay = msec/1000;
1972 qDebug("KO: Saving File in %d secs!", msec/1000); 1995 qDebug("KO: Saving File in %d secs!", msec/1000);
1973 mCalendarModifiedFlag = true; 1996 mCalendarModifiedFlag = true;
1974} 1997}
1975void MainWindow::saveStopTimer() 1998void MainWindow::saveStopTimer()
1976{ 1999{
1977 mSaveTimer.stop(); 2000 mSaveTimer.stop();
1978} 2001}
1979void MainWindow::backupAllFiles() 2002void MainWindow::backupAllFiles()
1980{ 2003{
1981 QDate reference ( 2000,1,1); 2004 QDate reference ( 2000,1,1);
1982 int daysTo = reference.daysTo ( QDate::currentDate() ); 2005 int daysTo = reference.daysTo ( QDate::currentDate() );
1983 setCaption(i18n("Creating backup ... please wait ..." )); 2006 setCaption(i18n("Creating backup ... please wait ..." ));
1984 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate); 2007 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate);
1985 // we need the file path, the backup dir and the number of bups as param 2008 // we need the file path, the backup dir and the number of bups as param
1986 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir; 2009 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir;
1987 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir) 2010 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir)
1988 bupDir = KGlobalSettings::backupDataDir(); 2011 bupDir = KGlobalSettings::backupDataDir();
1989 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 2012 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
1990 if ( retval == 0 ) { 2013 if ( retval == 0 ) {
1991 setCaption(i18n("Backup cancelled" )); 2014 setCaption(i18n("Backup cancelled" ));
1992 qDebug("KO: Backup cancelled. Will try again tomorrow "); 2015 qDebug("KO: Backup cancelled. Will try again tomorrow ");
1993 // retval == 0 : backup skipped for today, try again tomorrow 2016 // retval == 0 : backup skipped for today, try again tomorrow
1994 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1; 2017 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1;
1995 } else if ( retval == 1 ){ 2018 } else if ( retval == 1 ){
1996 qDebug("KO: Backup created."); 2019 qDebug("KO: Backup created.");
1997 // backup ok 2020 // backup ok
1998 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2021 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1999 KopiCalendarFile * cal = calendars.first(); 2022 KopiCalendarFile * cal = calendars.first();
2000 cal = calendars.next(); 2023 cal = calendars.next();
2001 while ( cal ) { 2024 while ( cal ) {
2002 if ( !cal->mErrorOnLoad ) { 2025 if ( !cal->mErrorOnLoad ) {
2003 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 2026 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
2004 } 2027 }
2005 cal = calendars.next(); 2028 cal = calendars.next();
2006 } 2029 }
2007 KOPrefs::instance()->mLastBackupDate = daysTo; 2030 KOPrefs::instance()->mLastBackupDate = daysTo;
2008 setCaption(i18n("Backup succesfully finished" )); 2031 setCaption(i18n("Backup succesfully finished" ));
2009 } else if ( retval == 2 ){ 2032 } else if ( retval == 2 ){
2010 setCaption(i18n("Backup globally disabled" )); 2033 setCaption(i18n("Backup globally disabled" ));
2011 qDebug("KO: Backup globally cancelled."); 2034 qDebug("KO: Backup globally cancelled.");
2012 // backup globally cancelled 2035 // backup globally cancelled
2013 KPimGlobalPrefs::instance()->mBackupEnabled = false; 2036 KPimGlobalPrefs::instance()->mBackupEnabled = false;
2014 } 2037 }
2015 // retval == 3: do nothing, try again later 2038 // retval == 3: do nothing, try again later
2016} 2039}
2017void MainWindow::save() 2040void MainWindow::save()
2018{ 2041{
2019 if ( mSaveDelay ) { 2042 if ( mSaveDelay ) {
2020 if ( mSaveDelay + 60 < mSaveTime.elapsed()/1000 ) { 2043 int elapsed = mSaveTimerStart.secsTo( QDateTime::currentDateTime() );
2021 qDebug("KO: Save delay %d. Elapsed save time %d ", mSaveDelay, mSaveTime.elapsed()/1000 ); 2044 if ( mSaveDelay < elapsed ) {
2022 qDebug("KO: Restarting save timer"); 2045 qDebug("KO: Pending save after wakeup from suspend detected.");
2023 int msec = 10000; 2046 qDebug("KO: Save delay %d sec. Elapsed save time %d sec.", mSaveDelay, elapsed );
2024 mSaveTimer.start( msec, true ); // 1 minute 2047 qDebug("KO: Restarting save timer to save in 15 sec.");
2025 mSaveTime.restart(); 2048 int msec = 15000;
2049 mSaveTimer.start( msec, true );
2050 mSaveTimerStart = QDateTime::currentDateTime();
2026 mSaveDelay = msec/1000; 2051 mSaveDelay = msec/1000;
2027 return; 2052 return;
2028 } 2053 }
2029 } 2054 }
2030 2055
2031 if ( mView->viewManager()->journalView() ) 2056 if ( mView->viewManager()->journalView() )
2032 mView->viewManager()->journalView()->checkModified(); 2057 mView->viewManager()->journalView()->checkModified();
2033 if ( !mCalendarModifiedFlag ) { 2058 if ( !mCalendarModifiedFlag ) {
2034 qDebug("KO: Calendar not modified. Nothing saved."); 2059 qDebug("KO: Calendar not modified. Nothing saved.");
2035 return; 2060 return;
2036 } 2061 }
2037 if ( mSyncManager->blockSave() ) { 2062 if ( mSyncManager->blockSave() ) {
2038 slotModifiedChanged( true ); 2063 slotModifiedChanged( true );
2039 return; 2064 return;
2040 } 2065 }
2041 mSaveDelay = 0; 2066 mSaveDelay = 0;
2042 mSyncManager->setBlockSave(true); 2067 mSyncManager->setBlockSave(true);
2043 if ( mView->checkAllFileVersions() ) { 2068 if ( mView->checkAllFileVersions() ) {
2044 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){ 2069 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){
2045 QDate reference ( 2000,1,1); 2070 QDate reference ( 2000,1,1);
2046 int daysTo = reference.daysTo ( QDate::currentDate() ); 2071 int daysTo = reference.daysTo ( QDate::currentDate() );
2047 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) { 2072 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) {
2048 backupAllFiles(); 2073 backupAllFiles();
2049 } 2074 }
2050 ; // KPimGlobalPrefs::instance()->mLastBackupDate 2075 ; // KPimGlobalPrefs::instance()->mLastBackupDate
2051 } 2076 }
2052 QTime neededSaveTime; 2077 QTime neededSaveTime;
2053 neededSaveTime.start(); 2078 neededSaveTime.start();
2054 if ( !isMinimized () ) 2079 if ( !isMinimized () )
2055 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 2080 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
2056 qDebug("KO: Start saving data to file!"); 2081 qDebug("KO: Start saving data to file!");
2057 if ( mView->saveCalendars() ) 2082 if ( mView->saveCalendars() )
2058 mCalendarModifiedFlag = false; 2083 mCalendarModifiedFlag = false;
2059 int msNeeded = neededSaveTime.elapsed(); 2084 int msNeeded = neededSaveTime.elapsed();
2060 qDebug("KO: Needed %d ms for saving.",msNeeded ); 2085 qDebug("KO: Needed %d ms for saving.",msNeeded );
2061 QString savemes; 2086 QString savemes;
2062 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 2087 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
2063 if ( !isMinimized () ) 2088 if ( !isMinimized () )
2064 setCaption(savemes); 2089 setCaption(savemes);
2065 else 2090 else
2066 qDebug(savemes); 2091 qDebug(savemes);
2067 } else { 2092 } else {
2068 setCaption(i18n("Saving cancelled!")); 2093 setCaption(i18n("Saving cancelled!"));
2069 mCalendarModifiedFlag = false; 2094 mCalendarModifiedFlag = false;
2070 slotModifiedChanged( true ); 2095 slotModifiedChanged( true );
2071 } 2096 }
2072 mSyncManager->setBlockSave( false ); 2097 mSyncManager->setBlockSave( false );
2073} 2098}
2074 2099
2075void MainWindow::keyReleaseEvent ( QKeyEvent * e) 2100void MainWindow::keyReleaseEvent ( QKeyEvent * e)
2076{ 2101{
2077 if ( !e->isAutoRepeat() ) { 2102 if ( !e->isAutoRepeat() ) {
2078 mFlagKeyPressed = false; 2103 mFlagKeyPressed = false;
2079 } 2104 }
2080} 2105}
2081void MainWindow::keyPressEvent ( QKeyEvent * e ) 2106void MainWindow::keyPressEvent ( QKeyEvent * e )
2082{ 2107{
2083 qApp->processEvents(); 2108 qApp->processEvents();
2084 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 2109 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
2085 e->ignore(); 2110 e->ignore();
2086 // qDebug(" ignore %d",e->isAutoRepeat() ); 2111 // qDebug(" ignore %d",e->isAutoRepeat() );
2087 return; 2112 return;
2088 } 2113 }
2089 if (! e->isAutoRepeat() ) 2114 if (! e->isAutoRepeat() )
2090 mFlagKeyPressed = true; 2115 mFlagKeyPressed = true;
2091 KOPrefs *p = KOPrefs::instance(); 2116 KOPrefs *p = KOPrefs::instance();
2092 bool showSelectedDates = false; 2117 bool showSelectedDates = false;
2093 int size; 2118 int size;
2094 int pro = 0; 2119 int pro = 0;
2095 //qDebug("MainWindow::keyPressEvent "); 2120 //qDebug("MainWindow::keyPressEvent ");
2096 switch ( e->key() ) { 2121 switch ( e->key() ) {
2097 case Qt::Key_Right: 2122 case Qt::Key_Right:
2098 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 2123 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
2099 mView->goNextMonth(); 2124 mView->goNextMonth();
2100 else 2125 else
2101 mView->goNext(); 2126 mView->goNext();
2102 showSelectedDates = true; 2127 showSelectedDates = true;
2103 break; 2128 break;
2104 case Qt::Key_Left: 2129 case Qt::Key_Left:
2105 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2130 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2106 mView->goPreviousMonth(); 2131 mView->goPreviousMonth();
2107 else 2132 else
2108 mView->goPrevious(); 2133 mView->goPrevious();
2109 showSelectedDates = true; 2134 showSelectedDates = true;
2110 break; 2135 break;
2111 case Qt::Key_Down: 2136 case Qt::Key_Down:
2112 mView->viewManager()->agendaView()->scrollOneHourDown(); 2137 mView->viewManager()->agendaView()->scrollOneHourDown();
2113 break; 2138 break;
2114 case Qt::Key_Up: 2139 case Qt::Key_Up:
2115 mView->viewManager()->agendaView()->scrollOneHourUp(); 2140 mView->viewManager()->agendaView()->scrollOneHourUp();
2116 break; 2141 break;
2117 case Qt::Key_K: 2142 case Qt::Key_K:
2118 mView->viewManager()->showMonthViewWeek(); 2143 mView->viewManager()->showMonthViewWeek();
2119 break; 2144 break;
2120 case Qt::Key_I: 2145 case Qt::Key_I:
2121 mView->showIncidence(); 2146 mView->showIncidence();
2122 break; 2147 break;
2123 case Qt::Key_Delete: 2148 case Qt::Key_Delete:
2124 case Qt::Key_Backspace: 2149 case Qt::Key_Backspace:
2125 mView->deleteIncidence(); 2150 mView->deleteIncidence();
2126 break; 2151 break;
2127 case Qt::Key_D: 2152 case Qt::Key_D:
2128 mView->viewManager()->showDayView(); 2153 mView->viewManager()->showDayView();
2129 showSelectedDates = true; 2154 showSelectedDates = true;
2130 break; 2155 break;
2131 case Qt::Key_O: 2156 case Qt::Key_O:
2132 mView->toggleFilerEnabled( ); 2157 mView->toggleFilerEnabled( );
2133 break; 2158 break;
2134 case Qt::Key_0: 2159 case Qt::Key_0:
2135 case Qt::Key_1: 2160 case Qt::Key_1:
2136 case Qt::Key_2: 2161 case Qt::Key_2:
2137 case Qt::Key_3: 2162 case Qt::Key_3:
2138 case Qt::Key_4: 2163 case Qt::Key_4:
2139 case Qt::Key_5: 2164 case Qt::Key_5:
2140 case Qt::Key_6: 2165 case Qt::Key_6:
2141 case Qt::Key_7: 2166 case Qt::Key_7:
2142 case Qt::Key_8: 2167 case Qt::Key_8:
2143 case Qt::Key_9: 2168 case Qt::Key_9:
2144 pro = e->key()-48; 2169 pro = e->key()-48;
2145 if ( pro == 0 ) 2170 if ( pro == 0 )
2146 pro = 10; 2171 pro = 10;
2147 if ( e->state() == Qt::ControlButton) 2172 if ( e->state() == Qt::ControlButton)
2148 pro += 10; 2173 pro += 10;
2149 break; 2174 break;
2150 case Qt::Key_M: 2175 case Qt::Key_M:
2151 mView->viewManager()->showMonthView(); 2176 mView->viewManager()->showMonthView();
2152 showSelectedDates = true; 2177 showSelectedDates = true;
2153 break; 2178 break;
@@ -2450,284 +2475,300 @@ void MainWindow::setCaptionToDates()
2450 else { 2475 else {
2451 QString addString; 2476 QString addString;
2452 if ( date == QDateTime::currentDateTime().date() ) 2477 if ( date == QDateTime::currentDateTime().date() )
2453 addString = i18n("Today"); 2478 addString = i18n("Today");
2454 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 2479 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
2455 addString = i18n("Tomorrow"); 2480 addString = i18n("Tomorrow");
2456 if ( !addString.isEmpty() ) 2481 if ( !addString.isEmpty() )
2457 selDates = addString+", "+selDates ; 2482 selDates = addString+", "+selDates ;
2458 } 2483 }
2459 setCaption( i18n("Dates: ") + selDates ); 2484 setCaption( i18n("Dates: ") + selDates );
2460 2485
2461} 2486}
2462void MainWindow::showConfigureAgenda( ) 2487void MainWindow::showConfigureAgenda( )
2463{ 2488{
2464 int iii; 2489 int iii;
2465 for ( iii = 1;iii<= 10 ;++iii ){ 2490 for ( iii = 1;iii<= 10 ;++iii ){
2466 configureAgendaMenu->setItemChecked( (iii+1)*2, false ); 2491 configureAgendaMenu->setItemChecked( (iii+1)*2, false );
2467 } 2492 }
2468 configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true ); 2493 configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true );
2469} 2494}
2470void MainWindow::configureAgenda( int item ) 2495void MainWindow::configureAgenda( int item )
2471{ 2496{
2472 if ( KOPrefs::instance()->mHourSize == item ) 2497 if ( KOPrefs::instance()->mHourSize == item )
2473 return; 2498 return;
2474 KOPrefs::instance()->mHourSize=item; 2499 KOPrefs::instance()->mHourSize=item;
2475 mView->viewManager()->agendaView()->updateConfig(); 2500 mView->viewManager()->agendaView()->updateConfig();
2476} 2501}
2477 2502
2478void MainWindow::saveCalendar() 2503void MainWindow::saveCalendar()
2479{ 2504{
2480 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir; 2505 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir;
2481 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir) 2506 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir)
2482 bupDir = KGlobalSettings::backupDataDir(); 2507 bupDir = KGlobalSettings::backupDataDir();
2483 bupDir = KGlobal::formatMessage ( bupDir, 0 ); 2508 bupDir = KGlobal::formatMessage ( bupDir, 0 );
2484 QString bupHint; 2509 QString bupHint;
2485 if ( !KPimGlobalPrefs::instance()->mBackupEnabled ) 2510 if ( !KPimGlobalPrefs::instance()->mBackupEnabled )
2486 bupHint = i18n("(Hint: You can enable automatic backup in the global settings!)"); 2511 bupHint = i18n("(Hint: You can enable automatic backup in the global settings!)");
2487 if ( KMessageBox::warningContinueCancel( this, i18n("This will <b>backup all calendar files</b> to the directory %1 %2").arg(bupDir).arg(bupHint),i18n("Information") ) != KMessageBox::Continue ) return; 2512 if ( KMessageBox::warningContinueCancel( this, i18n("This will <b>backup all calendar files</b> to the directory %1 %2").arg(bupDir).arg(bupHint),i18n("Information") ) != KMessageBox::Continue ) return;
2488 bool enabled = KPimGlobalPrefs::instance()->mBackupEnabled; 2513 bool enabled = KPimGlobalPrefs::instance()->mBackupEnabled;
2489 KPimGlobalPrefs::instance()->mBackupEnabled = false; 2514 KPimGlobalPrefs::instance()->mBackupEnabled = false;
2490 save(); 2515 save();
2491 KPimGlobalPrefs::instance()->mBackupEnabled = enabled; 2516 KPimGlobalPrefs::instance()->mBackupEnabled = enabled;
2492 backupAllFiles(); 2517 backupAllFiles();
2493} 2518}
2494void MainWindow::loadCalendar() 2519void MainWindow::loadCalendar()
2495{ 2520{
2496 2521
2497 2522
2498#if 0 2523#if 0
2499 QString fn = KOPrefs::instance()->mLastLoadFile; 2524 QString fn = KOPrefs::instance()->mLastLoadFile;
2500 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); 2525 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this );
2501 2526
2502 if ( fn == "" ) 2527 if ( fn == "" )
2503 return; 2528 return;
2504 QFileInfo info; 2529 QFileInfo info;
2505 info.setFile( fn ); 2530 info.setFile( fn );
2506 QString mess; 2531 QString mess;
2507 bool loadbup = true; 2532 bool loadbup = true;
2508 if ( info. exists() ) { 2533 if ( info. exists() ) {
2509 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 2534 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
2510 int result = QMessageBox::warning( this, "KO/Pi: Warning!", 2535 int result = QMessageBox::warning( this, "KO/Pi: Warning!",
2511 mess, 2536 mess,
2512 i18n("Load!"), i18n("Cancel"), 0, 2537 i18n("Load!"), i18n("Cancel"), 0,
2513 0, 1 ); 2538 0, 1 );
2514 if ( result != 0 ) { 2539 if ( result != 0 ) {
2515 loadbup = false; 2540 loadbup = false;
2516 } 2541 }
2517 } else { 2542 } else {
2518 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 2543 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
2519 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, 2544 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
2520 0, 1 ); 2545 0, 1 );
2521 2546
2522 return; 2547 return;
2523 } 2548 }
2524 if ( loadbup ) { 2549 if ( loadbup ) {
2525 mView->openCalendar( fn ); 2550 mView->openCalendar( fn );
2526 KOPrefs::instance()->mLastLoadFile = fn; 2551 KOPrefs::instance()->mLastLoadFile = fn;
2527 mess = i18n("KO/Pi:Loaded %1").arg(fn) ; 2552 mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
2528 setCaption(mess); 2553 setCaption(mess);
2529 } 2554 }
2530#endif 2555#endif
2531 2556
2532} 2557}
2533void MainWindow::quickImportIcal() 2558void MainWindow::quickImportIcal()
2534{ 2559{
2535 importFile( KOPrefs::instance()->mLastImportFile, false ); 2560 importFile( KOPrefs::instance()->mLastImportFile, false );
2536} 2561}
2537void MainWindow::importFile( QString fn, bool quick ) 2562void MainWindow::importFile( QString fn, bool quick )
2538{ 2563{
2539 QFileInfo info; 2564 QFileInfo info;
2540 info.setFile( fn ); 2565 info.setFile( fn );
2541 QString mess; 2566 QString mess;
2542 if ( !info. exists() ) { 2567 if ( !info. exists() ) {
2543 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); 2568 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30));
2544 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 2569 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
2545 mess ); 2570 mess );
2546 return; 2571 return;
2547 } 2572 }
2548 int result = 0; 2573 int result = 0;
2549 if ( !quick ) { 2574 if ( !quick ) {
2550 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 2575 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
2551 result = QMessageBox::warning( this, "KO/Pi: Warning!", 2576 result = QMessageBox::warning( this, "KO/Pi: Warning!",
2552 mess, 2577 mess,
2553 "Import", "Cancel", 0, 2578 "Import", "Cancel", 0,
2554 0, 1 ); 2579 0, 1 );
2555 } 2580 }
2556 if ( result == 0 ) { 2581 if ( result == 0 ) {
2557 if ( mView->openCalendar( fn, true )) { 2582 if ( mView->openCalendar( fn, true )) {
2558 KOPrefs::instance()->mLastImportFile = fn; 2583 KOPrefs::instance()->mLastImportFile = fn;
2559 setCaption(i18n("Imported file successfully")); 2584 setCaption(i18n("Imported file successfully"));
2560 } else { 2585 } else {
2561 setCaption(i18n("Error importing file")); 2586 setCaption(i18n("Error importing file"));
2562 } 2587 }
2563 mView->updateView(); 2588 mView->updateView();
2564 } 2589 }
2565} 2590}
2566 2591
2567void MainWindow::importIcal() 2592void MainWindow::importIcal()
2568{ 2593{
2569 2594
2570 QString fn =KOPrefs::instance()->mLastImportFile; 2595 QString fn =KOPrefs::instance()->mLastImportFile;
2571 2596
2572 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); 2597 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this );
2573 if ( fn == "" ) 2598 if ( fn == "" )
2574 return; 2599 return;
2575 importFile( fn, true ); 2600 importFile( fn, true );
2576 2601
2577} 2602}
2578 2603void MainWindow::exportCalendar( bool iCalFormat )
2579void MainWindow::exportVCalendar()
2580{ 2604{
2581 QString fn = KOPrefs::instance()->mLastVcalFile; 2605 QString fn = KOPrefs::instance()->mLastVcalFile;
2582 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); 2606 if ( iCalFormat ) {
2607 fn = QDir::homeDirPath()+"/kopiexport.ics";
2608 fn = KFileDialog::getSaveFileName( fn, i18n("Export iCal filename(*.ics)"), this );
2609 }
2610 else
2611 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
2583 if ( fn == "" ) 2612 if ( fn == "" )
2584 return; 2613 return;
2585 QFileInfo info; 2614 QFileInfo info;
2586 info.setFile( fn ); 2615 info.setFile( fn );
2587 QString mes; 2616 QString mes;
2588 bool createbup = true; 2617 bool createbup = true;
2589 if ( info. exists() ) { 2618 if ( info. exists() ) {
2590 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 2619 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
2591 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 2620 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
2592 i18n("Overwrite!"), i18n("Cancel"), 0, 2621 i18n("Overwrite!"), i18n("Cancel"), 0,
2593 0, 1 ); 2622 0, 1 );
2594 if ( result != 0 ) { 2623 if ( result != 0 ) {
2595 createbup = false; 2624 createbup = false;
2596 } 2625 }
2597 } 2626 }
2598 if ( createbup ) { 2627 if ( createbup ) {
2599 if ( mView->exportVCalendar( fn ) ) { 2628 bool success = false;
2600 KOPrefs::instance()->mLastVcalFile = fn; 2629 if ( iCalFormat )
2630 success = mView->exportICalendar( fn );
2631 else
2632 success = mView->exportVCalendar( fn );
2633 if ( success ) {
2601 if ( fn.length() > 20 ) 2634 if ( fn.length() > 20 )
2602 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; 2635 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
2603 else 2636 else
2604 mes = i18n("KO/Pi:Exported to %1").arg(fn ); 2637 mes = i18n("KO/Pi:Exported to %1").arg(fn );
2605 setCaption(mes); 2638 setCaption(mes);
2606 } 2639 }
2607 } 2640 }
2608 2641
2609} 2642}
2643void MainWindow::exportICalendar()
2644{
2645 exportCalendar( true );
2646}
2647void MainWindow::exportVCalendar()
2648{
2649 exportCalendar( false );
2650}
2610QString MainWindow::sentSyncFile() 2651QString MainWindow::sentSyncFile()
2611{ 2652{
2612#ifdef DESKTOP_VERSION 2653#ifdef DESKTOP_VERSION
2613 return QDir::convertSeparators( locateLocal( "tmp", "copysynccal.ics" ) ); 2654 return QDir::convertSeparators( locateLocal( "tmp", "copysynccal.ics" ) );
2614#else 2655#else
2615 return QString( "/tmp/copysynccal.ics" ); 2656 return QString( "/tmp/copysynccal.ics" );
2616#endif 2657#endif
2617} 2658}
2618 2659
2619void MainWindow::syncFileRequest() 2660void MainWindow::syncFileRequest()
2620{ 2661{
2621 while ( mSyncManager->blockSave() ) { 2662 while ( mSyncManager->blockSave() ) {
2622 qApp->processEvents(); 2663 qApp->processEvents();
2623 } 2664 }
2624 mSyncManager->setBlockSave(true); 2665 mSyncManager->setBlockSave(true);
2625 2666
2626 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2667 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2627 mSyncManager->slotSyncMenu( 999 ); 2668 mSyncManager->slotSyncMenu( 999 );
2628 } 2669 }
2629 2670
2630 setCaption(i18n("Saving Data to temp file ..." )); 2671 setCaption(i18n("Saving Data to temp file ..." ));
2631 mView->saveCalendar( sentSyncFile() ); 2672 mView->saveCalendar( sentSyncFile() );
2632 setCaption(i18n("Data saved to temp file!" )); 2673 setCaption(i18n("Data saved to temp file!" ));
2633 mSyncManager->setBlockSave( false ); 2674 mSyncManager->setBlockSave( false );
2634 2675
2635} 2676}
2636void MainWindow::getFile( bool success ) 2677void MainWindow::getFile( bool success )
2637{ 2678{
2638 if ( ! success ) { 2679 if ( ! success ) {
2639 setCaption( i18n("Error receiving file. Nothing changed!") ); 2680 setCaption( i18n("Error receiving file. Nothing changed!") );
2640 return; 2681 return;
2641 } 2682 }
2642 mView->mergeFile( sentSyncFile() ); 2683 mView->mergeFile( sentSyncFile() );
2643 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2684 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2644 mSyncManager->slotSyncMenu( 999 ); 2685 mSyncManager->slotSyncMenu( 999 );
2645 } 2686 }
2646 setCaption( i18n("Pi-Sync successful!") ); 2687 setCaption( i18n("Pi-Sync successful!") );
2647} 2688}
2648void MainWindow::printListView() 2689void MainWindow::printListView()
2649{ 2690{
2650 2691
2651 QString message = i18n("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."); 2692 QString message = i18n("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.");
2652 2693
2653 KMessageBox::information( this, message); 2694 KMessageBox::information( this, message);
2654} 2695}
2655void MainWindow::printSel( ) 2696void MainWindow::printSel( )
2656{ 2697{
2657 mView->viewManager()->agendaView()->agenda()->printSelection(); 2698 mView->viewManager()->agendaView()->agenda()->printSelection();
2658} 2699}
2659 2700
2660void MainWindow::printCal() 2701void MainWindow::printCal()
2661{ 2702{
2662 mView->print();//mCp->showDialog(); 2703 mView->print();//mCp->showDialog();
2663} 2704}
2664 2705
2665 2706
2666#include "libkdepim/kdatepicker.h" 2707#include "libkdepim/kdatepicker.h"
2667#include <kdatetbl.h> 2708#include <kdatetbl.h>
2668 2709
2669void MainWindow::weekAction() 2710void MainWindow::weekAction()
2670{ 2711{
2671 int month; 2712 int month;
2672 KPopupFrame* popup = new KPopupFrame(this); 2713 KPopupFrame* popup = new KPopupFrame(this);
2673 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup); 2714 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup);
2674 // ----- 2715 // -----
2675 picker->resize(picker->sizeHint()); 2716 picker->resize(picker->sizeHint());
2676 popup->setMainWidget(picker); 2717 popup->setMainWidget(picker);
2677 picker->setFocus(); 2718 picker->setFocus();
2678 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 2719 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
2679 int x = 0; 2720 int x = 0;
2680 int y = iconToolBar->height(); 2721 int y = iconToolBar->height();
2681 int dX = 0; 2722 int dX = 0;
2682 int dY = 0; 2723 int dY = 0;
2683 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2724 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2684 if ( iconToolBar->y() > height()/2 ) { 2725 if ( iconToolBar->y() > height()/2 ) {
2685 dY = picker->sizeHint().height()+8; 2726 dY = picker->sizeHint().height()+8;
2686 y = 0; 2727 y = 0;
2687 } 2728 }
2688 } else { 2729 } else {
2689 if ( iconToolBar->x() > width()/2 ) { // right side 2730 if ( iconToolBar->x() > width()/2 ) { // right side
2690 x=0; 2731 x=0;
2691 dX= picker->sizeHint().width()+8; 2732 dX= picker->sizeHint().width()+8;
2692 y = 0; 2733 y = 0;
2693 } else { 2734 } else {
2694 x= iconToolBar->width(); 2735 x= iconToolBar->width();
2695 y = 0; 2736 y = 0;
2696 } 2737 }
2697 } 2738 }
2698 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2739 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2699 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)))) 2740 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))))
2700 { 2741 {
2701 month = picker->getResult(); 2742 month = picker->getResult();
2702 emit selectWeek ( month ); 2743 emit selectWeek ( month );
2703 //qDebug("weekSelected %d ", month); 2744 //qDebug("weekSelected %d ", month);
2704 } 2745 }
2705 delete popup; 2746 delete popup;
2706} 2747}
2707 2748
2708void MainWindow::hideEvent ( QHideEvent * ) 2749void MainWindow::hideEvent ( QHideEvent * )
2709{ 2750{
2710 QString message; 2751 QString message;
2711 QDateTime nextA = mCalendar->nextAlarmEventDateTime(); 2752 QDateTime nextA = mCalendar->nextAlarmEventDateTime();
2712 if ( nextA.isValid() ) { 2753 if ( nextA.isValid() ) {
2713 QString sum = mCalendar->nextSummary(); 2754 QString sum = mCalendar->nextSummary();
2714 2755
2715 message = i18n("%1 %2 - %3 (next event/todo with alarm)").arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDate(nextA.date() , false)); 2756 message = i18n("%1 %2 - %3 (next event/todo with alarm)").arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDate(nextA.date() , false));
2716 setCaption( message ); 2757 setCaption( message );
2717 } 2758 }
2718} 2759}
2719 2760
2720void MainWindow::resizeEvent( QResizeEvent* e) 2761void MainWindow::resizeEvent( QResizeEvent* e)
2721{ 2762{
2722#ifndef DESKTOP_VERSION 2763#ifndef DESKTOP_VERSION
2723 if ( filterToolBar ) { 2764 if ( filterToolBar ) {
2724 if ( !KOPrefs::instance()->mShowIconFilter && !KOPrefs::instance()->mShowIconOnetoolbar && QApplication::desktop()->width() > 320) { 2765 if ( !KOPrefs::instance()->mShowIconFilter && !KOPrefs::instance()->mShowIconOnetoolbar && QApplication::desktop()->width() > 320) {
2725 if (QApplication::desktop()->width() > QApplication::desktop()->height() ) 2766 if (QApplication::desktop()->width() > QApplication::desktop()->height() )
2726 filterToolBar->hide(); 2767 filterToolBar->hide();
2727 else 2768 else
2728 filterToolBar->show(); 2769 filterToolBar->show();
2729 } 2770 }
2730 } 2771 }
2731#endif 2772#endif
2732 QMainWindow::resizeEvent( e); 2773 QMainWindow::resizeEvent( e);
2733} 2774}
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 657c0a8..71c069b 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -1,186 +1,189 @@
1#ifndef KORGE_MAINWINDOW_H 1#ifndef KORGE_MAINWINDOW_H
2#define KORGE_MAINWINDOW_H 2#define KORGE_MAINWINDOW_H
3 3
4#include <qmainwindow.h> 4#include <qmainwindow.h>
5#include <qtimer.h> 5#include <qtimer.h>
6#include <qdict.h> 6#include <qdict.h>
7#include <qfile.h> 7#include <qfile.h>
8#include <qmenubar.h> 8#include <qmenubar.h>
9#include <qtextstream.h> 9#include <qtextstream.h>
10#include <qregexp.h> 10#include <qregexp.h>
11 11
12#include <libkcal/incidence.h> 12#include <libkcal/incidence.h>
13#include <ksyncmanager.h> 13#include <ksyncmanager.h>
14#include <kpopupmenu.h> 14#include <kpopupmenu.h>
15#ifndef DESKTOP_VERSION 15#ifndef DESKTOP_VERSION
16#include <qcopchannel_qws.h> 16#include <qcopchannel_qws.h>
17#endif 17#endif
18class QAction; 18class QAction;
19class CalendarView; 19class CalendarView;
20class KSyncProfile; 20class KSyncProfile;
21#ifdef DESKTOP_VERSION 21#ifdef DESKTOP_VERSION
22 22
23#define QPEToolBar QToolBar 23#define QPEToolBar QToolBar
24#endif 24#endif
25class QPEToolBar; 25class QPEToolBar;
26 26
27 27
28namespace KCal { 28namespace KCal {
29class CalendarLocal; 29class CalendarLocal;
30} 30}
31 31
32using namespace KCal; 32using namespace KCal;
33 33
34class MainWindow : public QMainWindow 34class MainWindow : public QMainWindow
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37 public: 37 public:
38 MainWindow( QWidget *parent = 0, const char *name = 0 ); 38 MainWindow( QWidget *parent = 0, const char *name = 0 );
39 ~MainWindow(); 39 ~MainWindow();
40 bool beamReceiveEnabled(); 40 bool beamReceiveEnabled();
41 static QString defaultFileName(); 41 static QString defaultFileName();
42 static QString syncFileName(); 42 static QString syncFileName();
43 static QString resourcePath(); 43 static QString resourcePath();
44 public slots: 44 public slots:
45 void setUsesBigPixmaps ( bool ); 45 void setUsesBigPixmaps ( bool );
46 void setCaption ( const QString & ); 46 void setCaption ( const QString & );
47 void updateWeekNum(const KCal::DateList &); 47 void updateWeekNum(const KCal::DateList &);
48 void updateWeek(QDate); 48 void updateWeek(QDate);
49 void updateFilterToolbar(); 49 void updateFilterToolbar();
50 virtual void showMaximized (); 50 virtual void showMaximized ();
51 void configureAgenda( int ); 51 void configureAgenda( int );
52 void recieve( const QCString& msg, const QByteArray& data ); 52 void recieve( const QCString& msg, const QByteArray& data );
53 void receiveStart( const QCString& msg, const QByteArray& data ); 53 void receiveStart( const QCString& msg, const QByteArray& data );
54 protected slots: 54 protected slots:
55 void loadDataAfterStart(); 55 void loadDataAfterStart();
56 void calHint(); 56 void calHint();
57 void startMultiSync(); 57 void startMultiSync();
58 void setCaptionToDates(); 58 void setCaptionToDates();
59 void weekAction(); 59 void weekAction();
60 void about(); 60 void about();
61 void licence(); 61 void licence();
62 void faq(); 62 void faq();
63 void usertrans(); 63 void usertrans();
64 void features(); 64 void features();
65 void synchowto(); 65 void synchowto();
66 void storagehowto(); 66 void storagehowto();
67 void timetrackinghowto(); 67 void timetrackinghowto();
68 void kdesynchowto(); 68 void kdesynchowto();
69 void multisynchowto(); 69 void multisynchowto();
70 void whatsNew(); 70 void whatsNew();
71 void keyBindings(); 71 void keyBindings();
72 void aboutAutoSaving();; 72 void aboutAutoSaving();;
73 void aboutKnownBugs(); 73 void aboutKnownBugs();
74 74
75 void processIncidenceSelection( Incidence * ); 75 void processIncidenceSelection( Incidence * );
76 76
77 void importQtopia(); 77 void importQtopia();
78 void importBday(); 78 void importBday();
79 void importOL(); 79 void importOL();
80 void importIcal(); 80 void importIcal();
81 void importFile( QString, bool ); 81 void importFile( QString, bool );
82 void quickImportIcal(); 82 void quickImportIcal();
83 83
84 void slotModifiedChanged( bool ); 84 void slotModifiedChanged( bool );
85 85
86 void save(); 86 void save();
87 void backupAllFiles(); 87 void backupAllFiles();
88 void saveStopTimer(); 88 void saveStopTimer();
89 void configureToolBar( int ); 89 void configureToolBar( int );
90 void printSel(); 90 void printSel();
91 void printCal(); 91 void printCal();
92 void printListView(); 92 void printListView();
93 void saveCalendar(); 93 void saveCalendar();
94 void loadCalendar(); 94 void loadCalendar();
95 void exportVCalendar(); 95 void exportVCalendar();
96 void exportICalendar();
97 void exportCalendar( bool );
96 void fillFilterMenu(); 98 void fillFilterMenu();
97 void fillFilterMenuTB(); 99 void fillFilterMenuTB();
98 void selectFilter( int ); 100 void selectFilter( int );
99 void fillFilterMenuPopup(); 101 void fillFilterMenuPopup();
100 void selectFilterPopup( int ); 102 void selectFilterPopup( int );
101 void exportToPhone( int ); 103 void exportToPhone( int );
102 void toggleBeamReceive(); 104 void toggleBeamReceive();
103 void disableBR(bool); 105 void disableBR(bool);
104 signals: 106 signals:
105 void selectWeek ( int ); 107 void selectWeek ( int );
106 private slots: 108 private slots:
107 void slotResetFocus(); 109 void slotResetFocus();
108 void slotResetFocusLoop(); 110 void slotResetFocusLoop();
109 void showConfigureAgenda(); 111 void showConfigureAgenda();
110 void getFile( bool ); 112 void getFile( bool );
111 void syncFileRequest(); 113 void syncFileRequest();
112 114
113 protected: 115 protected:
114 int mFocusLoop; 116 int mFocusLoop;
115 void hideEvent ( QHideEvent * ); 117 void hideEvent ( QHideEvent * );
116 QString sentSyncFile(); 118 QString sentSyncFile();
117 void displayText( QString, QString); 119 void displayText( QString, QString);
118 void enableIncidenceActions( bool ); 120 void enableIncidenceActions( bool );
121 bool askForQuitOnSaveError();
119 122
120 private: 123 private:
121 124
122 QCString mCStringMess; 125 QCString mCStringMess;
123 QByteArray mByteData; 126 QByteArray mByteData;
124 127
125 //void setMenuBar( QMenuBar * ); 128 //void setMenuBar( QMenuBar * );
126 bool mBRdisabled; 129 bool mBRdisabled;
127#ifndef DESKTOP_VERSION 130#ifndef DESKTOP_VERSION
128 QCopChannel* infrared; 131 QCopChannel* infrared;
129#endif 132#endif
130 QAction* brAction; 133 QAction* brAction;
131 KSyncManager* mSyncManager; 134 KSyncManager* mSyncManager;
132 bool mClosed; 135 bool mClosed;
133 void saveOnClose(); 136 void saveOnClose();
134 bool mFlagKeyPressed; 137 bool mFlagKeyPressed;
135 bool mBlockAtStartup; 138 bool mBlockAtStartup;
136 KMenuBar *menuBar1; 139 KMenuBar *menuBar1;
137 QPEToolBar *iconToolBar; 140 QPEToolBar *iconToolBar;
138 QPEToolBar *viewToolBar; 141 QPEToolBar *viewToolBar;
139 QPEToolBar *navigatorToolBar; 142 QPEToolBar *navigatorToolBar;
140 QPEToolBar *filterToolBar; 143 QPEToolBar *filterToolBar;
141 KMenuBar *filterMenubar; 144 KMenuBar *filterMenubar;
142 QPopupMenu * filterPopupMenu; 145 QPopupMenu * filterPopupMenu;
143 QPopupMenu * mCurrentItemMenu; 146 QPopupMenu * mCurrentItemMenu;
144 void initActions(); 147 void initActions();
145 void setDefaultPreferences(); 148 void setDefaultPreferences();
146 void resizeEvent( QResizeEvent* e); 149 void resizeEvent( QResizeEvent* e);
147 void keyPressEvent ( QKeyEvent * ) ; 150 void keyPressEvent ( QKeyEvent * ) ;
148 void keyReleaseEvent ( QKeyEvent * ) ; 151 void keyReleaseEvent ( QKeyEvent * ) ;
149 QPopupMenu *configureToolBarMenu; 152 QPopupMenu *configureToolBarMenu;
150 QPopupMenu *selectFilterMenu; 153 QPopupMenu *selectFilterMenu;
151 QPopupMenu *selectFilterMenuTB; 154 QPopupMenu *selectFilterMenuTB;
152 QPopupMenu *configureAgendaMenu, *syncMenu; 155 QPopupMenu *configureAgendaMenu, *syncMenu;
153 CalendarLocal *mCalendar; 156 CalendarLocal *mCalendar;
154 CalendarView *mView; 157 CalendarView *mView;
155 QAction *mNewSubTodoAction; 158 QAction *mNewSubTodoAction;
156 QAction *mWeekAction; 159 QAction *mWeekAction;
157 QFont mWeekFont; 160 QFont mWeekFont;
158 QPixmap mWeekPixmap; 161 QPixmap mWeekPixmap;
159 QColor mWeekBgColor; 162 QColor mWeekBgColor;
160 163
161 QAction *mShowAction; 164 QAction *mShowAction;
162 QAction *mEditAction; 165 QAction *mEditAction;
163 QAction *mDeleteAction; 166 QAction *mDeleteAction;
164 QAction *mCloneAction; 167 QAction *mCloneAction;
165 QAction *mMoveAction; 168 QAction *mMoveAction;
166 QAction *mBeamAction; 169 QAction *mBeamAction;
167 QAction *mCancelAction; 170 QAction *mCancelAction;
168 QAction *mPrintSelAction; 171 QAction *mPrintSelAction;
169 172
170 QAction *mToggleNav; 173 QAction *mToggleNav;
171 QAction *mToggleFilter; 174 QAction *mToggleFilter;
172 QAction *mToggleAllday; 175 QAction *mToggleAllday;
173 QAction *actionFilterMenuTB; 176 QAction *actionFilterMenuTB;
174 177
175 void closeEvent( QCloseEvent* ce ); 178 void closeEvent( QCloseEvent* ce );
176 QTimer mSaveTimer; 179 QTimer mSaveTimer;
177 QTime mSaveTime; 180 QDateTime mSaveTimerStart;
178 int mSaveDelay; 181 int mSaveDelay;
179 //bool mBlockSaveFlag; 182 //bool mBlockSaveFlag;
180 bool mCalendarModifiedFlag; 183 bool mCalendarModifiedFlag;
181 QPixmap loadPixmap( QString ); 184 QPixmap loadPixmap( QString );
182 QPixmap listviewPix, listviewPix0, listviewPix20, listviewPix40, listviewPix60, listviewPix80, journalPix; 185 QPixmap listviewPix, listviewPix0, listviewPix20, listviewPix40, listviewPix60, listviewPix80, journalPix;
183}; 186};
184 187
185 188
186#endif 189#endif