summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-02-17 21:45:30 (UTC)
committer zautrix <zautrix>2005-02-17 21:45:30 (UTC)
commitb1e885da3b0a083121f940485d9c0eea53ff5139 (patch) (unidiff)
treee999d042e45cd1410cc327a3c347bbefa5896289
parent8e8d2bd0c31eb272a7f26756252ff4930d0602bc (diff)
downloadkdepimpi-b1e885da3b0a083121f940485d9c0eea53ff5139.zip
kdepimpi-b1e885da3b0a083121f940485d9c0eea53ff5139.tar.gz
kdepimpi-b1e885da3b0a083121f940485d9c0eea53ff5139.tar.bz2
fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt3
-rw-r--r--korganizer/koeventviewer.cpp12
2 files changed, 14 insertions, 1 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 62c8447..06aa5f6 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,394 +1,397 @@
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.8 ************ 3********** VERSION 2.0.8 ************
4 4
5Fixed a problem in dependency info in the ipk files for the Zaurus. 5Fixed a problem in dependency info in the ipk files for the Zaurus.
6 6
7Added 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. 7Added 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.
8 8
9Added a "go today" button to the datepicker. 9Added a "go today" button to the datepicker.
10 10
11Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
12and made it configureable to show these values.
13
11 14
12********** VERSION 2.0.7 ************ 15********** VERSION 2.0.7 ************
13 16
14Added global application font settings 17Added global application font settings
15(for all KDE-Pim/Pi apps) to the general settings. 18(for all KDE-Pim/Pi apps) to the general settings.
16 19
17Fixed a problem in OM/Pi when trying to login to some IMAP servers 20Fixed a problem in OM/Pi when trying to login to some IMAP servers
18(like the IMAP server of Apple: mail.mac.com ) 21(like the IMAP server of Apple: mail.mac.com )
19 22
20Added recurring todos to KO/Pi. 23Added recurring todos to KO/Pi.
21 24
22 25
23********** VERSION 2.0.6 ************ 26********** VERSION 2.0.6 ************
24 27
25Some bugfixes in the pi-sync mode. 28Some bugfixes in the pi-sync mode.
26Added German translation for pi-sync mode. 29Added German translation for pi-sync mode.
27 30
28KO/Pi: 31KO/Pi:
29Made the todolist using alternate background. 32Made the todolist using alternate background.
30 33
31Other minor fixes in KO/Pi. 34Other minor fixes in KO/Pi.
32 35
33 36
34********** VERSION 2.0.5 ************ 37********** VERSION 2.0.5 ************
35 38
36Bugfixes in KO/Pi. 39Bugfixes in KO/Pi.
37 40
38********** VERSION 2.0.4 ************ 41********** VERSION 2.0.4 ************
39 42
40KO/Pi: 43KO/Pi:
41Fixed problem loading translations for summary/location edit boxes in event/todo editor. 44Fixed problem loading translations for summary/location edit boxes in event/todo editor.
42 45
43Added a general "select week number" to the toolbar. 46Added a general "select week number" to the toolbar.
44 47
45Fixed some small problem of the new features introduced in version 2.0.3. 48Fixed some small problem of the new features introduced in version 2.0.3.
46 49
47Made it possible to specify one specific category as category color, 50Made it possible to specify one specific category as category color,
48if more than one categories are selected. 51if more than one categories are selected.
49 52
50Fixed a bug in saving colors for categories with non-ascii characters. 53Fixed a bug in saving colors for categories with non-ascii characters.
51(Like, e.g. German Umlauts). 54(Like, e.g. German Umlauts).
52Propably you have to set your colors again for those categories. 55Propably you have to set your colors again for those categories.
53 56
54 57
55********** VERSION 2.0.3 ************ 58********** VERSION 2.0.3 ************
56 59
57KO/Pi: 60KO/Pi:
58Added feature for changing alarm settings for many items at once: 61Added feature for changing alarm settings for many items at once:
59Open list view (or search dialog), select the desired items and choose in 62Open list view (or search dialog), select the desired items and choose in
60the popup menu: Set alarm for selected... 63the popup menu: Set alarm for selected...
61 64
62Added to the event/todo viewer the option to send an email to 65Added to the event/todo viewer the option to send an email to
63all attendees or all selected (with RSVP) attendees. 66all attendees or all selected (with RSVP) attendees.
64 67
65Made the week-month mode changing in month view faster. 68Made the week-month mode changing in month view faster.
66 69
67Made month view better useable with keyboard. 70Made month view better useable with keyboard.
68Now TAB key jumps to next cell with an event/todo. 71Now TAB key jumps to next cell with an event/todo.
69Scroll in cell with coursor keys, scroll in time (next week) with 72Scroll in cell with coursor keys, scroll in time (next week) with
70Shift/Control + coursorkeys. 73Shift/Control + coursorkeys.
71 74
72Fixed bug that the todo view flat mode was reset after first view update. 75Fixed bug that the todo view flat mode was reset after first view update.
73 76
74If a todo is displayed closed in the todo view, 77If a todo is displayed closed in the todo view,
75it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. 78it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties.
76 79
77Added info about the numbers of years to the caption (title) information about a birthday event. 80Added info about the numbers of years to the caption (title) information about a birthday event.
78 81
79Made completion date in todo editor editable. 82Made completion date in todo editor editable.
80 83
81Added possibility to save/load templates for journals. 84Added possibility to save/load templates for journals.
82(Which is just a simple "save text to file" or "insert text from file". 85(Which is just a simple "save text to file" or "insert text from file".
83 86
84********** VERSION 2.0.2 ************ 87********** VERSION 2.0.2 ************
85 88
86KO/Pi: 89KO/Pi:
87Fixed the layout problem of the day label buttons 90Fixed the layout problem of the day label buttons
88of the agenda view introduced in version 2.0.1. 91of the agenda view introduced in version 2.0.1.
89 92
90Added WhatsThis support for the todo view and the list view. 93Added WhatsThis support for the todo view and the list view.
91 94
92Added a quite useful feature to the montview. 95Added a quite useful feature to the montview.
93Just click on the week numbers on the left. 96Just click on the week numbers on the left.
94And in the top right corner of month view/agenda view 97And in the top right corner of month view/agenda view
95there is now a "week number quick selector". 98there is now a "week number quick selector".
96(Click on the black triangle). 99(Click on the black triangle).
97 100
98Made the quite difficult timezone change in KO/Pi easy. 101Made the quite difficult timezone change in KO/Pi easy.
99 102
100OM/Pi: 103OM/Pi:
101Fixed too small icons on desktop. 104Fixed too small icons on desktop.
102Fixed non visible icons in mainwindow on Z with fastload enabled. 105Fixed non visible icons in mainwindow on Z with fastload enabled.
103Added signature file setting to smtp account config. 106Added signature file setting to smtp account config.
104And the signature can be edited and saved in the edit mail dialog. 107And the signature can be edited and saved in the edit mail dialog.
105That does mean: 108That does mean:
106Simply edit the signature for the selected smtp account in the 109Simply edit the signature for the selected smtp account in the
107edit new mail dialog and press the "save signature" button there. 110edit new mail dialog and press the "save signature" button there.
108Then the signature is saved to the file specified in the smtp account settings. 111Then the signature is saved to the file specified in the smtp account settings.
109If there is no file specified, it is saved automatically to the file 112If there is no file specified, it is saved automatically to the file
110kdepim/apps/kopiemail/<accountname>.sig. 113kdepim/apps/kopiemail/<accountname>.sig.
111 114
112 115
113 116
114********** VERSION 2.0.1 ************ 117********** VERSION 2.0.1 ************
115 118
116Oooops ... I forgot to test on the Zaurus 5500 ... 119Oooops ... I forgot to test on the Zaurus 5500 ...
117 120
118Fixed many problems of new (english) strings (and german translations) 121Fixed many problems of new (english) strings (and german translations)
119introduced in the latest versions, where the text was not fitting on the 122introduced in the latest versions, where the text was not fitting on the
120240x320 display of the Zaurus 5500. 123240x320 display of the Zaurus 5500.
121 124
122KO/Pi: 125KO/Pi:
123Added a popup menu ( press pen and hold to get popup ) to the agenda view 126Added a popup menu ( press pen and hold to get popup ) to the agenda view
124with many useful items (add event/todo, show next week, two weeks, month, journal). 127with many useful items (add event/todo, show next week, two weeks, month, journal).
125 128
126Added items to the todolist popup menu for: 129Added items to the todolist popup menu for:
127Display all opened, all closed or all todos flat. 130Display all opened, all closed or all todos flat.
128The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 131The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
129Made the reparenting of todos on the desktop possible via Drag&Drop. 132Made the reparenting of todos on the desktop possible via Drag&Drop.
130Fixed several bugs in setting the completed datetime for todos. 133Fixed several bugs in setting the completed datetime for todos.
131Added info about completed datetime of todos to the todo viewer. 134Added info about completed datetime of todos to the todo viewer.
132Now displaying a completed todo (with completed datetime set) in the agenda view 135Now displaying a completed todo (with completed datetime set) in the agenda view
133at the time of the completion. Such that now it is possible to see in the agenda view 136at the time of the completion. Such that now it is possible to see in the agenda view
134when what todo was completed. 137when what todo was completed.
135Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 138Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
136Now the behaviour is: 139Now the behaviour is:
137Setting a parent to complete sets all (sub)childs to complete. 140Setting a parent to complete sets all (sub)childs to complete.
138Setting a parent to uncomplete does not change the childs. 141Setting a parent to uncomplete does not change the childs.
139Setting a child to uncomplete sets all parent to uncomplete. 142Setting a child to uncomplete sets all parent to uncomplete.
140Setting a child to complete does not change the parents. 143Setting a child to complete does not change the parents.
141 144
142Smart updating and double buffering of the daymatrix. 145Smart updating and double buffering of the daymatrix.
143Showing holidays in the day matrix. 146Showing holidays in the day matrix.
144Many other small performance updates. 147Many other small performance updates.
145 148
146Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. 149Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
147 150
148Now the translation file usertranslation.txt is supposed to be in utf8 format. 151Now the translation file usertranslation.txt is supposed to be in utf8 format.
149If 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. 152If 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.
150 153
151 154
152********** VERSION 2.0.0 ************ 155********** VERSION 2.0.0 ************
153 156
154Stable release 2.0.0! 157Stable release 2.0.0!
155 158
156KO/Pi: 159KO/Pi:
157Fixed problem in edit dialog recreation at startup. 160Fixed problem in edit dialog recreation at startup.
158Made "toggle view*" menu items enabled context sensitive. 161Made "toggle view*" menu items enabled context sensitive.
159Changed agenda size menu to items 1-10. 162Changed agenda size menu to items 1-10.
160Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 163Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
161Usebility enhancements in the KO/Pi menus. 164Usebility enhancements in the KO/Pi menus.
162Birthday import now adds year to summary. 165Birthday import now adds year to summary.
163What's Next view shows age in years for birthday. 166What's Next view shows age in years for birthday.
164 167
165OM/Pi: 168OM/Pi:
166Added three info lines to display subject, from and to of selected mails. 169Added three info lines to display subject, from and to of selected mails.
167 170
168KA/Pi: 171KA/Pi:
169Fixed jump bar behaviour on Zaurus. 172Fixed jump bar behaviour on Zaurus.
170Now KA/Pi search field supports searching for a range of starting characters. 173Now KA/Pi search field supports searching for a range of starting characters.
171E.g. to search for all contact beginning with b to n, type 174E.g. to search for all contact beginning with b to n, type
172b-n 175b-n
173in the search field. 176in the search field.
174 177
175********** VERSION 1.9.20 ************ 178********** VERSION 1.9.20 ************
176 179
177KO/Pi: 180KO/Pi:
178Added for the "dislplay one day" agenda mode 181Added for the "dislplay one day" agenda mode
179info in the caption and in the day lables: 182info in the caption and in the day lables:
180Now it is displayed, if the selected day is from "day before yesterday" 183Now it is displayed, if the selected day is from "day before yesterday"
181to "day after tomorrow". 184to "day after tomorrow".
182Made it possible to delete a Todo, which has sub-todos. 185Made it possible to delete a Todo, which has sub-todos.
183Fixed two small problems in the todo view. 186Fixed two small problems in the todo view.
184Added missing German translation for filter edit and print dialog. 187Added missing German translation for filter edit and print dialog.
185Made search dialog closeable by cancel key. 188Made search dialog closeable by cancel key.
186 189
187Made it possible to select in the date picker the (ligt grey ) 190Made it possible to select in the date picker the (ligt grey )
188dates of the prev./next month with the mouse. 191dates of the prev./next month with the mouse.
189 192
190OM/Pi: 193OM/Pi:
191"Delete mail" icon in main window now deletes all selected mails. 194"Delete mail" icon in main window now deletes all selected mails.
192Fixed the problem, that the state flag of imap mails was ignored. 195Fixed the problem, that the state flag of imap mails was ignored.
193Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 196Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
194to indecate that they are already seen. 197to indecate that they are already seen.
195Fixed the problem that the body of some mails was not displayed in the 198Fixed the problem that the body of some mails was not displayed in the
196mail viewer when fetching them from the imap server directly to read them. 199mail viewer when fetching them from the imap server directly to read them.
197Made it (configurable) possible to show the "To:" field in the list view. 200Made it (configurable) possible to show the "To:" field in the list view.
198Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 201Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
199Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 202Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
200local storage folder (specified in account settings) of the account of the mail. 203local storage folder (specified in account settings) of the account of the mail.
201Removed some memory leaks in OM/Pi. 204Removed some memory leaks in OM/Pi.
202 205
203 206
204********** VERSION 1.9.19 ************ 207********** VERSION 1.9.19 ************
205 208
206Added a lot of missing translations to KA/Pi, 209Added a lot of missing translations to KA/Pi,
207Added some missing translations to KO/Pi and OM/Pi. 210Added some missing translations to KO/Pi and OM/Pi.
208 211
209Fixed some minor problems in KA/Pi + KO/Pi. 212Fixed some minor problems in KA/Pi + KO/Pi.
210 213
211Fixed a crash when closing PwM/Pi. 214Fixed a crash when closing PwM/Pi.
212Added German translation for PwM/Pi. 215Added German translation for PwM/Pi.
213 216
214Made view change and Month View update faster in KO/Pi. 217Made view change and Month View update faster in KO/Pi.
215 218
216 219
217********** VERSION 1.9.18 ************ 220********** VERSION 1.9.18 ************
218 221
219FYI: The VERSION 1.9.17 was a testing release only. 222FYI: The VERSION 1.9.17 was a testing release only.
220Please read the changelog of VERSION 1.9.17 as well. 223Please read the changelog of VERSION 1.9.17 as well.
221 224
222Cleaned up the syncing config dialog. 225Cleaned up the syncing config dialog.
223Added sync config options for date range for events. 226Added sync config options for date range for events.
224Added sync config options for filters on incoming data. 227Added sync config options for filters on incoming data.
225Added sync config options for filters on outgoing data. 228Added sync config options for filters on outgoing data.
226Please read the updated SyncHowTo about the new filter settings. 229Please read the updated SyncHowTo about the new filter settings.
227These filter settings make it now possible to sync with shared 230These filter settings make it now possible to sync with shared
228calendars without writing back private or confidential data 231calendars without writing back private or confidential data
229(via the outgoing filters). 232(via the outgoing filters).
230To sync only with particular parts of a shared calendar, 233To sync only with particular parts of a shared calendar,
231the incoming filter settings can be used. 234the incoming filter settings can be used.
232An example can be found in the SyncHowTo. 235An example can be found in the SyncHowTo.
233Same for shared addressbooks. 236Same for shared addressbooks.
234 237
235Added a setting for the global kdepim data storage. 238Added a setting for the global kdepim data storage.
236Usually the data is stored in (yourhomedir/kdepim). 239Usually the data is stored in (yourhomedir/kdepim).
237Now you can set in the Global config dialog TAB, subTAB "Data storage path" 240Now you can set in the Global config dialog TAB, subTAB "Data storage path"
238a directory where all the kdepim data is stored. 241a directory where all the kdepim data is stored.
239That makes it easy to save all kdepim data on a SD card on the Z, for example. 242That makes it easy to save all kdepim data on a SD card on the Z, for example.
240 243
241KO/Pi: 244KO/Pi:
242The timeedit input has a pulldown list for times. 245The timeedit input has a pulldown list for times.
243If opened, this pulldown list should now has the right time highlighted. 246If opened, this pulldown list should now has the right time highlighted.
244Added the possibility to exclude events/todos/journals in a filter. 247Added the possibility to exclude events/todos/journals in a filter.
245You should exclude journals, if you do not want them to sync with a public calendar. 248You should exclude journals, if you do not want them to sync with a public calendar.
246 249
247KA/Pi: 250KA/Pi:
248Added the possibility to in/exclude public/private/confidential contacts to a filter. 251Added the possibility to in/exclude public/private/confidential contacts to a filter.
249If 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 ... 252If 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 ...
250Added printing of card view and details view on desktop. 253Added printing of card view and details view on desktop.
251Printing of list view is not working... 254Printing of list view is not working...
252Added button for removing pictures in contact editor. 255Added button for removing pictures in contact editor.
253Parsing data fix of KA/Pi version 1.9.17. 256Parsing data fix of KA/Pi version 1.9.17.
254Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 257Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
255Fixed some syncing merging problems. 258Fixed some syncing merging problems.
256 259
257 260
258********** VERSION 1.9.17 ************ 261********** VERSION 1.9.17 ************
259 262
260KO/Pi: 263KO/Pi:
261Fixed that tooltips were not updated after moving an item in agenda view. 264Fixed that tooltips were not updated after moving an item in agenda view.
262Fixed a bug in sorting start date for recurring events in list view. 265Fixed a bug in sorting start date for recurring events in list view.
263Changed the left button in todo viewer from "Agenda" to "Set completed". 266Changed the left button in todo viewer from "Agenda" to "Set completed".
264This 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. 267This 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.
265Added more info in the todo viewer: Startdate, parent/sub todos. 268Added more info in the todo viewer: Startdate, parent/sub todos.
266 269
267 270
268KA/Pi: 271KA/Pi:
269All fields search does now actually search all the (possible) fields, 272All fields search does now actually search all the (possible) fields,
270not only those listed in the contact list. 273not only those listed in the contact list.
271Made is possible to inline a picture in a vcard on the Z. 274Made is possible to inline a picture in a vcard on the Z.
272This was only possible on the desktop, now is it possible on the Z as well. 275This was only possible on the desktop, now is it possible on the Z as well.
273Fixed of missing save settings after filter configuration. 276Fixed of missing save settings after filter configuration.
274Made saving of addressbook much faster. 277Made saving of addressbook much faster.
275Fixed extension widget layout problem. 278Fixed extension widget layout problem.
276Fixed saving of default formatted name settings. 279Fixed saving of default formatted name settings.
277Fixed formatted name handling in edit dialog. 280Fixed formatted name handling in edit dialog.
278Added an option for changing formatted names of many contacts 281Added an option for changing formatted names of many contacts
279(menu: File - Change - Set formatted name). 282(menu: File - Change - Set formatted name).
280 283
281QWhatsThis was not working on the Z ( only black rectangle was shown). 284QWhatsThis was not working on the Z ( only black rectangle was shown).
282This is Fixed. 285This is Fixed.
283 286
284KDE-Sync: 287KDE-Sync:
285Now readonly KDE resources are synced as well. 288Now readonly KDE resources are synced as well.
286(They are not changed in KDE itself, of course). 289(They are not changed in KDE itself, of course).
287 290
288 291
289 292
290********** VERSION 1.9.16 ************ 293********** VERSION 1.9.16 ************
291 294
292KO/Pi: 295KO/Pi:
293Fixed search dialog size on Z 6000 (480x640 display). 296Fixed search dialog size on Z 6000 (480x640 display).
294Added setting to hide/show time in agenda items. 297Added setting to hide/show time in agenda items.
295Added setting to hide not running todos in todo view. 298Added setting to hide not running todos in todo view.
296Added columns for start date/time in todo view. 299Added columns for start date/time in todo view.
297Replaced the solid half-hour lines in agenda view by dot lines. 300Replaced the solid half-hour lines in agenda view by dot lines.
298Added possibility of printing the What's Next View on the desktop 301Added possibility of printing the What's Next View on the desktop
299(i.e. Windows and Linux). 302(i.e. Windows and Linux).
300Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 303Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
301Added tooltips in month view.(Tooltips only available on desktop) 304Added tooltips in month view.(Tooltips only available on desktop)
302 305
303Fixed a strange problem in KO/Pi alarm applet. 306Fixed a strange problem in KO/Pi alarm applet.
304Did not find the actual problem, 307Did not find the actual problem,
305such that now Qtopia reboots again if deinstalling the alarm applet. 308such that now Qtopia reboots again if deinstalling the alarm applet.
306But the alarm applet should work again. 309But the alarm applet should work again.
307 310
308KA/Pi: 311KA/Pi:
309Fixed the problem, that internal pictures were not saved. 312Fixed the problem, that internal pictures were not saved.
310 313
311Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 314Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
312 315
313Fixed some minor problems. (Like word wrap in help text windows). 316Fixed some minor problems. (Like word wrap in help text windows).
314 317
315Fixed a compiling problem in microkde/kresources. 318Fixed a compiling problem in microkde/kresources.
316 319
317KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 320KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
318This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 321This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
319such that now syncing KO/Pi with Sharp DTM should work on the 322such that now syncing KO/Pi with Sharp DTM should work on the
320Zaurus C 3000 model. 323Zaurus C 3000 model.
321 324
322********** VERSION 1.9.15 ************ 325********** VERSION 1.9.15 ************
323 326
324Usebilty enhancements in KO/Pi: 327Usebilty enhancements in KO/Pi:
325When clicking on the date in a month view cell, the day view is shown. 328When clicking on the date in a month view cell, the day view is shown.
326Old behaviour was, that the "new event" dialog popped up. 329Old behaviour was, that the "new event" dialog popped up.
327 330
328Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 331Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
329That means, you can restore the latest 332That means, you can restore the latest
330event/todo/journal you have deleted. 333event/todo/journal you have deleted.
331A journal is deleted, if you clear all the text of the journal. 334A journal is deleted, if you clear all the text of the journal.
332 335
333Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 336Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
334 337
335KA/Pi starting in 480x640 resolution: 338KA/Pi starting in 480x640 resolution:
336Hide the filter action in toolbar 339Hide the filter action in toolbar
337and added icons for undo/delete/redo in toolbar. 340and added icons for undo/delete/redo in toolbar.
338 341
339Change in OM/Pi ViewMail dialog: 342Change in OM/Pi ViewMail dialog:
340When clicking on the "delete" icon the mail is deleted after confirmation as usual. 343When clicking on the "delete" icon the mail is deleted after confirmation as usual.
341But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 344But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
342 345
343Fixed a crash when deleting mail-accounts in OM/Pi. 346Fixed a crash when deleting mail-accounts in OM/Pi.
344 347
345 348
346********** VERSION 1.9.14 ************ 349********** VERSION 1.9.14 ************
347 350
348Fixed some problems with the dialog sizes when switching 351Fixed some problems with the dialog sizes when switching
349portrait/landscape mode on 640x480 PDA display. 352portrait/landscape mode on 640x480 PDA display.
350 353
351Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 354Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
352 355
353Fixed an ugly bug in KOpieMail: 356Fixed an ugly bug in KOpieMail:
354KOpieMail was not able to write files (mails) to MSDOS file system, 357KOpieMail was not able to write files (mails) to MSDOS file system,
355like on an usual preformatted SD card. That should work now. 358like on an usual preformatted SD card. That should work now.
356To save your mail data on the Sd card do the following: 359To save your mail data on the Sd card do the following:
357Create a dir on the SD card: 360Create a dir on the SD card:
358mkdir /mnt/card/localmail 361mkdir /mnt/card/localmail
359Go to your home dir: 362Go to your home dir:
360cd 363cd
361Go to kopiemail data storage dir: 364Go to kopiemail data storage dir:
362cd kdepim/apps/kopiemail 365cd kdepim/apps/kopiemail
363Create a symlink to the SD card: 366Create a symlink to the SD card:
364ls -s /mnt/card/localmail 367ls -s /mnt/card/localmail
365Now KOpieMail will store all mails on the SD card. 368Now KOpieMail will store all mails on the SD card.
366 369
367KO/Pi Monthview: 370KO/Pi Monthview:
368Now "Go to Today" selects the current month from day 1-end, 371Now "Go to Today" selects the current month from day 1-end,
369not the current date + some days. 372not the current date + some days.
370I.e. "Go to Today" shows now always 373I.e. "Go to Today" shows now always
371the current month with first day of month in the first row. 374the current month with first day of month in the first row.
372 375
373Added missing German translation. 376Added missing German translation.
374 377
375Fixed icons of executeable on Wintendo. 378Fixed icons of executeable on Wintendo.
376 379
377Added a "Show next Mail" button to the OM/Pi 380Added a "Show next Mail" button to the OM/Pi
378mail viewer such that the mail below the current mail 381mail viewer such that the mail below the current mail
379in the mail list view of the current folder 382in the mail list view of the current folder
380can be read with a single click. 383can be read with a single click.
381 384
382 385
383********** VERSION 1.9.13 ************ 386********** VERSION 1.9.13 ************
384 387
385Fixed nasty PwM/Pi file reading bug, when 388Fixed nasty PwM/Pi file reading bug, when
386the used hash algo of file is different then the global 389the used hash algo of file is different then the global
387hash algo. 390hash algo.
388 391
389Added KA/Pi support for opie mailit mailapplication. 392Added KA/Pi support for opie mailit mailapplication.
390 393
391Fixed some bugs in OM/Pi. 394Fixed some bugs in OM/Pi.
392Now character conversion tables are available for the Zaurus 395Now character conversion tables are available for the Zaurus
393to make OM/Pi working properly. 396to make OM/Pi working properly.
394To get the character conversion in OM/Pi working, please download 397To get the character conversion in OM/Pi working, please download
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index d87938a..417d89c 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -75,611 +75,621 @@ void KOEventViewer::setSource(const QString& n)
75 if ( n.left(3) == "uid" ) 75 if ( n.left(3) == "uid" )
76#ifdef DESKTOP_VERSION 76#ifdef DESKTOP_VERSION
77 { 77 {
78 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 78 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
79 KABC::AddressBook::Iterator it; 79 KABC::AddressBook::Iterator it;
80 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 80 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
81 // LR I do not understand, why the uid string is different on zaurus and desktop 81 // LR I do not understand, why the uid string is different on zaurus and desktop
82 QString uid = "uid://"+(*it).uid(); 82 QString uid = "uid://"+(*it).uid();
83 83
84 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 84 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
85 if (n == uid ) { 85 if (n == uid ) {
86 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 86 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
87 QDialog dia( this,"dia123", true ); 87 QDialog dia( this,"dia123", true );
88 dia.setCaption( i18n("Details of attendee") ); 88 dia.setCaption( i18n("Details of attendee") );
89 QVBoxLayout lay ( &dia ); 89 QVBoxLayout lay ( &dia );
90 KABC::AddresseeView av ( &dia ); 90 KABC::AddresseeView av ( &dia );
91 av.setAddressee( (*it) ); 91 av.setAddressee( (*it) );
92 lay.addWidget( &av ); 92 lay.addWidget( &av );
93 if ( QApplication::desktop()->width() < 480 ) 93 if ( QApplication::desktop()->width() < 480 )
94 dia.resize( 220, 240); 94 dia.resize( 220, 240);
95 else { 95 else {
96 dia.resize( 400,400); 96 dia.resize( 400,400);
97 } 97 }
98 dia.exec(); 98 dia.exec();
99 break; 99 break;
100 } 100 }
101 } 101 }
102 return; 102 return;
103 } 103 }
104#else 104#else
105 { 105 {
106 if ( "uid:organizer" == n ) { 106 if ( "uid:organizer" == n ) {
107 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),""); 107 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),"");
108 return; 108 return;
109 } 109 }
110 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 110 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
111 if (attendees.count()) { 111 if (attendees.count()) {
112 Attendee *a; 112 Attendee *a;
113 for(a=attendees.first();a;a=attendees.next()) { 113 for(a=attendees.first();a;a=attendees.next()) {
114 if ( "uid:"+a->uid() == n ) { 114 if ( "uid:"+a->uid() == n ) {
115 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid()); 115 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid());
116 return; 116 return;
117 } 117 }
118 } 118 }
119 } 119 }
120 return; 120 return;
121 } 121 }
122 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 122 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
123 // the result should now arrive through method insertAttendees 123 // the result should now arrive through method insertAttendees
124 //QString uid = "uid:"+(*it).uid(); 124 //QString uid = "uid:"+(*it).uid();
125#endif 125#endif
126 if ( n.left(6) == "mailto" ) { 126 if ( n.left(6) == "mailto" ) {
127 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1()); 127 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1());
128#ifndef DESKTOP_VERSION 128#ifndef DESKTOP_VERSION
129 if ( n.mid(7,3) == "ALL" ) { 129 if ( n.mid(7,3) == "ALL" ) {
130 qDebug("all "); 130 qDebug("all ");
131 mailToAttendees( true ); 131 mailToAttendees( true );
132 } else if ( n.mid(7,4) == "RSVP" ) { 132 } else if ( n.mid(7,4) == "RSVP" ) {
133 mailToAttendees( false ); 133 mailToAttendees( false );
134 qDebug("rsvp "); 134 qDebug("rsvp ");
135 } else { 135 } else {
136 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" ); 136 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" );
137 e << n.mid(7); 137 e << n.mid(7);
138 } 138 }
139#endif 139#endif
140 140
141 } 141 }
142 142
143 143
144#ifndef KORG_NODCOP 144#ifndef KORG_NODCOP
145 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 145 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
146 QString tmpStr; 146 QString tmpStr;
147 if (n.startsWith("mailto:")) { 147 if (n.startsWith("mailto:")) {
148 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 148 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
149 //emit showIncidence(n); 149 //emit showIncidence(n);
150 return; 150 return;
151 } else if (n.startsWith("uid:")) { 151 } else if (n.startsWith("uid:")) {
152 DCOPClient *client = KApplication::kApplication()->dcopClient(); 152 DCOPClient *client = KApplication::kApplication()->dcopClient();
153 const QByteArray noParamData; 153 const QByteArray noParamData;
154 const QByteArray paramData; 154 const QByteArray paramData;
155 QByteArray replyData; 155 QByteArray replyData;
156 QCString replyTypeStr; 156 QCString replyTypeStr;
157#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData)) 157#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData))
158 bool foundAbbrowser = PING_ABBROWSER; 158 bool foundAbbrowser = PING_ABBROWSER;
159 159
160 if (foundAbbrowser) { 160 if (foundAbbrowser) {
161 //KAddressbook is already running, so just DCOP to it to bring up the contact editor 161 //KAddressbook is already running, so just DCOP to it to bring up the contact editor
162 //client->send("kaddressbook","KAddressBookIface", 162 //client->send("kaddressbook","KAddressBookIface",
163 QDataStream arg(paramData, IO_WriteOnly); 163 QDataStream arg(paramData, IO_WriteOnly);
164 arg << n.mid(6); 164 arg << n.mid(6);
165 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData); 165 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData);
166 return; 166 return;
167 } else { 167 } else {
168 /* 168 /*
169 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. 169 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater.
170 We start it without its main interface 170 We start it without its main interface
171 */ 171 */
172 KIconLoader* iconLoader = new KIconLoader(); 172 KIconLoader* iconLoader = new KIconLoader();
173 QString iconPath = iconLoader->iconPath("go",KIcon::Small); 173 QString iconPath = iconLoader->iconPath("go",KIcon::Small);
174 ActionManager::setStartedKAddressBook(true); 174 ActionManager::setStartedKAddressBook(true);
175 tmpStr = "kaddressbook --editor-only --uid "; 175 tmpStr = "kaddressbook --editor-only --uid ";
176 tmpStr += KProcess::quote(n.mid(6)); 176 tmpStr += KProcess::quote(n.mid(6));
177 KRun::runCommand(tmpStr,"KAddressBook",iconPath); 177 KRun::runCommand(tmpStr,"KAddressBook",iconPath);
178 return; 178 return;
179 } 179 }
180 } else { 180 } else {
181 //QTextBrowser::setSource(n); 181 //QTextBrowser::setSource(n);
182 } 182 }
183#endif 183#endif
184} 184}
185void KOEventViewer::mailToAttendees( bool all ) 185void KOEventViewer::mailToAttendees( bool all )
186{ 186{
187 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 187 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
188 if (attendees.count() == 0) return; 188 if (attendees.count() == 0) return;
189 QStringList nameList; 189 QStringList nameList;
190 QStringList emailList; 190 QStringList emailList;
191 QStringList uidList; 191 QStringList uidList;
192 Attendee* a; 192 Attendee* a;
193 for(a=attendees.first();a;a=attendees.next()) { 193 for(a=attendees.first();a;a=attendees.next()) {
194 if ( !all && !a->RSVP() ) continue; 194 if ( !all && !a->RSVP() ) continue;
195 if (!a->email().isEmpty()) { 195 if (!a->email().isEmpty()) {
196 nameList.append (a->name() ); 196 nameList.append (a->name() );
197 emailList.append (a->email() ); 197 emailList.append (a->email() );
198 uidList.append (a->uid() ); 198 uidList.append (a->uid() );
199 } 199 }
200 } 200 }
201 QString uid = "ComposeMailUIpick2"+mMailSubject; 201 QString uid = "ComposeMailUIpick2"+mMailSubject;
202#ifndef DESKTOP_VERSION 202#ifndef DESKTOP_VERSION
203 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 203 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
204#endif 204#endif
205 205
206} 206}
207void KOEventViewer::addTag(const QString & tag,const QString & text) 207void KOEventViewer::addTag(const QString & tag,const QString & text)
208{ 208{
209 int number=text.contains("\n"); 209 int number=text.contains("\n");
210 QString str = "<" + tag + ">"; 210 QString str = "<" + tag + ">";
211 QString tmpText=text; 211 QString tmpText=text;
212 QString tmpStr=str; 212 QString tmpStr=str;
213 if(number !=-1) 213 if(number !=-1)
214 { 214 {
215 if (number > 0) { 215 if (number > 0) {
216 int pos=0; 216 int pos=0;
217 QString tmp; 217 QString tmp;
218 for(int i=0;i<=number;i++) { 218 for(int i=0;i<=number;i++) {
219 pos=tmpText.find("\n"); 219 pos=tmpText.find("\n");
220 tmp=tmpText.left(pos); 220 tmp=tmpText.left(pos);
221 tmpText=tmpText.right(tmpText.length()-pos-1); 221 tmpText=tmpText.right(tmpText.length()-pos-1);
222 tmpStr+=tmp+"<br>"; 222 tmpStr+=tmp+"<br>";
223 } 223 }
224 } 224 }
225 else tmpStr += tmpText; 225 else tmpStr += tmpText;
226 tmpStr+="</" + tag + ">"; 226 tmpStr+="</" + tag + ">";
227 mText.append(tmpStr); 227 mText.append(tmpStr);
228 } 228 }
229 else 229 else
230 { 230 {
231 str += text + "</" + tag + ">"; 231 str += text + "</" + tag + ">";
232 mText.append(str); 232 mText.append(str);
233 } 233 }
234} 234}
235 235
236void KOEventViewer::setColorMode( int m ) 236void KOEventViewer::setColorMode( int m )
237{ 237{
238 mColorMode = m; 238 mColorMode = m;
239} 239}
240void KOEventViewer::appendEvent(Event *event, int mode ) 240void KOEventViewer::appendEvent(Event *event, int mode )
241{ 241{
242 mMailSubject = ""; 242 mMailSubject = "";
243 mCurrentIncidence = event; 243 mCurrentIncidence = event;
244 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 244 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
245 topLevelWidget()->setCaption(i18n("Event Viewer")); 245 topLevelWidget()->setCaption(i18n("Event Viewer"));
246 if ( mode == 0 ) { 246 if ( mode == 0 ) {
247 addTag("h2",event->summary()); 247 addTag("h2",event->summary());
248 } 248 }
249 else { 249 else {
250 if ( mColorMode == 1 ) { 250 if ( mColorMode == 1 ) {
251 mText +="<font color=\"#00A000\">"; 251 mText +="<font color=\"#00A000\">";
252 } 252 }
253 if ( mColorMode == 2 ) { 253 if ( mColorMode == 2 ) {
254 mText +="<font color=\"#C00000\">"; 254 mText +="<font color=\"#C00000\">";
255 } 255 }
256 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 256 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
257 if ( mode == 1 ) { 257 if ( mode == 1 ) {
258 addTag("h2",i18n( "Local: " ) +event->summary()); 258 addTag("h2",i18n( "Local: " ) +event->summary());
259 } else { 259 } else {
260 addTag("h2",i18n( "Remote: " ) +event->summary()); 260 addTag("h2",i18n( "Remote: " ) +event->summary());
261 } 261 }
262 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 262 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
263 if ( mColorMode ) 263 if ( mColorMode )
264 mText += "</font>"; 264 mText += "</font>";
265 } 265 }
266 mMailSubject += i18n( "Meeting " )+ event->summary(); 266 mMailSubject += i18n( "Meeting " )+ event->summary();
267 if (event->cancelled ()) { 267 if (event->cancelled ()) {
268 mText +="<font color=\"#B00000\">"; 268 mText +="<font color=\"#B00000\">";
269 addTag("i",i18n("This event has been cancelled!")); 269 addTag("i",i18n("This event has been cancelled!"));
270 mText.append("<br>"); 270 mText.append("<br>");
271 mText += "</font>"; 271 mText += "</font>";
272 mMailSubject += i18n("(cancelled)"); 272 mMailSubject += i18n("(cancelled)");
273 } 273 }
274 if (!event->location().isEmpty()) { 274 if (!event->location().isEmpty()) {
275 addTag("b",i18n("Location: ")); 275 addTag("b",i18n("Location: "));
276 mText.append(event->location()+"<br>"); 276 mText.append(event->location()+"<br>");
277 mMailSubject += i18n(" at ") + event->location(); 277 mMailSubject += i18n(" at ") + event->location();
278 } 278 }
279 if (event->doesFloat()) { 279 if (event->doesFloat()) {
280 if (event->isMultiDay()) { 280 if (event->isMultiDay()) {
281 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 281 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
282 .arg(event->dtStartDateStr(shortDate)) 282 .arg(event->dtStartDateStr(shortDate))
283 .arg(event->dtEndDateStr(shortDate))); 283 .arg(event->dtEndDateStr(shortDate)));
284 } else { 284 } else {
285 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 285 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
286 } 286 }
287 } else { 287 } else {
288 if (event->isMultiDay()) { 288 if (event->isMultiDay()) {
289 mText.append(i18n("<p><b>From:</b> %1</p> ") 289 mText.append(i18n("<p><b>From:</b> %1</p> ")
290 .arg(event->dtStartStr( shortDate))); 290 .arg(event->dtStartStr( shortDate)));
291 mText.append(i18n("<p><b>To:</b> %1</p>") 291 mText.append(i18n("<p><b>To:</b> %1</p>")
292 .arg(event->dtEndStr(shortDate))); 292 .arg(event->dtEndStr(shortDate)));
293 } else { 293 } else {
294 mText.append(i18n("<p><b>On:</b> %1</p> ") 294 mText.append(i18n("<p><b>On:</b> %1</p> ")
295 .arg(event->dtStartDateStr( shortDate ))); 295 .arg(event->dtStartDateStr( shortDate )));
296 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") 296 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>")
297 .arg(event->dtStartTimeStr()) 297 .arg(event->dtStartTimeStr())
298 .arg(event->dtEndTimeStr())); 298 .arg(event->dtEndTimeStr()));
299 } 299 }
300 } 300 }
301 301
302 if (event->recurrence()->doesRecur()) { 302 if (event->recurrence()->doesRecur()) {
303 303
304 QString recurText = event->recurrence()->recurrenceText(); 304 QString recurText = event->recurrence()->recurrenceText();
305 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 305 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
306 bool ok; 306 bool ok;
307 QDate start = QDate::currentDate(); 307 QDate start = QDate::currentDate();
308 QDateTime next; 308 QDateTime next;
309 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok ); 309 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok );
310 if ( ok ) { 310 if ( ok ) {
311 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 311 addTag("p",i18n("<b>Next recurrence is on:</b>") );
312 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate )); 312 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate ));
313 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true ); 313 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true );
314 314
315 } else { 315 } else {
316 bool last; 316 bool last;
317 QDate nextd; 317 QDate nextd;
318 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last ); 318 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last );
319 if ( last ) { 319 if ( last ) {
320 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 320 addTag("p",i18n("<b>Last recurrence was on:</b>") );
321 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate )); 321 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate ));
322 } 322 }
323 } 323 }
324 } else { 324 } else {
325 mMailSubject += i18n(" - " )+event->dtStartStr( true ); 325 mMailSubject += i18n(" - " )+event->dtStartStr( true );
326 326
327 } 327 }
328 328
329 329
330 if (event->isAlarmEnabled()) { 330 if (event->isAlarmEnabled()) {
331 Alarm *alarm =event->alarms().first() ; 331 Alarm *alarm =event->alarms().first() ;
332 QDateTime t = alarm->time(); 332 QDateTime t = alarm->time();
333 int min = t.secsTo( event->dtStart() )/60; 333 int min = t.secsTo( event->dtStart() )/60;
334 QString s =i18n("( %1 min before )").arg( min ); 334 QString s =i18n("( %1 min before )").arg( min );
335 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 335 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
336 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 336 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
337 //addTag("p",s); 337 //addTag("p",s);
338 } 338 }
339 339
340 addTag("b",i18n("Access: ")); 340 addTag("b",i18n("Access: "));
341 mText.append(event->secrecyStr()+"<br>"); 341 mText.append(event->secrecyStr()+"<br>");
342 342
343 343
344 if ( KOPrefs::instance()->mEVshowDetails ) { 344 if ( KOPrefs::instance()->mEVshowDetails ) {
345 if (!event->description().isEmpty()) { 345 if (!event->description().isEmpty()) {
346 addTag("p",i18n("<b>Details: </b>")); 346 addTag("p",i18n("<b>Details: </b>"));
347 addTag("p",event->description()); 347 addTag("p",event->description());
348 } 348 }
349 } 349 }
350 formatCategories(event); 350 formatCategories(event);
351 351
352 formatReadOnly(event); 352 formatReadOnly(event);
353 formatAttendees(event); 353 formatAttendees(event);
354 354
355 if ( KOPrefs::instance()->mEVshowCreated ) { 355 if ( KOPrefs::instance()->mEVshowCreated ) {
356 addTag("p",i18n("<b>Created: ") +" </b>"); 356 addTag("p",i18n("<b>Created: ") +" </b>");
357 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 357 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
358 358
359 } 359 }
360 if ( KOPrefs::instance()->mEVshowChanged ) { 360 if ( KOPrefs::instance()->mEVshowChanged ) {
361 addTag("p",i18n("<b>Last modified: ") +" </b>"); 361 addTag("p",i18n("<b>Last modified: ") +" </b>");
362 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 362 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
363 363
364 } 364 }
365 setText(mText); 365 setText(mText);
366 //QWhatsThis::add(this,mText); 366 //QWhatsThis::add(this,mText);
367 367
368} 368}
369 369
370void KOEventViewer::appendTodo(Todo *event, int mode ) 370void KOEventViewer::appendTodo(Todo *event, int mode )
371{ 371{
372 mMailSubject = ""; 372 mMailSubject = "";
373 mCurrentIncidence = event; 373 mCurrentIncidence = event;
374 topLevelWidget()->setCaption(i18n("Todo Viewer")); 374 topLevelWidget()->setCaption(i18n("Todo Viewer"));
375 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 375 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
376 if (mode == 0 ) 376 if (mode == 0 )
377 addTag("h2",event->summary()); 377 addTag("h2",event->summary());
378 else { 378 else {
379 if ( mColorMode == 1 ) { 379 if ( mColorMode == 1 ) {
380 mText +="<font color=\"#00A000\">"; 380 mText +="<font color=\"#00A000\">";
381 } 381 }
382 if ( mColorMode == 2 ) { 382 if ( mColorMode == 2 ) {
383 mText +="<font color=\"#B00000\">"; 383 mText +="<font color=\"#B00000\">";
384 } 384 }
385 if ( mode == 1 ) { 385 if ( mode == 1 ) {
386 addTag("h2",i18n( "Local: " ) +event->summary()); 386 addTag("h2",i18n( "Local: " ) +event->summary());
387 } else { 387 } else {
388 addTag("h2",i18n( "Remote: " ) +event->summary()); 388 addTag("h2",i18n( "Remote: " ) +event->summary());
389 } 389 }
390 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 390 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
391 if ( mColorMode ) 391 if ( mColorMode )
392 mText += "</font>"; 392 mText += "</font>";
393 } 393 }
394 mMailSubject += i18n( "Todo " )+ event->summary(); 394 mMailSubject += i18n( "Todo " )+ event->summary();
395 395
396 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) { 396 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) {
397 mText +="<font color=\"#B00000\">"; 397 mText +="<font color=\"#B00000\">";
398 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) ); 398 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) );
399 mText += "</font>"; 399 mText += "</font>";
400 } else { 400 } else {
401 mText.append(i18n("<p><i>%1 % completed</i></p>") 401 mText.append(i18n("<p><i>%1 % completed</i></p>")
402 .arg(event->percentComplete())); 402 .arg(event->percentComplete()));
403 } 403 }
404 404
405 if (event->cancelled ()) { 405 if (event->cancelled ()) {
406 mText +="<font color=\"#B00000\">"; 406 mText +="<font color=\"#B00000\">";
407 addTag("i",i18n("This todo has been cancelled!")); 407 addTag("i",i18n("This todo has been cancelled!"));
408 mText.append("<br>"); 408 mText.append("<br>");
409 mText += "</font>"; 409 mText += "</font>";
410 mMailSubject += i18n("(cancelled)"); 410 mMailSubject += i18n("(cancelled)");
411 } 411 }
412 412
413 if (!event->location().isEmpty()) { 413 if (!event->location().isEmpty()) {
414 addTag("b",i18n("Location: ")); 414 addTag("b",i18n("Location: "));
415 mText.append(event->location()+"<br>"); 415 mText.append(event->location()+"<br>");
416 mMailSubject += i18n(" at ") + event->location(); 416 mMailSubject += i18n(" at ") + event->location();
417 } 417 }
418 418
419 if (event->recurrence()->doesRecur()) { 419 if (event->recurrence()->doesRecur()) {
420 420
421 QString recurText = event->recurrence()->recurrenceText(); 421 QString recurText = event->recurrence()->recurrenceText();
422 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); 422 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>");
423 423
424 } 424 }
425 if (event->hasStartDate()) { 425 if (event->hasStartDate()) {
426 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); 426 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer)));
427 } 427 }
428 if (event->hasDueDate()) { 428 if (event->hasDueDate()) {
429 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 429 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
430 mMailSubject += i18n(" - " )+event->dtDueStr( true ); 430 mMailSubject += i18n(" - " )+event->dtDueStr( true );
431 } 431 }
432 addTag("b",i18n("Access: ")); 432 addTag("b",i18n("Access: "));
433 mText.append(event->secrecyStr()+"<br>"); 433 mText.append(event->secrecyStr()+"<br>");
434 if ( KOPrefs::instance()->mEVshowDetails ) { 434 if ( KOPrefs::instance()->mEVshowDetails ) {
435 if (!event->description().isEmpty()) { 435 if (!event->description().isEmpty()) {
436 addTag("p",i18n("<b>Details: </b>")); 436 addTag("p",i18n("<b>Details: </b>"));
437 addTag("p",event->description()); 437 addTag("p",event->description());
438 } 438 }
439 } 439 }
440 440
441 formatCategories(event); 441 formatCategories(event);
442 442
443 mText.append(i18n("<p><b>Priority:</b> %2</p>") 443 mText.append(i18n("<p><b>Priority:</b> %2</p>")
444 .arg(QString::number(event->priority()))); 444 .arg(QString::number(event->priority())));
445 445
446 formatReadOnly(event); 446 formatReadOnly(event);
447 formatAttendees(event); 447 formatAttendees(event);
448 if ( event->relatedTo() ) { 448 if ( event->relatedTo() ) {
449 addTag("b",i18n("Parent todo:<br>")); 449 addTag("b",i18n("Parent todo:<br>"));
450 mText.append(event->relatedTo()->summary()+" [" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] <br>"); 450 mText.append(event->relatedTo()->summary()+" [" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] <br>");
451 } 451 }
452 QPtrList<Incidence> Relations = event->relations(); 452 QPtrList<Incidence> Relations = event->relations();
453 Incidence *to; 453 Incidence *to;
454 if ( Relations.first() ) 454 if ( Relations.first() )
455 addTag("b",i18n("Sub todos:<br>")); 455 addTag("b",i18n("Sub todos:<br>"));
456 for (to=Relations.first();to;to=Relations.next()) { 456 for (to=Relations.first();to;to=Relations.next()) {
457 mText.append( to->summary()+" [" +QString::number(to->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%]<br>"); 457 mText.append( to->summary()+" [" +QString::number(to->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%]<br>");
458 458
459 } 459 }
460 if ( KOPrefs::instance()->mEVshowCreated ) {
461 addTag("p",i18n("<b>Created: ") +" </b>");
462 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
463
464 }
465 if ( KOPrefs::instance()->mEVshowChanged ) {
466 addTag("p",i18n("<b>Last modified: ") +" </b>");
467 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
468
469 }
460 setText(mText); 470 setText(mText);
461} 471}
462 472
463void KOEventViewer::formatCategories(Incidence *event) 473void KOEventViewer::formatCategories(Incidence *event)
464{ 474{
465 if (!event->categoriesStr().isEmpty()) { 475 if (!event->categoriesStr().isEmpty()) {
466 if (event->categories().count() == 1) { 476 if (event->categories().count() == 1) {
467 addTag("h3",i18n("Category")); 477 addTag("h3",i18n("Category"));
468 } else { 478 } else {
469 addTag("h3",i18n("Categories")); 479 addTag("h3",i18n("Categories"));
470 } 480 }
471 addTag("p",event->categoriesStr()); 481 addTag("p",event->categoriesStr());
472 } 482 }
473} 483}
474void KOEventViewer::formatAttendees(Incidence *event) 484void KOEventViewer::formatAttendees(Incidence *event)
475{ 485{
476 QPtrList<Attendee> attendees = event->attendees(); 486 QPtrList<Attendee> attendees = event->attendees();
477 if (attendees.count()) { 487 if (attendees.count()) {
478 488
479 489
480 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); 490 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small);
481 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small); 491 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small);
482 addTag("h3",i18n("Organizer")); 492 addTag("h3",i18n("Organizer"));
483 mText.append("<ul><li>"); 493 mText.append("<ul><li>");
484#ifndef KORG_NOKABC 494#ifndef KORG_NOKABC
485 495
486#ifdef DESKTOP_VERSION 496#ifdef DESKTOP_VERSION
487 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 497 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
488 KABC::Addressee::List addressList; 498 KABC::Addressee::List addressList;
489 addressList = add_book->findByEmail(event->organizer()); 499 addressList = add_book->findByEmail(event->organizer());
490 KABC::Addressee o = addressList.first(); 500 KABC::Addressee o = addressList.first();
491 if (!o.isEmpty() && addressList.size()<2) { 501 if (!o.isEmpty() && addressList.size()<2) {
492 mText += "<a href=\"uid:" + o.uid() + "\">"; 502 mText += "<a href=\"uid:" + o.uid() + "\">";
493 mText += o.formattedName(); 503 mText += o.formattedName();
494 mText += "</a>\n"; 504 mText += "</a>\n";
495 } else { 505 } else {
496 mText.append(event->organizer()); 506 mText.append(event->organizer());
497 } 507 }
498#else //DESKTOP_VERSION 508#else //DESKTOP_VERSION
499 mText += "<a href=\"uid:organizer\">"; 509 mText += "<a href=\"uid:organizer\">";
500 mText += event->organizer(); 510 mText += event->organizer();
501 mText += "</a>\n"; 511 mText += "</a>\n";
502#endif //DESKTOP_VERSION 512#endif //DESKTOP_VERSION
503 513
504 514
505#else 515#else
506 mText.append(event->organizer()); 516 mText.append(event->organizer());
507#endif 517#endif
508 518
509 if (iconPath) { 519 if (iconPath) {
510 mText += " <a href=\"mailto:" + event->organizer() + "\">"; 520 mText += " <a href=\"mailto:" + event->organizer() + "\">";
511 mText += "<IMG src=\"" + iconPath + "\">"; 521 mText += "<IMG src=\"" + iconPath + "\">";
512 mText += "</a>\n"; 522 mText += "</a>\n";
513 } 523 }
514 mText.append("</li></ul>"); 524 mText.append("</li></ul>");
515 525
516 addTag("h3",i18n("Attendees")); 526 addTag("h3",i18n("Attendees"));
517 Attendee *a; 527 Attendee *a;
518 mText.append("<ul>"); 528 mText.append("<ul>");
519 int a_count = 0; 529 int a_count = 0;
520 int a_count_nr = 0; 530 int a_count_nr = 0;
521 531
522 for(a=attendees.first();a;a=attendees.next()) { 532 for(a=attendees.first();a;a=attendees.next()) {
523#ifndef KORG_NOKABC 533#ifndef KORG_NOKABC
524#ifdef DESKTOP_VERSION 534#ifdef DESKTOP_VERSION
525 if (a->name().isEmpty()) { 535 if (a->name().isEmpty()) {
526 addressList = add_book->findByEmail(a->email()); 536 addressList = add_book->findByEmail(a->email());
527 KABC::Addressee o = addressList.first(); 537 KABC::Addressee o = addressList.first();
528 if (!o.isEmpty() && addressList.size()<2) { 538 if (!o.isEmpty() && addressList.size()<2) {
529 mText += "<a href=\"uid:" + o.uid() + "\">"; 539 mText += "<a href=\"uid:" + o.uid() + "\">";
530 mText += o.formattedName(); 540 mText += o.formattedName();
531 mText += "</a>\n"; 541 mText += "</a>\n";
532 } else { 542 } else {
533 mText += "<li>"; 543 mText += "<li>";
534 mText.append(a->email()); 544 mText.append(a->email());
535 mText += "\n"; 545 mText += "\n";
536 } 546 }
537 } else { 547 } else {
538 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 548 mText += "<li><a href=\"uid:" + a->uid() + "\">";
539 if (!a->name().isEmpty()) mText += a->name(); 549 if (!a->name().isEmpty()) mText += a->name();
540 else mText += a->email(); 550 else mText += a->email();
541 mText += "</a>\n"; 551 mText += "</a>\n";
542 } 552 }
543#else //DESKTOP_VERSION 553#else //DESKTOP_VERSION
544 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 554 mText += "<li><a href=\"uid:" + a->uid() + "\">";
545 if (!a->name().isEmpty()) mText += a->name(); 555 if (!a->name().isEmpty()) mText += a->name();
546 else mText += a->email(); 556 else mText += a->email();
547 mText += "</a>\n"; 557 mText += "</a>\n";
548#endif //DESKTOP_VERSION 558#endif //DESKTOP_VERSION
549#else 559#else
550 //qDebug("nokabc "); 560 //qDebug("nokabc ");
551 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 561 mText += "<li><a href=\"uid:" + a->uid() + "\">";
552 if (!a->name().isEmpty()) mText += a->name(); 562 if (!a->name().isEmpty()) mText += a->name();
553 else mText += a->email(); 563 else mText += a->email();
554 mText += "</a>\n"; 564 mText += "</a>\n";
555#endif 565#endif
556 566
557 567
558 if (!a->email().isEmpty()) { 568 if (!a->email().isEmpty()) {
559 if (iconPath) { 569 if (iconPath) {
560 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">"; 570 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">";
561 if ( a->RSVP() ) { 571 if ( a->RSVP() ) {
562 ++a_count_nr; 572 ++a_count_nr;
563 mText += "<IMG src=\"" + iconPath + "\">"; 573 mText += "<IMG src=\"" + iconPath + "\">";
564 } 574 }
565 else { 575 else {
566 ++a_count; 576 ++a_count;
567 mText += "<IMG src=\"" + NOiconPath + "\">"; 577 mText += "<IMG src=\"" + NOiconPath + "\">";
568 } 578 }
569 mText += "</a>\n"; 579 mText += "</a>\n";
570 } 580 }
571 } 581 }
572 if (a->status() != Attendee::NeedsAction ) 582 if (a->status() != Attendee::NeedsAction )
573 mText +="[" + a->statusStr() + "] "; 583 mText +="[" + a->statusStr() + "] ";
574 if (a->role() == Attendee::Chair ) 584 if (a->role() == Attendee::Chair )
575 mText +="(" + a->roleStr().left(1) + ".)"; 585 mText +="(" + a->roleStr().left(1) + ".)";
576 } 586 }
577 mText.append("</li></ul>"); 587 mText.append("</li></ul>");
578 if ( (a_count+a_count_nr) > 1 ) { 588 if ( (a_count+a_count_nr) > 1 ) {
579 mText += "<a href=\"mailto:ALL\">"; 589 mText += "<a href=\"mailto:ALL\">";
580 mText += i18n( "Mail to all" ); 590 mText += i18n( "Mail to all" );
581 mText += "</a> ( "; 591 mText += "</a> ( ";
582 mText += "<IMG src=\"" + iconPath + "\">"; 592 mText += "<IMG src=\"" + iconPath + "\">";
583 mText += i18n( " and " ); 593 mText += i18n( " and " );
584 mText += "<IMG src=\"" + NOiconPath + "\"> )"; 594 mText += "<IMG src=\"" + NOiconPath + "\"> )";
585 mText += "<br>\n"; 595 mText += "<br>\n";
586 596
587 597
588 } 598 }
589 if ( a_count_nr > 1 ) { 599 if ( a_count_nr > 1 ) {
590 mText += "<a href=\"mailto:RSVP\">"; 600 mText += "<a href=\"mailto:RSVP\">";
591 mText += i18n( "Mail to selected" ); 601 mText += i18n( "Mail to selected" );
592 mText += "</a> ( "; 602 mText += "</a> ( ";
593 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath ); 603 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath );
594 mText += "<br>\n"; 604 mText += "<br>\n";
595 } 605 }
596 } 606 }
597 607
598} 608}
599void KOEventViewer::appendJournal(Journal *jour, int mode ) 609void KOEventViewer::appendJournal(Journal *jour, int mode )
600{ 610{
601 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 611 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
602 if (mode == 0 ) { 612 if (mode == 0 ) {
603 addTag("h2",i18n("Journal from: ")); 613 addTag("h2",i18n("Journal from: "));
604 } 614 }
605 else { 615 else {
606 if ( mode == 1 ) { 616 if ( mode == 1 ) {
607 addTag("h2",i18n( "Local: " ) +i18n("Journal from: ")); 617 addTag("h2",i18n( "Local: " ) +i18n("Journal from: "));
608 } else { 618 } else {
609 addTag("h2",i18n( "Remote: " ) +i18n("Journal from: ")); 619 addTag("h2",i18n( "Remote: " ) +i18n("Journal from: "));
610 } 620 }
611 } 621 }
612 topLevelWidget()->setCaption("Journal Viewer"); 622 topLevelWidget()->setCaption("Journal Viewer");
613 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer))); 623 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer)));
614 addTag("b",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) ); 624 addTag("b",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) );
615 if (!jour->description().isEmpty()) { 625 if (!jour->description().isEmpty()) {
616 addTag("p",jour->description()); 626 addTag("p",jour->description());
617 } 627 }
618 setText(mText); 628 setText(mText);
619} 629}
620 630
621void KOEventViewer::formatReadOnly(Incidence *event) 631void KOEventViewer::formatReadOnly(Incidence *event)
622{ 632{
623 if (event->isReadOnly()) { 633 if (event->isReadOnly()) {
624 addTag("p","<em>(" + i18n("read-only") + ")</em>"); 634 addTag("p","<em>(" + i18n("read-only") + ")</em>");
625 } 635 }
626} 636}
627void KOEventViewer::setSyncMode( bool b ) 637void KOEventViewer::setSyncMode( bool b )
628{ 638{
629 mSyncMode = b; 639 mSyncMode = b;
630} 640}
631 641
632 642
633void KOEventViewer::setTodo(Todo *event, bool clearV ) 643void KOEventViewer::setTodo(Todo *event, bool clearV )
634{ 644{
635 if ( clearV ) 645 if ( clearV )
636 clearEvents(); 646 clearEvents();
637 if ( mSyncMode ) { 647 if ( mSyncMode ) {
638 if ( clearV ) 648 if ( clearV )
639 appendTodo(event,1 ); 649 appendTodo(event,1 );
640 else 650 else
641 appendTodo(event,2); 651 appendTodo(event,2);
642 } else 652 } else
643 appendTodo(event); 653 appendTodo(event);
644} 654}
645void KOEventViewer::setJournal(Journal *event, bool clearV ) 655void KOEventViewer::setJournal(Journal *event, bool clearV )
646{ 656{
647 if ( clearV ) 657 if ( clearV )
648 clearEvents(); 658 clearEvents();
649 if ( mSyncMode ) { 659 if ( mSyncMode ) {
650 if ( clearV ) 660 if ( clearV )
651 appendJournal(event, 1); 661 appendJournal(event, 1);
652 else 662 else
653 appendJournal(event, 2); 663 appendJournal(event, 2);
654 } else 664 } else
655 appendJournal(event); 665 appendJournal(event);
656} 666}
657 667
658void KOEventViewer::setEvent(Event *event) 668void KOEventViewer::setEvent(Event *event)
659{ 669{
660 clearEvents(); 670 clearEvents();
661 if ( mSyncMode ) 671 if ( mSyncMode )
662 appendEvent(event, 1); 672 appendEvent(event, 1);
663 else 673 else
664 appendEvent(event); 674 appendEvent(event);
665} 675}
666 676
667void KOEventViewer::addEvent(Event *event) 677void KOEventViewer::addEvent(Event *event)
668{ 678{
669 if ( mSyncMode ) 679 if ( mSyncMode )
670 appendEvent(event, 2); 680 appendEvent(event, 2);
671 else 681 else
672 appendEvent(event); 682 appendEvent(event);
673} 683}
674 684
675void KOEventViewer::clearEvents(bool now) 685void KOEventViewer::clearEvents(bool now)
676{ 686{
677 mText = ""; 687 mText = "";
678 if (now) setText(mText); 688 if (now) setText(mText);
679} 689}
680 690
681void KOEventViewer::addText(QString text) 691void KOEventViewer::addText(QString text)
682{ 692{
683 mText.append(text); 693 mText.append(text);
684 setText(mText); 694 setText(mText);
685} 695}