summaryrefslogtreecommitdiffabout
Unidiff
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,969 +1,972 @@
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
395at the sourceforge project site the package 398at the sourceforge project site the package
396sr-character-conversion_SharpROM_arm.ipk.zip 399sr-character-conversion_SharpROM_arm.ipk.zip
397(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 400(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
398from the section "general files for KDE/Pim" 401from the section "general files for KDE/Pim"
399Instructions how to install this package are in a ReadMe in this file. 402Instructions how to install this package are in a ReadMe in this file.
400 403
401 404
402Fixed the orientation change problem in KA/Pi when switching 405Fixed the orientation change problem in KA/Pi when switching
403portrait/landscape mode. 406portrait/landscape mode.
404 407
405French translation available for KA/Pi and OM/Pi. 408French translation available for KA/Pi and OM/Pi.
406 409
407Fixed some problems with categories in KO/Pi in DTM sync. 410Fixed some problems with categories in KO/Pi in DTM sync.
408 411
409Added selection dialog for export to phone in KA/Pi. 412Added selection dialog for export to phone in KA/Pi.
410 413
411If in KO/Pi is an attendee selected to add to a meeting and this 414If in KO/Pi is an attendee selected to add to a meeting and this
412attendee is already in the list of attendees, this person is not added 415attendee is already in the list of attendees, this person is not added
413again. 416again.
414 417
415Some menu cleanup in KA/Pi. 418Some menu cleanup in KA/Pi.
416 419
417********** VERSION 1.9.12 ************ 420********** VERSION 1.9.12 ************
418 421
419Fix for the bug in KO/Pi What's Next view of version 1.9.11. 422Fix for the bug in KO/Pi What's Next view of version 1.9.11.
420 423
421Bugfix: Licence file is now shown again. 424Bugfix: Licence file is now shown again.
422 425
423OM/Pi now supports Unicode (utf8 charset). 426OM/Pi now supports Unicode (utf8 charset).
424Fixed some bugs in OM/Pi. 427Fixed some bugs in OM/Pi.
425 428
426KA/Pi has more German translation. 429KA/Pi has more German translation.
427 430
428 431
429********** VERSION 1.9.11 ************ 432********** VERSION 1.9.11 ************
430 433
431Fixed several problems in PWM/Pi, like 434Fixed several problems in PWM/Pi, like
432asking the user, if unsaved changed are pending 435asking the user, if unsaved changed are pending
433when closing the app. 436when closing the app.
434And PwM/Pi handles now different texts for the 437And PwM/Pi handles now different texts for the
435fields Description, Username, Password, configurable per category. 438fields Description, Username, Password, configurable per category.
436 439
437Fixed a crash in KO/Pi , when importing/loading vcs files 440Fixed a crash in KO/Pi , when importing/loading vcs files
438which have an entry with an attendee with state: 441which have an entry with an attendee with state:
439NEEDS ACTION 442NEEDS ACTION
440 443
441Fixed some problems in the German translation of OM/Pi, 444Fixed some problems in the German translation of OM/Pi,
442which makes some dialogs not fitting on the screen 445which makes some dialogs not fitting on the screen
443of the Z 5500. 446of the Z 5500.
444 447
445Fixed Qtopia crash, when disabling/deinstalling 448Fixed Qtopia crash, when disabling/deinstalling
446KO/Pi alarm applet. 449KO/Pi alarm applet.
447 450
448Implemented direct KDE<->KA/Pi sync for KA/Pi running 451Implemented direct KDE<->KA/Pi sync for KA/Pi running
449on Linux desktop. 452on Linux desktop.
450 453
451Added feature "remove sync info" to sync menu. 454Added feature "remove sync info" to sync menu.
452 455
453Tweaked the KO/Pi What's next view a bit, added 456Tweaked the KO/Pi What's next view a bit, added
454setting to hide events that are done. 457setting to hide events that are done.
455 458
456Disabled "beam receive enabled" on startup to 459Disabled "beam receive enabled" on startup to
457avoid problems if Fastload is enabled. 460avoid problems if Fastload is enabled.
458Please set "beam receive enabled", 461Please set "beam receive enabled",
459if you want to receive data via IR. 462if you want to receive data via IR.
460 463
461Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 464Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
462on Linux desktop. 465on Linux desktop.
463 466
464Made in KA/Pi scrolling possible, if details view is selected. 467Made in KA/Pi scrolling possible, if details view is selected.
465(The keyboard focus is set automatically to the search line) 468(The keyboard focus is set automatically to the search line)
466 469
467Fixed a bug in DMT sync, that a new entry in DTM was added 470Fixed a bug in DMT sync, that a new entry in DTM was added
468on every sync to Kx/Pi. 471on every sync to Kx/Pi.
469 472
470Fixed missing writing of KA/Pi categories to DMT entries when syncing. 473Fixed missing writing of KA/Pi categories to DMT entries when syncing.
471 474
472Fixed a bug in DMT sync with todos created in KO/Pi containing 475Fixed a bug in DMT sync with todos created in KO/Pi containing
473non-latin1 characters. 476non-latin1 characters.
474 477
475Rearranged package contents of Sharp-ipks and made all 478Rearranged package contents of Sharp-ipks and made all
476packages installable on SD again. 479packages installable on SD again.
477 480
478Fixed the writing of addressbook data in DTM sync. 481Fixed the writing of addressbook data in DTM sync.
479Empty fields in KA/Pi were not removed. 482Empty fields in KA/Pi were not removed.
480 483
481Added better category handling in KA/Pi: 484Added better category handling in KA/Pi:
482Added item 485Added item
483Edit Categories and 486Edit Categories and
484Manage new categories 487Manage new categories
485to the settings menu. 488to the settings menu.
486Possible to configure a view to display categories. 489Possible to configure a view to display categories.
487 490
488Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 491Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
489 492
490Fixed displaying of "free" days and time in KO Monthview and Agendaview. 493Fixed displaying of "free" days and time in KO Monthview and Agendaview.
491 494
492... and many other bugfixes. 495... and many other bugfixes.
493 496
494********** VERSION 1.9.10 ************ 497********** VERSION 1.9.10 ************
495 498
496Many internal small bugfixes. 499Many internal small bugfixes.
497And fix of the "big" bug in KO/Pi, 500And fix of the "big" bug in KO/Pi,
498that after Syncing the appointments had an offset by several hours. 501that after Syncing the appointments had an offset by several hours.
499That was a problem with the internal timezone setting, 502That was a problem with the internal timezone setting,
500introduced by the changed timezone configuration settings. 503introduced by the changed timezone configuration settings.
501 504
502German translation for OM/Pi is now available. 505German translation for OM/Pi is now available.
503 506
504 507
505********** VERSION 1.9.9 ************ 508********** VERSION 1.9.9 ************
506 509
507KDE-Pim/Pi has a new Member! 510KDE-Pim/Pi has a new Member!
508It is called PWM/Pi (Passwordmanager/platform-independent) 511It is called PWM/Pi (Passwordmanager/platform-independent)
509and it is available for the Zaurus. 512and it is available for the Zaurus.
510It is planned, that it will be available later for Windows. 513It is planned, that it will be available later for Windows.
511(And for Linux, of course). 514(And for Linux, of course).
512It is a port of the Passwordmanager of KDE. 515It is a port of the Passwordmanager of KDE.
513It will need the MicroKDElibs to run. 516It will need the MicroKDElibs to run.
514 517
515Made loading of addressbooks in KA/Pi up to 7 times faster! 518Made loading of addressbooks in KA/Pi up to 7 times faster!
516The bigger your addressbook file, the more starting speed 519The bigger your addressbook file, the more starting speed
517will you gain. (relatively) 520will you gain. (relatively)
518 521
519The Qtopia addressbook connector is now platform independend 522The Qtopia addressbook connector is now platform independend
520as well and should work on any platform for importing/exporting 523as well and should work on any platform for importing/exporting
521Qtopia and Opie XML files. 524Qtopia and Opie XML files.
522 525
523Added a +30min feature to the timezone settings to make 526Added a +30min feature to the timezone settings to make
524KDE-Pim/Pi useable in Australia and other parts on the 527KDE-Pim/Pi useable in Australia and other parts on the
525world with strange timezones ;-) 528world with strange timezones ;-)
526 529
527German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 530German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
528 531
529It is now possible to disable the 532It is now possible to disable the
530"receive data via infrared" feature, such that syncing with 533"receive data via infrared" feature, such that syncing with
531Outlook is now possible again with Kx/Pi runing. 534Outlook is now possible again with Kx/Pi runing.
532Please disable it, before syncing Sharp DTM with Outlook. 535Please disable it, before syncing Sharp DTM with Outlook.
533For your convenience, the "receive data via infrared" feature 536For your convenience, the "receive data via infrared" feature
534is disabled automatically, if you sync Kx/Pi with DTM. 537is disabled automatically, if you sync Kx/Pi with DTM.
535You have to enable it again manually after syncing. 538You have to enable it again manually after syncing.
536Enabling this feature makes it impossible to start the 539Enabling this feature makes it impossible to start the
537Sharp DTM apps. If this feature is enabled, you will only get the 540Sharp DTM apps. If this feature is enabled, you will only get the
538alarm notification from KO/Pi and not from the Sharp calendar. 541alarm notification from KO/Pi and not from the Sharp calendar.
539This is very useful if you sync KO/Pi with Sharp DTM, 542This is very useful if you sync KO/Pi with Sharp DTM,
540because after syncing you usually would get notified about 543because after syncing you usually would get notified about
541an alarm by KO/Pi and the Sharp Calendar. 544an alarm by KO/Pi and the Sharp Calendar.
542 545
543Together with the Linux desktop version of KO/Pi 546Together with the Linux desktop version of KO/Pi
544it is now possible to sync KO/Pi on the Zaurus 547it is now possible to sync KO/Pi on the Zaurus
545with the complete KDE-desktop (3.3 or later) 548with the complete KDE-desktop (3.3 or later)
546calendar data easily. 549calendar data easily.
547That makes it possible to sync the Z with one 550That makes it possible to sync the Z with one
548click of a mouse with the KDE-Desktop. 551click of a mouse with the KDE-Desktop.
549This feature it available for all Zaurus platforms KO/Pi 552This feature it available for all Zaurus platforms KO/Pi
550is running on. 553is running on.
551The only thing needed is a running KO/Pi on Linux and 554The only thing needed is a running KO/Pi on Linux and
552a compiled version of the small 555a compiled version of the small
553KDE-Pim/Pi<->KDE-Desktop access command line program, 556KDE-Pim/Pi<->KDE-Desktop access command line program,
554which is in the KDE-Pim/Pi sources available. 557which is in the KDE-Pim/Pi sources available.
555 558
556The "KDE-desktop" syncing feature for KA/Pi will follow 559The "KDE-desktop" syncing feature for KA/Pi will follow
557in the next releases. 560in the next releases.
558 561
559Fixed the vcard export bug, which had the version 1.9.8. 562Fixed the vcard export bug, which had the version 1.9.8.
560 563
561Added missing GERMAN translation to KO/Pi. 564Added missing GERMAN translation to KO/Pi.
562Hi PsionX, could you add the missing french translation?Thx! 565Hi PsionX, could you add the missing french translation?Thx!
563 566
564Translation files for KA/Pi are available as well. 567Translation files for KA/Pi are available as well.
565GERMAN translation will be available in the next release. 568GERMAN translation will be available in the next release.
566PsionX ( yres, you again ;-) ), could you start translating 569PsionX ( yres, you again ;-) ), could you start translating
567KA/Pi? Thx! 570KA/Pi? Thx!
568 571
569You can download the version 1.9.9 at 572You can download the version 1.9.9 at
570 573
571http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 574http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
572 575
573Note: 576Note:
574To run the mail program OM/Pi you need libopenssl. 577To run the mail program OM/Pi you need libopenssl.
575A link to a download loaction is available at 578A link to a download loaction is available at
576ZSI at www.killefiz.de 579ZSI at www.killefiz.de
577 580
578 581
579********** VERSION 1.9.8 ************ 582********** VERSION 1.9.8 ************
580 583
581Fixed character decoding in OM/Pi. 584Fixed character decoding in OM/Pi.
582(e.g. German "Umlaute" were not displayed properly.) 585(e.g. German "Umlaute" were not displayed properly.)
583 586
584Made is possible to reparent todos in KO/Pi. 587Made is possible to reparent todos in KO/Pi.
585Use contextmenu or keys (look at Help-Keys + Colors) for that. 588Use contextmenu or keys (look at Help-Keys + Colors) for that.
586 589
587Added the missing Sync-Howto and WhatsNew to the packages. 590Added the missing Sync-Howto and WhatsNew to the packages.
588 591
589KO/Pi on Linux desktop can now sync with KDE desktop. 592KO/Pi on Linux desktop can now sync with KDE desktop.
590That means: When using KO/Pi on Linux desktop for syncing with 593That means: When using KO/Pi on Linux desktop for syncing with
591KDE desktop and the Zaurus, the Zaurus can be synced now 594KDE desktop and the Zaurus, the Zaurus can be synced now
592with all KDE-Calendar resources, not only with one local file. 595with all KDE-Calendar resources, not only with one local file.
593(That makes it possible to sync the Zaurus with the 596(That makes it possible to sync the Zaurus with the
594calendar data on a Kolab server) 597calendar data on a Kolab server)
595 598
596KA/Pi syncing with KDE desktop will be available in the next version. 599KA/Pi syncing with KDE desktop will be available in the next version.
597 600
598 601
599********** VERSION 1.9.7 ************ 602********** VERSION 1.9.7 ************
600 603
601KO/Pi - KA/Pi on Windows: 604KO/Pi - KA/Pi on Windows:
602Now a directory can be defined by the user, where the 605Now a directory can be defined by the user, where the
603application/config data should be saved. 606application/config data should be saved.
604 Define your desired path in the evironment variable 607 Define your desired path in the evironment variable
605 MICROKDEHOME 608 MICROKDEHOME
606 before starting KO/Pi or KA/Pi. 609 before starting KO/Pi or KA/Pi.
607 610
608An easy Kx/Pi to Kx/Pi syncing is now possible 611An easy Kx/Pi to Kx/Pi syncing is now possible
609(it is called Pi-Sync) via network. 612(it is called Pi-Sync) via network.
610Please look at the Sync Howto. 613Please look at the Sync Howto.
611 614
612Exporting of calendar data and contacts to mobile phones is now possible. 615Exporting of calendar data and contacts to mobile phones is now possible.
613The SyncHowto is updated with information howto 616The SyncHowto is updated with information howto
614access/sync mobile phones. 617access/sync mobile phones.
615Please look at the Sync Howto. 618Please look at the Sync Howto.
616 619
617Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 620Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
618Please disable Fastload for the original contact/calendar applications 621Please disable Fastload for the original contact/calendar applications
619and close them. 622and close them.
620KO/Pi and KA/Pi must be running in order to receive the data. 623KO/Pi and KA/Pi must be running in order to receive the data.
621(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 624(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
622 625
623In the KA/Pi details view are now the preferred tel. numbers displayed on top 626In the KA/Pi details view are now the preferred tel. numbers displayed on top
624of the other data ( emails/tel.numbers/addresses) 627of the other data ( emails/tel.numbers/addresses)
625 628
626Fixed some syncing problems in KA/Pi. 629Fixed some syncing problems in KA/Pi.
627 630
628Added font settings for the KA/Pi details view. 631Added font settings for the KA/Pi details view.
629Added fields "children's name" and "gender" to KA/Pi. 632Added fields "children's name" and "gender" to KA/Pi.
630 633
631Made searching in KA/Pi better: 634Made searching in KA/Pi better:
632Now the first item in a view is selected after a search automatically and 635Now the first item in a view is selected after a search automatically and
633the views can be scrolled up/down when the search input field has the keyboard focus. 636the views can be scrolled up/down when the search input field has the keyboard focus.
634 637
635And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 638And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
636 639
637 640
638********** VERSION 1.9.6 ************ 641********** VERSION 1.9.6 ************
639 642
640Changes in the external application communication on the Zaurus 643Changes in the external application communication on the Zaurus
641in order to use less RAM when the apps are running. 644in order to use less RAM when the apps are running.
642First syncing of addressbooks (KA/Pi) is possible. 645First syncing of addressbooks (KA/Pi) is possible.
643 646
644 647
645********** VERSION 1.9.5a ************ 648********** VERSION 1.9.5a ************
646 649
647Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 650Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
648Fixed some small bugs. 651Fixed some small bugs.
649KA/Pi shows now the birthday in summary view. 652KA/Pi shows now the birthday in summary view.
650Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 653Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
651for displaying dates. 654for displaying dates.
652 655
653 656
654********** VERSION 1.9.5 ************ 657********** VERSION 1.9.5 ************
655 658
656There is still no Addressbook syncing! 659There is still no Addressbook syncing!
657 660
658New in 1.9.5: 661New in 1.9.5:
659 662
660Many bugfixes. 663Many bugfixes.
661Better searching in KA/Pi. 664Better searching in KA/Pi.
662You can configure in KA/Pi if you want to search only after 665You can configure in KA/Pi if you want to search only after
663<return> key pressed. 666<return> key pressed.
664 667
665Better mail downloading in OM/Pi. 668Better mail downloading in OM/Pi.
666 669
667First experimental alpha version of sync of KO/Pi with mobile phones. 670First experimental alpha version of sync of KO/Pi with mobile phones.
668See gammu documentation for supported phones. 671See gammu documentation for supported phones.
669You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp. 672You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp.
670Quick hint how to use: 673Quick hint how to use:
671NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 674NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
672Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 675Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
673Create syncprofile - mobile device 676Create syncprofile - mobile device
674Remove entry for model. (Leave empty ). 677Remove entry for model. (Leave empty ).
675Enable infrared on Zaurus and your Phone. 678Enable infrared on Zaurus and your Phone.
676Sync. 679Sync.
677To get a more detailed log, start kopi from konsole. 680To get a more detailed log, start kopi from konsole.
678 681
679********** VERSION 1.9.4 ************ 682********** VERSION 1.9.4 ************
680 683
681This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 684This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
682 685
683WARNING: 686WARNING:
684PLEASE BACKUP ALL YOUR DATA! 687PLEASE BACKUP ALL YOUR DATA!
685We have changed a lot and maybe there are some unknown problems. 688We have changed a lot and maybe there are some unknown problems.
686 689
687SYNC HANDLING HAS CHANGED! 690SYNC HANDLING HAS CHANGED!
688Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 691Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
689(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 692(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
690 693
691You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 694You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
692If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well. 695If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well.
693 696
694As programs are available: 697As programs are available:
695KO/Pi (korganizer ipk) - a calendar program. 698KO/Pi (korganizer ipk) - a calendar program.
696KA/Pi (kaddressbook ipk ) - an addressbook 699KA/Pi (kaddressbook ipk ) - an addressbook
697OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 700OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
698 701
699An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 702An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
700(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 703(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
701 704
702All the applications are installed in a "Pim" TAB. 705All the applications are installed in a "Pim" TAB.
703If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk 706If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk
704 707
705All the application are integrated. 708All the application are integrated.
706Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail. 709Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail.
707 710
708HINT: 711HINT:
709If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 712If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
710 713
711What's new? 714What's new?
712 715
713SYNC HANDLING HAS CHANGED! 716SYNC HANDLING HAS CHANGED!
714Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 717Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
715(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 718(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
716 719
717New in OM/Pi: 720New in OM/Pi:
718When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails. 721When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails.
719 722
720New in KO/Pi: 723New in KO/Pi:
721French is now available for KO/Pi. 724French is now available for KO/Pi.
722Choose menu:Actions - Configure:TAB locale 725Choose menu:Actions - Configure:TAB locale
723Syncing has changed. 726Syncing has changed.
724Phone sync available soon. 727Phone sync available soon.
725Not much changes, I cannot remember them ... 728Not much changes, I cannot remember them ...
726 729
727New in KA/Pi: 730New in KA/Pi:
728Beaming possible. 731Beaming possible.
729Sharp DTM readonly access possible( create a new DTM resource ); 732Sharp DTM readonly access possible( create a new DTM resource );
730Better searching possible. 733Better searching possible.
731Search is performed only after pressing the return key. 734Search is performed only after pressing the return key.
732Use wildcard * to specify parts of a name. 735Use wildcard * to specify parts of a name.
733 736
734Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * . 737Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * .
735 738
736A big improvement is the new management of the contact access. 739A big improvement is the new management of the contact access.
737In version 1.9.3, every application was using their own addressbook access data. 740In version 1.9.3, every application was using their own addressbook access data.
738That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi. 741That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi.
739That was wasting of memory, if you had several hundreds of contacts. 742That was wasting of memory, if you had several hundreds of contacts.
740 743
741Now only KA/Pi accesses the addressbook. 744Now only KA/Pi accesses the addressbook.
742If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them. 745If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them.
743If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly. 746If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly.
744That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first. 747That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first.
745 748
746New in the KO/Pi alarm applet: 749New in the KO/Pi alarm applet:
747Configure your own timer popup menu! 750Configure your own timer popup menu!
748(Text and minutes for timer countdown) 751(Text and minutes for timer countdown)
749Just edit the file 752Just edit the file
750(yourhomedir)/.kopialarmtimerrc 753(yourhomedir)/.kopialarmtimerrc
751and start/stop a timer to get a new menu with the data of this file. 754and start/stop a timer to get a new menu with the data of this file.
752 755
753********** VERSION 1.9.3 ************ 756********** VERSION 1.9.3 ************
7541) 7571)
755Now KO/Pi on Windows imports directly the calendar data of 758Now KO/Pi on Windows imports directly the calendar data of
756an installed Outlook. Should work with OL version >= 2000. 759an installed Outlook. Should work with OL version >= 2000.
757 760
758********** VERSION 1.9.2 ************ 761********** VERSION 1.9.2 ************
7591) 7621)
760KDE-Pim/Pi has got a new member: 763KDE-Pim/Pi has got a new member:
761KmicroMail (KM/Pi) is a mail program, 764KmicroMail (KM/Pi) is a mail program,
762which can handle IMAP and POP mail access. 765which can handle IMAP and POP mail access.
763It is based on Opie-Mail v3. 766It is based on Opie-Mail v3.
764All dependencies to the Opie libraries ar removed, 767All dependencies to the Opie libraries ar removed,
765such that no additional Opie lib is needed. 768such that no additional Opie lib is needed.
766It is already integrated in KO/Pi and KA/Pi. 769It is already integrated in KO/Pi and KA/Pi.
767It it now available for the Zaurus,probably it 770It it now available for the Zaurus,probably it
768will be available for other platforms later. 771will be available for other platforms later.
769Hint: 772Hint:
770Create your own contact (name + email) 773Create your own contact (name + email)
771in KA/Pi, select this contact and choose menu: 774in KA/Pi, select this contact and choose menu:
772Settings - Set Who Am I. 775Settings - Set Who Am I.
773Now the settings of this contact are used as 776Now the settings of this contact are used as
774the sender data in KM/Pi. 777the sender data in KM/Pi.
7752) 7782)
776KDE-Pim/Pi is split up in five different 779KDE-Pim/Pi is split up in five different
777packages now precompiled for Sharp Zaurus: 780packages now precompiled for Sharp Zaurus:
778--kmicrokdelibs_1.9.2_arm.ipk 781--kmicrokdelibs_1.9.2_arm.ipk
779The libs are needed for any 782The libs are needed for any
780of the following programs: 783of the following programs:
781--kaddressbook_1.9.2_arm.ipk 784--kaddressbook_1.9.2_arm.ipk
782--kmicromail_1.9.2_arm.ipk 785--kmicromail_1.9.2_arm.ipk
783--korganizer_1.9.2_arm.ipk 786--korganizer_1.9.2_arm.ipk
784Independ from that, there is the alarm applet 787Independ from that, there is the alarm applet
785available for KO/Pi, which also offers 788available for KO/Pi, which also offers
786quick access for a new mail or 789quick access for a new mail or
787showing the addressbook.: 790showing the addressbook.:
788--korganizer-alarm_1.9.2_arm.ipk 791--korganizer-alarm_1.9.2_arm.ipk
789Independend means, that the alarm applet 792Independend means, that the alarm applet
790does not need any of the libs or programs above to run. 793does not need any of the libs or programs above to run.
791But it would be quite useless without these programs. 794But it would be quite useless without these programs.
792NOTE: 795NOTE:
793If you get a 796If you get a
794"This application depends on other programs" 797"This application depends on other programs"
795during installation of 798during installation of
796--kmicrokdelibs_1.9.2_arm.ipk 799--kmicrokdelibs_1.9.2_arm.ipk
797you probably do not have to care about that. 800you probably do not have to care about that.
798kmicrokdelibs_1.9.2 will come with some 801kmicrokdelibs_1.9.2 will come with some
799resource plugins, which needs additional libraries. 802resource plugins, which needs additional libraries.
800(E.g. libopie1, if you want to use the 803(E.g. libopie1, if you want to use the
801opie resource connector in KA/Pi). 804opie resource connector in KA/Pi).
802If you do not have this libraries installed, 805If you do not have this libraries installed,
803you simply cannot use the resource. 806you simply cannot use the resource.
804To make it clear: 807To make it clear:
805If the libraries are missing, the applications 808If the libraries are missing, the applications
806using kmicrokdelibs will start, 809using kmicrokdelibs will start,
807because the resources are plugins. 810because the resources are plugins.
8083) 8113)
809KO/Pi and friends are now installable on SD-Card! 812KO/Pi and friends are now installable on SD-Card!
810It is recommended to install all libs and apps 813It is recommended to install all libs and apps
811on the SD card or all in the internal storage. 814on the SD card or all in the internal storage.
812There may be problems, if this is mixed. 815There may be problems, if this is mixed.
8134) 8164)
814Fixed two bugs in the alarm notification on Windows. 817Fixed two bugs in the alarm notification on Windows.
8155) 8185)
816Great improvement! 819Great improvement!
817KO/Pi uses now the latest version of libical. 820KO/Pi uses now the latest version of libical.
818Libical is the library which actually reads 821Libical is the library which actually reads
819the calendar files and extract the data from it. 822the calendar files and extract the data from it.
820With the old version, there were problems 823With the old version, there were problems
821(crashes or program hangs) when licical did read 824(crashes or program hangs) when licical did read
822files, which were not stored from KO/Pi. 825files, which were not stored from KO/Pi.
823I do not know, if the new libical works perfect, 826I do not know, if the new libical works perfect,
824but actually it works much better than 827but actually it works much better than
825the old version. 828the old version.
826There are no problems with compatibility with 829There are no problems with compatibility with
827old calendar files of KO/Pi, of course! 830old calendar files of KO/Pi, of course!
8286) 8316)
829New in KA/Pi: 832New in KA/Pi:
830Opie addressbook resource connector available! 833Opie addressbook resource connector available!
831You will need libopie1 and the opie addressbook, 834You will need libopie1 and the opie addressbook,
832of course. 835of course.
833With the Opie addressbook resource connector, 836With the Opie addressbook resource connector,
834you can access the Opie addressbook readonly in KA/Pi. 837you can access the Opie addressbook readonly in KA/Pi.
835If you want to edit or import the data into KA/Pi, 838If you want to edit or import the data into KA/Pi,
836do this: 839do this:
837a) Create an Opie resource. 840a) Create an Opie resource.
838 (Menu: Settings-Configure Resources). 841 (Menu: Settings-Configure Resources).
839After configuration and restarting KA/Pi you should see 842After configuration and restarting KA/Pi you should see
840the Opie contacts in KA/Pi. 843the Opie contacts in KA/Pi.
841b) Select some or all Opie contacts. 844b) Select some or all Opie contacts.
842(NOTE: +++++ 845(NOTE: +++++
843To know exactly, what contacts are Opie contacts, 846To know exactly, what contacts are Opie contacts,
844do this: Choose menu: 847do this: Choose menu:
845View-Modify View - TAB Fields. 848View-Modify View - TAB Fields.
846Select in the above list "Resource" and click 849Select in the above list "Resource" and click
847down arrow to add it to the "Selected fields". 850down arrow to add it to the "Selected fields".
848Click OK. 851Click OK.
849Now you have a new column "Resource" in your list, 852Now you have a new column "Resource" in your list,
850where you can see, what an Opie resource is. 853where you can see, what an Opie resource is.
851++++ NOTE end.) 854++++ NOTE end.)
852Ok, we do have now some Opie contacts seleted. 855Ok, we do have now some Opie contacts seleted.
853(Use SHIFT or CTRL key in order to multiple select). 856(Use SHIFT or CTRL key in order to multiple select).
854c) Choose menu: Edit-Copy. 857c) Choose menu: Edit-Copy.
855d) Choose menu: Edit-Paste. 858d) Choose menu: Edit-Paste.
856e) Select the resource, you want to add the contacts to. 859e) Select the resource, you want to add the contacts to.
857Congrats! Now you have read/write access to the copied 860Congrats! Now you have read/write access to the copied
858opie contacts as "real" KA/Pi contacts. 861opie contacts as "real" KA/Pi contacts.
859 862
860 863
861********** VERSION 1.9.1 ************ 864********** VERSION 1.9.1 ************
8621) 8651)
863 +++ IMPORTANT 1 +++ 866 +++ IMPORTANT 1 +++
864 867
865The storing place of the default calendar 868The storing place of the default calendar
866file has changed! 869file has changed!
867The default calendar file was 870The default calendar file was
868Applications/korganizer/mycalendar.ics 871Applications/korganizer/mycalendar.ics
869on Zaurus and 872on Zaurus and
870(yourHomeDir)/korganizer/mycalendar.ics 873(yourHomeDir)/korganizer/mycalendar.ics
871on Windows/Linux desktop. Now it is 874on Windows/Linux desktop. Now it is
872(yourHomeDir)/kdepim/korganizer/mycalendar.ics 875(yourHomeDir)/kdepim/korganizer/mycalendar.ics
873on Zaurus, Windows and Linux. 876on Zaurus, Windows and Linux.
874To load the old file, choose menu 877To load the old file, choose menu
875File-Load calendar backup. 878File-Load calendar backup.
876(It should be loaded automatically 879(It should be loaded automatically
877at startup with a warning message displayed). 880at startup with a warning message displayed).
878The place of the configuration file has changed too. 881The place of the configuration file has changed too.
879If you want to use your old KO/Pi config, 882If you want to use your old KO/Pi config,
880copy it to 883copy it to
881(yourHomeDir)/kdepim/config/korganizerrc 884(yourHomeDir)/kdepim/config/korganizerrc
882Please read VERSION 1.9.0 - topic 3) as well! 885Please read VERSION 1.9.0 - topic 3) as well!
883 886
884 +++ IMPORTANT 2 +++ 887 +++ IMPORTANT 2 +++
885 888
886Because of the new paths, you will need 889Because of the new paths, you will need
887a new version of the KO/Pi alarm applet 890a new version of the KO/Pi alarm applet
888for Zaurus. 891for Zaurus.
889Use version >= 1.9.1 892Use version >= 1.9.1
890 893
8912) 8942)
892Now the QWhat'sThis Icon works for items 895Now the QWhat'sThis Icon works for items
893in the month view as well. 896in the month view as well.
894(See VERSION 1.7.8 Topic 1) ). 897(See VERSION 1.7.8 Topic 1) ).
8953) 8983)
896You can import birtsdays/anniversaries 899You can import birtsdays/anniversaries
897from KA/Pi into KO/Pi. 900from KA/Pi into KO/Pi.
898Choose menu File-Import birthdays. 901Choose menu File-Import birthdays.
899If you import twice, already imported items 902If you import twice, already imported items
900will not be imported again, if they 903will not be imported again, if they
901have not been changed in KO/Pi. 904have not been changed in KO/Pi.
9024) 9054)
903When syncing with sharp DTM, now a progress 906When syncing with sharp DTM, now a progress
904is shown, when the data is written back. 907is shown, when the data is written back.
905If there is much data in KO/Pi and no data 908If there is much data in KO/Pi and no data
906in DTM, that can take a long time. 909in DTM, that can take a long time.
907(But only for the first time ). 910(But only for the first time ).
9085) 9115)
909In the search dialog, you can search 912In the search dialog, you can search
910now for the name/email of an attendee 913now for the name/email of an attendee
911of an event/todo. 914of an event/todo.
912To get more space for displaying 915To get more space for displaying
913search results, the buttons 916search results, the buttons
914for "search" and "close" on the 917for "search" and "close" on the
915bottom are removed in the PDA version. 918bottom are removed in the PDA version.
916You have to click OK in the top right 919You have to click OK in the top right
917corner to do a search. 920corner to do a search.
9186) 9216)
919Now it is possible to disable the displaying 922Now it is possible to disable the displaying
920of todo items in the Allday part of the Agenda. 923of todo items in the Allday part of the Agenda.
921Choose Menu Action-Configure, 924Choose Menu Action-Configure,
922TAB Todo View, checkbox 925TAB Todo View, checkbox
923"Allday Agenda view shows todos" 926"Allday Agenda view shows todos"
9247) 9277)
925If FastLoad is enabled, now the settings and the 928If FastLoad is enabled, now the settings and the
926calendar data are saved, when KO/Pi is closed. 929calendar data are saved, when KO/Pi is closed.
927(If no Fastload is enabled, KO/Pi saves 930(If no Fastload is enabled, KO/Pi saves
928the data as well, of course) 931the data as well, of course)
9298) 9328)
930The Agenda View has a minimize-splitter now, 933The Agenda View has a minimize-splitter now,
931such that the height of the allday part can be 934such that the height of the allday part can be
932changed quickly. 935changed quickly.
933 936
934********** VERSION 1.9.0 ************ 937********** VERSION 1.9.0 ************
9351) 9381)
936KO/Pi is now merged with the new microKDE from KA/Pi. 939KO/Pi is now merged with the new microKDE from KA/Pi.
937KO/Pi accesses now KA/Pi as the addressbook. 940KO/Pi accesses now KA/Pi as the addressbook.
938The other ddressbook-plugins are not working any longer. 941The other ddressbook-plugins are not working any longer.
939(It is planned, that later KA/Pi itself uses these plugins) 942(It is planned, that later KA/Pi itself uses these plugins)
940New versions of KO/Pi are only available 943New versions of KO/Pi are only available
941together with KA/Pi as the KDE-Pim/Pi package. 944together with KA/Pi as the KDE-Pim/Pi package.
9422) 9452)
943If you click on an attendee of a meeting in the 946If you click on an attendee of a meeting in the
944event viewer, a detailed summary of the 947event viewer, a detailed summary of the
945attendee is shown. 948attendee is shown.
9463) 9493)
947The place of the configuration file has changed. 950The place of the configuration file has changed.
948If you want to use your old KO/Pi config, copy 951If you want to use your old KO/Pi config, copy
949Applications/korganizer/config_korganizerrc 952Applications/korganizer/config_korganizerrc
950to 953to
951Applications/korganizer/config/korganizerrc 954Applications/korganizer/config/korganizerrc
952 955
953********** VERSION 1.7.8 ************ 956********** VERSION 1.7.8 ************
9541) 9571)
955Now the QWhat'sThis ist working. 958Now the QWhat'sThis ist working.
956Enable the QWhat'sThis icon in the toolbar. 959Enable the QWhat'sThis icon in the toolbar.
957(You have to restart to reload the changed toolbar config). 960(You have to restart to reload the changed toolbar config).
958Now click on the QWhat'sThis Icon 961Now click on the QWhat'sThis Icon
959in the top right corner of KO/Pi. 962in the top right corner of KO/Pi.
960Then click on an item in the Agenda View: 963Then click on an item in the Agenda View:
961You will get a detailed display of the items content. 964You will get a detailed display of the items content.
9622) 9652)
963Some other very minor changes. 966Some other very minor changes.
964But I have forgotten the details ... 967But I have forgotten the details ...
965For that reason I start this log here: 968For that reason I start this log here:
966To document my changes, when I am doing it. 969To document my changes, when I am doing it.
967 970
968********** VERSION 1.7.7 ************ 971********** VERSION 1.7.7 ************
969Stable Version of KO/Pi 972Stable Version of KO/Pi
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index d87938a..417d89c 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -1,685 +1,695 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qcstring.h> 20#include <qcstring.h>
21#include <qwhatsthis.h> 21#include <qwhatsthis.h>
22#include <qdialog.h> 22#include <qdialog.h>
23#include <qapplication.h> 23#include <qapplication.h>
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qlayout.h> 25#include <qlayout.h>
26 26
27#include <klocale.h> 27#include <klocale.h>
28#include <kapplication.h> 28#include <kapplication.h>
29#include <libkcal/event.h> 29#include <libkcal/event.h>
30#include <libkcal/todo.h> 30#include <libkcal/todo.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kiconloader.h> 32#include <kiconloader.h>
33#include <krun.h> 33#include <krun.h>
34#include <kglobal.h> 34#include <kglobal.h>
35#include <kprocess.h> 35#include <kprocess.h>
36#include "koprefs.h" 36#include "koprefs.h"
37 37
38#include <kabc/stdaddressbook.h> 38#include <kabc/stdaddressbook.h>
39 39
40#ifndef KORG_NODCOP 40#ifndef KORG_NODCOP
41#include <dcopclient.h> 41#include <dcopclient.h>
42#include "korganizer.h" 42#include "korganizer.h"
43#include "koprefs.h" 43#include "koprefs.h"
44#include "actionmanager.h" 44#include "actionmanager.h"
45#endif 45#endif
46 46
47#include "koeventviewer.h" 47#include "koeventviewer.h"
48//#ifndef KORG_NOKABC 48//#ifndef KORG_NOKABC
49//#include <kabc/stdaddressbook.h> 49//#include <kabc/stdaddressbook.h>
50//#define size count 50//#define size count
51//#endif 51//#endif
52 52
53#ifdef DESKTOP_VERSION 53#ifdef DESKTOP_VERSION
54#include <kabc/addresseedialog.h> 54#include <kabc/addresseedialog.h>
55#include <kabc/addresseeview.h> 55#include <kabc/addresseeview.h>
56#else //DESKTOP_VERSION 56#else //DESKTOP_VERSION
57#include <externalapphandler.h> 57#include <externalapphandler.h>
58#include <qtopia/qcopenvelope_qws.h> 58#include <qtopia/qcopenvelope_qws.h>
59#endif //DESKTOP_VERSION 59#endif //DESKTOP_VERSION
60 60
61KOEventViewer::KOEventViewer(QWidget *parent,const char *name) 61KOEventViewer::KOEventViewer(QWidget *parent,const char *name)
62 : QTextBrowser(parent,name) 62 : QTextBrowser(parent,name)
63{ 63{
64 mSyncMode = false; 64 mSyncMode = false;
65 mColorMode = 0; 65 mColorMode = 0;
66} 66}
67 67
68KOEventViewer::~KOEventViewer() 68KOEventViewer::~KOEventViewer()
69{ 69{
70} 70}
71 71
72void KOEventViewer::setSource(const QString& n) 72void KOEventViewer::setSource(const QString& n)
73{ 73{
74 74
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}