summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt12
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt5
-rw-r--r--kalarmd/alarmdialog.cpp52
-rw-r--r--korganizer/calendarview.cpp18
-rw-r--r--korganizer/calendarview.h2
-rw-r--r--korganizer/mainwindow.cpp19
-rw-r--r--korganizer/mainwindow.h1
7 files changed, 95 insertions, 14 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index d4ec863..4250fb3 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,193 +1,205 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.0.21 ************ 3********** VERSION 2.0.21 ************
4 4
5Fixed another SMTP problem in OM/Pi. 5Fixed another SMTP problem in OM/Pi.
6Some small changed in the new datenavigator in KO/Pi. 6Some small changed in the new datenavigator in KO/Pi.
7Changed default setting for new filter in KA/Pi to "exclude categories". 7Changed default setting for new filter in KA/Pi to "exclude categories".
8Changed the default font size for 640x480 display . 8Changed the default font size for 640x480 display .
9Changed popup menu behaviour in agenda and list view. 9Changed popup menu behaviour in agenda and list view.
10Fixed some layout problems of the date label size in the month view. 10Fixed some layout problems of the date label size in the month view.
11Made month view update faster. 11Made month view update faster.
12Made first datenavigator repainting faster. 12Made first datenavigator repainting faster.
13Changed the title of the event/todo edit dialogs. 13Changed the title of the event/todo edit dialogs.
14Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course). 14Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course).
15Many small usebility fixes in KO/Pi. 15Many small usebility fixes in KO/Pi.
16Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi. 16Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi.
17The set of possible "next views" are the views you have toolbar buttons for. 17The set of possible "next views" are the views you have toolbar buttons for.
18 18
19Made alarm sound working on Linux.
20
21KO/Pi alarm applet changed:
22Made buttons in alarm dialog much bigger.
23Made setting of timer more user friendly by showing the actual timer fire time and making the buttons in the timer settings much bigger.
24The goal was it to make it possible to use a finger tip ( and not the stylus ) on the touchscreen to adjust the settings.
25
26And because this version is realeased at Easter, I added an Easter-egg:
27With a new undocumented command you can get a message box about the next alarm.
28Good luck to find it!
29
30
19 31
20********** VERSION 2.0.20 ************ 32********** VERSION 2.0.20 ************
21 33
22Two small fixes in OM/Pi. 34Two small fixes in OM/Pi.
23 35
24Better resizing of the new datenavigator in KO/Pi. 36Better resizing of the new datenavigator in KO/Pi.
25 37
26********** VERSION 2.0.19 ************ 38********** VERSION 2.0.19 ************
27KO/Pi: 39KO/Pi:
28Enhancements and bugfixes in the new datenavigator. 40Enhancements and bugfixes in the new datenavigator.
29Bugfix in this changelog: 41Bugfix in this changelog:
30The datenavigator was changed in version 2.0.18, not the datepicker. 42The datenavigator was changed in version 2.0.18, not the datepicker.
31 43
32********** VERSION 2.0.18 ************ 44********** VERSION 2.0.18 ************
33KO/Pi: 45KO/Pi:
34Fixed some minor problems. 46Fixed some minor problems.
35Cleaned up the KO/Pi config dialog. 47Cleaned up the KO/Pi config dialog.
36Fixed problem moving events in aganda view. 48Fixed problem moving events in aganda view.
37Made datepicker scaleable, i.e. if the datenavigator shows now a 49Made datepicker scaleable, i.e. if the datenavigator shows now a
38datenavigator matrix depending on its size. 50datenavigator matrix depending on its size.
39Birthdays are now displayed green in the datenavigator. 51Birthdays are now displayed green in the datenavigator.
40What'sThis Help in datenavigator shows all events of the day. 52What'sThis Help in datenavigator shows all events of the day.
41 53
42OM/Pi: 54OM/Pi:
43Updated the backend mail library to the latest version. 55Updated the backend mail library to the latest version.
44Please backup your mail before using this version. 56Please backup your mail before using this version.
45 57
46********** VERSION 2.0.17 ************ 58********** VERSION 2.0.17 ************
47 59
48KO/Pi: 60KO/Pi:
49Tooltips in month view were not sorted. Fixed. 61Tooltips in month view were not sorted. Fixed.
50Daylabel in agenda view ( for display of one day ) was too short. Fixed. 62Daylabel in agenda view ( for display of one day ) was too short. Fixed.
51Conflict display dialog for syncing was not on top of other windows. Fixed. 63Conflict display dialog for syncing was not on top of other windows. Fixed.
52Fixed some minor problems. 64Fixed some minor problems.
53 65
54Fixed an endless loop when importing vcs file with RESOURCES entry. 66Fixed an endless loop when importing vcs file with RESOURCES entry.
55 67
56********** VERSION 2.0.16 ************ 68********** VERSION 2.0.16 ************
57OM/Pi: 69OM/Pi:
58Fixed the SMTP account setting the option. 70Fixed the SMTP account setting the option.
59Fixed something in mail sending. 71Fixed something in mail sending.
60 72
61KO/Pi: 73KO/Pi:
62Added possibility to export selected events/todos as vcal file. 74Added possibility to export selected events/todos as vcal file.
63 75
64********** VERSION 2.0.15 ************ 76********** VERSION 2.0.15 ************
65 77
66PwM/Pi: 78PwM/Pi:
67Added keyboard shorcuts for 79Added keyboard shorcuts for
68- toggling summary view (space bar) 80- toggling summary view (space bar)
69- delete item (delete + backspace key) 81- delete item (delete + backspace key)
70- add new item ( i + n key) 82- add new item ( i + n key)
71Fixed length of info in the title. 83Fixed length of info in the title.
72 84
73KO/Pi-KA/Pi: 85KO/Pi-KA/Pi:
74Changed "ME" menu bar entry to an icon. 86Changed "ME" menu bar entry to an icon.
75 87
76KO/Pi: 88KO/Pi:
77Fixed two minor bugs in displaying todos. 89Fixed two minor bugs in displaying todos.
78If in month view a cell is selected, the key shortcut "d" shows now that date. 90If in month view a cell is selected, the key shortcut "d" shows now that date.
79Added complete info for a todo in month view as an icon left of the text. 91Added complete info for a todo in month view as an icon left of the text.
80Fixed problems of displaying data when "<" or ">" are used in summary/location/description. 92Fixed problems of displaying data when "<" or ">" are used in summary/location/description.
81Fixed problem of search dialog size when switching displays. 93Fixed problem of search dialog size when switching displays.
82Cancel key now closes date picker. 94Cancel key now closes date picker.
83Rearranged KO/Pi file menu structure. 95Rearranged KO/Pi file menu structure.
84 96
85OM/Pi: 97OM/Pi:
86Added to the SMTP account setting the option 98Added to the SMTP account setting the option
87"No secure connection". 99"No secure connection".
88You have to configure your SMTP accounts again, sorry. 100You have to configure your SMTP accounts again, sorry.
89 101
90KA/Pi: 102KA/Pi:
91Added support for importing quoted-printable. 103Added support for importing quoted-printable.
92Support was added by Peter P.. Thanks, Peter! 104Support was added by Peter P.. Thanks, Peter!
93 105
94 106
95********** VERSION 2.0.14 ************ 107********** VERSION 2.0.14 ************
96 108
97Made Passwordmanager PwM/Pi more userfriendly: 109Made Passwordmanager PwM/Pi more userfriendly:
98Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 110Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
99Fixed bug in KO/Pi todo printing. 111Fixed bug in KO/Pi todo printing.
100Made Qtopia calendar import possible on desktop . 112Made Qtopia calendar import possible on desktop .
101 113
102********** VERSION 2.0.13 ************ 114********** VERSION 2.0.13 ************
103 115
104Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 116Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
105 117
106In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 118In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
107 119
108OM/Pi: 120OM/Pi:
109Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 121Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
110Added missing German translation. 122Added missing German translation.
111Added warning if path is specified in local folder settings of account config. 123Added warning if path is specified in local folder settings of account config.
112 124
113********** VERSION 2.0.12 ************ 125********** VERSION 2.0.12 ************
114 126
115KO/Pi: 127KO/Pi:
116Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 128Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
117Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 129Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
118Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 130Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
119 131
120Fixed problem in pi-sync mode when wrong password was sent. 132Fixed problem in pi-sync mode when wrong password was sent.
121 133
122OM/Pi: 134OM/Pi:
123Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 135Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
124Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 136Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
125 137
126********** VERSION 2.0.11 ************ 138********** VERSION 2.0.11 ************
127 139
128Fixed some problems in pi-sync mode 140Fixed some problems in pi-sync mode
129(e.g. details of events were not synced properly) 141(e.g. details of events were not synced properly)
130 142
131********** VERSION 2.0.10 ************ 143********** VERSION 2.0.10 ************
132 144
133KO/Pi: 145KO/Pi:
134In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 146In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
135This is fixed. 147This is fixed.
136Changed the search dialog a bit to make it more user friendly. 148Changed the search dialog a bit to make it more user friendly.
137(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 149(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
138 150
139Added config option to hide the week number in KO/Pi toolbar. 151Added config option to hide the week number in KO/Pi toolbar.
140 152
141********** VERSION 2.0.9 ************ 153********** VERSION 2.0.9 ************
142 154
143Made month view icons for multiday events a bit nicer. 155Made month view icons for multiday events a bit nicer.
144Some minor fixes in KO/Pi 156Some minor fixes in KO/Pi
145(e.g. go to today did not work for new week view properly). 157(e.g. go to today did not work for new week view properly).
146 158
147 159
148********** VERSION 2.0.8 ************ 160********** VERSION 2.0.8 ************
149 161
150Fixed a problem in dependency info in the ipk files for the Zaurus. 162Fixed a problem in dependency info in the ipk files for the Zaurus.
151 163
152Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar. 164Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar.
153 165
154Added a "go today" button to the datepicker. 166Added a "go today" button to the datepicker.
155 167
156Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 168Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
157and made it configureable to show these values. 169and made it configureable to show these values.
158 170
159Fixed a problem for events (from external iCal files) that do have a duration but no end date. 171Fixed a problem for events (from external iCal files) that do have a duration but no end date.
160 172
161 173
162********** VERSION 2.0.7 ************ 174********** VERSION 2.0.7 ************
163 175
164Added global application font settings 176Added global application font settings
165(for all KDE-Pim/Pi apps) to the general settings. 177(for all KDE-Pim/Pi apps) to the general settings.
166 178
167Fixed a problem in OM/Pi when trying to login to some IMAP servers 179Fixed a problem in OM/Pi when trying to login to some IMAP servers
168(like the IMAP server of Apple: mail.mac.com ) 180(like the IMAP server of Apple: mail.mac.com )
169 181
170Added recurring todos to KO/Pi. 182Added recurring todos to KO/Pi.
171 183
172 184
173********** VERSION 2.0.6 ************ 185********** VERSION 2.0.6 ************
174 186
175Stable release 2.0.6! 187Stable release 2.0.6!
176 188
177Some bugfixes in the pi-sync mode. 189Some bugfixes in the pi-sync mode.
178Added German translation for pi-sync mode. 190Added German translation for pi-sync mode.
179 191
180KO/Pi: 192KO/Pi:
181Made the todolist using alternate background. 193Made the todolist using alternate background.
182 194
183Other minor fixes in KO/Pi. 195Other minor fixes in KO/Pi.
184 196
185 197
186You can find the complete changelog 198You can find the complete changelog
187from version 1.7.7 to 2.0.5 199from version 1.7.7 to 2.0.5
188in the source package or on 200in the source package or on
189 201
190http://www.pi-sync.net/html/changelog.html 202http://www.pi-sync.net/html/changelog.html
191 203
192 204
193 205
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index b6293b5..ce55780 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -1,1313 +1,1316 @@
1{ "10 minutes","10 Minuten" }, 1{ "10 minutes","10 Minuten" },
2{ "10th","10." }, 2{ "10th","10." },
3{ "11th","11." }, 3{ "11th","11." },
4{ "12 pm Format","12 AM/PM Format" }, 4{ "12 pm Format","12 AM/PM Format" },
5{ "12th","12." }, 5{ "12th","12." },
6{ "13th","13." }, 6{ "13th","13." },
7{ "14th","14." }, 7{ "14th","14." },
8{ "15th","15." }, 8{ "15th","15." },
9{ "16th","16." }, 9{ "16th","16." },
10{ "17th","17." }, 10{ "17th","17." },
11{ "18th","18." }, 11{ "18th","18." },
12{ "19th","19." }, 12{ "19th","19." },
13{ "1 Day","1 Tag" }, 13{ "1 Day","1 Tag" },
14{ "1 h","1 Std" }, 14{ "1 h","1 Std" },
15{ "1 (high)","1 (hoch)" }, 15{ "1 (high)","1 (hoch)" },
16{ "5 (low)","5" }, 16{ "5 (low)","5" },
17{ "1st","1." }, 17{ "1st","1." },
18{ "20th","20." }, 18{ "20th","20." },
19{ "21st","21." }, 19{ "21st","21." },
20{ "22nd","22." }, 20{ "22nd","22." },
21{ "23rd","23." }, 21{ "23rd","23." },
22{ "24:00 Hour Format","24:00 Stunden Format" }, 22{ "24:00 Hour Format","24:00 Stunden Format" },
23{ "24th","24." }, 23{ "24th","24." },
24{ "25th","25." }, 24{ "25th","25." },
25{ "26th","26." }, 25{ "26th","26." },
26{ "27th","27." }, 26{ "27th","27." },
27{ "28th","28." }, 27{ "28th","28." },
28{ "29th","29." }, 28{ "29th","29." },
29{ "2nd","2." }, 29{ "2nd","2." },
30{ "30 minutes","30 Minuten" }, 30{ "30 minutes","30 Minuten" },
31{ "30th","30." }, 31{ "30th","30." },
32{ "31st","31." }, 32{ "31st","31." },
33{ "3rd","3." }, 33{ "3rd","3." },
34{ "4th","4." }, 34{ "4th","4." },
35{ "5 (lowest)","5 (Niedrigster)" }, 35{ "5 (lowest)","5 (Niedrigster)" },
36{ "5th","5." }, 36{ "5th","5." },
37{ "6th","6." }, 37{ "6th","6." },
38{ "7th","7." }, 38{ "7th","7." },
39{ "8th","8." }, 39{ "8th","8." },
40{ "9th","9." }, 40{ "9th","9." },
41{ "About...","Über..." }, 41{ "About...","Über..." },
42{ "&Accept","&Akzeptieren" }, 42{ "&Accept","&Akzeptieren" },
43{ "Accept","Akzeptieren" }, 43{ "Accept","Akzeptieren" },
44{ "Accept A&ll","A&lles Akzepieren" }, 44{ "Accept A&ll","A&lles Akzepieren" },
45{ "Access:","Zugriff:" }, 45{ "Access:","Zugriff:" },
46{ "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" }, 46{ "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" },
47{ "Actions","Aktionen" }, 47{ "Actions","Aktionen" },
48{ "Add Filter","Filter Hinzufügen" }, 48{ "Add Filter","Filter Hinzufügen" },
49{ "&Add","Hinzufügen" }, 49{ "&Add","Hinzufügen" },
50{ "Add","Hinzufügen" }, 50{ "Add","Hinzufügen" },
51{ "Additional email addresses:","Zusätzliche E-Mail Adressen:" }, 51{ "Additional email addresses:","Zusätzliche E-Mail Adressen:" },
52{ "Additional email address:","Zusätzliche E-Mail Adresse:" }, 52{ "Additional email address:","Zusätzliche E-Mail Adresse:" },
53{ "&Addressbook","&Adressbuch" }, 53{ "&Addressbook","&Adressbuch" },
54{ "Address &Book...","Adress&buch..." }, 54{ "Address &Book...","Adress&buch..." },
55{ "Agenda Size","Agende Größe" }, 55{ "Agenda Size","Agende Größe" },
56{ "Agenda Size:","Größe der Agenda:" }, 56{ "Agenda Size:","Größe der Agenda:" },
57{ "Agenda view:","Agenda Ansicht:" }, 57{ "Agenda view:","Agenda Ansicht:" },
58{ "Agenda view background color:","Hintergrund der Agenda Ansicht:" }, 58{ "Agenda view background color:","Hintergrund der Agenda Ansicht:" },
59{ "All attendees","Alle Teilnehmer" }, 59{ "All attendees","Alle Teilnehmer" },
60{ "AllDayAgenda Height:","Höhe Ganztages Agenda:" }, 60{ "AllDayAgenda Height:","Höhe Ganztages Agenda:" },
61{ "All day event","Ganztägig" }, 61{ "All day event","Ganztägig" },
62{ "Anonymous","Anonym" }, 62{ "Anonymous","Anonym" },
63{ "Apply","Anwenden" }, 63{ "Apply","Anwenden" },
64{ "Apr","Apr" }, 64{ "Apr","Apr" },
65{ "April","April" }, 65{ "April","April" },
66{"Ask for every entry on conflict","Frage bei Konflikten nach"}, 66{"Ask for every entry on conflict","Frage bei Konflikten nach"},
67{ "Ask for preferences before syncing","Vor dem Syncronisieren nachfragen" }, 67{ "Ask for preferences before syncing","Vor dem Syncronisieren nachfragen" },
68{ "Ask for quit when closing KO/Pi","Vor dem Beenden von KO/Pi nachfragen" }, 68{ "Ask for quit when closing KO/Pi","Vor dem Beenden von KO/Pi nachfragen" },
69{ "Attendees","Teilnehmer" }, 69{ "Attendees","Teilnehmer" },
70{ "Aug","Aug" }, 70{ "Aug","Aug" },
71{ "August","August" }, 71{ "August","August" },
72{ "Auto-Save","Automatisches Abspeichern" }, 72{ "Auto-Save","Automatisches Abspeichern" },
73{ "Auto save delay in minutes:","Verzög.autom.Speichern in Min" }, 73{ "Auto save delay in minutes:","Verzög.autom.Speichern in Min" },
74{ "Auto saving...","Automatische Sicherung..." }, 74{ "Auto saving...","Automatische Sicherung..." },
75{ "Begin on:","Starte mit:" }, 75{ "Begin on:","Starte mit:" },
76{ "Begins on: %1","Starte mit: %1" }, 76{ "Begins on: %1","Starte mit: %1" },
77{ "<b>From:</b> %1 <b>To:</b> %2","<b>Vom:</b> %1 <b>Zum:</b> %2" }, 77{ "<b>From:</b> %1 <b>To:</b> %2","<b>Vom:</b> %1 <b>Zum:</b> %2" },
78{ "<b>On:</b> %1","<b>Am:</b> %1" }, 78{ "<b>On:</b> %1","<b>Am:</b> %1" },
79{ "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Am:</b> %1 <b>Vom:S</b> %2 <b>Zum:</b> %3" }, 79{ "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Am:</b> %1 <b>Vom:S</b> %2 <b>Zum:</b> %3" },
80{ "<b>Original event:</b><p>","<b>Original Termin:</b><p>" }, 80{ "<b>Original event:</b><p>","<b>Original Termin:</b><p>" },
81{ " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" }, 81{ " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" },
82{ "Busy","Belegt" }, 82{ "Busy","Belegt" },
83{ "&Cancel","Abbre&chen" }, 83{ "&Cancel","Abbre&chen" },
84{ "Cancel","Abbrechen" }, 84{ "Cancel","Abbrechen" },
85{ "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" }, 85{ "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" },
86{ "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." }, 86{ "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." },
87{ "Categories...","Kategorien..." }, 87{ "Categories...","Kategorien..." },
88{ "Categories","Kategorien" }, 88{ "Categories","Kategorien" },
89{ "Category","Kategorie" }, 89{ "Category","Kategorie" },
90{ "Center View","Zentriere Ansicht" }, 90{ "Center View","Zentriere Ansicht" },
91{ "Change","Ändere" }, 91{ "Change","Ändere" },
92{ "Cinema","Kino" }, 92{ "Cinema","Kino" },
93{ "Click to add a new Todo","Hier klicken, um ein neues Todo anzulegen" }, 93{ "Click to add a new Todo","Hier klicken, um ein neues Todo anzulegen" },
94{ "Clone Item","Klone Eintrag" }, 94{ "Clone Item","Klone Eintrag" },
95{ "&Close","S&chließen" }, 95{ "&Close","S&chließen" },
96{ "Close","Schließen" }, 96{ "Close","Schließen" },
97{ "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" }, 97{ "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" },
98{ "Colors","Farben" }, 98{ "Colors","Farben" },
99{ "completed","erledigt" }, 99{ "completed","erledigt" },
100{ "completed on %1","erledigt am %1" }, 100{ "completed on %1","erledigt am %1" },
101{ "Complete","Erledigt" }, 101{ "Complete","Erledigt" },
102{ "Confidential","Vertraulich" }, 102{ "Confidential","Vertraulich" },
103{ "Configure...","Einstellungen..." }, 103{ "Configure...","Einstellungen..." },
104{ "Confirm &deletes","Löschvogang bestätigen" }, 104{ "Confirm &deletes","Löschvogang bestätigen" },
105{ "Couldn't load calendar\n '%1'.","Kann Kalender\n '%1' nicht laden." }, 105{ "Couldn't load calendar\n '%1'.","Kann Kalender\n '%1' nicht laden." },
106{ "Counter-event Viewer","Terminzähler Ansicht" }, 106{ "Counter-event Viewer","Terminzähler Ansicht" },
107{ "Daily ending hour:","Feierabend:" }, 107{ "Daily ending hour:","Feierabend:" },
108{ "Daily starting hour:","Anfangszeit:" }, 108{ "Daily starting hour:","Anfangszeit:" },
109{ "Daily","Täglich" }, 109{ "Daily","Täglich" },
110{ "Date Format","Datums Format" }, 110{ "Date Format","Datums Format" },
111{ "Date Format:","Datums Format:" }, 111{ "Date Format:","Datums Format:" },
112{ "DateNavigator:(nr)","Datums Navigator" }, 112{ "DateNavigator:(nr)","Datums Navigator" },
113{ "Dates: ","Datum: " }, 113{ "Dates: ","Datum: " },
114{ "Date && Time","Datum && Zeit" }, 114{ "Date && Time","Datum && Zeit" },
115{ "Day begins at:","Der Tag beginnt um:" }, 115{ "Day begins at:","Der Tag beginnt um:" },
116{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" }, 116{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" },
117{ "Days in What's Next:","Tage in What's Next:" }, 117{ "Days in What's Next:","Tage in What's Next:" },
118{ "day(s)","Tag(e)" }, 118{ "day(s)","Tag(e)" },
119{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" }, 119{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" },
120{ "day","Tag" }, 120{ "day","Tag" },
121{ "Dec","Dez" }, 121{ "Dec","Dez" },
122{ "December","Dezember" }, 122{ "December","Dezember" },
123{ "Default alarm time:","Standard Alarmzeit:" }, 123{ "Default alarm time:","Standard Alarmzeit:" },
124{ "Default appointment time:","Standard Termin Startzeit:" }, 124{ "Default appointment time:","Standard Termin Startzeit:" },
125{ "Default event color:","Standard Terminfarbe:" }, 125{ "Default event color:","Standard Terminfarbe:" },
126{ "Default","Standard" }, 126{ "Default","Standard" },
127{ "Def. duration of new app.:","Standard Termin Länge:" }, 127{ "Def. duration of new app.:","Standard Termin Länge:" },
128{ "Delete all completed To-Dos?","Alle bereits erledigten Todos löschen?" }, 128{ "Delete all completed To-Dos?","Alle bereits erledigten Todos löschen?" },
129{ "Delete All","Lösche alles" }, 129{ "Delete All","Lösche alles" },
130{ "Delete all selected","Lösche alle Selektierten" }, 130{ "Delete all selected","Lösche alle Selektierten" },
131{ "Delete Current","Aktuellen löschen" }, 131{ "Delete Current","Aktuellen löschen" },
132{ "Delete Event...","Lösche Termin..." }, 132{ "Delete Event...","Lösche Termin..." },
133{ "Delete Event","Lösche Termin" }, 133{ "Delete Event","Lösche Termin" },
134{ "&Delete","Löschen" }, 134{ "&Delete","Löschen" },
135{ "Delete...","Löschen..." }, 135{ "Delete...","Löschen..." },
136{ "Delete","Löschen" }, 136{ "Delete","Löschen" },
137{ "Delete Todo...","Lösche Todo..." }, 137{ "Delete Todo...","Lösche Todo..." },
138{ "Delete To-Do","Lösche Todo" }, 138{ "Delete To-Do","Lösche Todo" },
139{ "Deleting item %d ...","Lösche Eintrag %d..." }, 139{ "Deleting item %d ...","Lösche Eintrag %d..." },
140{ "Descriptions","Beschreibungen" }, 140{ "Descriptions","Beschreibungen" },
141{ "Deselect all","Deselektiere Alle" }, 141{ "Deselect all","Deselektiere Alle" },
142{ "Details","Details" }, 142{ "Details","Details" },
143{ "Dinner","Abendessen" }, 143{ "Dinner","Abendessen" },
144{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" }, 144{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" },
145{ "Due Date","Fällig am" }, 145{ "Due Date","Fällig am" },
146{ "Due: ","Fällig: "}, 146{ "Due: ","Fällig: "},
147{ "Due Time","Fällig um" }, 147{ "Due Time","Fällig um" },
148{ "Due:","Fällig:"}, 148{ "Due:","Fällig:"},
149{ "Duration: ","Dauer: " }, 149{ "Duration: ","Dauer: " },
150{ "Edit...","Bearbeite..." }, 150{ "Edit...","Bearbeite..." },
151{ "Edit","Bearbeite" }, 151{ "Edit","Bearbeite" },
152{ "Edit Event...","Bearbeite Termin..." }, 152{ "Edit Event...","Bearbeite Termin..." },
153{ "Edit Event","Bearbeite Termin" }, 153{ "Edit Event","Bearbeite Termin" },
154{ "Edit exceptions","Bearbeite Ausnahmen" }, 154{ "Edit exceptions","Bearbeite Ausnahmen" },
155{ "EditorBox:","Editor Fenster:" }, 155{ "EditorBox:","Editor Fenster:" },
156{ "Edit Recurrence Range","Bearbeite Wiederholung" }, 156{ "Edit Recurrence Range","Bearbeite Wiederholung" },
157{ "Edit Todo...","Berabeite Todo..." }, 157{ "Edit Todo...","Berabeite Todo..." },
158{ "Edit To-Do","Todo bearbeiten" }, 158{ "Edit To-Do","Todo bearbeiten" },
159{ "E&mail address:","E&mail Adresse:" }, 159{ "E&mail address:","E&mail Adresse:" },
160{ "(EmptyEmail)","(KeineEmail)" }, 160{ "(EmptyEmail)","(KeineEmail)" },
161{ "(EmptyName)","(KeinName)" }, 161{ "(EmptyName)","(KeinName)" },
162{ "Enable Recurrence","Wiederholender Termin" }, 162{ "Enable Recurrence","Wiederholender Termin" },
163{ "End after","Endet nach"}, 163{ "End after","Endet nach"},
164{ "End by:","Endet am"}, 164{ "End by:","Endet am"},
165{ "End Date","End Datum" }, 165{ "End Date","End Datum" },
166{ "End:","Ende:" }, 166{ "End:","Ende:" },
167{ "End Time","End Zeit" }, 167{ "End Time","End Zeit" },
168{ "English","Englisch" }, 168{ "English","Englisch" },
169{ "Event","Termin" }, 169{ "Event","Termin" },
170{ "Event list","Termin Liste" }, 170{ "Event list","Termin Liste" },
171{ "Events","Termine" }, 171{ "Events","Termine" },
172{ "Event Viewer:","Termin Übersicht:" }, 172{ "Event Viewer:","Termin Übersicht:" },
173{ "every","jede" }, 173{ "every","jede" },
174{ "Exceptions...","Ausnahmen..." }, 174{ "Exceptions...","Ausnahmen..." },
175{ "Exceptions","Ausnahmen" }, 175{ "Exceptions","Ausnahmen" },
176{ "Exclude holidays","Ohne freie Tage" }, 176{ "Exclude holidays","Ohne freie Tage" },
177{ "Exclude Saturdays","Ohne Samstage" }, 177{ "Exclude Saturdays","Ohne Samstage" },
178{ "Feb","Feb" }, 178{ "Feb","Feb" },
179{ "February","Februar" }, 179{ "February","Februar" },
180{ "&Find","Suche!" }, 180{ "&Find","Suche!" },
181{ "Fonts","Schriftart" }, 181{ "Fonts","Schriftart" },
182{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" }, 182{ "Force take local entry always","Erzwinge:Nimm immer lokalen Eintrag" },
183{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"}, 183{ "Force take remote entry always","Erzwinge:Nimm immer fernen Eintrag"},
184{ "Free","Frei" }, 184{ "Free","Frei" },
185{ "Friday","Freitag" }, 185{ "Friday","Freitag" },
186{ "Fri","Fr" }, 186{ "Fri","Fr" },
187{ "From:","Vom:" }, 187{ "From:","Vom:" },
188{ "Full &name:","Vor- und &Nachname:" }, 188{ "Full &name:","Vor- und &Nachname:" },
189{ "General","Allgemein" }, 189{ "General","Allgemein" },
190{ "German","Deutsch" }, 190{ "German","Deutsch" },
191{ "Gifts","Geschenke" }, 191{ "Gifts","Geschenke" },
192{ "Go to Today","Heute anzeigen" }, 192{ "Go to Today","Heute anzeigen" },
193{ "Help","Hilfe" }, 193{ "Help","Hilfe" },
194{ "Hide Dates","Daten ausblenden" }, 194{ "Hide Dates","Daten ausblenden" },
195{ "Highlight color:","Markierungen:" }, 195{ "Highlight color:","Markierungen:" },
196{ "Holiday color:","Freie Tage:" }, 196{ "Holiday color:","Freie Tage:" },
197{ "hour(s)","Stunde(n)" }, 197{ "hour(s)","Stunde(n)" },
198{ "In %1 days: ","In %1 Tagen: " }, 198{ "In %1 days: ","In %1 Tagen: " },
199{ "Incomplete Todo:","Unerledigte Aufgaben:" }, 199{ "Incomplete Todo:","Unerledigte Aufgaben:" },
200{ "Information","Information" }, 200{ "Information","Information" },
201{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" }, 201{ "Invalid search expression,\ncannot perform ","Kann Suche nicht ausführen" },
202{ "Jan","Jan" }, 202{ "Jan","Jan" },
203{ "January","Januar" }, 203{ "January","Januar" },
204{ "JournalView:","Journal Ansicht:" }, 204{ "JournalView:","Journal Ansicht:" },
205{ "Journals","Journale" }, 205{ "Journals","Journale" },
206{ "Jul","Jul" }, 206{ "Jul","Jul" },
207{ "July","Juli" }, 207{ "July","Juli" },
208{ "Jump to date","Springe zum Datum" }, 208{ "Jump to date","Springe zum Datum" },
209{ "June","Juni" }, 209{ "June","Juni" },
210{ "Jun","Jun" }, 210{ "Jun","Jun" },
211{ "Key Bindings...","Tastenzuordnung..." }, 211{ "Key Bindings...","Tastenzuordnung..." },
212{ "Kids","Kinder" }, 212{ "Kids","Kinder" },
213{ "Known Problems...","Bekannte Probleme..." }, 213{ "Known Problems...","Bekannte Probleme..." },
214{ "KO/Pi Find ","KO/Pi Suchdialog " }, 214{ "KO/Pi Find ","KO/Pi Suchdialog " },
215{ "KO/Pi Find: ","KO/Pi Suchen: " }, 215{ "KO/Pi Find: ","KO/Pi Suchen: " },
216{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." }, 216{ "KO/Pi is starting ... "," KO/Pi startet ... \n... Zeit für eine Kaffeepause ..." },
217{ "Language:(needs restart)","Sprache (Neustart!)" }, 217{ "Language:(needs restart)","Sprache (Neustart!)" },
218{ "Language:","Sprache" }, 218{ "Language:","Sprache" },
219{ "Large","Etwas mehr" }, 219{ "Large","Etwas mehr" },
220{ "List View:","Listenansicht:" }, 220{ "List View:","Listenansicht:" },
221{ "List View","Listenansicht" }, 221{ "List View","Listenansicht" },
222{ "Load/Save","Laden/Speichern" }, 222{ "Load/Save","Laden/Speichern" },
223{ "Load Template","Lade Vorlage" }, 223{ "Load Template","Lade Vorlage" },
224{ "Locale","Localisation" }, 224{ "Locale","Localisation" },
225{ "Local temp file:","Lokale temp. Datei:" }, 225{ "Local temp file:","Lokale temp. Datei:" },
226{ "Location: ","Ort: " }, 226{ "Location: ","Ort: " },
227{ "Location:","Ort:" }, 227{ "Location:","Ort:" },
228{ "Mail client","Mail Programm" }, 228{ "Mail client","Mail Programm" },
229{ "Mail Client","Mail Programm" }, 229{ "Mail Client","Mail Programm" },
230{ "March","März" }, 230{ "March","März" },
231{ "Mar","Mär" }, 231{ "Mar","Mär" },
232{ "May","Mai" }, 232{ "May","Mai" },
233{ "M. Bains line:","M. Bains Linie:" }, 233{ "M. Bains line:","M. Bains Linie:" },
234{ "Medium","Medium" }, 234{ "Medium","Medium" },
235{ "Method","Methode" }, 235{ "Method","Methode" },
236{ "minute(s)","Minute(n)" }, 236{ "minute(s)","Minute(n)" },
237{ "Monday","Montag" }, 237{ "Monday","Montag" },
238{ "Mon","Mo" }, 238{ "Mon","Mo" },
239{ "Monthly","Monatlich" }, 239{ "Monthly","Monatlich" },
240{ "Month not long enough","Monat ist nicht lang genug" }, 240{ "Month not long enough","Monat ist nicht lang genug" },
241{ "month(s)","Monat(e)" }, 241{ "month(s)","Monat(e)" },
242{ "Month view:","Monatsansicht:" }, 242{ "Month view:","Monatsansicht:" },
243{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" }, 243{ "Month view uses category colors","Monatsansicht zeigt Kategorie Farben" },
244{ "Todo view uses category colors","To-Do Ansicht zeigt Kategorie Farben" }, 244{ "Todo view uses category colors","To-Do Ansicht zeigt Kategorie Farben" },
245{ "Move &Down","Nach unten verschieben" }, 245{ "Move &Down","Nach unten verschieben" },
246{ "Move &Up","Nach oben verschieben" }, 246{ "Move &Up","Nach oben verschieben" },
247{ "Name:","Name:" }, 247{ "Name:","Name:" },
248{ "Name","Name" }, 248{ "Name","Name" },
249{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin löschen möchten?" }, 249{ "\nAre you sure you want\nto delete this event?","\nSind Sie sicher, dass Sie\nden Termin löschen möchten?" },
250{ "%n Days","%n Tage" }, 250{ "%n Days","%n Tage" },
251{ "Never","Nie" }, 251{ "Never","Nie" },
252{ "New event...","Neuer Termin..." }, 252{ "New event...","Neuer Termin..." },
253{ "New event","Neuer Termin" }, 253{ "New event","Neuer Termin" },
254{ "New Event...","Neuer Termin..." }, 254{ "New Event...","Neuer Termin..." },
255{ "New Events/Todos should","Neue Termine/Todos sollten" }, 255{ "New Events/Todos should","Neue Termine/Todos sollten" },
256{ "&New","&Neu" }, 256{ "&New","&Neu" },
257{ "New","Neu", }, 257{ "New","Neu", },
258{ "New Sub-Todo...","Neues Sub-Todo..." }, 258{ "New Sub-Todo...","Neues Sub-Todo..." },
259{ "New Todo...","Neues Todo..." }, 259{ "New Todo...","Neues Todo..." },
260{ "Next Alarm: ","Nächster Alarm: ", }, 260{ "Next Alarm: ","Nächster Alarm: ", },
261{ "&Next Day","&Nächster Tag", }, 261{ "&Next Day","&Nächster Tag", },
262{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" }, 262{ "Next days view uses full window","Nächste-X-Tage nutzt Vollbild" },
263{ "Next month","Nächster Monat" }, 263{ "Next month","Nächster Monat" },
264{ "&Next Week","&Nächste Woche" }, 264{ "&Next Week","&Nächste Woche" },
265{ "Next year","Nächstes Jahr" }, 265{ "Next year","Nächstes Jahr" },
266{ "Next Year","Nächstes Jahr" }, 266{ "Next Year","Nächstes Jahr" },
267{ "%n h","%n Std" }, 267{ "%n h","%n Std" },
268{ "No ending date","Kein End-Datum", }, 268{ "No ending date","Kein End-Datum", },
269{ "No event, nothing to do.","Kein Termin, nichts zu tun.", }, 269{ "No event, nothing to do.","Kein Termin, nichts zu tun.", },
270{ "No event selected.","Kein Termin selektiert" }, 270{ "No event selected.","Kein Termin selektiert" },
271{ "No","Nein" }, 271{ "No","Nein" },
272{ "No program set","Kein Programm ausgewählt", }, 272{ "No program set","Kein Programm ausgewählt", },
273{ "Normal","Normal" }, 273{ "Normal","Normal" },
274{ "[No selection]","Keine Selektion", }, 274{ "[No selection]","Keine Selektion", },
275{ "No sound set","Kein Sound ausgewählt", }, 275{ "No sound set","Kein Sound ausgewählt", },
276{ "no time ","keine Zeit ", }, 276{ "no time ","keine Zeit ", },
277{ "no time","keine Zeit", }, 277{ "no time","keine Zeit", },
278{ "No Time","Keine Zeit" }, 278{ "No Time","Keine Zeit" },
279{ "November","November" }, 279{ "November","November" },
280{ "Nov","Nov", }, 280{ "Nov","Nov", },
281{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" }, 281{ "\nThis event recurs\nover multiple dates.\n","\nDieser Termin wiederholt sich an mehreren Tagen.\n" },
282{ "occurrence(s)","Vorkommen" }, 282{ "occurrence(s)","Vorkommen" },
283{ "October","Oktober" }, 283{ "October","Oktober" },
284{ "Oct","Okt", }, 284{ "Oct","Okt", },
285{ "O-due!","Ü-fällig! " }, 285{ "O-due!","Ü-fällig! " },
286{ "&OK","&OK" }, 286{ "&OK","&OK" },
287{ "Ok+Show!","Ok+Anzeigen" }, 287{ "Ok+Show!","Ok+Anzeigen" },
288{ "Organizer: %1","Organisator %1" }, 288{ "Organizer: %1","Organisator %1" },
289{ "Organizer","Organisator" }, 289{ "Organizer","Organisator" },
290{ "Owner: ","Besitzer: " }, 290{ "Owner: ","Besitzer: " },
291{ "Owner:","Besitzer:" }, 291{ "Owner:","Besitzer:" },
292{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 292{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
293{ "Pick a date to display","Wähle einen Tag zum anzeigen aus" }, 293{ "Pick a date to display","Wähle einen Tag zum anzeigen aus" },
294{ "Please specify a valid due date.","Bitte gültiges Fälligkeitsdatum angeben."}, 294{ "Please specify a valid due date.","Bitte gültiges Fälligkeitsdatum angeben."},
295{ "Please specify a valid end date,\nfor example '%1'.","Bitte gültiges Enddatum angeben,\nz.B.'%1'." }, 295{ "Please specify a valid end date,\nfor example '%1'.","Bitte gültiges Enddatum angeben,\nz.B.'%1'." },
296{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." }, 296{ "Please specify a valid start date.","Bitte gültiges Startdatum angeben." },
297{ "Please specify a valid start date,\nfor example '%1'.","Bitte gültiges Startdatum angeben,\nz.B. '%1'." }, 297{ "Please specify a valid start date,\nfor example '%1'.","Bitte gültiges Startdatum angeben,\nz.B. '%1'." },
298{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."}, 298{ "Please specify a valid start time.","Bitte gültige Startzeit angeben."},
299{ "Please specify a valid start time,\nfor example '%1'.","Bitte gültige Startzeit angeben,\nz.B. '%1'." }, 299{ "Please specify a valid start time,\nfor example '%1'.","Bitte gültige Startzeit angeben,\nz.B. '%1'." },
300{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" }, 300{ "Preferences - some settings need a restart (nr)","Einstellungen - teilweise Neustart erforderlich (bn)" },
301{ "&Previous Day","Vorheriger Tag" }, 301{ "&Previous Day","Vorheriger Tag" },
302{ "Previous month","Vorheriger Monat" }, 302{ "Previous month","Vorheriger Monat" },
303{ "Previous Month","Vorheriger Monat" }, 303{ "Previous Month","Vorheriger Monat" },
304{ "&Previous Week","Vorherige Woche" }, 304{ "&Previous Week","Vorherige Woche" },
305{ "Previous year","Vorheriges Jahr" }, 305{ "Previous year","Vorheriges Jahr" },
306{ "Previous Year","Vorheriges Jahr" }, 306{ "Previous Year","Vorheriges Jahr" },
307{ "Printing","Drucken" }, 307{ "Printing","Drucken" },
308{ "Priority:","Priorität:" }, 308{ "Priority:","Priorität:" },
309{ "Private","Privat" }, 309{ "Private","Privat" },
310{ "Proceed","Weiter" }, 310{ "Proceed","Weiter" },
311{ "Public","Öffentlich" }, 311{ "Public","Öffentlich" },
312{ "Purge","Entferne" }, 312{ "Purge","Entferne" },
313{ "Purge Completed","Entferne erledigte ToDos" }, 313{ "Purge Completed","Entferne erledigte ToDos" },
314{ "Purge To-Dos","Todos bereinigen" }, 314{ "Purge To-Dos","Todos bereinigen" },
315{ "read-only","schreibgeschützt" }, 315{ "read-only","schreibgeschützt" },
316{ "Recur every","Wiederh. alle" }, 316{ "Recur every","Wiederh. alle" },
317{ "Recur in the month of","Wiederh. im Monat" }, 317{ "Recur in the month of","Wiederh. im Monat" },
318{ "Recur on the","Wiederh. am" }, 318{ "Recur on the","Wiederh. am" },
319{ "Recur on this day","Wiederh. am diesen Tag" }, 319{ "Recur on this day","Wiederh. am diesen Tag" },
320{ "Recurrence Range...","Wiederholungs Zeitraum..." }, 320{ "Recurrence Range...","Wiederholungs Zeitraum..." },
321{ "Recurrence Range","Wiederholungs Zeitraum" }, 321{ "Recurrence Range","Wiederholungs Zeitraum" },
322{ "Recurrence Rule","Wiederholungs Regel" }, 322{ "Recurrence Rule","Wiederholungs Regel" },
323{ "Recurrence","Wiederholung" }, 323{ "Recurrence","Wiederholung" },
324{ "Recurs","Wiederholung" }, 324{ "Recurs","Wiederholung" },
325{"&Reject","Abweisen"}, 325{"&Reject","Abweisen"},
326{ "Reminder:","Alarm:" }, 326{ "Reminder:","Alarm:" },
327{ "Rem.:","Alarm:" }, 327{ "Rem.:","Alarm:" },
328{ "Rem.","Alarm:" }, 328{ "Rem.","Alarm:" },
329{ "Remote file:","Remote Datei:"}, 329{ "Remote file:","Remote Datei:"},
330{ "Remote IP:","Remote (ferne) IP:" }, 330{ "Remote IP:","Remote (ferne) IP:" },
331{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " }, 331{ "Remote syncing (via ssh/scp) network settings ","Remote Sync (via ssh/scp) Netzwerk Einstellungen " },
332{ "Remote user:","Remote Benutzer"}, 332{ "Remote user:","Remote Benutzer"},
333{ "&Remove","Entfe&rnen" }, 333{ "&Remove","Entfe&rnen" },
334{ "Remove","Entfernen" }, 334{ "Remove","Entfernen" },
335{ "Request response","Bemerkung anfordern" }, 335{ "Request response","Bemerkung anfordern" },
336{ "Role:","Rolle:" }, 336{ "Role:","Rolle:" },
337{ "Role","Rolle" }, 337{ "Role","Rolle" },
338{ "Sat","Sa" }, 338{ "Sat","Sa" },
339{ "Saturday","Samstag" }, 339{ "Saturday","Samstag" },
340{ "Search for:","Suche nach:" }, 340{ "Search for:","Suche nach:" },
341{ "Search In","Suche in" }, 341{ "Search In","Suche in" },
342{ "Search...","Suche..." }, 342{ "Search...","Suche..." },
343{ "Search","Suche" }, 343{ "Search","Suche" },
344{ "Select Addresses","Wähle Adressen" }, 344{ "Select Addresses","Wähle Adressen" },
345{ "Select all","Selektiere Alle" }, 345{ "Select all","Selektiere Alle" },
346{ "Select a month","Wähle Monat" }, 346{ "Select a month","Wähle Monat" },
347{ "Select a week","Wähle Woche" }, 347{ "Select a week","Wähle Woche" },
348{ "Select a year","Wähle Jahr" }, 348{ "Select a year","Wähle Jahr" },
349{ "Send directly","Sende direkt" }, 349{ "Send directly","Sende direkt" },
350{ "&Send Messages","&Sende Nachrichten", }, 350{ "&Send Messages","&Sende Nachrichten", },
351{ "Sep","Sep" }, 351{ "Sep","Sep" },
352{ "September","September" }, 352{ "September","September" },
353{ "Shopping","Einkaufen" }, 353{ "Shopping","Einkaufen" },
354{ "Use short date in (WN/E) view","Kurzdatum in (WN/Termin) Ansicht" }, 354{ "Use short date in (WN/E) view","Kurzdatum in (WN/Termin) Ansicht" },
355{ "Show Dates","Zeige Daten" }, 355{ "Show Dates","Zeige Daten" },
356{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." }, 356{ "Show events that recur daily in date nav.","Zeige tägl.wiederh.Term.in Datums Nav." },
357{ "Show Event...","Zeige Termin..." }, 357{ "Show Event...","Zeige Termin..." },
358{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." }, 358{ "Show ev. that recur weekly in date nav.","Zeige wöch.wiederh.Term.in Datums Nav." },
359{ "Show Marcus Bains line","Zeige Marcus Bains Linie" }, 359{ "Show Marcus Bains line","Zeige Marcus Bains Linie" },
360{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." }, 360{ "Show summary after syncing","Zeige Zusammenfassung nach Sync." },
361{ "Show time as:","Zeige Zeit als" }, 361{ "Show time as:","Zeige Zeit als" },
362{ "Show Todo...","Zeige To-Do" }, 362{ "Show Todo...","Zeige To-Do" },
363{ "Show topmost todo prios in What's N.:","Anz. höchster Prios in What's N.:"}, 363{ "Show topmost todo prios in What's N.:","Anz. höchster Prios in What's N.:"},
364{ "Show topmost todo prios in What's Next:","Anz. höchster Prios in What's Next:"}, 364{ "Show topmost todo prios in What's Next:","Anz. höchster Prios in What's Next:"},
365{ "Show vertical screen (Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" }, 365{ "Show vertical screen (Needs restart)","Vertikaler Bildschirm-Layout (Neustart!)" },
366{ "&Show","Zeige" }, 366{ "&Show","Zeige" },
367{ "Show...","Zeige..." }, 367{ "Show...","Zeige..." },
368{ "Show","Zeige" }, 368{ "Show","Zeige" },
369{ "Small","Klein" }, 369{ "Small","Klein" },
370{ "Sorry","Entschuldigung" }, 370{ "Sorry","Entschuldigung" },
371{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"}, 371{"Sorry, the copy command failed!\nCommand was:\n","Der Kopierbefehl schlug fehl!\nBefehl war:\n"},
372{ "Start:","Start:" }, 372{ "Start:","Start:" },
373{ "Start Date","Start Datum" }, 373{ "Start Date","Start Datum" },
374{ "Start date: %1","Start Datum: %1" }, 374{ "Start date: %1","Start Datum: %1" },
375{ "Start Time","Start Zeit" }, 375{ "Start Time","Start Zeit" },
376{ "Status:","Status:" }, 376{ "Status:","Status:" },
377{ "Status","Status:" }, 377{ "Status","Status:" },
378{ "Summaries","Titel" }, 378{ "Summaries","Titel" },
379{ "Summary:","Titel:" }, 379{ "Summary:","Titel:" },
380{ "Summary","Titel" }, 380{ "Summary","Titel" },
381{ "Sunday","Sonntag" }, 381{ "Sunday","Sonntag" },
382{ "Sun","So" }, 382{ "Sun","So" },
383{ "Sync preferences:","Sync Einstellungen" }, 383{ "Sync preferences:","Sync Einstellungen" },
384{ "Sync Prefs","Sync Einstellungen" }, 384{ "Sync Prefs","Sync Einstellungen" },
385{ "Syncronize","Daten abgleich" }, 385{ "Syncronize","Daten abgleich" },
386{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" }, 386{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" },
387{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" }, 387{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" },
388{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" }, 388{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" },
389{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges To-Do" }, 389{ "Template '%1' does not contain a valid Todo.","Template '%1' enthält kein gültiges To-Do" },
390{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" }, 390{ "Template does not contain a valid Event.","Template '%1' enthält keinen gültigen Termin" },
391{ "Template...","Vorlage..." }, 391{ "Template...","Vorlage..." },
392{ "This day","Dieser Tag" }, 392{ "This day","Dieser Tag" },
393{ "This is an experimental feature. ","Dieses Feature ist experimentel" }, 393{ "This is an experimental feature. ","Dieses Feature ist experimentel" },
394{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." }, 394{ "This item will be\npermanently deleted.","Dieser Eintrag wird\nkomplett gelöscht." },
395{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." }, 395{ "This item will be permanently deleted.", "Dieser Eintrag wird komplett gelöscht." },
396{ "Thu","Do" }, 396{ "Thu","Do" },
397{ "Thursday","Donnerstag" }, 397{ "Thursday","Donnerstag" },
398{ "Time associated","Mit Zeit" }, 398{ "Time associated","Mit Zeit" },
399{ "Time bar:","Uhrzeit Zeile:" }, 399{ "Time bar:","Uhrzeit Zeile:" },
400{ "Time && Date","Zeit und Datum" }, 400{ "Time && Date","Zeit und Datum" },
401{ "Time Format","Zeit Format" }, 401{ "Time Format","Zeit Format" },
402{ "Time Format(nr):","Zeit Format(Neustart!)" }, 402{ "Time Format(nr):","Zeit Format(Neustart!)" },
403{ "Date Labels:","Datumsleiste:" }, 403{ "Date Labels:","Datumsleiste:" },
404{ "Time: ","Zeit: " }, 404{ "Time: ","Zeit: " },
405{ "Timezone:","Zeitzone:" }, 405{ "Timezone:","Zeitzone:" },
406{ "To: ","Bis: " }, 406{ "To: ","Bis: " },
407{ "To:","Bis:" }, 407{ "To:","Bis:" },
408{ "Today: ","Heute: " }, 408{ "Today: ","Heute: " },
409{ "Todo due today color:","Heute fällige To-Do's" }, 409{ "Todo due today color:","Heute fällige To-Do's" },
410{ "To-do items:","To-Do items:" }, 410{ "To-do items:","To-Do items:" },
411{ "Todo overdue color:","Überfällige To-Do's" }, 411{ "Todo overdue color:","Überfällige To-Do's" },
412{ "Todo","Todo" }, 412{ "Todo","Todo" },
413{ "To-do view shows completed Todos","To-do Ansicht zeigt erledigte To-dos" }, 413{ "To-do view shows completed Todos","To-do Ansicht zeigt erledigte To-dos" },
414{ "ToDoView:","Todo Ansicht:" }, 414{ "ToDoView:","Todo Ansicht:" },
415{ "Toggle Alarm","Wechsle Alarm" }, 415{ "Toggle Alarm","Wechsle Alarm" },
416{ "Toggle Allday","Umschalten Ganztag" }, 416{ "Toggle Allday","Umschalten Ganztag" },
417{ "Tomorrow: ","Morgen: " }, 417{ "Tomorrow: ","Morgen: " },
418{ "Tue","Di" }, 418{ "Tue","Di" },
419{ "Tuesday","Dienstag" }, 419{ "Tuesday","Dienstag" },
420{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" }, 420{ "Two entries are in conflict, if: ","Zwei Einträge haben einen Konflikt, wenn:" },
421{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." }, 421{ "Unable to find template '%1'.","Kann Vorlage '%1' nicht finden." },
422{ "Unknown","Unbekannt" }, 422{ "Unknown","Unbekannt" },
423{ "Up","Hinauf" }, 423{ "Up","Hinauf" },
424{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" }, 424{ "Use password (if not, ask when syncing)","Passwort: (sonst jedesmal anfragen)" },
425{ "User defined","Benutzerdefiniert" }, 425{ "User defined","Benutzerdefiniert" },
426{ "User long date:","Format langes Datum:" }, 426{ "User long date:","Format langes Datum:" },
427{ "User short date:","Forma kurzes Datum:" }, 427{ "User short date:","Forma kurzes Datum:" },
428{ "View","Ansicht" }, 428{ "View","Ansicht" },
429{ "View Fonts","Schriftarten Ansichten" }, 429{ "View Fonts","Schriftarten Ansichten" },
430{ "Views","Ansichten" }, 430{ "Views","Ansichten" },
431{ "Wed","Mi" }, 431{ "Wed","Mi" },
432{ "Wednesday","Mittwoch" }, 432{ "Wednesday","Mittwoch" },
433{ "Week %1","Woche %1" }, 433{ "Week %1","Woche %1" },
434{ "Weekly","Wöchentlich" }, 434{ "Weekly","Wöchentlich" },
435{ "Week starts on Sunday","Woche beginnt Sonntags" }, 435{ "Week starts on Sunday","Woche beginnt Sonntags" },
436{ "What's Next View:","What's Next Anz." }, 436{ "What's Next View:","What's Next Anz." },
437{ "What's next ?","Was kommt als nächstes?(What's Next)" }, 437{ "What's next ?","Was kommt als nächstes?(What's Next)" },
438{ "Working Hours","Tägliche Arbeitszeit" }, 438{ "Working Hours","Tägliche Arbeitszeit" },
439{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" }, 439{ "Working hours color:","Arbeitszeit in der Agenda Ansicht:" },
440{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" }, 440{ "Write back existing entries only","Nur exisitierende Einträge zurückschreiben" },
441{ "Write back synced file","Syncronisierte Datei zurückschreiben" }, 441{ "Write back synced file","Syncronisierte Datei zurückschreiben" },
442{ "Yearly","Jährlich" }, 442{ "Yearly","Jährlich" },
443{ "year(s)","Jahr(e)" }, 443{ "year(s)","Jahr(e)" },
444{ "Yes","Ja" }, 444{ "Yes","Ja" },
445{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" }, 445{ "You have %d item(s) selected.\n","Sie haben %d Einträge ausgewählt.\n" },
446{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." }, 446{ "You have to restart KOrganizer for this setting to take effect.","Sie müssem Korganizer neu starten, damit diese Einstellung aktiviert wird." },
447{ "week(s) on:","Woche(n) am: " }, 447{ "week(s) on:","Woche(n) am: " },
448{ "Full menu bar(nr)","Volle Menuleiste(bn)" }, 448{ "Full menu bar(nr)","Volle Menuleiste(bn)" },
449{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 449{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
450{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 450{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
451{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 451{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
452{ "Daylight start:","Sommerzeit Beginn:" }, 452{ "Daylight start:","Sommerzeit Beginn:" },
453{ "Daylight end:","Sommerzeit Ende:" }, 453{ "Daylight end:","Sommerzeit Ende:" },
454{ "Time Zone","Zeitzone" }, 454{ "Time Zone","Zeitzone" },
455{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" }, 455{ "Monday 19 April 2004: %A %d %B %Y","Montag 19 April 2004: %A %d %B %Y" },
456{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" }, 456{ "%A: Monday --- %a: Mon","%A: Montag --- %a: Mon" },
457{ "minutely","minütlich" }, 457{ "minutely","minütlich" },
458{ "hourly","stündlich" }, 458{ "hourly","stündlich" },
459{ "daily","täglich" }, 459{ "daily","täglich" },
460{ "weekly","wöchentlich" }, 460{ "weekly","wöchentlich" },
461{ "monthly","monatlich" }, 461{ "monthly","monatlich" },
462{ "day-monthly","tag-monatlich" }, 462{ "day-monthly","tag-monatlich" },
463{ "month-yearly","monat-jährlich" }, 463{ "month-yearly","monat-jährlich" },
464{ "day-yearly","tag-jährlich" }, 464{ "day-yearly","tag-jährlich" },
465{ "position-yearly","pos-jährlich" }, 465{ "position-yearly","pos-jährlich" },
466{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" }, 466{ "Edit item on doubleclick (if not, show)","Editiere mit Doppelklick(wenn nicht, zeige)" },
467{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" }, 467{ "Highlight current day in agenda","Hebe >>heute<< in Agenda hervor" },
468{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" }, 468{ "Use light color for highlight current day","Helle Farbe für >>heute<< Hervorhebung" },
469{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" }, 469{ "Highlight selection in Time Edit","Hebe Auswahl in Zeit Edit hervor" },
470{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" }, 470{ "Hold fullscreen on view change","Behalte Vollbild bei Ansichswechsel" },
471{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." }, 471{ "Hold non-fullscreen on view change","Behalte Nicht-Vollbild bei Ansichtsw." },
472{ "Event list view uses full window","Listenansicht nutzt Vollbild" }, 472{ "Event list view uses full window","Listenansicht nutzt Vollbild" },
473{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" }, 473{ "Set agenda to DayBeginsAt on change","Setze Agenda auf TagBeginntUm bei Wechsel" },
474{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" }, 474{ "Set agenda to current time on change","Setze Agenda auf gegenw.Zeit bei Wechsel" },
475{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" }, 475{ "Listview uses monthly timespan","Listenansicht zeigt monatliche Zeitspanne" },
476{ "ViewChange","Ansichtswechsel" }, 476{ "ViewChange","Ansichtswechsel" },
477{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" }, 477{ "Default alarm *.wav file:","Standard Alarm *.wav Datei:" },
478{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" }, 478{ "This setting is useless for 5500 user!","Diese Einst. ist nutzlos für 5500 Nutzer" },
479{ "File","Datei" }, 479{ "File","Datei" },
480{ "Clone...","Dupliziere.." }, 480{ "Clone...","Dupliziere.." },
481{ "Move...","Bewege..." }, 481{ "Move...","Bewege..." },
482{ "Beam...","Sende via IR..." }, 482{ "Beam...","Sende via IR..." },
483{ "&Clone...","Dupliziere.." }, 483{ "&Clone...","Dupliziere.." },
484{ "&Move...","Bewege..." }, 484{ "&Move...","Bewege..." },
485{ "&Beam...","Sende via IR..." }, 485{ "&Beam...","Sende via IR..." },
486{ "Show Completed","Zeige erledigte Todos" }, 486{ "Show Completed","Zeige erledigte Todos" },
487{ "Show Quick Todo","Zeige Quick Todo" }, 487{ "Show Quick Todo","Zeige Quick Todo" },
488{ "Unparent Todo","Un-sub Todo" }, 488{ "Unparent Todo","Un-sub Todo" },
489{ "Save selected to file...","Speichere Selektierte..." }, 489{ "Save selected to file...","Speichere Selektierte..." },
490{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." }, 490{ "Add Categ. to selected...","Füge zu Selekt. Kateg. hinzu..." },
491{ "Set Categ. for selected...","Setze Kateg. für Selekt." }, 491{ "Set Categ. for selected...","Setze Kateg. für Selekt." },
492{ "Beam selected via IR","Sende Selekt. via IR..." }, 492{ "Beam selected via IR","Sende Selekt. via IR..." },
493{ "Search","Suchen" }, 493{ "Search","Suchen" },
494{ "Date Picker","Datum auswählen" }, 494{ "Date Picker","Datum auswählen" },
495{ "Day View","Tagesansicht" }, 495{ "Day View","Tagesansicht" },
496{ "Work Week","Arbeitswoche" }, 496{ "Work Week","Arbeitswoche" },
497{ "Week","Wochenansicht" }, 497{ "Week","Wochenansicht" },
498{ "Month","Monatsansicht" }, 498{ "Month","Monatsansicht" },
499{ "Todo View","Todo Liste" }, 499{ "Todo View","Todo Liste" },
500{ "Journal","Journal Ansicht" }, 500{ "Journal","Journal Ansicht" },
501{ "Next days","Nächste Tage" }, 501{ "Next days","Nächste Tage" },
502{ "Print agenda selection...","Drucke Agendaselektion..." }, 502{ "Print agenda selection...","Drucke Agendaselektion..." },
503{ "Toggle DateNavigator","Navigator umschalten" }, 503{ "Toggle DateNavigator","Navigator umschalten" },
504{ "Toggle FilterView","Filteransicht umschalten" }, 504{ "Toggle FilterView","Filteransicht umschalten" },
505{ "Prev. month","Vorheriger Monat" }, 505{ "Prev. month","Vorheriger Monat" },
506{ "Go backward","Gehe zurück" }, 506{ "Go backward","Gehe zurück" },
507{ "Go forward","Gehe weiter" }, 507{ "Go forward","Gehe weiter" },
508{ "Synchronize","Synchronisieren" }, 508{ "Synchronize","Synchronisieren" },
509{ "AgendaSize","Agendagröße" }, 509{ "AgendaSize","Agendagröße" },
510{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" }, 510{ "Import (*.ics/*.vcs) file","Importiere (*.ics/*.vcs) Datei" },
511{ "Import last file","Importiere letzte Datei" }, 511{ "Import last file","Importiere letzte Datei" },
512{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." }, 512{ "Import Opie/Qtopia Cal.","Importiere Opie/Qtopia Kal." },
513{ "Load Calendar Backup","Lade Kalender Backup" }, 513{ "Load Calendar Backup","Lade Kalender Backup" },
514{ "Save Calendar Backup","Speichere Kalender Backup" }, 514{ "Save Calendar Backup","Speichere Kalender Backup" },
515{ "Export VCalendar","Exportiere VCalendar" }, 515{ "Export VCalendar","Exportiere VCalendar" },
516{ "Manage new categories...","Verwalte neue Kategorien..." }, 516{ "Manage new categories...","Verwalte neue Kategorien..." },
517{ "Beam complete calendar...","Sende kompletten Kalender via IR" }, 517{ "Beam complete calendar...","Sende kompletten Kalender via IR" },
518{ "Beam filtered calendar...","Sende gefilterten Kalender via IR" }, 518{ "Beam filtered calendar...","Sende gefilterten Kalender via IR" },
519{ "Remote via ssh","Über Netzwerk via ssh" }, 519{ "Remote via ssh","Über Netzwerk via ssh" },
520{ "With local file","Mit lokaler Datei" }, 520{ "With local file","Mit lokaler Datei" },
521{ "With last file","Mit letzter Datei" }, 521{ "With last file","Mit letzter Datei" },
522{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" }, 522{ "KO/Pi: Ready for beaming","KO/Pi: Bereit zum Senden" },
523{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" }, 523{ "KO/Pi:Beaming done","KO/Pi: Senden erfolgt" },
524{ "Save filename","Speichern: Dateinamen wählen" }, 524{ "Save filename","Speichern: Dateinamen wählen" },
525{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" }, 525{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Dateiname existiert bereits!\nAlte Datei vom:\n%1\nÜberschreiben?\n" },
526{ "KO/Pi: Warning!","KO/Pi: Warnung!" }, 526{ "KO/Pi: Warning!","KO/Pi: Warnung!" },
527{ "Overwrite!","Überschreibe!" }, 527{ "Overwrite!","Überschreibe!" },
528{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 528{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
529{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Alle selektierten Einträge werden\nunwiederbringlich gelöscht.\n(Löschen kann auf dem\nPDA einige Zeit dauern)\n" }, 529{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Alle selektierten Einträge werden\nunwiederbringlich gelöscht.\n(Löschen kann auf dem\nPDA einige Zeit dauern)\n" },
530{ "KO/Pi Confirmation","KO/Pi Bestätigung" }, 530{ "KO/Pi Confirmation","KO/Pi Bestätigung" },
531{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" }, 531{ "Close dialog to abort deletion!","Schließe Dialog um das Löschen abzubrechen!" },
532{ "Deleting item %d ...","Lösche Eintrag %d ..." }, 532{ "Deleting item %d ...","Lösche Eintrag %d ..." },
533{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." }, 533{ "%d items remaining in list.","%d Einträge sind in der Liste verblieben." },
534{ "Size","Größe" }, 534{ "Size","Größe" },
535{ "Date","Datum" }, 535{ "Date","Datum" },
536{ "Mime Type","Datei Typ" }, 536{ "Mime Type","Datei Typ" },
537{ "All Files","Alle Dateien" }, 537{ "All Files","Alle Dateien" },
538{ "Files","Dateien" }, 538{ "Files","Dateien" },
539{ "Documents","DoKumente" }, 539{ "Documents","DoKumente" },
540{ "Select Categories","Selektiere Kategorien" }, 540{ "Select Categories","Selektiere Kategorien" },
541{ " &Deselect All "," Auswahl aufheben " }, 541{ " &Deselect All "," Auswahl aufheben " },
542{ "A&dd","Hinzu" }, 542{ "A&dd","Hinzu" },
543{ "&Modify","Ändern" }, 543{ "&Modify","Ändern" },
544{ "Edit Categories","Editiere Kategorien" }, 544{ "Edit Categories","Editiere Kategorien" },
545{ " &Edit Categories "," &Editiere Kategorien " }, 545{ " &Edit Categories "," &Editiere Kategorien " },
546{ "Beam Options","Beam Einstellungen" }, 546{ "Beam Options","Beam Einstellungen" },
547{ " With timezone "," Mit Zeitzone " }, 547{ " With timezone "," Mit Zeitzone " },
548{ " Local time ", " Lokale Zeit " }, 548{ " Local time ", " Lokale Zeit " },
549{ "Manage new Categories","Verwalte neue Kategorien" }, 549{ "Manage new Categories","Verwalte neue Kategorien" },
550{ "Add to category list","Füge zur Kategorieliste hinzu" }, 550{ "Add to category list","Füge zur Kategorieliste hinzu" },
551{ "Remove from Events/Todos","Entferne von Terminen/Todos" }, 551{ "Remove from Events/Todos","Entferne von Terminen/Todos" },
552{ "After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n ","Nach dem Importieren/Laden/Syncen\nkann es neue Kategorien in den \nTerminen oder Todos geben, die nicht\nin der Kategorieliste enthalten sind.\nBitte wählen Sie, was passieren soll:\n " }, 552{ "After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n ","Nach dem Importieren/Laden/Syncen\nkann es neue Kategorien in den \nTerminen oder Todos geben, die nicht\nin der Kategorieliste enthalten sind.\nBitte wählen Sie, was passieren soll:\n " },
553{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" }, 553{ "New categories not in list:","Kategorien, die nicht in der Liste sind:" },
554{ "File format","Datei Format" }, 554{ "File format","Datei Format" },
555{ "Time format","Zeit Format" }, 555{ "Time format","Zeit Format" },
556{ "Delete all\ncompleted To-Dos?","Lösche alle\nerledigten To-Dos?" }, 556{ "Delete all\ncompleted To-Dos?","Lösche alle\nerledigten To-Dos?" },
557{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." }, 557{ "KO/Pi:Saving Data to File ...","KO/Pi: Speichere Kalender in Datei ..." },
558{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" }, 558{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Abgespeichert in %d sec, %d ms" },
559{ "h","Std" }, 559{ "h","Std" },
560{ "min","Min" }, 560{ "min","Min" },
561{ "hou","Std" }, 561{ "hou","Std" },
562{ "day","Tag" }, 562{ "day","Tag" },
563{ "French","Französich" }, 563{ "French","Französich" },
564{ "Time","Zeit" }, 564{ "Time","Zeit" },
565{ "Event Viewer","Termin Ansicht" }, 565{ "Event Viewer","Termin Ansicht" },
566{ "Cancel Sync","Sync Abbrechen" }, 566{ "Cancel Sync","Sync Abbrechen" },
567{ "Remote","Fern" }, 567{ "Remote","Fern" },
568{ "Local","Lokal" }, 568{ "Local","Lokal" },
569{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" }, 569{ "Conflict! Please choose entry","Konflikt! Bitte Eintrag wählen" },
570{ "Local: ","Lokal: " }, 570{ "Local: ","Lokal: " },
571{ "Remote: ","Fern: " }, 571{ "Remote: ","Fern: " },
572{ "Last modified: ","Zuletzt geändert: " }, 572{ "Last modified: ","Zuletzt geändert: " },
573{ "Location: ","Ort: " }, 573{ "Location: ","Ort: " },
574{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" }, 574{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>Von:</b> %1 </p><p><b>Bis:</b> %2</p>" },
575{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" }, 575{ "<p><b>On:</b> %1</p>","<p><b>Am:</b> %1</p>" },
576{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " }, 576{ "<p><b>From:</b> %1</p> ","<p><b>Von:</b> %1</p> " },
577{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" }, 577{ "<p><b>To:</b> %1</p>","<p><b>Bis:</b> %1</p>" },
578{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " }, 578{ "<p><b>On:</b> %1</p> ","<p><b>Am:</b> %1</p> " },
579{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" }, 579{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>Von:</b> %1 <b>Bis:</b> %2</p>" },
580{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." }, 580{ "This is a %1 recurring event.","Das ist ein %1 wiederholender Termin." },
581{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" }, 581{ "<b>Next recurrence is on:</b>","<b>Nächste Wiederholung ist am:</b>" },
582{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" }, 582{ "<b>Last recurrence was on:</b>","<b>Letzte Wiederholung war am:</b>" },
583{ "( %1 min before )","( %1 min vorher )" }, 583{ "( %1 min before )","( %1 min vorher )" },
584{ "<b>Alarm on: ","<b>Alarm am: " }, 584{ "<b>Alarm on: ","<b>Alarm am: " },
585{ "<b>Details: </b>","<b>Details: </b>" }, 585{ "<b>Details: </b>","<b>Details: </b>" },
586{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" }, 586{ "<p><b>Priority:</b> %2</p>","<p><b>Priorität:</b> %2</p>" },
587{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" }, 587{ "<p><i>%1 % completed</i></p>","<p><i>%1 % erledigt</i></p>" },
588{ "Organizer","Organisator" }, 588{ "Organizer","Organisator" },
589{ "Save","Speichern" }, 589{ "Save","Speichern" },
590{ "Exit (+save)","Beenden (+ speichern)" }, 590{ "Exit (+save)","Beenden (+ speichern)" },
591{ "Home","Zuhause" }, 591{ "Home","Zuhause" },
592{ "Office","Büro" }, 592{ "Office","Büro" },
593{ "Libary","Bücherei" }, 593{ "Libary","Bücherei" },
594{ "Doctor","Arzt" }, 594{ "Doctor","Arzt" },
595{ "Beach","Strand" }, 595{ "Beach","Strand" },
596{ "Conference room","Konferenzraum" }, 596{ "Conference room","Konferenzraum" },
597{ "Drive Home","Heimfahrt" }, 597{ "Drive Home","Heimfahrt" },
598{ "Watch TV","Tv gucken" }, 598{ "Watch TV","Tv gucken" },
599{ "Phone call","Telefonanruf" }, 599{ "Phone call","Telefonanruf" },
600{ "Pay bill","Rechnung bezahlen" }, 600{ "Pay bill","Rechnung bezahlen" },
601{ "Read book","Buch lesen" }, 601{ "Read book","Buch lesen" },
602{ "Watering plants","Pflanzen giessen" }, 602{ "Watering plants","Pflanzen giessen" },
603{"Appointment","Verabredung" }, 603{"Appointment","Verabredung" },
604{"Birthday","Geburtstag" }, 604{"Birthday","Geburtstag" },
605{"Business","Geschäft" }, 605{"Business","Geschäft" },
606{"Business Travel","Geschäftsreise" }, 606{"Business Travel","Geschäftsreise" },
607{"Cinema","Kino" }, 607{"Cinema","Kino" },
608{"Customer","Kunde" }, 608{"Customer","Kunde" },
609{"Break","Pause" }, 609{"Break","Pause" },
610{"Breakfast","Frühstück" }, 610{"Breakfast","Frühstück" },
611{"Competition","Wettkampf" }, 611{"Competition","Wettkampf" },
612{"Dinner","Abendessen" }, 612{"Dinner","Abendessen" },
613{"Education","Erziehung" }, 613{"Education","Erziehung" },
614{"Family","Familie" }, 614{"Family","Familie" },
615{"Favorites","Favoriten" }, 615{"Favorites","Favoriten" },
616{"Festival","Festival" }, 616{"Festival","Festival" },
617{"Fishing","Angeln" }, 617{"Fishing","Angeln" },
618{"Flight","Flug" }, 618{"Flight","Flug" },
619{"Gifts","Geschenk" }, 619{"Gifts","Geschenk" },
620{"Holiday","Feiertag" }, 620{"Holiday","Feiertag" },
621{"Holiday Cards","Ansichtskarten" }, 621{"Holiday Cards","Ansichtskarten" },
622{"Hot Contacts","Heisse Kontakte" }, 622{"Hot Contacts","Heisse Kontakte" },
623{"Hiking","Wandern" }, 623{"Hiking","Wandern" },
624{"Hunting","Jagen" }, 624{"Hunting","Jagen" },
625{"Key Customer","Wichtiger Kunde" }, 625{"Key Customer","Wichtiger Kunde" },
626{"Kids","Kinder" }, 626{"Kids","Kinder" },
627{"Lunch","Mittagessen" }, 627{"Lunch","Mittagessen" },
628{"Meeting","Treffen" }, 628{"Meeting","Treffen" },
629{"Miscellaneous","Verschiedenes" }, 629{"Miscellaneous","Verschiedenes" },
630{"Partner","Partner" }, 630{"Partner","Partner" },
631{"Party","Partie" }, 631{"Party","Partie" },
632{"Personal","Privat" }, 632{"Personal","Privat" },
633{"Personal Travel","Privatreise"}, 633{"Personal Travel","Privatreise"},
634{"PHB","PHB" }, 634{"PHB","PHB" },
635{"Phone Calls","Telefonanruf" }, 635{"Phone Calls","Telefonanruf" },
636{"Projects","Projekt" }, 636{"Projects","Projekt" },
637{"Recurring","Wiederholend" }, 637{"Recurring","Wiederholend" },
638{"School","Schule" }, 638{"School","Schule" },
639{"Shopping","Einkaufen" }, 639{"Shopping","Einkaufen" },
640{"Speach","Rede" }, 640{"Speach","Rede" },
641{"Special Occasion","Spez.Gelegenheit" }, 641{"Special Occasion","Spez.Gelegenheit" },
642{"Sports","Sport" }, 642{"Sports","Sport" },
643{"Talk","Vortrag" }, 643{"Talk","Vortrag" },
644{"Travel","Reise" }, 644{"Travel","Reise" },
645{"TV","TV" }, 645{"TV","TV" },
646{"Germany","Deutschland" }, 646{"Germany","Deutschland" },
647{"Sweden","Schweden" }, 647{"Sweden","Schweden" },
648{"Forest","Wald" }, 648{"Forest","Wald" },
649{ "Desert","Wüste" }, 649{ "Desert","Wüste" },
650{ "Kitchen","Küche" }, 650{ "Kitchen","Küche" },
651{ "Lake","See" }, 651{ "Lake","See" },
652{"University","Universität"}, 652{"University","Universität"},
653{"Vacation","Urlaub" }, 653{"Vacation","Urlaub" },
654{"VIP","VIP" }, 654{"VIP","VIP" },
655{ "Import Sharp Calendar","Importiere Sharp Kalender" }, 655{ "Import Sharp Calendar","Importiere Sharp Kalender" },
656{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" }, 656{ "This todo has been cancelled!","Dieses Todo wurde gecancelt!" },
657{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" }, 657{ "This event has been cancelled!","Dieser Termin wurde gecancelt!" },
658{ "Cancelled","Gecancelt" }, 658{ "Cancelled","Gecancelt" },
659{ "Multiple sync","Mehrfach Sync" }, 659{ "Multiple sync","Mehrfach Sync" },
660{ "Local file","Lokale Datei" }, 660{ "Local file","Lokale Datei" },
661{ "Last file","Letzte Datei" }, 661{ "Last file","Letzte Datei" },
662{ "Keys + Colors...","Tasten + Farben..." }, 662{ "Keys + Colors...","Tasten + Farben..." },
663{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" }, 663{ "Mini icons in toolbar(nr)","Mini Icons in ToolBar(bn)" },
664{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" }, 664{ "Quick load/save (w/o Unicode)","Schnelles Laden/Speichern (o Unicode)" },
665{ "Choose...","Wähle..." }, 665{ "Choose...","Wähle..." },
666{ "Use colors for application:","Setze Farben für Programm:" }, 666{ "Use colors for application:","Setze Farben für Programm:" },
667{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" }, 667{ "Buttons, menus, etc.:","Knöpfe, Menu, etc.:" },
668{ "Frames, labels, etc.:","Rahmen, Label, etc.:" }, 668{ "Frames, labels, etc.:","Rahmen, Label, etc.:" },
669{ "Show parent To-Do's in What's Next view","Zeige Ober-Todo in What's Next Anz." }, 669{ "Show parent To-Do's in What's Next view","Zeige Ober-Todo in What's Next Anz." },
670{ "Show location in What's Next view","Zeige Ort in What's Next Anz." }, 670{ "Show location in What's Next view","Zeige Ort in What's Next Anz." },
671{ "Show events that recur ","Zeige Termine, die sich wiederholen:" }, 671{ "Show events that recur ","Zeige Termine, die sich wiederholen:" },
672{ "Show in every cell ","Zeige in jeder Zelle " }, 672{ "Show in every cell ","Zeige in jeder Zelle " },
673{ "short month","kurzen Monat" }, 673{ "short month","kurzen Monat" },
674{ "icons","Icons" }, 674{ "icons","Icons" },
675{ "Show Sat/Sun together","Zeige Sam/Son zusammen" }, 675{ "Show Sat/Sun together","Zeige Sam/Son zusammen" },
676{ "Categorie colors are applied to text","Kategorie Farben färben Text" }, 676{ "Categorie colors are applied to text","Kategorie Farben färben Text" },
677{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" }, 677{ "Month view uses day colors","Monatsansicht zeigt Tagesfarben" },
678{ "Day color odd months","Tagesfarbe ungerade Monate" }, 678{ "Day color odd months","Tagesfarbe ungerade Monate" },
679{ "Day color even months","Tagesfarbe gerade Monate" }, 679{ "Day color even months","Tagesfarbe gerade Monate" },
680{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" }, 680{ "Color for Sundays + category \"Holiday\"","Farbe für Sonntag + Kateg.\" Feiertag\"" },
681{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" }, 681{ "To-do view shows complete as 'xx %'","Zeige Prozent erledigt als 'xx %'" },
682{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" }, 682{ "Small To-do view uses smaller font","Kleine To-do Ansicht nutzt kleineren Font" },
683{ "Colors are applied to text","Farben werden auf Text angewendet" }, 683{ "Colors are applied to text","Farben werden auf Text angewendet" },
684{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" }, 684{ "Use internal alarm notification","Nutze interne Alarm Benachrichtigung" },
685{ "Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n","Achtung: KO/Pi muß ausgeführt werden damit die Benachrichtigung funktioniert. Empfehlung für Zaurus: Diese Option nicht wählen und KO/Pi Alarm Applet installieren.\n" }, 685{ "Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n","Achtung: KO/Pi muß ausgeführt werden damit die Benachrichtigung funktioniert. Empfehlung für Zaurus: Diese Option nicht wählen und KO/Pi Alarm Applet installieren.\n" },
686{ "Play beeps count:","Anzahl der Alarmpiepse: " }, 686{ "Play beeps count:","Anzahl der Alarmpiepse: " },
687{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " }, 687{ "Beeps interval in sec:","Zeitintervall der Alarmpiepse: " },
688{ "Default suspend time in min:","Standard Supendierungs Zeit: " }, 688{ "Default suspend time in min:","Standard Supendierungs Zeit: " },
689{ "Auto suspend count:","Anzahl der auto Suspendierungen" }, 689{ "Auto suspend count:","Anzahl der auto Suspendierungen" },
690{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" }, 690{ "Alarm *.wav file for newly created alarm:","Alarm *.wav Datei für neu angelegte Alarme:" },
691{ "New profile","Neues Profil" }, 691{ "New profile","Neues Profil" },
692{ "Clone profile","Klone Profil" }, 692{ "Clone profile","Klone Profil" },
693{ "Delete profile","Lösche Profil" }, 693{ "Delete profile","Lösche Profil" },
694{ "Profile:","Profil:" }, 694{ "Profile:","Profil:" },
695{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" }, 695{ "Include in multiple sync","Beziehe Profil in mehrfach Sync mit ein" },
696{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 696{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
697{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 697{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
698{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 698{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
699{ "Write back file","Schreibe Datei zurück" }, 699{ "Write back file","Schreibe Datei zurück" },
700{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 700{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
701{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 701{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
702{ "Local device name:","Name dieses Gerätes:" }, 702{ "Local device name:","Name dieses Gerätes:" },
703{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 703{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
704{ "Sync preferences","Synchronisations Einstellungen" }, 704{ "Sync preferences","Synchronisations Einstellungen" },
705{ "Profile kind","Profil Art" }, 705{ "Profile kind","Profil Art" },
706{ "Local file","Lokale Datei" }, 706{ "Local file","Lokale Datei" },
707{ "Local file:","Lokale Datei:" }, 707{ "Local file:","Lokale Datei:" },
708{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 708{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
709{ "Fill in default values for:","Setze Beispiel Werte ein für:" }, 709{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
710{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" }, 710{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
711{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"}, 711{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile"},
712{ "Device","Gerät:" }, 712{ "Device","Gerät:" },
713{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" }, 713{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" },
714{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n","Synchronisationsübersicht:\n\n %d items lokal hinzugefügt\n %d items entfernt hinzugefügt\n %d items lokal geändert\n %d items entfernt geändert\n %d items lokal gelöscht\n %d items entfernt gelöscht\n" }, 714{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n","Synchronisationsübersicht:\n\n %d items lokal hinzugefügt\n %d items entfernt hinzugefügt\n %d items lokal geändert\n %d items entfernt geändert\n %d items lokal gelöscht\n %d items entfernt gelöscht\n" },
715{ "Synchronization successful","Synchronisation erfolgreich" }, 715{ "Synchronization successful","Synchronisation erfolgreich" },
716{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." }, 716{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." },
717{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" }, 717{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" },
718{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" }, 718{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" },
719{ "Enter password","Passwort eingeben" }, 719{ "Enter password","Passwort eingeben" },
720{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" }, 720{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" },
721{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." }, 721{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." },
722{ "Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n","Sorry, das Kopierkommando schlug fehl!\nKommando war:\n%1\n \nVersuche Kommando von Kosole um\nDetails für das Fehlschlagen\nzu erfahren.\n" }, 722{ "Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n","Sorry, das Kopierkommando schlug fehl!\nKommando war:\n%1\n \nVersuche Kommando von Kosole um\nDetails für das Fehlschlagen\nzu erfahren.\n" },
723{ "Writing back file result: ","Resultat des Dateizurückschreibens: " }, 723{ "Writing back file result: ","Resultat des Dateizurückschreibens: " },
724{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" }, 724{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" },
725{ "Edit Calendar Filters","Editiere Kalendar Filter" }, 725{ "Edit Calendar Filters","Editiere Kalendar Filter" },
726{ "Enter filter name:","Neuer Filter Name:" }, 726{ "Enter filter name:","Neuer Filter Name:" },
727{ "Add Filter","Filter hinzufügen" }, 727{ "Add Filter","Filter hinzufügen" },
728{ "Question","Frage" }, 728{ "Question","Frage" },
729{ "Filter position: ","Filter Position: " }, 729{ "Filter position: ","Filter Position: " },
730{ "Month View","Monatsansicht" }, 730{ "Month View","Monatsansicht" },
731{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" }, 731{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gelöscht werden!" },
732{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 732{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
733{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, 733{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
734{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" }, 734{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" },
735{ "Access: ","Zugriff: " }, 735{ "Access: ","Zugriff: " },
736{ "Needs Action","Aktion notwendig" }, 736{ "Needs Action","Aktion notwendig" },
737{ "Accepted","Akzeptiert" }, 737{ "Accepted","Akzeptiert" },
738{ "Declined","Abgelehnt" }, 738{ "Declined","Abgelehnt" },
739{ "Tentative","Vorläufig" }, 739{ "Tentative","Vorläufig" },
740{ "Delegated","Beauftragt" }, 740{ "Delegated","Beauftragt" },
741{ "Completed","Vollständig" }, 741{ "Completed","Vollständig" },
742{ "In Process","In Bearbeitung" }, 742{ "In Process","In Bearbeitung" },
743{ "Participant","Teilnehmer" }, 743{ "Participant","Teilnehmer" },
744{ "Optional Participant","Möglicher Teilnehmer" }, 744{ "Optional Participant","Möglicher Teilnehmer" },
745{ "Observer","Beobachter" }, 745{ "Observer","Beobachter" },
746{ "Chair","Vorsitzender" }, 746{ "Chair","Vorsitzender" },
747{ "Not supported \non desktop!\n","" }, 747{ "Not supported \non desktop!\n","" },
748{ "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Es ist nichts selektiert!\nDieses druckt die volle Breite der Agenda View, so wie man sie sieht.\nUm die verticale Auswahl zum Drucken zu bestimmen,\nbitte einen verticalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen. " }, 748{ "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Es ist nichts selektiert!\nDieses druckt die volle Breite der Agenda View, so wie man sie sieht.\nUm die verticale Auswahl zum Drucken zu bestimmen,\nbitte einen verticalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen. " },
749{ "Date range: ","Datums Zeitspanne: " }, 749{ "Date range: ","Datums Zeitspanne: " },
750{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " }, 750{ "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " },
751{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." }, 751{ "Syncing - close to abort!","Syncing-schließe um abzubrechen." },
752{ "Add / remove events","Add./entferne Termine" }, 752{ "Add / remove events","Add./entferne Termine" },
753{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, 753{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." },
754{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, 754{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." },
755{ "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie gepeicherte Datei wurde verändert!\nDatei Grösse: %1 Bytes.\nZuletzt geändert: %2\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, 755{ "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie gepeicherte Datei wurde verändert!\nDatei Grösse: %1 Bytes.\nZuletzt geändert: %2\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" },
756{ "Overwrite","Überschreiben" }, 756{ "Overwrite","Überschreiben" },
757{ "Sync+save","Syncen+speichern" }, 757{ "Sync+save","Syncen+speichern" },
758{ "Default","Standard" }, 758{ "Default","Standard" },
759{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, 759{ " Categories added to list! "," Kategorien zur Liste hinzugefügt! " },
760{ " %d items?"," %d Einträge?" }, 760{ " %d items?"," %d Einträge?" },
761{ "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nDieses ist ein\nwiederholender Termin!.\nSind Sie sicher, dass Sie\ndiesen Termin und alle\nWiederholungen löschen möchten?" }, 761{ "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nDieses ist ein\nwiederholender Termin!.\nSind Sie sicher, dass Sie\ndiesen Termin und alle\nWiederholungen löschen möchten?" },
762{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, 762{ " ?\n\nDelete:\n"," ?\n\nLösche:\n" },
763{ "Current","Aktuelle" }, 763{ "Current","Aktuelle" },
764{ "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nDieses ist ein\nwiederholender Termin!\nMöchten sie alle Wiederholungen\nlöschen, oder nur die aktuelle am:\n" }, 764{ "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nDieses ist ein\nwiederholender Termin!\nMöchten sie alle Wiederholungen\nlöschen, oder nur die aktuelle am:\n" },
765{ "All","Alle" }, 765{ "All","Alle" },
766{ "Data Loss Warning","Datenverlust Warnung" }, 766{ "Data Loss Warning","Datenverlust Warnung" },
767{ "Proceed","Weitermachen" }, 767{ "Proceed","Weitermachen" },
768{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, 768{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" },
769{ "Filter disabled ","Filter abgeschaltet" }, 769{ "Filter disabled ","Filter abgeschaltet" },
770{ "Filter selected: ","Gewählter Filter: " }, 770{ "Filter selected: ","Gewählter Filter: " },
771{ "Toggle Cancel","Gecancelt ändern" }, 771{ "Toggle Cancel","Gecancelt ändern" },
772{ "&Toggle Cancel","Gecancel&t ändern" }, 772{ "&Toggle Cancel","Gecancel&t ändern" },
773{ "Configure Toolbar","Konfiguriere Toolbar" }, 773{ "Configure Toolbar","Konfiguriere Toolbar" },
774{ "Stretched TB","Gedehnte TB" }, 774{ "Stretched TB","Gedehnte TB" },
775{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, 775{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" },
776{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, 776{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" },
777{ "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","Wenn ein Kalender doppelt importiert\nwird, werden doppelte Einträge ignoriert!\nSie können eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import rückgängig machen zu können.\n" }, 777{ "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","Wenn ein Kalender doppelt importiert\nwird, werden doppelte Einträge ignoriert!\nSie können eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import rückgängig machen zu können.\n" },
778{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, 778{ "Not supported \non desktop!\n","Nur verfügbar auf PDA!" },
779{ "Imported file successfully","Datei erfolgreich importiert" }, 779{ "Imported file successfully","Datei erfolgreich importiert" },
780{ "Error importing file","Fehler beim Importieren der Datei" }, 780{ "Error importing file","Fehler beim Importieren der Datei" },
781{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, 781{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" },
782{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\nÜberschreiben?\n" }, 782{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\nÜberschreiben?\n" },
783{ "Overwrite!","Überschreiben!" }, 783{ "Overwrite!","Überschreiben!" },
784{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Einträge\nwerden nicht importiert!\n" }, 784{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Einträge\nwerden nicht importiert!\n" },
785{ "Load backup filename","Lade Backup Dateiname" }, 785{ "Load backup filename","Lade Backup Dateiname" },
786{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, 786{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" },
787{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, 787{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" },
788{ "Save backup filename","Speichere Backup Dateiname" }, 788{ "Save backup filename","Speichere Backup Dateiname" },
789{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\nÜberschreiben?\n" }, 789{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\nÜberschreiben?\n" },
790{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 790{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
791{ "Details of attendee","Teilnehmerdetails" }, 791{ "Details of attendee","Teilnehmerdetails" },
792{ "Work phone:\n","Telefon Arbeit:\n" }, 792{ "Work phone:\n","Telefon Arbeit:\n" },
793{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, 793{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" },
794{ "Home phone:\n","Telefon privat:\n" }, 794{ "Home phone:\n","Telefon privat:\n" },
795{ "Mobile home phone:\n","Mobiltelefon privat:\n" }, 795{ "Mobile home phone:\n","Mobiltelefon privat:\n" },
796{ "Email:\n","Email:\n" }, 796{ "Email:\n","Email:\n" },
797{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, 797{ "Alarm disabled for this item","Alarm deaktiviert für dieses Item" },
798{ "Audio Al.: ","Audio Al.: " }, 798{ "Audio Al.: ","Audio Al.: " },
799{ "Proc.Al.: ","Proz.Al.: " }, 799{ "Proc.Al.: ","Proz.Al.: " },
800{ "No sound set","Kein Sound definiert" }, 800{ "No sound set","Kein Sound definiert" },
801{ "*.wav|Wav Files","*.wav|Wav Dateien" }, 801{ "*.wav|Wav Files","*.wav|Wav Dateien" },
802{ "No program set","Kein Programm definiert" }, 802{ "No program set","Kein Programm definiert" },
803{ "Running '%1'","Ausführen '%1'" }, 803{ "Running '%1'","Ausführen '%1'" },
804{ "Playing '%1'","Abspielen '%1'" }, 804{ "Playing '%1'","Abspielen '%1'" },
805{ "Show Sync Events in WN/Agenda view","Zeige Sync Events in WN/Agenda Ansicht" }, 805{ "Show Sync Events in WN/Agenda view","Zeige Sync Events in WN/Agenda Ansicht" },
806{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, 806{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" },
807{ "Load!","Laden!" }, 807{ "Load!","Laden!" },
808{ "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Backup Datei vom:\n%1\nDas Laden der Backup Datei\nlöscht die aktuellen Daten!\n" }, 808{ "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Backup Datei vom:\n%1\nDas Laden der Backup Datei\nlöscht die aktuellen Daten!\n" },
809{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, 809{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" },
810{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, 810{ "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" },
811{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 811{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
812{ "Features + hints...","Eigenschaften + Tipps..." }, 812{ "Features + hints...","Eigenschaften + Tipps..." },
813{ "User translation...","Benutzer Übersetzung..." }, 813{ "User translation...","Benutzer Übersetzung..." },
814{ "Sync HowTo...","Synchronisation HowTo..." }, 814{ "Sync HowTo...","Synchronisation HowTo..." },
815{ "Print calendar...","Drucke Kalender..." }, 815{ "Print calendar...","Drucke Kalender..." },
816{ "Anniversary","Jahrestag" }, 816{ "Anniversary","Jahrestag" },
817{ "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Wenn Geburtstage mehrfach importiert\nwerden, werden doppelte Einträge ignoriert\nwenn sie nicht verändert wurden.\n" }, 817{ "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Wenn Geburtstage mehrfach importiert\nwerden, werden doppelte Einträge ignoriert\nwenn sie nicht verändert wurden.\n" },
818{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, 818{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" },
819{ "Next recurrence is on: ","Nächste Wiederholung ist am:" }, 819{ "Next recurrence is on: ","Nächste Wiederholung ist am:" },
820{ "<b>Alarm on: </b>","<b>Alarm am: </b>" }, 820{ "<b>Alarm on: </b>","<b>Alarm am: </b>" },
821{ "<b>Access: </b>","<b>Zugriff: </b>" }, 821{ "<b>Access: </b>","<b>Zugriff: </b>" },
822{ "(%1 min before)","(%1 min vorher)" }, 822{ "(%1 min before)","(%1 min vorher)" },
823{ "<b>Categories: </b>","<b>Kategorien: </b>" }, 823{ "<b>Categories: </b>","<b>Kategorien: </b>" },
824{ "Save Journal/Description...","Speichere Journal/Details..." }, 824{ "Save Journal/Description...","Speichere Journal/Details..." },
825{ "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Das speichert den Text bzw.\ndie Details von selektierten\nJournalen und Events/Todos\nin eine Textdatei." }, 825{ "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Das speichert den Text bzw.\ndie Details von selektierten\nJournalen und Events/Todos\nin eine Textdatei." },
826{ "Continue","Weitermachen" }, 826{ "Continue","Weitermachen" },
827{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, 827{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" },
828{ "Attendee:","Teilnehmer:" }, 828{ "Attendee:","Teilnehmer:" },
829{ "Click OK to search ->","Klicke zum Suchen auf OK ->" }, 829{ "Click OK to search ->","Klicke zum Suchen auf OK ->" },
830{ "On day ","Am Tag " }, 830{ "On day ","Am Tag " },
831{ "%1 of ","%1 des Monats" }, 831{ "%1 of ","%1 des Monats" },
832{ "%1 of the year","%1 des Jahres" }, 832{ "%1 of the year","%1 des Jahres" },
833{ "Anonymous","Anonymo" }, 833{ "Anonymous","Anonymo" },
834{ "nobody@nowhere","niemand@nirgendwo" }, 834{ "nobody@nowhere","niemand@nirgendwo" },
835{ "calendar.html","calendar.html" }, 835{ "calendar.html","calendar.html" },
836{ " Local Time"," Locale Zeit" }, 836{ " Local Time"," Locale Zeit" },
837{ "Unknown Name","Unbekannter Name" }, 837{ "Unknown Name","Unbekannter Name" },
838{ "unknown@nowhere","unbekannt@nirgendwo" }, 838{ "unknown@nowhere","unbekannt@nirgendwo" },
839{ "Beam via IR!","Beam via IR!" }, 839{ "Beam via IR!","Beam via IR!" },
840{ "Next Month","Nächster Monat" }, 840{ "Next Month","Nächster Monat" },
841{ "Prio","Prio" }, 841{ "Prio","Prio" },
842{ "Reparent Todo","Mache Sub-Todo" }, 842{ "Reparent Todo","Mache Sub-Todo" },
843{ "tomorrow","morgen" }, 843{ "tomorrow","morgen" },
844{ "today","heute" }, 844{ "today","heute" },
845{ "yesterday","gestern" }, 845{ "yesterday","gestern" },
846{ "Ok","Ok" }, 846{ "Ok","Ok" },
847{ "Ok+Agenda","Ok+Agenda" }, 847{ "Ok+Agenda","Ok+Agenda" },
848{ "Email","Email" }, 848{ "Email","Email" },
849{ "RSVP","RSVP" }, 849{ "RSVP","RSVP" },
850{ "Email:","Email:" }, 850{ "Email:","Email:" },
851{ "Appointment Time ","Termin Zeit " }, 851{ "Appointment Time ","Termin Zeit " },
852{ "2","2" }, 852{ "2","2" },
853{ "3","3" }, 853{ "3","3" },
854{ "4","4" }, 854{ "4","4" },
855{ " 0 %"," 0 %" }, 855{ " 0 %"," 0 %" },
856{ " 20 %"," 20 %" }, 856{ " 20 %"," 20 %" },
857{ " 40 %"," 40 %" }, 857{ " 40 %"," 40 %" },
858{ " 60 %"," 60 %" }, 858{ " 60 %"," 60 %" },
859{ " 80 %"," 80 %" }, 859{ " 80 %"," 80 %" },
860{ "100 %","100 %" }, 860{ "100 %","100 %" },
861{ "Filter","Filter" }, 861{ "Filter","Filter" },
862{ "Configure","Konfiguriere" }, 862{ "Configure","Konfiguriere" },
863{ "What's Next","What's Next" }, 863{ "What's Next","What's Next" },
864{ "Complete calendar...","Kompletten Kalender..." }, 864{ "Complete calendar...","Kompletten Kalender..." },
865{ "Filtered calendar...","Gefilterten Kalender..." }, 865{ "Filtered calendar...","Gefilterten Kalender..." },
866{ "Export to phone","Exportiere zum Handy" }, 866{ "Export to phone","Exportiere zum Handy" },
867{ "Beam receive enabled","Beam Empfang an" }, 867{ "Beam receive enabled","Beam Empfang an" },
868{ "What's new?","Was ist neu?" }, 868{ "What's new?","Was ist neu?" },
869{ "FAQ...","FAQ..." }, 869{ "FAQ...","FAQ..." },
870{ "Licence...","Licence..." }, 870{ "Licence...","Licence..." },
871{ "What's This?","What's This?" }, 871{ "What's This?","What's This?" },
872{ "&Edit...","&Editiere..." }, 872{ "&Edit...","&Editiere..." },
873{ "Oktober","Oktober" }, 873{ "Oktober","Oktober" },
874{ "Title","Titel" }, 874{ "Title","Titel" },
875{ "%1 %","%1 %" }, 875{ "%1 %","%1 %" },
876{ "Enable Pi-Sync","Schalte Pi-Sync an" }, 876{ "Enable Pi-Sync","Schalte Pi-Sync an" },
877{ "Import!","Importiere!" }, 877{ "Import!","Importiere!" },
878{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" }, 878{ "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" },
879{ "Export to phone options","Export ans Handy Optionen" }, 879{ "Export to phone options","Export ans Handy Optionen" },
880{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 880{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." },
881{ "I/O device: ","I/O device: " }, 881{ "I/O device: ","I/O device: " },
882{ "Connection: ","Connection: " }, 882{ "Connection: ","Connection: " },
883{ "Model(opt.): ","Model(opt.): " }, 883{ "Model(opt.): ","Model(opt.): " },
884{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" }, 884{ "Write back events in future only","Schreibe nur zukünftige Termine zurück" },
885{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, 885{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " },
886{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nToDo/Kalender Daten auf dem Handy!" }, 886{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nToDo/Kalender Daten auf dem Handy!" },
887{ "Export to mobile phone!","Exportiere auf das Handy!" }, 887{ "Export to mobile phone!","Exportiere auf das Handy!" },
888{ "Export complete calendar","Exportiere kompletten Kalender" }, 888{ "Export complete calendar","Exportiere kompletten Kalender" },
889{ "Writing to phone...","Sende Daten ans Handy..." }, 889{ "Writing to phone...","Sende Daten ans Handy..." },
890{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 890{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
891{ "Retry","Nochmal versuchen" }, 891{ "Retry","Nochmal versuchen" },
892{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 892{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
893{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 893{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" },
894{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 894{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
895{ "Export filtered calendar","Exportiere gefilterten Kalender" }, 895{ "Export filtered calendar","Exportiere gefilterten Kalender" },
896{ "Preferences","Vorlieben" }, 896{ "Preferences","Vorlieben" },
897{ "Global","Global" }, 897{ "Global","Global" },
898{ "Phone","Phone" }, 898{ "Phone","Phone" },
899{ "SMS","SMS" }, 899{ "SMS","SMS" },
900{ "Fax","Fax" }, 900{ "Fax","Fax" },
901{ "Pager","Pager" }, 901{ "Pager","Pager" },
902{ "SIP","SIP" }, 902{ "SIP","SIP" },
903{ "Italian","Italienisch" }, 903{ "Italian","Italienisch" },
904{ "24:00","24:00" }, 904{ "24:00","24:00" },
905{ "12:00am","12:00am" }, 905{ "12:00am","12:00am" },
906{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 906{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
907{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 907{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
908{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 908{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
909{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 909{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
910{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 910{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
911{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 911{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
912{ "Used Mail Client","Benutzter Mail Client" }, 912{ "Used Mail Client","Benutzter Mail Client" },
913{ "Channel:","Channel:" }, 913{ "Channel:","Channel:" },
914{ "Message:","Message:" }, 914{ "Message:","Message:" },
915{ "Parameters:","Parameter:" }, 915{ "Parameters:","Parameter:" },
916{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 916{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
917{ "extra Message:","extra Message:" }, 917{ "extra Message:","extra Message:" },
918{ "extra Parameters:","extra Parameter:" }, 918{ "extra Parameters:","extra Parameter:" },
919{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 919{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
920{ "External Apps.","Externe Appl." }, 920{ "External Apps.","Externe Appl." },
921{ "24 hours","24 Std." }, 921{ "24 hours","24 Std." },
922{ "3 hours","3 Std." }, 922{ "3 hours","3 Std." },
923{ "1 hour","1 Std." }, 923{ "1 hour","1 Std." },
924{ "15 minutes","15 Min." }, 924{ "15 minutes","15 Min." },
925{ "5 minutes","5 Min." }, 925{ "5 minutes","5 Min." },
926{ "1 minute","1 Min." }, 926{ "1 minute","1 Min." },
927{ "23","23" }, 927{ "23","23" },
928{ "Mon 15","Mon 15" }, 928{ "Mon 15","Mon 15" },
929{ "Configure KO","Konfiguriere KO" }, 929{ "Configure KO","Konfiguriere KO" },
930{ "Event text","Termin Text" }, 930{ "Event text","Termin Text" },
931{ "ToDo","ToDo" }, 931{ "ToDo","ToDo" },
932{ "Today","Heute" }, 932{ "Today","Heute" },
933{ "What's Next View","What's Next Ansicht" }, 933{ "What's Next View","What's Next Ansicht" },
934{ "Show Sync Events in \nWhat's Next/Agenda view","Zeige Sync Termine in \nWhat's Next/Agenda view" }, 934{ "Show Sync Events in \nWhat's Next/Agenda view","Zeige Sync Termine in \nWhat's Next/Agenda view" },
935{ "Use short date in \nWhat's Next/Event view","Zeige Kurzdatum in \nWhat's Next/Event view" }, 935{ "Use short date in \nWhat's Next/Event view","Zeige Kurzdatum in \nWhat's Next/Event view" },
936{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, 936{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" },
937{ "Alarm","Alarm" }, 937{ "Alarm","Alarm" },
938{ "Used %1 Client","Benutzter %1 Client" }, 938{ "Used %1 Client","Benutzter %1 Client" },
939{ "No email client installed","Kein Email Klient installiert" }, 939{ "No email client installed","Kein Email Klient installiert" },
940{ "Userdefined email client","Benutzerdef. Email Klient" }, 940{ "Userdefined email client","Benutzerdef. Email Klient" },
941{ "OM/Pi email client","OM/Pi Email Klient" }, 941{ "OM/Pi email client","OM/Pi Email Klient" },
942{ "Include in multiple ","Beziehe in multiple " }, 942{ "Include in multiple ","Beziehe in multiple " },
943{ "calendar ","Kalender " }, 943{ "calendar ","Kalender " },
944{ "addressbook ","Adressbuch " }, 944{ "addressbook ","Adressbuch " },
945{ "pwmanager","PWmanager" }, 945{ "pwmanager","PWmanager" },
946{ " sync"," Sync ein" }, 946{ " sync"," Sync ein" },
947{ "Write back synced data","Schreibe gesyncte Daten zurück" }, 947{ "Write back synced data","Schreibe gesyncte Daten zurück" },
948{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" }, 948{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" },
949{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" }, 949{ "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" },
950{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, 950{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " },
951{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 951{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
952{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, 952{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" },
953{ "Help...","Hilfe..." }, 953{ "Help...","Hilfe..." },
954{ "Local file Cal:","Lokale Datei Kal:" }, 954{ "Local file Cal:","Lokale Datei Kal:" },
955{ "Local file ABook:","Lokale Datei ABuch:" }, 955{ "Local file ABook:","Lokale Datei ABuch:" },
956{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 956{ "Local file PWMgr:","Lokale Datei PWMgr:" },
957{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 957{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
958{ "Calendar:","Kalender:" }, 958{ "Calendar:","Kalender:" },
959{ "AddressBook:","AdressBuch:" }, 959{ "AddressBook:","AdressBuch:" },
960{ "PWManager:","PWManager:" }, 960{ "PWManager:","PWManager:" },
961{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 961{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
962{ "ssh/scp","ssh/scp" }, 962{ "ssh/scp","ssh/scp" },
963{ "ftp","ftp" }, 963{ "ftp","ftp" },
964{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, 964{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" },
965{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, 965{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" },
966{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, 966{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" },
967{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, 967{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" },
968{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, 968{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" },
969{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, 969{ "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" },
970{ "KDE-Pim sync config","KDE-Pim sync Konfig" }, 970{ "KDE-Pim sync config","KDE-Pim sync Konfig" },
971{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" }, 971{ "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" },
972{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Model\nautomatisch erkannt\nwerden kann)\nOder füge Model Name ein:\n" }, 972{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Model\nautomatisch erkannt\nwerden kann)\nOder füge Model Name ein:\n" },
973{ "Port number (Default: %1)","Port Nummer (Default: %1)" }, 973{ "Port number (Default: %1)","Port Nummer (Default: %1)" },
974{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, 974{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" },
975{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, 975{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" },
976{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, 976{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" },
977{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" }, 977{ "Enter port for Pi-Sync","Port Nummer für Pi-Sync" },
978{ "Disable Pi-Sync","Schalte Pi-Sync aus" }, 978{ "Disable Pi-Sync","Schalte Pi-Sync aus" },
979{ "Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!","Wollen Sie wirklich\nmit allen selektierten\nProfilen \"Multi-Syncen\"?\nDas Syncen dauert einige Zeit -\nalle Profile werden zweimal gesynct!" }, 979{ "Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!","Wollen Sie wirklich\nmit allen selektierten\nProfilen \"Multi-Syncen\"?\nDas Syncen dauert einige Zeit -\nalle Profile werden zweimal gesynct!" },
980{ "KDE-Pim Sync","KDE-Pim Sync" }, 980{ "KDE-Pim Sync","KDE-Pim Sync" },
981{ "Multiple profiles","Multi-Sync Profile" }, 981{ "Multiple profiles","Multi-Sync Profile" },
982{ "Device: ","Gerät: " }, 982{ "Device: ","Gerät: " },
983{ "Multiple sync started.","Multi-Sync gestartet." }, 983{ "Multiple sync started.","Multi-Sync gestartet." },
984{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" }, 984{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" },
985{ "Turn filter on","Schalte Filter an" }, 985{ "Turn filter on","Schalte Filter an" },
986{ "Turn filter off","Schalte Filter aus" }, 986{ "Turn filter off","Schalte Filter aus" },
987{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" }, 987{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" },
988{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" }, 988{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" },
989{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" }, 989{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" },
990{ "<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n","<p><b>Schwarz</b>: Termin/Todo mit Teilnehmern. Sie sind der Organisator!</p>\n" }, 990{ "<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n","<p><b>Schwarz</b>: Termin/Todo mit Teilnehmern. Sie sind der Organisator!</p>\n" },
991{ "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrün</b>: Information(Beschreibung) verfügbar.([i] in WN Ansicht)</p>\n" }, 991{ "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrün</b>: Information(Beschreibung) verfügbar.([i] in WN Ansicht)</p>\n" },
992{ "<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n","<p><b>Blau</b>: Wiederholender Termin.([r] in Whats'Next Ansicht)</p>\n" }, 992{ "<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n","<p><b>Blau</b>: Wiederholender Termin.([r] in Whats'Next Ansicht)</p>\n" },
993{ "<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n","<p><b>Rot</b>: Alarm gesetzt.([a] in Whats'Next Ansicht)</p>\n" }, 993{ "<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n","<p><b>Rot</b>: Alarm gesetzt.([a] in Whats'Next Ansicht)</p>\n" },
994{ "<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n","<p><b>Kreuz</b>: Eintrag gecancelt.([c] in Whats'Next Ansicht)</p>\n" }, 994{ "<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n","<p><b>Kreuz</b>: Eintrag gecancelt.([c] in Whats'Next Ansicht)</p>\n" },
995{ "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(für quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" }, 995{ "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(für quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" },
996{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" }, 996{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" },
997{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" }, 997{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" },
998{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" }, 998{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" },
999{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" }, 999{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" },
1000{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" }, 1000{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" },
1001{ "<p><b>shift+up/down</b>: Goto first/last item</p>\n","<p><b>shift+up/down</b>: Gehe zum ersten/letzten Eintrag</p>\n" }, 1001{ "<p><b>shift+up/down</b>: Goto first/last item</p>\n","<p><b>shift+up/down</b>: Gehe zum ersten/letzten Eintrag</p>\n" },
1002{ "<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n","<p><b>ctrl+up/down</b>: Gehe hoch/runter 20% aller Einträge</p>\n" }, 1002{ "<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n","<p><b>ctrl+up/down</b>: Gehe hoch/runter 20% aller Einträge</p>\n" },
1003{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" }, 1003{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" },
1004{ "<p><b>return+shift</b>: Deselect item+one step down</p>\n","<p><b>return+shift</b>: Deselektiere Item+Cursor einen Eintrag runter</p>\n" }, 1004{ "<p><b>return+shift</b>: Deselect item+one step down</p>\n","<p><b>return+shift</b>: Deselektiere Item+Cursor einen Eintrag runter</p>\n" },
1005{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" }, 1005{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" },
1006{ "<p><b>I</b>: Show info of current item+one step down.</p>\n","<p><b>I</b>: Zeige Detail-Ansicht vom sel.Eintrag+Cursor einen Eintrag runter.</p>\n" }, 1006{ "<p><b>I</b>: Show info of current item+one step down.</p>\n","<p><b>I</b>: Zeige Detail-Ansicht vom sel.Eintrag+Cursor einen Eintrag runter.</p>\n" },
1007{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" }, 1007{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" },
1008{ "<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n","<p><b>return+shift</b>: Markiere Todo als nicht erledigt+Cursor einen Eintrag runter</p>\n" }, 1008{ "<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n","<p><b>return+shift</b>: Markiere Todo als nicht erledigt+Cursor einen Eintrag runter</p>\n" },
1009{ "<p><b>return</b>: Mark item as completed+one step down.</p>\n","<p><b>return</b>: Markiere Todo als erledigt+Cursor einen Eintrag runter.</p>\n" }, 1009{ "<p><b>return</b>: Mark item as completed+one step down.</p>\n","<p><b>return</b>: Markiere Todo als erledigt+Cursor einen Eintrag runter.</p>\n" },
1010{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" }, 1010{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" },
1011{ "<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n","<p><b>shift+P</b>: Mache Todo zum neuen <b>P</b>arent Todo für das Todo, welches mit shift+Sselektiert wurde.</p>\n" }, 1011{ "<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n","<p><b>shift+P</b>: Mache Todo zum neuen <b>P</b>arent Todo für das Todo, welches mit shift+Sselektiert wurde.</p>\n" },
1012{ "<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n","<p><b>shift+S</b>: Mache Todo zum <b>S</b>ubtodo</p>\n" }, 1012{ "<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n","<p><b>shift+S</b>: Mache Todo zum <b>S</b>ubtodo</p>\n" },
1013{ "<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n","<p><b>shift+U</b>: <b>U</b>nparent Todo (Mache Sub-Todo zum Toplevel Todo)</p>\n" }, 1013{ "<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n","<p><b>shift+U</b>: <b>U</b>nparent Todo (Mache Sub-Todo zum Toplevel Todo)</p>\n" },
1014{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" }, 1014{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" },
1015{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" }, 1015{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" },
1016{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" }, 1016{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" },
1017{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" }, 1017{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" },
1018{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" }, 1018{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" },
1019{ "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" }, 1019{ "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" },
1020{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: Nächste Woche | <b>right+ctrl</b>: Nächste Woche</p>\n" }, 1020{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: Nächste Woche | <b>right+ctrl</b>: Nächste Woche</p>\n" },
1021{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" }, 1021{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" },
1022{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" }, 1022{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" },
1023{ "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda Höhe</p>\n" }, 1023{ "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda Höhe</p>\n" },
1024{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X</b>: Zeige/verstecke Datumsnavigator</p>\n" }, 1024{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X</b>: Zeige/verstecke Datumsnavigator</p>\n" },
1025{ "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" }, 1025{ "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" },
1026{ "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" }, 1026{ "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" },
1027{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" }, 1027{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" },
1028{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" }, 1028{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" },
1029{ "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" }, 1029{ "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" },
1030{ "<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ","<p><b>N</b>: Nächste-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " }, 1030{ "<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ","<p><b>N</b>: Nächste-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " },
1031{ "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" }, 1031{ "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" },
1032{ "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" }, 1032{ "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" },
1033{ "<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n","<p><b>F</b>: Zeige/verstecke Filter Ansicht |<b>F+ctrl</b>: Editiere Filter </p>\n" }, 1033{ "<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n","<p><b>F</b>: Zeige/verstecke Filter Ansicht |<b>F+ctrl</b>: Editiere Filter </p>\n" },
1034{ "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" }, 1034{ "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" },
1035{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) für selektiertes Item</p>\n" }, 1035{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) für selektiertes Item</p>\n" },
1036{ "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" }, 1036{ "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" },
1037{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" }, 1037{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" },
1038{ "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas geändert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgründen wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\nÄnderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie können eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" }, 1038{ "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas geändert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgründen wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\nÄnderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie können eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" },
1039{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" }, 1039{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" },
1040{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" }, 1040{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" },
1041{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" }, 1041{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" },
1042{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" }, 1042{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" },
1043{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfür den Zaurus ist verfügbar\nals zusätzliche Anwendung\n" }, 1043{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfür den Zaurus ist verfügbar\nals zusätzliche Anwendung\n" },
1044{ "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann möglicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterstützt.\n" }, 1044{ "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann möglicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterstützt.\n" },
1045{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" }, 1045{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" },
1046{ "KO/Pi FAQ","KO/Pi FAQ" }, 1046{ "KO/Pi FAQ","KO/Pi FAQ" },
1047{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" }, 1047{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" },
1048{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" }, 1048{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" },
1049{ "About KOrganizer/Pi","Über KOrganizer/Pi" }, 1049{ "About KOrganizer/Pi","Über KOrganizer/Pi" },
1050{ "From: ","Von: " }, 1050{ "From: ","Von: " },
1051{ "Remove sync info","Entferne Sync Info" }, 1051{ "Remove sync info","Entferne Sync Info" },
1052{ "For all profiles","Für alle Profile" }, 1052{ "For all profiles","Für alle Profile" },
1053{ "Hide not Running","Verstecke nicht Laufende" }, 1053{ "Hide not Running","Verstecke nicht Laufende" },
1054{ "ME","ME" }, 1054{ "ME","ME" },
1055{ "Toolbar","Toolbar" }, 1055{ "Toolbar","Toolbar" },
1056{ "Undo Delete...","Löschen rückgängig machen..." }, 1056{ "Undo Delete...","Löschen rückgängig machen..." },
1057{ "Undo Delete","Löschen rückgängig machen" }, 1057{ "Undo Delete","Löschen rückgängig machen" },
1058{ "KDE Sync HowTo...","KDE Sync HowTo..." }, 1058{ "KDE Sync HowTo...","KDE Sync HowTo..." },
1059{ "Multi Sync HowTo...","Multi Sync HowTo..." }, 1059{ "Multi Sync HowTo...","Multi Sync HowTo..." },
1060{ "Januar","Januar" }, 1060{ "Januar","Januar" },
1061{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" }, 1061{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" },
1062{ "No Filter","Kein Filter" }, 1062{ "No Filter","Kein Filter" },
1063{ "Multiple Sync options","Multi Sync Optionen" }, 1063{ "Multiple Sync options","Multi Sync Optionen" },
1064{ "Sync algo options","Sync Ablauf Optionen" }, 1064{ "Sync algo options","Sync Ablauf Optionen" },
1065{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 1065{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
1066{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 1066{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
1067{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 1067{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
1068{ "Write back options","Optionen zum Zurückschreiben" }, 1068{ "Write back options","Optionen zum Zurückschreiben" },
1069{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 1069{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
1070{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 1070{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
1071{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 1071{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
1072{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 1072{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
1073{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 1073{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
1074{ "Time period","Zeitspanne" }, 1074{ "Time period","Zeitspanne" },
1075{ "From ","Von " }, 1075{ "From ","Von " },
1076{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 1076{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
1077{ " weeks in the future "," Wochen in der Zukunft " }, 1077{ " weeks in the future "," Wochen in der Zukunft " },
1078{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 1078{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
1079{ "Local temp file:","Lokale temp Datei:" }, 1079{ "Local temp file:","Lokale temp Datei:" },
1080{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 1080{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
1081{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 1081{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
1082{ "Language","Sprache" }, 1082{ "Language","Sprache" },
1083{ "Time Format","Zeit Format" }, 1083{ "Time Format","Zeit Format" },
1084{ "Time Zone","Zeit Zone" }, 1084{ "Time Zone","Zeit Zone" },
1085{ "%1 groups subscribed","%1 Guppen abboniert" }, 1085{ "%1 groups subscribed","%1 Guppen abboniert" },
1086{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, 1086{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
1087{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 1087{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
1088{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 1088{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
1089{ "Save settings","Speichere Einstellungen" }, 1089{ "Save settings","Speichere Einstellungen" },
1090{ "Save standard","Speichere Standard" }, 1090{ "Save standard","Speichere Standard" },
1091{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 1091{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
1092{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 1092{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
1093{ "Data storage path","Daten Speicherpfad" }, 1093{ "Data storage path","Daten Speicherpfad" },
1094{ "Language","Sprache" }, 1094{ "Language","Sprache" },
1095{ "Show time in agenda items","Zeige Zeit in Agenda Items" }, 1095{ "Show time in agenda items","Zeige Zeit in Agenda Items" },
1096{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" }, 1096{ "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" },
1097{ "Show events, that are done in \nWhat's Next view","Zeige abgelaufene Termine in\nWhat's Next Ansicht" }, 1097{ "Show events, that are done in \nWhat's Next view","Zeige abgelaufene Termine in\nWhat's Next Ansicht" },
1098{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" }, 1098{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" },
1099{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 1099{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
1100{ "KO/Pi","KO/Pi" }, 1100{ "KO/Pi","KO/Pi" },
1101{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" }, 1101{ "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" },
1102{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." }, 1102{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." },
1103{ "Sound.Al.: ","Sound.Al.: " }, 1103{ "Sound.Al.: ","Sound.Al.: " },
1104{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" }, 1104{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" },
1105{ "Restore","Wiederherstellen" }, 1105{ "Restore","Wiederherstellen" },
1106{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklicht\nwiederherstellen?" }, 1106{ "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklicht\nwiederherstellen?" },
1107{ "% completed","% erledigt" }, 1107{ "% completed","% erledigt" },
1108{ "%d item(s) found.","%d Item(s) gefunden." }, 1108{ "%d item(s) found.","%d Item(s) gefunden." },
1109{ "Set complete","Setze auf erledigt" }, 1109{ "Set complete","Setze auf erledigt" },
1110{ "(cancelled)","(gecancelt)" }, 1110{ "(cancelled)","(gecancelt)" },
1111{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" }, 1111{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" },
1112{ " Local time "," Locale Zeit " }, 1112{ " Local time "," Locale Zeit " },
1113{ "Form2","Form2" }, 1113{ "Form2","Form2" },
1114{ "Filter enabled","Filter angeschaltet" }, 1114{ "Filter enabled","Filter angeschaltet" },
1115{ "Edit Filters","Ändere Filter" }, 1115{ "Edit Filters","Ändere Filter" },
1116{ "Print What's Next View...","Drucke What's Next Ansicht..." }, 1116{ "Print What's Next View...","Drucke What's Next Ansicht..." },
1117{ "Agenda","Agenda" }, 1117{ "Agenda","Agenda" },
1118{ " ("," (" }, 1118{ " ("," (" },
1119{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" }, 1119{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" },
1120{ "Print","Print" }, 1120{ "Print","Print" },
1121{ "&Setup Printer...","Drucker &Setup..." }, 1121{ "&Setup Printer...","Drucker &Setup..." },
1122{ "View Type","Zeige Typ" }, 1122{ "View Type","Zeige Typ" },
1123{ "Page &orientation:","Seiten Ausrichtung:" }, 1123{ "Page &orientation:","Seiten Ausrichtung:" },
1124{ "Use Default of Selected Style","Default des selektierten Stils" }, 1124{ "Use Default of Selected Style","Default des selektierten Stils" },
1125{ "Use Default Setting of Printer","Default Einstellung des Druckers" }, 1125{ "Use Default Setting of Printer","Default Einstellung des Druckers" },
1126{ "Portrait","Portrait" }, 1126{ "Portrait","Portrait" },
1127{ "Landscape","Landschaft" }, 1127{ "Landscape","Landschaft" },
1128{ "Print day","Drucke Tag" }, 1128{ "Print day","Drucke Tag" },
1129{ "CalPrintDay_Base","CalPrintDay_Base" }, 1129{ "CalPrintDay_Base","CalPrintDay_Base" },
1130{ "Date && Time Range","Datum && Zeitspanne" }, 1130{ "Date && Time Range","Datum && Zeitspanne" },
1131{ "&End date:","&Enddatum:" }, 1131{ "&End date:","&Enddatum:" },
1132{ "&Start date:","&Startdatum:" }, 1132{ "&Start date:","&Startdatum:" },
1133{ "Start &time:","Startzeit:" }, 1133{ "Start &time:","Startzeit:" },
1134{ "End ti&me:","Endzeit:" }, 1134{ "End ti&me:","Endzeit:" },
1135{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, 1135{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" },
1136{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, 1136{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" },
1137{ "Alt+D","Alt+D" }, 1137{ "Alt+D","Alt+D" },
1138{ "&Use colors","Nutze Farben" }, 1138{ "&Use colors","Nutze Farben" },
1139{ "Alt+U","Alt+U" }, 1139{ "Alt+U","Alt+U" },
1140{ "Print week","Drucke Woche" }, 1140{ "Print week","Drucke Woche" },
1141{ "CalPrintWeek_Base","CalPrintWeek_Base" }, 1141{ "CalPrintWeek_Base","CalPrintWeek_Base" },
1142{ "Use &colors","Nutze Farben" }, 1142{ "Use &colors","Nutze Farben" },
1143{ "Type of View","Typ der Ansicht" }, 1143{ "Type of View","Typ der Ansicht" },
1144{ "Print as &Filofax page","Drucke als &Filofax Seite" }, 1144{ "Print as &Filofax page","Drucke als &Filofax Seite" },
1145{ "Alt+F","Alt+F" }, 1145{ "Alt+F","Alt+F" },
1146{ "Print as &timetable view:","Drucke als Zeittabelle:" }, 1146{ "Print as &timetable view:","Drucke als Zeittabelle:" },
1147{ "Alt+T","Alt+T" }, 1147{ "Alt+T","Alt+T" },
1148{ "Print as split week view","Drucke als gesplittete Wochenansicht" }, 1148{ "Print as split week view","Drucke als gesplittete Wochenansicht" },
1149{ "Print month","Drucke Monat" }, 1149{ "Print month","Drucke Monat" },
1150{ "CalPrintMonth_Base","CalPrintMonth_Base" }, 1150{ "CalPrintMonth_Base","CalPrintMonth_Base" },
1151{ "&Start month:","&Startmonat:" }, 1151{ "&Start month:","&Startmonat:" },
1152{ "&End month:","&Endmonat:" }, 1152{ "&End month:","&Endmonat:" },
1153{ "Print week &numbers","Drucke Wochen Nummer(n)" }, 1153{ "Print week &numbers","Drucke Wochen Nummer(n)" },
1154{ "Print todos","Drucke Todos" }, 1154{ "Print todos","Drucke Todos" },
1155{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, 1155{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" },
1156{ "Include &description of the item","Inclusive Itembeschreibung" }, 1156{ "Include &description of the item","Inclusive Itembeschreibung" },
1157{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, 1157{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" },
1158{ "Include &priority of the item","Inclusive Priorität des Items" }, 1158{ "Include &priority of the item","Inclusive Priorität des Items" },
1159{ "Items to Print","Zu druckende Items" }, 1159{ "Items to Print","Zu druckende Items" },
1160{ "&From:","Von:" }, 1160{ "&From:","Von:" },
1161{ "&To:","Bis:" }, 1161{ "&To:","Bis:" },
1162{ "Print &all todo items","Drucke alle Todo Items" }, 1162{ "Print &all todo items","Drucke alle Todo Items" },
1163{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, 1163{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" },
1164{ "Only items due in the &range:","Nur Items in dem Zeitraum:" }, 1164{ "Only items due in the &range:","Nur Items in dem Zeitraum:" },
1165{ "Todo List","Todo Liste" }, 1165{ "Todo List","Todo Liste" },
1166{ "&Title:","&Titel:" }, 1166{ "&Title:","&Titel:" },
1167{ "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" }, 1167{ "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" },
1168{ "Todo list","Todo Liste" }, 1168{ "Todo list","Todo Liste" },
1169{ "&Print...","Drucke..." }, 1169{ "&Print...","Drucke..." },
1170{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, 1170{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" },
1171{ "[Unconfigured]","[Unkonfiguriert]" }, 1171{ "[Unconfigured]","[Unkonfiguriert]" },
1172{ "OK","OK" }, 1172{ "OK","OK" },
1173{ "FilterEditor","FilterEditor" }, 1173{ "FilterEditor","FilterEditor" },
1174{ "Include","Inclusive" }, 1174{ "Include","Inclusive" },
1175{ "Exclude","Exclusive" }, 1175{ "Exclude","Exclusive" },
1176{ "Edit Selection...","Editiere Auswahl" }, 1176{ "Edit Selection...","Editiere Auswahl" },
1177{ "recurring events","wiederholende Termine" }, 1177{ "recurring events","wiederholende Termine" },
1178{ "recurr. events","wiederh.Termine" }, 1178{ "recurr. events","wiederh.Termine" },
1179{ "completed to-dos","erledigte Todos" }, 1179{ "completed to-dos","erledigte Todos" },
1180{ "events","Termine" }, 1180{ "events","Termine" },
1181{ "todos","Todos" }, 1181{ "todos","Todos" },
1182{ "journals","Journale" }, 1182{ "journals","Journale" },
1183{ "public","öffentl." }, 1183{ "public","öffentl." },
1184{ "private","privat" }, 1184{ "private","privat" },
1185{ "confidential","vertraul." }, 1185{ "confidential","vertraul." },
1186{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" }, 1186{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" },
1187{ "Yesterday","Gestern" }, 1187{ "Yesterday","Gestern" },
1188{ "Day after tomorrow","Übermorgen" }, 1188{ "Day after tomorrow","Übermorgen" },
1189{ "Tomorrow","Morgen" }, 1189{ "Tomorrow","Morgen" },
1190{ "Day before yesterday","Vorgestern" }, 1190{ "Day before yesterday","Vorgestern" },
1191{ "Size %1","Größe %1" }, 1191{ "Size %1","Größe %1" },
1192{ "New Agendasize: %1","Neue Agendagröße: %1" }, 1192{ "New Agendasize: %1","Neue Agendagröße: %1" },
1193{ " (%1 y.)"," (%1 J.)" }, 1193{ " (%1 y.)"," (%1 J.)" },
1194{ "Allday:","Ganztägig:" }, 1194{ "Allday:","Ganztägig:" },
1195{ "compl.todos","erled.Todos" }, 1195{ "compl.todos","erled.Todos" },
1196{ "Day view","Tagesansicht" }, 1196{ "Day view","Tagesansicht" },
1197{ "Next days","Nächste Tage" }, 1197{ "Next days","Nächste Tage" },
1198{ "Next week","Nächste Woche" }, 1198{ "Next week","Nächste Woche" },
1199{ "Next two weeks","Nächste zwei Wochen" }, 1199{ "Next two weeks","Nächste zwei Wochen" },
1200{ "Next month","Nächster Monat" }, 1200{ "Next month","Nächster Monat" },
1201{ "Journal view","Journal" }, 1201{ "Journal view","Journal" },
1202{ "Display all opened","Zeige alle geöffnet" }, 1202{ "Display all opened","Zeige alle geöffnet" },
1203{ "Display all closed","Zeige alle geschlossen" }, 1203{ "Display all closed","Zeige alle geschlossen" },
1204{ "Display all flat","Zeige alle flach" }, 1204{ "Display all flat","Zeige alle flach" },
1205{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" }, 1205{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" },
1206{ "Default todo done color:","Standard Todo erledigt Farbe" }, 1206{ "Default todo done color:","Standard Todo erledigt Farbe" },
1207{ "Select week %1-%2","Wähle Woche %1-%2" }, 1207{ "Select week %1-%2","Wähle Woche %1-%2" },
1208{ "Select Week","Wähle Woche" }, 1208{ "Select Week","Wähle Woche" },
1209{ "Set alarm for selected...","Setze Alarm für Selekt..." }, 1209{ "Set alarm for selected...","Setze Alarm für Selekt..." },
1210{ "Set Alarm!","Setze Alarm!" }, 1210{ "Set Alarm!","Setze Alarm!" },
1211{ "Canged alarm for %1 items","Alarm für %1 Items geändert" }, 1211{ "Canged alarm for %1 items","Alarm für %1 Items geändert" },
1212{ " and "," und " }, 1212{ " and "," und " },
1213{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" }, 1213{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" },
1214{ "Mail to selected","Mail an Ausgewählte" }, 1214{ "Mail to selected","Mail an Ausgewählte" },
1215{ "Mail to all","Mail an Alle" }, 1215{ "Mail to all","Mail an Alle" },
1216{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" }, 1216{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" },
1217{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" }, 1217{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" },
1218{ " on"," am" }, 1218{ " on"," am" },
1219{ " completed on "," erledigt am " }, 1219{ " completed on "," erledigt am " },
1220{ "Save as Event template","Speichere als Vorlage" }, 1220{ "Save as Event template","Speichere als Vorlage" },
1221{ "Load Event template","Lade Termin Vorlage" }, 1221{ "Load Event template","Lade Termin Vorlage" },
1222{ "Save as Journal template","Speichere als Journal Vorlage" }, 1222{ "Save as Journal template","Speichere als Journal Vorlage" },
1223{ "Insert Journal template","Füge Journal Vorlage ein" }, 1223{ "Insert Journal template","Füge Journal Vorlage ein" },
1224{ "Sub todos:<br>","Unter Todos:<br>" }, 1224{ "Sub todos:<br>","Unter Todos:<br>" },
1225{ "Parent todo:<br>","Über Todo:<br>" }, 1225{ "Parent todo:<br>","Über Todo:<br>" },
1226{ "Set current as color category","Setze Gewählte als Farbkategorie" }, 1226{ "Set current as color category","Setze Gewählte als Farbkategorie" },
1227{ " completed"," erledigt" }, 1227{ " completed"," erledigt" },
1228{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" }, 1228{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" },
1229{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, 1229{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
1230{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, 1230{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
1231{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, 1231{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
1232{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" }, 1232{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" },
1233{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, 1233{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
1234{ "Error","Fehler" }, 1234{ "Error","Fehler" },
1235{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, 1235{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." },
1236{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, 1236{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
1237{ "Warning","Warnung" }, 1237{ "Warning","Warnung" },
1238{ "Select week number","Wähle Wochen Nummer" }, 1238{ "Select week number","Wähle Wochen Nummer" },
1239{ "Februar","Februar" }, 1239{ "Februar","Februar" },
1240{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" }, 1240{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" },
1241{ "W","W" }, 1241{ "W","W" },
1242{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" }, 1242{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" },
1243{ "T: %1","T: %1" }, 1243{ "T: %1","T: %1" },
1244{ "Start: ","Start: " }, 1244{ "Start: ","Start: " },
1245{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, 1245{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " },
1246{ "Password for remote access:","Passwort für fernen Zugriff:" }, 1246{ "Password for remote access:","Passwort für fernen Zugriff:" },
1247{ "Remote IP address:","Ferne IP Adresse:" }, 1247{ "Remote IP address:","Ferne IP Adresse:" },
1248{ "Remote port number:","Ferne Port Nummer:" }, 1248{ "Remote port number:","Ferne Port Nummer:" },
1249{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, 1249{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
1250{ "Remote from: ","Fern von: " }, 1250{ "Remote from: ","Fern von: " },
1251{ "Local from: ","Lokal von: " }, 1251{ "Local from: ","Lokal von: " },
1252{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" }, 1252{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" },
1253{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, 1253{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" },
1254{ "Write back","Schreibe zurück" }, 1254{ "Write back","Schreibe zurück" },
1255{ "KO/Pi Synchronization","KO/Pi Synchronisation" }, 1255{ "KO/Pi Synchronization","KO/Pi Synchronisation" },
1256{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, 1256{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
1257{ "Received sync request","Sync Anfrage erhalten" }, 1257{ "Received sync request","Sync Anfrage erhalten" },
1258{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." }, 1258{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." },
1259{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, 1259{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
1260{ "Data saved to temp file!","Daten in temp Datei gespeichert!" }, 1260{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
1261{ "Sending file...","Sende Datei..." }, 1261{ "Sending file...","Sende Datei..." },
1262{ "Waiting for synced file...","Warte auf gesyncte Daten..." }, 1262{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
1263{ "Receiving synced file...","Gesyncte Daten erhalten..." }, 1263{ "Receiving synced file...","Gesyncte Daten erhalten..." },
1264{ "Received %1 bytes","%1 Bytes erhalten" }, 1264{ "Received %1 bytes","%1 Bytes erhalten" },
1265{ "Writing file to disk...","Speichere Datei..." }, 1265{ "Writing file to disk...","Speichere Datei..." },
1266{ "Pi-Sync successful!","Pi-Sync erfolgreich!" }, 1266{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
1267{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, 1267{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" },
1268{ "Synchronize!","Synchronisiere!" }, 1268{ "Synchronize!","Synchronisiere!" },
1269{ "High clock skew!","Großer Uhrzeitunterschied!" }, 1269{ "High clock skew!","Großer Uhrzeitunterschied!" },
1270{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, 1270{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
1271{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" }, 1271{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" },
1272{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." }, 1272{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." },
1273{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" }, 1273{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" },
1274{ "List week view","Listenwochenansicht" }, 1274{ "List week view","Listenwochenansicht" },
1275{ "List week","Listenwochenansicht" }, 1275{ "List week","Listenwochenansicht" },
1276{ "Next Week","Nächste Woche" }, 1276{ "Next Week","Nächste Woche" },
1277{ "Previous Week","Vorherige Woche" }, 1277{ "Previous Week","Vorherige Woche" },
1278{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." }, 1278{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." },
1279{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" }, 1279{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" },
1280{ "Details","Details" }, 1280{ "Details","Details" },
1281{ "Created time","Erstellt Zeit" }, 1281{ "Created time","Erstellt Zeit" },
1282{ "Last modified time","Geändert Zeit" }, 1282{ "Last modified time","Geändert Zeit" },
1283{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" }, 1283{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" },
1284{ "View Options","Anzeige Optionen" }, 1284{ "View Options","Anzeige Optionen" },
1285{ "<b>Created: ","<b>Erstellt am: " }, 1285{ "<b>Created: ","<b>Erstellt am: " },
1286{ "<b>Last modified: ","<b>Zuletzt geändert am: " }, 1286{ "<b>Last modified: ","<b>Zuletzt geändert am: " },
1287{ "Journal: ","Journal: " }, 1287{ "Journal: ","Journal: " },
1288{ "yearly","jährlich" }, 1288{ "yearly","jährlich" },
1289{ "(%1) ","%1-" }, 1289{ "(%1) ","%1-" },
1290{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" }, 1290{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" },
1291{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" }, 1291{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" },
1292{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" }, 1292{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" },
1293{ "Summary/Loc.","Titel/Ort" }, 1293{ "Summary/Loc.","Titel/Ort" },
1294{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." }, 1294{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." },
1295{ "Week Number","Wochennummer" }, 1295{ "Week Number","Wochennummer" },
1296{ "Import","Importiere" }, 1296{ "Import","Importiere" },
1297{ "Export","Exportiere" }, 1297{ "Export","Exportiere" },
1298{ "Beam","Beame" }, 1298{ "Beam","Beame" },
1299{ "Export selected","Exportiere Selektierte" }, 1299{ "Export selected","Exportiere Selektierte" },
1300{ "As iCal (ics) file...","Als iCal (ics) Datei..." }, 1300{ "As iCal (ics) file...","Als iCal (ics) Datei..." },
1301{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." }, 1301{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." },
1302{ "Journal/Details...","Journale/Details..." }, 1302{ "Journal/Details...","Journale/Details..." },
1303{ "Agenda View","Agenda Ansicht" }, 1303{ "Agenda View","Agenda Ansicht" },
1304{ "Show current time","Zeige aktuelle Zeit" }, 1304{ "Show current time","Zeige aktuelle Zeit" },
1305{ "Edit new item","Bearbeite neuen Eintrag" }, 1305{ "Edit new item","Bearbeite neuen Eintrag" },
1306{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" }, 1306{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" },
1307{ "There is no next alarm.","Es gibt keinen nächsten Alarm." },
1308{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" },
1309{ "The next alarm is on:\n%1\nat: %2\n\n%3\n(%4)","Der nächste Alarm in am:\n%1\num: %2\n\n%3\n(%4)" },
1307{ "","" }, 1310{ "","" },
1308{ "","" }, 1311{ "","" },
1309{ "","" }, 1312{ "","" },
1310{ "","" }, 1313{ "","" },
1311{ "","" }, 1314{ "","" },
1312{ "","" }, 1315{ "","" },
1313{ "","" }, 1316 \ No newline at end of file
diff --git a/kalarmd/alarmdialog.cpp b/kalarmd/alarmdialog.cpp
index c939ae0..7ead3b9 100644
--- a/kalarmd/alarmdialog.cpp
+++ b/kalarmd/alarmdialog.cpp
@@ -1,280 +1,312 @@
1/* 1/*
2 This file is part of the KDE alarm daemon. 2 This file is part of the KDE alarm daemon.
3 Copyright (c) 2000 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000 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// $Id$ 24// $Id$
25 25
26#include <qhbox.h> 26#include <qhbox.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qapp.h> 28#include <qapp.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qlayout.h> 30#include <qlayout.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qtimer.h> 32#include <qtimer.h>
33#include <qsound.h> 33#include <qsound.h>
34#include <qpushbutton.h> 34#include <qpushbutton.h>
35#define protected public 35#define protected public
36#include <qspinbox.h> 36#include <qspinbox.h>
37#undef protected 37#undef protected
38#include <stdlib.h> 38#include <stdlib.h>
39#ifndef _WIN32_ 39#ifndef _WIN32_
40#include <unistd.h> 40#include <unistd.h>
41#include <sys/ioctl.h> 41#include <sys/ioctl.h>
42#endif 42#endif
43#include <stdio.h> 43#include <stdio.h>
44#include <fcntl.h> 44#include <fcntl.h>
45 45
46#ifndef DESKTOP_VERSION 46#ifndef DESKTOP_VERSION
47#include <qtopia/alarmserver.h> 47#include <qtopia/alarmserver.h>
48#include <qpe/resource.h> 48#include <qpe/resource.h>
49#include <qtopia/sound.h> 49#include <qtopia/sound.h>
50
50#endif 51#endif
51 52
52#include "alarmdialog.h" 53#include "alarmdialog.h"
53 54
54 55
55AlarmDialog::AlarmDialog(QWidget *parent,const char *name) 56AlarmDialog::AlarmDialog(QWidget *parent,const char *name)
56 : QDialog (parent, name, true, Qt::WStyle_StaysOnTop ) 57 : QDialog (parent, name, true, Qt::WStyle_StaysOnTop )
57{ 58{
58 setCaption( "KO/Pi Alarm!" ); 59 setCaption( "KO/Pi Alarm!" );
59 QVBoxLayout* layout = new QVBoxLayout( this); 60 QVBoxLayout* layout = new QVBoxLayout( this);
60 QLabel* l = new QLabel("The following event triggered alarm:",this); 61 QLabel* l = new QLabel("The following event triggered alarm:",this);
61 layout->addWidget ( l ); 62 layout->addWidget ( l );
62 l->setAlignment( AlignCenter); 63 l->setAlignment( AlignCenter);
63 mMessage = new QLabel ( " ", this ); 64 mMessage = new QLabel ( " ", this );
64 int fs = 18; 65 int fs = 18;
65 int fs2 = 12; 66 int fs2 = 12;
66 if ( QApplication::desktop()->width() < 480 ) { 67 if ( QApplication::desktop()->width() < 480 ) {
67 setMaximumSize(220, 260); 68 setMaximumSize(220, 260);
68 fs2 = 10; 69 fs2 = 10;
69 } 70 }
70 else { 71 else {
71 setMaximumSize(440, 440); 72 setMaximumSize(440, 440);
72 } 73 }
73 layout->setSpacing( 3 ); 74 layout->setSpacing( 3 );
74 layout->setMargin( 3 ); 75 layout->setMargin( 3 );
75 QFont fo = QApplication::font(); 76 QFont fo = QApplication::font();
76 fo.setBold( true ); 77 fo.setBold( true );
77 fo.setPointSize( fs2 ); 78 fo.setPointSize( fs2 );
78 l->setFont( fo ); 79 l->setFont( fo );
79 fo.setPointSize( fs ); 80 fo.setPointSize( fs );
80 mMessage->setFont(fo ); 81 mMessage->setFont(fo );
81 mMessage->setAlignment( AlignCenter); 82 mMessage->setAlignment( AlignCenter);
82 layout->addWidget ( mMessage ); 83 layout->addWidget ( mMessage );
83 mMissedAlarms= new QLabel ( "(No missed Alarms)", this ); 84 mMissedAlarms= new QLabel ( "(No missed Alarms)", this );
84 mMissedAlarms->setAlignment( AlignCenter); 85 mMissedAlarms->setAlignment( AlignCenter);
85 86
86 playSoundTimer = new QTimer( this ); 87 playSoundTimer = new QTimer( this );
87 connect ( playSoundTimer, SIGNAL( timeout() ), this, SLOT (playSound() ) ); 88 connect ( playSoundTimer, SIGNAL( timeout() ), this, SLOT (playSound() ) );
88 89
89 playSoundTimer->stop(); 90 playSoundTimer->stop();
90 91
91 layout->addWidget ( mMissedAlarms ); 92 layout->addWidget ( mMissedAlarms );
92 mMissedAlarmsCombo = new QComboBox ( this ); 93 mMissedAlarmsCombo = new QComboBox ( this );
93 layout->addWidget ( mMissedAlarmsCombo ); 94 layout->addWidget ( mMissedAlarmsCombo );
94 QVBox *suspendBox = new QVBox( this ); 95
95 suspendBox->setSpacing(3); 96 QLabel* labb = new QLabel("Suspend duration (minutes):",this);
96 layout->addWidget ( suspendBox );
97 QLabel* labb = new QLabel("Suspend duration (minutes):",suspendBox);
98 labb->setAlignment(AlignCenter); 97 labb->setAlignment(AlignCenter);
98 layout->addWidget ( labb );
99 fo = font(); 99 fo = font();
100 fo.setPointSize( 36 ); 100 int pointSize = 36;
101 mSuspendSpin = new QSpinBox(1,1440,1,suspendBox); 101 if ( QApplication::desktop()->width() <= 320 )
102 pointSize = 24;
103 fo.setPointSize( pointSize );
104 mSuspendSpin = new QSpinBox(1,1440,1,this);
102 mSuspendSpin->setFont( fo ); 105 mSuspendSpin->setFont( fo );
103 mSuspendSpin->setValue(7); // default suspend duration 106 mSuspendSpin->setValue(7); // default suspend duration
104 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); 107 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus );
105 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); 108 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus );
106#if QT_VERSION < 0x030000 109#if QT_VERSION < 0x030000
107 mSuspendSpin->upButton ()->setFixedSize( QSize( 48, 30 )); 110 mSuspendSpin->upButton ()->setFixedSize( QSize( 48, 30 ));
108 mSuspendSpin->downButton ()->setFixedSize( QSize( 48, 30 )); 111 mSuspendSpin->downButton ()->setFixedSize( QSize( 48, 30 ));
109#endif 112#endif
110 mSuspendSpin->setFixedSize( 100,62 ); 113 mSuspendSpin->setFixedSize( 100,62 );
111 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); 114 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus );
115 QHBoxLayout* layoutSpin = new QHBoxLayout( layout );
116 layoutSpin->addStretch ();
117 layoutSpin->addWidget ( mSuspendSpin );
118 layoutSpin->addStretch ();
112 119
113 QVBox * bbox = new QVBox ( this ); 120 QVBox * bbox = new QVBox ( this );
114 layout->addWidget ( bbox ); 121 layout->addWidget ( bbox );
115 bbox->layout()->setSpacing( 2 ); 122 bbox->layout()->setSpacing( 2 );
123 labb = new QLabel("Press \"Cancel\" or \"Esc\" to suspend!",bbox);
124 labb->setAlignment(AlignCenter);
116 mSuspendButton = new QPushButton( "Suspend", bbox); 125 mSuspendButton = new QPushButton( "Suspend", bbox);
117 QPushButton* silen = new QPushButton( " Stop sound ", bbox); 126 QPushButton* silen = new QPushButton( " Stop sound ", bbox);
118 QPushButton* okbut = new QPushButton( "Ok", bbox); 127 QPushButton* okbut = new QPushButton( "Ok", bbox);
119 mSuspendButton->setFont( fo ); 128 mSuspendButton->setFont( fo );
120 silen->setFont( fo ); 129 silen->setFont( fo );
121 okbut->setFont( fo ); 130 okbut->setFont( fo );
122 okbut->setDefault( true ); 131 okbut->setDefault( true );
123 connect (silen , SIGNAL( clicked() ), this, SLOT (silent() ) ); 132 connect (silen , SIGNAL( clicked() ), this, SLOT (silent() ) );
124 connect (mSuspendButton, SIGNAL( clicked() ), this, SLOT (slotSuspend() ) ); 133 connect (mSuspendButton, SIGNAL( clicked() ), this, SLOT (slotSuspend() ) );
125 connect (okbut , SIGNAL( clicked() ), this, SLOT (slotOk() ) ); 134 connect (okbut , SIGNAL( clicked() ), this, SLOT (slotOk() ) );
126#ifndef _WIN32_ 135#ifndef _WIN32_
127 if ( QFile::exists ( "/dev/sharp_led" ) ) 136 if ( QFile::exists ( "/dev/sharp_led" ) )
128 fd_led = open ( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); 137 fd_led = open ( "/dev/sharp_led", O_RDWR|O_NONBLOCK );
129 else 138 else
130#endif 139#endif
131 fd_led = 0; 140 fd_led = 0;
132 statusLED.which = SHARP_LED_SALARM; 141 statusLED.which = SHARP_LED_SALARM;
133 mSilent = false; 142 mSilent = false;
134 mSuspendCounter = 0; 143 mSuspendCounter = 0;
135 setServerNotification( true ); 144 setServerNotification( true );
136} 145}
137void AlarmDialog::reject () 146void AlarmDialog::reject ()
138{ 147{
139 QTimer::singleShot ( 3000, this, SLOT (suspend()) ); 148 QTimer::singleShot ( 3000, this, SLOT (suspend()) );
140 slotSuspend(); 149 slotSuspend();
141} 150}
142AlarmDialog::~AlarmDialog() 151AlarmDialog::~AlarmDialog()
143{ 152{
144} 153}
145void AlarmDialog::silent () 154void AlarmDialog::silent ()
146{ 155{
147 mSilent = true; 156 mSilent = true;
148} 157}
149void AlarmDialog::accept() 158void AlarmDialog::accept()
150{ 159{
151 slotOk(); 160 slotOk();
152} 161}
153 162
154void AlarmDialog::suspend() 163void AlarmDialog::suspend()
155{ 164{
156#ifdef DESKTOP_VERSION 165#ifdef DESKTOP_VERSION
157 166
158#else 167#else
159 Sound::soundAlarm (); 168 Sound::soundAlarm ();
160#endif 169#endif
161} 170}
162void AlarmDialog::slotOk() 171void AlarmDialog::slotOk()
163{ 172{
164 mStopAlarm = true; 173 mStopAlarm = true;
165 mMissedAlarms->setText("(No missed Alarms)"); 174 mMissedAlarms->setText("(No missed Alarms)");
166 mMessage->setText(""); 175 mMessage->setText("");
167 mMissedAlarmsCombo->clear(); 176 mMissedAlarmsCombo->clear();
168#ifndef _WIN32_ 177#ifndef _WIN32_
169 if ( fd_led > 0 ) { 178 if ( fd_led > 0 ) {
170 statusLED.status = LED_SALARM_OFF ; 179 statusLED.status = LED_SALARM_OFF ;
171 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED); 180 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED);
172 } 181 }
173#endif 182#endif
174 QDialog::accept(); 183 QDialog::accept();
175} 184}
176 185
177void AlarmDialog::slotSuspend() 186void AlarmDialog::slotSuspend()
178{ 187{
179 //qDebug("AlarmDialog::suspend() "); // emit suspendSignal(mSuspendSpin->value()); 188 //qDebug("AlarmDialog::suspend() "); // emit suspendSignal(mSuspendSpin->value());
180 mStopAlarm = true; 189 mStopAlarm = true;
181 QDateTime nextA = QDateTime::currentDateTime().addSecs( mSuspendSpin->value() * 60 ); 190 QDateTime nextA = QDateTime::currentDateTime().addSecs( mSuspendSpin->value() * 60 );
182 QString mess = "suspend_alarm" +mFileName+"+++" ; 191 QString mess = "suspend_alarm" +mFileName+"+++" ;
183 if ( mMessage->text().left( 10 ) !="Suspended:" ) 192 if ( mMessage->text().left( 10 ) !="Suspended:" )
184 mess += "Suspended:\n"; 193 mess += "Suspended:\n";
185 mess +=mMessage->text(); 194 mess +=mMessage->text();
186#ifndef DESKTOP_VERSION 195#ifndef DESKTOP_VERSION
187 if ( mServerNotification ) 196 if ( mServerNotification )
188 AlarmServer::addAlarm ( nextA,"koalarm",mess.latin1()); 197 AlarmServer::addAlarm ( nextA,"koalarm",mess.latin1());
189#endif 198#endif
190 emit addAlarm( nextA , mess ); 199 emit addAlarm( nextA , mess );
191 slotOk(); 200 slotOk();
192} 201}
193 202
194void AlarmDialog::setServerNotification( bool b ) 203void AlarmDialog::setServerNotification( bool b )
195{ 204{
196 mServerNotification = b; 205 mServerNotification = b;
197} 206}
198int AlarmDialog::getSuspendTime( ) 207int AlarmDialog::getSuspendTime( )
199{ 208{
200 return mSuspendSpin->value(); 209 return mSuspendSpin->value();
201 210
202} 211}
203void AlarmDialog::setSuspendTime( int val ) 212void AlarmDialog::setSuspendTime( int val )
204{ 213{
205 mSuspendSpin->setValue( val ); 214 mSuspendSpin->setValue( val );
206} 215}
207bool AlarmDialog::eventNotification( QString mess, int replay , QString fn, bool playwav, int pause , int suspendtimes) 216bool AlarmDialog::eventNotification( QString mess, int replay , QString fn, bool playwav, int pause , int suspendtimes)
208{ 217{
209 if ( mess.left( 9) != "Suspended" ) 218 if ( mess.left( 9) != "Suspended" )
210 mSuspendCounter = suspendtimes; 219 mSuspendCounter = suspendtimes;
211 mPauseCount = pause; 220 mPauseCount = pause;
212 mFileName = fn; 221 mFileName = fn;
213 mPlayWav = playwav; 222 mPlayWav = playwav;
214 if ( !QFile::exists( fn ) ) 223 if ( !QFile::exists( fn ) )
215 mFileName = ""; 224 mFileName = "";
216 alarmCounter = 0 ; 225 alarmCounter = 0 ;
217 maxAlarmReplay = replay ; 226 maxAlarmReplay = replay ;
218 mStopAlarm = false; 227 mStopAlarm = false;
219 mSilent = false; 228 mSilent = false;
220 if ( !mMessage->text().stripWhiteSpace().isEmpty() ) { 229 if ( !mMessage->text().stripWhiteSpace().isEmpty() ) {
221 mMissedAlarmsCombo->show(); 230 mMissedAlarmsCombo->show();
222 mMissedAlarmsCombo->insertItem( mMessage->text().stripWhiteSpace() ); 231 mMissedAlarmsCombo->insertItem( mMessage->text().stripWhiteSpace() );
223 mMissedAlarms->setText( "Missed alarms:"); 232 mMissedAlarms->setText( "Missed alarms:");
224 } else 233 } else
225 mMissedAlarmsCombo->hide(); 234 mMissedAlarmsCombo->hide();
226 mMessage->setText(mess); 235 mMessage->setText(mess);
227 int w =sizeHint().width() ; 236 int w =sizeHint().width() ;
228 int h = sizeHint().height() ; 237 int h = sizeHint().height() ;
229 int dw = QApplication::desktop()->width(); 238 int dw = QApplication::desktop()->width();
230 int dh = QApplication::desktop()->height(); 239 int dh = QApplication::desktop()->height();
231 setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 240 setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
232 show(); 241 show();
233 raise(); 242 raise();
234 qApp->processEvents(); 243 qApp->processEvents();
235 repaint(); 244 repaint();
236 qApp->processEvents(); 245 qApp->processEvents();
237 246
238#ifndef _WIN32_ 247#ifndef _WIN32_
239 if ( fd_led > 0 ) { 248 if ( fd_led > 0 ) {
240 statusLED.status = LED_SALARM_ON ; 249 statusLED.status = LED_SALARM_ON ;
241 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED); 250 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED);
242 } 251 }
243#endif 252#endif
244 playSoundTimer->start( 1000, true ); 253 playSoundTimer->start( 1000, true );
245 return true; 254 return true;
246 255
247} 256}
248 257
249 258
250void AlarmDialog::playSound () 259void AlarmDialog::playSound ()
251{ 260{
252 if (mStopAlarm ) 261 if (mStopAlarm )
253 return; 262 return;
254 showNormal(); 263 showNormal();
255 setActiveWindow(); 264 setActiveWindow();
256 mSuspendSpin->setFocus(); 265 mSuspendSpin->setFocus();
257 raise(); 266 raise();
258 267
259 qApp->processEvents(); 268 qApp->processEvents();
260 if ( alarmCounter < maxAlarmReplay && ! mSilent) { 269 if ( alarmCounter < maxAlarmReplay && ! mSilent) {
261 ++alarmCounter; 270 ++alarmCounter;
271#ifdef DESKTOP_VERSION
272 mPlayWav = true;
273#endif
262 if ( !mPlayWav || mFileName.length() < 2 ) { 274 if ( !mPlayWav || mFileName.length() < 2 ) {
263 275
264#ifndef DESKTOP_VERSION 276#ifdef DESKTOP_VERSION
277 qDebug("Sound play not possible - file not found");
278#else
265 Sound::soundAlarm (); 279 Sound::soundAlarm ();
266#endif 280#endif
267 } else { 281 } else
282
283 {
284#ifdef DESKTOP_VERSION
285#ifdef _WIN32_
286 QSound::play ( mFileName );
287#else
288
289 QString command = "playwave -r 22050 " + mFileName;
290 qDebug("KO: Playing file %s with 22kHz",mFileName.latin1() );
291 int ret = system ( command.latin1() );
292 if ( ret != 0 ) {
293 qDebug("Sound play command failed: %s ",command.latin1() );
294 }
295
296#endif
297
298#else
268 QSound::play ( mFileName ); 299 QSound::play ( mFileName );
300#endif
269 //qDebug("BEEP!"); 301 //qDebug("BEEP!");
270 } 302 }
271 } else { 303 } else {
272 if ( ! mSilent && mSuspendCounter > 0 ) { 304 if ( ! mSilent && mSuspendCounter > 0 ) {
273 --mSuspendCounter; 305 --mSuspendCounter;
274 reject (); 306 reject ();
275 hide(); 307 hide();
276 return; 308 return;
277 } 309 }
278 } 310 }
279 playSoundTimer->start( mPauseCount * 1000, true ); 311 playSoundTimer->start( mPauseCount * 1000, true );
280} 312}
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 3a16fe6..73aa733 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,4066 +1,4082 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Requires the Qt and KDE widget libraries, available at no cost at 4 Requires the Qt and KDE widget libraries, available at no cost at
5 http://www.troll.no and http://www.kde.org respectively 5 http://www.troll.no and http://www.kde.org respectively
6 6
7 Copyright (c) 1997, 1998, 1999 7 Copyright (c) 1997, 1998, 1999
8 Preston Brown (preston.brown@yale.edu) 8 Preston Brown (preston.brown@yale.edu)
9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl) 9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl)
10 Ian Dawes (iadawes@globalserve.net) 10 Ian Dawes (iadawes@globalserve.net)
11 Laszlo Boloni (boloni@cs.purdue.edu) 11 Laszlo Boloni (boloni@cs.purdue.edu)
12 12
13 Copyright (c) 2000, 2001, 2002 13 Copyright (c) 2000, 2001, 2002
14 Cornelius Schumacher <schumacher@kde.org> 14 Cornelius Schumacher <schumacher@kde.org>
15 15
16 This program is free software; you can redistribute it and/or modify 16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by 17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or 18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version. 19 (at your option) any later version.
20 20
21 This program is distributed in the hope that it will be useful, 21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
24 GNU General Public License for more details. 24 GNU General Public License for more details.
25 25
26 You should have received a copy of the GNU General Public License 26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software 27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33#include <qapplication.h> 33#include <qapplication.h>
34#include <qradiobutton.h> 34#include <qradiobutton.h>
35#include <qbuttongroup.h> 35#include <qbuttongroup.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qclipboard.h> 37#include <qclipboard.h>
38#include <qcursor.h> 38#include <qcursor.h>
39#include <qmessagebox.h> 39#include <qmessagebox.h>
40#include <qprogressbar.h> 40#include <qprogressbar.h>
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qwidgetstack.h> 43#include <qwidgetstack.h>
44#include <qptrlist.h> 44#include <qptrlist.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qgroupbox.h> 46#include <qgroupbox.h>
47#include <qfile.h> 47#include <qfile.h>
48#include <qdir.h> 48#include <qdir.h>
49#ifndef KORG_NOSPLITTER 49#ifndef KORG_NOSPLITTER
50#include <qsplitter.h> 50#include <qsplitter.h>
51#endif 51#endif
52 52
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kdebug.h> 54#include <kdebug.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57#include <kmessagebox.h> 57#include <kmessagebox.h>
58#include <knotifyclient.h> 58#include <knotifyclient.h>
59#include <kconfig.h> 59#include <kconfig.h>
60 60
61#include <libkdepim/ksyncprefsdialog.h> 61#include <libkdepim/ksyncprefsdialog.h>
62#include <krun.h> 62#include <krun.h>
63#include <kdirwatch.h> 63#include <kdirwatch.h>
64#include <libkdepim/kdatepicker.h> 64#include <libkdepim/kdatepicker.h>
65#include <libkdepim/ksyncprofile.h> 65#include <libkdepim/ksyncprofile.h>
66#include <libkdepim/kpimglobalprefs.h> 66#include <libkdepim/kpimglobalprefs.h>
67 67
68#include <libkcal/vcaldrag.h> 68#include <libkcal/vcaldrag.h>
69#include <libkcal/icaldrag.h> 69#include <libkcal/icaldrag.h>
70#include <libkcal/icalformat.h> 70#include <libkcal/icalformat.h>
71#include <libkcal/vcalformat.h> 71#include <libkcal/vcalformat.h>
72#include <libkcal/scheduler.h> 72#include <libkcal/scheduler.h>
73#include <libkcal/calendarlocal.h> 73#include <libkcal/calendarlocal.h>
74#include <libkcal/journal.h> 74#include <libkcal/journal.h>
75#include <libkcal/calfilter.h> 75#include <libkcal/calfilter.h>
76#include <libkcal/attendee.h> 76#include <libkcal/attendee.h>
77#include <libkcal/dndfactory.h> 77#include <libkcal/dndfactory.h>
78#include <libkcal/freebusy.h> 78#include <libkcal/freebusy.h>
79#include <libkcal/filestorage.h> 79#include <libkcal/filestorage.h>
80#include <libkcal/calendarresources.h> 80#include <libkcal/calendarresources.h>
81#include <libkcal/qtopiaformat.h> 81#include <libkcal/qtopiaformat.h>
82#include "../kalarmd/alarmdialog.h" 82#include "../kalarmd/alarmdialog.h"
83 83
84#ifndef DESKTOP_VERSION 84#ifndef DESKTOP_VERSION
85#include <libkcal/sharpformat.h> 85#include <libkcal/sharpformat.h>
86#include <externalapphandler.h> 86#include <externalapphandler.h>
87#endif 87#endif
88#include <libkcal/phoneformat.h> 88#include <libkcal/phoneformat.h>
89#ifndef KORG_NOMAIL 89#ifndef KORG_NOMAIL
90#include "komailclient.h" 90#include "komailclient.h"
91#endif 91#endif
92#ifndef KORG_NOPRINTER 92#ifndef KORG_NOPRINTER
93#include "calprinter.h" 93#include "calprinter.h"
94#endif 94#endif
95#ifndef KORG_NOPLUGINS 95#ifndef KORG_NOPLUGINS
96#include "kocore.h" 96#include "kocore.h"
97#endif 97#endif
98#include "koeventeditor.h" 98#include "koeventeditor.h"
99#include "kotodoeditor.h" 99#include "kotodoeditor.h"
100#include "koprefs.h" 100#include "koprefs.h"
101#include "koeventviewerdialog.h" 101#include "koeventviewerdialog.h"
102#include "publishdialog.h" 102#include "publishdialog.h"
103#include "kofilterview.h" 103#include "kofilterview.h"
104#include "koglobals.h" 104#include "koglobals.h"
105#include "koviewmanager.h" 105#include "koviewmanager.h"
106#include "koagendaview.h" 106#include "koagendaview.h"
107#include "kodialogmanager.h" 107#include "kodialogmanager.h"
108#include "outgoingdialog.h" 108#include "outgoingdialog.h"
109#include "incomingdialog.h" 109#include "incomingdialog.h"
110#include "datenavigatorcontainer.h" 110#include "datenavigatorcontainer.h"
111#include "statusdialog.h" 111#include "statusdialog.h"
112#include "kdatenavigator.h" 112#include "kdatenavigator.h"
113#include "kotodoview.h" 113#include "kotodoview.h"
114#include "datenavigator.h" 114#include "datenavigator.h"
115#include "resourceview.h" 115#include "resourceview.h"
116#include "navigatorbar.h" 116#include "navigatorbar.h"
117#include "searchdialog.h" 117#include "searchdialog.h"
118#include "mainwindow.h" 118#include "mainwindow.h"
119 119
120#include "calendarview.h" 120#include "calendarview.h"
121#ifndef DESKTOP_VERSION 121#ifndef DESKTOP_VERSION
122#include <qtopia/alarmserver.h> 122#include <qtopia/alarmserver.h>
123#endif 123#endif
124#ifndef _WIN32_ 124#ifndef _WIN32_
125#include <stdlib.h> 125#include <stdlib.h>
126#include <stdio.h> 126#include <stdio.h>
127#include <unistd.h> 127#include <unistd.h>
128#else 128#else
129#include <qprocess.h> 129#include <qprocess.h>
130#endif 130#endif
131 131
132#ifdef DESKTOP_VERSION 132#ifdef DESKTOP_VERSION
133#include <kabc/stdaddressbook.h> 133#include <kabc/stdaddressbook.h>
134#endif 134#endif
135using namespace KOrg; 135using namespace KOrg;
136using namespace KCal; 136using namespace KCal;
137extern int globalFlagBlockAgenda; 137extern int globalFlagBlockAgenda;
138extern int globalFlagBlockStartup; 138extern int globalFlagBlockStartup;
139 139
140 140
141 141
142class KOBeamPrefs : public QDialog 142class KOBeamPrefs : public QDialog
143{ 143{
144 public: 144 public:
145 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 145 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
146 QDialog( parent, name, true ) 146 QDialog( parent, name, true )
147 { 147 {
148 setCaption( i18n("Beam Options") ); 148 setCaption( i18n("Beam Options") );
149 QVBoxLayout* lay = new QVBoxLayout( this ); 149 QVBoxLayout* lay = new QVBoxLayout( this );
150 lay->setSpacing( 3 ); 150 lay->setSpacing( 3 );
151 lay->setMargin( 3 ); 151 lay->setMargin( 3 );
152 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 152 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
153 lay->addWidget( format ); 153 lay->addWidget( format );
154 format->setExclusive ( true ) ; 154 format->setExclusive ( true ) ;
155 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 155 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
156 lay->addWidget( time ); time->setExclusive ( true ) ; 156 lay->addWidget( time ); time->setExclusive ( true ) ;
157 vcal = new QRadioButton(" vCalendar ", format ); 157 vcal = new QRadioButton(" vCalendar ", format );
158 ical = new QRadioButton(" iCalendar ", format ); 158 ical = new QRadioButton(" iCalendar ", format );
159 vcal->setChecked( true ); 159 vcal->setChecked( true );
160 tz = new QRadioButton(i18n(" With timezone "), time ); 160 tz = new QRadioButton(i18n(" With timezone "), time );
161 local = new QRadioButton(i18n(" Local time "), time ); 161 local = new QRadioButton(i18n(" Local time "), time );
162 tz->setChecked( true ); 162 tz->setChecked( true );
163 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 163 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
164 lay->addWidget( ok ); 164 lay->addWidget( ok );
165 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 165 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
166 lay->addWidget( cancel ); 166 lay->addWidget( cancel );
167 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 167 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
168 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 168 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
169 resize( 200, 200 ); 169 resize( 200, 200 );
170 } 170 }
171 171
172 bool beamVcal() { return vcal->isChecked(); } 172 bool beamVcal() { return vcal->isChecked(); }
173 bool beamLocal() { return local->isChecked(); } 173 bool beamLocal() { return local->isChecked(); }
174private: 174private:
175 QRadioButton* vcal, *ical, *local, *tz; 175 QRadioButton* vcal, *ical, *local, *tz;
176}; 176};
177class KOCatPrefs : public QDialog 177class KOCatPrefs : public QDialog
178{ 178{
179 public: 179 public:
180 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 180 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
181 QDialog( parent, name, true ) 181 QDialog( parent, name, true )
182 { 182 {
183 setCaption( i18n("Manage new Categories") ); 183 setCaption( i18n("Manage new Categories") );
184 QVBoxLayout* lay = new QVBoxLayout( this ); 184 QVBoxLayout* lay = new QVBoxLayout( this );
185 lay->setSpacing( 3 ); 185 lay->setSpacing( 3 );
186 lay->setMargin( 3 ); 186 lay->setMargin( 3 );
187 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); 187 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
188 lay->addWidget( lab ); 188 lay->addWidget( lab );
189 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 189 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
190 lay->addWidget( format ); 190 lay->addWidget( format );
191 format->setExclusive ( true ) ; 191 format->setExclusive ( true ) ;
192 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 192 addCatBut = new QRadioButton(i18n("Add to category list"), format );
193 new QRadioButton(i18n("Remove from Events/Todos"), format ); 193 new QRadioButton(i18n("Remove from Events/Todos"), format );
194 addCatBut->setChecked( true ); 194 addCatBut->setChecked( true );
195 QPushButton * ok = new QPushButton( i18n("OK"), this ); 195 QPushButton * ok = new QPushButton( i18n("OK"), this );
196 lay->addWidget( ok ); 196 lay->addWidget( ok );
197 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 197 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
198 lay->addWidget( cancel ); 198 lay->addWidget( cancel );
199 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 199 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
200 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 200 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
201 resize( 200, 200 ); 201 resize( 200, 200 );
202 } 202 }
203 203
204 bool addCat() { return addCatBut->isChecked(); } 204 bool addCat() { return addCatBut->isChecked(); }
205private: 205private:
206 QRadioButton* addCatBut; 206 QRadioButton* addCatBut;
207}; 207};
208 208
209 209
210 210
211CalendarView::CalendarView( CalendarResources *calendar, 211CalendarView::CalendarView( CalendarResources *calendar,
212 QWidget *parent, const char *name ) 212 QWidget *parent, const char *name )
213 : CalendarViewBase( parent, name ), 213 : CalendarViewBase( parent, name ),
214 mCalendar( calendar ), 214 mCalendar( calendar ),
215 mResourceManager( calendar->resourceManager() ) 215 mResourceManager( calendar->resourceManager() )
216{ 216{
217 217
218 mEventEditor = 0; 218 mEventEditor = 0;
219 mTodoEditor = 0; 219 mTodoEditor = 0;
220 220
221 init(); 221 init();
222} 222}
223 223
224CalendarView::CalendarView( Calendar *calendar, 224CalendarView::CalendarView( Calendar *calendar,
225 QWidget *parent, const char *name ) 225 QWidget *parent, const char *name )
226 : CalendarViewBase( parent, name ), 226 : CalendarViewBase( parent, name ),
227 mCalendar( calendar ), 227 mCalendar( calendar ),
228 mResourceManager( 0 ) 228 mResourceManager( 0 )
229{ 229{
230 230
231 mEventEditor = 0; 231 mEventEditor = 0;
232 mTodoEditor = 0; 232 mTodoEditor = 0;
233 init(); 233 init();
234} 234}
235 235
236void CalendarView::init() 236void CalendarView::init()
237{ 237{
238 238 mNextAlarmDateTime = QDateTime::currentDateTime();
239 setFocusPolicy ( WheelFocus ); 239 setFocusPolicy ( WheelFocus );
240 mViewerCallerIsSearchDialog = false; 240 mViewerCallerIsSearchDialog = false;
241 mBlockShowDates = false; 241 mBlockShowDates = false;
242 beamDialog = new KOBeamPrefs(); 242 beamDialog = new KOBeamPrefs();
243 mDatePickerMode = 0; 243 mDatePickerMode = 0;
244 mCurrentSyncDevice = ""; 244 mCurrentSyncDevice = "";
245 writeLocale(); 245 writeLocale();
246 mViewManager = new KOViewManager( this ); 246 mViewManager = new KOViewManager( this );
247 mDialogManager = new KODialogManager( this ); 247 mDialogManager = new KODialogManager( this );
248 mEventViewerDialog = 0; 248 mEventViewerDialog = 0;
249 mModified = false; 249 mModified = false;
250 mReadOnly = false; 250 mReadOnly = false;
251 mSelectedIncidence = 0; 251 mSelectedIncidence = 0;
252 mCalPrinter = 0; 252 mCalPrinter = 0;
253 mFilters.setAutoDelete(true); 253 mFilters.setAutoDelete(true);
254 254
255 mCalendar->registerObserver( this ); 255 mCalendar->registerObserver( this );
256 // TODO: Make sure that view is updated, when calendar is changed. 256 // TODO: Make sure that view is updated, when calendar is changed.
257 257
258 mStorage = new FileStorage( mCalendar ); 258 mStorage = new FileStorage( mCalendar );
259 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 259 mNavigator = new DateNavigator( this, "datevav", mViewManager );
260 260
261 QBoxLayout *topLayout = (QBoxLayout*)layout(); 261 QBoxLayout *topLayout = (QBoxLayout*)layout();
262#ifndef KORG_NOSPLITTER 262#ifndef KORG_NOSPLITTER
263 // create the main layout frames. 263 // create the main layout frames.
264 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 264 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
265 topLayout->addWidget(mPanner); 265 topLayout->addWidget(mPanner);
266 266
267 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 267 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
268 "CalendarView::LeftFrame"); 268 "CalendarView::LeftFrame");
269 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 269 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
270 270
271 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 271 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
272 "CalendarView::DateNavigator" ); 272 "CalendarView::DateNavigator" );
273 273
274 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 274 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
275 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 275 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
276 mTodoList->setNavigator( mNavigator ); 276 mTodoList->setNavigator( mNavigator );
277 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 277 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
278 278
279#ifdef KORG_NORESOURCEVIEW 279#ifdef KORG_NORESOURCEVIEW
280 mResourceView = 0; 280 mResourceView = 0;
281#else 281#else
282 if ( mResourceManager ) { 282 if ( mResourceManager ) {
283 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 283 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
284 mResourceView->updateView(); 284 mResourceView->updateView();
285 connect( mResourceView, SIGNAL( resourcesChanged() ), 285 connect( mResourceView, SIGNAL( resourcesChanged() ),
286 SLOT( updateView() ) ); 286 SLOT( updateView() ) );
287 } else { 287 } else {
288 mResourceView = 0; 288 mResourceView = 0;
289 } 289 }
290#endif 290#endif
291 QWidget *rightBox = new QWidget( mPanner ); 291 QWidget *rightBox = new QWidget( mPanner );
292 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 292 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
293 293
294 mRightFrame = new QWidgetStack( rightBox ); 294 mRightFrame = new QWidgetStack( rightBox );
295 rightLayout->addWidget( mRightFrame, 1 ); 295 rightLayout->addWidget( mRightFrame, 1 );
296 296
297 mLeftFrame = mLeftSplitter; 297 mLeftFrame = mLeftSplitter;
298#else 298#else
299 //QWidget *mainBox = new QWidget( this ); 299 //QWidget *mainBox = new QWidget( this );
300 //QWidget *leftFrame = new QWidget( mainBox ); 300 //QWidget *leftFrame = new QWidget( mainBox );
301 //QBoxLayout * mainBoxLayout; 301 //QBoxLayout * mainBoxLayout;
302 if ( KOPrefs::instance()->mVerticalScreen ) { 302 if ( KOPrefs::instance()->mVerticalScreen ) {
303 //mainBoxLayout = new QVBoxLayout(mainBox); 303 //mainBoxLayout = new QVBoxLayout(mainBox);
304 //leftFrameLayout = new QHBoxLayout(leftFrame ); 304 //leftFrameLayout = new QHBoxLayout(leftFrame );
305 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 305 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
306 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 306 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
307 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 307 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
308 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 308 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
309 } else { 309 } else {
310 //mainBoxLayout = new QHBoxLayout(mainBox); 310 //mainBoxLayout = new QHBoxLayout(mainBox);
311 //leftFrameLayout = new QVBoxLayout(leftFrame ); 311 //leftFrameLayout = new QVBoxLayout(leftFrame );
312 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 312 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
313 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 313 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
314 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 314 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
315 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 315 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
316 } 316 }
317 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 317 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
318 //QBoxLayout * leftFrameLayout; 318 //QBoxLayout * leftFrameLayout;
319 topLayout->addWidget( mMainFrame ); 319 topLayout->addWidget( mMainFrame );
320 //mainBoxLayout->addWidget (mLeftFrame); 320 //mainBoxLayout->addWidget (mLeftFrame);
321 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 321 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
322 "CalendarView::DateNavigator" ); 322 "CalendarView::DateNavigator" );
323#if 0 323#if 0
324 // FIXME 324 // FIXME
325 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 325 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
326 "CalendarView::DateNavigator", QDate::currentDate()); 326 "CalendarView::DateNavigator", QDate::currentDate());
327#endif 327#endif
328 // mDateNavigator->blockSignals( true ); 328 // mDateNavigator->blockSignals( true );
329 //leftFrameLayout->addWidget( mDateNavigator ); 329 //leftFrameLayout->addWidget( mDateNavigator );
330 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 330 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
331 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 331 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
332 mTodoList->setNavigator( mNavigator ); 332 mTodoList->setNavigator( mNavigator );
333#if 0 333#if 0
334 if ( QApplication::desktop()->width() < 480 ) { 334 if ( QApplication::desktop()->width() < 480 ) {
335 leftFrameLayout->addWidget(mFilterView); 335 leftFrameLayout->addWidget(mFilterView);
336 leftFrameLayout->addWidget(mTodoList, 2 ); 336 leftFrameLayout->addWidget(mTodoList, 2 );
337 337
338 } else { 338 } else {
339 leftFrameLayout->addWidget(mTodoList,2 ); 339 leftFrameLayout->addWidget(mTodoList,2 );
340 leftFrameLayout->addWidget(mFilterView ); 340 leftFrameLayout->addWidget(mFilterView );
341 } 341 }
342#endif 342#endif
343 mFilterView->hide(); 343 mFilterView->hide();
344 QWidget *rightBox = new QWidget( mMainFrame ); 344 QWidget *rightBox = new QWidget( mMainFrame );
345 //mainBoxLayout->addWidget ( rightBox, 10 ); 345 //mainBoxLayout->addWidget ( rightBox, 10 );
346 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 346 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
347 mRightFrame = new QWidgetStack( rightBox ); 347 mRightFrame = new QWidgetStack( rightBox );
348 rightLayout->addWidget( mRightFrame, 10 ); 348 rightLayout->addWidget( mRightFrame, 10 );
349 349
350 //mLeftFrame = (QWidget *)leftFrame; 350 //mLeftFrame = (QWidget *)leftFrame;
351 if ( KOPrefs::instance()->mVerticalScreen ) { 351 if ( KOPrefs::instance()->mVerticalScreen ) {
352 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 352 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
353 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 353 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
354 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 354 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
355 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 355 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
356 } else { 356 } else {
357 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 357 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
358 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 358 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
359 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 359 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
360 } 360 }
361 if ( !KOPrefs::instance()->mShowDateNavigator) 361 if ( !KOPrefs::instance()->mShowDateNavigator)
362 mDateNavigator->hide(); 362 mDateNavigator->hide();
363 //qDebug("Calendarview Size %d %d ", width(), height()); 363 //qDebug("Calendarview Size %d %d ", width(), height());
364#endif 364#endif
365 365
366 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 366 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
367 SLOT( showDates( const KCal::DateList & ) ) ); 367 SLOT( showDates( const KCal::DateList & ) ) );
368 368
369 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 369 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
370 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 370 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
371 371
372 372
373 373
374 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 374 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
375 mViewManager, SLOT( showMonth( const QDate & ) ) ); 375 mViewManager, SLOT( showMonth( const QDate & ) ) );
376 376
377 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 377 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
378 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 378 mNavigator, SLOT( selectWeek( const QDate & ) ) );
379 379
380 connect( mDateNavigator, SIGNAL( goPrevYear() ), 380 connect( mDateNavigator, SIGNAL( goPrevYear() ),
381 mNavigator, SLOT( selectPreviousYear() ) ); 381 mNavigator, SLOT( selectPreviousYear() ) );
382 connect( mDateNavigator, SIGNAL( goNextYear() ), 382 connect( mDateNavigator, SIGNAL( goNextYear() ),
383 mNavigator, SLOT( selectNextYear() ) ); 383 mNavigator, SLOT( selectNextYear() ) );
384 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 384 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
385 mNavigator, SLOT( selectPreviousMonth() ) ); 385 mNavigator, SLOT( selectPreviousMonth() ) );
386 connect( mDateNavigator, SIGNAL( goNextMonth() ), 386 connect( mDateNavigator, SIGNAL( goNextMonth() ),
387 mNavigator, SLOT( selectNextMonth() ) ); 387 mNavigator, SLOT( selectNextMonth() ) );
388 388
389 connect( mDateNavigator, SIGNAL( goPrevious() ), 389 connect( mDateNavigator, SIGNAL( goPrevious() ),
390 mNavigator, SLOT( selectPrevious() ) ); 390 mNavigator, SLOT( selectPrevious() ) );
391 connect( mDateNavigator, SIGNAL( goNext() ), 391 connect( mDateNavigator, SIGNAL( goNext() ),
392 mNavigator, SLOT( selectNext() ) ); 392 mNavigator, SLOT( selectNext() ) );
393 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 393 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
394 mNavigator, SLOT( slotMonthSelect( int ) ) ); 394 mNavigator, SLOT( slotMonthSelect( int ) ) );
395 395
396 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 396 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
397 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 397 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
398#if 0 398#if 0
399 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 399 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
400 SLOT( incidenceAdded( Incidence *) ) ); 400 SLOT( incidenceAdded( Incidence *) ) );
401#endif 401#endif
402 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 402 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
403 403
404 connect( this, SIGNAL( configChanged() ), 404 connect( this, SIGNAL( configChanged() ),
405 mDateNavigator, SLOT( updateConfig() ) ); 405 mDateNavigator, SLOT( updateConfig() ) );
406 406
407 connect( mTodoList, SIGNAL( newTodoSignal() ), 407 connect( mTodoList, SIGNAL( newTodoSignal() ),
408 SLOT( newTodo() ) ); 408 SLOT( newTodo() ) );
409 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 409 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
410 SLOT( newSubTodo( Todo * ) ) ); 410 SLOT( newSubTodo( Todo * ) ) );
411 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 411 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
412 SLOT( editTodo( Todo * ) ) ); 412 SLOT( editTodo( Todo * ) ) );
413 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 413 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
414 SLOT( showTodo( Todo *) ) ); 414 SLOT( showTodo( Todo *) ) );
415 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 415 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
416 SLOT( deleteTodo( Todo *) ) ); 416 SLOT( deleteTodo( Todo *) ) );
417 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 417 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
418 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 418 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
419 SLOT( purgeCompleted() ) ); 419 SLOT( purgeCompleted() ) );
420 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 420 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
421 SIGNAL( todoModified( Todo *, int ) ) ); 421 SIGNAL( todoModified( Todo *, int ) ) );
422 422
423 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 423 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
424 this, SLOT ( cloneIncidence( Incidence * ) ) ); 424 this, SLOT ( cloneIncidence( Incidence * ) ) );
425 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 425 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
426 this, SLOT (cancelIncidence( Incidence * ) ) ); 426 this, SLOT (cancelIncidence( Incidence * ) ) );
427 427
428 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 428 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
429 this, SLOT ( moveIncidence( Incidence * ) ) ); 429 this, SLOT ( moveIncidence( Incidence * ) ) );
430 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 430 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
431 this, SLOT ( beamIncidence( Incidence * ) ) ); 431 this, SLOT ( beamIncidence( Incidence * ) ) );
432 432
433 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 433 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
434 this, SLOT ( todo_unsub( Todo * ) ) ); 434 this, SLOT ( todo_unsub( Todo * ) ) );
435 435
436 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 436 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
437 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 437 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
438 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 438 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
439 SLOT( updateTodo( Todo *, int ) ) ); 439 SLOT( updateTodo( Todo *, int ) ) );
440 connect( this, SIGNAL( todoModified( Todo *, int )), this, 440 connect( this, SIGNAL( todoModified( Todo *, int )), this,
441 SLOT( changeTodoDisplay( Todo *, int ) ) ); 441 SLOT( changeTodoDisplay( Todo *, int ) ) );
442 442
443 443
444 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 444 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
445 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 445 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
446 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 446 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
447 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 447 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
448 448
449 449
450 450
451 451
452 452
453 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 453 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
454 SLOT(checkClipboard())); 454 SLOT(checkClipboard()));
455 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 455 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
456 SLOT( processTodoListSelection( Incidence * ) ) ); 456 SLOT( processTodoListSelection( Incidence * ) ) );
457 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 457 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
458 458
459 // kdDebug() << "CalendarView::CalendarView() done" << endl; 459 // kdDebug() << "CalendarView::CalendarView() done" << endl;
460 460
461 mDateFrame = new QVBox(0,0,WType_Popup); 461 mDateFrame = new QVBox(0,0,WType_Popup);
462 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 462 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
463 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 463 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
464 mDateFrame->setLineWidth(3); 464 mDateFrame->setLineWidth(3);
465 mDateFrame->hide(); 465 mDateFrame->hide();
466 mDateFrame->setCaption( i18n( "Pick a date to display")); 466 mDateFrame->setCaption( i18n( "Pick a date to display"));
467 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 467 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
468 468
469 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 469 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
470 470
471 mEventEditor = mDialogManager->getEventEditor(); 471 mEventEditor = mDialogManager->getEventEditor();
472 mTodoEditor = mDialogManager->getTodoEditor(); 472 mTodoEditor = mDialogManager->getTodoEditor();
473 473
474 mFlagEditDescription = false; 474 mFlagEditDescription = false;
475 475
476 mSuspendTimer = new QTimer( this ); 476 mSuspendTimer = new QTimer( this );
477 mAlarmTimer = new QTimer( this ); 477 mAlarmTimer = new QTimer( this );
478 mRecheckAlarmTimer = new QTimer( this ); 478 mRecheckAlarmTimer = new QTimer( this );
479 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 479 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
480 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 480 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
481 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 481 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
482 mAlarmDialog = new AlarmDialog( this ); 482 mAlarmDialog = new AlarmDialog( this );
483 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 483 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
484 mAlarmDialog->setServerNotification( false ); 484 mAlarmDialog->setServerNotification( false );
485 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 485 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
486 486
487 487
488#ifndef DESKTOP_VERSION 488#ifndef DESKTOP_VERSION
489//US listen for arriving address resultsets 489//US listen for arriving address resultsets
490 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 490 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
491 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 491 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
492#endif 492#endif
493 mDateNavigator->setCalendar( mCalendar ); 493 mDateNavigator->setCalendar( mCalendar );
494} 494}
495 495
496 496
497CalendarView::~CalendarView() 497CalendarView::~CalendarView()
498{ 498{
499 // kdDebug() << "~CalendarView()" << endl; 499 // kdDebug() << "~CalendarView()" << endl;
500 //qDebug("CalendarView::~CalendarView() "); 500 //qDebug("CalendarView::~CalendarView() ");
501 delete mDialogManager; 501 delete mDialogManager;
502 delete mViewManager; 502 delete mViewManager;
503 delete mStorage; 503 delete mStorage;
504 delete mDateFrame ; 504 delete mDateFrame ;
505 delete beamDialog; 505 delete beamDialog;
506 delete mEventViewerDialog; 506 delete mEventViewerDialog;
507 //kdDebug() << "~CalendarView() done" << endl; 507 //kdDebug() << "~CalendarView() done" << endl;
508} 508}
509 509
510void CalendarView::showDay( QDate d ) 510void CalendarView::showDay( QDate d )
511{ 511{
512 dateNavigator()->blockSignals( true ); 512 dateNavigator()->blockSignals( true );
513 dateNavigator()->selectDate( d ); 513 dateNavigator()->selectDate( d );
514 dateNavigator()->blockSignals( false ); 514 dateNavigator()->blockSignals( false );
515 mViewManager->showDayView(); 515 mViewManager->showDayView();
516 //dateNavigator()->selectDate( d ); 516 //dateNavigator()->selectDate( d );
517} 517}
518void CalendarView::timerAlarm() 518void CalendarView::timerAlarm()
519{ 519{
520 //qDebug("CalendarView::timerAlarm() "); 520 //qDebug("CalendarView::timerAlarm() ");
521 computeAlarm(mAlarmNotification ); 521 computeAlarm(mAlarmNotification );
522} 522}
523 523
524void CalendarView::suspendAlarm() 524void CalendarView::suspendAlarm()
525{ 525{
526 //qDebug(" CalendarView::suspendAlarm() "); 526 //qDebug(" CalendarView::suspendAlarm() ");
527 computeAlarm(mSuspendAlarmNotification ); 527 computeAlarm(mSuspendAlarmNotification );
528 528
529} 529}
530 530
531void CalendarView::startAlarm( QString mess , QString filename) 531void CalendarView::startAlarm( QString mess , QString filename)
532{ 532{
533 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 533 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
534 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 534 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
535 535
536} 536}
537 537
538void CalendarView::checkNextTimerAlarm() 538void CalendarView::checkNextTimerAlarm()
539{ 539{
540 mCalendar->checkAlarmForIncidence( 0, true ); 540 mCalendar->checkAlarmForIncidence( 0, true );
541} 541}
542 542
543void CalendarView::computeAlarm( QString msg ) 543void CalendarView::computeAlarm( QString msg )
544{ 544{
545 545
546 QString mess = msg; 546 QString mess = msg;
547 QString mAlarmMessage = mess.mid( 9 ); 547 QString mAlarmMessage = mess.mid( 9 );
548 QString filename = MainWindow::resourcePath(); 548 QString filename = MainWindow::resourcePath();
549 filename += "koalarm.wav"; 549 filename += "koalarm.wav";
550 QString tempfilename; 550 QString tempfilename;
551 if ( mess.left( 13 ) == "suspend_alarm") { 551 if ( mess.left( 13 ) == "suspend_alarm") {
552 bool error = false; 552 bool error = false;
553 int len = mess.mid( 13 ).find("+++"); 553 int len = mess.mid( 13 ).find("+++");
554 if ( len < 2 ) 554 if ( len < 2 )
555 error = true; 555 error = true;
556 else { 556 else {
557 tempfilename = mess.mid( 13, len ); 557 tempfilename = mess.mid( 13, len );
558 if ( !QFile::exists( tempfilename ) ) 558 if ( !QFile::exists( tempfilename ) )
559 error = true; 559 error = true;
560 } 560 }
561 if ( ! error ) { 561 if ( ! error ) {
562 filename = tempfilename; 562 filename = tempfilename;
563 } 563 }
564 mAlarmMessage = mess.mid( 13+len+3 ); 564 mAlarmMessage = mess.mid( 13+len+3 );
565 //qDebug("suspend file %s ",tempfilename.latin1() ); 565 //qDebug("suspend file %s ",tempfilename.latin1() );
566 startAlarm( mAlarmMessage, filename); 566 startAlarm( mAlarmMessage, filename);
567 return; 567 return;
568 } 568 }
569 if ( mess.left( 11 ) == "timer_alarm") { 569 if ( mess.left( 11 ) == "timer_alarm") {
570 //mTimerTime = 0; 570 //mTimerTime = 0;
571 startAlarm( mess.mid( 11 ), filename ); 571 startAlarm( mess.mid( 11 ), filename );
572 return; 572 return;
573 } 573 }
574 if ( mess.left( 10 ) == "proc_alarm") { 574 if ( mess.left( 10 ) == "proc_alarm") {
575 bool error = false; 575 bool error = false;
576 int len = mess.mid( 10 ).find("+++"); 576 int len = mess.mid( 10 ).find("+++");
577 if ( len < 2 ) 577 if ( len < 2 )
578 error = true; 578 error = true;
579 else { 579 else {
580 tempfilename = mess.mid( 10, len ); 580 tempfilename = mess.mid( 10, len );
581 if ( !QFile::exists( tempfilename ) ) 581 if ( !QFile::exists( tempfilename ) )
582 error = true; 582 error = true;
583 } 583 }
584 if ( error ) { 584 if ( error ) {
585 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 585 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
586 mAlarmMessage += mess.mid( 10+len+3+9 ); 586 mAlarmMessage += mess.mid( 10+len+3+9 );
587 } else { 587 } else {
588 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 588 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
589 //qDebug("-----system command %s ",tempfilename.latin1() ); 589 //qDebug("-----system command %s ",tempfilename.latin1() );
590#ifndef _WIN32_ 590#ifndef _WIN32_
591 if ( vfork () == 0 ) { 591 if ( vfork () == 0 ) {
592 execl ( tempfilename.latin1(), 0 ); 592 execl ( tempfilename.latin1(), 0 );
593 return; 593 return;
594 } 594 }
595#else 595#else
596 QProcess* p = new QProcess(); 596 QProcess* p = new QProcess();
597 p->addArgument( tempfilename.latin1() ); 597 p->addArgument( tempfilename.latin1() );
598 p->start(); 598 p->start();
599 return; 599 return;
600#endif 600#endif
601 601
602 return; 602 return;
603 } 603 }
604 604
605 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 605 //qDebug("+++++++system command %s ",tempfilename.latin1() );
606 } 606 }
607 if ( mess.left( 11 ) == "audio_alarm") { 607 if ( mess.left( 11 ) == "audio_alarm") {
608 bool error = false; 608 bool error = false;
609 int len = mess.mid( 11 ).find("+++"); 609 int len = mess.mid( 11 ).find("+++");
610 if ( len < 2 ) 610 if ( len < 2 )
611 error = true; 611 error = true;
612 else { 612 else {
613 tempfilename = mess.mid( 11, len ); 613 tempfilename = mess.mid( 11, len );
614 if ( !QFile::exists( tempfilename ) ) 614 if ( !QFile::exists( tempfilename ) )
615 error = true; 615 error = true;
616 } 616 }
617 if ( ! error ) { 617 if ( ! error ) {
618 filename = tempfilename; 618 filename = tempfilename;
619 } 619 }
620 mAlarmMessage = mess.mid( 11+len+3+9 ); 620 mAlarmMessage = mess.mid( 11+len+3+9 );
621 //qDebug("audio file command %s ",tempfilename.latin1() ); 621 //qDebug("audio file command %s ",tempfilename.latin1() );
622 } 622 }
623 if ( mess.left( 9 ) == "cal_alarm") { 623 if ( mess.left( 9 ) == "cal_alarm") {
624 mAlarmMessage = mess.mid( 9 ) ; 624 mAlarmMessage = mess.mid( 9 ) ;
625 } 625 }
626 626
627 startAlarm( mAlarmMessage, filename ); 627 startAlarm( mAlarmMessage, filename );
628 628
629 629
630} 630}
631 631
632void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 632void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
633{ 633{
634 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 634 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
635 635
636 mSuspendAlarmNotification = noti; 636 mSuspendAlarmNotification = noti;
637 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 637 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
638 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 638 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
639 mSuspendTimer->start( ms , true ); 639 mSuspendTimer->start( ms , true );
640 640
641} 641}
642 642
643void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 643void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
644{ 644{
645 mNextAlarmDateTime = qdt;
645 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 646 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
646 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 647 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
647#ifndef DESKTOP_VERSION 648#ifndef DESKTOP_VERSION
648 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 649 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
649#endif 650#endif
650 return; 651 return;
651 } 652 }
652 int maxSec; 653 int maxSec;
653 //maxSec = 5; //testing only 654 //maxSec = 5; //testing only
654 maxSec = 86400+3600; // one day+1hour 655 maxSec = 86400+3600; // one day+1hour
655 mAlarmNotification = noti; 656 mAlarmNotification = noti;
656 int sec = QDateTime::currentDateTime().secsTo( qdt ); 657 int sec = QDateTime::currentDateTime().secsTo( qdt );
657 if ( sec > maxSec ) { 658 if ( sec > maxSec ) {
658 mRecheckAlarmTimer->start( maxSec * 1000 ); 659 mRecheckAlarmTimer->start( maxSec * 1000 );
659 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 660 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
660 return; 661 return;
661 } else { 662 } else {
662 mRecheckAlarmTimer->stop(); 663 mRecheckAlarmTimer->stop();
663 } 664 }
664 //qDebug("Alarm timer started with secs: %d ", sec); 665 //qDebug("Alarm timer started with secs: %d ", sec);
665 mAlarmTimer->start( sec *1000 , true ); 666 mAlarmTimer->start( sec *1000 , true );
666 667
667} 668}
668// called by mRecheckAlarmTimer to get next alarm 669// called by mRecheckAlarmTimer to get next alarm
669// we need this, because a QTimer has only a max range of 25 days 670// we need this, because a QTimer has only a max range of 25 days
670void CalendarView::recheckTimerAlarm() 671void CalendarView::recheckTimerAlarm()
671{ 672{
672 mAlarmTimer->stop(); 673 mAlarmTimer->stop();
673 mRecheckAlarmTimer->stop(); 674 mRecheckAlarmTimer->stop();
674 mCalendar->checkAlarmForIncidence( 0, true ); 675 mCalendar->checkAlarmForIncidence( 0, true );
675} 676}
676void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 677void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
677{ 678{
678 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 679 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
679 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 680 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
680#ifndef DESKTOP_VERSION 681#ifndef DESKTOP_VERSION
681 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 682 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
682#endif 683#endif
683 return; 684 return;
684 } 685 }
685 mAlarmTimer->stop(); 686 mAlarmTimer->stop();
686} 687}
687void CalendarView::selectWeekNum ( int num ) 688void CalendarView::selectWeekNum ( int num )
688{ 689{
689 dateNavigator()->blockSignals( true ); 690 dateNavigator()->blockSignals( true );
690 dateNavigator()->selectWeek( num ); 691 dateNavigator()->selectWeek( num );
691 dateNavigator()->blockSignals( false ); 692 dateNavigator()->blockSignals( false );
692 mViewManager->showWeekView(); 693 mViewManager->showWeekView();
693} 694}
694KOViewManager *CalendarView::viewManager() 695KOViewManager *CalendarView::viewManager()
695{ 696{
696 return mViewManager; 697 return mViewManager;
697} 698}
698 699
699KODialogManager *CalendarView::dialogManager() 700KODialogManager *CalendarView::dialogManager()
700{ 701{
701 return mDialogManager; 702 return mDialogManager;
702} 703}
703 704
704QDate CalendarView::startDate() 705QDate CalendarView::startDate()
705{ 706{
706 DateList dates = mNavigator->selectedDates(); 707 DateList dates = mNavigator->selectedDates();
707 708
708 return dates.first(); 709 return dates.first();
709} 710}
710 711
711QDate CalendarView::endDate() 712QDate CalendarView::endDate()
712{ 713{
713 DateList dates = mNavigator->selectedDates(); 714 DateList dates = mNavigator->selectedDates();
714 715
715 return dates.last(); 716 return dates.last();
716} 717}
717 718
718 719
719void CalendarView::createPrinter() 720void CalendarView::createPrinter()
720{ 721{
721#ifndef KORG_NOPRINTER 722#ifndef KORG_NOPRINTER
722 if (!mCalPrinter) { 723 if (!mCalPrinter) {
723 mCalPrinter = new CalPrinter(this, mCalendar); 724 mCalPrinter = new CalPrinter(this, mCalendar);
724 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 725 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
725 } 726 }
726#endif 727#endif
727} 728}
728 729
729 730
730//KOPrefs::instance()->mWriteBackFile 731//KOPrefs::instance()->mWriteBackFile
731//KOPrefs::instance()->mWriteBackExistingOnly 732//KOPrefs::instance()->mWriteBackExistingOnly
732 733
733// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 734// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
734// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 735// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
735// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 736// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
736// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 737// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
737// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 738// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
738// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 739// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
739 740
740int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 741int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
741{ 742{
742 743
743 // 0 equal 744 // 0 equal
744 // 1 take local 745 // 1 take local
745 // 2 take remote 746 // 2 take remote
746 // 3 cancel 747 // 3 cancel
747 QDateTime lastSync = mLastCalendarSync; 748 QDateTime lastSync = mLastCalendarSync;
748 QDateTime localMod = local->lastModified(); 749 QDateTime localMod = local->lastModified();
749 QDateTime remoteMod = remote->lastModified(); 750 QDateTime remoteMod = remote->lastModified();
750 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 751 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
751 bool remCh, locCh; 752 bool remCh, locCh;
752 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 753 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
753 //if ( remCh ) 754 //if ( remCh )
754 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 755 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
755 locCh = ( localMod > mLastCalendarSync ); 756 locCh = ( localMod > mLastCalendarSync );
756 if ( !remCh && ! locCh ) { 757 if ( !remCh && ! locCh ) {
757 //qDebug("both not changed "); 758 //qDebug("both not changed ");
758 lastSync = localMod.addDays(1); 759 lastSync = localMod.addDays(1);
759 if ( mode <= SYNC_PREF_ASK ) 760 if ( mode <= SYNC_PREF_ASK )
760 return 0; 761 return 0;
761 } else { 762 } else {
762 if ( locCh ) { 763 if ( locCh ) {
763 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 764 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
764 lastSync = localMod.addDays( -1 ); 765 lastSync = localMod.addDays( -1 );
765 if ( !remCh ) 766 if ( !remCh )
766 remoteMod = ( lastSync.addDays( -1 ) ); 767 remoteMod = ( lastSync.addDays( -1 ) );
767 } else { 768 } else {
768 //qDebug(" not loc changed "); 769 //qDebug(" not loc changed ");
769 lastSync = localMod.addDays( 1 ); 770 lastSync = localMod.addDays( 1 );
770 if ( remCh ) 771 if ( remCh )
771 remoteMod =( lastSync.addDays( 1 ) ); 772 remoteMod =( lastSync.addDays( 1 ) );
772 773
773 } 774 }
774 } 775 }
775 full = true; 776 full = true;
776 if ( mode < SYNC_PREF_ASK ) 777 if ( mode < SYNC_PREF_ASK )
777 mode = SYNC_PREF_ASK; 778 mode = SYNC_PREF_ASK;
778 } else { 779 } else {
779 if ( localMod == remoteMod ) 780 if ( localMod == remoteMod )
780 // if ( local->revision() == remote->revision() ) 781 // if ( local->revision() == remote->revision() )
781 return 0; 782 return 0;
782 783
783 } 784 }
784 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 785 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
785 786
786 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 787 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
787 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 788 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
788 //full = true; //debug only 789 //full = true; //debug only
789 if ( full ) { 790 if ( full ) {
790 bool equ = false; 791 bool equ = false;
791 if ( local->type() == "Event" ) { 792 if ( local->type() == "Event" ) {
792 equ = (*((Event*) local) == *((Event*) remote)); 793 equ = (*((Event*) local) == *((Event*) remote));
793 } 794 }
794 else if ( local->type() =="Todo" ) 795 else if ( local->type() =="Todo" )
795 equ = (*((Todo*) local) == (*(Todo*) remote)); 796 equ = (*((Todo*) local) == (*(Todo*) remote));
796 else if ( local->type() =="Journal" ) 797 else if ( local->type() =="Journal" )
797 equ = (*((Journal*) local) == *((Journal*) remote)); 798 equ = (*((Journal*) local) == *((Journal*) remote));
798 if ( equ ) { 799 if ( equ ) {
799 //qDebug("equal "); 800 //qDebug("equal ");
800 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 801 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
801 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 802 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
802 } 803 }
803 if ( mode < SYNC_PREF_FORCE_LOCAL ) 804 if ( mode < SYNC_PREF_FORCE_LOCAL )
804 return 0; 805 return 0;
805 806
806 }//else //debug only 807 }//else //debug only
807 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 808 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
808 } 809 }
809 int result; 810 int result;
810 bool localIsNew; 811 bool localIsNew;
811 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 812 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
812 813
813 if ( full && mode < SYNC_PREF_NEWEST ) 814 if ( full && mode < SYNC_PREF_NEWEST )
814 mode = SYNC_PREF_ASK; 815 mode = SYNC_PREF_ASK;
815 816
816 switch( mode ) { 817 switch( mode ) {
817 case SYNC_PREF_LOCAL: 818 case SYNC_PREF_LOCAL:
818 if ( lastSync > remoteMod ) 819 if ( lastSync > remoteMod )
819 return 1; 820 return 1;
820 if ( lastSync > localMod ) 821 if ( lastSync > localMod )
821 return 2; 822 return 2;
822 return 1; 823 return 1;
823 break; 824 break;
824 case SYNC_PREF_REMOTE: 825 case SYNC_PREF_REMOTE:
825 if ( lastSync > remoteMod ) 826 if ( lastSync > remoteMod )
826 return 1; 827 return 1;
827 if ( lastSync > localMod ) 828 if ( lastSync > localMod )
828 return 2; 829 return 2;
829 return 2; 830 return 2;
830 break; 831 break;
831 case SYNC_PREF_NEWEST: 832 case SYNC_PREF_NEWEST:
832 if ( localMod > remoteMod ) 833 if ( localMod > remoteMod )
833 return 1; 834 return 1;
834 else 835 else
835 return 2; 836 return 2;
836 break; 837 break;
837 case SYNC_PREF_ASK: 838 case SYNC_PREF_ASK:
838 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 839 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
839 if ( lastSync > remoteMod ) 840 if ( lastSync > remoteMod )
840 return 1; 841 return 1;
841 if ( lastSync > localMod ) 842 if ( lastSync > localMod )
842 return 2; 843 return 2;
843 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 844 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
844 localIsNew = localMod >= remoteMod; 845 localIsNew = localMod >= remoteMod;
845 if ( localIsNew ) 846 if ( localIsNew )
846 getEventViewerDialog()->setColorMode( 1 ); 847 getEventViewerDialog()->setColorMode( 1 );
847 else 848 else
848 getEventViewerDialog()->setColorMode( 2 ); 849 getEventViewerDialog()->setColorMode( 2 );
849 getEventViewerDialog()->setIncidence(local); 850 getEventViewerDialog()->setIncidence(local);
850 if ( localIsNew ) 851 if ( localIsNew )
851 getEventViewerDialog()->setColorMode( 2 ); 852 getEventViewerDialog()->setColorMode( 2 );
852 else 853 else
853 getEventViewerDialog()->setColorMode( 1 ); 854 getEventViewerDialog()->setColorMode( 1 );
854 getEventViewerDialog()->addIncidence(remote); 855 getEventViewerDialog()->addIncidence(remote);
855 getEventViewerDialog()->setColorMode( 0 ); 856 getEventViewerDialog()->setColorMode( 0 );
856 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 857 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
857 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 858 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
858 getEventViewerDialog()->showMe(); 859 getEventViewerDialog()->showMe();
859 result = getEventViewerDialog()->executeS( localIsNew ); 860 result = getEventViewerDialog()->executeS( localIsNew );
860 return result; 861 return result;
861 862
862 break; 863 break;
863 case SYNC_PREF_FORCE_LOCAL: 864 case SYNC_PREF_FORCE_LOCAL:
864 return 1; 865 return 1;
865 break; 866 break;
866 case SYNC_PREF_FORCE_REMOTE: 867 case SYNC_PREF_FORCE_REMOTE:
867 return 2; 868 return 2;
868 break; 869 break;
869 870
870 default: 871 default:
871 // SYNC_PREF_TAKE_BOTH not implemented 872 // SYNC_PREF_TAKE_BOTH not implemented
872 break; 873 break;
873 } 874 }
874 return 0; 875 return 0;
875} 876}
876Event* CalendarView::getLastSyncEvent() 877Event* CalendarView::getLastSyncEvent()
877{ 878{
878 Event* lse; 879 Event* lse;
879 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 880 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
880 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 881 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
881 if (!lse) { 882 if (!lse) {
882 lse = new Event(); 883 lse = new Event();
883 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 884 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
884 QString sum = ""; 885 QString sum = "";
885 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 886 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
886 sum = "E: "; 887 sum = "E: ";
887 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 888 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
888 lse->setDtStart( mLastCalendarSync ); 889 lse->setDtStart( mLastCalendarSync );
889 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 890 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
890 lse->setCategories( i18n("SyncEvent") ); 891 lse->setCategories( i18n("SyncEvent") );
891 lse->setReadOnly( true ); 892 lse->setReadOnly( true );
892 mCalendar->addEvent( lse ); 893 mCalendar->addEvent( lse );
893 } 894 }
894 895
895 return lse; 896 return lse;
896 897
897} 898}
898 899
899// we check, if the to delete event has a id for a profile 900// we check, if the to delete event has a id for a profile
900// if yes, we set this id in the profile to delete 901// if yes, we set this id in the profile to delete
901void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 902void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
902{ 903{
903 if ( lastSync.count() == 0 ) { 904 if ( lastSync.count() == 0 ) {
904 //qDebug(" lastSync.count() == 0"); 905 //qDebug(" lastSync.count() == 0");
905 return; 906 return;
906 } 907 }
907 if ( toDelete->type() == "Journal" ) 908 if ( toDelete->type() == "Journal" )
908 return; 909 return;
909 910
910 Event* eve = lastSync.first(); 911 Event* eve = lastSync.first();
911 912
912 while ( eve ) { 913 while ( eve ) {
913 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 914 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
914 if ( !id.isEmpty() ) { 915 if ( !id.isEmpty() ) {
915 QString des = eve->description(); 916 QString des = eve->description();
916 QString pref = "e"; 917 QString pref = "e";
917 if ( toDelete->type() == "Todo" ) 918 if ( toDelete->type() == "Todo" )
918 pref = "t"; 919 pref = "t";
919 des += pref+ id + ","; 920 des += pref+ id + ",";
920 eve->setReadOnly( false ); 921 eve->setReadOnly( false );
921 eve->setDescription( des ); 922 eve->setDescription( des );
922 //qDebug("setdes %s ", des.latin1()); 923 //qDebug("setdes %s ", des.latin1());
923 eve->setReadOnly( true ); 924 eve->setReadOnly( true );
924 } 925 }
925 eve = lastSync.next(); 926 eve = lastSync.next();
926 } 927 }
927 928
928} 929}
929void CalendarView::checkExternalId( Incidence * inc ) 930void CalendarView::checkExternalId( Incidence * inc )
930{ 931{
931 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 932 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
932 checkExternSyncEvent( lastSync, inc ); 933 checkExternSyncEvent( lastSync, inc );
933 934
934} 935}
935bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 936bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
936{ 937{
937 bool syncOK = true; 938 bool syncOK = true;
938 int addedEvent = 0; 939 int addedEvent = 0;
939 int addedEventR = 0; 940 int addedEventR = 0;
940 int deletedEventR = 0; 941 int deletedEventR = 0;
941 int deletedEventL = 0; 942 int deletedEventL = 0;
942 int changedLocal = 0; 943 int changedLocal = 0;
943 int changedRemote = 0; 944 int changedRemote = 0;
944 int filteredIN = 0; 945 int filteredIN = 0;
945 int filteredOUT = 0; 946 int filteredOUT = 0;
946 //QPtrList<Event> el = local->rawEvents(); 947 //QPtrList<Event> el = local->rawEvents();
947 Event* eventR; 948 Event* eventR;
948 QString uid; 949 QString uid;
949 int take; 950 int take;
950 Event* eventL; 951 Event* eventL;
951 Event* eventRSync; 952 Event* eventRSync;
952 Event* eventLSync; 953 Event* eventLSync;
953 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 954 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
954 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 955 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
955 bool fullDateRange = false; 956 bool fullDateRange = false;
956 local->resetTempSyncStat(); 957 local->resetTempSyncStat();
957 mLastCalendarSync = QDateTime::currentDateTime(); 958 mLastCalendarSync = QDateTime::currentDateTime();
958 if ( mSyncManager->syncWithDesktop() ) { 959 if ( mSyncManager->syncWithDesktop() ) {
959 remote->resetPilotStat(1); 960 remote->resetPilotStat(1);
960 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 961 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
961 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 962 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
962 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 963 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
963 } else { 964 } else {
964 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 965 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
965 } 966 }
966 } 967 }
967 QDateTime modifiedCalendar = mLastCalendarSync; 968 QDateTime modifiedCalendar = mLastCalendarSync;
968 eventLSync = getLastSyncEvent(); 969 eventLSync = getLastSyncEvent();
969 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 970 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
970 if ( eventR ) { 971 if ( eventR ) {
971 eventRSync = (Event*) eventR->clone(); 972 eventRSync = (Event*) eventR->clone();
972 remote->deleteEvent(eventR ); 973 remote->deleteEvent(eventR );
973 974
974 } else { 975 } else {
975 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 976 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
976 eventRSync = (Event*)eventLSync->clone(); 977 eventRSync = (Event*)eventLSync->clone();
977 } else { 978 } else {
978 fullDateRange = true; 979 fullDateRange = true;
979 eventRSync = new Event(); 980 eventRSync = new Event();
980 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 981 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
981 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 982 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
982 eventRSync->setDtStart( mLastCalendarSync ); 983 eventRSync->setDtStart( mLastCalendarSync );
983 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 984 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
984 eventRSync->setCategories( i18n("SyncEvent") ); 985 eventRSync->setCategories( i18n("SyncEvent") );
985 } 986 }
986 } 987 }
987 if ( eventLSync->dtStart() == mLastCalendarSync ) 988 if ( eventLSync->dtStart() == mLastCalendarSync )
988 fullDateRange = true; 989 fullDateRange = true;
989 990
990 if ( ! fullDateRange ) { 991 if ( ! fullDateRange ) {
991 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 992 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
992 993
993 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 994 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
994 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 995 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
995 fullDateRange = true; 996 fullDateRange = true;
996 } 997 }
997 } 998 }
998 if ( mSyncManager->syncWithDesktop() ) { 999 if ( mSyncManager->syncWithDesktop() ) {
999 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1000 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1000 } 1001 }
1001 if ( fullDateRange ) 1002 if ( fullDateRange )
1002 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1003 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1003 else 1004 else
1004 mLastCalendarSync = eventLSync->dtStart(); 1005 mLastCalendarSync = eventLSync->dtStart();
1005 // for resyncing if own file has changed 1006 // for resyncing if own file has changed
1006 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1007 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1007 mLastCalendarSync = loadedFileVersion; 1008 mLastCalendarSync = loadedFileVersion;
1008 //qDebug("setting mLastCalendarSync "); 1009 //qDebug("setting mLastCalendarSync ");
1009 } 1010 }
1010 //qDebug("*************************** "); 1011 //qDebug("*************************** ");
1011 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1012 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1012 QPtrList<Incidence> er = remote->rawIncidences(); 1013 QPtrList<Incidence> er = remote->rawIncidences();
1013 Incidence* inR = er.first(); 1014 Incidence* inR = er.first();
1014 Incidence* inL; 1015 Incidence* inL;
1015 QProgressBar bar( er.count(),0 ); 1016 QProgressBar bar( er.count(),0 );
1016 bar.setCaption (i18n("Syncing - close to abort!") ); 1017 bar.setCaption (i18n("Syncing - close to abort!") );
1017 1018
1018 // ************** setting up filter ************* 1019 // ************** setting up filter *************
1019 CalFilter *filterIN = 0; 1020 CalFilter *filterIN = 0;
1020 CalFilter *filterOUT = 0; 1021 CalFilter *filterOUT = 0;
1021 CalFilter *filter = mFilters.first(); 1022 CalFilter *filter = mFilters.first();
1022 while(filter) { 1023 while(filter) {
1023 if ( filter->name() == mSyncManager->mFilterInCal ) 1024 if ( filter->name() == mSyncManager->mFilterInCal )
1024 filterIN = filter; 1025 filterIN = filter;
1025 if ( filter->name() == mSyncManager->mFilterOutCal ) 1026 if ( filter->name() == mSyncManager->mFilterOutCal )
1026 filterOUT = filter; 1027 filterOUT = filter;
1027 filter = mFilters.next(); 1028 filter = mFilters.next();
1028 } 1029 }
1029 int w = 300; 1030 int w = 300;
1030 if ( QApplication::desktop()->width() < 320 ) 1031 if ( QApplication::desktop()->width() < 320 )
1031 w = 220; 1032 w = 220;
1032 int h = bar.sizeHint().height() ; 1033 int h = bar.sizeHint().height() ;
1033 int dw = QApplication::desktop()->width(); 1034 int dw = QApplication::desktop()->width();
1034 int dh = QApplication::desktop()->height(); 1035 int dh = QApplication::desktop()->height();
1035 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1036 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1036 bar.show(); 1037 bar.show();
1037 int modulo = (er.count()/10)+1; 1038 int modulo = (er.count()/10)+1;
1038 int incCounter = 0; 1039 int incCounter = 0;
1039 while ( inR ) { 1040 while ( inR ) {
1040 if ( ! bar.isVisible() ) 1041 if ( ! bar.isVisible() )
1041 return false; 1042 return false;
1042 if ( incCounter % modulo == 0 ) 1043 if ( incCounter % modulo == 0 )
1043 bar.setProgress( incCounter ); 1044 bar.setProgress( incCounter );
1044 ++incCounter; 1045 ++incCounter;
1045 uid = inR->uid(); 1046 uid = inR->uid();
1046 bool skipIncidence = false; 1047 bool skipIncidence = false;
1047 if ( uid.left(15) == QString("last-syncEvent-") ) 1048 if ( uid.left(15) == QString("last-syncEvent-") )
1048 skipIncidence = true; 1049 skipIncidence = true;
1049 QString idS; 1050 QString idS;
1050 qApp->processEvents(); 1051 qApp->processEvents();
1051 if ( !skipIncidence ) { 1052 if ( !skipIncidence ) {
1052 inL = local->incidence( uid ); 1053 inL = local->incidence( uid );
1053 if ( inL ) { // maybe conflict - same uid in both calendars 1054 if ( inL ) { // maybe conflict - same uid in both calendars
1054 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1055 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1055 //qDebug("take %d %s ", take, inL->summary().latin1()); 1056 //qDebug("take %d %s ", take, inL->summary().latin1());
1056 if ( take == 3 ) 1057 if ( take == 3 )
1057 return false; 1058 return false;
1058 if ( take == 1 ) {// take local ********************** 1059 if ( take == 1 ) {// take local **********************
1059 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1060 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1060 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1061 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1061 else 1062 else
1062 idS = inR->IDStr(); 1063 idS = inR->IDStr();
1063 remote->deleteIncidence( inR ); 1064 remote->deleteIncidence( inR );
1064 inR = inL->clone(); 1065 inR = inL->clone();
1065 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1066 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1066 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1067 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1067 inR->setIDStr( idS ); 1068 inR->setIDStr( idS );
1068 remote->addIncidence( inR ); 1069 remote->addIncidence( inR );
1069 if ( mSyncManager->syncWithDesktop() ) 1070 if ( mSyncManager->syncWithDesktop() )
1070 inR->setPilotId( 2 ); 1071 inR->setPilotId( 2 );
1071 ++changedRemote; 1072 ++changedRemote;
1072 } else {// take remote ********************** 1073 } else {// take remote **********************
1073 idS = inL->IDStr(); 1074 idS = inL->IDStr();
1074 int pid = inL->pilotId(); 1075 int pid = inL->pilotId();
1075 local->deleteIncidence( inL ); 1076 local->deleteIncidence( inL );
1076 inL = inR->clone(); 1077 inL = inR->clone();
1077 if ( mSyncManager->syncWithDesktop() ) 1078 if ( mSyncManager->syncWithDesktop() )
1078 inL->setPilotId( pid ); 1079 inL->setPilotId( pid );
1079 inL->setIDStr( idS ); 1080 inL->setIDStr( idS );
1080 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1081 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1081 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1082 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1082 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1083 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1083 } 1084 }
1084 local->addIncidence( inL ); 1085 local->addIncidence( inL );
1085 ++changedLocal; 1086 ++changedLocal;
1086 } 1087 }
1087 } 1088 }
1088 } else { // no conflict ********** add or delete remote 1089 } else { // no conflict ********** add or delete remote
1089 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1090 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1090 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1091 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1091 QString des = eventLSync->description(); 1092 QString des = eventLSync->description();
1092 QString pref = "e"; 1093 QString pref = "e";
1093 if ( inR->type() == "Todo" ) 1094 if ( inR->type() == "Todo" )
1094 pref = "t"; 1095 pref = "t";
1095 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1096 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1096 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1097 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1097 //remote->deleteIncidence( inR ); 1098 //remote->deleteIncidence( inR );
1098 ++deletedEventR; 1099 ++deletedEventR;
1099 } else { 1100 } else {
1100 inR->setLastModified( modifiedCalendar ); 1101 inR->setLastModified( modifiedCalendar );
1101 inL = inR->clone(); 1102 inL = inR->clone();
1102 inL->setIDStr( ":" ); 1103 inL->setIDStr( ":" );
1103 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1104 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1104 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1105 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1105 local->addIncidence( inL ); 1106 local->addIncidence( inL );
1106 ++addedEvent; 1107 ++addedEvent;
1107 1108
1108 } 1109 }
1109 } else { 1110 } else {
1110 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1111 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1111 inR->setLastModified( modifiedCalendar ); 1112 inR->setLastModified( modifiedCalendar );
1112 inL = inR->clone(); 1113 inL = inR->clone();
1113 inL->setIDStr( ":" ); 1114 inL->setIDStr( ":" );
1114 local->addIncidence( inL ); 1115 local->addIncidence( inL );
1115 ++addedEvent; 1116 ++addedEvent;
1116 1117
1117 } else { 1118 } else {
1118 checkExternSyncEvent(eventRSyncSharp, inR); 1119 checkExternSyncEvent(eventRSyncSharp, inR);
1119 remote->deleteIncidence( inR ); 1120 remote->deleteIncidence( inR );
1120 ++deletedEventR; 1121 ++deletedEventR;
1121 } 1122 }
1122 } 1123 }
1123 } else { 1124 } else {
1124 ++filteredIN; 1125 ++filteredIN;
1125 } 1126 }
1126 } 1127 }
1127 } 1128 }
1128 inR = er.next(); 1129 inR = er.next();
1129 } 1130 }
1130 QPtrList<Incidence> el = local->rawIncidences(); 1131 QPtrList<Incidence> el = local->rawIncidences();
1131 inL = el.first(); 1132 inL = el.first();
1132 modulo = (el.count()/10)+1; 1133 modulo = (el.count()/10)+1;
1133 bar.setCaption (i18n("Add / remove events") ); 1134 bar.setCaption (i18n("Add / remove events") );
1134 bar.setTotalSteps ( el.count() ) ; 1135 bar.setTotalSteps ( el.count() ) ;
1135 bar.show(); 1136 bar.show();
1136 incCounter = 0; 1137 incCounter = 0;
1137 1138
1138 while ( inL ) { 1139 while ( inL ) {
1139 1140
1140 qApp->processEvents(); 1141 qApp->processEvents();
1141 if ( ! bar.isVisible() ) 1142 if ( ! bar.isVisible() )
1142 return false; 1143 return false;
1143 if ( incCounter % modulo == 0 ) 1144 if ( incCounter % modulo == 0 )
1144 bar.setProgress( incCounter ); 1145 bar.setProgress( incCounter );
1145 ++incCounter; 1146 ++incCounter;
1146 uid = inL->uid(); 1147 uid = inL->uid();
1147 bool skipIncidence = false; 1148 bool skipIncidence = false;
1148 if ( uid.left(15) == QString("last-syncEvent-") ) 1149 if ( uid.left(15) == QString("last-syncEvent-") )
1149 skipIncidence = true; 1150 skipIncidence = true;
1150 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1151 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1151 skipIncidence = true; 1152 skipIncidence = true;
1152 if ( !skipIncidence ) { 1153 if ( !skipIncidence ) {
1153 inR = remote->incidence( uid ); 1154 inR = remote->incidence( uid );
1154 if ( ! inR ) { 1155 if ( ! inR ) {
1155 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1156 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1156 // no conflict ********** add or delete local 1157 // no conflict ********** add or delete local
1157 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1158 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1158 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1159 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1159 checkExternSyncEvent(eventLSyncSharp, inL); 1160 checkExternSyncEvent(eventLSyncSharp, inL);
1160 local->deleteIncidence( inL ); 1161 local->deleteIncidence( inL );
1161 ++deletedEventL; 1162 ++deletedEventL;
1162 } else { 1163 } else {
1163 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1164 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1164 inL->removeID(mCurrentSyncDevice ); 1165 inL->removeID(mCurrentSyncDevice );
1165 ++addedEventR; 1166 ++addedEventR;
1166 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1167 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1167 inL->setLastModified( modifiedCalendar ); 1168 inL->setLastModified( modifiedCalendar );
1168 inR = inL->clone(); 1169 inR = inL->clone();
1169 inR->setIDStr( ":" ); 1170 inR->setIDStr( ":" );
1170 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1171 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1171 remote->addIncidence( inR ); 1172 remote->addIncidence( inR );
1172 } 1173 }
1173 } 1174 }
1174 } else { 1175 } else {
1175 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1176 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1176 checkExternSyncEvent(eventLSyncSharp, inL); 1177 checkExternSyncEvent(eventLSyncSharp, inL);
1177 local->deleteIncidence( inL ); 1178 local->deleteIncidence( inL );
1178 ++deletedEventL; 1179 ++deletedEventL;
1179 } else { 1180 } else {
1180 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1181 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1181 ++addedEventR; 1182 ++addedEventR;
1182 inL->setLastModified( modifiedCalendar ); 1183 inL->setLastModified( modifiedCalendar );
1183 inR = inL->clone(); 1184 inR = inL->clone();
1184 inR->setIDStr( ":" ); 1185 inR->setIDStr( ":" );
1185 remote->addIncidence( inR ); 1186 remote->addIncidence( inR );
1186 } 1187 }
1187 } 1188 }
1188 } 1189 }
1189 } else { 1190 } else {
1190 ++filteredOUT; 1191 ++filteredOUT;
1191 } 1192 }
1192 } 1193 }
1193 } 1194 }
1194 inL = el.next(); 1195 inL = el.next();
1195 } 1196 }
1196 int delFut = 0; 1197 int delFut = 0;
1197 int remRem = 0; 1198 int remRem = 0;
1198 if ( mSyncManager->mWriteBackInFuture ) { 1199 if ( mSyncManager->mWriteBackInFuture ) {
1199 er = remote->rawIncidences(); 1200 er = remote->rawIncidences();
1200 remRem = er.count(); 1201 remRem = er.count();
1201 inR = er.first(); 1202 inR = er.first();
1202 QDateTime dt; 1203 QDateTime dt;
1203 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1204 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1204 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1205 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1205 while ( inR ) { 1206 while ( inR ) {
1206 if ( inR->type() == "Todo" ) { 1207 if ( inR->type() == "Todo" ) {
1207 Todo * t = (Todo*)inR; 1208 Todo * t = (Todo*)inR;
1208 if ( t->hasDueDate() ) 1209 if ( t->hasDueDate() )
1209 dt = t->dtDue(); 1210 dt = t->dtDue();
1210 else 1211 else
1211 dt = cur.addSecs( 62 ); 1212 dt = cur.addSecs( 62 );
1212 } 1213 }
1213 else if (inR->type() == "Event" ) { 1214 else if (inR->type() == "Event" ) {
1214 bool ok; 1215 bool ok;
1215 dt = inR->getNextOccurence( cur, &ok ); 1216 dt = inR->getNextOccurence( cur, &ok );
1216 if ( !ok ) 1217 if ( !ok )
1217 dt = cur.addSecs( -62 ); 1218 dt = cur.addSecs( -62 );
1218 } 1219 }
1219 else 1220 else
1220 dt = inR->dtStart(); 1221 dt = inR->dtStart();
1221 if ( dt < cur || dt > end ) { 1222 if ( dt < cur || dt > end ) {
1222 remote->deleteIncidence( inR ); 1223 remote->deleteIncidence( inR );
1223 ++delFut; 1224 ++delFut;
1224 } 1225 }
1225 inR = er.next(); 1226 inR = er.next();
1226 } 1227 }
1227 } 1228 }
1228 bar.hide(); 1229 bar.hide();
1229 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1230 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1230 eventLSync->setReadOnly( false ); 1231 eventLSync->setReadOnly( false );
1231 eventLSync->setDtStart( mLastCalendarSync ); 1232 eventLSync->setDtStart( mLastCalendarSync );
1232 eventRSync->setDtStart( mLastCalendarSync ); 1233 eventRSync->setDtStart( mLastCalendarSync );
1233 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1234 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1234 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1235 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1235 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1236 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1236 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1237 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1237 eventLSync->setReadOnly( true ); 1238 eventLSync->setReadOnly( true );
1238 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1239 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1239 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal... 1240 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal...
1240 remote->addEvent( eventRSync ); 1241 remote->addEvent( eventRSync );
1241 else 1242 else
1242 delete eventRSync; 1243 delete eventRSync;
1243 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1244 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1244 QString mes; 1245 QString mes;
1245 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT ); 1246 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT );
1246 QString delmess; 1247 QString delmess;
1247 if ( delFut ) { 1248 if ( delFut ) {
1248 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut); 1249 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut);
1249 mes += delmess; 1250 mes += delmess;
1250 } 1251 }
1251 mes = i18n("Local calendar changed!\n") +mes; 1252 mes = i18n("Local calendar changed!\n") +mes;
1252 mCalendar->checkAlarmForIncidence( 0, true ); 1253 mCalendar->checkAlarmForIncidence( 0, true );
1253 qDebug( mes ); 1254 qDebug( mes );
1254 if ( mSyncManager->mShowSyncSummary ) { 1255 if ( mSyncManager->mShowSyncSummary ) {
1255 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1256 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1256 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1257 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1257 qDebug("KO: WB cancelled "); 1258 qDebug("KO: WB cancelled ");
1258 mSyncManager->mWriteBackFile = false; 1259 mSyncManager->mWriteBackFile = false;
1259 return syncOK; 1260 return syncOK;
1260 } 1261 }
1261 } 1262 }
1262 return syncOK; 1263 return syncOK;
1263} 1264}
1264 1265
1265void CalendarView::setSyncDevice( QString s ) 1266void CalendarView::setSyncDevice( QString s )
1266{ 1267{
1267 mCurrentSyncDevice= s; 1268 mCurrentSyncDevice= s;
1268} 1269}
1269void CalendarView::setSyncName( QString s ) 1270void CalendarView::setSyncName( QString s )
1270{ 1271{
1271 mCurrentSyncName= s; 1272 mCurrentSyncName= s;
1272} 1273}
1273bool CalendarView::syncCalendar(QString filename, int mode) 1274bool CalendarView::syncCalendar(QString filename, int mode)
1274{ 1275{
1275 //qDebug("syncCalendar %s ", filename.latin1()); 1276 //qDebug("syncCalendar %s ", filename.latin1());
1276 mGlobalSyncMode = SYNC_MODE_NORMAL; 1277 mGlobalSyncMode = SYNC_MODE_NORMAL;
1277 CalendarLocal* calendar = new CalendarLocal(); 1278 CalendarLocal* calendar = new CalendarLocal();
1278 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1279 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1279 FileStorage* storage = new FileStorage( calendar ); 1280 FileStorage* storage = new FileStorage( calendar );
1280 bool syncOK = false; 1281 bool syncOK = false;
1281 storage->setFileName( filename ); 1282 storage->setFileName( filename );
1282 // qDebug("loading ... "); 1283 // qDebug("loading ... ");
1283 if ( storage->load() ) { 1284 if ( storage->load() ) {
1284 getEventViewerDialog()->setSyncMode( true ); 1285 getEventViewerDialog()->setSyncMode( true );
1285 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1286 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1286 getEventViewerDialog()->setSyncMode( false ); 1287 getEventViewerDialog()->setSyncMode( false );
1287 if ( syncOK ) { 1288 if ( syncOK ) {
1288 if ( mSyncManager->mWriteBackFile ) 1289 if ( mSyncManager->mWriteBackFile )
1289 { 1290 {
1290 storage->setSaveFormat( new ICalFormat() ); 1291 storage->setSaveFormat( new ICalFormat() );
1291 storage->save(); 1292 storage->save();
1292 } 1293 }
1293 } 1294 }
1294 setModified( true ); 1295 setModified( true );
1295 } 1296 }
1296 delete storage; 1297 delete storage;
1297 delete calendar; 1298 delete calendar;
1298 if ( syncOK ) 1299 if ( syncOK )
1299 updateView(); 1300 updateView();
1300 return syncOK; 1301 return syncOK;
1301} 1302}
1302 1303
1303void CalendarView::syncExternal( int mode ) 1304void CalendarView::syncExternal( int mode )
1304{ 1305{
1305 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1306 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1306 1307
1307 qApp->processEvents(); 1308 qApp->processEvents();
1308 CalendarLocal* calendar = new CalendarLocal(); 1309 CalendarLocal* calendar = new CalendarLocal();
1309 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1310 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1310 bool syncOK = false; 1311 bool syncOK = false;
1311 bool loadSuccess = false; 1312 bool loadSuccess = false;
1312 PhoneFormat* phoneFormat = 0; 1313 PhoneFormat* phoneFormat = 0;
1313 emit tempDisableBR(true); 1314 emit tempDisableBR(true);
1314#ifndef DESKTOP_VERSION 1315#ifndef DESKTOP_VERSION
1315 SharpFormat* sharpFormat = 0; 1316 SharpFormat* sharpFormat = 0;
1316 if ( mode == 0 ) { // sharp 1317 if ( mode == 0 ) { // sharp
1317 sharpFormat = new SharpFormat () ; 1318 sharpFormat = new SharpFormat () ;
1318 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1319 loadSuccess = sharpFormat->load( calendar, mCalendar );
1319 1320
1320 } else 1321 } else
1321#endif 1322#endif
1322 if ( mode == 1 ) { // phone 1323 if ( mode == 1 ) { // phone
1323 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1324 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1324 mSyncManager->mPhoneDevice, 1325 mSyncManager->mPhoneDevice,
1325 mSyncManager->mPhoneConnection, 1326 mSyncManager->mPhoneConnection,
1326 mSyncManager->mPhoneModel); 1327 mSyncManager->mPhoneModel);
1327 loadSuccess = phoneFormat->load( calendar,mCalendar); 1328 loadSuccess = phoneFormat->load( calendar,mCalendar);
1328 1329
1329 } else { 1330 } else {
1330 emit tempDisableBR(false); 1331 emit tempDisableBR(false);
1331 return; 1332 return;
1332 } 1333 }
1333 if ( loadSuccess ) { 1334 if ( loadSuccess ) {
1334 getEventViewerDialog()->setSyncMode( true ); 1335 getEventViewerDialog()->setSyncMode( true );
1335 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1336 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1336 getEventViewerDialog()->setSyncMode( false ); 1337 getEventViewerDialog()->setSyncMode( false );
1337 qApp->processEvents(); 1338 qApp->processEvents();
1338 if ( syncOK ) { 1339 if ( syncOK ) {
1339 if ( mSyncManager->mWriteBackFile ) 1340 if ( mSyncManager->mWriteBackFile )
1340 { 1341 {
1341 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1342 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1342 Incidence* inc = iL.first(); 1343 Incidence* inc = iL.first();
1343 if ( phoneFormat ) { 1344 if ( phoneFormat ) {
1344 while ( inc ) { 1345 while ( inc ) {
1345 inc->removeID(mCurrentSyncDevice); 1346 inc->removeID(mCurrentSyncDevice);
1346 inc = iL.next(); 1347 inc = iL.next();
1347 } 1348 }
1348 } 1349 }
1349#ifndef DESKTOP_VERSION 1350#ifndef DESKTOP_VERSION
1350 if ( sharpFormat ) 1351 if ( sharpFormat )
1351 sharpFormat->save(calendar); 1352 sharpFormat->save(calendar);
1352#endif 1353#endif
1353 if ( phoneFormat ) 1354 if ( phoneFormat )
1354 phoneFormat->save(calendar); 1355 phoneFormat->save(calendar);
1355 iL = calendar->rawIncidences(); 1356 iL = calendar->rawIncidences();
1356 inc = iL.first(); 1357 inc = iL.first();
1357 Incidence* loc; 1358 Incidence* loc;
1358 while ( inc ) { 1359 while ( inc ) {
1359 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1360 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1360 loc = mCalendar->incidence(inc->uid() ); 1361 loc = mCalendar->incidence(inc->uid() );
1361 if ( loc ) { 1362 if ( loc ) {
1362 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1363 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1363 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1364 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1364 } 1365 }
1365 } 1366 }
1366 inc = iL.next(); 1367 inc = iL.next();
1367 } 1368 }
1368 Incidence* lse = getLastSyncEvent(); 1369 Incidence* lse = getLastSyncEvent();
1369 if ( lse ) { 1370 if ( lse ) {
1370 lse->setReadOnly( false ); 1371 lse->setReadOnly( false );
1371 lse->setDescription( "" ); 1372 lse->setDescription( "" );
1372 lse->setReadOnly( true ); 1373 lse->setReadOnly( true );
1373 } 1374 }
1374 } 1375 }
1375 } else { 1376 } else {
1376 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 1377 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
1377 } 1378 }
1378 setModified( true ); 1379 setModified( true );
1379 } else { 1380 } else {
1380 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1381 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1381 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1382 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1382 question, i18n("Ok")) ; 1383 question, i18n("Ok")) ;
1383 1384
1384 } 1385 }
1385 delete calendar; 1386 delete calendar;
1386 updateView(); 1387 updateView();
1387 emit tempDisableBR(false); 1388 emit tempDisableBR(false);
1388 return ;//syncOK; 1389 return ;//syncOK;
1389 1390
1390} 1391}
1391 1392
1392bool CalendarView::importBday() 1393bool CalendarView::importBday()
1393{ 1394{
1394#ifndef KORG_NOKABC 1395#ifndef KORG_NOKABC
1395 1396
1396#ifdef DESKTOP_VERSION 1397#ifdef DESKTOP_VERSION
1397 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1398 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1398 KABC::AddressBook::Iterator it; 1399 KABC::AddressBook::Iterator it;
1399 int count = 0; 1400 int count = 0;
1400 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1401 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1401 ++count; 1402 ++count;
1402 } 1403 }
1403 QProgressBar bar(count,0 ); 1404 QProgressBar bar(count,0 );
1404 int w = 300; 1405 int w = 300;
1405 if ( QApplication::desktop()->width() < 320 ) 1406 if ( QApplication::desktop()->width() < 320 )
1406 w = 220; 1407 w = 220;
1407 int h = bar.sizeHint().height() ; 1408 int h = bar.sizeHint().height() ;
1408 int dw = QApplication::desktop()->width(); 1409 int dw = QApplication::desktop()->width();
1409 int dh = QApplication::desktop()->height(); 1410 int dh = QApplication::desktop()->height();
1410 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1411 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1411 bar.show(); 1412 bar.show();
1412 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1413 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1413 qApp->processEvents(); 1414 qApp->processEvents();
1414 count = 0; 1415 count = 0;
1415 int addCount = 0; 1416 int addCount = 0;
1416 KCal::Attendee* a = 0; 1417 KCal::Attendee* a = 0;
1417 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1418 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1418 if ( ! bar.isVisible() ) 1419 if ( ! bar.isVisible() )
1419 return false; 1420 return false;
1420 bar.setProgress( count++ ); 1421 bar.setProgress( count++ );
1421 qApp->processEvents(); 1422 qApp->processEvents();
1422 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1423 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1423 if ( (*it).birthday().date().isValid() ){ 1424 if ( (*it).birthday().date().isValid() ){
1424 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1425 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1425 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1426 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1426 ++addCount; 1427 ++addCount;
1427 } 1428 }
1428 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1429 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1429 if ( anni.isValid() ){ 1430 if ( anni.isValid() ){
1430 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1431 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1431 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1432 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1432 ++addCount; 1433 ++addCount;
1433 } 1434 }
1434 } 1435 }
1435 updateView(); 1436 updateView();
1436 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1437 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1437#else //DESKTOP_VERSION 1438#else //DESKTOP_VERSION
1438 1439
1439 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 1440 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
1440 // the result should now arrive through method insertBirthdays 1441 // the result should now arrive through method insertBirthdays
1441 1442
1442#endif //DESKTOP_VERSION 1443#endif //DESKTOP_VERSION
1443 1444
1444#endif //KORG_NOKABC 1445#endif //KORG_NOKABC
1445 1446
1446 1447
1447 return true; 1448 return true;
1448} 1449}
1449 1450
1450// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 1451// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
1451void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 1452void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
1452 const QStringList& anniversaryList, const QStringList& realNameList, 1453 const QStringList& anniversaryList, const QStringList& realNameList,
1453 const QStringList& emailList, const QStringList& assembledNameList, 1454 const QStringList& emailList, const QStringList& assembledNameList,
1454 const QStringList& uidList) 1455 const QStringList& uidList)
1455{ 1456{
1456 //qDebug("KO::CalendarView::insertBirthdays"); 1457 //qDebug("KO::CalendarView::insertBirthdays");
1457 if (uid == this->name()) 1458 if (uid == this->name())
1458 { 1459 {
1459 int count = birthdayList.count(); 1460 int count = birthdayList.count();
1460 int addCount = 0; 1461 int addCount = 0;
1461 KCal::Attendee* a = 0; 1462 KCal::Attendee* a = 0;
1462 1463
1463 //qDebug("CalView 1 %i", count); 1464 //qDebug("CalView 1 %i", count);
1464 1465
1465 QProgressBar bar(count,0 ); 1466 QProgressBar bar(count,0 );
1466 int w = 300; 1467 int w = 300;
1467 if ( QApplication::desktop()->width() < 320 ) 1468 if ( QApplication::desktop()->width() < 320 )
1468 w = 220; 1469 w = 220;
1469 int h = bar.sizeHint().height() ; 1470 int h = bar.sizeHint().height() ;
1470 int dw = QApplication::desktop()->width(); 1471 int dw = QApplication::desktop()->width();
1471 int dh = QApplication::desktop()->height(); 1472 int dh = QApplication::desktop()->height();
1472 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1473 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1473 bar.show(); 1474 bar.show();
1474 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 1475 bar.setCaption (i18n("inserting birthdays - close to abort!") );
1475 qApp->processEvents(); 1476 qApp->processEvents();
1476 1477
1477 QDate birthday; 1478 QDate birthday;
1478 QDate anniversary; 1479 QDate anniversary;
1479 QString realName; 1480 QString realName;
1480 QString email; 1481 QString email;
1481 QString assembledName; 1482 QString assembledName;
1482 QString uid; 1483 QString uid;
1483 bool ok = true; 1484 bool ok = true;
1484 for ( int i = 0; i < count; i++) 1485 for ( int i = 0; i < count; i++)
1485 { 1486 {
1486 if ( ! bar.isVisible() ) 1487 if ( ! bar.isVisible() )
1487 return; 1488 return;
1488 bar.setProgress( i ); 1489 bar.setProgress( i );
1489 qApp->processEvents(); 1490 qApp->processEvents();
1490 1491
1491 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 1492 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
1492 if (!ok) { 1493 if (!ok) {
1493 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 1494 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
1494 } 1495 }
1495 1496
1496 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 1497 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
1497 if (!ok) { 1498 if (!ok) {
1498 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 1499 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
1499 } 1500 }
1500 realName = realNameList[i]; 1501 realName = realNameList[i];
1501 email = emailList[i]; 1502 email = emailList[i];
1502 assembledName = assembledNameList[i]; 1503 assembledName = assembledNameList[i];
1503 uid = uidList[i]; 1504 uid = uidList[i];
1504 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() ); 1505 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() );
1505 1506
1506 if ( birthday.isValid() ){ 1507 if ( birthday.isValid() ){
1507 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1508 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1508 KCal::Attendee::ReqParticipant,uid) ; 1509 KCal::Attendee::ReqParticipant,uid) ;
1509 if ( addAnniversary( birthday, assembledName, a, true ) ) 1510 if ( addAnniversary( birthday, assembledName, a, true ) )
1510 ++addCount; 1511 ++addCount;
1511 } 1512 }
1512 1513
1513 if ( anniversary.isValid() ){ 1514 if ( anniversary.isValid() ){
1514 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1515 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1515 KCal::Attendee::ReqParticipant,uid) ; 1516 KCal::Attendee::ReqParticipant,uid) ;
1516 if ( addAnniversary( anniversary, assembledName, a, false ) ) 1517 if ( addAnniversary( anniversary, assembledName, a, false ) )
1517 ++addCount; 1518 ++addCount;
1518 } 1519 }
1519 } 1520 }
1520 1521
1521 updateView(); 1522 updateView();
1522 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1523 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1523 1524
1524 } 1525 }
1525 1526
1526} 1527}
1527 1528
1528 1529
1529 1530
1530bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1531bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1531{ 1532{
1532 //qDebug("addAnni "); 1533 //qDebug("addAnni ");
1533 Event * ev = new Event(); 1534 Event * ev = new Event();
1534 ev->setOrganizer(KOPrefs::instance()->email()); 1535 ev->setOrganizer(KOPrefs::instance()->email());
1535 if ( a ) { 1536 if ( a ) {
1536 ev->addAttendee( a ); 1537 ev->addAttendee( a );
1537 } 1538 }
1538 QString kind; 1539 QString kind;
1539 if ( birthday ) { 1540 if ( birthday ) {
1540 kind = i18n( "Birthday" ); 1541 kind = i18n( "Birthday" );
1541 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 1542 ev->setSummary( name + " (" + QString::number(date.year()) +")");
1542 } 1543 }
1543 else { 1544 else {
1544 kind = i18n( "Anniversary" ); 1545 kind = i18n( "Anniversary" );
1545 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 1546 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
1546 } 1547 }
1547 ev->setCategories( kind ); 1548 ev->setCategories( kind );
1548 ev->setDtStart( QDateTime(date) ); 1549 ev->setDtStart( QDateTime(date) );
1549 ev->setDtEnd( QDateTime(date) ); 1550 ev->setDtEnd( QDateTime(date) );
1550 ev->setFloats( true ); 1551 ev->setFloats( true );
1551 Recurrence * rec = ev->recurrence(); 1552 Recurrence * rec = ev->recurrence();
1552 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1553 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1553 rec->addYearlyNum( date.month() ); 1554 rec->addYearlyNum( date.month() );
1554 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1555 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1555 delete ev; 1556 delete ev;
1556 return false; 1557 return false;
1557 } 1558 }
1558 return true; 1559 return true;
1559 1560
1560} 1561}
1561bool CalendarView::importQtopia( const QString &categories, 1562bool CalendarView::importQtopia( const QString &categories,
1562 const QString &datebook, 1563 const QString &datebook,
1563 const QString &todolist ) 1564 const QString &todolist )
1564{ 1565{
1565 1566
1566 QtopiaFormat qtopiaFormat; 1567 QtopiaFormat qtopiaFormat;
1567 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1568 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1568 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1569 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1569 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1570 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1570 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1571 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1571 1572
1572 updateView(); 1573 updateView();
1573 return true; 1574 return true;
1574 1575
1575#if 0 1576#if 0
1576 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1577 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1577 mCurrentSyncDevice = "qtopia-XML"; 1578 mCurrentSyncDevice = "qtopia-XML";
1578 if ( mSyncManager->mAskForPreferences ) 1579 if ( mSyncManager->mAskForPreferences )
1579 edit_sync_options(); 1580 edit_sync_options();
1580 qApp->processEvents(); 1581 qApp->processEvents();
1581 CalendarLocal* calendar = new CalendarLocal(); 1582 CalendarLocal* calendar = new CalendarLocal();
1582 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1583 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1583 bool syncOK = false; 1584 bool syncOK = false;
1584 QtopiaFormat qtopiaFormat; 1585 QtopiaFormat qtopiaFormat;
1585 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1586 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1586 bool loadOk = true; 1587 bool loadOk = true;
1587 if ( !categories.isEmpty() ) 1588 if ( !categories.isEmpty() )
1588 loadOk = qtopiaFormat.load( calendar, categories ); 1589 loadOk = qtopiaFormat.load( calendar, categories );
1589 if ( loadOk && !datebook.isEmpty() ) 1590 if ( loadOk && !datebook.isEmpty() )
1590 loadOk = qtopiaFormat.load( calendar, datebook ); 1591 loadOk = qtopiaFormat.load( calendar, datebook );
1591 if ( loadOk && !todolist.isEmpty() ) 1592 if ( loadOk && !todolist.isEmpty() )
1592 loadOk = qtopiaFormat.load( calendar, todolist ); 1593 loadOk = qtopiaFormat.load( calendar, todolist );
1593 1594
1594 if ( loadOk ) { 1595 if ( loadOk ) {
1595 getEventViewerDialog()->setSyncMode( true ); 1596 getEventViewerDialog()->setSyncMode( true );
1596 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1597 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1597 getEventViewerDialog()->setSyncMode( false ); 1598 getEventViewerDialog()->setSyncMode( false );
1598 qApp->processEvents(); 1599 qApp->processEvents();
1599 if ( syncOK ) { 1600 if ( syncOK ) {
1600 if ( mSyncManager->mWriteBackFile ) 1601 if ( mSyncManager->mWriteBackFile )
1601 { 1602 {
1602 // write back XML file 1603 // write back XML file
1603 1604
1604 } 1605 }
1605 setModified( true ); 1606 setModified( true );
1606 } 1607 }
1607 } else { 1608 } else {
1608 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1609 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1609 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1610 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1610 question, i18n("Ok")) ; 1611 question, i18n("Ok")) ;
1611 } 1612 }
1612 delete calendar; 1613 delete calendar;
1613 updateView(); 1614 updateView();
1614 return syncOK; 1615 return syncOK;
1615 1616
1616 1617
1617#endif 1618#endif
1618 1619
1619} 1620}
1620 1621
1621void CalendarView::setSyncEventsReadOnly() 1622void CalendarView::setSyncEventsReadOnly()
1622{ 1623{
1623 Event * ev; 1624 Event * ev;
1624 QPtrList<Event> eL = mCalendar->rawEvents(); 1625 QPtrList<Event> eL = mCalendar->rawEvents();
1625 ev = eL.first(); 1626 ev = eL.first();
1626 while ( ev ) { 1627 while ( ev ) {
1627 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1628 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1628 ev->setReadOnly( true ); 1629 ev->setReadOnly( true );
1629 ev = eL.next(); 1630 ev = eL.next();
1630 } 1631 }
1631} 1632}
1632bool CalendarView::openCalendar(QString filename, bool merge) 1633bool CalendarView::openCalendar(QString filename, bool merge)
1633{ 1634{
1634 1635
1635 if (filename.isEmpty()) { 1636 if (filename.isEmpty()) {
1636 return false; 1637 return false;
1637 } 1638 }
1638 1639
1639 if (!QFile::exists(filename)) { 1640 if (!QFile::exists(filename)) {
1640 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1641 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1641 return false; 1642 return false;
1642 } 1643 }
1643 1644
1644 globalFlagBlockAgenda = 1; 1645 globalFlagBlockAgenda = 1;
1645 if (!merge) mCalendar->close(); 1646 if (!merge) mCalendar->close();
1646 1647
1647 mStorage->setFileName( filename ); 1648 mStorage->setFileName( filename );
1648 1649
1649 if ( mStorage->load() ) { 1650 if ( mStorage->load() ) {
1650 if ( merge ) ;//setModified( true ); 1651 if ( merge ) ;//setModified( true );
1651 else { 1652 else {
1652 //setModified( true ); 1653 //setModified( true );
1653 mViewManager->setDocumentId( filename ); 1654 mViewManager->setDocumentId( filename );
1654 mDialogManager->setDocumentId( filename ); 1655 mDialogManager->setDocumentId( filename );
1655 mTodoList->setDocumentId( filename ); 1656 mTodoList->setDocumentId( filename );
1656 } 1657 }
1657 globalFlagBlockAgenda = 2; 1658 globalFlagBlockAgenda = 2;
1658 // if ( getLastSyncEvent() ) 1659 // if ( getLastSyncEvent() )
1659 // getLastSyncEvent()->setReadOnly( true ); 1660 // getLastSyncEvent()->setReadOnly( true );
1660 mCalendar->reInitAlarmSettings(); 1661 mCalendar->reInitAlarmSettings();
1661 setSyncEventsReadOnly(); 1662 setSyncEventsReadOnly();
1662 updateUnmanagedViews(); 1663 updateUnmanagedViews();
1663 updateView(); 1664 updateView();
1664 if ( filename != MainWindow::defaultFileName() ) { 1665 if ( filename != MainWindow::defaultFileName() ) {
1665 saveCalendar( MainWindow::defaultFileName() ); 1666 saveCalendar( MainWindow::defaultFileName() );
1666 } else { 1667 } else {
1667 QFileInfo finf ( MainWindow::defaultFileName()); 1668 QFileInfo finf ( MainWindow::defaultFileName());
1668 if ( finf.exists() ) { 1669 if ( finf.exists() ) {
1669 setLoadedFileVersion( finf.lastModified () ); 1670 setLoadedFileVersion( finf.lastModified () );
1670 } 1671 }
1671 } 1672 }
1672 return true; 1673 return true;
1673 } else { 1674 } else {
1674 // while failing to load, the calendar object could 1675 // while failing to load, the calendar object could
1675 // have become partially populated. Clear it out. 1676 // have become partially populated. Clear it out.
1676 if ( !merge ) { 1677 if ( !merge ) {
1677 mCalendar->close(); 1678 mCalendar->close();
1678 mViewManager->setDocumentId( filename ); 1679 mViewManager->setDocumentId( filename );
1679 mDialogManager->setDocumentId( filename ); 1680 mDialogManager->setDocumentId( filename );
1680 mTodoList->setDocumentId( filename ); 1681 mTodoList->setDocumentId( filename );
1681 } 1682 }
1682 1683
1683 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1684 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1684 1685
1685 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1686 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1686 globalFlagBlockAgenda = 2; 1687 globalFlagBlockAgenda = 2;
1687 mCalendar->reInitAlarmSettings(); 1688 mCalendar->reInitAlarmSettings();
1688 setSyncEventsReadOnly(); 1689 setSyncEventsReadOnly();
1689 updateUnmanagedViews(); 1690 updateUnmanagedViews();
1690 updateView(); 1691 updateView();
1691 } 1692 }
1692 return false; 1693 return false;
1693} 1694}
1694void CalendarView::showOpenError() 1695void CalendarView::showOpenError()
1695{ 1696{
1696 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1697 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1697} 1698}
1698void CalendarView::setLoadedFileVersion(QDateTime dt) 1699void CalendarView::setLoadedFileVersion(QDateTime dt)
1699{ 1700{
1700 loadedFileVersion = dt; 1701 loadedFileVersion = dt;
1701} 1702}
1702bool CalendarView::checkFileChanged(QString fn) 1703bool CalendarView::checkFileChanged(QString fn)
1703{ 1704{
1704 QFileInfo finf ( fn ); 1705 QFileInfo finf ( fn );
1705 if ( !finf.exists() ) 1706 if ( !finf.exists() )
1706 return true; 1707 return true;
1707 QDateTime dt = finf.lastModified (); 1708 QDateTime dt = finf.lastModified ();
1708 if ( dt <= loadedFileVersion ) 1709 if ( dt <= loadedFileVersion )
1709 return false; 1710 return false;
1710 return true; 1711 return true;
1711 1712
1712} 1713}
1713void CalendarView::watchSavedFile() 1714void CalendarView::watchSavedFile()
1714{ 1715{
1715 QFileInfo finf ( MainWindow::defaultFileName()); 1716 QFileInfo finf ( MainWindow::defaultFileName());
1716 if ( !finf.exists() ) 1717 if ( !finf.exists() )
1717 return; 1718 return;
1718 QDateTime dt = finf.lastModified (); 1719 QDateTime dt = finf.lastModified ();
1719 if ( dt < loadedFileVersion ) { 1720 if ( dt < loadedFileVersion ) {
1720 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1721 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1721 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1722 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1722 return; 1723 return;
1723 } 1724 }
1724 loadedFileVersion = dt; 1725 loadedFileVersion = dt;
1725} 1726}
1726 1727
1727bool CalendarView::checkFileVersion(QString fn) 1728bool CalendarView::checkFileVersion(QString fn)
1728{ 1729{
1729 QFileInfo finf ( fn ); 1730 QFileInfo finf ( fn );
1730 if ( !finf.exists() ) 1731 if ( !finf.exists() )
1731 return true; 1732 return true;
1732 QDateTime dt = finf.lastModified (); 1733 QDateTime dt = finf.lastModified ();
1733 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1734 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1734 //qDebug("file on disk version %s",dt.toString().latin1()); 1735 //qDebug("file on disk version %s",dt.toString().latin1());
1735 if ( dt <= loadedFileVersion ) 1736 if ( dt <= loadedFileVersion )
1736 return true; 1737 return true;
1737 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 1738 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
1738 i18n("KO/Pi Warning"),i18n("Overwrite"), 1739 i18n("KO/Pi Warning"),i18n("Overwrite"),
1739 i18n("Sync+save")); 1740 i18n("Sync+save"));
1740 1741
1741 if ( km == KMessageBox::Cancel ) 1742 if ( km == KMessageBox::Cancel )
1742 return false; 1743 return false;
1743 if ( km == KMessageBox::Yes ) 1744 if ( km == KMessageBox::Yes )
1744 return true; 1745 return true;
1745 1746
1746 setSyncDevice("deleteaftersync" ); 1747 setSyncDevice("deleteaftersync" );
1747 mSyncManager->mAskForPreferences = true; 1748 mSyncManager->mAskForPreferences = true;
1748 mSyncManager->mSyncAlgoPrefs = 3; 1749 mSyncManager->mSyncAlgoPrefs = 3;
1749 mSyncManager->mWriteBackFile = false; 1750 mSyncManager->mWriteBackFile = false;
1750 mSyncManager->mWriteBackExistingOnly = false; 1751 mSyncManager->mWriteBackExistingOnly = false;
1751 mSyncManager->mShowSyncSummary = false; 1752 mSyncManager->mShowSyncSummary = false;
1752 syncCalendar( fn, 3 ); 1753 syncCalendar( fn, 3 );
1753 Event * e = getLastSyncEvent(); 1754 Event * e = getLastSyncEvent();
1754 mCalendar->deleteEvent ( e ); 1755 mCalendar->deleteEvent ( e );
1755 updateView(); 1756 updateView();
1756 return true; 1757 return true;
1757} 1758}
1758 1759
1759bool CalendarView::saveCalendar( QString filename ) 1760bool CalendarView::saveCalendar( QString filename )
1760{ 1761{
1761 1762
1762 // Store back all unsaved data into calendar object 1763 // Store back all unsaved data into calendar object
1763 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1764 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1764 if ( mViewManager->currentView() ) 1765 if ( mViewManager->currentView() )
1765 mViewManager->currentView()->flushView(); 1766 mViewManager->currentView()->flushView();
1766 1767
1767 1768
1768 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 1769 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
1769 mStorage->setSaveFormat( new ICalFormat() ); 1770 mStorage->setSaveFormat( new ICalFormat() );
1770 mStorage->setFileName( filename ); 1771 mStorage->setFileName( filename );
1771 bool success; 1772 bool success;
1772 success = mStorage->save(); 1773 success = mStorage->save();
1773 if ( !success ) { 1774 if ( !success ) {
1774 return false; 1775 return false;
1775 } 1776 }
1776 if ( filename == MainWindow::defaultFileName() ) { 1777 if ( filename == MainWindow::defaultFileName() ) {
1777 setLoadedFileVersion( lfv ); 1778 setLoadedFileVersion( lfv );
1778 watchSavedFile(); 1779 watchSavedFile();
1779 } 1780 }
1780 return true; 1781 return true;
1781} 1782}
1782 1783
1783void CalendarView::closeCalendar() 1784void CalendarView::closeCalendar()
1784{ 1785{
1785 1786
1786 // child windows no longer valid 1787 // child windows no longer valid
1787 emit closingDown(); 1788 emit closingDown();
1788 1789
1789 mCalendar->close(); 1790 mCalendar->close();
1790 setModified(false); 1791 setModified(false);
1791 updateView(); 1792 updateView();
1792} 1793}
1793 1794
1794void CalendarView::archiveCalendar() 1795void CalendarView::archiveCalendar()
1795{ 1796{
1796 mDialogManager->showArchiveDialog(); 1797 mDialogManager->showArchiveDialog();
1797} 1798}
1798 1799
1799 1800
1800void CalendarView::readSettings() 1801void CalendarView::readSettings()
1801{ 1802{
1802 1803
1803 1804
1804 // mViewManager->showAgendaView(); 1805 // mViewManager->showAgendaView();
1805 QString str; 1806 QString str;
1806 //qDebug("CalendarView::readSettings() "); 1807 //qDebug("CalendarView::readSettings() ");
1807 // read settings from the KConfig, supplying reasonable 1808 // read settings from the KConfig, supplying reasonable
1808 // defaults where none are to be found 1809 // defaults where none are to be found
1809 KConfig *config = KOGlobals::config(); 1810 KConfig *config = KOGlobals::config();
1810#ifndef KORG_NOSPLITTER 1811#ifndef KORG_NOSPLITTER
1811 config->setGroup("KOrganizer Geometry"); 1812 config->setGroup("KOrganizer Geometry");
1812 1813
1813 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1814 QValueList<int> sizes = config->readIntListEntry("Separator1");
1814 if (sizes.count() != 2) { 1815 if (sizes.count() != 2) {
1815 sizes << mDateNavigator->minimumSizeHint().width(); 1816 sizes << mDateNavigator->minimumSizeHint().width();
1816 sizes << 300; 1817 sizes << 300;
1817 } 1818 }
1818 mPanner->setSizes(sizes); 1819 mPanner->setSizes(sizes);
1819 1820
1820 sizes = config->readIntListEntry("Separator2"); 1821 sizes = config->readIntListEntry("Separator2");
1821 if ( ( mResourceView && sizes.count() == 4 ) || 1822 if ( ( mResourceView && sizes.count() == 4 ) ||
1822 ( !mResourceView && sizes.count() == 3 ) ) { 1823 ( !mResourceView && sizes.count() == 3 ) ) {
1823 mLeftSplitter->setSizes(sizes); 1824 mLeftSplitter->setSizes(sizes);
1824 } 1825 }
1825#endif 1826#endif
1826 globalFlagBlockAgenda = 1; 1827 globalFlagBlockAgenda = 1;
1827 mViewManager->showAgendaView(); 1828 mViewManager->showAgendaView();
1828 //mViewManager->readSettings( config ); 1829 //mViewManager->readSettings( config );
1829 mTodoList->restoreLayout(config,QString("Todo Layout")); 1830 mTodoList->restoreLayout(config,QString("Todo Layout"));
1830 readFilterSettings(config); 1831 readFilterSettings(config);
1831 1832
1832#ifdef DESKTOP_VERSION 1833#ifdef DESKTOP_VERSION
1833 config->setGroup("WidgetLayout"); 1834 config->setGroup("WidgetLayout");
1834 QStringList list; 1835 QStringList list;
1835 list = config->readListEntry("MainLayout"); 1836 list = config->readListEntry("MainLayout");
1836 int x,y,w,h; 1837 int x,y,w,h;
1837 if ( ! list.isEmpty() ) { 1838 if ( ! list.isEmpty() ) {
1838 x = list[0].toInt(); 1839 x = list[0].toInt();
1839 y = list[1].toInt(); 1840 y = list[1].toInt();
1840 w = list[2].toInt(); 1841 w = list[2].toInt();
1841 h = list[3].toInt(); 1842 h = list[3].toInt();
1842 topLevelWidget()->setGeometry(x,y,w,h); 1843 topLevelWidget()->setGeometry(x,y,w,h);
1843 1844
1844 } else { 1845 } else {
1845 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1846 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1846 } 1847 }
1847 list = config->readListEntry("EditEventLayout"); 1848 list = config->readListEntry("EditEventLayout");
1848 if ( ! list.isEmpty() ) { 1849 if ( ! list.isEmpty() ) {
1849 x = list[0].toInt(); 1850 x = list[0].toInt();
1850 y = list[1].toInt(); 1851 y = list[1].toInt();
1851 w = list[2].toInt(); 1852 w = list[2].toInt();
1852 h = list[3].toInt(); 1853 h = list[3].toInt();
1853 mEventEditor->setGeometry(x,y,w,h); 1854 mEventEditor->setGeometry(x,y,w,h);
1854 1855
1855 } 1856 }
1856 list = config->readListEntry("EditTodoLayout"); 1857 list = config->readListEntry("EditTodoLayout");
1857 if ( ! list.isEmpty() ) { 1858 if ( ! list.isEmpty() ) {
1858 x = list[0].toInt(); 1859 x = list[0].toInt();
1859 y = list[1].toInt(); 1860 y = list[1].toInt();
1860 w = list[2].toInt(); 1861 w = list[2].toInt();
1861 h = list[3].toInt(); 1862 h = list[3].toInt();
1862 mTodoEditor->setGeometry(x,y,w,h); 1863 mTodoEditor->setGeometry(x,y,w,h);
1863 1864
1864 } 1865 }
1865 list = config->readListEntry("ViewerLayout"); 1866 list = config->readListEntry("ViewerLayout");
1866 if ( ! list.isEmpty() ) { 1867 if ( ! list.isEmpty() ) {
1867 x = list[0].toInt(); 1868 x = list[0].toInt();
1868 y = list[1].toInt(); 1869 y = list[1].toInt();
1869 w = list[2].toInt(); 1870 w = list[2].toInt();
1870 h = list[3].toInt(); 1871 h = list[3].toInt();
1871 getEventViewerDialog()->setGeometry(x,y,w,h); 1872 getEventViewerDialog()->setGeometry(x,y,w,h);
1872 } 1873 }
1873#endif 1874#endif
1874 config->setGroup( "Views" ); 1875 config->setGroup( "Views" );
1875 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1876 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1876 1877
1877 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 1878 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
1878 1879
1879 int resetval = 0; 1880 int resetval = 0;
1880 int maxVal = 0; 1881 int maxVal = 0;
1881 if (sizes.count() != 3) { 1882 if (sizes.count() != 3) {
1882 if ( KOPrefs::instance()->mVerticalScreen ) { 1883 if ( KOPrefs::instance()->mVerticalScreen ) {
1883 resetval = mDateNavigator->sizeHint().width()+2; 1884 resetval = mDateNavigator->sizeHint().width()+2;
1884 } else { 1885 } else {
1885 resetval = mDateNavigator->sizeHint().height()+2; 1886 resetval = mDateNavigator->sizeHint().height()+2;
1886 } 1887 }
1887 } 1888 }
1888 if ( resetval ) { 1889 if ( resetval ) {
1889 sizes.clear(); 1890 sizes.clear();
1890 if ( KOPrefs::instance()->mVerticalScreen ) { 1891 if ( KOPrefs::instance()->mVerticalScreen ) {
1891 maxVal = QApplication::desktop()->width() -10; 1892 maxVal = QApplication::desktop()->width() -10;
1892 } else { 1893 } else {
1893 maxVal = QApplication::desktop()->height()-10; 1894 maxVal = QApplication::desktop()->height()-10;
1894 } 1895 }
1895 sizes << resetval; 1896 sizes << resetval;
1896 if ( maxVal < resetval + resetval) 1897 if ( maxVal < resetval + resetval)
1897 resetval = maxVal - resetval; 1898 resetval = maxVal - resetval;
1898 sizes << resetval; 1899 sizes << resetval;
1899 sizes << 100; 1900 sizes << 100;
1900 } 1901 }
1901 mLeftFrame->setSizes(sizes); 1902 mLeftFrame->setSizes(sizes);
1902 sizes = config->readIntListEntry("Main Splitter Frame"); 1903 sizes = config->readIntListEntry("Main Splitter Frame");
1903 resetval = 0; 1904 resetval = 0;
1904 maxVal = 0; 1905 maxVal = 0;
1905 if (sizes.count() != 2) { 1906 if (sizes.count() != 2) {
1906 if ( !KOPrefs::instance()->mVerticalScreen ) { 1907 if ( !KOPrefs::instance()->mVerticalScreen ) {
1907 resetval = mDateNavigator->sizeHint().width()+2; 1908 resetval = mDateNavigator->sizeHint().width()+2;
1908 } else { 1909 } else {
1909 resetval = mDateNavigator->sizeHint().height()+2; 1910 resetval = mDateNavigator->sizeHint().height()+2;
1910 } 1911 }
1911 } 1912 }
1912 if ( resetval ) { 1913 if ( resetval ) {
1913 sizes.clear(); 1914 sizes.clear();
1914 if ( !KOPrefs::instance()->mVerticalScreen ) { 1915 if ( !KOPrefs::instance()->mVerticalScreen ) {
1915 maxVal = QApplication::desktop()->width() -10; 1916 maxVal = QApplication::desktop()->width() -10;
1916 } else { 1917 } else {
1917 maxVal = QApplication::desktop()->height()-10; 1918 maxVal = QApplication::desktop()->height()-10;
1918 } 1919 }
1919 sizes << resetval; 1920 sizes << resetval;
1920 if ( maxVal < resetval + resetval) 1921 if ( maxVal < resetval + resetval)
1921 resetval = maxVal - resetval; 1922 resetval = maxVal - resetval;
1922 sizes << resetval; 1923 sizes << resetval;
1923 } 1924 }
1924 mMainFrame->setSizes(sizes); 1925 mMainFrame->setSizes(sizes);
1925 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1926 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1926 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1927 else if ( dateCount == 7 ) mNavigator->selectWeek();
1927 else mNavigator->selectDates( dateCount ); 1928 else mNavigator->selectDates( dateCount );
1928 // mViewManager->readSettings( config ); 1929 // mViewManager->readSettings( config );
1929 updateConfig(); 1930 updateConfig();
1930 globalFlagBlockAgenda = 2; 1931 globalFlagBlockAgenda = 2;
1931 mViewManager->readSettings( config ); 1932 mViewManager->readSettings( config );
1932 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); 1933 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) );
1933} 1934}
1934 1935
1935 1936
1936void CalendarView::writeSettings() 1937void CalendarView::writeSettings()
1937{ 1938{
1938 // kdDebug() << "CalendarView::writeSettings" << endl; 1939 // kdDebug() << "CalendarView::writeSettings" << endl;
1939 1940
1940 KConfig *config = KOGlobals::config(); 1941 KConfig *config = KOGlobals::config();
1941 1942
1942 mViewManager->writeSettings( config ); 1943 mViewManager->writeSettings( config );
1943 mTodoList->saveLayout(config,QString("Todo Layout")); 1944 mTodoList->saveLayout(config,QString("Todo Layout"));
1944 mDialogManager->writeSettings( config ); 1945 mDialogManager->writeSettings( config );
1945 //KOPrefs::instance()->usrWriteConfig(); 1946 //KOPrefs::instance()->usrWriteConfig();
1946 KOPrefs::instance()->writeConfig(); 1947 KOPrefs::instance()->writeConfig();
1947 1948
1948 writeFilterSettings(config); 1949 writeFilterSettings(config);
1949 1950
1950 config->setGroup( "Views" ); 1951 config->setGroup( "Views" );
1951 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1952 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1952 1953
1953 QValueList<int> listINT = mLeftFrame->sizes(); 1954 QValueList<int> listINT = mLeftFrame->sizes();
1954 config->writeEntry("Left Splitter Frame",listINT); 1955 config->writeEntry("Left Splitter Frame",listINT);
1955 QValueList<int> listINT2 = mMainFrame->sizes(); 1956 QValueList<int> listINT2 = mMainFrame->sizes();
1956 config->writeEntry("Main Splitter Frame",listINT2); 1957 config->writeEntry("Main Splitter Frame",listINT2);
1957#ifdef DESKTOP_VERSION 1958#ifdef DESKTOP_VERSION
1958 config->setGroup("WidgetLayout"); 1959 config->setGroup("WidgetLayout");
1959 QStringList list ;//= config->readListEntry("MainLayout"); 1960 QStringList list ;//= config->readListEntry("MainLayout");
1960 int x,y,w,h; 1961 int x,y,w,h;
1961 QWidget* wid; 1962 QWidget* wid;
1962 wid = topLevelWidget(); 1963 wid = topLevelWidget();
1963 x = wid->geometry().x(); 1964 x = wid->geometry().x();
1964 y = wid->geometry().y(); 1965 y = wid->geometry().y();
1965 w = wid->width(); 1966 w = wid->width();
1966 h = wid->height(); 1967 h = wid->height();
1967 list.clear(); 1968 list.clear();
1968 list << QString::number( x ); 1969 list << QString::number( x );
1969 list << QString::number( y ); 1970 list << QString::number( y );
1970 list << QString::number( w ); 1971 list << QString::number( w );
1971 list << QString::number( h ); 1972 list << QString::number( h );
1972 config->writeEntry("MainLayout",list ); 1973 config->writeEntry("MainLayout",list );
1973 1974
1974 wid = mEventEditor; 1975 wid = mEventEditor;
1975 x = wid->geometry().x(); 1976 x = wid->geometry().x();
1976 y = wid->geometry().y(); 1977 y = wid->geometry().y();
1977 w = wid->width(); 1978 w = wid->width();
1978 h = wid->height(); 1979 h = wid->height();
1979 list.clear(); 1980 list.clear();
1980 list << QString::number( x ); 1981 list << QString::number( x );
1981 list << QString::number( y ); 1982 list << QString::number( y );
1982 list << QString::number( w ); 1983 list << QString::number( w );
1983 list << QString::number( h ); 1984 list << QString::number( h );
1984 config->writeEntry("EditEventLayout",list ); 1985 config->writeEntry("EditEventLayout",list );
1985 1986
1986 wid = mTodoEditor; 1987 wid = mTodoEditor;
1987 x = wid->geometry().x(); 1988 x = wid->geometry().x();
1988 y = wid->geometry().y(); 1989 y = wid->geometry().y();
1989 w = wid->width(); 1990 w = wid->width();
1990 h = wid->height(); 1991 h = wid->height();
1991 list.clear(); 1992 list.clear();
1992 list << QString::number( x ); 1993 list << QString::number( x );
1993 list << QString::number( y ); 1994 list << QString::number( y );
1994 list << QString::number( w ); 1995 list << QString::number( w );
1995 list << QString::number( h ); 1996 list << QString::number( h );
1996 config->writeEntry("EditTodoLayout",list ); 1997 config->writeEntry("EditTodoLayout",list );
1997 wid = getEventViewerDialog(); 1998 wid = getEventViewerDialog();
1998 x = wid->geometry().x(); 1999 x = wid->geometry().x();
1999 y = wid->geometry().y(); 2000 y = wid->geometry().y();
2000 w = wid->width(); 2001 w = wid->width();
2001 h = wid->height(); 2002 h = wid->height();
2002 list.clear(); 2003 list.clear();
2003 list << QString::number( x ); 2004 list << QString::number( x );
2004 list << QString::number( y ); 2005 list << QString::number( y );
2005 list << QString::number( w ); 2006 list << QString::number( w );
2006 list << QString::number( h ); 2007 list << QString::number( h );
2007 config->writeEntry("ViewerLayout",list ); 2008 config->writeEntry("ViewerLayout",list );
2008 wid = mDialogManager->getSearchDialog(); 2009 wid = mDialogManager->getSearchDialog();
2009 if ( wid ) { 2010 if ( wid ) {
2010 x = wid->geometry().x(); 2011 x = wid->geometry().x();
2011 y = wid->geometry().y(); 2012 y = wid->geometry().y();
2012 w = wid->width(); 2013 w = wid->width();
2013 h = wid->height(); 2014 h = wid->height();
2014 list.clear(); 2015 list.clear();
2015 list << QString::number( x ); 2016 list << QString::number( x );
2016 list << QString::number( y ); 2017 list << QString::number( y );
2017 list << QString::number( w ); 2018 list << QString::number( w );
2018 list << QString::number( h ); 2019 list << QString::number( h );
2019 config->writeEntry("SearchLayout",list ); 2020 config->writeEntry("SearchLayout",list );
2020 } 2021 }
2021#endif 2022#endif
2022 2023
2023 2024
2024 config->sync(); 2025 config->sync();
2025} 2026}
2026 2027
2027void CalendarView::readFilterSettings(KConfig *config) 2028void CalendarView::readFilterSettings(KConfig *config)
2028{ 2029{
2029 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 2030 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
2030 2031
2031 mFilters.clear(); 2032 mFilters.clear();
2032 2033
2033 config->setGroup("General"); 2034 config->setGroup("General");
2034 QStringList filterList = config->readListEntry("CalendarFilters"); 2035 QStringList filterList = config->readListEntry("CalendarFilters");
2035 2036
2036 QStringList::ConstIterator it = filterList.begin(); 2037 QStringList::ConstIterator it = filterList.begin();
2037 QStringList::ConstIterator end = filterList.end(); 2038 QStringList::ConstIterator end = filterList.end();
2038 while(it != end) { 2039 while(it != end) {
2039 // kdDebug() << " filter: " << (*it) << endl; 2040 // kdDebug() << " filter: " << (*it) << endl;
2040 2041
2041 CalFilter *filter; 2042 CalFilter *filter;
2042 filter = new CalFilter(*it); 2043 filter = new CalFilter(*it);
2043 config->setGroup("Filter_" + (*it)); 2044 config->setGroup("Filter_" + (*it));
2044 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 2045 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
2045 filter->setCriteria(config->readNumEntry("Criteria",0)); 2046 filter->setCriteria(config->readNumEntry("Criteria",0));
2046 filter->setCategoryList(config->readListEntry("CategoryList")); 2047 filter->setCategoryList(config->readListEntry("CategoryList"));
2047 mFilters.append(filter); 2048 mFilters.append(filter);
2048 2049
2049 ++it; 2050 ++it;
2050 } 2051 }
2051 2052
2052 if (mFilters.count() == 0) { 2053 if (mFilters.count() == 0) {
2053 CalFilter *filter = new CalFilter(i18n("Default")); 2054 CalFilter *filter = new CalFilter(i18n("Default"));
2054 mFilters.append(filter); 2055 mFilters.append(filter);
2055 } 2056 }
2056 mFilterView->updateFilters(); 2057 mFilterView->updateFilters();
2057 config->setGroup("FilterView"); 2058 config->setGroup("FilterView");
2058 2059
2059 mFilterView->blockSignals(true); 2060 mFilterView->blockSignals(true);
2060 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 2061 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
2061 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 2062 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
2062 mFilterView->blockSignals(false); 2063 mFilterView->blockSignals(false);
2063 // We do it manually to avoid it being done twice by the above calls 2064 // We do it manually to avoid it being done twice by the above calls
2064 updateFilter(); 2065 updateFilter();
2065} 2066}
2066 2067
2067void CalendarView::writeFilterSettings(KConfig *config) 2068void CalendarView::writeFilterSettings(KConfig *config)
2068{ 2069{
2069 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 2070 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
2070 2071
2071 QStringList filterList; 2072 QStringList filterList;
2072 2073
2073 CalFilter *filter = mFilters.first(); 2074 CalFilter *filter = mFilters.first();
2074 while(filter) { 2075 while(filter) {
2075 // kdDebug() << " fn: " << filter->name() << endl; 2076 // kdDebug() << " fn: " << filter->name() << endl;
2076 filterList << filter->name(); 2077 filterList << filter->name();
2077 config->setGroup("Filter_" + filter->name()); 2078 config->setGroup("Filter_" + filter->name());
2078 config->writeEntry("Criteria",filter->criteria()); 2079 config->writeEntry("Criteria",filter->criteria());
2079 config->writeEntry("CategoryList",filter->categoryList()); 2080 config->writeEntry("CategoryList",filter->categoryList());
2080 filter = mFilters.next(); 2081 filter = mFilters.next();
2081 } 2082 }
2082 config->setGroup("General"); 2083 config->setGroup("General");
2083 config->writeEntry("CalendarFilters",filterList); 2084 config->writeEntry("CalendarFilters",filterList);
2084 2085
2085 config->setGroup("FilterView"); 2086 config->setGroup("FilterView");
2086 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 2087 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
2087 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 2088 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
2088} 2089}
2089 2090
2090 2091
2091void CalendarView::goToday() 2092void CalendarView::goToday()
2092{ 2093{
2093 if ( mViewManager->currentView()->isMonthView() ) 2094 if ( mViewManager->currentView()->isMonthView() )
2094 mNavigator->selectTodayMonth(); 2095 mNavigator->selectTodayMonth();
2095 else 2096 else
2096 mNavigator->selectToday(); 2097 mNavigator->selectToday();
2097} 2098}
2098 2099
2099void CalendarView::goNext() 2100void CalendarView::goNext()
2100{ 2101{
2101 mNavigator->selectNext(); 2102 mNavigator->selectNext();
2102} 2103}
2103 2104
2104void CalendarView::goPrevious() 2105void CalendarView::goPrevious()
2105{ 2106{
2106 mNavigator->selectPrevious(); 2107 mNavigator->selectPrevious();
2107} 2108}
2108void CalendarView::goNextMonth() 2109void CalendarView::goNextMonth()
2109{ 2110{
2110 mNavigator->selectNextMonth(); 2111 mNavigator->selectNextMonth();
2111} 2112}
2112 2113
2113void CalendarView::goPreviousMonth() 2114void CalendarView::goPreviousMonth()
2114{ 2115{
2115 mNavigator->selectPreviousMonth(); 2116 mNavigator->selectPreviousMonth();
2116} 2117}
2117void CalendarView::writeLocale() 2118void CalendarView::writeLocale()
2118{ 2119{
2119 //KPimGlobalPrefs::instance()->setGlobalConfig(); 2120 //KPimGlobalPrefs::instance()->setGlobalConfig();
2120#if 0 2121#if 0
2121 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 2122 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
2122 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 2123 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
2123 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 2124 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
2124 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 2125 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
2125 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 2126 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
2126 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 2127 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
2127 dummy = KOPrefs::instance()->mUserDateFormatShort; 2128 dummy = KOPrefs::instance()->mUserDateFormatShort;
2128 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 2129 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
2129 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 2130 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
2130 KOPrefs::instance()->mDaylightsavingStart, 2131 KOPrefs::instance()->mDaylightsavingStart,
2131 KOPrefs::instance()->mDaylightsavingEnd ); 2132 KOPrefs::instance()->mDaylightsavingEnd );
2132 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId ); 2133 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId );
2133#endif 2134#endif
2134} 2135}
2135void CalendarView::updateConfig() 2136void CalendarView::updateConfig()
2136{ 2137{
2137 writeLocale(); 2138 writeLocale();
2138 if ( KOPrefs::instance()->mUseAppColors ) 2139 if ( KOPrefs::instance()->mUseAppColors )
2139 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2140 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2140 emit configChanged(); 2141 emit configChanged();
2141 mTodoList->updateConfig(); 2142 mTodoList->updateConfig();
2142 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2143 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2143 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2144 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2144 // To make the "fill window" configurations work 2145 // To make the "fill window" configurations work
2145 //mViewManager->raiseCurrentView(); 2146 //mViewManager->raiseCurrentView();
2146} 2147}
2147 2148
2148 2149
2149void CalendarView::eventChanged(Event *event) 2150void CalendarView::eventChanged(Event *event)
2150{ 2151{
2151 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2152 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2152 //updateUnmanagedViews(); 2153 //updateUnmanagedViews();
2153} 2154}
2154 2155
2155void CalendarView::eventAdded(Event *event) 2156void CalendarView::eventAdded(Event *event)
2156{ 2157{
2157 changeEventDisplay(event,KOGlobals::EVENTADDED); 2158 changeEventDisplay(event,KOGlobals::EVENTADDED);
2158} 2159}
2159 2160
2160void CalendarView::eventToBeDeleted(Event *) 2161void CalendarView::eventToBeDeleted(Event *)
2161{ 2162{
2162 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2163 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2163} 2164}
2164 2165
2165void CalendarView::eventDeleted() 2166void CalendarView::eventDeleted()
2166{ 2167{
2167 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2168 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2168} 2169}
2169void CalendarView::changeTodoDisplay(Todo *which, int action) 2170void CalendarView::changeTodoDisplay(Todo *which, int action)
2170{ 2171{
2171 changeIncidenceDisplay((Incidence *)which, action); 2172 changeIncidenceDisplay((Incidence *)which, action);
2172 mDateNavigator->updateView(); //LR 2173 mDateNavigator->updateView(); //LR
2173 //mDialogManager->updateSearchDialog(); 2174 //mDialogManager->updateSearchDialog();
2174 2175
2175 if (which) { 2176 if (which) {
2176 mViewManager->updateWNview(); 2177 mViewManager->updateWNview();
2177 //mTodoList->updateView(); 2178 //mTodoList->updateView();
2178 } 2179 }
2179 2180
2180} 2181}
2181 2182
2182void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2183void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2183{ 2184{
2184 updateUnmanagedViews(); 2185 updateUnmanagedViews();
2185 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 2186 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
2186 if ( action == KOGlobals::EVENTDELETED ) { //delete 2187 if ( action == KOGlobals::EVENTDELETED ) { //delete
2187 mCalendar->checkAlarmForIncidence( 0, true ); 2188 mCalendar->checkAlarmForIncidence( 0, true );
2188 if ( mEventViewerDialog ) 2189 if ( mEventViewerDialog )
2189 mEventViewerDialog->hide(); 2190 mEventViewerDialog->hide();
2190 } 2191 }
2191 else 2192 else
2192 mCalendar->checkAlarmForIncidence( which , false ); 2193 mCalendar->checkAlarmForIncidence( which , false );
2193} 2194}
2194 2195
2195// most of the changeEventDisplays() right now just call the view's 2196// most of the changeEventDisplays() right now just call the view's
2196// total update mode, but they SHOULD be recoded to be more refresh-efficient. 2197// total update mode, but they SHOULD be recoded to be more refresh-efficient.
2197void CalendarView::changeEventDisplay(Event *which, int action) 2198void CalendarView::changeEventDisplay(Event *which, int action)
2198{ 2199{
2199 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 2200 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
2200 changeIncidenceDisplay((Incidence *)which, action); 2201 changeIncidenceDisplay((Incidence *)which, action);
2201 mDateNavigator->updateView(); 2202 mDateNavigator->updateView();
2202 //mDialogManager->updateSearchDialog(); 2203 //mDialogManager->updateSearchDialog();
2203 2204
2204 if (which) { 2205 if (which) {
2205 // If there is an event view visible update the display 2206 // If there is an event view visible update the display
2206 mViewManager->currentView()->changeEventDisplay(which,action); 2207 mViewManager->currentView()->changeEventDisplay(which,action);
2207 // TODO: check, if update needed 2208 // TODO: check, if update needed
2208 // if (which->getTodoStatus()) { 2209 // if (which->getTodoStatus()) {
2209 mTodoList->updateView(); 2210 mTodoList->updateView();
2210 // } 2211 // }
2211 } else { 2212 } else {
2212 mViewManager->currentView()->updateView(); 2213 mViewManager->currentView()->updateView();
2213 } 2214 }
2214} 2215}
2215 2216
2216 2217
2217void CalendarView::updateTodoViews() 2218void CalendarView::updateTodoViews()
2218{ 2219{
2219 mTodoList->updateView(); 2220 mTodoList->updateView();
2220 mViewManager->currentView()->updateView(); 2221 mViewManager->currentView()->updateView();
2221 2222
2222} 2223}
2223 2224
2224 2225
2225void CalendarView::updateView(const QDate &start, const QDate &end) 2226void CalendarView::updateView(const QDate &start, const QDate &end)
2226{ 2227{
2227 mTodoList->updateView(); 2228 mTodoList->updateView();
2228 mViewManager->updateView(start, end); 2229 mViewManager->updateView(start, end);
2229 //mDateNavigator->updateView(); 2230 //mDateNavigator->updateView();
2230} 2231}
2231 2232
2232void CalendarView::updateView() 2233void CalendarView::updateView()
2233{ 2234{
2234 DateList tmpList = mNavigator->selectedDates(); 2235 DateList tmpList = mNavigator->selectedDates();
2235 2236
2236 if ( KOPrefs::instance()->mHideNonStartedTodos ) 2237 if ( KOPrefs::instance()->mHideNonStartedTodos )
2237 mTodoList->updateView(); 2238 mTodoList->updateView();
2238 // We assume that the navigator only selects consecutive days. 2239 // We assume that the navigator only selects consecutive days.
2239 updateView( tmpList.first(), tmpList.last() ); 2240 updateView( tmpList.first(), tmpList.last() );
2240} 2241}
2241 2242
2242void CalendarView::updateUnmanagedViews() 2243void CalendarView::updateUnmanagedViews()
2243{ 2244{
2244 mDateNavigator->updateDayMatrix(); 2245 mDateNavigator->updateDayMatrix();
2245} 2246}
2246 2247
2247int CalendarView::msgItemDelete(const QString name) 2248int CalendarView::msgItemDelete(const QString name)
2248{ 2249{
2249 return KMessageBox::warningContinueCancel(this,name +"\n\n"+ 2250 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
2250 i18n("This item will be\npermanently deleted."), 2251 i18n("This item will be\npermanently deleted."),
2251 i18n("KO/Pi Confirmation"),i18n("Delete")); 2252 i18n("KO/Pi Confirmation"),i18n("Delete"));
2252} 2253}
2253 2254
2254 2255
2255void CalendarView::edit_cut() 2256void CalendarView::edit_cut()
2256{ 2257{
2257 Event *anEvent=0; 2258 Event *anEvent=0;
2258 2259
2259 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2260 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2260 2261
2261 if (mViewManager->currentView()->isEventView()) { 2262 if (mViewManager->currentView()->isEventView()) {
2262 if ( incidence && incidence->type() == "Event" ) { 2263 if ( incidence && incidence->type() == "Event" ) {
2263 anEvent = static_cast<Event *>(incidence); 2264 anEvent = static_cast<Event *>(incidence);
2264 } 2265 }
2265 } 2266 }
2266 2267
2267 if (!anEvent) { 2268 if (!anEvent) {
2268 KNotifyClient::beep(); 2269 KNotifyClient::beep();
2269 return; 2270 return;
2270 } 2271 }
2271 DndFactory factory( mCalendar ); 2272 DndFactory factory( mCalendar );
2272 factory.cutIncidence(anEvent); 2273 factory.cutIncidence(anEvent);
2273 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2274 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2274} 2275}
2275 2276
2276void CalendarView::edit_copy() 2277void CalendarView::edit_copy()
2277{ 2278{
2278 Event *anEvent=0; 2279 Event *anEvent=0;
2279 2280
2280 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2281 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2281 2282
2282 if (mViewManager->currentView()->isEventView()) { 2283 if (mViewManager->currentView()->isEventView()) {
2283 if ( incidence && incidence->type() == "Event" ) { 2284 if ( incidence && incidence->type() == "Event" ) {
2284 anEvent = static_cast<Event *>(incidence); 2285 anEvent = static_cast<Event *>(incidence);
2285 } 2286 }
2286 } 2287 }
2287 2288
2288 if (!anEvent) { 2289 if (!anEvent) {
2289 KNotifyClient::beep(); 2290 KNotifyClient::beep();
2290 return; 2291 return;
2291 } 2292 }
2292 DndFactory factory( mCalendar ); 2293 DndFactory factory( mCalendar );
2293 factory.copyIncidence(anEvent); 2294 factory.copyIncidence(anEvent);
2294} 2295}
2295 2296
2296void CalendarView::edit_paste() 2297void CalendarView::edit_paste()
2297{ 2298{
2298 QDate date = mNavigator->selectedDates().first(); 2299 QDate date = mNavigator->selectedDates().first();
2299 2300
2300 DndFactory factory( mCalendar ); 2301 DndFactory factory( mCalendar );
2301 Event *pastedEvent = (Event *)factory.pasteIncidence( date ); 2302 Event *pastedEvent = (Event *)factory.pasteIncidence( date );
2302 2303
2303 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2304 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2304} 2305}
2305 2306
2306void CalendarView::edit_options() 2307void CalendarView::edit_options()
2307{ 2308{
2308 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId; 2309 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId;
2309 emit save(); 2310 emit save();
2310 emit saveStopTimer(); 2311 emit saveStopTimer();
2311 mDialogManager->showOptionsDialog(); 2312 mDialogManager->showOptionsDialog();
2312 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) { 2313 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) {
2313 emit saveStopTimer(); 2314 emit saveStopTimer();
2314 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto apply timezone changes?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"), 2315 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto apply timezone changes?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"),
2315 i18n("Timezone settings"),i18n("Reload"))) { 2316 i18n("Timezone settings"),i18n("Reload"))) {
2316 qDebug("KO: TZ reload cancelled "); 2317 qDebug("KO: TZ reload cancelled ");
2317 return; 2318 return;
2318 } 2319 }
2319 qDebug("KO: Timezone change "); 2320 qDebug("KO: Timezone change ");
2320 openCalendar( MainWindow::defaultFileName() ); 2321 openCalendar( MainWindow::defaultFileName() );
2321 setModified(true); 2322 setModified(true);
2322 } 2323 }
2323 else 2324 else
2324 qDebug("KO: No tz change "); 2325 qDebug("KO: No tz change ");
2325 2326
2326} 2327}
2327 2328
2328 2329
2329void CalendarView::slotSelectPickerDate( QDate d) 2330void CalendarView::slotSelectPickerDate( QDate d)
2330{ 2331{
2331 mDateFrame->hide(); 2332 mDateFrame->hide();
2332 if ( mDatePickerMode == 1 ) { 2333 if ( mDatePickerMode == 1 ) {
2333 mNavigator->slotDaySelect( d ); 2334 mNavigator->slotDaySelect( d );
2334 } else if ( mDatePickerMode == 2 ) { 2335 } else if ( mDatePickerMode == 2 ) {
2335 if ( mMoveIncidence->type() == "Todo" ) { 2336 if ( mMoveIncidence->type() == "Todo" ) {
2336 Todo * to = (Todo *) mMoveIncidence; 2337 Todo * to = (Todo *) mMoveIncidence;
2337 QTime tim; 2338 QTime tim;
2338 int len = 0; 2339 int len = 0;
2339 if ( to->hasStartDate() && to->hasDueDate() ) 2340 if ( to->hasStartDate() && to->hasDueDate() )
2340 len = to->dtStart().secsTo( to->dtDue()); 2341 len = to->dtStart().secsTo( to->dtDue());
2341 if ( to->hasDueDate() ) 2342 if ( to->hasDueDate() )
2342 tim = to->dtDue().time(); 2343 tim = to->dtDue().time();
2343 else { 2344 else {
2344 tim = QTime ( 0,0,0 ); 2345 tim = QTime ( 0,0,0 );
2345 to->setFloats( true ); 2346 to->setFloats( true );
2346 to->setHasDueDate( true ); 2347 to->setHasDueDate( true );
2347 } 2348 }
2348 QDateTime dt ( d,tim ); 2349 QDateTime dt ( d,tim );
2349 to->setDtDue( dt ); 2350 to->setDtDue( dt );
2350 2351
2351 if ( to->hasStartDate() ) { 2352 if ( to->hasStartDate() ) {
2352 if ( len>0 ) 2353 if ( len>0 )
2353 to->setDtStart(to->dtDue().addSecs( -len )); 2354 to->setDtStart(to->dtDue().addSecs( -len ));
2354 else 2355 else
2355 if (to->dtStart() > to->dtDue() ) 2356 if (to->dtStart() > to->dtDue() )
2356 to->setDtStart(to->dtDue().addDays( -3 )); 2357 to->setDtStart(to->dtDue().addDays( -3 ));
2357 } 2358 }
2358 2359
2359 todoChanged( to ); 2360 todoChanged( to );
2360 } else { 2361 } else {
2361 if ( mMoveIncidence->doesRecur() ) { 2362 if ( mMoveIncidence->doesRecur() ) {
2362#if 0 2363#if 0
2363 // PENDING implement this 2364 // PENDING implement this
2364 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 2365 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
2365 mCalendar()->addIncidence( newInc ); 2366 mCalendar()->addIncidence( newInc );
2366 if ( mMoveIncidence->type() == "Todo" ) 2367 if ( mMoveIncidence->type() == "Todo" )
2367 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 2368 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
2368 else 2369 else
2369 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 2370 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
2370 mMoveIncidence = newInc; 2371 mMoveIncidence = newInc;
2371 2372
2372#endif 2373#endif
2373 } 2374 }
2374 QTime tim = mMoveIncidence->dtStart().time(); 2375 QTime tim = mMoveIncidence->dtStart().time();
2375 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2376 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2376 QDateTime dt ( d,tim ); 2377 QDateTime dt ( d,tim );
2377 mMoveIncidence->setDtStart( dt ); 2378 mMoveIncidence->setDtStart( dt );
2378 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2379 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2379 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2380 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2380 } 2381 }
2381 2382
2382 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2383 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2383 } 2384 }
2384} 2385}
2385 2386
2386void CalendarView::removeCategories() 2387void CalendarView::removeCategories()
2387{ 2388{
2388 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2389 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2389 QStringList catList = KOPrefs::instance()->mCustomCategories; 2390 QStringList catList = KOPrefs::instance()->mCustomCategories;
2390 QStringList catIncList; 2391 QStringList catIncList;
2391 QStringList newCatList; 2392 QStringList newCatList;
2392 Incidence* inc = incList.first(); 2393 Incidence* inc = incList.first();
2393 int i; 2394 int i;
2394 int count = 0; 2395 int count = 0;
2395 while ( inc ) { 2396 while ( inc ) {
2396 newCatList.clear(); 2397 newCatList.clear();
2397 catIncList = inc->categories() ; 2398 catIncList = inc->categories() ;
2398 for( i = 0; i< catIncList.count(); ++i ) { 2399 for( i = 0; i< catIncList.count(); ++i ) {
2399 if ( catList.contains (catIncList[i])) 2400 if ( catList.contains (catIncList[i]))
2400 newCatList.append( catIncList[i] ); 2401 newCatList.append( catIncList[i] );
2401 } 2402 }
2402 newCatList.sort(); 2403 newCatList.sort();
2403 inc->setCategories( newCatList.join(",") ); 2404 inc->setCategories( newCatList.join(",") );
2404 inc = incList.next(); 2405 inc = incList.next();
2405 } 2406 }
2406} 2407}
2407 2408
2408int CalendarView::addCategories() 2409int CalendarView::addCategories()
2409{ 2410{
2410 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2411 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2411 QStringList catList = KOPrefs::instance()->mCustomCategories; 2412 QStringList catList = KOPrefs::instance()->mCustomCategories;
2412 QStringList catIncList; 2413 QStringList catIncList;
2413 Incidence* inc = incList.first(); 2414 Incidence* inc = incList.first();
2414 int i; 2415 int i;
2415 int count = 0; 2416 int count = 0;
2416 while ( inc ) { 2417 while ( inc ) {
2417 catIncList = inc->categories() ; 2418 catIncList = inc->categories() ;
2418 for( i = 0; i< catIncList.count(); ++i ) { 2419 for( i = 0; i< catIncList.count(); ++i ) {
2419 if ( !catList.contains (catIncList[i])) { 2420 if ( !catList.contains (catIncList[i])) {
2420 catList.append( catIncList[i] ); 2421 catList.append( catIncList[i] );
2421 //qDebug("add cat %s ", catIncList[i].latin1()); 2422 //qDebug("add cat %s ", catIncList[i].latin1());
2422 ++count; 2423 ++count;
2423 } 2424 }
2424 } 2425 }
2425 inc = incList.next(); 2426 inc = incList.next();
2426 } 2427 }
2427 catList.sort(); 2428 catList.sort();
2428 KOPrefs::instance()->mCustomCategories = catList; 2429 KOPrefs::instance()->mCustomCategories = catList;
2429 return count; 2430 return count;
2430} 2431}
2431 2432
2432void CalendarView::manageCategories() 2433void CalendarView::manageCategories()
2433{ 2434{
2434 KOCatPrefs* cp = new KOCatPrefs(); 2435 KOCatPrefs* cp = new KOCatPrefs();
2435 cp->show(); 2436 cp->show();
2436 int w =cp->sizeHint().width() ; 2437 int w =cp->sizeHint().width() ;
2437 int h = cp->sizeHint().height() ; 2438 int h = cp->sizeHint().height() ;
2438 int dw = QApplication::desktop()->width(); 2439 int dw = QApplication::desktop()->width();
2439 int dh = QApplication::desktop()->height(); 2440 int dh = QApplication::desktop()->height();
2440 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2441 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2441 if ( !cp->exec() ) { 2442 if ( !cp->exec() ) {
2442 delete cp; 2443 delete cp;
2443 return; 2444 return;
2444 } 2445 }
2445 int count = 0; 2446 int count = 0;
2446 if ( cp->addCat() ) { 2447 if ( cp->addCat() ) {
2447 count = addCategories(); 2448 count = addCategories();
2448 if ( count ) { 2449 if ( count ) {
2449 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2450 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2450 writeSettings(); 2451 writeSettings();
2451 } else 2452 } else
2452 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! ")); 2453 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
2453 } else { 2454 } else {
2454 removeCategories(); 2455 removeCategories();
2455 updateView(); 2456 updateView();
2456 } 2457 }
2457 delete cp; 2458 delete cp;
2458} 2459}
2459 2460
2460void CalendarView::beamIncidence(Incidence * Inc) 2461void CalendarView::beamIncidence(Incidence * Inc)
2461{ 2462{
2462 QPtrList<Incidence> delSel ; 2463 QPtrList<Incidence> delSel ;
2463 delSel.append(Inc); 2464 delSel.append(Inc);
2464 beamIncidenceList( delSel ); 2465 beamIncidenceList( delSel );
2465} 2466}
2466void CalendarView::beamCalendar() 2467void CalendarView::beamCalendar()
2467{ 2468{
2468 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2469 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2469 //qDebug("beamCalendar() "); 2470 //qDebug("beamCalendar() ");
2470 beamIncidenceList( delSel ); 2471 beamIncidenceList( delSel );
2471} 2472}
2472void CalendarView::beamFilteredCalendar() 2473void CalendarView::beamFilteredCalendar()
2473{ 2474{
2474 QPtrList<Incidence> delSel = mCalendar->incidences(); 2475 QPtrList<Incidence> delSel = mCalendar->incidences();
2475 //qDebug("beamFilteredCalendar() "); 2476 //qDebug("beamFilteredCalendar() ");
2476 beamIncidenceList( delSel ); 2477 beamIncidenceList( delSel );
2477} 2478}
2478void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2479void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2479{ 2480{
2480 if ( beamDialog->exec () == QDialog::Rejected ) 2481 if ( beamDialog->exec () == QDialog::Rejected )
2481 return; 2482 return;
2482#ifdef DESKTOP_VERSION 2483#ifdef DESKTOP_VERSION
2483 QString fn = locateLocal( "tmp", "kopibeamfile" ); 2484 QString fn = locateLocal( "tmp", "kopibeamfile" );
2484#else 2485#else
2485 QString fn = "/tmp/kopibeamfile"; 2486 QString fn = "/tmp/kopibeamfile";
2486#endif 2487#endif
2487 QString mes; 2488 QString mes;
2488 bool createbup = true; 2489 bool createbup = true;
2489 if ( createbup ) { 2490 if ( createbup ) {
2490 QString description = "\n"; 2491 QString description = "\n";
2491 CalendarLocal* cal = new CalendarLocal(); 2492 CalendarLocal* cal = new CalendarLocal();
2492 if ( beamDialog->beamLocal() ) 2493 if ( beamDialog->beamLocal() )
2493 cal->setLocalTime(); 2494 cal->setLocalTime();
2494 else 2495 else
2495 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2496 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2496 Incidence *incidence = delSel.first(); 2497 Incidence *incidence = delSel.first();
2497 bool addText = false; 2498 bool addText = false;
2498 if ( delSel.count() < 10 ) 2499 if ( delSel.count() < 10 )
2499 addText = true; 2500 addText = true;
2500 else { 2501 else {
2501 description.sprintf(i18n(" %d items?"),delSel.count() ); 2502 description.sprintf(i18n(" %d items?"),delSel.count() );
2502 } 2503 }
2503 while ( incidence ) { 2504 while ( incidence ) {
2504 Incidence *in = incidence->clone(); 2505 Incidence *in = incidence->clone();
2505 if ( ! in->summary().isEmpty() ) { 2506 if ( ! in->summary().isEmpty() ) {
2506 in->setDescription(""); 2507 in->setDescription("");
2507 } else { 2508 } else {
2508 in->setSummary( in->description().left(20)); 2509 in->setSummary( in->description().left(20));
2509 in->setDescription(""); 2510 in->setDescription("");
2510 } 2511 }
2511 if ( addText ) 2512 if ( addText )
2512 description += in->summary() + "\n"; 2513 description += in->summary() + "\n";
2513 cal->addIncidence( in ); 2514 cal->addIncidence( in );
2514 incidence = delSel.next(); 2515 incidence = delSel.next();
2515 } 2516 }
2516 if ( beamDialog->beamVcal() ) { 2517 if ( beamDialog->beamVcal() ) {
2517 fn += ".vcs"; 2518 fn += ".vcs";
2518 FileStorage storage( cal, fn, new VCalFormat ); 2519 FileStorage storage( cal, fn, new VCalFormat );
2519 storage.save(); 2520 storage.save();
2520 } else { 2521 } else {
2521 fn += ".ics"; 2522 fn += ".ics";
2522 FileStorage storage( cal, fn, new ICalFormat( ) ); 2523 FileStorage storage( cal, fn, new ICalFormat( ) );
2523 storage.save(); 2524 storage.save();
2524 } 2525 }
2525 delete cal; 2526 delete cal;
2526 mes = i18n("KO/Pi: Ready for beaming"); 2527 mes = i18n("KO/Pi: Ready for beaming");
2527 topLevelWidget()->setCaption(mes); 2528 topLevelWidget()->setCaption(mes);
2528 KApplication::convert2latin1( fn ); 2529 KApplication::convert2latin1( fn );
2529#ifndef DESKTOP_VERSION 2530#ifndef DESKTOP_VERSION
2530 Ir *ir = new Ir( this ); 2531 Ir *ir = new Ir( this );
2531 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2532 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2532 ir->send( fn, description, "text/x-vCalendar" ); 2533 ir->send( fn, description, "text/x-vCalendar" );
2533#endif 2534#endif
2534 } 2535 }
2535} 2536}
2536void CalendarView::beamDone( Ir *ir ) 2537void CalendarView::beamDone( Ir *ir )
2537{ 2538{
2538#ifndef DESKTOP_VERSION 2539#ifndef DESKTOP_VERSION
2539 delete ir; 2540 delete ir;
2540#endif 2541#endif
2541 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 2542 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
2542 topLevelWidget()->raise(); 2543 topLevelWidget()->raise();
2543} 2544}
2544 2545
2545void CalendarView::moveIncidence(Incidence * inc ) 2546void CalendarView::moveIncidence(Incidence * inc )
2546{ 2547{
2547 if ( !inc ) return; 2548 if ( !inc ) return;
2548 showDatePickerPopup(); 2549 showDatePickerPopup();
2549 mDatePickerMode = 2; 2550 mDatePickerMode = 2;
2550 mMoveIncidence = inc ; 2551 mMoveIncidence = inc ;
2551 QDate da; 2552 QDate da;
2552 if ( mMoveIncidence->type() == "Todo" ) { 2553 if ( mMoveIncidence->type() == "Todo" ) {
2553 Todo * to = (Todo *) mMoveIncidence; 2554 Todo * to = (Todo *) mMoveIncidence;
2554 if ( to->hasDueDate() ) 2555 if ( to->hasDueDate() )
2555 da = to->dtDue().date(); 2556 da = to->dtDue().date();
2556 else 2557 else
2557 da = QDate::currentDate(); 2558 da = QDate::currentDate();
2558 } else { 2559 } else {
2559 da = mMoveIncidence->dtStart().date(); 2560 da = mMoveIncidence->dtStart().date();
2560 } 2561 }
2561 //PENDING set date for recurring incidence to date of recurrence 2562 //PENDING set date for recurring incidence to date of recurrence
2562 //mMoveIncidenceOldDate; 2563 //mMoveIncidenceOldDate;
2563 mDatePicker->setDate( da ); 2564 mDatePicker->setDate( da );
2564} 2565}
2565void CalendarView::showDatePickerPopup() 2566void CalendarView::showDatePickerPopup()
2566{ 2567{
2567 if ( mDateFrame->isVisible() ) 2568 if ( mDateFrame->isVisible() )
2568 mDateFrame->hide(); 2569 mDateFrame->hide();
2569 else { 2570 else {
2570 int offX = 0, offY = 0; 2571 int offX = 0, offY = 0;
2571#ifdef DESKTOP_VERSION 2572#ifdef DESKTOP_VERSION
2572 int w =mDatePicker->sizeHint().width() ; 2573 int w =mDatePicker->sizeHint().width() ;
2573 int h = mDatePicker->sizeHint().height() ; 2574 int h = mDatePicker->sizeHint().height() ;
2574 int dw = topLevelWidget()->width(); 2575 int dw = topLevelWidget()->width();
2575 int dh = topLevelWidget()->height(); 2576 int dh = topLevelWidget()->height();
2576 offX = topLevelWidget()->x(); 2577 offX = topLevelWidget()->x();
2577 offY = topLevelWidget()->y(); 2578 offY = topLevelWidget()->y();
2578#else 2579#else
2579 int w =mDatePicker->sizeHint().width() ; 2580 int w =mDatePicker->sizeHint().width() ;
2580 int h = mDatePicker->sizeHint().height() ; 2581 int h = mDatePicker->sizeHint().height() ;
2581 int dw = QApplication::desktop()->width(); 2582 int dw = QApplication::desktop()->width();
2582 int dh = QApplication::desktop()->height(); 2583 int dh = QApplication::desktop()->height();
2583#endif 2584#endif
2584 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 2585 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
2585 mDateFrame->show(); 2586 mDateFrame->show();
2586 } 2587 }
2587} 2588}
2588void CalendarView::showDatePicker( ) 2589void CalendarView::showDatePicker( )
2589{ 2590{
2590 showDatePickerPopup(); 2591 showDatePickerPopup();
2591 mDatePickerMode = 1; 2592 mDatePickerMode = 1;
2592 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2593 mDatePicker->setDate( mNavigator->selectedDates().first() );
2593} 2594}
2594 2595
2595void CalendarView::showEventEditor() 2596void CalendarView::showEventEditor()
2596{ 2597{
2597#ifdef DESKTOP_VERSION 2598#ifdef DESKTOP_VERSION
2598 int x,y,w,h; 2599 int x,y,w,h;
2599 x = mEventEditor->geometry().x(); 2600 x = mEventEditor->geometry().x();
2600 y = mEventEditor->geometry().y(); 2601 y = mEventEditor->geometry().y();
2601 w = mEventEditor->width(); 2602 w = mEventEditor->width();
2602 h = mEventEditor->height(); 2603 h = mEventEditor->height();
2603 mEventEditor->show(); 2604 mEventEditor->show();
2604 mEventEditor->setGeometry(x,y,w,h); 2605 mEventEditor->setGeometry(x,y,w,h);
2605#else 2606#else
2606 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 2607 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
2607 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2608 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2608 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 2609 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
2609 qApp->processEvents(); 2610 qApp->processEvents();
2610 delete mEventEditor; 2611 delete mEventEditor;
2611 mEventEditor = mDialogManager->getEventEditor(); 2612 mEventEditor = mDialogManager->getEventEditor();
2612 topLevelWidget()->setCaption( i18n("") ); 2613 topLevelWidget()->setCaption( i18n("") );
2613 } 2614 }
2614 mEventEditor->showMaximized(); 2615 mEventEditor->showMaximized();
2615#endif 2616#endif
2616} 2617}
2617void CalendarView::showTodoEditor() 2618void CalendarView::showTodoEditor()
2618{ 2619{
2619#ifdef DESKTOP_VERSION 2620#ifdef DESKTOP_VERSION
2620 int x,y,w,h; 2621 int x,y,w,h;
2621 x = mTodoEditor->geometry().x(); 2622 x = mTodoEditor->geometry().x();
2622 y = mTodoEditor->geometry().y(); 2623 y = mTodoEditor->geometry().y();
2623 w = mTodoEditor->width(); 2624 w = mTodoEditor->width();
2624 h = mTodoEditor->height(); 2625 h = mTodoEditor->height();
2625 mTodoEditor->show(); 2626 mTodoEditor->show();
2626 mTodoEditor->setGeometry(x,y,w,h); 2627 mTodoEditor->setGeometry(x,y,w,h);
2627#else 2628#else
2628 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 2629 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
2629 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2630 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2630 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 2631 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
2631 qApp->processEvents(); 2632 qApp->processEvents();
2632 delete mTodoEditor; 2633 delete mTodoEditor;
2633 mTodoEditor = mDialogManager->getTodoEditor(); 2634 mTodoEditor = mDialogManager->getTodoEditor();
2634 topLevelWidget()->setCaption( i18n("") ); 2635 topLevelWidget()->setCaption( i18n("") );
2635 } 2636 }
2636 mTodoEditor->showMaximized(); 2637 mTodoEditor->showMaximized();
2637#endif 2638#endif
2638} 2639}
2639 2640
2640void CalendarView::cloneIncidence() 2641void CalendarView::cloneIncidence()
2641{ 2642{
2642 Incidence *incidence = currentSelection(); 2643 Incidence *incidence = currentSelection();
2643 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2644 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2644 if ( incidence ) { 2645 if ( incidence ) {
2645 cloneIncidence(incidence); 2646 cloneIncidence(incidence);
2646 } 2647 }
2647} 2648}
2648void CalendarView::moveIncidence() 2649void CalendarView::moveIncidence()
2649{ 2650{
2650 Incidence *incidence = currentSelection(); 2651 Incidence *incidence = currentSelection();
2651 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2652 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2652 if ( incidence ) { 2653 if ( incidence ) {
2653 moveIncidence(incidence); 2654 moveIncidence(incidence);
2654 } 2655 }
2655} 2656}
2656void CalendarView::beamIncidence() 2657void CalendarView::beamIncidence()
2657{ 2658{
2658 Incidence *incidence = currentSelection(); 2659 Incidence *incidence = currentSelection();
2659 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2660 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2660 if ( incidence ) { 2661 if ( incidence ) {
2661 beamIncidence(incidence); 2662 beamIncidence(incidence);
2662 } 2663 }
2663} 2664}
2664void CalendarView::toggleCancelIncidence() 2665void CalendarView::toggleCancelIncidence()
2665{ 2666{
2666 Incidence *incidence = currentSelection(); 2667 Incidence *incidence = currentSelection();
2667 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2668 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2668 if ( incidence ) { 2669 if ( incidence ) {
2669 cancelIncidence(incidence); 2670 cancelIncidence(incidence);
2670 } 2671 }
2671} 2672}
2672 2673
2673 2674
2674void CalendarView::cancelIncidence(Incidence * inc ) 2675void CalendarView::cancelIncidence(Incidence * inc )
2675{ 2676{
2676 inc->setCancelled( ! inc->cancelled() ); 2677 inc->setCancelled( ! inc->cancelled() );
2677 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2678 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2678 updateView(); 2679 updateView();
2679} 2680}
2680void CalendarView::cloneIncidence(Incidence * orgInc ) 2681void CalendarView::cloneIncidence(Incidence * orgInc )
2681{ 2682{
2682 Incidence * newInc = orgInc->clone(); 2683 Incidence * newInc = orgInc->clone();
2683 newInc->recreate(); 2684 newInc->recreate();
2684 2685
2685 if ( newInc->type() == "Todo" ) { 2686 if ( newInc->type() == "Todo" ) {
2686 Todo* t = (Todo*) newInc; 2687 Todo* t = (Todo*) newInc;
2687 showTodoEditor(); 2688 showTodoEditor();
2688 mTodoEditor->editTodo( t ); 2689 mTodoEditor->editTodo( t );
2689 if ( mTodoEditor->exec() ) { 2690 if ( mTodoEditor->exec() ) {
2690 mCalendar->addTodo( t ); 2691 mCalendar->addTodo( t );
2691 updateView(); 2692 updateView();
2692 } else { 2693 } else {
2693 delete t; 2694 delete t;
2694 } 2695 }
2695 } 2696 }
2696 else { 2697 else {
2697 Event* e = (Event*) newInc; 2698 Event* e = (Event*) newInc;
2698 showEventEditor(); 2699 showEventEditor();
2699 mEventEditor->editEvent( e ); 2700 mEventEditor->editEvent( e );
2700 if ( mEventEditor->exec() ) { 2701 if ( mEventEditor->exec() ) {
2701 mCalendar->addEvent( e ); 2702 mCalendar->addEvent( e );
2702 updateView(); 2703 updateView();
2703 } else { 2704 } else {
2704 delete e; 2705 delete e;
2705 } 2706 }
2706 } 2707 }
2707 setActiveWindow(); 2708 setActiveWindow();
2708} 2709}
2709 2710
2710void CalendarView::newEvent() 2711void CalendarView::newEvent()
2711{ 2712{
2712 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2713 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2713 KOAgendaView *aView = mViewManager->agendaView(); 2714 KOAgendaView *aView = mViewManager->agendaView();
2714 if (aView) { 2715 if (aView) {
2715 if (aView->selectionStart().isValid()) { 2716 if (aView->selectionStart().isValid()) {
2716 if (aView->selectedIsAllDay()) { 2717 if (aView->selectedIsAllDay()) {
2717 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2718 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2718 } else { 2719 } else {
2719 newEvent(aView->selectionStart(),aView->selectionEnd()); 2720 newEvent(aView->selectionStart(),aView->selectionEnd());
2720 } 2721 }
2721 return; 2722 return;
2722 } 2723 }
2723 } 2724 }
2724 2725
2725 QDate date = mNavigator->selectedDates().first(); 2726 QDate date = mNavigator->selectedDates().first();
2726 QDateTime current = QDateTime::currentDateTime(); 2727 QDateTime current = QDateTime::currentDateTime();
2727 if ( date <= current.date() ) { 2728 if ( date <= current.date() ) {
2728 int hour = current.time().hour() +1; 2729 int hour = current.time().hour() +1;
2729 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2730 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2730 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2731 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2731 } else 2732 } else
2732 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2733 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2733 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2734 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2734 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2735 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2735} 2736}
2736 2737
2737void CalendarView::newEvent(QDateTime fh) 2738void CalendarView::newEvent(QDateTime fh)
2738{ 2739{
2739 newEvent(fh, 2740 newEvent(fh,
2740 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2741 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2741} 2742}
2742 2743
2743void CalendarView::newEvent(QDate dt) 2744void CalendarView::newEvent(QDate dt)
2744{ 2745{
2745 newEvent(QDateTime(dt, QTime(0,0,0)), 2746 newEvent(QDateTime(dt, QTime(0,0,0)),
2746 QDateTime(dt, QTime(0,0,0)), true); 2747 QDateTime(dt, QTime(0,0,0)), true);
2747} 2748}
2748void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 2749void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
2749{ 2750{
2750 newEvent(fromHint, toHint, false); 2751 newEvent(fromHint, toHint, false);
2751} 2752}
2752void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2753void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2753{ 2754{
2754 2755
2755 showEventEditor(); 2756 showEventEditor();
2756 mEventEditor->newEvent(fromHint,toHint,allDay); 2757 mEventEditor->newEvent(fromHint,toHint,allDay);
2757 if ( mFilterView->filtersEnabled() ) { 2758 if ( mFilterView->filtersEnabled() ) {
2758 CalFilter *filter = mFilterView->selectedFilter(); 2759 CalFilter *filter = mFilterView->selectedFilter();
2759 if (filter && filter->showCategories()) { 2760 if (filter && filter->showCategories()) {
2760 mEventEditor->setCategories(filter->categoryList().join(",") ); 2761 mEventEditor->setCategories(filter->categoryList().join(",") );
2761 } 2762 }
2762 if ( filter ) 2763 if ( filter )
2763 mEventEditor->setSecrecy( filter->getSecrecy() ); 2764 mEventEditor->setSecrecy( filter->getSecrecy() );
2764 } 2765 }
2765 mEventEditor->exec(); 2766 mEventEditor->exec();
2766 setActiveWindow(); 2767 setActiveWindow();
2767} 2768}
2768void CalendarView::todoAdded(Todo * t) 2769void CalendarView::todoAdded(Todo * t)
2769{ 2770{
2770 2771
2771 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2772 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2772 updateTodoViews(); 2773 updateTodoViews();
2773} 2774}
2774void CalendarView::todoChanged(Todo * t) 2775void CalendarView::todoChanged(Todo * t)
2775{ 2776{
2776 emit todoModified( t, 4 ); 2777 emit todoModified( t, 4 );
2777 // updateTodoViews(); 2778 // updateTodoViews();
2778} 2779}
2779void CalendarView::todoToBeDeleted(Todo *) 2780void CalendarView::todoToBeDeleted(Todo *)
2780{ 2781{
2781 //qDebug("todoToBeDeleted(Todo *) "); 2782 //qDebug("todoToBeDeleted(Todo *) ");
2782 updateTodoViews(); 2783 updateTodoViews();
2783} 2784}
2784void CalendarView::todoDeleted() 2785void CalendarView::todoDeleted()
2785{ 2786{
2786 //qDebug(" todoDeleted()"); 2787 //qDebug(" todoDeleted()");
2787 updateTodoViews(); 2788 updateTodoViews();
2788} 2789}
2789 2790
2790 2791
2791void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 2792void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
2792{ 2793{
2793 showTodoEditor(); 2794 showTodoEditor();
2794 mTodoEditor->newTodo(dt,0,allday); 2795 mTodoEditor->newTodo(dt,0,allday);
2795 if ( mFilterView->filtersEnabled() ) { 2796 if ( mFilterView->filtersEnabled() ) {
2796 CalFilter *filter = mFilterView->selectedFilter(); 2797 CalFilter *filter = mFilterView->selectedFilter();
2797 if (filter && filter->showCategories()) { 2798 if (filter && filter->showCategories()) {
2798 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2799 mTodoEditor->setCategories(filter->categoryList().join(",") );
2799 } 2800 }
2800 if ( filter ) 2801 if ( filter )
2801 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2802 mTodoEditor->setSecrecy( filter->getSecrecy() );
2802 } 2803 }
2803 mTodoEditor->exec(); 2804 mTodoEditor->exec();
2804 setActiveWindow(); 2805 setActiveWindow();
2805} 2806}
2806 2807
2807void CalendarView::newTodo() 2808void CalendarView::newTodo()
2808{ 2809{
2809 newTodoDateTime( QDateTime(),true ); 2810 newTodoDateTime( QDateTime(),true );
2810} 2811}
2811 2812
2812void CalendarView::newSubTodo() 2813void CalendarView::newSubTodo()
2813{ 2814{
2814 Todo *todo = selectedTodo(); 2815 Todo *todo = selectedTodo();
2815 if ( todo ) newSubTodo( todo ); 2816 if ( todo ) newSubTodo( todo );
2816} 2817}
2817 2818
2818void CalendarView::newSubTodo(Todo *parentEvent) 2819void CalendarView::newSubTodo(Todo *parentEvent)
2819{ 2820{
2820 2821
2821 showTodoEditor(); 2822 showTodoEditor();
2822 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 2823 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
2823 mTodoEditor->exec(); 2824 mTodoEditor->exec();
2824 setActiveWindow(); 2825 setActiveWindow();
2825} 2826}
2826 2827
2827void CalendarView::newFloatingEvent() 2828void CalendarView::newFloatingEvent()
2828{ 2829{
2829 DateList tmpList = mNavigator->selectedDates(); 2830 DateList tmpList = mNavigator->selectedDates();
2830 QDate date = tmpList.first(); 2831 QDate date = tmpList.first();
2831 2832
2832 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2833 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2833 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2834 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2834} 2835}
2835 2836
2836 2837
2837void CalendarView::editEvent( Event *event ) 2838void CalendarView::editEvent( Event *event )
2838{ 2839{
2839 2840
2840 if ( !event ) return; 2841 if ( !event ) return;
2841 if ( event->isReadOnly() ) { 2842 if ( event->isReadOnly() ) {
2842 showEvent( event ); 2843 showEvent( event );
2843 return; 2844 return;
2844 } 2845 }
2845 showEventEditor(); 2846 showEventEditor();
2846 mEventEditor->editEvent( event , mFlagEditDescription); 2847 mEventEditor->editEvent( event , mFlagEditDescription);
2847 mEventEditor->exec(); 2848 mEventEditor->exec();
2848 setActiveWindow(); 2849 setActiveWindow();
2849 2850
2850} 2851}
2851void CalendarView::editJournal( Journal *jour ) 2852void CalendarView::editJournal( Journal *jour )
2852{ 2853{
2853 if ( !jour ) return; 2854 if ( !jour ) return;
2854 mDialogManager->hideSearchDialog(); 2855 mDialogManager->hideSearchDialog();
2855 mViewManager->showJournalView(); 2856 mViewManager->showJournalView();
2856 mNavigator->slotDaySelect( jour->dtStart().date() ); 2857 mNavigator->slotDaySelect( jour->dtStart().date() );
2857} 2858}
2858void CalendarView::editTodo( Todo *todo ) 2859void CalendarView::editTodo( Todo *todo )
2859{ 2860{
2860 if ( !todo ) return; 2861 if ( !todo ) return;
2861 2862
2862 if ( todo->isReadOnly() ) { 2863 if ( todo->isReadOnly() ) {
2863 showTodo( todo ); 2864 showTodo( todo );
2864 return; 2865 return;
2865 } 2866 }
2866 showTodoEditor(); 2867 showTodoEditor();
2867 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2868 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2868 mTodoEditor->exec(); 2869 mTodoEditor->exec();
2869 setActiveWindow(); 2870 setActiveWindow();
2870 2871
2871} 2872}
2872 2873
2873KOEventViewerDialog* CalendarView::getEventViewerDialog() 2874KOEventViewerDialog* CalendarView::getEventViewerDialog()
2874{ 2875{
2875 if ( !mEventViewerDialog ) { 2876 if ( !mEventViewerDialog ) {
2876 mEventViewerDialog = new KOEventViewerDialog(0); 2877 mEventViewerDialog = new KOEventViewerDialog(0);
2877 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2878 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2878 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2879 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2879 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2880 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2880 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2881 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2881 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2882 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2882 viewManager(), SLOT( showAgendaView( bool ) ) ); 2883 viewManager(), SLOT( showAgendaView( bool ) ) );
2883 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 2884 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
2884 this, SLOT( slotViewerClosed() ) ); 2885 this, SLOT( slotViewerClosed() ) );
2885 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 2886 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
2886 this, SLOT( todoChanged(Todo *) ) ); 2887 this, SLOT( todoChanged(Todo *) ) );
2887 mEventViewerDialog->resize( 640, 480 ); 2888 mEventViewerDialog->resize( 640, 480 );
2888 2889
2889 } 2890 }
2890 return mEventViewerDialog; 2891 return mEventViewerDialog;
2891} 2892}
2892void CalendarView::showEvent(Event *event) 2893void CalendarView::showEvent(Event *event)
2893{ 2894{
2894 getEventViewerDialog()->setEvent(event); 2895 getEventViewerDialog()->setEvent(event);
2895 getEventViewerDialog()->showMe(); 2896 getEventViewerDialog()->showMe();
2896} 2897}
2897 2898
2898void CalendarView::showTodo(Todo *event) 2899void CalendarView::showTodo(Todo *event)
2899{ 2900{
2900 getEventViewerDialog()->setTodo(event); 2901 getEventViewerDialog()->setTodo(event);
2901 getEventViewerDialog()->showMe(); 2902 getEventViewerDialog()->showMe();
2902} 2903}
2903void CalendarView::showJournal( Journal *jour ) 2904void CalendarView::showJournal( Journal *jour )
2904{ 2905{
2905 getEventViewerDialog()->setJournal(jour); 2906 getEventViewerDialog()->setJournal(jour);
2906 getEventViewerDialog()->showMe(); 2907 getEventViewerDialog()->showMe();
2907 2908
2908} 2909}
2909// void CalendarView::todoModified (Todo *event, int changed) 2910// void CalendarView::todoModified (Todo *event, int changed)
2910// { 2911// {
2911// // if (mDialogList.find (event) != mDialogList.end ()) { 2912// // if (mDialogList.find (event) != mDialogList.end ()) {
2912// // kdDebug() << "Todo modified and open" << endl; 2913// // kdDebug() << "Todo modified and open" << endl;
2913// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2914// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2914// // temp->modified (changed); 2915// // temp->modified (changed);
2915 2916
2916// // } 2917// // }
2917 2918
2918// mViewManager->updateView(); 2919// mViewManager->updateView();
2919// } 2920// }
2920 2921
2921void CalendarView::appointment_show() 2922void CalendarView::appointment_show()
2922{ 2923{
2923 Event *anEvent = 0; 2924 Event *anEvent = 0;
2924 2925
2925 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2926 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2926 2927
2927 if (mViewManager->currentView()->isEventView()) { 2928 if (mViewManager->currentView()->isEventView()) {
2928 if ( incidence && incidence->type() == "Event" ) { 2929 if ( incidence && incidence->type() == "Event" ) {
2929 anEvent = static_cast<Event *>(incidence); 2930 anEvent = static_cast<Event *>(incidence);
2930 } 2931 }
2931 } 2932 }
2932 2933
2933 if (!anEvent) { 2934 if (!anEvent) {
2934 KNotifyClient::beep(); 2935 KNotifyClient::beep();
2935 return; 2936 return;
2936 } 2937 }
2937 2938
2938 showEvent(anEvent); 2939 showEvent(anEvent);
2939} 2940}
2940 2941
2941void CalendarView::appointment_edit() 2942void CalendarView::appointment_edit()
2942{ 2943{
2943 Event *anEvent = 0; 2944 Event *anEvent = 0;
2944 2945
2945 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2946 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2946 2947
2947 if (mViewManager->currentView()->isEventView()) { 2948 if (mViewManager->currentView()->isEventView()) {
2948 if ( incidence && incidence->type() == "Event" ) { 2949 if ( incidence && incidence->type() == "Event" ) {
2949 anEvent = static_cast<Event *>(incidence); 2950 anEvent = static_cast<Event *>(incidence);
2950 } 2951 }
2951 } 2952 }
2952 2953
2953 if (!anEvent) { 2954 if (!anEvent) {
2954 KNotifyClient::beep(); 2955 KNotifyClient::beep();
2955 return; 2956 return;
2956 } 2957 }
2957 2958
2958 editEvent(anEvent); 2959 editEvent(anEvent);
2959} 2960}
2960 2961
2961void CalendarView::appointment_delete() 2962void CalendarView::appointment_delete()
2962{ 2963{
2963 Event *anEvent = 0; 2964 Event *anEvent = 0;
2964 2965
2965 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2966 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2966 2967
2967 if (mViewManager->currentView()->isEventView()) { 2968 if (mViewManager->currentView()->isEventView()) {
2968 if ( incidence && incidence->type() == "Event" ) { 2969 if ( incidence && incidence->type() == "Event" ) {
2969 anEvent = static_cast<Event *>(incidence); 2970 anEvent = static_cast<Event *>(incidence);
2970 } 2971 }
2971 } 2972 }
2972 2973
2973 if (!anEvent) { 2974 if (!anEvent) {
2974 KNotifyClient::beep(); 2975 KNotifyClient::beep();
2975 return; 2976 return;
2976 } 2977 }
2977 2978
2978 deleteEvent(anEvent); 2979 deleteEvent(anEvent);
2979} 2980}
2980 2981
2981void CalendarView::todo_resub( Todo * parent, Todo * sub ) 2982void CalendarView::todo_resub( Todo * parent, Todo * sub )
2982{ 2983{
2983 if (!sub) return; 2984 if (!sub) return;
2984 if (!parent) return; 2985 if (!parent) return;
2985 if ( sub->relatedTo() ) 2986 if ( sub->relatedTo() )
2986 sub->relatedTo()->removeRelation(sub); 2987 sub->relatedTo()->removeRelation(sub);
2987 sub->setRelatedTo(parent); 2988 sub->setRelatedTo(parent);
2988 sub->setRelatedToUid(parent->uid()); 2989 sub->setRelatedToUid(parent->uid());
2989 parent->addRelation(sub); 2990 parent->addRelation(sub);
2990 sub->updated(); 2991 sub->updated();
2991 parent->updated(); 2992 parent->updated();
2992 setModified(true); 2993 setModified(true);
2993 updateView(); 2994 updateView();
2994} 2995}
2995void CalendarView::todo_unsub(Todo *anTodo ) 2996void CalendarView::todo_unsub(Todo *anTodo )
2996{ 2997{
2997 // Todo *anTodo = selectedTodo(); 2998 // Todo *anTodo = selectedTodo();
2998 if (!anTodo) return; 2999 if (!anTodo) return;
2999 if (!anTodo->relatedTo()) return; 3000 if (!anTodo->relatedTo()) return;
3000 anTodo->relatedTo()->removeRelation(anTodo); 3001 anTodo->relatedTo()->removeRelation(anTodo);
3001 anTodo->setRelatedTo(0); 3002 anTodo->setRelatedTo(0);
3002 anTodo->updated(); 3003 anTodo->updated();
3003 anTodo->setRelatedToUid(""); 3004 anTodo->setRelatedToUid("");
3004 setModified(true); 3005 setModified(true);
3005 updateView(); 3006 updateView();
3006} 3007}
3007 3008
3008void CalendarView::deleteTodo(Todo *todo) 3009void CalendarView::deleteTodo(Todo *todo)
3009{ 3010{
3010 if (!todo) { 3011 if (!todo) {
3011 KNotifyClient::beep(); 3012 KNotifyClient::beep();
3012 return; 3013 return;
3013 } 3014 }
3014 if (KOPrefs::instance()->mConfirm) { 3015 if (KOPrefs::instance()->mConfirm) {
3015 QString text = todo->summary().left(20); 3016 QString text = todo->summary().left(20);
3016 if (!todo->relations().isEmpty()) { 3017 if (!todo->relations().isEmpty()) {
3017 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 3018 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
3018 3019
3019 } 3020 }
3020 switch (msgItemDelete(text)) { 3021 switch (msgItemDelete(text)) {
3021 case KMessageBox::Continue: // OK 3022 case KMessageBox::Continue: // OK
3022 bool deleteT = false; 3023 bool deleteT = false;
3023 if (!todo->relations().isEmpty()) { 3024 if (!todo->relations().isEmpty()) {
3024 deleteT = removeCompletedSubTodos( todo ); 3025 deleteT = removeCompletedSubTodos( todo );
3025 } 3026 }
3026 // deleteT == true: todo already deleted in removeCompletedSubTodos 3027 // deleteT == true: todo already deleted in removeCompletedSubTodos
3027 if ( !deleteT ) { 3028 if ( !deleteT ) {
3028 checkExternalId( todo ); 3029 checkExternalId( todo );
3029 calendar()->deleteTodo(todo); 3030 calendar()->deleteTodo(todo);
3030 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3031 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3031 updateView(); 3032 updateView();
3032 } 3033 }
3033 break; 3034 break;
3034 } // switch 3035 } // switch
3035 } else { 3036 } else {
3036 checkExternalId( todo ); 3037 checkExternalId( todo );
3037 mCalendar->deleteTodo(todo); 3038 mCalendar->deleteTodo(todo);
3038 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3039 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3039 updateView(); 3040 updateView();
3040 } 3041 }
3041 3042
3042 emit updateSearchDialog(); 3043 emit updateSearchDialog();
3043} 3044}
3044void CalendarView::deleteJournal(Journal *jour) 3045void CalendarView::deleteJournal(Journal *jour)
3045{ 3046{
3046 if (!jour) { 3047 if (!jour) {
3047 KNotifyClient::beep(); 3048 KNotifyClient::beep();
3048 return; 3049 return;
3049 } 3050 }
3050 if (KOPrefs::instance()->mConfirm) { 3051 if (KOPrefs::instance()->mConfirm) {
3051 switch (msgItemDelete( jour->description().left(20))) { 3052 switch (msgItemDelete( jour->description().left(20))) {
3052 case KMessageBox::Continue: // OK 3053 case KMessageBox::Continue: // OK
3053 calendar()->deleteJournal(jour); 3054 calendar()->deleteJournal(jour);
3054 updateView(); 3055 updateView();
3055 break; 3056 break;
3056 } // switch 3057 } // switch
3057 } else { 3058 } else {
3058 calendar()->deleteJournal(jour);; 3059 calendar()->deleteJournal(jour);;
3059 updateView(); 3060 updateView();
3060 } 3061 }
3061 emit updateSearchDialog(); 3062 emit updateSearchDialog();
3062} 3063}
3063 3064
3064void CalendarView::deleteEvent(Event *anEvent) 3065void CalendarView::deleteEvent(Event *anEvent)
3065{ 3066{
3066 if (!anEvent) { 3067 if (!anEvent) {
3067 KNotifyClient::beep(); 3068 KNotifyClient::beep();
3068 return; 3069 return;
3069 } 3070 }
3070 3071
3071 if (anEvent->recurrence()->doesRecur()) { 3072 if (anEvent->recurrence()->doesRecur()) {
3072 QDate itemDate = mViewManager->currentSelectionDate(); 3073 QDate itemDate = mViewManager->currentSelectionDate();
3073 int km; 3074 int km;
3074 if (!itemDate.isValid()) { 3075 if (!itemDate.isValid()) {
3075 //kdDebug() << "Date Not Valid" << endl; 3076 //kdDebug() << "Date Not Valid" << endl;
3076 if (KOPrefs::instance()->mConfirm) { 3077 if (KOPrefs::instance()->mConfirm) {
3077 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3078 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3078 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3079 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3079 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3080 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3080 if ( km == KMessageBox::Continue ) 3081 if ( km == KMessageBox::Continue )
3081 km = KMessageBox::No; // No = all below 3082 km = KMessageBox::No; // No = all below
3082 } else 3083 } else
3083 km = KMessageBox::No; 3084 km = KMessageBox::No;
3084 } else { 3085 } else {
3085 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 3086 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) +
3086 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3087 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3087 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3088 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3088 i18n("KO/Pi Confirmation"),i18n("Current"), 3089 i18n("KO/Pi Confirmation"),i18n("Current"),
3089 i18n("All")); 3090 i18n("All"));
3090 } 3091 }
3091 switch(km) { 3092 switch(km) {
3092 3093
3093 case KMessageBox::No: // Continue // all 3094 case KMessageBox::No: // Continue // all
3094 //qDebug("KMessageBox::No "); 3095 //qDebug("KMessageBox::No ");
3095 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3096 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3096 schedule(Scheduler::Cancel,anEvent); 3097 schedule(Scheduler::Cancel,anEvent);
3097 3098
3098 checkExternalId( anEvent); 3099 checkExternalId( anEvent);
3099 mCalendar->deleteEvent(anEvent); 3100 mCalendar->deleteEvent(anEvent);
3100 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3101 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3101 break; 3102 break;
3102 3103
3103 // Disabled because it does not work 3104 // Disabled because it does not work
3104 //#if 0 3105 //#if 0
3105 case KMessageBox::Yes: // just this one 3106 case KMessageBox::Yes: // just this one
3106 //QDate qd = mNavigator->selectedDates().first(); 3107 //QDate qd = mNavigator->selectedDates().first();
3107 //if (!qd.isValid()) { 3108 //if (!qd.isValid()) {
3108 // kdDebug() << "no date selected, or invalid date" << endl; 3109 // kdDebug() << "no date selected, or invalid date" << endl;
3109 // KNotifyClient::beep(); 3110 // KNotifyClient::beep();
3110 // return; 3111 // return;
3111 //} 3112 //}
3112 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3113 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3113 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3114 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3114 anEvent->addExDate(itemDate); 3115 anEvent->addExDate(itemDate);
3115 int duration = anEvent->recurrence()->duration(); 3116 int duration = anEvent->recurrence()->duration();
3116 if ( duration > 0 ) { 3117 if ( duration > 0 ) {
3117 anEvent->recurrence()->setDuration( duration - 1 ); 3118 anEvent->recurrence()->setDuration( duration - 1 );
3118 } 3119 }
3119 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3120 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3120 } 3121 }
3121 break; 3122 break;
3122 //#endif 3123 //#endif
3123 } // switch 3124 } // switch
3124 } else { 3125 } else {
3125 if (KOPrefs::instance()->mConfirm) { 3126 if (KOPrefs::instance()->mConfirm) {
3126 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3127 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3127 i18n("\nAre you sure you want\nto delete this event?"), 3128 i18n("\nAre you sure you want\nto delete this event?"),
3128 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3129 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3129 case KMessageBox::Continue: // OK 3130 case KMessageBox::Continue: // OK
3130 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3131 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3131 schedule(Scheduler::Cancel,anEvent); 3132 schedule(Scheduler::Cancel,anEvent);
3132 checkExternalId( anEvent); 3133 checkExternalId( anEvent);
3133 mCalendar->deleteEvent(anEvent); 3134 mCalendar->deleteEvent(anEvent);
3134 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3135 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3135 break; 3136 break;
3136 } // switch 3137 } // switch
3137 } else { 3138 } else {
3138 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3139 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3139 schedule(Scheduler::Cancel,anEvent); 3140 schedule(Scheduler::Cancel,anEvent);
3140 checkExternalId( anEvent); 3141 checkExternalId( anEvent);
3141 mCalendar->deleteEvent(anEvent); 3142 mCalendar->deleteEvent(anEvent);
3142 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3143 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3143 } 3144 }
3144 } // if-else 3145 } // if-else
3145 emit updateSearchDialog(); 3146 emit updateSearchDialog();
3146} 3147}
3147 3148
3148bool CalendarView::deleteEvent(const QString &uid) 3149bool CalendarView::deleteEvent(const QString &uid)
3149{ 3150{
3150 Event *ev = mCalendar->event(uid); 3151 Event *ev = mCalendar->event(uid);
3151 if (ev) { 3152 if (ev) {
3152 deleteEvent(ev); 3153 deleteEvent(ev);
3153 return true; 3154 return true;
3154 } else { 3155 } else {
3155 return false; 3156 return false;
3156 } 3157 }
3157} 3158}
3158 3159
3159/*****************************************************************************/ 3160/*****************************************************************************/
3160 3161
3161void CalendarView::action_mail() 3162void CalendarView::action_mail()
3162{ 3163{
3163#ifndef KORG_NOMAIL 3164#ifndef KORG_NOMAIL
3164 KOMailClient mailClient; 3165 KOMailClient mailClient;
3165 3166
3166 Incidence *incidence = currentSelection(); 3167 Incidence *incidence = currentSelection();
3167 3168
3168 if (!incidence) { 3169 if (!incidence) {
3169 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3170 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3170 return; 3171 return;
3171 } 3172 }
3172 if(incidence->attendeeCount() == 0 ) { 3173 if(incidence->attendeeCount() == 0 ) {
3173 KMessageBox::sorry(this, 3174 KMessageBox::sorry(this,
3174 i18n("Can't generate mail:\nNo attendees defined.\n")); 3175 i18n("Can't generate mail:\nNo attendees defined.\n"));
3175 return; 3176 return;
3176 } 3177 }
3177 3178
3178 CalendarLocal cal_tmp; 3179 CalendarLocal cal_tmp;
3179 Event *event = 0; 3180 Event *event = 0;
3180 Event *ev = 0; 3181 Event *ev = 0;
3181 if ( incidence && incidence->type() == "Event" ) { 3182 if ( incidence && incidence->type() == "Event" ) {
3182 event = static_cast<Event *>(incidence); 3183 event = static_cast<Event *>(incidence);
3183 ev = new Event(*event); 3184 ev = new Event(*event);
3184 cal_tmp.addEvent(ev); 3185 cal_tmp.addEvent(ev);
3185 } 3186 }
3186 ICalFormat mForm(); 3187 ICalFormat mForm();
3187 QString attachment = mForm.toString( &cal_tmp ); 3188 QString attachment = mForm.toString( &cal_tmp );
3188 if (ev) delete(ev); 3189 if (ev) delete(ev);
3189 3190
3190 mailClient.mailAttendees(currentSelection(), attachment); 3191 mailClient.mailAttendees(currentSelection(), attachment);
3191 3192
3192#endif 3193#endif
3193 3194
3194#if 0 3195#if 0
3195 Event *anEvent = 0; 3196 Event *anEvent = 0;
3196 if (mViewManager->currentView()->isEventView()) { 3197 if (mViewManager->currentView()->isEventView()) {
3197 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3198 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3198 } 3199 }
3199 3200
3200 if (!anEvent) { 3201 if (!anEvent) {
3201 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3202 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3202 return; 3203 return;
3203 } 3204 }
3204 if(anEvent->attendeeCount() == 0 ) { 3205 if(anEvent->attendeeCount() == 0 ) {
3205 KMessageBox::sorry(this, 3206 KMessageBox::sorry(this,
3206 i18n("Can't generate mail:\nNo attendees defined.\n")); 3207 i18n("Can't generate mail:\nNo attendees defined.\n"));
3207 return; 3208 return;
3208 } 3209 }
3209 3210
3210 mailobject.emailEvent(anEvent); 3211 mailobject.emailEvent(anEvent);
3211#endif 3212#endif
3212} 3213}
3213 3214
3214 3215
3215void CalendarView::schedule_publish(Incidence *incidence) 3216void CalendarView::schedule_publish(Incidence *incidence)
3216{ 3217{
3217 Event *event = 0; 3218 Event *event = 0;
3218 Todo *todo = 0; 3219 Todo *todo = 0;
3219 3220
3220 if (incidence == 0) { 3221 if (incidence == 0) {
3221 incidence = mViewManager->currentView()->selectedIncidences().first(); 3222 incidence = mViewManager->currentView()->selectedIncidences().first();
3222 if (incidence == 0) { 3223 if (incidence == 0) {
3223 incidence = mTodoList->selectedIncidences().first(); 3224 incidence = mTodoList->selectedIncidences().first();
3224 } 3225 }
3225 } 3226 }
3226 if ( incidence && incidence->type() == "Event" ) { 3227 if ( incidence && incidence->type() == "Event" ) {
3227 event = static_cast<Event *>(incidence); 3228 event = static_cast<Event *>(incidence);
3228 } else { 3229 } else {
3229 if ( incidence && incidence->type() == "Todo" ) { 3230 if ( incidence && incidence->type() == "Todo" ) {
3230 todo = static_cast<Todo *>(incidence); 3231 todo = static_cast<Todo *>(incidence);
3231 } 3232 }
3232 } 3233 }
3233 3234
3234 if (!event && !todo) { 3235 if (!event && !todo) {
3235 KMessageBox::sorry(this,i18n("No event selected.")); 3236 KMessageBox::sorry(this,i18n("No event selected."));
3236 return; 3237 return;
3237 } 3238 }
3238 3239
3239 PublishDialog *publishdlg = new PublishDialog(); 3240 PublishDialog *publishdlg = new PublishDialog();
3240 if (incidence->attendeeCount()>0) { 3241 if (incidence->attendeeCount()>0) {
3241 QPtrList<Attendee> attendees = incidence->attendees(); 3242 QPtrList<Attendee> attendees = incidence->attendees();
3242 attendees.first(); 3243 attendees.first();
3243 while ( attendees.current()!=0 ) { 3244 while ( attendees.current()!=0 ) {
3244 publishdlg->addAttendee(attendees.current()); 3245 publishdlg->addAttendee(attendees.current());
3245 attendees.next(); 3246 attendees.next();
3246 } 3247 }
3247 } 3248 }
3248 bool send = true; 3249 bool send = true;
3249 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3250 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3250 if ( publishdlg->exec() != QDialog::Accepted ) 3251 if ( publishdlg->exec() != QDialog::Accepted )
3251 send = false; 3252 send = false;
3252 } 3253 }
3253 if ( send ) { 3254 if ( send ) {
3254 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3255 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3255 if ( event ) { 3256 if ( event ) {
3256 Event *ev = new Event(*event); 3257 Event *ev = new Event(*event);
3257 ev->registerObserver(0); 3258 ev->registerObserver(0);
3258 ev->clearAttendees(); 3259 ev->clearAttendees();
3259 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3260 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3260 delete(ev); 3261 delete(ev);
3261 } 3262 }
3262 } else { 3263 } else {
3263 if ( todo ) { 3264 if ( todo ) {
3264 Todo *ev = new Todo(*todo); 3265 Todo *ev = new Todo(*todo);
3265 ev->registerObserver(0); 3266 ev->registerObserver(0);
3266 ev->clearAttendees(); 3267 ev->clearAttendees();
3267 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3268 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3268 delete(ev); 3269 delete(ev);
3269 } 3270 }
3270 } 3271 }
3271 } 3272 }
3272 } 3273 }
3273 delete publishdlg; 3274 delete publishdlg;
3274} 3275}
3275 3276
3276void CalendarView::schedule_request(Incidence *incidence) 3277void CalendarView::schedule_request(Incidence *incidence)
3277{ 3278{
3278 schedule(Scheduler::Request,incidence); 3279 schedule(Scheduler::Request,incidence);
3279} 3280}
3280 3281
3281void CalendarView::schedule_refresh(Incidence *incidence) 3282void CalendarView::schedule_refresh(Incidence *incidence)
3282{ 3283{
3283 schedule(Scheduler::Refresh,incidence); 3284 schedule(Scheduler::Refresh,incidence);
3284} 3285}
3285 3286
3286void CalendarView::schedule_cancel(Incidence *incidence) 3287void CalendarView::schedule_cancel(Incidence *incidence)
3287{ 3288{
3288 schedule(Scheduler::Cancel,incidence); 3289 schedule(Scheduler::Cancel,incidence);
3289} 3290}
3290 3291
3291void CalendarView::schedule_add(Incidence *incidence) 3292void CalendarView::schedule_add(Incidence *incidence)
3292{ 3293{
3293 schedule(Scheduler::Add,incidence); 3294 schedule(Scheduler::Add,incidence);
3294} 3295}
3295 3296
3296void CalendarView::schedule_reply(Incidence *incidence) 3297void CalendarView::schedule_reply(Incidence *incidence)
3297{ 3298{
3298 schedule(Scheduler::Reply,incidence); 3299 schedule(Scheduler::Reply,incidence);
3299} 3300}
3300 3301
3301void CalendarView::schedule_counter(Incidence *incidence) 3302void CalendarView::schedule_counter(Incidence *incidence)
3302{ 3303{
3303 schedule(Scheduler::Counter,incidence); 3304 schedule(Scheduler::Counter,incidence);
3304} 3305}
3305 3306
3306void CalendarView::schedule_declinecounter(Incidence *incidence) 3307void CalendarView::schedule_declinecounter(Incidence *incidence)
3307{ 3308{
3308 schedule(Scheduler::Declinecounter,incidence); 3309 schedule(Scheduler::Declinecounter,incidence);
3309} 3310}
3310 3311
3311void CalendarView::schedule_publish_freebusy(int daysToPublish) 3312void CalendarView::schedule_publish_freebusy(int daysToPublish)
3312{ 3313{
3313 QDateTime start = QDateTime::currentDateTime(); 3314 QDateTime start = QDateTime::currentDateTime();
3314 QDateTime end = start.addDays(daysToPublish); 3315 QDateTime end = start.addDays(daysToPublish);
3315 3316
3316 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 3317 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
3317 freebusy->setOrganizer(KOPrefs::instance()->email()); 3318 freebusy->setOrganizer(KOPrefs::instance()->email());
3318 3319
3319 3320
3320 PublishDialog *publishdlg = new PublishDialog(); 3321 PublishDialog *publishdlg = new PublishDialog();
3321 if ( publishdlg->exec() == QDialog::Accepted ) { 3322 if ( publishdlg->exec() == QDialog::Accepted ) {
3322 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3323 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3323 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 3324 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
3324 delete(freebusy); 3325 delete(freebusy);
3325 } 3326 }
3326 } 3327 }
3327 delete publishdlg; 3328 delete publishdlg;
3328} 3329}
3329 3330
3330void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 3331void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
3331{ 3332{
3332 Event *event = 0; 3333 Event *event = 0;
3333 Todo *todo = 0; 3334 Todo *todo = 0;
3334 3335
3335 if (incidence == 0) { 3336 if (incidence == 0) {
3336 incidence = mViewManager->currentView()->selectedIncidences().first(); 3337 incidence = mViewManager->currentView()->selectedIncidences().first();
3337 if (incidence == 0) { 3338 if (incidence == 0) {
3338 incidence = mTodoList->selectedIncidences().first(); 3339 incidence = mTodoList->selectedIncidences().first();
3339 } 3340 }
3340 } 3341 }
3341 if ( incidence && incidence->type() == "Event" ) { 3342 if ( incidence && incidence->type() == "Event" ) {
3342 event = static_cast<Event *>(incidence); 3343 event = static_cast<Event *>(incidence);
3343 } 3344 }
3344 if ( incidence && incidence->type() == "Todo" ) { 3345 if ( incidence && incidence->type() == "Todo" ) {
3345 todo = static_cast<Todo *>(incidence); 3346 todo = static_cast<Todo *>(incidence);
3346 } 3347 }
3347 3348
3348 if (!event && !todo) { 3349 if (!event && !todo) {
3349 KMessageBox::sorry(this,i18n("No event selected.")); 3350 KMessageBox::sorry(this,i18n("No event selected."));
3350 return; 3351 return;
3351 } 3352 }
3352 3353
3353 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 3354 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
3354 KMessageBox::sorry(this,i18n("The event has no attendees.")); 3355 KMessageBox::sorry(this,i18n("The event has no attendees."));
3355 return; 3356 return;
3356 } 3357 }
3357 3358
3358 Event *ev = 0; 3359 Event *ev = 0;
3359 if (event) ev = new Event(*event); 3360 if (event) ev = new Event(*event);
3360 Todo *to = 0; 3361 Todo *to = 0;
3361 if (todo) to = new Todo(*todo); 3362 if (todo) to = new Todo(*todo);
3362 3363
3363 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 3364 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
3364 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 3365 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
3365 if (!me) { 3366 if (!me) {
3366 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 3367 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
3367 return; 3368 return;
3368 } 3369 }
3369 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 3370 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
3370 StatusDialog *statdlg = new StatusDialog(this); 3371 StatusDialog *statdlg = new StatusDialog(this);
3371 if (!statdlg->exec()==QDialog::Accepted) return; 3372 if (!statdlg->exec()==QDialog::Accepted) return;
3372 me->setStatus( statdlg->status() ); 3373 me->setStatus( statdlg->status() );
3373 delete(statdlg); 3374 delete(statdlg);
3374 } 3375 }
3375 Attendee *menew = new Attendee(*me); 3376 Attendee *menew = new Attendee(*me);
3376 if (ev) { 3377 if (ev) {
3377 ev->clearAttendees(); 3378 ev->clearAttendees();
3378 ev->addAttendee(menew,false); 3379 ev->addAttendee(menew,false);
3379 } else { 3380 } else {
3380 if (to) { 3381 if (to) {
3381 todo->clearAttendees(); 3382 todo->clearAttendees();
3382 todo->addAttendee(menew,false); 3383 todo->addAttendee(menew,false);
3383 } 3384 }
3384 } 3385 }
3385 } 3386 }
3386 3387
3387 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3388 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3388 if (ev) { 3389 if (ev) {
3389 if ( !dlg->addMessage(ev,method) ) delete(ev); 3390 if ( !dlg->addMessage(ev,method) ) delete(ev);
3390 } else { 3391 } else {
3391 if (to) { 3392 if (to) {
3392 if ( !dlg->addMessage(to,method) ) delete(to); 3393 if ( !dlg->addMessage(to,method) ) delete(to);
3393 } 3394 }
3394 } 3395 }
3395} 3396}
3396 3397
3397void CalendarView::openAddressbook() 3398void CalendarView::openAddressbook()
3398{ 3399{
3399 KRun::runCommand("kaddressbook"); 3400 KRun::runCommand("kaddressbook");
3400} 3401}
3401 3402
3402void CalendarView::setModified(bool modified) 3403void CalendarView::setModified(bool modified)
3403{ 3404{
3404 if ( modified ) 3405 if ( modified )
3405 emit signalmodified(); 3406 emit signalmodified();
3406 if (mModified != modified) { 3407 if (mModified != modified) {
3407 mModified = modified; 3408 mModified = modified;
3408 emit modifiedChanged(mModified); 3409 emit modifiedChanged(mModified);
3409 } 3410 }
3410} 3411}
3411 3412
3412bool CalendarView::isReadOnly() 3413bool CalendarView::isReadOnly()
3413{ 3414{
3414 return mReadOnly; 3415 return mReadOnly;
3415} 3416}
3416 3417
3417void CalendarView::setReadOnly(bool readOnly) 3418void CalendarView::setReadOnly(bool readOnly)
3418{ 3419{
3419 if (mReadOnly != readOnly) { 3420 if (mReadOnly != readOnly) {
3420 mReadOnly = readOnly; 3421 mReadOnly = readOnly;
3421 emit readOnlyChanged(mReadOnly); 3422 emit readOnlyChanged(mReadOnly);
3422 } 3423 }
3423} 3424}
3424 3425
3425bool CalendarView::isModified() 3426bool CalendarView::isModified()
3426{ 3427{
3427 return mModified; 3428 return mModified;
3428} 3429}
3429 3430
3430void CalendarView::printSetup() 3431void CalendarView::printSetup()
3431{ 3432{
3432#ifndef KORG_NOPRINTER 3433#ifndef KORG_NOPRINTER
3433 createPrinter(); 3434 createPrinter();
3434 3435
3435 mCalPrinter->setupPrinter(); 3436 mCalPrinter->setupPrinter();
3436#endif 3437#endif
3437} 3438}
3438 3439
3439void CalendarView::print() 3440void CalendarView::print()
3440{ 3441{
3441#ifndef KORG_NOPRINTER 3442#ifndef KORG_NOPRINTER
3442 createPrinter(); 3443 createPrinter();
3443 3444
3444 DateList tmpDateList = mNavigator->selectedDates(); 3445 DateList tmpDateList = mNavigator->selectedDates();
3445 mCalPrinter->print(CalPrinter::Month, 3446 mCalPrinter->print(CalPrinter::Month,
3446 tmpDateList.first(), tmpDateList.last()); 3447 tmpDateList.first(), tmpDateList.last());
3447#endif 3448#endif
3448} 3449}
3449 3450
3450void CalendarView::printPreview() 3451void CalendarView::printPreview()
3451{ 3452{
3452#ifndef KORG_NOPRINTER 3453#ifndef KORG_NOPRINTER
3453 kdDebug() << "CalendarView::printPreview()" << endl; 3454 kdDebug() << "CalendarView::printPreview()" << endl;
3454 3455
3455 createPrinter(); 3456 createPrinter();
3456 3457
3457 DateList tmpDateList = mNavigator->selectedDates(); 3458 DateList tmpDateList = mNavigator->selectedDates();
3458 3459
3459 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3460 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3460 tmpDateList.last()); 3461 tmpDateList.last());
3461#endif 3462#endif
3462} 3463}
3463 3464
3464void CalendarView::exportICalendar() 3465void CalendarView::exportICalendar()
3465{ 3466{
3466 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3467 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3467 3468
3468 // Force correct extension 3469 // Force correct extension
3469 if (filename.right(4) != ".ics") filename += ".ics"; 3470 if (filename.right(4) != ".ics") filename += ".ics";
3470 3471
3471 FileStorage storage( mCalendar, filename, new ICalFormat() ); 3472 FileStorage storage( mCalendar, filename, new ICalFormat() );
3472 storage.save(); 3473 storage.save();
3473} 3474}
3474 3475
3475bool CalendarView::exportVCalendar( QString filename ) 3476bool CalendarView::exportVCalendar( QString filename )
3476{ 3477{
3477 if (mCalendar->journals().count() > 0) { 3478 if (mCalendar->journals().count() > 0) {
3478 int result = KMessageBox::warningContinueCancel(this, 3479 int result = KMessageBox::warningContinueCancel(this,
3479 i18n("The journal entries can not be\nexported to a vCalendar file."), 3480 i18n("The journal entries can not be\nexported to a vCalendar file."),
3480 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3481 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3481 true); 3482 true);
3482 if (result != KMessageBox::Continue) return false; 3483 if (result != KMessageBox::Continue) return false;
3483 } 3484 }
3484 3485
3485 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3486 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3486 3487
3487 // Force correct extension 3488 // Force correct extension
3488 if (filename.right(4) != ".vcs") filename += ".vcs"; 3489 if (filename.right(4) != ".vcs") filename += ".vcs";
3489 3490
3490 FileStorage storage( mCalendar, filename, new VCalFormat ); 3491 FileStorage storage( mCalendar, filename, new VCalFormat );
3491 return storage.save(); 3492 return storage.save();
3492 3493
3493} 3494}
3494 3495
3495void CalendarView::eventUpdated(Incidence *) 3496void CalendarView::eventUpdated(Incidence *)
3496{ 3497{
3497 setModified(); 3498 setModified();
3498 // Don't call updateView here. The code, which has caused the update of the 3499 // Don't call updateView here. The code, which has caused the update of the
3499 // event is responsible for updating the view. 3500 // event is responsible for updating the view.
3500 // updateView(); 3501 // updateView();
3501} 3502}
3502 3503
3503void CalendarView::adaptNavigationUnits() 3504void CalendarView::adaptNavigationUnits()
3504{ 3505{
3505 if (mViewManager->currentView()->isEventView()) { 3506 if (mViewManager->currentView()->isEventView()) {
3506 int days = mViewManager->currentView()->currentDateCount(); 3507 int days = mViewManager->currentView()->currentDateCount();
3507 if (days == 1) { 3508 if (days == 1) {
3508 emit changeNavStringPrev(i18n("&Previous Day")); 3509 emit changeNavStringPrev(i18n("&Previous Day"));
3509 emit changeNavStringNext(i18n("&Next Day")); 3510 emit changeNavStringNext(i18n("&Next Day"));
3510 } else { 3511 } else {
3511 emit changeNavStringPrev(i18n("&Previous Week")); 3512 emit changeNavStringPrev(i18n("&Previous Week"));
3512 emit changeNavStringNext(i18n("&Next Week")); 3513 emit changeNavStringNext(i18n("&Next Week"));
3513 } 3514 }
3514 } 3515 }
3515} 3516}
3516 3517
3517void CalendarView::processMainViewSelection( Incidence *incidence ) 3518void CalendarView::processMainViewSelection( Incidence *incidence )
3518{ 3519{
3519 if ( incidence ) mTodoList->clearSelection(); 3520 if ( incidence ) mTodoList->clearSelection();
3520 processIncidenceSelection( incidence ); 3521 processIncidenceSelection( incidence );
3521} 3522}
3522 3523
3523void CalendarView::processTodoListSelection( Incidence *incidence ) 3524void CalendarView::processTodoListSelection( Incidence *incidence )
3524{ 3525{
3525 if ( incidence && mViewManager->currentView() ) { 3526 if ( incidence && mViewManager->currentView() ) {
3526 mViewManager->currentView()->clearSelection(); 3527 mViewManager->currentView()->clearSelection();
3527 } 3528 }
3528 processIncidenceSelection( incidence ); 3529 processIncidenceSelection( incidence );
3529} 3530}
3530 3531
3531void CalendarView::processIncidenceSelection( Incidence *incidence ) 3532void CalendarView::processIncidenceSelection( Incidence *incidence )
3532{ 3533{
3533 if ( incidence == mSelectedIncidence ) return; 3534 if ( incidence == mSelectedIncidence ) return;
3534 3535
3535 mSelectedIncidence = incidence; 3536 mSelectedIncidence = incidence;
3536 3537
3537 emit incidenceSelected( mSelectedIncidence ); 3538 emit incidenceSelected( mSelectedIncidence );
3538 3539
3539 if ( incidence && incidence->type() == "Event" ) { 3540 if ( incidence && incidence->type() == "Event" ) {
3540 Event *event = static_cast<Event *>( incidence ); 3541 Event *event = static_cast<Event *>( incidence );
3541 if ( event->organizer() == KOPrefs::instance()->email() ) { 3542 if ( event->organizer() == KOPrefs::instance()->email() ) {
3542 emit organizerEventsSelected( true ); 3543 emit organizerEventsSelected( true );
3543 } else { 3544 } else {
3544 emit organizerEventsSelected(false); 3545 emit organizerEventsSelected(false);
3545 } 3546 }
3546 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3547 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3547 KOPrefs::instance()->email() ) ) { 3548 KOPrefs::instance()->email() ) ) {
3548 emit groupEventsSelected( true ); 3549 emit groupEventsSelected( true );
3549 } else { 3550 } else {
3550 emit groupEventsSelected(false); 3551 emit groupEventsSelected(false);
3551 } 3552 }
3552 return; 3553 return;
3553 } else { 3554 } else {
3554 if ( incidence && incidence->type() == "Todo" ) { 3555 if ( incidence && incidence->type() == "Todo" ) {
3555 emit todoSelected( true ); 3556 emit todoSelected( true );
3556 Todo *event = static_cast<Todo *>( incidence ); 3557 Todo *event = static_cast<Todo *>( incidence );
3557 if ( event->organizer() == KOPrefs::instance()->email() ) { 3558 if ( event->organizer() == KOPrefs::instance()->email() ) {
3558 emit organizerEventsSelected( true ); 3559 emit organizerEventsSelected( true );
3559 } else { 3560 } else {
3560 emit organizerEventsSelected(false); 3561 emit organizerEventsSelected(false);
3561 } 3562 }
3562 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3563 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3563 KOPrefs::instance()->email() ) ) { 3564 KOPrefs::instance()->email() ) ) {
3564 emit groupEventsSelected( true ); 3565 emit groupEventsSelected( true );
3565 } else { 3566 } else {
3566 emit groupEventsSelected(false); 3567 emit groupEventsSelected(false);
3567 } 3568 }
3568 return; 3569 return;
3569 } else { 3570 } else {
3570 emit todoSelected( false ); 3571 emit todoSelected( false );
3571 emit organizerEventsSelected(false); 3572 emit organizerEventsSelected(false);
3572 emit groupEventsSelected(false); 3573 emit groupEventsSelected(false);
3573 } 3574 }
3574 return; 3575 return;
3575 } 3576 }
3576 3577
3577 /* if ( incidence && incidence->type() == "Todo" ) { 3578 /* if ( incidence && incidence->type() == "Todo" ) {
3578 emit todoSelected( true ); 3579 emit todoSelected( true );
3579 } else { 3580 } else {
3580 emit todoSelected( false ); 3581 emit todoSelected( false );
3581 }*/ 3582 }*/
3582} 3583}
3583 3584
3584 3585
3585void CalendarView::checkClipboard() 3586void CalendarView::checkClipboard()
3586{ 3587{
3587#ifndef KORG_NODND 3588#ifndef KORG_NODND
3588 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3589 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3589 emit pasteEnabled(true); 3590 emit pasteEnabled(true);
3590 } else { 3591 } else {
3591 emit pasteEnabled(false); 3592 emit pasteEnabled(false);
3592 } 3593 }
3593#endif 3594#endif
3594} 3595}
3595 3596
3596void CalendarView::showDates(const DateList &selectedDates) 3597void CalendarView::showDates(const DateList &selectedDates)
3597{ 3598{
3598 // kdDebug() << "CalendarView::selectDates()" << endl; 3599 // kdDebug() << "CalendarView::selectDates()" << endl;
3599 3600
3600 3601
3601 if ( !mBlockShowDates ) { 3602 if ( !mBlockShowDates ) {
3602 if ( mViewManager->currentView() ) { 3603 if ( mViewManager->currentView() ) {
3603 updateView( selectedDates.first(), selectedDates.last() ); 3604 updateView( selectedDates.first(), selectedDates.last() );
3604 } else { 3605 } else {
3605 mViewManager->showAgendaView(); 3606 mViewManager->showAgendaView();
3606 } 3607 }
3607 } 3608 }
3608 3609
3609 QDate date = selectedDates.first(); 3610 QDate date = selectedDates.first();
3610 if ( ! date.isValid() ) { 3611 if ( ! date.isValid() ) {
3611 topLevelWidget()->setCaption(""); 3612 topLevelWidget()->setCaption("");
3612 return; 3613 return;
3613 } 3614 }
3614 3615
3615 QString selDates; 3616 QString selDates;
3616 selDates = KGlobal::locale()->formatDate( date, true); 3617 selDates = KGlobal::locale()->formatDate( date, true);
3617 if (selectedDates.first() < selectedDates.last() ) 3618 if (selectedDates.first() < selectedDates.last() )
3618 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3619 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3619 else { 3620 else {
3620 QString addString; 3621 QString addString;
3621 if ( date == QDateTime::currentDateTime().date() ) 3622 if ( date == QDateTime::currentDateTime().date() )
3622 addString = i18n("Today"); 3623 addString = i18n("Today");
3623 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 3624 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
3624 addString = i18n("Tomorrow"); 3625 addString = i18n("Tomorrow");
3625 else if ( date == QDateTime::currentDateTime().date().addDays(-1) ) 3626 else if ( date == QDateTime::currentDateTime().date().addDays(-1) )
3626 addString = i18n("Yesterday"); 3627 addString = i18n("Yesterday");
3627 else if ( date == QDateTime::currentDateTime().date().addDays(-2) ) 3628 else if ( date == QDateTime::currentDateTime().date().addDays(-2) )
3628 addString = i18n("Day before yesterday"); 3629 addString = i18n("Day before yesterday");
3629 else if ( date == QDateTime::currentDateTime().date().addDays(2) ) 3630 else if ( date == QDateTime::currentDateTime().date().addDays(2) )
3630 addString = i18n("Day after tomorrow"); 3631 addString = i18n("Day after tomorrow");
3631 if ( !addString.isEmpty() ) { 3632 if ( !addString.isEmpty() ) {
3632 topLevelWidget()->setCaption( addString+", " + selDates ); 3633 topLevelWidget()->setCaption( addString+", " + selDates );
3633 return; 3634 return;
3634 } 3635 }
3635 } 3636 }
3636 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3637 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3637 3638
3638} 3639}
3639 3640
3640QPtrList<CalFilter> CalendarView::filters() 3641QPtrList<CalFilter> CalendarView::filters()
3641{ 3642{
3642 return mFilters; 3643 return mFilters;
3643 3644
3644} 3645}
3645void CalendarView::editFilters() 3646void CalendarView::editFilters()
3646{ 3647{
3647 // kdDebug() << "CalendarView::editFilters()" << endl; 3648 // kdDebug() << "CalendarView::editFilters()" << endl;
3648 3649
3649 CalFilter *filter = mFilters.first(); 3650 CalFilter *filter = mFilters.first();
3650 while(filter) { 3651 while(filter) {
3651 kdDebug() << " Filter: " << filter->name() << endl; 3652 kdDebug() << " Filter: " << filter->name() << endl;
3652 filter = mFilters.next(); 3653 filter = mFilters.next();
3653 } 3654 }
3654 3655
3655 mDialogManager->showFilterEditDialog(&mFilters); 3656 mDialogManager->showFilterEditDialog(&mFilters);
3656} 3657}
3657void CalendarView::toggleFilter() 3658void CalendarView::toggleFilter()
3658{ 3659{
3659 showFilter(! mFilterView->isVisible()); 3660 showFilter(! mFilterView->isVisible());
3660} 3661}
3661 3662
3662KOFilterView *CalendarView::filterView() 3663KOFilterView *CalendarView::filterView()
3663{ 3664{
3664 return mFilterView; 3665 return mFilterView;
3665} 3666}
3666void CalendarView::selectFilter( int fil ) 3667void CalendarView::selectFilter( int fil )
3667{ 3668{
3668 mFilterView->setSelectedFilter( fil ); 3669 mFilterView->setSelectedFilter( fil );
3669} 3670}
3670void CalendarView::showFilter(bool visible) 3671void CalendarView::showFilter(bool visible)
3671{ 3672{
3672 if (visible) mFilterView->show(); 3673 if (visible) mFilterView->show();
3673 else mFilterView->hide(); 3674 else mFilterView->hide();
3674} 3675}
3675void CalendarView::toggleFilerEnabled( ) 3676void CalendarView::toggleFilerEnabled( )
3676{ 3677{
3677 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3678 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3678 if ( !mFilterView->filtersEnabled() ) 3679 if ( !mFilterView->filtersEnabled() )
3679 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3680 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3680 3681
3681} 3682}
3682void CalendarView::updateFilter() 3683void CalendarView::updateFilter()
3683{ 3684{
3684 CalFilter *filter = mFilterView->selectedFilter(); 3685 CalFilter *filter = mFilterView->selectedFilter();
3685 if (filter) { 3686 if (filter) {
3686 QString mess; 3687 QString mess;
3687 if (mFilterView->filtersEnabled()) { 3688 if (mFilterView->filtersEnabled()) {
3688 mess = i18n("Filter selected: ")+filter->name(); 3689 mess = i18n("Filter selected: ")+filter->name();
3689 filter->setEnabled(true); 3690 filter->setEnabled(true);
3690 } 3691 }
3691 else filter->setEnabled(false); 3692 else filter->setEnabled(false);
3692 mCalendar->setFilter(filter); 3693 mCalendar->setFilter(filter);
3693 updateView(); 3694 updateView();
3694 if ( !mess.isEmpty() ) 3695 if ( !mess.isEmpty() )
3695 topLevelWidget()->setCaption( mess ); 3696 topLevelWidget()->setCaption( mess );
3696 3697
3697 } 3698 }
3698} 3699}
3699 3700
3700void CalendarView::filterEdited() 3701void CalendarView::filterEdited()
3701{ 3702{
3702 mFilterView->updateFilters(); 3703 mFilterView->updateFilters();
3703 updateFilter(); 3704 updateFilter();
3704 writeSettings(); 3705 writeSettings();
3705} 3706}
3706 3707
3707 3708
3708void CalendarView::takeOverEvent() 3709void CalendarView::takeOverEvent()
3709{ 3710{
3710 Incidence *incidence = currentSelection(); 3711 Incidence *incidence = currentSelection();
3711 3712
3712 if (!incidence) return; 3713 if (!incidence) return;
3713 3714
3714 incidence->setOrganizer(KOPrefs::instance()->email()); 3715 incidence->setOrganizer(KOPrefs::instance()->email());
3715 incidence->recreate(); 3716 incidence->recreate();
3716 incidence->setReadOnly(false); 3717 incidence->setReadOnly(false);
3717 3718
3718 updateView(); 3719 updateView();
3719} 3720}
3720 3721
3721void CalendarView::takeOverCalendar() 3722void CalendarView::takeOverCalendar()
3722{ 3723{
3723 // TODO: Create Calendar::allIncidences() function and use it here 3724 // TODO: Create Calendar::allIncidences() function and use it here
3724 3725
3725 QPtrList<Event> events = mCalendar->events(); 3726 QPtrList<Event> events = mCalendar->events();
3726 for(uint i=0; i<events.count(); ++i) { 3727 for(uint i=0; i<events.count(); ++i) {
3727 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3728 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3728 events.at(i)->recreate(); 3729 events.at(i)->recreate();
3729 events.at(i)->setReadOnly(false); 3730 events.at(i)->setReadOnly(false);
3730 } 3731 }
3731 3732
3732 QPtrList<Todo> todos = mCalendar->todos(); 3733 QPtrList<Todo> todos = mCalendar->todos();
3733 for(uint i=0; i<todos.count(); ++i) { 3734 for(uint i=0; i<todos.count(); ++i) {
3734 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3735 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3735 todos.at(i)->recreate(); 3736 todos.at(i)->recreate();
3736 todos.at(i)->setReadOnly(false); 3737 todos.at(i)->setReadOnly(false);
3737 } 3738 }
3738 3739
3739 QPtrList<Journal> journals = mCalendar->journals(); 3740 QPtrList<Journal> journals = mCalendar->journals();
3740 for(uint i=0; i<journals.count(); ++i) { 3741 for(uint i=0; i<journals.count(); ++i) {
3741 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3742 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3742 journals.at(i)->recreate(); 3743 journals.at(i)->recreate();
3743 journals.at(i)->setReadOnly(false); 3744 journals.at(i)->setReadOnly(false);
3744 } 3745 }
3745 3746
3746 updateView(); 3747 updateView();
3747} 3748}
3748 3749
3749void CalendarView::showIntro() 3750void CalendarView::showIntro()
3750{ 3751{
3751 kdDebug() << "To be implemented." << endl; 3752 kdDebug() << "To be implemented." << endl;
3752} 3753}
3753 3754
3754QWidgetStack *CalendarView::viewStack() 3755QWidgetStack *CalendarView::viewStack()
3755{ 3756{
3756 return mRightFrame; 3757 return mRightFrame;
3757} 3758}
3758 3759
3759QWidget *CalendarView::leftFrame() 3760QWidget *CalendarView::leftFrame()
3760{ 3761{
3761 return ( QWidget *)mLeftFrame; 3762 return ( QWidget *)mLeftFrame;
3762} 3763}
3763 3764
3764DateNavigator *CalendarView::dateNavigator() 3765DateNavigator *CalendarView::dateNavigator()
3765{ 3766{
3766 return mNavigator; 3767 return mNavigator;
3767} 3768}
3768 3769
3769KDateNavigator* CalendarView::dateNavigatorWidget() 3770KDateNavigator* CalendarView::dateNavigatorWidget()
3770{ 3771{
3771 return mDateNavigator->navigatorView(); 3772 return mDateNavigator->navigatorView();
3772} 3773}
3773void CalendarView::toggleDateNavigatorWidget() 3774void CalendarView::toggleDateNavigatorWidget()
3774{ 3775{
3775 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 3776 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
3776 3777
3777 if (!KOPrefs::instance()->mShowDateNavigator ) 3778 if (!KOPrefs::instance()->mShowDateNavigator )
3778 mDateNavigator->hide(); 3779 mDateNavigator->hide();
3779 else 3780 else
3780 mDateNavigator->show(); 3781 mDateNavigator->show();
3781} 3782}
3782void CalendarView::addView(KOrg::BaseView *view) 3783void CalendarView::addView(KOrg::BaseView *view)
3783{ 3784{
3784 mViewManager->addView(view); 3785 mViewManager->addView(view);
3785} 3786}
3786 3787
3787void CalendarView::showView(KOrg::BaseView *view) 3788void CalendarView::showView(KOrg::BaseView *view)
3788{ 3789{
3789 mViewManager->showView(view, mLeftFrame->isVisible()); 3790 mViewManager->showView(view, mLeftFrame->isVisible());
3790} 3791}
3791 3792
3792Incidence *CalendarView::currentSelection() 3793Incidence *CalendarView::currentSelection()
3793{ 3794{
3794 return mViewManager->currentSelection(); 3795 return mViewManager->currentSelection();
3795} 3796}
3796void CalendarView::toggleAllDaySize() 3797void CalendarView::toggleAllDaySize()
3797{ 3798{
3798 /* 3799 /*
3799 if ( KOPrefs::instance()->mAllDaySize > 47 ) 3800 if ( KOPrefs::instance()->mAllDaySize > 47 )
3800 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 3801 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
3801 else 3802 else
3802 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 3803 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
3803 */ 3804 */
3804 viewManager()->agendaView()->toggleAllDay(); 3805 viewManager()->agendaView()->toggleAllDay();
3805} 3806}
3806void CalendarView::toggleExpand() 3807void CalendarView::toggleExpand()
3807{ 3808{
3808 // if ( mLeftFrame->isHidden() ) { 3809 // if ( mLeftFrame->isHidden() ) {
3809 // mLeftFrame->show(); 3810 // mLeftFrame->show();
3810 // emit calendarViewExpanded( false ); 3811 // emit calendarViewExpanded( false );
3811 // } else { 3812 // } else {
3812 // mLeftFrame->hide(); 3813 // mLeftFrame->hide();
3813 // emit calendarViewExpanded( true ); 3814 // emit calendarViewExpanded( true );
3814 // } 3815 // }
3815 //qDebug(" CalendarView::toggleExpand()"); 3816 //qDebug(" CalendarView::toggleExpand()");
3816 globalFlagBlockAgenda = 1; 3817 globalFlagBlockAgenda = 1;
3817 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 3818 emit calendarViewExpanded( !mLeftFrame->isHidden() );
3818 globalFlagBlockAgenda = 5; 3819 globalFlagBlockAgenda = 5;
3819 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 3820 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
3820 //mViewManager->showView( 0, true ); 3821 //mViewManager->showView( 0, true );
3821} 3822}
3822 3823
3823void CalendarView::calendarModified( bool modified, Calendar * ) 3824void CalendarView::calendarModified( bool modified, Calendar * )
3824{ 3825{
3825 setModified( modified ); 3826 setModified( modified );
3826} 3827}
3827 3828
3828Todo *CalendarView::selectedTodo() 3829Todo *CalendarView::selectedTodo()
3829{ 3830{
3830 Incidence *incidence = currentSelection(); 3831 Incidence *incidence = currentSelection();
3831 if ( incidence && incidence->type() == "Todo" ) { 3832 if ( incidence && incidence->type() == "Todo" ) {
3832 return static_cast<Todo *>( incidence ); 3833 return static_cast<Todo *>( incidence );
3833 } 3834 }
3834 3835
3835 incidence = mTodoList->selectedIncidences().first(); 3836 incidence = mTodoList->selectedIncidences().first();
3836 if ( incidence && incidence->type() == "Todo" ) { 3837 if ( incidence && incidence->type() == "Todo" ) {
3837 return static_cast<Todo *>( incidence ); 3838 return static_cast<Todo *>( incidence );
3838 } 3839 }
3839 3840
3840 return 0; 3841 return 0;
3841} 3842}
3842 3843
3843void CalendarView::dialogClosing(Incidence *in) 3844void CalendarView::dialogClosing(Incidence *in)
3844{ 3845{
3845 // mDialogList.remove(in); 3846 // mDialogList.remove(in);
3846} 3847}
3847 3848
3848void CalendarView::showIncidence() 3849void CalendarView::showIncidence()
3849{ 3850{
3850 mViewerCallerIsSearchDialog = false; 3851 mViewerCallerIsSearchDialog = false;
3851 Incidence *incidence = currentSelection(); 3852 Incidence *incidence = currentSelection();
3852 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3853 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3853 if ( incidence ) { 3854 if ( incidence ) {
3854 ShowIncidenceVisitor v; 3855 ShowIncidenceVisitor v;
3855 v.act( incidence, this ); 3856 v.act( incidence, this );
3856 } 3857 }
3857} 3858}
3858void CalendarView::editIncidenceDescription() 3859void CalendarView::editIncidenceDescription()
3859{ 3860{
3860 mFlagEditDescription = true; 3861 mFlagEditDescription = true;
3861 editIncidence(); 3862 editIncidence();
3862 mFlagEditDescription = false; 3863 mFlagEditDescription = false;
3863} 3864}
3864void CalendarView::editIncidence() 3865void CalendarView::editIncidence()
3865{ 3866{
3866 // qDebug("editIncidence() "); 3867 // qDebug("editIncidence() ");
3867 Incidence *incidence = currentSelection(); 3868 Incidence *incidence = currentSelection();
3868 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3869 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3869 if ( incidence ) { 3870 if ( incidence ) {
3870 EditIncidenceVisitor v; 3871 EditIncidenceVisitor v;
3871 v.act( incidence, this ); 3872 v.act( incidence, this );
3872 } 3873 }
3873} 3874}
3874 3875
3875void CalendarView::deleteIncidence() 3876void CalendarView::deleteIncidence()
3876{ 3877{
3877 Incidence *incidence = currentSelection(); 3878 Incidence *incidence = currentSelection();
3878 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3879 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3879 if ( incidence ) { 3880 if ( incidence ) {
3880 deleteIncidence(incidence); 3881 deleteIncidence(incidence);
3881 } 3882 }
3882} 3883}
3883 3884
3884void CalendarView::showIncidence(Incidence *incidence) 3885void CalendarView::showIncidence(Incidence *incidence)
3885{ 3886{
3886 mViewerCallerIsSearchDialog = false; 3887 mViewerCallerIsSearchDialog = false;
3887 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 3888 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
3888 if ( sender() && mDialogManager->getSearchDialog() ) { 3889 if ( sender() && mDialogManager->getSearchDialog() ) {
3889 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 3890 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
3890 mViewerCallerIsSearchDialog = true; 3891 mViewerCallerIsSearchDialog = true;
3891 } 3892 }
3892 } 3893 }
3893 if ( incidence ) { 3894 if ( incidence ) {
3894 ShowIncidenceVisitor v; 3895 ShowIncidenceVisitor v;
3895 v.act( incidence, this ); 3896 v.act( incidence, this );
3896 } 3897 }
3897} 3898}
3898 3899
3899void CalendarView::editIncidence(Incidence *incidence) 3900void CalendarView::editIncidence(Incidence *incidence)
3900{ 3901{
3901 if ( incidence ) { 3902 if ( incidence ) {
3902 3903
3903 EditIncidenceVisitor v; 3904 EditIncidenceVisitor v;
3904 v.act( incidence, this ); 3905 v.act( incidence, this );
3905 3906
3906 } 3907 }
3907} 3908}
3908 3909
3909void CalendarView::deleteIncidence(Incidence *incidence) 3910void CalendarView::deleteIncidence(Incidence *incidence)
3910{ 3911{
3911 //qDebug(" CalendarView::deleteIncidence "); 3912 //qDebug(" CalendarView::deleteIncidence ");
3912 if ( incidence ) { 3913 if ( incidence ) {
3913 DeleteIncidenceVisitor v; 3914 DeleteIncidenceVisitor v;
3914 v.act( incidence, this ); 3915 v.act( incidence, this );
3915 } 3916 }
3916} 3917}
3917 3918
3918 3919
3919void CalendarView::lookForOutgoingMessages() 3920void CalendarView::lookForOutgoingMessages()
3920{ 3921{
3921 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3922 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3922 ogd->loadMessages(); 3923 ogd->loadMessages();
3923} 3924}
3924 3925
3925void CalendarView::lookForIncomingMessages() 3926void CalendarView::lookForIncomingMessages()
3926{ 3927{
3927 IncomingDialog *icd = mDialogManager->incomingDialog(); 3928 IncomingDialog *icd = mDialogManager->incomingDialog();
3928 icd->retrieve(); 3929 icd->retrieve();
3929} 3930}
3930 3931
3931bool CalendarView::removeCompletedSubTodos( Todo* t ) 3932bool CalendarView::removeCompletedSubTodos( Todo* t )
3932{ 3933{
3933 bool deleteTodo = true; 3934 bool deleteTodo = true;
3934 QPtrList<Incidence> subTodos; 3935 QPtrList<Incidence> subTodos;
3935 Incidence *aTodo; 3936 Incidence *aTodo;
3936 subTodos = t->relations(); 3937 subTodos = t->relations();
3937 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3938 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3938 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3939 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3939 deleteTodo = false; 3940 deleteTodo = false;
3940 } 3941 }
3941 if ( deleteTodo ) { 3942 if ( deleteTodo ) {
3942 if ( t->isCompleted() && !t->doesRecur()) { 3943 if ( t->isCompleted() && !t->doesRecur()) {
3943 checkExternalId( t ); 3944 checkExternalId( t );
3944 mCalendar->deleteTodo( t ); 3945 mCalendar->deleteTodo( t );
3945 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3946 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3946 } 3947 }
3947 else 3948 else
3948 deleteTodo = false; 3949 deleteTodo = false;
3949 } 3950 }
3950 return deleteTodo; 3951 return deleteTodo;
3951 3952
3952} 3953}
3953void CalendarView::purgeCompleted() 3954void CalendarView::purgeCompleted()
3954{ 3955{
3955 int result = KMessageBox::warningContinueCancel(this, 3956 int result = KMessageBox::warningContinueCancel(this,
3956 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3957 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3957 3958
3958 if (result == KMessageBox::Continue) { 3959 if (result == KMessageBox::Continue) {
3959 3960
3960 QPtrList<Todo> todoCal; 3961 QPtrList<Todo> todoCal;
3961 QPtrList<Todo> rootTodos; 3962 QPtrList<Todo> rootTodos;
3962 //QPtrList<Incidence> rel; 3963 //QPtrList<Incidence> rel;
3963 Todo *aTodo;//, *rTodo; 3964 Todo *aTodo;//, *rTodo;
3964 Incidence *rIncidence; 3965 Incidence *rIncidence;
3965 bool childDelete = false; 3966 bool childDelete = false;
3966 bool deletedOne = true; 3967 bool deletedOne = true;
3967 todoCal = calendar()->todos(); 3968 todoCal = calendar()->todos();
3968 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3969 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3969 if ( !aTodo->relatedTo() ) 3970 if ( !aTodo->relatedTo() )
3970 rootTodos.append( aTodo ); 3971 rootTodos.append( aTodo );
3971 } 3972 }
3972 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3973 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3973 removeCompletedSubTodos( aTodo ); 3974 removeCompletedSubTodos( aTodo );
3974 } 3975 }
3975 3976
3976 updateView(); 3977 updateView();
3977 } 3978 }
3978} 3979}
3979 3980
3980void CalendarView::slotCalendarChanged() 3981void CalendarView::slotCalendarChanged()
3981{ 3982{
3982 ; 3983 ;
3983} 3984}
3984 3985
3985void CalendarView::keyPressEvent ( QKeyEvent *e) 3986void CalendarView::keyPressEvent ( QKeyEvent *e)
3986{ 3987{
3987 //qDebug(" alendarView::keyPressEvent "); 3988 //qDebug(" alendarView::keyPressEvent ");
3988 e->ignore(); 3989 e->ignore();
3989} 3990}
3990 3991
3991 3992
3992bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 3993bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
3993{ 3994{
3994 // mSyncManager = manager; 3995 // mSyncManager = manager;
3995 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 3996 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
3996 qDebug("KO: SyncKDE request detected!"); 3997 qDebug("KO: SyncKDE request detected!");
3997 } 3998 }
3998 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 3999 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
3999 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4000 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4000 return syncCalendar( filename, mode ); 4001 return syncCalendar( filename, mode );
4001} 4002}
4002bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4003bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4003{ 4004{
4004 //mSyncManager = manager; 4005 //mSyncManager = manager;
4005 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4006 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4006 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4007 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4007 if ( resource == "sharp" ) 4008 if ( resource == "sharp" )
4008 syncExternal( 0 ); 4009 syncExternal( 0 );
4009 if ( resource == "phone" ) 4010 if ( resource == "phone" )
4010 syncExternal( 1 ); 4011 syncExternal( 1 );
4011 // pending setmodified 4012 // pending setmodified
4012 return true; 4013 return true;
4013} 4014}
4014void CalendarView::setSyncManager(KSyncManager* manager) 4015void CalendarView::setSyncManager(KSyncManager* manager)
4015{ 4016{
4016 mSyncManager = manager; 4017 mSyncManager = manager;
4017} 4018}
4018 4019
4019void CalendarView::removeSyncInfo( QString syncProfile) 4020void CalendarView::removeSyncInfo( QString syncProfile)
4020{ 4021{
4021 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4022 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4022 mCalendar->removeSyncInfo( syncProfile ); 4023 mCalendar->removeSyncInfo( syncProfile );
4023 4024
4024} 4025}
4025 4026
4026void CalendarView::undo_delete() 4027void CalendarView::undo_delete()
4027{ 4028{
4028 //qDebug("undo_delete() "); 4029 //qDebug("undo_delete() ");
4029 Incidence* undo = mCalendar->undoIncidence(); 4030 Incidence* undo = mCalendar->undoIncidence();
4030 if ( !undo ) { 4031 if ( !undo ) {
4031 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4032 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4032 i18n("KO/Pi")); 4033 i18n("KO/Pi"));
4033 return; 4034 return;
4034 } 4035 }
4035 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4036 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) +
4036 i18n("\nAre you sure you want\nto restore this?"), 4037 i18n("\nAre you sure you want\nto restore this?"),
4037 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4038 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4038 mCalendar->undoDeleteIncidence(); 4039 mCalendar->undoDeleteIncidence();
4039 updateView(); 4040 updateView();
4040 } 4041 }
4041} 4042}
4042 4043
4043void CalendarView::slotViewerClosed() 4044void CalendarView::slotViewerClosed()
4044{ 4045{
4045 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4046 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4046} 4047}
4047 4048
4048void CalendarView::resetFocus() 4049void CalendarView::resetFocus()
4049{ 4050{
4050 if ( mViewerCallerIsSearchDialog ) { 4051 if ( mViewerCallerIsSearchDialog ) {
4051 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4052 if ( mDialogManager->getSearchDialog()->isVisible() ){
4052 mDialogManager->getSearchDialog()->raise(); 4053 mDialogManager->getSearchDialog()->raise();
4053 mDialogManager->getSearchDialog()->setActiveWindow(); 4054 mDialogManager->getSearchDialog()->setActiveWindow();
4054 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4055 mDialogManager->getSearchDialog()->listview()->resetFocus();
4055 } else 4056 } else
4056 mViewerCallerIsSearchDialog = false; 4057 mViewerCallerIsSearchDialog = false;
4057 } 4058 }
4058 if ( !mViewerCallerIsSearchDialog ) { 4059 if ( !mViewerCallerIsSearchDialog ) {
4059 //mViewManager->currentView()->setFocus(); 4060 //mViewManager->currentView()->setFocus();
4060 //qDebug("sssssssssssssssset focus "); 4061 //qDebug("sssssssssssssssset focus ");
4061 topLevelWidget()->raise(); 4062 topLevelWidget()->raise();
4062 setActiveWindow(); 4063 setActiveWindow();
4063 //setFocus(); 4064 //setFocus();
4064 } 4065 }
4065 mViewerCallerIsSearchDialog = false; 4066 mViewerCallerIsSearchDialog = false;
4066} 4067}
4068
4069void CalendarView::showNextAlarms()
4070{
4071 QString message;
4072 if ( mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4073 QString sum = mCalendar->nextSummary();
4074 QDateTime nextA = mNextAlarmDateTime;
4075 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4076 message = i18n("The next alarm is on:\n%1\nat: %2\n\n%3\n(%4)").arg( KGlobal::locale()->formatDate(nextA.date() , false)).arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4077 } else {
4078 message = i18n("There is no next alarm.");
4079
4080 }
4081 KMessageBox::information( this, message);
4082}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 16e671f..9782ffe 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -1,617 +1,619 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000, 2001 3 Copyright (c) 2000, 2001
4 Cornelius Schumacher <schumacher@kde.org> 4 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef CALENDARVIEW_H 24#ifndef CALENDARVIEW_H
25#define CALENDARVIEW_H 25#define CALENDARVIEW_H
26 26
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qwidget.h> 29#include <qwidget.h>
30#include <qptrlist.h> 30#include <qptrlist.h>
31#include <qvbox.h> 31#include <qvbox.h>
32#include <qmap.h> 32#include <qmap.h>
33#ifndef DESKTOP_VERSION 33#ifndef DESKTOP_VERSION
34#include <qtopia/ir.h> 34#include <qtopia/ir.h>
35#else 35#else
36#define Ir char 36#define Ir char
37#endif 37#endif
38#include <libkcal/calendar.h> 38#include <libkcal/calendar.h>
39#include <libkcal/scheduler.h> 39#include <libkcal/scheduler.h>
40#include <libkcal/calendarresources.h> 40#include <libkcal/calendarresources.h>
41#include <libkcal/resourcecalendar.h> 41#include <libkcal/resourcecalendar.h>
42#include <KDGanttMinimizeSplitter.h> 42#include <KDGanttMinimizeSplitter.h>
43 43
44#include <korganizer/calendarviewbase.h> 44#include <korganizer/calendarviewbase.h>
45 45
46#include <ksyncmanager.h> 46#include <ksyncmanager.h>
47 47
48class QWidgetStack; 48class QWidgetStack;
49class QSplitter; 49class QSplitter;
50 50
51class CalPrinter; 51class CalPrinter;
52class KOFilterView; 52class KOFilterView;
53class KOViewManager; 53class KOViewManager;
54class KODialogManager; 54class KODialogManager;
55class KOTodoView; 55class KOTodoView;
56class KDateNavigator; 56class KDateNavigator;
57class DateNavigatorContainer; 57class DateNavigatorContainer;
58class DateNavigator; 58class DateNavigator;
59class KOIncidenceEditor; 59class KOIncidenceEditor;
60class KDatePicker; 60class KDatePicker;
61class ResourceView; 61class ResourceView;
62class KOEventEditor; 62class KOEventEditor;
63class KOTodoEditor ; 63class KOTodoEditor ;
64class KOEventViewerDialog; 64class KOEventViewerDialog;
65class KOBeamPrefs; 65class KOBeamPrefs;
66class KSyncProfile; 66class KSyncProfile;
67class AlarmDialog; 67class AlarmDialog;
68class KCal::Attendee; 68class KCal::Attendee;
69 69
70namespace KCal { class FileStorage; } 70namespace KCal { class FileStorage; }
71 71
72using namespace KCal; 72using namespace KCal;
73 73
74/** 74/**
75 This is the main calendar widget. It provides the different vies on t he 75 This is the main calendar widget. It provides the different vies on t he
76 calendar data as well as the date navigator. It also handles synchronisation 76 calendar data as well as the date navigator. It also handles synchronisation
77 of the different views and controls the different dialogs like preferences, 77 of the different views and controls the different dialogs like preferences,
78 event editor, search dialog etc. 78 event editor, search dialog etc.
79 79
80 @short main calendar view widget 80 @short main calendar view widget
81 @author Cornelius Schumacher 81 @author Cornelius Schumacher
82*/ 82*/
83class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface 83class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface
84{ 84{
85 Q_OBJECT 85 Q_OBJECT
86 public: 86 public:
87 /** 87 /**
88 Constructs a new calendar view widget. 88 Constructs a new calendar view widget.
89 89
90 @param calendar calendar document 90 @param calendar calendar document
91 @param parent parent window 91 @param parent parent window
92 @param name Qt internal widget object name 92 @param name Qt internal widget object name
93 */ 93 */
94 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 94 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
95 const char *name = 0 ); 95 const char *name = 0 );
96 CalendarView( Calendar *calendar, QWidget *parent = 0, 96 CalendarView( Calendar *calendar, QWidget *parent = 0,
97 const char *name = 0 ); 97 const char *name = 0 );
98 virtual ~CalendarView(); 98 virtual ~CalendarView();
99 99
100 Calendar *calendar() { return mCalendar; } 100 Calendar *calendar() { return mCalendar; }
101 101
102 KOViewManager *viewManager(); 102 KOViewManager *viewManager();
103 KODialogManager *dialogManager(); 103 KODialogManager *dialogManager();
104 104
105 QDate startDate(); 105 QDate startDate();
106 QDate endDate(); 106 QDate endDate();
107 107
108 QWidgetStack *viewStack(); 108 QWidgetStack *viewStack();
109 QWidget *leftFrame(); 109 QWidget *leftFrame();
110 110
111 DateNavigator *dateNavigator(); 111 DateNavigator *dateNavigator();
112 KDateNavigator *dateNavigatorWidget(); 112 KDateNavigator *dateNavigatorWidget();
113 113
114 void addView(KOrg::BaseView *); 114 void addView(KOrg::BaseView *);
115 void showView(KOrg::BaseView *); 115 void showView(KOrg::BaseView *);
116 KOEventViewerDialog* getEventViewerDialog(); 116 KOEventViewerDialog* getEventViewerDialog();
117 Incidence *currentSelection(); 117 Incidence *currentSelection();
118 118
119 signals: 119 signals:
120 void save (); 120 void save ();
121 void saveStopTimer (); 121 void saveStopTimer ();
122 void tempDisableBR(bool); 122 void tempDisableBR(bool);
123 /** This todo has been modified */ 123 /** This todo has been modified */
124 void todoModified(Todo *, int); 124 void todoModified(Todo *, int);
125 125
126 /** when change is made to options dialog, the topwidget will catch this 126 /** when change is made to options dialog, the topwidget will catch this
127 * and emit this signal which notifies all widgets which have registered 127 * and emit this signal which notifies all widgets which have registered
128 * for notification to update their settings. */ 128 * for notification to update their settings. */
129 void configChanged(); 129 void configChanged();
130 /** emitted when the topwidget is closing down, so that any attached 130 /** emitted when the topwidget is closing down, so that any attached
131 child windows can also close. */ 131 child windows can also close. */
132 void closingDown(); 132 void closingDown();
133 /** emitted right before we die */ 133 /** emitted right before we die */
134 void closed(QWidget *); 134 void closed(QWidget *);
135 135
136 /** Emitted when state of modified flag changes */ 136 /** Emitted when state of modified flag changes */
137 void modifiedChanged(bool); 137 void modifiedChanged(bool);
138 void signalmodified(); 138 void signalmodified();
139 139
140 /** Emitted when state of read-only flag changes */ 140 /** Emitted when state of read-only flag changes */
141 void readOnlyChanged(bool); 141 void readOnlyChanged(bool);
142 142
143 /** Emitted when the unit of navigation changes */ 143 /** Emitted when the unit of navigation changes */
144 void changeNavStringPrev(const QString &); 144 void changeNavStringPrev(const QString &);
145 void changeNavStringNext(const QString &); 145 void changeNavStringNext(const QString &);
146 146
147 /** Emitted when state of events selection has changed and user is organizer*/ 147 /** Emitted when state of events selection has changed and user is organizer*/
148 void organizerEventsSelected(bool); 148 void organizerEventsSelected(bool);
149 /** Emitted when state of events selection has changed and user is attendee*/ 149 /** Emitted when state of events selection has changed and user is attendee*/
150 void groupEventsSelected(bool); 150 void groupEventsSelected(bool);
151 /** 151 /**
152 Emitted when an incidence gets selected. If the selection is cleared the 152 Emitted when an incidence gets selected. If the selection is cleared the
153 signal is emitted with 0 as argument. 153 signal is emitted with 0 as argument.
154 */ 154 */
155 void incidenceSelected( Incidence * ); 155 void incidenceSelected( Incidence * );
156 /** Emitted, when a todoitem is selected or deselected. */ 156 /** Emitted, when a todoitem is selected or deselected. */
157 void todoSelected( bool ); 157 void todoSelected( bool );
158 158
159 /** 159 /**
160 Emitted, when clipboard content changes. Parameter indicates if paste 160 Emitted, when clipboard content changes. Parameter indicates if paste
161 is possible or not. 161 is possible or not.
162 */ 162 */
163 void pasteEnabled(bool); 163 void pasteEnabled(bool);
164 164
165 /** Emitted, when the number of incoming messages has changed. */ 165 /** Emitted, when the number of incoming messages has changed. */
166 void numIncomingChanged(int); 166 void numIncomingChanged(int);
167 167
168 /** Emitted, when the number of outgoing messages has changed. */ 168 /** Emitted, when the number of outgoing messages has changed. */
169 void numOutgoingChanged(int); 169 void numOutgoingChanged(int);
170 170
171 /** Send status message, which can e.g. be displayed in the status bar. */ 171 /** Send status message, which can e.g. be displayed in the status bar. */
172 void statusMessage(const QString &); 172 void statusMessage(const QString &);
173 173
174 void calendarViewExpanded( bool ); 174 void calendarViewExpanded( bool );
175 void updateSearchDialog(); 175 void updateSearchDialog();
176 176
177 177
178 public slots: 178 public slots:
179 void showNextAlarms();
179 void showOpenError(); 180 void showOpenError();
180 void watchSavedFile(); 181 void watchSavedFile();
181 void recheckTimerAlarm(); 182 void recheckTimerAlarm();
182 void checkNextTimerAlarm(); 183 void checkNextTimerAlarm();
183 void addAlarm(const QDateTime &qdt, const QString &noti ); 184 void addAlarm(const QDateTime &qdt, const QString &noti );
184 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 185 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
185 void removeAlarm(const QDateTime &qdt, const QString &noti ); 186 void removeAlarm(const QDateTime &qdt, const QString &noti );
186 187
187 /** options dialog made a changed to the configuration. we catch this 188 /** options dialog made a changed to the configuration. we catch this
188 * and notify all widgets which need to update their configuration. */ 189 * and notify all widgets which need to update their configuration. */
189 void updateConfig(); 190 void updateConfig();
190 191
191 void insertBirthdays(const QString& uid, const QStringList& birthdayList, 192 void insertBirthdays(const QString& uid, const QStringList& birthdayList,
192 const QStringList& anniversaryList, const QStringList& realNameList, 193 const QStringList& anniversaryList, const QStringList& realNameList,
193 const QStringList& emailList, const QStringList& assembledNameList, 194 const QStringList& emailList, const QStringList& assembledNameList,
194 const QStringList& uidList); 195 const QStringList& uidList);
195 196
196 /** 197 /**
197 Load calendar from file \a filename. If \a merge is true, load 198 Load calendar from file \a filename. If \a merge is true, load
198 calendar into existing one, if it is false, clear calendar, before 199 calendar into existing one, if it is false, clear calendar, before
199 loading. Return true, if calendar could be successfully loaded. 200 loading. Return true, if calendar could be successfully loaded.
200 */ 201 */
201 bool openCalendar(QString filename, bool merge=false); 202 bool openCalendar(QString filename, bool merge=false);
202 bool syncCalendar(QString filename,int mode = 0 ); 203 bool syncCalendar(QString filename,int mode = 0 );
203 204
204 /** 205 /**
205 Save calendar data to file. Return true if calendar could be 206 Save calendar data to file. Return true if calendar could be
206 successfully saved. 207 successfully saved.
207 */ 208 */
208 bool saveCalendar(QString filename); 209 bool saveCalendar(QString filename);
209 210
210 /** 211 /**
211 Close calendar. Clear calendar data and reset views to display an empty 212 Close calendar. Clear calendar data and reset views to display an empty
212 calendar. 213 calendar.
213 */ 214 */
214 void closeCalendar(); 215 void closeCalendar();
215 216
216 /** Archive old events of calendar */ 217 /** Archive old events of calendar */
217 void archiveCalendar(); 218 void archiveCalendar();
218 219
219 void showIncidence(); 220 void showIncidence();
220 void editIncidence(); 221 void editIncidence();
221 void editIncidenceDescription(); 222 void editIncidenceDescription();
222 void deleteIncidence(); 223 void deleteIncidence();
223 void cloneIncidence(); 224 void cloneIncidence();
224 void moveIncidence(); 225 void moveIncidence();
225 void beamIncidence(); 226 void beamIncidence();
226 void toggleCancelIncidence(); 227 void toggleCancelIncidence();
227 228
228 /** create an editeventwin with supplied date/time, and if bool is true, 229 /** create an editeventwin with supplied date/time, and if bool is true,
229 * make the event take all day. */ 230 * make the event take all day. */
230 void newEvent(QDateTime, QDateTime, bool allDay ); 231 void newEvent(QDateTime, QDateTime, bool allDay );
231 void newEvent(QDateTime, QDateTime); 232 void newEvent(QDateTime, QDateTime);
232 void newEvent(QDateTime fh); 233 void newEvent(QDateTime fh);
233 void newEvent(QDate dt); 234 void newEvent(QDate dt);
234 /** create new event without having a date hint. Takes current date as 235 /** create new event without having a date hint. Takes current date as
235 default hint. */ 236 default hint. */
236 void newEvent(); 237 void newEvent();
237 void newFloatingEvent(); 238 void newFloatingEvent();
238 239
239 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 240 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
240 void showIncidence(Incidence *); 241 void showIncidence(Incidence *);
241 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 242 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
242 void editIncidence(Incidence *); 243 void editIncidence(Incidence *);
243 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 244 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
244 void deleteIncidence(Incidence *); 245 void deleteIncidence(Incidence *);
245 void cloneIncidence(Incidence *); 246 void cloneIncidence(Incidence *);
246 void cancelIncidence(Incidence *); 247 void cancelIncidence(Incidence *);
247 /** Create an editor for the supplied event. */ 248 /** Create an editor for the supplied event. */
248 void editEvent(Event *); 249 void editEvent(Event *);
249 /** Delete the supplied event. */ 250 /** Delete the supplied event. */
250 void deleteEvent(Event *); 251 void deleteEvent(Event *);
251 /** Delete the event with the given unique ID. Returns false, if event wasn't 252 /** Delete the event with the given unique ID. Returns false, if event wasn't
252 found. */ 253 found. */
253 bool deleteEvent(const QString &uid); 254 bool deleteEvent(const QString &uid);
254 /** Create a read-only viewer dialog for the supplied event. */ 255 /** Create a read-only viewer dialog for the supplied event. */
255 void showEvent(Event *); 256 void showEvent(Event *);
256 257
257 void editJournal(Journal *); 258 void editJournal(Journal *);
258 void showJournal(Journal *); 259 void showJournal(Journal *);
259 void deleteJournal(Journal *); 260 void deleteJournal(Journal *);
260 /** Create an editor dialog for a todo */ 261 /** Create an editor dialog for a todo */
261 void editTodo(Todo *); 262 void editTodo(Todo *);
262 /** Create a read-only viewer dialog for the supplied todo */ 263 /** Create a read-only viewer dialog for the supplied todo */
263 void showTodo(Todo *); 264 void showTodo(Todo *);
264 /** create new todo */ 265 /** create new todo */
265 void newTodo(); 266 void newTodo();
266 void newTodoDateTime(QDateTime, bool allday); 267 void newTodoDateTime(QDateTime, bool allday);
267 /** create new todo with a parent todo */ 268 /** create new todo with a parent todo */
268 void newSubTodo(); 269 void newSubTodo();
269 /** create new todo with a parent todo */ 270 /** create new todo with a parent todo */
270 void newSubTodo(Todo *); 271 void newSubTodo(Todo *);
271 /** Delete todo */ 272 /** Delete todo */
272 void deleteTodo(Todo *); 273 void deleteTodo(Todo *);
273 274
274 275
275 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 276 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
276 * emitted as result. */ 277 * emitted as result. */
277 void checkClipboard(); 278 void checkClipboard();
278 279
279 /** using the KConfig associated with the kapp variable, read in the 280 /** using the KConfig associated with the kapp variable, read in the
280 * settings from the config file. 281 * settings from the config file.
281 */ 282 */
282 void readSettings(); 283 void readSettings();
283 284
284 /** write current state to config file. */ 285 /** write current state to config file. */
285 void writeSettings(); 286 void writeSettings();
286 287
287 /** read settings for calendar filters */ 288 /** read settings for calendar filters */
288 void readFilterSettings(KConfig *config); 289 void readFilterSettings(KConfig *config);
289 290
290 /** write settings for calendar filters */ 291 /** write settings for calendar filters */
291 void writeFilterSettings(KConfig *config); 292 void writeFilterSettings(KConfig *config);
292 293
293 /** passes on the message that an event has changed to the currently 294 /** passes on the message that an event has changed to the currently
294 * activated view so that it can make appropriate display changes. */ 295 * activated view so that it can make appropriate display changes. */
295 void changeEventDisplay(Event *, int); 296 void changeEventDisplay(Event *, int);
296 void changeIncidenceDisplay(Incidence *, int); 297 void changeIncidenceDisplay(Incidence *, int);
297 void changeTodoDisplay(Todo *, int); 298 void changeTodoDisplay(Todo *, int);
298 299
299 void eventAdded(Event *); 300 void eventAdded(Event *);
300 void eventChanged(Event *); 301 void eventChanged(Event *);
301 void eventToBeDeleted(Event *); 302 void eventToBeDeleted(Event *);
302 void eventDeleted(); 303 void eventDeleted();
303 304
304 void todoAdded(Todo *); 305 void todoAdded(Todo *);
305 void todoChanged(Todo *); 306 void todoChanged(Todo *);
306 void todoToBeDeleted(Todo *); 307 void todoToBeDeleted(Todo *);
307 void todoDeleted(); 308 void todoDeleted();
308 309
309 void updateView(const QDate &start, const QDate &end); 310 void updateView(const QDate &start, const QDate &end);
310 void updateView(); 311 void updateView();
311 312
312 /** Full update of visible todo views */ 313 /** Full update of visible todo views */
313 void updateTodoViews(); 314 void updateTodoViews();
314 315
315 void updateUnmanagedViews(); 316 void updateUnmanagedViews();
316 317
317 /** cut the current appointment to the clipboard */ 318 /** cut the current appointment to the clipboard */
318 void edit_cut(); 319 void edit_cut();
319 320
320 /** copy the current appointment(s) to the clipboard */ 321 /** copy the current appointment(s) to the clipboard */
321 void edit_copy(); 322 void edit_copy();
322 323
323 /** paste the current vobject(s) in the clipboard buffer into calendar */ 324 /** paste the current vobject(s) in the clipboard buffer into calendar */
324 void edit_paste(); 325 void edit_paste();
325 326
326 /** edit viewing and configuration options. */ 327 /** edit viewing and configuration options. */
327 void edit_options(); 328 void edit_options();
328 /** 329 /**
329 Functions for printing, previewing a print, and setting up printing 330 Functions for printing, previewing a print, and setting up printing
330 parameters. 331 parameters.
331 */ 332 */
332 void print(); 333 void print();
333 void printSetup(); 334 void printSetup();
334 void printPreview(); 335 void printPreview();
335 336
336 /** Export as iCalendar file */ 337 /** Export as iCalendar file */
337 void exportICalendar(); 338 void exportICalendar();
338 339
339 /** Export as vCalendar file */ 340 /** Export as vCalendar file */
340 bool exportVCalendar( QString fn); 341 bool exportVCalendar( QString fn);
341 342
342 /** pop up a dialog to show an existing appointment. */ 343 /** pop up a dialog to show an existing appointment. */
343 void appointment_show(); 344 void appointment_show();
344 /** 345 /**
345 * pop up an Appointment Dialog to edit an existing appointment.Get 346 * pop up an Appointment Dialog to edit an existing appointment.Get
346 * information on the appointment from the list of unique IDs that is 347 * information on the appointment from the list of unique IDs that is
347 * currently in the View, called currIds. 348 * currently in the View, called currIds.
348 */ 349 */
349 void appointment_edit(); 350 void appointment_edit();
350 /** 351 /**
351 * pop up dialog confirming deletion of currently selected event in the 352 * pop up dialog confirming deletion of currently selected event in the
352 * View. 353 * View.
353 */ 354 */
354 void appointment_delete(); 355 void appointment_delete();
355 356
356 /** mails the currently selected event to a particular user as a vCalendar 357 /** mails the currently selected event to a particular user as a vCalendar
357 attachment. */ 358 attachment. */
358 void action_mail(); 359 void action_mail();
359 360
360 /* frees a subtodo from it's relation */ 361 /* frees a subtodo from it's relation */
361 void todo_unsub( Todo * ); 362 void todo_unsub( Todo * );
362 void todo_resub( Todo * parent, Todo * sub ); 363 void todo_resub( Todo * parent, Todo * sub );
363 364
364 /** Take ownership of selected event. */ 365 /** Take ownership of selected event. */
365 void takeOverEvent(); 366 void takeOverEvent();
366 367
367 /** Take ownership of all events in calendar. */ 368 /** Take ownership of all events in calendar. */
368 void takeOverCalendar(); 369 void takeOverCalendar();
369 370
370 /** query whether or not the calendar is "dirty". */ 371 /** query whether or not the calendar is "dirty". */
371 bool isModified(); 372 bool isModified();
372 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 373 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
373 void setModified(bool modified=true); 374 void setModified(bool modified=true);
374 375
375 /** query if the calendar is read-only. */ 376 /** query if the calendar is read-only. */
376 bool isReadOnly(); 377 bool isReadOnly();
377 /** set state of calendar to read-only */ 378 /** set state of calendar to read-only */
378 void setReadOnly(bool readOnly=true); 379 void setReadOnly(bool readOnly=true);
379 380
380 void eventUpdated(Incidence *); 381 void eventUpdated(Incidence *);
381 382
382 /* iTIP scheduling actions */ 383 /* iTIP scheduling actions */
383 void schedule_publish(Incidence *incidence = 0); 384 void schedule_publish(Incidence *incidence = 0);
384 void schedule_request(Incidence *incidence = 0); 385 void schedule_request(Incidence *incidence = 0);
385 void schedule_refresh(Incidence *incidence = 0); 386 void schedule_refresh(Incidence *incidence = 0);
386 void schedule_cancel(Incidence *incidence = 0); 387 void schedule_cancel(Incidence *incidence = 0);
387 void schedule_add(Incidence *incidence = 0); 388 void schedule_add(Incidence *incidence = 0);
388 void schedule_reply(Incidence *incidence = 0); 389 void schedule_reply(Incidence *incidence = 0);
389 void schedule_counter(Incidence *incidence = 0); 390 void schedule_counter(Incidence *incidence = 0);
390 void schedule_declinecounter(Incidence *incidence = 0); 391 void schedule_declinecounter(Incidence *incidence = 0);
391 void schedule_publish_freebusy(int daysToPublish = 30); 392 void schedule_publish_freebusy(int daysToPublish = 30);
392 393
393 void openAddressbook(); 394 void openAddressbook();
394 395
395 void editFilters(); 396 void editFilters();
396 void toggleFilerEnabled(); 397 void toggleFilerEnabled();
397 QPtrList<CalFilter> filters(); 398 QPtrList<CalFilter> filters();
398 void toggleFilter(); 399 void toggleFilter();
399 void showFilter(bool visible); 400 void showFilter(bool visible);
400 void updateFilter(); 401 void updateFilter();
401 void filterEdited(); 402 void filterEdited();
402 void selectFilter( int ); 403 void selectFilter( int );
403 KOFilterView *filterView(); 404 KOFilterView *filterView();
404 405
405 void showIntro(); 406 void showIntro();
406 407
407 /** Move the curdatepient view date to today */ 408 /** Move the curdatepient view date to today */
408 void goToday(); 409 void goToday();
409 410
410 /** Move to the next date(s) in the current view */ 411 /** Move to the next date(s) in the current view */
411 void goNext(); 412 void goNext();
412 413
413 /** Move to the previous date(s) in the current view */ 414 /** Move to the previous date(s) in the current view */
414 void goPrevious(); 415 void goPrevious();
415 /** Move to the next date(s) in the current view */ 416 /** Move to the next date(s) in the current view */
416 void goNextMonth(); 417 void goNextMonth();
417 418
418 /** Move to the previous date(s) in the current view */ 419 /** Move to the previous date(s) in the current view */
419 void goPreviousMonth(); 420 void goPreviousMonth();
420 421
421 void toggleExpand(); 422 void toggleExpand();
422 void toggleDateNavigatorWidget(); 423 void toggleDateNavigatorWidget();
423 void toggleAllDaySize(); 424 void toggleAllDaySize();
424 void dialogClosing(Incidence *); 425 void dialogClosing(Incidence *);
425 426
426 /** Look for new messages in the inbox */ 427 /** Look for new messages in the inbox */
427 void lookForIncomingMessages(); 428 void lookForIncomingMessages();
428 /** Look for new messages in the outbox */ 429 /** Look for new messages in the outbox */
429 void lookForOutgoingMessages(); 430 void lookForOutgoingMessages();
430 431
431 void processMainViewSelection( Incidence * ); 432 void processMainViewSelection( Incidence * );
432 void processTodoListSelection( Incidence * ); 433 void processTodoListSelection( Incidence * );
433 434
434 void processIncidenceSelection( Incidence * ); 435 void processIncidenceSelection( Incidence * );
435 436
436 void purgeCompleted(); 437 void purgeCompleted();
437 bool removeCompletedSubTodos( Todo* ); 438 bool removeCompletedSubTodos( Todo* );
438 void slotCalendarChanged(); 439 void slotCalendarChanged();
439 bool importBday(); 440 bool importBday();
440 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 441 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
441 bool importQtopia( const QString &categoriesFile, 442 bool importQtopia( const QString &categoriesFile,
442 const QString &datebookFile, 443 const QString &datebookFile,
443 const QString &tasklistFile ); 444 const QString &tasklistFile );
444 void syncExternal( int mode ); 445 void syncExternal( int mode );
445 void slotSelectPickerDate( QDate ) ; 446 void slotSelectPickerDate( QDate ) ;
446 void showDatePicker() ; 447 void showDatePicker() ;
447 void showDatePickerPopup() ; 448 void showDatePickerPopup() ;
448 void moveIncidence(Incidence *) ; 449 void moveIncidence(Incidence *) ;
449 void beamIncidence(Incidence *) ; 450 void beamIncidence(Incidence *) ;
450 void beamCalendar() ; 451 void beamCalendar() ;
451 void beamFilteredCalendar() ; 452 void beamFilteredCalendar() ;
452 void beamIncidenceList(QPtrList<Incidence>) ; 453 void beamIncidenceList(QPtrList<Incidence>) ;
453 void manageCategories(); 454 void manageCategories();
454 int addCategories(); 455 int addCategories();
455 void removeCategories(); 456 void removeCategories();
456 void setSyncDevice( QString ); 457 void setSyncDevice( QString );
457 void setSyncName( QString ); 458 void setSyncName( QString );
458 void showDay( QDate ); 459 void showDay( QDate );
459 void undo_delete(); 460 void undo_delete();
460 protected slots: 461 protected slots:
461 void resetFocus(); 462 void resetFocus();
462 void slotViewerClosed(); 463 void slotViewerClosed();
463 void timerAlarm(); 464 void timerAlarm();
464 void suspendAlarm(); 465 void suspendAlarm();
465 void beamDone( Ir *ir ); 466 void beamDone( Ir *ir );
466 /** Select a view or adapt the current view to display the specified dates. */ 467 /** Select a view or adapt the current view to display the specified dates. */
467 void showDates( const KCal::DateList & ); 468 void showDates( const KCal::DateList & );
468 void selectWeekNum ( int ); 469 void selectWeekNum ( int );
469 470
470 public: 471 public:
471 // show a standard warning 472 // show a standard warning
472 // returns KMsgBox::yesNoCancel() 473 // returns KMsgBox::yesNoCancel()
473 int msgCalModified(); 474 int msgCalModified();
474 virtual bool sync(KSyncManager* manager, QString filename, int mode); 475 virtual bool sync(KSyncManager* manager, QString filename, int mode);
475 476
476 virtual bool syncExternal(KSyncManager* manager, QString resource); 477 virtual bool syncExternal(KSyncManager* manager, QString resource);
477 virtual void removeSyncInfo( QString syncProfile); 478 virtual void removeSyncInfo( QString syncProfile);
478 void setSyncManager(KSyncManager* manager); 479 void setSyncManager(KSyncManager* manager);
479 void setLoadedFileVersion(QDateTime); 480 void setLoadedFileVersion(QDateTime);
480 bool checkFileVersion(QString fn); 481 bool checkFileVersion(QString fn);
481 bool checkFileChanged(QString fn); 482 bool checkFileChanged(QString fn);
482 Event* getLastSyncEvent(); 483 Event* getLastSyncEvent();
483 /** Adapt navigation units correpsonding to step size of navigation of the 484 /** Adapt navigation units correpsonding to step size of navigation of the
484 * current view. 485 * current view.
485 */ 486 */
486 void adaptNavigationUnits(); 487 void adaptNavigationUnits();
487 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 488 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
488 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 489 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
489 //Attendee* getYourAttendee(Event *event); 490 //Attendee* getYourAttendee(Event *event);
490 void setBlockShowDates( bool b ) { mBlockShowDates = b ;} 491 void setBlockShowDates( bool b ) { mBlockShowDates = b ;}
491 protected: 492 protected:
492 void schedule(Scheduler::Method, Incidence *incidence = 0); 493 void schedule(Scheduler::Method, Incidence *incidence = 0);
493 494
494 // returns KMsgBox::OKCandel() 495 // returns KMsgBox::OKCandel()
495 int msgItemDelete(const QString name); 496 int msgItemDelete(const QString name);
496 void showEventEditor(); 497 void showEventEditor();
497 void showTodoEditor(); 498 void showTodoEditor();
498 void writeLocale(); 499 void writeLocale();
499 Todo *selectedTodo(); 500 Todo *selectedTodo();
500 501
501 private: 502 private:
503 QDateTime mNextAlarmDateTime;
502 bool mViewerCallerIsSearchDialog; 504 bool mViewerCallerIsSearchDialog;
503 bool mBlockShowDates; 505 bool mBlockShowDates;
504 KSyncManager* mSyncManager; 506 KSyncManager* mSyncManager;
505 AlarmDialog * mAlarmDialog; 507 AlarmDialog * mAlarmDialog;
506 QString mAlarmNotification; 508 QString mAlarmNotification;
507 QString mSuspendAlarmNotification; 509 QString mSuspendAlarmNotification;
508 QTimer* mSuspendTimer; 510 QTimer* mSuspendTimer;
509 QTimer* mAlarmTimer; 511 QTimer* mAlarmTimer;
510 QTimer* mRecheckAlarmTimer; 512 QTimer* mRecheckAlarmTimer;
511 void computeAlarm( QString ); 513 void computeAlarm( QString );
512 void startAlarm( QString, QString ); 514 void startAlarm( QString, QString );
513 void setSyncEventsReadOnly(); 515 void setSyncEventsReadOnly();
514 516
515 QDateTime loadedFileVersion; 517 QDateTime loadedFileVersion;
516 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 518 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
517 void checkExternalId( Incidence * inc ); 519 void checkExternalId( Incidence * inc );
518 int mGlobalSyncMode; 520 int mGlobalSyncMode;
519 QString mCurrentSyncDevice; 521 QString mCurrentSyncDevice;
520 QString mCurrentSyncName; 522 QString mCurrentSyncName;
521 KOBeamPrefs* beamDialog; 523 KOBeamPrefs* beamDialog;
522 void init(); 524 void init();
523 int mDatePickerMode; 525 int mDatePickerMode;
524 bool mFlagEditDescription; 526 bool mFlagEditDescription;
525 QDateTime mLastCalendarSync; 527 QDateTime mLastCalendarSync;
526 void createPrinter(); 528 void createPrinter();
527 529
528 void calendarModified( bool, Calendar * ); 530 void calendarModified( bool, Calendar * );
529 531
530 CalPrinter *mCalPrinter; 532 CalPrinter *mCalPrinter;
531 533
532 QSplitter *mPanner; 534 QSplitter *mPanner;
533 QSplitter *mLeftSplitter; 535 QSplitter *mLeftSplitter;
534 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame; 536 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame;
535 QWidgetStack *mRightFrame; 537 QWidgetStack *mRightFrame;
536 538
537 KDatePicker* mDatePicker; 539 KDatePicker* mDatePicker;
538 QVBox* mDateFrame; 540 QVBox* mDateFrame;
539 541
540 DateNavigatorContainer *mDateNavigator; // widget showing small month view. 542 DateNavigatorContainer *mDateNavigator; // widget showing small month view.
541 543
542 KOFilterView *mFilterView; 544 KOFilterView *mFilterView;
543 545
544 ResourceView *mResourceView; 546 ResourceView *mResourceView;
545 547
546 // calendar object for this viewing instance 548 // calendar object for this viewing instance
547 Calendar *mCalendar; 549 Calendar *mCalendar;
548 550
549 CalendarResourceManager *mResourceManager; 551 CalendarResourceManager *mResourceManager;
550 552
551 FileStorage *mStorage; 553 FileStorage *mStorage;
552 554
553 DateNavigator *mNavigator; 555 DateNavigator *mNavigator;
554 556
555 KOViewManager *mViewManager; 557 KOViewManager *mViewManager;
556 KODialogManager *mDialogManager; 558 KODialogManager *mDialogManager;
557 559
558 // Calendar filters 560 // Calendar filters
559 QPtrList<CalFilter> mFilters; 561 QPtrList<CalFilter> mFilters;
560 562
561 // various housekeeping variables. 563 // various housekeeping variables.
562 bool mModified; // flag indicating if calendar is modified 564 bool mModified; // flag indicating if calendar is modified
563 bool mReadOnly; // flag indicating if calendar is read-only 565 bool mReadOnly; // flag indicating if calendar is read-only
564 QDate mSaveSingleDate; 566 QDate mSaveSingleDate;
565 567
566 Incidence *mSelectedIncidence; 568 Incidence *mSelectedIncidence;
567 Incidence *mMoveIncidence; 569 Incidence *mMoveIncidence;
568 QDate mMoveIncidenceOldDate; 570 QDate mMoveIncidenceOldDate;
569 KOTodoView *mTodoList; 571 KOTodoView *mTodoList;
570 KOEventEditor * mEventEditor; 572 KOEventEditor * mEventEditor;
571 KOTodoEditor * mTodoEditor; 573 KOTodoEditor * mTodoEditor;
572 KOEventViewerDialog * mEventViewerDialog; 574 KOEventViewerDialog * mEventViewerDialog;
573 void keyPressEvent ( QKeyEvent *e) ; 575 void keyPressEvent ( QKeyEvent *e) ;
574 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 576 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
575}; 577};
576 578
577 579
578class CalendarViewVisitor : public Incidence::Visitor 580class CalendarViewVisitor : public Incidence::Visitor
579{ 581{
580 public: 582 public:
581 CalendarViewVisitor() : mView( 0 ) {} 583 CalendarViewVisitor() : mView( 0 ) {}
582 584
583 bool act( Incidence *incidence, CalendarView *view ) 585 bool act( Incidence *incidence, CalendarView *view )
584 { 586 {
585 mView = view; 587 mView = view;
586 return incidence->accept( *this ); 588 return incidence->accept( *this );
587 } 589 }
588 590
589 protected: 591 protected:
590 CalendarView *mView; 592 CalendarView *mView;
591}; 593};
592 594
593class ShowIncidenceVisitor : public CalendarViewVisitor 595class ShowIncidenceVisitor : public CalendarViewVisitor
594{ 596{
595 protected: 597 protected:
596 bool visit( Event *event ) { mView->showEvent( event ); return true; } 598 bool visit( Event *event ) { mView->showEvent( event ); return true; }
597 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 599 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
598 bool visit( Journal * j ) { mView->showJournal( j );return true; } 600 bool visit( Journal * j ) { mView->showJournal( j );return true; }
599}; 601};
600 602
601class EditIncidenceVisitor : public CalendarViewVisitor 603class EditIncidenceVisitor : public CalendarViewVisitor
602{ 604{
603 protected: 605 protected:
604 bool visit( Event *event ) { mView->editEvent( event ); return true; } 606 bool visit( Event *event ) { mView->editEvent( event ); return true; }
605 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 607 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; }
606 bool visit( Journal *j ) { mView->editJournal( j); return true; } 608 bool visit( Journal *j ) { mView->editJournal( j); return true; }
607}; 609};
608 610
609class DeleteIncidenceVisitor : public CalendarViewVisitor 611class DeleteIncidenceVisitor : public CalendarViewVisitor
610{ 612{
611 protected: 613 protected:
612 bool visit( Event *event ) { mView->deleteEvent( event ); return true; } 614 bool visit( Event *event ) { mView->deleteEvent( event ); return true; }
613 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; } 615 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; }
614 bool visit( Journal * j) {mView->deleteJournal( j ); return true; } 616 bool visit( Journal * j) {mView->deleteJournal( j ); return true; }
615}; 617};
616 618
617#endif 619#endif
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 95b836c..7a4275b 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,2135 +1,2150 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h> 16#include <qspinbox.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qmap.h> 18#include <qmap.h>
19#include <qwmatrix.h> 19#include <qwmatrix.h>
20#include <qtextbrowser.h> 20#include <qtextbrowser.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#ifndef DESKTOP_VERSION 22#ifndef DESKTOP_VERSION
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/qpemenubar.h> 24#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qtopia/alarmserver.h> 28#include <qtopia/alarmserver.h>
29#include <qtopia/qcopenvelope_qws.h> 29#include <qtopia/qcopenvelope_qws.h>
30#include <unistd.h> // for sleep 30#include <unistd.h> // for sleep
31#else 31#else
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qapplication.h> 34#include <qapplication.h>
35//#include <resource.h> 35//#include <resource.h>
36 36
37#endif 37#endif
38#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
39#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h> 40#include <libkcal/phoneformat.h>
41#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
42#include <libkdepim/phoneaccess.h> 42#include <libkdepim/phoneaccess.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44#include <libkdepim/kpimglobalprefs.h> 44#include <libkdepim/kpimglobalprefs.h>
45 45
46#include "calendarview.h" 46#include "calendarview.h"
47#include "koviewmanager.h" 47#include "koviewmanager.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49#include "koagendaview.h" 49#include "koagendaview.h"
50#include "koagenda.h" 50#include "koagenda.h"
51#include "kodialogmanager.h" 51#include "kodialogmanager.h"
52#include "kdialogbase.h" 52#include "kdialogbase.h"
53#include "kapplication.h" 53#include "kapplication.h"
54#include "kofilterview.h" 54#include "kofilterview.h"
55#include "kstandarddirs.h" 55#include "kstandarddirs.h"
56#include "koprefs.h" 56#include "koprefs.h"
57#include "kfiledialog.h" 57#include "kfiledialog.h"
58#include "koglobals.h" 58#include "koglobals.h"
59#include "kglobal.h" 59#include "kglobal.h"
60#include "klocale.h" 60#include "klocale.h"
61#include "kconfig.h" 61#include "kconfig.h"
62#include "simplealarmclient.h" 62#include "simplealarmclient.h"
63#include "externalapphandler.h" 63#include "externalapphandler.h"
64 64
65using namespace KCal; 65using namespace KCal;
66#ifndef _WIN32_ 66#ifndef _WIN32_
67#include <unistd.h> 67#include <unistd.h>
68#else 68#else
69#ifdef _OL_IMPORT_ 69#ifdef _OL_IMPORT_
70#include "koimportoldialog.h" 70#include "koimportoldialog.h"
71#endif 71#endif
72#endif 72#endif
73#include "mainwindow.h" 73#include "mainwindow.h"
74 74
75 75
76class KOex2phonePrefs : public QDialog 76class KOex2phonePrefs : public QDialog
77{ 77{
78 public: 78 public:
79 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 79 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
80 QDialog( parent, name, true ) 80 QDialog( parent, name, true )
81 { 81 {
82 setCaption( i18n("Export to phone options") ); 82 setCaption( i18n("Export to phone options") );
83 QVBoxLayout* lay = new QVBoxLayout( this ); 83 QVBoxLayout* lay = new QVBoxLayout( this );
84 lay->setSpacing( 3 ); 84 lay->setSpacing( 3 );
85 lay->setMargin( 3 ); 85 lay->setMargin( 3 );
86 QLabel *lab; 86 QLabel *lab;
87 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 87 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
88 lab->setAlignment (AlignHCenter ); 88 lab->setAlignment (AlignHCenter );
89 QHBox* temphb; 89 QHBox* temphb;
90 temphb = new QHBox( this ); 90 temphb = new QHBox( this );
91 new QLabel( i18n("I/O device: "), temphb ); 91 new QLabel( i18n("I/O device: "), temphb );
92 mPhoneDevice = new QLineEdit( temphb); 92 mPhoneDevice = new QLineEdit( temphb);
93 lay->addWidget( temphb ); 93 lay->addWidget( temphb );
94 temphb = new QHBox( this ); 94 temphb = new QHBox( this );
95 new QLabel( i18n("Connection: "), temphb ); 95 new QLabel( i18n("Connection: "), temphb );
96 mPhoneConnection = new QLineEdit( temphb); 96 mPhoneConnection = new QLineEdit( temphb);
97 lay->addWidget( temphb ); 97 lay->addWidget( temphb );
98 temphb = new QHBox( this ); 98 temphb = new QHBox( this );
99 new QLabel( i18n("Model(opt.): "), temphb ); 99 new QLabel( i18n("Model(opt.): "), temphb );
100 mPhoneModel = new QLineEdit( temphb); 100 mPhoneModel = new QLineEdit( temphb);
101 lay->addWidget( temphb ); 101 lay->addWidget( temphb );
102 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); 102 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
103 mWriteBackFuture->setChecked( true ); 103 mWriteBackFuture->setChecked( true );
104 lay->addWidget( mWriteBackFuture ); 104 lay->addWidget( mWriteBackFuture );
105 temphb = new QHBox( this ); 105 temphb = new QHBox( this );
106 new QLabel( i18n("Max. weeks in future: ") , temphb ); 106 new QLabel( i18n("Max. weeks in future: ") , temphb );
107 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); 107 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
108 mWriteBackFutureWeeks->setValue( 8 ); 108 mWriteBackFutureWeeks->setValue( 8 );
109 lay->addWidget( temphb ); 109 lay->addWidget( temphb );
110 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); 110 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) );
111 lab->setAlignment (AlignHCenter ); 111 lab->setAlignment (AlignHCenter );
112 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 112 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
113 lay->addWidget( ok ); 113 lay->addWidget( ok );
114 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 114 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
115 lay->addWidget( cancel ); 115 lay->addWidget( cancel );
116 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 116 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
117 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 117 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
118 resize( 220, 240 ); 118 resize( 220, 240 );
119 qApp->processEvents(); 119 qApp->processEvents();
120 int dw = QApplication::desktop()->width(); 120 int dw = QApplication::desktop()->width();
121 int dh = QApplication::desktop()->height(); 121 int dh = QApplication::desktop()->height();
122 move( (dw-width())/2, (dh - height() )/2 ); 122 move( (dw-width())/2, (dh - height() )/2 );
123 } 123 }
124 124
125public: 125public:
126 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 126 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
127 QCheckBox* mWriteBackFuture; 127 QCheckBox* mWriteBackFuture;
128 QSpinBox* mWriteBackFutureWeeks; 128 QSpinBox* mWriteBackFutureWeeks;
129}; 129};
130 130
131int globalFlagBlockStartup; 131int globalFlagBlockStartup;
132MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 132MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
133 QMainWindow( parent, name ) 133 QMainWindow( parent, name )
134{ 134{
135 135
136 mClosed = false; 136 mClosed = false;
137 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 137 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
138 QString confFile = locateLocal("config","korganizerrc"); 138 QString confFile = locateLocal("config","korganizerrc");
139 QFileInfo finf ( confFile ); 139 QFileInfo finf ( confFile );
140 bool showWarning = !finf.exists(); 140 bool showWarning = !finf.exists();
141 setIcon(SmallIcon( "ko24" ) ); 141 setIcon(SmallIcon( "ko24" ) );
142 mBlockAtStartup = true; 142 mBlockAtStartup = true;
143 mFlagKeyPressed = false; 143 mFlagKeyPressed = false;
144 setCaption("KO/Pi"); 144 setCaption("KO/Pi");
145 KOPrefs *p = KOPrefs::instance(); 145 KOPrefs *p = KOPrefs::instance();
146 KPimGlobalPrefs::instance()->setGlobalConfig(); 146 KPimGlobalPrefs::instance()->setGlobalConfig();
147 if ( p->mHourSize > 22 ) 147 if ( p->mHourSize > 22 )
148 p->mHourSize = 22; 148 p->mHourSize = 22;
149 QMainWindow::ToolBarDock tbd; 149 QMainWindow::ToolBarDock tbd;
150 if ( p->mToolBarHor ) { 150 if ( p->mToolBarHor ) {
151 if ( p->mToolBarUp ) 151 if ( p->mToolBarUp )
152 tbd = Bottom; 152 tbd = Bottom;
153 else 153 else
154 tbd = Top; 154 tbd = Top;
155 } 155 }
156 else { 156 else {
157 if ( p->mToolBarUp ) 157 if ( p->mToolBarUp )
158 tbd = Right; 158 tbd = Right;
159 else 159 else
160 tbd = Left; 160 tbd = Left;
161 } 161 }
162 if ( KOPrefs::instance()->mUseAppColors ) 162 if ( KOPrefs::instance()->mUseAppColors )
163 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 163 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
164 globalFlagBlockStartup = 1; 164 globalFlagBlockStartup = 1;
165 iconToolBar = new QPEToolBar( this ); 165 iconToolBar = new QPEToolBar( this );
166 addToolBar (iconToolBar , tbd ); 166 addToolBar (iconToolBar , tbd );
167 mCalendarModifiedFlag = false; 167 mCalendarModifiedFlag = false;
168 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); 168 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
169 splash->setAlignment ( AlignCenter ); 169 splash->setAlignment ( AlignCenter );
170 setCentralWidget( splash ); 170 setCentralWidget( splash );
171#ifndef DESKTOP_VERSION 171#ifndef DESKTOP_VERSION
172 showMaximized(); 172 showMaximized();
173#endif 173#endif
174 174
175 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); 175 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
176 setDefaultPreferences(); 176 setDefaultPreferences();
177 mCalendar = new CalendarLocal(); 177 mCalendar = new CalendarLocal();
178 mView = new CalendarView( mCalendar, this,"mCalendar " ); 178 mView = new CalendarView( mCalendar, this,"mCalendar " );
179 mView->hide(); 179 mView->hide();
180 //mView->resize(splash->size() ); 180 //mView->resize(splash->size() );
181 initActions(); 181 initActions();
182 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu); 182 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu);
183 mSyncManager->setBlockSave(false); 183 mSyncManager->setBlockSave(false);
184 mView->setSyncManager(mSyncManager); 184 mView->setSyncManager(mSyncManager);
185#ifndef DESKTOP_VERSION 185#ifndef DESKTOP_VERSION
186 iconToolBar->show(); 186 iconToolBar->show();
187 qApp->processEvents(); 187 qApp->processEvents();
188#endif 188#endif
189 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); 189 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
190 int vh = height() ; 190 int vh = height() ;
191 int vw = width(); 191 int vw = width();
192 //qDebug("Toolbar hei %d ",iconToolBar->height() ); 192 //qDebug("Toolbar hei %d ",iconToolBar->height() );
193 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 193 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
194 vh -= iconToolBar->height(); 194 vh -= iconToolBar->height();
195 } else { 195 } else {
196 vw -= iconToolBar->height(); 196 vw -= iconToolBar->height();
197 } 197 }
198 //mView->setMaximumSize( splash->size() ); 198 //mView->setMaximumSize( splash->size() );
199 //mView->resize( splash->size() ); 199 //mView->resize( splash->size() );
200 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 200 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
201 mView->readSettings(); 201 mView->readSettings();
202 bool newFile = false; 202 bool newFile = false;
203 if( !QFile::exists( defaultFileName() ) ) { 203 if( !QFile::exists( defaultFileName() ) ) {
204 QFileInfo finfo ( defaultFileName() ); 204 QFileInfo finfo ( defaultFileName() );
205 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 205 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
206 qDebug("oldfile %s ", oldFile.latin1()); 206 qDebug("oldfile %s ", oldFile.latin1());
207 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 207 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
208 finfo.setFile( oldFile ); 208 finfo.setFile( oldFile );
209 if (finfo.exists() ) { 209 if (finfo.exists() ) {
210 KMessageBox::information( this, message); 210 KMessageBox::information( this, message);
211 mView->openCalendar( oldFile ); 211 mView->openCalendar( oldFile );
212 qApp->processEvents(); 212 qApp->processEvents();
213 } else { 213 } else {
214 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 214 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
215 finfo.setFile( oldFile ); 215 finfo.setFile( oldFile );
216 if (finfo.exists() ) { 216 if (finfo.exists() ) {
217 KMessageBox::information( this, message); 217 KMessageBox::information( this, message);
218 mView->openCalendar( oldFile ); 218 mView->openCalendar( oldFile );
219 qApp->processEvents(); 219 qApp->processEvents();
220 } 220 }
221 } 221 }
222 mView->saveCalendar( defaultFileName() ); 222 mView->saveCalendar( defaultFileName() );
223 newFile = true; 223 newFile = true;
224 } 224 }
225 225
226 QTime neededSaveTime = QDateTime::currentDateTime().time(); 226 QTime neededSaveTime = QDateTime::currentDateTime().time();
227 mView->openCalendar( defaultFileName() ); 227 mView->openCalendar( defaultFileName() );
228 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 228 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
229 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 229 qDebug("KO: Calendar loading time: %d ms",msNeeded );
230 230
231 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) { 231 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) {
232 KOPrefs::instance()->setAllDefaults(); 232 KOPrefs::instance()->setAllDefaults();
233 int count = mView->addCategories(); 233 int count = mView->addCategories();
234 } 234 }
235 processIncidenceSelection( 0 ); 235 processIncidenceSelection( 0 );
236 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 236 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
237 SLOT( processIncidenceSelection( Incidence * ) ) ); 237 SLOT( processIncidenceSelection( Incidence * ) ) );
238 connect( mView, SIGNAL( modifiedChanged( bool ) ), 238 connect( mView, SIGNAL( modifiedChanged( bool ) ),
239 SLOT( slotModifiedChanged( bool ) ) ); 239 SLOT( slotModifiedChanged( bool ) ) );
240 240
241 241
242 connect( mView, SIGNAL( tempDisableBR(bool) ), 242 connect( mView, SIGNAL( tempDisableBR(bool) ),
243 SLOT( disableBR(bool) ) ); 243 SLOT( disableBR(bool) ) );
244 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 244 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
245 mView->setModified( false ); 245 mView->setModified( false );
246 mBlockAtStartup = false; 246 mBlockAtStartup = false;
247 mView->setModified( false ); 247 mView->setModified( false );
248 setCentralWidget( mView ); 248 setCentralWidget( mView );
249 globalFlagBlockStartup = 0; 249 globalFlagBlockStartup = 0;
250 mView->show(); 250 mView->show();
251 delete splash; 251 delete splash;
252 if ( newFile ) 252 if ( newFile )
253 mView->updateConfig(); 253 mView->updateConfig();
254 // qApp->processEvents(); 254 // qApp->processEvents();
255 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 255 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
256 //fillSyncMenu(); 256 //fillSyncMenu();
257 257
258 258
259 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); 259 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) );
260 connect(mView , SIGNAL( save() ), this, SLOT( save() ) ); 260 connect(mView , SIGNAL( save() ), this, SLOT( save() ) );
261 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) ); 261 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) );
262 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 262 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
263 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 263 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
264 mSyncManager->setDefaultFileName( sentSyncFile()); 264 mSyncManager->setDefaultFileName( sentSyncFile());
265 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) ); 265 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) );
266 mSyncManager->fillSyncMenu(); 266 mSyncManager->fillSyncMenu();
267 267
268 268
269 269
270 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); 270 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins );
271 if ( showWarning ) { 271 if ( showWarning ) {
272 KMessageBox::information( this, 272 KMessageBox::information( this,
273 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); 273 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information");
274 qApp->processEvents(); 274 qApp->processEvents();
275 mView->dialogManager()->showSyncOptions(); 275 mView->dialogManager()->showSyncOptions();
276 } 276 }
277 277
278 //US listen for result adressed from Ka/Pi 278 //US listen for result adressed from Ka/Pi
279#ifndef DESKTOP_VERSION 279#ifndef DESKTOP_VERSION
280 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 280 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
281#endif 281#endif
282#ifndef DESKTOP_VERSION 282#ifndef DESKTOP_VERSION
283 infrared = 0; 283 infrared = 0;
284#endif 284#endif
285 updateWeek( mView->startDate() ); 285 updateWeek( mView->startDate() );
286 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ), 286 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ),
287 SLOT( updateWeekNum( const KCal::DateList & ) ) ); 287 SLOT( updateWeekNum( const KCal::DateList & ) ) );
288 mBRdisabled = false; 288 mBRdisabled = false;
289 //toggleBeamReceive(); 289 //toggleBeamReceive();
290} 290}
291MainWindow::~MainWindow() 291MainWindow::~MainWindow()
292{ 292{
293 //qDebug("MainWindow::~MainWindow() "); 293 //qDebug("MainWindow::~MainWindow() ");
294 //save toolbar location 294 //save toolbar location
295 delete mCalendar; 295 delete mCalendar;
296 delete mSyncManager; 296 delete mSyncManager;
297#ifndef DESKTOP_VERSION 297#ifndef DESKTOP_VERSION
298 if ( infrared ) 298 if ( infrared )
299 delete infrared; 299 delete infrared;
300#endif 300#endif
301 301
302 302
303} 303}
304 304
305void MainWindow::disableBR(bool b) 305void MainWindow::disableBR(bool b)
306{ 306{
307#ifndef DESKTOP_VERSION 307#ifndef DESKTOP_VERSION
308 if ( b ) { 308 if ( b ) {
309 if ( infrared ) { 309 if ( infrared ) {
310 toggleBeamReceive(); 310 toggleBeamReceive();
311 mBRdisabled = true; 311 mBRdisabled = true;
312 } 312 }
313 mBRdisabled = true; 313 mBRdisabled = true;
314 } else { 314 } else {
315 if ( mBRdisabled ) { 315 if ( mBRdisabled ) {
316 mBRdisabled = false; 316 mBRdisabled = false;
317 //makes no sense,because other cal ap is probably running 317 //makes no sense,because other cal ap is probably running
318 // toggleBeamReceive(); 318 // toggleBeamReceive();
319 } 319 }
320 } 320 }
321#endif 321#endif
322 322
323} 323}
324bool MainWindow::beamReceiveEnabled() 324bool MainWindow::beamReceiveEnabled()
325{ 325{
326#ifndef DESKTOP_VERSION 326#ifndef DESKTOP_VERSION
327 return ( infrared != 0 ); 327 return ( infrared != 0 );
328#endif 328#endif
329 return false; 329 return false;
330} 330}
331 331
332void MainWindow::toggleBeamReceive() 332void MainWindow::toggleBeamReceive()
333{ 333{
334 if ( mBRdisabled ) 334 if ( mBRdisabled )
335 return; 335 return;
336#ifndef DESKTOP_VERSION 336#ifndef DESKTOP_VERSION
337 if ( infrared ) { 337 if ( infrared ) {
338 qDebug("disable BeamReceive "); 338 qDebug("disable BeamReceive ");
339 delete infrared; 339 delete infrared;
340 infrared = 0; 340 infrared = 0;
341 brAction->setOn(false); 341 brAction->setOn(false);
342 return; 342 return;
343 } 343 }
344 qDebug("enable BeamReceive "); 344 qDebug("enable BeamReceive ");
345 brAction->setOn(true); 345 brAction->setOn(true);
346 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 346 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
347 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 347 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
348#endif 348#endif
349} 349}
350void MainWindow::showMaximized () 350void MainWindow::showMaximized ()
351{ 351{
352#ifndef DESKTOP_VERSION 352#ifndef DESKTOP_VERSION
353 if ( ! globalFlagBlockStartup ) 353 if ( ! globalFlagBlockStartup )
354 if ( mClosed ) 354 if ( mClosed )
355 mView->goToday(); 355 mView->goToday();
356#endif 356#endif
357 QWidget::showMaximized () ; 357 QWidget::showMaximized () ;
358 mClosed = false; 358 mClosed = false;
359} 359}
360void MainWindow::closeEvent( QCloseEvent* ce ) 360void MainWindow::closeEvent( QCloseEvent* ce )
361{ 361{
362 362
363 363
364 364
365 if ( ! KOPrefs::instance()->mAskForQuit ) { 365 if ( ! KOPrefs::instance()->mAskForQuit ) {
366 saveOnClose(); 366 saveOnClose();
367 mClosed = true; 367 mClosed = true;
368 ce->accept(); 368 ce->accept();
369 return; 369 return;
370 370
371 } 371 }
372 372
373 switch( QMessageBox::information( this, "KO/Pi", 373 switch( QMessageBox::information( this, "KO/Pi",
374 i18n("Do you really want\nto close KO/Pi?"), 374 i18n("Do you really want\nto close KO/Pi?"),
375 i18n("Close"), i18n("No"), 375 i18n("Close"), i18n("No"),
376 0, 0 ) ) { 376 0, 0 ) ) {
377 case 0: 377 case 0:
378 saveOnClose(); 378 saveOnClose();
379 mClosed = true; 379 mClosed = true;
380 ce->accept(); 380 ce->accept();
381 break; 381 break;
382 case 1: 382 case 1:
383 ce->ignore(); 383 ce->ignore();
384 break; 384 break;
385 case 2: 385 case 2:
386 386
387 default: 387 default:
388 break; 388 break;
389 } 389 }
390 390
391 391
392} 392}
393 393
394void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 394void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
395{ 395{
396 QDataStream stream( data, IO_ReadOnly ); 396 QDataStream stream( data, IO_ReadOnly );
397 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 397 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
398 //QString datamess; 398 //QString datamess;
399 //qDebug("message "); 399 //qDebug("message ");
400 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 400 qDebug("KO: QCOP message received: %s ", cmsg.data() );
401 401
402 if ( cmsg == "setDocument(QString)" ) { 402 if ( cmsg == "setDocument(QString)" ) {
403 QDataStream stream( data, IO_ReadOnly ); 403 QDataStream stream( data, IO_ReadOnly );
404 QString fileName; 404 QString fileName;
405 stream >> fileName; 405 stream >> fileName;
406 //qDebug("filename %s ", fileName.latin1()); 406 //qDebug("filename %s ", fileName.latin1());
407 showMaximized(); 407 showMaximized();
408 raise(); 408 raise();
409 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 409 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
410 mSyncManager->slotSyncMenu( 1002 ); 410 mSyncManager->slotSyncMenu( 1002 );
411 return; 411 return;
412 } 412 }
413 413
414 if ( cmsg == "-writeFile" ) { 414 if ( cmsg == "-writeFile" ) {
415 // I made from the "-writeFile" an "-writeAlarm" 415 // I made from the "-writeFile" an "-writeAlarm"
416 mView->viewManager()->showWhatsNextView(); 416 mView->viewManager()->showWhatsNextView();
417 mCalendar->checkAlarmForIncidence( 0, true); 417 mCalendar->checkAlarmForIncidence( 0, true);
418 showMaximized(); 418 showMaximized();
419 raise(); 419 raise();
420 return; 420 return;
421 421
422 } 422 }
423 if ( cmsg == "-writeFileSilent" ) { 423 if ( cmsg == "-writeFileSilent" ) {
424 // I made from the "-writeFile" an "-writeAlarm" 424 // I made from the "-writeFile" an "-writeAlarm"
425 // mView->viewManager()->showWhatsNextView(); 425 // mView->viewManager()->showWhatsNextView();
426 mCalendar->checkAlarmForIncidence( 0, true); 426 mCalendar->checkAlarmForIncidence( 0, true);
427 //showMaximized(); 427 //showMaximized();
428 //raise(); 428 //raise();
429 hide(); 429 hide();
430 return; 430 return;
431 } 431 }
432 if ( cmsg == "-newCountdown" ) { 432 if ( cmsg == "-newCountdown" ) {
433 qDebug("newCountdown "); 433 qDebug("newCountdown ");
434 434
435 } 435 }
436 QString msg ; 436 QString msg ;
437 QString allmsg = cmsg; 437 QString allmsg = cmsg;
438 while ( allmsg.length() > 0 ) { 438 while ( allmsg.length() > 0 ) {
439 int nextC = allmsg.find( "-", 1 ); 439 int nextC = allmsg.find( "-", 1 );
440 if ( nextC == -1 ) { 440 if ( nextC == -1 ) {
441 msg = allmsg; 441 msg = allmsg;
442 allmsg = ""; 442 allmsg = "";
443 } else{ 443 } else{
444 msg = allmsg.left( nextC ); 444 msg = allmsg.left( nextC );
445 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 445 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
446 } 446 }
447 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 447 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
448 if ( msg == "-newEvent" ) { 448 if ( msg == "-newEvent" ) {
449 mView->newEvent(); 449 mView->newEvent();
450 } 450 }
451 if ( msg == "-newTodo" ) { 451 if ( msg == "-newTodo" ) {
452 mView->newTodo(); 452 mView->newTodo();
453 453
454 } 454 }
455 if ( msg == "-showWN" ) { 455 if ( msg == "-showWN" ) {
456 mView->viewManager()->showWhatsNextView(); 456 mView->viewManager()->showWhatsNextView();
457 } 457 }
458 if ( msg == "-showTodo" ) { 458 if ( msg == "-showTodo" ) {
459 mView->viewManager()->showTodoView(); 459 mView->viewManager()->showTodoView();
460 } 460 }
461 if ( msg == "-showList" ) { 461 if ( msg == "-showList" ) {
462 mView->viewManager()->showListView(); 462 mView->viewManager()->showListView();
463 } 463 }
464 else if ( msg == "-showDay" ) { 464 else if ( msg == "-showDay" ) {
465 mView->viewManager()->showDayView(); 465 mView->viewManager()->showDayView();
466 } 466 }
467 else if ( msg == "-showWWeek" ) { 467 else if ( msg == "-showWWeek" ) {
468 mView->viewManager()->showWorkWeekView(); 468 mView->viewManager()->showWorkWeekView();
469 } 469 }
470 else if ( msg == "-ringSync" ) { 470 else if ( msg == "-ringSync" ) {
471 mSyncManager->multiSync( false ); 471 mSyncManager->multiSync( false );
472 } 472 }
473 else if ( msg == "-showWeek" ) { 473 else if ( msg == "-showWeek" ) {
474 mView->viewManager()->showWeekView(); 474 mView->viewManager()->showWeekView();
475 } 475 }
476 else if ( msg == "-showTodo" ) { 476 else if ( msg == "-showTodo" ) {
477 mView->viewManager()->showTodoView(); 477 mView->viewManager()->showTodoView();
478 } 478 }
479 else if ( msg == "-showJournal" ) { 479 else if ( msg == "-showJournal" ) {
480 mView->dateNavigator()->selectDates( 1 ); 480 mView->dateNavigator()->selectDates( 1 );
481 mView->dateNavigator()->selectToday(); 481 mView->dateNavigator()->selectToday();
482 mView->viewManager()->showJournalView(); 482 mView->viewManager()->showJournalView();
483 } 483 }
484 else if ( msg == "-showKO" ) { 484 else if ( msg == "-showKO" ) {
485 mView->viewManager()->showNextXView(); 485 mView->viewManager()->showNextXView();
486 } 486 }
487 else if ( msg == "-showWNext" ) { 487 else if ( msg == "-showWNext" ) {
488 mView->viewManager()->showWhatsNextView(); 488 mView->viewManager()->showWhatsNextView();
489 } 489 }
490 else if ( msg == "nextView()" ) { 490 else if ( msg == "nextView()" ) {
491 mView->viewManager()->showNextView(); 491 mView->viewManager()->showNextView();
492 } 492 }
493 else if ( msg == "-showNextXView" ) { 493 else if ( msg == "-showNextXView" ) {
494 mView->viewManager()->showNextXView(); 494 mView->viewManager()->showNextXView();
495 } 495 }
496 496
497 497
498 } 498 }
499 499
500 showMaximized(); 500 showMaximized();
501 raise(); 501 raise();
502} 502}
503 503
504QPixmap MainWindow::loadPixmap( QString name ) 504QPixmap MainWindow::loadPixmap( QString name )
505{ 505{
506 return SmallIcon( name ); 506 return SmallIcon( name );
507 507
508} 508}
509void MainWindow::initActions() 509void MainWindow::initActions()
510{ 510{
511 //KOPrefs::instance()->mShowFullMenu 511 //KOPrefs::instance()->mShowFullMenu
512 iconToolBar->clear(); 512 iconToolBar->clear();
513 KOPrefs *p = KOPrefs::instance(); 513 KOPrefs *p = KOPrefs::instance();
514 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 514 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
515 515
516 QPopupMenu *viewMenu = new QPopupMenu( this ); 516 QPopupMenu *viewMenu = new QPopupMenu( this );
517 QPopupMenu *actionMenu = new QPopupMenu( this ); 517 QPopupMenu *actionMenu = new QPopupMenu( this );
518 QPopupMenu *importMenu = new QPopupMenu( this ); 518 QPopupMenu *importMenu = new QPopupMenu( this );
519 QPopupMenu *importMenu_X = new QPopupMenu( this ); 519 QPopupMenu *importMenu_X = new QPopupMenu( this );
520 QPopupMenu *exportMenu_X = new QPopupMenu( this ); 520 QPopupMenu *exportMenu_X = new QPopupMenu( this );
521 QPopupMenu *beamMenu_X = new QPopupMenu( this ); 521 QPopupMenu *beamMenu_X = new QPopupMenu( this );
522 selectFilterMenu = new QPopupMenu( this ); 522 selectFilterMenu = new QPopupMenu( this );
523 selectFilterMenu->setCheckable( true ); 523 selectFilterMenu->setCheckable( true );
524 syncMenu = new QPopupMenu( this ); 524 syncMenu = new QPopupMenu( this );
525 configureAgendaMenu = new QPopupMenu( this ); 525 configureAgendaMenu = new QPopupMenu( this );
526 configureToolBarMenu = new QPopupMenu( this ); 526 configureToolBarMenu = new QPopupMenu( this );
527 QPopupMenu *helpMenu = new QPopupMenu( this ); 527 QPopupMenu *helpMenu = new QPopupMenu( this );
528 QIconSet icon; 528 QIconSet icon;
529 int pixWid = 22, pixHei = 22; 529 int pixWid = 22, pixHei = 22;
530 QString pathString = ""; 530 QString pathString = "";
531 if ( !p->mToolBarMiniIcons ) { 531 if ( !p->mToolBarMiniIcons ) {
532 if ( QApplication::desktop()->width() < 480 ) { 532 if ( QApplication::desktop()->width() < 480 ) {
533 pathString += "icons16/"; 533 pathString += "icons16/";
534 pixWid = 18; pixHei = 16; 534 pixWid = 18; pixHei = 16;
535 } 535 }
536 } else { 536 } else {
537 pathString += "iconsmini/"; 537 pathString += "iconsmini/";
538 pixWid = 18; pixHei = 16; 538 pixWid = 18; pixHei = 16;
539 } 539 }
540 if ( KOPrefs::instance()->mShowFullMenu ) { 540 if ( KOPrefs::instance()->mShowFullMenu ) {
541 QMenuBar *menuBar1; 541 QMenuBar *menuBar1;
542 menuBar1 = menuBar(); 542 menuBar1 = menuBar();
543 menuBar1->insertItem( i18n("File"), importMenu ); 543 menuBar1->insertItem( i18n("File"), importMenu );
544 menuBar1->insertItem( i18n("View"), viewMenu ); 544 menuBar1->insertItem( i18n("View"), viewMenu );
545 menuBar1->insertItem( i18n("Actions"), actionMenu ); 545 menuBar1->insertItem( i18n("Actions"), actionMenu );
546#ifdef DESKTOP_VERSION 546#ifdef DESKTOP_VERSION
547 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 547 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
548 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 548 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
549#else 549#else
550 menuBar1->insertItem( i18n("Sync"), syncMenu ); 550 menuBar1->insertItem( i18n("Sync"), syncMenu );
551 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu ); 551 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu );
552#endif 552#endif
553 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 553 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
554 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 554 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
555 menuBar1->insertItem( i18n("Help"), helpMenu ); 555 menuBar1->insertItem( i18n("Help"), helpMenu );
556 } else { 556 } else {
557 QPEMenuBar *menuBar1; 557 QPEMenuBar *menuBar1;
558 menuBar1 = new QPEMenuBar( iconToolBar ); 558 menuBar1 = new QPEMenuBar( iconToolBar );
559 QPopupMenu *menuBar = new QPopupMenu( this ); 559 QPopupMenu *menuBar = new QPopupMenu( this );
560 icon = loadPixmap( pathString + "z_menu" ); 560 icon = loadPixmap( pathString + "z_menu" );
561 menuBar1->insertItem( icon.pixmap(), menuBar); 561 menuBar1->insertItem( icon.pixmap(), menuBar);
562 //menuBar1->insertItem( i18n("ME"), menuBar); 562 //menuBar1->insertItem( i18n("ME"), menuBar);
563 menuBar->insertItem( i18n("File"), importMenu ); 563 menuBar->insertItem( i18n("File"), importMenu );
564 menuBar->insertItem( i18n("View"), viewMenu ); 564 menuBar->insertItem( i18n("View"), viewMenu );
565 menuBar->insertItem( i18n("Actions"), actionMenu ); 565 menuBar->insertItem( i18n("Actions"), actionMenu );
566 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 566 menuBar->insertItem( i18n("Synchronize"), syncMenu );
567 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 567 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
568 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 568 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
569 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 569 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
570 menuBar->insertItem( i18n("Help"), helpMenu ); 570 menuBar->insertItem( i18n("Help"), helpMenu );
571 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 571 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
572 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 572 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
573 } 573 }
574 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 574 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
575 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) ); 575 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) );
576 mWeekBgColor = iconToolBar->backgroundColor(); 576 mWeekBgColor = iconToolBar->backgroundColor();
577 mWeekPixmap.resize( pixWid , pixHei ); 577 mWeekPixmap.resize( pixWid , pixHei );
578 mWeekPixmap.fill( mWeekBgColor ); 578 mWeekPixmap.fill( mWeekBgColor );
579 icon = mWeekPixmap; 579 icon = mWeekPixmap;
580 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this ); 580 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this );
581 if ( p-> mShowIconWeekNum ) 581 if ( p-> mShowIconWeekNum )
582 mWeekAction->addTo( iconToolBar ); 582 mWeekAction->addTo( iconToolBar );
583 mWeekFont = font(); 583 mWeekFont = font();
584 584
585 int fontPoint = mWeekFont.pointSize(); 585 int fontPoint = mWeekFont.pointSize();
586 QFontMetrics f( mWeekFont ); 586 QFontMetrics f( mWeekFont );
587 int fontWid = f.width( "30" ); 587 int fontWid = f.width( "30" );
588 while ( fontWid > pixWid ) { 588 while ( fontWid > pixWid ) {
589 --fontPoint; 589 --fontPoint;
590 mWeekFont.setPointSize( fontPoint ); 590 mWeekFont.setPointSize( fontPoint );
591 QFontMetrics f( mWeekFont ); 591 QFontMetrics f( mWeekFont );
592 fontWid = f.width( "30" ); 592 fontWid = f.width( "30" );
593 qDebug("dec-- "); 593 //qDebug("dec-- ");
594 } 594 }
595 595
596 connect( mWeekAction, SIGNAL( activated() ), 596 connect( mWeekAction, SIGNAL( activated() ),
597 this, SLOT( weekAction() ) ); 597 this, SLOT( weekAction() ) );
598 598
599 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) ); 599 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) );
600 600
601 //#endif 601 //#endif
602 // ****************** 602 // ******************
603 QAction *action; 603 QAction *action;
604 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 604 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
605 configureToolBarMenu->setCheckable( true ); 605 configureToolBarMenu->setCheckable( true );
606 606
607 607
608 configureAgendaMenu->setCheckable( true ); 608 configureAgendaMenu->setCheckable( true );
609 int iii ; 609 int iii ;
610 for ( iii = 1;iii<= 10 ;++iii ){ 610 for ( iii = 1;iii<= 10 ;++iii ){
611 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 ); 611 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 );
612 } 612 }
613 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 613 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
614 614
615 connect( configureAgendaMenu, SIGNAL( aboutToShow()), 615 connect( configureAgendaMenu, SIGNAL( aboutToShow()),
616 this, SLOT( showConfigureAgenda( ) ) ); 616 this, SLOT( showConfigureAgenda( ) ) );
617 617
618 icon = loadPixmap( pathString + "configure" ); 618 icon = loadPixmap( pathString + "configure" );
619 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this ); 619 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this );
620 action->addTo( actionMenu ); 620 action->addTo( actionMenu );
621 connect( action, SIGNAL( activated() ), 621 connect( action, SIGNAL( activated() ),
622 mView, SLOT( edit_options() ) ); 622 mView, SLOT( edit_options() ) );
623 actionMenu->insertSeparator(); 623 actionMenu->insertSeparator();
624 624
625 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this ); 625 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
626 action->addTo( actionMenu ); 626 action->addTo( actionMenu );
627 connect( action, SIGNAL( activated() ), 627 connect( action, SIGNAL( activated() ),
628 mView, SLOT( undo_delete() ) ); 628 mView, SLOT( undo_delete() ) );
629 actionMenu->insertSeparator(); 629 actionMenu->insertSeparator();
630 630
631 icon = loadPixmap( pathString + "newevent" ); 631 icon = loadPixmap( pathString + "newevent" );
632 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 632 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
633 configureToolBarMenu->insertSeparator(); 633 configureToolBarMenu->insertSeparator();
634 configureToolBarMenu->insertItem(i18n("Week Number"), 400); 634 configureToolBarMenu->insertItem(i18n("Week Number"), 400);
635 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 635 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
636 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 636 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
637 ne_action->addTo( actionMenu ); 637 ne_action->addTo( actionMenu );
638 connect( ne_action, SIGNAL( activated() ), 638 connect( ne_action, SIGNAL( activated() ),
639 mView, SLOT( newEvent() ) ); 639 mView, SLOT( newEvent() ) );
640 icon = loadPixmap( pathString + "newtodo" ); 640 icon = loadPixmap( pathString + "newtodo" );
641 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 641 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
642 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); 642 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
643 nt_action->addTo( actionMenu ); 643 nt_action->addTo( actionMenu );
644 connect( nt_action, SIGNAL( activated() ), 644 connect( nt_action, SIGNAL( activated() ),
645 mView, SLOT( newTodo() ) ); 645 mView, SLOT( newTodo() ) );
646 646
647 icon = loadPixmap( pathString + "today" ); 647 icon = loadPixmap( pathString + "today" );
648 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 648 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
649 today_action->addTo( viewMenu ); 649 today_action->addTo( viewMenu );
650 connect( today_action, SIGNAL( activated() ), 650 connect( today_action, SIGNAL( activated() ),
651 mView, SLOT( goToday() ) ); 651 mView, SLOT( goToday() ) );
652 viewMenu->insertSeparator(); 652 viewMenu->insertSeparator();
653 653
654 icon = loadPixmap( pathString + "navi" ); 654 icon = loadPixmap( pathString + "navi" );
655 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 655 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
656 action->addTo( viewMenu ); 656 action->addTo( viewMenu );
657 connect( action, SIGNAL( activated() ), 657 connect( action, SIGNAL( activated() ),
658 mView, SLOT( toggleDateNavigatorWidget() ) ); 658 mView, SLOT( toggleDateNavigatorWidget() ) );
659 mToggleNav = action ; 659 mToggleNav = action ;
660 icon = loadPixmap( pathString + "filter" ); 660 icon = loadPixmap( pathString + "filter" );
661 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this ); 661 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this );
662 action->addTo( viewMenu ); 662 action->addTo( viewMenu );
663 connect( action, SIGNAL( activated() ), 663 connect( action, SIGNAL( activated() ),
664 mView, SLOT( toggleFilter() ) ); 664 mView, SLOT( toggleFilter() ) );
665 mToggleFilter = action; 665 mToggleFilter = action;
666 icon = loadPixmap( pathString + "allday" ); 666 icon = loadPixmap( pathString + "allday" );
667 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this ); 667 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this );
668 action->addTo( viewMenu ); 668 action->addTo( viewMenu );
669 connect( action, SIGNAL( activated() ), 669 connect( action, SIGNAL( activated() ),
670 mView, SLOT( toggleAllDaySize() ) ); 670 mView, SLOT( toggleAllDaySize() ) );
671 mToggleAllday = action; 671 mToggleAllday = action;
672 672
673 673
674 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 674 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
675 mToggleNav, SLOT( setEnabled ( bool ) ) ); 675 mToggleNav, SLOT( setEnabled ( bool ) ) );
676 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 676 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
677 mToggleFilter, SLOT( setEnabled ( bool ) ) ); 677 mToggleFilter, SLOT( setEnabled ( bool ) ) );
678 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 678 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
679 mToggleAllday, SLOT( setEnabled ( bool ) ) ); 679 mToggleAllday, SLOT( setEnabled ( bool ) ) );
680 680
681 viewMenu->insertSeparator(); 681 viewMenu->insertSeparator();
682 icon = loadPixmap( pathString + "picker" ); 682 icon = loadPixmap( pathString + "picker" );
683 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this ); 683 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this );
684 action->addTo( viewMenu ); 684 action->addTo( viewMenu );
685 connect( action, SIGNAL( activated() ), 685 connect( action, SIGNAL( activated() ),
686 mView, SLOT( showDatePicker() ) ); 686 mView, SLOT( showDatePicker() ) );
687 action->addTo( iconToolBar ); 687 action->addTo( iconToolBar );
688 viewMenu->insertSeparator(); 688 viewMenu->insertSeparator();
689 689
690 690
691 icon = loadPixmap( pathString + "whatsnext" ); 691 icon = loadPixmap( pathString + "whatsnext" );
692 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 ); 692 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 );
693 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 693 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
694 whatsnext_action->addTo( viewMenu ); 694 whatsnext_action->addTo( viewMenu );
695 connect( whatsnext_action, SIGNAL( activated() ), 695 connect( whatsnext_action, SIGNAL( activated() ),
696 mView->viewManager(), SLOT( showWhatsNextView() ) ); 696 mView->viewManager(), SLOT( showWhatsNextView() ) );
697 697
698 icon = loadPixmap( pathString + "xdays" ); 698 icon = loadPixmap( pathString + "xdays" );
699 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 ); 699 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 );
700 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 700 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
701 xdays_action->addTo( viewMenu ); 701 xdays_action->addTo( viewMenu );
702 connect( xdays_action, SIGNAL( activated() ), 702 connect( xdays_action, SIGNAL( activated() ),
703 mView->viewManager(), SLOT( showNextXView() ) ); 703 mView->viewManager(), SLOT( showNextXView() ) );
704 704
705 705
706 icon = loadPixmap( pathString + "journal" ); 706 icon = loadPixmap( pathString + "journal" );
707 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 707 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
708 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 708 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
709 viewjournal_action->addTo( viewMenu ); 709 viewjournal_action->addTo( viewMenu );
710 connect( viewjournal_action, SIGNAL( activated() ), 710 connect( viewjournal_action, SIGNAL( activated() ),
711 mView->viewManager(), SLOT( showJournalView() ) ); 711 mView->viewManager(), SLOT( showJournalView() ) );
712 712
713 713
714 icon = loadPixmap( pathString + "day" ); 714 icon = loadPixmap( pathString + "day" );
715 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 715 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
716 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 716 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
717 day1_action->addTo( viewMenu ); 717 day1_action->addTo( viewMenu );
718 // action->addTo( toolBar ); 718 // action->addTo( toolBar );
719 connect( day1_action, SIGNAL( activated() ), 719 connect( day1_action, SIGNAL( activated() ),
720 mView->viewManager(), SLOT( showDayView() ) ); 720 mView->viewManager(), SLOT( showDayView() ) );
721 721
722 icon = loadPixmap( pathString + "workweek" ); 722 icon = loadPixmap( pathString + "workweek" );
723 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 723 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
724 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 724 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
725 day5_action->addTo( viewMenu ); 725 day5_action->addTo( viewMenu );
726 connect( day5_action, SIGNAL( activated() ), 726 connect( day5_action, SIGNAL( activated() ),
727 mView->viewManager(), SLOT( showWorkWeekView() ) ); 727 mView->viewManager(), SLOT( showWorkWeekView() ) );
728 728
729 icon = loadPixmap( pathString + "week" ); 729 icon = loadPixmap( pathString + "week" );
730 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 730 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
731 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 731 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
732 day7_action->addTo( viewMenu ); 732 day7_action->addTo( viewMenu );
733 connect( day7_action, SIGNAL( activated() ), 733 connect( day7_action, SIGNAL( activated() ),
734 mView->viewManager(), SLOT( showWeekView() ) ); 734 mView->viewManager(), SLOT( showWeekView() ) );
735 735
736 icon = loadPixmap( pathString + "workweek2" ); 736 icon = loadPixmap( pathString + "workweek2" );
737 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 ); 737 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 );
738 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this ); 738 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this );
739 day6_action->addTo( viewMenu ); 739 day6_action->addTo( viewMenu );
740 connect( day6_action, SIGNAL( activated() ), 740 connect( day6_action, SIGNAL( activated() ),
741 mView->viewManager(), SLOT( showMonthViewWeek() ) ); 741 mView->viewManager(), SLOT( showMonthViewWeek() ) );
742 742
743 icon = loadPixmap( pathString + "month" ); 743 icon = loadPixmap( pathString + "month" );
744 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 744 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
745 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 745 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
746 month_action->addTo( viewMenu ); 746 month_action->addTo( viewMenu );
747 connect( month_action, SIGNAL( activated() ), 747 connect( month_action, SIGNAL( activated() ),
748 mView->viewManager(), SLOT( showMonthView() ) ); 748 mView->viewManager(), SLOT( showMonthView() ) );
749 749
750 icon = loadPixmap( pathString + "list" ); 750 icon = loadPixmap( pathString + "list" );
751 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 751 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
752 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 752 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
753 showlist_action->addTo( viewMenu ); 753 showlist_action->addTo( viewMenu );
754 connect( showlist_action, SIGNAL( activated() ), 754 connect( showlist_action, SIGNAL( activated() ),
755 mView->viewManager(), SLOT( showListView() ) ); 755 mView->viewManager(), SLOT( showListView() ) );
756 756
757 icon = loadPixmap( pathString + "todo" ); 757 icon = loadPixmap( pathString + "todo" );
758 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 758 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
759 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 759 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
760 todoview_action->addTo( viewMenu ); 760 todoview_action->addTo( viewMenu );
761 connect( todoview_action, SIGNAL( activated() ), 761 connect( todoview_action, SIGNAL( activated() ),
762 mView->viewManager(), SLOT( showTodoView() ) ); 762 mView->viewManager(), SLOT( showTodoView() ) );
763 763
764 764
765 765
766#if 0 766#if 0
767 action = new QAction( "view_timespan", "Time Span", 0, this ); 767 action = new QAction( "view_timespan", "Time Span", 0, this );
768 action->addTo( viewMenu ); 768 action->addTo( viewMenu );
769 connect( action, SIGNAL( activated() ), 769 connect( action, SIGNAL( activated() ),
770 mView->viewManager(), SLOT( showTimeSpanView() ) ); 770 mView->viewManager(), SLOT( showTimeSpanView() ) );
771#endif 771#endif
772 772
773 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 773 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
774 this ); 774 this );
775 mNewSubTodoAction->addTo( actionMenu ); 775 mNewSubTodoAction->addTo( actionMenu );
776 connect( mNewSubTodoAction, SIGNAL( activated() ), 776 connect( mNewSubTodoAction, SIGNAL( activated() ),
777 mView, SLOT( newSubTodo() ) ); 777 mView, SLOT( newSubTodo() ) );
778 778
779 actionMenu->insertSeparator(); 779 actionMenu->insertSeparator();
780 780
781 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this ); 781 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this );
782 mShowAction->addTo( actionMenu ); 782 mShowAction->addTo( actionMenu );
783 connect( mShowAction, SIGNAL( activated() ), 783 connect( mShowAction, SIGNAL( activated() ),
784 mView, SLOT( showIncidence() ) ); 784 mView, SLOT( showIncidence() ) );
785 785
786 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 786 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
787 mEditAction->addTo( actionMenu ); 787 mEditAction->addTo( actionMenu );
788 connect( mEditAction, SIGNAL( activated() ), 788 connect( mEditAction, SIGNAL( activated() ),
789 mView, SLOT( editIncidence() ) ); 789 mView, SLOT( editIncidence() ) );
790 790
791 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 791 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
792 mDeleteAction->addTo( actionMenu ); 792 mDeleteAction->addTo( actionMenu );
793 connect( mDeleteAction, SIGNAL( activated() ), 793 connect( mDeleteAction, SIGNAL( activated() ),
794 mView, SLOT( deleteIncidence() ) ); 794 mView, SLOT( deleteIncidence() ) );
795 795
796 796
797 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 797 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
798 mCloneAction->addTo( actionMenu ); 798 mCloneAction->addTo( actionMenu );
799 connect( mCloneAction, SIGNAL( activated() ), 799 connect( mCloneAction, SIGNAL( activated() ),
800 mView, SLOT( cloneIncidence() ) ); 800 mView, SLOT( cloneIncidence() ) );
801 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 801 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
802 mMoveAction->addTo( actionMenu ); 802 mMoveAction->addTo( actionMenu );
803 connect( mMoveAction, SIGNAL( activated() ), 803 connect( mMoveAction, SIGNAL( activated() ),
804 mView, SLOT( moveIncidence() ) ); 804 mView, SLOT( moveIncidence() ) );
805 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 805 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
806 mBeamAction->addTo( actionMenu ); 806 mBeamAction->addTo( actionMenu );
807 connect( mBeamAction, SIGNAL( activated() ), 807 connect( mBeamAction, SIGNAL( activated() ),
808 mView, SLOT( beamIncidence() ) ); 808 mView, SLOT( beamIncidence() ) );
809 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 809 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
810 mCancelAction->addTo( actionMenu ); 810 mCancelAction->addTo( actionMenu );
811 connect( mCancelAction, SIGNAL( activated() ), 811 connect( mCancelAction, SIGNAL( activated() ),
812 mView, SLOT( toggleCancelIncidence() ) ); 812 mView, SLOT( toggleCancelIncidence() ) );
813 813
814 actionMenu->insertSeparator(); 814 actionMenu->insertSeparator();
815 815
816 action = new QAction( "purge_completed", i18n("Purge Completed"), 0, 816 action = new QAction( "purge_completed", i18n("Purge Completed"), 0,
817 this ); 817 this );
818 action->addTo( actionMenu ); 818 action->addTo( actionMenu );
819 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 819 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
820 820
821 icon = loadPixmap( pathString + "search" ); 821 icon = loadPixmap( pathString + "search" );
822 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 822 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
823 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5); 823 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5);
824 search_action->addTo( actionMenu ); 824 search_action->addTo( actionMenu );
825 connect( search_action, SIGNAL( activated() ), 825 connect( search_action, SIGNAL( activated() ),
826 mView->dialogManager(), SLOT( showSearchDialog() ) ); 826 mView->dialogManager(), SLOT( showSearchDialog() ) );
827 827
828 828
829 829
830 if ( KOPrefs::instance()->mShowFullMenu ) { 830 if ( KOPrefs::instance()->mShowFullMenu ) {
831 actionMenu->insertSeparator(); 831 actionMenu->insertSeparator();
832 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 832 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
833 833
834 } 834 }
835 // actionMenu->insertSeparator(); 835 // actionMenu->insertSeparator();
836 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 836 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
837 this ); 837 this );
838 action->addTo( importMenu_X ); 838 action->addTo( importMenu_X );
839 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 839 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
840 action = new QAction( "import_quick", i18n("Import last file"), 0, 840 action = new QAction( "import_quick", i18n("Import last file"), 0,
841 this ); 841 this );
842 action->addTo( importMenu_X ); 842 action->addTo( importMenu_X );
843 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 843 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
844 importMenu_X->insertSeparator(); 844 importMenu_X->insertSeparator();
845 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 845 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
846 this ); 846 this );
847 action->addTo( importMenu_X ); 847 action->addTo( importMenu_X );
848 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 848 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
849 //#ifndef DESKTOP_VERSION 849 //#ifndef DESKTOP_VERSION
850 importMenu_X->insertSeparator(); 850 importMenu_X->insertSeparator();
851 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 851 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
852 this ); 852 this );
853 action->addTo( importMenu_X ); 853 action->addTo( importMenu_X );
854 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 854 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
855 //#else 855 //#else
856#ifdef _OL_IMPORT_ 856#ifdef _OL_IMPORT_
857 importMenu_X->insertSeparator(); 857 importMenu_X->insertSeparator();
858 action = new QAction( "import_ol", i18n("Import from OL"), 0, 858 action = new QAction( "import_ol", i18n("Import from OL"), 0,
859 this ); 859 this );
860 action->addTo( importMenu_X ); 860 action->addTo( importMenu_X );
861 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 861 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
862#endif 862#endif
863 //#endif 863 //#endif
864 864
865 //importMenu->insertSeparator(); 865 //importMenu->insertSeparator();
866 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 866 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
867 this ); 867 this );
868 action->addTo( importMenu ); 868 action->addTo( importMenu );
869 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 869 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
870 870
871 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0, 871 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0,
872 this ); 872 this );
873 action->addTo( importMenu ); 873 action->addTo( importMenu );
874 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 874 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
875 importMenu->insertSeparator(); 875 importMenu->insertSeparator();
876 importMenu->insertItem( i18n("Import"), importMenu_X ); 876 importMenu->insertItem( i18n("Import"), importMenu_X );
877 //importMenu->insertSeparator(); 877 //importMenu->insertSeparator();
878 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 878 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
879 this ); 879 this );
880 action->addTo( exportMenu_X ); 880 action->addTo( exportMenu_X );
881 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 881 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
882 882
883 883
884 //LR 884 //LR
885 QPopupMenu *ex2phone = new QPopupMenu( this ); 885 QPopupMenu *ex2phone = new QPopupMenu( this );
886 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 886 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
887 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 887 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
888 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 888 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
889 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone ); 889 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone );
890 890
891 importMenu->insertItem( i18n("Export"), exportMenu_X ); 891 importMenu->insertItem( i18n("Export"), exportMenu_X );
892#ifndef DESKTOP_VERSION 892#ifndef DESKTOP_VERSION
893 //importMenu->insertSeparator(); 893 //importMenu->insertSeparator();
894 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0, 894 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0,
895 this ); 895 this );
896 brAction->addTo( beamMenu_X ); 896 brAction->addTo( beamMenu_X );
897 brAction->setToggleAction (true ) ; 897 brAction->setToggleAction (true ) ;
898 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 898 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
899 899
900 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 900 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
901 this ); 901 this );
902 action->addTo( beamMenu_X ); 902 action->addTo( beamMenu_X );
903 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 903 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
904 904
905 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 905 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
906 this ); 906 this );
907 action->addTo( beamMenu_X ); 907 action->addTo( beamMenu_X );
908 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 908 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
909 importMenu->insertItem( i18n("Beam"), beamMenu_X ); 909 importMenu->insertItem( i18n("Beam"), beamMenu_X );
910#else 910#else
911 //importMenu->insertSeparator(); 911 //importMenu->insertSeparator();
912 icon = loadPixmap( pathString + "print" ); 912 icon = loadPixmap( pathString + "print" );
913 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 913 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
914 action->addTo( beamMenu_X ); 914 action->addTo( beamMenu_X );
915 connect( action, SIGNAL( activated() ), 915 connect( action, SIGNAL( activated() ),
916 this, SLOT( printCal() ) ); 916 this, SLOT( printCal() ) );
917 917
918 icon = loadPixmap( pathString + "print" ); 918 icon = loadPixmap( pathString + "print" );
919 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 919 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
920 action->addTo( beamMenu_X ); 920 action->addTo( beamMenu_X );
921 connect( action, SIGNAL( activated() ), 921 connect( action, SIGNAL( activated() ),
922 this, SLOT( printSel() ) ); 922 this, SLOT( printSel() ) );
923 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this ); 923 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this );
924 action->addTo( beamMenu_X ); 924 action->addTo( beamMenu_X );
925 connect( action, SIGNAL( activated() ), 925 connect( action, SIGNAL( activated() ),
926 mView->viewManager(), SIGNAL( printWNV() ) ); 926 mView->viewManager(), SIGNAL( printWNV() ) );
927 importMenu->insertItem( i18n("Print"), beamMenu_X ); 927 importMenu->insertItem( i18n("Print"), beamMenu_X );
928#endif 928#endif
929 importMenu->insertSeparator(); 929 importMenu->insertSeparator();
930 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 930 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
931 this ); 931 this );
932 action->addTo( importMenu ); 932 action->addTo( importMenu );
933 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 933 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
934 importMenu->insertSeparator(); 934 importMenu->insertSeparator();
935 action = new QAction( "beam all", i18n("Save"), 0, 935 action = new QAction( "beam all", i18n("Save"), 0,
936 this ); 936 this );
937 action->addTo( importMenu ); 937 action->addTo( importMenu );
938 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 938 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
939 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 939 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
940 this ); 940 this );
941 action->addTo( importMenu ); 941 action->addTo( importMenu );
942 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 942 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
943 943
944 //menuBar->insertItem( "Configure",configureMenu ); 944 //menuBar->insertItem( "Configure",configureMenu );
945 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 945 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
946 icon = loadPixmap( "korganizer/korganizer" ); 946 icon = loadPixmap( "korganizer/korganizer" );
947 947
948 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 948 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
949 action->addTo( helpMenu ); 949 action->addTo( helpMenu );
950 connect( action, SIGNAL( activated() ), 950 connect( action, SIGNAL( activated() ),
951 SLOT( whatsNew() ) ); 951 SLOT( whatsNew() ) );
952 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 952 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
953 action->addTo( helpMenu ); 953 action->addTo( helpMenu );
954 connect( action, SIGNAL( activated() ), 954 connect( action, SIGNAL( activated() ),
955 SLOT( features() ) ); 955 SLOT( features() ) );
956 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 956 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
957 action->addTo( helpMenu ); 957 action->addTo( helpMenu );
958 connect( action, SIGNAL( activated() ), 958 connect( action, SIGNAL( activated() ),
959 SLOT( keyBindings() ) ); 959 SLOT( keyBindings() ) );
960 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 960 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
961 action->addTo( helpMenu ); 961 action->addTo( helpMenu );
962 connect( action, SIGNAL( activated() ), 962 connect( action, SIGNAL( activated() ),
963 SLOT( synchowto() ) ); 963 SLOT( synchowto() ) );
964 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); 964 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this );
965 action->addTo( helpMenu ); 965 action->addTo( helpMenu );
966 connect( action, SIGNAL( activated() ), 966 connect( action, SIGNAL( activated() ),
967 SLOT( kdesynchowto() ) ); 967 SLOT( kdesynchowto() ) );
968 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this ); 968 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this );
969 action->addTo( helpMenu ); 969 action->addTo( helpMenu );
970 connect( action, SIGNAL( activated() ), 970 connect( action, SIGNAL( activated() ),
971 SLOT( multisynchowto() ) ); 971 SLOT( multisynchowto() ) );
972 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 972 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
973 action->addTo( helpMenu ); 973 action->addTo( helpMenu );
974 connect( action, SIGNAL( activated() ), 974 connect( action, SIGNAL( activated() ),
975 SLOT( aboutAutoSaving() ) ); 975 SLOT( aboutAutoSaving() ) );
976 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 976 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
977 action->addTo( helpMenu ); 977 action->addTo( helpMenu );
978 connect( action, SIGNAL( activated() ), 978 connect( action, SIGNAL( activated() ),
979 SLOT( aboutKnownBugs() ) ); 979 SLOT( aboutKnownBugs() ) );
980 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 980 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
981 action->addTo( helpMenu ); 981 action->addTo( helpMenu );
982 connect( action, SIGNAL( activated() ), 982 connect( action, SIGNAL( activated() ),
983 SLOT( usertrans() ) ); 983 SLOT( usertrans() ) );
984 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 984 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
985 action->addTo( helpMenu ); 985 action->addTo( helpMenu );
986 connect( action, SIGNAL( activated() ), 986 connect( action, SIGNAL( activated() ),
987 SLOT( faq() ) ); 987 SLOT( faq() ) );
988 action = new QAction( "licence", i18n("Licence..."), 0, this ); 988 action = new QAction( "licence", i18n("Licence..."), 0, this );
989 action->addTo( helpMenu ); 989 action->addTo( helpMenu );
990 connect( action, SIGNAL( activated() ), 990 connect( action, SIGNAL( activated() ),
991 SLOT( licence() ) ); 991 SLOT( licence() ) );
992 action = new QAction( "about", i18n("About..."), 0, this ); 992 action = new QAction( "about", i18n("About..."), 0, this );
993 action->addTo( helpMenu ); 993 action->addTo( helpMenu );
994 connect( action, SIGNAL( activated() ), 994 connect( action, SIGNAL( activated() ),
995 SLOT( about() ) ); 995 SLOT( about() ) );
996 //menuBar->insertSeparator(); 996 //menuBar->insertSeparator();
997 997
998 // ****************************************************** 998 // ******************************************************
999 // menubar icons 999 // menubar icons
1000 1000
1001 1001
1002 iconToolBar->setHorizontalStretchable (true ); 1002 iconToolBar->setHorizontalStretchable (true );
1003 //menuBar->insertItem( iconToolBar ); 1003 //menuBar->insertItem( iconToolBar );
1004 //xdays_action 1004 //xdays_action
1005 if (p-> mShowIconNewEvent) 1005 if (p-> mShowIconNewEvent)
1006 ne_action->addTo( iconToolBar ); 1006 ne_action->addTo( iconToolBar );
1007 if (p->mShowIconNewTodo ) 1007 if (p->mShowIconNewTodo )
1008 nt_action->addTo( iconToolBar ); 1008 nt_action->addTo( iconToolBar );
1009 if (p-> mShowIconSearch) 1009 if (p-> mShowIconSearch)
1010 search_action->addTo( iconToolBar ); 1010 search_action->addTo( iconToolBar );
1011 if (p-> mShowIconWhatsThis) 1011 if (p-> mShowIconWhatsThis)
1012 QWhatsThis::whatsThisButton ( iconToolBar ); 1012 QWhatsThis::whatsThisButton ( iconToolBar );
1013 if (p-> mShowIconNext) 1013 if (p-> mShowIconNext)
1014 whatsnext_action->addTo( iconToolBar ); 1014 whatsnext_action->addTo( iconToolBar );
1015 if (p-> mShowIconNextDays) 1015 if (p-> mShowIconNextDays)
1016 xdays_action->addTo( iconToolBar ); 1016 xdays_action->addTo( iconToolBar );
1017 if (p-> mShowIconJournal) 1017 if (p-> mShowIconJournal)
1018 viewjournal_action->addTo( iconToolBar ); 1018 viewjournal_action->addTo( iconToolBar );
1019 if (p-> mShowIconDay1) 1019 if (p-> mShowIconDay1)
1020 day1_action->addTo( iconToolBar ); 1020 day1_action->addTo( iconToolBar );
1021 if (p-> mShowIconDay5) 1021 if (p-> mShowIconDay5)
1022 day5_action->addTo( iconToolBar ); 1022 day5_action->addTo( iconToolBar );
1023 if (p-> mShowIconDay7) 1023 if (p-> mShowIconDay7)
1024 day7_action->addTo( iconToolBar ); 1024 day7_action->addTo( iconToolBar );
1025 if (p-> mShowIconDay6) 1025 if (p-> mShowIconDay6)
1026 day6_action->addTo( iconToolBar ); 1026 day6_action->addTo( iconToolBar );
1027 if (p-> mShowIconMonth) 1027 if (p-> mShowIconMonth)
1028 month_action->addTo( iconToolBar ); 1028 month_action->addTo( iconToolBar );
1029 if (p-> mShowIconList) 1029 if (p-> mShowIconList)
1030 showlist_action->addTo( iconToolBar ); 1030 showlist_action->addTo( iconToolBar );
1031 if (p-> mShowIconTodoview) 1031 if (p-> mShowIconTodoview)
1032 todoview_action->addTo( iconToolBar ); 1032 todoview_action->addTo( iconToolBar );
1033 1033
1034 icon = loadPixmap( pathString + "2leftarrowB" ); 1034 icon = loadPixmap( pathString + "2leftarrowB" );
1035 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200); 1035 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200);
1036 if (p-> mShowIconBackFast) { 1036 if (p-> mShowIconBackFast) {
1037 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 1037 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
1038 connect( action, SIGNAL( activated() ), 1038 connect( action, SIGNAL( activated() ),
1039 mView, SLOT( goPreviousMonth() ) ); 1039 mView, SLOT( goPreviousMonth() ) );
1040 action->addTo( iconToolBar ); 1040 action->addTo( iconToolBar );
1041 } 1041 }
1042 icon = loadPixmap( pathString + "1leftarrowB" ); 1042 icon = loadPixmap( pathString + "1leftarrowB" );
1043 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210); 1043 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210);
1044 if (p-> mShowIconBack) { 1044 if (p-> mShowIconBack) {
1045 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 1045 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
1046 connect( action, SIGNAL( activated() ), 1046 connect( action, SIGNAL( activated() ),
1047 mView, SLOT( goPrevious() ) ); 1047 mView, SLOT( goPrevious() ) );
1048 action->addTo( iconToolBar ); 1048 action->addTo( iconToolBar );
1049 } 1049 }
1050 icon = loadPixmap( pathString + "today" ); 1050 icon = loadPixmap( pathString + "today" );
1051 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 1051 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
1052 if (p-> mShowIconToday) 1052 if (p-> mShowIconToday)
1053 today_action->addTo( iconToolBar ); 1053 today_action->addTo( iconToolBar );
1054 icon = loadPixmap( pathString + "1rightarrowB" ); 1054 icon = loadPixmap( pathString + "1rightarrowB" );
1055 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 1055 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
1056 if (p-> mShowIconForward) { 1056 if (p-> mShowIconForward) {
1057 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 1057 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
1058 connect( action, SIGNAL( activated() ), 1058 connect( action, SIGNAL( activated() ),
1059 mView, SLOT( goNext() ) ); 1059 mView, SLOT( goNext() ) );
1060 action->addTo( iconToolBar ); 1060 action->addTo( iconToolBar );
1061 } 1061 }
1062 icon = loadPixmap( pathString + "2rightarrowB" ); 1062 icon = loadPixmap( pathString + "2rightarrowB" );
1063 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 1063 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
1064 if (p-> mShowIconForwardFast) { 1064 if (p-> mShowIconForwardFast) {
1065 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 1065 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
1066 connect( action, SIGNAL( activated() ), 1066 connect( action, SIGNAL( activated() ),
1067 mView, SLOT( goNextMonth() ) ); 1067 mView, SLOT( goNextMonth() ) );
1068 action->addTo( iconToolBar ); 1068 action->addTo( iconToolBar );
1069 } 1069 }
1070 1070
1071 1071
1072 configureToolBarMenu->insertItem(i18n("What's This?"), 300, 6); 1072 configureToolBarMenu->insertItem(i18n("What's This?"), 300, 6);
1073 1073
1074 if (p-> mShowIconNewEvent) 1074 if (p-> mShowIconNewEvent)
1075 configureToolBarMenu->setItemChecked( 10, true ); 1075 configureToolBarMenu->setItemChecked( 10, true );
1076 if (p->mShowIconNewTodo ) 1076 if (p->mShowIconNewTodo )
1077 configureToolBarMenu->setItemChecked( 20, true ); 1077 configureToolBarMenu->setItemChecked( 20, true );
1078 if (p-> mShowIconSearch) 1078 if (p-> mShowIconSearch)
1079 configureToolBarMenu->setItemChecked( 120, true ); 1079 configureToolBarMenu->setItemChecked( 120, true );
1080 if (p-> mShowIconList) 1080 if (p-> mShowIconList)
1081 configureToolBarMenu->setItemChecked( 30, true ); 1081 configureToolBarMenu->setItemChecked( 30, true );
1082 if (p-> mShowIconDay1) 1082 if (p-> mShowIconDay1)
1083 configureToolBarMenu->setItemChecked( 40, true ); 1083 configureToolBarMenu->setItemChecked( 40, true );
1084 if (p-> mShowIconDay5) 1084 if (p-> mShowIconDay5)
1085 configureToolBarMenu->setItemChecked( 50, true ); 1085 configureToolBarMenu->setItemChecked( 50, true );
1086 if (p-> mShowIconDay6) 1086 if (p-> mShowIconDay6)
1087 configureToolBarMenu->setItemChecked( 75, true ); 1087 configureToolBarMenu->setItemChecked( 75, true );
1088 if (p-> mShowIconDay7) 1088 if (p-> mShowIconDay7)
1089 configureToolBarMenu->setItemChecked( 60, true ); 1089 configureToolBarMenu->setItemChecked( 60, true );
1090 if (p-> mShowIconMonth) 1090 if (p-> mShowIconMonth)
1091 configureToolBarMenu->setItemChecked( 70, true ); 1091 configureToolBarMenu->setItemChecked( 70, true );
1092 if (p-> mShowIconTodoview) 1092 if (p-> mShowIconTodoview)
1093 configureToolBarMenu->setItemChecked( 80, true ); 1093 configureToolBarMenu->setItemChecked( 80, true );
1094 if (p-> mShowIconBackFast) 1094 if (p-> mShowIconBackFast)
1095 configureToolBarMenu->setItemChecked( 200, true ); 1095 configureToolBarMenu->setItemChecked( 200, true );
1096 if (p-> mShowIconBack) 1096 if (p-> mShowIconBack)
1097 configureToolBarMenu->setItemChecked( 210, true ); 1097 configureToolBarMenu->setItemChecked( 210, true );
1098 if (p-> mShowIconToday) 1098 if (p-> mShowIconToday)
1099 configureToolBarMenu->setItemChecked( 130, true ); 1099 configureToolBarMenu->setItemChecked( 130, true );
1100 if (p-> mShowIconForward) 1100 if (p-> mShowIconForward)
1101 configureToolBarMenu->setItemChecked( 220, true ); 1101 configureToolBarMenu->setItemChecked( 220, true );
1102 if (p-> mShowIconForwardFast) 1102 if (p-> mShowIconForwardFast)
1103 configureToolBarMenu->setItemChecked( 230, true ); 1103 configureToolBarMenu->setItemChecked( 230, true );
1104 if (p-> mShowIconNextDays) 1104 if (p-> mShowIconNextDays)
1105 configureToolBarMenu->setItemChecked( 100, true ); 1105 configureToolBarMenu->setItemChecked( 100, true );
1106 if (p-> mShowIconNext) 1106 if (p-> mShowIconNext)
1107 configureToolBarMenu->setItemChecked( 110, true ); 1107 configureToolBarMenu->setItemChecked( 110, true );
1108 if (p-> mShowIconJournal) 1108 if (p-> mShowIconJournal)
1109 configureToolBarMenu->setItemChecked( 90, true ); 1109 configureToolBarMenu->setItemChecked( 90, true );
1110 if (p-> mShowIconWhatsThis) 1110 if (p-> mShowIconWhatsThis)
1111 configureToolBarMenu->setItemChecked( 300, true ); 1111 configureToolBarMenu->setItemChecked( 300, true );
1112 if (p-> mShowIconWeekNum) 1112 if (p-> mShowIconWeekNum)
1113 configureToolBarMenu->setItemChecked( 400, true ); 1113 configureToolBarMenu->setItemChecked( 400, true );
1114 QLabel* dummy = new QLabel( iconToolBar ); 1114 QLabel* dummy = new QLabel( iconToolBar );
1115 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 1115 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
1116 if (!p-> mShowIconStretch) 1116 if (!p-> mShowIconStretch)
1117 iconToolBar->setStretchableWidget ( dummy ) ; 1117 iconToolBar->setStretchableWidget ( dummy ) ;
1118 else 1118 else
1119 configureToolBarMenu->setItemChecked( 5, true ); 1119 configureToolBarMenu->setItemChecked( 5, true );
1120 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 1120 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
1121 configureAgenda( p->mHourSize ); 1121 configureAgenda( p->mHourSize );
1122 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 1122 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
1123} 1123}
1124 1124
1125void MainWindow::exportToPhone( int mode ) 1125void MainWindow::exportToPhone( int mode )
1126{ 1126{
1127 1127
1128 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1128 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1129 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1129 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1130 KOex2phonePrefs ex2phone; 1130 KOex2phonePrefs ex2phone;
1131 1131
1132 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 1132 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
1133 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 1133 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
1134 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1134 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
1135 if ( mode == 1 ) 1135 if ( mode == 1 )
1136 ex2phone.setCaption(i18n("Export complete calendar")); 1136 ex2phone.setCaption(i18n("Export complete calendar"));
1137 if ( mode == 2 ) 1137 if ( mode == 2 )
1138 ex2phone.setCaption(i18n("Export filtered calendar")); 1138 ex2phone.setCaption(i18n("Export filtered calendar"));
1139 1139
1140 if ( !ex2phone.exec() ) { 1140 if ( !ex2phone.exec() ) {
1141 return; 1141 return;
1142 } 1142 }
1143 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 1143 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1144 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 1144 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1145 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 1145 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1146 1146
1147 int inFuture = 0; 1147 int inFuture = 0;
1148 if ( ex2phone.mWriteBackFuture->isChecked() ) 1148 if ( ex2phone.mWriteBackFuture->isChecked() )
1149 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 1149 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1150 QPtrList<Incidence> delSel; 1150 QPtrList<Incidence> delSel;
1151 if ( mode == 1 ) 1151 if ( mode == 1 )
1152 delSel = mCalendar->rawIncidences(); 1152 delSel = mCalendar->rawIncidences();
1153 if ( mode == 2 ) 1153 if ( mode == 2 )
1154 delSel = mCalendar->incidences(); 1154 delSel = mCalendar->incidences();
1155 CalendarLocal* cal = new CalendarLocal(); 1155 CalendarLocal* cal = new CalendarLocal();
1156 cal->setLocalTime(); 1156 cal->setLocalTime();
1157 Incidence *incidence = delSel.first(); 1157 Incidence *incidence = delSel.first();
1158 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1158 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1159 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 1159 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1160 while ( incidence ) { 1160 while ( incidence ) {
1161 if ( incidence->type() != "Journal" ) { 1161 if ( incidence->type() != "Journal" ) {
1162 bool add = true; 1162 bool add = true;
1163 if ( inFuture ) { 1163 if ( inFuture ) {
1164 QDateTime dt; 1164 QDateTime dt;
1165 if ( incidence->type() == "Todo" ) { 1165 if ( incidence->type() == "Todo" ) {
1166 Todo * t = (Todo*)incidence; 1166 Todo * t = (Todo*)incidence;
1167 if ( t->hasDueDate() ) 1167 if ( t->hasDueDate() )
1168 dt = t->dtDue(); 1168 dt = t->dtDue();
1169 else 1169 else
1170 dt = cur.addSecs( 62 ); 1170 dt = cur.addSecs( 62 );
1171 } 1171 }
1172 else { 1172 else {
1173 bool ok; 1173 bool ok;
1174 dt = incidence->getNextOccurence( cur, &ok ); 1174 dt = incidence->getNextOccurence( cur, &ok );
1175 if ( !ok ) 1175 if ( !ok )
1176 dt = cur.addSecs( -62 ); 1176 dt = cur.addSecs( -62 );
1177 } 1177 }
1178 if ( dt < cur || dt > end ) { 1178 if ( dt < cur || dt > end ) {
1179 add = false; 1179 add = false;
1180 } 1180 }
1181 } 1181 }
1182 if ( add ) { 1182 if ( add ) {
1183 Incidence *in = incidence->clone(); 1183 Incidence *in = incidence->clone();
1184 cal->addIncidence( in ); 1184 cal->addIncidence( in );
1185 } 1185 }
1186 } 1186 }
1187 incidence = delSel.next(); 1187 incidence = delSel.next();
1188 } 1188 }
1189 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1189 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1190 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1190 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1191 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1191 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1192 1192
1193 setCaption( i18n("Writing to phone...")); 1193 setCaption( i18n("Writing to phone..."));
1194 if ( PhoneFormat::writeToPhone( cal ) ) 1194 if ( PhoneFormat::writeToPhone( cal ) )
1195 setCaption( i18n("Export to phone successful!")); 1195 setCaption( i18n("Export to phone successful!"));
1196 else 1196 else
1197 setCaption( i18n("Error exporting to phone!")); 1197 setCaption( i18n("Error exporting to phone!"));
1198 delete cal; 1198 delete cal;
1199} 1199}
1200 1200
1201 1201
1202void MainWindow::setDefaultPreferences() 1202void MainWindow::setDefaultPreferences()
1203{ 1203{
1204 KOPrefs *p = KOPrefs::instance(); 1204 KOPrefs *p = KOPrefs::instance();
1205 1205
1206 p->mCompactDialogs = true; 1206 p->mCompactDialogs = true;
1207 p->mConfirm = true; 1207 p->mConfirm = true;
1208 // p->mEnableQuickTodo = false; 1208 // p->mEnableQuickTodo = false;
1209 1209
1210} 1210}
1211 1211
1212QString MainWindow::resourcePath() 1212QString MainWindow::resourcePath()
1213{ 1213{
1214 return KGlobal::iconLoader()->iconPath(); 1214 return KGlobal::iconLoader()->iconPath();
1215} 1215}
1216 1216
1217void MainWindow::displayText( QString text ,QString cap ) 1217void MainWindow::displayText( QString text ,QString cap )
1218{ 1218{
1219 QDialog dia( this, "name", true ); ; 1219 QDialog dia( this, "name", true ); ;
1220 dia.setCaption( cap ); 1220 dia.setCaption( cap );
1221 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1221 QVBoxLayout* lay = new QVBoxLayout( &dia );
1222 lay->setSpacing( 3 ); 1222 lay->setSpacing( 3 );
1223 lay->setMargin( 3 ); 1223 lay->setMargin( 3 );
1224 QTextBrowser tb ( &dia ); 1224 QTextBrowser tb ( &dia );
1225 lay->addWidget( &tb ); 1225 lay->addWidget( &tb );
1226 tb.setText( text ); 1226 tb.setText( text );
1227#ifdef DESKTOP_VERSION 1227#ifdef DESKTOP_VERSION
1228 dia.resize( 640, 480); 1228 dia.resize( 640, 480);
1229#else 1229#else
1230 dia.showMaximized(); 1230 dia.showMaximized();
1231#endif 1231#endif
1232 dia.exec(); 1232 dia.exec();
1233} 1233}
1234 1234
1235void MainWindow::features() 1235void MainWindow::features()
1236{ 1236{
1237 1237
1238 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1238 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1239} 1239}
1240 1240
1241void MainWindow::usertrans() 1241void MainWindow::usertrans()
1242{ 1242{
1243 1243
1244 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1244 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1245} 1245}
1246 1246
1247void MainWindow::kdesynchowto() 1247void MainWindow::kdesynchowto()
1248{ 1248{
1249 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1249 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1250} 1250}
1251void MainWindow::multisynchowto() 1251void MainWindow::multisynchowto()
1252{ 1252{
1253 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1253 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1254} 1254}
1255void MainWindow::synchowto() 1255void MainWindow::synchowto()
1256{ 1256{
1257 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1257 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1258} 1258}
1259void MainWindow::faq() 1259void MainWindow::faq()
1260{ 1260{
1261 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1261 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1262 1262
1263} 1263}
1264void MainWindow::whatsNew() 1264void MainWindow::whatsNew()
1265{ 1265{
1266 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1266 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1267 1267
1268} 1268}
1269void MainWindow::licence() 1269void MainWindow::licence()
1270{ 1270{
1271 KApplication::showLicence(); 1271 KApplication::showLicence();
1272 1272
1273} 1273}
1274void MainWindow::about() 1274void MainWindow::about()
1275{ 1275{
1276 QString version; 1276 QString version;
1277#include <../version> 1277#include <../version>
1278 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1278 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1279 i18n("KOrganizer/Platform-independent\n") + 1279 i18n("KOrganizer/Platform-independent\n") +
1280 "(KO/Pi) " + version + " - " + 1280 "(KO/Pi) " + version + " - " +
1281 1281
1282#ifdef DESKTOP_VERSION 1282#ifdef DESKTOP_VERSION
1283 i18n("Desktop Edition\n") + 1283 i18n("Desktop Edition\n") +
1284#else 1284#else
1285 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") + 1285 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") +
1286#endif 1286#endif
1287 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") ); 1287 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") );
1288} 1288}
1289void MainWindow::keyBindings() 1289void MainWindow::keyBindings()
1290{ 1290{
1291 QString cap = i18n("KO/Pi Keys + Colors"); 1291 QString cap = i18n("KO/Pi Keys + Colors");
1292 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1292 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1293 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1293 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1294 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1294 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1295 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1295 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1296 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ 1296 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+
1297 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1297 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1298 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1298 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1299 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ 1299 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+
1300 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1300 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1301 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1301 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1302 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1302 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1303 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ 1303 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+
1304 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1304 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1305 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1305 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1306 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ 1306 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+
1307 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1307 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1308 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1308 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1309 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1309 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1310 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1310 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1311 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1311 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1312 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1312 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1313 i18n("<p><h3>In agenda view:</h3></p>\n") + 1313 i18n("<p><h3>In agenda view:</h3></p>\n") +
1314 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1314 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1315 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1315 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1316 i18n("<p><h3>In todo view:</h3></p>\n") + 1316 i18n("<p><h3>In todo view:</h3></p>\n") +
1317 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1317 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1318 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1318 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1319 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1319 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1320 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1320 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1321 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1321 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1322 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1322 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1323 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1323 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1324 i18n("<p><h3>In list view:</h3></p>\n") + 1324 i18n("<p><h3>In list view:</h3></p>\n") +
1325 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1325 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1326 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1326 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1327 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1327 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1328 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1328 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1329 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1329 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1330 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1330 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1331 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1331 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1332 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1332 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1333 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1333 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1334 i18n("<p><b>E</b>: Edit item</p>\n") + 1334 i18n("<p><b>E</b>: Edit item</p>\n") +
1335 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1335 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1336 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1336 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1337 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1337 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1338 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1338 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1339 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1339 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1340 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1340 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1341 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1341 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1342 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1342 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1343 i18n("<p><b>White</b>: Item readonly</p>\n"); 1343 i18n("<p><b>White</b>: Item readonly</p>\n");
1344 displayText( text, cap); 1344 displayText( text, cap);
1345} 1345}
1346void MainWindow::aboutAutoSaving() 1346void MainWindow::aboutAutoSaving()
1347{ 1347{
1348 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); 1348 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n");
1349 1349
1350 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); 1350 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text);
1351 1351
1352} 1352}
1353void MainWindow::aboutKnownBugs() 1353void MainWindow::aboutKnownBugs()
1354{ 1354{
1355 QMessageBox* msg; 1355 QMessageBox* msg;
1356 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1356 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1357 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ 1357 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+
1358 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1358 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1359 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + 1359 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") +
1360 i18n("\nor report them in the bugtracker on\n") + 1360 i18n("\nor report them in the bugtracker on\n") +
1361 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1361 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1362 QMessageBox::NoIcon, 1362 QMessageBox::NoIcon,
1363 QMessageBox::Ok, 1363 QMessageBox::Ok,
1364 QMessageBox::NoButton, 1364 QMessageBox::NoButton,
1365 QMessageBox::NoButton); 1365 QMessageBox::NoButton);
1366 msg->exec(); 1366 msg->exec();
1367 delete msg; 1367 delete msg;
1368 1368
1369} 1369}
1370 1370
1371QString MainWindow::defaultFileName() 1371QString MainWindow::defaultFileName()
1372{ 1372{
1373 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1373 return locateLocal( "data", "korganizer/mycalendar.ics" );
1374} 1374}
1375QString MainWindow::syncFileName() 1375QString MainWindow::syncFileName()
1376{ 1376{
1377#ifdef DESKTOP_VERSION 1377#ifdef DESKTOP_VERSION
1378 return locateLocal( "tmp", "synccalendar.ics" ); 1378 return locateLocal( "tmp", "synccalendar.ics" );
1379#else 1379#else
1380 return QString( "/tmp/synccalendar.ics" ); 1380 return QString( "/tmp/synccalendar.ics" );
1381#endif 1381#endif
1382} 1382}
1383void MainWindow::updateWeek(QDate seda) 1383void MainWindow::updateWeek(QDate seda)
1384{ 1384{
1385 int weekNum = 0; 1385 int weekNum = 0;
1386 QDate d = QDate ( seda.year(), 1,1); 1386 QDate d = QDate ( seda.year(), 1,1);
1387 seda = seda.addDays( 1-seda.dayOfWeek() );//we are on monday 1387 seda = seda.addDays( 1-seda.dayOfWeek() );//we are on monday
1388 if ( seda.addDays(6).year() != seda.year() ) { 1388 if ( seda.addDays(6).year() != seda.year() ) {
1389 if ( seda.year() != d.year() ) { 1389 if ( seda.year() != d.year() ) {
1390 if ( d.dayOfWeek() > 4 ) 1390 if ( d.dayOfWeek() > 4 )
1391 d = QDate ( seda.year(), 1,1); 1391 d = QDate ( seda.year(), 1,1);
1392 else 1392 else
1393 weekNum = 1; 1393 weekNum = 1;
1394 } else { 1394 } else {
1395 QDate dd( seda.year()+1, 1,1); 1395 QDate dd( seda.year()+1, 1,1);
1396 if ( dd.dayOfWeek() <= 4 ) 1396 if ( dd.dayOfWeek() <= 4 )
1397 weekNum = 1; 1397 weekNum = 1;
1398 } 1398 }
1399 } 1399 }
1400 if ( weekNum == 0 ){ 1400 if ( weekNum == 0 ){
1401 int dow = d.dayOfWeek(); 1401 int dow = d.dayOfWeek();
1402 if ( dow <= 4 ) 1402 if ( dow <= 4 )
1403 d = d.addDays( 1-dow ); 1403 d = d.addDays( 1-dow );
1404 else // 5,6,7 1404 else // 5,6,7
1405 d = d.addDays( 8-dow ); 1405 d = d.addDays( 8-dow );
1406 // we have the first week of the year.we are on monday 1406 // we have the first week of the year.we are on monday
1407 weekNum = d.daysTo( seda ) / 7 +1; 1407 weekNum = d.daysTo( seda ) / 7 +1;
1408 } 1408 }
1409 1409
1410 mWeekPixmap.fill( mWeekBgColor ); 1410 mWeekPixmap.fill( mWeekBgColor );
1411 QPainter p ( &mWeekPixmap ); 1411 QPainter p ( &mWeekPixmap );
1412 p.setFont( mWeekFont ); 1412 p.setFont( mWeekFont );
1413 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); 1413 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) );
1414 p.end(); 1414 p.end();
1415 QIconSet icon3 ( mWeekPixmap ); 1415 QIconSet icon3 ( mWeekPixmap );
1416 mWeekAction->setIconSet ( icon3 ); 1416 mWeekAction->setIconSet ( icon3 );
1417 1417
1418} 1418}
1419void MainWindow::updateWeekNum(const DateList &selectedDates) 1419void MainWindow::updateWeekNum(const DateList &selectedDates)
1420{ 1420{
1421 updateWeek( selectedDates.first() ); 1421 updateWeek( selectedDates.first() );
1422} 1422}
1423void MainWindow::processIncidenceSelection( Incidence *incidence ) 1423void MainWindow::processIncidenceSelection( Incidence *incidence )
1424{ 1424{
1425 1425
1426 if ( !incidence ) { 1426 if ( !incidence ) {
1427 enableIncidenceActions( false ); 1427 enableIncidenceActions( false );
1428 1428
1429 mNewSubTodoAction->setEnabled( false ); 1429 mNewSubTodoAction->setEnabled( false );
1430 setCaptionToDates(); 1430 setCaptionToDates();
1431 return; 1431 return;
1432 1432
1433 } 1433 }
1434 1434
1435 //KGlobal::locale()->formatDateTime(nextA, true); 1435 //KGlobal::locale()->formatDateTime(nextA, true);
1436 QString startString = ""; 1436 QString startString = "";
1437 if ( incidence->type() != "Todo" ) { 1437 if ( incidence->type() != "Todo" ) {
1438 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1438 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1439 if ( incidence->doesFloat() ) { 1439 if ( incidence->doesFloat() ) {
1440 startString += ": "+incidence->dtStartDateStr( true ); 1440 startString += ": "+incidence->dtStartDateStr( true );
1441 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1441 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1442 1442
1443 } else { 1443 } else {
1444 startString = ": "+incidence->dtStartStr(true); 1444 startString = ": "+incidence->dtStartStr(true);
1445 startString += " --- "+((Event*)incidence)->dtEndStr(true); 1445 startString += " --- "+((Event*)incidence)->dtEndStr(true);
1446 1446
1447 } 1447 }
1448 1448
1449 } else { 1449 } else {
1450 if ( incidence->dtStart().time() != incidence->dtEnd().time() ) 1450 if ( incidence->dtStart().time() != incidence->dtEnd().time() )
1451 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ 1451 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+
1452 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); 1452 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time());
1453 if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) { 1453 if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) {
1454 bool ok; 1454 bool ok;
1455 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); 1455 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok );
1456 if ( ok ) { 1456 if ( ok ) {
1457 int years = noc.date().year() - incidence->dtStart().date().year(); 1457 int years = noc.date().year() - incidence->dtStart().date().year();
1458 startString += i18n(" (%1 y.)"). arg( years ); 1458 startString += i18n(" (%1 y.)"). arg( years );
1459 } 1459 }
1460 } 1460 }
1461 else 1461 else
1462 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); 1462 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true);
1463 } 1463 }
1464 1464
1465 } 1465 }
1466 else 1466 else
1467 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); 1467 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed");
1468 if ( !incidence->location().isEmpty() ) 1468 if ( !incidence->location().isEmpty() )
1469 startString += " (" +incidence->location()+")"; 1469 startString += " (" +incidence->location()+")";
1470 setCaption( incidence->summary()+startString); 1470 setCaption( incidence->summary()+startString);
1471 1471
1472 enableIncidenceActions( true ); 1472 enableIncidenceActions( true );
1473 1473
1474 if ( incidence->type() == "Event" ) { 1474 if ( incidence->type() == "Event" ) {
1475 mShowAction->setText( i18n("Show Event...") ); 1475 mShowAction->setText( i18n("Show Event...") );
1476 mEditAction->setText( i18n("Edit Event...") ); 1476 mEditAction->setText( i18n("Edit Event...") );
1477 mDeleteAction->setText( i18n("Delete Event...") ); 1477 mDeleteAction->setText( i18n("Delete Event...") );
1478 1478
1479 mNewSubTodoAction->setEnabled( false ); 1479 mNewSubTodoAction->setEnabled( false );
1480 } else if ( incidence->type() == "Todo" ) { 1480 } else if ( incidence->type() == "Todo" ) {
1481 mShowAction->setText( i18n("Show Todo...") ); 1481 mShowAction->setText( i18n("Show Todo...") );
1482 mEditAction->setText( i18n("Edit Todo...") ); 1482 mEditAction->setText( i18n("Edit Todo...") );
1483 mDeleteAction->setText( i18n("Delete Todo...") ); 1483 mDeleteAction->setText( i18n("Delete Todo...") );
1484 1484
1485 mNewSubTodoAction->setEnabled( true ); 1485 mNewSubTodoAction->setEnabled( true );
1486 } else { 1486 } else {
1487 mShowAction->setText( i18n("Show...") ); 1487 mShowAction->setText( i18n("Show...") );
1488 mShowAction->setText( i18n("Edit...") ); 1488 mShowAction->setText( i18n("Edit...") );
1489 mShowAction->setText( i18n("Delete...") ); 1489 mShowAction->setText( i18n("Delete...") );
1490 1490
1491 mNewSubTodoAction->setEnabled( false ); 1491 mNewSubTodoAction->setEnabled( false );
1492 } 1492 }
1493} 1493}
1494 1494
1495void MainWindow::enableIncidenceActions( bool enabled ) 1495void MainWindow::enableIncidenceActions( bool enabled )
1496{ 1496{
1497 mShowAction->setEnabled( enabled ); 1497 mShowAction->setEnabled( enabled );
1498 mEditAction->setEnabled( enabled ); 1498 mEditAction->setEnabled( enabled );
1499 mDeleteAction->setEnabled( enabled ); 1499 mDeleteAction->setEnabled( enabled );
1500 1500
1501 mCloneAction->setEnabled( enabled ); 1501 mCloneAction->setEnabled( enabled );
1502 mMoveAction->setEnabled( enabled ); 1502 mMoveAction->setEnabled( enabled );
1503 mBeamAction->setEnabled( enabled ); 1503 mBeamAction->setEnabled( enabled );
1504 mCancelAction->setEnabled( enabled ); 1504 mCancelAction->setEnabled( enabled );
1505} 1505}
1506 1506
1507void MainWindow::importOL() 1507void MainWindow::importOL()
1508{ 1508{
1509#ifdef _OL_IMPORT_ 1509#ifdef _OL_IMPORT_
1510 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1510 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1511 id->exec(); 1511 id->exec();
1512 delete id; 1512 delete id;
1513 mView->updateView(); 1513 mView->updateView();
1514#endif 1514#endif
1515} 1515}
1516void MainWindow::importBday() 1516void MainWindow::importBday()
1517{ 1517{
1518 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1518 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1519 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1519 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1520 i18n("Import!"), i18n("Cancel"), 0, 1520 i18n("Import!"), i18n("Cancel"), 0,
1521 0, 1 ); 1521 0, 1 );
1522 if ( result == 0 ) { 1522 if ( result == 0 ) {
1523 mView->importBday(); 1523 mView->importBday();
1524 1524
1525 } 1525 }
1526 1526
1527 1527
1528} 1528}
1529void MainWindow::importQtopia() 1529void MainWindow::importQtopia()
1530{ 1530{
1531 //#ifndef DESKTOP_VERSION 1531 //#ifndef DESKTOP_VERSION
1532 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"); 1532 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");
1533#ifdef DESKTOP_VERSION 1533#ifdef DESKTOP_VERSION
1534 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"); 1534 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");
1535#endif 1535#endif
1536 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, 1536 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess,
1537 i18n("Import!"), i18n("Cancel"), 0, 1537 i18n("Import!"), i18n("Cancel"), 0,
1538 0, 1 ); 1538 0, 1 );
1539 if ( result == 0 ) { 1539 if ( result == 0 ) {
1540#ifndef DESKTOP_VERSION 1540#ifndef DESKTOP_VERSION
1541 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1541 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1542 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1542 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1543 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1543 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1544#else 1544#else
1545 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; 1545 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml";
1546 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; 1546 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml";
1547 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; 1547 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml";
1548#endif 1548#endif
1549 mView->importQtopia( categories, datebook, todolist ); 1549 mView->importQtopia( categories, datebook, todolist );
1550 } 1550 }
1551#if 0 1551#if 0
1552 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1552 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1553 i18n("Not supported \non desktop!\n"), 1553 i18n("Not supported \non desktop!\n"),
1554 i18n("Ok"), i18n("Cancel"), 0, 1554 i18n("Ok"), i18n("Cancel"), 0,
1555 0, 1 ); 1555 0, 1 );
1556 1556
1557#endif 1557#endif
1558} 1558}
1559 1559
1560void MainWindow::saveOnClose() 1560void MainWindow::saveOnClose()
1561{ 1561{
1562 KOPrefs *p = KOPrefs::instance(); 1562 KOPrefs *p = KOPrefs::instance();
1563 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1563 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1564 p->mToolBarUp = iconToolBar->x() > width()/2 || 1564 p->mToolBarUp = iconToolBar->x() > width()/2 ||
1565 iconToolBar->y() > height()/2; 1565 iconToolBar->y() > height()/2;
1566 mView->writeSettings(); 1566 mView->writeSettings();
1567 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) 1567 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName()))
1568 save(); 1568 save();
1569} 1569}
1570void MainWindow::slotModifiedChanged( bool changed ) 1570void MainWindow::slotModifiedChanged( bool changed )
1571{ 1571{
1572 if ( mBlockAtStartup ) 1572 if ( mBlockAtStartup )
1573 return; 1573 return;
1574 1574
1575 int msec; 1575 int msec;
1576 // we store the changes after 1 minute, 1576 // we store the changes after 1 minute,
1577 // and for safety reasons after 10 minutes again 1577 // and for safety reasons after 10 minutes again
1578 if ( !mSyncManager->blockSave() ) 1578 if ( !mSyncManager->blockSave() )
1579 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1579 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1580 else 1580 else
1581 msec = 1000 * 600; 1581 msec = 1000 * 600;
1582 mSaveTimer.start( msec, true ); // 1 minute 1582 mSaveTimer.start( msec, true ); // 1 minute
1583 qDebug("KO: Saving File in %d secs!", msec/1000); 1583 qDebug("KO: Saving File in %d secs!", msec/1000);
1584 mCalendarModifiedFlag = true; 1584 mCalendarModifiedFlag = true;
1585} 1585}
1586void MainWindow::saveStopTimer() 1586void MainWindow::saveStopTimer()
1587{ 1587{
1588 mSaveTimer.stop(); 1588 mSaveTimer.stop();
1589 if (mSaveTimer.isActive() ) 1589 if (mSaveTimer.isActive() )
1590 qDebug("ti active "); 1590 qDebug("ti active ");
1591 else 1591 else
1592 qDebug("KO: Save timer stopped"); 1592 qDebug("KO: Save timer stopped");
1593} 1593}
1594void MainWindow::save() 1594void MainWindow::save()
1595{ 1595{
1596 if ( !mCalendarModifiedFlag ) { 1596 if ( !mCalendarModifiedFlag ) {
1597 qDebug("KO: Calendar not modified. Nothing saved."); 1597 qDebug("KO: Calendar not modified. Nothing saved.");
1598 return; 1598 return;
1599 } 1599 }
1600 if ( mSyncManager->blockSave() ) 1600 if ( mSyncManager->blockSave() )
1601 return; 1601 return;
1602 mSyncManager->setBlockSave(true); 1602 mSyncManager->setBlockSave(true);
1603 if ( mView->checkFileVersion( defaultFileName()) ) { 1603 if ( mView->checkFileVersion( defaultFileName()) ) {
1604 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1604 QTime neededSaveTime = QDateTime::currentDateTime().time();
1605 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1605 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1606 qDebug("KO: Start saving data to file!"); 1606 qDebug("KO: Start saving data to file!");
1607 mView->saveCalendar( defaultFileName() ); 1607 mView->saveCalendar( defaultFileName() );
1608 mCalendarModifiedFlag = false; 1608 mCalendarModifiedFlag = false;
1609 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1609 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1610 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1610 qDebug("KO: Needed %d ms for saving.",msNeeded );
1611 QString savemes; 1611 QString savemes;
1612 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1612 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1613 setCaption(savemes); 1613 setCaption(savemes);
1614 } else 1614 } else
1615 setCaption(i18n("Saving cancelled!")); 1615 setCaption(i18n("Saving cancelled!"));
1616 mSyncManager->setBlockSave( false ); 1616 mSyncManager->setBlockSave( false );
1617} 1617}
1618 1618
1619void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1619void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1620{ 1620{
1621 if ( !e->isAutoRepeat() ) { 1621 if ( !e->isAutoRepeat() ) {
1622 mFlagKeyPressed = false; 1622 mFlagKeyPressed = false;
1623 } 1623 }
1624} 1624}
1625void MainWindow::keyPressEvent ( QKeyEvent * e ) 1625void MainWindow::keyPressEvent ( QKeyEvent * e )
1626{ 1626{
1627 qApp->processEvents(); 1627 qApp->processEvents();
1628 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1628 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1629 e->ignore(); 1629 e->ignore();
1630 // qDebug(" ignore %d",e->isAutoRepeat() ); 1630 // qDebug(" ignore %d",e->isAutoRepeat() );
1631 return; 1631 return;
1632 } 1632 }
1633 if (! e->isAutoRepeat() ) 1633 if (! e->isAutoRepeat() )
1634 mFlagKeyPressed = true; 1634 mFlagKeyPressed = true;
1635 KOPrefs *p = KOPrefs::instance(); 1635 KOPrefs *p = KOPrefs::instance();
1636 bool showSelectedDates = false; 1636 bool showSelectedDates = false;
1637 int size; 1637 int size;
1638 int pro = 0; 1638 int pro = 0;
1639 //qDebug("MainWindow::keyPressEvent "); 1639 //qDebug("MainWindow::keyPressEvent ");
1640 switch ( e->key() ) { 1640 switch ( e->key() ) {
1641 case Qt::Key_Right: 1641 case Qt::Key_Right:
1642 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1642 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1643 mView->goNextMonth(); 1643 mView->goNextMonth();
1644 else 1644 else
1645 mView->goNext(); 1645 mView->goNext();
1646 showSelectedDates = true; 1646 showSelectedDates = true;
1647 break; 1647 break;
1648 case Qt::Key_Left: 1648 case Qt::Key_Left:
1649 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1649 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1650 mView->goPreviousMonth(); 1650 mView->goPreviousMonth();
1651 else 1651 else
1652 mView->goPrevious(); 1652 mView->goPrevious();
1653 showSelectedDates = true; 1653 showSelectedDates = true;
1654 break; 1654 break;
1655 case Qt::Key_Down: 1655 case Qt::Key_Down:
1656 mView->viewManager()->agendaView()->scrollOneHourDown(); 1656 mView->viewManager()->agendaView()->scrollOneHourDown();
1657 break; 1657 break;
1658 case Qt::Key_Up: 1658 case Qt::Key_Up:
1659 mView->viewManager()->agendaView()->scrollOneHourUp(); 1659 mView->viewManager()->agendaView()->scrollOneHourUp();
1660 break; 1660 break;
1661 case Qt::Key_K: 1661 case Qt::Key_K:
1662 mView->viewManager()->showMonthViewWeek(); 1662 mView->viewManager()->showMonthViewWeek();
1663 break; 1663 break;
1664 case Qt::Key_I: 1664 case Qt::Key_I:
1665 mView->showIncidence(); 1665 mView->showIncidence();
1666 break; 1666 break;
1667 case Qt::Key_Delete: 1667 case Qt::Key_Delete:
1668 case Qt::Key_Backspace: 1668 case Qt::Key_Backspace:
1669 mView->deleteIncidence(); 1669 mView->deleteIncidence();
1670 break; 1670 break;
1671 case Qt::Key_D: 1671 case Qt::Key_D:
1672 mView->viewManager()->showDayView(); 1672 mView->viewManager()->showDayView();
1673 showSelectedDates = true; 1673 showSelectedDates = true;
1674 break; 1674 break;
1675 case Qt::Key_O: 1675 case Qt::Key_O:
1676 mView->toggleFilerEnabled( ); 1676 mView->toggleFilerEnabled( );
1677 break; 1677 break;
1678 case Qt::Key_0: 1678 case Qt::Key_0:
1679 case Qt::Key_1: 1679 case Qt::Key_1:
1680 case Qt::Key_2: 1680 case Qt::Key_2:
1681 case Qt::Key_3: 1681 case Qt::Key_3:
1682 case Qt::Key_4: 1682 case Qt::Key_4:
1683 case Qt::Key_5: 1683 case Qt::Key_5:
1684 case Qt::Key_6: 1684 case Qt::Key_6:
1685 case Qt::Key_7: 1685 case Qt::Key_7:
1686 case Qt::Key_8: 1686 case Qt::Key_8:
1687 case Qt::Key_9: 1687 case Qt::Key_9:
1688 pro = e->key()-48; 1688 pro = e->key()-48;
1689 if ( pro == 0 ) 1689 if ( pro == 0 )
1690 pro = 10; 1690 pro = 10;
1691 if ( e->state() == Qt::ControlButton) 1691 if ( e->state() == Qt::ControlButton)
1692 pro += 10; 1692 pro += 10;
1693 break; 1693 break;
1694 case Qt::Key_M: 1694 case Qt::Key_M:
1695 mView->viewManager()->showMonthView(); 1695 mView->viewManager()->showMonthView();
1696 showSelectedDates = true; 1696 showSelectedDates = true;
1697 break; 1697 break;
1698 case Qt::Key_Insert: 1698 case Qt::Key_Insert:
1699 mView->newEvent(); 1699 mView->newEvent();
1700 break; 1700 break;
1701 case Qt::Key_S : 1701 case Qt::Key_S :
1702 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1702 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1703 mView->newSubTodo(); 1703 mView->newSubTodo();
1704 else 1704 else
1705 mView->dialogManager()->showSearchDialog(); 1705 mView->dialogManager()->showSearchDialog();
1706 break; 1706 break;
1707 case Qt::Key_Y : 1707 case Qt::Key_Y :
1708 case Qt::Key_Z : 1708 case Qt::Key_Z :
1709 mView->viewManager()->showWorkWeekView(); 1709 mView->viewManager()->showWorkWeekView();
1710 showSelectedDates = true; 1710 showSelectedDates = true;
1711 break; 1711 break;
1712 case Qt::Key_U : 1712 case Qt::Key_U :
1713 mView->viewManager()->showWeekView(); 1713 mView->viewManager()->showWeekView();
1714 showSelectedDates = true; 1714 showSelectedDates = true;
1715 break; 1715 break;
1716 case Qt::Key_H : 1716 case Qt::Key_H :
1717 keyBindings(); 1717 keyBindings();
1718 break; 1718 break;
1719 case Qt::Key_W: 1719 case Qt::Key_W:
1720 mView->viewManager()->showWhatsNextView(); 1720 mView->viewManager()->showWhatsNextView();
1721 break; 1721 break;
1722 case Qt::Key_L: 1722 case Qt::Key_L:
1723 mView->viewManager()->showListView(); 1723 mView->viewManager()->showListView();
1724 break; 1724 break;
1725 case Qt::Key_N: 1725 case Qt::Key_N:
1726 mView->viewManager()->showNextXView(); 1726 mView->viewManager()->showNextXView();
1727 showSelectedDates = true; 1727 showSelectedDates = true;
1728 break; 1728 break;
1729 case Qt::Key_V: 1729 case Qt::Key_V:
1730 mView->viewManager()->showTodoView(); 1730 mView->viewManager()->showTodoView();
1731 break; 1731 break;
1732 case Qt::Key_C: 1732 case Qt::Key_C:
1733 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 1733 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
1734 break; 1734 break;
1735 case Qt::Key_P: 1735 case Qt::Key_P:
1736 mView->showDatePicker( ); 1736 mView->showDatePicker( );
1737 break; 1737 break;
1738 case Qt::Key_F: 1738 case Qt::Key_F:
1739 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1739 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1740 mView->editFilters(); 1740 mView->editFilters();
1741 else 1741 else
1742 mView->toggleFilter(); 1742 mView->toggleFilter();
1743 break; 1743 break;
1744 case Qt::Key_X: 1744 case Qt::Key_X:
1745 mView->toggleDateNavigatorWidget(); 1745 mView->toggleDateNavigatorWidget();
1746 break; 1746 break;
1747 case Qt::Key_Space: 1747 case Qt::Key_Space:
1748 mView->toggleExpand(); 1748 mView->toggleExpand();
1749 break; 1749 break;
1750 case Qt::Key_A: 1750 case Qt::Key_A:
1751 mView->toggleAllDaySize(); 1751 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton )
1752 mView->showNextAlarms();
1753 else
1754 mView->toggleAllDaySize();
1752 break; 1755 break;
1753 case Qt::Key_T: 1756 case Qt::Key_T:
1754 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1757 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1755 mView->newTodo(); 1758 mView->newTodo();
1756 else { 1759 else {
1757 mView->goToday(); 1760 mView->goToday();
1758 showSelectedDates = true; 1761 showSelectedDates = true;
1759 } 1762 }
1760 break; 1763 break;
1761 case Qt::Key_J: 1764 case Qt::Key_J:
1762 mView->viewManager()->showJournalView(); 1765 mView->viewManager()->showJournalView();
1763 break; 1766 break;
1764 case Qt::Key_B: 1767 case Qt::Key_B:
1765 mView->editIncidenceDescription();; 1768 mView->editIncidenceDescription();;
1766 break; 1769 break;
1767 // case Qt::Key_Return: 1770 // case Qt::Key_Return:
1768 case Qt::Key_E: 1771 case Qt::Key_E:
1769 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1772 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1770 mView->newEvent(); 1773 mView->newEvent();
1771 else 1774 else
1772 mView->editIncidence(); 1775 mView->editIncidence();
1773 break; 1776 break;
1774 case Qt::Key_Plus: 1777 case Qt::Key_Plus:
1775 size = p->mHourSize +2; 1778 size = p->mHourSize +2;
1776 if ( size <= 22 ) 1779 if ( size <= 22 )
1777 configureAgenda( size ); 1780 configureAgenda( size );
1778 break; 1781 break;
1779 case Qt::Key_Minus: 1782 case Qt::Key_Minus:
1780 size = p->mHourSize - 2; 1783 size = p->mHourSize - 2;
1781 if ( size >= 4 ) 1784 if ( size >= 4 )
1782 configureAgenda( size ); 1785 configureAgenda( size );
1783 break; 1786 break;
1784 1787
1785 1788
1786 default: 1789 default:
1787 e->ignore(); 1790 e->ignore();
1788 } 1791 }
1789 if ( pro > 0 ) { 1792 if ( pro > 0 ) {
1790 mView->selectFilter( pro-1 ); 1793 mView->selectFilter( pro-1 );
1791 } 1794 }
1792 if ( showSelectedDates ) { 1795 if ( showSelectedDates ) {
1793 ;// setCaptionToDates(); 1796 ;// setCaptionToDates();
1794 } 1797 }
1795 1798
1796} 1799}
1797 1800
1798void MainWindow::fillFilterMenu() 1801void MainWindow::fillFilterMenu()
1799{ 1802{
1800 selectFilterMenu->clear(); 1803 selectFilterMenu->clear();
1801 bool disable = false; 1804 bool disable = false;
1802 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 1805 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
1803 selectFilterMenu->insertSeparator(); 1806 selectFilterMenu->insertSeparator();
1804 if ( mView->filterView()->filtersEnabled() ) { 1807 if ( mView->filterView()->filtersEnabled() ) {
1805 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 ); 1808 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 );
1806 } 1809 }
1807 else { 1810 else {
1808 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 ); 1811 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 );
1809 disable = true; 1812 disable = true;
1810 } 1813 }
1811 selectFilterMenu->insertSeparator(); 1814 selectFilterMenu->insertSeparator();
1812 QPtrList<CalFilter> fili = mView->filters(); 1815 QPtrList<CalFilter> fili = mView->filters();
1813 CalFilter *curfilter = mView->filterView()->selectedFilter(); 1816 CalFilter *curfilter = mView->filterView()->selectedFilter();
1814 CalFilter *filter = fili.first(); 1817 CalFilter *filter = fili.first();
1815 int iii = 2; 1818 int iii = 2;
1816 while(filter) { 1819 while(filter) {
1817 selectFilterMenu->insertItem( filter->name(), iii ); 1820 selectFilterMenu->insertItem( filter->name(), iii );
1818 if ( filter == curfilter) 1821 if ( filter == curfilter)
1819 selectFilterMenu->setItemChecked( iii, true ); 1822 selectFilterMenu->setItemChecked( iii, true );
1820 if ( disable ) 1823 if ( disable )
1821 selectFilterMenu->setItemEnabled( iii, false ); 1824 selectFilterMenu->setItemEnabled( iii, false );
1822 filter = fili.next(); 1825 filter = fili.next();
1823 ++iii; 1826 ++iii;
1824 } 1827 }
1825} 1828}
1826void MainWindow::selectFilter( int fil ) 1829void MainWindow::selectFilter( int fil )
1827{ 1830{
1828 if ( fil == 0 ) { 1831 if ( fil == 0 ) {
1829 mView->editFilters( ); 1832 mView->editFilters( );
1830 } else if ( fil == 1 ){ 1833 } else if ( fil == 1 ){
1831 mView->toggleFilerEnabled( ); 1834 mView->toggleFilerEnabled( );
1832 } else { 1835 } else {
1833 mView->selectFilter( fil-2 ); 1836 mView->selectFilter( fil-2 );
1834 } 1837 }
1835} 1838}
1836void MainWindow::configureToolBar( int item ) 1839void MainWindow::configureToolBar( int item )
1837{ 1840{
1838 1841
1839 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); 1842 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
1840 KOPrefs *p = KOPrefs::instance(); 1843 KOPrefs *p = KOPrefs::instance();
1841 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); 1844 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
1842 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); 1845 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
1843 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); 1846 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
1844 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); 1847 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
1845 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); 1848 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
1846 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); 1849 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
1847 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); 1850 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
1848 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 ); 1851 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 );
1849 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); 1852 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
1850 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); 1853 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
1851 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); 1854 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
1852 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); 1855 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
1853 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); 1856 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
1854 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); 1857 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
1855 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); 1858 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
1856 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); 1859 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
1857 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); 1860 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
1858 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); 1861 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
1859 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); 1862 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
1860 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); 1863 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
1861 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 ); 1864 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 );
1862 // initActions(); 1865 // initActions();
1863} 1866}
1864void MainWindow::setCaption ( const QString & c ) 1867void MainWindow::setCaption ( const QString & c )
1865{ 1868{
1866 QString cap = c; 1869 QString cap = c;
1867 cap.replace( QRegExp("\n"), " " ); 1870 cap.replace( QRegExp("\n"), " " );
1868 cap = cap.stripWhiteSpace(); 1871 cap = cap.stripWhiteSpace();
1869 if ( cap.isEmpty() ) 1872 if ( cap.isEmpty() )
1870 cap = "KO/Pi"; 1873 cap = "KO/Pi";
1871 QWidget::setCaption( cap ); 1874 QWidget::setCaption( cap );
1872} 1875}
1873void MainWindow::setCaptionToDates() 1876void MainWindow::setCaptionToDates()
1874{ 1877{
1875 QString selDates; 1878 QString selDates;
1876 QDate date = mView->startDate(); 1879 QDate date = mView->startDate();
1877 if ( ! date.isValid() ) { 1880 if ( ! date.isValid() ) {
1878 setCaption(""); 1881 setCaption("");
1879 return; 1882 return;
1880 } 1883 }
1881 selDates = KGlobal::locale()->formatDate( date, true); 1884 selDates = KGlobal::locale()->formatDate( date, true);
1882 if (mView->startDate() < mView->endDate() ) 1885 if (mView->startDate() < mView->endDate() )
1883 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); 1886 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true);
1884 else { 1887 else {
1885 QString addString; 1888 QString addString;
1886 if ( date == QDateTime::currentDateTime().date() ) 1889 if ( date == QDateTime::currentDateTime().date() )
1887 addString = i18n("Today"); 1890 addString = i18n("Today");
1888 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 1891 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
1889 addString = i18n("Tomorrow"); 1892 addString = i18n("Tomorrow");
1890 if ( !addString.isEmpty() ) 1893 if ( !addString.isEmpty() )
1891 selDates = addString+", "+selDates ; 1894 selDates = addString+", "+selDates ;
1892 } 1895 }
1893 setCaption( i18n("Dates: ") + selDates ); 1896 setCaption( i18n("Dates: ") + selDates );
1894 1897
1895} 1898}
1896void MainWindow::showConfigureAgenda( ) 1899void MainWindow::showConfigureAgenda( )
1897{ 1900{
1898 int iii; 1901 int iii;
1899 for ( iii = 1;iii<= 10 ;++iii ){ 1902 for ( iii = 1;iii<= 10 ;++iii ){
1900 configureAgendaMenu->setItemChecked( (iii+1)*2, false ); 1903 configureAgendaMenu->setItemChecked( (iii+1)*2, false );
1901 } 1904 }
1902 configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true ); 1905 configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true );
1903} 1906}
1904void MainWindow::configureAgenda( int item ) 1907void MainWindow::configureAgenda( int item )
1905{ 1908{
1906 if ( KOPrefs::instance()->mHourSize == item ) 1909 if ( KOPrefs::instance()->mHourSize == item )
1907 return; 1910 return;
1908 KOPrefs::instance()->mHourSize=item; 1911 KOPrefs::instance()->mHourSize=item;
1909 mView->viewManager()->agendaView()->updateConfig(); 1912 mView->viewManager()->agendaView()->updateConfig();
1910} 1913}
1911 1914
1912void MainWindow::saveCalendar() 1915void MainWindow::saveCalendar()
1913{ 1916{
1914 QString fn = KOPrefs::instance()->mLastSaveFile; 1917 QString fn = KOPrefs::instance()->mLastSaveFile;
1915 fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this ); 1918 fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this );
1916 1919
1917 if ( fn == "" ) 1920 if ( fn == "" )
1918 return; 1921 return;
1919 QFileInfo info; 1922 QFileInfo info;
1920 info.setFile( fn ); 1923 info.setFile( fn );
1921 QString mes; 1924 QString mes;
1922 bool createbup = true; 1925 bool createbup = true;
1923 if ( info. exists() ) { 1926 if ( info. exists() ) {
1924 mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ; 1927 mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ;
1925 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 1928 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
1926 i18n("Overwrite!"), i18n("Cancel"), 0, 1929 i18n("Overwrite!"), i18n("Cancel"), 0,
1927 0, 1 ); 1930 0, 1 );
1928 if ( result != 0 ) { 1931 if ( result != 0 ) {
1929 createbup = false; 1932 createbup = false;
1930 } 1933 }
1931 } 1934 }
1932 if ( createbup ) { 1935 if ( createbup ) {
1933 mView->saveCalendar( fn ); 1936 mView->saveCalendar( fn );
1934 mes = i18n("KO/Pi:Saved %1").arg(fn); 1937 mes = i18n("KO/Pi:Saved %1").arg(fn);
1935 KOPrefs::instance()->mLastSaveFile = fn; 1938 KOPrefs::instance()->mLastSaveFile = fn;
1936 setCaption(mes); 1939 setCaption(mes);
1937 } 1940 }
1938} 1941}
1939void MainWindow::loadCalendar() 1942void MainWindow::loadCalendar()
1940{ 1943{
1941 1944
1942 QString fn = KOPrefs::instance()->mLastLoadFile; 1945 QString fn = KOPrefs::instance()->mLastLoadFile;
1943 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); 1946 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this );
1944 1947
1945 if ( fn == "" ) 1948 if ( fn == "" )
1946 return; 1949 return;
1947 QFileInfo info; 1950 QFileInfo info;
1948 info.setFile( fn ); 1951 info.setFile( fn );
1949 QString mess; 1952 QString mess;
1950 bool loadbup = true; 1953 bool loadbup = true;
1951 if ( info. exists() ) { 1954 if ( info. exists() ) {
1952 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1955 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1953 int result = QMessageBox::warning( this, "KO/Pi: Warning!", 1956 int result = QMessageBox::warning( this, "KO/Pi: Warning!",
1954 mess, 1957 mess,
1955 i18n("Load!"), i18n("Cancel"), 0, 1958 i18n("Load!"), i18n("Cancel"), 0,
1956 0, 1 ); 1959 0, 1 );
1957 if ( result != 0 ) { 1960 if ( result != 0 ) {
1958 loadbup = false; 1961 loadbup = false;
1959 } 1962 }
1960 } else { 1963 } else {
1961 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1964 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1962 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, 1965 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
1963 0, 1 ); 1966 0, 1 );
1964 1967
1965 return; 1968 return;
1966 } 1969 }
1967 if ( loadbup ) { 1970 if ( loadbup ) {
1968 mView->openCalendar( fn ); 1971 mView->openCalendar( fn );
1969 KOPrefs::instance()->mLastLoadFile = fn; 1972 KOPrefs::instance()->mLastLoadFile = fn;
1970 mess = i18n("KO/Pi:Loaded %1").arg(fn) ; 1973 mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
1971 setCaption(mess); 1974 setCaption(mess);
1972 } 1975 }
1973 1976
1974} 1977}
1975void MainWindow::quickImportIcal() 1978void MainWindow::quickImportIcal()
1976{ 1979{
1977 importFile( KOPrefs::instance()->mLastImportFile, false ); 1980 importFile( KOPrefs::instance()->mLastImportFile, false );
1978} 1981}
1979void MainWindow::importFile( QString fn, bool quick ) 1982void MainWindow::importFile( QString fn, bool quick )
1980{ 1983{
1981 QFileInfo info; 1984 QFileInfo info;
1982 info.setFile( fn ); 1985 info.setFile( fn );
1983 QString mess; 1986 QString mess;
1984 bool loadbup = true; 1987 bool loadbup = true;
1985 if ( !info. exists() ) { 1988 if ( !info. exists() ) {
1986 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); 1989 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30));
1987 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1990 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1988 mess ); 1991 mess );
1989 return; 1992 return;
1990 } 1993 }
1991 int result = 0; 1994 int result = 0;
1992 if ( !quick ) { 1995 if ( !quick ) {
1993 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 )); 1996 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 ));
1994 result = QMessageBox::warning( this, "KO/Pi: Warning!", 1997 result = QMessageBox::warning( this, "KO/Pi: Warning!",
1995 mess, 1998 mess,
1996 "Import", "Cancel", 0, 1999 "Import", "Cancel", 0,
1997 0, 1 ); 2000 0, 1 );
1998 } 2001 }
1999 if ( result == 0 ) { 2002 if ( result == 0 ) {
2000 if ( mView->openCalendar( fn, true )) { 2003 if ( mView->openCalendar( fn, true )) {
2001 KOPrefs::instance()->mLastImportFile = fn; 2004 KOPrefs::instance()->mLastImportFile = fn;
2002 setCaption(i18n("Imported file successfully")); 2005 setCaption(i18n("Imported file successfully"));
2003 } else { 2006 } else {
2004 setCaption(i18n("Error importing file")); 2007 setCaption(i18n("Error importing file"));
2005 } 2008 }
2006 } 2009 }
2007} 2010}
2008 2011
2009void MainWindow::importIcal() 2012void MainWindow::importIcal()
2010{ 2013{
2011 2014
2012 QString fn =KOPrefs::instance()->mLastImportFile; 2015 QString fn =KOPrefs::instance()->mLastImportFile;
2013 2016
2014 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); 2017 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this );
2015 if ( fn == "" ) 2018 if ( fn == "" )
2016 return; 2019 return;
2017 importFile( fn, true ); 2020 importFile( fn, true );
2018 2021
2019} 2022}
2020 2023
2021void MainWindow::exportVCalendar() 2024void MainWindow::exportVCalendar()
2022{ 2025{
2023 QString fn = KOPrefs::instance()->mLastVcalFile; 2026 QString fn = KOPrefs::instance()->mLastVcalFile;
2024 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); 2027 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
2025 if ( fn == "" ) 2028 if ( fn == "" )
2026 return; 2029 return;
2027 QFileInfo info; 2030 QFileInfo info;
2028 info.setFile( fn ); 2031 info.setFile( fn );
2029 QString mes; 2032 QString mes;
2030 bool createbup = true; 2033 bool createbup = true;
2031 if ( info. exists() ) { 2034 if ( info. exists() ) {
2032 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 2035 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
2033 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 2036 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
2034 i18n("Overwrite!"), i18n("Cancel"), 0, 2037 i18n("Overwrite!"), i18n("Cancel"), 0,
2035 0, 1 ); 2038 0, 1 );
2036 if ( result != 0 ) { 2039 if ( result != 0 ) {
2037 createbup = false; 2040 createbup = false;
2038 } 2041 }
2039 } 2042 }
2040 if ( createbup ) { 2043 if ( createbup ) {
2041 if ( mView->exportVCalendar( fn ) ) { 2044 if ( mView->exportVCalendar( fn ) ) {
2042 KOPrefs::instance()->mLastVcalFile = fn; 2045 KOPrefs::instance()->mLastVcalFile = fn;
2043 if ( fn.length() > 20 ) 2046 if ( fn.length() > 20 )
2044 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; 2047 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
2045 else 2048 else
2046 mes = i18n("KO/Pi:Exported to %1").arg(fn ); 2049 mes = i18n("KO/Pi:Exported to %1").arg(fn );
2047 setCaption(mes); 2050 setCaption(mes);
2048 } 2051 }
2049 } 2052 }
2050 2053
2051} 2054}
2052QString MainWindow::sentSyncFile() 2055QString MainWindow::sentSyncFile()
2053{ 2056{
2054#ifdef DESKTOP_VERSION 2057#ifdef DESKTOP_VERSION
2055 return locateLocal( "tmp", "copysynccal.ics" ); 2058 return locateLocal( "tmp", "copysynccal.ics" );
2056#else 2059#else
2057 return QString( "/tmp/copysynccal.ics" ); 2060 return QString( "/tmp/copysynccal.ics" );
2058#endif 2061#endif
2059} 2062}
2060 2063
2061void MainWindow::syncFileRequest() 2064void MainWindow::syncFileRequest()
2062{ 2065{
2063 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2066 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2064 mSyncManager->slotSyncMenu( 999 ); 2067 mSyncManager->slotSyncMenu( 999 );
2065 } 2068 }
2066 2069
2067 setCaption(i18n("Saving Data to temp file ..." )); 2070 setCaption(i18n("Saving Data to temp file ..." ));
2068 mView->saveCalendar( sentSyncFile() ); 2071 mView->saveCalendar( sentSyncFile() );
2069 setCaption(i18n("Data saved to temp file!" )); 2072 setCaption(i18n("Data saved to temp file!" ));
2070 2073
2071} 2074}
2072void MainWindow::getFile( bool success ) 2075void MainWindow::getFile( bool success )
2073{ 2076{
2074 if ( ! success ) { 2077 if ( ! success ) {
2075 setCaption( i18n("Error receiving file. Nothing changed!") ); 2078 setCaption( i18n("Error receiving file. Nothing changed!") );
2076 return; 2079 return;
2077 } 2080 }
2078 mView->openCalendar( sentSyncFile() ); 2081 mView->openCalendar( sentSyncFile() );
2079 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2082 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2080 mSyncManager->slotSyncMenu( 999 ); 2083 mSyncManager->slotSyncMenu( 999 );
2081 } 2084 }
2082 setCaption( i18n("Pi-Sync successful!") ); 2085 setCaption( i18n("Pi-Sync successful!") );
2083} 2086}
2084 2087
2085void MainWindow::printSel( ) 2088void MainWindow::printSel( )
2086{ 2089{
2087 mView->viewManager()->agendaView()->agenda()->printSelection(); 2090 mView->viewManager()->agendaView()->agenda()->printSelection();
2088} 2091}
2089 2092
2090void MainWindow::printCal() 2093void MainWindow::printCal()
2091{ 2094{
2092 mView->print();//mCp->showDialog(); 2095 mView->print();//mCp->showDialog();
2093} 2096}
2094 2097
2095 2098
2096#include "libkdepim/kdatepicker.h" 2099#include "libkdepim/kdatepicker.h"
2097#include <kdatetbl.h> 2100#include <kdatetbl.h>
2098void MainWindow::weekAction() 2101void MainWindow::weekAction()
2099{ 2102{
2100 int month; 2103 int month;
2101 KPopupFrame* popup = new KPopupFrame(this); 2104 KPopupFrame* popup = new KPopupFrame(this);
2102 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup); 2105 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup);
2103 // ----- 2106 // -----
2104 picker->resize(picker->sizeHint()); 2107 picker->resize(picker->sizeHint());
2105 popup->setMainWidget(picker); 2108 popup->setMainWidget(picker);
2106 picker->setFocus(); 2109 picker->setFocus();
2107 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 2110 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
2108 int x = 0; 2111 int x = 0;
2109 int y = iconToolBar->height(); 2112 int y = iconToolBar->height();
2110 int dX = 0; 2113 int dX = 0;
2111 int dY = 0; 2114 int dY = 0;
2112 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2115 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2113 if ( iconToolBar->y() > height()/2 ) { 2116 if ( iconToolBar->y() > height()/2 ) {
2114 dY = picker->sizeHint().height()+8; 2117 dY = picker->sizeHint().height()+8;
2115 y = 0; 2118 y = 0;
2116 } 2119 }
2117 } else { 2120 } else {
2118 if ( iconToolBar->x() > width()/2 ) { // right side 2121 if ( iconToolBar->x() > width()/2 ) { // right side
2119 x=0; 2122 x=0;
2120 dX= picker->sizeHint().width()+8; 2123 dX= picker->sizeHint().width()+8;
2121 y = 0; 2124 y = 0;
2122 } else { 2125 } else {
2123 x= iconToolBar->width(); 2126 x= iconToolBar->width();
2124 y = 0; 2127 y = 0;
2125 } 2128 }
2126 } 2129 }
2127 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2130 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2128 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)))) 2131 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))))
2129 { 2132 {
2130 month = picker->getResult(); 2133 month = picker->getResult();
2131 emit selectWeek ( month ); 2134 emit selectWeek ( month );
2132 //qDebug("weekSelected %d ", month); 2135 //qDebug("weekSelected %d ", month);
2133 } 2136 }
2134 delete popup; 2137 delete popup;
2135} 2138}
2139
2140void MainWindow::hideEvent ( QHideEvent * )
2141{
2142 QString message;
2143 QDateTime nextA = mCalendar->nextAlarmEventDateTime();
2144 if ( nextA.isValid() ) {
2145 QString sum = mCalendar->nextSummary();
2146
2147 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));
2148 setCaption( message );
2149 }
2150}
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 7604529..b3041dc 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -1,160 +1,161 @@
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 "simplealarmclient.h" 13#include "simplealarmclient.h"
14#include <ksyncmanager.h> 14#include <ksyncmanager.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#define QPEMenuBar QMenuBar 24#define QPEMenuBar QMenuBar
25#endif 25#endif
26class QPEToolBar; 26class QPEToolBar;
27 27
28 28
29namespace KCal { 29namespace KCal {
30class CalendarLocal; 30class CalendarLocal;
31} 31}
32 32
33class KOMenuBar : public QMenuBar 33class KOMenuBar : public QMenuBar
34{ 34{
35 public: 35 public:
36 KOMenuBar( QWidget *parent=0 ): QMenuBar (parent ) {;} 36 KOMenuBar( QWidget *parent=0 ): QMenuBar (parent ) {;}
37 QSize sizeHint () const{ qDebug("sizejint ");return QSize ( 40,25 );} 37 QSize sizeHint () const{ qDebug("sizejint ");return QSize ( 40,25 );}
38}; 38};
39 39
40using namespace KCal; 40using namespace KCal;
41 41
42class MainWindow : public QMainWindow 42class MainWindow : public QMainWindow
43{ 43{
44 Q_OBJECT 44 Q_OBJECT
45 public: 45 public:
46 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = ""); 46 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = "");
47 ~MainWindow(); 47 ~MainWindow();
48 bool beamReceiveEnabled(); 48 bool beamReceiveEnabled();
49 static QString defaultFileName(); 49 static QString defaultFileName();
50 static QString syncFileName(); 50 static QString syncFileName();
51 static QString resourcePath(); 51 static QString resourcePath();
52 public slots: 52 public slots:
53 void setCaption ( const QString & ); 53 void setCaption ( const QString & );
54 void updateWeekNum(const KCal::DateList &); 54 void updateWeekNum(const KCal::DateList &);
55 void updateWeek(QDate); 55 void updateWeek(QDate);
56 virtual void showMaximized (); 56 virtual void showMaximized ();
57 void configureAgenda( int ); 57 void configureAgenda( int );
58 void recieve( const QCString& msg, const QByteArray& data ); 58 void recieve( const QCString& msg, const QByteArray& data );
59 protected slots: 59 protected slots:
60 void setCaptionToDates(); 60 void setCaptionToDates();
61 void weekAction(); 61 void weekAction();
62 void about(); 62 void about();
63 void licence(); 63 void licence();
64 void faq(); 64 void faq();
65 void usertrans(); 65 void usertrans();
66 void features(); 66 void features();
67 void synchowto(); 67 void synchowto();
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 saveStopTimer(); 87 void saveStopTimer();
88 void configureToolBar( int ); 88 void configureToolBar( int );
89 void printSel(); 89 void printSel();
90 void printCal(); 90 void printCal();
91 void saveCalendar(); 91 void saveCalendar();
92 void loadCalendar(); 92 void loadCalendar();
93 void exportVCalendar(); 93 void exportVCalendar();
94 void fillFilterMenu(); 94 void fillFilterMenu();
95 void selectFilter( int ); 95 void selectFilter( int );
96 void exportToPhone( int ); 96 void exportToPhone( int );
97 void toggleBeamReceive(); 97 void toggleBeamReceive();
98 void disableBR(bool); 98 void disableBR(bool);
99 signals: 99 signals:
100 void selectWeek ( int ); 100 void selectWeek ( int );
101 private slots: 101 private slots:
102 void showConfigureAgenda(); 102 void showConfigureAgenda();
103 void getFile( bool ); 103 void getFile( bool );
104 void syncFileRequest(); 104 void syncFileRequest();
105 105
106 protected: 106 protected:
107 void hideEvent ( QHideEvent * );
107 QString sentSyncFile(); 108 QString sentSyncFile();
108 void displayText( QString, QString); 109 void displayText( QString, QString);
109 void enableIncidenceActions( bool ); 110 void enableIncidenceActions( bool );
110 111
111 private: 112 private:
112 bool mBRdisabled; 113 bool mBRdisabled;
113#ifndef DESKTOP_VERSION 114#ifndef DESKTOP_VERSION
114 QCopChannel* infrared; 115 QCopChannel* infrared;
115#endif 116#endif
116 QAction* brAction; 117 QAction* brAction;
117 KSyncManager* mSyncManager; 118 KSyncManager* mSyncManager;
118 bool mClosed; 119 bool mClosed;
119 void saveOnClose(); 120 void saveOnClose();
120 bool mFlagKeyPressed; 121 bool mFlagKeyPressed;
121 bool mBlockAtStartup; 122 bool mBlockAtStartup;
122 QPEToolBar *iconToolBar; 123 QPEToolBar *iconToolBar;
123 void initActions(); 124 void initActions();
124 void setDefaultPreferences(); 125 void setDefaultPreferences();
125 void keyPressEvent ( QKeyEvent * ) ; 126 void keyPressEvent ( QKeyEvent * ) ;
126 void keyReleaseEvent ( QKeyEvent * ) ; 127 void keyReleaseEvent ( QKeyEvent * ) ;
127 QPopupMenu *configureToolBarMenu; 128 QPopupMenu *configureToolBarMenu;
128 QPopupMenu *selectFilterMenu; 129 QPopupMenu *selectFilterMenu;
129 QPopupMenu *configureAgendaMenu, *syncMenu; 130 QPopupMenu *configureAgendaMenu, *syncMenu;
130 CalendarLocal *mCalendar; 131 CalendarLocal *mCalendar;
131 CalendarView *mView; 132 CalendarView *mView;
132 QAction *mNewSubTodoAction; 133 QAction *mNewSubTodoAction;
133 QAction *mWeekAction; 134 QAction *mWeekAction;
134 QFont mWeekFont; 135 QFont mWeekFont;
135 QPixmap mWeekPixmap; 136 QPixmap mWeekPixmap;
136 QColor mWeekBgColor; 137 QColor mWeekBgColor;
137 138
138 QAction *mShowAction; 139 QAction *mShowAction;
139 QAction *mEditAction; 140 QAction *mEditAction;
140 QAction *mDeleteAction; 141 QAction *mDeleteAction;
141 QAction *mCloneAction; 142 QAction *mCloneAction;
142 QAction *mMoveAction; 143 QAction *mMoveAction;
143 QAction *mBeamAction; 144 QAction *mBeamAction;
144 QAction *mCancelAction; 145 QAction *mCancelAction;
145 146
146 QAction *mToggleNav; 147 QAction *mToggleNav;
147 QAction *mToggleFilter; 148 QAction *mToggleFilter;
148 QAction *mToggleAllday; 149 QAction *mToggleAllday;
149 150
150 151
151 void closeEvent( QCloseEvent* ce ); 152 void closeEvent( QCloseEvent* ce );
152 SimpleAlarmClient mAlarmClient; 153 SimpleAlarmClient mAlarmClient;
153 QTimer mSaveTimer; 154 QTimer mSaveTimer;
154 //bool mBlockSaveFlag; 155 //bool mBlockSaveFlag;
155 bool mCalendarModifiedFlag; 156 bool mCalendarModifiedFlag;
156 QPixmap loadPixmap( QString ); 157 QPixmap loadPixmap( QString );
157}; 158};
158 159
159 160
160#endif 161#endif