summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-03-21 18:04:19 (UTC)
committer zautrix <zautrix>2005-03-21 18:04:19 (UTC)
commit8888389a4511e0bda23774b993dcfdeb7f837c31 (patch) (unidiff)
treecb45be3b62f2255f69cee92e358380cc76d3ad30
parent3c5d7b484e6ab263ab4091f22815770ea8da6c9c (diff)
downloadkdepimpi-8888389a4511e0bda23774b993dcfdeb7f837c31.zip
kdepimpi-8888389a4511e0bda23774b993dcfdeb7f837c31.tar.gz
kdepimpi-8888389a4511e0bda23774b993dcfdeb7f837c31.tar.bz2
nf
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt10
-rw-r--r--korganizer/kodaymatrix.cpp2
2 files changed, 10 insertions, 2 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 8800ada..df2d9d6 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,1082 +1,1090 @@
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.18 ************ 3********** VERSION 2.0.18 ************
4 4KO/Pi:
5Fixed some minor problems. 5Fixed some minor problems.
6Cleaned up the KO/Pi config dialog. 6Cleaned up the KO/Pi config dialog.
7Fixed problem moving events in aganda view.
8Made datepicker scaleable, i.e. if the datepicker shows now a
9datepicker matrix depending on its size.
10Birthdays are now displayed green in the datepicker.
11What'sThis Help in datepicker shows all events of the day.
7 12
13OM/Pi:
14Updated the backend mail library to the latest version.
15Please backup your mail before using this version.
8 16
9********** VERSION 2.0.17 ************ 17********** VERSION 2.0.17 ************
10 18
11KO/Pi: 19KO/Pi:
12Tooltips in month view were not sorted. Fixed. 20Tooltips in month view were not sorted. Fixed.
13Daylabel in agenda view ( for display of one day ) was too short. Fixed. 21Daylabel in agenda view ( for display of one day ) was too short. Fixed.
14Conflict display dialog for syncing was not on top of other windows. Fixed. 22Conflict display dialog for syncing was not on top of other windows. Fixed.
15Fixed some minor problems. 23Fixed some minor problems.
16 24
17Fixed an endless loop when importing vcs file with RESOURCES entry. 25Fixed an endless loop when importing vcs file with RESOURCES entry.
18 26
19********** VERSION 2.0.16 ************ 27********** VERSION 2.0.16 ************
20OM/Pi: 28OM/Pi:
21Fixed the SMTP account setting the option. 29Fixed the SMTP account setting the option.
22Fixed something in mail sending. 30Fixed something in mail sending.
23 31
24KO/Pi: 32KO/Pi:
25Added possibility to export selected events/todos as vcal file. 33Added possibility to export selected events/todos as vcal file.
26 34
27********** VERSION 2.0.15 ************ 35********** VERSION 2.0.15 ************
28 36
29PwM/Pi: 37PwM/Pi:
30Added keyboard shorcuts for 38Added keyboard shorcuts for
31- toggling summary view (space bar) 39- toggling summary view (space bar)
32- delete item (delete + backspace key) 40- delete item (delete + backspace key)
33- add new item ( i + n key) 41- add new item ( i + n key)
34Fixed length of info in the title. 42Fixed length of info in the title.
35 43
36KO/Pi-KA/Pi: 44KO/Pi-KA/Pi:
37Changed "ME" menu bar entry to an icon. 45Changed "ME" menu bar entry to an icon.
38 46
39KO/Pi: 47KO/Pi:
40Fixed two minor bugs in displaying todos. 48Fixed two minor bugs in displaying todos.
41If in month view a cell is selected, the key shortcut "d" shows now that date. 49If in month view a cell is selected, the key shortcut "d" shows now that date.
42Added complete info for a todo in month view as an icon left of the text. 50Added complete info for a todo in month view as an icon left of the text.
43Fixed problems of displaying data when "<" or ">" are used in summary/location/description. 51Fixed problems of displaying data when "<" or ">" are used in summary/location/description.
44Fixed problem of search dialog size when switching displays. 52Fixed problem of search dialog size when switching displays.
45Cancel key now closes date picker. 53Cancel key now closes date picker.
46Rearranged KO/Pi file menu structure. 54Rearranged KO/Pi file menu structure.
47 55
48OM/Pi: 56OM/Pi:
49Added to the SMTP account setting the option 57Added to the SMTP account setting the option
50"No secure connection". 58"No secure connection".
51You have to configure your SMTP accounts again, sorry. 59You have to configure your SMTP accounts again, sorry.
52 60
53KA/Pi: 61KA/Pi:
54Added support for importing quoted-printable. 62Added support for importing quoted-printable.
55Support was added by Peter P.. Thanks, Peter! 63Support was added by Peter P.. Thanks, Peter!
56 64
57 65
58********** VERSION 2.0.14 ************ 66********** VERSION 2.0.14 ************
59 67
60Made Passwordmanager PwM/Pi more userfriendly: 68Made Passwordmanager PwM/Pi more userfriendly:
61Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 69Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
62Fixed bug in KO/Pi todo printing. 70Fixed bug in KO/Pi todo printing.
63Made Qtopia calendar import possible on desktop . 71Made Qtopia calendar import possible on desktop .
64 72
65********** VERSION 2.0.13 ************ 73********** VERSION 2.0.13 ************
66 74
67Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 75Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
68 76
69In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 77In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
70 78
71OM/Pi: 79OM/Pi:
72Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 80Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
73Added missing German translation. 81Added missing German translation.
74Added warning if path is specified in local folder settings of account config. 82Added warning if path is specified in local folder settings of account config.
75 83
76********** VERSION 2.0.12 ************ 84********** VERSION 2.0.12 ************
77 85
78KO/Pi: 86KO/Pi:
79Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 87Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
80Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 88Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
81Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 89Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
82 90
83Fixed problem in pi-sync mode when wrong password was sent. 91Fixed problem in pi-sync mode when wrong password was sent.
84 92
85OM/Pi: 93OM/Pi:
86Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 94Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
87Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 95Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
88 96
89********** VERSION 2.0.11 ************ 97********** VERSION 2.0.11 ************
90 98
91Fixed some problems in pi-sync mode 99Fixed some problems in pi-sync mode
92(e.g. details of events were not synced properly) 100(e.g. details of events were not synced properly)
93 101
94********** VERSION 2.0.10 ************ 102********** VERSION 2.0.10 ************
95 103
96KO/Pi: 104KO/Pi:
97In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 105In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
98This is fixed. 106This is fixed.
99Changed the search dialog a bit to make it more user friendly. 107Changed the search dialog a bit to make it more user friendly.
100(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 108(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
101 109
102Added config option to hide the week number in KO/Pi toolbar. 110Added config option to hide the week number in KO/Pi toolbar.
103 111
104********** VERSION 2.0.9 ************ 112********** VERSION 2.0.9 ************
105 113
106Made month view icons for multiday events a bit nicer. 114Made month view icons for multiday events a bit nicer.
107Some minor fixes in KO/Pi 115Some minor fixes in KO/Pi
108(e.g. go to today did not work for new week view properly). 116(e.g. go to today did not work for new week view properly).
109 117
110 118
111********** VERSION 2.0.8 ************ 119********** VERSION 2.0.8 ************
112 120
113Fixed a problem in dependency info in the ipk files for the Zaurus. 121Fixed a problem in dependency info in the ipk files for the Zaurus.
114 122
115Added 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. 123Added 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.
116 124
117Added a "go today" button to the datepicker. 125Added a "go today" button to the datepicker.
118 126
119Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 127Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
120and made it configureable to show these values. 128and made it configureable to show these values.
121 129
122Fixed a problem for events (from external iCal files) that do have a duration but no end date. 130Fixed a problem for events (from external iCal files) that do have a duration but no end date.
123 131
124 132
125********** VERSION 2.0.7 ************ 133********** VERSION 2.0.7 ************
126 134
127Added global application font settings 135Added global application font settings
128(for all KDE-Pim/Pi apps) to the general settings. 136(for all KDE-Pim/Pi apps) to the general settings.
129 137
130Fixed a problem in OM/Pi when trying to login to some IMAP servers 138Fixed a problem in OM/Pi when trying to login to some IMAP servers
131(like the IMAP server of Apple: mail.mac.com ) 139(like the IMAP server of Apple: mail.mac.com )
132 140
133Added recurring todos to KO/Pi. 141Added recurring todos to KO/Pi.
134 142
135 143
136********** VERSION 2.0.6 ************ 144********** VERSION 2.0.6 ************
137 145
138Some bugfixes in the pi-sync mode. 146Some bugfixes in the pi-sync mode.
139Added German translation for pi-sync mode. 147Added German translation for pi-sync mode.
140 148
141KO/Pi: 149KO/Pi:
142Made the todolist using alternate background. 150Made the todolist using alternate background.
143 151
144Other minor fixes in KO/Pi. 152Other minor fixes in KO/Pi.
145 153
146 154
147********** VERSION 2.0.5 ************ 155********** VERSION 2.0.5 ************
148 156
149Bugfixes in KO/Pi. 157Bugfixes in KO/Pi.
150 158
151********** VERSION 2.0.4 ************ 159********** VERSION 2.0.4 ************
152 160
153KO/Pi: 161KO/Pi:
154Fixed problem loading translations for summary/location edit boxes in event/todo editor. 162Fixed problem loading translations for summary/location edit boxes in event/todo editor.
155 163
156Added a general "select week number" to the toolbar. 164Added a general "select week number" to the toolbar.
157 165
158Fixed some small problem of the new features introduced in version 2.0.3. 166Fixed some small problem of the new features introduced in version 2.0.3.
159 167
160Made it possible to specify one specific category as category color, 168Made it possible to specify one specific category as category color,
161if more than one categories are selected. 169if more than one categories are selected.
162 170
163Fixed a bug in saving colors for categories with non-ascii characters. 171Fixed a bug in saving colors for categories with non-ascii characters.
164(Like, e.g. German Umlauts). 172(Like, e.g. German Umlauts).
165Propably you have to set your colors again for those categories. 173Propably you have to set your colors again for those categories.
166 174
167 175
168********** VERSION 2.0.3 ************ 176********** VERSION 2.0.3 ************
169 177
170KO/Pi: 178KO/Pi:
171Added feature for changing alarm settings for many items at once: 179Added feature for changing alarm settings for many items at once:
172Open list view (or search dialog), select the desired items and choose in 180Open list view (or search dialog), select the desired items and choose in
173the popup menu: Set alarm for selected... 181the popup menu: Set alarm for selected...
174 182
175Added to the event/todo viewer the option to send an email to 183Added to the event/todo viewer the option to send an email to
176all attendees or all selected (with RSVP) attendees. 184all attendees or all selected (with RSVP) attendees.
177 185
178Made the week-month mode changing in month view faster. 186Made the week-month mode changing in month view faster.
179 187
180Made month view better useable with keyboard. 188Made month view better useable with keyboard.
181Now TAB key jumps to next cell with an event/todo. 189Now TAB key jumps to next cell with an event/todo.
182Scroll in cell with coursor keys, scroll in time (next week) with 190Scroll in cell with coursor keys, scroll in time (next week) with
183Shift/Control + coursorkeys. 191Shift/Control + coursorkeys.
184 192
185Fixed bug that the todo view flat mode was reset after first view update. 193Fixed bug that the todo view flat mode was reset after first view update.
186 194
187If a todo is displayed closed in the todo view, 195If a todo is displayed closed in the todo view,
188it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. 196it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties.
189 197
190Added info about the numbers of years to the caption (title) information about a birthday event. 198Added info about the numbers of years to the caption (title) information about a birthday event.
191 199
192Made completion date in todo editor editable. 200Made completion date in todo editor editable.
193 201
194Added possibility to save/load templates for journals. 202Added possibility to save/load templates for journals.
195(Which is just a simple "save text to file" or "insert text from file". 203(Which is just a simple "save text to file" or "insert text from file".
196 204
197********** VERSION 2.0.2 ************ 205********** VERSION 2.0.2 ************
198 206
199KO/Pi: 207KO/Pi:
200Fixed the layout problem of the day label buttons 208Fixed the layout problem of the day label buttons
201of the agenda view introduced in version 2.0.1. 209of the agenda view introduced in version 2.0.1.
202 210
203Added WhatsThis support for the todo view and the list view. 211Added WhatsThis support for the todo view and the list view.
204 212
205Added a quite useful feature to the montview. 213Added a quite useful feature to the montview.
206Just click on the week numbers on the left. 214Just click on the week numbers on the left.
207And in the top right corner of month view/agenda view 215And in the top right corner of month view/agenda view
208there is now a "week number quick selector". 216there is now a "week number quick selector".
209(Click on the black triangle). 217(Click on the black triangle).
210 218
211Made the quite difficult timezone change in KO/Pi easy. 219Made the quite difficult timezone change in KO/Pi easy.
212 220
213OM/Pi: 221OM/Pi:
214Fixed too small icons on desktop. 222Fixed too small icons on desktop.
215Fixed non visible icons in mainwindow on Z with fastload enabled. 223Fixed non visible icons in mainwindow on Z with fastload enabled.
216Added signature file setting to smtp account config. 224Added signature file setting to smtp account config.
217And the signature can be edited and saved in the edit mail dialog. 225And the signature can be edited and saved in the edit mail dialog.
218That does mean: 226That does mean:
219Simply edit the signature for the selected smtp account in the 227Simply edit the signature for the selected smtp account in the
220edit new mail dialog and press the "save signature" button there. 228edit new mail dialog and press the "save signature" button there.
221Then the signature is saved to the file specified in the smtp account settings. 229Then the signature is saved to the file specified in the smtp account settings.
222If there is no file specified, it is saved automatically to the file 230If there is no file specified, it is saved automatically to the file
223kdepim/apps/kopiemail/<accountname>.sig. 231kdepim/apps/kopiemail/<accountname>.sig.
224 232
225 233
226 234
227********** VERSION 2.0.1 ************ 235********** VERSION 2.0.1 ************
228 236
229Oooops ... I forgot to test on the Zaurus 5500 ... 237Oooops ... I forgot to test on the Zaurus 5500 ...
230 238
231Fixed many problems of new (english) strings (and german translations) 239Fixed many problems of new (english) strings (and german translations)
232introduced in the latest versions, where the text was not fitting on the 240introduced in the latest versions, where the text was not fitting on the
233240x320 display of the Zaurus 5500. 241240x320 display of the Zaurus 5500.
234 242
235KO/Pi: 243KO/Pi:
236Added a popup menu ( press pen and hold to get popup ) to the agenda view 244Added a popup menu ( press pen and hold to get popup ) to the agenda view
237with many useful items (add event/todo, show next week, two weeks, month, journal). 245with many useful items (add event/todo, show next week, two weeks, month, journal).
238 246
239Added items to the todolist popup menu for: 247Added items to the todolist popup menu for:
240Display all opened, all closed or all todos flat. 248Display all opened, all closed or all todos flat.
241The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 249The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
242Made the reparenting of todos on the desktop possible via Drag&Drop. 250Made the reparenting of todos on the desktop possible via Drag&Drop.
243Fixed several bugs in setting the completed datetime for todos. 251Fixed several bugs in setting the completed datetime for todos.
244Added info about completed datetime of todos to the todo viewer. 252Added info about completed datetime of todos to the todo viewer.
245Now displaying a completed todo (with completed datetime set) in the agenda view 253Now displaying a completed todo (with completed datetime set) in the agenda view
246at the time of the completion. Such that now it is possible to see in the agenda view 254at the time of the completion. Such that now it is possible to see in the agenda view
247when what todo was completed. 255when what todo was completed.
248Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 256Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
249Now the behaviour is: 257Now the behaviour is:
250Setting a parent to complete sets all (sub)childs to complete. 258Setting a parent to complete sets all (sub)childs to complete.
251Setting a parent to uncomplete does not change the childs. 259Setting a parent to uncomplete does not change the childs.
252Setting a child to uncomplete sets all parent to uncomplete. 260Setting a child to uncomplete sets all parent to uncomplete.
253Setting a child to complete does not change the parents. 261Setting a child to complete does not change the parents.
254 262
255Smart updating and double buffering of the daymatrix. 263Smart updating and double buffering of the daymatrix.
256Showing holidays in the day matrix. 264Showing holidays in the day matrix.
257Many other small performance updates. 265Many other small performance updates.
258 266
259Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. 267Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
260 268
261Now the translation file usertranslation.txt is supposed to be in utf8 format. 269Now the translation file usertranslation.txt is supposed to be in utf8 format.
262If 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. 270If 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.
263 271
264 272
265********** VERSION 2.0.0 ************ 273********** VERSION 2.0.0 ************
266 274
267Stable release 2.0.0! 275Stable release 2.0.0!
268 276
269KO/Pi: 277KO/Pi:
270Fixed problem in edit dialog recreation at startup. 278Fixed problem in edit dialog recreation at startup.
271Made "toggle view*" menu items enabled context sensitive. 279Made "toggle view*" menu items enabled context sensitive.
272Changed agenda size menu to items 1-10. 280Changed agenda size menu to items 1-10.
273Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 281Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
274Usebility enhancements in the KO/Pi menus. 282Usebility enhancements in the KO/Pi menus.
275Birthday import now adds year to summary. 283Birthday import now adds year to summary.
276What's Next view shows age in years for birthday. 284What's Next view shows age in years for birthday.
277 285
278OM/Pi: 286OM/Pi:
279Added three info lines to display subject, from and to of selected mails. 287Added three info lines to display subject, from and to of selected mails.
280 288
281KA/Pi: 289KA/Pi:
282Fixed jump bar behaviour on Zaurus. 290Fixed jump bar behaviour on Zaurus.
283Now KA/Pi search field supports searching for a range of starting characters. 291Now KA/Pi search field supports searching for a range of starting characters.
284E.g. to search for all contact beginning with b to n, type 292E.g. to search for all contact beginning with b to n, type
285b-n 293b-n
286in the search field. 294in the search field.
287 295
288********** VERSION 1.9.20 ************ 296********** VERSION 1.9.20 ************
289 297
290KO/Pi: 298KO/Pi:
291Added for the "dislplay one day" agenda mode 299Added for the "dislplay one day" agenda mode
292info in the caption and in the day lables: 300info in the caption and in the day lables:
293Now it is displayed, if the selected day is from "day before yesterday" 301Now it is displayed, if the selected day is from "day before yesterday"
294to "day after tomorrow". 302to "day after tomorrow".
295Made it possible to delete a Todo, which has sub-todos. 303Made it possible to delete a Todo, which has sub-todos.
296Fixed two small problems in the todo view. 304Fixed two small problems in the todo view.
297Added missing German translation for filter edit and print dialog. 305Added missing German translation for filter edit and print dialog.
298Made search dialog closeable by cancel key. 306Made search dialog closeable by cancel key.
299 307
300Made it possible to select in the date picker the (ligt grey ) 308Made it possible to select in the date picker the (ligt grey )
301dates of the prev./next month with the mouse. 309dates of the prev./next month with the mouse.
302 310
303OM/Pi: 311OM/Pi:
304"Delete mail" icon in main window now deletes all selected mails. 312"Delete mail" icon in main window now deletes all selected mails.
305Fixed the problem, that the state flag of imap mails was ignored. 313Fixed the problem, that the state flag of imap mails was ignored.
306Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 314Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
307to indecate that they are already seen. 315to indecate that they are already seen.
308Fixed the problem that the body of some mails was not displayed in the 316Fixed the problem that the body of some mails was not displayed in the
309mail viewer when fetching them from the imap server directly to read them. 317mail viewer when fetching them from the imap server directly to read them.
310Made it (configurable) possible to show the "To:" field in the list view. 318Made it (configurable) possible to show the "To:" field in the list view.
311Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 319Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
312Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 320Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
313local storage folder (specified in account settings) of the account of the mail. 321local storage folder (specified in account settings) of the account of the mail.
314Removed some memory leaks in OM/Pi. 322Removed some memory leaks in OM/Pi.
315 323
316 324
317********** VERSION 1.9.19 ************ 325********** VERSION 1.9.19 ************
318 326
319Added a lot of missing translations to KA/Pi, 327Added a lot of missing translations to KA/Pi,
320Added some missing translations to KO/Pi and OM/Pi. 328Added some missing translations to KO/Pi and OM/Pi.
321 329
322Fixed some minor problems in KA/Pi + KO/Pi. 330Fixed some minor problems in KA/Pi + KO/Pi.
323 331
324Fixed a crash when closing PwM/Pi. 332Fixed a crash when closing PwM/Pi.
325Added German translation for PwM/Pi. 333Added German translation for PwM/Pi.
326 334
327Made view change and Month View update faster in KO/Pi. 335Made view change and Month View update faster in KO/Pi.
328 336
329 337
330********** VERSION 1.9.18 ************ 338********** VERSION 1.9.18 ************
331 339
332FYI: The VERSION 1.9.17 was a testing release only. 340FYI: The VERSION 1.9.17 was a testing release only.
333Please read the changelog of VERSION 1.9.17 as well. 341Please read the changelog of VERSION 1.9.17 as well.
334 342
335Cleaned up the syncing config dialog. 343Cleaned up the syncing config dialog.
336Added sync config options for date range for events. 344Added sync config options for date range for events.
337Added sync config options for filters on incoming data. 345Added sync config options for filters on incoming data.
338Added sync config options for filters on outgoing data. 346Added sync config options for filters on outgoing data.
339Please read the updated SyncHowTo about the new filter settings. 347Please read the updated SyncHowTo about the new filter settings.
340These filter settings make it now possible to sync with shared 348These filter settings make it now possible to sync with shared
341calendars without writing back private or confidential data 349calendars without writing back private or confidential data
342(via the outgoing filters). 350(via the outgoing filters).
343To sync only with particular parts of a shared calendar, 351To sync only with particular parts of a shared calendar,
344the incoming filter settings can be used. 352the incoming filter settings can be used.
345An example can be found in the SyncHowTo. 353An example can be found in the SyncHowTo.
346Same for shared addressbooks. 354Same for shared addressbooks.
347 355
348Added a setting for the global kdepim data storage. 356Added a setting for the global kdepim data storage.
349Usually the data is stored in (yourhomedir/kdepim). 357Usually the data is stored in (yourhomedir/kdepim).
350Now you can set in the Global config dialog TAB, subTAB "Data storage path" 358Now you can set in the Global config dialog TAB, subTAB "Data storage path"
351a directory where all the kdepim data is stored. 359a directory where all the kdepim data is stored.
352That makes it easy to save all kdepim data on a SD card on the Z, for example. 360That makes it easy to save all kdepim data on a SD card on the Z, for example.
353 361
354KO/Pi: 362KO/Pi:
355The timeedit input has a pulldown list for times. 363The timeedit input has a pulldown list for times.
356If opened, this pulldown list should now has the right time highlighted. 364If opened, this pulldown list should now has the right time highlighted.
357Added the possibility to exclude events/todos/journals in a filter. 365Added the possibility to exclude events/todos/journals in a filter.
358You should exclude journals, if you do not want them to sync with a public calendar. 366You should exclude journals, if you do not want them to sync with a public calendar.
359 367
360KA/Pi: 368KA/Pi:
361Added the possibility to in/exclude public/private/confidential contacts to a filter. 369Added the possibility to in/exclude public/private/confidential contacts to a filter.
362If 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 ... 370If 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 ...
363Added printing of card view and details view on desktop. 371Added printing of card view and details view on desktop.
364Printing of list view is not working... 372Printing of list view is not working...
365Added button for removing pictures in contact editor. 373Added button for removing pictures in contact editor.
366Parsing data fix of KA/Pi version 1.9.17. 374Parsing data fix of KA/Pi version 1.9.17.
367Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 375Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
368Fixed some syncing merging problems. 376Fixed some syncing merging problems.
369 377
370 378
371********** VERSION 1.9.17 ************ 379********** VERSION 1.9.17 ************
372 380
373KO/Pi: 381KO/Pi:
374Fixed that tooltips were not updated after moving an item in agenda view. 382Fixed that tooltips were not updated after moving an item in agenda view.
375Fixed a bug in sorting start date for recurring events in list view. 383Fixed a bug in sorting start date for recurring events in list view.
376Changed the left button in todo viewer from "Agenda" to "Set completed". 384Changed the left button in todo viewer from "Agenda" to "Set completed".
377This 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. 385This 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.
378Added more info in the todo viewer: Startdate, parent/sub todos. 386Added more info in the todo viewer: Startdate, parent/sub todos.
379 387
380 388
381KA/Pi: 389KA/Pi:
382All fields search does now actually search all the (possible) fields, 390All fields search does now actually search all the (possible) fields,
383not only those listed in the contact list. 391not only those listed in the contact list.
384Made is possible to inline a picture in a vcard on the Z. 392Made is possible to inline a picture in a vcard on the Z.
385This was only possible on the desktop, now is it possible on the Z as well. 393This was only possible on the desktop, now is it possible on the Z as well.
386Fixed of missing save settings after filter configuration. 394Fixed of missing save settings after filter configuration.
387Made saving of addressbook much faster. 395Made saving of addressbook much faster.
388Fixed extension widget layout problem. 396Fixed extension widget layout problem.
389Fixed saving of default formatted name settings. 397Fixed saving of default formatted name settings.
390Fixed formatted name handling in edit dialog. 398Fixed formatted name handling in edit dialog.
391Added an option for changing formatted names of many contacts 399Added an option for changing formatted names of many contacts
392(menu: File - Change - Set formatted name). 400(menu: File - Change - Set formatted name).
393 401
394QWhatsThis was not working on the Z ( only black rectangle was shown). 402QWhatsThis was not working on the Z ( only black rectangle was shown).
395This is Fixed. 403This is Fixed.
396 404
397KDE-Sync: 405KDE-Sync:
398Now readonly KDE resources are synced as well. 406Now readonly KDE resources are synced as well.
399(They are not changed in KDE itself, of course). 407(They are not changed in KDE itself, of course).
400 408
401 409
402 410
403********** VERSION 1.9.16 ************ 411********** VERSION 1.9.16 ************
404 412
405KO/Pi: 413KO/Pi:
406Fixed search dialog size on Z 6000 (480x640 display). 414Fixed search dialog size on Z 6000 (480x640 display).
407Added setting to hide/show time in agenda items. 415Added setting to hide/show time in agenda items.
408Added setting to hide not running todos in todo view. 416Added setting to hide not running todos in todo view.
409Added columns for start date/time in todo view. 417Added columns for start date/time in todo view.
410Replaced the solid half-hour lines in agenda view by dot lines. 418Replaced the solid half-hour lines in agenda view by dot lines.
411Added possibility of printing the What's Next View on the desktop 419Added possibility of printing the What's Next View on the desktop
412(i.e. Windows and Linux). 420(i.e. Windows and Linux).
413Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 421Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
414Added tooltips in month view.(Tooltips only available on desktop) 422Added tooltips in month view.(Tooltips only available on desktop)
415 423
416Fixed a strange problem in KO/Pi alarm applet. 424Fixed a strange problem in KO/Pi alarm applet.
417Did not find the actual problem, 425Did not find the actual problem,
418such that now Qtopia reboots again if deinstalling the alarm applet. 426such that now Qtopia reboots again if deinstalling the alarm applet.
419But the alarm applet should work again. 427But the alarm applet should work again.
420 428
421KA/Pi: 429KA/Pi:
422Fixed the problem, that internal pictures were not saved. 430Fixed the problem, that internal pictures were not saved.
423 431
424Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 432Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
425 433
426Fixed some minor problems. (Like word wrap in help text windows). 434Fixed some minor problems. (Like word wrap in help text windows).
427 435
428Fixed a compiling problem in microkde/kresources. 436Fixed a compiling problem in microkde/kresources.
429 437
430KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 438KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
431This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 439This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
432such that now syncing KO/Pi with Sharp DTM should work on the 440such that now syncing KO/Pi with Sharp DTM should work on the
433Zaurus C 3000 model. 441Zaurus C 3000 model.
434 442
435********** VERSION 1.9.15 ************ 443********** VERSION 1.9.15 ************
436 444
437Usebilty enhancements in KO/Pi: 445Usebilty enhancements in KO/Pi:
438When clicking on the date in a month view cell, the day view is shown. 446When clicking on the date in a month view cell, the day view is shown.
439Old behaviour was, that the "new event" dialog popped up. 447Old behaviour was, that the "new event" dialog popped up.
440 448
441Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 449Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
442That means, you can restore the latest 450That means, you can restore the latest
443event/todo/journal you have deleted. 451event/todo/journal you have deleted.
444A journal is deleted, if you clear all the text of the journal. 452A journal is deleted, if you clear all the text of the journal.
445 453
446Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 454Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
447 455
448KA/Pi starting in 480x640 resolution: 456KA/Pi starting in 480x640 resolution:
449Hide the filter action in toolbar 457Hide the filter action in toolbar
450and added icons for undo/delete/redo in toolbar. 458and added icons for undo/delete/redo in toolbar.
451 459
452Change in OM/Pi ViewMail dialog: 460Change in OM/Pi ViewMail dialog:
453When clicking on the "delete" icon the mail is deleted after confirmation as usual. 461When clicking on the "delete" icon the mail is deleted after confirmation as usual.
454But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 462But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
455 463
456Fixed a crash when deleting mail-accounts in OM/Pi. 464Fixed a crash when deleting mail-accounts in OM/Pi.
457 465
458 466
459********** VERSION 1.9.14 ************ 467********** VERSION 1.9.14 ************
460 468
461Fixed some problems with the dialog sizes when switching 469Fixed some problems with the dialog sizes when switching
462portrait/landscape mode on 640x480 PDA display. 470portrait/landscape mode on 640x480 PDA display.
463 471
464Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 472Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
465 473
466Fixed an ugly bug in KOpieMail: 474Fixed an ugly bug in KOpieMail:
467KOpieMail was not able to write files (mails) to MSDOS file system, 475KOpieMail was not able to write files (mails) to MSDOS file system,
468like on an usual preformatted SD card. That should work now. 476like on an usual preformatted SD card. That should work now.
469To save your mail data on the Sd card do the following: 477To save your mail data on the Sd card do the following:
470Create a dir on the SD card: 478Create a dir on the SD card:
471mkdir /mnt/card/localmail 479mkdir /mnt/card/localmail
472Go to your home dir: 480Go to your home dir:
473cd 481cd
474Go to kopiemail data storage dir: 482Go to kopiemail data storage dir:
475cd kdepim/apps/kopiemail 483cd kdepim/apps/kopiemail
476Create a symlink to the SD card: 484Create a symlink to the SD card:
477ls -s /mnt/card/localmail 485ls -s /mnt/card/localmail
478Now KOpieMail will store all mails on the SD card. 486Now KOpieMail will store all mails on the SD card.
479 487
480KO/Pi Monthview: 488KO/Pi Monthview:
481Now "Go to Today" selects the current month from day 1-end, 489Now "Go to Today" selects the current month from day 1-end,
482not the current date + some days. 490not the current date + some days.
483I.e. "Go to Today" shows now always 491I.e. "Go to Today" shows now always
484the current month with first day of month in the first row. 492the current month with first day of month in the first row.
485 493
486Added missing German translation. 494Added missing German translation.
487 495
488Fixed icons of executeable on Wintendo. 496Fixed icons of executeable on Wintendo.
489 497
490Added a "Show next Mail" button to the OM/Pi 498Added a "Show next Mail" button to the OM/Pi
491mail viewer such that the mail below the current mail 499mail viewer such that the mail below the current mail
492in the mail list view of the current folder 500in the mail list view of the current folder
493can be read with a single click. 501can be read with a single click.
494 502
495 503
496********** VERSION 1.9.13 ************ 504********** VERSION 1.9.13 ************
497 505
498Fixed nasty PwM/Pi file reading bug, when 506Fixed nasty PwM/Pi file reading bug, when
499the used hash algo of file is different then the global 507the used hash algo of file is different then the global
500hash algo. 508hash algo.
501 509
502Added KA/Pi support for opie mailit mailapplication. 510Added KA/Pi support for opie mailit mailapplication.
503 511
504Fixed some bugs in OM/Pi. 512Fixed some bugs in OM/Pi.
505Now character conversion tables are available for the Zaurus 513Now character conversion tables are available for the Zaurus
506to make OM/Pi working properly. 514to make OM/Pi working properly.
507To get the character conversion in OM/Pi working, please download 515To get the character conversion in OM/Pi working, please download
508at the sourceforge project site the package 516at the sourceforge project site the package
509sr-character-conversion_SharpROM_arm.ipk.zip 517sr-character-conversion_SharpROM_arm.ipk.zip
510(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 518(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
511from the section "general files for KDE/Pim" 519from the section "general files for KDE/Pim"
512Instructions how to install this package are in a ReadMe in this file. 520Instructions how to install this package are in a ReadMe in this file.
513 521
514 522
515Fixed the orientation change problem in KA/Pi when switching 523Fixed the orientation change problem in KA/Pi when switching
516portrait/landscape mode. 524portrait/landscape mode.
517 525
518French translation available for KA/Pi and OM/Pi. 526French translation available for KA/Pi and OM/Pi.
519 527
520Fixed some problems with categories in KO/Pi in DTM sync. 528Fixed some problems with categories in KO/Pi in DTM sync.
521 529
522Added selection dialog for export to phone in KA/Pi. 530Added selection dialog for export to phone in KA/Pi.
523 531
524If in KO/Pi is an attendee selected to add to a meeting and this 532If in KO/Pi is an attendee selected to add to a meeting and this
525attendee is already in the list of attendees, this person is not added 533attendee is already in the list of attendees, this person is not added
526again. 534again.
527 535
528Some menu cleanup in KA/Pi. 536Some menu cleanup in KA/Pi.
529 537
530********** VERSION 1.9.12 ************ 538********** VERSION 1.9.12 ************
531 539
532Fix for the bug in KO/Pi What's Next view of version 1.9.11. 540Fix for the bug in KO/Pi What's Next view of version 1.9.11.
533 541
534Bugfix: Licence file is now shown again. 542Bugfix: Licence file is now shown again.
535 543
536OM/Pi now supports Unicode (utf8 charset). 544OM/Pi now supports Unicode (utf8 charset).
537Fixed some bugs in OM/Pi. 545Fixed some bugs in OM/Pi.
538 546
539KA/Pi has more German translation. 547KA/Pi has more German translation.
540 548
541 549
542********** VERSION 1.9.11 ************ 550********** VERSION 1.9.11 ************
543 551
544Fixed several problems in PWM/Pi, like 552Fixed several problems in PWM/Pi, like
545asking the user, if unsaved changed are pending 553asking the user, if unsaved changed are pending
546when closing the app. 554when closing the app.
547And PwM/Pi handles now different texts for the 555And PwM/Pi handles now different texts for the
548fields Description, Username, Password, configurable per category. 556fields Description, Username, Password, configurable per category.
549 557
550Fixed a crash in KO/Pi , when importing/loading vcs files 558Fixed a crash in KO/Pi , when importing/loading vcs files
551which have an entry with an attendee with state: 559which have an entry with an attendee with state:
552NEEDS ACTION 560NEEDS ACTION
553 561
554Fixed some problems in the German translation of OM/Pi, 562Fixed some problems in the German translation of OM/Pi,
555which makes some dialogs not fitting on the screen 563which makes some dialogs not fitting on the screen
556of the Z 5500. 564of the Z 5500.
557 565
558Fixed Qtopia crash, when disabling/deinstalling 566Fixed Qtopia crash, when disabling/deinstalling
559KO/Pi alarm applet. 567KO/Pi alarm applet.
560 568
561Implemented direct KDE<->KA/Pi sync for KA/Pi running 569Implemented direct KDE<->KA/Pi sync for KA/Pi running
562on Linux desktop. 570on Linux desktop.
563 571
564Added feature "remove sync info" to sync menu. 572Added feature "remove sync info" to sync menu.
565 573
566Tweaked the KO/Pi What's next view a bit, added 574Tweaked the KO/Pi What's next view a bit, added
567setting to hide events that are done. 575setting to hide events that are done.
568 576
569Disabled "beam receive enabled" on startup to 577Disabled "beam receive enabled" on startup to
570avoid problems if Fastload is enabled. 578avoid problems if Fastload is enabled.
571Please set "beam receive enabled", 579Please set "beam receive enabled",
572if you want to receive data via IR. 580if you want to receive data via IR.
573 581
574Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 582Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
575on Linux desktop. 583on Linux desktop.
576 584
577Made in KA/Pi scrolling possible, if details view is selected. 585Made in KA/Pi scrolling possible, if details view is selected.
578(The keyboard focus is set automatically to the search line) 586(The keyboard focus is set automatically to the search line)
579 587
580Fixed a bug in DMT sync, that a new entry in DTM was added 588Fixed a bug in DMT sync, that a new entry in DTM was added
581on every sync to Kx/Pi. 589on every sync to Kx/Pi.
582 590
583Fixed missing writing of KA/Pi categories to DMT entries when syncing. 591Fixed missing writing of KA/Pi categories to DMT entries when syncing.
584 592
585Fixed a bug in DMT sync with todos created in KO/Pi containing 593Fixed a bug in DMT sync with todos created in KO/Pi containing
586non-latin1 characters. 594non-latin1 characters.
587 595
588Rearranged package contents of Sharp-ipks and made all 596Rearranged package contents of Sharp-ipks and made all
589packages installable on SD again. 597packages installable on SD again.
590 598
591Fixed the writing of addressbook data in DTM sync. 599Fixed the writing of addressbook data in DTM sync.
592Empty fields in KA/Pi were not removed. 600Empty fields in KA/Pi were not removed.
593 601
594Added better category handling in KA/Pi: 602Added better category handling in KA/Pi:
595Added item 603Added item
596Edit Categories and 604Edit Categories and
597Manage new categories 605Manage new categories
598to the settings menu. 606to the settings menu.
599Possible to configure a view to display categories. 607Possible to configure a view to display categories.
600 608
601Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 609Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
602 610
603Fixed displaying of "free" days and time in KO Monthview and Agendaview. 611Fixed displaying of "free" days and time in KO Monthview and Agendaview.
604 612
605... and many other bugfixes. 613... and many other bugfixes.
606 614
607********** VERSION 1.9.10 ************ 615********** VERSION 1.9.10 ************
608 616
609Many internal small bugfixes. 617Many internal small bugfixes.
610And fix of the "big" bug in KO/Pi, 618And fix of the "big" bug in KO/Pi,
611that after Syncing the appointments had an offset by several hours. 619that after Syncing the appointments had an offset by several hours.
612That was a problem with the internal timezone setting, 620That was a problem with the internal timezone setting,
613introduced by the changed timezone configuration settings. 621introduced by the changed timezone configuration settings.
614 622
615German translation for OM/Pi is now available. 623German translation for OM/Pi is now available.
616 624
617 625
618********** VERSION 1.9.9 ************ 626********** VERSION 1.9.9 ************
619 627
620KDE-Pim/Pi has a new Member! 628KDE-Pim/Pi has a new Member!
621It is called PWM/Pi (Passwordmanager/platform-independent) 629It is called PWM/Pi (Passwordmanager/platform-independent)
622and it is available for the Zaurus. 630and it is available for the Zaurus.
623It is planned, that it will be available later for Windows. 631It is planned, that it will be available later for Windows.
624(And for Linux, of course). 632(And for Linux, of course).
625It is a port of the Passwordmanager of KDE. 633It is a port of the Passwordmanager of KDE.
626It will need the MicroKDElibs to run. 634It will need the MicroKDElibs to run.
627 635
628Made loading of addressbooks in KA/Pi up to 7 times faster! 636Made loading of addressbooks in KA/Pi up to 7 times faster!
629The bigger your addressbook file, the more starting speed 637The bigger your addressbook file, the more starting speed
630will you gain. (relatively) 638will you gain. (relatively)
631 639
632The Qtopia addressbook connector is now platform independend 640The Qtopia addressbook connector is now platform independend
633as well and should work on any platform for importing/exporting 641as well and should work on any platform for importing/exporting
634Qtopia and Opie XML files. 642Qtopia and Opie XML files.
635 643
636Added a +30min feature to the timezone settings to make 644Added a +30min feature to the timezone settings to make
637KDE-Pim/Pi useable in Australia and other parts on the 645KDE-Pim/Pi useable in Australia and other parts on the
638world with strange timezones ;-) 646world with strange timezones ;-)
639 647
640German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 648German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
641 649
642It is now possible to disable the 650It is now possible to disable the
643"receive data via infrared" feature, such that syncing with 651"receive data via infrared" feature, such that syncing with
644Outlook is now possible again with Kx/Pi runing. 652Outlook is now possible again with Kx/Pi runing.
645Please disable it, before syncing Sharp DTM with Outlook. 653Please disable it, before syncing Sharp DTM with Outlook.
646For your convenience, the "receive data via infrared" feature 654For your convenience, the "receive data via infrared" feature
647is disabled automatically, if you sync Kx/Pi with DTM. 655is disabled automatically, if you sync Kx/Pi with DTM.
648You have to enable it again manually after syncing. 656You have to enable it again manually after syncing.
649Enabling this feature makes it impossible to start the 657Enabling this feature makes it impossible to start the
650Sharp DTM apps. If this feature is enabled, you will only get the 658Sharp DTM apps. If this feature is enabled, you will only get the
651alarm notification from KO/Pi and not from the Sharp calendar. 659alarm notification from KO/Pi and not from the Sharp calendar.
652This is very useful if you sync KO/Pi with Sharp DTM, 660This is very useful if you sync KO/Pi with Sharp DTM,
653because after syncing you usually would get notified about 661because after syncing you usually would get notified about
654an alarm by KO/Pi and the Sharp Calendar. 662an alarm by KO/Pi and the Sharp Calendar.
655 663
656Together with the Linux desktop version of KO/Pi 664Together with the Linux desktop version of KO/Pi
657it is now possible to sync KO/Pi on the Zaurus 665it is now possible to sync KO/Pi on the Zaurus
658with the complete KDE-desktop (3.3 or later) 666with the complete KDE-desktop (3.3 or later)
659calendar data easily. 667calendar data easily.
660That makes it possible to sync the Z with one 668That makes it possible to sync the Z with one
661click of a mouse with the KDE-Desktop. 669click of a mouse with the KDE-Desktop.
662This feature it available for all Zaurus platforms KO/Pi 670This feature it available for all Zaurus platforms KO/Pi
663is running on. 671is running on.
664The only thing needed is a running KO/Pi on Linux and 672The only thing needed is a running KO/Pi on Linux and
665a compiled version of the small 673a compiled version of the small
666KDE-Pim/Pi<->KDE-Desktop access command line program, 674KDE-Pim/Pi<->KDE-Desktop access command line program,
667which is in the KDE-Pim/Pi sources available. 675which is in the KDE-Pim/Pi sources available.
668 676
669The "KDE-desktop" syncing feature for KA/Pi will follow 677The "KDE-desktop" syncing feature for KA/Pi will follow
670in the next releases. 678in the next releases.
671 679
672Fixed the vcard export bug, which had the version 1.9.8. 680Fixed the vcard export bug, which had the version 1.9.8.
673 681
674Added missing GERMAN translation to KO/Pi. 682Added missing GERMAN translation to KO/Pi.
675Hi PsionX, could you add the missing french translation?Thx! 683Hi PsionX, could you add the missing french translation?Thx!
676 684
677Translation files for KA/Pi are available as well. 685Translation files for KA/Pi are available as well.
678GERMAN translation will be available in the next release. 686GERMAN translation will be available in the next release.
679PsionX ( yres, you again ;-) ), could you start translating 687PsionX ( yres, you again ;-) ), could you start translating
680KA/Pi? Thx! 688KA/Pi? Thx!
681 689
682You can download the version 1.9.9 at 690You can download the version 1.9.9 at
683 691
684http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 692http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
685 693
686Note: 694Note:
687To run the mail program OM/Pi you need libopenssl. 695To run the mail program OM/Pi you need libopenssl.
688A link to a download loaction is available at 696A link to a download loaction is available at
689ZSI at www.killefiz.de 697ZSI at www.killefiz.de
690 698
691 699
692********** VERSION 1.9.8 ************ 700********** VERSION 1.9.8 ************
693 701
694Fixed character decoding in OM/Pi. 702Fixed character decoding in OM/Pi.
695(e.g. German "Umlaute" were not displayed properly.) 703(e.g. German "Umlaute" were not displayed properly.)
696 704
697Made is possible to reparent todos in KO/Pi. 705Made is possible to reparent todos in KO/Pi.
698Use contextmenu or keys (look at Help-Keys + Colors) for that. 706Use contextmenu or keys (look at Help-Keys + Colors) for that.
699 707
700Added the missing Sync-Howto and WhatsNew to the packages. 708Added the missing Sync-Howto and WhatsNew to the packages.
701 709
702KO/Pi on Linux desktop can now sync with KDE desktop. 710KO/Pi on Linux desktop can now sync with KDE desktop.
703That means: When using KO/Pi on Linux desktop for syncing with 711That means: When using KO/Pi on Linux desktop for syncing with
704KDE desktop and the Zaurus, the Zaurus can be synced now 712KDE desktop and the Zaurus, the Zaurus can be synced now
705with all KDE-Calendar resources, not only with one local file. 713with all KDE-Calendar resources, not only with one local file.
706(That makes it possible to sync the Zaurus with the 714(That makes it possible to sync the Zaurus with the
707calendar data on a Kolab server) 715calendar data on a Kolab server)
708 716
709KA/Pi syncing with KDE desktop will be available in the next version. 717KA/Pi syncing with KDE desktop will be available in the next version.
710 718
711 719
712********** VERSION 1.9.7 ************ 720********** VERSION 1.9.7 ************
713 721
714KO/Pi - KA/Pi on Windows: 722KO/Pi - KA/Pi on Windows:
715Now a directory can be defined by the user, where the 723Now a directory can be defined by the user, where the
716application/config data should be saved. 724application/config data should be saved.
717 Define your desired path in the evironment variable 725 Define your desired path in the evironment variable
718 MICROKDEHOME 726 MICROKDEHOME
719 before starting KO/Pi or KA/Pi. 727 before starting KO/Pi or KA/Pi.
720 728
721An easy Kx/Pi to Kx/Pi syncing is now possible 729An easy Kx/Pi to Kx/Pi syncing is now possible
722(it is called Pi-Sync) via network. 730(it is called Pi-Sync) via network.
723Please look at the Sync Howto. 731Please look at the Sync Howto.
724 732
725Exporting of calendar data and contacts to mobile phones is now possible. 733Exporting of calendar data and contacts to mobile phones is now possible.
726The SyncHowto is updated with information howto 734The SyncHowto is updated with information howto
727access/sync mobile phones. 735access/sync mobile phones.
728Please look at the Sync Howto. 736Please look at the Sync Howto.
729 737
730Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 738Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
731Please disable Fastload for the original contact/calendar applications 739Please disable Fastload for the original contact/calendar applications
732and close them. 740and close them.
733KO/Pi and KA/Pi must be running in order to receive the data. 741KO/Pi and KA/Pi must be running in order to receive the data.
734(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 742(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
735 743
736In the KA/Pi details view are now the preferred tel. numbers displayed on top 744In the KA/Pi details view are now the preferred tel. numbers displayed on top
737of the other data ( emails/tel.numbers/addresses) 745of the other data ( emails/tel.numbers/addresses)
738 746
739Fixed some syncing problems in KA/Pi. 747Fixed some syncing problems in KA/Pi.
740 748
741Added font settings for the KA/Pi details view. 749Added font settings for the KA/Pi details view.
742Added fields "children's name" and "gender" to KA/Pi. 750Added fields "children's name" and "gender" to KA/Pi.
743 751
744Made searching in KA/Pi better: 752Made searching in KA/Pi better:
745Now the first item in a view is selected after a search automatically and 753Now the first item in a view is selected after a search automatically and
746the views can be scrolled up/down when the search input field has the keyboard focus. 754the views can be scrolled up/down when the search input field has the keyboard focus.
747 755
748And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 756And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
749 757
750 758
751********** VERSION 1.9.6 ************ 759********** VERSION 1.9.6 ************
752 760
753Changes in the external application communication on the Zaurus 761Changes in the external application communication on the Zaurus
754in order to use less RAM when the apps are running. 762in order to use less RAM when the apps are running.
755First syncing of addressbooks (KA/Pi) is possible. 763First syncing of addressbooks (KA/Pi) is possible.
756 764
757 765
758********** VERSION 1.9.5a ************ 766********** VERSION 1.9.5a ************
759 767
760Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 768Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
761Fixed some small bugs. 769Fixed some small bugs.
762KA/Pi shows now the birthday in summary view. 770KA/Pi shows now the birthday in summary view.
763Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 771Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
764for displaying dates. 772for displaying dates.
765 773
766 774
767********** VERSION 1.9.5 ************ 775********** VERSION 1.9.5 ************
768 776
769There is still no Addressbook syncing! 777There is still no Addressbook syncing!
770 778
771New in 1.9.5: 779New in 1.9.5:
772 780
773Many bugfixes. 781Many bugfixes.
774Better searching in KA/Pi. 782Better searching in KA/Pi.
775You can configure in KA/Pi if you want to search only after 783You can configure in KA/Pi if you want to search only after
776<return> key pressed. 784<return> key pressed.
777 785
778Better mail downloading in OM/Pi. 786Better mail downloading in OM/Pi.
779 787
780First experimental alpha version of sync of KO/Pi with mobile phones. 788First experimental alpha version of sync of KO/Pi with mobile phones.
781See gammu documentation for supported phones. 789See gammu documentation for supported phones.
782You 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. 790You 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.
783Quick hint how to use: 791Quick hint how to use:
784NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 792NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
785Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 793Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
786Create syncprofile - mobile device 794Create syncprofile - mobile device
787Remove entry for model. (Leave empty ). 795Remove entry for model. (Leave empty ).
788Enable infrared on Zaurus and your Phone. 796Enable infrared on Zaurus and your Phone.
789Sync. 797Sync.
790To get a more detailed log, start kopi from konsole. 798To get a more detailed log, start kopi from konsole.
791 799
792********** VERSION 1.9.4 ************ 800********** VERSION 1.9.4 ************
793 801
794This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 802This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
795 803
796WARNING: 804WARNING:
797PLEASE BACKUP ALL YOUR DATA! 805PLEASE BACKUP ALL YOUR DATA!
798We have changed a lot and maybe there are some unknown problems. 806We have changed a lot and maybe there are some unknown problems.
799 807
800SYNC HANDLING HAS CHANGED! 808SYNC HANDLING HAS CHANGED!
801Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 809Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
802(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 810(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
803 811
804You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 812You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
805If 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. 813If 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.
806 814
807As programs are available: 815As programs are available:
808KO/Pi (korganizer ipk) - a calendar program. 816KO/Pi (korganizer ipk) - a calendar program.
809KA/Pi (kaddressbook ipk ) - an addressbook 817KA/Pi (kaddressbook ipk ) - an addressbook
810OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 818OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
811 819
812An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 820An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
813(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 821(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
814 822
815All the applications are installed in a "Pim" TAB. 823All the applications are installed in a "Pim" TAB.
816If 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 824If 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
817 825
818All the application are integrated. 826All the application are integrated.
819Such 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. 827Such 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.
820 828
821HINT: 829HINT:
822If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 830If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
823 831
824What's new? 832What's new?
825 833
826SYNC HANDLING HAS CHANGED! 834SYNC HANDLING HAS CHANGED!
827Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 835Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
828(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 836(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
829 837
830New in OM/Pi: 838New in OM/Pi:
831When 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. 839When 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.
832 840
833New in KO/Pi: 841New in KO/Pi:
834French is now available for KO/Pi. 842French is now available for KO/Pi.
835Choose menu:Actions - Configure:TAB locale 843Choose menu:Actions - Configure:TAB locale
836Syncing has changed. 844Syncing has changed.
837Phone sync available soon. 845Phone sync available soon.
838Not much changes, I cannot remember them ... 846Not much changes, I cannot remember them ...
839 847
840New in KA/Pi: 848New in KA/Pi:
841Beaming possible. 849Beaming possible.
842Sharp DTM readonly access possible( create a new DTM resource ); 850Sharp DTM readonly access possible( create a new DTM resource );
843Better searching possible. 851Better searching possible.
844Search is performed only after pressing the return key. 852Search is performed only after pressing the return key.
845Use wildcard * to specify parts of a name. 853Use wildcard * to specify parts of a name.
846 854
847Better 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 * . 855Better 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 * .
848 856
849A big improvement is the new management of the contact access. 857A big improvement is the new management of the contact access.
850In version 1.9.3, every application was using their own addressbook access data. 858In version 1.9.3, every application was using their own addressbook access data.
851That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi. 859That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi.
852That was wasting of memory, if you had several hundreds of contacts. 860That was wasting of memory, if you had several hundreds of contacts.
853 861
854Now only KA/Pi accesses the addressbook. 862Now only KA/Pi accesses the addressbook.
855If 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. 863If 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.
856If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly. 864If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly.
857That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first. 865That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first.
858 866
859New in the KO/Pi alarm applet: 867New in the KO/Pi alarm applet:
860Configure your own timer popup menu! 868Configure your own timer popup menu!
861(Text and minutes for timer countdown) 869(Text and minutes for timer countdown)
862Just edit the file 870Just edit the file
863(yourhomedir)/.kopialarmtimerrc 871(yourhomedir)/.kopialarmtimerrc
864and start/stop a timer to get a new menu with the data of this file. 872and start/stop a timer to get a new menu with the data of this file.
865 873
866********** VERSION 1.9.3 ************ 874********** VERSION 1.9.3 ************
8671) 8751)
868Now KO/Pi on Windows imports directly the calendar data of 876Now KO/Pi on Windows imports directly the calendar data of
869an installed Outlook. Should work with OL version >= 2000. 877an installed Outlook. Should work with OL version >= 2000.
870 878
871********** VERSION 1.9.2 ************ 879********** VERSION 1.9.2 ************
8721) 8801)
873KDE-Pim/Pi has got a new member: 881KDE-Pim/Pi has got a new member:
874KmicroMail (KM/Pi) is a mail program, 882KmicroMail (KM/Pi) is a mail program,
875which can handle IMAP and POP mail access. 883which can handle IMAP and POP mail access.
876It is based on Opie-Mail v3. 884It is based on Opie-Mail v3.
877All dependencies to the Opie libraries ar removed, 885All dependencies to the Opie libraries ar removed,
878such that no additional Opie lib is needed. 886such that no additional Opie lib is needed.
879It is already integrated in KO/Pi and KA/Pi. 887It is already integrated in KO/Pi and KA/Pi.
880It it now available for the Zaurus,probably it 888It it now available for the Zaurus,probably it
881will be available for other platforms later. 889will be available for other platforms later.
882Hint: 890Hint:
883Create your own contact (name + email) 891Create your own contact (name + email)
884in KA/Pi, select this contact and choose menu: 892in KA/Pi, select this contact and choose menu:
885Settings - Set Who Am I. 893Settings - Set Who Am I.
886Now the settings of this contact are used as 894Now the settings of this contact are used as
887the sender data in KM/Pi. 895the sender data in KM/Pi.
8882) 8962)
889KDE-Pim/Pi is split up in five different 897KDE-Pim/Pi is split up in five different
890packages now precompiled for Sharp Zaurus: 898packages now precompiled for Sharp Zaurus:
891--kmicrokdelibs_1.9.2_arm.ipk 899--kmicrokdelibs_1.9.2_arm.ipk
892The libs are needed for any 900The libs are needed for any
893of the following programs: 901of the following programs:
894--kaddressbook_1.9.2_arm.ipk 902--kaddressbook_1.9.2_arm.ipk
895--kmicromail_1.9.2_arm.ipk 903--kmicromail_1.9.2_arm.ipk
896--korganizer_1.9.2_arm.ipk 904--korganizer_1.9.2_arm.ipk
897Independ from that, there is the alarm applet 905Independ from that, there is the alarm applet
898available for KO/Pi, which also offers 906available for KO/Pi, which also offers
899quick access for a new mail or 907quick access for a new mail or
900showing the addressbook.: 908showing the addressbook.:
901--korganizer-alarm_1.9.2_arm.ipk 909--korganizer-alarm_1.9.2_arm.ipk
902Independend means, that the alarm applet 910Independend means, that the alarm applet
903does not need any of the libs or programs above to run. 911does not need any of the libs or programs above to run.
904But it would be quite useless without these programs. 912But it would be quite useless without these programs.
905NOTE: 913NOTE:
906If you get a 914If you get a
907"This application depends on other programs" 915"This application depends on other programs"
908during installation of 916during installation of
909--kmicrokdelibs_1.9.2_arm.ipk 917--kmicrokdelibs_1.9.2_arm.ipk
910you probably do not have to care about that. 918you probably do not have to care about that.
911kmicrokdelibs_1.9.2 will come with some 919kmicrokdelibs_1.9.2 will come with some
912resource plugins, which needs additional libraries. 920resource plugins, which needs additional libraries.
913(E.g. libopie1, if you want to use the 921(E.g. libopie1, if you want to use the
914opie resource connector in KA/Pi). 922opie resource connector in KA/Pi).
915If you do not have this libraries installed, 923If you do not have this libraries installed,
916you simply cannot use the resource. 924you simply cannot use the resource.
917To make it clear: 925To make it clear:
918If the libraries are missing, the applications 926If the libraries are missing, the applications
919using kmicrokdelibs will start, 927using kmicrokdelibs will start,
920because the resources are plugins. 928because the resources are plugins.
9213) 9293)
922KO/Pi and friends are now installable on SD-Card! 930KO/Pi and friends are now installable on SD-Card!
923It is recommended to install all libs and apps 931It is recommended to install all libs and apps
924on the SD card or all in the internal storage. 932on the SD card or all in the internal storage.
925There may be problems, if this is mixed. 933There may be problems, if this is mixed.
9264) 9344)
927Fixed two bugs in the alarm notification on Windows. 935Fixed two bugs in the alarm notification on Windows.
9285) 9365)
929Great improvement! 937Great improvement!
930KO/Pi uses now the latest version of libical. 938KO/Pi uses now the latest version of libical.
931Libical is the library which actually reads 939Libical is the library which actually reads
932the calendar files and extract the data from it. 940the calendar files and extract the data from it.
933With the old version, there were problems 941With the old version, there were problems
934(crashes or program hangs) when licical did read 942(crashes or program hangs) when licical did read
935files, which were not stored from KO/Pi. 943files, which were not stored from KO/Pi.
936I do not know, if the new libical works perfect, 944I do not know, if the new libical works perfect,
937but actually it works much better than 945but actually it works much better than
938the old version. 946the old version.
939There are no problems with compatibility with 947There are no problems with compatibility with
940old calendar files of KO/Pi, of course! 948old calendar files of KO/Pi, of course!
9416) 9496)
942New in KA/Pi: 950New in KA/Pi:
943Opie addressbook resource connector available! 951Opie addressbook resource connector available!
944You will need libopie1 and the opie addressbook, 952You will need libopie1 and the opie addressbook,
945of course. 953of course.
946With the Opie addressbook resource connector, 954With the Opie addressbook resource connector,
947you can access the Opie addressbook readonly in KA/Pi. 955you can access the Opie addressbook readonly in KA/Pi.
948If you want to edit or import the data into KA/Pi, 956If you want to edit or import the data into KA/Pi,
949do this: 957do this:
950a) Create an Opie resource. 958a) Create an Opie resource.
951 (Menu: Settings-Configure Resources). 959 (Menu: Settings-Configure Resources).
952After configuration and restarting KA/Pi you should see 960After configuration and restarting KA/Pi you should see
953the Opie contacts in KA/Pi. 961the Opie contacts in KA/Pi.
954b) Select some or all Opie contacts. 962b) Select some or all Opie contacts.
955(NOTE: +++++ 963(NOTE: +++++
956To know exactly, what contacts are Opie contacts, 964To know exactly, what contacts are Opie contacts,
957do this: Choose menu: 965do this: Choose menu:
958View-Modify View - TAB Fields. 966View-Modify View - TAB Fields.
959Select in the above list "Resource" and click 967Select in the above list "Resource" and click
960down arrow to add it to the "Selected fields". 968down arrow to add it to the "Selected fields".
961Click OK. 969Click OK.
962Now you have a new column "Resource" in your list, 970Now you have a new column "Resource" in your list,
963where you can see, what an Opie resource is. 971where you can see, what an Opie resource is.
964++++ NOTE end.) 972++++ NOTE end.)
965Ok, we do have now some Opie contacts seleted. 973Ok, we do have now some Opie contacts seleted.
966(Use SHIFT or CTRL key in order to multiple select). 974(Use SHIFT or CTRL key in order to multiple select).
967c) Choose menu: Edit-Copy. 975c) Choose menu: Edit-Copy.
968d) Choose menu: Edit-Paste. 976d) Choose menu: Edit-Paste.
969e) Select the resource, you want to add the contacts to. 977e) Select the resource, you want to add the contacts to.
970Congrats! Now you have read/write access to the copied 978Congrats! Now you have read/write access to the copied
971opie contacts as "real" KA/Pi contacts. 979opie contacts as "real" KA/Pi contacts.
972 980
973 981
974********** VERSION 1.9.1 ************ 982********** VERSION 1.9.1 ************
9751) 9831)
976 +++ IMPORTANT 1 +++ 984 +++ IMPORTANT 1 +++
977 985
978The storing place of the default calendar 986The storing place of the default calendar
979file has changed! 987file has changed!
980The default calendar file was 988The default calendar file was
981Applications/korganizer/mycalendar.ics 989Applications/korganizer/mycalendar.ics
982on Zaurus and 990on Zaurus and
983(yourHomeDir)/korganizer/mycalendar.ics 991(yourHomeDir)/korganizer/mycalendar.ics
984on Windows/Linux desktop. Now it is 992on Windows/Linux desktop. Now it is
985(yourHomeDir)/kdepim/korganizer/mycalendar.ics 993(yourHomeDir)/kdepim/korganizer/mycalendar.ics
986on Zaurus, Windows and Linux. 994on Zaurus, Windows and Linux.
987To load the old file, choose menu 995To load the old file, choose menu
988File-Load calendar backup. 996File-Load calendar backup.
989(It should be loaded automatically 997(It should be loaded automatically
990at startup with a warning message displayed). 998at startup with a warning message displayed).
991The place of the configuration file has changed too. 999The place of the configuration file has changed too.
992If you want to use your old KO/Pi config, 1000If you want to use your old KO/Pi config,
993copy it to 1001copy it to
994(yourHomeDir)/kdepim/config/korganizerrc 1002(yourHomeDir)/kdepim/config/korganizerrc
995Please read VERSION 1.9.0 - topic 3) as well! 1003Please read VERSION 1.9.0 - topic 3) as well!
996 1004
997 +++ IMPORTANT 2 +++ 1005 +++ IMPORTANT 2 +++
998 1006
999Because of the new paths, you will need 1007Because of the new paths, you will need
1000a new version of the KO/Pi alarm applet 1008a new version of the KO/Pi alarm applet
1001for Zaurus. 1009for Zaurus.
1002Use version >= 1.9.1 1010Use version >= 1.9.1
1003 1011
10042) 10122)
1005Now the QWhat'sThis Icon works for items 1013Now the QWhat'sThis Icon works for items
1006in the month view as well. 1014in the month view as well.
1007(See VERSION 1.7.8 Topic 1) ). 1015(See VERSION 1.7.8 Topic 1) ).
10083) 10163)
1009You can import birtsdays/anniversaries 1017You can import birtsdays/anniversaries
1010from KA/Pi into KO/Pi. 1018from KA/Pi into KO/Pi.
1011Choose menu File-Import birthdays. 1019Choose menu File-Import birthdays.
1012If you import twice, already imported items 1020If you import twice, already imported items
1013will not be imported again, if they 1021will not be imported again, if they
1014have not been changed in KO/Pi. 1022have not been changed in KO/Pi.
10154) 10234)
1016When syncing with sharp DTM, now a progress 1024When syncing with sharp DTM, now a progress
1017is shown, when the data is written back. 1025is shown, when the data is written back.
1018If there is much data in KO/Pi and no data 1026If there is much data in KO/Pi and no data
1019in DTM, that can take a long time. 1027in DTM, that can take a long time.
1020(But only for the first time ). 1028(But only for the first time ).
10215) 10295)
1022In the search dialog, you can search 1030In the search dialog, you can search
1023now for the name/email of an attendee 1031now for the name/email of an attendee
1024of an event/todo. 1032of an event/todo.
1025To get more space for displaying 1033To get more space for displaying
1026search results, the buttons 1034search results, the buttons
1027for "search" and "close" on the 1035for "search" and "close" on the
1028bottom are removed in the PDA version. 1036bottom are removed in the PDA version.
1029You have to click OK in the top right 1037You have to click OK in the top right
1030corner to do a search. 1038corner to do a search.
10316) 10396)
1032Now it is possible to disable the displaying 1040Now it is possible to disable the displaying
1033of todo items in the Allday part of the Agenda. 1041of todo items in the Allday part of the Agenda.
1034Choose Menu Action-Configure, 1042Choose Menu Action-Configure,
1035TAB Todo View, checkbox 1043TAB Todo View, checkbox
1036"Allday Agenda view shows todos" 1044"Allday Agenda view shows todos"
10377) 10457)
1038If FastLoad is enabled, now the settings and the 1046If FastLoad is enabled, now the settings and the
1039calendar data are saved, when KO/Pi is closed. 1047calendar data are saved, when KO/Pi is closed.
1040(If no Fastload is enabled, KO/Pi saves 1048(If no Fastload is enabled, KO/Pi saves
1041the data as well, of course) 1049the data as well, of course)
10428) 10508)
1043The Agenda View has a minimize-splitter now, 1051The Agenda View has a minimize-splitter now,
1044such that the height of the allday part can be 1052such that the height of the allday part can be
1045changed quickly. 1053changed quickly.
1046 1054
1047********** VERSION 1.9.0 ************ 1055********** VERSION 1.9.0 ************
10481) 10561)
1049KO/Pi is now merged with the new microKDE from KA/Pi. 1057KO/Pi is now merged with the new microKDE from KA/Pi.
1050KO/Pi accesses now KA/Pi as the addressbook. 1058KO/Pi accesses now KA/Pi as the addressbook.
1051The other ddressbook-plugins are not working any longer. 1059The other ddressbook-plugins are not working any longer.
1052(It is planned, that later KA/Pi itself uses these plugins) 1060(It is planned, that later KA/Pi itself uses these plugins)
1053New versions of KO/Pi are only available 1061New versions of KO/Pi are only available
1054together with KA/Pi as the KDE-Pim/Pi package. 1062together with KA/Pi as the KDE-Pim/Pi package.
10552) 10632)
1056If you click on an attendee of a meeting in the 1064If you click on an attendee of a meeting in the
1057event viewer, a detailed summary of the 1065event viewer, a detailed summary of the
1058attendee is shown. 1066attendee is shown.
10593) 10673)
1060The place of the configuration file has changed. 1068The place of the configuration file has changed.
1061If you want to use your old KO/Pi config, copy 1069If you want to use your old KO/Pi config, copy
1062Applications/korganizer/config_korganizerrc 1070Applications/korganizer/config_korganizerrc
1063to 1071to
1064Applications/korganizer/config/korganizerrc 1072Applications/korganizer/config/korganizerrc
1065 1073
1066********** VERSION 1.7.8 ************ 1074********** VERSION 1.7.8 ************
10671) 10751)
1068Now the QWhat'sThis ist working. 1076Now the QWhat'sThis ist working.
1069Enable the QWhat'sThis icon in the toolbar. 1077Enable the QWhat'sThis icon in the toolbar.
1070(You have to restart to reload the changed toolbar config). 1078(You have to restart to reload the changed toolbar config).
1071Now click on the QWhat'sThis Icon 1079Now click on the QWhat'sThis Icon
1072in the top right corner of KO/Pi. 1080in the top right corner of KO/Pi.
1073Then click on an item in the Agenda View: 1081Then click on an item in the Agenda View:
1074You will get a detailed display of the items content. 1082You will get a detailed display of the items content.
10752) 10832)
1076Some other very minor changes. 1084Some other very minor changes.
1077But I have forgotten the details ... 1085But I have forgotten the details ...
1078For that reason I start this log here: 1086For that reason I start this log here:
1079To document my changes, when I am doing it. 1087To document my changes, when I am doing it.
1080 1088
1081********** VERSION 1.7.7 ************ 1089********** VERSION 1.7.7 ************
1082Stable Version of KO/Pi 1090Stable Version of KO/Pi
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 36cd990..120bc89 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -1,931 +1,931 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Eitzenberger Thomas <thomas.eitzenberger@siemens.at> 3 Copyright (c) 2001 Eitzenberger Thomas <thomas.eitzenberger@siemens.at>
4 Parts of the source code have been copied from kdpdatebutton.cpp 4 Parts of the source code have been copied from kdpdatebutton.cpp
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source ode for Qt in the source distribution. 22 without including the source ode for Qt in the source distribution.
23*/ 23*/
24 24
25#include <qevent.h> 25#include <qevent.h>
26#include <qpainter.h> 26#include <qpainter.h>
27#include <qptrlist.h> 27#include <qptrlist.h>
28#include <qtimer.h> 28#include <qtimer.h>
29#include <qwhatsthis.h> 29#include <qwhatsthis.h>
30 30
31#include <kglobal.h> 31#include <kglobal.h>
32#include <kdebug.h> 32#include <kdebug.h>
33#include <klocale.h> 33#include <klocale.h>
34 34
35#include <libkcal/vcaldrag.h> 35#include <libkcal/vcaldrag.h>
36#include <libkcal/icaldrag.h> 36#include <libkcal/icaldrag.h>
37#include <libkcal/dndfactory.h> 37#include <libkcal/dndfactory.h>
38#include <libkcal/calendarresources.h> 38#include <libkcal/calendarresources.h>
39#include <libkcal/resourcecalendar.h> 39#include <libkcal/resourcecalendar.h>
40#include <kresources/resourceselectdialog.h> 40#include <kresources/resourceselectdialog.h>
41 41
42#include <kcalendarsystem.h> 42#include <kcalendarsystem.h>
43 43
44#ifndef KORG_NOPLUGINS 44#ifndef KORG_NOPLUGINS
45#include "kocore.h" 45#include "kocore.h"
46#endif 46#endif
47#include "koprefs.h" 47#include "koprefs.h"
48#include "koglobals.h" 48#include "koglobals.h"
49 49
50#include "kodaymatrix.h" 50#include "kodaymatrix.h"
51 51
52// ============================================================================ 52// ============================================================================
53// D Y N A M I C T I P 53// D Y N A M I C T I P
54// ============================================================================ 54// ============================================================================
55 55
56DynamicTip::DynamicTip( QWidget * parent ) 56DynamicTip::DynamicTip( QWidget * parent )
57 : QToolTip( parent ) 57 : QToolTip( parent )
58{ 58{
59 matrix = (KODayMatrix*)parent; 59 matrix = (KODayMatrix*)parent;
60} 60}
61 61
62class KODaymatrixWhatsThis :public QWhatsThis 62class KODaymatrixWhatsThis :public QWhatsThis
63{ 63{
64public: 64public:
65 KODaymatrixWhatsThis( KODayMatrix* view ) : QWhatsThis( view ),_view (view) { ;}; 65 KODaymatrixWhatsThis( KODayMatrix* view ) : QWhatsThis( view ),_view (view) { ;};
66 ~KODaymatrixWhatsThis() { ; }; 66 ~KODaymatrixWhatsThis() { ; };
67 67
68protected: 68protected:
69 virtual QString text( const QPoint& p ) 69 virtual QString text( const QPoint& p )
70 { 70 {
71 return _view->getWhatsThisText( p ) ; 71 return _view->getWhatsThisText( p ) ;
72 } 72 }
73private: 73private:
74 KODayMatrix * _view; 74 KODayMatrix * _view;
75}; 75};
76 76
77void DynamicTip::maybeTip( const QPoint &pos ) 77void DynamicTip::maybeTip( const QPoint &pos )
78{ 78{
79 //calculate which cell of the matrix the mouse is in 79 //calculate which cell of the matrix the mouse is in
80 QRect sz = matrix->frameRect(); 80 QRect sz = matrix->frameRect();
81 int dheight = sz.height()*7 / 42; 81 int dheight = sz.height()*7 / 42;
82 int dwidth = sz.width() / 7; 82 int dwidth = sz.width() / 7;
83 int row = pos.y()/dheight; 83 int row = pos.y()/dheight;
84 int col = pos.x()/dwidth; 84 int col = pos.x()/dwidth;
85 85
86 QRect rct(col*dwidth, row*dheight, dwidth, dheight); 86 QRect rct(col*dwidth, row*dheight, dwidth, dheight);
87 87
88// kdDebug() << "DynamicTip::maybeTip matrix cell index [" << 88// kdDebug() << "DynamicTip::maybeTip matrix cell index [" <<
89// col << "][" << row << "] => " <<(col+row*7) << endl; 89// col << "][" << row << "] => " <<(col+row*7) << endl;
90 90
91 //show holiday names only 91 //show holiday names only
92 QString str = matrix->getHolidayLabel(col+row*7); 92 QString str = matrix->getHolidayLabel(col+row*7);
93 if (str.isEmpty()) return; 93 if (str.isEmpty()) return;
94 tip(rct, str); 94 tip(rct, str);
95} 95}
96 96
97 97
98// ============================================================================ 98// ============================================================================
99// K O D A Y M A T R I X 99// K O D A Y M A T R I X
100// ============================================================================ 100// ============================================================================
101 101
102const int KODayMatrix::NOSELECTION = -1000; 102const int KODayMatrix::NOSELECTION = -1000;
103const int KODayMatrix::NUMDAYS = 42; 103const int KODayMatrix::NUMDAYS = 42;
104 104
105KODayMatrix::KODayMatrix( QWidget *parent, const char *name ) 105KODayMatrix::KODayMatrix( QWidget *parent, const char *name )
106 : QFrame( parent, name ), mCalendar( 0 ) 106 : QFrame( parent, name ), mCalendar( 0 )
107 107
108#if 0 108#if 0
109KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) : 109KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) :
110 QFrame(parent, name) 110 QFrame(parent, name)
111#endif 111#endif
112{ 112{
113 mKODaymatrixWhatsThis = new KODaymatrixWhatsThis(this); 113 mKODaymatrixWhatsThis = new KODaymatrixWhatsThis(this);
114 mPendingUpdateBeforeRepaint = false; 114 mPendingUpdateBeforeRepaint = false;
115 mouseDown = false; 115 mouseDown = false;
116 // initialize dynamic arrays 116 // initialize dynamic arrays
117 bDays.resize ( NUMDAYS ); 117 bDays.resize ( NUMDAYS );
118 days = new QDate[NUMDAYS]; 118 days = new QDate[NUMDAYS];
119 daylbls = new QString[NUMDAYS]; 119 daylbls = new QString[NUMDAYS];
120 events = new int[NUMDAYS]; 120 events = new int[NUMDAYS];
121 mToolTip = new DynamicTip(this); 121 mToolTip = new DynamicTip(this);
122 122
123 // set default values used for drawing the matrix 123 // set default values used for drawing the matrix
124 mDefaultBackColor = palette().active().base(); 124 mDefaultBackColor = palette().active().base();
125 mDefaultTextColor = palette().active().foreground(); 125 mDefaultTextColor = palette().active().foreground();
126 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor); 126 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor);
127 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor); 127 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor);
128 mSelectedDaysColor = QColor("white"); 128 mSelectedDaysColor = QColor("white");
129 mTodayMarginWidth = 2; 129 mTodayMarginWidth = 2;
130 mSelEnd = mSelStart = NOSELECTION; 130 mSelEnd = mSelStart = NOSELECTION;
131 131
132 setAcceptDrops(true); 132 setAcceptDrops(true);
133 //setFont( QFont("Arial", 10) ); 133 //setFont( QFont("Arial", 10) );
134 134
135 mUpdateTimer = new QTimer( this ); 135 mUpdateTimer = new QTimer( this );
136 connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() )); 136 connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() ));
137 mRepaintTimer = new QTimer( this ); 137 mRepaintTimer = new QTimer( this );
138 connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() )); 138 connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() ));
139 mDayChanged = false; 139 mDayChanged = false;
140 updateView(); 140 updateView();
141} 141}
142QString KODayMatrix::getWhatsThisText( QPoint p ) 142QString KODayMatrix::getWhatsThisText( QPoint p )
143{ 143{
144 144
145 int tmp = getDayIndexFrom(p.x(), p.y()); 145 int tmp = getDayIndexFrom(p.x(), p.y());
146 if ( tmp < 0 || tmp > NUMDAYS-1 || !mCalendar ) 146 if ( tmp < 0 || tmp > NUMDAYS-1 || !mCalendar )
147 return QString(); 147 return QString();
148 QDate mDate = days[tmp]; 148 QDate mDate = days[tmp];
149 QPtrList<Event> eventlist = mCalendar->events(mDate); 149 QPtrList<Event> eventlist = mCalendar->events(mDate);
150 Event *event; 150 Event *event;
151 QStringList mToolTip; 151 QStringList mToolTip;
152 for(event=eventlist.first();event != 0;event=eventlist.next()) { 152 for(event=eventlist.first();event != 0;event=eventlist.next()) {
153 QString mToolTipText; 153 QString mToolTipText;
154 QString text; 154 QString text;
155 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day 155 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day
156 if (event->isMultiDay()) { 156 if (event->isMultiDay()) {
157 QString prefix = "<->";multiday = 2; 157 QString prefix = "<->";multiday = 2;
158 QString time; 158 QString time;
159 if ( event->doesRecur() ) { 159 if ( event->doesRecur() ) {
160 if ( event->recursOn( mDate) ) { 160 if ( event->recursOn( mDate) ) {
161 prefix ="->" ;multiday = 1; 161 prefix ="->" ;multiday = 1;
162 } 162 }
163 else { 163 else {
164 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 164 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
165 if ( event->recursOn( mDate.addDays( -days)) ) { 165 if ( event->recursOn( mDate.addDays( -days)) ) {
166 prefix ="<-" ;multiday = 3; 166 prefix ="<-" ;multiday = 3;
167 } 167 }
168 } 168 }
169 } else { 169 } else {
170 if (mDate == event->dtStart().date()) { 170 if (mDate == event->dtStart().date()) {
171 prefix ="->" ;multiday = 1; 171 prefix ="->" ;multiday = 1;
172 } else if (mDate == event->dtEnd().date()) { 172 } else if (mDate == event->dtEnd().date()) {
173 prefix ="<-" ;multiday = 3; 173 prefix ="<-" ;multiday = 3;
174 } 174 }
175 } 175 }
176 if ( !event->doesFloat() ) { 176 if ( !event->doesFloat() ) {
177 if ( mDate == event->dtStart().date () ) 177 if ( mDate == event->dtStart().date () )
178 time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; 178 time = KGlobal::locale()->formatTime(event->dtStart().time())+" ";
179 else if ( mDate == event->dtEnd().date () ) 179 else if ( mDate == event->dtEnd().date () )
180 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 180 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
181 181
182 } 182 }
183 text = time + event->summary(); 183 text = time + event->summary();
184 mToolTipText += prefix + text; 184 mToolTipText += prefix + text;
185 } else { 185 } else {
186 if (event->doesFloat()) { 186 if (event->doesFloat()) {
187 text = event->summary(); 187 text = event->summary();
188 mToolTipText += text; 188 mToolTipText += text;
189 } 189 }
190 else { 190 else {
191 text = KGlobal::locale()->formatTime(event->dtStart().time()); 191 text = KGlobal::locale()->formatTime(event->dtStart().time());
192 text += " " + event->summary(); 192 text += " " + event->summary();
193 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 193 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
194 } 194 }
195 } 195 }
196 if ( !event->location().isEmpty() ) 196 if ( !event->location().isEmpty() )
197 mToolTipText += " (" + event->location() + ")"; 197 mToolTipText += " (" + event->location() + ")";
198#if QT_VERSION >= 0x030000 198#if QT_VERSION >= 0x030000
199 mToolTipText.replace( '<' , "&lt;" ); 199 mToolTipText.replace( '<' , "&lt;" );
200 mToolTipText.replace( '>' , "&gt;" ); 200 mToolTipText.replace( '>' , "&gt;" );
201#else 201#else
202 if ( mToolTipText.find ('<') >= 0 ) { 202 if ( mToolTipText.find ('<') >= 0 ) {
203 mToolTipText.replace( QRegExp("<") , "&lt;" ); 203 mToolTipText.replace( QRegExp("<") , "&lt;" );
204 } 204 }
205 if ( mToolTipText.find ('>') >= 0 ) { 205 if ( mToolTipText.find ('>') >= 0 ) {
206 mToolTipText.replace( QRegExp(">") , "&gt;" ); 206 mToolTipText.replace( QRegExp(">") , "&gt;" );
207 } 207 }
208#endif 208#endif
209 //qDebug("TTT: %s ", mToolTipText.latin1()); 209 //qDebug("TTT: %s ", mToolTipText.latin1());
210 mToolTip.append( mToolTipText ); 210 mToolTip.append( mToolTipText );
211 } 211 }
212 mToolTip.sort(); 212 mToolTip.sort();
213 return "<b>"+KGlobal::locale()->formatDate(days[tmp]) + "</b><br>" + mToolTip.join("<br>"); 213 return "<b>"+KGlobal::locale()->formatDate(days[tmp]) + "</b><br>" + mToolTip.join("<br>");
214} 214}
215void KODayMatrix::setCalendar( Calendar *cal ) 215void KODayMatrix::setCalendar( Calendar *cal )
216{ 216{
217 mCalendar = cal; 217 mCalendar = cal;
218 218
219 setAcceptDrops( mCalendar ); 219 setAcceptDrops( mCalendar );
220 220
221 updateEvents(); 221 updateEvents();
222} 222}
223 223
224QColor KODayMatrix::getShadedColor(QColor color) 224QColor KODayMatrix::getShadedColor(QColor color)
225{ 225{
226 QColor shaded; 226 QColor shaded;
227 int h=0; 227 int h=0;
228 int s=0; 228 int s=0;
229 int v=0; 229 int v=0;
230 color.hsv(&h,&s,&v); 230 color.hsv(&h,&s,&v);
231 s = s/4; 231 s = s/4;
232 v = 192+v/4; 232 v = 192+v/4;
233 shaded.setHsv(h,s,v); 233 shaded.setHsv(h,s,v);
234 234
235 return shaded; 235 return shaded;
236} 236}
237 237
238KODayMatrix::~KODayMatrix() 238KODayMatrix::~KODayMatrix()
239{ 239{
240 // delete mKODaymatrixWhatsThis; 240 // delete mKODaymatrixWhatsThis;
241 delete [] days; 241 delete [] days;
242 delete [] daylbls; 242 delete [] daylbls;
243 delete [] events; 243 delete [] events;
244 delete mToolTip; 244 delete mToolTip;
245} 245}
246 246
247/* 247/*
248void KODayMatrix::setStartDate(QDate start) 248void KODayMatrix::setStartDate(QDate start)
249{ 249{
250 updateView(start); 250 updateView(start);
251} 251}
252*/ 252*/
253 253
254void KODayMatrix::addSelectedDaysTo(DateList& selDays) 254void KODayMatrix::addSelectedDaysTo(DateList& selDays)
255{ 255{
256 256
257 if (mSelStart == NOSELECTION) { 257 if (mSelStart == NOSELECTION) {
258 return; 258 return;
259 } 259 }
260 260
261 //cope with selection being out of matrix limits at top (< 0) 261 //cope with selection being out of matrix limits at top (< 0)
262 int i0 = mSelStart; 262 int i0 = mSelStart;
263 if (i0 < 0) { 263 if (i0 < 0) {
264 for (int i = i0; i < 0; i++) { 264 for (int i = i0; i < 0; i++) {
265 selDays.append(days[0].addDays(i)); 265 selDays.append(days[0].addDays(i));
266 } 266 }
267 i0 = 0; 267 i0 = 0;
268 } 268 }
269 269
270 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1) 270 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1)
271 if (mSelEnd > NUMDAYS-1) { 271 if (mSelEnd > NUMDAYS-1) {
272 for (int i = i0; i <= NUMDAYS-1; i++) { 272 for (int i = i0; i <= NUMDAYS-1; i++) {
273 selDays.append(days[i]); 273 selDays.append(days[i]);
274 } 274 }
275 for (int i = NUMDAYS; i < mSelEnd; i++) { 275 for (int i = NUMDAYS; i < mSelEnd; i++) {
276 selDays.append(days[0].addDays(i)); 276 selDays.append(days[0].addDays(i));
277 } 277 }
278 278
279 // apply normal routine to selection being entirely within matrix limits 279 // apply normal routine to selection being entirely within matrix limits
280 } else { 280 } else {
281 for (int i = i0; i <= mSelEnd; i++) { 281 for (int i = i0; i <= mSelEnd; i++) {
282 selDays.append(days[i]); 282 selDays.append(days[i]);
283 } 283 }
284 } 284 }
285} 285}
286 286
287void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) 287void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
288{ 288{
289 mSelStart = startdate.daysTo(start); 289 mSelStart = startdate.daysTo(start);
290 if ( mSelStart < 0 ) 290 if ( mSelStart < 0 )
291 mSelStart = 0; 291 mSelStart = 0;
292 mSelEnd = startdate.daysTo(end); 292 mSelEnd = startdate.daysTo(end);
293 //qDebug("SELECTION %d %d ", mSelStart ,mSelEnd ); 293 //qDebug("SELECTION %d %d ", mSelStart ,mSelEnd );
294 if ( mSelEnd < 0 ) 294 if ( mSelEnd < 0 )
295 clearSelection(); 295 clearSelection();
296} 296}
297void KODayMatrix::clearSelection() 297void KODayMatrix::clearSelection()
298{ 298{
299 mSelEnd = mSelStart = NOSELECTION; 299 mSelEnd = mSelStart = NOSELECTION;
300} 300}
301 301
302 302
303void KODayMatrix::recalculateToday() 303void KODayMatrix::recalculateToday()
304{ 304{
305 today = -1; 305 today = -1;
306 for (int i=0; i<NUMDAYS; i++) { 306 for (int i=0; i<NUMDAYS; i++) {
307 events[i] = 0; 307 events[i] = 0;
308 days[i] = startdate.addDays(i); 308 days[i] = startdate.addDays(i);
309 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); 309 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] ));
310 310
311 // if today is in the currently displayed month, hilight today 311 // if today is in the currently displayed month, hilight today
312 if (days[i].year() == QDate::currentDate().year() && 312 if (days[i].year() == QDate::currentDate().year() &&
313 days[i].month() == QDate::currentDate().month() && 313 days[i].month() == QDate::currentDate().month() &&
314 days[i].day() == QDate::currentDate().day()) { 314 days[i].day() == QDate::currentDate().day()) {
315 today = i; 315 today = i;
316 } 316 }
317 } 317 }
318 // qDebug(QString("Today is visible at %1.").arg(today)); 318 // qDebug(QString("Today is visible at %1.").arg(today));
319} 319}
320 320
321void KODayMatrix::updateView() 321void KODayMatrix::updateView()
322{ 322{
323 updateView(startdate); 323 updateView(startdate);
324} 324}
325void KODayMatrix::repaintViewTimed() 325void KODayMatrix::repaintViewTimed()
326{ 326{
327 mRepaintTimer->stop(); 327 mRepaintTimer->stop();
328 repaint(false); 328 repaint(false);
329} 329}
330void KODayMatrix::updateViewTimed() 330void KODayMatrix::updateViewTimed()
331{ 331{
332 mUpdateTimer->stop(); 332 mUpdateTimer->stop();
333 if ( !mCalendar ) { 333 if ( !mCalendar ) {
334 qDebug("NOT CAL "); 334 qDebug("NOT CAL ");
335 return; 335 return;
336 } 336 }
337 //qDebug("KODayMatrix::updateViewTimed "); 337 //qDebug("KODayMatrix::updateViewTimed ");
338 for(int i = 0; i < NUMDAYS; i++) { 338 for(int i = 0; i < NUMDAYS; i++) {
339 // if events are set for the day then remember to draw it bold 339 // if events are set for the day then remember to draw it bold
340 QPtrList<Event> eventlist = mCalendar->events(days[i]); 340 QPtrList<Event> eventlist = mCalendar->events(days[i]);
341 Event *event; 341 Event *event;
342 int numEvents = eventlist.count(); 342 int numEvents = eventlist.count();
343 QString holiStr = ""; 343 QString holiStr = "";
344 bDays.clearBit(i); 344 bDays.clearBit(i);
345 for(event=eventlist.first();event != 0;event=eventlist.next()) { 345 for(event=eventlist.first();event != 0;event=eventlist.next()) {
346 ushort recurType = event->recurrence()->doesRecur(); 346 ushort recurType = event->recurrence()->doesRecur();
347 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || 347 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) ||
348 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { 348 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) {
349 numEvents--; 349 numEvents--;
350 } 350 }
351 if ( event->isHoliday()) { 351 if ( event->isHoliday()) {
352 if ( !holiStr.isEmpty() ) 352 if ( !holiStr.isEmpty() )
353 holiStr += "\n"; 353 holiStr += "\n";
354 holiStr += event->summary(); 354 holiStr += event->summary();
355 if ( !event->location().isEmpty() ) 355 if ( !event->location().isEmpty() )
356 holiStr += " (" + event->location() + ")"; 356 holiStr += " (" + event->location() + ")";
357 } 357 }
358 if ( event->isBirthday()) { 358 if ( event->isBirthday()) {
359 if ( !holiStr.isEmpty() ) 359 if ( !holiStr.isEmpty() )
360 holiStr += "\n"; 360 holiStr += "\n";
361 holiStr += i18n("Birthday") + ": "+event->summary(); 361 holiStr += i18n("Birthday") + ": "+event->summary();
362 if ( !event->location().isEmpty() ) 362 if ( !event->location().isEmpty() )
363 holiStr += " (" + event->location() + ")"; 363 holiStr += " (" + event->location() + ")";
364 bDays.setBit(i); 364 bDays.setBit(i);
365 } 365 }
366 } 366 }
367 events[i] = numEvents; 367 events[i] = numEvents;
368 //if it is a holy day then draw it red. Sundays are consider holidays, too 368 //if it is a holy day then draw it red. Sundays are consider holidays, too
369 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || 369 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) ||
370 !holiStr.isEmpty()) { 370 !holiStr.isEmpty()) {
371 mHolidays[i] = holiStr; 371 mHolidays[i] = holiStr;
372 } else { 372 } else {
373 mHolidays[i] = QString::null; 373 mHolidays[i] = QString::null;
374 } 374 }
375 } 375 }
376 if ( ! mPendingUpdateBeforeRepaint ) 376 if ( ! mPendingUpdateBeforeRepaint )
377 repaint(false); 377 repaint(false);
378} 378}
379void KODayMatrix::updateView(QDate actdate) 379void KODayMatrix::updateView(QDate actdate)
380{ 380{
381 381
382 if ( ! actdate.isValid() ) { 382 if ( ! actdate.isValid() ) {
383 //qDebug("date not valid "); 383 //qDebug("date not valid ");
384 return; 384 return;
385 } 385 }
386 mDayChanged = false; 386 mDayChanged = false;
387 //flag to indicate if the starting day of the matrix has changed by this call 387 //flag to indicate if the starting day of the matrix has changed by this call
388 //mDayChanged = false; 388 //mDayChanged = false;
389 // if a new startdate is to be set then apply Cornelius's calculation 389 // if a new startdate is to be set then apply Cornelius's calculation
390 // of the first day to be shown 390 // of the first day to be shown
391 if (actdate != startdate) { 391 if (actdate != startdate) {
392 // reset index of selection according to shift of starting date from startdate to actdate 392 // reset index of selection according to shift of starting date from startdate to actdate
393 if (mSelStart != NOSELECTION) { 393 if (mSelStart != NOSELECTION) {
394 int tmp = actdate.daysTo(startdate); 394 int tmp = actdate.daysTo(startdate);
395 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; 395 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl;
396 // shift selection if new one would be visible at least partly ! 396 // shift selection if new one would be visible at least partly !
397 397
398 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { 398 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) {
399 // nested if is required for next X display pushed from a different month - correction required 399 // nested if is required for next X display pushed from a different month - correction required
400 // otherwise, for month forward and backward, it must be avoided 400 // otherwise, for month forward and backward, it must be avoided
401 if( mSelStart > NUMDAYS || mSelStart < 0 ) 401 if( mSelStart > NUMDAYS || mSelStart < 0 )
402 mSelStart = mSelStart + tmp; 402 mSelStart = mSelStart + tmp;
403 if( mSelEnd > NUMDAYS || mSelEnd < 0 ) 403 if( mSelEnd > NUMDAYS || mSelEnd < 0 )
404 mSelEnd = mSelEnd + tmp; 404 mSelEnd = mSelEnd + tmp;
405 } 405 }
406 } 406 }
407 startdate = actdate; 407 startdate = actdate;
408 mDayChanged = true; 408 mDayChanged = true;
409 recalculateToday(); 409 recalculateToday();
410 } 410 }
411 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); 411 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() );
412 if ( !isVisible() ) { 412 if ( !isVisible() ) {
413 mPendingUpdateBeforeRepaint = true; 413 mPendingUpdateBeforeRepaint = true;
414 } else { 414 } else {
415#ifdef DESKTOP_VERSION 415#ifdef DESKTOP_VERSION
416 //mRepaintTimer->start( 100 ); 416 //mRepaintTimer->start( 100 );
417 mUpdateTimer->start( 100 ); 417 mUpdateTimer->start( 100 );
418#else 418#else
419 mRepaintTimer->start( 350 ); 419 mRepaintTimer->start( 350 );
420 mUpdateTimer->start( 1200 ); 420 mUpdateTimer->start( 1200 );
421#endif 421#endif
422 } 422 }
423} 423}
424void KODayMatrix::updateEvents() 424void KODayMatrix::updateEvents()
425{ 425{
426 if ( !mCalendar ) return; 426 if ( !mCalendar ) return;
427 427
428 for( int i = 0; i < NUMDAYS; i++ ) { 428 for( int i = 0; i < NUMDAYS; i++ ) {
429 // if events are set for the day then remember to draw it bold 429 // if events are set for the day then remember to draw it bold
430 QPtrList<Event> eventlist = mCalendar->events( days[ i ] ); 430 QPtrList<Event> eventlist = mCalendar->events( days[ i ] );
431 int numEvents = eventlist.count(); 431 int numEvents = eventlist.count();
432 Event *event; 432 Event *event;
433 for( event = eventlist.first(); event != 0;event=eventlist.next()) { 433 for( event = eventlist.first(); event != 0;event=eventlist.next()) {
434 ushort recurType = event->doesRecur(); 434 ushort recurType = event->doesRecur();
435 435
436 if ( ( recurType == Recurrence::rDaily && 436 if ( ( recurType == Recurrence::rDaily &&
437 !KOPrefs::instance()->mDailyRecur ) || 437 !KOPrefs::instance()->mDailyRecur ) ||
438 ( recurType == Recurrence::rWeekly && 438 ( recurType == Recurrence::rWeekly &&
439 !KOPrefs::instance()->mWeeklyRecur ) ) { 439 !KOPrefs::instance()->mWeeklyRecur ) ) {
440 numEvents--; 440 numEvents--;
441 } 441 }
442 } 442 }
443 events[ i ] = numEvents; 443 events[ i ] = numEvents;
444 } 444 }
445} 445}
446 446
447const QDate& KODayMatrix::getDate(int offset) 447const QDate& KODayMatrix::getDate(int offset)
448{ 448{
449 if (offset < 0 || offset > NUMDAYS-1) { 449 if (offset < 0 || offset > NUMDAYS-1) {
450 qDebug("Wrong offset2 %d", offset); 450 qDebug("Wrong offset2 %d", offset);
451 return days[0]; 451 return days[0];
452 } 452 }
453 return days[offset]; 453 return days[offset];
454} 454}
455 455
456QString KODayMatrix::getHolidayLabel(int offset) 456QString KODayMatrix::getHolidayLabel(int offset)
457{ 457{
458 if (offset < 0 || offset > NUMDAYS-1) { 458 if (offset < 0 || offset > NUMDAYS-1) {
459 qDebug("Wrong offset1 %d", offset); 459 qDebug("Wrong offset1 %d", offset);
460 return QString(); 460 return QString();
461 } 461 }
462 return mHolidays[offset]; 462 return mHolidays[offset];
463} 463}
464 464
465int KODayMatrix::getDayIndexFrom(int x, int y) 465int KODayMatrix::getDayIndexFrom(int x, int y)
466{ 466{
467 int colModulo = (width()-2) % 7; 467 int colModulo = (width()-2) % 7;
468 int rowModulo = (height()-2) % 6; 468 int rowModulo = (height()-2) % 6;
469#if 0 469#if 0
470 return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ? 470 return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ?
471 6 - x/daysize.width() : x/daysize.width()); 471 6 - x/daysize.width() : x/daysize.width());
472#endif 472#endif
473 int xVal = (x-colModulo/2-2)/daysize.width(); 473 int xVal = (x-colModulo/2-2)/daysize.width();
474 int yVal = (y-rowModulo/2-2)/daysize.height(); 474 int yVal = (y-rowModulo/2-2)/daysize.height();
475 475
476 476
477 return 7*(yVal) + xVal; 477 return 7*(yVal) + xVal;
478 478
479} 479}
480 480
481// ---------------------------------------------------------------------------- 481// ----------------------------------------------------------------------------
482// M O U S E E V E N T H A N D L I N G 482// M O U S E E V E N T H A N D L I N G
483// ---------------------------------------------------------------------------- 483// ----------------------------------------------------------------------------
484 484
485void KODayMatrix::mousePressEvent (QMouseEvent* e) 485void KODayMatrix::mousePressEvent (QMouseEvent* e)
486{ 486{
487 487
488 if ( e->button() == LeftButton ) 488 if ( e->button() == LeftButton )
489 mouseDown = true; 489 mouseDown = true;
490 mSelStart = getDayIndexFrom(e->x(), e->y()); 490 mSelStart = getDayIndexFrom(e->x(), e->y());
491 if (mSelStart > NUMDAYS-1) mSelStart=NUMDAYS-1; 491 if (mSelStart > NUMDAYS-1) mSelStart=NUMDAYS-1;
492 mSelInit = mSelStart; 492 mSelInit = mSelStart;
493 mSelEnd = mSelStart; 493 mSelEnd = mSelStart;
494 repaint(false); 494 repaint(false);
495} 495}
496 496
497void KODayMatrix::mouseReleaseEvent (QMouseEvent* e) 497void KODayMatrix::mouseReleaseEvent (QMouseEvent* e)
498{ 498{
499 if ( e->button() == LeftButton ) 499 if ( e->button() == LeftButton )
500 if ( ! mouseDown ) { 500 if ( ! mouseDown ) {
501 return; 501 return;
502 } 502 }
503 else 503 else
504 mouseDown = false; 504 mouseDown = false;
505 int tmp = getDayIndexFrom(e->x(), e->y()); 505 int tmp = getDayIndexFrom(e->x(), e->y());
506 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1; 506 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1;
507 507
508 if (mSelInit > tmp) { 508 if (mSelInit > tmp) {
509 mSelEnd = mSelInit; 509 mSelEnd = mSelInit;
510 if (tmp != mSelStart) { 510 if (tmp != mSelStart) {
511 mSelStart = tmp; 511 mSelStart = tmp;
512 repaint(false); 512 repaint(false);
513 } 513 }
514 } else { 514 } else {
515 mSelStart = mSelInit; 515 mSelStart = mSelInit;
516 516
517 //repaint only if selection has changed 517 //repaint only if selection has changed
518 if (tmp != mSelEnd) { 518 if (tmp != mSelEnd) {
519 mSelEnd = tmp; 519 mSelEnd = tmp;
520 repaint(false); 520 repaint(false);
521 } 521 }
522 } 522 }
523 523
524 DateList daylist; 524 DateList daylist;
525 if ( mSelStart < 0 ) 525 if ( mSelStart < 0 )
526 mSelStart = 0; 526 mSelStart = 0;
527 for (int i = mSelStart; i <= mSelEnd; i++) { 527 for (int i = mSelStart; i <= mSelEnd; i++) {
528 daylist.append(days[i]); 528 daylist.append(days[i]);
529 } 529 }
530 emit selected((const DateList)daylist); 530 emit selected((const DateList)daylist);
531 531
532} 532}
533 533
534void KODayMatrix::mouseMoveEvent (QMouseEvent* e) 534void KODayMatrix::mouseMoveEvent (QMouseEvent* e)
535{ 535{
536 if ( ! mouseDown ) { 536 if ( ! mouseDown ) {
537 return; 537 return;
538 } 538 }
539 int tmp = getDayIndexFrom(e->x(), e->y()); 539 int tmp = getDayIndexFrom(e->x(), e->y());
540 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1; 540 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1;
541 541
542 if (mSelInit > tmp) { 542 if (mSelInit > tmp) {
543 mSelEnd = mSelInit; 543 mSelEnd = mSelInit;
544 if (tmp != mSelStart) { 544 if (tmp != mSelStart) {
545 mSelStart = tmp; 545 mSelStart = tmp;
546 repaint(false); 546 repaint(false);
547 } 547 }
548 } else { 548 } else {
549 mSelStart = mSelInit; 549 mSelStart = mSelInit;
550 550
551 //repaint only if selection has changed 551 //repaint only if selection has changed
552 if (tmp != mSelEnd) { 552 if (tmp != mSelEnd) {
553 mSelEnd = tmp; 553 mSelEnd = tmp;
554 repaint(false); 554 repaint(false);
555 } 555 }
556 } 556 }
557} 557}
558 558
559// ---------------------------------------------------------------------------- 559// ----------------------------------------------------------------------------
560// D R A G ' N D R O P H A N D L I N G 560// D R A G ' N D R O P H A N D L I N G
561// ---------------------------------------------------------------------------- 561// ----------------------------------------------------------------------------
562 562
563void KODayMatrix::dragEnterEvent(QDragEnterEvent *e) 563void KODayMatrix::dragEnterEvent(QDragEnterEvent *e)
564{ 564{
565#ifndef KORG_NODND 565#ifndef KORG_NODND
566 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 566 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
567 e->ignore(); 567 e->ignore();
568 return; 568 return;
569 } 569 }
570 570
571 // some visual feedback 571 // some visual feedback
572// oldPalette = palette(); 572// oldPalette = palette();
573// setPalette(my_HilitePalette); 573// setPalette(my_HilitePalette);
574// update(); 574// update();
575#endif 575#endif
576} 576}
577 577
578void KODayMatrix::dragMoveEvent(QDragMoveEvent *e) 578void KODayMatrix::dragMoveEvent(QDragMoveEvent *e)
579{ 579{
580#ifndef KORG_NODND 580#ifndef KORG_NODND
581 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 581 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
582 e->ignore(); 582 e->ignore();
583 return; 583 return;
584 } 584 }
585 585
586 e->accept(); 586 e->accept();
587#endif 587#endif
588} 588}
589 589
590void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/) 590void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/)
591{ 591{
592#ifndef KORG_NODND 592#ifndef KORG_NODND
593// setPalette(oldPalette); 593// setPalette(oldPalette);
594// update(); 594// update();
595#endif 595#endif
596} 596}
597 597
598void KODayMatrix::dropEvent(QDropEvent *e) 598void KODayMatrix::dropEvent(QDropEvent *e)
599{ 599{
600#ifndef KORG_NODND 600#ifndef KORG_NODND
601// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl; 601// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl;
602 602
603 if (!mCalendar || !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 603 if (!mCalendar || !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
604 e->ignore(); 604 e->ignore();
605 return; 605 return;
606 } 606 }
607 607
608 DndFactory factory( mCalendar ); 608 DndFactory factory( mCalendar );
609 Event *event = factory.createDrop(e); 609 Event *event = factory.createDrop(e);
610 610
611 if (event) { 611 if (event) {
612 e->acceptAction(); 612 e->acceptAction();
613 613
614 Event *existingEvent = mCalendar->event(event->uid()); 614 Event *existingEvent = mCalendar->event(event->uid());
615 615
616 if(existingEvent) { 616 if(existingEvent) {
617 // uniquify event 617 // uniquify event
618 event->recreate(); 618 event->recreate();
619/* 619/*
620 KMessageBox::sorry(this, 620 KMessageBox::sorry(this,
621 i18n("Event already exists in this calendar."), 621 i18n("Event already exists in this calendar."),
622 i18n("Drop Event")); 622 i18n("Drop Event"));
623 delete event; 623 delete event;
624 return; 624 return;
625*/ 625*/
626 } 626 }
627// kdDebug() << "Drop new Event" << endl; 627// kdDebug() << "Drop new Event" << endl;
628 // Adjust date 628 // Adjust date
629 QDateTime start = event->dtStart(); 629 QDateTime start = event->dtStart();
630 QDateTime end = event->dtEnd(); 630 QDateTime end = event->dtEnd();
631 int duration = start.daysTo(end); 631 int duration = start.daysTo(end);
632 int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); 632 int idx = getDayIndexFrom(e->pos().x(), e->pos().y());
633 633
634 start.setDate(days[idx]); 634 start.setDate(days[idx]);
635 end.setDate(days[idx].addDays(duration)); 635 end.setDate(days[idx].addDays(duration));
636 636
637 event->setDtStart(start); 637 event->setDtStart(start);
638 event->setDtEnd(end); 638 event->setDtEnd(end);
639 mCalendar->addEvent(event); 639 mCalendar->addEvent(event);
640 640
641 emit eventDropped(event); 641 emit eventDropped(event);
642 } else { 642 } else {
643// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; 643// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl;
644 e->ignore(); 644 e->ignore();
645 } 645 }
646#endif 646#endif
647} 647}
648 648
649// ---------------------------------------------------------------------------- 649// ----------------------------------------------------------------------------
650// P A I N T E V E N T H A N D L I N G 650// P A I N T E V E N T H A N D L I N G
651// ---------------------------------------------------------------------------- 651// ----------------------------------------------------------------------------
652 652
653void KODayMatrix::paintEvent(QPaintEvent * pevent) 653void KODayMatrix::paintEvent(QPaintEvent * pevent)
654{ 654{
655 QRect sz = frameRect(); 655 QRect sz = frameRect();
656 if ( sz.width() <= 0 || sz.height() <= 0 ) 656 if ( sz.width() <= 0 || sz.height() <= 0 )
657 return; 657 return;
658 if ( mPendingUpdateBeforeRepaint ) { 658 if ( mPendingUpdateBeforeRepaint ) {
659 updateViewTimed(); 659 updateViewTimed();
660 mPendingUpdateBeforeRepaint = false; 660 mPendingUpdateBeforeRepaint = false;
661 } 661 }
662 if ( myPix.width() != sz.width() || myPix.height()!=sz.height() ) { 662 if ( myPix.width() != sz.width() || myPix.height()!=sz.height() ) {
663 myPix.resize(sz.size() ); 663 myPix.resize(sz.size() );
664 } 664 }
665 QPainter p(&myPix); 665 QPainter p(&myPix);
666 p.setFont(font()); 666 p.setFont(font());
667 667
668 668
669 int dheight = daysize.height(); 669 int dheight = daysize.height();
670 int dwidth = daysize.width(); 670 int dwidth = daysize.width();
671 int row,col; 671 int row,col;
672 int selw, selh; 672 int selw, selh;
673 int xyOff = frameWidth(); 673 int xyOff = frameWidth();
674 int colModulo = sz.width() % 7; 674 int colModulo = sz.width() % 7;
675 int rowModulo = sz.height() % 6; 675 int rowModulo = sz.height() % 6;
676 //qDebug("col %d row %d ",colModulo,rowModulo ); 676 //qDebug("col %d row %d ",colModulo,rowModulo );
677 677
678 bool isRTL = KOGlobals::self()->reverseLayout(); 678 bool isRTL = KOGlobals::self()->reverseLayout();
679 679
680 // draw background and topleft frame 680 // draw background and topleft frame
681 p.fillRect(pevent->rect(), mDefaultBackColor); 681 p.fillRect(pevent->rect(), mDefaultBackColor);
682 p.setPen(mDefaultTextColor); 682 p.setPen(mDefaultTextColor);
683 p.drawRect(0, 0, sz.width()+1, sz.height()+1); 683 p.drawRect(0, 0, sz.width()+1, sz.height()+1);
684 int mSelStartT = mSelStart; 684 int mSelStartT = mSelStart;
685 int mSelEndT = mSelEnd; 685 int mSelEndT = mSelEnd;
686 if ( mSelEndT >= NUMDAYS ) 686 if ( mSelEndT >= NUMDAYS )
687 mSelEndT = NUMDAYS-1; 687 mSelEndT = NUMDAYS-1;
688 // draw selected days with highlighted background color 688 // draw selected days with highlighted background color
689 if (mSelStart != NOSELECTION) { 689 if (mSelStart != NOSELECTION) {
690 bool skip = false; 690 bool skip = false;
691 if ( ! mouseDown ) { 691 if ( ! mouseDown ) {
692 int mo = days[20].month(); 692 int mo = days[20].month();
693 //qDebug("-- %d %d ", mSelStartT, mSelEndT); 693 //qDebug("-- %d %d ", mSelStartT, mSelEndT);
694 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() ); 694 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() );
695 int startMo = days[mSelStartT].month(); 695 int startMo = days[mSelStartT].month();
696 int endMo = days[mSelEndT].month(); 696 int endMo = days[mSelEndT].month();
697 if ( startMo == 12 && mo == 1 && endMo == 1 ) 697 if ( startMo == 12 && mo == 1 && endMo <= 2 )
698 startMo = 1; 698 startMo = 1;
699 if ( endMo == 1 && mo == 12 ) 699 if ( endMo == 1 && mo == 12 )
700 endMo = 12; 700 endMo = 12;
701 if ( (startMo > mo || endMo < mo) ) { 701 if ( (startMo > mo || endMo < mo) ) {
702 skip = true; 702 skip = true;
703 } else { 703 } else {
704 if ( days[mSelStartT].month() != mo ) { 704 if ( days[mSelStartT].month() != mo ) {
705 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day(); 705 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day();
706 mSelStartT += add +1; 706 mSelStartT += add +1;
707 } 707 }
708 if ( days[mSelEndT].month() != mo ) { 708 if ( days[mSelEndT].month() != mo ) {
709 int sub = days[mSelEndT].day(); 709 int sub = days[mSelEndT].day();
710 mSelEndT -= sub ; 710 mSelEndT -= sub ;
711 } 711 }
712 } 712 }
713 } 713 }
714 if ( ! skip ) { 714 if ( ! skip ) {
715 row = mSelStartT/7; 715 row = mSelStartT/7;
716 col = mSelStartT -row*7; 716 col = mSelStartT -row*7;
717 QColor selcol = KOPrefs::instance()->mHighlightColor; 717 QColor selcol = KOPrefs::instance()->mHighlightColor;
718 int addCol = 0; 718 int addCol = 0;
719 int addRow = 0; 719 int addRow = 0;
720 int addRow2 = 0; 720 int addRow2 = 0;
721 int addCol2 = 0; 721 int addCol2 = 0;
722 if (row == mSelEndT/7) { 722 if (row == mSelEndT/7) {
723 if ( rowModulo ) { 723 if ( rowModulo ) {
724 if ( row >= 6 - rowModulo ) 724 if ( row >= 6 - rowModulo )
725 addRow = row - 5 + rowModulo; 725 addRow = row - 5 + rowModulo;
726 } 726 }
727 if ( colModulo ) { 727 if ( colModulo ) {
728 int colt1 = mSelEndT%7; 728 int colt1 = mSelEndT%7;
729 //qDebug("colt1 %d ", colt1 ); 729 //qDebug("colt1 %d ", colt1 );
730 if ( colt1 >= 7 - colModulo ) 730 if ( colt1 >= 7 - colModulo )
731 addCol = colt1 - 7 + colModulo+1; 731 addCol = colt1 - 7 + colModulo+1;
732 int colt = mSelStartT%7; 732 int colt = mSelStartT%7;
733 if ( colt >= 7 - colModulo ) 733 if ( colt >= 7 - colModulo )
734 addCol2 = colt - 7 + colModulo; 734 addCol2 = colt - 7 + colModulo;
735 addCol -= addCol2; 735 addCol -= addCol2;
736 //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 ); 736 //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 );
737 } 737 }
738 // Single row selection 738 // Single row selection
739 if ( row == 0) 739 if ( row == 0)
740 addRow = 1; 740 addRow = 1;
741 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1+addCol2, 741 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1+addCol2,
742 row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol); 742 row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol);
743 } else { 743 } else {
744 // draw first row to the right 744 // draw first row to the right
745 if ( colModulo ) { 745 if ( colModulo ) {
746 if ( col >= 7 - colModulo ) 746 if ( col >= 7 - colModulo )
747 addCol2 = col - 7 + colModulo; 747 addCol2 = col - 7 + colModulo;
748 } 748 }
749 if ( rowModulo ) { 749 if ( rowModulo ) {
750 if ( row >= 6 - rowModulo ) 750 if ( row >= 6 - rowModulo )
751 addRow = row - 5 + rowModulo; 751 addRow = row - 5 + rowModulo;
752 } 752 }
753 if ( row == 0) 753 if ( row == 0)
754 addRow = 1; 754 addRow = 1;
755 p.fillRect(isRTL ? 0 : col*dwidth+1+addCol2, row*dheight+addRow, (7-col)*dwidth+colModulo, 755 p.fillRect(isRTL ? 0 : col*dwidth+1+addCol2, row*dheight+addRow, (7-col)*dwidth+colModulo,
756 dheight+1, selcol); 756 dheight+1, selcol);
757 // draw full block till last line 757 // draw full block till last line
758 selh = mSelEndT/7-row; 758 selh = mSelEndT/7-row;
759 addRow = 0; 759 addRow = 0;
760 if ( rowModulo ) { 760 if ( rowModulo ) {
761 if ( mSelEndT/7 >= 6 - rowModulo ) 761 if ( mSelEndT/7 >= 6 - rowModulo )
762 addRow = mSelEndT/7 - 5 + rowModulo; 762 addRow = mSelEndT/7 - 5 + rowModulo;
763 } 763 }
764 if (selh > 1) { 764 if (selh > 1) {
765 p.fillRect(1, (row+1)*dheight, 7*dwidth+colModulo, (selh-1)*dheight+addRow,selcol); 765 p.fillRect(1, (row+1)*dheight, 7*dwidth+colModulo, (selh-1)*dheight+addRow,selcol);
766 } 766 }
767 // draw last block from left to mSelEndT 767 // draw last block from left to mSelEndT
768 selw = mSelEndT-7*(mSelEndT/7)+1; 768 selw = mSelEndT-7*(mSelEndT/7)+1;
769 //qDebug("esl %d ",selw ); 769 //qDebug("esl %d ",selw );
770 int add = 0; 770 int add = 0;
771 if ( colModulo ) { 771 if ( colModulo ) {
772 add = 7 - colModulo; 772 add = 7 - colModulo;
773 if ( selw > add ) 773 if ( selw > add )
774 add = selw - add; 774 add = selw - add;
775 else 775 else
776 add = 0; 776 add = 0;
777 } 777 }
778 //qDebug("add %d ", add); 778 //qDebug("add %d ", add);
779 p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight+addRow, 779 p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight+addRow,
780 selw*dwidth+add, dheight+1, selcol); 780 selw*dwidth+add, dheight+1, selcol);
781 } 781 }
782 } 782 }
783 } 783 }
784 784
785 // iterate over all days in the matrix and draw the day label in appropriate colors 785 // iterate over all days in the matrix and draw the day label in appropriate colors
786 QColor actcol = mDefaultTextColorShaded; 786 QColor actcol = mDefaultTextColorShaded;
787 p.setPen(actcol); 787 p.setPen(actcol);
788 QPen tmppen; 788 QPen tmppen;
789 for(int i = 0; i < NUMDAYS; i++) { 789 for(int i = 0; i < NUMDAYS; i++) {
790 row = i/7; 790 row = i/7;
791 col = isRTL ? 6-(i-row*7) : i-row*7; 791 col = isRTL ? 6-(i-row*7) : i-row*7;
792 792
793 // if it is the first day of a month switch color from normal to shaded and vice versa 793 // if it is the first day of a month switch color from normal to shaded and vice versa
794 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) { 794 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) {
795 if (actcol == mDefaultTextColorShaded) { 795 if (actcol == mDefaultTextColorShaded) {
796 actcol = mDefaultTextColor; 796 actcol = mDefaultTextColor;
797 } else { 797 } else {
798 actcol = mDefaultTextColorShaded; 798 actcol = mDefaultTextColorShaded;
799 } 799 }
800 p.setPen(actcol); 800 p.setPen(actcol);
801 } 801 }
802 if (actcol == mDefaultTextColorShaded) { 802 if (actcol == mDefaultTextColorShaded) {
803 if ( ! mouseDown ) { 803 if ( ! mouseDown ) {
804 continue; 804 continue;
805 } 805 }
806 } 806 }
807 //Reset pen color after selected days block 807 //Reset pen color after selected days block
808 if (i == mSelEndT+1) { 808 if (i == mSelEndT+1) {
809 p.setPen(actcol); 809 p.setPen(actcol);
810 } 810 }
811 811
812 // if today then draw rectangle around day 812 // if today then draw rectangle around day
813 if (today == i) { 813 if (today == i) {
814 tmppen = p.pen(); 814 tmppen = p.pen();
815 QPen mTodayPen(p.pen()); 815 QPen mTodayPen(p.pen());
816 if ( daysize.width() < 20 ) 816 if ( daysize.width() < 20 )
817 mTodayPen.setWidth(1); 817 mTodayPen.setWidth(1);
818 else 818 else
819 mTodayPen.setWidth(mTodayMarginWidth); 819 mTodayPen.setWidth(mTodayMarginWidth);
820 //draw red rectangle for holidays 820 //draw red rectangle for holidays
821 if (!mHolidays[i].isNull()) { 821 if (!mHolidays[i].isNull()) {
822 if (actcol == mDefaultTextColor) { 822 if (actcol == mDefaultTextColor) {
823 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); 823 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor);
824 } else { 824 } else {
825 mTodayPen.setColor(mHolidayColorShaded); 825 mTodayPen.setColor(mHolidayColorShaded);
826 } 826 }
827 } 827 }
828 //draw gray rectangle for today if in selection 828 //draw gray rectangle for today if in selection
829 if (i >= mSelStartT && i <= mSelEndT) { 829 if (i >= mSelStartT && i <= mSelEndT) {
830 QColor grey("grey"); 830 QColor grey("grey");
831 mTodayPen.setColor(grey); 831 mTodayPen.setColor(grey);
832 } 832 }
833 p.setPen(mTodayPen); 833 p.setPen(mTodayPen);
834 834
835 835
836 int addCol = 0; 836 int addCol = 0;
837 int addRow = 0; 837 int addRow = 0;
838 if (rowModulo) { 838 if (rowModulo) {
839 if ( row >= 6 - rowModulo ) 839 if ( row >= 6 - rowModulo )
840 addRow = row - 5 + rowModulo; 840 addRow = row - 5 + rowModulo;
841 } 841 }
842 if ( colModulo ) { 842 if ( colModulo ) {
843 if ( col >= 7 - colModulo ) 843 if ( col >= 7 - colModulo )
844 addCol = col - 6 + colModulo-1; 844 addCol = col - 6 + colModulo-1;
845 } 845 }
846 if ( col == 0 ) 846 if ( col == 0 )
847 addCol = 1; 847 addCol = 1;
848 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1); 848 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1);
849 p.setPen(tmppen); 849 p.setPen(tmppen);
850 } 850 }
851 851
852 // if any events are on that day then draw it using a bold font 852 // if any events are on that day then draw it using a bold font
853 if (events[i] > 0) { 853 if (events[i] > 0) {
854 QFont myFont = font(); 854 QFont myFont = font();
855 myFont.setBold(true); 855 myFont.setBold(true);
856 p.setFont(myFont); 856 p.setFont(myFont);
857 } 857 }
858 858
859 // if it is a holiday then use the default holiday color 859 // if it is a holiday then use the default holiday color
860 if (!mHolidays[i].isNull()) { 860 if (!mHolidays[i].isNull()) {
861 if ( bDays.testBit(i) ) { 861 if ( bDays.testBit(i) ) {
862 p.setPen(Qt::green); 862 p.setPen(Qt::green);
863 } else { 863 } else {
864 if (actcol == mDefaultTextColor) { 864 if (actcol == mDefaultTextColor) {
865 p.setPen(KOPrefs::instance()->mHolidayColor); 865 p.setPen(KOPrefs::instance()->mHolidayColor);
866 } else { 866 } else {
867 p.setPen(mHolidayColorShaded); 867 p.setPen(mHolidayColorShaded);
868 } 868 }
869 } 869 }
870 } 870 }
871 871
872 // draw selected days with special color 872 // draw selected days with special color
873 // DO NOT specially highlight holidays in selection ! 873 // DO NOT specially highlight holidays in selection !
874 if (i >= mSelStartT && i <= mSelEndT) { 874 if (i >= mSelStartT && i <= mSelEndT) {
875 ;//p.setPen(mSelectedDaysColor); 875 ;//p.setPen(mSelectedDaysColor);
876 } 876 }
877 877
878 int addCol = 0; 878 int addCol = 0;
879 int addRow = 0; 879 int addRow = 0;
880 if ( colModulo ) { 880 if ( colModulo ) {
881 if ( col >= 7 - colModulo ) 881 if ( col >= 7 - colModulo )
882 addCol = col - 7 + colModulo; 882 addCol = col - 7 + colModulo;
883 } 883 }
884 if ( rowModulo ) { 884 if ( rowModulo ) {
885 if ( row >= 6 - rowModulo ) 885 if ( row >= 6 - rowModulo )
886 addRow = row - 5 + rowModulo; 886 addRow = row - 5 + rowModulo;
887 } 887 }
888 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow); 888 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow);
889 ++addCol;//++addCol; 889 ++addCol;//++addCol;
890 if ( row == 0) 890 if ( row == 0)
891 addRow = 1; 891 addRow = 1;
892 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight, 892 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight,
893 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); 893 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
894 894
895 // reset color to actual color 895 // reset color to actual color
896 if (!mHolidays[i].isNull()) { 896 if (!mHolidays[i].isNull()) {
897 p.setPen(actcol); 897 p.setPen(actcol);
898 } 898 }
899 // reset bold font to plain font 899 // reset bold font to plain font
900 if (events[i] > 0) { 900 if (events[i] > 0) {
901 QFont myFont = font(); 901 QFont myFont = font();
902 myFont.setBold(false); 902 myFont.setBold(false);
903 p.setFont(myFont); 903 p.setFont(myFont);
904 } 904 }
905 } 905 }
906 int off = xyOff; 906 int off = xyOff;
907 bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP); 907 bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP);
908 //qDebug("ffffffffff %d ", off); 908 //qDebug("ffffffffff %d ", off);
909} 909}
910 910
911// ---------------------------------------------------------------------------- 911// ----------------------------------------------------------------------------
912// R E SI Z E E V E N T H A N D L I N G 912// R E SI Z E E V E N T H A N D L I N G
913// ---------------------------------------------------------------------------- 913// ----------------------------------------------------------------------------
914 914
915void KODayMatrix::resizeEvent(QResizeEvent *) 915void KODayMatrix::resizeEvent(QResizeEvent *)
916{ 916{
917 QRect sz = frameRect(); 917 QRect sz = frameRect();
918 daysize.setHeight(sz.height()*7 / NUMDAYS); 918 daysize.setHeight(sz.height()*7 / NUMDAYS);
919 daysize.setWidth(sz.width() / 7); 919 daysize.setWidth(sz.width() / 7);
920} 920}
921 921
922QSize KODayMatrix::sizeHint() const 922QSize KODayMatrix::sizeHint() const
923{ 923{
924 924
925 QFontMetrics fm ( font() ); 925 QFontMetrics fm ( font() );
926 int wid = fm.width( "30") *7+3; 926 int wid = fm.width( "30") *7+3;
927 int hei = fm.height() * 6+3; 927 int hei = fm.height() * 6+3;
928 //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei); 928 //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei);
929 return QSize ( wid, hei ); 929 return QSize ( wid, hei );
930 930
931} 931}