summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-02-02 11:55:36 (UTC)
committer zautrix <zautrix>2005-02-02 11:55:36 (UTC)
commite770226d68f5fdb8484003bbb9898848cec901a8 (patch) (unidiff)
treeecf8f795d6f8673405c22010c82fb167a41a7aa3
parent2a184b0d9095c6175e7bdf2f5d5561470b8d6307 (diff)
downloadkdepimpi-e770226d68f5fdb8484003bbb9898848cec901a8.zip
kdepimpi-e770226d68f5fdb8484003bbb9898848cec901a8.tar.gz
kdepimpi-e770226d68f5fdb8484003bbb9898848cec901a8.tar.bz2
jepp
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt7
-rw-r--r--bin/kdepim/korganizer/featuresKOPI.txt29
-rw-r--r--korganizer/komonthview.cpp33
-rw-r--r--korganizer/komonthview.h6
-rw-r--r--korganizer/koviewmanager.cpp4
5 files changed, 46 insertions, 33 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 4f8fcc7..ac70a55 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,397 +1,398 @@
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.2 ************ 3********** VERSION 2.0.2 ************
4 4
5KO/Pi: 5KO/Pi:
6Fixed the layout problem of the day label buttons 6Fixed the layout problem of the day label buttons
7of the agenda view introduced in version 2.0.1. 7of the agenda view introduced in version 2.0.1.
8 8
9Added WhatsThis support for the todo view and the list view. 9Added WhatsThis support for the todo view and the list view.
10 10
11Added a quite useful and quite hidden feature (to KO/Pi). 11Added a quite useful feature to the montview.
12Who does find it first? 12Just click on the week numbers on the left.
13Hint: You have to click somewhere in the views ... 13And on top of the week numbers there is now a "week view quick selector".
14(Click on the black triangle).
14 15
15 16
16********** VERSION 2.0.1 ************ 17********** VERSION 2.0.1 ************
17 18
18Oooops ... I forgot to test on the Zaurus 5500 ... 19Oooops ... I forgot to test on the Zaurus 5500 ...
19 20
20Fixed many problems of new (english) strings (and german translations) 21Fixed many problems of new (english) strings (and german translations)
21introduced in the latest versions, where the text was not fitting on the 22introduced in the latest versions, where the text was not fitting on the
22240x320 display of the Zaurus 5500. 23240x320 display of the Zaurus 5500.
23 24
24KO/Pi: 25KO/Pi:
25Added a popup menu ( press pen and hold to get popup ) to the agenda view 26Added a popup menu ( press pen and hold to get popup ) to the agenda view
26with many useful items (add event/todo, show next week, two weeks, month, journal). 27with many useful items (add event/todo, show next week, two weeks, month, journal).
27 28
28Added items to the todolist popup menu for: 29Added items to the todolist popup menu for:
29Display all opened, all closed or all todos flat. 30Display all opened, all closed or all todos flat.
30The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 31The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
31Made the reparenting of todos on the desktop possible via Drag&Drop. 32Made the reparenting of todos on the desktop possible via Drag&Drop.
32Fixed several bugs in setting the completed datetime for todos. 33Fixed several bugs in setting the completed datetime for todos.
33Added info about completed datetime of todos to the todo viewer. 34Added info about completed datetime of todos to the todo viewer.
34Now displaying a completed todo (with completed datetime set) in the agenda view 35Now displaying a completed todo (with completed datetime set) in the agenda view
35at the time of the completion. Such that now it is possible to see in the agenda view 36at the time of the completion. Such that now it is possible to see in the agenda view
36when what todo was completed. 37when what todo was completed.
37Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 38Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
38Now the behaviour is: 39Now the behaviour is:
39Setting a parent to complete sets all (sub)childs to complete. 40Setting a parent to complete sets all (sub)childs to complete.
40Setting a parent to uncomplete does not change the childs. 41Setting a parent to uncomplete does not change the childs.
41Setting a child to uncomplete sets all parent to uncomplete. 42Setting a child to uncomplete sets all parent to uncomplete.
42Setting a child to complete does not change the parents. 43Setting a child to complete does not change the parents.
43 44
44Smart updating and double buffering of the daymatrix. 45Smart updating and double buffering of the daymatrix.
45Showing holidays in the day matrix. 46Showing holidays in the day matrix.
46Many other small performance updates. 47Many other small performance updates.
47 48
48Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. 49Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
49 50
50Now the translation file usertranslation.txt is supposed to be in utf8 format. 51Now the translation file usertranslation.txt is supposed to be in utf8 format.
51If you want to translate a language from western europe, just change the germantranslation.txt file. Please read the updated Usertranslation HowTo in KO/Pi Help menu. 52If you want to translate a language from western europe, just change the germantranslation.txt file. Please read the updated Usertranslation HowTo in KO/Pi Help menu.
52 53
53 54
54********** VERSION 2.0.0 ************ 55********** VERSION 2.0.0 ************
55 56
56Stable release 2.0.0! 57Stable release 2.0.0!
57 58
58KO/Pi: 59KO/Pi:
59Fixed problem in edit dialog recreation at startup. 60Fixed problem in edit dialog recreation at startup.
60Made "toggle view*" menu items enabled context sensitive. 61Made "toggle view*" menu items enabled context sensitive.
61Changed agenda size menu to items 1-10. 62Changed agenda size menu to items 1-10.
62Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 63Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
63Usebility enhancements in the KO/Pi menus. 64Usebility enhancements in the KO/Pi menus.
64Birthday import now adds year to summary. 65Birthday import now adds year to summary.
65What's Next view shows age in years for birthday. 66What's Next view shows age in years for birthday.
66 67
67OM/Pi: 68OM/Pi:
68Added three info lines to display subject, from and to of selected mails. 69Added three info lines to display subject, from and to of selected mails.
69 70
70KA/Pi: 71KA/Pi:
71Fixed jump bar behaviour on Zaurus. 72Fixed jump bar behaviour on Zaurus.
72Now KA/Pi search field supports searching for a range of starting characters. 73Now KA/Pi search field supports searching for a range of starting characters.
73E.g. to search for all contact beginning with b to n, type 74E.g. to search for all contact beginning with b to n, type
74b-n 75b-n
75in the search field. 76in the search field.
76 77
77********** VERSION 1.9.20 ************ 78********** VERSION 1.9.20 ************
78 79
79KO/Pi: 80KO/Pi:
80Added for the "dislplay one day" agenda mode 81Added for the "dislplay one day" agenda mode
81info in the caption and in the day lables: 82info in the caption and in the day lables:
82Now it is displayed, if the selected day is from "day before yesterday" 83Now it is displayed, if the selected day is from "day before yesterday"
83to "day after tomorrow". 84to "day after tomorrow".
84Made it possible to delete a Todo, which has sub-todos. 85Made it possible to delete a Todo, which has sub-todos.
85Fixed two small problems in the todo view. 86Fixed two small problems in the todo view.
86Added missing German translation for filter edit and print dialog. 87Added missing German translation for filter edit and print dialog.
87Made search dialog closeable by cancel key. 88Made search dialog closeable by cancel key.
88 89
89Made it possible to select in the date picker the (ligt grey ) 90Made it possible to select in the date picker the (ligt grey )
90dates of the prev./next month with the mouse. 91dates of the prev./next month with the mouse.
91 92
92OM/Pi: 93OM/Pi:
93"Delete mail" icon in main window now deletes all selected mails. 94"Delete mail" icon in main window now deletes all selected mails.
94Fixed the problem, that the state flag of imap mails was ignored. 95Fixed the problem, that the state flag of imap mails was ignored.
95Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 96Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
96to indecate that they are already seen. 97to indecate that they are already seen.
97Fixed the problem that the body of some mails was not displayed in the 98Fixed the problem that the body of some mails was not displayed in the
98mail viewer when fetching them from the imap server directly to read them. 99mail viewer when fetching them from the imap server directly to read them.
99Made it (configurable) possible to show the "To:" field in the list view. 100Made it (configurable) possible to show the "To:" field in the list view.
100Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 101Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
101Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 102Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
102local storage folder (specified in account settings) of the account of the mail. 103local storage folder (specified in account settings) of the account of the mail.
103Removed some memory leaks in OM/Pi. 104Removed some memory leaks in OM/Pi.
104 105
105 106
106********** VERSION 1.9.19 ************ 107********** VERSION 1.9.19 ************
107 108
108Added a lot of missing translations to KA/Pi, 109Added a lot of missing translations to KA/Pi,
109Added some missing translations to KO/Pi and OM/Pi. 110Added some missing translations to KO/Pi and OM/Pi.
110 111
111Fixed some minor problems in KA/Pi + KO/Pi. 112Fixed some minor problems in KA/Pi + KO/Pi.
112 113
113Fixed a crash when closing PwM/Pi. 114Fixed a crash when closing PwM/Pi.
114Added German translation for PwM/Pi. 115Added German translation for PwM/Pi.
115 116
116Made view change and Month View update faster in KO/Pi. 117Made view change and Month View update faster in KO/Pi.
117 118
118 119
119********** VERSION 1.9.18 ************ 120********** VERSION 1.9.18 ************
120 121
121FYI: The VERSION 1.9.17 was a testing release only. 122FYI: The VERSION 1.9.17 was a testing release only.
122Please read the changelog of VERSION 1.9.17 as well. 123Please read the changelog of VERSION 1.9.17 as well.
123 124
124Cleaned up the syncing config dialog. 125Cleaned up the syncing config dialog.
125Added sync config options for date range for events. 126Added sync config options for date range for events.
126Added sync config options for filters on incoming data. 127Added sync config options for filters on incoming data.
127Added sync config options for filters on outgoing data. 128Added sync config options for filters on outgoing data.
128Please read the updated SyncHowTo about the new filter settings. 129Please read the updated SyncHowTo about the new filter settings.
129These filter settings make it now possible to sync with shared 130These filter settings make it now possible to sync with shared
130calendars without writing back private or confidential data 131calendars without writing back private or confidential data
131(via the outgoing filters). 132(via the outgoing filters).
132To sync only with particular parts of a shared calendar, 133To sync only with particular parts of a shared calendar,
133the incoming filter settings can be used. 134the incoming filter settings can be used.
134An example can be found in the SyncHowTo. 135An example can be found in the SyncHowTo.
135Same for shared addressbooks. 136Same for shared addressbooks.
136 137
137Added a setting for the global kdepim data storage. 138Added a setting for the global kdepim data storage.
138Usually the data is stored in (yourhomedir/kdepim). 139Usually the data is stored in (yourhomedir/kdepim).
139Now you can set in the Global config dialog TAB, subTAB "Data storage path" 140Now you can set in the Global config dialog TAB, subTAB "Data storage path"
140a directory where all the kdepim data is stored. 141a directory where all the kdepim data is stored.
141That makes it easy to save all kdepim data on a SD card on the Z, for example. 142That makes it easy to save all kdepim data on a SD card on the Z, for example.
142 143
143KO/Pi: 144KO/Pi:
144The timeedit input has a pulldown list for times. 145The timeedit input has a pulldown list for times.
145If opened, this pulldown list should now has the right time highlighted. 146If opened, this pulldown list should now has the right time highlighted.
146Added the possibility to exclude events/todos/journals in a filter. 147Added the possibility to exclude events/todos/journals in a filter.
147You should exclude journals, if you do not want them to sync with a public calendar. 148You should exclude journals, if you do not want them to sync with a public calendar.
148 149
149KA/Pi: 150KA/Pi:
150Added the possibility to in/exclude public/private/confidential contacts to a filter. 151Added the possibility to in/exclude public/private/confidential contacts to a filter.
151If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ... 152If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ...
152Added printing of card view and details view on desktop. 153Added printing of card view and details view on desktop.
153Printing of list view is not working... 154Printing of list view is not working...
154Added button for removing pictures in contact editor. 155Added button for removing pictures in contact editor.
155Parsing data fix of KA/Pi version 1.9.17. 156Parsing data fix of KA/Pi version 1.9.17.
156Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 157Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
157Fixed some syncing merging problems. 158Fixed some syncing merging problems.
158 159
159 160
160********** VERSION 1.9.17 ************ 161********** VERSION 1.9.17 ************
161 162
162KO/Pi: 163KO/Pi:
163Fixed that tooltips were not updated after moving an item in agenda view. 164Fixed that tooltips were not updated after moving an item in agenda view.
164Fixed a bug in sorting start date for recurring events in list view. 165Fixed a bug in sorting start date for recurring events in list view.
165Changed the left button in todo viewer from "Agenda" to "Set completed". 166Changed the left button in todo viewer from "Agenda" to "Set completed".
166This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. 167This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View.
167Added more info in the todo viewer: Startdate, parent/sub todos. 168Added more info in the todo viewer: Startdate, parent/sub todos.
168 169
169 170
170KA/Pi: 171KA/Pi:
171All fields search does now actually search all the (possible) fields, 172All fields search does now actually search all the (possible) fields,
172not only those listed in the contact list. 173not only those listed in the contact list.
173Made is possible to inline a picture in a vcard on the Z. 174Made is possible to inline a picture in a vcard on the Z.
174This was only possible on the desktop, now is it possible on the Z as well. 175This was only possible on the desktop, now is it possible on the Z as well.
175Fixed of missing save settings after filter configuration. 176Fixed of missing save settings after filter configuration.
176Made saving of addressbook much faster. 177Made saving of addressbook much faster.
177Fixed extension widget layout problem. 178Fixed extension widget layout problem.
178Fixed saving of default formatted name settings. 179Fixed saving of default formatted name settings.
179Fixed formatted name handling in edit dialog. 180Fixed formatted name handling in edit dialog.
180Added an option for changing formatted names of many contacts 181Added an option for changing formatted names of many contacts
181(menu: File - Change - Set formatted name). 182(menu: File - Change - Set formatted name).
182 183
183QWhatsThis was not working on the Z ( only black rectangle was shown). 184QWhatsThis was not working on the Z ( only black rectangle was shown).
184This is Fixed. 185This is Fixed.
185 186
186KDE-Sync: 187KDE-Sync:
187Now readonly KDE resources are synced as well. 188Now readonly KDE resources are synced as well.
188(They are not changed in KDE itself, of course). 189(They are not changed in KDE itself, of course).
189 190
190 191
191 192
192********** VERSION 1.9.16 ************ 193********** VERSION 1.9.16 ************
193 194
194KO/Pi: 195KO/Pi:
195Fixed search dialog size on Z 6000 (480x640 display). 196Fixed search dialog size on Z 6000 (480x640 display).
196Added setting to hide/show time in agenda items. 197Added setting to hide/show time in agenda items.
197Added setting to hide not running todos in todo view. 198Added setting to hide not running todos in todo view.
198Added columns for start date/time in todo view. 199Added columns for start date/time in todo view.
199Replaced the solid half-hour lines in agenda view by dot lines. 200Replaced the solid half-hour lines in agenda view by dot lines.
200Added possibility of printing the What's Next View on the desktop 201Added possibility of printing the What's Next View on the desktop
201(i.e. Windows and Linux). 202(i.e. Windows and Linux).
202Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 203Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
203Added tooltips in month view.(Tooltips only available on desktop) 204Added tooltips in month view.(Tooltips only available on desktop)
204 205
205Fixed a strange problem in KO/Pi alarm applet. 206Fixed a strange problem in KO/Pi alarm applet.
206Did not find the actual problem, 207Did not find the actual problem,
207such that now Qtopia reboots again if deinstalling the alarm applet. 208such that now Qtopia reboots again if deinstalling the alarm applet.
208But the alarm applet should work again. 209But the alarm applet should work again.
209 210
210KA/Pi: 211KA/Pi:
211Fixed the problem, that internal pictures were not saved. 212Fixed the problem, that internal pictures were not saved.
212 213
213Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 214Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
214 215
215Fixed some minor problems. (Like word wrap in help text windows). 216Fixed some minor problems. (Like word wrap in help text windows).
216 217
217Fixed a compiling problem in microkde/kresources. 218Fixed a compiling problem in microkde/kresources.
218 219
219KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 220KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
220This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 221This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
221such that now syncing KO/Pi with Sharp DTM should work on the 222such that now syncing KO/Pi with Sharp DTM should work on the
222Zaurus C 3000 model. 223Zaurus C 3000 model.
223 224
224********** VERSION 1.9.15 ************ 225********** VERSION 1.9.15 ************
225 226
226Usebilty enhancements in KO/Pi: 227Usebilty enhancements in KO/Pi:
227When clicking on the date in a month view cell, the day view is shown. 228When clicking on the date in a month view cell, the day view is shown.
228Old behaviour was, that the "new event" dialog popped up. 229Old behaviour was, that the "new event" dialog popped up.
229 230
230Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 231Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
231That means, you can restore the latest 232That means, you can restore the latest
232event/todo/journal you have deleted. 233event/todo/journal you have deleted.
233A journal is deleted, if you clear all the text of the journal. 234A journal is deleted, if you clear all the text of the journal.
234 235
235Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 236Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
236 237
237KA/Pi starting in 480x640 resolution: 238KA/Pi starting in 480x640 resolution:
238Hide the filter action in toolbar 239Hide the filter action in toolbar
239and added icons for undo/delete/redo in toolbar. 240and added icons for undo/delete/redo in toolbar.
240 241
241Change in OM/Pi ViewMail dialog: 242Change in OM/Pi ViewMail dialog:
242When clicking on the "delete" icon the mail is deleted after confirmation as usual. 243When clicking on the "delete" icon the mail is deleted after confirmation as usual.
243But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 244But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
244 245
245Fixed a crash when deleting mail-accounts in OM/Pi. 246Fixed a crash when deleting mail-accounts in OM/Pi.
246 247
247 248
248********** VERSION 1.9.14 ************ 249********** VERSION 1.9.14 ************
249 250
250Fixed some problems with the dialog sizes when switching 251Fixed some problems with the dialog sizes when switching
251portrait/landscape mode on 640x480 PDA display. 252portrait/landscape mode on 640x480 PDA display.
252 253
253Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 254Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
254 255
255Fixed an ugly bug in KOpieMail: 256Fixed an ugly bug in KOpieMail:
256KOpieMail was not able to write files (mails) to MSDOS file system, 257KOpieMail was not able to write files (mails) to MSDOS file system,
257like on an usual preformatted SD card. That should work now. 258like on an usual preformatted SD card. That should work now.
258To save your mail data on the Sd card do the following: 259To save your mail data on the Sd card do the following:
259Create a dir on the SD card: 260Create a dir on the SD card:
260mkdir /mnt/card/localmail 261mkdir /mnt/card/localmail
261Go to your home dir: 262Go to your home dir:
262cd 263cd
263Go to kopiemail data storage dir: 264Go to kopiemail data storage dir:
264cd kdepim/apps/kopiemail 265cd kdepim/apps/kopiemail
265Create a symlink to the SD card: 266Create a symlink to the SD card:
266ls -s /mnt/card/localmail 267ls -s /mnt/card/localmail
267Now KOpieMail will store all mails on the SD card. 268Now KOpieMail will store all mails on the SD card.
268 269
269KO/Pi Monthview: 270KO/Pi Monthview:
270Now "Go to Today" selects the current month from day 1-end, 271Now "Go to Today" selects the current month from day 1-end,
271not the current date + some days. 272not the current date + some days.
272I.e. "Go to Today" shows now always 273I.e. "Go to Today" shows now always
273the current month with first day of month in the first row. 274the current month with first day of month in the first row.
274 275
275Added missing German translation. 276Added missing German translation.
276 277
277Fixed icons of executeable on Wintendo. 278Fixed icons of executeable on Wintendo.
278 279
279Added a "Show next Mail" button to the OM/Pi 280Added a "Show next Mail" button to the OM/Pi
280mail viewer such that the mail below the current mail 281mail viewer such that the mail below the current mail
281in the mail list view of the current folder 282in the mail list view of the current folder
282can be read with a single click. 283can be read with a single click.
283 284
284 285
285********** VERSION 1.9.13 ************ 286********** VERSION 1.9.13 ************
286 287
287Fixed nasty PwM/Pi file reading bug, when 288Fixed nasty PwM/Pi file reading bug, when
288the used hash algo of file is different then the global 289the used hash algo of file is different then the global
289hash algo. 290hash algo.
290 291
291Added KA/Pi support for opie mailit mailapplication. 292Added KA/Pi support for opie mailit mailapplication.
292 293
293Fixed some bugs in OM/Pi. 294Fixed some bugs in OM/Pi.
294Now character conversion tables are available for the Zaurus 295Now character conversion tables are available for the Zaurus
295to make OM/Pi working properly. 296to make OM/Pi working properly.
296To get the character conversion in OM/Pi working, please download 297To get the character conversion in OM/Pi working, please download
297at the sourceforge project site the package 298at the sourceforge project site the package
298sr-character-conversion_SharpROM_arm.ipk.zip 299sr-character-conversion_SharpROM_arm.ipk.zip
299(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 300(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
300from the section "general files for KDE/Pim" 301from the section "general files for KDE/Pim"
301Instructions how to install this package are in a ReadMe in this file. 302Instructions how to install this package are in a ReadMe in this file.
302 303
303 304
304Fixed the orientation change problem in KA/Pi when switching 305Fixed the orientation change problem in KA/Pi when switching
305portrait/landscape mode. 306portrait/landscape mode.
306 307
307French translation available for KA/Pi and OM/Pi. 308French translation available for KA/Pi and OM/Pi.
308 309
309Fixed some problems with categories in KO/Pi in DTM sync. 310Fixed some problems with categories in KO/Pi in DTM sync.
310 311
311Added selection dialog for export to phone in KA/Pi. 312Added selection dialog for export to phone in KA/Pi.
312 313
313If in KO/Pi is an attendee selected to add to a meeting and this 314If in KO/Pi is an attendee selected to add to a meeting and this
314attendee is already in the list of attendees, this person is not added 315attendee is already in the list of attendees, this person is not added
315again. 316again.
316 317
317Some menu cleanup in KA/Pi. 318Some menu cleanup in KA/Pi.
318 319
319********** VERSION 1.9.12 ************ 320********** VERSION 1.9.12 ************
320 321
321Fix for the bug in KO/Pi What's Next view of version 1.9.11. 322Fix for the bug in KO/Pi What's Next view of version 1.9.11.
322 323
323Bugfix: Licence file is now shown again. 324Bugfix: Licence file is now shown again.
324 325
325OM/Pi now supports Unicode (utf8 charset). 326OM/Pi now supports Unicode (utf8 charset).
326Fixed some bugs in OM/Pi. 327Fixed some bugs in OM/Pi.
327 328
328KA/Pi has more German translation. 329KA/Pi has more German translation.
329 330
330 331
331********** VERSION 1.9.11 ************ 332********** VERSION 1.9.11 ************
332 333
333Fixed several problems in PWM/Pi, like 334Fixed several problems in PWM/Pi, like
334asking the user, if unsaved changed are pending 335asking the user, if unsaved changed are pending
335when closing the app. 336when closing the app.
336And PwM/Pi handles now different texts for the 337And PwM/Pi handles now different texts for the
337fields Description, Username, Password, configurable per category. 338fields Description, Username, Password, configurable per category.
338 339
339Fixed a crash in KO/Pi , when importing/loading vcs files 340Fixed a crash in KO/Pi , when importing/loading vcs files
340which have an entry with an attendee with state: 341which have an entry with an attendee with state:
341NEEDS ACTION 342NEEDS ACTION
342 343
343Fixed some problems in the German translation of OM/Pi, 344Fixed some problems in the German translation of OM/Pi,
344which makes some dialogs not fitting on the screen 345which makes some dialogs not fitting on the screen
345of the Z 5500. 346of the Z 5500.
346 347
347Fixed Qtopia crash, when disabling/deinstalling 348Fixed Qtopia crash, when disabling/deinstalling
348KO/Pi alarm applet. 349KO/Pi alarm applet.
349 350
350Implemented direct KDE<->KA/Pi sync for KA/Pi running 351Implemented direct KDE<->KA/Pi sync for KA/Pi running
351on Linux desktop. 352on Linux desktop.
352 353
353Added feature "remove sync info" to sync menu. 354Added feature "remove sync info" to sync menu.
354 355
355Tweaked the KO/Pi What's next view a bit, added 356Tweaked the KO/Pi What's next view a bit, added
356setting to hide events that are done. 357setting to hide events that are done.
357 358
358Disabled "beam receive enabled" on startup to 359Disabled "beam receive enabled" on startup to
359avoid problems if Fastload is enabled. 360avoid problems if Fastload is enabled.
360Please set "beam receive enabled", 361Please set "beam receive enabled",
361if you want to receive data via IR. 362if you want to receive data via IR.
362 363
363Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 364Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
364on Linux desktop. 365on Linux desktop.
365 366
366Made in KA/Pi scrolling possible, if details view is selected. 367Made in KA/Pi scrolling possible, if details view is selected.
367(The keyboard focus is set automatically to the search line) 368(The keyboard focus is set automatically to the search line)
368 369
369Fixed a bug in DMT sync, that a new entry in DTM was added 370Fixed a bug in DMT sync, that a new entry in DTM was added
370on every sync to Kx/Pi. 371on every sync to Kx/Pi.
371 372
372Fixed missing writing of KA/Pi categories to DMT entries when syncing. 373Fixed missing writing of KA/Pi categories to DMT entries when syncing.
373 374
374Fixed a bug in DMT sync with todos created in KO/Pi containing 375Fixed a bug in DMT sync with todos created in KO/Pi containing
375non-latin1 characters. 376non-latin1 characters.
376 377
377Rearranged package contents of Sharp-ipks and made all 378Rearranged package contents of Sharp-ipks and made all
378packages installable on SD again. 379packages installable on SD again.
379 380
380Fixed the writing of addressbook data in DTM sync. 381Fixed the writing of addressbook data in DTM sync.
381Empty fields in KA/Pi were not removed. 382Empty fields in KA/Pi were not removed.
382 383
383Added better category handling in KA/Pi: 384Added better category handling in KA/Pi:
384Added item 385Added item
385Edit Categories and 386Edit Categories and
386Manage new categories 387Manage new categories
387to the settings menu. 388to the settings menu.
388Possible to configure a view to display categories. 389Possible to configure a view to display categories.
389 390
390Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 391Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
391 392
392Fixed displaying of "free" days and time in KO Monthview and Agendaview. 393Fixed displaying of "free" days and time in KO Monthview and Agendaview.
393 394
394... and many other bugfixes. 395... and many other bugfixes.
395 396
396********** VERSION 1.9.10 ************ 397********** VERSION 1.9.10 ************
397 398
diff --git a/bin/kdepim/korganizer/featuresKOPI.txt b/bin/kdepim/korganizer/featuresKOPI.txt
index 052680e..c056dca 100644
--- a/bin/kdepim/korganizer/featuresKOPI.txt
+++ b/bin/kdepim/korganizer/featuresKOPI.txt
@@ -1,244 +1,239 @@
1Features of KO/Pi and hints for usage of KO/Pi 1Features of KO/Pi and hints for usage of KO/Pi
2(www.pi-sync.net) 2(www.pi-sync.net)
3 3
4A) General features 4A) General features
5 0) Main features 5 0) Main features
6 1) Import - export - connection - syncing 6 1) Import - export - connection - syncing
7 2) Filter 7 2) Filter
8 3) Managing categories: 8 3) Managing categories:
9 4) Cancelling of items: 9 4) Cancelling of items:
10 5) Addressbook access: 10 5) Addressbook access:
11 6) Quick editing: 11 6) Quick editing:
12 7) Fast navigation: 12 7) Fast navigation:
13 8) Printing: 13 8) Printing:
14 9) Configuration: 14 9) Configuration:
15 10) Language: 15 10) Language:
16 11) Alarm: 16 11) Alarm:
17 12) What'sThis Help: 17 12) What'sThis Help:
18 18
19B) Useful features, that are not straighforward to see 19B) Useful features, that are not straighforward to see
20 1) Right mouse click on Zaurus 20 1) Right mouse click on Zaurus
21 2) Moving of items in the agenda view 21 2) Moving of items in the agenda view
22 3) Creating exceptions for recurring events 22 3) Creating exceptions for recurring events
23 4) Accessing the week in agenda view from the Month view 23 4) Accessing the week in agenda view from the Month view
24 5) Navigation in month view 24 5) Navigation in month view
25 6) Navigation in agenda view 25 6) Navigation in agenda view
26 26
27 27
28****************************************************** 28******************************************************
29A) General features 29A) General features
30****************************************************** 30******************************************************
31Features of KO/Pi 1.9.12: 31Features of KO/Pi 1.9.12:
320) 320)
33Main features: 33Main features:
34KO/Pi makes synchronizing your data easy! 34KO/Pi makes synchronizing your data easy!
35Details in 1) and the sync HowTos. 35Details in 1) and the sync HowTos.
36With KO/Pi you can manage your events/todos/journals. 36With KO/Pi you can manage your events/todos/journals.
37Todos may have subtodos. 37Todos may have subtodos.
38A subtodo can be changed to a parent root todo. 38A subtodo can be changed to a parent root todo.
39A (sub)todo can be reparented to make it a subtodo of another todo. 39A (sub)todo can be reparented to make it a subtodo of another todo.
40KO/Pi has a monthview, a What's Next view, an event list view, a small and big todo-view and an agenda view to display 1-42 days. 40KO/Pi has a monthview, a What's Next view, an event list view, a small and big todo-view and an agenda view to display 1-42 days.
41KO/Pi is Qt-only based and runs on Sharp Zaurus PDA, Linux and Windows. 41KO/Pi is Qt-only based and runs on Sharp Zaurus PDA, Linux and Windows.
421) 421)
43Import - export - connection - syncing: 43Import - export - connection - syncing:
44KO/Pi on Windows can import calendar data easyly from Outlook directly via OLE. 44KO/Pi on Windows can import calendar data easyly from Outlook directly via OLE.
45 Recurring events with exceptions and attendee lists of meetings are imported properly. 45 Recurring events with exceptions and attendee lists of meetings are imported properly.
46KO/Pi can import/export ics and vcs files. 46KO/Pi can import/export ics and vcs files.
47KO/Pi can save/load ics backup files. 47KO/Pi can save/load ics backup files.
48KO/Pi can send ics and vcs files via infrared, with and without timezone settings.( Zaurus only ) 48KO/Pi can send ics and vcs files via infrared, with and without timezone settings.( Zaurus only )
49KO/Pi can receive files via infrared directly, after beam receive is enabled.( Zaurus only ) 49KO/Pi can receive files via infrared directly, after beam receive is enabled.( Zaurus only )
50 Via the search function you can send any number/selection of events/tasks/journal via infrared. 50 Via the search function you can send any number/selection of events/tasks/journal via infrared.
51Via the search function you can export and save any number/selection of events/tasks/journal to an ics file. 51Via the search function you can export and save any number/selection of events/tasks/journal to an ics file.
52Via the search function you can export and save any number/selection of journals and descriptions of events/todos to a plain text file. 52Via the search function you can export and save any number/selection of journals and descriptions of events/todos to a plain text file.
53KO/Pi can import xml calendar/todo data from Opie/old Qtopia environment. 53KO/Pi can import xml calendar/todo data from Opie/old Qtopia environment.
54KO/Pi can sync calendar/todo data with new Sharp Rom DTM model PIM applications, found on Zaurus 7x0/860 and Sharp Rom 3.1 (and above) for 5x00 series. 54KO/Pi can sync calendar/todo data with new Sharp Rom DTM model PIM applications, found on Zaurus 7x0/860 and Sharp Rom 3.1 (and above) for 5x00 series.
55(Hint: Rename /home/QtPalmtop/bin/datebook to e.g. /home/QtPalmtop/bin/datebookwech 55(Hint: Rename /home/QtPalmtop/bin/datebook to e.g. /home/QtPalmtop/bin/datebookwech
56to prevent alarm notification by the Sharp calendar app) 56to prevent alarm notification by the Sharp calendar app)
57KO/Pi can sync calendar/todo/journal data with any local ics file. 57KO/Pi can sync calendar/todo/journal data with any local ics file.
58In KO/Pi you can create a specific profile for each device to sync with. 58In KO/Pi you can create a specific profile for each device to sync with.
59 KO/Pi can automatically down/upload a remote ics file to a temp file via user specified system command (e.g. ssh/scp, ftp, ...) to sync with. 59 KO/Pi can automatically down/upload a remote ics file to a temp file via user specified system command (e.g. ssh/scp, ftp, ...) to sync with.
60 KO/Pi can ask you, if a conflict while syncing is detected and displays a detailed view of both events/todos. 60 KO/Pi can ask you, if a conflict while syncing is detected and displays a detailed view of both events/todos.
61 Multiple sync with many profiles at once is supported. Read "Multi Sync HowTo". 61 Multiple sync with many profiles at once is supported. Read "Multi Sync HowTo".
62 KO/Pi can sync after an easy and quick setup via network in the "Pi-Sync" mode with another running instance of KO/Pi with "Pi-Sync" enabled. 62 KO/Pi can sync after an easy and quick setup via network in the "Pi-Sync" mode with another running instance of KO/Pi with "Pi-Sync" enabled.
63 KO/Pi on Linux can sync with KDE calendar data. 63 KO/Pi on Linux can sync with KDE calendar data.
64 KO/Pi on the Zaurus can sync with KDE calendar data on desktop via Pi-Sync. Read "KDE-Sync HowTo". 64 KO/Pi on the Zaurus can sync with KDE calendar data on desktop via Pi-Sync. Read "KDE-Sync HowTo".
65 KO/Pi can sync and export data to mobile phones. Supported models are depending of the used lib, libgammu. 65 KO/Pi can sync and export data to mobile phones. Supported models are depending of the used lib, libgammu.
66 If KO/Pi detects that the saved file on disk has changed,(e.g. a remote sync from somewhere has happened), 66 If KO/Pi detects that the saved file on disk has changed,(e.g. a remote sync from somewhere has happened),
67 it asks you, if you want to overwrite the file or if you want to sync with the file. Such that no data is lost. 67 it asks you, if you want to overwrite the file or if you want to sync with the file. Such that no data is lost.
68KO/Pi can save/load templates for events/todos. 68KO/Pi can save/load templates for events/todos.
692) 692)
70Filter: 70Filter:
71You can define filters for displaying/not displaying specified categories. 71You can define filters for displaying/not displaying specified categories.
72Quick access to the first 20 filters via hotkeys 1-0 and <ctrl>1-0 72Quick access to the first 20 filters via hotkeys 1-0 and <ctrl>1-0
733) 733)
74Managing categories: 74Managing categories:
75After importing/loading/syncing there may be new categories in events or todos which are not in the category list. 75After importing/loading/syncing there may be new categories in events or todos which are not in the category list.
76 You can choose what to do with these categories: 76 You can choose what to do with these categories:
77 -Add to category list 77 -Add to category list
78 -Or remove them from events/todos 78 -Or remove them from events/todos
79In the list view/search dialog you can quickly assign categories to all selected items. 79In the list view/search dialog you can quickly assign categories to all selected items.
80 You can choose 80 You can choose
81 -to add a selection of categories to the list of categories 81 -to add a selection of categories to the list of categories
82 -to set a selection of categories as the new list of categories 82 -to set a selection of categories as the new list of categories
83You can specify a color to every categorie. 83You can specify a color to every categorie.
84 The events/tasks of this categorie are displayed with this color in the agenda view. 84 The events/tasks of this categorie are displayed with this color in the agenda view.
85 You can configure, if the events/tasks categorie color is shown in todo view/month view as well. 85 You can configure, if the events/tasks categorie color is shown in todo view/month view as well.
864) 864)
87Cancelling of items: 87Cancelling of items:
88You can cancel an event/todo without deleting them. 88You can cancel an event/todo without deleting them.
89The cancelled event/todo is then displayed stricked out. 89The cancelled event/todo is then displayed stricked out.
905) 905)
91Addressbook access: 91Addressbook access:
92You can access address entries stored in KA/Pi. 92You can access address entries stored in KA/Pi.
93You cam import birtdays from KA/Pi. 93You cam import birtdays from KA/Pi.
94In KA/Pi you can configure a new resource to get read-only acces to Opie addressbook data. 94In KA/Pi you can configure a new resource to get read-only acces to Opie addressbook data.
956) 956)
96Quick editing: 96Quick editing:
97You can quickly clone, move, cancel, beam events/todos. 97You can quickly clone, move, cancel, beam events/todos.
98When dragging a recurrent event in agenda view, this recurrence is automatically added to the list of recurrence exceptions and a non-recurring clone is created. 98When dragging a recurrent event in agenda view, this recurrence is automatically added to the list of recurrence exceptions and a non-recurring clone is created.
99If you click on a day number in month view, a new edit event dialog pops up. 99If you click on a day number in month view, a new edit event dialog pops up.
1007) 1007)
101Fast navigation: 101Fast navigation:
102There are many shortcuts for fast changing the view. Please refer to shortcut-key description. 102There are many shortcuts for fast changing the view. Please refer to shortcut-key description.
103If you click on the week number in month view, this week is shown in agenda view. 103If you click on the week number in month view, this week is shown in agenda view.
1048) 1048)
105Printing: 105Printing:
106On the desktop version, you can print out a vertical range of the agenda view "as you see it". 106On the desktop version, you can print out a vertical range of the agenda view "as you see it".
107And you can print on the desktop version a day view, three kinds of a week view and a month view. 107And you can print on the desktop version a day view, three kinds of a week view and a month view.
108You can print the todo list as well. 108You can print the todo list as well.
1099) 1099)
110Configuration: 110Configuration:
111There are many advanced configuration possibilities. 111There are many advanced configuration possibilities.
112You can configure for every item in the toolbar, whether it should be shown or not. 112You can configure for every item in the toolbar, whether it should be shown or not.
113There are two item sizes for toolbar icons available. (Useful for 5x00 user and small display). 113There are two item sizes for toolbar icons available. (Useful for 5x00 user and small display).
114You can configure the font/fontsize for every view. 114You can configure the font/fontsize for every view.
11510) 11510)
116Language: 116Language:
117KO/Pi is available in English, German, French and Italian. 117KO/Pi is available in English, German, French and Italian.
11811) 11811)
119Alarm: 119Alarm:
120For Zaurus there is an alarm applet available with additional timer functionality. 120For Zaurus there is an alarm applet available with additional timer functionality.
121This alarm applet will make the Zaurus wake up, if the device is in suspend mode. 121This alarm applet will make the Zaurus wake up, if the device is in suspend mode.
122On the desktop (e.g. Windows) you can enable in KO/Pi the internal alarm notification, 122On the desktop (e.g. Windows) you can enable in KO/Pi the internal alarm notification,
123such that you are informed about an alarm, if the program is running. 123such that you are informed about an alarm, if the program is running.
12412) 12412)
125What'sThis Help: 125What'sThis Help:
126To use the What'sThis Help, you have to enable the What'sThis icon in the toolbar. 126To use the What'sThis Help, you have to enable the What'sThis icon in the toolbar.
127(Choose menu: ME-Toolbar or Action-Configure Toolbar ). 127(Choose menu: ME-Toolbar or Action-Configure Toolbar ).
128(You have to restart to reload the changed toolbar config). 128(You have to restart to reload the changed toolbar config).
129Now click on the QWhat'sThis Icon 129Now click on the QWhat'sThis Icon
130in the top right corner of KO/Pi. 130in the top right corner of KO/Pi.
131Then click now after that on an item in the Agenda View or in the month view 131Then click now after that on an item in the Agenda View or in the month view
132you will get a detailed display of the items content. 132you will get a detailed display of the items content.
133 133
134 134
135 135
136****************************************************** 136******************************************************
137B) Useful features, that are not straighforward to see 137B) Useful features, that are not straighforward to see
138****************************************************** 138******************************************************
139 139
1401) Right mouse click on Zaurus 1401) Right mouse click on Zaurus
1412) Moving of items in the agenda view 1412) Moving of items in the agenda view
1423) Creating exceptions for recurring events 1423) Creating exceptions for recurring events
1434) Accessing the week in agenda view from the Month view 1434) Navigation in month view
1445) Navigation in month view 1445) Navigation in agenda view
1456) Navigation in agenda view 1456) Monthview as week view
1467) Monthview as week view 1467) Switching display mode in date edit
1478) Switching display mode in date edit
148 147
1491) 1481)
150Right mouse click on Zaurus: 149Right mouse click on Zaurus:
151In KO/Pi on the desktop a right mouse click will popup an menu on some items. 150In KO/Pi on the desktop a right mouse click will popup an menu on some items.
152On the Zaurus there can only the stylus be used. 151On the Zaurus there can only the stylus be used.
153To simulte a right mouse click with the stylus press is and hold it down 152To simulte a right mouse click with the stylus press is and hold it down
154for 1-2 seconds. If you release it then, a menu pops up, if there is 153for 1-2 seconds. If you release it then, a menu pops up, if there is
155a menu available for this particular item. 154a menu available for this particular item.
156On some places the menu pops up without releasing the stylus. 155On some places the menu pops up without releasing the stylus.
157That bevaviour is not a bug, it is caused by the the behaviour of the 156That bevaviour is not a bug, it is caused by the the behaviour of the
158single left click on the item. 157single left click on the item.
159 158
1602) 1592)
161Moving of items in the agenda view: 160Moving of items in the agenda view:
162In the agenda view you can move an item by clicking on it and holding 161In the agenda view you can move an item by clicking on it and holding
163the mouse down. 162the mouse down.
164You have to move the mouse some distance before the items actually 163You have to move the mouse some distance before the items actually
165starts to move. That is not abug, that is a feature to prevent 164starts to move. That is not abug, that is a feature to prevent
166you to make unwanted moves of the item when you click on it(and moving the 165you to make unwanted moves of the item when you click on it(and moving the
167mouse only a small distance with this click) 166mouse only a small distance with this click)
168 167
1693) 1683)
170Creating exceptions for recurring events: 169Creating exceptions for recurring events:
171To create an exception for a recurring event, 170To create an exception for a recurring event,
172move this event in the agenda view. 171move this event in the agenda view.
173This recurrence is automatically added to the list 172This recurrence is automatically added to the list
174of recurrence exceptions and a non-recurring clone is created. 173of recurrence exceptions and a non-recurring clone is created.
175To cancel a single recurrence, create an exception by moving it 174To cancel a single recurrence, create an exception by moving it
176and then move it back and cancel it. 175and then move it back and cancel it.
177 176
1784) 1774)
179Accessing the week in agenda view from the month view:
180In the month view there are on the left week numbers displayed.
181Click on a week number to see this week in the agenda view.
182
1835)
184Navigation in month view: 178Navigation in month view:
185If you select the month view with the icon in the toolbar, 179If you select the month view with the icon in the toolbar,
186the selected data range in the date navigator 180the selected data range in the date navigator
187is set automatically to the complete month. 181is set automatically to the complete month.
188(Click on month view and then the space bar to see the 182(Click on month view and then the space bar to see the
189selected data range in the date navigator). 183selected data range in the date navigator).
190If you select in the data navigator 184If you select in the data navigator
191(automatically by clicking on the month view or manually) 185(automatically by clicking on the month view or manually)
192a date range from the first of the month to the 186a date range from the first of the month to the
19328.-31. of the month (the 28.-31. is valid for every month!) 18728.-31. of the month (the 28.-31. is valid for every month!)
194then the (month-)navigation keys will select automatically the 188then the (month-)navigation keys will select automatically the
195complete next month as date range. 189complete next month as date range.
196 190
1976) 1915)
198Navigation in agenda view: 192Navigation in agenda view:
199If you select (as an example) 4 days in the date navigator 193If you select (as an example) 4 days in the date navigator
200the (week-) navigation key will select the same 4 days in the next week. 194the (week-) navigation key will select the same 4 days in the next week.
201If you want to get the next 4 days after the selected 4 days selected, 195If you want to get the next 4 days after the selected 4 days selected,
202you have to switch the navigation mode to "next days mode" 196you have to switch the navigation mode to "next days mode"
203by clicking on the next days icons. 197by clicking on the next days icons.
204Now the next days from today are selected, but after selecting 198Now the next days from today are selected, but after selecting
2054 days in the day navigator the (week-) navigation key 1994 days in the day navigator the (week-) navigation key
206will select the next 4 days. 200will select the next 4 days.
207The "next days mode" is turned off by clicking on the 201The "next days mode" is turned off by clicking on the
208week view, work week view or day view button. 202week view, work week view or day view button.
209The agenda view has "time labels" on the left, which displays the hours from 0-24. 203The agenda view has "time labels" on the left, which displays the hours from 0-24.
210If you press the mouse on the timelabels and move it up/down you can 204If you press the mouse on the timelabels and move it up/down you can
211increase/decrease the agenda size quickly. 205increase/decrease the agenda size quickly.
212 In the agenda view you can click on the day labels (e.g. Mon 14) 206 In the agenda view you can click on the day labels (e.g. Mon 14)
213to see the selected date in single day mode. 207to see the selected date in single day mode.
214If you click in single day mode the day label you will switch back to 208If you click in single day mode the day label you will switch back to
215the previously selected date range. 209the previously selected date range.
216Right of the day labels is a ">" button. 210Right of the day labels is a ">" button.
217If you click this button, you will go one day ahead. 211If you click this button, you will go one day ahead.
218Left of the day labels is the month name displayed. 212Left of the day labels is the month name displayed.
219If you click this button, the month view is shown. 213If you click this button, the month view is shown.
220 214
2217) 2156)
222Monthview as week view: 216Monthview as week view:
223On the left side of the monthview are the week number labels displayed. 217On the left side of the monthview are the week number labels displayed.
224On top of these labels is a "W" displayed. 218If you click on these labels, the month view will show this week zoomed.
225If you click on this button the month view mode will switch to week view mode. 219To go back to monthly view click the left label again.
226To switch back, please click the button, which now displays a "M". 220You can quickly select a week number by clicking the black triangle
221on top of the week number labels.
227 222
2288) 2237)
229Switching display mode in date edit: 224Switching display mode in date edit:
230On several places is a date edit used. 225On several places is a date edit used.
231You can scroll the dates by selecting the part of the date (month, day, year) 226You can scroll the dates by selecting the part of the date (month, day, year)
232in the lineedit and pressing the key up/key down key. 227in the lineedit and pressing the key up/key down key.
233The display mode of a date edit is initially short date mode. 228The display mode of a date edit is initially short date mode.
234(I.e. weekday names are not displayed) 229(I.e. weekday names are not displayed)
235If you doubleclick in the lineedit the mode switches to long date mode. 230If you doubleclick in the lineedit the mode switches to long date mode.
236Now the weekday names are displayed for better overview. 231Now the weekday names are displayed for better overview.
237To switch back simply doubleclick again in the line edit. 232To switch back simply doubleclick again in the line edit.
238 233
239 234
240 235
241 236
242 237
243 238
244 239
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 00b1e92..f2cfb75 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -417,996 +417,1011 @@ void MonthViewCell::startUpdateCell()
417 } 417 }
418 mItemList->clear(); 418 mItemList->clear();
419 419
420#ifdef DESKTOP_VERSION 420#ifdef DESKTOP_VERSION
421 QToolTip::remove(this); 421 QToolTip::remove(this);
422#endif 422#endif
423 mToolTip = ""; 423 mToolTip = "";
424 //qApp->processEvents(); 424 //qApp->processEvents();
425 if ( !mHolidayString.isEmpty() ) { 425 if ( !mHolidayString.isEmpty() ) {
426 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 426 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
427 item->setPalette( mHolidayPalette ); 427 item->setPalette( mHolidayPalette );
428 mItemList->insertItem( item ); 428 mItemList->insertItem( item );
429 mToolTip += mHolidayString+"\n"; 429 mToolTip += mHolidayString+"\n";
430 } 430 }
431} 431}
432 432
433void MonthViewCell::insertEvent(Event *event) 433void MonthViewCell::insertEvent(Event *event)
434{ 434{
435 if ( !(event->doesRecur() == Recurrence::rNone) ) { 435 if ( !(event->doesRecur() == Recurrence::rNone) ) {
436 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 436 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
437 return; 437 return;
438 else 438 else
439 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 439 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
440 return; 440 return;
441 } 441 }
442 442
443 if ( event->categories().contains("Holiday") || 443 if ( event->categories().contains("Holiday") ||
444 event->categories().contains(i18n("Holiday"))) { 444 event->categories().contains(i18n("Holiday"))) {
445 setHoliday( true ); 445 setHoliday( true );
446 if ( mDate.dayOfWeek() == 7 ) 446 if ( mDate.dayOfWeek() == 7 )
447 mItemList->setLineWidth( 3 ); 447 mItemList->setLineWidth( 3 );
448 } 448 }
449 QString text; 449 QString text;
450 if (event->isMultiDay()) { 450 if (event->isMultiDay()) {
451 QString prefix = "<->"; 451 QString prefix = "<->";
452 if ( event->doesRecur() ) { 452 if ( event->doesRecur() ) {
453 if ( event->recursOn( mDate) ) 453 if ( event->recursOn( mDate) )
454 prefix ="->" ; 454 prefix ="->" ;
455 else { 455 else {
456 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 456 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
457 if ( event->recursOn( mDate.addDays( -days)) ) 457 if ( event->recursOn( mDate.addDays( -days)) )
458 prefix ="<-" ; 458 prefix ="<-" ;
459 } 459 }
460 460
461 } else { 461 } else {
462 if (mDate == event->dtStart().date()) { 462 if (mDate == event->dtStart().date()) {
463 prefix ="->" ; 463 prefix ="->" ;
464 } else if (mDate == event->dtEnd().date()) { 464 } else if (mDate == event->dtEnd().date()) {
465 prefix ="<-" ; 465 prefix ="<-" ;
466 } 466 }
467 } 467 }
468 if ( !event->doesFloat() ) { 468 if ( !event->doesFloat() ) {
469 if ( mDate == event->dtStart().date () ) 469 if ( mDate == event->dtStart().date () )
470 prefix += KGlobal::locale()->formatTime(event->dtStart().time())+" "; 470 prefix += KGlobal::locale()->formatTime(event->dtStart().time())+" ";
471 else if ( mDate == event->dtEnd().date () ) 471 else if ( mDate == event->dtEnd().date () )
472 prefix += KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 472 prefix += KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
473 473
474 } 474 }
475 text = prefix + event->summary(); 475 text = prefix + event->summary();
476 mToolTip += text; 476 mToolTip += text;
477 } else { 477 } else {
478 if (event->doesFloat()) { 478 if (event->doesFloat()) {
479 text = event->summary(); 479 text = event->summary();
480 mToolTip += text; 480 mToolTip += text;
481 } 481 }
482 else { 482 else {
483 text = KGlobal::locale()->formatTime(event->dtStart().time()); 483 text = KGlobal::locale()->formatTime(event->dtStart().time());
484 text += " " + event->summary(); 484 text += " " + event->summary();
485 mToolTip += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 485 mToolTip += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
486 } 486 }
487 } 487 }
488 488
489 MonthViewItem *item = new MonthViewItem( event, mDate, text ); 489 MonthViewItem *item = new MonthViewItem( event, mDate, text );
490 QPalette pal; 490 QPalette pal;
491 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 491 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
492 QStringList categories = event->categories(); 492 QStringList categories = event->categories();
493 QString cat = categories.first(); 493 QString cat = categories.first();
494 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 494 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
495 pal = getPalette(); 495 pal = getPalette();
496 if (cat.isEmpty()) { 496 if (cat.isEmpty()) {
497 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 497 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
498 } else { 498 } else {
499 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 499 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
500 } 500 }
501 501
502 } else { 502 } else {
503 if (cat.isEmpty()) { 503 if (cat.isEmpty()) {
504 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 504 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
505 } else { 505 } else {
506 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 506 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
507 } 507 }
508 } 508 }
509 509
510 } else { 510 } else {
511 pal = mStandardPalette ; 511 pal = mStandardPalette ;
512 } 512 }
513 item->setPalette( pal ); 513 item->setPalette( pal );
514 item->setRecur( event->recurrence()->doesRecur() ); 514 item->setRecur( event->recurrence()->doesRecur() );
515 item->setAlarm( event->isAlarmEnabled() ); 515 item->setAlarm( event->isAlarmEnabled() );
516 item->setMoreInfo( event->description().length() > 0 ); 516 item->setMoreInfo( event->description().length() > 0 );
517#ifdef DESKTOP_VERSION 517#ifdef DESKTOP_VERSION
518 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 518 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
519 KOPrefs::instance()->email()); 519 KOPrefs::instance()->email());
520 if ( me != 0 ) { 520 if ( me != 0 ) {
521 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 521 if ( me->status() == Attendee::NeedsAction && me->RSVP())
522 item->setReply(true); 522 item->setReply(true);
523 else 523 else
524 item->setReply(false); 524 item->setReply(false);
525 } else 525 } else
526 item->setReply(false); 526 item->setReply(false);
527#endif 527#endif
528 mItemList->insertItem( item ); 528 mItemList->insertItem( item );
529 mToolTip += "\n"; 529 mToolTip += "\n";
530} 530}
531void MonthViewCell::insertTodo(Todo *todo) 531void MonthViewCell::insertTodo(Todo *todo)
532{ 532{
533 QString text; 533 QString text;
534 if (todo->hasDueDate()) { 534 if (todo->hasDueDate()) {
535 if (!todo->doesFloat()) { 535 if (!todo->doesFloat()) {
536 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 536 text += KGlobal::locale()->formatTime(todo->dtDue().time());
537 text += " "; 537 text += " ";
538 } 538 }
539 } 539 }
540 text += i18n("To-Do: %1").arg(todo->summary()); 540 text += i18n("To-Do: %1").arg(todo->summary());
541 541
542 MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 542 MonthViewItem *item = new MonthViewItem( todo, mDate, text );
543 //item->setPalette( mStandardPalette ); 543 //item->setPalette( mStandardPalette );
544 QPalette pal; 544 QPalette pal;
545 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 545 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
546 QStringList categories = todo->categories(); 546 QStringList categories = todo->categories();
547 QString cat = categories.first(); 547 QString cat = categories.first();
548 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 548 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
549 pal = getPalette(); 549 pal = getPalette();
550 if (cat.isEmpty()) { 550 if (cat.isEmpty()) {
551 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 551 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
552 } else { 552 } else {
553 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 553 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
554 } 554 }
555 555
556 } else { 556 } else {
557 if (cat.isEmpty()) { 557 if (cat.isEmpty()) {
558 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 558 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
559 } else { 559 } else {
560 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 560 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
561 } 561 }
562 } 562 }
563 563
564 } else { 564 } else {
565 pal = mStandardPalette ; 565 pal = mStandardPalette ;
566 } 566 }
567 item->setPalette( pal ); 567 item->setPalette( pal );
568 mItemList->insertItem( item ); 568 mItemList->insertItem( item );
569 mToolTip += text+"\n"; 569 mToolTip += text+"\n";
570} 570}
571void MonthViewCell::finishUpdateCell() 571void MonthViewCell::finishUpdateCell()
572{ 572{
573#ifdef DESKTOP_VERSION 573#ifdef DESKTOP_VERSION
574 if (mToolTip != "") 574 if (mToolTip != "")
575 QToolTip::add(this,mToolTip,toolTipGroup(),""); 575 QToolTip::add(this,mToolTip,toolTipGroup(),"");
576#endif 576#endif
577 mItemList->sort(); 577 mItemList->sort();
578 //setMyPalette(); 578 //setMyPalette();
579 setMyPalette(); 579 setMyPalette();
580 QString text; 580 QString text;
581 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 581 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
582 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 582 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
583 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " "; 583 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " ";
584 mLabel->resize( mLabelBigSize ); 584 mLabel->resize( mLabelBigSize );
585 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 585 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
586 } else { 586 } else {
587 mLabel->resize( mLabelSize ); 587 mLabel->resize( mLabelSize );
588 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 588 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
589 } 589 }
590 590
591 mLabel->setText( text ); 591 mLabel->setText( text );
592 resizeEvent( 0 ); 592 resizeEvent( 0 );
593} 593}
594void MonthViewCell::updateCell() 594void MonthViewCell::updateCell()
595{ 595{
596 if ( !mMonthView->isUpdatePossible() ) 596 if ( !mMonthView->isUpdatePossible() )
597 return; 597 return;
598 startUpdateCell(); 598 startUpdateCell();
599 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 599 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
600 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 600 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
601 Event *event; 601 Event *event;
602 for( event = events.first(); event; event = events.next() ) { // for event 602 for( event = events.first(); event; event = events.next() ) { // for event
603 insertEvent(event); 603 insertEvent(event);
604 } 604 }
605 // insert due todos 605 // insert due todos
606 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 606 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
607 Todo *todo; 607 Todo *todo;
608 for(todo = todos.first(); todo; todo = todos.next()) { 608 for(todo = todos.first(); todo; todo = todos.next()) {
609 insertTodo( todo ); 609 insertTodo( todo );
610 } 610 }
611 finishUpdateCell(); 611 finishUpdateCell();
612 // if ( isVisible()) 612 // if ( isVisible())
613 //qApp->processEvents(); 613 //qApp->processEvents();
614} 614}
615 615
616void MonthViewCell::updateConfig() 616void MonthViewCell::updateConfig()
617{ 617{
618 setFont( KOPrefs::instance()->mMonthViewFont ); 618 setFont( KOPrefs::instance()->mMonthViewFont );
619 619
620 QFontMetrics fm( font() ); 620 QFontMetrics fm( font() );
621 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 621 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
622 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 622 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
623 mHolidayPalette = mStandardPalette; 623 mHolidayPalette = mStandardPalette;
624 mPrimaryPalette = mStandardPalette; 624 mPrimaryPalette = mStandardPalette;
625 mNonPrimaryPalette = mStandardPalette; 625 mNonPrimaryPalette = mStandardPalette;
626 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 626 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
627 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 627 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
628 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 628 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
629 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 629 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
630 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 630 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
631 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 631 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
632 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 632 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
633 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 633 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
634 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 634 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
635 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 635 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
636 } 636 }
637 //updateCell(); 637 //updateCell();
638} 638}
639 639
640void MonthViewCell::enableScrollBars( bool enabled ) 640void MonthViewCell::enableScrollBars( bool enabled )
641{ 641{
642 if ( enabled ) { 642 if ( enabled ) {
643 mItemList->setVScrollBarMode(QScrollView::Auto); 643 mItemList->setVScrollBarMode(QScrollView::Auto);
644 mItemList->setHScrollBarMode(QScrollView::Auto); 644 mItemList->setHScrollBarMode(QScrollView::Auto);
645 } else { 645 } else {
646 mItemList->setVScrollBarMode(QScrollView::AlwaysOff); 646 mItemList->setVScrollBarMode(QScrollView::AlwaysOff);
647 mItemList->setHScrollBarMode(QScrollView::AlwaysOff); 647 mItemList->setHScrollBarMode(QScrollView::AlwaysOff);
648 } 648 }
649} 649}
650 650
651Incidence *MonthViewCell::selectedIncidence() 651Incidence *MonthViewCell::selectedIncidence()
652{ 652{
653 int index = mItemList->currentItem(); 653 int index = mItemList->currentItem();
654 if ( index < 0 ) return 0; 654 if ( index < 0 ) return 0;
655 655
656 MonthViewItem *item = 656 MonthViewItem *item =
657 static_cast<MonthViewItem *>( mItemList->item( index ) ); 657 static_cast<MonthViewItem *>( mItemList->item( index ) );
658 658
659 if ( !item ) return 0; 659 if ( !item ) return 0;
660 660
661 return item->incidence(); 661 return item->incidence();
662} 662}
663 663
664QDate MonthViewCell::selectedIncidenceDate() 664QDate MonthViewCell::selectedIncidenceDate()
665{ 665{
666 QDate qd; 666 QDate qd;
667 int index = mItemList->currentItem(); 667 int index = mItemList->currentItem();
668 if ( index < 0 ) return qd; 668 if ( index < 0 ) return qd;
669 669
670 MonthViewItem *item = 670 MonthViewItem *item =
671 static_cast<MonthViewItem *>( mItemList->item( index ) ); 671 static_cast<MonthViewItem *>( mItemList->item( index ) );
672 672
673 if ( !item ) return qd; 673 if ( !item ) return qd;
674 674
675 return item->incidenceDate(); 675 return item->incidenceDate();
676} 676}
677 677
678void MonthViewCell::deselect() 678void MonthViewCell::deselect()
679{ 679{
680 mItemList->clearSelection(); 680 mItemList->clearSelection();
681 enableScrollBars( false ); 681 enableScrollBars( false );
682 // updateCell(); 682 // updateCell();
683} 683}
684void MonthViewCell::select() 684void MonthViewCell::select()
685{ 685{
686 ;// updateCell(); 686 ;// updateCell();
687} 687}
688 688
689void MonthViewCell::resizeEvent ( QResizeEvent * ) 689void MonthViewCell::resizeEvent ( QResizeEvent * )
690{ 690{
691 if ( !mMonthView->isUpdatePossible() ) 691 if ( !mMonthView->isUpdatePossible() )
692 return; 692 return;
693 693
694 int size = height() - mLabel->height() - 2; 694 int size = height() - mLabel->height() - 2;
695 if ( size > 0 ) 695 if ( size > 0 )
696 mItemList->verticalScrollBar()->setMaximumHeight( size ); 696 mItemList->verticalScrollBar()->setMaximumHeight( size );
697 size = width() - mLabel->width() -2; 697 size = width() - mLabel->width() -2;
698 if ( size > 0 ) 698 if ( size > 0 )
699 mItemList->horizontalScrollBar()->setMaximumWidth( size ); 699 mItemList->horizontalScrollBar()->setMaximumWidth( size );
700 mLabel->move( width()-mItemList->lineWidth() - mLabel->width(), height()-mItemList->lineWidth() - mLabel->height() ); 700 mLabel->move( width()-mItemList->lineWidth() - mLabel->width(), height()-mItemList->lineWidth() - mLabel->height() );
701 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 701 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
702} 702}
703 703
704void MonthViewCell::defaultAction( QListBoxItem *item ) 704void MonthViewCell::defaultAction( QListBoxItem *item )
705{ 705{
706 if ( !item ) return; 706 if ( !item ) return;
707 707
708 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 708 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
709 Incidence *incidence = eventItem->incidence(); 709 Incidence *incidence = eventItem->incidence();
710 if ( incidence ) mMonthView->defaultAction( incidence ); 710 if ( incidence ) mMonthView->defaultAction( incidence );
711} 711}
712void MonthViewCell::showDay() 712void MonthViewCell::showDay()
713{ 713{
714 emit showDaySignal( date() ); 714 emit showDaySignal( date() );
715} 715}
716void MonthViewCell::newEvent() 716void MonthViewCell::newEvent()
717{ 717{
718 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 718 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
719 emit newEventSignal( dt ); 719 emit newEventSignal( dt );
720} 720}
721void MonthViewCell::cellClicked( QListBoxItem *item ) 721void MonthViewCell::cellClicked( QListBoxItem *item )
722{ 722{
723 static QListBoxItem * lastClicked = 0; 723 static QListBoxItem * lastClicked = 0;
724 if ( item == 0 ) { 724 if ( item == 0 ) {
725 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 725 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
726 emit newEventSignal( dt ); 726 emit newEventSignal( dt );
727 return; 727 return;
728 } 728 }
729 /* 729 /*
730 if ( lastClicked ) 730 if ( lastClicked )
731 if ( ! item ) { 731 if ( ! item ) {
732 if ( lastClicked->listBox() != item->listBox() ) 732 if ( lastClicked->listBox() != item->listBox() )
733 lastClicked->listBox()->clearSelection(); 733 lastClicked->listBox()->clearSelection();
734 } 734 }
735 */ 735 */
736 736
737 mMonthView->setSelectedCell( this ); 737 mMonthView->setSelectedCell( this );
738 if( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) enableScrollBars( true ); 738 if( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) enableScrollBars( true );
739 select(); 739 select();
740} 740}
741 741
742void MonthViewCell::contextMenu( QListBoxItem *item ) 742void MonthViewCell::contextMenu( QListBoxItem *item )
743{ 743{
744 if ( !item ) return; 744 if ( !item ) return;
745 745
746 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 746 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
747 Incidence *incidence = eventItem->incidence(); 747 Incidence *incidence = eventItem->incidence();
748 if ( incidence ) mMonthView->showContextMenu( incidence ); 748 if ( incidence ) mMonthView->showContextMenu( incidence );
749} 749}
750 750
751void MonthViewCell::selection( QListBoxItem *item ) 751void MonthViewCell::selection( QListBoxItem *item )
752{ 752{
753 if ( !item ) return; 753 if ( !item ) return;
754 754
755 mMonthView->setSelectedCell( this ); 755 mMonthView->setSelectedCell( this );
756} 756}
757 757
758 758
759// ******************************************************************************* 759// *******************************************************************************
760// ******************************************************************************* 760// *******************************************************************************
761// ******************************************************************************* 761// *******************************************************************************
762 762
763 763
764KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 764KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
765 : KOEventView( calendar, parent, name ), 765 : KOEventView( calendar, parent, name ),
766 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 766 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
767 mShortDayLabels( false ), mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 767 mShortDayLabels( false ), mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
768{ 768{
769 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 769 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
770 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 770 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
771 if ( mShowWeekView ) 771 if ( mShowWeekView )
772 mWeekStartsMonday = true; 772 mWeekStartsMonday = true;
773 updatePossible = false; 773 updatePossible = false;
774 mCells.setAutoDelete( true ); 774 mCells.setAutoDelete( true );
775 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 775 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
776 // mDayLayout = new QGridLayout( this ); 776 // mDayLayout = new QGridLayout( this );
777 // create the day of the week labels (Sun, Mon, etc) and add them to 777 // create the day of the week labels (Sun, Mon, etc) and add them to
778 // the layout. 778 // the layout.
779 mDayLabels.resize( mDaysPerWeek ); 779 mDayLabels.resize( mDaysPerWeek );
780 QFont bfont = font(); 780 QFont bfont = font();
781 if ( QApplication::desktop()->width() < 650 ) { 781 if ( QApplication::desktop()->width() < 650 ) {
782 bfont.setPointSize( bfont.pointSize() - 2 ); 782 bfont.setPointSize( bfont.pointSize() - 2 );
783 } 783 }
784 bfont.setBold( true ); 784 bfont.setBold( true );
785 int i; 785 int i;
786 786
787 for( i = 0; i < mDaysPerWeek; i++ ) { 787 for( i = 0; i < mDaysPerWeek; i++ ) {
788 QLabel *label = new QLabel( this ); 788 QLabel *label = new QLabel( this );
789 label->setFont(bfont); 789 label->setFont(bfont);
790 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 790 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
791 label->setLineWidth(1); 791 label->setLineWidth(1);
792 label->setAlignment(AlignCenter); 792 label->setAlignment(AlignCenter);
793 mDayLabels.insert( i, label ); 793 mDayLabels.insert( i, label );
794 } 794 }
795 795
796 bfont.setBold( false ); 796 bfont.setBold( false );
797 mWeekLabels.resize( mNumWeeks+1 ); 797 mWeekLabels.resize( mNumWeeks+1 );
798 for( i = 0; i < mNumWeeks+1; i++ ) { 798 for( i = 0; i < mNumWeeks+1; i++ ) {
799 KOWeekButton *label = new KOWeekButton( this ); 799 KOWeekButton *label = new KOWeekButton( this );
800 label->setFont(bfont); 800 label->setFont(bfont);
801 connect( label, SIGNAL( selectWeekNum ( int )),this, SIGNAL( selectWeekNum ( int )) ); 801 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
802 label->setFlat(true); 802 label->setFlat(true);
803 QWhatsThis::add(label,i18n("Click on the week number to\nshow week in agenda view")); 803 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
804 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 804 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
805 //label->setLineWidth(1); 805 //label->setLineWidth(1);
806 //label->setAlignment(AlignCenter); 806 //label->setAlignment(AlignCenter);
807 mWeekLabels.insert( i, label ); 807 mWeekLabels.insert( i, label );
808 } 808 }
809 mWeekLabels[mNumWeeks]->setText( i18n("W")); 809 mWeekLabels[mNumWeeks]->setText( i18n(""));
810 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nswitch to week mode view")); 810 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
811 int row, col; 811 int row, col;
812 QPopupMenu * wpo = new QPopupMenu (this);
813 wpo->insertItem( i18n("W#"), 0 );
814 for ( i = 1; i < 54; i++ )
815 wpo->insertItem( i18n("%1").arg(i), i );
816 mWeekLabels[mNumWeeks]->setPopup( wpo );
812 mCells.resize( mNumCells ); 817 mCells.resize( mNumCells );
813 for( row = 0; row < mNumWeeks; ++row ) { 818 for( row = 0; row < mNumWeeks; ++row ) {
814 for( col = 0; col < mDaysPerWeek; ++col ) { 819 for( col = 0; col < mDaysPerWeek; ++col ) {
815 MonthViewCell *cell = new MonthViewCell( this ); 820 MonthViewCell *cell = new MonthViewCell( this );
816 mCells.insert( row * mDaysPerWeek + col, cell ); 821 mCells.insert( row * mDaysPerWeek + col, cell );
817 822
818 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 823 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
819 SLOT( defaultAction( Incidence * ) ) ); 824 SLOT( defaultAction( Incidence * ) ) );
820 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 825 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
821 SIGNAL( newEventSignal( QDateTime ) ) ); 826 SIGNAL( newEventSignal( QDateTime ) ) );
822 connect( cell, SIGNAL( showDaySignal( QDate ) ), 827 connect( cell, SIGNAL( showDaySignal( QDate ) ),
823 SIGNAL( showDaySignal( QDate ) ) ); 828 SIGNAL( showDaySignal( QDate ) ) );
824 } 829 }
825 } 830 }
826 831
827 connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), 832 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
828 SLOT( switchView() ) ); 833 connect( wpo, SIGNAL( activated(int) ), SIGNAL( selectWeekNum ( int ) ) );
829 mContextMenu = eventPopup(); 834 mContextMenu = eventPopup();
830 // updateConfig(); //useless here 835 // updateConfig(); //useless here
831 836
832 emit incidenceSelected( 0 ); 837 emit incidenceSelected( 0 );
833} 838}
834 839
835KOMonthView::~KOMonthView() 840KOMonthView::~KOMonthView()
836{ 841{
837 delete mContextMenu; 842 delete mContextMenu;
838} 843}
844void KOMonthView::selectDateWeekNum ( int )
845{
846
847}
848void KOMonthView::selectInternalWeekNum ( int n )
849{
850 emit selectWeekNum ( n );
851 switchView();
852}
853
839void KOMonthView::switchView() 854void KOMonthView::switchView()
840{ 855{
841 if ( selectedCell( ) ) 856 if ( selectedCell( ) )
842 selectedCell()->deselect(); 857 selectedCell()->deselect();
843 mShowWeekView = !mShowWeekView; 858 mShowWeekView = !mShowWeekView;
844 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 859 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
845 emit showNavigator( !mShowWeekView ); 860 //emit showNavigator( !mShowWeekView );
846 computeLayout(); 861 computeLayout();
847 updateConfig(); 862 updateConfig();
848} 863}
849 864
850int KOMonthView::maxDatesHint() 865int KOMonthView::maxDatesHint()
851{ 866{
852 return mNumCells; 867 return mNumCells;
853} 868}
854 869
855int KOMonthView::currentDateCount() 870int KOMonthView::currentDateCount()
856{ 871{
857 return mNumCells; 872 return mNumCells;
858} 873}
859 874
860QPtrList<Incidence> KOMonthView::selectedIncidences() 875QPtrList<Incidence> KOMonthView::selectedIncidences()
861{ 876{
862 QPtrList<Incidence> selected; 877 QPtrList<Incidence> selected;
863 878
864 if ( mSelectedCell ) { 879 if ( mSelectedCell ) {
865 Incidence *incidence = mSelectedCell->selectedIncidence(); 880 Incidence *incidence = mSelectedCell->selectedIncidence();
866 if ( incidence ) selected.append( incidence ); 881 if ( incidence ) selected.append( incidence );
867 } 882 }
868 883
869 return selected; 884 return selected;
870} 885}
871 886
872DateList KOMonthView::selectedDates() 887DateList KOMonthView::selectedDates()
873{ 888{
874 DateList selected; 889 DateList selected;
875 890
876 if ( mSelectedCell ) { 891 if ( mSelectedCell ) {
877 QDate qd = mSelectedCell->selectedIncidenceDate(); 892 QDate qd = mSelectedCell->selectedIncidenceDate();
878 if ( qd.isValid() ) selected.append( qd ); 893 if ( qd.isValid() ) selected.append( qd );
879 } 894 }
880 895
881 return selected; 896 return selected;
882} 897}
883 898
884void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 899void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
885 const QDate &td) 900 const QDate &td)
886{ 901{
887#ifndef KORG_NOPRINTER 902#ifndef KORG_NOPRINTER
888 calPrinter->preview(CalPrinter::Month, fd, td); 903 calPrinter->preview(CalPrinter::Month, fd, td);
889#endif 904#endif
890} 905}
891 906
892void KOMonthView::updateConfig() 907void KOMonthView::updateConfig()
893{ 908{
894 909
895 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 910 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
896 911
897 if ( mShowWeekView ) 912 if ( mShowWeekView )
898 mWeekStartsMonday = true; 913 mWeekStartsMonday = true;
899 QFontMetrics fontmetric(mDayLabels[0]->font()); 914 QFontMetrics fontmetric(mDayLabels[0]->font());
900 mWidthLongDayLabel = 0; 915 mWidthLongDayLabel = 0;
901 916
902 for (int i = 0; i < 7; i++) { 917 for (int i = 0; i < 7; i++) {
903 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 918 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
904 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 919 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
905 } 920 }
906 bool temp = mShowSatSunComp ; 921 bool temp = mShowSatSunComp ;
907 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 922 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
908 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 923 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
909 computeLayout(); 924 computeLayout();
910 updateDayLabels(); 925 updateDayLabels();
911 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 926 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
912 int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 927 int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
913 //resizeEvent( 0 ); 928 //resizeEvent( 0 );
914 for (uint i = 0; i < mCells.count(); ++i) { 929 for (uint i = 0; i < mCells.count(); ++i) {
915 mCells[i]->updateConfig(); 930 mCells[i]->updateConfig();
916 } 931 }
917#ifdef DESKTOP_VERSION 932#ifdef DESKTOP_VERSION
918 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); 933 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
919#endif 934#endif
920 updateView(); 935 updateView();
921} 936}
922 937
923void KOMonthView::updateDayLabels() 938void KOMonthView::updateDayLabels()
924{ 939{
925 940
926 for (int i = 0; i < 7; i++) { 941 for (int i = 0; i < 7; i++) {
927 if (mWeekStartsMonday) { 942 if (mWeekStartsMonday) {
928 bool show = mShortDayLabels; 943 bool show = mShortDayLabels;
929 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > mDayLabels[i]->width() ) 944 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > mDayLabels[i]->width() )
930 show = true; 945 show = true;
931 mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 946 mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
932 } else { 947 } else {
933 if (i==0) mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels)); 948 if (i==0) mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels));
934 else mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels)); 949 else mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels));
935 950
936 } 951 }
937 } 952 }
938} 953}
939 954
940void KOMonthView::showDates(const QDate &start, const QDate &) 955void KOMonthView::showDates(const QDate &start, const QDate &)
941{ 956{
942 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 957 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
943 958
944 959
945 mStartDate = start; 960 mStartDate = start;
946 961
947 int startWeekDay = mWeekStartsMonday ? 1 : 7; 962 int startWeekDay = mWeekStartsMonday ? 1 : 7;
948 963
949 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 964 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
950 mStartDate = mStartDate.addDays( -1 ); 965 mStartDate = mStartDate.addDays( -1 );
951 } 966 }
952 967
953 bool primary = false; 968 bool primary = false;
954 uint i; 969 uint i;
955 for( i = 0; i < mCells.size(); ++i ) { 970 for( i = 0; i < mCells.size(); ++i ) {
956 QDate date = mStartDate.addDays( i ); 971 QDate date = mStartDate.addDays( i );
957 mCells[i]->setDate( date ); 972 mCells[i]->setDate( date );
958 973
959#ifndef KORG_NOPLUGINS 974#ifndef KORG_NOPLUGINS
960 // add holiday, if present 975 // add holiday, if present
961 QString hstring(KOCore::self()->holiday(date)); 976 QString hstring(KOCore::self()->holiday(date));
962 mCells[i]->setHoliday( hstring ); 977 mCells[i]->setHoliday( hstring );
963#endif 978#endif
964 979
965 } 980 }
966 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 981 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
967 for( i = 0; i < 6; ++i ) { 982 for( i = 0; i < 6; ++i ) {
968 int wno; 983 int wno;
969 // remember, according to ISO 8601, the first week of the year is the 984 // remember, according to ISO 8601, the first week of the year is the
970 // first week that contains a thursday. Thus we must subtract off 4, 985 // first week that contains a thursday. Thus we must subtract off 4,
971 // not just 1. 986 // not just 1.
972 int dayOfYear = date.dayOfYear(); 987 int dayOfYear = date.dayOfYear();
973 if (dayOfYear % 7 != 0) 988 if (dayOfYear % 7 != 0)
974 wno = dayOfYear / 7 + 1; 989 wno = dayOfYear / 7 + 1;
975 else 990 else
976 wno =dayOfYear / 7; 991 wno =dayOfYear / 7;
977 mWeekLabels[i]->setWeekNum( wno ); 992 mWeekLabels[i]->setWeekNum( wno );
978 date = date.addDays( 7 ); 993 date = date.addDays( 7 );
979 } 994 }
980 updateView(); 995 updateView();
981} 996}
982 997
983void KOMonthView::showEvents(QPtrList<Event>) 998void KOMonthView::showEvents(QPtrList<Event>)
984{ 999{
985 qDebug("KOMonthView::selectEvents is not implemented yet. "); 1000 qDebug("KOMonthView::selectEvents is not implemented yet. ");
986} 1001}
987 1002
988void KOMonthView::changeEventDisplay(Event *, int) 1003void KOMonthView::changeEventDisplay(Event *, int)
989{ 1004{
990 // this should be re-written to be much more efficient, but this 1005 // this should be re-written to be much more efficient, but this
991 // quick-and-dirty-hack gets the job done for right now. 1006 // quick-and-dirty-hack gets the job done for right now.
992 updateView(); 1007 updateView();
993} 1008}
994 1009
995void KOMonthView::updateView() 1010void KOMonthView::updateView()
996{ 1011{
997 1012
998 if ( !updatePossible ) 1013 if ( !updatePossible )
999 return; 1014 return;
1000 //QTime ti; 1015 //QTime ti;
1001 //ti.start(); 1016 //ti.start();
1002#if 1 1017#if 1
1003 int i; 1018 int i;
1004 int timeSpan = mCells.size()-1; 1019 int timeSpan = mCells.size()-1;
1005 if ( KOPrefs::instance()->mMonthViewWeek ) 1020 if ( KOPrefs::instance()->mMonthViewWeek )
1006 timeSpan = 6; 1021 timeSpan = 6;
1007 for( i = 0; i < timeSpan + 1; ++i ) { 1022 for( i = 0; i < timeSpan + 1; ++i ) {
1008 mCells[i]->startUpdateCell(); 1023 mCells[i]->startUpdateCell();
1009 } 1024 }
1010 1025
1011 QPtrList<Event> events = calendar()->events(); 1026 QPtrList<Event> events = calendar()->events();
1012 Event *event; 1027 Event *event;
1013 QDateTime dt; 1028 QDateTime dt;
1014 bool ok; 1029 bool ok;
1015 QDate endDate = mStartDate.addDays( timeSpan ); 1030 QDate endDate = mStartDate.addDays( timeSpan );
1016 for( event = events.first(); event; event = events.next() ) { // for event 1031 for( event = events.first(); event; event = events.next() ) { // for event
1017 if ( event->doesRecur() ) { 1032 if ( event->doesRecur() ) {
1018 bool last; 1033 bool last;
1019 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1034 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1020 QDateTime incidenceEnd; 1035 QDateTime incidenceEnd;
1021 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1036 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1022 bool invalid = false; 1037 bool invalid = false;
1023 while( true ) { 1038 while( true ) {
1024 if ( incidenceStart.isValid() ) { 1039 if ( incidenceStart.isValid() ) {
1025 incidenceEnd = incidenceStart.addDays( eventlen ); 1040 incidenceEnd = incidenceStart.addDays( eventlen );
1026 int st = incidenceStart.date().daysTo( endDate ); 1041 int st = incidenceStart.date().daysTo( endDate );
1027 if ( st >= 0 ) { // start before timeend 1042 if ( st >= 0 ) { // start before timeend
1028 int end = mStartDate.daysTo( incidenceEnd.date() ); 1043 int end = mStartDate.daysTo( incidenceEnd.date() );
1029 if ( end >= 0 ) { // end after timestart --- got one! 1044 if ( end >= 0 ) { // end after timestart --- got one!
1030 //normalize 1045 //normalize
1031 st = timeSpan - st; 1046 st = timeSpan - st;
1032 if ( st < 0 ) st = 0; 1047 if ( st < 0 ) st = 0;
1033 if ( end > timeSpan ) end = timeSpan; 1048 if ( end > timeSpan ) end = timeSpan;
1034 int iii; 1049 int iii;
1035 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1050 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1036 for ( iii = st;iii<= end;++iii) 1051 for ( iii = st;iii<= end;++iii)
1037 mCells[iii]->insertEvent( event ); 1052 mCells[iii]->insertEvent( event );
1038 } 1053 }
1039 } 1054 }
1040 } else { 1055 } else {
1041 if ( invalid ) 1056 if ( invalid )
1042 break; 1057 break;
1043 invalid = true; 1058 invalid = true;
1044 //qDebug("invalid %s", event->summary().latin1()); 1059 //qDebug("invalid %s", event->summary().latin1());
1045 incidenceStart = QDateTime( mStartDate ); 1060 incidenceStart = QDateTime( mStartDate );
1046 } 1061 }
1047 if ( last ) 1062 if ( last )
1048 break; 1063 break;
1049 bool ok; 1064 bool ok;
1050 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1065 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1051 if ( ! ok ) 1066 if ( ! ok )
1052 break; 1067 break;
1053 if ( incidenceStart.date() > endDate ) 1068 if ( incidenceStart.date() > endDate )
1054 break; 1069 break;
1055 } 1070 }
1056 } else { // no recur 1071 } else { // no recur
1057 int st = event->dtStart().date().daysTo( endDate ); 1072 int st = event->dtStart().date().daysTo( endDate );
1058 if ( st >= 0 ) { // start before timeend 1073 if ( st >= 0 ) { // start before timeend
1059 int end = mStartDate.daysTo( event->dtEnd().date() ); 1074 int end = mStartDate.daysTo( event->dtEnd().date() );
1060 if ( end >= 0 ) { // end after timestart --- got one! 1075 if ( end >= 0 ) { // end after timestart --- got one!
1061 //normalize 1076 //normalize
1062 st = timeSpan - st; 1077 st = timeSpan - st;
1063 if ( st < 0 ) st = 0; 1078 if ( st < 0 ) st = 0;
1064 if ( end > timeSpan ) end = timeSpan; 1079 if ( end > timeSpan ) end = timeSpan;
1065 int iii; 1080 int iii;
1066 for ( iii = st;iii<= end;++iii) 1081 for ( iii = st;iii<= end;++iii)
1067 mCells[iii]->insertEvent( event ); 1082 mCells[iii]->insertEvent( event );
1068 } 1083 }
1069 } 1084 }
1070 } 1085 }
1071 } 1086 }
1072 // insert due todos 1087 // insert due todos
1073 QPtrList<Todo> todos = calendar()->todos( ); 1088 QPtrList<Todo> todos = calendar()->todos( );
1074 Todo *todo; 1089 Todo *todo;
1075 for(todo = todos.first(); todo; todo = todos.next()) { 1090 for(todo = todos.first(); todo; todo = todos.next()) {
1076 //insertTodo( todo ); 1091 //insertTodo( todo );
1077 if ( todo->hasDueDate() ) { 1092 if ( todo->hasDueDate() ) {
1078 int day = mStartDate.daysTo( todo->dtDue().date() ); 1093 int day = mStartDate.daysTo( todo->dtDue().date() );
1079 if ( day >= 0 && day < timeSpan + 1) { 1094 if ( day >= 0 && day < timeSpan + 1) {
1080 mCells[day]->insertTodo( todo ); 1095 mCells[day]->insertTodo( todo );
1081 } 1096 }
1082 } 1097 }
1083 } 1098 }
1084 1099
1085 for( i = 0; i < timeSpan+1; ++i ) { 1100 for( i = 0; i < timeSpan+1; ++i ) {
1086 mCells[i]->finishUpdateCell(); 1101 mCells[i]->finishUpdateCell();
1087 } 1102 }
1088 processSelectionChange(); 1103 processSelectionChange();
1089 mCells[0]->setFocus(); 1104 mCells[0]->setFocus();
1090 1105
1091 1106
1092#else 1107#else
1093 // old code 1108 // old code
1094 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1109 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1095 int i; 1110 int i;
1096 for( i = 0; i < mCells.count(); ++i ) { 1111 for( i = 0; i < mCells.count(); ++i ) {
1097 mCells[i]->updateCell(); 1112 mCells[i]->updateCell();
1098 } 1113 }
1099 1114
1100 //qDebug("KOMonthView::updateView() "); 1115 //qDebug("KOMonthView::updateView() ");
1101 processSelectionChange(); 1116 processSelectionChange();
1102 // qDebug("---------------------------------------------------------------------+ "); 1117 // qDebug("---------------------------------------------------------------------+ ");
1103 mCells[0]->setFocus(); 1118 mCells[0]->setFocus();
1104#endif 1119#endif
1105 1120
1106 //qDebug("update time %d ", ti.elapsed()); 1121 //qDebug("update time %d ", ti.elapsed());
1107} 1122}
1108 1123
1109void KOMonthView::resizeEvent(QResizeEvent * e) 1124void KOMonthView::resizeEvent(QResizeEvent * e)
1110{ 1125{
1111 computeLayout(); 1126 computeLayout();
1112 mCells[0]->setFocus(); 1127 mCells[0]->setFocus();
1113} 1128}
1114void KOMonthView::computeLayoutWeek() 1129void KOMonthView::computeLayoutWeek()
1115{ 1130{
1116 1131
1117 int daysToShow; 1132 int daysToShow;
1118 bool combinedSatSun = false; 1133 bool combinedSatSun = false;
1119 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1134 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1120 daysToShow = 6; 1135 daysToShow = 6;
1121 combinedSatSun = true; 1136 combinedSatSun = true;
1122 } 1137 }
1123 int tWid = topLevelWidget()->size().width(); 1138 int tWid = topLevelWidget()->size().width();
1124 int tHei = topLevelWidget()->size().height(); 1139 int tHei = topLevelWidget()->size().height();
1125 1140
1126 int wid = size().width();//e 1141 int wid = size().width();//e
1127 int hei = size().height()-1; 1142 int hei = size().height()-1;
1128 1143
1129 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1144 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1130 return; 1145 return;
1131 1146
1132 if ( wid < hei ) 1147 if ( wid < hei )
1133 daysToShow = 2; 1148 daysToShow = 2;
1134 else 1149 else
1135 daysToShow = 3; 1150 daysToShow = 3;
1136 mShowSatSunComp = true; 1151 mShowSatSunComp = true;
1137 combinedSatSun = true; 1152 combinedSatSun = true;
1138 1153
1139 //qDebug("KOMonthView::computeLayout()------------------------------------ "); 1154 //qDebug("KOMonthView::computeLayout()------------------------------------ ");
1140 QFontMetrics fm ( mWeekLabels[0]->font() ); 1155 QFontMetrics fm ( mWeekLabels[0]->font() );
1141 int weeklabelwid = fm.width( "888" ); 1156 int weeklabelwid = fm.width( "888" );
1142 wid -= weeklabelwid; 1157 wid -= weeklabelwid;
1143 1158
1144 int colWid = wid / daysToShow; 1159 int colWid = wid / daysToShow;
1145 int lastCol = wid - ( colWid*6 ); 1160 int lastCol = wid - ( colWid*6 );
1146 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 1161 int dayLabelHei = mDayLabels[0]->sizeHint().height();
1147 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); 1162 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow );
1148 int colModulo = wid % daysToShow; 1163 int colModulo = wid % daysToShow;
1149 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; 1164 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1;
1150 //qDebug("rowmod %d ", rowModulo); 1165 //qDebug("rowmod %d ", rowModulo);
1151 int i; 1166 int i;
1152 int x,y,w,h; 1167 int x,y,w,h;
1153 x= 0; 1168 x= 0;
1154 y= 0; 1169 y= 0;
1155 w = colWid; 1170 w = colWid;
1156 h = dayLabelHei ; 1171 h = dayLabelHei ;
1157 for ( i = 0; i < 7; i++) { 1172 for ( i = 0; i < 7; i++) {
1158 if ( i && !( i % daysToShow) && i < 6) { 1173 if ( i && !( i % daysToShow) && i < 6) {
1159 y += hei/(5-daysToShow); 1174 y += hei/(5-daysToShow);
1160 x = 0; 1175 x = 0;
1161 w = colWid; 1176 w = colWid;
1162 } 1177 }
1163 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1178 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1164 ++w; 1179 ++w;
1165 } 1180 }
1166 if ( i >= 5 ) { 1181 if ( i >= 5 ) {
1167 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h); 1182 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h);
1168 x -= (w/2 ); 1183 x -= (w/2 );
1169 } 1184 }
1170 else 1185 else
1171 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1186 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1172 x += w; 1187 x += w;
1173 } 1188 }
1174 x= 0; 1189 x= 0;
1175 y= dayLabelHei; 1190 y= dayLabelHei;
1176 w = colWid; 1191 w = colWid;
1177 h = cellHei; 1192 h = cellHei;
1178 for ( i = 0; i < mCells.count(); ++i) { 1193 for ( i = 0; i < mCells.count(); ++i) {
1179 if ( i > 6 ) { 1194 if ( i > 6 ) {
1180 mCells[i]->hide(); 1195 mCells[i]->hide();
1181 continue; 1196 continue;
1182 } 1197 }
1183 1198
1184 w = colWid; 1199 w = colWid;
1185 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1200 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1186 ++w; 1201 ++w;
1187 } 1202 }
1188 if ( i == (daysToShow-1-rowModulo)*7) 1203 if ( i == (daysToShow-1-rowModulo)*7)
1189 ++h; 1204 ++h;
1190 1205
1191 if ( i >= 5 ) { 1206 if ( i >= 5 ) {
1192 if ( i ==5 ) { 1207 if ( i ==5 ) {
1193 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1208 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
1194 x -= w ;y += h/2; 1209 x -= w ;y += h/2;
1195 } else { 1210 } else {
1196 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { 1211 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) {
1197 ++w; 1212 ++w;
1198 } 1213 }
1199 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1214 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
1200 y -= h/2; 1215 y -= h/2;
1201 } 1216 }
1202 } else 1217 } else
1203 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1218 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1204 1219
1205 1220
1206 x += w; 1221 x += w;
1207 if ( x + w/2 > wid ) { 1222 if ( x + w/2 > wid ) {
1208 x = 0; 1223 x = 0;
1209 y += h+dayLabelHei ; 1224 y += h+dayLabelHei ;
1210 } 1225 }
1211 } 1226 }
1212 y= dayLabelHei; 1227 y= dayLabelHei;
1213 h = cellHei ; 1228 h = cellHei ;
1214 mWeekLabels[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1229 mWeekLabels[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1215 for ( i = 1; i < 6; i++) { 1230 for ( i = 1; i < 6; i++) {
1216 mWeekLabels[i]->hide(); 1231 mWeekLabels[i]->hide();
1217 } 1232 }
1218 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1233 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1219 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1234 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1220 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1235 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1221 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ; 1236 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ;
1222 updateDayLabels(); 1237 updateDayLabels();
1223 bool forceUpdate = !updatePossible; 1238 bool forceUpdate = !updatePossible;
1224 updatePossible = true; 1239 updatePossible = true;
1225 mWeekLabels[mNumWeeks]->setText( i18n("M")); 1240 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1226 if ( forceUpdate ) 1241 if ( forceUpdate )
1227 updateView(); 1242 updateView();
1228} 1243}
1229void KOMonthView::computeLayout() 1244void KOMonthView::computeLayout()
1230{ 1245{
1231 // select the appropriate heading string size. E.g. "Wednesday" or "Wed". 1246 // select the appropriate heading string size. E.g. "Wednesday" or "Wed".
1232 // note this only changes the text if the requested size crosses the 1247 // note this only changes the text if the requested size crosses the
1233 // threshold between big enough to support the full name and not big 1248 // threshold between big enough to support the full name and not big
1234 // enough. 1249 // enough.
1235 if ( mShowWeekView ){ 1250 if ( mShowWeekView ){
1236 computeLayoutWeek(); 1251 computeLayoutWeek();
1237 return; 1252 return;
1238 } 1253 }
1239 int daysToShow = 7; 1254 int daysToShow = 7;
1240 bool combinedSatSun = false; 1255 bool combinedSatSun = false;
1241 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1256 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1242 daysToShow = 6; 1257 daysToShow = 6;
1243 combinedSatSun = true; 1258 combinedSatSun = true;
1244 } 1259 }
1245 int tWid = topLevelWidget()->size().width(); 1260 int tWid = topLevelWidget()->size().width();
1246 int tHei = topLevelWidget()->size().height(); 1261 int tHei = topLevelWidget()->size().height();
1247 1262
1248 int wid = size().width();//e 1263 int wid = size().width();//e
1249 int hei = size().height()-1; 1264 int hei = size().height()-1;
1250 1265
1251 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1266 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1252 return; 1267 return;
1253 //qDebug("KOMonthView::computeLayout()------------------------------------ "); 1268 //qDebug("KOMonthView::computeLayout()------------------------------------ ");
1254 QFontMetrics fm ( mWeekLabels[0]->font() ); 1269 QFontMetrics fm ( mWeekLabels[0]->font() );
1255 int weeklabelwid = fm.width( "888" ); 1270 int weeklabelwid = fm.width( "888" );
1256 wid -= weeklabelwid; 1271 wid -= weeklabelwid;
1257 1272
1258 int colWid = wid / daysToShow; 1273 int colWid = wid / daysToShow;
1259 int lastCol = wid - ( colWid*6 ); 1274 int lastCol = wid - ( colWid*6 );
1260 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 1275 int dayLabelHei = mDayLabels[0]->sizeHint().height();
1261 int cellHei = (hei - dayLabelHei) /6; 1276 int cellHei = (hei - dayLabelHei) /6;
1262 int colModulo = wid % daysToShow; 1277 int colModulo = wid % daysToShow;
1263 int rowModulo = (hei- dayLabelHei) % 6; 1278 int rowModulo = (hei- dayLabelHei) % 6;
1264 //qDebug("rowmod %d ", rowModulo); 1279 //qDebug("rowmod %d ", rowModulo);
1265 int i; 1280 int i;
1266 int x,y,w,h; 1281 int x,y,w,h;
1267 x= 0; 1282 x= 0;
1268 y= 0; 1283 y= 0;
1269 w = colWid; 1284 w = colWid;
1270 h = dayLabelHei ; 1285 h = dayLabelHei ;
1271 for ( i = 0; i < 7; i++) { 1286 for ( i = 0; i < 7; i++) {
1272 if ( i == daysToShow-colModulo ) 1287 if ( i == daysToShow-colModulo )
1273 ++w; 1288 ++w;
1274 if ( combinedSatSun ) { 1289 if ( combinedSatSun ) {
1275 if ( i >= daysToShow-1 ) { 1290 if ( i >= daysToShow-1 ) {
1276 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h); 1291 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
1277 x -= w/2 ; 1292 x -= w/2 ;
1278 } 1293 }
1279 else 1294 else
1280 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1295 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1281 } else 1296 } else
1282 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1297 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1283 x += w; 1298 x += w;
1284 } 1299 }
1285 x= 0; 1300 x= 0;
1286 y= dayLabelHei; 1301 y= dayLabelHei;
1287 w = colWid; 1302 w = colWid;
1288 h = cellHei ; 1303 h = cellHei ;
1289 for ( i = 0; i < mCells.count(); ++i) { 1304 for ( i = 0; i < mCells.count(); ++i) {
1290 mCells[i]->show(); 1305 mCells[i]->show();
1291 w = colWid; 1306 w = colWid;
1292 if ( ((i) % 7) >= 7-colModulo ) { 1307 if ( ((i) % 7) >= 7-colModulo ) {
1293 ++w; 1308 ++w;
1294 } 1309 }
1295 if ( i == (6-rowModulo)*7) 1310 if ( i == (6-rowModulo)*7)
1296 ++h; 1311 ++h;
1297 if ( combinedSatSun ) { 1312 if ( combinedSatSun ) {
1298 if ( (i)%7 >= daysToShow-1 ) { 1313 if ( (i)%7 >= daysToShow-1 ) {
1299 if ( (i)%7 == daysToShow-1 ) { 1314 if ( (i)%7 == daysToShow-1 ) {
1300 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1315 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
1301 x -= w ;y += h/2; 1316 x -= w ;y += h/2;
1302 } else { 1317 } else {
1303 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1318 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
1304 y -= h/2; 1319 y -= h/2;
1305 } 1320 }
1306 } else 1321 } else
1307 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1322 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1308 1323
1309 } 1324 }
1310 else 1325 else
1311 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1326 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1312 x += w; 1327 x += w;
1313 if ( x + w/2 > wid ) { 1328 if ( x + w/2 > wid ) {
1314 x = 0; 1329 x = 0;
1315 y += h; 1330 y += h;
1316 } 1331 }
1317 } 1332 }
1318 y= dayLabelHei; 1333 y= dayLabelHei;
1319 h = cellHei ; 1334 h = cellHei ;
1320 for ( i = 0; i < 6; i++) { 1335 for ( i = 0; i < 6; i++) {
1321 mWeekLabels[i]->show(); 1336 mWeekLabels[i]->show();
1322 if ( i == (6-rowModulo)) 1337 if ( i == (6-rowModulo))
1323 ++h; 1338 ++h;
1324 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h); 1339 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
1325 y += h; 1340 y += h;
1326 } 1341 }
1327 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1342 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1328 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1343 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1329 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1344 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1330 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ; 1345 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ;
1331 updateDayLabels(); 1346 updateDayLabels();
1332 bool forceUpdate = !updatePossible; 1347 bool forceUpdate = !updatePossible;
1333 updatePossible = true; 1348 updatePossible = true;
1334 mWeekLabels[mNumWeeks]->setText( i18n("W")); 1349 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1335 if ( forceUpdate ) 1350 if ( forceUpdate )
1336 updateView(); 1351 updateView();
1337} 1352}
1338 1353
1339void KOMonthView::showContextMenu( Incidence *incidence ) 1354void KOMonthView::showContextMenu( Incidence *incidence )
1340{ 1355{
1341 mContextMenu->showIncidencePopup(incidence); 1356 mContextMenu->showIncidencePopup(incidence);
1342 /* 1357 /*
1343 if( incidence && incidence->type() == "Event" ) { 1358 if( incidence && incidence->type() == "Event" ) {
1344 Event *event = static_cast<Event *>(incidence); 1359 Event *event = static_cast<Event *>(incidence);
1345 mContextMenu->showEventPopup(event); 1360 mContextMenu->showEventPopup(event);
1346 } else { 1361 } else {
1347 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; 1362 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
1348 } 1363 }
1349 */ 1364 */
1350} 1365}
1351MonthViewCell * KOMonthView::selectedCell( ) 1366MonthViewCell * KOMonthView::selectedCell( )
1352{ 1367{
1353 return mSelectedCell; 1368 return mSelectedCell;
1354} 1369}
1355void KOMonthView::setSelectedCell( MonthViewCell *cell ) 1370void KOMonthView::setSelectedCell( MonthViewCell *cell )
1356{ 1371{
1357 // qDebug("KOMonthView::setSelectedCell "); 1372 // qDebug("KOMonthView::setSelectedCell ");
1358 if ( mSelectedCell && mSelectedCell != cell ) { 1373 if ( mSelectedCell && mSelectedCell != cell ) {
1359 MonthViewCell * mvc = mSelectedCell; 1374 MonthViewCell * mvc = mSelectedCell;
1360 mSelectedCell = cell; 1375 mSelectedCell = cell;
1361 mvc->deselect(); 1376 mvc->deselect();
1362 } else 1377 } else
1363 mSelectedCell = cell; 1378 mSelectedCell = cell;
1364 // if ( mSelectedCell ) 1379 // if ( mSelectedCell )
1365 // mSelectedCell->select(); 1380 // mSelectedCell->select();
1366 if ( !mSelectedCell ) 1381 if ( !mSelectedCell )
1367 emit incidenceSelected( 0 ); 1382 emit incidenceSelected( 0 );
1368 else 1383 else
1369 emit incidenceSelected( mSelectedCell->selectedIncidence() ); 1384 emit incidenceSelected( mSelectedCell->selectedIncidence() );
1370} 1385}
1371 1386
1372void KOMonthView::processSelectionChange() 1387void KOMonthView::processSelectionChange()
1373{ 1388{
1374 QPtrList<Incidence> incidences = selectedIncidences(); 1389 QPtrList<Incidence> incidences = selectedIncidences();
1375 if (incidences.count() > 0) { 1390 if (incidences.count() > 0) {
1376 emit incidenceSelected( incidences.first() ); 1391 emit incidenceSelected( incidences.first() );
1377 } else { 1392 } else {
1378 emit incidenceSelected( 0 ); 1393 emit incidenceSelected( 0 );
1379 } 1394 }
1380} 1395}
1381 1396
1382void KOMonthView::clearSelection() 1397void KOMonthView::clearSelection()
1383{ 1398{
1384 if ( mSelectedCell ) { 1399 if ( mSelectedCell ) {
1385 mSelectedCell->deselect(); 1400 mSelectedCell->deselect();
1386 mSelectedCell = 0; 1401 mSelectedCell = 0;
1387 } 1402 }
1388} 1403}
1389void KOMonthView::keyPressEvent ( QKeyEvent * e ) 1404void KOMonthView::keyPressEvent ( QKeyEvent * e )
1390{ 1405{
1391 //qDebug("KOMonthView::keyPressEvent "); 1406 //qDebug("KOMonthView::keyPressEvent ");
1392 switch(e->key()) { 1407 switch(e->key()) {
1393 case Key_Up: 1408 case Key_Up:
1394 { 1409 {
1395 emit prevMonth(); 1410 emit prevMonth();
1396 mCells[0]->setFocus(); 1411 mCells[0]->setFocus();
1397 } 1412 }
1398 e->accept(); 1413 e->accept();
1399 break; 1414 break;
1400 case Key_Down: 1415 case Key_Down:
1401 { 1416 {
1402 emit nextMonth(); 1417 emit nextMonth();
1403 mCells[0]->setFocus(); 1418 mCells[0]->setFocus();
1404 1419
1405 } 1420 }
1406 e->accept(); 1421 e->accept();
1407 break; 1422 break;
1408 default: 1423 default:
1409 e->ignore(); 1424 e->ignore();
1410 break; 1425 break;
1411 } 1426 }
1412} 1427}
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 0bc3743..1ed200b 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -1,283 +1,285 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#ifndef _KOMONTHVIEW_H 20#ifndef _KOMONTHVIEW_H
21#define _KOMONTHVIEW_H 21#define _KOMONTHVIEW_H
22 22
23#include <qlabel.h> 23#include <qlabel.h>
24#include <qframe.h> 24#include <qframe.h>
25#include <qdatetime.h> 25#include <qdatetime.h>
26#include <qlistbox.h> 26#include <qlistbox.h>
27#include <qpoint.h> 27#include <qpoint.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qintdict.h> 29#include <qintdict.h>
30#include <qpushbutton.h> 30#include <qpushbutton.h>
31#include <qvaluelist.h> 31#include <qvaluelist.h>
32#include <qptrvector.h> 32#include <qptrvector.h>
33 33
34#include <libkcal/calendar.h> 34#include <libkcal/calendar.h>
35#include <libkcal/event.h> 35#include <libkcal/event.h>
36 36
37#include "koeventview.h" 37#include "koeventview.h"
38 38
39#ifdef DESKTOP_VERSION 39#ifdef DESKTOP_VERSION
40class QToolTipGroup; 40class QToolTipGroup;
41#endif 41#endif
42 42
43class KNOWhatsThis; 43class KNOWhatsThis;
44class KOWeekButton : public QPushButton 44class KOWeekButton : public QPushButton
45{ 45{
46 Q_OBJECT 46 Q_OBJECT
47 public: 47 public:
48 KOWeekButton( QWidget *parent=0, const char *name=0 ) : 48 KOWeekButton( QWidget *parent=0, const char *name=0 ) :
49 QPushButton( parent, name) 49 QPushButton( parent, name)
50 { 50 {
51 connect( this, SIGNAL( clicked() ), 51 connect( this, SIGNAL( clicked() ),
52 SLOT( bottonClicked() )); 52 SLOT( bottonClicked() ));
53 mNumber = -1; 53 mNumber = -1;
54 } 54 }
55 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));} 55 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));}
56 signals: 56 signals:
57 void selectWeekNum ( int ); 57 void selectWeekNum ( int );
58private: 58private:
59 int mNumber; 59 int mNumber;
60private slots : 60private slots :
61 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); } 61 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); }
62}; 62};
63 63
64class KNoScrollListBox: public QListBox 64class KNoScrollListBox: public QListBox
65{ 65{
66 Q_OBJECT 66 Q_OBJECT
67 public: 67 public:
68 KNoScrollListBox(QWidget *parent=0, const char *name=0); 68 KNoScrollListBox(QWidget *parent=0, const char *name=0);
69 ~KNoScrollListBox(); 69 ~KNoScrollListBox();
70 QString getWhatsThisText(QPoint p) ; 70 QString getWhatsThisText(QPoint p) ;
71 71
72 signals: 72 signals:
73 void shiftDown(); 73 void shiftDown();
74 void shiftUp(); 74 void shiftUp();
75 void rightClick(); 75 void rightClick();
76 76
77 protected slots: 77 protected slots:
78 void keyPressEvent(QKeyEvent *); 78 void keyPressEvent(QKeyEvent *);
79 void keyReleaseEvent(QKeyEvent *); 79 void keyReleaseEvent(QKeyEvent *);
80 void mousePressEvent(QMouseEvent *); 80 void mousePressEvent(QMouseEvent *);
81 81
82 private: 82 private:
83 KNOWhatsThis * mWT; 83 KNOWhatsThis * mWT;
84}; 84};
85 85
86 86
87class MonthViewItem: public QListBoxItem 87class MonthViewItem: public QListBoxItem
88{ 88{
89 public: 89 public:
90 MonthViewItem( Incidence *, QDate qd, const QString & title ); 90 MonthViewItem( Incidence *, QDate qd, const QString & title );
91 91
92 void setRecur(bool on) { mRecur = on; } 92 void setRecur(bool on) { mRecur = on; }
93 void setAlarm(bool on) { mAlarm = on; } 93 void setAlarm(bool on) { mAlarm = on; }
94 void setReply(bool on) { mReply = on; } 94 void setReply(bool on) { mReply = on; }
95 void setMoreInfo(bool on) { mInfo = on; } 95 void setMoreInfo(bool on) { mInfo = on; }
96 96
97 97
98 void setPalette(const QPalette &p) { mPalette = p; } 98 void setPalette(const QPalette &p) { mPalette = p; }
99 QPalette palette() const { return mPalette; } 99 QPalette palette() const { return mPalette; }
100 100
101 Incidence *incidence() const { return mIncidence; } 101 Incidence *incidence() const { return mIncidence; }
102 QDate incidenceDate() { return mDate; } 102 QDate incidenceDate() { return mDate; }
103 103
104 protected: 104 protected:
105 virtual void paint(QPainter *); 105 virtual void paint(QPainter *);
106 virtual int height(const QListBox *) const; 106 virtual int height(const QListBox *) const;
107 virtual int width(const QListBox *) const; 107 virtual int width(const QListBox *) const;
108 108
109 private: 109 private:
110 bool mRecur; 110 bool mRecur;
111 bool mAlarm; 111 bool mAlarm;
112 bool mReply; 112 bool mReply;
113 bool mInfo; 113 bool mInfo;
114 114
115 QPalette mPalette; 115 QPalette mPalette;
116 QDate mDate; 116 QDate mDate;
117 117
118 Incidence *mIncidence; 118 Incidence *mIncidence;
119}; 119};
120 120
121 121
122class KOMonthView; 122class KOMonthView;
123 123
124class MonthViewCell : public QWidget 124class MonthViewCell : public QWidget
125{ 125{
126 Q_OBJECT 126 Q_OBJECT
127 public: 127 public:
128 MonthViewCell( KOMonthView * ); 128 MonthViewCell( KOMonthView * );
129 129
130 void setDate( const QDate & ); 130 void setDate( const QDate & );
131 QDate date() const; 131 QDate date() const;
132 132
133 void setPrimary( bool ); 133 void setPrimary( bool );
134 bool isPrimary() const; 134 bool isPrimary() const;
135 135
136 void setHoliday( bool ); 136 void setHoliday( bool );
137 void setHoliday( const QString & ); 137 void setHoliday( const QString & );
138 138
139 void updateCell(); 139 void updateCell();
140 void startUpdateCell(); 140 void startUpdateCell();
141 void finishUpdateCell(); 141 void finishUpdateCell();
142 void insertEvent(Event *); 142 void insertEvent(Event *);
143 void insertTodo(Todo *); 143 void insertTodo(Todo *);
144 144
145 void updateConfig(); 145 void updateConfig();
146 146
147 void enableScrollBars( bool ); 147 void enableScrollBars( bool );
148 148
149 Incidence *selectedIncidence(); 149 Incidence *selectedIncidence();
150 QDate selectedIncidenceDate(); 150 QDate selectedIncidenceDate();
151 151
152 void deselect(); 152 void deselect();
153 void select(); 153 void select();
154 void clear(); 154 void clear();
155 155
156#ifdef DESKTOP_VERSION 156#ifdef DESKTOP_VERSION
157 static QToolTipGroup *toolTipGroup(); 157 static QToolTipGroup *toolTipGroup();
158#endif 158#endif
159 signals: 159 signals:
160 void defaultAction( Incidence * ); 160 void defaultAction( Incidence * );
161 void newEventSignal( QDateTime ); 161 void newEventSignal( QDateTime );
162 void showDaySignal( QDate ); 162 void showDaySignal( QDate );
163 163
164 protected: 164 protected:
165 QString mToolTip; 165 QString mToolTip;
166 void resizeEvent( QResizeEvent * ); 166 void resizeEvent( QResizeEvent * );
167 167
168 protected slots: 168 protected slots:
169 void defaultAction( QListBoxItem * ); 169 void defaultAction( QListBoxItem * );
170 void contextMenu( QListBoxItem * ); 170 void contextMenu( QListBoxItem * );
171 void selection( QListBoxItem * ); 171 void selection( QListBoxItem * );
172 void cellClicked( QListBoxItem * ); 172 void cellClicked( QListBoxItem * );
173 void newEvent(); 173 void newEvent();
174 void showDay(); 174 void showDay();
175 175
176 private: 176 private:
177 KOMonthView *mMonthView; 177 KOMonthView *mMonthView;
178 178
179 QDate mDate; 179 QDate mDate;
180 bool mPrimary; 180 bool mPrimary;
181 bool mHoliday; 181 bool mHoliday;
182 QString mHolidayString; 182 QString mHolidayString;
183 183
184 //QLabel *mLabel; 184 //QLabel *mLabel;
185 QPushButton *mLabel; 185 QPushButton *mLabel;
186 QListBox *mItemList; 186 QListBox *mItemList;
187#ifdef DESKTOP_VERSION 187#ifdef DESKTOP_VERSION
188 static QToolTipGroup *mToolTipGroup; 188 static QToolTipGroup *mToolTipGroup;
189#endif 189#endif
190 QSize mLabelSize; 190 QSize mLabelSize;
191 QSize mLabelBigSize; 191 QSize mLabelBigSize;
192 QPalette mHolidayPalette; 192 QPalette mHolidayPalette;
193 QPalette mStandardPalette; 193 QPalette mStandardPalette;
194 QPalette mPrimaryPalette; 194 QPalette mPrimaryPalette;
195 QPalette mNonPrimaryPalette; 195 QPalette mNonPrimaryPalette;
196 void setMyPalette(); 196 void setMyPalette();
197 QPalette getPalette (); 197 QPalette getPalette ();
198 void keyPressEvent ( QKeyEvent * ) ; 198 void keyPressEvent ( QKeyEvent * ) ;
199 199
200}; 200};
201 201
202 202
203class KOMonthView: public KOEventView 203class KOMonthView: public KOEventView
204{ 204{
205 Q_OBJECT 205 Q_OBJECT
206 public: 206 public:
207 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 ); 207 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 );
208 ~KOMonthView(); 208 ~KOMonthView();
209 209
210 /** Returns maximum number of days supported by the komonthview */ 210 /** Returns maximum number of days supported by the komonthview */
211 virtual int maxDatesHint(); 211 virtual int maxDatesHint();
212 212
213 /** Returns number of currently shown dates. */ 213 /** Returns number of currently shown dates. */
214 virtual int currentDateCount(); 214 virtual int currentDateCount();
215 215
216 /** returns the currently selected events */ 216 /** returns the currently selected events */
217 virtual QPtrList<Incidence> selectedIncidences(); 217 virtual QPtrList<Incidence> selectedIncidences();
218 218
219 /** returns dates of the currently selected events */ 219 /** returns dates of the currently selected events */
220 virtual DateList selectedDates(); 220 virtual DateList selectedDates();
221 221
222 virtual void printPreview(CalPrinter *calPrinter, 222 virtual void printPreview(CalPrinter *calPrinter,
223 const QDate &, const QDate &); 223 const QDate &, const QDate &);
224 bool isMonthView() { return true; } 224 bool isMonthView() { return true; }
225 bool isUpdatePossible() { return updatePossible; } 225 bool isUpdatePossible() { return updatePossible; }
226 226
227 MonthViewCell * selectedCell(); 227 MonthViewCell * selectedCell();
228 public slots: 228 public slots:
229 virtual void updateView(); 229 virtual void updateView();
230 virtual void updateConfig(); 230 virtual void updateConfig();
231 virtual void showDates(const QDate &start, const QDate &end); 231 virtual void showDates(const QDate &start, const QDate &end);
232 virtual void showEvents(QPtrList<Event> eventList); 232 virtual void showEvents(QPtrList<Event> eventList);
233 233
234 void changeEventDisplay(Event *, int); 234 void changeEventDisplay(Event *, int);
235 235
236 void clearSelection(); 236 void clearSelection();
237 237
238 void showContextMenu( Incidence * ); 238 void showContextMenu( Incidence * );
239 239
240 void setSelectedCell( MonthViewCell * ); 240 void setSelectedCell( MonthViewCell * );
241 241
242 protected slots: 242 protected slots:
243 void selectDateWeekNum ( int );
244 void selectInternalWeekNum ( int );
243 void switchView(); 245 void switchView();
244 void processSelectionChange(); 246 void processSelectionChange();
245 signals: 247 signals:
246 void nextMonth(); 248 void nextMonth();
247 void prevMonth(); 249 void prevMonth();
248 void showNavigator( bool ); 250 void showNavigator( bool );
249 void selectWeekNum ( int ); 251 void selectWeekNum ( int );
250 void showDaySignal( QDate ); 252 void showDaySignal( QDate );
251 protected: 253 protected:
252 void resizeEvent(QResizeEvent *); 254 void resizeEvent(QResizeEvent *);
253 void viewChanged(); 255 void viewChanged();
254 void updateDayLabels(); 256 void updateDayLabels();
255 257
256 private: 258 private:
257 bool mShowWeekView; 259 bool mShowWeekView;
258 bool updatePossible; 260 bool updatePossible;
259 int mDaysPerWeek; 261 int mDaysPerWeek;
260 int mNumWeeks; 262 int mNumWeeks;
261 int mNumCells; 263 int mNumCells;
262 bool mWeekStartsMonday; 264 bool mWeekStartsMonday;
263 bool mShowSatSunComp; 265 bool mShowSatSunComp;
264 void computeLayout(); 266 void computeLayout();
265 void computeLayoutWeek(); 267 void computeLayoutWeek();
266 268
267 QPtrVector<MonthViewCell> mCells; 269 QPtrVector<MonthViewCell> mCells;
268 QPtrVector<QLabel> mDayLabels; 270 QPtrVector<QLabel> mDayLabels;
269 QPtrVector<KOWeekButton> mWeekLabels; 271 QPtrVector<KOWeekButton> mWeekLabels;
270 272
271 bool mShortDayLabels; 273 bool mShortDayLabels;
272 int mWidthLongDayLabel; 274 int mWidthLongDayLabel;
273 275
274 QDate mStartDate; 276 QDate mStartDate;
275 277
276 MonthViewCell *mSelectedCell; 278 MonthViewCell *mSelectedCell;
277 279
278 KOEventPopupMenu *mContextMenu; 280 KOEventPopupMenu *mContextMenu;
279 void keyPressEvent ( QKeyEvent * ) ; 281 void keyPressEvent ( QKeyEvent * ) ;
280 282
281}; 283};
282 284
283#endif 285#endif
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp
index 8aa0697..ca3de59 100644
--- a/korganizer/koviewmanager.cpp
+++ b/korganizer/koviewmanager.cpp
@@ -1,662 +1,662 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Copyright (c) 2001 4 Copyright (c) 2001
5 Cornelius Schumacher <schumacher@kde.org> 5 Cornelius Schumacher <schumacher@kde.org>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 20
21 As a special exception, permission is given to link this program 21 As a special exception, permission is given to link this program
22 with any edition of Qt, and distribute the resulting executable, 22 with any edition of Qt, and distribute the resulting executable,
23 without including the source code for Qt in the source distribution. 23 without including the source code for Qt in the source distribution.
24*/ 24*/
25 25
26#include <qwidgetstack.h> 26#include <qwidgetstack.h>
27 27
28#include <kconfig.h> 28#include <kconfig.h>
29#include <kglobal.h> 29#include <kglobal.h>
30#ifndef DESKTOP_VERSION 30#ifndef DESKTOP_VERSION
31#include <qpe/qpeapplication.h> 31#include <qpe/qpeapplication.h>
32#else 32#else
33#include <qapplication.h> 33#include <qapplication.h>
34#endif 34#endif
35#include <qdatetime.h> 35#include <qdatetime.h>
36#include "calendarview.h" 36#include "calendarview.h"
37#include "datenavigator.h" 37#include "datenavigator.h"
38#include "kotodoview.h" 38#include "kotodoview.h"
39#include "koagendaview.h" 39#include "koagendaview.h"
40#include "kodialogmanager.h" 40#include "kodialogmanager.h"
41#include "komonthview.h" 41#include "komonthview.h"
42#include "kolistview.h" 42#include "kolistview.h"
43#include "kowhatsnextview.h" 43#include "kowhatsnextview.h"
44#include "kojournalview.h" 44#include "kojournalview.h"
45#include "kotimespanview.h" 45#include "kotimespanview.h"
46#include "koprefs.h" 46#include "koprefs.h"
47#include "navigatorbar.h" 47#include "navigatorbar.h"
48#include "kdatenavigator.h" 48#include "kdatenavigator.h"
49 49
50#include "koviewmanager.h" 50#include "koviewmanager.h"
51//extern bool externFlagMonthviewBlockPainting; 51//extern bool externFlagMonthviewBlockPainting;
52 52
53//bool globalFlagBlockPainting = false; 53//bool globalFlagBlockPainting = false;
54int globalFlagBlockAgenda = 0; 54int globalFlagBlockAgenda = 0;
55int globalFlagBlockLabel = 0; 55int globalFlagBlockLabel = 0;
56int globalFlagBlockAgendaItemPaint = 1; 56int globalFlagBlockAgendaItemPaint = 1;
57int globalFlagBlockAgendaItemUpdate = 1; 57int globalFlagBlockAgendaItemUpdate = 1;
58 58
59 59
60KOViewManager::KOViewManager( CalendarView *mainView ) : 60KOViewManager::KOViewManager( CalendarView *mainView ) :
61 QObject(), mMainView( mainView ) 61 QObject(), mMainView( mainView )
62{ 62{
63 mCurrentView = 0; 63 mCurrentView = 0;
64 64
65 mWhatsNextView = 0; 65 mWhatsNextView = 0;
66 mTodoView = 0; 66 mTodoView = 0;
67 mAgendaView = 0; 67 mAgendaView = 0;
68 mMonthView = 0; 68 mMonthView = 0;
69 mListView = 0; 69 mListView = 0;
70 mJournalView = 0; 70 mJournalView = 0;
71 mTimeSpanView = 0; 71 mTimeSpanView = 0;
72 mCurrentAgendaView = 0 ; 72 mCurrentAgendaView = 0 ;
73 mFlagShowNextxDays = false; 73 mFlagShowNextxDays = false;
74} 74}
75 75
76KOViewManager::~KOViewManager() 76KOViewManager::~KOViewManager()
77{ 77{
78} 78}
79 79
80 80
81KOrg::BaseView *KOViewManager::currentView() 81KOrg::BaseView *KOViewManager::currentView()
82{ 82{
83 return mCurrentView; 83 return mCurrentView;
84} 84}
85 85
86void KOViewManager::readSettings(KConfig *config) 86void KOViewManager::readSettings(KConfig *config)
87{ 87{
88 config->setGroup("General"); 88 config->setGroup("General");
89 QString view = config->readEntry("Current View"); 89 QString view = config->readEntry("Current View");
90 if (view == "WhatsNext") showWhatsNextView(); 90 if (view == "WhatsNext") showWhatsNextView();
91 else if (view == "Month") showMonthView(); 91 else if (view == "Month") showMonthView();
92 else if (view == "List") showListView(); 92 else if (view == "List") showListView();
93 else if (view == "Journal") showJournalView(); 93 else if (view == "Journal") showJournalView();
94 else if (view == "TimeSpan") showTimeSpanView(); 94 else if (view == "TimeSpan") showTimeSpanView();
95 else if (view == "Todo") showTodoView(); 95 else if (view == "Todo") showTodoView();
96 else { 96 else {
97 showAgendaView(); 97 showAgendaView();
98 } 98 }
99} 99}
100 100
101void KOViewManager::showDateView( int view, QDate date) 101void KOViewManager::showDateView( int view, QDate date)
102{ 102{
103 static int lastMode = 0; 103 static int lastMode = 0;
104 static int lastCount = 0; 104 static int lastCount = 0;
105 static bool lastNDMode = false; 105 static bool lastNDMode = false;
106 static QDate lastDate; 106 static QDate lastDate;
107 //qDebug("date %d %s", view, date.toString().latin1()); 107 //qDebug("date %d %s", view, date.toString().latin1());
108 108
109 //qDebug("%d %d ", lastNDMode, mFlagShowNextxDays ); 109 //qDebug("%d %d ", lastNDMode, mFlagShowNextxDays );
110 bool savemFlagShowNextxDays = mFlagShowNextxDays; 110 bool savemFlagShowNextxDays = mFlagShowNextxDays;
111 mFlagShowNextxDays = false; 111 mFlagShowNextxDays = false;
112 if ( view == 3 ) { 112 if ( view == 3 ) {
113 //mCurrentAgendaView = 1 ; 113 //mCurrentAgendaView = 1 ;
114 lastDate = mMainView->dateNavigator()->selectedDates().first(); 114 lastDate = mMainView->dateNavigator()->selectedDates().first();
115 lastCount = mMainView->dateNavigator()->selectedDates().count(); 115 lastCount = mMainView->dateNavigator()->selectedDates().count();
116 lastNDMode = savemFlagShowNextxDays; 116 lastNDMode = savemFlagShowNextxDays;
117 mMainView->showDay( date ); 117 mMainView->showDay( date );
118 } else if (view == 4 ) { 118 } else if (view == 4 ) {
119 mCurrentAgendaView = 7 ; 119 mCurrentAgendaView = 7 ;
120 mMainView->dateNavigator()->selectDates( date, 7 ); 120 mMainView->dateNavigator()->selectDates( date, 7 );
121 } else if (view == 5 ) { 121 } else if (view == 5 ) {
122 mCurrentAgendaView = 14 ; 122 mCurrentAgendaView = 14 ;
123 mMainView->dateNavigator()->selectDates( date, 14); 123 mMainView->dateNavigator()->selectDates( date, 14);
124 } else if (view == 6 ) { 124 } else if (view == 6 ) {
125 mMainView->dateNavigator()->selectDates( date, 7 ); 125 mMainView->dateNavigator()->selectDates( date, 7 );
126 showMonthView(); 126 showMonthView();
127 } else if (view == 7 ) { 127 } else if (view == 7 ) {
128 mMainView->dateNavigator()->selectDate( date ); 128 mMainView->dateNavigator()->selectDate( date );
129 showJournalView(); 129 showJournalView();
130 } else if (view == 8 ) { 130 } else if (view == 8 ) {
131 globalFlagBlockAgenda = 1; 131 globalFlagBlockAgenda = 1;
132 if ( mCurrentAgendaView != 3 ) 132 if ( mCurrentAgendaView != 3 )
133 mCurrentAgendaView = -1; 133 mCurrentAgendaView = -1;
134 showAgendaView(KOPrefs::instance()->mFullViewMonth); 134 showAgendaView(KOPrefs::instance()->mFullViewMonth);
135 globalFlagBlockAgenda = 2; 135 globalFlagBlockAgenda = 2;
136 mMainView->dateNavigator()->selectDates( date , 136 mMainView->dateNavigator()->selectDates( date ,
137 KOPrefs::instance()->mNextXDays ); 137 KOPrefs::instance()->mNextXDays );
138 mFlagShowNextxDays = true; 138 mFlagShowNextxDays = true;
139 mCurrentAgendaView = 3 ; 139 mCurrentAgendaView = 3 ;
140 } if (view == 9) { // return behaviour, for getting back from mode == 3 (single day mode ) 140 } if (view == 9) { // return behaviour, for getting back from mode == 3 (single day mode )
141 if ( lastMode ) { 141 if ( lastMode ) {
142 mCurrentAgendaView = lastCount ; 142 mCurrentAgendaView = lastCount ;
143 mMainView->dateNavigator()->selectDates( lastDate, lastCount); 143 mMainView->dateNavigator()->selectDates( lastDate, lastCount);
144 mFlagShowNextxDays = lastNDMode; 144 mFlagShowNextxDays = lastNDMode;
145 if ( mFlagShowNextxDays ) { 145 if ( mFlagShowNextxDays ) {
146 mCurrentAgendaView = 3 ; 146 mCurrentAgendaView = 3 ;
147 } 147 }
148 } else 148 } else
149 showWeekView(); 149 showWeekView();
150 } else if (view == 10) { 150 } else if (view == 10) {
151 mMainView->dateNavigator()->selectDates( date,mMainView->dateNavigator()->selectedDates().count() ); 151 mMainView->dateNavigator()->selectDates( date,mMainView->dateNavigator()->selectedDates().count() );
152 } 152 }
153 lastMode = view; 153 lastMode = view;
154} 154}
155 155
156 156
157 157
158void KOViewManager::writeSettings(KConfig *config) 158void KOViewManager::writeSettings(KConfig *config)
159{ 159{
160 config->setGroup("General"); 160 config->setGroup("General");
161 161
162 QString view; 162 QString view;
163 if (mCurrentView == mWhatsNextView) view = "WhatsNext"; 163 if (mCurrentView == mWhatsNextView) view = "WhatsNext";
164 else if (mCurrentView == mMonthView) view = "Month"; 164 else if (mCurrentView == mMonthView) view = "Month";
165 else if (mCurrentView == mListView) view = "List"; 165 else if (mCurrentView == mListView) view = "List";
166 else if (mCurrentView == mJournalView) view = "Journal"; 166 else if (mCurrentView == mJournalView) view = "Journal";
167 else if (mCurrentView == mTimeSpanView) view = "TimeSpan"; 167 else if (mCurrentView == mTimeSpanView) view = "TimeSpan";
168 else if (mCurrentView == mTodoView) view = "Todo"; 168 else if (mCurrentView == mTodoView) view = "Todo";
169 else view = "Agenda"; 169 else view = "Agenda";
170 170
171 config->writeEntry("Current View",view); 171 config->writeEntry("Current View",view);
172 172
173 if (mAgendaView) { 173 if (mAgendaView) {
174 mAgendaView->writeSettings(config); 174 mAgendaView->writeSettings(config);
175 } 175 }
176 if (mTimeSpanView) { 176 if (mTimeSpanView) {
177 mTimeSpanView->writeSettings(config); 177 mTimeSpanView->writeSettings(config);
178 } 178 }
179 if (mListView) { 179 if (mListView) {
180 mListView->writeSettings(config); 180 mListView->writeSettings(config);
181 } 181 }
182 if (mTodoView) { 182 if (mTodoView) {
183 mTodoView->saveLayout(config,"Todo View"); 183 mTodoView->saveLayout(config,"Todo View");
184 } 184 }
185} 185}
186 186
187void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen ) 187void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen )
188{ 188{
189 189
190 //mFlagShowNextxDays = false; 190 //mFlagShowNextxDays = false;
191 //if(view == mCurrentView) return; 191 //if(view == mCurrentView) return;
192 if ( view == 0 ) { 192 if ( view == 0 ) {
193 view = mCurrentView; 193 view = mCurrentView;
194 if ( view == 0 ) 194 if ( view == 0 )
195 return; 195 return;
196 } 196 }
197 bool full = fullScreen; 197 bool full = fullScreen;
198 if(view == mCurrentView && view != mWhatsNextView ) { 198 if(view == mCurrentView && view != mWhatsNextView ) {
199 if ( mCurrentAgendaView < 0 ) 199 if ( mCurrentAgendaView < 0 )
200 return; 200 return;
201 full = mMainView->leftFrame()->isVisible(); 201 full = mMainView->leftFrame()->isVisible();
202 } else { 202 } else {
203 mCurrentView = view; 203 mCurrentView = view;
204 // bool full = fullScreen; 204 // bool full = fullScreen;
205 bool isFull = !mMainView->leftFrame()->isVisible(); 205 bool isFull = !mMainView->leftFrame()->isVisible();
206 if ( isFull && KOPrefs::instance()->mViewChangeHoldFullscreen ) 206 if ( isFull && KOPrefs::instance()->mViewChangeHoldFullscreen )
207 full = true; 207 full = true;
208 if ( !isFull && KOPrefs::instance()->mViewChangeHoldNonFullscreen ) 208 if ( !isFull && KOPrefs::instance()->mViewChangeHoldNonFullscreen )
209 full = false; 209 full = false;
210 } 210 }
211 if ( mAgendaView ) mAgendaView->deleteSelectedDateTime(); 211 if ( mAgendaView ) mAgendaView->deleteSelectedDateTime();
212 //raiseCurrentView( full ); 212 //raiseCurrentView( full );
213 mMainView->processIncidenceSelection( 0 ); 213 mMainView->processIncidenceSelection( 0 );
214 //mMainView->updateView(); 214 //mMainView->updateView();
215 raiseCurrentView( full, true ); 215 raiseCurrentView( full, true );
216 mMainView->adaptNavigationUnits(); 216 mMainView->adaptNavigationUnits();
217} 217}
218 218
219void KOViewManager::raiseCurrentView( bool fullScreen, bool callUpdateView ) 219void KOViewManager::raiseCurrentView( bool fullScreen, bool callUpdateView )
220{ 220{
221 mCurrentAgendaView = 0; 221 mCurrentAgendaView = 0;
222 int wid = mMainView->width() ; 222 int wid = mMainView->width() ;
223 int hei = mMainView->height(); 223 int hei = mMainView->height();
224 if ( mCurrentView == mMonthView ) { 224 if ( mCurrentView == mMonthView ) {
225 if ( !KOPrefs::instance()->mMonthViewWeek ) { 225 if ( true /* !KOPrefs::instance()->mMonthViewWeek*/ ) {
226 mMainView->navigatorBar()->show(); 226 mMainView->navigatorBar()->show();
227 hei -= mMainView->navigatorBar()->sizeHint().height(); 227 hei -= mMainView->navigatorBar()->sizeHint().height();
228 } 228 }
229 //mMainView->navigatorBar()->hide(); 229 //mMainView->navigatorBar()->hide();
230 } else { 230 } else {
231 mMainView->navigatorBar()->hide(); 231 mMainView->navigatorBar()->hide();
232 } 232 }
233 if ( fullScreen ) { 233 if ( fullScreen ) {
234 mMainView->leftFrame()->hide(); 234 mMainView->leftFrame()->hide();
235 } else { 235 } else {
236 mMainView->leftFrame()->show(); 236 mMainView->leftFrame()->show();
237 if ( KOPrefs::instance()->mVerticalScreen ) 237 if ( KOPrefs::instance()->mVerticalScreen )
238 hei -= mMainView->leftFrame()->height(); 238 hei -= mMainView->leftFrame()->height();
239 else 239 else
240 wid -= mMainView->leftFrame()->width(); 240 wid -= mMainView->leftFrame()->width();
241 } 241 }
242 emit signalFullScreen( !fullScreen ); 242 emit signalFullScreen( !fullScreen );
243 if ( callUpdateView ) 243 if ( callUpdateView )
244 mMainView->updateView(); 244 mMainView->updateView();
245 245
246 if ( globalFlagBlockAgenda == 5 ) { 246 if ( globalFlagBlockAgenda == 5 ) {
247 globalFlagBlockAgenda = 4; 247 globalFlagBlockAgenda = 4;
248 globalFlagBlockAgendaItemPaint = 1; 248 globalFlagBlockAgendaItemPaint = 1;
249 } 249 }
250 mMainView->viewStack()->raiseWidget(mCurrentView); 250 mMainView->viewStack()->raiseWidget(mCurrentView);
251 if ( globalFlagBlockAgenda == 4 ) { 251 if ( globalFlagBlockAgenda == 4 ) {
252 if ( mCurrentView == mAgendaView ) { 252 if ( mCurrentView == mAgendaView ) {
253 //globalFlagBlockAgenda =1 ; 253 //globalFlagBlockAgenda =1 ;
254 if ( KOPrefs::instance()->mSetTimeToDayStartAt ) 254 if ( KOPrefs::instance()->mSetTimeToDayStartAt )
255 mAgendaView->setStartHour( KOPrefs::instance()->mDayBegins ); 255 mAgendaView->setStartHour( KOPrefs::instance()->mDayBegins );
256 else if ( KOPrefs::instance()->mCenterOnCurrentTime ) 256 else if ( KOPrefs::instance()->mCenterOnCurrentTime )
257 mAgendaView->setStartHour( QTime::currentTime ().hour() ); 257 mAgendaView->setStartHour( QTime::currentTime ().hour() );
258 qApp->processEvents(); 258 qApp->processEvents();
259 //qDebug("qApp->processEvents() "); 259 //qDebug("qApp->processEvents() ");
260 globalFlagBlockAgenda = 0; 260 globalFlagBlockAgenda = 0;
261 mAgendaView->repaintAgenda(); 261 mAgendaView->repaintAgenda();
262 262
263 } 263 }
264 globalFlagBlockAgenda = 0; 264 globalFlagBlockAgenda = 0;
265 } 265 }
266 emit signalAgendaView( mCurrentView == mAgendaView ); 266 emit signalAgendaView( mCurrentView == mAgendaView );
267 //qDebug("raiseCurrentView ende "); 267 //qDebug("raiseCurrentView ende ");
268 268
269} 269}
270 270
271void KOViewManager::updateView() 271void KOViewManager::updateView()
272{ 272{
273 // qDebug("KOViewManager::updateView() "); 273 // qDebug("KOViewManager::updateView() ");
274 // if we are updating mTodoView, we get endless recursion 274 // if we are updating mTodoView, we get endless recursion
275 if ( mTodoView == mCurrentView ) 275 if ( mTodoView == mCurrentView )
276 return; 276 return;
277 if ( mCurrentView ) mCurrentView->updateView(); 277 if ( mCurrentView ) mCurrentView->updateView();
278 278
279} 279}
280 280
281void KOViewManager::updateView(const QDate &start, const QDate &end) 281void KOViewManager::updateView(const QDate &start, const QDate &end)
282{ 282{
283 // kdDebug() << "KOViewManager::updateView()" << endl; 283 // kdDebug() << "KOViewManager::updateView()" << endl;
284 284
285 if (mCurrentView) mCurrentView->showDates(start, end); 285 if (mCurrentView) mCurrentView->showDates(start, end);
286 286
287 if (mTodoView && mTodoView == mCurrentView ) mTodoView->updateView(); 287 if (mTodoView && mTodoView == mCurrentView ) mTodoView->updateView();
288} 288}
289 289
290 290
291void KOViewManager::updateWNview() 291void KOViewManager::updateWNview()
292{ 292{
293 if ( mCurrentView == mWhatsNextView && mWhatsNextView ) 293 if ( mCurrentView == mWhatsNextView && mWhatsNextView )
294 mWhatsNextView->updateView(); 294 mWhatsNextView->updateView();
295 295
296} 296}
297void KOViewManager::showWhatsNextView() 297void KOViewManager::showWhatsNextView()
298{ 298{
299 if (!mWhatsNextView) { 299 if (!mWhatsNextView) {
300 mWhatsNextView = new KOWhatsNextView(mMainView->calendar(),mMainView->viewStack(), 300 mWhatsNextView = new KOWhatsNextView(mMainView->calendar(),mMainView->viewStack(),
301 "KOViewManager::WhatsNextView"); 301 "KOViewManager::WhatsNextView");
302 mWhatsNextView->setEventViewer( mMainView->getEventViewerDialog()); 302 mWhatsNextView->setEventViewer( mMainView->getEventViewerDialog());
303 connect(mMainView, SIGNAL(configChanged()), mWhatsNextView, SLOT(updateConfig())); 303 connect(mMainView, SIGNAL(configChanged()), mWhatsNextView, SLOT(updateConfig()));
304 addView(mWhatsNextView); 304 addView(mWhatsNextView);
305 connect(this, SIGNAL( printWNV() ), 305 connect(this, SIGNAL( printWNV() ),
306 mWhatsNextView, SLOT( printMe() ) ); 306 mWhatsNextView, SLOT( printMe() ) );
307 } 307 }
308 globalFlagBlockAgenda = 1; 308 globalFlagBlockAgenda = 1;
309 showView(mWhatsNextView, true ); 309 showView(mWhatsNextView, true );
310 //mWhatsNextView->updateView(); 310 //mWhatsNextView->updateView();
311 311
312} 312}
313 313
314void KOViewManager::showListView() 314void KOViewManager::showListView()
315{ 315{
316 if (!mListView) { 316 if (!mListView) {
317 mListView = new KOListView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::ListView"); 317 mListView = new KOListView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::ListView");
318 addView(mListView); 318 addView(mListView);
319 319
320 connect(mListView, SIGNAL(showIncidenceSignal(Incidence *)), 320 connect(mListView, SIGNAL(showIncidenceSignal(Incidence *)),
321 mMainView, SLOT(showIncidence(Incidence *))); 321 mMainView, SLOT(showIncidence(Incidence *)));
322 connect(mListView, SIGNAL(editIncidenceSignal(Incidence *)), 322 connect(mListView, SIGNAL(editIncidenceSignal(Incidence *)),
323 mMainView, SLOT(editIncidence(Incidence *))); 323 mMainView, SLOT(editIncidence(Incidence *)));
324 connect(mListView, SIGNAL(deleteIncidenceSignal(Incidence *)), 324 connect(mListView, SIGNAL(deleteIncidenceSignal(Incidence *)),
325 mMainView, SLOT(deleteIncidence(Incidence *))); 325 mMainView, SLOT(deleteIncidence(Incidence *)));
326 connect( mListView, SIGNAL( incidenceSelected( Incidence * ) ), 326 connect( mListView, SIGNAL( incidenceSelected( Incidence * ) ),
327 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 327 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
328 connect( mListView, SIGNAL( signalNewEvent() ), 328 connect( mListView, SIGNAL( signalNewEvent() ),
329 mMainView, SLOT( newEvent() ) ); 329 mMainView, SLOT( newEvent() ) );
330 connect(mMainView, SIGNAL(configChanged()), mListView, SLOT(updateConfig())); 330 connect(mMainView, SIGNAL(configChanged()), mListView, SLOT(updateConfig()));
331 connect( mListView, SIGNAL( cloneIncidenceSignal( Incidence * ) ), 331 connect( mListView, SIGNAL( cloneIncidenceSignal( Incidence * ) ),
332 mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); 332 mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
333 connect( mListView, SIGNAL( cancelIncidenceSignal( Incidence * ) ), 333 connect( mListView, SIGNAL( cancelIncidenceSignal( Incidence * ) ),
334 mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); 334 mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
335 connect( mListView, SIGNAL( moveIncidenceSignal( Incidence * ) ), 335 connect( mListView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
336 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 336 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
337 connect( mListView, SIGNAL( beamIncidenceSignal( Incidence * ) ), 337 connect( mListView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
338 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 338 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
339 } 339 }
340 // bool temp = mFlagShowNextxDays; 340 // bool temp = mFlagShowNextxDays;
341 //globalFlagBlockPainting = true; 341 //globalFlagBlockPainting = true;
342 globalFlagBlockAgenda = 1; 342 globalFlagBlockAgenda = 1;
343 if ( KOPrefs::instance()->mListViewMonthTimespan ) { 343 if ( KOPrefs::instance()->mListViewMonthTimespan ) {
344 mMainView->setBlockShowDates( true ); 344 mMainView->setBlockShowDates( true );
345 mMainView->dateNavigator()->selectMonth(); 345 mMainView->dateNavigator()->selectMonth();
346 mMainView->setBlockShowDates( false ); 346 mMainView->setBlockShowDates( false );
347 } 347 }
348 showView(mListView, KOPrefs::instance()->mFullViewTodo); 348 showView(mListView, KOPrefs::instance()->mFullViewTodo);
349 //mFlagShowNextxDays = temp; 349 //mFlagShowNextxDays = temp;
350} 350}
351 351
352void KOViewManager::showAgendaView( bool fullScreen ) 352void KOViewManager::showAgendaView( bool fullScreen )
353{ 353{
354 354
355 mMainView->dialogManager()->hideSearchDialog(); 355 mMainView->dialogManager()->hideSearchDialog();
356 // qDebug("KOViewManager::showAgendaView "); 356 // qDebug("KOViewManager::showAgendaView ");
357 bool full; 357 bool full;
358 full = fullScreen; 358 full = fullScreen;
359 if (!mAgendaView) { 359 if (!mAgendaView) {
360 full = false; 360 full = false;
361 mAgendaView = new KOAgendaView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::AgendaView"); 361 mAgendaView = new KOAgendaView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::AgendaView");
362 addView(mAgendaView); 362 addView(mAgendaView);
363#ifndef DESKTOP_VERSION 363#ifndef DESKTOP_VERSION
364 QPEApplication::setStylusOperation( mAgendaView, QPEApplication::RightOnHold ); 364 QPEApplication::setStylusOperation( mAgendaView, QPEApplication::RightOnHold );
365#endif 365#endif
366 connect( mAgendaView, SIGNAL( incidenceChanged(Incidence *, int )), 366 connect( mAgendaView, SIGNAL( incidenceChanged(Incidence *, int )),
367 mMainView, SLOT( changeIncidenceDisplay( Incidence *, int ) )); 367 mMainView, SLOT( changeIncidenceDisplay( Incidence *, int ) ));
368 368
369 // SIGNALS/SLOTS FOR DAY/WEEK VIEW 369 // SIGNALS/SLOTS FOR DAY/WEEK VIEW
370 370
371 connect(mAgendaView,SIGNAL(showDateView( int, QDate )),SLOT(showDateView( int, QDate ))); 371 connect(mAgendaView,SIGNAL(showDateView( int, QDate )),SLOT(showDateView( int, QDate )));
372 372
373 connect(mAgendaView,SIGNAL(newTodoSignal(QDateTime,bool)), 373 connect(mAgendaView,SIGNAL(newTodoSignal(QDateTime,bool)),
374 mMainView, SLOT(newTodoDateTime(QDateTime,bool))); 374 mMainView, SLOT(newTodoDateTime(QDateTime,bool)));
375 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime)), 375 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime)),
376 mMainView, SLOT(newEvent(QDateTime))); 376 mMainView, SLOT(newEvent(QDateTime)));
377 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime,QDateTime)), 377 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime,QDateTime)),
378 mMainView, SLOT(newEvent(QDateTime,QDateTime))); 378 mMainView, SLOT(newEvent(QDateTime,QDateTime)));
379 connect(mAgendaView,SIGNAL(newEventSignal(QDate)), 379 connect(mAgendaView,SIGNAL(newEventSignal(QDate)),
380 mMainView, SLOT(newEvent(QDate))); 380 mMainView, SLOT(newEvent(QDate)));
381 381
382 connect(mAgendaView, SIGNAL(editIncidenceSignal(Incidence *)), 382 connect(mAgendaView, SIGNAL(editIncidenceSignal(Incidence *)),
383 mMainView, SLOT(editIncidence(Incidence *))); 383 mMainView, SLOT(editIncidence(Incidence *)));
384 connect(mAgendaView, SIGNAL(showIncidenceSignal(Incidence *)), 384 connect(mAgendaView, SIGNAL(showIncidenceSignal(Incidence *)),
385 mMainView, SLOT(showIncidence(Incidence *))); 385 mMainView, SLOT(showIncidence(Incidence *)));
386 connect(mAgendaView, SIGNAL(deleteIncidenceSignal(Incidence *)), 386 connect(mAgendaView, SIGNAL(deleteIncidenceSignal(Incidence *)),
387 mMainView, SLOT(deleteIncidence(Incidence *))); 387 mMainView, SLOT(deleteIncidence(Incidence *)));
388 388
389 connect( mAgendaView, SIGNAL( incidenceSelected( Incidence * ) ), 389 connect( mAgendaView, SIGNAL( incidenceSelected( Incidence * ) ),
390 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 390 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
391 391
392 connect(mAgendaView, SIGNAL( toggleExpand() ), 392 connect(mAgendaView, SIGNAL( toggleExpand() ),
393 mMainView, SLOT( toggleExpand() ) ); 393 mMainView, SLOT( toggleExpand() ) );
394 394
395 connect(mMainView, SIGNAL( calendarViewExpanded( bool ) ), 395 connect(mMainView, SIGNAL( calendarViewExpanded( bool ) ),
396 mAgendaView, SLOT( setExpandedButton( bool ) ) ); 396 mAgendaView, SLOT( setExpandedButton( bool ) ) );
397 connect( mAgendaView, SIGNAL( cloneIncidenceSignal(Incidence *) ), 397 connect( mAgendaView, SIGNAL( cloneIncidenceSignal(Incidence *) ),
398 mMainView, SLOT(cloneIncidence(Incidence *) ) ) ; 398 mMainView, SLOT(cloneIncidence(Incidence *) ) ) ;
399 connect( mAgendaView, SIGNAL( cancelIncidenceSignal(Incidence *) ), 399 connect( mAgendaView, SIGNAL( cancelIncidenceSignal(Incidence *) ),
400 mMainView, SLOT(cancelIncidence(Incidence *) ) ) ; 400 mMainView, SLOT(cancelIncidence(Incidence *) ) ) ;
401 connect(mMainView, SIGNAL(configChanged()), mAgendaView, SLOT(updateConfig())); 401 connect(mMainView, SIGNAL(configChanged()), mAgendaView, SLOT(updateConfig()));
402 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mAgendaView, 402 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mAgendaView,
403 SLOT( updateTodo( Todo *, int ) ) ); 403 SLOT( updateTodo( Todo *, int ) ) );
404 connect( mAgendaView,SIGNAL( todoMoved( Todo *, int )), 404 connect( mAgendaView,SIGNAL( todoMoved( Todo *, int )),
405 mMainView, SIGNAL( todoModified( Todo *, int ))); 405 mMainView, SIGNAL( todoModified( Todo *, int )));
406 connect( mAgendaView, SIGNAL( moveIncidenceSignal( Incidence * ) ), 406 connect( mAgendaView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
407 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 407 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
408 connect( mAgendaView, SIGNAL( beamIncidenceSignal( Incidence * ) ), 408 connect( mAgendaView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
409 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 409 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
410 mAgendaView->readSettings(); 410 mAgendaView->readSettings();
411 mAgendaView->updateConfig(); 411 mAgendaView->updateConfig();
412 } 412 }
413 413
414 showView( mAgendaView, full); 414 showView( mAgendaView, full);
415 415
416} 416}
417 417
418void KOViewManager::showDayView() 418void KOViewManager::showDayView()
419{ 419{
420 mFlagShowNextxDays = false; 420 mFlagShowNextxDays = false;
421 globalFlagBlockLabel = 1; 421 globalFlagBlockLabel = 1;
422 globalFlagBlockAgenda = 1; 422 globalFlagBlockAgenda = 1;
423 if ( mCurrentAgendaView != 1 ) 423 if ( mCurrentAgendaView != 1 )
424 mCurrentAgendaView = -1; 424 mCurrentAgendaView = -1;
425 showAgendaView(); 425 showAgendaView();
426 qApp->processEvents(); 426 qApp->processEvents();
427 globalFlagBlockAgenda = 2; 427 globalFlagBlockAgenda = 2;
428 globalFlagBlockLabel = 0; 428 globalFlagBlockLabel = 0;
429 mMainView->dateNavigator()->selectDates( 1 ); 429 mMainView->dateNavigator()->selectDates( 1 );
430 mCurrentAgendaView = 1 ; 430 mCurrentAgendaView = 1 ;
431 431
432} 432}
433 433
434void KOViewManager::showWorkWeekView() 434void KOViewManager::showWorkWeekView()
435{ 435{
436 mFlagShowNextxDays = false; 436 mFlagShowNextxDays = false;
437 globalFlagBlockAgenda = 1; 437 globalFlagBlockAgenda = 1;
438 globalFlagBlockLabel = 1; 438 globalFlagBlockLabel = 1;
439 if ( mCurrentAgendaView != 5 ) 439 if ( mCurrentAgendaView != 5 )
440 mCurrentAgendaView = -1; 440 mCurrentAgendaView = -1;
441 showAgendaView(); 441 showAgendaView();
442 qApp->processEvents(); 442 qApp->processEvents();
443 globalFlagBlockAgenda = 2; 443 globalFlagBlockAgenda = 2;
444 globalFlagBlockLabel = 0; 444 globalFlagBlockLabel = 0;
445 mMainView->dateNavigator()->selectWorkWeek(); 445 mMainView->dateNavigator()->selectWorkWeek();
446 mCurrentAgendaView = 5 ; 446 mCurrentAgendaView = 5 ;
447 447
448} 448}
449 449
450void KOViewManager::showWeekView() 450void KOViewManager::showWeekView()
451{ 451{
452 /* 452 /*
453 globalFlagBlockAgenda = 2; 453 globalFlagBlockAgenda = 2;
454 qDebug("4globalFlagBlockAgenda = 2; "); 454 qDebug("4globalFlagBlockAgenda = 2; ");
455 //globalFlagBlockPainting = true; 455 //globalFlagBlockPainting = true;
456 mMainView->dateNavigator()->selectWeek(); 456 mMainView->dateNavigator()->selectWeek();
457 showAgendaView(); 457 showAgendaView();
458 */ 458 */
459 459
460 460
461 mFlagShowNextxDays = false; 461 mFlagShowNextxDays = false;
462 globalFlagBlockAgenda = 1; 462 globalFlagBlockAgenda = 1;
463 globalFlagBlockLabel = 1; 463 globalFlagBlockLabel = 1;
464 if ( mCurrentAgendaView != 7 ) 464 if ( mCurrentAgendaView != 7 )
465 mCurrentAgendaView = -1; 465 mCurrentAgendaView = -1;
466 showAgendaView(); 466 showAgendaView();
467 qApp->processEvents(); 467 qApp->processEvents();
468 globalFlagBlockAgenda = 2; 468 globalFlagBlockAgenda = 2;
469 globalFlagBlockLabel = 0; 469 globalFlagBlockLabel = 0;
470 mMainView->dateNavigator()->selectWeek(); 470 mMainView->dateNavigator()->selectWeek();
471 mCurrentAgendaView = 7 ; 471 mCurrentAgendaView = 7 ;
472} 472}
473 473
474void KOViewManager::showNextXView() 474void KOViewManager::showNextXView()
475{ 475{
476 476
477 globalFlagBlockAgenda = 1; 477 globalFlagBlockAgenda = 1;
478 if ( mCurrentAgendaView != 3 ) 478 if ( mCurrentAgendaView != 3 )
479 mCurrentAgendaView = -1; 479 mCurrentAgendaView = -1;
480 showAgendaView(KOPrefs::instance()->mFullViewMonth); 480 showAgendaView(KOPrefs::instance()->mFullViewMonth);
481 globalFlagBlockAgenda = 2; 481 globalFlagBlockAgenda = 2;
482 mMainView->dateNavigator()->selectDates( QDate::currentDate(), 482 mMainView->dateNavigator()->selectDates( QDate::currentDate(),
483 KOPrefs::instance()->mNextXDays ); 483 KOPrefs::instance()->mNextXDays );
484 mFlagShowNextxDays = true; 484 mFlagShowNextxDays = true;
485 mCurrentAgendaView = 3 ; 485 mCurrentAgendaView = 3 ;
486} 486}
487bool KOViewManager::showsNextDays() 487bool KOViewManager::showsNextDays()
488{ 488{
489 return mFlagShowNextxDays; 489 return mFlagShowNextxDays;
490} 490}
491void KOViewManager::showMonthView() 491void KOViewManager::showMonthView()
492{ 492{
493 if (!mMonthView) { 493 if (!mMonthView) {
494 mMonthView = new KOMonthView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::MonthView"); 494 mMonthView = new KOMonthView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::MonthView");
495 495
496 addView(mMonthView); 496 addView(mMonthView);
497 // mMonthView->show(); 497 // mMonthView->show();
498 // SIGNALS/SLOTS FOR MONTH VIEW 498 // SIGNALS/SLOTS FOR MONTH VIEW
499 connect(mMonthView, SIGNAL(newEventSignal(QDateTime)), 499 connect(mMonthView, SIGNAL(newEventSignal(QDateTime)),
500 mMainView, SLOT(newEvent(QDateTime))); 500 mMainView, SLOT(newEvent(QDateTime)));
501 501
502 connect(mMonthView, SIGNAL(showIncidenceSignal(Incidence *)), 502 connect(mMonthView, SIGNAL(showIncidenceSignal(Incidence *)),
503 mMainView, SLOT(showIncidence(Incidence *))); 503 mMainView, SLOT(showIncidence(Incidence *)));
504 connect(mMonthView, SIGNAL(editIncidenceSignal(Incidence *)), 504 connect(mMonthView, SIGNAL(editIncidenceSignal(Incidence *)),
505 mMainView, SLOT(editIncidence(Incidence *))); 505 mMainView, SLOT(editIncidence(Incidence *)));
506 connect(mMonthView, SIGNAL(deleteIncidenceSignal(Incidence *)), 506 connect(mMonthView, SIGNAL(deleteIncidenceSignal(Incidence *)),
507 mMainView, SLOT(deleteIncidence(Incidence *))); 507 mMainView, SLOT(deleteIncidence(Incidence *)));
508 508
509 connect( mMonthView, SIGNAL( incidenceSelected( Incidence * ) ), 509 connect( mMonthView, SIGNAL( incidenceSelected( Incidence * ) ),
510 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 510 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
511 connect( mMonthView, SIGNAL( cloneIncidenceSignal( Incidence * ) ), 511 connect( mMonthView, SIGNAL( cloneIncidenceSignal( Incidence * ) ),
512 mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); 512 mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
513 connect( mMonthView, SIGNAL( cancelIncidenceSignal( Incidence * ) ), 513 connect( mMonthView, SIGNAL( cancelIncidenceSignal( Incidence * ) ),
514 mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); 514 mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
515 515
516 connect( mMonthView, SIGNAL( moveIncidenceSignal( Incidence * ) ), 516 connect( mMonthView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
517 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 517 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
518 connect( mMonthView, SIGNAL( beamIncidenceSignal( Incidence * ) ), 518 connect( mMonthView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
519 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 519 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
520 connect( mMonthView, SIGNAL( selectWeekNum( int ) ), 520 connect( mMonthView, SIGNAL( selectWeekNum( int ) ),
521 mMainView, SLOT ( selectWeekNum( int ) ) ); 521 mMainView->dateNavigator(), SLOT ( selectWeek( int ) ) );
522 connect( mMonthView, SIGNAL( showDaySignal( QDate ) ), 522 connect( mMonthView, SIGNAL( showDaySignal( QDate ) ),
523 mMainView, SLOT ( showDay( QDate ) ) ); 523 mMainView, SLOT ( showDay( QDate ) ) );
524 connect(mMainView, SIGNAL(configChanged()), mMonthView, SLOT(updateConfig())); 524 connect(mMainView, SIGNAL(configChanged()), mMonthView, SLOT(updateConfig()));
525 connect( mMonthView, SIGNAL(nextMonth() ), 525 connect( mMonthView, SIGNAL(nextMonth() ),
526 mMainView->navigatorBar(), SIGNAL(goNextMonth() ) ); 526 mMainView->navigatorBar(), SIGNAL(goNextMonth() ) );
527 connect( mMonthView, SIGNAL(prevMonth() ), 527 connect( mMonthView, SIGNAL(prevMonth() ),
528 mMainView->navigatorBar(), SIGNAL(goPrevMonth() ) ); 528 mMainView->navigatorBar(), SIGNAL(goPrevMonth() ) );
529 connect( mMonthView, SIGNAL( showNavigator(bool) ), 529 connect( mMonthView, SIGNAL( showNavigator(bool) ),
530 mMainView, SLOT ( showNavigatorBar(bool) ) ); 530 mMainView, SLOT ( showNavigatorBar(bool) ) );
531 } 531 }
532 532
533 globalFlagBlockAgenda = 1; 533 globalFlagBlockAgenda = 1;
534 //mFlagShowNextxDays = false; 534 //mFlagShowNextxDays = false;
535 // if(mMonthView == mCurrentView) return; 535 // if(mMonthView == mCurrentView) return;
536 if ( KOPrefs::instance()->mMonthViewWeek ) 536 if ( KOPrefs::instance()->mMonthViewWeek )
537 mMainView->dateNavigator()->selectWeek(); 537 mMainView->dateNavigator()->selectWeek();
538 else 538 else
539 mMainView->dateNavigator()->selectMonth(); 539 mMainView->dateNavigator()->selectMonth();
540 540
541 showView(mMonthView, true ); 541 showView(mMonthView, true );
542 542
543} 543}
544 544
545void KOViewManager::showTodoView() 545void KOViewManager::showTodoView()
546{ 546{
547 //mFlagShowNextxDays = false; 547 //mFlagShowNextxDays = false;
548 if ( !mTodoView ) { 548 if ( !mTodoView ) {
549 mTodoView = new KOTodoView( mMainView->calendar(), mMainView->viewStack(), 549 mTodoView = new KOTodoView( mMainView->calendar(), mMainView->viewStack(),
550 "KOViewManager::TodoView" ); 550 "KOViewManager::TodoView" );
551 551
552 addView( mTodoView ); 552 addView( mTodoView );
553 // QPEApplication::setStylusOperation( mTodoView, QPEApplication::RightOnHold ); 553 // QPEApplication::setStylusOperation( mTodoView, QPEApplication::RightOnHold );
554 554
555 // SIGNALS/SLOTS FOR TODO VIEW 555 // SIGNALS/SLOTS FOR TODO VIEW
556 connect( mTodoView, SIGNAL( newTodoSignal() ), 556 connect( mTodoView, SIGNAL( newTodoSignal() ),
557 mMainView, SLOT( newTodo() ) ); 557 mMainView, SLOT( newTodo() ) );
558 connect( mTodoView, SIGNAL( newSubTodoSignal( Todo * ) ), 558 connect( mTodoView, SIGNAL( newSubTodoSignal( Todo * ) ),
559 mMainView, SLOT( newSubTodo( Todo *) ) ); 559 mMainView, SLOT( newSubTodo( Todo *) ) );
560 connect( mTodoView, SIGNAL( showTodoSignal( Todo *) ), 560 connect( mTodoView, SIGNAL( showTodoSignal( Todo *) ),
561 mMainView, SLOT( showTodo( Todo * ) ) ); 561 mMainView, SLOT( showTodo( Todo * ) ) );
562 connect( mTodoView, SIGNAL( editTodoSignal( Todo * ) ), 562 connect( mTodoView, SIGNAL( editTodoSignal( Todo * ) ),
563 mMainView, SLOT( editTodo( Todo * ) ) ); 563 mMainView, SLOT( editTodo( Todo * ) ) );
564 connect( mTodoView, SIGNAL( deleteTodoSignal( Todo * ) ), 564 connect( mTodoView, SIGNAL( deleteTodoSignal( Todo * ) ),
565 mMainView, SLOT( deleteTodo( Todo * ) ) ); 565 mMainView, SLOT( deleteTodo( Todo * ) ) );
566 connect( mTodoView, SIGNAL( purgeCompletedSignal() ), 566 connect( mTodoView, SIGNAL( purgeCompletedSignal() ),
567 mMainView, SLOT( purgeCompleted() ) ); 567 mMainView, SLOT( purgeCompleted() ) );
568 568
569 connect( mTodoView, SIGNAL( incidenceSelected( Incidence * ) ), 569 connect( mTodoView, SIGNAL( incidenceSelected( Incidence * ) ),
570 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 570 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
571 571
572 connect( mMainView, SIGNAL( configChanged() ), mTodoView, 572 connect( mMainView, SIGNAL( configChanged() ), mTodoView,
573 SLOT( updateConfig() ) ); 573 SLOT( updateConfig() ) );
574 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mTodoView, 574 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mTodoView,
575 SLOT( updateTodo( Todo *, int ) ) ); 575 SLOT( updateTodo( Todo *, int ) ) );
576 connect( mTodoView, SIGNAL( todoModifiedSignal( Todo *, int ) ), 576 connect( mTodoView, SIGNAL( todoModifiedSignal( Todo *, int ) ),
577 mMainView, SIGNAL ( todoModified( Todo *, int ) ) ); 577 mMainView, SIGNAL ( todoModified( Todo *, int ) ) );
578 connect( mTodoView, SIGNAL( cloneTodoSignal( Incidence * ) ), 578 connect( mTodoView, SIGNAL( cloneTodoSignal( Incidence * ) ),
579 mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); 579 mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
580 connect( mTodoView, SIGNAL( cancelTodoSignal( Incidence * ) ), 580 connect( mTodoView, SIGNAL( cancelTodoSignal( Incidence * ) ),
581 mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); 581 mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
582 connect( mTodoView, SIGNAL( unparentTodoSignal( Todo * ) ), 582 connect( mTodoView, SIGNAL( unparentTodoSignal( Todo * ) ),
583 mMainView, SLOT ( todo_unsub( Todo * ) ) ); 583 mMainView, SLOT ( todo_unsub( Todo * ) ) );
584 connect( mTodoView, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 584 connect( mTodoView, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
585 mMainView, SLOT ( todo_resub( Todo *, Todo *) ) ); 585 mMainView, SLOT ( todo_resub( Todo *, Todo *) ) );
586 connect( mTodoView, SIGNAL( moveTodoSignal( Incidence * ) ), 586 connect( mTodoView, SIGNAL( moveTodoSignal( Incidence * ) ),
587 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 587 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
588 connect( mTodoView, SIGNAL( beamTodoSignal( Incidence * ) ), 588 connect( mTodoView, SIGNAL( beamTodoSignal( Incidence * ) ),
589 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 589 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
590 KConfig *config = KOGlobals::config(); 590 KConfig *config = KOGlobals::config();
591 mTodoView->restoreLayout(config,"Todo View"); 591 mTodoView->restoreLayout(config,"Todo View");
592 mTodoView->setNavigator( mMainView->dateNavigator() ); 592 mTodoView->setNavigator( mMainView->dateNavigator() );
593 } 593 }
594 594
595 globalFlagBlockAgenda = 1; 595 globalFlagBlockAgenda = 1;
596 showView( mTodoView, true ); 596 showView( mTodoView, true );
597 597
598} 598}
599 599
600void KOViewManager::showJournalView() 600void KOViewManager::showJournalView()
601{ 601{
602 //mFlagShowNextxDays = false; 602 //mFlagShowNextxDays = false;
603 if (!mJournalView) { 603 if (!mJournalView) {
604 mJournalView = new KOJournalView(mMainView->calendar(),mMainView->viewStack(), 604 mJournalView = new KOJournalView(mMainView->calendar(),mMainView->viewStack(),
605 "KOViewManager::JournalView"); 605 "KOViewManager::JournalView");
606 connect( mMainView, SIGNAL( configChanged() ), mJournalView, 606 connect( mMainView, SIGNAL( configChanged() ), mJournalView,
607 SLOT( updateConfig() ) ); 607 SLOT( updateConfig() ) );
608 connect(mJournalView, SIGNAL(deleteJournal(Journal *) ), mMainView,SLOT(deleteJournal(Journal *)) ); 608 connect(mJournalView, SIGNAL(deleteJournal(Journal *) ), mMainView,SLOT(deleteJournal(Journal *)) );
609 addView(mJournalView); 609 addView(mJournalView);
610 } 610 }
611 611
612 showView(mJournalView); 612 showView(mJournalView);
613 mMainView->dateNavigator()->selectDates( 1 ); 613 mMainView->dateNavigator()->selectDates( 1 );
614} 614}
615 615
616void KOViewManager::showTimeSpanView() 616void KOViewManager::showTimeSpanView()
617{ 617{
618 //mFlagShowNextxDays = false; 618 //mFlagShowNextxDays = false;
619 if (!mTimeSpanView) { 619 if (!mTimeSpanView) {
620 mTimeSpanView = new KOTimeSpanView(mMainView->calendar(),mMainView->viewStack(), 620 mTimeSpanView = new KOTimeSpanView(mMainView->calendar(),mMainView->viewStack(),
621 "KOViewManager::TimeSpanView"); 621 "KOViewManager::TimeSpanView");
622 addView(mTimeSpanView); 622 addView(mTimeSpanView);
623 623
624 mTimeSpanView->readSettings(); 624 mTimeSpanView->readSettings();
625 } 625 }
626 626
627 showView(mTimeSpanView); 627 showView(mTimeSpanView);
628} 628}
629 629
630Incidence *KOViewManager::currentSelection() 630Incidence *KOViewManager::currentSelection()
631{ 631{
632 if (!mCurrentView) return 0; 632 if (!mCurrentView) return 0;
633 if ( mCurrentView == mListView ) { 633 if ( mCurrentView == mListView ) {
634 if ( mListView->currentItem() ) 634 if ( mListView->currentItem() )
635 return mListView->currentItem(); 635 return mListView->currentItem();
636 } 636 }
637 return mCurrentView->selectedIncidences().first(); 637 return mCurrentView->selectedIncidences().first();
638} 638}
639 639
640QDate KOViewManager::currentSelectionDate() 640QDate KOViewManager::currentSelectionDate()
641{ 641{
642 QDate qd; 642 QDate qd;
643 if (mCurrentView) { 643 if (mCurrentView) {
644 DateList qvl = mCurrentView->selectedDates(); 644 DateList qvl = mCurrentView->selectedDates();
645 if (!qvl.isEmpty()) qd = qvl.first(); 645 if (!qvl.isEmpty()) qd = qvl.first();
646 } 646 }
647 return qd; 647 return qd;
648} 648}
649 649
650void KOViewManager::addView(KOrg::BaseView *view) 650void KOViewManager::addView(KOrg::BaseView *view)
651{ 651{
652#if QT_VERSION >= 0x030000 652#if QT_VERSION >= 0x030000
653 mMainView->viewStack()->addWidget( view ); 653 mMainView->viewStack()->addWidget( view );
654#else 654#else
655 mMainView->viewStack()->addWidget( view, 1 ); 655 mMainView->viewStack()->addWidget( view, 1 );
656#endif 656#endif
657} 657}
658 658
659void KOViewManager::setDocumentId( const QString &id ) 659void KOViewManager::setDocumentId( const QString &id )
660{ 660{
661 if (mTodoView) mTodoView->setDocumentId( id ); 661 if (mTodoView) mTodoView->setDocumentId( id );
662} 662}