summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt4
-rw-r--r--korganizer/kolistview.cpp12
2 files changed, 16 insertions, 0 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index e769bd8..ef53ad9 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,389 +1,393 @@
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.16 ************ 3********** VERSION 2.0.16 ************
4OM/Pi: 4OM/Pi:
5Fixed the SMTP account setting the option. 5Fixed the SMTP account setting the option.
6Fixed something in mail sending.
7
8KO/Pi:
9Added possibility to export selected events/todos as vcal file.
6 10
7********** VERSION 2.0.15 ************ 11********** VERSION 2.0.15 ************
8 12
9PwM/Pi: 13PwM/Pi:
10Added keyboard shorcuts for 14Added keyboard shorcuts for
11- toggling summary view (space bar) 15- toggling summary view (space bar)
12- delete item (delete + backspace key) 16- delete item (delete + backspace key)
13- add new item ( i + n key) 17- add new item ( i + n key)
14Fixed length of info in the title. 18Fixed length of info in the title.
15 19
16KO/Pi-KA/Pi: 20KO/Pi-KA/Pi:
17Changed "ME" menu bar entry to an icon. 21Changed "ME" menu bar entry to an icon.
18 22
19KO/Pi: 23KO/Pi:
20Fixed two minor bugs in displaying todos. 24Fixed two minor bugs in displaying todos.
21If in month view a cell is selected, the key shortcut "d" shows now that date. 25If in month view a cell is selected, the key shortcut "d" shows now that date.
22Added complete info for a todo in month view as an icon left of the text. 26Added complete info for a todo in month view as an icon left of the text.
23Fixed problems of displaying data when "<" or ">" are used in summary/location/description. 27Fixed problems of displaying data when "<" or ">" are used in summary/location/description.
24Fixed problem of search dialog size when switching displays. 28Fixed problem of search dialog size when switching displays.
25Cancel key now closes date picker. 29Cancel key now closes date picker.
26Rearranged KO/Pi file menu structure. 30Rearranged KO/Pi file menu structure.
27 31
28OM/Pi: 32OM/Pi:
29Added to the SMTP account setting the option 33Added to the SMTP account setting the option
30"No secure connection". 34"No secure connection".
31You have to configure your SMTP accounts again, sorry. 35You have to configure your SMTP accounts again, sorry.
32 36
33KA/Pi: 37KA/Pi:
34Added support for importing quoted-printable. 38Added support for importing quoted-printable.
35Support was added by Peter P.. Thanks, Peter! 39Support was added by Peter P.. Thanks, Peter!
36 40
37 41
38********** VERSION 2.0.14 ************ 42********** VERSION 2.0.14 ************
39 43
40Made Passwordmanager PwM/Pi more userfriendly: 44Made Passwordmanager PwM/Pi more userfriendly:
41Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 45Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
42Fixed bug in KO/Pi todo printing. 46Fixed bug in KO/Pi todo printing.
43Made Qtopia calendar import possible on desktop . 47Made Qtopia calendar import possible on desktop .
44 48
45********** VERSION 2.0.13 ************ 49********** VERSION 2.0.13 ************
46 50
47Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 51Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
48 52
49In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 53In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
50 54
51OM/Pi: 55OM/Pi:
52Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 56Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
53Added missing German translation. 57Added missing German translation.
54Added warning if path is specified in local folder settings of account config. 58Added warning if path is specified in local folder settings of account config.
55 59
56********** VERSION 2.0.12 ************ 60********** VERSION 2.0.12 ************
57 61
58KO/Pi: 62KO/Pi:
59Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 63Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
60Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 64Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
61Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 65Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
62 66
63Fixed problem in pi-sync mode when wrong password was sent. 67Fixed problem in pi-sync mode when wrong password was sent.
64 68
65OM/Pi: 69OM/Pi:
66Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 70Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
67Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 71Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
68 72
69********** VERSION 2.0.11 ************ 73********** VERSION 2.0.11 ************
70 74
71Fixed some problems in pi-sync mode 75Fixed some problems in pi-sync mode
72(e.g. details of events were not synced properly) 76(e.g. details of events were not synced properly)
73 77
74********** VERSION 2.0.10 ************ 78********** VERSION 2.0.10 ************
75 79
76KO/Pi: 80KO/Pi:
77In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 81In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
78This is fixed. 82This is fixed.
79Changed the search dialog a bit to make it more user friendly. 83Changed the search dialog a bit to make it more user friendly.
80(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 84(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
81 85
82Added config option to hide the week number in KO/Pi toolbar. 86Added config option to hide the week number in KO/Pi toolbar.
83 87
84********** VERSION 2.0.9 ************ 88********** VERSION 2.0.9 ************
85 89
86Made month view icons for multiday events a bit nicer. 90Made month view icons for multiday events a bit nicer.
87Some minor fixes in KO/Pi 91Some minor fixes in KO/Pi
88(e.g. go to today did not work for new week view properly). 92(e.g. go to today did not work for new week view properly).
89 93
90 94
91********** VERSION 2.0.8 ************ 95********** VERSION 2.0.8 ************
92 96
93Fixed a problem in dependency info in the ipk files for the Zaurus. 97Fixed a problem in dependency info in the ipk files for the Zaurus.
94 98
95Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar. 99Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar.
96 100
97Added a "go today" button to the datepicker. 101Added a "go today" button to the datepicker.
98 102
99Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 103Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
100and made it configureable to show these values. 104and made it configureable to show these values.
101 105
102Fixed a problem for events (from external iCal files) that do have a duration but no end date. 106Fixed a problem for events (from external iCal files) that do have a duration but no end date.
103 107
104 108
105********** VERSION 2.0.7 ************ 109********** VERSION 2.0.7 ************
106 110
107Added global application font settings 111Added global application font settings
108(for all KDE-Pim/Pi apps) to the general settings. 112(for all KDE-Pim/Pi apps) to the general settings.
109 113
110Fixed a problem in OM/Pi when trying to login to some IMAP servers 114Fixed a problem in OM/Pi when trying to login to some IMAP servers
111(like the IMAP server of Apple: mail.mac.com ) 115(like the IMAP server of Apple: mail.mac.com )
112 116
113Added recurring todos to KO/Pi. 117Added recurring todos to KO/Pi.
114 118
115 119
116********** VERSION 2.0.6 ************ 120********** VERSION 2.0.6 ************
117 121
118Some bugfixes in the pi-sync mode. 122Some bugfixes in the pi-sync mode.
119Added German translation for pi-sync mode. 123Added German translation for pi-sync mode.
120 124
121KO/Pi: 125KO/Pi:
122Made the todolist using alternate background. 126Made the todolist using alternate background.
123 127
124Other minor fixes in KO/Pi. 128Other minor fixes in KO/Pi.
125 129
126 130
127********** VERSION 2.0.5 ************ 131********** VERSION 2.0.5 ************
128 132
129Bugfixes in KO/Pi. 133Bugfixes in KO/Pi.
130 134
131********** VERSION 2.0.4 ************ 135********** VERSION 2.0.4 ************
132 136
133KO/Pi: 137KO/Pi:
134Fixed problem loading translations for summary/location edit boxes in event/todo editor. 138Fixed problem loading translations for summary/location edit boxes in event/todo editor.
135 139
136Added a general "select week number" to the toolbar. 140Added a general "select week number" to the toolbar.
137 141
138Fixed some small problem of the new features introduced in version 2.0.3. 142Fixed some small problem of the new features introduced in version 2.0.3.
139 143
140Made it possible to specify one specific category as category color, 144Made it possible to specify one specific category as category color,
141if more than one categories are selected. 145if more than one categories are selected.
142 146
143Fixed a bug in saving colors for categories with non-ascii characters. 147Fixed a bug in saving colors for categories with non-ascii characters.
144(Like, e.g. German Umlauts). 148(Like, e.g. German Umlauts).
145Propably you have to set your colors again for those categories. 149Propably you have to set your colors again for those categories.
146 150
147 151
148********** VERSION 2.0.3 ************ 152********** VERSION 2.0.3 ************
149 153
150KO/Pi: 154KO/Pi:
151Added feature for changing alarm settings for many items at once: 155Added feature for changing alarm settings for many items at once:
152Open list view (or search dialog), select the desired items and choose in 156Open list view (or search dialog), select the desired items and choose in
153the popup menu: Set alarm for selected... 157the popup menu: Set alarm for selected...
154 158
155Added to the event/todo viewer the option to send an email to 159Added to the event/todo viewer the option to send an email to
156all attendees or all selected (with RSVP) attendees. 160all attendees or all selected (with RSVP) attendees.
157 161
158Made the week-month mode changing in month view faster. 162Made the week-month mode changing in month view faster.
159 163
160Made month view better useable with keyboard. 164Made month view better useable with keyboard.
161Now TAB key jumps to next cell with an event/todo. 165Now TAB key jumps to next cell with an event/todo.
162Scroll in cell with coursor keys, scroll in time (next week) with 166Scroll in cell with coursor keys, scroll in time (next week) with
163Shift/Control + coursorkeys. 167Shift/Control + coursorkeys.
164 168
165Fixed bug that the todo view flat mode was reset after first view update. 169Fixed bug that the todo view flat mode was reset after first view update.
166 170
167If a todo is displayed closed in the todo view, 171If a todo is displayed closed in the todo view,
168it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. 172it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties.
169 173
170Added info about the numbers of years to the caption (title) information about a birthday event. 174Added info about the numbers of years to the caption (title) information about a birthday event.
171 175
172Made completion date in todo editor editable. 176Made completion date in todo editor editable.
173 177
174Added possibility to save/load templates for journals. 178Added possibility to save/load templates for journals.
175(Which is just a simple "save text to file" or "insert text from file". 179(Which is just a simple "save text to file" or "insert text from file".
176 180
177********** VERSION 2.0.2 ************ 181********** VERSION 2.0.2 ************
178 182
179KO/Pi: 183KO/Pi:
180Fixed the layout problem of the day label buttons 184Fixed the layout problem of the day label buttons
181of the agenda view introduced in version 2.0.1. 185of the agenda view introduced in version 2.0.1.
182 186
183Added WhatsThis support for the todo view and the list view. 187Added WhatsThis support for the todo view and the list view.
184 188
185Added a quite useful feature to the montview. 189Added a quite useful feature to the montview.
186Just click on the week numbers on the left. 190Just click on the week numbers on the left.
187And in the top right corner of month view/agenda view 191And in the top right corner of month view/agenda view
188there is now a "week number quick selector". 192there is now a "week number quick selector".
189(Click on the black triangle). 193(Click on the black triangle).
190 194
191Made the quite difficult timezone change in KO/Pi easy. 195Made the quite difficult timezone change in KO/Pi easy.
192 196
193OM/Pi: 197OM/Pi:
194Fixed too small icons on desktop. 198Fixed too small icons on desktop.
195Fixed non visible icons in mainwindow on Z with fastload enabled. 199Fixed non visible icons in mainwindow on Z with fastload enabled.
196Added signature file setting to smtp account config. 200Added signature file setting to smtp account config.
197And the signature can be edited and saved in the edit mail dialog. 201And the signature can be edited and saved in the edit mail dialog.
198That does mean: 202That does mean:
199Simply edit the signature for the selected smtp account in the 203Simply edit the signature for the selected smtp account in the
200edit new mail dialog and press the "save signature" button there. 204edit new mail dialog and press the "save signature" button there.
201Then the signature is saved to the file specified in the smtp account settings. 205Then the signature is saved to the file specified in the smtp account settings.
202If there is no file specified, it is saved automatically to the file 206If there is no file specified, it is saved automatically to the file
203kdepim/apps/kopiemail/<accountname>.sig. 207kdepim/apps/kopiemail/<accountname>.sig.
204 208
205 209
206 210
207********** VERSION 2.0.1 ************ 211********** VERSION 2.0.1 ************
208 212
209Oooops ... I forgot to test on the Zaurus 5500 ... 213Oooops ... I forgot to test on the Zaurus 5500 ...
210 214
211Fixed many problems of new (english) strings (and german translations) 215Fixed many problems of new (english) strings (and german translations)
212introduced in the latest versions, where the text was not fitting on the 216introduced in the latest versions, where the text was not fitting on the
213240x320 display of the Zaurus 5500. 217240x320 display of the Zaurus 5500.
214 218
215KO/Pi: 219KO/Pi:
216Added a popup menu ( press pen and hold to get popup ) to the agenda view 220Added a popup menu ( press pen and hold to get popup ) to the agenda view
217with many useful items (add event/todo, show next week, two weeks, month, journal). 221with many useful items (add event/todo, show next week, two weeks, month, journal).
218 222
219Added items to the todolist popup menu for: 223Added items to the todolist popup menu for:
220Display all opened, all closed or all todos flat. 224Display all opened, all closed or all todos flat.
221The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 225The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
222Made the reparenting of todos on the desktop possible via Drag&Drop. 226Made the reparenting of todos on the desktop possible via Drag&Drop.
223Fixed several bugs in setting the completed datetime for todos. 227Fixed several bugs in setting the completed datetime for todos.
224Added info about completed datetime of todos to the todo viewer. 228Added info about completed datetime of todos to the todo viewer.
225Now displaying a completed todo (with completed datetime set) in the agenda view 229Now displaying a completed todo (with completed datetime set) in the agenda view
226at the time of the completion. Such that now it is possible to see in the agenda view 230at the time of the completion. Such that now it is possible to see in the agenda view
227when what todo was completed. 231when what todo was completed.
228Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 232Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
229Now the behaviour is: 233Now the behaviour is:
230Setting a parent to complete sets all (sub)childs to complete. 234Setting a parent to complete sets all (sub)childs to complete.
231Setting a parent to uncomplete does not change the childs. 235Setting a parent to uncomplete does not change the childs.
232Setting a child to uncomplete sets all parent to uncomplete. 236Setting a child to uncomplete sets all parent to uncomplete.
233Setting a child to complete does not change the parents. 237Setting a child to complete does not change the parents.
234 238
235Smart updating and double buffering of the daymatrix. 239Smart updating and double buffering of the daymatrix.
236Showing holidays in the day matrix. 240Showing holidays in the day matrix.
237Many other small performance updates. 241Many other small performance updates.
238 242
239Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. 243Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
240 244
241Now the translation file usertranslation.txt is supposed to be in utf8 format. 245Now the translation file usertranslation.txt is supposed to be in utf8 format.
242If 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. 246If 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.
243 247
244 248
245********** VERSION 2.0.0 ************ 249********** VERSION 2.0.0 ************
246 250
247Stable release 2.0.0! 251Stable release 2.0.0!
248 252
249KO/Pi: 253KO/Pi:
250Fixed problem in edit dialog recreation at startup. 254Fixed problem in edit dialog recreation at startup.
251Made "toggle view*" menu items enabled context sensitive. 255Made "toggle view*" menu items enabled context sensitive.
252Changed agenda size menu to items 1-10. 256Changed agenda size menu to items 1-10.
253Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 257Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
254Usebility enhancements in the KO/Pi menus. 258Usebility enhancements in the KO/Pi menus.
255Birthday import now adds year to summary. 259Birthday import now adds year to summary.
256What's Next view shows age in years for birthday. 260What's Next view shows age in years for birthday.
257 261
258OM/Pi: 262OM/Pi:
259Added three info lines to display subject, from and to of selected mails. 263Added three info lines to display subject, from and to of selected mails.
260 264
261KA/Pi: 265KA/Pi:
262Fixed jump bar behaviour on Zaurus. 266Fixed jump bar behaviour on Zaurus.
263Now KA/Pi search field supports searching for a range of starting characters. 267Now KA/Pi search field supports searching for a range of starting characters.
264E.g. to search for all contact beginning with b to n, type 268E.g. to search for all contact beginning with b to n, type
265b-n 269b-n
266in the search field. 270in the search field.
267 271
268********** VERSION 1.9.20 ************ 272********** VERSION 1.9.20 ************
269 273
270KO/Pi: 274KO/Pi:
271Added for the "dislplay one day" agenda mode 275Added for the "dislplay one day" agenda mode
272info in the caption and in the day lables: 276info in the caption and in the day lables:
273Now it is displayed, if the selected day is from "day before yesterday" 277Now it is displayed, if the selected day is from "day before yesterday"
274to "day after tomorrow". 278to "day after tomorrow".
275Made it possible to delete a Todo, which has sub-todos. 279Made it possible to delete a Todo, which has sub-todos.
276Fixed two small problems in the todo view. 280Fixed two small problems in the todo view.
277Added missing German translation for filter edit and print dialog. 281Added missing German translation for filter edit and print dialog.
278Made search dialog closeable by cancel key. 282Made search dialog closeable by cancel key.
279 283
280Made it possible to select in the date picker the (ligt grey ) 284Made it possible to select in the date picker the (ligt grey )
281dates of the prev./next month with the mouse. 285dates of the prev./next month with the mouse.
282 286
283OM/Pi: 287OM/Pi:
284"Delete mail" icon in main window now deletes all selected mails. 288"Delete mail" icon in main window now deletes all selected mails.
285Fixed the problem, that the state flag of imap mails was ignored. 289Fixed the problem, that the state flag of imap mails was ignored.
286Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 290Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
287to indecate that they are already seen. 291to indecate that they are already seen.
288Fixed the problem that the body of some mails was not displayed in the 292Fixed the problem that the body of some mails was not displayed in the
289mail viewer when fetching them from the imap server directly to read them. 293mail viewer when fetching them from the imap server directly to read them.
290Made it (configurable) possible to show the "To:" field in the list view. 294Made it (configurable) possible to show the "To:" field in the list view.
291Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 295Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
292Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 296Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
293local storage folder (specified in account settings) of the account of the mail. 297local storage folder (specified in account settings) of the account of the mail.
294Removed some memory leaks in OM/Pi. 298Removed some memory leaks in OM/Pi.
295 299
296 300
297********** VERSION 1.9.19 ************ 301********** VERSION 1.9.19 ************
298 302
299Added a lot of missing translations to KA/Pi, 303Added a lot of missing translations to KA/Pi,
300Added some missing translations to KO/Pi and OM/Pi. 304Added some missing translations to KO/Pi and OM/Pi.
301 305
302Fixed some minor problems in KA/Pi + KO/Pi. 306Fixed some minor problems in KA/Pi + KO/Pi.
303 307
304Fixed a crash when closing PwM/Pi. 308Fixed a crash when closing PwM/Pi.
305Added German translation for PwM/Pi. 309Added German translation for PwM/Pi.
306 310
307Made view change and Month View update faster in KO/Pi. 311Made view change and Month View update faster in KO/Pi.
308 312
309 313
310********** VERSION 1.9.18 ************ 314********** VERSION 1.9.18 ************
311 315
312FYI: The VERSION 1.9.17 was a testing release only. 316FYI: The VERSION 1.9.17 was a testing release only.
313Please read the changelog of VERSION 1.9.17 as well. 317Please read the changelog of VERSION 1.9.17 as well.
314 318
315Cleaned up the syncing config dialog. 319Cleaned up the syncing config dialog.
316Added sync config options for date range for events. 320Added sync config options for date range for events.
317Added sync config options for filters on incoming data. 321Added sync config options for filters on incoming data.
318Added sync config options for filters on outgoing data. 322Added sync config options for filters on outgoing data.
319Please read the updated SyncHowTo about the new filter settings. 323Please read the updated SyncHowTo about the new filter settings.
320These filter settings make it now possible to sync with shared 324These filter settings make it now possible to sync with shared
321calendars without writing back private or confidential data 325calendars without writing back private or confidential data
322(via the outgoing filters). 326(via the outgoing filters).
323To sync only with particular parts of a shared calendar, 327To sync only with particular parts of a shared calendar,
324the incoming filter settings can be used. 328the incoming filter settings can be used.
325An example can be found in the SyncHowTo. 329An example can be found in the SyncHowTo.
326Same for shared addressbooks. 330Same for shared addressbooks.
327 331
328Added a setting for the global kdepim data storage. 332Added a setting for the global kdepim data storage.
329Usually the data is stored in (yourhomedir/kdepim). 333Usually the data is stored in (yourhomedir/kdepim).
330Now you can set in the Global config dialog TAB, subTAB "Data storage path" 334Now you can set in the Global config dialog TAB, subTAB "Data storage path"
331a directory where all the kdepim data is stored. 335a directory where all the kdepim data is stored.
332That makes it easy to save all kdepim data on a SD card on the Z, for example. 336That makes it easy to save all kdepim data on a SD card on the Z, for example.
333 337
334KO/Pi: 338KO/Pi:
335The timeedit input has a pulldown list for times. 339The timeedit input has a pulldown list for times.
336If opened, this pulldown list should now has the right time highlighted. 340If opened, this pulldown list should now has the right time highlighted.
337Added the possibility to exclude events/todos/journals in a filter. 341Added the possibility to exclude events/todos/journals in a filter.
338You should exclude journals, if you do not want them to sync with a public calendar. 342You should exclude journals, if you do not want them to sync with a public calendar.
339 343
340KA/Pi: 344KA/Pi:
341Added the possibility to in/exclude public/private/confidential contacts to a filter. 345Added the possibility to in/exclude public/private/confidential contacts to a filter.
342If 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 ... 346If 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 ...
343Added printing of card view and details view on desktop. 347Added printing of card view and details view on desktop.
344Printing of list view is not working... 348Printing of list view is not working...
345Added button for removing pictures in contact editor. 349Added button for removing pictures in contact editor.
346Parsing data fix of KA/Pi version 1.9.17. 350Parsing data fix of KA/Pi version 1.9.17.
347Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 351Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
348Fixed some syncing merging problems. 352Fixed some syncing merging problems.
349 353
350 354
351********** VERSION 1.9.17 ************ 355********** VERSION 1.9.17 ************
352 356
353KO/Pi: 357KO/Pi:
354Fixed that tooltips were not updated after moving an item in agenda view. 358Fixed that tooltips were not updated after moving an item in agenda view.
355Fixed a bug in sorting start date for recurring events in list view. 359Fixed a bug in sorting start date for recurring events in list view.
356Changed the left button in todo viewer from "Agenda" to "Set completed". 360Changed the left button in todo viewer from "Agenda" to "Set completed".
357This 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. 361This 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.
358Added more info in the todo viewer: Startdate, parent/sub todos. 362Added more info in the todo viewer: Startdate, parent/sub todos.
359 363
360 364
361KA/Pi: 365KA/Pi:
362All fields search does now actually search all the (possible) fields, 366All fields search does now actually search all the (possible) fields,
363not only those listed in the contact list. 367not only those listed in the contact list.
364Made is possible to inline a picture in a vcard on the Z. 368Made is possible to inline a picture in a vcard on the Z.
365This was only possible on the desktop, now is it possible on the Z as well. 369This was only possible on the desktop, now is it possible on the Z as well.
366Fixed of missing save settings after filter configuration. 370Fixed of missing save settings after filter configuration.
367Made saving of addressbook much faster. 371Made saving of addressbook much faster.
368Fixed extension widget layout problem. 372Fixed extension widget layout problem.
369Fixed saving of default formatted name settings. 373Fixed saving of default formatted name settings.
370Fixed formatted name handling in edit dialog. 374Fixed formatted name handling in edit dialog.
371Added an option for changing formatted names of many contacts 375Added an option for changing formatted names of many contacts
372(menu: File - Change - Set formatted name). 376(menu: File - Change - Set formatted name).
373 377
374QWhatsThis was not working on the Z ( only black rectangle was shown). 378QWhatsThis was not working on the Z ( only black rectangle was shown).
375This is Fixed. 379This is Fixed.
376 380
377KDE-Sync: 381KDE-Sync:
378Now readonly KDE resources are synced as well. 382Now readonly KDE resources are synced as well.
379(They are not changed in KDE itself, of course). 383(They are not changed in KDE itself, of course).
380 384
381 385
382 386
383********** VERSION 1.9.16 ************ 387********** VERSION 1.9.16 ************
384 388
385KO/Pi: 389KO/Pi:
386Fixed search dialog size on Z 6000 (480x640 display). 390Fixed search dialog size on Z 6000 (480x640 display).
387Added setting to hide/show time in agenda items. 391Added setting to hide/show time in agenda items.
388Added setting to hide not running todos in todo view. 392Added setting to hide not running todos in todo view.
389Added columns for start date/time in todo view. 393Added columns for start date/time in todo view.
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index f235705..3519985 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -241,817 +241,829 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent,
241 mListView->setColumnAlignment(5,AlignLeft); 241 mListView->setColumnAlignment(5,AlignLeft);
242 mListView->setColumnAlignment(6,AlignLeft); 242 mListView->setColumnAlignment(6,AlignLeft);
243 mListView->setColumnAlignment(7,AlignLeft); 243 mListView->setColumnAlignment(7,AlignLeft);
244 mListView->setColumnAlignment(8,AlignLeft); 244 mListView->setColumnAlignment(8,AlignLeft);
245 mListView->setColumnAlignment(9,AlignLeft); 245 mListView->setColumnAlignment(9,AlignLeft);
246 mListView->setColumnAlignment(10,AlignLeft); 246 mListView->setColumnAlignment(10,AlignLeft);
247 mListView->setColumnWidthMode(10, QListView::Manual); 247 mListView->setColumnWidthMode(10, QListView::Manual);
248 new KOListViewWhatsThis(mListView->viewport(),this); 248 new KOListViewWhatsThis(mListView->viewport(),this);
249 249
250 int iii = 0; 250 int iii = 0;
251 for ( iii = 0; iii< 10 ; ++iii ) 251 for ( iii = 0; iii< 10 ; ++iii )
252 mListView->setColumnWidthMode( iii, QListView::Manual ); 252 mListView->setColumnWidthMode( iii, QListView::Manual );
253 253
254 QBoxLayout *layoutTop = new QVBoxLayout(this); 254 QBoxLayout *layoutTop = new QVBoxLayout(this);
255 layoutTop->addWidget(mListView); 255 layoutTop->addWidget(mListView);
256 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 256 mListView->setFont ( KOPrefs::instance()->mListViewFont );
257 mPopupMenu = eventPopup(); 257 mPopupMenu = eventPopup();
258 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 258 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
259 i18n("Select all"),this, 259 i18n("Select all"),this,
260 SLOT(allSelection()),true); 260 SLOT(allSelection()),true);
261 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 261 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
262 i18n("Deselect all"),this, 262 i18n("Deselect all"),this,
263 SLOT(clearSelection()),true); 263 SLOT(clearSelection()),true);
264 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 264 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
265 i18n("Delete all selected"),this, 265 i18n("Delete all selected"),this,
266 SLOT(deleteAll()),true); 266 SLOT(deleteAll()),true);
267 mPopupMenu->insertSeparator(); 267 mPopupMenu->insertSeparator();
268 QPopupMenu * exportPO = new QPopupMenu ( this ); 268 QPopupMenu * exportPO = new QPopupMenu ( this );
269 mPopupMenu->insertItem( i18n("Export selected"), exportPO ); 269 mPopupMenu->insertItem( i18n("Export selected"), exportPO );
270 exportPO->insertItem( i18n("As iCal (ics) file..."),this, 270 exportPO->insertItem( i18n("As iCal (ics) file..."),this,
271 SLOT(saveToFile())); 271 SLOT(saveToFile()));
272 exportPO->insertItem( i18n("As vCal (vcs) file..."),this, 272 exportPO->insertItem( i18n("As vCal (vcs) file..."),this,
273 SLOT(saveToFileVCS())); 273 SLOT(saveToFileVCS()));
274 exportPO->insertItem( i18n("Journal/Details..."),this, 274 exportPO->insertItem( i18n("Journal/Details..."),this,
275 SLOT(saveDescriptionToFile())); 275 SLOT(saveDescriptionToFile()));
276 // mPopupMenu->insertSeparator(); 276 // mPopupMenu->insertSeparator();
277 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 277 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
278 i18n("Add Categ. to selected..."),this, 278 i18n("Add Categ. to selected..."),this,
279 SLOT(addCat()),true); 279 SLOT(addCat()),true);
280 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 280 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
281 i18n("Set Categ. for selected..."),this, 281 i18n("Set Categ. for selected..."),this,
282 SLOT(setCat()),true); 282 SLOT(setCat()),true);
283 //mPopupMenu->insertSeparator(); 283 //mPopupMenu->insertSeparator();
284 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 284 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
285 i18n("Set alarm for selected..."),this, 285 i18n("Set alarm for selected..."),this,
286 SLOT(setAlarm()),true); 286 SLOT(setAlarm()),true);
287 287
288 288
289#ifndef DESKTOP_VERSION 289#ifndef DESKTOP_VERSION
290 mPopupMenu->insertSeparator(); 290 mPopupMenu->insertSeparator();
291 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 291 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
292 i18n("Beam selected via IR"),this, 292 i18n("Beam selected via IR"),this,
293 SLOT(beamSelected()),true); 293 SLOT(beamSelected()),true);
294#endif 294#endif
295 /* 295 /*
296 mPopupMenu = new QPopupMenu; 296 mPopupMenu = new QPopupMenu;
297 mPopupMenu->insertItem(i18n("Edit Event"), this, 297 mPopupMenu->insertItem(i18n("Edit Event"), this,
298 SLOT (editEvent())); 298 SLOT (editEvent()));
299 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, 299 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this,
300 SLOT (deleteEvent())); 300 SLOT (deleteEvent()));
301 mPopupMenu->insertSeparator(); 301 mPopupMenu->insertSeparator();
302 mPopupMenu->insertItem(i18n("Show Dates"), this, 302 mPopupMenu->insertItem(i18n("Show Dates"), this,
303 SLOT(showDates())); 303 SLOT(showDates()));
304 mPopupMenu->insertItem(i18n("Hide Dates"), this, 304 mPopupMenu->insertItem(i18n("Hide Dates"), this,
305 SLOT(hideDates())); 305 SLOT(hideDates()));
306 */ 306 */
307 QObject::connect(mListView,SIGNAL( newEvent()), 307 QObject::connect(mListView,SIGNAL( newEvent()),
308 this,SIGNAL(signalNewEvent())); 308 this,SIGNAL(signalNewEvent()));
309 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), 309 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)),
310 this,SLOT(defaultItemAction(QListViewItem *))); 310 this,SLOT(defaultItemAction(QListViewItem *)));
311 QObject::connect(mListView,SIGNAL(rightButtonClicked ( QListViewItem *, 311 QObject::connect(mListView,SIGNAL(rightButtonClicked ( QListViewItem *,
312 const QPoint &, int )), 312 const QPoint &, int )),
313 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); 313 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int)));
314 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), 314 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)),
315 SLOT(processSelectionChange(QListViewItem *))); 315 SLOT(processSelectionChange(QListViewItem *)));
316 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), 316 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)),
317 SIGNAL(showIncidenceSignal(Incidence *)) ); 317 SIGNAL(showIncidenceSignal(Incidence *)) );
318 318
319 readSettings(KOGlobals::config(),"KOListView Layout"); 319 readSettings(KOGlobals::config(),"KOListView Layout");
320} 320}
321 321
322KOListView::~KOListView() 322KOListView::~KOListView()
323{ 323{
324 delete mPopupMenu; 324 delete mPopupMenu;
325} 325}
326QString KOListView::getWhatsThisText(QPoint p) 326QString KOListView::getWhatsThisText(QPoint p)
327{ 327{
328 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); 328 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p );
329 if ( item ) 329 if ( item )
330 return KIncidenceFormatter::instance()->getFormattedText( item->data(), 330 return KIncidenceFormatter::instance()->getFormattedText( item->data(),
331 KOPrefs::instance()->mWTshowDetails, 331 KOPrefs::instance()->mWTshowDetails,
332 KOPrefs::instance()->mWTshowCreated, 332 KOPrefs::instance()->mWTshowCreated,
333 KOPrefs::instance()->mWTshowChanged); 333 KOPrefs::instance()->mWTshowChanged);
334 return i18n("That is the list view" ); 334 return i18n("That is the list view" );
335 335
336} 336}
337 337
338void KOListView::updateList() 338void KOListView::updateList()
339{ 339{
340 // qDebug(" KOListView::updateList() "); 340 // qDebug(" KOListView::updateList() ");
341 341
342} 342}
343 343
344void KOListView::addCat( ) 344void KOListView::addCat( )
345{ 345{
346 setCategories( false ); 346 setCategories( false );
347} 347}
348void KOListView::setCat() 348void KOListView::setCat()
349{ 349{
350 setCategories( true ); 350 setCategories( true );
351} 351}
352void KOListView::setAlarm() 352void KOListView::setAlarm()
353{ 353{
354 KOAlarmPrefs kap( this); 354 KOAlarmPrefs kap( this);
355 if ( !kap.exec() ) 355 if ( !kap.exec() )
356 return; 356 return;
357 357
358 358
359 QStringList itemList; 359 QStringList itemList;
360 QPtrList<KOListViewItem> sel ; 360 QPtrList<KOListViewItem> sel ;
361 QListViewItem *qitem = mListView->firstChild (); 361 QListViewItem *qitem = mListView->firstChild ();
362 while ( qitem ) { 362 while ( qitem ) {
363 if ( qitem->isSelected() ) { 363 if ( qitem->isSelected() ) {
364 Incidence* inc = ((KOListViewItem *) qitem)->data(); 364 Incidence* inc = ((KOListViewItem *) qitem)->data();
365 if ( inc->type() != "Journal" ) { 365 if ( inc->type() != "Journal" ) {
366 if ( inc->type() == "Todo" ) { 366 if ( inc->type() == "Todo" ) {
367 if ( ((Todo*)inc)->hasDueDate() ) 367 if ( ((Todo*)inc)->hasDueDate() )
368 sel.append(((KOListViewItem *)qitem)); 368 sel.append(((KOListViewItem *)qitem));
369 } else 369 } else
370 sel.append(((KOListViewItem *)qitem)); 370 sel.append(((KOListViewItem *)qitem));
371 } 371 }
372 } 372 }
373 qitem = qitem->nextSibling(); 373 qitem = qitem->nextSibling();
374 } 374 }
375 int count = 0; 375 int count = 0;
376 KOListViewItem * item, *temp; 376 KOListViewItem * item, *temp;
377 item = sel.first(); 377 item = sel.first();
378 Incidence* inc; 378 Incidence* inc;
379 while ( item ) { 379 while ( item ) {
380 inc = item->data(); 380 inc = item->data();
381 ++count; 381 ++count;
382 if (kap.mAlarmButton->isChecked()) { 382 if (kap.mAlarmButton->isChecked()) {
383 if (inc->alarms().count() == 0) 383 if (inc->alarms().count() == 0)
384 inc->newAlarm(); 384 inc->newAlarm();
385 QPtrList<Alarm> alarms = inc->alarms(); 385 QPtrList<Alarm> alarms = inc->alarms();
386 Alarm *alarm; 386 Alarm *alarm;
387 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { 387 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) {
388 alarm->setEnabled(true); 388 alarm->setEnabled(true);
389 int j = kap.mAlarmTimeEdit->value()* -60; 389 int j = kap.mAlarmTimeEdit->value()* -60;
390 if (kap.mAlarmIncrCombo->currentItem() == 1) 390 if (kap.mAlarmIncrCombo->currentItem() == 1)
391 j = j * 60; 391 j = j * 60;
392 else if (kap.mAlarmIncrCombo->currentItem() == 2) 392 else if (kap.mAlarmIncrCombo->currentItem() == 2)
393 j = j * (60 * 24); 393 j = j * (60 * 24);
394 alarm->setStartOffset( j ); 394 alarm->setStartOffset( j );
395 395
396 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { 396 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) {
397 alarm->setProcedureAlarm(kap.mAlarmProgram); 397 alarm->setProcedureAlarm(kap.mAlarmProgram);
398 } 398 }
399 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) 399 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn())
400 alarm->setAudioAlarm(kap.mAlarmSound); 400 alarm->setAudioAlarm(kap.mAlarmSound);
401 else 401 else
402 alarm->setType(Alarm::Invalid); 402 alarm->setType(Alarm::Invalid);
403 //alarm->setAudioAlarm("default"); 403 //alarm->setAudioAlarm("default");
404 // TODO: Deal with multiple alarms 404 // TODO: Deal with multiple alarms
405 break; // For now, stop after the first alarm 405 break; // For now, stop after the first alarm
406 } 406 }
407 } else { 407 } else {
408 Alarm* alarm = inc->alarms().first(); 408 Alarm* alarm = inc->alarms().first();
409 if ( alarm ) { 409 if ( alarm ) {
410 alarm->setEnabled(false); 410 alarm->setEnabled(false);
411 alarm->setType(Alarm::Invalid); 411 alarm->setType(Alarm::Invalid);
412 } 412 }
413 } 413 }
414 temp = item; 414 temp = item;
415 item = sel.next(); 415 item = sel.next();
416 mUidDict.remove( inc->uid() ); 416 mUidDict.remove( inc->uid() );
417 delete temp;; 417 delete temp;;
418 addIncidence( inc ); 418 addIncidence( inc );
419 } 419 }
420 topLevelWidget()->setCaption( i18n("Canged alarm for %1 items").arg( count ) ); 420 topLevelWidget()->setCaption( i18n("Canged alarm for %1 items").arg( count ) );
421 qDebug("KO: Set alarm for %d items", count); 421 qDebug("KO: Set alarm for %d items", count);
422 calendar()->reInitAlarmSettings(); 422 calendar()->reInitAlarmSettings();
423} 423}
424void KOListView::setCategories( bool removeOld ) 424void KOListView::setCategories( bool removeOld )
425{ 425{
426 426
427 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 427 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
428 if (! csd->exec()) { 428 if (! csd->exec()) {
429 delete csd; 429 delete csd;
430 return; 430 return;
431 } 431 }
432 QStringList catList = csd->selectedCategories(); 432 QStringList catList = csd->selectedCategories();
433 delete csd; 433 delete csd;
434 // if ( catList.count() == 0 ) 434 // if ( catList.count() == 0 )
435 // return; 435 // return;
436 catList.sort(); 436 catList.sort();
437 QString categoriesStr = catList.join(","); 437 QString categoriesStr = catList.join(",");
438 int i; 438 int i;
439 QStringList itemList; 439 QStringList itemList;
440 QPtrList<KOListViewItem> sel ; 440 QPtrList<KOListViewItem> sel ;
441 QListViewItem *qitem = mListView->firstChild (); 441 QListViewItem *qitem = mListView->firstChild ();
442 while ( qitem ) { 442 while ( qitem ) {
443 if ( qitem->isSelected() ) { 443 if ( qitem->isSelected() ) {
444 sel.append(((KOListViewItem *)qitem)); 444 sel.append(((KOListViewItem *)qitem));
445 } 445 }
446 qitem = qitem->nextSibling(); 446 qitem = qitem->nextSibling();
447 } 447 }
448 KOListViewItem * item, *temp; 448 KOListViewItem * item, *temp;
449 item = sel.first(); 449 item = sel.first();
450 Incidence* inc; 450 Incidence* inc;
451 while ( item ) { 451 while ( item ) {
452 inc = item->data(); 452 inc = item->data();
453 if ( removeOld ) { 453 if ( removeOld ) {
454 inc->setCategories( categoriesStr ); 454 inc->setCategories( categoriesStr );
455 } else { 455 } else {
456 itemList = QStringList::split (",", inc->categoriesStr() ); 456 itemList = QStringList::split (",", inc->categoriesStr() );
457 for( i = 0; i< catList.count(); ++i ) { 457 for( i = 0; i< catList.count(); ++i ) {
458 if ( !itemList.contains (catList[i])) 458 if ( !itemList.contains (catList[i]))
459 itemList.append( catList[i] ); 459 itemList.append( catList[i] );
460 } 460 }
461 itemList.sort(); 461 itemList.sort();
462 inc->setCategories( itemList.join(",") ); 462 inc->setCategories( itemList.join(",") );
463 } 463 }
464 temp = item; 464 temp = item;
465 item = sel.next(); 465 item = sel.next();
466 mUidDict.remove( inc->uid() ); 466 mUidDict.remove( inc->uid() );
467 delete temp;; 467 delete temp;;
468 addIncidence( inc ); 468 addIncidence( inc );
469 } 469 }
470} 470}
471 471
472void KOListView::beamSelected() 472void KOListView::beamSelected()
473{ 473{
474 int icount = 0; 474 int icount = 0;
475 QPtrList<Incidence> delSel ; 475 QPtrList<Incidence> delSel ;
476 QListViewItem *item = mListView->firstChild (); 476 QListViewItem *item = mListView->firstChild ();
477 while ( item ) { 477 while ( item ) {
478 if ( item->isSelected() ) { 478 if ( item->isSelected() ) {
479 delSel.append(((KOListViewItem *)item)->data()); 479 delSel.append(((KOListViewItem *)item)->data());
480 ++icount; 480 ++icount;
481 } 481 }
482 482
483 item = item->nextSibling(); 483 item = item->nextSibling();
484 } 484 }
485 if ( icount ) { 485 if ( icount ) {
486 emit beamIncidenceList( delSel ); 486 emit beamIncidenceList( delSel );
487 return; 487 return;
488 QString fn ; 488 QString fn ;
489 fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs"; 489 fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs";
490 QString mes; 490 QString mes;
491 bool createbup = true; 491 bool createbup = true;
492 if ( createbup ) { 492 if ( createbup ) {
493 QString description = "\n"; 493 QString description = "\n";
494 CalendarLocal* cal = new CalendarLocal(); 494 CalendarLocal* cal = new CalendarLocal();
495 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 495 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
496 Incidence *incidence = delSel.first(); 496 Incidence *incidence = delSel.first();
497 while ( incidence ) { 497 while ( incidence ) {
498 Incidence *in = incidence->clone(); 498 Incidence *in = incidence->clone();
499 description += in->summary() + "\n"; 499 description += in->summary() + "\n";
500 cal->addIncidence( in ); 500 cal->addIncidence( in );
501 incidence = delSel.next(); 501 incidence = delSel.next();
502 } 502 }
503 FileStorage storage( cal, fn, new VCalFormat ); 503 FileStorage storage( cal, fn, new VCalFormat );
504 storage.save(); 504 storage.save();
505 delete cal; 505 delete cal;
506 mes = i18n("KO/Pi: Ready for beaming"); 506 mes = i18n("KO/Pi: Ready for beaming");
507 topLevelWidget()->setCaption(mes); 507 topLevelWidget()->setCaption(mes);
508 508
509#ifndef DESKTOP_VERSION 509#ifndef DESKTOP_VERSION
510 Ir *ir = new Ir( this ); 510 Ir *ir = new Ir( this );
511 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 511 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
512 ir->send( fn, description, "text/x-vCalendar" ); 512 ir->send( fn, description, "text/x-vCalendar" );
513#endif 513#endif
514 } 514 }
515 } 515 }
516} 516}
517void KOListView::beamDone( Ir *ir ) 517void KOListView::beamDone( Ir *ir )
518{ 518{
519#ifndef DESKTOP_VERSION 519#ifndef DESKTOP_VERSION
520 delete ir; 520 delete ir;
521#endif 521#endif
522 topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done")); 522 topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done"));
523} 523}
524 524
525void KOListView::saveDescriptionToFile() 525void KOListView::saveDescriptionToFile()
526{ 526{
527 527
528 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), 528 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"),
529 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), 529 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."),
530 i18n("Continue"), i18n("Cancel"), 0, 530 i18n("Continue"), i18n("Cancel"), 0,
531 0, 1 ); 531 0, 1 );
532 if ( result != 0 ) { 532 if ( result != 0 ) {
533 return; 533 return;
534 } 534 }
535 int icount = 0; 535 int icount = 0;
536 QPtrList<Incidence> delSel ; 536 QPtrList<Incidence> delSel ;
537 QListViewItem *item = mListView->firstChild (); 537 QListViewItem *item = mListView->firstChild ();
538 while ( item ) { 538 while ( item ) {
539 if ( item->isSelected() ) { 539 if ( item->isSelected() ) {
540 delSel.append(((KOListViewItem *)item)->data()); 540 delSel.append(((KOListViewItem *)item)->data());
541 ++icount; 541 ++icount;
542 } 542 }
543 543
544 item = item->nextSibling(); 544 item = item->nextSibling();
545 } 545 }
546 if ( icount ) { 546 if ( icount ) {
547 QString fn = KOPrefs::instance()->mLastSaveFile; 547 QString fn = KOPrefs::instance()->mLastSaveFile;
548 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 548 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
549 549
550 if ( fn == "" ) 550 if ( fn == "" )
551 return; 551 return;
552 QFileInfo info; 552 QFileInfo info;
553 info.setFile( fn ); 553 info.setFile( fn );
554 QString mes; 554 QString mes;
555 bool createbup = true; 555 bool createbup = true;
556 if ( info. exists() ) { 556 if ( info. exists() ) {
557 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 557 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
558 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 558 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
559 i18n("Overwrite!"), i18n("Cancel"), 0, 559 i18n("Overwrite!"), i18n("Cancel"), 0,
560 0, 1 ); 560 0, 1 );
561 if ( result != 0 ) { 561 if ( result != 0 ) {
562 createbup = false; 562 createbup = false;
563 } 563 }
564 } 564 }
565 if ( createbup ) { 565 if ( createbup ) {
566 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + 566 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") +
567 KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false); 567 KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false);
568 Incidence *incidence = delSel.first(); 568 Incidence *incidence = delSel.first();
569 icount = 0; 569 icount = 0;
570 while ( incidence ) { 570 while ( incidence ) {
571 if ( incidence->type() == "Journal" ) { 571 if ( incidence->type() == "Journal" ) {
572 text += "\n************************************\n"; 572 text += "\n************************************\n";
573 text += i18n("Journal from: ") +incidence->dtStartDateStr( false ); 573 text += i18n("Journal from: ") +incidence->dtStartDateStr( false );
574 text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); 574 text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false);
575 text +="\n" + i18n("Description: ") + "\n"+ incidence->description(); 575 text +="\n" + i18n("Description: ") + "\n"+ incidence->description();
576 ++icount; 576 ++icount;
577 577
578 } else { 578 } else {
579 if ( !incidence->description().isEmpty() ) { 579 if ( !incidence->description().isEmpty() ) {
580 text += "\n************************************\n"; 580 text += "\n************************************\n";
581 if ( incidence->type() == "Todo" ) 581 if ( incidence->type() == "Todo" )
582 text += i18n("To-Do: "); 582 text += i18n("To-Do: ");
583 text += incidence->summary(); 583 text += incidence->summary();
584 if ( incidence->hasStartDate() ) 584 if ( incidence->hasStartDate() )
585 text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false ); 585 text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false );
586 text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); 586 text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false);
587 if ( !incidence->location().isEmpty() ) 587 if ( !incidence->location().isEmpty() )
588 text += "\n" +i18n("Location: ") + incidence->location(); 588 text += "\n" +i18n("Location: ") + incidence->location();
589 text += "\n" + i18n("Description: ") + "\n" + incidence->description(); 589 text += "\n" + i18n("Description: ") + "\n" + incidence->description();
590 ++icount; 590 ++icount;
591 591
592 } 592 }
593 } 593 }
594 incidence = delSel.next(); 594 incidence = delSel.next();
595 } 595 }
596 QFile file( fn ); 596 QFile file( fn );
597 if (!file.open( IO_WriteOnly ) ) { 597 if (!file.open( IO_WriteOnly ) ) {
598 topLevelWidget()->setCaption(i18n("File open error - nothing saved!") ); 598 topLevelWidget()->setCaption(i18n("File open error - nothing saved!") );
599 return; 599 return;
600 } 600 }
601 QTextStream ts( &file ); 601 QTextStream ts( &file );
602 ts << text; 602 ts << text;
603 file.close(); 603 file.close();
604 //qDebug("%s ", text.latin1()); 604 //qDebug("%s ", text.latin1());
605 mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); 605 mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount );
606 KOPrefs::instance()->mLastSaveFile = fn; 606 KOPrefs::instance()->mLastSaveFile = fn;
607 topLevelWidget()->setCaption(mes); 607 topLevelWidget()->setCaption(mes);
608 } 608 }
609 } 609 }
610} 610}
611void KOListView::saveToFileVCS() 611void KOListView::saveToFileVCS()
612{ 612{
613 writeToFile( false ); 613 writeToFile( false );
614} 614}
615void KOListView::saveToFile() 615void KOListView::saveToFile()
616{ 616{
617 writeToFile( true ); 617 writeToFile( true );
618} 618}
619void KOListView::writeToFile( bool iCal ) 619void KOListView::writeToFile( bool iCal )
620{ 620{
621 621
622 int icount = 0; 622 int icount = 0;
623 QPtrList<Incidence> delSel ; 623 QPtrList<Incidence> delSel ;
624 QListViewItem *item = mListView->firstChild (); 624 QListViewItem *item = mListView->firstChild ();
625 bool journal = iCal; // warn only for vCal
625 while ( item ) { 626 while ( item ) {
626 if ( item->isSelected() ) { 627 if ( item->isSelected() ) {
628 if ( !journal )
629 if ( ((KOListViewItem *)item)->data()->type() == "Journal")
630 journal = true;
627 delSel.append(((KOListViewItem *)item)->data()); 631 delSel.append(((KOListViewItem *)item)->data());
628 ++icount; 632 ++icount;
629 } 633 }
630 634
631 item = item->nextSibling(); 635 item = item->nextSibling();
632 } 636 }
637 if ( !iCal && journal ) {
638 int result = KMessageBox::warningContinueCancel(this,
639 i18n("The journal entries can not be\nexported to a vCalendar file."),
640 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
641 true);
642 if (result != KMessageBox::Continue) return;
643 }
633 if ( icount ) { 644 if ( icount ) {
634 QString fn = KOPrefs::instance()->mLastSaveFile; 645 QString fn = KOPrefs::instance()->mLastSaveFile;
635 QString extension; 646 QString extension;
636 if ( iCal ) { 647 if ( iCal ) {
637 if ( fn.right( 4 ).lower() == ".vcs" ) { 648 if ( fn.right( 4 ).lower() == ".vcs" ) {
638 fn = fn.left( fn.length() -3) + "ics"; 649 fn = fn.left( fn.length() -3) + "ics";
639 } 650 }
640 } else { 651 } else {
641 if ( fn.right( 4 ).lower() == ".ics" ) { 652 if ( fn.right( 4 ).lower() == ".ics" ) {
642 fn = fn.left( fn.length() -3) + "vcs"; 653 fn = fn.left( fn.length() -3) + "vcs";
643 } 654 }
644 } 655 }
645 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 656 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
646 657
647 if ( fn == "" ) 658 if ( fn == "" )
648 return; 659 return;
649 QFileInfo info; 660 QFileInfo info;
650 info.setFile( fn ); 661 info.setFile( fn );
651 QString mes; 662 QString mes;
652 bool createbup = true; 663 bool createbup = true;
653 if ( info. exists() ) { 664 if ( info. exists() ) {
654 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 665 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
655 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 666 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
656 i18n("Overwrite!"), i18n("Cancel"), 0, 667 i18n("Overwrite!"), i18n("Cancel"), 0,
657 0, 1 ); 668 0, 1 );
658 if ( result != 0 ) { 669 if ( result != 0 ) {
659 createbup = false; 670 createbup = false;
660 } 671 }
661 } 672 }
662 if ( createbup ) { 673 if ( createbup ) {
663 CalendarLocal cal; 674 CalendarLocal cal;
664 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 675 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
665 Incidence *incidence = delSel.first(); 676 Incidence *incidence = delSel.first();
666 while ( incidence ) { 677 while ( incidence ) {
667 cal.addIncidence( incidence->clone() ); 678 cal.addIncidence( incidence->clone() );
668 incidence = delSel.next(); 679 incidence = delSel.next();
669 } 680 }
670 if ( iCal ) { 681 if ( iCal ) {
671 ICalFormat format; 682 ICalFormat format;
672 format.save( &cal, fn ); 683 format.save( &cal, fn );
673 } else { 684 } else {
685
674 VCalFormat format; 686 VCalFormat format;
675 format.save( &cal, fn ); 687 format.save( &cal, fn );
676 } 688 }
677 mes = i18n("KO/Pi:Saved %1").arg(fn ); 689 mes = i18n("KO/Pi:Saved %1").arg(fn );
678 KOPrefs::instance()->mLastSaveFile = fn; 690 KOPrefs::instance()->mLastSaveFile = fn;
679 topLevelWidget()->setCaption(mes); 691 topLevelWidget()->setCaption(mes);
680 } 692 }
681 } 693 }
682} 694}
683void KOListView::deleteAll() 695void KOListView::deleteAll()
684{ 696{
685 int icount = 0; 697 int icount = 0;
686 QPtrList<Incidence> delSel ; 698 QPtrList<Incidence> delSel ;
687 QListViewItem *item = mListView->firstChild (); 699 QListViewItem *item = mListView->firstChild ();
688 while ( item ) { 700 while ( item ) {
689 if ( item->isSelected() ) { 701 if ( item->isSelected() ) {
690 delSel.append(((KOListViewItem *)item)->data()); 702 delSel.append(((KOListViewItem *)item)->data());
691 ++icount; 703 ++icount;
692 } 704 }
693 705
694 item = item->nextSibling(); 706 item = item->nextSibling();
695 } 707 }
696 if ( icount ) { 708 if ( icount ) {
697 Incidence *incidence = delSel.first(); 709 Incidence *incidence = delSel.first();
698 Incidence *toDelete; 710 Incidence *toDelete;
699 KOPrefs *p = KOPrefs::instance(); 711 KOPrefs *p = KOPrefs::instance();
700 bool confirm = p->mConfirm; 712 bool confirm = p->mConfirm;
701 QString mess; 713 QString mess;
702 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); 714 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount );
703 if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { 715 if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) {
704 p->mConfirm = false; 716 p->mConfirm = false;
705 int delCounter = 0; 717 int delCounter = 0;
706 QDialog dia ( this, "p-dialog", true ); 718 QDialog dia ( this, "p-dialog", true );
707 QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); 719 QLabel lab (i18n("Close dialog to abort deletion!"), &dia );
708 QVBoxLayout lay( &dia ); 720 QVBoxLayout lay( &dia );
709 lay.setMargin(7); 721 lay.setMargin(7);
710 lay.setSpacing(7); 722 lay.setSpacing(7);
711 lay.addWidget( &lab); 723 lay.addWidget( &lab);
712 QProgressBar bar( icount, &dia ); 724 QProgressBar bar( icount, &dia );
713 lay.addWidget( &bar); 725 lay.addWidget( &bar);
714 int w = 220; 726 int w = 220;
715 int h = 50; 727 int h = 50;
716 int dw = QApplication::desktop()->width(); 728 int dw = QApplication::desktop()->width();
717 int dh = QApplication::desktop()->height(); 729 int dh = QApplication::desktop()->height();
718 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 730 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
719 //dia.resize( 240,50 ); 731 //dia.resize( 240,50 );
720 dia.show(); 732 dia.show();
721 733
722 while ( incidence ) { 734 while ( incidence ) {
723 bar.setProgress( delCounter ); 735 bar.setProgress( delCounter );
724 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); 736 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter );
725 dia.setCaption( mess ); 737 dia.setCaption( mess );
726 qApp->processEvents(); 738 qApp->processEvents();
727 toDelete = (incidence); 739 toDelete = (incidence);
728 incidence = delSel.next(); 740 incidence = delSel.next();
729 emit deleteIncidenceSignal(toDelete ); 741 emit deleteIncidenceSignal(toDelete );
730 if ( dia.result() != 0 ) 742 if ( dia.result() != 0 )
731 break; 743 break;
732 744
733 } 745 }
734 mess = mess.sprintf( i18n("%d items remaining in list."), count() ); 746 mess = mess.sprintf( i18n("%d items remaining in list."), count() );
735 topLevelWidget ()->setCaption( mess ); 747 topLevelWidget ()->setCaption( mess );
736 p->mConfirm = confirm; 748 p->mConfirm = confirm;
737 } 749 }
738 } 750 }
739 751
740 752
741} 753}
742int KOListView::maxDatesHint() 754int KOListView::maxDatesHint()
743{ 755{
744 return 0; 756 return 0;
745} 757}
746 758
747int KOListView::currentDateCount() 759int KOListView::currentDateCount()
748{ 760{
749 return 0; 761 return 0;
750} 762}
751 763
752QPtrList<Incidence> KOListView::selectedIncidences() 764QPtrList<Incidence> KOListView::selectedIncidences()
753{ 765{
754 QPtrList<Incidence> eventList; 766 QPtrList<Incidence> eventList;
755 QListViewItem *item = mListView->firstChild (); 767 QListViewItem *item = mListView->firstChild ();
756 while ( item ) { 768 while ( item ) {
757 if ( item->isSelected() ) { 769 if ( item->isSelected() ) {
758 eventList.append(((KOListViewItem *)item)->data()); 770 eventList.append(((KOListViewItem *)item)->data());
759 } 771 }
760 772
761 item = item->nextSibling(); 773 item = item->nextSibling();
762 } 774 }
763 775
764 // // QListViewItem *item = mListView->selectedItem(); 776 // // QListViewItem *item = mListView->selectedItem();
765 //if (item) eventList.append(((KOListViewItem *)item)->data()); 777 //if (item) eventList.append(((KOListViewItem *)item)->data());
766 778
767 return eventList; 779 return eventList;
768} 780}
769 781
770DateList KOListView::selectedDates() 782DateList KOListView::selectedDates()
771{ 783{
772 DateList eventList; 784 DateList eventList;
773 return eventList; 785 return eventList;
774} 786}
775 787
776void KOListView::showDates(bool show) 788void KOListView::showDates(bool show)
777{ 789{
778 // Shouldn't we set it to a value greater 0? When showDates is called with 790 // Shouldn't we set it to a value greater 0? When showDates is called with
779 // show == true at first, then the columnwidths are set to zero. 791 // show == true at first, then the columnwidths are set to zero.
780 static int oldColWidth1 = 0; 792 static int oldColWidth1 = 0;
781 static int oldColWidth3 = 0; 793 static int oldColWidth3 = 0;
782 794
783 if (!show) { 795 if (!show) {
784 oldColWidth1 = mListView->columnWidth(1); 796 oldColWidth1 = mListView->columnWidth(1);
785 oldColWidth3 = mListView->columnWidth(3); 797 oldColWidth3 = mListView->columnWidth(3);
786 mListView->setColumnWidth(1, 0); 798 mListView->setColumnWidth(1, 0);
787 mListView->setColumnWidth(3, 0); 799 mListView->setColumnWidth(3, 0);
788 } else { 800 } else {
789 mListView->setColumnWidth(1, oldColWidth1); 801 mListView->setColumnWidth(1, oldColWidth1);
790 mListView->setColumnWidth(3, oldColWidth3); 802 mListView->setColumnWidth(3, oldColWidth3);
791 } 803 }
792 mListView->repaint(); 804 mListView->repaint();
793} 805}
794 806
795void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, 807void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd,
796 const QDate &td) 808 const QDate &td)
797{ 809{
798#ifndef KORG_NOPRINTER 810#ifndef KORG_NOPRINTER
799 calPrinter->preview(CalPrinter::Day, fd, td); 811 calPrinter->preview(CalPrinter::Day, fd, td);
800#endif 812#endif
801} 813}
802 814
803void KOListView::showDates() 815void KOListView::showDates()
804{ 816{
805 showDates(true); 817 showDates(true);
806} 818}
807 819
808void KOListView::hideDates() 820void KOListView::hideDates()
809{ 821{
810 showDates(false); 822 showDates(false);
811} 823}
812void KOListView::resetFocus() 824void KOListView::resetFocus()
813{ 825{
814 mListView->setFocus(); 826 mListView->setFocus();
815} 827}
816void KOListView::updateView() 828void KOListView::updateView()
817{ 829{
818 mListView->setFocus(); 830 mListView->setFocus();
819 if ( mListView->firstChild () ) 831 if ( mListView->firstChild () )
820 mListView->setCurrentItem( mListView->firstChild () ); 832 mListView->setCurrentItem( mListView->firstChild () );
821} 833}
822void KOListView::updateConfig() 834void KOListView::updateConfig()
823{ 835{
824 836
825 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 837 mListView->setFont ( KOPrefs::instance()->mListViewFont );
826 updateView(); 838 updateView();
827 839
828} 840}
829void KOListView::setStartDate(const QDate &start) 841void KOListView::setStartDate(const QDate &start)
830{ 842{
831 mStartDate = start; 843 mStartDate = start;
832} 844}
833 845
834void KOListView::showDates(const QDate &start, const QDate &end) 846void KOListView::showDates(const QDate &start, const QDate &end)
835{ 847{
836 clear(); 848 clear();
837 mStartDate = start; 849 mStartDate = start;
838 QDate date = start; 850 QDate date = start;
839 QPtrList<Journal> j_list; 851 QPtrList<Journal> j_list;
840 while( date <= end ) { 852 while( date <= end ) {
841 addEvents(calendar()->events(date)); 853 addEvents(calendar()->events(date));
842 addTodos(calendar()->todos(date)); 854 addTodos(calendar()->todos(date));
843 Journal* jo = calendar()->journal(date); 855 Journal* jo = calendar()->journal(date);
844 if ( jo ) 856 if ( jo )
845 j_list.append( jo ); 857 j_list.append( jo );
846 date = date.addDays( 1 ); 858 date = date.addDays( 1 );
847 } 859 }
848 addJournals(j_list); 860 addJournals(j_list);
849 emit incidenceSelected( 0 ); 861 emit incidenceSelected( 0 );
850 updateView(); 862 updateView();
851 863
852} 864}
853 865
854void KOListView::addEvents(QPtrList<Event> eventList) 866void KOListView::addEvents(QPtrList<Event> eventList)
855{ 867{
856 Event *ev; 868 Event *ev;
857 for(ev = eventList.first(); ev; ev = eventList.next()) { 869 for(ev = eventList.first(); ev; ev = eventList.next()) {
858 addIncidence(ev); 870 addIncidence(ev);
859 } 871 }
860 if ( !mListView->currentItem() ){ 872 if ( !mListView->currentItem() ){
861 updateView(); 873 updateView();
862 } 874 }
863} 875}
864 876
865void KOListView::addTodos(QPtrList<Todo> eventList) 877void KOListView::addTodos(QPtrList<Todo> eventList)
866{ 878{
867 Todo *ev; 879 Todo *ev;
868 for(ev = eventList.first(); ev; ev = eventList.next()) { 880 for(ev = eventList.first(); ev; ev = eventList.next()) {
869 addIncidence(ev); 881 addIncidence(ev);
870 } 882 }
871 if ( !mListView->currentItem() ){ 883 if ( !mListView->currentItem() ){
872 updateView(); 884 updateView();
873 } 885 }
874} 886}
875void KOListView::addJournals(QPtrList<Journal> eventList) 887void KOListView::addJournals(QPtrList<Journal> eventList)
876{ 888{
877 Journal *ev; 889 Journal *ev;
878 for(ev = eventList.first(); ev; ev = eventList.next()) { 890 for(ev = eventList.first(); ev; ev = eventList.next()) {
879 addIncidence(ev); 891 addIncidence(ev);
880 } 892 }
881 if ( !mListView->currentItem() ){ 893 if ( !mListView->currentItem() ){
882 updateView(); 894 updateView();
883 } 895 }
884} 896}
885 897
886void KOListView::addIncidence(Incidence *incidence) 898void KOListView::addIncidence(Incidence *incidence)
887{ 899{
888 if ( mUidDict.find( incidence->uid() ) ) return; 900 if ( mUidDict.find( incidence->uid() ) ) return;
889 901
890 // mListView->setFont ( KOPrefs::instance()->mListViewFont ); 902 // mListView->setFont ( KOPrefs::instance()->mListViewFont );
891 mUidDict.insert( incidence->uid(), incidence ); 903 mUidDict.insert( incidence->uid(), incidence );
892 904
893 KOListViewItem *item = new KOListViewItem( incidence, mListView ); 905 KOListViewItem *item = new KOListViewItem( incidence, mListView );
894 ListItemVisitor v(item, mStartDate ); 906 ListItemVisitor v(item, mStartDate );
895 if (incidence->accept(v)) return; 907 if (incidence->accept(v)) return;
896 else delete item; 908 else delete item;
897 //qDebug("delete item "); 909 //qDebug("delete item ");
898} 910}
899 911
900void KOListView::showEvents(QPtrList<Event> eventList) 912void KOListView::showEvents(QPtrList<Event> eventList)
901{ 913{
902 clear(); 914 clear();
903 915
904 addEvents(eventList); 916 addEvents(eventList);
905 917
906 // After new creation of list view no events are selected. 918 // After new creation of list view no events are selected.
907 emit incidenceSelected( 0 ); 919 emit incidenceSelected( 0 );
908} 920}
909int KOListView::count() 921int KOListView::count()
910{ 922{
911 return mListView->childCount(); 923 return mListView->childCount();
912} 924}
913 925
914void KOListView::changeEventDisplay(Event *event, int action) 926void KOListView::changeEventDisplay(Event *event, int action)
915{ 927{
916 KOListViewItem *item; 928 KOListViewItem *item;
917 929
918 switch(action) { 930 switch(action) {
919 case KOGlobals::EVENTADDED: 931 case KOGlobals::EVENTADDED:
920 addIncidence( event ); 932 addIncidence( event );
921 break; 933 break;
922 case KOGlobals::EVENTEDITED: 934 case KOGlobals::EVENTEDITED:
923 item = getItemForEvent(event); 935 item = getItemForEvent(event);
924 if (item) { 936 if (item) {
925 mUidDict.remove( event->uid() ); 937 mUidDict.remove( event->uid() );
926 delete item; 938 delete item;
927 addIncidence( event ); 939 addIncidence( event );
928 } 940 }
929 break; 941 break;
930 case KOGlobals::EVENTDELETED: 942 case KOGlobals::EVENTDELETED:
931 item = getItemForEvent(event); 943 item = getItemForEvent(event);
932 if (item) { 944 if (item) {
933 mUidDict.remove( event->uid() ); 945 mUidDict.remove( event->uid() );
934 delete item; 946 delete item;
935 } 947 }
936 break; 948 break;
937 default: 949 default:
938 ; 950 ;
939 } 951 }
940} 952}
941 953
942KOListViewItem *KOListView::getItemForEvent(Event *event) 954KOListViewItem *KOListView::getItemForEvent(Event *event)
943{ 955{
944 KOListViewItem *item = (KOListViewItem *)mListView->firstChild(); 956 KOListViewItem *item = (KOListViewItem *)mListView->firstChild();
945 while (item) { 957 while (item) {
946 if (item->data() == event) return item; 958 if (item->data() == event) return item;
947 item = (KOListViewItem *)item->nextSibling(); 959 item = (KOListViewItem *)item->nextSibling();
948 } 960 }
949 return 0; 961 return 0;
950} 962}
951 963
952void KOListView::defaultItemAction(QListViewItem *i) 964void KOListView::defaultItemAction(QListViewItem *i)
953{ 965{
954 KOListViewItem *item = static_cast<KOListViewItem *>( i ); 966 KOListViewItem *item = static_cast<KOListViewItem *>( i );
955 if ( item ) defaultAction( item->data() ); 967 if ( item ) defaultAction( item->data() );
956 968
957} 969}
958 970
959void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) 971void KOListView::popupMenu(QListViewItem *item,const QPoint &,int)
960{ 972{
961 mActiveItem = (KOListViewItem *)item; 973 mActiveItem = (KOListViewItem *)item;
962 if (mActiveItem) { 974 if (mActiveItem) {
963 Incidence *incidence = mActiveItem->data(); 975 Incidence *incidence = mActiveItem->data();
964 mPopupMenu->showIncidencePopup(incidence); 976 mPopupMenu->showIncidencePopup(incidence);
965 977
966 /* 978 /*
967 if ( incidence && incidence->type() == "Event" ) { 979 if ( incidence && incidence->type() == "Event" ) {
968 Event *event = static_cast<Event *>( incidence ); 980 Event *event = static_cast<Event *>( incidence );
969 mPopupMenu->showEventPopup(event); 981 mPopupMenu->showEventPopup(event);
970 } 982 }
971 */ 983 */
972 } 984 }
973} 985}
974 986
975void KOListView::readSettings(KConfig *config, QString setting) 987void KOListView::readSettings(KConfig *config, QString setting)
976{ 988{
977 // qDebug("KOListView::readSettings "); 989 // qDebug("KOListView::readSettings ");
978 mListView->restoreLayout(config,setting); 990 mListView->restoreLayout(config,setting);
979} 991}
980 992
981void KOListView::writeSettings(KConfig *config, QString setting) 993void KOListView::writeSettings(KConfig *config, QString setting)
982{ 994{
983 // qDebug("KOListView::writeSettings "); 995 // qDebug("KOListView::writeSettings ");
984 mListView->saveLayout(config, setting); 996 mListView->saveLayout(config, setting);
985} 997}
986 998
987void KOListView::processSelectionChange(QListViewItem *) 999void KOListView::processSelectionChange(QListViewItem *)
988{ 1000{
989 1001
990 KOListViewItem *item = 1002 KOListViewItem *item =
991 static_cast<KOListViewItem *>( mListView->currentItem() ); 1003 static_cast<KOListViewItem *>( mListView->currentItem() );
992 1004
993 if ( !item ) { 1005 if ( !item ) {
994 emit incidenceSelected( 0 ); 1006 emit incidenceSelected( 0 );
995 } else { 1007 } else {
996 emit incidenceSelected( item->data() ); 1008 emit incidenceSelected( item->data() );
997 } 1009 }
998} 1010}
999 1011
1000void KOListView::clearSelection() 1012void KOListView::clearSelection()
1001{ 1013{
1002 mListView->selectAll( false ); 1014 mListView->selectAll( false );
1003} 1015}
1004void KOListView::allSelection() 1016void KOListView::allSelection()
1005{ 1017{
1006 mListView->selectAll( true ); 1018 mListView->selectAll( true );
1007} 1019}
1008 1020
1009void KOListView::clear() 1021void KOListView::clear()
1010{ 1022{
1011 mListView->clear(); 1023 mListView->clear();
1012 mUidDict.clear(); 1024 mUidDict.clear();
1013} 1025}
1014 1026
1015Incidence* KOListView::currentItem() 1027Incidence* KOListView::currentItem()
1016{ 1028{
1017 if ( mListView->currentItem() ) 1029 if ( mListView->currentItem() )
1018 return ((KOListViewItem*) mListView->currentItem())->data(); 1030 return ((KOListViewItem*) mListView->currentItem())->data();
1019 return 0; 1031 return 0;
1020} 1032}
1021void KOListView::keyPressEvent ( QKeyEvent *e) 1033void KOListView::keyPressEvent ( QKeyEvent *e)
1022{ 1034{
1023 1035
1024 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) { 1036 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) {
1025 deleteAll(); 1037 deleteAll();
1026 return; 1038 return;
1027 } 1039 }
1028 1040
1029 e->ignore(); 1041 e->ignore();
1030} 1042}
1031void KOListViewListView::keyPressEvent ( QKeyEvent *e) 1043void KOListViewListView::keyPressEvent ( QKeyEvent *e)
1032{ 1044{
1033 1045
1034 switch ( e->key() ) { 1046 switch ( e->key() ) {
1035 case Qt::Key_Down: 1047 case Qt::Key_Down:
1036 if ( e->state() == ShiftButton ) { 1048 if ( e->state() == ShiftButton ) {
1037 QListViewItem* cn = currentItem(); 1049 QListViewItem* cn = currentItem();
1038 if ( !cn ) 1050 if ( !cn )
1039 cn = firstChild(); 1051 cn = firstChild();
1040 if ( !cn ) 1052 if ( !cn )
1041 return; 1053 return;
1042 while ( cn->nextSibling() ) 1054 while ( cn->nextSibling() )
1043 cn = cn->nextSibling(); 1055 cn = cn->nextSibling();
1044 setCurrentItem ( cn ); 1056 setCurrentItem ( cn );
1045 ensureItemVisible ( cn ); 1057 ensureItemVisible ( cn );
1046 1058
1047 e->accept(); 1059 e->accept();
1048 return; 1060 return;
1049 } 1061 }
1050 if ( e->state() == ControlButton ) { 1062 if ( e->state() == ControlButton ) {
1051 int count = childCount (); 1063 int count = childCount ();
1052 int jump = count / 5; 1064 int jump = count / 5;
1053 QListViewItem* cn; 1065 QListViewItem* cn;
1054 cn = currentItem(); 1066 cn = currentItem();
1055 if ( ! cn ) 1067 if ( ! cn )
1056 return; 1068 return;
1057 if ( jump == 0 ) 1069 if ( jump == 0 )