summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-02-24 11:19:48 (UTC)
committer zautrix <zautrix>2005-02-24 11:19:48 (UTC)
commitff8a2f593fae5ffe82f889ab70d32bf02a45f4fb (patch) (unidiff)
treeb3b4c6ee66b7ae39fad43622a2badacdbe9ed4e1
parent66ea8a0023a2a58e7887a41c265f2a7112b6b625 (diff)
downloadkdepimpi-ff8a2f593fae5ffe82f889ab70d32bf02a45f4fb.zip
kdepimpi-ff8a2f593fae5ffe82f889ab70d32bf02a45f4fb.tar.gz
kdepimpi-ff8a2f593fae5ffe82f889ab70d32bf02a45f4fb.tar.bz2
ompi html fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt3
-rw-r--r--kmicromail/viewmail.cpp23
-rw-r--r--kmicromail/viewmail.h2
3 files changed, 25 insertions, 3 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 0596511..86ac9b5 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,1006 +1,1009 @@
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.12 ************ 3********** VERSION 2.0.12 ************
4 4
5KO/Pi: 5KO/Pi:
6Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 6Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
7Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 7Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
8Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 8Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
9 9
10Fixed problem in pi-sync mode when wrong password was sent. 10Fixed problem in pi-sync mode when wrong password was sent.
11 11
12OM/Pi:
13Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
14Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
12 15
13********** VERSION 2.0.11 ************ 16********** VERSION 2.0.11 ************
14 17
15Fixed some problems in pi-sync mode 18Fixed some problems in pi-sync mode
16(e.g. details of events were not synced properly) 19(e.g. details of events were not synced properly)
17 20
18********** VERSION 2.0.10 ************ 21********** VERSION 2.0.10 ************
19 22
20KO/Pi: 23KO/Pi:
21In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 24In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
22This is fixed. 25This is fixed.
23Changed the search dialog a bit to make it more user friendly. 26Changed the search dialog a bit to make it more user friendly.
24(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 27(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
25 28
26Added config option to hide the week number in KO/Pi toolbar. 29Added config option to hide the week number in KO/Pi toolbar.
27 30
28********** VERSION 2.0.9 ************ 31********** VERSION 2.0.9 ************
29 32
30Made month view icons for multiday events a bit nicer. 33Made month view icons for multiday events a bit nicer.
31Some minor fixes in KO/Pi 34Some minor fixes in KO/Pi
32(e.g. go to today did not work for new week view properly). 35(e.g. go to today did not work for new week view properly).
33 36
34 37
35********** VERSION 2.0.8 ************ 38********** VERSION 2.0.8 ************
36 39
37Fixed a problem in dependency info in the ipk files for the Zaurus. 40Fixed a problem in dependency info in the ipk files for the Zaurus.
38 41
39Added 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. 42Added 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.
40 43
41Added a "go today" button to the datepicker. 44Added a "go today" button to the datepicker.
42 45
43Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 46Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
44and made it configureable to show these values. 47and made it configureable to show these values.
45 48
46Fixed a problem for events (from external iCal files) that do have a duration but no end date. 49Fixed a problem for events (from external iCal files) that do have a duration but no end date.
47 50
48 51
49********** VERSION 2.0.7 ************ 52********** VERSION 2.0.7 ************
50 53
51Added global application font settings 54Added global application font settings
52(for all KDE-Pim/Pi apps) to the general settings. 55(for all KDE-Pim/Pi apps) to the general settings.
53 56
54Fixed a problem in OM/Pi when trying to login to some IMAP servers 57Fixed a problem in OM/Pi when trying to login to some IMAP servers
55(like the IMAP server of Apple: mail.mac.com ) 58(like the IMAP server of Apple: mail.mac.com )
56 59
57Added recurring todos to KO/Pi. 60Added recurring todos to KO/Pi.
58 61
59 62
60********** VERSION 2.0.6 ************ 63********** VERSION 2.0.6 ************
61 64
62Some bugfixes in the pi-sync mode. 65Some bugfixes in the pi-sync mode.
63Added German translation for pi-sync mode. 66Added German translation for pi-sync mode.
64 67
65KO/Pi: 68KO/Pi:
66Made the todolist using alternate background. 69Made the todolist using alternate background.
67 70
68Other minor fixes in KO/Pi. 71Other minor fixes in KO/Pi.
69 72
70 73
71********** VERSION 2.0.5 ************ 74********** VERSION 2.0.5 ************
72 75
73Bugfixes in KO/Pi. 76Bugfixes in KO/Pi.
74 77
75********** VERSION 2.0.4 ************ 78********** VERSION 2.0.4 ************
76 79
77KO/Pi: 80KO/Pi:
78Fixed problem loading translations for summary/location edit boxes in event/todo editor. 81Fixed problem loading translations for summary/location edit boxes in event/todo editor.
79 82
80Added a general "select week number" to the toolbar. 83Added a general "select week number" to the toolbar.
81 84
82Fixed some small problem of the new features introduced in version 2.0.3. 85Fixed some small problem of the new features introduced in version 2.0.3.
83 86
84Made it possible to specify one specific category as category color, 87Made it possible to specify one specific category as category color,
85if more than one categories are selected. 88if more than one categories are selected.
86 89
87Fixed a bug in saving colors for categories with non-ascii characters. 90Fixed a bug in saving colors for categories with non-ascii characters.
88(Like, e.g. German Umlauts). 91(Like, e.g. German Umlauts).
89Propably you have to set your colors again for those categories. 92Propably you have to set your colors again for those categories.
90 93
91 94
92********** VERSION 2.0.3 ************ 95********** VERSION 2.0.3 ************
93 96
94KO/Pi: 97KO/Pi:
95Added feature for changing alarm settings for many items at once: 98Added feature for changing alarm settings for many items at once:
96Open list view (or search dialog), select the desired items and choose in 99Open list view (or search dialog), select the desired items and choose in
97the popup menu: Set alarm for selected... 100the popup menu: Set alarm for selected...
98 101
99Added to the event/todo viewer the option to send an email to 102Added to the event/todo viewer the option to send an email to
100all attendees or all selected (with RSVP) attendees. 103all attendees or all selected (with RSVP) attendees.
101 104
102Made the week-month mode changing in month view faster. 105Made the week-month mode changing in month view faster.
103 106
104Made month view better useable with keyboard. 107Made month view better useable with keyboard.
105Now TAB key jumps to next cell with an event/todo. 108Now TAB key jumps to next cell with an event/todo.
106Scroll in cell with coursor keys, scroll in time (next week) with 109Scroll in cell with coursor keys, scroll in time (next week) with
107Shift/Control + coursorkeys. 110Shift/Control + coursorkeys.
108 111
109Fixed bug that the todo view flat mode was reset after first view update. 112Fixed bug that the todo view flat mode was reset after first view update.
110 113
111If a todo is displayed closed in the todo view, 114If a todo is displayed closed in the todo view,
112it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. 115it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties.
113 116
114Added info about the numbers of years to the caption (title) information about a birthday event. 117Added info about the numbers of years to the caption (title) information about a birthday event.
115 118
116Made completion date in todo editor editable. 119Made completion date in todo editor editable.
117 120
118Added possibility to save/load templates for journals. 121Added possibility to save/load templates for journals.
119(Which is just a simple "save text to file" or "insert text from file". 122(Which is just a simple "save text to file" or "insert text from file".
120 123
121********** VERSION 2.0.2 ************ 124********** VERSION 2.0.2 ************
122 125
123KO/Pi: 126KO/Pi:
124Fixed the layout problem of the day label buttons 127Fixed the layout problem of the day label buttons
125of the agenda view introduced in version 2.0.1. 128of the agenda view introduced in version 2.0.1.
126 129
127Added WhatsThis support for the todo view and the list view. 130Added WhatsThis support for the todo view and the list view.
128 131
129Added a quite useful feature to the montview. 132Added a quite useful feature to the montview.
130Just click on the week numbers on the left. 133Just click on the week numbers on the left.
131And in the top right corner of month view/agenda view 134And in the top right corner of month view/agenda view
132there is now a "week number quick selector". 135there is now a "week number quick selector".
133(Click on the black triangle). 136(Click on the black triangle).
134 137
135Made the quite difficult timezone change in KO/Pi easy. 138Made the quite difficult timezone change in KO/Pi easy.
136 139
137OM/Pi: 140OM/Pi:
138Fixed too small icons on desktop. 141Fixed too small icons on desktop.
139Fixed non visible icons in mainwindow on Z with fastload enabled. 142Fixed non visible icons in mainwindow on Z with fastload enabled.
140Added signature file setting to smtp account config. 143Added signature file setting to smtp account config.
141And the signature can be edited and saved in the edit mail dialog. 144And the signature can be edited and saved in the edit mail dialog.
142That does mean: 145That does mean:
143Simply edit the signature for the selected smtp account in the 146Simply edit the signature for the selected smtp account in the
144edit new mail dialog and press the "save signature" button there. 147edit new mail dialog and press the "save signature" button there.
145Then the signature is saved to the file specified in the smtp account settings. 148Then the signature is saved to the file specified in the smtp account settings.
146If there is no file specified, it is saved automatically to the file 149If there is no file specified, it is saved automatically to the file
147kdepim/apps/kopiemail/<accountname>.sig. 150kdepim/apps/kopiemail/<accountname>.sig.
148 151
149 152
150 153
151********** VERSION 2.0.1 ************ 154********** VERSION 2.0.1 ************
152 155
153Oooops ... I forgot to test on the Zaurus 5500 ... 156Oooops ... I forgot to test on the Zaurus 5500 ...
154 157
155Fixed many problems of new (english) strings (and german translations) 158Fixed many problems of new (english) strings (and german translations)
156introduced in the latest versions, where the text was not fitting on the 159introduced in the latest versions, where the text was not fitting on the
157240x320 display of the Zaurus 5500. 160240x320 display of the Zaurus 5500.
158 161
159KO/Pi: 162KO/Pi:
160Added a popup menu ( press pen and hold to get popup ) to the agenda view 163Added a popup menu ( press pen and hold to get popup ) to the agenda view
161with many useful items (add event/todo, show next week, two weeks, month, journal). 164with many useful items (add event/todo, show next week, two weeks, month, journal).
162 165
163Added items to the todolist popup menu for: 166Added items to the todolist popup menu for:
164Display all opened, all closed or all todos flat. 167Display all opened, all closed or all todos flat.
165The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 168The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
166Made the reparenting of todos on the desktop possible via Drag&Drop. 169Made the reparenting of todos on the desktop possible via Drag&Drop.
167Fixed several bugs in setting the completed datetime for todos. 170Fixed several bugs in setting the completed datetime for todos.
168Added info about completed datetime of todos to the todo viewer. 171Added info about completed datetime of todos to the todo viewer.
169Now displaying a completed todo (with completed datetime set) in the agenda view 172Now displaying a completed todo (with completed datetime set) in the agenda view
170at the time of the completion. Such that now it is possible to see in the agenda view 173at the time of the completion. Such that now it is possible to see in the agenda view
171when what todo was completed. 174when what todo was completed.
172Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 175Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
173Now the behaviour is: 176Now the behaviour is:
174Setting a parent to complete sets all (sub)childs to complete. 177Setting a parent to complete sets all (sub)childs to complete.
175Setting a parent to uncomplete does not change the childs. 178Setting a parent to uncomplete does not change the childs.
176Setting a child to uncomplete sets all parent to uncomplete. 179Setting a child to uncomplete sets all parent to uncomplete.
177Setting a child to complete does not change the parents. 180Setting a child to complete does not change the parents.
178 181
179Smart updating and double buffering of the daymatrix. 182Smart updating and double buffering of the daymatrix.
180Showing holidays in the day matrix. 183Showing holidays in the day matrix.
181Many other small performance updates. 184Many other small performance updates.
182 185
183Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. 186Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
184 187
185Now the translation file usertranslation.txt is supposed to be in utf8 format. 188Now the translation file usertranslation.txt is supposed to be in utf8 format.
186If 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. 189If 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.
187 190
188 191
189********** VERSION 2.0.0 ************ 192********** VERSION 2.0.0 ************
190 193
191Stable release 2.0.0! 194Stable release 2.0.0!
192 195
193KO/Pi: 196KO/Pi:
194Fixed problem in edit dialog recreation at startup. 197Fixed problem in edit dialog recreation at startup.
195Made "toggle view*" menu items enabled context sensitive. 198Made "toggle view*" menu items enabled context sensitive.
196Changed agenda size menu to items 1-10. 199Changed agenda size menu to items 1-10.
197Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 200Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
198Usebility enhancements in the KO/Pi menus. 201Usebility enhancements in the KO/Pi menus.
199Birthday import now adds year to summary. 202Birthday import now adds year to summary.
200What's Next view shows age in years for birthday. 203What's Next view shows age in years for birthday.
201 204
202OM/Pi: 205OM/Pi:
203Added three info lines to display subject, from and to of selected mails. 206Added three info lines to display subject, from and to of selected mails.
204 207
205KA/Pi: 208KA/Pi:
206Fixed jump bar behaviour on Zaurus. 209Fixed jump bar behaviour on Zaurus.
207Now KA/Pi search field supports searching for a range of starting characters. 210Now KA/Pi search field supports searching for a range of starting characters.
208E.g. to search for all contact beginning with b to n, type 211E.g. to search for all contact beginning with b to n, type
209b-n 212b-n
210in the search field. 213in the search field.
211 214
212********** VERSION 1.9.20 ************ 215********** VERSION 1.9.20 ************
213 216
214KO/Pi: 217KO/Pi:
215Added for the "dislplay one day" agenda mode 218Added for the "dislplay one day" agenda mode
216info in the caption and in the day lables: 219info in the caption and in the day lables:
217Now it is displayed, if the selected day is from "day before yesterday" 220Now it is displayed, if the selected day is from "day before yesterday"
218to "day after tomorrow". 221to "day after tomorrow".
219Made it possible to delete a Todo, which has sub-todos. 222Made it possible to delete a Todo, which has sub-todos.
220Fixed two small problems in the todo view. 223Fixed two small problems in the todo view.
221Added missing German translation for filter edit and print dialog. 224Added missing German translation for filter edit and print dialog.
222Made search dialog closeable by cancel key. 225Made search dialog closeable by cancel key.
223 226
224Made it possible to select in the date picker the (ligt grey ) 227Made it possible to select in the date picker the (ligt grey )
225dates of the prev./next month with the mouse. 228dates of the prev./next month with the mouse.
226 229
227OM/Pi: 230OM/Pi:
228"Delete mail" icon in main window now deletes all selected mails. 231"Delete mail" icon in main window now deletes all selected mails.
229Fixed the problem, that the state flag of imap mails was ignored. 232Fixed the problem, that the state flag of imap mails was ignored.
230Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 233Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
231to indecate that they are already seen. 234to indecate that they are already seen.
232Fixed the problem that the body of some mails was not displayed in the 235Fixed the problem that the body of some mails was not displayed in the
233mail viewer when fetching them from the imap server directly to read them. 236mail viewer when fetching them from the imap server directly to read them.
234Made it (configurable) possible to show the "To:" field in the list view. 237Made it (configurable) possible to show the "To:" field in the list view.
235Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 238Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
236Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 239Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
237local storage folder (specified in account settings) of the account of the mail. 240local storage folder (specified in account settings) of the account of the mail.
238Removed some memory leaks in OM/Pi. 241Removed some memory leaks in OM/Pi.
239 242
240 243
241********** VERSION 1.9.19 ************ 244********** VERSION 1.9.19 ************
242 245
243Added a lot of missing translations to KA/Pi, 246Added a lot of missing translations to KA/Pi,
244Added some missing translations to KO/Pi and OM/Pi. 247Added some missing translations to KO/Pi and OM/Pi.
245 248
246Fixed some minor problems in KA/Pi + KO/Pi. 249Fixed some minor problems in KA/Pi + KO/Pi.
247 250
248Fixed a crash when closing PwM/Pi. 251Fixed a crash when closing PwM/Pi.
249Added German translation for PwM/Pi. 252Added German translation for PwM/Pi.
250 253
251Made view change and Month View update faster in KO/Pi. 254Made view change and Month View update faster in KO/Pi.
252 255
253 256
254********** VERSION 1.9.18 ************ 257********** VERSION 1.9.18 ************
255 258
256FYI: The VERSION 1.9.17 was a testing release only. 259FYI: The VERSION 1.9.17 was a testing release only.
257Please read the changelog of VERSION 1.9.17 as well. 260Please read the changelog of VERSION 1.9.17 as well.
258 261
259Cleaned up the syncing config dialog. 262Cleaned up the syncing config dialog.
260Added sync config options for date range for events. 263Added sync config options for date range for events.
261Added sync config options for filters on incoming data. 264Added sync config options for filters on incoming data.
262Added sync config options for filters on outgoing data. 265Added sync config options for filters on outgoing data.
263Please read the updated SyncHowTo about the new filter settings. 266Please read the updated SyncHowTo about the new filter settings.
264These filter settings make it now possible to sync with shared 267These filter settings make it now possible to sync with shared
265calendars without writing back private or confidential data 268calendars without writing back private or confidential data
266(via the outgoing filters). 269(via the outgoing filters).
267To sync only with particular parts of a shared calendar, 270To sync only with particular parts of a shared calendar,
268the incoming filter settings can be used. 271the incoming filter settings can be used.
269An example can be found in the SyncHowTo. 272An example can be found in the SyncHowTo.
270Same for shared addressbooks. 273Same for shared addressbooks.
271 274
272Added a setting for the global kdepim data storage. 275Added a setting for the global kdepim data storage.
273Usually the data is stored in (yourhomedir/kdepim). 276Usually the data is stored in (yourhomedir/kdepim).
274Now you can set in the Global config dialog TAB, subTAB "Data storage path" 277Now you can set in the Global config dialog TAB, subTAB "Data storage path"
275a directory where all the kdepim data is stored. 278a directory where all the kdepim data is stored.
276That makes it easy to save all kdepim data on a SD card on the Z, for example. 279That makes it easy to save all kdepim data on a SD card on the Z, for example.
277 280
278KO/Pi: 281KO/Pi:
279The timeedit input has a pulldown list for times. 282The timeedit input has a pulldown list for times.
280If opened, this pulldown list should now has the right time highlighted. 283If opened, this pulldown list should now has the right time highlighted.
281Added the possibility to exclude events/todos/journals in a filter. 284Added the possibility to exclude events/todos/journals in a filter.
282You should exclude journals, if you do not want them to sync with a public calendar. 285You should exclude journals, if you do not want them to sync with a public calendar.
283 286
284KA/Pi: 287KA/Pi:
285Added the possibility to in/exclude public/private/confidential contacts to a filter. 288Added the possibility to in/exclude public/private/confidential contacts to a filter.
286If 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 ... 289If 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 ...
287Added printing of card view and details view on desktop. 290Added printing of card view and details view on desktop.
288Printing of list view is not working... 291Printing of list view is not working...
289Added button for removing pictures in contact editor. 292Added button for removing pictures in contact editor.
290Parsing data fix of KA/Pi version 1.9.17. 293Parsing data fix of KA/Pi version 1.9.17.
291Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 294Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
292Fixed some syncing merging problems. 295Fixed some syncing merging problems.
293 296
294 297
295********** VERSION 1.9.17 ************ 298********** VERSION 1.9.17 ************
296 299
297KO/Pi: 300KO/Pi:
298Fixed that tooltips were not updated after moving an item in agenda view. 301Fixed that tooltips were not updated after moving an item in agenda view.
299Fixed a bug in sorting start date for recurring events in list view. 302Fixed a bug in sorting start date for recurring events in list view.
300Changed the left button in todo viewer from "Agenda" to "Set completed". 303Changed the left button in todo viewer from "Agenda" to "Set completed".
301This 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. 304This 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.
302Added more info in the todo viewer: Startdate, parent/sub todos. 305Added more info in the todo viewer: Startdate, parent/sub todos.
303 306
304 307
305KA/Pi: 308KA/Pi:
306All fields search does now actually search all the (possible) fields, 309All fields search does now actually search all the (possible) fields,
307not only those listed in the contact list. 310not only those listed in the contact list.
308Made is possible to inline a picture in a vcard on the Z. 311Made is possible to inline a picture in a vcard on the Z.
309This was only possible on the desktop, now is it possible on the Z as well. 312This was only possible on the desktop, now is it possible on the Z as well.
310Fixed of missing save settings after filter configuration. 313Fixed of missing save settings after filter configuration.
311Made saving of addressbook much faster. 314Made saving of addressbook much faster.
312Fixed extension widget layout problem. 315Fixed extension widget layout problem.
313Fixed saving of default formatted name settings. 316Fixed saving of default formatted name settings.
314Fixed formatted name handling in edit dialog. 317Fixed formatted name handling in edit dialog.
315Added an option for changing formatted names of many contacts 318Added an option for changing formatted names of many contacts
316(menu: File - Change - Set formatted name). 319(menu: File - Change - Set formatted name).
317 320
318QWhatsThis was not working on the Z ( only black rectangle was shown). 321QWhatsThis was not working on the Z ( only black rectangle was shown).
319This is Fixed. 322This is Fixed.
320 323
321KDE-Sync: 324KDE-Sync:
322Now readonly KDE resources are synced as well. 325Now readonly KDE resources are synced as well.
323(They are not changed in KDE itself, of course). 326(They are not changed in KDE itself, of course).
324 327
325 328
326 329
327********** VERSION 1.9.16 ************ 330********** VERSION 1.9.16 ************
328 331
329KO/Pi: 332KO/Pi:
330Fixed search dialog size on Z 6000 (480x640 display). 333Fixed search dialog size on Z 6000 (480x640 display).
331Added setting to hide/show time in agenda items. 334Added setting to hide/show time in agenda items.
332Added setting to hide not running todos in todo view. 335Added setting to hide not running todos in todo view.
333Added columns for start date/time in todo view. 336Added columns for start date/time in todo view.
334Replaced the solid half-hour lines in agenda view by dot lines. 337Replaced the solid half-hour lines in agenda view by dot lines.
335Added possibility of printing the What's Next View on the desktop 338Added possibility of printing the What's Next View on the desktop
336(i.e. Windows and Linux). 339(i.e. Windows and Linux).
337Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 340Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
338Added tooltips in month view.(Tooltips only available on desktop) 341Added tooltips in month view.(Tooltips only available on desktop)
339 342
340Fixed a strange problem in KO/Pi alarm applet. 343Fixed a strange problem in KO/Pi alarm applet.
341Did not find the actual problem, 344Did not find the actual problem,
342such that now Qtopia reboots again if deinstalling the alarm applet. 345such that now Qtopia reboots again if deinstalling the alarm applet.
343But the alarm applet should work again. 346But the alarm applet should work again.
344 347
345KA/Pi: 348KA/Pi:
346Fixed the problem, that internal pictures were not saved. 349Fixed the problem, that internal pictures were not saved.
347 350
348Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 351Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
349 352
350Fixed some minor problems. (Like word wrap in help text windows). 353Fixed some minor problems. (Like word wrap in help text windows).
351 354
352Fixed a compiling problem in microkde/kresources. 355Fixed a compiling problem in microkde/kresources.
353 356
354KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 357KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
355This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 358This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
356such that now syncing KO/Pi with Sharp DTM should work on the 359such that now syncing KO/Pi with Sharp DTM should work on the
357Zaurus C 3000 model. 360Zaurus C 3000 model.
358 361
359********** VERSION 1.9.15 ************ 362********** VERSION 1.9.15 ************
360 363
361Usebilty enhancements in KO/Pi: 364Usebilty enhancements in KO/Pi:
362When clicking on the date in a month view cell, the day view is shown. 365When clicking on the date in a month view cell, the day view is shown.
363Old behaviour was, that the "new event" dialog popped up. 366Old behaviour was, that the "new event" dialog popped up.
364 367
365Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 368Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
366That means, you can restore the latest 369That means, you can restore the latest
367event/todo/journal you have deleted. 370event/todo/journal you have deleted.
368A journal is deleted, if you clear all the text of the journal. 371A journal is deleted, if you clear all the text of the journal.
369 372
370Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 373Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
371 374
372KA/Pi starting in 480x640 resolution: 375KA/Pi starting in 480x640 resolution:
373Hide the filter action in toolbar 376Hide the filter action in toolbar
374and added icons for undo/delete/redo in toolbar. 377and added icons for undo/delete/redo in toolbar.
375 378
376Change in OM/Pi ViewMail dialog: 379Change in OM/Pi ViewMail dialog:
377When clicking on the "delete" icon the mail is deleted after confirmation as usual. 380When clicking on the "delete" icon the mail is deleted after confirmation as usual.
378But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 381But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
379 382
380Fixed a crash when deleting mail-accounts in OM/Pi. 383Fixed a crash when deleting mail-accounts in OM/Pi.
381 384
382 385
383********** VERSION 1.9.14 ************ 386********** VERSION 1.9.14 ************
384 387
385Fixed some problems with the dialog sizes when switching 388Fixed some problems with the dialog sizes when switching
386portrait/landscape mode on 640x480 PDA display. 389portrait/landscape mode on 640x480 PDA display.
387 390
388Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 391Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
389 392
390Fixed an ugly bug in KOpieMail: 393Fixed an ugly bug in KOpieMail:
391KOpieMail was not able to write files (mails) to MSDOS file system, 394KOpieMail was not able to write files (mails) to MSDOS file system,
392like on an usual preformatted SD card. That should work now. 395like on an usual preformatted SD card. That should work now.
393To save your mail data on the Sd card do the following: 396To save your mail data on the Sd card do the following:
394Create a dir on the SD card: 397Create a dir on the SD card:
395mkdir /mnt/card/localmail 398mkdir /mnt/card/localmail
396Go to your home dir: 399Go to your home dir:
397cd 400cd
398Go to kopiemail data storage dir: 401Go to kopiemail data storage dir:
399cd kdepim/apps/kopiemail 402cd kdepim/apps/kopiemail
400Create a symlink to the SD card: 403Create a symlink to the SD card:
401ls -s /mnt/card/localmail 404ls -s /mnt/card/localmail
402Now KOpieMail will store all mails on the SD card. 405Now KOpieMail will store all mails on the SD card.
403 406
404KO/Pi Monthview: 407KO/Pi Monthview:
405Now "Go to Today" selects the current month from day 1-end, 408Now "Go to Today" selects the current month from day 1-end,
406not the current date + some days. 409not the current date + some days.
407I.e. "Go to Today" shows now always 410I.e. "Go to Today" shows now always
408the current month with first day of month in the first row. 411the current month with first day of month in the first row.
409 412
410Added missing German translation. 413Added missing German translation.
411 414
412Fixed icons of executeable on Wintendo. 415Fixed icons of executeable on Wintendo.
413 416
414Added a "Show next Mail" button to the OM/Pi 417Added a "Show next Mail" button to the OM/Pi
415mail viewer such that the mail below the current mail 418mail viewer such that the mail below the current mail
416in the mail list view of the current folder 419in the mail list view of the current folder
417can be read with a single click. 420can be read with a single click.
418 421
419 422
420********** VERSION 1.9.13 ************ 423********** VERSION 1.9.13 ************
421 424
422Fixed nasty PwM/Pi file reading bug, when 425Fixed nasty PwM/Pi file reading bug, when
423the used hash algo of file is different then the global 426the used hash algo of file is different then the global
424hash algo. 427hash algo.
425 428
426Added KA/Pi support for opie mailit mailapplication. 429Added KA/Pi support for opie mailit mailapplication.
427 430
428Fixed some bugs in OM/Pi. 431Fixed some bugs in OM/Pi.
429Now character conversion tables are available for the Zaurus 432Now character conversion tables are available for the Zaurus
430to make OM/Pi working properly. 433to make OM/Pi working properly.
431To get the character conversion in OM/Pi working, please download 434To get the character conversion in OM/Pi working, please download
432at the sourceforge project site the package 435at the sourceforge project site the package
433sr-character-conversion_SharpROM_arm.ipk.zip 436sr-character-conversion_SharpROM_arm.ipk.zip
434(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 437(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
435from the section "general files for KDE/Pim" 438from the section "general files for KDE/Pim"
436Instructions how to install this package are in a ReadMe in this file. 439Instructions how to install this package are in a ReadMe in this file.
437 440
438 441
439Fixed the orientation change problem in KA/Pi when switching 442Fixed the orientation change problem in KA/Pi when switching
440portrait/landscape mode. 443portrait/landscape mode.
441 444
442French translation available for KA/Pi and OM/Pi. 445French translation available for KA/Pi and OM/Pi.
443 446
444Fixed some problems with categories in KO/Pi in DTM sync. 447Fixed some problems with categories in KO/Pi in DTM sync.
445 448
446Added selection dialog for export to phone in KA/Pi. 449Added selection dialog for export to phone in KA/Pi.
447 450
448If in KO/Pi is an attendee selected to add to a meeting and this 451If in KO/Pi is an attendee selected to add to a meeting and this
449attendee is already in the list of attendees, this person is not added 452attendee is already in the list of attendees, this person is not added
450again. 453again.
451 454
452Some menu cleanup in KA/Pi. 455Some menu cleanup in KA/Pi.
453 456
454********** VERSION 1.9.12 ************ 457********** VERSION 1.9.12 ************
455 458
456Fix for the bug in KO/Pi What's Next view of version 1.9.11. 459Fix for the bug in KO/Pi What's Next view of version 1.9.11.
457 460
458Bugfix: Licence file is now shown again. 461Bugfix: Licence file is now shown again.
459 462
460OM/Pi now supports Unicode (utf8 charset). 463OM/Pi now supports Unicode (utf8 charset).
461Fixed some bugs in OM/Pi. 464Fixed some bugs in OM/Pi.
462 465
463KA/Pi has more German translation. 466KA/Pi has more German translation.
464 467
465 468
466********** VERSION 1.9.11 ************ 469********** VERSION 1.9.11 ************
467 470
468Fixed several problems in PWM/Pi, like 471Fixed several problems in PWM/Pi, like
469asking the user, if unsaved changed are pending 472asking the user, if unsaved changed are pending
470when closing the app. 473when closing the app.
471And PwM/Pi handles now different texts for the 474And PwM/Pi handles now different texts for the
472fields Description, Username, Password, configurable per category. 475fields Description, Username, Password, configurable per category.
473 476
474Fixed a crash in KO/Pi , when importing/loading vcs files 477Fixed a crash in KO/Pi , when importing/loading vcs files
475which have an entry with an attendee with state: 478which have an entry with an attendee with state:
476NEEDS ACTION 479NEEDS ACTION
477 480
478Fixed some problems in the German translation of OM/Pi, 481Fixed some problems in the German translation of OM/Pi,
479which makes some dialogs not fitting on the screen 482which makes some dialogs not fitting on the screen
480of the Z 5500. 483of the Z 5500.
481 484
482Fixed Qtopia crash, when disabling/deinstalling 485Fixed Qtopia crash, when disabling/deinstalling
483KO/Pi alarm applet. 486KO/Pi alarm applet.
484 487
485Implemented direct KDE<->KA/Pi sync for KA/Pi running 488Implemented direct KDE<->KA/Pi sync for KA/Pi running
486on Linux desktop. 489on Linux desktop.
487 490
488Added feature "remove sync info" to sync menu. 491Added feature "remove sync info" to sync menu.
489 492
490Tweaked the KO/Pi What's next view a bit, added 493Tweaked the KO/Pi What's next view a bit, added
491setting to hide events that are done. 494setting to hide events that are done.
492 495
493Disabled "beam receive enabled" on startup to 496Disabled "beam receive enabled" on startup to
494avoid problems if Fastload is enabled. 497avoid problems if Fastload is enabled.
495Please set "beam receive enabled", 498Please set "beam receive enabled",
496if you want to receive data via IR. 499if you want to receive data via IR.
497 500
498Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 501Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
499on Linux desktop. 502on Linux desktop.
500 503
501Made in KA/Pi scrolling possible, if details view is selected. 504Made in KA/Pi scrolling possible, if details view is selected.
502(The keyboard focus is set automatically to the search line) 505(The keyboard focus is set automatically to the search line)
503 506
504Fixed a bug in DMT sync, that a new entry in DTM was added 507Fixed a bug in DMT sync, that a new entry in DTM was added
505on every sync to Kx/Pi. 508on every sync to Kx/Pi.
506 509
507Fixed missing writing of KA/Pi categories to DMT entries when syncing. 510Fixed missing writing of KA/Pi categories to DMT entries when syncing.
508 511
509Fixed a bug in DMT sync with todos created in KO/Pi containing 512Fixed a bug in DMT sync with todos created in KO/Pi containing
510non-latin1 characters. 513non-latin1 characters.
511 514
512Rearranged package contents of Sharp-ipks and made all 515Rearranged package contents of Sharp-ipks and made all
513packages installable on SD again. 516packages installable on SD again.
514 517
515Fixed the writing of addressbook data in DTM sync. 518Fixed the writing of addressbook data in DTM sync.
516Empty fields in KA/Pi were not removed. 519Empty fields in KA/Pi were not removed.
517 520
518Added better category handling in KA/Pi: 521Added better category handling in KA/Pi:
519Added item 522Added item
520Edit Categories and 523Edit Categories and
521Manage new categories 524Manage new categories
522to the settings menu. 525to the settings menu.
523Possible to configure a view to display categories. 526Possible to configure a view to display categories.
524 527
525Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 528Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
526 529
527Fixed displaying of "free" days and time in KO Monthview and Agendaview. 530Fixed displaying of "free" days and time in KO Monthview and Agendaview.
528 531
529... and many other bugfixes. 532... and many other bugfixes.
530 533
531********** VERSION 1.9.10 ************ 534********** VERSION 1.9.10 ************
532 535
533Many internal small bugfixes. 536Many internal small bugfixes.
534And fix of the "big" bug in KO/Pi, 537And fix of the "big" bug in KO/Pi,
535that after Syncing the appointments had an offset by several hours. 538that after Syncing the appointments had an offset by several hours.
536That was a problem with the internal timezone setting, 539That was a problem with the internal timezone setting,
537introduced by the changed timezone configuration settings. 540introduced by the changed timezone configuration settings.
538 541
539German translation for OM/Pi is now available. 542German translation for OM/Pi is now available.
540 543
541 544
542********** VERSION 1.9.9 ************ 545********** VERSION 1.9.9 ************
543 546
544KDE-Pim/Pi has a new Member! 547KDE-Pim/Pi has a new Member!
545It is called PWM/Pi (Passwordmanager/platform-independent) 548It is called PWM/Pi (Passwordmanager/platform-independent)
546and it is available for the Zaurus. 549and it is available for the Zaurus.
547It is planned, that it will be available later for Windows. 550It is planned, that it will be available later for Windows.
548(And for Linux, of course). 551(And for Linux, of course).
549It is a port of the Passwordmanager of KDE. 552It is a port of the Passwordmanager of KDE.
550It will need the MicroKDElibs to run. 553It will need the MicroKDElibs to run.
551 554
552Made loading of addressbooks in KA/Pi up to 7 times faster! 555Made loading of addressbooks in KA/Pi up to 7 times faster!
553The bigger your addressbook file, the more starting speed 556The bigger your addressbook file, the more starting speed
554will you gain. (relatively) 557will you gain. (relatively)
555 558
556The Qtopia addressbook connector is now platform independend 559The Qtopia addressbook connector is now platform independend
557as well and should work on any platform for importing/exporting 560as well and should work on any platform for importing/exporting
558Qtopia and Opie XML files. 561Qtopia and Opie XML files.
559 562
560Added a +30min feature to the timezone settings to make 563Added a +30min feature to the timezone settings to make
561KDE-Pim/Pi useable in Australia and other parts on the 564KDE-Pim/Pi useable in Australia and other parts on the
562world with strange timezones ;-) 565world with strange timezones ;-)
563 566
564German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 567German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
565 568
566It is now possible to disable the 569It is now possible to disable the
567"receive data via infrared" feature, such that syncing with 570"receive data via infrared" feature, such that syncing with
568Outlook is now possible again with Kx/Pi runing. 571Outlook is now possible again with Kx/Pi runing.
569Please disable it, before syncing Sharp DTM with Outlook. 572Please disable it, before syncing Sharp DTM with Outlook.
570For your convenience, the "receive data via infrared" feature 573For your convenience, the "receive data via infrared" feature
571is disabled automatically, if you sync Kx/Pi with DTM. 574is disabled automatically, if you sync Kx/Pi with DTM.
572You have to enable it again manually after syncing. 575You have to enable it again manually after syncing.
573Enabling this feature makes it impossible to start the 576Enabling this feature makes it impossible to start the
574Sharp DTM apps. If this feature is enabled, you will only get the 577Sharp DTM apps. If this feature is enabled, you will only get the
575alarm notification from KO/Pi and not from the Sharp calendar. 578alarm notification from KO/Pi and not from the Sharp calendar.
576This is very useful if you sync KO/Pi with Sharp DTM, 579This is very useful if you sync KO/Pi with Sharp DTM,
577because after syncing you usually would get notified about 580because after syncing you usually would get notified about
578an alarm by KO/Pi and the Sharp Calendar. 581an alarm by KO/Pi and the Sharp Calendar.
579 582
580Together with the Linux desktop version of KO/Pi 583Together with the Linux desktop version of KO/Pi
581it is now possible to sync KO/Pi on the Zaurus 584it is now possible to sync KO/Pi on the Zaurus
582with the complete KDE-desktop (3.3 or later) 585with the complete KDE-desktop (3.3 or later)
583calendar data easily. 586calendar data easily.
584That makes it possible to sync the Z with one 587That makes it possible to sync the Z with one
585click of a mouse with the KDE-Desktop. 588click of a mouse with the KDE-Desktop.
586This feature it available for all Zaurus platforms KO/Pi 589This feature it available for all Zaurus platforms KO/Pi
587is running on. 590is running on.
588The only thing needed is a running KO/Pi on Linux and 591The only thing needed is a running KO/Pi on Linux and
589a compiled version of the small 592a compiled version of the small
590KDE-Pim/Pi<->KDE-Desktop access command line program, 593KDE-Pim/Pi<->KDE-Desktop access command line program,
591which is in the KDE-Pim/Pi sources available. 594which is in the KDE-Pim/Pi sources available.
592 595
593The "KDE-desktop" syncing feature for KA/Pi will follow 596The "KDE-desktop" syncing feature for KA/Pi will follow
594in the next releases. 597in the next releases.
595 598
596Fixed the vcard export bug, which had the version 1.9.8. 599Fixed the vcard export bug, which had the version 1.9.8.
597 600
598Added missing GERMAN translation to KO/Pi. 601Added missing GERMAN translation to KO/Pi.
599Hi PsionX, could you add the missing french translation?Thx! 602Hi PsionX, could you add the missing french translation?Thx!
600 603
601Translation files for KA/Pi are available as well. 604Translation files for KA/Pi are available as well.
602GERMAN translation will be available in the next release. 605GERMAN translation will be available in the next release.
603PsionX ( yres, you again ;-) ), could you start translating 606PsionX ( yres, you again ;-) ), could you start translating
604KA/Pi? Thx! 607KA/Pi? Thx!
605 608
606You can download the version 1.9.9 at 609You can download the version 1.9.9 at
607 610
608http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 611http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
609 612
610Note: 613Note:
611To run the mail program OM/Pi you need libopenssl. 614To run the mail program OM/Pi you need libopenssl.
612A link to a download loaction is available at 615A link to a download loaction is available at
613ZSI at www.killefiz.de 616ZSI at www.killefiz.de
614 617
615 618
616********** VERSION 1.9.8 ************ 619********** VERSION 1.9.8 ************
617 620
618Fixed character decoding in OM/Pi. 621Fixed character decoding in OM/Pi.
619(e.g. German "Umlaute" were not displayed properly.) 622(e.g. German "Umlaute" were not displayed properly.)
620 623
621Made is possible to reparent todos in KO/Pi. 624Made is possible to reparent todos in KO/Pi.
622Use contextmenu or keys (look at Help-Keys + Colors) for that. 625Use contextmenu or keys (look at Help-Keys + Colors) for that.
623 626
624Added the missing Sync-Howto and WhatsNew to the packages. 627Added the missing Sync-Howto and WhatsNew to the packages.
625 628
626KO/Pi on Linux desktop can now sync with KDE desktop. 629KO/Pi on Linux desktop can now sync with KDE desktop.
627That means: When using KO/Pi on Linux desktop for syncing with 630That means: When using KO/Pi on Linux desktop for syncing with
628KDE desktop and the Zaurus, the Zaurus can be synced now 631KDE desktop and the Zaurus, the Zaurus can be synced now
629with all KDE-Calendar resources, not only with one local file. 632with all KDE-Calendar resources, not only with one local file.
630(That makes it possible to sync the Zaurus with the 633(That makes it possible to sync the Zaurus with the
631calendar data on a Kolab server) 634calendar data on a Kolab server)
632 635
633KA/Pi syncing with KDE desktop will be available in the next version. 636KA/Pi syncing with KDE desktop will be available in the next version.
634 637
635 638
636********** VERSION 1.9.7 ************ 639********** VERSION 1.9.7 ************
637 640
638KO/Pi - KA/Pi on Windows: 641KO/Pi - KA/Pi on Windows:
639Now a directory can be defined by the user, where the 642Now a directory can be defined by the user, where the
640application/config data should be saved. 643application/config data should be saved.
641 Define your desired path in the evironment variable 644 Define your desired path in the evironment variable
642 MICROKDEHOME 645 MICROKDEHOME
643 before starting KO/Pi or KA/Pi. 646 before starting KO/Pi or KA/Pi.
644 647
645An easy Kx/Pi to Kx/Pi syncing is now possible 648An easy Kx/Pi to Kx/Pi syncing is now possible
646(it is called Pi-Sync) via network. 649(it is called Pi-Sync) via network.
647Please look at the Sync Howto. 650Please look at the Sync Howto.
648 651
649Exporting of calendar data and contacts to mobile phones is now possible. 652Exporting of calendar data and contacts to mobile phones is now possible.
650The SyncHowto is updated with information howto 653The SyncHowto is updated with information howto
651access/sync mobile phones. 654access/sync mobile phones.
652Please look at the Sync Howto. 655Please look at the Sync Howto.
653 656
654Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 657Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
655Please disable Fastload for the original contact/calendar applications 658Please disable Fastload for the original contact/calendar applications
656and close them. 659and close them.
657KO/Pi and KA/Pi must be running in order to receive the data. 660KO/Pi and KA/Pi must be running in order to receive the data.
658(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 661(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
659 662
660In the KA/Pi details view are now the preferred tel. numbers displayed on top 663In the KA/Pi details view are now the preferred tel. numbers displayed on top
661of the other data ( emails/tel.numbers/addresses) 664of the other data ( emails/tel.numbers/addresses)
662 665
663Fixed some syncing problems in KA/Pi. 666Fixed some syncing problems in KA/Pi.
664 667
665Added font settings for the KA/Pi details view. 668Added font settings for the KA/Pi details view.
666Added fields "children's name" and "gender" to KA/Pi. 669Added fields "children's name" and "gender" to KA/Pi.
667 670
668Made searching in KA/Pi better: 671Made searching in KA/Pi better:
669Now the first item in a view is selected after a search automatically and 672Now the first item in a view is selected after a search automatically and
670the views can be scrolled up/down when the search input field has the keyboard focus. 673the views can be scrolled up/down when the search input field has the keyboard focus.
671 674
672And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 675And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
673 676
674 677
675********** VERSION 1.9.6 ************ 678********** VERSION 1.9.6 ************
676 679
677Changes in the external application communication on the Zaurus 680Changes in the external application communication on the Zaurus
678in order to use less RAM when the apps are running. 681in order to use less RAM when the apps are running.
679First syncing of addressbooks (KA/Pi) is possible. 682First syncing of addressbooks (KA/Pi) is possible.
680 683
681 684
682********** VERSION 1.9.5a ************ 685********** VERSION 1.9.5a ************
683 686
684Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 687Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
685Fixed some small bugs. 688Fixed some small bugs.
686KA/Pi shows now the birthday in summary view. 689KA/Pi shows now the birthday in summary view.
687Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 690Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
688for displaying dates. 691for displaying dates.
689 692
690 693
691********** VERSION 1.9.5 ************ 694********** VERSION 1.9.5 ************
692 695
693There is still no Addressbook syncing! 696There is still no Addressbook syncing!
694 697
695New in 1.9.5: 698New in 1.9.5:
696 699
697Many bugfixes. 700Many bugfixes.
698Better searching in KA/Pi. 701Better searching in KA/Pi.
699You can configure in KA/Pi if you want to search only after 702You can configure in KA/Pi if you want to search only after
700<return> key pressed. 703<return> key pressed.
701 704
702Better mail downloading in OM/Pi. 705Better mail downloading in OM/Pi.
703 706
704First experimental alpha version of sync of KO/Pi with mobile phones. 707First experimental alpha version of sync of KO/Pi with mobile phones.
705See gammu documentation for supported phones. 708See gammu documentation for supported phones.
706You 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. 709You 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.
707Quick hint how to use: 710Quick hint how to use:
708NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 711NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
709Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 712Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
710Create syncprofile - mobile device 713Create syncprofile - mobile device
711Remove entry for model. (Leave empty ). 714Remove entry for model. (Leave empty ).
712Enable infrared on Zaurus and your Phone. 715Enable infrared on Zaurus and your Phone.
713Sync. 716Sync.
714To get a more detailed log, start kopi from konsole. 717To get a more detailed log, start kopi from konsole.
715 718
716********** VERSION 1.9.4 ************ 719********** VERSION 1.9.4 ************
717 720
718This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 721This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
719 722
720WARNING: 723WARNING:
721PLEASE BACKUP ALL YOUR DATA! 724PLEASE BACKUP ALL YOUR DATA!
722We have changed a lot and maybe there are some unknown problems. 725We have changed a lot and maybe there are some unknown problems.
723 726
724SYNC HANDLING HAS CHANGED! 727SYNC HANDLING HAS CHANGED!
725Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 728Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
726(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 729(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
727 730
728You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 731You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
729If 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. 732If 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.
730 733
731As programs are available: 734As programs are available:
732KO/Pi (korganizer ipk) - a calendar program. 735KO/Pi (korganizer ipk) - a calendar program.
733KA/Pi (kaddressbook ipk ) - an addressbook 736KA/Pi (kaddressbook ipk ) - an addressbook
734OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 737OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
735 738
736An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 739An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
737(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 740(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
738 741
739All the applications are installed in a "Pim" TAB. 742All the applications are installed in a "Pim" TAB.
740If 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 743If 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
741 744
742All the application are integrated. 745All the application are integrated.
743Such 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. 746Such 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.
744 747
745HINT: 748HINT:
746If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 749If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
747 750
748What's new? 751What's new?
749 752
750SYNC HANDLING HAS CHANGED! 753SYNC HANDLING HAS CHANGED!
751Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 754Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
752(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 755(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
753 756
754New in OM/Pi: 757New in OM/Pi:
755When 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. 758When 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.
756 759
757New in KO/Pi: 760New in KO/Pi:
758French is now available for KO/Pi. 761French is now available for KO/Pi.
759Choose menu:Actions - Configure:TAB locale 762Choose menu:Actions - Configure:TAB locale
760Syncing has changed. 763Syncing has changed.
761Phone sync available soon. 764Phone sync available soon.
762Not much changes, I cannot remember them ... 765Not much changes, I cannot remember them ...
763 766
764New in KA/Pi: 767New in KA/Pi:
765Beaming possible. 768Beaming possible.
766Sharp DTM readonly access possible( create a new DTM resource ); 769Sharp DTM readonly access possible( create a new DTM resource );
767Better searching possible. 770Better searching possible.
768Search is performed only after pressing the return key. 771Search is performed only after pressing the return key.
769Use wildcard * to specify parts of a name. 772Use wildcard * to specify parts of a name.
770 773
771Better 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 * . 774Better 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 * .
772 775
773A big improvement is the new management of the contact access. 776A big improvement is the new management of the contact access.
774In version 1.9.3, every application was using their own addressbook access data. 777In version 1.9.3, every application was using their own addressbook access data.
775That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi. 778That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi.
776That was wasting of memory, if you had several hundreds of contacts. 779That was wasting of memory, if you had several hundreds of contacts.
777 780
778Now only KA/Pi accesses the addressbook. 781Now only KA/Pi accesses the addressbook.
779If 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. 782If 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.
780If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly. 783If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly.
781That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first. 784That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first.
782 785
783New in the KO/Pi alarm applet: 786New in the KO/Pi alarm applet:
784Configure your own timer popup menu! 787Configure your own timer popup menu!
785(Text and minutes for timer countdown) 788(Text and minutes for timer countdown)
786Just edit the file 789Just edit the file
787(yourhomedir)/.kopialarmtimerrc 790(yourhomedir)/.kopialarmtimerrc
788and start/stop a timer to get a new menu with the data of this file. 791and start/stop a timer to get a new menu with the data of this file.
789 792
790********** VERSION 1.9.3 ************ 793********** VERSION 1.9.3 ************
7911) 7941)
792Now KO/Pi on Windows imports directly the calendar data of 795Now KO/Pi on Windows imports directly the calendar data of
793an installed Outlook. Should work with OL version >= 2000. 796an installed Outlook. Should work with OL version >= 2000.
794 797
795********** VERSION 1.9.2 ************ 798********** VERSION 1.9.2 ************
7961) 7991)
797KDE-Pim/Pi has got a new member: 800KDE-Pim/Pi has got a new member:
798KmicroMail (KM/Pi) is a mail program, 801KmicroMail (KM/Pi) is a mail program,
799which can handle IMAP and POP mail access. 802which can handle IMAP and POP mail access.
800It is based on Opie-Mail v3. 803It is based on Opie-Mail v3.
801All dependencies to the Opie libraries ar removed, 804All dependencies to the Opie libraries ar removed,
802such that no additional Opie lib is needed. 805such that no additional Opie lib is needed.
803It is already integrated in KO/Pi and KA/Pi. 806It is already integrated in KO/Pi and KA/Pi.
804It it now available for the Zaurus,probably it 807It it now available for the Zaurus,probably it
805will be available for other platforms later. 808will be available for other platforms later.
806Hint: 809Hint:
807Create your own contact (name + email) 810Create your own contact (name + email)
808in KA/Pi, select this contact and choose menu: 811in KA/Pi, select this contact and choose menu:
809Settings - Set Who Am I. 812Settings - Set Who Am I.
810Now the settings of this contact are used as 813Now the settings of this contact are used as
811the sender data in KM/Pi. 814the sender data in KM/Pi.
8122) 8152)
813KDE-Pim/Pi is split up in five different 816KDE-Pim/Pi is split up in five different
814packages now precompiled for Sharp Zaurus: 817packages now precompiled for Sharp Zaurus:
815--kmicrokdelibs_1.9.2_arm.ipk 818--kmicrokdelibs_1.9.2_arm.ipk
816The libs are needed for any 819The libs are needed for any
817of the following programs: 820of the following programs:
818--kaddressbook_1.9.2_arm.ipk 821--kaddressbook_1.9.2_arm.ipk
819--kmicromail_1.9.2_arm.ipk 822--kmicromail_1.9.2_arm.ipk
820--korganizer_1.9.2_arm.ipk 823--korganizer_1.9.2_arm.ipk
821Independ from that, there is the alarm applet 824Independ from that, there is the alarm applet
822available for KO/Pi, which also offers 825available for KO/Pi, which also offers
823quick access for a new mail or 826quick access for a new mail or
824showing the addressbook.: 827showing the addressbook.:
825--korganizer-alarm_1.9.2_arm.ipk 828--korganizer-alarm_1.9.2_arm.ipk
826Independend means, that the alarm applet 829Independend means, that the alarm applet
827does not need any of the libs or programs above to run. 830does not need any of the libs or programs above to run.
828But it would be quite useless without these programs. 831But it would be quite useless without these programs.
829NOTE: 832NOTE:
830If you get a 833If you get a
831"This application depends on other programs" 834"This application depends on other programs"
832during installation of 835during installation of
833--kmicrokdelibs_1.9.2_arm.ipk 836--kmicrokdelibs_1.9.2_arm.ipk
834you probably do not have to care about that. 837you probably do not have to care about that.
835kmicrokdelibs_1.9.2 will come with some 838kmicrokdelibs_1.9.2 will come with some
836resource plugins, which needs additional libraries. 839resource plugins, which needs additional libraries.
837(E.g. libopie1, if you want to use the 840(E.g. libopie1, if you want to use the
838opie resource connector in KA/Pi). 841opie resource connector in KA/Pi).
839If you do not have this libraries installed, 842If you do not have this libraries installed,
840you simply cannot use the resource. 843you simply cannot use the resource.
841To make it clear: 844To make it clear:
842If the libraries are missing, the applications 845If the libraries are missing, the applications
843using kmicrokdelibs will start, 846using kmicrokdelibs will start,
844because the resources are plugins. 847because the resources are plugins.
8453) 8483)
846KO/Pi and friends are now installable on SD-Card! 849KO/Pi and friends are now installable on SD-Card!
847It is recommended to install all libs and apps 850It is recommended to install all libs and apps
848on the SD card or all in the internal storage. 851on the SD card or all in the internal storage.
849There may be problems, if this is mixed. 852There may be problems, if this is mixed.
8504) 8534)
851Fixed two bugs in the alarm notification on Windows. 854Fixed two bugs in the alarm notification on Windows.
8525) 8555)
853Great improvement! 856Great improvement!
854KO/Pi uses now the latest version of libical. 857KO/Pi uses now the latest version of libical.
855Libical is the library which actually reads 858Libical is the library which actually reads
856the calendar files and extract the data from it. 859the calendar files and extract the data from it.
857With the old version, there were problems 860With the old version, there were problems
858(crashes or program hangs) when licical did read 861(crashes or program hangs) when licical did read
859files, which were not stored from KO/Pi. 862files, which were not stored from KO/Pi.
860I do not know, if the new libical works perfect, 863I do not know, if the new libical works perfect,
861but actually it works much better than 864but actually it works much better than
862the old version. 865the old version.
863There are no problems with compatibility with 866There are no problems with compatibility with
864old calendar files of KO/Pi, of course! 867old calendar files of KO/Pi, of course!
8656) 8686)
866New in KA/Pi: 869New in KA/Pi:
867Opie addressbook resource connector available! 870Opie addressbook resource connector available!
868You will need libopie1 and the opie addressbook, 871You will need libopie1 and the opie addressbook,
869of course. 872of course.
870With the Opie addressbook resource connector, 873With the Opie addressbook resource connector,
871you can access the Opie addressbook readonly in KA/Pi. 874you can access the Opie addressbook readonly in KA/Pi.
872If you want to edit or import the data into KA/Pi, 875If you want to edit or import the data into KA/Pi,
873do this: 876do this:
874a) Create an Opie resource. 877a) Create an Opie resource.
875 (Menu: Settings-Configure Resources). 878 (Menu: Settings-Configure Resources).
876After configuration and restarting KA/Pi you should see 879After configuration and restarting KA/Pi you should see
877the Opie contacts in KA/Pi. 880the Opie contacts in KA/Pi.
878b) Select some or all Opie contacts. 881b) Select some or all Opie contacts.
879(NOTE: +++++ 882(NOTE: +++++
880To know exactly, what contacts are Opie contacts, 883To know exactly, what contacts are Opie contacts,
881do this: Choose menu: 884do this: Choose menu:
882View-Modify View - TAB Fields. 885View-Modify View - TAB Fields.
883Select in the above list "Resource" and click 886Select in the above list "Resource" and click
884down arrow to add it to the "Selected fields". 887down arrow to add it to the "Selected fields".
885Click OK. 888Click OK.
886Now you have a new column "Resource" in your list, 889Now you have a new column "Resource" in your list,
887where you can see, what an Opie resource is. 890where you can see, what an Opie resource is.
888++++ NOTE end.) 891++++ NOTE end.)
889Ok, we do have now some Opie contacts seleted. 892Ok, we do have now some Opie contacts seleted.
890(Use SHIFT or CTRL key in order to multiple select). 893(Use SHIFT or CTRL key in order to multiple select).
891c) Choose menu: Edit-Copy. 894c) Choose menu: Edit-Copy.
892d) Choose menu: Edit-Paste. 895d) Choose menu: Edit-Paste.
893e) Select the resource, you want to add the contacts to. 896e) Select the resource, you want to add the contacts to.
894Congrats! Now you have read/write access to the copied 897Congrats! Now you have read/write access to the copied
895opie contacts as "real" KA/Pi contacts. 898opie contacts as "real" KA/Pi contacts.
896 899
897 900
898********** VERSION 1.9.1 ************ 901********** VERSION 1.9.1 ************
8991) 9021)
900 +++ IMPORTANT 1 +++ 903 +++ IMPORTANT 1 +++
901 904
902The storing place of the default calendar 905The storing place of the default calendar
903file has changed! 906file has changed!
904The default calendar file was 907The default calendar file was
905Applications/korganizer/mycalendar.ics 908Applications/korganizer/mycalendar.ics
906on Zaurus and 909on Zaurus and
907(yourHomeDir)/korganizer/mycalendar.ics 910(yourHomeDir)/korganizer/mycalendar.ics
908on Windows/Linux desktop. Now it is 911on Windows/Linux desktop. Now it is
909(yourHomeDir)/kdepim/korganizer/mycalendar.ics 912(yourHomeDir)/kdepim/korganizer/mycalendar.ics
910on Zaurus, Windows and Linux. 913on Zaurus, Windows and Linux.
911To load the old file, choose menu 914To load the old file, choose menu
912File-Load calendar backup. 915File-Load calendar backup.
913(It should be loaded automatically 916(It should be loaded automatically
914at startup with a warning message displayed). 917at startup with a warning message displayed).
915The place of the configuration file has changed too. 918The place of the configuration file has changed too.
916If you want to use your old KO/Pi config, 919If you want to use your old KO/Pi config,
917copy it to 920copy it to
918(yourHomeDir)/kdepim/config/korganizerrc 921(yourHomeDir)/kdepim/config/korganizerrc
919Please read VERSION 1.9.0 - topic 3) as well! 922Please read VERSION 1.9.0 - topic 3) as well!
920 923
921 +++ IMPORTANT 2 +++ 924 +++ IMPORTANT 2 +++
922 925
923Because of the new paths, you will need 926Because of the new paths, you will need
924a new version of the KO/Pi alarm applet 927a new version of the KO/Pi alarm applet
925for Zaurus. 928for Zaurus.
926Use version >= 1.9.1 929Use version >= 1.9.1
927 930
9282) 9312)
929Now the QWhat'sThis Icon works for items 932Now the QWhat'sThis Icon works for items
930in the month view as well. 933in the month view as well.
931(See VERSION 1.7.8 Topic 1) ). 934(See VERSION 1.7.8 Topic 1) ).
9323) 9353)
933You can import birtsdays/anniversaries 936You can import birtsdays/anniversaries
934from KA/Pi into KO/Pi. 937from KA/Pi into KO/Pi.
935Choose menu File-Import birthdays. 938Choose menu File-Import birthdays.
936If you import twice, already imported items 939If you import twice, already imported items
937will not be imported again, if they 940will not be imported again, if they
938have not been changed in KO/Pi. 941have not been changed in KO/Pi.
9394) 9424)
940When syncing with sharp DTM, now a progress 943When syncing with sharp DTM, now a progress
941is shown, when the data is written back. 944is shown, when the data is written back.
942If there is much data in KO/Pi and no data 945If there is much data in KO/Pi and no data
943in DTM, that can take a long time. 946in DTM, that can take a long time.
944(But only for the first time ). 947(But only for the first time ).
9455) 9485)
946In the search dialog, you can search 949In the search dialog, you can search
947now for the name/email of an attendee 950now for the name/email of an attendee
948of an event/todo. 951of an event/todo.
949To get more space for displaying 952To get more space for displaying
950search results, the buttons 953search results, the buttons
951for "search" and "close" on the 954for "search" and "close" on the
952bottom are removed in the PDA version. 955bottom are removed in the PDA version.
953You have to click OK in the top right 956You have to click OK in the top right
954corner to do a search. 957corner to do a search.
9556) 9586)
956Now it is possible to disable the displaying 959Now it is possible to disable the displaying
957of todo items in the Allday part of the Agenda. 960of todo items in the Allday part of the Agenda.
958Choose Menu Action-Configure, 961Choose Menu Action-Configure,
959TAB Todo View, checkbox 962TAB Todo View, checkbox
960"Allday Agenda view shows todos" 963"Allday Agenda view shows todos"
9617) 9647)
962If FastLoad is enabled, now the settings and the 965If FastLoad is enabled, now the settings and the
963calendar data are saved, when KO/Pi is closed. 966calendar data are saved, when KO/Pi is closed.
964(If no Fastload is enabled, KO/Pi saves 967(If no Fastload is enabled, KO/Pi saves
965the data as well, of course) 968the data as well, of course)
9668) 9698)
967The Agenda View has a minimize-splitter now, 970The Agenda View has a minimize-splitter now,
968such that the height of the allday part can be 971such that the height of the allday part can be
969changed quickly. 972changed quickly.
970 973
971********** VERSION 1.9.0 ************ 974********** VERSION 1.9.0 ************
9721) 9751)
973KO/Pi is now merged with the new microKDE from KA/Pi. 976KO/Pi is now merged with the new microKDE from KA/Pi.
974KO/Pi accesses now KA/Pi as the addressbook. 977KO/Pi accesses now KA/Pi as the addressbook.
975The other ddressbook-plugins are not working any longer. 978The other ddressbook-plugins are not working any longer.
976(It is planned, that later KA/Pi itself uses these plugins) 979(It is planned, that later KA/Pi itself uses these plugins)
977New versions of KO/Pi are only available 980New versions of KO/Pi are only available
978together with KA/Pi as the KDE-Pim/Pi package. 981together with KA/Pi as the KDE-Pim/Pi package.
9792) 9822)
980If you click on an attendee of a meeting in the 983If you click on an attendee of a meeting in the
981event viewer, a detailed summary of the 984event viewer, a detailed summary of the
982attendee is shown. 985attendee is shown.
9833) 9863)
984The place of the configuration file has changed. 987The place of the configuration file has changed.
985If you want to use your old KO/Pi config, copy 988If you want to use your old KO/Pi config, copy
986Applications/korganizer/config_korganizerrc 989Applications/korganizer/config_korganizerrc
987to 990to
988Applications/korganizer/config/korganizerrc 991Applications/korganizer/config/korganizerrc
989 992
990********** VERSION 1.7.8 ************ 993********** VERSION 1.7.8 ************
9911) 9941)
992Now the QWhat'sThis ist working. 995Now the QWhat'sThis ist working.
993Enable the QWhat'sThis icon in the toolbar. 996Enable the QWhat'sThis icon in the toolbar.
994(You have to restart to reload the changed toolbar config). 997(You have to restart to reload the changed toolbar config).
995Now click on the QWhat'sThis Icon 998Now click on the QWhat'sThis Icon
996in the top right corner of KO/Pi. 999in the top right corner of KO/Pi.
997Then click on an item in the Agenda View: 1000Then click on an item in the Agenda View:
998You will get a detailed display of the items content. 1001You will get a detailed display of the items content.
9992) 10022)
1000Some other very minor changes. 1003Some other very minor changes.
1001But I have forgotten the details ... 1004But I have forgotten the details ...
1002For that reason I start this log here: 1005For that reason I start this log here:
1003To document my changes, when I am doing it. 1006To document my changes, when I am doing it.
1004 1007
1005********** VERSION 1.7.7 ************ 1008********** VERSION 1.7.7 ************
1006Stable Version of KO/Pi 1009Stable Version of KO/Pi
diff --git a/kmicromail/viewmail.cpp b/kmicromail/viewmail.cpp
index 726f540..685b4e4 100644
--- a/kmicromail/viewmail.cpp
+++ b/kmicromail/viewmail.cpp
@@ -1,560 +1,579 @@
1// CHANGED 2004-08-06 Lutz Rogowski 1// CHANGED 2004-08-06 Lutz Rogowski
2 2
3 3
4 4
5#include <kfiledialog.h> 5#include <kfiledialog.h>
6#include "koprefs.h" 6#include "koprefs.h"
7#include <klocale.h> 7#include <klocale.h>
8#include <kglobal.h> 8#include <kglobal.h>
9#include <kapplication.h> 9#include <kapplication.h>
10 10
11#ifdef MINIKDE_KDIALOG_H 11#ifdef MINIKDE_KDIALOG_H
12#undef MINIKDE_KDIALOG_H 12#undef MINIKDE_KDIALOG_H
13#endif 13#endif
14 14
15#include "composemail.h" 15#include "composemail.h"
16#include "viewmail.h" 16#include "viewmail.h"
17 17
18#include <libmailwrapper/settings.h> 18#include <libmailwrapper/settings.h>
19#include <libmailwrapper/abstractmail.h> 19#include <libmailwrapper/abstractmail.h>
20#include <libmailwrapper/mailtypes.h> 20#include <libmailwrapper/mailtypes.h>
21 21
22#include <qdialog.h> 22#include <qdialog.h>
23 23
24#include <qpe/qpeapplication.h> 24#include <qpe/qpeapplication.h>
25 25
26/* QT */ 26/* QT */
27#include <qtextbrowser.h> 27#include <qtextbrowser.h>
28#include <qmessagebox.h> 28#include <qmessagebox.h>
29#include <qtextstream.h> 29#include <qtextstream.h>
30#include <qaction.h> 30#include <qaction.h>
31#include <qpopupmenu.h> 31#include <qpopupmenu.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qlayout.h> 33#include <qlayout.h>
34 34
35//using namespace Opie::Ui; 35//using namespace Opie::Ui;
36//using namespace Opie::Core; 36//using namespace Opie::Core;
37 37
38AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 38AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
39 const QString&fsize,int num,const QValueList<int>&path) 39 const QString&fsize,int num,const QValueList<int>&path)
40 : QListViewItem(parent,after),_partNum(num) 40 : QListViewItem(parent,after),_partNum(num)
41{ 41{
42 _path=path; 42 _path=path;
43 setText(0, mime); 43 setText(0, mime);
44 setText(1, desc); 44 setText(1, desc);
45 setText(2, file); 45 setText(2, file);
46 setText(3, fsize); 46 setText(3, fsize);
47} 47}
48 48
49AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 49AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
50 const QString&fsize,int num,const QValueList<int>&path) 50 const QString&fsize,int num,const QValueList<int>&path)
51 : QListViewItem(parent,after),_partNum(num) 51 : QListViewItem(parent,after),_partNum(num)
52{ 52{
53 _path=path; 53 _path=path;
54 setText(0, mime); 54 setText(0, mime);
55 setText(1, desc); 55 setText(1, desc);
56 setText(2, file); 56 setText(2, file);
57 setText(3, fsize); 57 setText(3, fsize);
58} 58}
59 59
60bool AttachItem::isParentof(const QValueList<int>&path) 60bool AttachItem::isParentof(const QValueList<int>&path)
61{ 61{
62 /* if not set, then no parent */ 62 /* if not set, then no parent */
63 if (path.count()==0||_path.count()==0) return false; 63 if (path.count()==0||_path.count()==0) return false;
64 /* the parent must have one digit less then a child */ 64 /* the parent must have one digit less then a child */
65 if (path.count()!=_path.count()+1) return false; 65 if (path.count()!=_path.count()+1) return false;
66 for (unsigned int i=0; i < _path.count();++i) 66 for (unsigned int i=0; i < _path.count();++i)
67 { 67 {
68 if (_path[i]!=path[i]) return false; 68 if (_path[i]!=path[i]) return false;
69 } 69 }
70 return true; 70 return true;
71} 71}
72 72
73AttachItem* ViewMail::searchParent(const QValueList<int>&path) 73AttachItem* ViewMail::searchParent(const QValueList<int>&path)
74{ 74{
75 QListViewItemIterator it( attachments ); 75 QListViewItemIterator it( attachments );
76 for ( ; it.current(); ++it ) 76 for ( ; it.current(); ++it )
77 { 77 {
78 AttachItem*ati = (AttachItem*)it.current(); 78 AttachItem*ati = (AttachItem*)it.current();
79 if (ati->isParentof(path)) return ati; 79 if (ati->isParentof(path)) return ati;
80 } 80 }
81 return 0; 81 return 0;
82} 82}
83 83
84AttachItem* ViewMail::lastChild(AttachItem*parent) 84AttachItem* ViewMail::lastChild(AttachItem*parent)
85{ 85{
86 if (!parent) return 0; 86 if (!parent) return 0;
87 AttachItem* item = (AttachItem*)parent->firstChild(); 87 AttachItem* item = (AttachItem*)parent->firstChild();
88 if (!item) return item; 88 if (!item) return item;
89 AttachItem*temp=0; 89 AttachItem*temp=0;
90 while( (temp=(AttachItem*)item->nextSibling())) 90 while( (temp=(AttachItem*)item->nextSibling()))
91 { 91 {
92 item = temp; 92 item = temp;
93 } 93 }
94 return item; 94 return item;
95} 95}
96 96
97void ViewMail::setBody(const RecBodyP&body ) 97void ViewMail::setBody(const RecBodyP&body )
98{ 98{
99 99
100 m_body = body; 100 m_body = body;
101 m_mail[2] = body->Bodytext(); 101 m_mail[2] = body->Bodytext();
102 m_showHtml = KOPrefs::instance()->mViewAsHtml;
103 if ( m_showHtml ) {
104 if ( m_mail[2].find ("<html>",0,false ) > -1 ) {
105 qDebug("html mail ");
106 } else {
107 qDebug("no html mail ");
108 m_showHtml = false;
109 }
110 }
111 showHtml->blockSignals( true );
112 showHtml->setOn( m_showHtml );
113 showHtml->blockSignals( false );
102 // qDebug("********text %s ",m_mail[2].latin1() ); 114 // qDebug("********text %s ",m_mail[2].latin1() );
103 attachbutton->setEnabled(body->Parts().count()>0); 115 attachbutton->setEnabled(body->Parts().count()>0);
104 attachments->setEnabled(body->Parts().count()>0); 116 attachments->setEnabled(body->Parts().count()>0);
105 if (body->Parts().count()==0) 117 if (body->Parts().count()==0)
106 { 118 {
107 return; 119 return;
108 } 120 }
109 AttachItem * curItem=0; 121 AttachItem * curItem=0;
110 AttachItem * parentItem = 0; 122 AttachItem * parentItem = 0;
111 QString type=body->Description()->Type()+"/"+body->Description()->Subtype(); 123 QString type=body->Description()->Type()+"/"+body->Description()->Subtype();
112 QString desc,fsize; 124 QString desc,fsize;
113 double s = body->Description()->Size(); 125 double s = body->Description()->Size();
114 int w; 126 int w;
115 w=0; 127 w=0;
116 128
117 while (s>1024) 129 while (s>1024)
118 { 130 {
119 s/=1024; 131 s/=1024;
120 ++w; 132 ++w;
121 if (w>=2) break; 133 if (w>=2) break;
122 } 134 }
123 135
124 QString q=""; 136 QString q="";
125 switch(w) 137 switch(w)
126 { 138 {
127 case 1: 139 case 1:
128 q="k"; 140 q="k";
129 break; 141 break;
130 case 2: 142 case 2:
131 q="M"; 143 q="M";
132 break; 144 break;
133 default: 145 default:
134 break; 146 break;
135 } 147 }
136 148
137 { 149 {
138 /* I did not found a method to make a CONTENT reset on a QTextStream 150 /* I did not found a method to make a CONTENT reset on a QTextStream
139 so I use this construct that the stream will re-constructed in each 151 so I use this construct that the stream will re-constructed in each
140 loop. To let it work, the textstream is packed into a own area of 152 loop. To let it work, the textstream is packed into a own area of
141 code is it will be destructed after finishing its small job. 153 code is it will be destructed after finishing its small job.
142 */ 154 */
143 QTextOStream o(&fsize); 155 QTextOStream o(&fsize);
144 if (w>0) o.precision(2); else o.precision(0); 156 if (w>0) o.precision(2); else o.precision(0);
145 o.setf(QTextStream::fixed); 157 o.setf(QTextStream::fixed);
146 o << s << " " << q << "Byte"; 158 o << s << " " << q << "Byte";
147 } 159 }
148 160
149 curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body->Description()->Positionlist()); 161 curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body->Description()->Positionlist());
150 QString filename = ""; 162 QString filename = "";
151 163
152 for (unsigned int i = 0; i < body->Parts().count();++i) 164 for (unsigned int i = 0; i < body->Parts().count();++i)
153 { 165 {
154 filename = ""; 166 filename = "";
155 type = body->Parts()[i]->Type()+"/"+body->Parts()[i]->Subtype(); 167 type = body->Parts()[i]->Type()+"/"+body->Parts()[i]->Subtype();
156 part_plist_t::ConstIterator it = body->Parts()[i]->Parameters().begin(); 168 part_plist_t::ConstIterator it = body->Parts()[i]->Parameters().begin();
157 for (;it!=body->Parts()[i]->Parameters().end();++it) 169 for (;it!=body->Parts()[i]->Parameters().end();++it)
158 { 170 {
159 if (it.key().lower()=="name") 171 if (it.key().lower()=="name")
160 { 172 {
161 filename=it.data(); 173 filename=it.data();
162 } 174 }
163 } 175 }
164 s = body->Parts()[i]->Size(); 176 s = body->Parts()[i]->Size();
165 w = 0; 177 w = 0;
166 while (s>1024) 178 while (s>1024)
167 { 179 {
168 s/=1024; 180 s/=1024;
169 ++w; 181 ++w;
170 if (w>=2) break; 182 if (w>=2) break;
171 } 183 }
172 switch(w) 184 switch(w)
173 { 185 {
174 case 1: 186 case 1:
175 q="k"; 187 q="k";
176 break; 188 break;
177 case 2: 189 case 2:
178 q="M"; 190 q="M";
179 break; 191 break;
180 default: 192 default:
181 q=""; 193 q="";
182 break; 194 break;
183 } 195 }
184 QTextOStream o(&fsize); 196 QTextOStream o(&fsize);
185 if (w>0) o.precision(2); else o.precision(0); 197 if (w>0) o.precision(2); else o.precision(0);
186 o.setf(QTextStream::fixed); 198 o.setf(QTextStream::fixed);
187 o << s << " " << q << "Byte"; 199 o << s << " " << q << "Byte";
188 desc = body->Parts()[i]->Description(); 200 desc = body->Parts()[i]->Description();
189 parentItem = searchParent(body->Parts()[i]->Positionlist()); 201 parentItem = searchParent(body->Parts()[i]->Positionlist());
190 if (parentItem) 202 if (parentItem)
191 { 203 {
192 AttachItem*temp = lastChild(parentItem); 204 AttachItem*temp = lastChild(parentItem);
193 if (temp) curItem = temp; 205 if (temp) curItem = temp;
194 curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); 206 curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist());
195 attachments->setRootIsDecorated(true); 207 attachments->setRootIsDecorated(true);
196 curItem = parentItem; 208 curItem = parentItem;
197 } 209 }
198 else 210 else
199 { 211 {
200 curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); 212 curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist());
201 } 213 }
202 } 214 }
203} 215}
204 216
205 217
206void ViewMail::slotViewSource() 218void ViewMail::slotViewSource()
207{ 219{
208 220
209 if ( !sourceOn ) { 221 if ( !sourceOn ) {
210 sourceOn = true; 222 sourceOn = true;
211 viewSource->setText(i18n("View Body Text")); 223 viewSource->setText(i18n("View Body Text"));
212 encodedString*st = 0; 224 encodedString*st = 0;
213 st = m_recMail->Wrapper()->fetchRawBody(m_recMail); 225 st = m_recMail->Wrapper()->fetchRawBody(m_recMail);
214 if ( st ) { 226 if ( st ) {
215 QString source = QString::fromUtf8( st->Content(), st->Length()); 227 QString source = QString::fromUtf8( st->Content(), st->Length());
216 browser->setText( source ); 228 browser->setText( source );
217 delete st; 229 delete st;
218 } 230 }
219 } else 231 } else
220 setText(); 232 setText();
221 233
222 234
223} 235}
224void ViewMail::slotShowHtml( bool state ) 236void ViewMail::slotShowHtml( bool state )
225{ 237{
226 m_showHtml = state; 238 m_showHtml = state;
227 setText(); 239 setText();
228} 240}
229 241
230void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) 242void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int )
231{ 243{
232 if (!item ) 244 if (!item )
233 return; 245 return;
234 246
235 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) 247 if ( ( ( AttachItem* )item )->Partnumber() == -1 )
236 { 248 {
237 setText(); 249 setText();
238 return; 250 return;
239 } 251 }
240 QPopupMenu *menu = new QPopupMenu(); 252 QPopupMenu *menu = new QPopupMenu();
241 int ret=0; 253 int ret=0;
242 254
243 if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" ) 255 if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" )
244 { 256 {
245 menu->insertItem( i18n( "Show Text" ), 1 ); 257 menu->insertItem( i18n( "Show Text" ), 1 );
246 } 258 }
247 if (item->text(0).left(6)=="image/") { 259 if (item->text(0).left(6)=="image/") {
248 menu->insertItem(i18n("Display image preview"),2); 260 menu->insertItem(i18n("Display image preview"),2);
249 } 261 }
250 menu->insertItem( i18n( "Save Attachment" ), 0 ); 262 menu->insertItem( i18n( "Save Attachment" ), 0 );
251 menu->insertSeparator(1); 263 menu->insertSeparator(1);
252 264
253 ret = menu->exec( point, 0 ); 265 ret = menu->exec( point, 0 );
254 266
255 switch(ret) 267 switch(ret)
256 { 268 {
257 case 0: 269 case 0:
258 { 270 {
259 //MimeTypes types; 271 //MimeTypes types;
260 //types.insert( "all", "*" ); 272 //types.insert( "all", "*" );
261 QString str = KFileDialog::getSaveFileName( "/", item->text( 2 ), this ); 273 QString str = KFileDialog::getSaveFileName( "/", item->text( 2 ), this );
262 274
263 if( !str.isEmpty() ) 275 if( !str.isEmpty() )
264 { 276 {
265 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); 277 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] );
266 if (content) 278 if (content)
267 { 279 {
268 QFile output(str); 280 QFile output(str);
269 output.open(IO_WriteOnly); 281 output.open(IO_WriteOnly);
270 output.writeBlock(content->Content(),content->Length()); 282 output.writeBlock(content->Content(),content->Length());
271 output.close(); 283 output.close();
272 delete content; 284 delete content;
273 } 285 }
274 } 286 }
275 } 287 }
276 break ; 288 break ;
277 289
278 case 2: 290 case 2:
279 { 291 {
280#ifdef DESKTOP_VERSION 292#ifdef DESKTOP_VERSION
281 QString tmpfile = locateLocal( "tmp", "opiemail-image"); 293 QString tmpfile = locateLocal( "tmp", "opiemail-image");
282#else 294#else
283 QString tmpfile = "/tmp/opiemail-image"; 295 QString tmpfile = "/tmp/opiemail-image";
284#endif 296#endif
285 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); 297 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] );
286 if (content) { 298 if (content) {
287 QFile output(tmpfile); 299 QFile output(tmpfile);
288 output.open(IO_WriteOnly); 300 output.open(IO_WriteOnly);
289 output.writeBlock(content->Content(),content->Length()); 301 output.writeBlock(content->Content(),content->Length());
290 output.close(); 302 output.close();
291 delete content; 303 delete content;
292 MailImageDlg iview(""); 304 MailImageDlg iview("");
293 iview.setName(tmpfile); 305 iview.setName(tmpfile);
294 KApplication::execDialog(&iview); 306 KApplication::execDialog(&iview);
295 output.remove(); 307 output.remove();
296 } 308 }
297 } 309 }
298 break; 310 break;
299 case 1: 311 case 1:
300 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) 312 if ( ( ( AttachItem* )item )->Partnumber() == -1 )
301 { 313 {
302 setText(); 314 setText();
303 } 315 }
304 else 316 else
305 { 317 {
306 if ( m_recMail->Wrapper() != 0l ) 318 if ( m_recMail->Wrapper() != 0l )
307 { // make sure that there is a wrapper , even after delete or simular actions 319 { // make sure that there is a wrapper , even after delete or simular actions
308 browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); 320 browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) );
309 } 321 }
310 } 322 }
311 break; 323 break;
312 } 324 }
313 delete menu; 325 delete menu;
314} 326}
315 327
316 328
317void ViewMail::setMail(const RecMailP&mail ) 329void ViewMail::setMail(const RecMailP&mail )
318{ 330{
319 331
320 m_recMail = mail; 332 m_recMail = mail;
321 333
322 m_mail[0] = mail->getFrom(); 334 m_mail[0] = mail->getFrom();
323 m_mail[1] = mail->getSubject(); 335 m_mail[1] = mail->getSubject();
324 m_mail[3] = mail->getDate(); 336 m_mail[3] = mail->getDate();
325 m_mail[4] = mail->Msgid(); 337 m_mail[4] = mail->Msgid();
326 338
327 m_mail2[0] = mail->To(); 339 m_mail2[0] = mail->To();
328 m_mail2[1] = mail->CC(); 340 m_mail2[1] = mail->CC();
329 m_mail2[2] = mail->Bcc(); 341 m_mail2[2] = mail->Bcc();
330 342
331 setText(); 343 setText();
332} 344}
333 345
334 346void ViewMail::slotNextMail()
347{
348 nextMail->blockSignals( true );
349 setCaption(i18n("Displaying next mail...please wait!"));
350 qApp->processEvents();
351 emit showNextMail(this);
352 nextMail->blockSignals( false );
353}
335 354
336ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) 355ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl)
337 : ViewMailBase(parent, name, fl), _inLoop(false) 356 : ViewMailBase(parent, name, fl), _inLoop(false)
338{ 357{
339 m_gotBody = false; 358 m_gotBody = false;
340 deleted = false; 359 deleted = false;
341 sourceOn = false; 360 sourceOn = false;
361 readConfig();
342 connect( reply, SIGNAL(activated()), SLOT(slotReply())); 362 connect( reply, SIGNAL(activated()), SLOT(slotReply()));
343 connect( forward, SIGNAL(activated()), SLOT(slotForward())); 363 connect( forward, SIGNAL(activated()), SLOT(slotForward()));
344 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) ); 364 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) );
345 connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) ); 365 connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) );
346 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); 366 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) );
347 connect( nextMail, SIGNAL( activated() ), SLOT( slotNextMail() ) ); 367 connect( nextMail, SIGNAL( activated() ), SLOT( slotNextMail() ) );
348 connect( viewSource, SIGNAL( activated() ), SLOT( slotViewSource() ) ); 368 connect( viewSource, SIGNAL( activated() ), SLOT( slotViewSource() ) );
349 connect( downloadMail, SIGNAL( activated() ), SIGNAL( signalDownloadMail() ) ); 369 connect( downloadMail, SIGNAL( activated() ), SIGNAL( signalDownloadMail() ) );
350 370
351 attachments->setEnabled(m_gotBody); 371 attachments->setEnabled(m_gotBody);
352 connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); 372 connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) );
353 373
354 readConfig();
355 attachments->setSorting(-1); 374 attachments->setSorting(-1);
356} 375}
357 376
358void ViewMail::readConfig() 377void ViewMail::readConfig()
359{ 378{
360 379
361 setFont ( KOPrefs::instance()->mReadFont ); 380 setFont ( KOPrefs::instance()->mReadFont );
362 m_showHtml = KOPrefs::instance()->mViewAsHtml; 381 m_showHtml = KOPrefs::instance()->mViewAsHtml;
363 showHtml->setOn( m_showHtml ); 382 showHtml->setOn( m_showHtml );
364} 383}
365 384
366void ViewMail::setText() 385void ViewMail::setText()
367{ 386{
368 387
369 viewSource->setText(i18n("View Source")); 388 viewSource->setText(i18n("View Source"));
370 sourceOn = false; 389 sourceOn = false;
371 QString toString; 390 QString toString;
372 QString ccString; 391 QString ccString;
373 QString bccString; 392 QString bccString;
374 393
375 394
376 toString = m_mail2[0].join(","); 395 toString = m_mail2[0].join(",");
377 ccString = m_mail2[1].join(","); 396 ccString = m_mail2[1].join(",");
378 bccString = m_mail2[2].join(","); 397 bccString = m_mail2[2].join(",");
379 398
380#ifdef DESKTOP_VERSION 399#ifdef DESKTOP_VERSION
381 setCaption( i18n("Size: ")+m_recMail->MsgsizeString()+" - "+i18n("E-Mail by %1").arg( m_mail[0] ) ); 400 setCaption( i18n("Size: ")+m_recMail->MsgsizeString()+" - "+i18n("E-Mail by %1").arg( m_mail[0] ) );
382#else 401#else
383 setCaption( m_recMail->MsgsizeString()+" - "+m_mail[0] ); 402 setCaption( m_recMail->MsgsizeString()+" - "+m_mail[0] );
384#endif 403#endif
385 404
386 m_mailHtml = "<html><body>" 405 m_mailHtml = "<html><body>"
387 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" 406 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>"
388 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" 407 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>"
389 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" 408 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>"
390 "<b>" + i18n( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" 409 "<b>" + i18n( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>"
391 "<b>" + i18n( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + 410 "<b>" + i18n( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" +
392 i18n( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" 411 i18n( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>"
393 "<b>" + i18n( "Date" ) + ": </b> " + m_mail[3] + 412 "<b>" + i18n( "Date" ) + ": </b> " + m_mail[3] +
394 "</td></tr></table><font>"; 413 "</td></tr></table><font>";
395 414
396 if ( !m_showHtml ) 415 if ( !m_showHtml )
397 { 416 {
398 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); 417 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" );
399 } 418 }
400 else 419 else
401 { 420 {
402 browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); 421 browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" );
403 } 422 }
404 // remove later in favor of a real handling 423 // remove later in favor of a real handling
405 m_gotBody = true; 424 m_gotBody = true;
406} 425}
407 426
408 427
409ViewMail::~ViewMail() 428ViewMail::~ViewMail()
410{ 429{
411 m_recMail->Wrapper()->cleanMimeCache(); 430 m_recMail->Wrapper()->cleanMimeCache();
412 hide(); 431 hide();
413} 432}
414 433
415void ViewMail::hide() 434void ViewMail::hide()
416{ 435{
417 QWidget::hide(); 436 QWidget::hide();
418 437
419 if (_inLoop) 438 if (_inLoop)
420 { 439 {
421 _inLoop = false; 440 _inLoop = false;
422 qApp->exit_loop(); 441 qApp->exit_loop();
423 442
424 } 443 }
425 444
426} 445}
427 446
428void ViewMail::exec() 447void ViewMail::exec()
429{ 448{
430 show(); 449 show();
431 450
432 if (!_inLoop) 451 if (!_inLoop)
433 { 452 {
434 _inLoop = true; 453 _inLoop = true;
435 qApp->enter_loop(); 454 qApp->enter_loop();
436 } 455 }
437 456
438} 457}
439 458
440QString ViewMail::deHtml(const QString &string) 459QString ViewMail::deHtml(const QString &string)
441{ 460{
442 QString string_ = string; 461 QString string_ = string;
443 string_.replace(QRegExp("&"), "&amp;"); 462 string_.replace(QRegExp("&"), "&amp;");
444 string_.replace(QRegExp("<"), "&lt;"); 463 string_.replace(QRegExp("<"), "&lt;");
445 string_.replace(QRegExp(">"), "&gt;"); 464 string_.replace(QRegExp(">"), "&gt;");
446 string_.replace(QRegExp("\\n"), "<br>"); 465 string_.replace(QRegExp("\\n"), "<br>");
447 return string_; 466 return string_;
448} 467}
449 468
450void ViewMail::slotReply() 469void ViewMail::slotReply()
451{ 470{
452 if (!m_gotBody) 471 if (!m_gotBody)
453 { 472 {
454 QMessageBox::information(this, i18n("Error"), i18n("<p>The mail body is not yet downloaded, so you cannot reply yet."), i18n("Ok")); 473 QMessageBox::information(this, i18n("Error"), i18n("<p>The mail body is not yet downloaded, so you cannot reply yet."), i18n("Ok"));
455 return; 474 return;
456 } 475 }
457 476
458 QString rtext; 477 QString rtext;
459 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose 478 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose
460 .arg( m_mail[0] ) 479 .arg( m_mail[0] )
461 .arg( m_mail[3] ); 480 .arg( m_mail[3] );
462 481
463 QString text = m_mail[2]; 482 QString text = m_mail[2];
464 QStringList lines = QStringList::split(QRegExp("\\n"), text); 483 QStringList lines = QStringList::split(QRegExp("\\n"), text);
465 QStringList::Iterator it; 484 QStringList::Iterator it;
466 for (it = lines.begin(); it != lines.end(); it++) 485 for (it = lines.begin(); it != lines.end(); it++)
467 { 486 {
468 rtext += "> " + *it + "\n"; 487 rtext += "> " + *it + "\n";
469 } 488 }
470 rtext += "\n"; 489 rtext += "\n";
471 490
472 QString prefix; 491 QString prefix;
473 if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = ""; 492 if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = "";
474 else prefix = "Re: "; // no i18n on purpose 493 else prefix = "Re: "; // no i18n on purpose
475 494
476 Settings *settings = new Settings(); 495 Settings *settings = new Settings();
477 ComposeMail composer( settings ,this, 0, true); 496 ComposeMail composer( settings ,this, 0, true);
478 if (m_recMail->Replyto().isEmpty()) { 497 if (m_recMail->Replyto().isEmpty()) {
479 composer.setTo(m_recMail->getFrom()); 498 composer.setTo(m_recMail->getFrom());
480 } else { 499 } else {
481 composer.setTo(m_recMail->Replyto()); 500 composer.setTo(m_recMail->Replyto());
482 } 501 }
483 composer.setSubject( prefix + m_mail[1] ); 502 composer.setSubject( prefix + m_mail[1] );
484 composer.setMessage( rtext ); 503 composer.setMessage( rtext );
485 composer.setInReplyTo(m_recMail->Msgid()); 504 composer.setInReplyTo(m_recMail->Msgid());
486 composer.setCharset( m_body->getCharset() ); 505 composer.setCharset( m_body->getCharset() );
487 506
488 if ( QDialog::Accepted == KApplication::execDialog( &composer ) ) 507 if ( QDialog::Accepted == KApplication::execDialog( &composer ) )
489 { 508 {
490 m_recMail->Wrapper()->answeredMail(m_recMail); 509 m_recMail->Wrapper()->answeredMail(m_recMail);
491 } 510 }
492 delete settings; 511 delete settings;
493} 512}
494 513
495void ViewMail::slotForward() 514void ViewMail::slotForward()
496{ 515{
497 if (!m_gotBody) 516 if (!m_gotBody)
498 { 517 {
499 QMessageBox::information(this, i18n("Error"), i18n("<p>The mail body is not yet downloaded, so you cannot forward yet."), i18n("Ok")); 518 QMessageBox::information(this, i18n("Error"), i18n("<p>The mail body is not yet downloaded, so you cannot forward yet."), i18n("Ok"));
500 return; 519 return;
501 } 520 }
502 521
503 QString ftext; 522 QString ftext;
504 ftext += QString("\n----- Forwarded message from %1 -----\n\n") 523 ftext += QString("\n----- Forwarded message from %1 -----\n\n")
505 .arg( m_mail[0] ); 524 .arg( m_mail[0] );
506 if (!m_mail[3].isNull()) 525 if (!m_mail[3].isNull())
507 ftext += QString("Date: %1\n") 526 ftext += QString("Date: %1\n")
508 .arg( m_mail[3] ); 527 .arg( m_mail[3] );
509 if (!m_mail[0].isNull()) 528 if (!m_mail[0].isNull())
510 ftext += QString("From: %1\n") 529 ftext += QString("From: %1\n")
511 .arg( m_mail[0] ); 530 .arg( m_mail[0] );
512 if (!m_mail[1].isNull()) 531 if (!m_mail[1].isNull())
513 ftext += QString("Subject: %1\n") 532 ftext += QString("Subject: %1\n")
514 .arg( m_mail[1] ); 533 .arg( m_mail[1] );
515 534
516 ftext += QString("\n%1\n") 535 ftext += QString("\n%1\n")
517 .arg( m_mail[2]); 536 .arg( m_mail[2]);
518 537
519 ftext += QString("----- End forwarded message -----\n"); 538 ftext += QString("----- End forwarded message -----\n");
520 539
521 Settings *settings = new Settings(); 540 Settings *settings = new Settings();
522 ComposeMail composer( settings ,this, 0, true); 541 ComposeMail composer( settings ,this, 0, true);
523 composer.setSubject( "Fwd: " + m_mail[1] ); 542 composer.setSubject( "Fwd: " + m_mail[1] );
524 composer.setMessage( ftext ); 543 composer.setMessage( ftext );
525 if ( QDialog::Accepted == KApplication::execDialog( &composer )) 544 if ( QDialog::Accepted == KApplication::execDialog( &composer ))
526 { 545 {
527 } 546 }
528} 547}
529 548
530void ViewMail::slotDeleteMail( ) 549void ViewMail::slotDeleteMail( )
531{ 550{
532 if ( QMessageBox::warning(this, i18n("Delete Mail"), QString( i18n("<p>Do you really want to delete this mail? <br><br>" ) + m_mail[0] + " - " + m_mail[1] ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 551 if ( QMessageBox::warning(this, i18n("Delete Mail"), QString( i18n("<p>Do you really want to delete this mail? <br><br>" ) + m_mail[0] + " - " + m_mail[1] ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
533 { 552 {
534 emit deleteAndDisplayNextMail( this); 553 emit deleteAndDisplayNextMail( this);
535 //m_recMail->Wrapper()->deleteMail( m_recMail ); 554 //m_recMail->Wrapper()->deleteMail( m_recMail );
536 //hide(); 555 //hide();
537 deleted = true; 556 deleted = true;
538 } 557 }
539} 558}
540 559
541MailImageDlg::MailImageDlg(const QString&fname,QWidget *parent, const char *name, bool modal, WFlags f) 560MailImageDlg::MailImageDlg(const QString&fname,QWidget *parent, const char *name, bool modal, WFlags f)
542 : QDialog(parent,name,modal) 561 : QDialog(parent,name,modal)
543{ 562{
544 QVBoxLayout*dlglayout = new QVBoxLayout(this); 563 QVBoxLayout*dlglayout = new QVBoxLayout(this);
545 dlglayout->setSpacing(2); 564 dlglayout->setSpacing(2);
546 dlglayout->setMargin(1); 565 dlglayout->setMargin(1);
547 //m_imageview = new Opie::MM::OImageScrollView(this); 566 //m_imageview = new Opie::MM::OImageScrollView(this);
548 //dlglayout->addWidget(m_imageview); 567 //dlglayout->addWidget(m_imageview);
549} 568}
550 569
551MailImageDlg::~MailImageDlg() 570MailImageDlg::~MailImageDlg()
552{ 571{
553} 572}
554 573
555void MailImageDlg::setName(const QString&fname) 574void MailImageDlg::setName(const QString&fname)
556{ 575{
557 qDebug("viewmail.cpp: MailImageDlg::setName Pending"); 576 qDebug("viewmail.cpp: MailImageDlg::setName Pending");
558 // m_imageview->setImage(fname); 577 // m_imageview->setImage(fname);
559} 578}
560 579
diff --git a/kmicromail/viewmail.h b/kmicromail/viewmail.h
index fc5edcf..bb5b685 100644
--- a/kmicromail/viewmail.h
+++ b/kmicromail/viewmail.h
@@ -1,93 +1,93 @@
1#ifndef VIEWMAIL_H 1#ifndef VIEWMAIL_H
2#define VIEWMAIL_H 2#define VIEWMAIL_H
3 3
4#include "viewmailbase.h" 4#include "viewmailbase.h"
5#include <libmailwrapper/mailtypes.h> 5#include <libmailwrapper/mailtypes.h>
6 6
7#include <qdialog.h> 7#include <qdialog.h>
8#include <qapplication.h> 8#include <qapplication.h>
9 9
10#include <qlistview.h> 10#include <qlistview.h>
11#include <qmap.h> 11#include <qmap.h>
12#include <klocale.h> 12#include <klocale.h>
13#include <qstringlist.h> 13#include <qstringlist.h>
14#include <qvaluelist.h> 14#include <qvaluelist.h>
15 15
16//namespace Opie { namespace MM { class OImageScrollView; } } 16//namespace Opie { namespace MM { class OImageScrollView; } }
17 17
18class AttachItem : public QListViewItem 18class AttachItem : public QListViewItem
19{ 19{
20public: 20public:
21 AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 21 AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
22 const QString&fsize,int num,const QValueList<int>&path); 22 const QString&fsize,int num,const QValueList<int>&path);
23 AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 23 AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
24 const QString&fsize,int num,const QValueList<int>&path); 24 const QString&fsize,int num,const QValueList<int>&path);
25 int Partnumber() { return _partNum; } 25 int Partnumber() { return _partNum; }
26 bool isParentof(const QValueList<int>&path); 26 bool isParentof(const QValueList<int>&path);
27 27
28private: 28private:
29 int _partNum; 29 int _partNum;
30 /* needed for a better display of attachments */ 30 /* needed for a better display of attachments */
31 QValueList<int> _path; 31 QValueList<int> _path;
32}; 32};
33 33
34class ViewMail : public ViewMailBase 34class ViewMail : public ViewMailBase
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37 37
38public: 38public:
39 ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = 0); 39 ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
40 ~ViewMail(); 40 ~ViewMail();
41 41
42 void hide(); 42 void hide();
43 void exec(); 43 void exec();
44 void setMail(const RecMailP&mail ); 44 void setMail(const RecMailP&mail );
45 void setBody(const RecBodyP&body); 45 void setBody(const RecBodyP&body);
46 bool deleted; 46 bool deleted;
47 signals: 47 signals:
48 void showNextMail(ViewMail*); 48 void showNextMail(ViewMail*);
49 void deleteAndDisplayNextMail(ViewMail *); 49 void deleteAndDisplayNextMail(ViewMail *);
50 void signalDownloadMail(); 50 void signalDownloadMail();
51protected: 51protected:
52 QString deHtml(const QString &string); 52 QString deHtml(const QString &string);
53 AttachItem* searchParent(const QValueList<int>&path); 53 AttachItem* searchParent(const QValueList<int>&path);
54 AttachItem* lastChild(AttachItem*parent); 54 AttachItem* lastChild(AttachItem*parent);
55 55
56protected slots: 56protected slots:
57 void slotNextMail() { setCaption(i18n("Displaying next mail...please wait!")); qApp->processEvents();emit showNextMail(this); }; 57 void slotNextMail();
58 void slotReply(); 58 void slotReply();
59 void slotForward(); 59 void slotForward();
60 void setText(); 60 void setText();
61 void slotItemClicked( QListViewItem * item , const QPoint & point, int c ); 61 void slotItemClicked( QListViewItem * item , const QPoint & point, int c );
62 void slotDeleteMail( ); 62 void slotDeleteMail( );
63 void slotShowHtml( bool ); 63 void slotShowHtml( bool );
64 void slotViewSource(); 64 void slotViewSource();
65 65
66private: 66private:
67 void readConfig(); 67 void readConfig();
68 bool sourceOn;; 68 bool sourceOn;;
69 bool _inLoop; 69 bool _inLoop;
70 QString m_mailHtml; 70 QString m_mailHtml;
71 bool m_gotBody; 71 bool m_gotBody;
72 RecBodyP m_body; 72 RecBodyP m_body;
73 RecMailP m_recMail; 73 RecMailP m_recMail;
74 bool m_showHtml; 74 bool m_showHtml;
75 75
76 // 0 from 1 subject 2 bodytext 3 date 76 // 0 from 1 subject 2 bodytext 3 date
77 QMap <int,QString> m_mail; 77 QMap <int,QString> m_mail;
78 // 0 to 1 cc 2 bcc 78 // 0 to 1 cc 2 bcc
79 QMap <int,QStringList> m_mail2; 79 QMap <int,QStringList> m_mail2;
80}; 80};
81 81
82class MailImageDlg:public QDialog 82class MailImageDlg:public QDialog
83{ 83{
84 Q_OBJECT 84 Q_OBJECT
85public: 85public:
86 MailImageDlg(const QString&,QWidget *parent = 0, const char *name = 0, bool modal = true, WFlags f = 0); 86 MailImageDlg(const QString&,QWidget *parent = 0, const char *name = 0, bool modal = true, WFlags f = 0);
87 ~MailImageDlg(); 87 ~MailImageDlg();
88 void setName(const QString&); 88 void setName(const QString&);
89protected: 89protected:
90 //Opie::MM::OImageScrollView*m_imageview; 90 //Opie::MM::OImageScrollView*m_imageview;
91}; 91};
92 92
93#endif 93#endif