summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt8
-rw-r--r--korganizer/kotodoview.cpp6
2 files changed, 14 insertions, 0 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 7e5240c..6c9daad 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,395 +1,403 @@
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 3
4********** VERSION 2.0.1 ************ 4********** VERSION 2.0.1 ************
5 5
6Oooops ... I forgot to test on the Zaurus 5500 ... 6Oooops ... I forgot to test on the Zaurus 5500 ...
7 7
8Fixed many problems of new (english) strings (and german translations) 8Fixed many problems of new (english) strings (and german translations)
9introduced in the latest versions, where the text was not fitting on the 9introduced in the latest versions, where the text was not fitting on the
10240x320 display of the Zaurus 5500. 10240x320 display of the Zaurus 5500.
11 11
12Added a popup menu ( press pen and hold to get popup ) to the agenda view
13with may useful items.
14
15Added items to the todolist popup menu for:
16Display all opened, all closed or all todos flat.
17The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
18
19
12********** VERSION 2.0.0 ************ 20********** VERSION 2.0.0 ************
13 21
14Stable release 2.0.0! 22Stable release 2.0.0!
15 23
16KO/Pi: 24KO/Pi:
17Fixed problem in edit dialog recreation at startup. 25Fixed problem in edit dialog recreation at startup.
18Made "toggle view*" menu items enabled context sensitive. 26Made "toggle view*" menu items enabled context sensitive.
19Changed agenda size menu to items 1-10. 27Changed agenda size menu to items 1-10.
20Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 28Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
21Usebility enhancements in the KO/Pi menus. 29Usebility enhancements in the KO/Pi menus.
22Birthday import now adds year to summary. 30Birthday import now adds year to summary.
23What's Next view shows age in years for birthday. 31What's Next view shows age in years for birthday.
24 32
25OM/Pi: 33OM/Pi:
26Added three info lines to display subject, from and to of selected mails. 34Added three info lines to display subject, from and to of selected mails.
27 35
28KA/Pi: 36KA/Pi:
29Fixed jump bar behaviour on Zaurus. 37Fixed jump bar behaviour on Zaurus.
30Now KA/Pi search field supports searching for a range of starting characters. 38Now KA/Pi search field supports searching for a range of starting characters.
31E.g. to search for all contact beginning with b to n, type 39E.g. to search for all contact beginning with b to n, type
32b-n 40b-n
33in the search field. 41in the search field.
34 42
35********** VERSION 1.9.20 ************ 43********** VERSION 1.9.20 ************
36 44
37KO/Pi: 45KO/Pi:
38Added for the "dislplay one day" agenda mode 46Added for the "dislplay one day" agenda mode
39info in the caption and in the day lables: 47info in the caption and in the day lables:
40Now it is displayed, if the selected day is from "day before yesterday" 48Now it is displayed, if the selected day is from "day before yesterday"
41to "day after tomorrow". 49to "day after tomorrow".
42Made it possible to delete a Todo, which has sub-todos. 50Made it possible to delete a Todo, which has sub-todos.
43Fixed two small problems in the todo view. 51Fixed two small problems in the todo view.
44Added missing German translation for filter edit and print dialog. 52Added missing German translation for filter edit and print dialog.
45Made search dialog closeable by cancel key. 53Made search dialog closeable by cancel key.
46 54
47Made it possible to select in the date picker the (ligt grey ) 55Made it possible to select in the date picker the (ligt grey )
48dates of the prev./next month with the mouse. 56dates of the prev./next month with the mouse.
49 57
50OM/Pi: 58OM/Pi:
51"Delete mail" icon in main window now deletes all selected mails. 59"Delete mail" icon in main window now deletes all selected mails.
52Fixed the problem, that the state flag of imap mails was ignored. 60Fixed the problem, that the state flag of imap mails was ignored.
53Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 61Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
54to indecate that they are already seen. 62to indecate that they are already seen.
55Fixed the problem that the body of some mails was not displayed in the 63Fixed the problem that the body of some mails was not displayed in the
56mail viewer when fetching them from the imap server directly to read them. 64mail viewer when fetching them from the imap server directly to read them.
57Made it (configurable) possible to show the "To:" field in the list view. 65Made it (configurable) possible to show the "To:" field in the list view.
58Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 66Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
59Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 67Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
60local storage folder (specified in account settings) of the account of the mail. 68local storage folder (specified in account settings) of the account of the mail.
61Removed some memory leaks in OM/Pi. 69Removed some memory leaks in OM/Pi.
62 70
63 71
64********** VERSION 1.9.19 ************ 72********** VERSION 1.9.19 ************
65 73
66Added a lot of missing translations to KA/Pi, 74Added a lot of missing translations to KA/Pi,
67Added some missing translations to KO/Pi and OM/Pi. 75Added some missing translations to KO/Pi and OM/Pi.
68 76
69Fixed some minor problems in KA/Pi + KO/Pi. 77Fixed some minor problems in KA/Pi + KO/Pi.
70 78
71Fixed a crash when closing PwM/Pi. 79Fixed a crash when closing PwM/Pi.
72Added German translation for PwM/Pi. 80Added German translation for PwM/Pi.
73 81
74Made view change and Month View update faster in KO/Pi. 82Made view change and Month View update faster in KO/Pi.
75 83
76 84
77********** VERSION 1.9.18 ************ 85********** VERSION 1.9.18 ************
78 86
79FYI: The VERSION 1.9.17 was a testing release only. 87FYI: The VERSION 1.9.17 was a testing release only.
80Please read the changelog of VERSION 1.9.17 as well. 88Please read the changelog of VERSION 1.9.17 as well.
81 89
82Cleaned up the syncing config dialog. 90Cleaned up the syncing config dialog.
83Added sync config options for date range for events. 91Added sync config options for date range for events.
84Added sync config options for filters on incoming data. 92Added sync config options for filters on incoming data.
85Added sync config options for filters on outgoing data. 93Added sync config options for filters on outgoing data.
86Please read the updated SyncHowTo about the new filter settings. 94Please read the updated SyncHowTo about the new filter settings.
87These filter settings make it now possible to sync with shared 95These filter settings make it now possible to sync with shared
88calendars without writing back private or confidential data 96calendars without writing back private or confidential data
89(via the outgoing filters). 97(via the outgoing filters).
90To sync only with particular parts of a shared calendar, 98To sync only with particular parts of a shared calendar,
91the incoming filter settings can be used. 99the incoming filter settings can be used.
92An example can be found in the SyncHowTo. 100An example can be found in the SyncHowTo.
93Same for shared addressbooks. 101Same for shared addressbooks.
94 102
95Added a setting for the global kdepim data storage. 103Added a setting for the global kdepim data storage.
96Usually the data is stored in (yourhomedir/kdepim). 104Usually the data is stored in (yourhomedir/kdepim).
97Now you can set in the Global config dialog TAB, subTAB "Data storage path" 105Now you can set in the Global config dialog TAB, subTAB "Data storage path"
98a directory where all the kdepim data is stored. 106a directory where all the kdepim data is stored.
99That makes it easy to save all kdepim data on a SD card on the Z, for example. 107That makes it easy to save all kdepim data on a SD card on the Z, for example.
100 108
101KO/Pi: 109KO/Pi:
102The timeedit input has a pulldown list for times. 110The timeedit input has a pulldown list for times.
103If opened, this pulldown list should now has the right time highlighted. 111If opened, this pulldown list should now has the right time highlighted.
104Added the possibility to exclude events/todos/journals in a filter. 112Added the possibility to exclude events/todos/journals in a filter.
105You should exclude journals, if you do not want them to sync with a public calendar. 113You should exclude journals, if you do not want them to sync with a public calendar.
106 114
107KA/Pi: 115KA/Pi:
108Added the possibility to in/exclude public/private/confidential contacts to a filter. 116Added the possibility to in/exclude public/private/confidential contacts to a filter.
109If 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 ... 117If 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 ...
110Added printing of card view and details view on desktop. 118Added printing of card view and details view on desktop.
111Printing of list view is not working... 119Printing of list view is not working...
112Added button for removing pictures in contact editor. 120Added button for removing pictures in contact editor.
113Parsing data fix of KA/Pi version 1.9.17. 121Parsing data fix of KA/Pi version 1.9.17.
114Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 122Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
115Fixed some syncing merging problems. 123Fixed some syncing merging problems.
116 124
117 125
118********** VERSION 1.9.17 ************ 126********** VERSION 1.9.17 ************
119 127
120KO/Pi: 128KO/Pi:
121Fixed that tooltips were not updated after moving an item in agenda view. 129Fixed that tooltips were not updated after moving an item in agenda view.
122Fixed a bug in sorting start date for recurring events in list view. 130Fixed a bug in sorting start date for recurring events in list view.
123Changed the left button in todo viewer from "Agenda" to "Set completed". 131Changed the left button in todo viewer from "Agenda" to "Set completed".
124This 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. 132This 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.
125Added more info in the todo viewer: Startdate, parent/sub todos. 133Added more info in the todo viewer: Startdate, parent/sub todos.
126 134
127 135
128KA/Pi: 136KA/Pi:
129All fields search does now actually search all the (possible) fields, 137All fields search does now actually search all the (possible) fields,
130not only those listed in the contact list. 138not only those listed in the contact list.
131Made is possible to inline a picture in a vcard on the Z. 139Made is possible to inline a picture in a vcard on the Z.
132This was only possible on the desktop, now is it possible on the Z as well. 140This was only possible on the desktop, now is it possible on the Z as well.
133Fixed of missing save settings after filter configuration. 141Fixed of missing save settings after filter configuration.
134Made saving of addressbook much faster. 142Made saving of addressbook much faster.
135Fixed extension widget layout problem. 143Fixed extension widget layout problem.
136Fixed saving of default formatted name settings. 144Fixed saving of default formatted name settings.
137Fixed formatted name handling in edit dialog. 145Fixed formatted name handling in edit dialog.
138Added an option for changing formatted names of many contacts 146Added an option for changing formatted names of many contacts
139(menu: File - Change - Set formatted name). 147(menu: File - Change - Set formatted name).
140 148
141QWhatsThis was not working on the Z ( only black rectangle was shown). 149QWhatsThis was not working on the Z ( only black rectangle was shown).
142This is Fixed. 150This is Fixed.
143 151
144KDE-Sync: 152KDE-Sync:
145Now readonly KDE resources are synced as well. 153Now readonly KDE resources are synced as well.
146(They are not changed in KDE itself, of course). 154(They are not changed in KDE itself, of course).
147 155
148 156
149 157
150********** VERSION 1.9.16 ************ 158********** VERSION 1.9.16 ************
151 159
152KO/Pi: 160KO/Pi:
153Fixed search dialog size on Z 6000 (480x640 display). 161Fixed search dialog size on Z 6000 (480x640 display).
154Added setting to hide/show time in agenda items. 162Added setting to hide/show time in agenda items.
155Added setting to hide not running todos in todo view. 163Added setting to hide not running todos in todo view.
156Added columns for start date/time in todo view. 164Added columns for start date/time in todo view.
157Replaced the solid half-hour lines in agenda view by dot lines. 165Replaced the solid half-hour lines in agenda view by dot lines.
158Added possibility of printing the What's Next View on the desktop 166Added possibility of printing the What's Next View on the desktop
159(i.e. Windows and Linux). 167(i.e. Windows and Linux).
160Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 168Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
161Added tooltips in month view.(Tooltips only available on desktop) 169Added tooltips in month view.(Tooltips only available on desktop)
162 170
163Fixed a strange problem in KO/Pi alarm applet. 171Fixed a strange problem in KO/Pi alarm applet.
164Did not find the actual problem, 172Did not find the actual problem,
165such that now Qtopia reboots again if deinstalling the alarm applet. 173such that now Qtopia reboots again if deinstalling the alarm applet.
166But the alarm applet should work again. 174But the alarm applet should work again.
167 175
168KA/Pi: 176KA/Pi:
169Fixed the problem, that internal pictures were not saved. 177Fixed the problem, that internal pictures were not saved.
170 178
171Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 179Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
172 180
173Fixed some minor problems. (Like word wrap in help text windows). 181Fixed some minor problems. (Like word wrap in help text windows).
174 182
175Fixed a compiling problem in microkde/kresources. 183Fixed a compiling problem in microkde/kresources.
176 184
177KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 185KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
178This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 186This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
179such that now syncing KO/Pi with Sharp DTM should work on the 187such that now syncing KO/Pi with Sharp DTM should work on the
180Zaurus C 3000 model. 188Zaurus C 3000 model.
181 189
182********** VERSION 1.9.15 ************ 190********** VERSION 1.9.15 ************
183 191
184Usebilty enhancements in KO/Pi: 192Usebilty enhancements in KO/Pi:
185When clicking on the date in a month view cell, the day view is shown. 193When clicking on the date in a month view cell, the day view is shown.
186Old behaviour was, that the "new event" dialog popped up. 194Old behaviour was, that the "new event" dialog popped up.
187 195
188Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 196Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
189That means, you can restore the latest 197That means, you can restore the latest
190event/todo/journal you have deleted. 198event/todo/journal you have deleted.
191A journal is deleted, if you clear all the text of the journal. 199A journal is deleted, if you clear all the text of the journal.
192 200
193Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 201Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
194 202
195KA/Pi starting in 480x640 resolution: 203KA/Pi starting in 480x640 resolution:
196Hide the filter action in toolbar 204Hide the filter action in toolbar
197and added icons for undo/delete/redo in toolbar. 205and added icons for undo/delete/redo in toolbar.
198 206
199Change in OM/Pi ViewMail dialog: 207Change in OM/Pi ViewMail dialog:
200When clicking on the "delete" icon the mail is deleted after confirmation as usual. 208When clicking on the "delete" icon the mail is deleted after confirmation as usual.
201But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 209But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
202 210
203Fixed a crash when deleting mail-accounts in OM/Pi. 211Fixed a crash when deleting mail-accounts in OM/Pi.
204 212
205 213
206********** VERSION 1.9.14 ************ 214********** VERSION 1.9.14 ************
207 215
208Fixed some problems with the dialog sizes when switching 216Fixed some problems with the dialog sizes when switching
209portrait/landscape mode on 640x480 PDA display. 217portrait/landscape mode on 640x480 PDA display.
210 218
211Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 219Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
212 220
213Fixed an ugly bug in KOpieMail: 221Fixed an ugly bug in KOpieMail:
214KOpieMail was not able to write files (mails) to MSDOS file system, 222KOpieMail was not able to write files (mails) to MSDOS file system,
215like on an usual preformatted SD card. That should work now. 223like on an usual preformatted SD card. That should work now.
216To save your mail data on the Sd card do the following: 224To save your mail data on the Sd card do the following:
217Create a dir on the SD card: 225Create a dir on the SD card:
218mkdir /mnt/card/localmail 226mkdir /mnt/card/localmail
219Go to your home dir: 227Go to your home dir:
220cd 228cd
221Go to kopiemail data storage dir: 229Go to kopiemail data storage dir:
222cd kdepim/apps/kopiemail 230cd kdepim/apps/kopiemail
223Create a symlink to the SD card: 231Create a symlink to the SD card:
224ls -s /mnt/card/localmail 232ls -s /mnt/card/localmail
225Now KOpieMail will store all mails on the SD card. 233Now KOpieMail will store all mails on the SD card.
226 234
227KO/Pi Monthview: 235KO/Pi Monthview:
228Now "Go to Today" selects the current month from day 1-end, 236Now "Go to Today" selects the current month from day 1-end,
229not the current date + some days. 237not the current date + some days.
230I.e. "Go to Today" shows now always 238I.e. "Go to Today" shows now always
231the current month with first day of month in the first row. 239the current month with first day of month in the first row.
232 240
233Added missing German translation. 241Added missing German translation.
234 242
235Fixed icons of executeable on Wintendo. 243Fixed icons of executeable on Wintendo.
236 244
237Added a "Show next Mail" button to the OM/Pi 245Added a "Show next Mail" button to the OM/Pi
238mail viewer such that the mail below the current mail 246mail viewer such that the mail below the current mail
239in the mail list view of the current folder 247in the mail list view of the current folder
240can be read with a single click. 248can be read with a single click.
241 249
242 250
243********** VERSION 1.9.13 ************ 251********** VERSION 1.9.13 ************
244 252
245Fixed nasty PwM/Pi file reading bug, when 253Fixed nasty PwM/Pi file reading bug, when
246the used hash algo of file is different then the global 254the used hash algo of file is different then the global
247hash algo. 255hash algo.
248 256
249Added KA/Pi support for opie mailit mailapplication. 257Added KA/Pi support for opie mailit mailapplication.
250 258
251Fixed some bugs in OM/Pi. 259Fixed some bugs in OM/Pi.
252Now character conversion tables are available for the Zaurus 260Now character conversion tables are available for the Zaurus
253to make OM/Pi working properly. 261to make OM/Pi working properly.
254To get the character conversion in OM/Pi working, please download 262To get the character conversion in OM/Pi working, please download
255at the sourceforge project site the package 263at the sourceforge project site the package
256sr-character-conversion_SharpROM_arm.ipk.zip 264sr-character-conversion_SharpROM_arm.ipk.zip
257(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 265(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
258from the section "general files for KDE/Pim" 266from the section "general files for KDE/Pim"
259Instructions how to install this package are in a ReadMe in this file. 267Instructions how to install this package are in a ReadMe in this file.
260 268
261 269
262Fixed the orientation change problem in KA/Pi when switching 270Fixed the orientation change problem in KA/Pi when switching
263portrait/landscape mode. 271portrait/landscape mode.
264 272
265French translation available for KA/Pi and OM/Pi. 273French translation available for KA/Pi and OM/Pi.
266 274
267Fixed some problems with categories in KO/Pi in DTM sync. 275Fixed some problems with categories in KO/Pi in DTM sync.
268 276
269Added selection dialog for export to phone in KA/Pi. 277Added selection dialog for export to phone in KA/Pi.
270 278
271If in KO/Pi is an attendee selected to add to a meeting and this 279If in KO/Pi is an attendee selected to add to a meeting and this
272attendee is already in the list of attendees, this person is not added 280attendee is already in the list of attendees, this person is not added
273again. 281again.
274 282
275Some menu cleanup in KA/Pi. 283Some menu cleanup in KA/Pi.
276 284
277********** VERSION 1.9.12 ************ 285********** VERSION 1.9.12 ************
278 286
279Fix for the bug in KO/Pi What's Next view of version 1.9.11. 287Fix for the bug in KO/Pi What's Next view of version 1.9.11.
280 288
281Bugfix: Licence file is now shown again. 289Bugfix: Licence file is now shown again.
282 290
283OM/Pi now supports Unicode (utf8 charset). 291OM/Pi now supports Unicode (utf8 charset).
284Fixed some bugs in OM/Pi. 292Fixed some bugs in OM/Pi.
285 293
286KA/Pi has more German translation. 294KA/Pi has more German translation.
287 295
288 296
289********** VERSION 1.9.11 ************ 297********** VERSION 1.9.11 ************
290 298
291Fixed several problems in PWM/Pi, like 299Fixed several problems in PWM/Pi, like
292asking the user, if unsaved changed are pending 300asking the user, if unsaved changed are pending
293when closing the app. 301when closing the app.
294And PwM/Pi handles now different texts for the 302And PwM/Pi handles now different texts for the
295fields Description, Username, Password, configurable per category. 303fields Description, Username, Password, configurable per category.
296 304
297Fixed a crash in KO/Pi , when importing/loading vcs files 305Fixed a crash in KO/Pi , when importing/loading vcs files
298which have an entry with an attendee with state: 306which have an entry with an attendee with state:
299NEEDS ACTION 307NEEDS ACTION
300 308
301Fixed some problems in the German translation of OM/Pi, 309Fixed some problems in the German translation of OM/Pi,
302which makes some dialogs not fitting on the screen 310which makes some dialogs not fitting on the screen
303of the Z 5500. 311of the Z 5500.
304 312
305Fixed Qtopia crash, when disabling/deinstalling 313Fixed Qtopia crash, when disabling/deinstalling
306KO/Pi alarm applet. 314KO/Pi alarm applet.
307 315
308Implemented direct KDE<->KA/Pi sync for KA/Pi running 316Implemented direct KDE<->KA/Pi sync for KA/Pi running
309on Linux desktop. 317on Linux desktop.
310 318
311Added feature "remove sync info" to sync menu. 319Added feature "remove sync info" to sync menu.
312 320
313Tweaked the KO/Pi What's next view a bit, added 321Tweaked the KO/Pi What's next view a bit, added
314setting to hide events that are done. 322setting to hide events that are done.
315 323
316Disabled "beam receive enabled" on startup to 324Disabled "beam receive enabled" on startup to
317avoid problems if Fastload is enabled. 325avoid problems if Fastload is enabled.
318Please set "beam receive enabled", 326Please set "beam receive enabled",
319if you want to receive data via IR. 327if you want to receive data via IR.
320 328
321Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 329Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
322on Linux desktop. 330on Linux desktop.
323 331
324Made in KA/Pi scrolling possible, if details view is selected. 332Made in KA/Pi scrolling possible, if details view is selected.
325(The keyboard focus is set automatically to the search line) 333(The keyboard focus is set automatically to the search line)
326 334
327Fixed a bug in DMT sync, that a new entry in DTM was added 335Fixed a bug in DMT sync, that a new entry in DTM was added
328on every sync to Kx/Pi. 336on every sync to Kx/Pi.
329 337
330Fixed missing writing of KA/Pi categories to DMT entries when syncing. 338Fixed missing writing of KA/Pi categories to DMT entries when syncing.
331 339
332Fixed a bug in DMT sync with todos created in KO/Pi containing 340Fixed a bug in DMT sync with todos created in KO/Pi containing
333non-latin1 characters. 341non-latin1 characters.
334 342
335Rearranged package contents of Sharp-ipks and made all 343Rearranged package contents of Sharp-ipks and made all
336packages installable on SD again. 344packages installable on SD again.
337 345
338Fixed the writing of addressbook data in DTM sync. 346Fixed the writing of addressbook data in DTM sync.
339Empty fields in KA/Pi were not removed. 347Empty fields in KA/Pi were not removed.
340 348
341Added better category handling in KA/Pi: 349Added better category handling in KA/Pi:
342Added item 350Added item
343Edit Categories and 351Edit Categories and
344Manage new categories 352Manage new categories
345to the settings menu. 353to the settings menu.
346Possible to configure a view to display categories. 354Possible to configure a view to display categories.
347 355
348Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 356Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
349 357
350Fixed displaying of "free" days and time in KO Monthview and Agendaview. 358Fixed displaying of "free" days and time in KO Monthview and Agendaview.
351 359
352... and many other bugfixes. 360... and many other bugfixes.
353 361
354********** VERSION 1.9.10 ************ 362********** VERSION 1.9.10 ************
355 363
356Many internal small bugfixes. 364Many internal small bugfixes.
357And fix of the "big" bug in KO/Pi, 365And fix of the "big" bug in KO/Pi,
358that after Syncing the appointments had an offset by several hours. 366that after Syncing the appointments had an offset by several hours.
359That was a problem with the internal timezone setting, 367That was a problem with the internal timezone setting,
360introduced by the changed timezone configuration settings. 368introduced by the changed timezone configuration settings.
361 369
362German translation for OM/Pi is now available. 370German translation for OM/Pi is now available.
363 371
364 372
365********** VERSION 1.9.9 ************ 373********** VERSION 1.9.9 ************
366 374
367KDE-Pim/Pi has a new Member! 375KDE-Pim/Pi has a new Member!
368It is called PWM/Pi (Passwordmanager/platform-independent) 376It is called PWM/Pi (Passwordmanager/platform-independent)
369and it is available for the Zaurus. 377and it is available for the Zaurus.
370It is planned, that it will be available later for Windows. 378It is planned, that it will be available later for Windows.
371(And for Linux, of course). 379(And for Linux, of course).
372It is a port of the Passwordmanager of KDE. 380It is a port of the Passwordmanager of KDE.
373It will need the MicroKDElibs to run. 381It will need the MicroKDElibs to run.
374 382
375Made loading of addressbooks in KA/Pi up to 7 times faster! 383Made loading of addressbooks in KA/Pi up to 7 times faster!
376The bigger your addressbook file, the more starting speed 384The bigger your addressbook file, the more starting speed
377will you gain. (relatively) 385will you gain. (relatively)
378 386
379The Qtopia addressbook connector is now platform independend 387The Qtopia addressbook connector is now platform independend
380as well and should work on any platform for importing/exporting 388as well and should work on any platform for importing/exporting
381Qtopia and Opie XML files. 389Qtopia and Opie XML files.
382 390
383Added a +30min feature to the timezone settings to make 391Added a +30min feature to the timezone settings to make
384KDE-Pim/Pi useable in Australia and other parts on the 392KDE-Pim/Pi useable in Australia and other parts on the
385world with strange timezones ;-) 393world with strange timezones ;-)
386 394
387German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 395German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
388 396
389It is now possible to disable the 397It is now possible to disable the
390"receive data via infrared" feature, such that syncing with 398"receive data via infrared" feature, such that syncing with
391Outlook is now possible again with Kx/Pi runing. 399Outlook is now possible again with Kx/Pi runing.
392Please disable it, before syncing Sharp DTM with Outlook. 400Please disable it, before syncing Sharp DTM with Outlook.
393For your convenience, the "receive data via infrared" feature 401For your convenience, the "receive data via infrared" feature
394is disabled automatically, if you sync Kx/Pi with DTM. 402is disabled automatically, if you sync Kx/Pi with DTM.
395You have to enable it again manually after syncing. 403You have to enable it again manually after syncing.
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 22486ba..1fb480d 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -659,554 +659,560 @@ QMap<Todo *,KOTodoViewItem *>::ConstIterator
659 659
660 pendingSubtodo = 0; 660 pendingSubtodo = 0;
661 Incidence *incidence = todo->relatedTo(); 661 Incidence *incidence = todo->relatedTo();
662 if (incidence && incidence->type() == "Todo") { 662 if (incidence && incidence->type() == "Todo") {
663 Todo *relatedTodo = static_cast<Todo *>(incidence); 663 Todo *relatedTodo = static_cast<Todo *>(incidence);
664 664
665// kdDebug() << " has Related" << endl; 665// kdDebug() << " has Related" << endl;
666 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 666 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
667 itemIterator = mTodoMap.find(relatedTodo); 667 itemIterator = mTodoMap.find(relatedTodo);
668 if (itemIterator == mTodoMap.end()) { 668 if (itemIterator == mTodoMap.end()) {
669// kdDebug() << " related not yet in list" << endl; 669// kdDebug() << " related not yet in list" << endl;
670 itemIterator = insertTodoItem (relatedTodo); 670 itemIterator = insertTodoItem (relatedTodo);
671 } 671 }
672 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem 672 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem
673 // and one into the map. Sure finding is more easy but why? -zecke 673 // and one into the map. Sure finding is more easy but why? -zecke
674 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); 674 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this);
675 return mTodoMap.insert(todo,todoItem); 675 return mTodoMap.insert(todo,todoItem);
676 } else { 676 } else {
677// kdDebug() << " no Related" << endl; 677// kdDebug() << " no Related" << endl;
678 // see above -zecke 678 // see above -zecke
679 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 679 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
680 return mTodoMap.insert(todo,todoItem); 680 return mTodoMap.insert(todo,todoItem);
681 } 681 }
682} 682}
683 683
684 684
685void KOTodoView::updateConfig() 685void KOTodoView::updateConfig()
686{ 686{
687 updateView(); 687 updateView();
688 mTodoListView->repaintContents(); 688 mTodoListView->repaintContents();
689} 689}
690 690
691QPtrList<Incidence> KOTodoView::selectedIncidences() 691QPtrList<Incidence> KOTodoView::selectedIncidences()
692{ 692{
693 QPtrList<Incidence> selected; 693 QPtrList<Incidence> selected;
694 694
695 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 695 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
696// if (!item) item = mActiveItem; 696// if (!item) item = mActiveItem;
697 if (item) selected.append(item->todo()); 697 if (item) selected.append(item->todo());
698 698
699 return selected; 699 return selected;
700} 700}
701 701
702QPtrList<Todo> KOTodoView::selectedTodos() 702QPtrList<Todo> KOTodoView::selectedTodos()
703{ 703{
704 QPtrList<Todo> selected; 704 QPtrList<Todo> selected;
705 705
706 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 706 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
707// if (!item) item = mActiveItem; 707// if (!item) item = mActiveItem;
708 if (item) selected.append(item->todo()); 708 if (item) selected.append(item->todo());
709 709
710 return selected; 710 return selected;
711} 711}
712 712
713void KOTodoView::changeEventDisplay(Event *, int) 713void KOTodoView::changeEventDisplay(Event *, int)
714{ 714{
715 updateView(); 715 updateView();
716} 716}
717 717
718void KOTodoView::showDates(const QDate &, const QDate &) 718void KOTodoView::showDates(const QDate &, const QDate &)
719{ 719{
720} 720}
721 721
722void KOTodoView::showEvents(QPtrList<Event>) 722void KOTodoView::showEvents(QPtrList<Event>)
723{ 723{
724 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; 724 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl;
725} 725}
726 726
727void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, 727void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd,
728 const QDate &td) 728 const QDate &td)
729{ 729{
730#ifndef KORG_NOPRINTER 730#ifndef KORG_NOPRINTER
731 calPrinter->preview(CalPrinter::Todolist, fd, td); 731 calPrinter->preview(CalPrinter::Todolist, fd, td);
732#endif 732#endif
733} 733}
734 734
735void KOTodoView::editItem(QListViewItem *item ) 735void KOTodoView::editItem(QListViewItem *item )
736{ 736{
737 // qDebug("editItem(QListViewItem *item ) "); 737 // qDebug("editItem(QListViewItem *item ) ");
738 emit editTodoSignal(((KOTodoViewItem *)item)->todo()); 738 emit editTodoSignal(((KOTodoViewItem *)item)->todo());
739} 739}
740 740
741void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) 741void KOTodoView::showItem(QListViewItem *item,const QPoint &,int)
742{ 742{
743 emit showTodoSignal(((KOTodoViewItem *)item)->todo()); 743 emit showTodoSignal(((KOTodoViewItem *)item)->todo());
744} 744}
745 745
746void KOTodoView::popupMenu(QListViewItem *item,const QPoint &,int column) 746void KOTodoView::popupMenu(QListViewItem *item,const QPoint &,int column)
747{ 747{
748 pendingSubtodo = 0; 748 pendingSubtodo = 0;
749 mActiveItem = (KOTodoViewItem *)item; 749 mActiveItem = (KOTodoViewItem *)item;
750 if (item) { 750 if (item) {
751 switch (column){ 751 switch (column){
752 case 1: 752 case 1:
753 mPriorityPopupMenu->popup(QCursor::pos ()); break; 753 mPriorityPopupMenu->popup(QCursor::pos ()); break;
754 case 2: 754 case 2:
755 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; 755 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break;
756 case 3: 756 case 3:
757 moveTodo(); 757 moveTodo();
758 break; 758 break;
759 case 8: 759 case 8:
760 getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break; 760 getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break;
761 default: 761 default:
762 mItemPopupMenu->popup(QCursor::pos()); 762 mItemPopupMenu->popup(QCursor::pos());
763 } 763 }
764 } else mPopupMenu->popup(QCursor::pos()); 764 } else mPopupMenu->popup(QCursor::pos());
765} 765}
766void KOTodoView::newTodo() 766void KOTodoView::newTodo()
767{ 767{
768 emit newTodoSignal(); 768 emit newTodoSignal();
769} 769}
770 770
771void KOTodoView::newSubTodo() 771void KOTodoView::newSubTodo()
772{ 772{
773 if (mActiveItem) { 773 if (mActiveItem) {
774 emit newSubTodoSignal(mActiveItem->todo()); 774 emit newSubTodoSignal(mActiveItem->todo());
775 } 775 }
776} 776}
777void KOTodoView::unparentTodo() 777void KOTodoView::unparentTodo()
778{ 778{
779 if (mActiveItem) { 779 if (mActiveItem) {
780 emit unparentTodoSignal(mActiveItem->todo()); 780 emit unparentTodoSignal(mActiveItem->todo());
781 } 781 }
782} 782}
783 783
784void KOTodoView::reparentTodo() 784void KOTodoView::reparentTodo()
785{ 785{
786 if (mActiveItem) { 786 if (mActiveItem) {
787 qDebug("KOTodoView::reparentTodo() "); 787 qDebug("KOTodoView::reparentTodo() ");
788 topLevelWidget()->setCaption(i18n("Click on new parent item")); 788 topLevelWidget()->setCaption(i18n("Click on new parent item"));
789 pendingSubtodo = mActiveItem; 789 pendingSubtodo = mActiveItem;
790 } 790 }
791} 791}
792void KOTodoView::editTodo() 792void KOTodoView::editTodo()
793{ 793{
794 if (mActiveItem) { 794 if (mActiveItem) {
795 emit editTodoSignal(mActiveItem->todo()); 795 emit editTodoSignal(mActiveItem->todo());
796 } 796 }
797} 797}
798void KOTodoView::cloneTodo() 798void KOTodoView::cloneTodo()
799{ 799{
800 if (mActiveItem) { 800 if (mActiveItem) {
801 emit cloneTodoSignal((Incidence*)mActiveItem->todo()); 801 emit cloneTodoSignal((Incidence*)mActiveItem->todo());
802 } 802 }
803} 803}
804void KOTodoView::cancelTodo() 804void KOTodoView::cancelTodo()
805{ 805{
806 if (mActiveItem) { 806 if (mActiveItem) {
807 emit cancelTodoSignal((Incidence*)mActiveItem->todo()); 807 emit cancelTodoSignal((Incidence*)mActiveItem->todo());
808 } 808 }
809} 809}
810void KOTodoView::moveTodo() 810void KOTodoView::moveTodo()
811{ 811{
812 if (mActiveItem) { 812 if (mActiveItem) {
813 emit moveTodoSignal((Incidence*)mActiveItem->todo()); 813 emit moveTodoSignal((Incidence*)mActiveItem->todo());
814 } 814 }
815} 815}
816void KOTodoView::beamTodo() 816void KOTodoView::beamTodo()
817{ 817{
818 if (mActiveItem) { 818 if (mActiveItem) {
819 emit beamTodoSignal((Incidence*)mActiveItem->todo()); 819 emit beamTodoSignal((Incidence*)mActiveItem->todo());
820 } 820 }
821} 821}
822 822
823 823
824void KOTodoView::showTodo() 824void KOTodoView::showTodo()
825{ 825{
826 if (mActiveItem) { 826 if (mActiveItem) {
827 emit showTodoSignal(mActiveItem->todo()); 827 emit showTodoSignal(mActiveItem->todo());
828 } 828 }
829} 829}
830 830
831void KOTodoView::deleteTodo() 831void KOTodoView::deleteTodo()
832{ 832{
833 if (mActiveItem) { 833 if (mActiveItem) {
834 emit deleteTodoSignal(mActiveItem->todo()); 834 emit deleteTodoSignal(mActiveItem->todo());
835 } 835 }
836} 836}
837 837
838void KOTodoView::setNewPriority(int index) 838void KOTodoView::setNewPriority(int index)
839{ 839{
840 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 840 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
841 mActiveItem->todo()->setPriority(mPriority[index]); 841 mActiveItem->todo()->setPriority(mPriority[index]);
842 mActiveItem->construct(); 842 mActiveItem->construct();
843 todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); 843 todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED);
844 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 844 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
845 } 845 }
846} 846}
847 847
848void KOTodoView::setNewPercentage(int index) 848void KOTodoView::setNewPercentage(int index)
849{ 849{
850 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 850 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
851 if (mPercentage[index] == 100) { 851 if (mPercentage[index] == 100) {
852 mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); 852 mActiveItem->todo()->setCompleted(QDateTime::currentDateTime());
853 } else { 853 } else {
854 mActiveItem->todo()->setCompleted(false); 854 mActiveItem->todo()->setCompleted(false);
855 } 855 }
856 mActiveItem->todo()->setPercentComplete(mPercentage[index]); 856 mActiveItem->todo()->setPercentComplete(mPercentage[index]);
857 mActiveItem->construct(); 857 mActiveItem->construct();
858 todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); 858 todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED);
859 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 859 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
860 } 860 }
861} 861}
862 862
863 863
864QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem) 864QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem)
865{ 865{
866 QPopupMenu* tempMenu = new QPopupMenu (this); 866 QPopupMenu* tempMenu = new QPopupMenu (this);
867 QStringList checkedCategories = todoItem->todo()->categories (); 867 QStringList checkedCategories = todoItem->todo()->categories ();
868 868
869 tempMenu->setCheckable (true); 869 tempMenu->setCheckable (true);
870 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); 870 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin ();
871 it != KOPrefs::instance()->mCustomCategories.end (); 871 it != KOPrefs::instance()->mCustomCategories.end ();
872 ++it) { 872 ++it) {
873 int index = tempMenu->insertItem (*it); 873 int index = tempMenu->insertItem (*it);
874 mCategory[index] = *it; 874 mCategory[index] = *it;
875 if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true); 875 if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true);
876 } 876 }
877 877
878 connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); 878 connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int)));
879 return tempMenu; 879 return tempMenu;
880 880
881 881
882} 882}
883void KOTodoView::changedCategories(int index) 883void KOTodoView::changedCategories(int index)
884{ 884{
885 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 885 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
886 QStringList categories = mActiveItem->todo()->categories (); 886 QStringList categories = mActiveItem->todo()->categories ();
887 if (categories.find (mCategory[index]) != categories.end ()) 887 if (categories.find (mCategory[index]) != categories.end ())
888 categories.remove (mCategory[index]); 888 categories.remove (mCategory[index]);
889 else 889 else
890 categories.insert (categories.end(), mCategory[index]); 890 categories.insert (categories.end(), mCategory[index]);
891 categories.sort (); 891 categories.sort ();
892 mActiveItem->todo()->setCategories (categories); 892 mActiveItem->todo()->setCategories (categories);
893 mActiveItem->construct(); 893 mActiveItem->construct();
894 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 894 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
895 todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); 895 todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED);
896 } 896 }
897} 897}
898void KOTodoView::itemDoubleClicked(QListViewItem *item) 898void KOTodoView::itemDoubleClicked(QListViewItem *item)
899{ 899{
900 if ( pendingSubtodo != 0 ) { 900 if ( pendingSubtodo != 0 ) {
901 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 901 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
902 } 902 }
903 pendingSubtodo = 0; 903 pendingSubtodo = 0;
904 if (!item) { 904 if (!item) {
905 newTodo(); 905 newTodo();
906 return; 906 return;
907 } 907 }
908 if ( KOPrefs::instance()->mEditOnDoubleClick ) 908 if ( KOPrefs::instance()->mEditOnDoubleClick )
909 editItem( item ); 909 editItem( item );
910 else 910 else
911 showItem( item , QPoint(), 0 ); 911 showItem( item , QPoint(), 0 );
912} 912}
913void KOTodoView::itemClicked(QListViewItem *item) 913void KOTodoView::itemClicked(QListViewItem *item)
914{ 914{
915 915
916 if (!item) { 916 if (!item) {
917 if ( pendingSubtodo != 0 ) { 917 if ( pendingSubtodo != 0 ) {
918 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 918 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
919 } 919 }
920 pendingSubtodo = 0; 920 pendingSubtodo = 0;
921 return; 921 return;
922 } 922 }
923 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 923 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
924 if ( pendingSubtodo != 0 ) { 924 if ( pendingSubtodo != 0 ) {
925 bool allowReparent = true; 925 bool allowReparent = true;
926 QListViewItem *par = item; 926 QListViewItem *par = item;
927 while ( par ) { 927 while ( par ) {
928 if ( par == pendingSubtodo ) { 928 if ( par == pendingSubtodo ) {
929 allowReparent = false; 929 allowReparent = false;
930 break; 930 break;
931 } 931 }
932 par = par->parent(); 932 par = par->parent();
933 } 933 }
934 if ( !allowReparent ) { 934 if ( !allowReparent ) {
935 topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!")); 935 topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!"));
936 qDebug("Recursive reparenting not possible "); 936 qDebug("Recursive reparenting not possible ");
937 pendingSubtodo = 0; 937 pendingSubtodo = 0;
938 } else { 938 } else {
939 Todo* newParent = todoItem->todo(); 939 Todo* newParent = todoItem->todo();
940 Todo* newSub = pendingSubtodo->todo(); 940 Todo* newSub = pendingSubtodo->todo();
941 pendingSubtodo = 0; 941 pendingSubtodo = 0;
942 emit reparentTodoSignal( newParent,newSub ); 942 emit reparentTodoSignal( newParent,newSub );
943 return; 943 return;
944 } 944 }
945 } 945 }
946 int completed = todoItem->todo()->isCompleted(); // Completed or not? 946 int completed = todoItem->todo()->isCompleted(); // Completed or not?
947 947
948 if (todoItem->isOn()) { 948 if (todoItem->isOn()) {
949 if (!completed) { 949 if (!completed) {
950 todoItem->todo()->setCompleted(QDateTime::currentDateTime()); 950 todoItem->todo()->setCompleted(QDateTime::currentDateTime());
951 } 951 }
952 } else { 952 } else {
953 if (completed) { 953 if (completed) {
954 todoItem->todo()->setCompleted(false); 954 todoItem->todo()->setCompleted(false);
955 } 955 }
956 } 956 }
957} 957}
958 958
959void KOTodoView::setDocumentId( const QString &id ) 959void KOTodoView::setDocumentId( const QString &id )
960{ 960{
961 kdDebug() << "KOTodoView::setDocumentId()" << endl; 961 kdDebug() << "KOTodoView::setDocumentId()" << endl;
962 962
963 mDocPrefs->setDoc( id ); 963 mDocPrefs->setDoc( id );
964} 964}
965 965
966void KOTodoView::itemStateChanged( QListViewItem *item ) 966void KOTodoView::itemStateChanged( QListViewItem *item )
967{ 967{
968 if (!item) return; 968 if (!item) return;
969 969
970 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 970 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
971 971
972// kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; 972// kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl;
973 973
974 if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); 974 if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() );
975} 975}
976 976
977void KOTodoView::saveLayout(KConfig *config, const QString &group) const 977void KOTodoView::saveLayout(KConfig *config, const QString &group) const
978{ 978{
979 mTodoListView->saveLayout(config,group); 979 mTodoListView->saveLayout(config,group);
980} 980}
981 981
982void KOTodoView::restoreLayout(KConfig *config, const QString &group) 982void KOTodoView::restoreLayout(KConfig *config, const QString &group)
983{ 983{
984 mTodoListView->restoreLayout(config,group); 984 mTodoListView->restoreLayout(config,group);
985} 985}
986 986
987void KOTodoView::processSelectionChange() 987void KOTodoView::processSelectionChange()
988{ 988{
989// kdDebug() << "KOTodoView::processSelectionChange()" << endl; 989// kdDebug() << "KOTodoView::processSelectionChange()" << endl;
990 990
991 KOTodoViewItem *item = 991 KOTodoViewItem *item =
992 static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); 992 static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() );
993 993
994 if ( !item ) { 994 if ( !item ) {
995 emit incidenceSelected( 0 ); 995 emit incidenceSelected( 0 );
996 } else { 996 } else {
997 emit incidenceSelected( item->todo() ); 997 emit incidenceSelected( item->todo() );
998 } 998 }
999} 999}
1000 1000
1001void KOTodoView::modified(bool b) 1001void KOTodoView::modified(bool b)
1002{ 1002{
1003 emit isModified(b); 1003 emit isModified(b);
1004} 1004}
1005void KOTodoView::setTodoModified( Todo* todo ) 1005void KOTodoView::setTodoModified( Todo* todo )
1006{ 1006{
1007 todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); 1007 todoModified( todo, KOGlobals::UNKNOWN_MODIFIED );
1008} 1008}
1009void KOTodoView::clearSelection() 1009void KOTodoView::clearSelection()
1010{ 1010{
1011 mTodoListView->selectAll( false ); 1011 mTodoListView->selectAll( false );
1012} 1012}
1013void KOTodoView::setAllOpen() 1013void KOTodoView::setAllOpen()
1014{ 1014{
1015 if ( isFlatDisplay ) { 1015 if ( isFlatDisplay ) {
1016 isFlatDisplay = false; 1016 isFlatDisplay = false;
1017 mPopupMenu->setItemChecked( 8,false ); 1017 mPopupMenu->setItemChecked( 8,false );
1018 updateView(); 1018 updateView();
1019 } 1019 }
1020 setOpen(mTodoListView->firstChild(), true); 1020 setOpen(mTodoListView->firstChild(), true);
1021} 1021}
1022void KOTodoView::setAllClose() 1022void KOTodoView::setAllClose()
1023{ 1023{
1024 if ( isFlatDisplay ) { 1024 if ( isFlatDisplay ) {
1025 isFlatDisplay = false; 1025 isFlatDisplay = false;
1026 mPopupMenu->setItemChecked( 8,false ); 1026 mPopupMenu->setItemChecked( 8,false );
1027 updateView(); 1027 updateView();
1028 } 1028 }
1029 setOpen(mTodoListView->firstChild(), false); 1029 setOpen(mTodoListView->firstChild(), false);
1030} 1030}
1031void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) 1031void KOTodoView::setOpen( QListViewItem* item, bool setOpenI)
1032{ 1032{
1033 1033
1034 while ( item ) { 1034 while ( item ) {
1035 setOpen( item->firstChild(), setOpenI ); 1035 setOpen( item->firstChild(), setOpenI );
1036 item->setOpen( setOpenI ); 1036 item->setOpen( setOpenI );
1037 item = item->nextSibling(); 1037 item = item->nextSibling();
1038 } 1038 }
1039} 1039}
1040 1040
1041void KOTodoView::setAllFlat() 1041void KOTodoView::setAllFlat()
1042{ 1042{
1043 if ( isFlatDisplay ) {
1044 isFlatDisplay = false;
1045 mPopupMenu->setItemChecked( 8,false );
1046 updateView();
1047 return;
1048 }
1043 pendingSubtodo = 0; 1049 pendingSubtodo = 0;
1044 if ( mBlockUpdate ) { 1050 if ( mBlockUpdate ) {
1045 return; 1051 return;
1046 } 1052 }
1047 mPopupMenu->setItemChecked( 8,true ); 1053 mPopupMenu->setItemChecked( 8,true );
1048 isFlatDisplay = true; 1054 isFlatDisplay = true;
1049 QPtrList<Todo> todoList = calendar()->todos(); 1055 QPtrList<Todo> todoList = calendar()->todos();
1050 mTodoMap.clear(); 1056 mTodoMap.clear();
1051 mTodoListView->clear(); 1057 mTodoListView->clear();
1052 Todo *todo; 1058 Todo *todo;
1053 for(todo = todoList.first(); todo; todo = todoList.next()) { 1059 for(todo = todoList.first(); todo; todo = todoList.next()) {
1054 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 1060 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
1055 mTodoMap.insert(todo,todoItem); 1061 mTodoMap.insert(todo,todoItem);
1056 } 1062 }
1057 mTodoListView->setFocus(); 1063 mTodoListView->setFocus();
1058 processSelectionChange(); 1064 processSelectionChange();
1059} 1065}
1060 1066
1061void KOTodoView::purgeCompleted() 1067void KOTodoView::purgeCompleted()
1062{ 1068{
1063 emit purgeCompletedSignal(); 1069 emit purgeCompletedSignal();
1064} 1070}
1065void KOTodoView::toggleQuickTodo() 1071void KOTodoView::toggleQuickTodo()
1066{ 1072{
1067 if ( mQuickAdd->isVisible() ) { 1073 if ( mQuickAdd->isVisible() ) {
1068 mQuickAdd->hide(); 1074 mQuickAdd->hide();
1069 KOPrefs::instance()->mEnableQuickTodo = false; 1075 KOPrefs::instance()->mEnableQuickTodo = false;
1070 } 1076 }
1071 else { 1077 else {
1072 mQuickAdd->show(); 1078 mQuickAdd->show();
1073 KOPrefs::instance()->mEnableQuickTodo = true; 1079 KOPrefs::instance()->mEnableQuickTodo = true;
1074 } 1080 }
1075 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); 1081 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo);
1076 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); 1082 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo );
1077} 1083}
1078 1084
1079void KOTodoView::toggleRunning() 1085void KOTodoView::toggleRunning()
1080{ 1086{
1081 KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; 1087 KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos;
1082 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); 1088 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos);
1083 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); 1089 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos );
1084 updateView(); 1090 updateView();
1085} 1091}
1086 1092
1087void KOTodoView::toggleCompleted() 1093void KOTodoView::toggleCompleted()
1088{ 1094{
1089 KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; 1095 KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo;
1090 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); 1096 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo );
1091 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); 1097 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo );
1092 updateView(); 1098 updateView();
1093} 1099}
1094 1100
1095void KOTodoView::addQuickTodo() 1101void KOTodoView::addQuickTodo()
1096{ 1102{
1097 Todo *todo = new Todo(); 1103 Todo *todo = new Todo();
1098 todo->setSummary(mQuickAdd->text()); 1104 todo->setSummary(mQuickAdd->text());
1099 todo->setOrganizer(KOPrefs::instance()->email()); 1105 todo->setOrganizer(KOPrefs::instance()->email());
1100 CalFilter * cf = mCalendar->filter(); 1106 CalFilter * cf = mCalendar->filter();
1101 if ( cf ) { 1107 if ( cf ) {
1102 if ( cf->isEnabled()&& cf->showCategories()) { 1108 if ( cf->isEnabled()&& cf->showCategories()) {
1103 todo->setCategories(cf->categoryList()); 1109 todo->setCategories(cf->categoryList());
1104 } 1110 }
1105 if ( cf->isEnabled() ) 1111 if ( cf->isEnabled() )
1106 todo->setSecrecy( cf->getSecrecy()); 1112 todo->setSecrecy( cf->getSecrecy());
1107 } 1113 }
1108 mCalendar->addTodo(todo); 1114 mCalendar->addTodo(todo);
1109 mQuickAdd->setText(""); 1115 mQuickAdd->setText("");
1110 todoModified (todo, KOGlobals::EVENTADDED ); 1116 todoModified (todo, KOGlobals::EVENTADDED );
1111 updateView(); 1117 updateView();
1112} 1118}
1113void KOTodoView::keyPressEvent ( QKeyEvent * e ) 1119void KOTodoView::keyPressEvent ( QKeyEvent * e )
1114{ 1120{
1115 // e->ignore(); 1121 // e->ignore();
1116 //return; 1122 //return;
1117 //qDebug("KOTodoView::keyPressEvent "); 1123 //qDebug("KOTodoView::keyPressEvent ");
1118 switch ( e->key() ) { 1124 switch ( e->key() ) {
1119 case Qt::Key_Down: 1125 case Qt::Key_Down:
1120 case Qt::Key_Up: 1126 case Qt::Key_Up:
1121 QWidget::keyPressEvent ( e ); 1127 QWidget::keyPressEvent ( e );
1122 break; 1128 break;
1123 1129
1124 case Qt::Key_Q: 1130 case Qt::Key_Q:
1125 toggleQuickTodo(); 1131 toggleQuickTodo();
1126 break; 1132 break;
1127 case Qt::Key_U: 1133 case Qt::Key_U:
1128 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { 1134 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) {
1129 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1135 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1130 unparentTodo(); 1136 unparentTodo();
1131 e->accept(); 1137 e->accept();
1132 } else 1138 } else
1133 e->ignore(); 1139 e->ignore();
1134 break; 1140 break;
1135 case Qt::Key_S: 1141 case Qt::Key_S:
1136 if ( e->state() == Qt::ControlButton ) { 1142 if ( e->state() == Qt::ControlButton ) {
1137 e->ignore(); 1143 e->ignore();
1138 break; 1144 break;
1139 } 1145 }
1140 if ( e->state() == Qt::ShiftButton ) { 1146 if ( e->state() == Qt::ShiftButton ) {
1141 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1147 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1142 reparentTodo(); 1148 reparentTodo();
1143 e->accept(); 1149 e->accept();
1144 } else 1150 } else
1145 e->ignore(); 1151 e->ignore();
1146 break; 1152 break;
1147 case Qt::Key_P: 1153 case Qt::Key_P:
1148 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { 1154 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) {
1149 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1155 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1150 if ( pendingSubtodo ) 1156 if ( pendingSubtodo )
1151 itemClicked(mActiveItem); 1157 itemClicked(mActiveItem);
1152 e->accept(); 1158 e->accept();
1153 } else 1159 } else
1154 e->ignore(); 1160 e->ignore();
1155 break; 1161 break;
1156 case Qt::Key_Escape: 1162 case Qt::Key_Escape:
1157 if ( pendingSubtodo ) { 1163 if ( pendingSubtodo ) {
1158 itemClicked(0); 1164 itemClicked(0);
1159 e->accept(); 1165 e->accept();
1160 } else 1166 } else
1161 e->ignore(); 1167 e->ignore();
1162 break; 1168 break;
1163 default: 1169 default:
1164 e->ignore(); 1170 e->ignore();
1165 } 1171 }
1166 1172
1167 if ( true ) { 1173 if ( true ) {
1168 if ( e->key() == Qt::Key_I ) { 1174 if ( e->key() == Qt::Key_I ) {
1169 KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); 1175 KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem();
1170 if ( cn ) { 1176 if ( cn ) {
1171 mActiveItem = cn; 1177 mActiveItem = cn;
1172 KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); 1178 KOTodoViewItem* ci = (KOTodoViewItem*)( cn );
1173 if ( ci ){ 1179 if ( ci ){
1174 showTodo(); 1180 showTodo();
1175 cn = (KOTodoViewItem*)cn->itemBelow(); 1181 cn = (KOTodoViewItem*)cn->itemBelow();
1176 if ( cn ) { 1182 if ( cn ) {
1177 mTodoListView->setCurrentItem ( cn ); 1183 mTodoListView->setCurrentItem ( cn );
1178 mTodoListView->ensureItemVisible ( cn ); 1184 mTodoListView->ensureItemVisible ( cn );
1179 } 1185 }
1180 1186
1181 } 1187 }
1182 } 1188 }
1183 e->accept(); 1189 e->accept();
1184 1190
1185 } 1191 }
1186 1192
1187 } 1193 }
1188 1194
1189} 1195}
1190void KOTodoView::updateTodo( Todo * t, int type ) 1196void KOTodoView::updateTodo( Todo * t, int type )
1191{ 1197{
1192 if ( mBlockUpdate) 1198 if ( mBlockUpdate)
1193 return; 1199 return;
1194 1200
1195 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 1201 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
1196 itemIterator = mTodoMap.find(t); 1202 itemIterator = mTodoMap.find(t);
1197 if (itemIterator != mTodoMap.end()) { 1203 if (itemIterator != mTodoMap.end()) {
1198 (*itemIterator)->construct(); 1204 (*itemIterator)->construct();
1199 } else { 1205 } else {
1200 if ( type == KOGlobals::EVENTADDED ) { 1206 if ( type == KOGlobals::EVENTADDED ) {
1201 insertTodoItem( t ); 1207 insertTodoItem( t );
1202 } 1208 }
1203 } 1209 }
1204 1210
1205} 1211}
1206 1212
1207void KOTodoView::todoModified(Todo * t , int p ) 1213void KOTodoView::todoModified(Todo * t , int p )
1208{ 1214{
1209 mBlockUpdate = true; 1215 mBlockUpdate = true;
1210 emit todoModifiedSignal ( t, p ); 1216 emit todoModifiedSignal ( t, p );
1211 mBlockUpdate = false; 1217 mBlockUpdate = false;
1212} 1218}