summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-03-07 16:50:01 (UTC)
committer zautrix <zautrix>2005-03-07 16:50:01 (UTC)
commiteae0ddd71371d2e56b39891d05ca3a385c33727b (patch) (unidiff)
tree1586419ab63d0edbf939f0e1751abeb469f66eb5
parent584b030a610cedf167f4a75c19ce28e6526ad293 (diff)
downloadkdepimpi-eae0ddd71371d2e56b39891d05ca3a385c33727b.zip
kdepimpi-eae0ddd71371d2e56b39891d05ca3a385c33727b.tar.gz
kdepimpi-eae0ddd71371d2e56b39891d05ca3a385c33727b.tar.bz2
icons added
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt8
-rw-r--r--bin/kdepim/kaddressbook/icons16/z_menu.pngbin0 -> 713 bytes
-rw-r--r--bin/kdepim/kaddressbook/icons22/z_menu.pngbin0 -> 1017 bytes
-rw-r--r--bin/kdepim/korganizer/icons16/z_menu.pngbin0 -> 713 bytes
-rw-r--r--bin/kdepim/korganizer/iconsmini/z_menu.pngbin0 -> 572 bytes
-rw-r--r--bin/kdepim/korganizer/z_menu.pngbin0 -> 1017 bytes
-rw-r--r--kaddressbook/kabcore.cpp2
-rw-r--r--korganizer/kotodoviewitem.cpp7
-rw-r--r--korganizer/mainwindow.cpp29
-rw-r--r--pwmanager/pwmanager/listviewpwm.cpp8
-rw-r--r--pwmanager/pwmanager/listviewpwm.h2
-rw-r--r--pwmanager/pwmanager/pwmview.cpp2
-rw-r--r--pwmanager/pwmanager/pwmviewstyle.cpp4
-rw-r--r--pwmanager/pwmanager/pwmviewstyle.h2
14 files changed, 48 insertions, 16 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 657d1de..7438f9d 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,770 +1,778 @@
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.15 ************
4
5PwM/Pi:
6Added keyboard shorcuts for
7- toggling summary view (space bar)
8- delete item (delete + backspace key)
9- add new item ( i + n key)
10
3********** VERSION 2.0.14 ************ 11********** VERSION 2.0.14 ************
4 12
5Made Passwordmanager PwM/Pi more userfriendly: 13Made Passwordmanager PwM/Pi more userfriendly:
6Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 14Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
7Fixed bug in KO/Pi todo printing. 15Fixed bug in KO/Pi todo printing.
8Made Qtopia calendar import possible on desktop . 16Made Qtopia calendar import possible on desktop .
9 17
10********** VERSION 2.0.13 ************ 18********** VERSION 2.0.13 ************
11 19
12Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 20Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
13 21
14In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 22In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
15 23
16OM/Pi: 24OM/Pi:
17Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 25Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
18Added missing German translation. 26Added missing German translation.
19Added warning if path is specified in local folder settings of account config. 27Added warning if path is specified in local folder settings of account config.
20 28
21********** VERSION 2.0.12 ************ 29********** VERSION 2.0.12 ************
22 30
23KO/Pi: 31KO/Pi:
24Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 32Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
25Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 33Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
26Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 34Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
27 35
28Fixed problem in pi-sync mode when wrong password was sent. 36Fixed problem in pi-sync mode when wrong password was sent.
29 37
30OM/Pi: 38OM/Pi:
31Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 39Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
32Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 40Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
33 41
34********** VERSION 2.0.11 ************ 42********** VERSION 2.0.11 ************
35 43
36Fixed some problems in pi-sync mode 44Fixed some problems in pi-sync mode
37(e.g. details of events were not synced properly) 45(e.g. details of events were not synced properly)
38 46
39********** VERSION 2.0.10 ************ 47********** VERSION 2.0.10 ************
40 48
41KO/Pi: 49KO/Pi:
42In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 50In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
43This is fixed. 51This is fixed.
44Changed the search dialog a bit to make it more user friendly. 52Changed the search dialog a bit to make it more user friendly.
45(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 53(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
46 54
47Added config option to hide the week number in KO/Pi toolbar. 55Added config option to hide the week number in KO/Pi toolbar.
48 56
49********** VERSION 2.0.9 ************ 57********** VERSION 2.0.9 ************
50 58
51Made month view icons for multiday events a bit nicer. 59Made month view icons for multiday events a bit nicer.
52Some minor fixes in KO/Pi 60Some minor fixes in KO/Pi
53(e.g. go to today did not work for new week view properly). 61(e.g. go to today did not work for new week view properly).
54 62
55 63
56********** VERSION 2.0.8 ************ 64********** VERSION 2.0.8 ************
57 65
58Fixed a problem in dependency info in the ipk files for the Zaurus. 66Fixed a problem in dependency info in the ipk files for the Zaurus.
59 67
60Added 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. 68Added 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.
61 69
62Added a "go today" button to the datepicker. 70Added a "go today" button to the datepicker.
63 71
64Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 72Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
65and made it configureable to show these values. 73and made it configureable to show these values.
66 74
67Fixed a problem for events (from external iCal files) that do have a duration but no end date. 75Fixed a problem for events (from external iCal files) that do have a duration but no end date.
68 76
69 77
70********** VERSION 2.0.7 ************ 78********** VERSION 2.0.7 ************
71 79
72Added global application font settings 80Added global application font settings
73(for all KDE-Pim/Pi apps) to the general settings. 81(for all KDE-Pim/Pi apps) to the general settings.
74 82
75Fixed a problem in OM/Pi when trying to login to some IMAP servers 83Fixed a problem in OM/Pi when trying to login to some IMAP servers
76(like the IMAP server of Apple: mail.mac.com ) 84(like the IMAP server of Apple: mail.mac.com )
77 85
78Added recurring todos to KO/Pi. 86Added recurring todos to KO/Pi.
79 87
80 88
81********** VERSION 2.0.6 ************ 89********** VERSION 2.0.6 ************
82 90
83Some bugfixes in the pi-sync mode. 91Some bugfixes in the pi-sync mode.
84Added German translation for pi-sync mode. 92Added German translation for pi-sync mode.
85 93
86KO/Pi: 94KO/Pi:
87Made the todolist using alternate background. 95Made the todolist using alternate background.
88 96
89Other minor fixes in KO/Pi. 97Other minor fixes in KO/Pi.
90 98
91 99
92********** VERSION 2.0.5 ************ 100********** VERSION 2.0.5 ************
93 101
94Bugfixes in KO/Pi. 102Bugfixes in KO/Pi.
95 103
96********** VERSION 2.0.4 ************ 104********** VERSION 2.0.4 ************
97 105
98KO/Pi: 106KO/Pi:
99Fixed problem loading translations for summary/location edit boxes in event/todo editor. 107Fixed problem loading translations for summary/location edit boxes in event/todo editor.
100 108
101Added a general "select week number" to the toolbar. 109Added a general "select week number" to the toolbar.
102 110
103Fixed some small problem of the new features introduced in version 2.0.3. 111Fixed some small problem of the new features introduced in version 2.0.3.
104 112
105Made it possible to specify one specific category as category color, 113Made it possible to specify one specific category as category color,
106if more than one categories are selected. 114if more than one categories are selected.
107 115
108Fixed a bug in saving colors for categories with non-ascii characters. 116Fixed a bug in saving colors for categories with non-ascii characters.
109(Like, e.g. German Umlauts). 117(Like, e.g. German Umlauts).
110Propably you have to set your colors again for those categories. 118Propably you have to set your colors again for those categories.
111 119
112 120
113********** VERSION 2.0.3 ************ 121********** VERSION 2.0.3 ************
114 122
115KO/Pi: 123KO/Pi:
116Added feature for changing alarm settings for many items at once: 124Added feature for changing alarm settings for many items at once:
117Open list view (or search dialog), select the desired items and choose in 125Open list view (or search dialog), select the desired items and choose in
118the popup menu: Set alarm for selected... 126the popup menu: Set alarm for selected...
119 127
120Added to the event/todo viewer the option to send an email to 128Added to the event/todo viewer the option to send an email to
121all attendees or all selected (with RSVP) attendees. 129all attendees or all selected (with RSVP) attendees.
122 130
123Made the week-month mode changing in month view faster. 131Made the week-month mode changing in month view faster.
124 132
125Made month view better useable with keyboard. 133Made month view better useable with keyboard.
126Now TAB key jumps to next cell with an event/todo. 134Now TAB key jumps to next cell with an event/todo.
127Scroll in cell with coursor keys, scroll in time (next week) with 135Scroll in cell with coursor keys, scroll in time (next week) with
128Shift/Control + coursorkeys. 136Shift/Control + coursorkeys.
129 137
130Fixed bug that the todo view flat mode was reset after first view update. 138Fixed bug that the todo view flat mode was reset after first view update.
131 139
132If a todo is displayed closed in the todo view, 140If a todo is displayed closed in the todo view,
133it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. 141it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties.
134 142
135Added info about the numbers of years to the caption (title) information about a birthday event. 143Added info about the numbers of years to the caption (title) information about a birthday event.
136 144
137Made completion date in todo editor editable. 145Made completion date in todo editor editable.
138 146
139Added possibility to save/load templates for journals. 147Added possibility to save/load templates for journals.
140(Which is just a simple "save text to file" or "insert text from file". 148(Which is just a simple "save text to file" or "insert text from file".
141 149
142********** VERSION 2.0.2 ************ 150********** VERSION 2.0.2 ************
143 151
144KO/Pi: 152KO/Pi:
145Fixed the layout problem of the day label buttons 153Fixed the layout problem of the day label buttons
146of the agenda view introduced in version 2.0.1. 154of the agenda view introduced in version 2.0.1.
147 155
148Added WhatsThis support for the todo view and the list view. 156Added WhatsThis support for the todo view and the list view.
149 157
150Added a quite useful feature to the montview. 158Added a quite useful feature to the montview.
151Just click on the week numbers on the left. 159Just click on the week numbers on the left.
152And in the top right corner of month view/agenda view 160And in the top right corner of month view/agenda view
153there is now a "week number quick selector". 161there is now a "week number quick selector".
154(Click on the black triangle). 162(Click on the black triangle).
155 163
156Made the quite difficult timezone change in KO/Pi easy. 164Made the quite difficult timezone change in KO/Pi easy.
157 165
158OM/Pi: 166OM/Pi:
159Fixed too small icons on desktop. 167Fixed too small icons on desktop.
160Fixed non visible icons in mainwindow on Z with fastload enabled. 168Fixed non visible icons in mainwindow on Z with fastload enabled.
161Added signature file setting to smtp account config. 169Added signature file setting to smtp account config.
162And the signature can be edited and saved in the edit mail dialog. 170And the signature can be edited and saved in the edit mail dialog.
163That does mean: 171That does mean:
164Simply edit the signature for the selected smtp account in the 172Simply edit the signature for the selected smtp account in the
165edit new mail dialog and press the "save signature" button there. 173edit new mail dialog and press the "save signature" button there.
166Then the signature is saved to the file specified in the smtp account settings. 174Then the signature is saved to the file specified in the smtp account settings.
167If there is no file specified, it is saved automatically to the file 175If there is no file specified, it is saved automatically to the file
168kdepim/apps/kopiemail/<accountname>.sig. 176kdepim/apps/kopiemail/<accountname>.sig.
169 177
170 178
171 179
172********** VERSION 2.0.1 ************ 180********** VERSION 2.0.1 ************
173 181
174Oooops ... I forgot to test on the Zaurus 5500 ... 182Oooops ... I forgot to test on the Zaurus 5500 ...
175 183
176Fixed many problems of new (english) strings (and german translations) 184Fixed many problems of new (english) strings (and german translations)
177introduced in the latest versions, where the text was not fitting on the 185introduced in the latest versions, where the text was not fitting on the
178240x320 display of the Zaurus 5500. 186240x320 display of the Zaurus 5500.
179 187
180KO/Pi: 188KO/Pi:
181Added a popup menu ( press pen and hold to get popup ) to the agenda view 189Added a popup menu ( press pen and hold to get popup ) to the agenda view
182with many useful items (add event/todo, show next week, two weeks, month, journal). 190with many useful items (add event/todo, show next week, two weeks, month, journal).
183 191
184Added items to the todolist popup menu for: 192Added items to the todolist popup menu for:
185Display all opened, all closed or all todos flat. 193Display all opened, all closed or all todos flat.
186The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 194The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
187Made the reparenting of todos on the desktop possible via Drag&Drop. 195Made the reparenting of todos on the desktop possible via Drag&Drop.
188Fixed several bugs in setting the completed datetime for todos. 196Fixed several bugs in setting the completed datetime for todos.
189Added info about completed datetime of todos to the todo viewer. 197Added info about completed datetime of todos to the todo viewer.
190Now displaying a completed todo (with completed datetime set) in the agenda view 198Now displaying a completed todo (with completed datetime set) in the agenda view
191at the time of the completion. Such that now it is possible to see in the agenda view 199at the time of the completion. Such that now it is possible to see in the agenda view
192when what todo was completed. 200when what todo was completed.
193Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 201Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
194Now the behaviour is: 202Now the behaviour is:
195Setting a parent to complete sets all (sub)childs to complete. 203Setting a parent to complete sets all (sub)childs to complete.
196Setting a parent to uncomplete does not change the childs. 204Setting a parent to uncomplete does not change the childs.
197Setting a child to uncomplete sets all parent to uncomplete. 205Setting a child to uncomplete sets all parent to uncomplete.
198Setting a child to complete does not change the parents. 206Setting a child to complete does not change the parents.
199 207
200Smart updating and double buffering of the daymatrix. 208Smart updating and double buffering of the daymatrix.
201Showing holidays in the day matrix. 209Showing holidays in the day matrix.
202Many other small performance updates. 210Many other small performance updates.
203 211
204Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. 212Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
205 213
206Now the translation file usertranslation.txt is supposed to be in utf8 format. 214Now the translation file usertranslation.txt is supposed to be in utf8 format.
207If 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. 215If 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.
208 216
209 217
210********** VERSION 2.0.0 ************ 218********** VERSION 2.0.0 ************
211 219
212Stable release 2.0.0! 220Stable release 2.0.0!
213 221
214KO/Pi: 222KO/Pi:
215Fixed problem in edit dialog recreation at startup. 223Fixed problem in edit dialog recreation at startup.
216Made "toggle view*" menu items enabled context sensitive. 224Made "toggle view*" menu items enabled context sensitive.
217Changed agenda size menu to items 1-10. 225Changed agenda size menu to items 1-10.
218Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 226Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
219Usebility enhancements in the KO/Pi menus. 227Usebility enhancements in the KO/Pi menus.
220Birthday import now adds year to summary. 228Birthday import now adds year to summary.
221What's Next view shows age in years for birthday. 229What's Next view shows age in years for birthday.
222 230
223OM/Pi: 231OM/Pi:
224Added three info lines to display subject, from and to of selected mails. 232Added three info lines to display subject, from and to of selected mails.
225 233
226KA/Pi: 234KA/Pi:
227Fixed jump bar behaviour on Zaurus. 235Fixed jump bar behaviour on Zaurus.
228Now KA/Pi search field supports searching for a range of starting characters. 236Now KA/Pi search field supports searching for a range of starting characters.
229E.g. to search for all contact beginning with b to n, type 237E.g. to search for all contact beginning with b to n, type
230b-n 238b-n
231in the search field. 239in the search field.
232 240
233********** VERSION 1.9.20 ************ 241********** VERSION 1.9.20 ************
234 242
235KO/Pi: 243KO/Pi:
236Added for the "dislplay one day" agenda mode 244Added for the "dislplay one day" agenda mode
237info in the caption and in the day lables: 245info in the caption and in the day lables:
238Now it is displayed, if the selected day is from "day before yesterday" 246Now it is displayed, if the selected day is from "day before yesterday"
239to "day after tomorrow". 247to "day after tomorrow".
240Made it possible to delete a Todo, which has sub-todos. 248Made it possible to delete a Todo, which has sub-todos.
241Fixed two small problems in the todo view. 249Fixed two small problems in the todo view.
242Added missing German translation for filter edit and print dialog. 250Added missing German translation for filter edit and print dialog.
243Made search dialog closeable by cancel key. 251Made search dialog closeable by cancel key.
244 252
245Made it possible to select in the date picker the (ligt grey ) 253Made it possible to select in the date picker the (ligt grey )
246dates of the prev./next month with the mouse. 254dates of the prev./next month with the mouse.
247 255
248OM/Pi: 256OM/Pi:
249"Delete mail" icon in main window now deletes all selected mails. 257"Delete mail" icon in main window now deletes all selected mails.
250Fixed the problem, that the state flag of imap mails was ignored. 258Fixed the problem, that the state flag of imap mails was ignored.
251Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 259Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
252to indecate that they are already seen. 260to indecate that they are already seen.
253Fixed the problem that the body of some mails was not displayed in the 261Fixed the problem that the body of some mails was not displayed in the
254mail viewer when fetching them from the imap server directly to read them. 262mail viewer when fetching them from the imap server directly to read them.
255Made it (configurable) possible to show the "To:" field in the list view. 263Made it (configurable) possible to show the "To:" field in the list view.
256Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 264Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
257Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 265Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
258local storage folder (specified in account settings) of the account of the mail. 266local storage folder (specified in account settings) of the account of the mail.
259Removed some memory leaks in OM/Pi. 267Removed some memory leaks in OM/Pi.
260 268
261 269
262********** VERSION 1.9.19 ************ 270********** VERSION 1.9.19 ************
263 271
264Added a lot of missing translations to KA/Pi, 272Added a lot of missing translations to KA/Pi,
265Added some missing translations to KO/Pi and OM/Pi. 273Added some missing translations to KO/Pi and OM/Pi.
266 274
267Fixed some minor problems in KA/Pi + KO/Pi. 275Fixed some minor problems in KA/Pi + KO/Pi.
268 276
269Fixed a crash when closing PwM/Pi. 277Fixed a crash when closing PwM/Pi.
270Added German translation for PwM/Pi. 278Added German translation for PwM/Pi.
271 279
272Made view change and Month View update faster in KO/Pi. 280Made view change and Month View update faster in KO/Pi.
273 281
274 282
275********** VERSION 1.9.18 ************ 283********** VERSION 1.9.18 ************
276 284
277FYI: The VERSION 1.9.17 was a testing release only. 285FYI: The VERSION 1.9.17 was a testing release only.
278Please read the changelog of VERSION 1.9.17 as well. 286Please read the changelog of VERSION 1.9.17 as well.
279 287
280Cleaned up the syncing config dialog. 288Cleaned up the syncing config dialog.
281Added sync config options for date range for events. 289Added sync config options for date range for events.
282Added sync config options for filters on incoming data. 290Added sync config options for filters on incoming data.
283Added sync config options for filters on outgoing data. 291Added sync config options for filters on outgoing data.
284Please read the updated SyncHowTo about the new filter settings. 292Please read the updated SyncHowTo about the new filter settings.
285These filter settings make it now possible to sync with shared 293These filter settings make it now possible to sync with shared
286calendars without writing back private or confidential data 294calendars without writing back private or confidential data
287(via the outgoing filters). 295(via the outgoing filters).
288To sync only with particular parts of a shared calendar, 296To sync only with particular parts of a shared calendar,
289the incoming filter settings can be used. 297the incoming filter settings can be used.
290An example can be found in the SyncHowTo. 298An example can be found in the SyncHowTo.
291Same for shared addressbooks. 299Same for shared addressbooks.
292 300
293Added a setting for the global kdepim data storage. 301Added a setting for the global kdepim data storage.
294Usually the data is stored in (yourhomedir/kdepim). 302Usually the data is stored in (yourhomedir/kdepim).
295Now you can set in the Global config dialog TAB, subTAB "Data storage path" 303Now you can set in the Global config dialog TAB, subTAB "Data storage path"
296a directory where all the kdepim data is stored. 304a directory where all the kdepim data is stored.
297That makes it easy to save all kdepim data on a SD card on the Z, for example. 305That makes it easy to save all kdepim data on a SD card on the Z, for example.
298 306
299KO/Pi: 307KO/Pi:
300The timeedit input has a pulldown list for times. 308The timeedit input has a pulldown list for times.
301If opened, this pulldown list should now has the right time highlighted. 309If opened, this pulldown list should now has the right time highlighted.
302Added the possibility to exclude events/todos/journals in a filter. 310Added the possibility to exclude events/todos/journals in a filter.
303You should exclude journals, if you do not want them to sync with a public calendar. 311You should exclude journals, if you do not want them to sync with a public calendar.
304 312
305KA/Pi: 313KA/Pi:
306Added the possibility to in/exclude public/private/confidential contacts to a filter. 314Added the possibility to in/exclude public/private/confidential contacts to a filter.
307If 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 ... 315If 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 ...
308Added printing of card view and details view on desktop. 316Added printing of card view and details view on desktop.
309Printing of list view is not working... 317Printing of list view is not working...
310Added button for removing pictures in contact editor. 318Added button for removing pictures in contact editor.
311Parsing data fix of KA/Pi version 1.9.17. 319Parsing data fix of KA/Pi version 1.9.17.
312Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 320Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
313Fixed some syncing merging problems. 321Fixed some syncing merging problems.
314 322
315 323
316********** VERSION 1.9.17 ************ 324********** VERSION 1.9.17 ************
317 325
318KO/Pi: 326KO/Pi:
319Fixed that tooltips were not updated after moving an item in agenda view. 327Fixed that tooltips were not updated after moving an item in agenda view.
320Fixed a bug in sorting start date for recurring events in list view. 328Fixed a bug in sorting start date for recurring events in list view.
321Changed the left button in todo viewer from "Agenda" to "Set completed". 329Changed the left button in todo viewer from "Agenda" to "Set completed".
322This 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. 330This 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.
323Added more info in the todo viewer: Startdate, parent/sub todos. 331Added more info in the todo viewer: Startdate, parent/sub todos.
324 332
325 333
326KA/Pi: 334KA/Pi:
327All fields search does now actually search all the (possible) fields, 335All fields search does now actually search all the (possible) fields,
328not only those listed in the contact list. 336not only those listed in the contact list.
329Made is possible to inline a picture in a vcard on the Z. 337Made is possible to inline a picture in a vcard on the Z.
330This was only possible on the desktop, now is it possible on the Z as well. 338This was only possible on the desktop, now is it possible on the Z as well.
331Fixed of missing save settings after filter configuration. 339Fixed of missing save settings after filter configuration.
332Made saving of addressbook much faster. 340Made saving of addressbook much faster.
333Fixed extension widget layout problem. 341Fixed extension widget layout problem.
334Fixed saving of default formatted name settings. 342Fixed saving of default formatted name settings.
335Fixed formatted name handling in edit dialog. 343Fixed formatted name handling in edit dialog.
336Added an option for changing formatted names of many contacts 344Added an option for changing formatted names of many contacts
337(menu: File - Change - Set formatted name). 345(menu: File - Change - Set formatted name).
338 346
339QWhatsThis was not working on the Z ( only black rectangle was shown). 347QWhatsThis was not working on the Z ( only black rectangle was shown).
340This is Fixed. 348This is Fixed.
341 349
342KDE-Sync: 350KDE-Sync:
343Now readonly KDE resources are synced as well. 351Now readonly KDE resources are synced as well.
344(They are not changed in KDE itself, of course). 352(They are not changed in KDE itself, of course).
345 353
346 354
347 355
348********** VERSION 1.9.16 ************ 356********** VERSION 1.9.16 ************
349 357
350KO/Pi: 358KO/Pi:
351Fixed search dialog size on Z 6000 (480x640 display). 359Fixed search dialog size on Z 6000 (480x640 display).
352Added setting to hide/show time in agenda items. 360Added setting to hide/show time in agenda items.
353Added setting to hide not running todos in todo view. 361Added setting to hide not running todos in todo view.
354Added columns for start date/time in todo view. 362Added columns for start date/time in todo view.
355Replaced the solid half-hour lines in agenda view by dot lines. 363Replaced the solid half-hour lines in agenda view by dot lines.
356Added possibility of printing the What's Next View on the desktop 364Added possibility of printing the What's Next View on the desktop
357(i.e. Windows and Linux). 365(i.e. Windows and Linux).
358Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 366Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
359Added tooltips in month view.(Tooltips only available on desktop) 367Added tooltips in month view.(Tooltips only available on desktop)
360 368
361Fixed a strange problem in KO/Pi alarm applet. 369Fixed a strange problem in KO/Pi alarm applet.
362Did not find the actual problem, 370Did not find the actual problem,
363such that now Qtopia reboots again if deinstalling the alarm applet. 371such that now Qtopia reboots again if deinstalling the alarm applet.
364But the alarm applet should work again. 372But the alarm applet should work again.
365 373
366KA/Pi: 374KA/Pi:
367Fixed the problem, that internal pictures were not saved. 375Fixed the problem, that internal pictures were not saved.
368 376
369Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 377Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
370 378
371Fixed some minor problems. (Like word wrap in help text windows). 379Fixed some minor problems. (Like word wrap in help text windows).
372 380
373Fixed a compiling problem in microkde/kresources. 381Fixed a compiling problem in microkde/kresources.
374 382
375KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 383KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
376This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 384This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
377such that now syncing KO/Pi with Sharp DTM should work on the 385such that now syncing KO/Pi with Sharp DTM should work on the
378Zaurus C 3000 model. 386Zaurus C 3000 model.
379 387
380********** VERSION 1.9.15 ************ 388********** VERSION 1.9.15 ************
381 389
382Usebilty enhancements in KO/Pi: 390Usebilty enhancements in KO/Pi:
383When clicking on the date in a month view cell, the day view is shown. 391When clicking on the date in a month view cell, the day view is shown.
384Old behaviour was, that the "new event" dialog popped up. 392Old behaviour was, that the "new event" dialog popped up.
385 393
386Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 394Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
387That means, you can restore the latest 395That means, you can restore the latest
388event/todo/journal you have deleted. 396event/todo/journal you have deleted.
389A journal is deleted, if you clear all the text of the journal. 397A journal is deleted, if you clear all the text of the journal.
390 398
391Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 399Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
392 400
393KA/Pi starting in 480x640 resolution: 401KA/Pi starting in 480x640 resolution:
394Hide the filter action in toolbar 402Hide the filter action in toolbar
395and added icons for undo/delete/redo in toolbar. 403and added icons for undo/delete/redo in toolbar.
396 404
397Change in OM/Pi ViewMail dialog: 405Change in OM/Pi ViewMail dialog:
398When clicking on the "delete" icon the mail is deleted after confirmation as usual. 406When clicking on the "delete" icon the mail is deleted after confirmation as usual.
399But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 407But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
400 408
401Fixed a crash when deleting mail-accounts in OM/Pi. 409Fixed a crash when deleting mail-accounts in OM/Pi.
402 410
403 411
404********** VERSION 1.9.14 ************ 412********** VERSION 1.9.14 ************
405 413
406Fixed some problems with the dialog sizes when switching 414Fixed some problems with the dialog sizes when switching
407portrait/landscape mode on 640x480 PDA display. 415portrait/landscape mode on 640x480 PDA display.
408 416
409Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 417Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
410 418
411Fixed an ugly bug in KOpieMail: 419Fixed an ugly bug in KOpieMail:
412KOpieMail was not able to write files (mails) to MSDOS file system, 420KOpieMail was not able to write files (mails) to MSDOS file system,
413like on an usual preformatted SD card. That should work now. 421like on an usual preformatted SD card. That should work now.
414To save your mail data on the Sd card do the following: 422To save your mail data on the Sd card do the following:
415Create a dir on the SD card: 423Create a dir on the SD card:
416mkdir /mnt/card/localmail 424mkdir /mnt/card/localmail
417Go to your home dir: 425Go to your home dir:
418cd 426cd
419Go to kopiemail data storage dir: 427Go to kopiemail data storage dir:
420cd kdepim/apps/kopiemail 428cd kdepim/apps/kopiemail
421Create a symlink to the SD card: 429Create a symlink to the SD card:
422ls -s /mnt/card/localmail 430ls -s /mnt/card/localmail
423Now KOpieMail will store all mails on the SD card. 431Now KOpieMail will store all mails on the SD card.
424 432
425KO/Pi Monthview: 433KO/Pi Monthview:
426Now "Go to Today" selects the current month from day 1-end, 434Now "Go to Today" selects the current month from day 1-end,
427not the current date + some days. 435not the current date + some days.
428I.e. "Go to Today" shows now always 436I.e. "Go to Today" shows now always
429the current month with first day of month in the first row. 437the current month with first day of month in the first row.
430 438
431Added missing German translation. 439Added missing German translation.
432 440
433Fixed icons of executeable on Wintendo. 441Fixed icons of executeable on Wintendo.
434 442
435Added a "Show next Mail" button to the OM/Pi 443Added a "Show next Mail" button to the OM/Pi
436mail viewer such that the mail below the current mail 444mail viewer such that the mail below the current mail
437in the mail list view of the current folder 445in the mail list view of the current folder
438can be read with a single click. 446can be read with a single click.
439 447
440 448
441********** VERSION 1.9.13 ************ 449********** VERSION 1.9.13 ************
442 450
443Fixed nasty PwM/Pi file reading bug, when 451Fixed nasty PwM/Pi file reading bug, when
444the used hash algo of file is different then the global 452the used hash algo of file is different then the global
445hash algo. 453hash algo.
446 454
447Added KA/Pi support for opie mailit mailapplication. 455Added KA/Pi support for opie mailit mailapplication.
448 456
449Fixed some bugs in OM/Pi. 457Fixed some bugs in OM/Pi.
450Now character conversion tables are available for the Zaurus 458Now character conversion tables are available for the Zaurus
451to make OM/Pi working properly. 459to make OM/Pi working properly.
452To get the character conversion in OM/Pi working, please download 460To get the character conversion in OM/Pi working, please download
453at the sourceforge project site the package 461at the sourceforge project site the package
454sr-character-conversion_SharpROM_arm.ipk.zip 462sr-character-conversion_SharpROM_arm.ipk.zip
455(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 463(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
456from the section "general files for KDE/Pim" 464from the section "general files for KDE/Pim"
457Instructions how to install this package are in a ReadMe in this file. 465Instructions how to install this package are in a ReadMe in this file.
458 466
459 467
460Fixed the orientation change problem in KA/Pi when switching 468Fixed the orientation change problem in KA/Pi when switching
461portrait/landscape mode. 469portrait/landscape mode.
462 470
463French translation available for KA/Pi and OM/Pi. 471French translation available for KA/Pi and OM/Pi.
464 472
465Fixed some problems with categories in KO/Pi in DTM sync. 473Fixed some problems with categories in KO/Pi in DTM sync.
466 474
467Added selection dialog for export to phone in KA/Pi. 475Added selection dialog for export to phone in KA/Pi.
468 476
469If in KO/Pi is an attendee selected to add to a meeting and this 477If in KO/Pi is an attendee selected to add to a meeting and this
470attendee is already in the list of attendees, this person is not added 478attendee is already in the list of attendees, this person is not added
471again. 479again.
472 480
473Some menu cleanup in KA/Pi. 481Some menu cleanup in KA/Pi.
474 482
475********** VERSION 1.9.12 ************ 483********** VERSION 1.9.12 ************
476 484
477Fix for the bug in KO/Pi What's Next view of version 1.9.11. 485Fix for the bug in KO/Pi What's Next view of version 1.9.11.
478 486
479Bugfix: Licence file is now shown again. 487Bugfix: Licence file is now shown again.
480 488
481OM/Pi now supports Unicode (utf8 charset). 489OM/Pi now supports Unicode (utf8 charset).
482Fixed some bugs in OM/Pi. 490Fixed some bugs in OM/Pi.
483 491
484KA/Pi has more German translation. 492KA/Pi has more German translation.
485 493
486 494
487********** VERSION 1.9.11 ************ 495********** VERSION 1.9.11 ************
488 496
489Fixed several problems in PWM/Pi, like 497Fixed several problems in PWM/Pi, like
490asking the user, if unsaved changed are pending 498asking the user, if unsaved changed are pending
491when closing the app. 499when closing the app.
492And PwM/Pi handles now different texts for the 500And PwM/Pi handles now different texts for the
493fields Description, Username, Password, configurable per category. 501fields Description, Username, Password, configurable per category.
494 502
495Fixed a crash in KO/Pi , when importing/loading vcs files 503Fixed a crash in KO/Pi , when importing/loading vcs files
496which have an entry with an attendee with state: 504which have an entry with an attendee with state:
497NEEDS ACTION 505NEEDS ACTION
498 506
499Fixed some problems in the German translation of OM/Pi, 507Fixed some problems in the German translation of OM/Pi,
500which makes some dialogs not fitting on the screen 508which makes some dialogs not fitting on the screen
501of the Z 5500. 509of the Z 5500.
502 510
503Fixed Qtopia crash, when disabling/deinstalling 511Fixed Qtopia crash, when disabling/deinstalling
504KO/Pi alarm applet. 512KO/Pi alarm applet.
505 513
506Implemented direct KDE<->KA/Pi sync for KA/Pi running 514Implemented direct KDE<->KA/Pi sync for KA/Pi running
507on Linux desktop. 515on Linux desktop.
508 516
509Added feature "remove sync info" to sync menu. 517Added feature "remove sync info" to sync menu.
510 518
511Tweaked the KO/Pi What's next view a bit, added 519Tweaked the KO/Pi What's next view a bit, added
512setting to hide events that are done. 520setting to hide events that are done.
513 521
514Disabled "beam receive enabled" on startup to 522Disabled "beam receive enabled" on startup to
515avoid problems if Fastload is enabled. 523avoid problems if Fastload is enabled.
516Please set "beam receive enabled", 524Please set "beam receive enabled",
517if you want to receive data via IR. 525if you want to receive data via IR.
518 526
519Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 527Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
520on Linux desktop. 528on Linux desktop.
521 529
522Made in KA/Pi scrolling possible, if details view is selected. 530Made in KA/Pi scrolling possible, if details view is selected.
523(The keyboard focus is set automatically to the search line) 531(The keyboard focus is set automatically to the search line)
524 532
525Fixed a bug in DMT sync, that a new entry in DTM was added 533Fixed a bug in DMT sync, that a new entry in DTM was added
526on every sync to Kx/Pi. 534on every sync to Kx/Pi.
527 535
528Fixed missing writing of KA/Pi categories to DMT entries when syncing. 536Fixed missing writing of KA/Pi categories to DMT entries when syncing.
529 537
530Fixed a bug in DMT sync with todos created in KO/Pi containing 538Fixed a bug in DMT sync with todos created in KO/Pi containing
531non-latin1 characters. 539non-latin1 characters.
532 540
533Rearranged package contents of Sharp-ipks and made all 541Rearranged package contents of Sharp-ipks and made all
534packages installable on SD again. 542packages installable on SD again.
535 543
536Fixed the writing of addressbook data in DTM sync. 544Fixed the writing of addressbook data in DTM sync.
537Empty fields in KA/Pi were not removed. 545Empty fields in KA/Pi were not removed.
538 546
539Added better category handling in KA/Pi: 547Added better category handling in KA/Pi:
540Added item 548Added item
541Edit Categories and 549Edit Categories and
542Manage new categories 550Manage new categories
543to the settings menu. 551to the settings menu.
544Possible to configure a view to display categories. 552Possible to configure a view to display categories.
545 553
546Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 554Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
547 555
548Fixed displaying of "free" days and time in KO Monthview and Agendaview. 556Fixed displaying of "free" days and time in KO Monthview and Agendaview.
549 557
550... and many other bugfixes. 558... and many other bugfixes.
551 559
552********** VERSION 1.9.10 ************ 560********** VERSION 1.9.10 ************
553 561
554Many internal small bugfixes. 562Many internal small bugfixes.
555And fix of the "big" bug in KO/Pi, 563And fix of the "big" bug in KO/Pi,
556that after Syncing the appointments had an offset by several hours. 564that after Syncing the appointments had an offset by several hours.
557That was a problem with the internal timezone setting, 565That was a problem with the internal timezone setting,
558introduced by the changed timezone configuration settings. 566introduced by the changed timezone configuration settings.
559 567
560German translation for OM/Pi is now available. 568German translation for OM/Pi is now available.
561 569
562 570
563********** VERSION 1.9.9 ************ 571********** VERSION 1.9.9 ************
564 572
565KDE-Pim/Pi has a new Member! 573KDE-Pim/Pi has a new Member!
566It is called PWM/Pi (Passwordmanager/platform-independent) 574It is called PWM/Pi (Passwordmanager/platform-independent)
567and it is available for the Zaurus. 575and it is available for the Zaurus.
568It is planned, that it will be available later for Windows. 576It is planned, that it will be available later for Windows.
569(And for Linux, of course). 577(And for Linux, of course).
570It is a port of the Passwordmanager of KDE. 578It is a port of the Passwordmanager of KDE.
571It will need the MicroKDElibs to run. 579It will need the MicroKDElibs to run.
572 580
573Made loading of addressbooks in KA/Pi up to 7 times faster! 581Made loading of addressbooks in KA/Pi up to 7 times faster!
574The bigger your addressbook file, the more starting speed 582The bigger your addressbook file, the more starting speed
575will you gain. (relatively) 583will you gain. (relatively)
576 584
577The Qtopia addressbook connector is now platform independend 585The Qtopia addressbook connector is now platform independend
578as well and should work on any platform for importing/exporting 586as well and should work on any platform for importing/exporting
579Qtopia and Opie XML files. 587Qtopia and Opie XML files.
580 588
581Added a +30min feature to the timezone settings to make 589Added a +30min feature to the timezone settings to make
582KDE-Pim/Pi useable in Australia and other parts on the 590KDE-Pim/Pi useable in Australia and other parts on the
583world with strange timezones ;-) 591world with strange timezones ;-)
584 592
585German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 593German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
586 594
587It is now possible to disable the 595It is now possible to disable the
588"receive data via infrared" feature, such that syncing with 596"receive data via infrared" feature, such that syncing with
589Outlook is now possible again with Kx/Pi runing. 597Outlook is now possible again with Kx/Pi runing.
590Please disable it, before syncing Sharp DTM with Outlook. 598Please disable it, before syncing Sharp DTM with Outlook.
591For your convenience, the "receive data via infrared" feature 599For your convenience, the "receive data via infrared" feature
592is disabled automatically, if you sync Kx/Pi with DTM. 600is disabled automatically, if you sync Kx/Pi with DTM.
593You have to enable it again manually after syncing. 601You have to enable it again manually after syncing.
594Enabling this feature makes it impossible to start the 602Enabling this feature makes it impossible to start the
595Sharp DTM apps. If this feature is enabled, you will only get the 603Sharp DTM apps. If this feature is enabled, you will only get the
596alarm notification from KO/Pi and not from the Sharp calendar. 604alarm notification from KO/Pi and not from the Sharp calendar.
597This is very useful if you sync KO/Pi with Sharp DTM, 605This is very useful if you sync KO/Pi with Sharp DTM,
598because after syncing you usually would get notified about 606because after syncing you usually would get notified about
599an alarm by KO/Pi and the Sharp Calendar. 607an alarm by KO/Pi and the Sharp Calendar.
600 608
601Together with the Linux desktop version of KO/Pi 609Together with the Linux desktop version of KO/Pi
602it is now possible to sync KO/Pi on the Zaurus 610it is now possible to sync KO/Pi on the Zaurus
603with the complete KDE-desktop (3.3 or later) 611with the complete KDE-desktop (3.3 or later)
604calendar data easily. 612calendar data easily.
605That makes it possible to sync the Z with one 613That makes it possible to sync the Z with one
606click of a mouse with the KDE-Desktop. 614click of a mouse with the KDE-Desktop.
607This feature it available for all Zaurus platforms KO/Pi 615This feature it available for all Zaurus platforms KO/Pi
608is running on. 616is running on.
609The only thing needed is a running KO/Pi on Linux and 617The only thing needed is a running KO/Pi on Linux and
610a compiled version of the small 618a compiled version of the small
611KDE-Pim/Pi<->KDE-Desktop access command line program, 619KDE-Pim/Pi<->KDE-Desktop access command line program,
612which is in the KDE-Pim/Pi sources available. 620which is in the KDE-Pim/Pi sources available.
613 621
614The "KDE-desktop" syncing feature for KA/Pi will follow 622The "KDE-desktop" syncing feature for KA/Pi will follow
615in the next releases. 623in the next releases.
616 624
617Fixed the vcard export bug, which had the version 1.9.8. 625Fixed the vcard export bug, which had the version 1.9.8.
618 626
619Added missing GERMAN translation to KO/Pi. 627Added missing GERMAN translation to KO/Pi.
620Hi PsionX, could you add the missing french translation?Thx! 628Hi PsionX, could you add the missing french translation?Thx!
621 629
622Translation files for KA/Pi are available as well. 630Translation files for KA/Pi are available as well.
623GERMAN translation will be available in the next release. 631GERMAN translation will be available in the next release.
624PsionX ( yres, you again ;-) ), could you start translating 632PsionX ( yres, you again ;-) ), could you start translating
625KA/Pi? Thx! 633KA/Pi? Thx!
626 634
627You can download the version 1.9.9 at 635You can download the version 1.9.9 at
628 636
629http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 637http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
630 638
631Note: 639Note:
632To run the mail program OM/Pi you need libopenssl. 640To run the mail program OM/Pi you need libopenssl.
633A link to a download loaction is available at 641A link to a download loaction is available at
634ZSI at www.killefiz.de 642ZSI at www.killefiz.de
635 643
636 644
637********** VERSION 1.9.8 ************ 645********** VERSION 1.9.8 ************
638 646
639Fixed character decoding in OM/Pi. 647Fixed character decoding in OM/Pi.
640(e.g. German "Umlaute" were not displayed properly.) 648(e.g. German "Umlaute" were not displayed properly.)
641 649
642Made is possible to reparent todos in KO/Pi. 650Made is possible to reparent todos in KO/Pi.
643Use contextmenu or keys (look at Help-Keys + Colors) for that. 651Use contextmenu or keys (look at Help-Keys + Colors) for that.
644 652
645Added the missing Sync-Howto and WhatsNew to the packages. 653Added the missing Sync-Howto and WhatsNew to the packages.
646 654
647KO/Pi on Linux desktop can now sync with KDE desktop. 655KO/Pi on Linux desktop can now sync with KDE desktop.
648That means: When using KO/Pi on Linux desktop for syncing with 656That means: When using KO/Pi on Linux desktop for syncing with
649KDE desktop and the Zaurus, the Zaurus can be synced now 657KDE desktop and the Zaurus, the Zaurus can be synced now
650with all KDE-Calendar resources, not only with one local file. 658with all KDE-Calendar resources, not only with one local file.
651(That makes it possible to sync the Zaurus with the 659(That makes it possible to sync the Zaurus with the
652calendar data on a Kolab server) 660calendar data on a Kolab server)
653 661
654KA/Pi syncing with KDE desktop will be available in the next version. 662KA/Pi syncing with KDE desktop will be available in the next version.
655 663
656 664
657********** VERSION 1.9.7 ************ 665********** VERSION 1.9.7 ************
658 666
659KO/Pi - KA/Pi on Windows: 667KO/Pi - KA/Pi on Windows:
660Now a directory can be defined by the user, where the 668Now a directory can be defined by the user, where the
661application/config data should be saved. 669application/config data should be saved.
662 Define your desired path in the evironment variable 670 Define your desired path in the evironment variable
663 MICROKDEHOME 671 MICROKDEHOME
664 before starting KO/Pi or KA/Pi. 672 before starting KO/Pi or KA/Pi.
665 673
666An easy Kx/Pi to Kx/Pi syncing is now possible 674An easy Kx/Pi to Kx/Pi syncing is now possible
667(it is called Pi-Sync) via network. 675(it is called Pi-Sync) via network.
668Please look at the Sync Howto. 676Please look at the Sync Howto.
669 677
670Exporting of calendar data and contacts to mobile phones is now possible. 678Exporting of calendar data and contacts to mobile phones is now possible.
671The SyncHowto is updated with information howto 679The SyncHowto is updated with information howto
672access/sync mobile phones. 680access/sync mobile phones.
673Please look at the Sync Howto. 681Please look at the Sync Howto.
674 682
675Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 683Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
676Please disable Fastload for the original contact/calendar applications 684Please disable Fastload for the original contact/calendar applications
677and close them. 685and close them.
678KO/Pi and KA/Pi must be running in order to receive the data. 686KO/Pi and KA/Pi must be running in order to receive the data.
679(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 687(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
680 688
681In the KA/Pi details view are now the preferred tel. numbers displayed on top 689In the KA/Pi details view are now the preferred tel. numbers displayed on top
682of the other data ( emails/tel.numbers/addresses) 690of the other data ( emails/tel.numbers/addresses)
683 691
684Fixed some syncing problems in KA/Pi. 692Fixed some syncing problems in KA/Pi.
685 693
686Added font settings for the KA/Pi details view. 694Added font settings for the KA/Pi details view.
687Added fields "children's name" and "gender" to KA/Pi. 695Added fields "children's name" and "gender" to KA/Pi.
688 696
689Made searching in KA/Pi better: 697Made searching in KA/Pi better:
690Now the first item in a view is selected after a search automatically and 698Now the first item in a view is selected after a search automatically and
691the views can be scrolled up/down when the search input field has the keyboard focus. 699the views can be scrolled up/down when the search input field has the keyboard focus.
692 700
693And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 701And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
694 702
695 703
696********** VERSION 1.9.6 ************ 704********** VERSION 1.9.6 ************
697 705
698Changes in the external application communication on the Zaurus 706Changes in the external application communication on the Zaurus
699in order to use less RAM when the apps are running. 707in order to use less RAM when the apps are running.
700First syncing of addressbooks (KA/Pi) is possible. 708First syncing of addressbooks (KA/Pi) is possible.
701 709
702 710
703********** VERSION 1.9.5a ************ 711********** VERSION 1.9.5a ************
704 712
705Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 713Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
706Fixed some small bugs. 714Fixed some small bugs.
707KA/Pi shows now the birthday in summary view. 715KA/Pi shows now the birthday in summary view.
708Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 716Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
709for displaying dates. 717for displaying dates.
710 718
711 719
712********** VERSION 1.9.5 ************ 720********** VERSION 1.9.5 ************
713 721
714There is still no Addressbook syncing! 722There is still no Addressbook syncing!
715 723
716New in 1.9.5: 724New in 1.9.5:
717 725
718Many bugfixes. 726Many bugfixes.
719Better searching in KA/Pi. 727Better searching in KA/Pi.
720You can configure in KA/Pi if you want to search only after 728You can configure in KA/Pi if you want to search only after
721<return> key pressed. 729<return> key pressed.
722 730
723Better mail downloading in OM/Pi. 731Better mail downloading in OM/Pi.
724 732
725First experimental alpha version of sync of KO/Pi with mobile phones. 733First experimental alpha version of sync of KO/Pi with mobile phones.
726See gammu documentation for supported phones. 734See gammu documentation for supported phones.
727You 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. 735You 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.
728Quick hint how to use: 736Quick hint how to use:
729NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 737NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
730Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 738Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
731Create syncprofile - mobile device 739Create syncprofile - mobile device
732Remove entry for model. (Leave empty ). 740Remove entry for model. (Leave empty ).
733Enable infrared on Zaurus and your Phone. 741Enable infrared on Zaurus and your Phone.
734Sync. 742Sync.
735To get a more detailed log, start kopi from konsole. 743To get a more detailed log, start kopi from konsole.
736 744
737********** VERSION 1.9.4 ************ 745********** VERSION 1.9.4 ************
738 746
739This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 747This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
740 748
741WARNING: 749WARNING:
742PLEASE BACKUP ALL YOUR DATA! 750PLEASE BACKUP ALL YOUR DATA!
743We have changed a lot and maybe there are some unknown problems. 751We have changed a lot and maybe there are some unknown problems.
744 752
745SYNC HANDLING HAS CHANGED! 753SYNC HANDLING HAS CHANGED!
746Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 754Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
747(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 755(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
748 756
749You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 757You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
750If 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. 758If 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.
751 759
752As programs are available: 760As programs are available:
753KO/Pi (korganizer ipk) - a calendar program. 761KO/Pi (korganizer ipk) - a calendar program.
754KA/Pi (kaddressbook ipk ) - an addressbook 762KA/Pi (kaddressbook ipk ) - an addressbook
755OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 763OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
756 764
757An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 765An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
758(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 766(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
759 767
760All the applications are installed in a "Pim" TAB. 768All the applications are installed in a "Pim" TAB.
761If 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 769If 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
762 770
763All the application are integrated. 771All the application are integrated.
764Such 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. 772Such 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.
765 773
766HINT: 774HINT:
767If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 775If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
768 776
769What's new? 777What's new?
770 778
diff --git a/bin/kdepim/kaddressbook/icons16/z_menu.png b/bin/kdepim/kaddressbook/icons16/z_menu.png
new file mode 100644
index 0000000..b32c8e5
--- a/dev/null
+++ b/bin/kdepim/kaddressbook/icons16/z_menu.png
Binary files differ
diff --git a/bin/kdepim/kaddressbook/icons22/z_menu.png b/bin/kdepim/kaddressbook/icons22/z_menu.png
new file mode 100644
index 0000000..b1866a2
--- a/dev/null
+++ b/bin/kdepim/kaddressbook/icons22/z_menu.png
Binary files differ
diff --git a/bin/kdepim/korganizer/icons16/z_menu.png b/bin/kdepim/korganizer/icons16/z_menu.png
new file mode 100644
index 0000000..b32c8e5
--- a/dev/null
+++ b/bin/kdepim/korganizer/icons16/z_menu.png
Binary files differ
diff --git a/bin/kdepim/korganizer/iconsmini/z_menu.png b/bin/kdepim/korganizer/iconsmini/z_menu.png
new file mode 100644
index 0000000..584791a
--- a/dev/null
+++ b/bin/kdepim/korganizer/iconsmini/z_menu.png
Binary files differ
diff --git a/bin/kdepim/korganizer/z_menu.png b/bin/kdepim/korganizer/z_menu.png
new file mode 100644
index 0000000..b1866a2
--- a/dev/null
+++ b/bin/kdepim/korganizer/z_menu.png
Binary files differ
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 1b17665..79f897b 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1363,1537 +1363,1537 @@ void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1363 else 1363 else
1364 { 1364 {
1365 setDetailsVisible( true ); 1365 setDetailsVisible( true );
1366 mActionDetails->setChecked(true); 1366 mActionDetails->setChecked(true);
1367 } 1367 }
1368 1368
1369} 1369}
1370 1370
1371void KABCore::save() 1371void KABCore::save()
1372{ 1372{
1373 if (syncManager->blockSave()) 1373 if (syncManager->blockSave())
1374 return; 1374 return;
1375 if ( !mModified ) 1375 if ( !mModified )
1376 return; 1376 return;
1377 1377
1378 syncManager->setBlockSave(true); 1378 syncManager->setBlockSave(true);
1379 QString text = i18n( "There was an error while attempting to save\n the " 1379 QString text = i18n( "There was an error while attempting to save\n the "
1380 "address book. Please check that some \nother application is " 1380 "address book. Please check that some \nother application is "
1381 "not using it. " ); 1381 "not using it. " );
1382 message(i18n("Saving ... please wait! "), false); 1382 message(i18n("Saving ... please wait! "), false);
1383 //qApp->processEvents(); 1383 //qApp->processEvents();
1384#ifndef KAB_EMBEDDED 1384#ifndef KAB_EMBEDDED
1385 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1385 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1386 if ( !b || !b->save() ) { 1386 if ( !b || !b->save() ) {
1387 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1387 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1388 } 1388 }
1389#else //KAB_EMBEDDED 1389#else //KAB_EMBEDDED
1390 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1390 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1391 if ( !b || !b->save() ) { 1391 if ( !b || !b->save() ) {
1392 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1392 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1393 } 1393 }
1394#endif //KAB_EMBEDDED 1394#endif //KAB_EMBEDDED
1395 1395
1396 message(i18n("Addressbook saved!")); 1396 message(i18n("Addressbook saved!"));
1397 setModified( false ); 1397 setModified( false );
1398 syncManager->setBlockSave(false); 1398 syncManager->setBlockSave(false);
1399} 1399}
1400 1400
1401 1401
1402void KABCore::undo() 1402void KABCore::undo()
1403{ 1403{
1404 UndoStack::instance()->undo(); 1404 UndoStack::instance()->undo();
1405 1405
1406 // Refresh the view 1406 // Refresh the view
1407 mViewManager->refreshView(); 1407 mViewManager->refreshView();
1408} 1408}
1409 1409
1410void KABCore::redo() 1410void KABCore::redo()
1411{ 1411{
1412 RedoStack::instance()->redo(); 1412 RedoStack::instance()->redo();
1413 1413
1414 // Refresh the view 1414 // Refresh the view
1415 mViewManager->refreshView(); 1415 mViewManager->refreshView();
1416} 1416}
1417void KABCore::setJumpButtonBar( bool visible ) 1417void KABCore::setJumpButtonBar( bool visible )
1418{ 1418{
1419 setJumpButtonBarVisible(visible ); 1419 setJumpButtonBarVisible(visible );
1420 saveSettings(); 1420 saveSettings();
1421} 1421}
1422void KABCore::setJumpButtonBarVisible( bool visible ) 1422void KABCore::setJumpButtonBarVisible( bool visible )
1423{ 1423{
1424 if (mMultipleViewsAtOnce) 1424 if (mMultipleViewsAtOnce)
1425 { 1425 {
1426 if ( visible ) 1426 if ( visible )
1427 mJumpButtonBar->show(); 1427 mJumpButtonBar->show();
1428 else 1428 else
1429 mJumpButtonBar->hide(); 1429 mJumpButtonBar->hide();
1430 } 1430 }
1431 else 1431 else
1432 { 1432 {
1433 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1433 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1434 if (mViewManager->isVisible()) 1434 if (mViewManager->isVisible())
1435 { 1435 {
1436 if ( visible ) 1436 if ( visible )
1437 mJumpButtonBar->show(); 1437 mJumpButtonBar->show();
1438 else 1438 else
1439 mJumpButtonBar->hide(); 1439 mJumpButtonBar->hide();
1440 } 1440 }
1441 else 1441 else
1442 { 1442 {
1443 mJumpButtonBar->hide(); 1443 mJumpButtonBar->hide();
1444 } 1444 }
1445 } 1445 }
1446} 1446}
1447 1447
1448 1448
1449void KABCore::setDetailsToState() 1449void KABCore::setDetailsToState()
1450{ 1450{
1451 setDetailsVisible( mActionDetails->isChecked() ); 1451 setDetailsVisible( mActionDetails->isChecked() );
1452} 1452}
1453void KABCore::setDetailsToggle() 1453void KABCore::setDetailsToggle()
1454{ 1454{
1455 mActionDetails->setChecked( !mActionDetails->isChecked() ); 1455 mActionDetails->setChecked( !mActionDetails->isChecked() );
1456 setDetailsToState(); 1456 setDetailsToState();
1457} 1457}
1458 1458
1459 1459
1460 1460
1461void KABCore::setDetailsVisible( bool visible ) 1461void KABCore::setDetailsVisible( bool visible )
1462{ 1462{
1463 if (visible && mDetails->isHidden()) 1463 if (visible && mDetails->isHidden())
1464 { 1464 {
1465 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1465 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1466 if ( addrList.count() > 0 ) 1466 if ( addrList.count() > 0 )
1467 mDetails->setAddressee( addrList[ 0 ] ); 1467 mDetails->setAddressee( addrList[ 0 ] );
1468 } 1468 }
1469 1469
1470 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1470 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1471 // the listview and the detailview. We do that by changing the splitbar size. 1471 // the listview and the detailview. We do that by changing the splitbar size.
1472 if (mMultipleViewsAtOnce) 1472 if (mMultipleViewsAtOnce)
1473 { 1473 {
1474 if ( visible ) 1474 if ( visible )
1475 mDetails->show(); 1475 mDetails->show();
1476 else 1476 else
1477 mDetails->hide(); 1477 mDetails->hide();
1478 } 1478 }
1479 else 1479 else
1480 { 1480 {
1481 if ( visible ) { 1481 if ( visible ) {
1482 mViewManager->hide(); 1482 mViewManager->hide();
1483 mDetails->show(); 1483 mDetails->show();
1484 mIncSearchWidget->setFocus(); 1484 mIncSearchWidget->setFocus();
1485 } 1485 }
1486 else { 1486 else {
1487 mViewManager->show(); 1487 mViewManager->show();
1488 mDetails->hide(); 1488 mDetails->hide();
1489 mViewManager->setFocusAV(); 1489 mViewManager->setFocusAV();
1490 } 1490 }
1491 setJumpButtonBarVisible( !visible ); 1491 setJumpButtonBarVisible( !visible );
1492 } 1492 }
1493 1493
1494} 1494}
1495 1495
1496void KABCore::extensionChanged( int id ) 1496void KABCore::extensionChanged( int id )
1497{ 1497{
1498 //change the details view only for non desktop systems 1498 //change the details view only for non desktop systems
1499#ifndef DESKTOP_VERSION 1499#ifndef DESKTOP_VERSION
1500 1500
1501 if (id == 0) 1501 if (id == 0)
1502 { 1502 {
1503 //the user disabled the extension. 1503 //the user disabled the extension.
1504 1504
1505 if (mMultipleViewsAtOnce) 1505 if (mMultipleViewsAtOnce)
1506 { // enable detailsview again 1506 { // enable detailsview again
1507 setDetailsVisible( true ); 1507 setDetailsVisible( true );
1508 mActionDetails->setChecked( true ); 1508 mActionDetails->setChecked( true );
1509 } 1509 }
1510 else 1510 else
1511 { //go back to the listview 1511 { //go back to the listview
1512 setDetailsVisible( false ); 1512 setDetailsVisible( false );
1513 mActionDetails->setChecked( false ); 1513 mActionDetails->setChecked( false );
1514 mActionDetails->setEnabled(true); 1514 mActionDetails->setEnabled(true);
1515 } 1515 }
1516 1516
1517 } 1517 }
1518 else 1518 else
1519 { 1519 {
1520 //the user enabled the extension. 1520 //the user enabled the extension.
1521 setDetailsVisible( false ); 1521 setDetailsVisible( false );
1522 mActionDetails->setChecked( false ); 1522 mActionDetails->setChecked( false );
1523 1523
1524 if (!mMultipleViewsAtOnce) 1524 if (!mMultipleViewsAtOnce)
1525 { 1525 {
1526 mActionDetails->setEnabled(false); 1526 mActionDetails->setEnabled(false);
1527 } 1527 }
1528 1528
1529 mExtensionManager->setSelectionChanged(); 1529 mExtensionManager->setSelectionChanged();
1530 1530
1531 } 1531 }
1532 1532
1533#endif// DESKTOP_VERSION 1533#endif// DESKTOP_VERSION
1534 1534
1535} 1535}
1536 1536
1537 1537
1538void KABCore::extensionModified( const KABC::Addressee::List &list ) 1538void KABCore::extensionModified( const KABC::Addressee::List &list )
1539{ 1539{
1540 1540
1541 if ( list.count() != 0 ) { 1541 if ( list.count() != 0 ) {
1542 KABC::Addressee::List::ConstIterator it; 1542 KABC::Addressee::List::ConstIterator it;
1543 for ( it = list.begin(); it != list.end(); ++it ) 1543 for ( it = list.begin(); it != list.end(); ++it )
1544 mAddressBook->insertAddressee( *it ); 1544 mAddressBook->insertAddressee( *it );
1545 if ( list.count() > 1 ) 1545 if ( list.count() > 1 )
1546 setModified(); 1546 setModified();
1547 else 1547 else
1548 setModifiedWOrefresh(); 1548 setModifiedWOrefresh();
1549 } 1549 }
1550 if ( list.count() == 0 ) 1550 if ( list.count() == 0 )
1551 mViewManager->refreshView(); 1551 mViewManager->refreshView();
1552 else 1552 else
1553 mViewManager->refreshView( list[ 0 ].uid() ); 1553 mViewManager->refreshView( list[ 0 ].uid() );
1554 1554
1555 1555
1556 1556
1557} 1557}
1558 1558
1559QString KABCore::getNameByPhone( const QString &phone ) 1559QString KABCore::getNameByPhone( const QString &phone )
1560{ 1560{
1561#ifndef KAB_EMBEDDED 1561#ifndef KAB_EMBEDDED
1562 QRegExp r( "[/*/-/ ]" ); 1562 QRegExp r( "[/*/-/ ]" );
1563 QString localPhone( phone ); 1563 QString localPhone( phone );
1564 1564
1565 bool found = false; 1565 bool found = false;
1566 QString ownerName = ""; 1566 QString ownerName = "";
1567 KABC::AddressBook::Iterator iter; 1567 KABC::AddressBook::Iterator iter;
1568 KABC::PhoneNumber::List::Iterator phoneIter; 1568 KABC::PhoneNumber::List::Iterator phoneIter;
1569 KABC::PhoneNumber::List phoneList; 1569 KABC::PhoneNumber::List phoneList;
1570 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1570 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1571 phoneList = (*iter).phoneNumbers(); 1571 phoneList = (*iter).phoneNumbers();
1572 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1572 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1573 ++phoneIter) { 1573 ++phoneIter) {
1574 // Get rid of separator chars so just the numbers are compared. 1574 // Get rid of separator chars so just the numbers are compared.
1575 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1575 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1576 ownerName = (*iter).formattedName(); 1576 ownerName = (*iter).formattedName();
1577 found = true; 1577 found = true;
1578 } 1578 }
1579 } 1579 }
1580 } 1580 }
1581 1581
1582 return ownerName; 1582 return ownerName;
1583#else //KAB_EMBEDDED 1583#else //KAB_EMBEDDED
1584 qDebug("KABCore::getNameByPhone finsih method"); 1584 qDebug("KABCore::getNameByPhone finsih method");
1585 return ""; 1585 return "";
1586#endif //KAB_EMBEDDED 1586#endif //KAB_EMBEDDED
1587 1587
1588} 1588}
1589 1589
1590void KABCore::openConfigDialog() 1590void KABCore::openConfigDialog()
1591{ 1591{
1592 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1592 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1593 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1593 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1594 ConfigureDialog->addModule(kabcfg ); 1594 ConfigureDialog->addModule(kabcfg );
1595 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1595 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1596 ConfigureDialog->addModule(kdelibcfg ); 1596 ConfigureDialog->addModule(kdelibcfg );
1597 1597
1598 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1598 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1599 this, SLOT( configurationChanged() ) ); 1599 this, SLOT( configurationChanged() ) );
1600 connect( ConfigureDialog, SIGNAL( okClicked() ), 1600 connect( ConfigureDialog, SIGNAL( okClicked() ),
1601 this, SLOT( configurationChanged() ) ); 1601 this, SLOT( configurationChanged() ) );
1602 saveSettings(); 1602 saveSettings();
1603#ifndef DESKTOP_VERSION 1603#ifndef DESKTOP_VERSION
1604 ConfigureDialog->showMaximized(); 1604 ConfigureDialog->showMaximized();
1605#endif 1605#endif
1606 if ( ConfigureDialog->exec() ) 1606 if ( ConfigureDialog->exec() )
1607 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1607 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1608 delete ConfigureDialog; 1608 delete ConfigureDialog;
1609} 1609}
1610 1610
1611void KABCore::openLDAPDialog() 1611void KABCore::openLDAPDialog()
1612{ 1612{
1613#ifndef KAB_EMBEDDED 1613#ifndef KAB_EMBEDDED
1614 if ( !mLdapSearchDialog ) { 1614 if ( !mLdapSearchDialog ) {
1615 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1615 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1616 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1616 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1617 SLOT( refreshView() ) ); 1617 SLOT( refreshView() ) );
1618 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1618 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1619 SLOT( setModified() ) ); 1619 SLOT( setModified() ) );
1620 } else 1620 } else
1621 mLdapSearchDialog->restoreSettings(); 1621 mLdapSearchDialog->restoreSettings();
1622 1622
1623 if ( mLdapSearchDialog->isOK() ) 1623 if ( mLdapSearchDialog->isOK() )
1624 mLdapSearchDialog->exec(); 1624 mLdapSearchDialog->exec();
1625#else //KAB_EMBEDDED 1625#else //KAB_EMBEDDED
1626 qDebug("KABCore::openLDAPDialog() finsih method"); 1626 qDebug("KABCore::openLDAPDialog() finsih method");
1627#endif //KAB_EMBEDDED 1627#endif //KAB_EMBEDDED
1628} 1628}
1629 1629
1630void KABCore::print() 1630void KABCore::print()
1631{ 1631{
1632#ifndef KAB_EMBEDDED 1632#ifndef KAB_EMBEDDED
1633 KPrinter printer; 1633 KPrinter printer;
1634 if ( !printer.setup( this ) ) 1634 if ( !printer.setup( this ) )
1635 return; 1635 return;
1636 1636
1637 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1637 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1638 mViewManager->selectedUids(), this ); 1638 mViewManager->selectedUids(), this );
1639 1639
1640 wizard.exec(); 1640 wizard.exec();
1641#else //KAB_EMBEDDED 1641#else //KAB_EMBEDDED
1642 qDebug("KABCore::print() finsih method"); 1642 qDebug("KABCore::print() finsih method");
1643#endif //KAB_EMBEDDED 1643#endif //KAB_EMBEDDED
1644 1644
1645} 1645}
1646 1646
1647 1647
1648void KABCore::addGUIClient( KXMLGUIClient *client ) 1648void KABCore::addGUIClient( KXMLGUIClient *client )
1649{ 1649{
1650 if ( mGUIClient ) 1650 if ( mGUIClient )
1651 mGUIClient->insertChildClient( client ); 1651 mGUIClient->insertChildClient( client );
1652 else 1652 else
1653 KMessageBox::error( this, "no KXMLGUICLient"); 1653 KMessageBox::error( this, "no KXMLGUICLient");
1654} 1654}
1655 1655
1656 1656
1657void KABCore::configurationChanged() 1657void KABCore::configurationChanged()
1658{ 1658{
1659 mExtensionManager->reconfigure(); 1659 mExtensionManager->reconfigure();
1660} 1660}
1661 1661
1662void KABCore::addressBookChanged() 1662void KABCore::addressBookChanged()
1663{ 1663{
1664/*US 1664/*US
1665 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1665 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1666 while ( it.current() ) { 1666 while ( it.current() ) {
1667 if ( it.current()->dirty() ) { 1667 if ( it.current()->dirty() ) {
1668 QString text = i18n( "Data has been changed externally. Unsaved " 1668 QString text = i18n( "Data has been changed externally. Unsaved "
1669 "changes will be lost." ); 1669 "changes will be lost." );
1670 KMessageBox::information( this, text ); 1670 KMessageBox::information( this, text );
1671 } 1671 }
1672 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1672 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1673 ++it; 1673 ++it;
1674 } 1674 }
1675*/ 1675*/
1676 if (mEditorDialog) 1676 if (mEditorDialog)
1677 { 1677 {
1678 if (mEditorDialog->dirty()) 1678 if (mEditorDialog->dirty())
1679 { 1679 {
1680 QString text = i18n( "Data has been changed externally. Unsaved " 1680 QString text = i18n( "Data has been changed externally. Unsaved "
1681 "changes will be lost." ); 1681 "changes will be lost." );
1682 KMessageBox::information( this, text ); 1682 KMessageBox::information( this, text );
1683 } 1683 }
1684 QString currentuid = mEditorDialog->addressee().uid(); 1684 QString currentuid = mEditorDialog->addressee().uid();
1685 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1685 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1686 } 1686 }
1687 mViewManager->refreshView(); 1687 mViewManager->refreshView();
1688 1688
1689 1689
1690} 1690}
1691 1691
1692AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1692AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1693 const char *name ) 1693 const char *name )
1694{ 1694{
1695 1695
1696 if ( mEditorDialog == 0 ) { 1696 if ( mEditorDialog == 0 ) {
1697 mEditorDialog = new AddresseeEditorDialog( this, parent, 1697 mEditorDialog = new AddresseeEditorDialog( this, parent,
1698 name ? name : "editorDialog" ); 1698 name ? name : "editorDialog" );
1699 1699
1700 1700
1701 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1701 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1702 SLOT( contactModified( const KABC::Addressee& ) ) ); 1702 SLOT( contactModified( const KABC::Addressee& ) ) );
1703 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1703 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1704 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1704 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1705 } 1705 }
1706 1706
1707 return mEditorDialog; 1707 return mEditorDialog;
1708} 1708}
1709 1709
1710void KABCore::slotEditorDestroyed( const QString &uid ) 1710void KABCore::slotEditorDestroyed( const QString &uid )
1711{ 1711{
1712 //mEditorDict.remove( uid ); 1712 //mEditorDict.remove( uid );
1713} 1713}
1714 1714
1715void KABCore::initGUI() 1715void KABCore::initGUI()
1716{ 1716{
1717#ifndef KAB_EMBEDDED 1717#ifndef KAB_EMBEDDED
1718 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1718 QHBoxLayout *topLayout = new QHBoxLayout( this );
1719 topLayout->setSpacing( KDialogBase::spacingHint() ); 1719 topLayout->setSpacing( KDialogBase::spacingHint() );
1720 1720
1721 mExtensionBarSplitter = new QSplitter( this ); 1721 mExtensionBarSplitter = new QSplitter( this );
1722 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1722 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1723 1723
1724 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1724 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1725 1725
1726 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1726 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1727 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1727 mIncSearchWidget = new IncSearchWidget( viewSpace );
1728 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1728 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1729 SLOT( incrementalSearch( const QString& ) ) ); 1729 SLOT( incrementalSearch( const QString& ) ) );
1730 1730
1731 mViewManager = new ViewManager( this, viewSpace ); 1731 mViewManager = new ViewManager( this, viewSpace );
1732 viewSpace->setStretchFactor( mViewManager, 1 ); 1732 viewSpace->setStretchFactor( mViewManager, 1 );
1733 1733
1734 mDetails = new ViewContainer( mDetailsSplitter ); 1734 mDetails = new ViewContainer( mDetailsSplitter );
1735 1735
1736 mJumpButtonBar = new JumpButtonBar( this, this ); 1736 mJumpButtonBar = new JumpButtonBar( this, this );
1737 1737
1738 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1738 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1739 1739
1740 topLayout->addWidget( mExtensionBarSplitter ); 1740 topLayout->addWidget( mExtensionBarSplitter );
1741 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1741 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1742 topLayout->addWidget( mJumpButtonBar ); 1742 topLayout->addWidget( mJumpButtonBar );
1743 //topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1743 //topLayout->setStretchFactor( mJumpButtonBar, 1 );
1744 1744
1745 mXXPortManager = new XXPortManager( this, this ); 1745 mXXPortManager = new XXPortManager( this, this );
1746 1746
1747#else //KAB_EMBEDDED 1747#else //KAB_EMBEDDED
1748 //US initialize viewMenu before settingup viewmanager. 1748 //US initialize viewMenu before settingup viewmanager.
1749 // Viewmanager needs this menu to plugin submenues. 1749 // Viewmanager needs this menu to plugin submenues.
1750 viewMenu = new QPopupMenu( this ); 1750 viewMenu = new QPopupMenu( this );
1751 settingsMenu = new QPopupMenu( this ); 1751 settingsMenu = new QPopupMenu( this );
1752 //filterMenu = new QPopupMenu( this ); 1752 //filterMenu = new QPopupMenu( this );
1753 ImportMenu = new QPopupMenu( this ); 1753 ImportMenu = new QPopupMenu( this );
1754 ExportMenu = new QPopupMenu( this ); 1754 ExportMenu = new QPopupMenu( this );
1755 syncMenu = new QPopupMenu( this ); 1755 syncMenu = new QPopupMenu( this );
1756 changeMenu= new QPopupMenu( this ); 1756 changeMenu= new QPopupMenu( this );
1757 beamMenu= new QPopupMenu( this ); 1757 beamMenu= new QPopupMenu( this );
1758 1758
1759//US since we have no splitter for the embedded system, setup 1759//US since we have no splitter for the embedded system, setup
1760// a layout with two frames. One left and one right. 1760// a layout with two frames. One left and one right.
1761 1761
1762 QBoxLayout *topLayout; 1762 QBoxLayout *topLayout;
1763 1763
1764 // = new QHBoxLayout( this ); 1764 // = new QHBoxLayout( this );
1765// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1765// QBoxLayout *topLayout = (QBoxLayout*)layout();
1766 1766
1767// QWidget *mainBox = new QWidget( this ); 1767// QWidget *mainBox = new QWidget( this );
1768// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1768// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1769 1769
1770#ifdef DESKTOP_VERSION 1770#ifdef DESKTOP_VERSION
1771 topLayout = new QHBoxLayout( this ); 1771 topLayout = new QHBoxLayout( this );
1772 1772
1773 1773
1774 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1774 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1775 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1775 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1776 1776
1777 topLayout->addWidget(mMiniSplitter ); 1777 topLayout->addWidget(mMiniSplitter );
1778 1778
1779 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1779 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1780 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1780 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1781 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1781 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1782 mDetails = new ViewContainer( mMiniSplitter ); 1782 mDetails = new ViewContainer( mMiniSplitter );
1783 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1783 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1784#else 1784#else
1785 if ( QApplication::desktop()->width() > 480 ) { 1785 if ( QApplication::desktop()->width() > 480 ) {
1786 topLayout = new QHBoxLayout( this ); 1786 topLayout = new QHBoxLayout( this );
1787 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1787 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1788 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1788 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1789 } else { 1789 } else {
1790 1790
1791 topLayout = new QHBoxLayout( this ); 1791 topLayout = new QHBoxLayout( this );
1792 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1792 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1793 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1793 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1794 } 1794 }
1795 1795
1796 topLayout->addWidget(mMiniSplitter ); 1796 topLayout->addWidget(mMiniSplitter );
1797 mViewManager = new ViewManager( this, mMiniSplitter ); 1797 mViewManager = new ViewManager( this, mMiniSplitter );
1798 mDetails = new ViewContainer( mMiniSplitter ); 1798 mDetails = new ViewContainer( mMiniSplitter );
1799 1799
1800 1800
1801 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1801 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1802#endif 1802#endif
1803 //eh->hide(); 1803 //eh->hide();
1804 // topLayout->addWidget(mExtensionManager ); 1804 // topLayout->addWidget(mExtensionManager );
1805 1805
1806 1806
1807/*US 1807/*US
1808#ifndef KAB_NOSPLITTER 1808#ifndef KAB_NOSPLITTER
1809 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1809 QHBoxLayout *topLayout = new QHBoxLayout( this );
1810//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1810//US topLayout->setSpacing( KDialogBase::spacingHint() );
1811 topLayout->setSpacing( 10 ); 1811 topLayout->setSpacing( 10 );
1812 1812
1813 mDetailsSplitter = new QSplitter( this ); 1813 mDetailsSplitter = new QSplitter( this );
1814 1814
1815 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1815 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1816 1816
1817 mViewManager = new ViewManager( this, viewSpace ); 1817 mViewManager = new ViewManager( this, viewSpace );
1818 viewSpace->setStretchFactor( mViewManager, 1 ); 1818 viewSpace->setStretchFactor( mViewManager, 1 );
1819 1819
1820 mDetails = new ViewContainer( mDetailsSplitter ); 1820 mDetails = new ViewContainer( mDetailsSplitter );
1821 1821
1822 topLayout->addWidget( mDetailsSplitter ); 1822 topLayout->addWidget( mDetailsSplitter );
1823 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1823 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1824#else //KAB_NOSPLITTER 1824#else //KAB_NOSPLITTER
1825 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1825 QHBoxLayout *topLayout = new QHBoxLayout( this );
1826//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1826//US topLayout->setSpacing( KDialogBase::spacingHint() );
1827 topLayout->setSpacing( 10 ); 1827 topLayout->setSpacing( 10 );
1828 1828
1829// mDetailsSplitter = new QSplitter( this ); 1829// mDetailsSplitter = new QSplitter( this );
1830 1830
1831 QVBox *viewSpace = new QVBox( this ); 1831 QVBox *viewSpace = new QVBox( this );
1832 1832
1833 mViewManager = new ViewManager( this, viewSpace ); 1833 mViewManager = new ViewManager( this, viewSpace );
1834 viewSpace->setStretchFactor( mViewManager, 1 ); 1834 viewSpace->setStretchFactor( mViewManager, 1 );
1835 1835
1836 mDetails = new ViewContainer( this ); 1836 mDetails = new ViewContainer( this );
1837 1837
1838 topLayout->addWidget( viewSpace ); 1838 topLayout->addWidget( viewSpace );
1839// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1839// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1840 topLayout->addWidget( mDetails ); 1840 topLayout->addWidget( mDetails );
1841#endif //KAB_NOSPLITTER 1841#endif //KAB_NOSPLITTER
1842*/ 1842*/
1843 1843
1844 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1844 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1845 syncManager->setBlockSave(false); 1845 syncManager->setBlockSave(false);
1846 1846
1847 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1847 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1848 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1848 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1849 QString sync_file = sentSyncFile(); 1849 QString sync_file = sentSyncFile();
1850 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); 1850 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1());
1851 syncManager->setDefaultFileName( sync_file ); 1851 syncManager->setDefaultFileName( sync_file );
1852 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1852 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1853 1853
1854#endif //KAB_EMBEDDED 1854#endif //KAB_EMBEDDED
1855 initActions(); 1855 initActions();
1856 1856
1857#ifdef KAB_EMBEDDED 1857#ifdef KAB_EMBEDDED
1858 addActionsManually(); 1858 addActionsManually();
1859 //US make sure the export and import menues are initialized before creating the xxPortManager. 1859 //US make sure the export and import menues are initialized before creating the xxPortManager.
1860 mXXPortManager = new XXPortManager( this, this ); 1860 mXXPortManager = new XXPortManager( this, this );
1861 1861
1862 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1862 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1863 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1863 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1864 // mActionQuit->plug ( mMainWindow->toolBar()); 1864 // mActionQuit->plug ( mMainWindow->toolBar());
1865 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1865 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1866 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1866 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1867 // mIncSearchWidget->hide(); 1867 // mIncSearchWidget->hide();
1868 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1868 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1869 SLOT( incrementalSearch( const QString& ) ) ); 1869 SLOT( incrementalSearch( const QString& ) ) );
1870 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); 1870 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) );
1871 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); 1871 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) );
1872 1872
1873 mJumpButtonBar = new JumpButtonBar( this, this ); 1873 mJumpButtonBar = new JumpButtonBar( this, this );
1874 1874
1875 topLayout->addWidget( mJumpButtonBar ); 1875 topLayout->addWidget( mJumpButtonBar );
1876//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1876//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1877 1877
1878// mMainWindow->getIconToolBar()->raise(); 1878// mMainWindow->getIconToolBar()->raise();
1879 1879
1880#endif //KAB_EMBEDDED 1880#endif //KAB_EMBEDDED
1881 1881
1882} 1882}
1883void KABCore::initActions() 1883void KABCore::initActions()
1884{ 1884{
1885//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1885//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1886 1886
1887#ifndef KAB_EMBEDDED 1887#ifndef KAB_EMBEDDED
1888 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1888 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1889 SLOT( clipboardDataChanged() ) ); 1889 SLOT( clipboardDataChanged() ) );
1890#endif //KAB_EMBEDDED 1890#endif //KAB_EMBEDDED
1891 1891
1892 // file menu 1892 // file menu
1893 1893
1894 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1894 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1895 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1895 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1896 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager, 1896 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager,
1897 SLOT( printView() ), actionCollection(), "kaddressbook_print" ); 1897 SLOT( printView() ), actionCollection(), "kaddressbook_print" );
1898 1898
1899 1899
1900 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails, 1900 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails,
1901 SLOT( printView() ), actionCollection(), "kaddressbook_print2" ); 1901 SLOT( printView() ), actionCollection(), "kaddressbook_print2" );
1902 1902
1903 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1903 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1904 SLOT( save() ), actionCollection(), "file_sync" ); 1904 SLOT( save() ), actionCollection(), "file_sync" );
1905 1905
1906 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1906 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1907 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1907 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1908 1908
1909 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1909 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1910 this, SLOT( mailVCard() ), 1910 this, SLOT( mailVCard() ),
1911 actionCollection(), "file_mail_vcard"); 1911 actionCollection(), "file_mail_vcard");
1912 1912
1913 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this, 1913 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this,
1914 SLOT( export2phone() ), actionCollection(), 1914 SLOT( export2phone() ), actionCollection(),
1915 "kaddressbook_ex2phone" ); 1915 "kaddressbook_ex2phone" );
1916 1916
1917 mActionBeamVCard = 0; 1917 mActionBeamVCard = 0;
1918 mActionBeam = 0; 1918 mActionBeam = 0;
1919 1919
1920#ifndef DESKTOP_VERSION 1920#ifndef DESKTOP_VERSION
1921 if ( Ir::supported() ) { 1921 if ( Ir::supported() ) {
1922 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this, 1922 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this,
1923 SLOT( beamVCard() ), actionCollection(), 1923 SLOT( beamVCard() ), actionCollection(),
1924 "kaddressbook_beam_vcard" ); 1924 "kaddressbook_beam_vcard" );
1925 1925
1926 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1926 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1927 SLOT( beamMySelf() ), actionCollection(), 1927 SLOT( beamMySelf() ), actionCollection(),
1928 "kaddressbook_beam_myself" ); 1928 "kaddressbook_beam_myself" );
1929 } 1929 }
1930#endif 1930#endif
1931 1931
1932 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1932 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1933 this, SLOT( editContact2() ), 1933 this, SLOT( editContact2() ),
1934 actionCollection(), "file_properties" ); 1934 actionCollection(), "file_properties" );
1935 1935
1936#ifdef KAB_EMBEDDED 1936#ifdef KAB_EMBEDDED
1937 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1937 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1938 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1938 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1939 mMainWindow, SLOT( exit() ), 1939 mMainWindow, SLOT( exit() ),
1940 actionCollection(), "quit" ); 1940 actionCollection(), "quit" );
1941#endif //KAB_EMBEDDED 1941#endif //KAB_EMBEDDED
1942 1942
1943 // edit menu 1943 // edit menu
1944 if ( mIsPart ) { 1944 if ( mIsPart ) {
1945 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1945 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1946 SLOT( copyContacts() ), actionCollection(), 1946 SLOT( copyContacts() ), actionCollection(),
1947 "kaddressbook_copy" ); 1947 "kaddressbook_copy" );
1948 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1948 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1949 SLOT( cutContacts() ), actionCollection(), 1949 SLOT( cutContacts() ), actionCollection(),
1950 "kaddressbook_cut" ); 1950 "kaddressbook_cut" );
1951 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1951 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1952 SLOT( pasteContacts() ), actionCollection(), 1952 SLOT( pasteContacts() ), actionCollection(),
1953 "kaddressbook_paste" ); 1953 "kaddressbook_paste" );
1954 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1954 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1955 SLOT( selectAllContacts() ), actionCollection(), 1955 SLOT( selectAllContacts() ), actionCollection(),
1956 "kaddressbook_select_all" ); 1956 "kaddressbook_select_all" );
1957 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1957 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1958 SLOT( undo() ), actionCollection(), 1958 SLOT( undo() ), actionCollection(),
1959 "kaddressbook_undo" ); 1959 "kaddressbook_undo" );
1960 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1960 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1961 this, SLOT( redo() ), actionCollection(), 1961 this, SLOT( redo() ), actionCollection(),
1962 "kaddressbook_redo" ); 1962 "kaddressbook_redo" );
1963 } else { 1963 } else {
1964 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1964 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1965 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1965 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1966 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1966 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1967 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1967 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1968 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1968 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1969 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1969 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1970 } 1970 }
1971 1971
1972 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1972 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1973 Key_Delete, this, SLOT( deleteContacts() ), 1973 Key_Delete, this, SLOT( deleteContacts() ),
1974 actionCollection(), "edit_delete" ); 1974 actionCollection(), "edit_delete" );
1975 1975
1976 mActionUndo->setEnabled( false ); 1976 mActionUndo->setEnabled( false );
1977 mActionRedo->setEnabled( false ); 1977 mActionRedo->setEnabled( false );
1978 1978
1979 // settings menu 1979 // settings menu
1980#ifdef KAB_EMBEDDED 1980#ifdef KAB_EMBEDDED
1981//US special menuentry to configure the addressbook resources. On KDE 1981//US special menuentry to configure the addressbook resources. On KDE
1982// you do that through the control center !!! 1982// you do that through the control center !!!
1983 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1983 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1984 SLOT( configureResources() ), actionCollection(), 1984 SLOT( configureResources() ), actionCollection(),
1985 "kaddressbook_configure_resources" ); 1985 "kaddressbook_configure_resources" );
1986#endif //KAB_EMBEDDED 1986#endif //KAB_EMBEDDED
1987 1987
1988 if ( mIsPart ) { 1988 if ( mIsPart ) {
1989 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1989 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1990 SLOT( openConfigDialog() ), actionCollection(), 1990 SLOT( openConfigDialog() ), actionCollection(),
1991 "kaddressbook_configure" ); 1991 "kaddressbook_configure" );
1992 1992
1993 //US not implemented yet 1993 //US not implemented yet
1994 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1994 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1995 // this, SLOT( configureKeyBindings() ), actionCollection(), 1995 // this, SLOT( configureKeyBindings() ), actionCollection(),
1996 // "kaddressbook_configure_shortcuts" ); 1996 // "kaddressbook_configure_shortcuts" );
1997#ifdef KAB_EMBEDDED 1997#ifdef KAB_EMBEDDED
1998 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1998 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1999 mActionConfigureToolbars->setEnabled( false ); 1999 mActionConfigureToolbars->setEnabled( false );
2000#endif //KAB_EMBEDDED 2000#endif //KAB_EMBEDDED
2001 2001
2002 } else { 2002 } else {
2003 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 2003 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
2004 2004
2005 //US not implemented yet 2005 //US not implemented yet
2006 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 2006 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
2007 } 2007 }
2008 2008
2009 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 2009 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
2010 actionCollection(), "options_show_jump_bar" ); 2010 actionCollection(), "options_show_jump_bar" );
2011 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBar( bool ) ) ); 2011 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBar( bool ) ) );
2012 2012
2013 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 2013 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
2014 actionCollection(), "options_show_details" ); 2014 actionCollection(), "options_show_details" );
2015 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 2015 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
2016 2016
2017 2017
2018 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this, 2018 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this,
2019 SLOT( toggleBeamReceive() ), actionCollection(), 2019 SLOT( toggleBeamReceive() ), actionCollection(),
2020 "kaddressbook_beam_rec" ); 2020 "kaddressbook_beam_rec" );
2021 2021
2022 2022
2023 // misc 2023 // misc
2024 // only enable LDAP lookup if we can handle the protocol 2024 // only enable LDAP lookup if we can handle the protocol
2025#ifndef KAB_EMBEDDED 2025#ifndef KAB_EMBEDDED
2026 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 2026 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
2027 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 2027 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
2028 this, SLOT( openLDAPDialog() ), actionCollection(), 2028 this, SLOT( openLDAPDialog() ), actionCollection(),
2029 "ldap_lookup" ); 2029 "ldap_lookup" );
2030 } 2030 }
2031#else //KAB_EMBEDDED 2031#else //KAB_EMBEDDED
2032 //qDebug("KABCore::initActions() LDAP has to be implemented"); 2032 //qDebug("KABCore::initActions() LDAP has to be implemented");
2033#endif //KAB_EMBEDDED 2033#endif //KAB_EMBEDDED
2034 2034
2035 2035
2036 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 2036 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
2037 SLOT( setWhoAmI() ), actionCollection(), 2037 SLOT( setWhoAmI() ), actionCollection(),
2038 "set_personal" ); 2038 "set_personal" );
2039 2039
2040 2040
2041 mActionCategories = new KAction( i18n( "Set Categories for Contacts..." ), 0, this, 2041 mActionCategories = new KAction( i18n( "Set Categories for Contacts..." ), 0, this,
2042 SLOT( setCategories() ), actionCollection(), 2042 SLOT( setCategories() ), actionCollection(),
2043 "edit_set_categories" ); 2043 "edit_set_categories" );
2044 mActionEditCategories = new KAction( i18n( "Edit Category List..." ), 0, this, 2044 mActionEditCategories = new KAction( i18n( "Edit Category List..." ), 0, this,
2045 SLOT( editCategories() ), actionCollection(), 2045 SLOT( editCategories() ), actionCollection(),
2046 "edit__categories" ); 2046 "edit__categories" );
2047 2047
2048 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 2048 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
2049 SLOT( removeVoice() ), actionCollection(), 2049 SLOT( removeVoice() ), actionCollection(),
2050 "remove_voice" ); 2050 "remove_voice" );
2051 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this, 2051 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this,
2052 SLOT( setFormattedName() ), actionCollection(), 2052 SLOT( setFormattedName() ), actionCollection(),
2053 "set_formatted" ); 2053 "set_formatted" );
2054 2054
2055 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 2055 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
2056 SLOT( manageCategories() ), actionCollection(), 2056 SLOT( manageCategories() ), actionCollection(),
2057 "remove_voice" ); 2057 "remove_voice" );
2058 2058
2059 2059
2060 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 2060 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
2061 SLOT( importFromOL() ), actionCollection(), 2061 SLOT( importFromOL() ), actionCollection(),
2062 "import_OL" ); 2062 "import_OL" );
2063#ifdef KAB_EMBEDDED 2063#ifdef KAB_EMBEDDED
2064 mActionLicence = new KAction( i18n( "Licence" ), 0, 2064 mActionLicence = new KAction( i18n( "Licence" ), 0,
2065 this, SLOT( showLicence() ), actionCollection(), 2065 this, SLOT( showLicence() ), actionCollection(),
2066 "licence_about_data" ); 2066 "licence_about_data" );
2067 mActionFaq = new KAction( i18n( "Faq" ), 0, 2067 mActionFaq = new KAction( i18n( "Faq" ), 0,
2068 this, SLOT( faq() ), actionCollection(), 2068 this, SLOT( faq() ), actionCollection(),
2069 "faq_about_data" ); 2069 "faq_about_data" );
2070 mActionWN = new KAction( i18n( "What's New?" ), 0, 2070 mActionWN = new KAction( i18n( "What's New?" ), 0,
2071 this, SLOT( whatsnew() ), actionCollection(), 2071 this, SLOT( whatsnew() ), actionCollection(),
2072 "wn" ); 2072 "wn" );
2073 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 2073 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
2074 this, SLOT( synchowto() ), actionCollection(), 2074 this, SLOT( synchowto() ), actionCollection(),
2075 "sync" ); 2075 "sync" );
2076 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 2076 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
2077 this, SLOT( kdesynchowto() ), actionCollection(), 2077 this, SLOT( kdesynchowto() ), actionCollection(),
2078 "kdesync" ); 2078 "kdesync" );
2079 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 2079 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
2080 this, SLOT( multisynchowto() ), actionCollection(), 2080 this, SLOT( multisynchowto() ), actionCollection(),
2081 "multisync" ); 2081 "multisync" );
2082 2082
2083 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 2083 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
2084 this, SLOT( createAboutData() ), actionCollection(), 2084 this, SLOT( createAboutData() ), actionCollection(),
2085 "kaddressbook_about_data" ); 2085 "kaddressbook_about_data" );
2086#endif //KAB_EMBEDDED 2086#endif //KAB_EMBEDDED
2087 2087
2088 clipboardDataChanged(); 2088 clipboardDataChanged();
2089 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2089 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2090 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2090 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2091} 2091}
2092 2092
2093//US we need this function, to plug all actions into the correct menues. 2093//US we need this function, to plug all actions into the correct menues.
2094// KDE uses a XML format to plug the actions, but we work her without this overhead. 2094// KDE uses a XML format to plug the actions, but we work her without this overhead.
2095void KABCore::addActionsManually() 2095void KABCore::addActionsManually()
2096{ 2096{
2097//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 2097//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
2098 2098
2099#ifdef KAB_EMBEDDED 2099#ifdef KAB_EMBEDDED
2100 QPopupMenu *fileMenu = new QPopupMenu( this ); 2100 QPopupMenu *fileMenu = new QPopupMenu( this );
2101 QPopupMenu *editMenu = new QPopupMenu( this ); 2101 QPopupMenu *editMenu = new QPopupMenu( this );
2102 QPopupMenu *helpMenu = new QPopupMenu( this ); 2102 QPopupMenu *helpMenu = new QPopupMenu( this );
2103 2103
2104 KToolBar* tb = mMainWindow->toolBar(); 2104 KToolBar* tb = mMainWindow->toolBar();
2105 2105
2106#ifndef DESKTOP_VERSION 2106#ifndef DESKTOP_VERSION
2107 if ( KABPrefs::instance()->mFullMenuBarVisible ) { 2107 if ( KABPrefs::instance()->mFullMenuBarVisible ) {
2108#endif 2108#endif
2109 QMenuBar* mb = mMainWindow->menuBar(); 2109 QMenuBar* mb = mMainWindow->menuBar();
2110 2110
2111 //US setup menubar. 2111 //US setup menubar.
2112 //Disable the following block if you do not want to have a menubar. 2112 //Disable the following block if you do not want to have a menubar.
2113 mb->insertItem( i18n("&File"), fileMenu ); 2113 mb->insertItem( i18n("&File"), fileMenu );
2114 mb->insertItem( i18n("&Edit"), editMenu ); 2114 mb->insertItem( i18n("&Edit"), editMenu );
2115 mb->insertItem( i18n("&View"), viewMenu ); 2115 mb->insertItem( i18n("&View"), viewMenu );
2116 mb->insertItem( i18n("&Settings"), settingsMenu ); 2116 mb->insertItem( i18n("&Settings"), settingsMenu );
2117#ifdef DESKTOP_VERSION 2117#ifdef DESKTOP_VERSION
2118 mb->insertItem( i18n("Synchronize"), syncMenu ); 2118 mb->insertItem( i18n("Synchronize"), syncMenu );
2119#else 2119#else
2120 mb->insertItem( i18n("Sync"), syncMenu ); 2120 mb->insertItem( i18n("Sync"), syncMenu );
2121#endif 2121#endif
2122 //mb->insertItem( i18n("&Change"), changeMenu ); 2122 //mb->insertItem( i18n("&Change"), changeMenu );
2123 mb->insertItem( i18n("&Help"), helpMenu ); 2123 mb->insertItem( i18n("&Help"), helpMenu );
2124 mIncSearchWidget = new IncSearchWidget( tb ); 2124 mIncSearchWidget = new IncSearchWidget( tb );
2125 // tb->insertWidget(-1, 0, mIncSearchWidget); 2125 // tb->insertWidget(-1, 0, mIncSearchWidget);
2126#ifndef DESKTOP_VERSION 2126#ifndef DESKTOP_VERSION
2127 } else { 2127 } else {
2128 //US setup toolbar 2128 //US setup toolbar
2129 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 2129 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
2130 QPopupMenu *popupBarTB = new QPopupMenu( this ); 2130 QPopupMenu *popupBarTB = new QPopupMenu( this );
2131 menuBarTB->insertItem( "ME", popupBarTB); 2131 menuBarTB->insertItem( SmallIcon( "z_menu" ) , popupBarTB);
2132 tb->insertWidget(-1, 0, menuBarTB); 2132 tb->insertWidget(-1, 0, menuBarTB);
2133 mIncSearchWidget = new IncSearchWidget( tb ); 2133 mIncSearchWidget = new IncSearchWidget( tb );
2134 2134
2135 tb->enableMoving(false); 2135 tb->enableMoving(false);
2136 popupBarTB->insertItem( i18n("&File"), fileMenu ); 2136 popupBarTB->insertItem( i18n("&File"), fileMenu );
2137 popupBarTB->insertItem( i18n("&Edit"), editMenu ); 2137 popupBarTB->insertItem( i18n("&Edit"), editMenu );
2138 popupBarTB->insertItem( i18n("&View"), viewMenu ); 2138 popupBarTB->insertItem( i18n("&View"), viewMenu );
2139 popupBarTB->insertItem( i18n("&Settings"), settingsMenu ); 2139 popupBarTB->insertItem( i18n("&Settings"), settingsMenu );
2140 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 2140 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
2141 mViewManager->getFilterAction()->plug ( popupBarTB); 2141 mViewManager->getFilterAction()->plug ( popupBarTB);
2142 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu ); 2142 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu );
2143 popupBarTB->insertItem( i18n("&Help"), helpMenu ); 2143 popupBarTB->insertItem( i18n("&Help"), helpMenu );
2144 if (QApplication::desktop()->width() > 320 ) { 2144 if (QApplication::desktop()->width() > 320 ) {
2145 // mViewManager->getFilterAction()->plug ( tb); 2145 // mViewManager->getFilterAction()->plug ( tb);
2146 } 2146 }
2147 } 2147 }
2148#endif 2148#endif
2149 // mActionQuit->plug ( mMainWindow->toolBar()); 2149 // mActionQuit->plug ( mMainWindow->toolBar());
2150 2150
2151 2151
2152 2152
2153 //US Now connect the actions with the menue entries. 2153 //US Now connect the actions with the menue entries.
2154#ifdef DESKTOP_VERSION 2154#ifdef DESKTOP_VERSION
2155 mActionPrint->plug( fileMenu ); 2155 mActionPrint->plug( fileMenu );
2156 mActionPrintDetails->plug( fileMenu ); 2156 mActionPrintDetails->plug( fileMenu );
2157 fileMenu->insertSeparator(); 2157 fileMenu->insertSeparator();
2158#endif 2158#endif
2159 mActionMail->plug( fileMenu ); 2159 mActionMail->plug( fileMenu );
2160 fileMenu->insertSeparator(); 2160 fileMenu->insertSeparator();
2161 2161
2162 mActionNewContact->plug( fileMenu ); 2162 mActionNewContact->plug( fileMenu );
2163 mActionNewContact->plug( tb ); 2163 mActionNewContact->plug( tb );
2164 2164
2165 mActionEditAddressee->plug( fileMenu ); 2165 mActionEditAddressee->plug( fileMenu );
2166 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 2166 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
2167 // (!KABPrefs::instance()->mMultipleViewsAtOnce )) 2167 // (!KABPrefs::instance()->mMultipleViewsAtOnce ))
2168 mActionEditAddressee->plug( tb ); 2168 mActionEditAddressee->plug( tb );
2169 2169
2170 fileMenu->insertSeparator(); 2170 fileMenu->insertSeparator();
2171 mActionSave->plug( fileMenu ); 2171 mActionSave->plug( fileMenu );
2172 fileMenu->insertItem( "&Import", ImportMenu ); 2172 fileMenu->insertItem( "&Import", ImportMenu );
2173 fileMenu->insertItem( "&Export", ExportMenu ); 2173 fileMenu->insertItem( "&Export", ExportMenu );
2174 fileMenu->insertItem( i18n("&Change"), changeMenu ); 2174 fileMenu->insertItem( i18n("&Change"), changeMenu );
2175#ifndef DESKTOP_VERSION 2175#ifndef DESKTOP_VERSION
2176 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu ); 2176 if ( Ir::supported() ) fileMenu->insertItem( i18n("&Beam"), beamMenu );
2177#endif 2177#endif
2178#if 0 2178#if 0
2179 // PENDING fix MailVCard 2179 // PENDING fix MailVCard
2180 fileMenu->insertSeparator(); 2180 fileMenu->insertSeparator();
2181 mActionMailVCard->plug( fileMenu ); 2181 mActionMailVCard->plug( fileMenu );
2182#endif 2182#endif
2183#ifndef DESKTOP_VERSION 2183#ifndef DESKTOP_VERSION
2184 if ( Ir::supported() ) mActionBR->plug( beamMenu ); 2184 if ( Ir::supported() ) mActionBR->plug( beamMenu );
2185 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu ); 2185 if ( Ir::supported() ) mActionBeamVCard->plug( beamMenu );
2186 if ( Ir::supported() ) mActionBeam->plug( beamMenu ); 2186 if ( Ir::supported() ) mActionBeam->plug( beamMenu );
2187#endif 2187#endif
2188 fileMenu->insertSeparator(); 2188 fileMenu->insertSeparator();
2189 mActionQuit->plug( fileMenu ); 2189 mActionQuit->plug( fileMenu );
2190#ifdef _OL_IMPORT_ 2190#ifdef _OL_IMPORT_
2191 mActionImportOL->plug( ImportMenu ); 2191 mActionImportOL->plug( ImportMenu );
2192#endif 2192#endif
2193 // edit menu 2193 // edit menu
2194 mActionUndo->plug( editMenu ); 2194 mActionUndo->plug( editMenu );
2195 mActionRedo->plug( editMenu ); 2195 mActionRedo->plug( editMenu );
2196 editMenu->insertSeparator(); 2196 editMenu->insertSeparator();
2197 mActionCut->plug( editMenu ); 2197 mActionCut->plug( editMenu );
2198 mActionCopy->plug( editMenu ); 2198 mActionCopy->plug( editMenu );
2199 mActionPaste->plug( editMenu ); 2199 mActionPaste->plug( editMenu );
2200 mActionDelete->plug( editMenu ); 2200 mActionDelete->plug( editMenu );
2201 editMenu->insertSeparator(); 2201 editMenu->insertSeparator();
2202 mActionSelectAll->plug( editMenu ); 2202 mActionSelectAll->plug( editMenu );
2203 2203
2204 mActionSetFormattedName->plug( changeMenu ); 2204 mActionSetFormattedName->plug( changeMenu );
2205 mActionRemoveVoice->plug( changeMenu ); 2205 mActionRemoveVoice->plug( changeMenu );
2206 // settings menu 2206 // settings menu
2207//US special menuentry to configure the addressbook resources. On KDE 2207//US special menuentry to configure the addressbook resources. On KDE
2208// you do that through the control center !!! 2208// you do that through the control center !!!
2209 mActionConfigResources->plug( settingsMenu ); 2209 mActionConfigResources->plug( settingsMenu );
2210 settingsMenu->insertSeparator(); 2210 settingsMenu->insertSeparator();
2211 2211
2212 mActionConfigKAddressbook->plug( settingsMenu ); 2212 mActionConfigKAddressbook->plug( settingsMenu );
2213 2213
2214 if ( mIsPart ) { 2214 if ( mIsPart ) {
2215 //US not implemented yet 2215 //US not implemented yet
2216 //mActionConfigShortcuts->plug( settingsMenu ); 2216 //mActionConfigShortcuts->plug( settingsMenu );
2217 //mActionConfigureToolbars->plug( settingsMenu ); 2217 //mActionConfigureToolbars->plug( settingsMenu );
2218 2218
2219 } else { 2219 } else {
2220 //US not implemented yet 2220 //US not implemented yet
2221 //mActionKeyBindings->plug( settingsMenu ); 2221 //mActionKeyBindings->plug( settingsMenu );
2222 } 2222 }
2223 2223
2224 settingsMenu->insertSeparator(); 2224 settingsMenu->insertSeparator();
2225 2225
2226 mActionJumpBar->plug( settingsMenu ); 2226 mActionJumpBar->plug( settingsMenu );
2227 mActionDetails->plug( settingsMenu ); 2227 mActionDetails->plug( settingsMenu );
2228 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2228 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2229 mActionDetails->plug( tb ); 2229 mActionDetails->plug( tb );
2230 settingsMenu->insertSeparator(); 2230 settingsMenu->insertSeparator();
2231#ifndef DESKTOP_VERSION 2231#ifndef DESKTOP_VERSION
2232 if ( Ir::supported() ) mActionBR->plug(settingsMenu ); 2232 if ( Ir::supported() ) mActionBR->plug(settingsMenu );
2233 settingsMenu->insertSeparator(); 2233 settingsMenu->insertSeparator();
2234#endif 2234#endif
2235 2235
2236 mActionWhoAmI->plug( settingsMenu ); 2236 mActionWhoAmI->plug( settingsMenu );
2237 mActionEditCategories->plug( settingsMenu ); 2237 mActionEditCategories->plug( settingsMenu );
2238 mActionEditCategories->plug( changeMenu ); 2238 mActionEditCategories->plug( changeMenu );
2239 mActionCategories->plug( changeMenu ); 2239 mActionCategories->plug( changeMenu );
2240 mActionManageCategories->plug( changeMenu ); 2240 mActionManageCategories->plug( changeMenu );
2241 2241
2242 mActionCategories->plug( settingsMenu ); 2242 mActionCategories->plug( settingsMenu );
2243 mActionManageCategories->plug( settingsMenu ); 2243 mActionManageCategories->plug( settingsMenu );
2244 2244
2245 2245
2246 mActionWN->plug( helpMenu ); 2246 mActionWN->plug( helpMenu );
2247 mActionSyncHowto->plug( helpMenu ); 2247 mActionSyncHowto->plug( helpMenu );
2248 mActionKdeSyncHowto->plug( helpMenu ); 2248 mActionKdeSyncHowto->plug( helpMenu );
2249 mActionMultiSyncHowto->plug( helpMenu ); 2249 mActionMultiSyncHowto->plug( helpMenu );
2250 mActionFaq->plug( helpMenu ); 2250 mActionFaq->plug( helpMenu );
2251 mActionLicence->plug( helpMenu ); 2251 mActionLicence->plug( helpMenu );
2252 mActionAboutKAddressbook->plug( helpMenu ); 2252 mActionAboutKAddressbook->plug( helpMenu );
2253 2253
2254 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2254 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2255 2255
2256 mActionSave->plug( tb ); 2256 mActionSave->plug( tb );
2257 mViewManager->getFilterAction()->plug ( tb); 2257 mViewManager->getFilterAction()->plug ( tb);
2258 //LR hide filteraction on started in 480x640 2258 //LR hide filteraction on started in 480x640
2259 if (QApplication::desktop()->width() == 480 ) { 2259 if (QApplication::desktop()->width() == 480 ) {
2260 mViewManager->getFilterAction()->setComboWidth( 0 ); 2260 mViewManager->getFilterAction()->setComboWidth( 0 );
2261 } 2261 }
2262 mActionUndo->plug( tb ); 2262 mActionUndo->plug( tb );
2263 mActionDelete->plug( tb ); 2263 mActionDelete->plug( tb );
2264 mActionRedo->plug( tb ); 2264 mActionRedo->plug( tb );
2265 } else { 2265 } else {
2266 mActionSave->plug( tb ); 2266 mActionSave->plug( tb );
2267 tb->enableMoving(false); 2267 tb->enableMoving(false);
2268 } 2268 }
2269 //mActionQuit->plug ( tb ); 2269 //mActionQuit->plug ( tb );
2270 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2270 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2271 2271
2272 //US link the searchwidget first to this. 2272 //US link the searchwidget first to this.
2273 // The real linkage to the toolbar happens later. 2273 // The real linkage to the toolbar happens later.
2274//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2274//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2275//US tb->insertItem( mIncSearchWidget ); 2275//US tb->insertItem( mIncSearchWidget );
2276/*US 2276/*US
2277 mIncSearchWidget = new IncSearchWidget( tb ); 2277 mIncSearchWidget = new IncSearchWidget( tb );
2278 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2278 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2279 SLOT( incrementalSearch( const QString& ) ) ); 2279 SLOT( incrementalSearch( const QString& ) ) );
2280 2280
2281 mJumpButtonBar = new JumpButtonBar( this, this ); 2281 mJumpButtonBar = new JumpButtonBar( this, this );
2282 2282
2283//US topLayout->addWidget( mJumpButtonBar ); 2283//US topLayout->addWidget( mJumpButtonBar );
2284 this->layout()->add( mJumpButtonBar ); 2284 this->layout()->add( mJumpButtonBar );
2285*/ 2285*/
2286 2286
2287#endif //KAB_EMBEDDED 2287#endif //KAB_EMBEDDED
2288 2288
2289 mActionExport2phone->plug( ExportMenu ); 2289 mActionExport2phone->plug( ExportMenu );
2290 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2290 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2291 syncManager->fillSyncMenu(); 2291 syncManager->fillSyncMenu();
2292 2292
2293} 2293}
2294void KABCore::showLicence() 2294void KABCore::showLicence()
2295{ 2295{
2296 KApplication::showLicence(); 2296 KApplication::showLicence();
2297} 2297}
2298 2298
2299void KABCore::manageCategories( ) 2299void KABCore::manageCategories( )
2300{ 2300{
2301 KABCatPrefs* cp = new KABCatPrefs(); 2301 KABCatPrefs* cp = new KABCatPrefs();
2302 cp->show(); 2302 cp->show();
2303 int w =cp->sizeHint().width() ; 2303 int w =cp->sizeHint().width() ;
2304 int h = cp->sizeHint().height() ; 2304 int h = cp->sizeHint().height() ;
2305 int dw = QApplication::desktop()->width(); 2305 int dw = QApplication::desktop()->width();
2306 int dh = QApplication::desktop()->height(); 2306 int dh = QApplication::desktop()->height();
2307 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2307 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2308 if ( !cp->exec() ) { 2308 if ( !cp->exec() ) {
2309 delete cp; 2309 delete cp;
2310 return; 2310 return;
2311 } 2311 }
2312 int count = 0; 2312 int count = 0;
2313 int cc = 0; 2313 int cc = 0;
2314 message( i18n("Please wait, processing categories...")); 2314 message( i18n("Please wait, processing categories..."));
2315 if ( cp->addCat() ) { 2315 if ( cp->addCat() ) {
2316 KABC::AddressBook::Iterator it; 2316 KABC::AddressBook::Iterator it;
2317 QStringList catList = KABPrefs::instance()->mCustomCategories; 2317 QStringList catList = KABPrefs::instance()->mCustomCategories;
2318 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2318 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2319 ++cc; 2319 ++cc;
2320 if ( cc %10 == 0) 2320 if ( cc %10 == 0)
2321 message(i18n("Processing contact #%1").arg(cc)); 2321 message(i18n("Processing contact #%1").arg(cc));
2322 QStringList catIncList = (*it).categories(); 2322 QStringList catIncList = (*it).categories();
2323 int i; 2323 int i;
2324 for( i = 0; i< catIncList.count(); ++i ) { 2324 for( i = 0; i< catIncList.count(); ++i ) {
2325 if ( !catList.contains (catIncList[i])) { 2325 if ( !catList.contains (catIncList[i])) {
2326 catList.append( catIncList[i] ); 2326 catList.append( catIncList[i] );
2327 //qDebug("add cat %s ", catIncList[i].latin1()); 2327 //qDebug("add cat %s ", catIncList[i].latin1());
2328 ++count; 2328 ++count;
2329 } 2329 }
2330 } 2330 }
2331 } 2331 }
2332 catList.sort(); 2332 catList.sort();
2333 KABPrefs::instance()->mCustomCategories = catList; 2333 KABPrefs::instance()->mCustomCategories = catList;
2334 KABPrefs::instance()->writeConfig(); 2334 KABPrefs::instance()->writeConfig();
2335 message(QString::number( count )+ i18n(" categories added to list! ")); 2335 message(QString::number( count )+ i18n(" categories added to list! "));
2336 } else { 2336 } else {
2337 QStringList catList = KABPrefs::instance()->mCustomCategories; 2337 QStringList catList = KABPrefs::instance()->mCustomCategories;
2338 QStringList catIncList; 2338 QStringList catIncList;
2339 QStringList newCatList; 2339 QStringList newCatList;
2340 KABC::AddressBook::Iterator it; 2340 KABC::AddressBook::Iterator it;
2341 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2341 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2342 ++cc; 2342 ++cc;
2343 if ( cc %10 == 0) 2343 if ( cc %10 == 0)
2344 message(i18n("Processing contact #%1").arg(cc)); 2344 message(i18n("Processing contact #%1").arg(cc));
2345 QStringList catIncList = (*it).categories(); 2345 QStringList catIncList = (*it).categories();
2346 int i; 2346 int i;
2347 if ( catIncList.count() ) { 2347 if ( catIncList.count() ) {
2348 newCatList.clear(); 2348 newCatList.clear();
2349 for( i = 0; i< catIncList.count(); ++i ) { 2349 for( i = 0; i< catIncList.count(); ++i ) {
2350 if ( catList.contains (catIncList[i])) { 2350 if ( catList.contains (catIncList[i])) {
2351 newCatList.append( catIncList[i] ); 2351 newCatList.append( catIncList[i] );
2352 } 2352 }
2353 } 2353 }
2354 newCatList.sort(); 2354 newCatList.sort();
2355 (*it).setCategories( newCatList ); 2355 (*it).setCategories( newCatList );
2356 mAddressBook->insertAddressee( (*it) ); 2356 mAddressBook->insertAddressee( (*it) );
2357 } 2357 }
2358 } 2358 }
2359 setModified( true ); 2359 setModified( true );
2360 mViewManager->refreshView(); 2360 mViewManager->refreshView();
2361 message( i18n("Removing categories done!")); 2361 message( i18n("Removing categories done!"));
2362 } 2362 }
2363 delete cp; 2363 delete cp;
2364} 2364}
2365void KABCore::removeVoice() 2365void KABCore::removeVoice()
2366{ 2366{
2367 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No ) 2367 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
2368 return; 2368 return;
2369 XXPortSelectDialog dlg( this, false, this ); 2369 XXPortSelectDialog dlg( this, false, this );
2370 if ( !dlg.exec() ) 2370 if ( !dlg.exec() )
2371 return; 2371 return;
2372 mAddressBook->setUntagged(); 2372 mAddressBook->setUntagged();
2373 dlg.tagSelected(); 2373 dlg.tagSelected();
2374 message(i18n("Removing voice..."), false ); 2374 message(i18n("Removing voice..."), false );
2375 KABC::AddressBook::Iterator it; 2375 KABC::AddressBook::Iterator it;
2376 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2376 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2377 if ( (*it).tagged() ) { 2377 if ( (*it).tagged() ) {
2378 (*it).removeVoice(); 2378 (*it).removeVoice();
2379 } 2379 }
2380 } 2380 }
2381 message(i18n("Refreshing view...") ); 2381 message(i18n("Refreshing view...") );
2382 qApp->processEvents(); 2382 qApp->processEvents();
2383 mViewManager->refreshView( "" ); 2383 mViewManager->refreshView( "" );
2384 Addressee add; 2384 Addressee add;
2385 mDetails->setAddressee( add ); 2385 mDetails->setAddressee( add );
2386 message(i18n("Remove voice completed!") ); 2386 message(i18n("Remove voice completed!") );
2387 2387
2388 2388
2389 2389
2390} 2390}
2391 2391
2392void KABCore::setFormattedName() 2392void KABCore::setFormattedName()
2393{ 2393{
2394 KABFormatPrefs setpref; 2394 KABFormatPrefs setpref;
2395 if ( !setpref.exec() ) { 2395 if ( !setpref.exec() ) {
2396 return; 2396 return;
2397 } 2397 }
2398 XXPortSelectDialog dlg( this, false, this ); 2398 XXPortSelectDialog dlg( this, false, this );
2399 if ( !dlg.exec() ) 2399 if ( !dlg.exec() )
2400 return; 2400 return;
2401 mAddressBook->setUntagged(); 2401 mAddressBook->setUntagged();
2402 dlg.tagSelected(); 2402 dlg.tagSelected();
2403 int count = 0; 2403 int count = 0;
2404 KABC::AddressBook::Iterator it; 2404 KABC::AddressBook::Iterator it;
2405 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2405 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2406 if ( (*it).tagged() ) { 2406 if ( (*it).tagged() ) {
2407 ++count; 2407 ++count;
2408 if ( count %10 == 0 ) 2408 if ( count %10 == 0 )
2409 message(i18n("Changing contact #%1").arg( count ) ); 2409 message(i18n("Changing contact #%1").arg( count ) );
2410 qApp->processEvents(); 2410 qApp->processEvents();
2411 QString fName; 2411 QString fName;
2412 if ( setpref.simple->isChecked() ) 2412 if ( setpref.simple->isChecked() )
2413 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName ); 2413 fName = NameEditDialog::formattedName( (*it), NameEditDialog::SimpleName );
2414 else if ( setpref.full->isChecked() ) 2414 else if ( setpref.full->isChecked() )
2415 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName ); 2415 fName = NameEditDialog::formattedName( (*it), NameEditDialog::FullName );
2416 else if ( setpref.reverse->isChecked() ) 2416 else if ( setpref.reverse->isChecked() )
2417 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName ); 2417 fName = NameEditDialog::formattedName( (*it), NameEditDialog::ReverseName );
2418 else 2418 else
2419 fName = (*it).organization(); 2419 fName = (*it).organization();
2420 if ( setpref.setCompany->isChecked() ) 2420 if ( setpref.setCompany->isChecked() )
2421 if ( fName.isEmpty() || fName =="," ) 2421 if ( fName.isEmpty() || fName =="," )
2422 fName = (*it).organization(); 2422 fName = (*it).organization();
2423 (*it).setFormattedName( fName ); 2423 (*it).setFormattedName( fName );
2424 } 2424 }
2425 } 2425 }
2426 message(i18n("Refreshing view...") ); 2426 message(i18n("Refreshing view...") );
2427 qApp->processEvents(); 2427 qApp->processEvents();
2428 mViewManager->refreshView( "" ); 2428 mViewManager->refreshView( "" );
2429 Addressee add; 2429 Addressee add;
2430 mDetails->setAddressee( add ); 2430 mDetails->setAddressee( add );
2431 message(i18n("Setting formatted name completed!") ); 2431 message(i18n("Setting formatted name completed!") );
2432} 2432}
2433 2433
2434void KABCore::clipboardDataChanged() 2434void KABCore::clipboardDataChanged()
2435{ 2435{
2436 2436
2437 if ( mReadWrite ) 2437 if ( mReadWrite )
2438 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 2438 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
2439 2439
2440} 2440}
2441 2441
2442void KABCore::updateActionMenu() 2442void KABCore::updateActionMenu()
2443{ 2443{
2444 UndoStack *undo = UndoStack::instance(); 2444 UndoStack *undo = UndoStack::instance();
2445 RedoStack *redo = RedoStack::instance(); 2445 RedoStack *redo = RedoStack::instance();
2446 2446
2447 if ( undo->isEmpty() ) 2447 if ( undo->isEmpty() )
2448 mActionUndo->setText( i18n( "Undo" ) ); 2448 mActionUndo->setText( i18n( "Undo" ) );
2449 else 2449 else
2450 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 2450 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
2451 2451
2452 mActionUndo->setEnabled( !undo->isEmpty() ); 2452 mActionUndo->setEnabled( !undo->isEmpty() );
2453 2453
2454 if ( !redo->top() ) 2454 if ( !redo->top() )
2455 mActionRedo->setText( i18n( "Redo" ) ); 2455 mActionRedo->setText( i18n( "Redo" ) );
2456 else 2456 else
2457 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2457 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
2458 2458
2459 mActionRedo->setEnabled( !redo->isEmpty() ); 2459 mActionRedo->setEnabled( !redo->isEmpty() );
2460} 2460}
2461 2461
2462void KABCore::configureKeyBindings() 2462void KABCore::configureKeyBindings()
2463{ 2463{
2464#ifndef KAB_EMBEDDED 2464#ifndef KAB_EMBEDDED
2465 KKeyDialog::configure( actionCollection(), true ); 2465 KKeyDialog::configure( actionCollection(), true );
2466#else //KAB_EMBEDDED 2466#else //KAB_EMBEDDED
2467 qDebug("KABCore::configureKeyBindings() not implemented"); 2467 qDebug("KABCore::configureKeyBindings() not implemented");
2468#endif //KAB_EMBEDDED 2468#endif //KAB_EMBEDDED
2469} 2469}
2470 2470
2471#ifdef KAB_EMBEDDED 2471#ifdef KAB_EMBEDDED
2472void KABCore::configureResources() 2472void KABCore::configureResources()
2473{ 2473{
2474 KRES::KCMKResources dlg( this, "" , 0 ); 2474 KRES::KCMKResources dlg( this, "" , 0 );
2475 2475
2476 if ( !dlg.exec() ) 2476 if ( !dlg.exec() )
2477 return; 2477 return;
2478 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2478 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2479} 2479}
2480#endif //KAB_EMBEDDED 2480#endif //KAB_EMBEDDED
2481 2481
2482 2482
2483/* this method will be called through the QCop interface from Ko/Pi to select addresses 2483/* this method will be called through the QCop interface from Ko/Pi to select addresses
2484 * for the attendees list of an event. 2484 * for the attendees list of an event.
2485 */ 2485 */
2486void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2486void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2487{ 2487{
2488 QStringList nameList; 2488 QStringList nameList;
2489 QStringList emailList; 2489 QStringList emailList;
2490 QStringList uidList; 2490 QStringList uidList;
2491 2491
2492 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2492 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2493 uint i=0; 2493 uint i=0;
2494 for (i=0; i < list.count(); i++) 2494 for (i=0; i < list.count(); i++)
2495 { 2495 {
2496 nameList.append(list[i].realName()); 2496 nameList.append(list[i].realName());
2497 emailList.append(list[i].preferredEmail()); 2497 emailList.append(list[i].preferredEmail());
2498 uidList.append(list[i].uid()); 2498 uidList.append(list[i].uid());
2499 } 2499 }
2500 //qDebug("%s %s ", sourceChannel.latin1(), uid.latin1()); 2500 //qDebug("%s %s ", sourceChannel.latin1(), uid.latin1());
2501 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2501 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2502 2502
2503} 2503}
2504 2504
2505/* this method will be called through the QCop interface from Ko/Pi to select birthdays 2505/* this method will be called through the QCop interface from Ko/Pi to select birthdays
2506 * to put them into the calendar. 2506 * to put them into the calendar.
2507 */ 2507 */
2508void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid) 2508void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid)
2509{ 2509{
2510 // qDebug("KABCore::requestForBirthdayList"); 2510 // qDebug("KABCore::requestForBirthdayList");
2511 QStringList birthdayList; 2511 QStringList birthdayList;
2512 QStringList anniversaryList; 2512 QStringList anniversaryList;
2513 QStringList realNameList; 2513 QStringList realNameList;
2514 QStringList preferredEmailList; 2514 QStringList preferredEmailList;
2515 QStringList assembledNameList; 2515 QStringList assembledNameList;
2516 QStringList uidList; 2516 QStringList uidList;
2517 2517
2518 KABC::AddressBook::Iterator it; 2518 KABC::AddressBook::Iterator it;
2519 2519
2520 int count = 0; 2520 int count = 0;
2521 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2521 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2522 ++count; 2522 ++count;
2523 } 2523 }
2524 QProgressBar bar(count,0 ); 2524 QProgressBar bar(count,0 );
2525 int w = 300; 2525 int w = 300;
2526 if ( QApplication::desktop()->width() < 320 ) 2526 if ( QApplication::desktop()->width() < 320 )
2527 w = 220; 2527 w = 220;
2528 int h = bar.sizeHint().height() ; 2528 int h = bar.sizeHint().height() ;
2529 int dw = QApplication::desktop()->width(); 2529 int dw = QApplication::desktop()->width();
2530 int dh = QApplication::desktop()->height(); 2530 int dh = QApplication::desktop()->height();
2531 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2531 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2532 bar.show(); 2532 bar.show();
2533 bar.setCaption (i18n("Collecting birthdays - close to abort!") ); 2533 bar.setCaption (i18n("Collecting birthdays - close to abort!") );
2534 qApp->processEvents(); 2534 qApp->processEvents();
2535 2535
2536 QDate bday; 2536 QDate bday;
2537 QString anni; 2537 QString anni;
2538 QString formattedbday; 2538 QString formattedbday;
2539 2539
2540 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) 2540 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it )
2541 { 2541 {
2542 if ( ! bar.isVisible() ) 2542 if ( ! bar.isVisible() )
2543 return; 2543 return;
2544 bar.setProgress( count++ ); 2544 bar.setProgress( count++ );
2545 qApp->processEvents(); 2545 qApp->processEvents();
2546 bday = (*it).birthday().date(); 2546 bday = (*it).birthday().date();
2547 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" ); 2547 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" );
2548 2548
2549 if ( bday.isValid() || !anni.isEmpty()) 2549 if ( bday.isValid() || !anni.isEmpty())
2550 { 2550 {
2551 if (bday.isValid()) 2551 if (bday.isValid())
2552 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate); 2552 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate);
2553 else 2553 else
2554 formattedbday = "NOTVALID"; 2554 formattedbday = "NOTVALID";
2555 if (anni.isEmpty()) 2555 if (anni.isEmpty())
2556 anni = "INVALID"; 2556 anni = "INVALID";
2557 2557
2558 birthdayList.append(formattedbday); 2558 birthdayList.append(formattedbday);
2559 anniversaryList.append(anni); //should be ISODate 2559 anniversaryList.append(anni); //should be ISODate
2560 realNameList.append((*it).realName()); 2560 realNameList.append((*it).realName());
2561 preferredEmailList.append((*it).preferredEmail()); 2561 preferredEmailList.append((*it).preferredEmail());
2562 assembledNameList.append((*it).assembledName()); 2562 assembledNameList.append((*it).assembledName());
2563 uidList.append((*it).uid()); 2563 uidList.append((*it).uid());
2564 2564
2565 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() ); 2565 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() );
2566 } 2566 }
2567 } 2567 }
2568 2568
2569 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList); 2569 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList);
2570 2570
2571} 2571}
2572 2572
2573/* this method will be called through the QCop interface from other apps to show details of a contact. 2573/* this method will be called through the QCop interface from other apps to show details of a contact.
2574 */ 2574 */
2575void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2575void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2576{ 2576{
2577 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2577 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2578 2578
2579 QString foundUid = QString::null; 2579 QString foundUid = QString::null;
2580 if ( ! uid.isEmpty() ) { 2580 if ( ! uid.isEmpty() ) {
2581 Addressee adrr = mAddressBook->findByUid( uid ); 2581 Addressee adrr = mAddressBook->findByUid( uid );
2582 if ( !adrr.isEmpty() ) { 2582 if ( !adrr.isEmpty() ) {
2583 foundUid = uid; 2583 foundUid = uid;
2584 } 2584 }
2585 if ( email == "sendbacklist" ) { 2585 if ( email == "sendbacklist" ) {
2586 //qDebug("ssssssssssssssssssssssend "); 2586 //qDebug("ssssssssssssssssssssssend ");
2587 QStringList nameList; 2587 QStringList nameList;
2588 QStringList emailList; 2588 QStringList emailList;
2589 QStringList uidList; 2589 QStringList uidList;
2590 nameList.append(adrr.realName()); 2590 nameList.append(adrr.realName());
2591 emailList = adrr.emails(); 2591 emailList = adrr.emails();
2592 uidList.append( adrr.preferredEmail()); 2592 uidList.append( adrr.preferredEmail());
2593 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 2593 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
2594 return; 2594 return;
2595 } 2595 }
2596 2596
2597 } 2597 }
2598 2598
2599 if ( email == "sendbacklist" ) 2599 if ( email == "sendbacklist" )
2600 return; 2600 return;
2601 if (foundUid.isEmpty()) 2601 if (foundUid.isEmpty())
2602 { 2602 {
2603 //find the uid of the person first 2603 //find the uid of the person first
2604 Addressee::List namelist; 2604 Addressee::List namelist;
2605 Addressee::List emaillist; 2605 Addressee::List emaillist;
2606 2606
2607 if (!name.isEmpty()) 2607 if (!name.isEmpty())
2608 namelist = mAddressBook->findByName( name ); 2608 namelist = mAddressBook->findByName( name );
2609 2609
2610 if (!email.isEmpty()) 2610 if (!email.isEmpty())
2611 emaillist = mAddressBook->findByEmail( email ); 2611 emaillist = mAddressBook->findByEmail( email );
2612 //qDebug("count %d %d ", namelist.count(),emaillist.count() ); 2612 //qDebug("count %d %d ", namelist.count(),emaillist.count() );
2613 //check if we have a match in Namelist and Emaillist 2613 //check if we have a match in Namelist and Emaillist
2614 if ((namelist.count() == 0) && (emaillist.count() > 0)) { 2614 if ((namelist.count() == 0) && (emaillist.count() > 0)) {
2615 foundUid = emaillist[0].uid(); 2615 foundUid = emaillist[0].uid();
2616 } 2616 }
2617 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2617 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2618 foundUid = namelist[0].uid(); 2618 foundUid = namelist[0].uid();
2619 else 2619 else
2620 { 2620 {
2621 for (int i = 0; i < namelist.count(); i++) 2621 for (int i = 0; i < namelist.count(); i++)
2622 { 2622 {
2623 for (int j = 0; j < emaillist.count(); j++) 2623 for (int j = 0; j < emaillist.count(); j++)
2624 { 2624 {
2625 if (namelist[i] == emaillist[j]) 2625 if (namelist[i] == emaillist[j])
2626 { 2626 {
2627 foundUid = namelist[i].uid(); 2627 foundUid = namelist[i].uid();
2628 } 2628 }
2629 } 2629 }
2630 } 2630 }
2631 } 2631 }
2632 } 2632 }
2633 else 2633 else
2634 { 2634 {
2635 foundUid = uid; 2635 foundUid = uid;
2636 } 2636 }
2637 2637
2638 if (!foundUid.isEmpty()) 2638 if (!foundUid.isEmpty())
2639 { 2639 {
2640 2640
2641 // raise Ka/Pi if it is in the background 2641 // raise Ka/Pi if it is in the background
2642#ifndef DESKTOP_VERSION 2642#ifndef DESKTOP_VERSION
2643#ifndef KORG_NODCOP 2643#ifndef KORG_NODCOP
2644 //QCopEnvelope e("QPE/Application/kapi", "raise()"); 2644 //QCopEnvelope e("QPE/Application/kapi", "raise()");
2645#endif 2645#endif
2646#endif 2646#endif
2647 2647
2648 mMainWindow->showMaximized(); 2648 mMainWindow->showMaximized();
2649 mMainWindow-> raise(); 2649 mMainWindow-> raise();
2650 2650
2651 mViewManager->setSelected( "", false); 2651 mViewManager->setSelected( "", false);
2652 mViewManager->refreshView( "" ); 2652 mViewManager->refreshView( "" );
2653 mViewManager->setSelected( foundUid, true ); 2653 mViewManager->setSelected( foundUid, true );
2654 mViewManager->refreshView( foundUid ); 2654 mViewManager->refreshView( foundUid );
2655 2655
2656 if ( !mMultipleViewsAtOnce ) 2656 if ( !mMultipleViewsAtOnce )
2657 { 2657 {
2658 setDetailsVisible( true ); 2658 setDetailsVisible( true );
2659 mActionDetails->setChecked(true); 2659 mActionDetails->setChecked(true);
2660 } 2660 }
2661 } 2661 }
2662} 2662}
2663 2663
2664void KABCore::whatsnew() 2664void KABCore::whatsnew()
2665{ 2665{
2666 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 2666 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
2667} 2667}
2668void KABCore::synchowto() 2668void KABCore::synchowto()
2669{ 2669{
2670 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 2670 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
2671} 2671}
2672void KABCore::kdesynchowto() 2672void KABCore::kdesynchowto()
2673{ 2673{
2674 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 2674 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
2675} 2675}
2676void KABCore::multisynchowto() 2676void KABCore::multisynchowto()
2677{ 2677{
2678 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 2678 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
2679} 2679}
2680void KABCore::faq() 2680void KABCore::faq()
2681{ 2681{
2682 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" ); 2682 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2683} 2683}
2684 2684
2685#include <libkcal/syncdefines.h> 2685#include <libkcal/syncdefines.h>
2686 2686
2687KABC::Addressee KABCore::getLastSyncAddressee() 2687KABC::Addressee KABCore::getLastSyncAddressee()
2688{ 2688{
2689 Addressee lse; 2689 Addressee lse;
2690 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2690 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2691 2691
2692 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2692 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2693 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2693 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2694 if (lse.isEmpty()) { 2694 if (lse.isEmpty()) {
2695 qDebug("KA: Creating new last-syncAddressee "); 2695 qDebug("KA: Creating new last-syncAddressee ");
2696 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2696 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2697 QString sum = ""; 2697 QString sum = "";
2698 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2698 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2699 sum = "E: "; 2699 sum = "E: ";
2700 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event")); 2700 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2701 lse.setRevision( mLastAddressbookSync ); 2701 lse.setRevision( mLastAddressbookSync );
2702 lse.setCategories( i18n("SyncEvent") ); 2702 lse.setCategories( i18n("SyncEvent") );
2703 mAddressBook->insertAddressee( lse ); 2703 mAddressBook->insertAddressee( lse );
2704 } 2704 }
2705 return lse; 2705 return lse;
2706} 2706}
2707int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2707int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2708{ 2708{
2709 2709
2710 //void setZaurusId(int id); 2710 //void setZaurusId(int id);
2711 // int zaurusId() const; 2711 // int zaurusId() const;
2712 // void setZaurusUid(int id); 2712 // void setZaurusUid(int id);
2713 // int zaurusUid() const; 2713 // int zaurusUid() const;
2714 // void setZaurusStat(int id); 2714 // void setZaurusStat(int id);
2715 // int zaurusStat() const; 2715 // int zaurusStat() const;
2716 // 0 equal 2716 // 0 equal
2717 // 1 take local 2717 // 1 take local
2718 // 2 take remote 2718 // 2 take remote
2719 // 3 cancel 2719 // 3 cancel
2720 QDateTime lastSync = mLastAddressbookSync; 2720 QDateTime lastSync = mLastAddressbookSync;
2721 QDateTime localMod = local->revision(); 2721 QDateTime localMod = local->revision();
2722 QDateTime remoteMod = remote->revision(); 2722 QDateTime remoteMod = remote->revision();
2723 2723
2724 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2724 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2725 2725
2726 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2726 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2727 bool remCh, locCh; 2727 bool remCh, locCh;
2728 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2728 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2729 //if ( remCh ) 2729 //if ( remCh )
2730 // qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2730 // qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2731 locCh = ( localMod > mLastAddressbookSync ); 2731 locCh = ( localMod > mLastAddressbookSync );
2732 //qDebug("cahnged rem %d loc %d",remCh, locCh ); 2732 //qDebug("cahnged rem %d loc %d",remCh, locCh );
2733 if ( !remCh && ! locCh ) { 2733 if ( !remCh && ! locCh ) {
2734 //qDebug("both not changed "); 2734 //qDebug("both not changed ");
2735 lastSync = localMod.addDays(1); 2735 lastSync = localMod.addDays(1);
2736 if ( mode <= SYNC_PREF_ASK ) 2736 if ( mode <= SYNC_PREF_ASK )
2737 return 0; 2737 return 0;
2738 } else { 2738 } else {
2739 if ( locCh ) { 2739 if ( locCh ) {
2740 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1()); 2740 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1());
2741 lastSync = localMod.addDays( -1 ); 2741 lastSync = localMod.addDays( -1 );
2742 if ( !remCh ) 2742 if ( !remCh )
2743 remoteMod =( lastSync.addDays( -1 ) ); 2743 remoteMod =( lastSync.addDays( -1 ) );
2744 } else { 2744 } else {
2745 //qDebug(" not loc changed "); 2745 //qDebug(" not loc changed ");
2746 lastSync = localMod.addDays( 1 ); 2746 lastSync = localMod.addDays( 1 );
2747 if ( remCh ) { 2747 if ( remCh ) {
2748 //qDebug("rem changed "); 2748 //qDebug("rem changed ");
2749 remoteMod =( lastSync.addDays( 1 ) ); 2749 remoteMod =( lastSync.addDays( 1 ) );
2750 } 2750 }
2751 2751
2752 } 2752 }
2753 } 2753 }
2754 full = true; 2754 full = true;
2755 if ( mode < SYNC_PREF_ASK ) 2755 if ( mode < SYNC_PREF_ASK )
2756 mode = SYNC_PREF_ASK; 2756 mode = SYNC_PREF_ASK;
2757 } else { 2757 } else {
2758 if ( localMod == remoteMod ) 2758 if ( localMod == remoteMod )
2759 return 0; 2759 return 0;
2760 2760
2761 } 2761 }
2762 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec()); 2762 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec());
2763 //qDebug("lastsync %s ", lastSync.toString().latin1() ); 2763 //qDebug("lastsync %s ", lastSync.toString().latin1() );
2764 //full = true; //debug only 2764 //full = true; //debug only
2765 if ( full ) { 2765 if ( full ) {
2766 bool equ = ( (*local) == (*remote) ); 2766 bool equ = ( (*local) == (*remote) );
2767 if ( equ ) { 2767 if ( equ ) {
2768 //qDebug("equal "); 2768 //qDebug("equal ");
2769 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2769 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2770 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 2770 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2771 } 2771 }
2772 if ( mode < SYNC_PREF_FORCE_LOCAL ) 2772 if ( mode < SYNC_PREF_FORCE_LOCAL )
2773 return 0; 2773 return 0;
2774 2774
2775 }//else //debug only 2775 }//else //debug only
2776 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 2776 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2777 } 2777 }
2778 int result; 2778 int result;
2779 bool localIsNew; 2779 bool localIsNew;
2780 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); 2780 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
2781 2781
2782 if ( full && mode < SYNC_PREF_NEWEST ) 2782 if ( full && mode < SYNC_PREF_NEWEST )
2783 mode = SYNC_PREF_ASK; 2783 mode = SYNC_PREF_ASK;
2784 2784
2785 switch( mode ) { 2785 switch( mode ) {
2786 case SYNC_PREF_LOCAL: 2786 case SYNC_PREF_LOCAL:
2787 if ( lastSync > remoteMod ) 2787 if ( lastSync > remoteMod )
2788 return 1; 2788 return 1;
2789 if ( lastSync > localMod ) 2789 if ( lastSync > localMod )
2790 return 2; 2790 return 2;
2791 return 1; 2791 return 1;
2792 break; 2792 break;
2793 case SYNC_PREF_REMOTE: 2793 case SYNC_PREF_REMOTE:
2794 if ( lastSync > remoteMod ) 2794 if ( lastSync > remoteMod )
2795 return 1; 2795 return 1;
2796 if ( lastSync > localMod ) 2796 if ( lastSync > localMod )
2797 return 2; 2797 return 2;
2798 return 2; 2798 return 2;
2799 break; 2799 break;
2800 case SYNC_PREF_NEWEST: 2800 case SYNC_PREF_NEWEST:
2801 if ( localMod > remoteMod ) 2801 if ( localMod > remoteMod )
2802 return 1; 2802 return 1;
2803 else 2803 else
2804 return 2; 2804 return 2;
2805 break; 2805 break;
2806 case SYNC_PREF_ASK: 2806 case SYNC_PREF_ASK:
2807 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 2807 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
2808 if ( lastSync > remoteMod ) 2808 if ( lastSync > remoteMod )
2809 return 1; 2809 return 1;
2810 if ( lastSync > localMod ) { 2810 if ( lastSync > localMod ) {
2811 return 2; 2811 return 2;
2812 } 2812 }
2813 localIsNew = localMod >= remoteMod; 2813 localIsNew = localMod >= remoteMod;
2814 //qDebug("conflict! ************************************** "); 2814 //qDebug("conflict! ************************************** ");
2815 { 2815 {
2816 KABC::AddresseeChooser acd ( *local,*remote, localIsNew , this ); 2816 KABC::AddresseeChooser acd ( *local,*remote, localIsNew , this );
2817 result = acd.executeD(localIsNew); 2817 result = acd.executeD(localIsNew);
2818 return result; 2818 return result;
2819 } 2819 }
2820 break; 2820 break;
2821 case SYNC_PREF_FORCE_LOCAL: 2821 case SYNC_PREF_FORCE_LOCAL:
2822 return 1; 2822 return 1;
2823 break; 2823 break;
2824 case SYNC_PREF_FORCE_REMOTE: 2824 case SYNC_PREF_FORCE_REMOTE:
2825 return 2; 2825 return 2;
2826 break; 2826 break;
2827 2827
2828 default: 2828 default:
2829 // SYNC_PREF_TAKE_BOTH not implemented 2829 // SYNC_PREF_TAKE_BOTH not implemented
2830 break; 2830 break;
2831 } 2831 }
2832 return 0; 2832 return 0;
2833} 2833}
2834 2834
2835 2835
2836bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2836bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2837{ 2837{
2838 bool syncOK = true; 2838 bool syncOK = true;
2839 int addedAddressee = 0; 2839 int addedAddressee = 0;
2840 int addedAddresseeR = 0; 2840 int addedAddresseeR = 0;
2841 int deletedAddresseeR = 0; 2841 int deletedAddresseeR = 0;
2842 int deletedAddresseeL = 0; 2842 int deletedAddresseeL = 0;
2843 int changedLocal = 0; 2843 int changedLocal = 0;
2844 int changedRemote = 0; 2844 int changedRemote = 0;
2845 int filteredIN = 0; 2845 int filteredIN = 0;
2846 int filteredOUT = 0; 2846 int filteredOUT = 0;
2847 2847
2848 QString mCurrentSyncName = syncManager->getCurrentSyncName(); 2848 QString mCurrentSyncName = syncManager->getCurrentSyncName();
2849 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2849 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2850 2850
2851 //QPtrList<Addressee> el = local->rawAddressees(); 2851 //QPtrList<Addressee> el = local->rawAddressees();
2852 Addressee addresseeR; 2852 Addressee addresseeR;
2853 QString uid; 2853 QString uid;
2854 int take; 2854 int take;
2855 Addressee addresseeL; 2855 Addressee addresseeL;
2856 Addressee addresseeRSync; 2856 Addressee addresseeRSync;
2857 Addressee addresseeLSync; 2857 Addressee addresseeLSync;
2858 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2858 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2859 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2859 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2860 bool fullDateRange = false; 2860 bool fullDateRange = false;
2861 local->resetTempSyncStat(); 2861 local->resetTempSyncStat();
2862 mLastAddressbookSync = QDateTime::currentDateTime(); 2862 mLastAddressbookSync = QDateTime::currentDateTime();
2863 if ( syncManager->syncWithDesktop() ) { 2863 if ( syncManager->syncWithDesktop() ) {
2864 // remote->removeSyncInfo( QString());//remove all info 2864 // remote->removeSyncInfo( QString());//remove all info
2865 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 2865 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
2866 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent; 2866 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent;
2867 qDebug("KA: using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() ); 2867 qDebug("KA: using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() );
2868 } else { 2868 } else {
2869 qDebug("KA: KSyncManager::mRequestedSyncEvent has invalid datatime "); 2869 qDebug("KA: KSyncManager::mRequestedSyncEvent has invalid datatime ");
2870 } 2870 }
2871 } 2871 }
2872 QDateTime modifiedCalendar = mLastAddressbookSync; 2872 QDateTime modifiedCalendar = mLastAddressbookSync;
2873 addresseeLSync = getLastSyncAddressee(); 2873 addresseeLSync = getLastSyncAddressee();
2874 qDebug("KA: Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2874 qDebug("KA: Last Sync %s ", addresseeLSync.revision().toString().latin1());
2875 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2875 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2876 if ( !addresseeR.isEmpty() ) { 2876 if ( !addresseeR.isEmpty() ) {
2877 addresseeRSync = addresseeR; 2877 addresseeRSync = addresseeR;
2878 remote->removeAddressee(addresseeR ); 2878 remote->removeAddressee(addresseeR );
2879 2879
2880 } else { 2880 } else {
2881 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2881 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2882 addresseeRSync = addresseeLSync ; 2882 addresseeRSync = addresseeLSync ;
2883 } else { 2883 } else {
2884 //qDebug("FULLDATE 1"); 2884 //qDebug("FULLDATE 1");
2885 fullDateRange = true; 2885 fullDateRange = true;
2886 Addressee newAdd; 2886 Addressee newAdd;
2887 addresseeRSync = newAdd; 2887 addresseeRSync = newAdd;
2888 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2888 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2889 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2889 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2890 addresseeRSync.setRevision( mLastAddressbookSync ); 2890 addresseeRSync.setRevision( mLastAddressbookSync );
2891 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2891 addresseeRSync.setCategories( i18n("SyncAddressee") );
2892 } 2892 }
2893 } 2893 }
2894 if ( addresseeLSync.revision() == mLastAddressbookSync ) { 2894 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2895 // qDebug("FULLDATE 2"); 2895 // qDebug("FULLDATE 2");
2896 fullDateRange = true; 2896 fullDateRange = true;
2897 } 2897 }
2898 if ( ! fullDateRange ) { 2898 if ( ! fullDateRange ) {
2899 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2899 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index 70f00c6..6559119 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -1,499 +1,502 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <klocale.h> 20#include <klocale.h>
21#include <kdebug.h> 21#include <kdebug.h>
22#include <qapp.h> 22#include <qapp.h>
23 23
24#include <kiconloader.h> 24#include <kiconloader.h>
25#include "kotodoviewitem.h" 25#include "kotodoviewitem.h"
26#include "kotodoview.h" 26#include "kotodoview.h"
27#include "koprefs.h" 27#include "koprefs.h"
28 28
29KOTodoViewItem::KOTodoViewItem( QListView *parent, Todo *todo, KOTodoView *kotodo) 29KOTodoViewItem::KOTodoViewItem( QListView *parent, Todo *todo, KOTodoView *kotodo)
30 : QCheckListItem( parent , "", CheckBox ), mTodo( todo ), mTodoView( kotodo ) 30 : QCheckListItem( parent , "", CheckBox ), mTodo( todo ), mTodoView( kotodo )
31{ 31{
32 construct(); 32 construct();
33} 33}
34 34
35KOTodoViewItem::KOTodoViewItem( KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo ) 35KOTodoViewItem::KOTodoViewItem( KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo )
36 : QCheckListItem( parent, "", CheckBox ), mTodo( todo ), mTodoView( kotodo ) 36 : QCheckListItem( parent, "", CheckBox ), mTodo( todo ), mTodoView( kotodo )
37{ 37{
38 construct(); 38 construct();
39} 39}
40 40
41QString KOTodoViewItem::key(int column,bool) const 41QString KOTodoViewItem::key(int column,bool) const
42{ 42{
43 QMap<int,QString>::ConstIterator it = mKeyMap.find(column); 43 QMap<int,QString>::ConstIterator it = mKeyMap.find(column);
44 if (it == mKeyMap.end()) { 44 if (it == mKeyMap.end()) {
45 return text(column).lower(); 45 return text(column).lower();
46 } else { 46 } else {
47 return *it; 47 return *it;
48 } 48 }
49} 49}
50 50
51void KOTodoViewItem:: setup() 51void KOTodoViewItem:: setup()
52{ 52{
53 53
54 int h = 20; 54 int h = 20;
55 if ( listView () ) { 55 if ( listView () ) {
56 QFontMetrics fm ( listView ()->font () ); 56 QFontMetrics fm ( listView ()->font () );
57 h = fm.height(); 57 h = fm.height();
58 } 58 }
59 setHeight( h ); 59 setHeight( h );
60 60
61} 61}
62void KOTodoViewItem::setSortKey(int column,const QString &key) 62void KOTodoViewItem::setSortKey(int column,const QString &key)
63{ 63{
64 mKeyMap.insert(column,key); 64 mKeyMap.insert(column,key);
65} 65}
66 66
67#if QT_VERSION >= 0x030000 67#if QT_VERSION >= 0x030000
68void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w, 68void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w,
69 int y,int h) 69 int y,int h)
70{ 70{
71 QListViewItem::paintBranches(p,cg,w,y,h); 71 QListViewItem::paintBranches(p,cg,w,y,h);
72} 72}
73#else 73#else
74#endif 74#endif
75 75
76void KOTodoViewItem::construct() 76void KOTodoViewItem::construct()
77{ 77{
78 // qDebug("KOTodoViewItem::construct() "); 78 // qDebug("KOTodoViewItem::construct() ");
79 m_init = true; 79 m_init = true;
80 QString keyd = "=="; 80 QString keyd = "==";
81 QString keyt = "=="; 81 QString keyt = "==";
82 QString skeyd = "=="; 82 QString skeyd = "==";
83 QString skeyt = "=="; 83 QString skeyt = "==";
84 84
85 setOn(mTodo->isCompleted()); 85 setOn(mTodo->isCompleted());
86 setText(0,mTodo->summary()); 86 setText(0,mTodo->summary());
87 setText(1,QString::number(mTodo->priority())); 87 setText(1,QString::number(mTodo->priority()));
88 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 88 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
89 if (mTodo->percentComplete()<100) { 89 if (mTodo->percentComplete()<100) {
90 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 90 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
91 else setSortKey(2,QString::number(mTodo->percentComplete())); 91 else setSortKey(2,QString::number(mTodo->percentComplete()));
92 } 92 }
93 else { 93 else {
94 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 94 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
95 else setSortKey(2,QString::number(99)); 95 else setSortKey(2,QString::number(99));
96 } 96 }
97 if (mTodo->hasDueDate()) { 97 if (mTodo->hasDueDate()) {
98 setText(3, mTodo->dtDueDateStr()); 98 setText(3, mTodo->dtDueDateStr());
99 QDate d = mTodo->dtDue().date(); 99 QDate d = mTodo->dtDue().date();
100 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 100 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
101 // setSortKey(3,keyd); 101 // setSortKey(3,keyd);
102 if (mTodo->doesFloat()) { 102 if (mTodo->doesFloat()) {
103 setText(4,""); 103 setText(4,"");
104 } 104 }
105 else { 105 else {
106 setText(4,mTodo->dtDueTimeStr()); 106 setText(4,mTodo->dtDueTimeStr());
107 QTime t = mTodo->dtDue().time(); 107 QTime t = mTodo->dtDue().time();
108 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 108 keyt.sprintf("%02d%02d",t.hour(),t.minute());
109 //setSortKey(4,keyt); 109 //setSortKey(4,keyt);
110 } 110 }
111 } else { 111 } else {
112 setText(3,""); 112 setText(3,"");
113 setText(4,""); 113 setText(4,"");
114 } 114 }
115 setSortKey(3,keyd); 115 setSortKey(3,keyd);
116 setSortKey(4,keyt); 116 setSortKey(4,keyt);
117 117
118 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt); 118 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt);
119 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 119 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
120 120
121 121
122 122
123 if (mTodo->hasStartDate()) { 123 if (mTodo->hasStartDate()) {
124 setText(5, mTodo->dtStartDateStr()); 124 setText(5, mTodo->dtStartDateStr());
125 QDate d = mTodo->dtStart().date(); 125 QDate d = mTodo->dtStart().date();
126 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 126 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
127 127
128 if (mTodo->doesFloat()) { 128 if (mTodo->doesFloat()) {
129 setText(6,""); 129 setText(6,"");
130 } 130 }
131 else { 131 else {
132 setText(6,mTodo->dtStartTimeStr()); 132 setText(6,mTodo->dtStartTimeStr());
133 QTime t = mTodo->dtStart().time(); 133 QTime t = mTodo->dtStart().time();
134 skeyt.sprintf("%02d%02d",t.hour(),t.minute()); 134 skeyt.sprintf("%02d%02d",t.hour(),t.minute());
135 135
136 } 136 }
137 } else { 137 } else {
138 setText(5,""); 138 setText(5,"");
139 setText(6,""); 139 setText(6,"");
140 } 140 }
141 setSortKey(5,skeyd); 141 setSortKey(5,skeyd);
142 setSortKey(6,skeyt); 142 setSortKey(6,skeyt);
143 143
144 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No")); 144 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No"));
145 setText(8,mTodo->categoriesStr()); 145 setText(8,mTodo->categoriesStr());
146 146
147#if 0 147#if 0
148 // Find sort id in description. It's the text behind the last '#' character 148 // Find sort id in description. It's the text behind the last '#' character
149 // found in the description. White spaces are removed from beginning and end 149 // found in the description. White spaces are removed from beginning and end
150 // of sort id. 150 // of sort id.
151 int pos = mTodo->description().findRev('#'); 151 int pos = mTodo->description().findRev('#');
152 if (pos < 0) { 152 if (pos < 0) {
153 setText(6,""); 153 setText(6,"");
154 } else { 154 } else {
155 QString str = mTodo->description().mid(pos+1); 155 QString str = mTodo->description().mid(pos+1);
156 str.stripWhiteSpace(); 156 str.stripWhiteSpace();
157 setText(6,str); 157 setText(6,str);
158 } 158 }
159#endif 159#endif
160 160
161 m_known = false; 161 m_known = false;
162 m_init = false; 162 m_init = false;
163 163
164 setMyPixmap(); 164 setMyPixmap();
165 165
166} 166}
167void KOTodoViewItem::setMyPixmap() 167void KOTodoViewItem::setMyPixmap()
168{ 168{
169 int size = 5; 169 int size = 5;
170 QPixmap pixi = QPixmap( 1, 1 ); 170 QPixmap pixi = QPixmap( 1, 1 );
171 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) { 171 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) {
172// pixi = SmallIcon("redcross16"); 172// pixi = SmallIcon("redcross16");
173// } else { 173// } else {
174 QPainter p; 174 QPainter p;
175 175
176 int pixSize = 0; 176 int pixSize = 0;
177 QPixmap pPix = QPixmap( size, size ); 177 QPixmap pPix = QPixmap( size, size );
178 if ( mTodo->description().length() > 0 ) { 178 if ( mTodo->description().length() > 0 ) {
179 pixi.resize(size, pixSize+size); 179 pixi.resize(size, pixSize+size);
180 pPix.fill( Qt::darkGreen ); 180 pPix.fill( Qt::darkGreen );
181 p.begin( &pixi ); 181 p.begin( &pixi );
182 p. drawPixmap ( 0, pixSize, pPix); 182 p. drawPixmap ( 0, pixSize, pPix);
183 p.end(); 183 p.end();
184 pixSize += size; 184 pixSize += size;
185 } 185 }
186 if ( mTodo->isAlarmEnabled() ) { 186 if ( mTodo->isAlarmEnabled() ) {
187 pixi.resize(size, pixSize+size); 187 pixi.resize(size, pixSize+size);
188 pPix.fill( Qt::red ); 188 pPix.fill( Qt::red );
189 p.begin( &pixi ); 189 p.begin( &pixi );
190 p. drawPixmap ( 0, pixSize, pPix); 190 p. drawPixmap ( 0, pixSize, pPix);
191 p.end(); 191 p.end();
192 pixSize += size; 192 pixSize += size;
193 } 193 }
194 if ( mTodo->doesRecur() ) { 194 if ( mTodo->doesRecur() ) {
195 pixi.resize(size, pixSize+size); 195 pixi.resize(size, pixSize+size);
196 pPix.fill( Qt::blue ); 196 pPix.fill( Qt::blue );
197 p.begin( &pixi ); 197 p.begin( &pixi );
198 p. drawPixmap ( 0, pixSize, pPix); 198 p. drawPixmap ( 0, pixSize, pPix);
199 p.end(); 199 p.end();
200 pixSize += size; 200 pixSize += size;
201 } 201 }
202 // } 202 // }
203 if ( pixi.width() > 1 ) { 203 if ( pixi.width() > 1 ) {
204 setPixmap ( 0,pixi ) ; 204 setPixmap ( 0,pixi ) ;
205 } else { 205 } else {
206 setPixmap ( 0,QPixmap() ) ; 206 setPixmap ( 0,QPixmap() ) ;
207 } 207 }
208} 208}
209void KOTodoViewItem::stateChange(bool state) 209void KOTodoViewItem::stateChange(bool state)
210{ 210{
211 // qDebug("KOTodoViewItem::stateChange %d ", state); 211 // qDebug("KOTodoViewItem::stateChange %d ", state);
212 // do not change setting on startup 212 // do not change setting on startup
213 if ( m_init ) return; 213 if ( m_init ) return;
214 if (isOn()!=state) { 214 if (isOn()!=state) {
215 setOn(state); 215 setOn(state);
216 //qDebug("SETON "); 216 //qDebug("SETON ");
217 return; 217 return;
218 } 218 }
219 if ( mTodo->isCompleted() == state ) { 219 if ( mTodo->isCompleted() == state ) {
220 //qDebug("STATECHANGE:nothing to do "); 220 //qDebug("STATECHANGE:nothing to do ");
221 return; 221 return;
222 } 222 }
223 QString keyd = "=="; 223 QString keyd = "==";
224 QString keyt = "=="; 224 QString keyt = "==";
225 //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1()); 225 //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1());
226 if ( mTodo->doesRecur() ){ 226 if ( mTodo->doesRecur() ){
227 QDateTime start = mTodo->dtStart(); 227 QDateTime start = mTodo->dtStart();
228 mTodo->setCompleted(state); 228 mTodo->setCompleted(state);
229 if ( start != mTodo->dtStart() ) { 229 if ( start != mTodo->dtStart() ) {
230 if ( state && !mTodo->isCompleted() ) { 230 if ( state && !mTodo->isCompleted() ) {
231 setOn( false ); 231 setOn( false );
232 state = false; 232 state = false;
233 } 233 }
234 } 234 }
235 } else 235 } else
236 mTodo->setCompleted(state); 236 mTodo->setCompleted(state);
237 237
238 if (state) mTodo->setCompleted(QDateTime::currentDateTime()); 238 if (state) mTodo->setCompleted(QDateTime::currentDateTime());
239 239
240 if (mTodo->hasDueDate()) { 240 if (mTodo->hasDueDate()) {
241 setText(3, mTodo->dtDueDateStr()); 241 setText(3, mTodo->dtDueDateStr());
242 QDate d = mTodo->dtDue().date(); 242 QDate d = mTodo->dtDue().date();
243 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 243 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
244 setSortKey(3,keyd); 244 setSortKey(3,keyd);
245 if (mTodo->doesFloat()) { 245 if (mTodo->doesFloat()) {
246 setText(4,""); 246 setText(4,"");
247 } 247 }
248 else { 248 else {
249 setText(4,mTodo->dtDueTimeStr()); 249 setText(4,mTodo->dtDueTimeStr());
250 QTime t = mTodo->dtDue().time(); 250 QTime t = mTodo->dtDue().time();
251 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 251 keyt.sprintf("%02d%02d",t.hour(),t.minute());
252 setSortKey(4,keyt); 252 setSortKey(4,keyt);
253 } 253 }
254 } 254 }
255 if (mTodo->hasStartDate()) { 255 if (mTodo->hasStartDate()) {
256 QString skeyt = "=="; 256 QString skeyt = "==";
257 QString skeyd = "=="; 257 QString skeyd = "==";
258 setText(5, mTodo->dtStartDateStr()); 258 setText(5, mTodo->dtStartDateStr());
259 QDate d = mTodo->dtStart().date(); 259 QDate d = mTodo->dtStart().date();
260 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 260 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
261 261
262 if (mTodo->doesFloat()) { 262 if (mTodo->doesFloat()) {
263 setText(6,""); 263 setText(6,"");
264 } 264 }
265 else { 265 else {
266 setText(6,mTodo->dtStartTimeStr()); 266 setText(6,mTodo->dtStartTimeStr());
267 QTime t = mTodo->dtStart().time(); 267 QTime t = mTodo->dtStart().time();
268 skeyt.sprintf("%02d%02d",t.hour(),t.minute()); 268 skeyt.sprintf("%02d%02d",t.hour(),t.minute());
269 269
270 } 270 }
271 setSortKey(5,skeyd); 271 setSortKey(5,skeyd);
272 setSortKey(6,skeyt); 272 setSortKey(6,skeyt);
273 } 273 }
274 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt); 274 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt);
275 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 275 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
276 276
277 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 277 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
278 if (mTodo->percentComplete()<100) { 278 if (mTodo->percentComplete()<100) {
279 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 279 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
280 else setSortKey(2,QString::number(mTodo->percentComplete())); 280 else setSortKey(2,QString::number(mTodo->percentComplete()));
281 } 281 }
282 else { 282 else {
283 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 283 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
284 else setSortKey(2,QString::number(99)); 284 else setSortKey(2,QString::number(99));
285 } 285 }
286 if ( state ) { 286 if ( state ) {
287 QListViewItem * myChild = firstChild(); 287 QListViewItem * myChild = firstChild();
288 KOTodoViewItem *item; 288 KOTodoViewItem *item;
289 while( myChild ) { 289 while( myChild ) {
290 //qDebug("stateCH "); 290 //qDebug("stateCH ");
291 item = static_cast<KOTodoViewItem*>(myChild); 291 item = static_cast<KOTodoViewItem*>(myChild);
292 item->stateChange(state); 292 item->stateChange(state);
293 myChild = myChild->nextSibling(); 293 myChild = myChild->nextSibling();
294 } 294 }
295 } else { 295 } else {
296 QListViewItem * myChild = parent(); 296 QListViewItem * myChild = parent();
297 if ( myChild ) 297 if ( myChild )
298 (static_cast<KOTodoViewItem*>(myChild))->stateChange(state); 298 (static_cast<KOTodoViewItem*>(myChild))->stateChange(state);
299 } 299 }
300 mTodoView->modified(true); 300 mTodoView->modified(true);
301 setMyPixmap(); 301 setMyPixmap();
302 mTodoView->setTodoModified( mTodo ); 302 mTodoView->setTodoModified( mTodo );
303} 303}
304 304
305bool KOTodoViewItem::isAlternate() 305bool KOTodoViewItem::isAlternate()
306{ 306{
307 307
308 KOTodoListView *lv = static_cast<KOTodoListView *>(listView()); 308 KOTodoListView *lv = static_cast<KOTodoListView *>(listView());
309 if (lv && lv->alternateBackground().isValid()) 309 if (lv && lv->alternateBackground().isValid())
310 { 310 {
311 KOTodoViewItem *above = 0; 311 KOTodoViewItem *above = 0;
312 above = static_cast<KOTodoViewItem *>(itemAbove()); 312 above = static_cast<KOTodoViewItem *>(itemAbove());
313 m_known = above ? above->m_known : true; 313 m_known = above ? above->m_known : true;
314 if (m_known) 314 if (m_known)
315 { 315 {
316 m_odd = above ? !above->m_odd : false; 316 m_odd = above ? !above->m_odd : false;
317 } 317 }
318 else 318 else
319 { 319 {
320 KOTodoViewItem *item; 320 KOTodoViewItem *item;
321 bool previous = true; 321 bool previous = true;
322 if (QListViewItem::parent()) 322 if (QListViewItem::parent())
323 { 323 {
324 item = static_cast<KOTodoViewItem *>(QListViewItem::parent()); 324 item = static_cast<KOTodoViewItem *>(QListViewItem::parent());
325 if (item) 325 if (item)
326 previous = item->m_odd; 326 previous = item->m_odd;
327 item = static_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild()); 327 item = static_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild());
328 } 328 }
329 else 329 else
330 { 330 {
331 item = static_cast<KOTodoViewItem *>(lv->firstChild()); 331 item = static_cast<KOTodoViewItem *>(lv->firstChild());
332 } 332 }
333 333
334 while(item) 334 while(item)
335 { 335 {
336 item->m_odd = previous = !previous; 336 item->m_odd = previous = !previous;
337 item->m_known = true; 337 item->m_known = true;
338 item = static_cast<KOTodoViewItem *>(item->nextSibling()); 338 item = static_cast<KOTodoViewItem *>(item->nextSibling());
339 } 339 }
340 } 340 }
341 return m_odd; 341 return m_odd;
342 } 342 }
343 return false; 343 return false;
344} 344}
345 345
346void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) 346void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
347{ 347{
348 QColorGroup _cg = cg; 348 QColorGroup _cg = cg;
349 QColorGroup::ColorRole role; 349 QColorGroup::ColorRole role;
350 if ( KOPrefs::instance()->mTodoViewUsesForegroundColor ) 350 if ( KOPrefs::instance()->mTodoViewUsesForegroundColor )
351 role = QColorGroup::Text; 351 role = QColorGroup::Text;
352 else 352 else
353 role = QColorGroup::Base; 353 role = QColorGroup::Base;
354 //#ifndef KORG_NOLVALTERNATION 354 //#ifndef KORG_NOLVALTERNATION
355 if (isAlternate()) 355 if (isAlternate())
356 _cg.setColor(QColorGroup::Base, static_cast< KOTodoListView* >(listView())->alternateBackground()); 356 _cg.setColor(QColorGroup::Base, static_cast< KOTodoListView* >(listView())->alternateBackground());
357 bool setColor = KOPrefs::instance()->mTodoViewUsesCatColors; 357 bool setColor = KOPrefs::instance()->mTodoViewUsesCatColors;
358 QColor colorToSet; 358 QColor colorToSet;
359 if ( setColor ) { 359 if ( setColor ) {
360 QStringList categories = mTodo->categories(); 360 QStringList categories = mTodo->categories();
361 QString cat = categories.first(); 361 QString cat = categories.first();
362 if ( !cat.isEmpty()) { 362 if ( !cat.isEmpty()) {
363 colorToSet = *(KOPrefs::instance()->categoryColor(cat) ); 363 colorToSet = *(KOPrefs::instance()->categoryColor(cat) );
364 } else 364 } else
365 setColor = false; 365 setColor = false;
366 } 366 }
367 367 bool openMode = !isOpen();
368 int odue = mTodo->hasDueSubTodo( !isOpen()); 368 // maybe we are in flat-display-mode
369 if ( !firstChild() )
370 openMode = false;
371 int odue = mTodo->hasDueSubTodo( openMode );
369 if (odue == 2) { 372 if (odue == 2) {
370 colorToSet = KOPrefs::instance()->mTodoOverdueColor; 373 colorToSet = KOPrefs::instance()->mTodoOverdueColor;
371 setColor = true; 374 setColor = true;
372 } else if ( odue == 1 ) { 375 } else if ( odue == 1 ) {
373 colorToSet = KOPrefs::instance()->mTodoDueTodayColor; 376 colorToSet = KOPrefs::instance()->mTodoDueTodayColor;
374 setColor = true; 377 setColor = true;
375 } 378 }
376 379
377 380
378 if ( setColor ) { 381 if ( setColor ) {
379 _cg.setColor(role,colorToSet ); 382 _cg.setColor(role,colorToSet );
380 if ( role == QColorGroup::Base) { 383 if ( role == QColorGroup::Base) {
381 int rgb = colorToSet.red(); 384 int rgb = colorToSet.red();
382 rgb += colorToSet.blue()/2; 385 rgb += colorToSet.blue()/2;
383 rgb += colorToSet.green(); 386 rgb += colorToSet.green();
384 if ( rgb < 200 ) 387 if ( rgb < 200 )
385 _cg.setColor(QColorGroup::Text,Qt::white ); 388 _cg.setColor(QColorGroup::Text,Qt::white );
386 } 389 }
387 } 390 }
388 //#endif 391 //#endif
389 if ( column > 0 ){ 392 if ( column > 0 ){
390 if ( column == 2 && !KOPrefs::instance()->mTodoViewShowsPercentage ) { 393 if ( column == 2 && !KOPrefs::instance()->mTodoViewShowsPercentage ) {
391 p->save(); 394 p->save();
392 int progress = (int)(( (width-6)*mTodo->percentComplete())/100.0 + 0.5); 395 int progress = (int)(( (width-6)*mTodo->percentComplete())/100.0 + 0.5);
393 396
394 p->fillRect( 0, 0, width, height(), _cg.base() ); // background 397 p->fillRect( 0, 0, width, height(), _cg.base() ); // background
395 // p->setPen(Qt::black ); //border 398 // p->setPen(Qt::black ); //border
396 // p->setBrush( KOPrefs::instance()->mHighlightColorKGlobalSettings::baseColor() ); //filling 399 // p->setBrush( KOPrefs::instance()->mHighlightColorKGlobalSettings::baseColor() ); //filling
397 QColor fc = KOPrefs::instance()->mHighlightColor; 400 QColor fc = KOPrefs::instance()->mHighlightColor;
398 if ( mTodo->percentComplete() == 100 ) 401 if ( mTodo->percentComplete() == 100 )
399 fc = darkGreen; 402 fc = darkGreen;
400 p->drawRect( 2, 2, width-4, height()-4); 403 p->drawRect( 2, 2, width-4, height()-4);
401 p->fillRect( 3, 3, progress, height()-6, 404 p->fillRect( 3, 3, progress, height()-6,
402 fc ); 405 fc );
403 p->restore(); 406 p->restore();
404 } else { 407 } else {
405 QCheckListItem::paintCell(p, _cg, column, width, alignment); 408 QCheckListItem::paintCell(p, _cg, column, width, alignment);
406 } 409 }
407 return; 410 return;
408 } 411 }
409 412
410 int align = alignment; 413 int align = alignment;
411 414
412 if ( !p ) 415 if ( !p )
413 return; 416 return;
414 417
415 p->fillRect( 0, 0, width, height(), _cg.brush( QColorGroup::Base ) ); 418 p->fillRect( 0, 0, width, height(), _cg.brush( QColorGroup::Base ) );
416 419
417 QListView *lv = listView(); 420 QListView *lv = listView();
418 if ( !lv ) 421 if ( !lv )
419 return; 422 return;
420 int marg = 2;//lv->itemMargin(); 423 int marg = 2;//lv->itemMargin();
421 int r = 0; 424 int r = 0;
422 QCheckListItem::Type myType = QCheckListItem::CheckBox; 425 QCheckListItem::Type myType = QCheckListItem::CheckBox;
423 int BoxSize = 20; 426 int BoxSize = 20;
424 int boxOffset = 2; 427 int boxOffset = 2;
425 int xOffset = 2; 428 int xOffset = 2;
426 if (qApp->desktop()->width() < 300 ) { 429 if (qApp->desktop()->width() < 300 ) {
427 BoxSize = 14; 430 BoxSize = 14;
428 boxOffset = -1; 431 boxOffset = -1;
429 xOffset = 1; 432 xOffset = 1;
430 // marg = 0; 433 // marg = 0;
431 } 434 }
432 if ( height() < BoxSize ) { 435 if ( height() < BoxSize ) {
433 boxOffset = boxOffset - ((BoxSize - height())/2) ; 436 boxOffset = boxOffset - ((BoxSize - height())/2) ;
434 // qDebug("boxOffset %d height %d", boxOffset, height() ); 437 // qDebug("boxOffset %d height %d", boxOffset, height() );
435 BoxSize = height(); 438 BoxSize = height();
436 439
437 } 440 }
438 //bool winStyle = lv->style() == WindowsStyle; 441 //bool winStyle = lv->style() == WindowsStyle;
439 442
440 int lineStart = 5; 443 int lineStart = 5;
441 if ( myType == Controller ) { 444 if ( myType == Controller ) {
442 if ( !pixmap( 0 ) ) 445 if ( !pixmap( 0 ) )
443 r += BoxSize + 4; 446 r += BoxSize + 4;
444 } else { 447 } else {
445 ASSERT( lv ); //### 448 ASSERT( lv ); //###
446 //QFontMetrics fm( lv->font() ); 449 //QFontMetrics fm( lv->font() );
447 //int d = fm.height(); 450 //int d = fm.height();
448 int x = 0; 451 int x = 0;
449 int y = (height() - BoxSize) / 2; 452 int y = (height() - BoxSize) / 2;
450 //p->setPen( QPen( _cg.text(), winStyle ? 2 : 1 ) ); 453 //p->setPen( QPen( _cg.text(), winStyle ? 2 : 1 ) );
451 if ( myType == CheckBox ) { 454 if ( myType == CheckBox ) {
452 if ( isEnabled() ) 455 if ( isEnabled() )
453 p->setPen( QPen( _cg.text(), 1 ) ); 456 p->setPen( QPen( _cg.text(), 1 ) );
454 else 457 else
455 p->setPen( QPen( listView()->palette().color( QPalette::Disabled, QColorGroup::Text ), 1 ) ); 458 p->setPen( QPen( listView()->palette().color( QPalette::Disabled, QColorGroup::Text ), 1 ) );
456 p->drawRect( x+marg, y+2, BoxSize-4, BoxSize-4 ); 459 p->drawRect( x+marg, y+2, BoxSize-4, BoxSize-4 );
457 lineStart = x+marg; 460 lineStart = x+marg;
458 ///////////////////// 461 /////////////////////
459 x++; 462 x++;
460 y++; 463 y++;
461 if ( isOn() ) { 464 if ( isOn() ) {
462 QPointArray a( 7*2 ); 465 QPointArray a( 7*2 );
463 int i, xx, yy; 466 int i, xx, yy;
464 xx = x+xOffset+marg+(boxOffset/2); 467 xx = x+xOffset+marg+(boxOffset/2);
465 yy = y+5+boxOffset; 468 yy = y+5+boxOffset;
466 for ( i=0; i<3; i++ ) { 469 for ( i=0; i<3; i++ ) {
467 a.setPoint( 2*i, xx, yy ); 470 a.setPoint( 2*i, xx, yy );
468 a.setPoint( 2*i+1, xx, yy+2 ); 471 a.setPoint( 2*i+1, xx, yy+2 );
469 // qDebug(" "); 472 // qDebug(" ");
470 xx++; yy++; 473 xx++; yy++;
471 } 474 }
472 yy -= 2; 475 yy -= 2;
473 for ( i=3; i<7; i++ ) { 476 for ( i=3; i<7; i++ ) {
474 a.setPoint( 2*i, xx, yy ); 477 a.setPoint( 2*i, xx, yy );
475 a.setPoint( 2*i+1, xx, yy+2 ); 478 a.setPoint( 2*i+1, xx, yy+2 );
476 xx++; yy--; 479 xx++; yy--;
477 } 480 }
478 p->setPen( darkGreen ); 481 p->setPen( darkGreen );
479 p->drawLineSegments( a ); 482 p->drawLineSegments( a );
480 } 483 }
481 //////////////////////// 484 ////////////////////////
482 } 485 }
483 r += BoxSize + 4; 486 r += BoxSize + 4;
484 } 487 }
485 488
486 p->translate( r, 0 ); 489 p->translate( r, 0 );
487 p->setPen( QPen( _cg.text() ) ); 490 p->setPen( QPen( _cg.text() ) );
488 QListViewItem::paintCell( p, _cg, column, width - r, align ); 491 QListViewItem::paintCell( p, _cg, column, width - r, align );
489 if ( mTodo->cancelled () ) { 492 if ( mTodo->cancelled () ) {
490 p->setPen( black ); 493 p->setPen( black );
491 QRect br = p->boundingRect( 1,1,1,1,0,mTodo->summary() ); 494 QRect br = p->boundingRect( 1,1,1,1,0,mTodo->summary() );
492 int wid = br.width() +lineStart; 495 int wid = br.width() +lineStart;
493 if ( wid > width-3 ) 496 if ( wid > width-3 )
494 wid = width-3; 497 wid = width-3;
495 p->drawLine( lineStart, height()/2+1, wid, height()/2+1 ); 498 p->drawLine( lineStart, height()/2+1, wid, height()/2+1 );
496 499
497 } 500 }
498 501
499} 502}
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 006a8dd..019f41f 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,1335 +1,1338 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h> 16#include <qspinbox.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qmap.h> 18#include <qmap.h>
19#include <qwmatrix.h> 19#include <qwmatrix.h>
20#include <qtextbrowser.h> 20#include <qtextbrowser.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#ifndef DESKTOP_VERSION 22#ifndef DESKTOP_VERSION
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/qpemenubar.h> 24#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qtopia/alarmserver.h> 28#include <qtopia/alarmserver.h>
29#include <qtopia/qcopenvelope_qws.h> 29#include <qtopia/qcopenvelope_qws.h>
30#include <unistd.h> // for sleep 30#include <unistd.h> // for sleep
31#else 31#else
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qapplication.h> 34#include <qapplication.h>
35//#include <resource.h> 35//#include <resource.h>
36 36
37#endif 37#endif
38#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
39#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h> 40#include <libkcal/phoneformat.h>
41#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
42#include <libkdepim/phoneaccess.h> 42#include <libkdepim/phoneaccess.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44#include <libkdepim/kpimglobalprefs.h> 44#include <libkdepim/kpimglobalprefs.h>
45 45
46#include "calendarview.h" 46#include "calendarview.h"
47#include "koviewmanager.h" 47#include "koviewmanager.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49#include "koagendaview.h" 49#include "koagendaview.h"
50#include "koagenda.h" 50#include "koagenda.h"
51#include "kodialogmanager.h" 51#include "kodialogmanager.h"
52#include "kdialogbase.h" 52#include "kdialogbase.h"
53#include "kapplication.h" 53#include "kapplication.h"
54#include "kofilterview.h" 54#include "kofilterview.h"
55#include "kstandarddirs.h" 55#include "kstandarddirs.h"
56#include "koprefs.h" 56#include "koprefs.h"
57#include "kfiledialog.h" 57#include "kfiledialog.h"
58#include "koglobals.h" 58#include "koglobals.h"
59#include "kglobal.h" 59#include "kglobal.h"
60#include "klocale.h" 60#include "klocale.h"
61#include "kconfig.h" 61#include "kconfig.h"
62#include "simplealarmclient.h" 62#include "simplealarmclient.h"
63#include "externalapphandler.h" 63#include "externalapphandler.h"
64 64
65using namespace KCal; 65using namespace KCal;
66#ifndef _WIN32_ 66#ifndef _WIN32_
67#include <unistd.h> 67#include <unistd.h>
68#else 68#else
69#ifdef _OL_IMPORT_ 69#ifdef _OL_IMPORT_
70#include "koimportoldialog.h" 70#include "koimportoldialog.h"
71#endif 71#endif
72#endif 72#endif
73#include "mainwindow.h" 73#include "mainwindow.h"
74 74
75 75
76class KOex2phonePrefs : public QDialog 76class KOex2phonePrefs : public QDialog
77{ 77{
78 public: 78 public:
79 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 79 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
80 QDialog( parent, name, true ) 80 QDialog( parent, name, true )
81 { 81 {
82 setCaption( i18n("Export to phone options") ); 82 setCaption( i18n("Export to phone options") );
83 QVBoxLayout* lay = new QVBoxLayout( this ); 83 QVBoxLayout* lay = new QVBoxLayout( this );
84 lay->setSpacing( 3 ); 84 lay->setSpacing( 3 );
85 lay->setMargin( 3 ); 85 lay->setMargin( 3 );
86 QLabel *lab; 86 QLabel *lab;
87 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 87 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
88 lab->setAlignment (AlignHCenter ); 88 lab->setAlignment (AlignHCenter );
89 QHBox* temphb; 89 QHBox* temphb;
90 temphb = new QHBox( this ); 90 temphb = new QHBox( this );
91 new QLabel( i18n("I/O device: "), temphb ); 91 new QLabel( i18n("I/O device: "), temphb );
92 mPhoneDevice = new QLineEdit( temphb); 92 mPhoneDevice = new QLineEdit( temphb);
93 lay->addWidget( temphb ); 93 lay->addWidget( temphb );
94 temphb = new QHBox( this ); 94 temphb = new QHBox( this );
95 new QLabel( i18n("Connection: "), temphb ); 95 new QLabel( i18n("Connection: "), temphb );
96 mPhoneConnection = new QLineEdit( temphb); 96 mPhoneConnection = new QLineEdit( temphb);
97 lay->addWidget( temphb ); 97 lay->addWidget( temphb );
98 temphb = new QHBox( this ); 98 temphb = new QHBox( this );
99 new QLabel( i18n("Model(opt.): "), temphb ); 99 new QLabel( i18n("Model(opt.): "), temphb );
100 mPhoneModel = new QLineEdit( temphb); 100 mPhoneModel = new QLineEdit( temphb);
101 lay->addWidget( temphb ); 101 lay->addWidget( temphb );
102 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); 102 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
103 mWriteBackFuture->setChecked( true ); 103 mWriteBackFuture->setChecked( true );
104 lay->addWidget( mWriteBackFuture ); 104 lay->addWidget( mWriteBackFuture );
105 temphb = new QHBox( this ); 105 temphb = new QHBox( this );
106 new QLabel( i18n("Max. weeks in future: ") , temphb ); 106 new QLabel( i18n("Max. weeks in future: ") , temphb );
107 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); 107 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
108 mWriteBackFutureWeeks->setValue( 8 ); 108 mWriteBackFutureWeeks->setValue( 8 );
109 lay->addWidget( temphb ); 109 lay->addWidget( temphb );
110 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); 110 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) );
111 lab->setAlignment (AlignHCenter ); 111 lab->setAlignment (AlignHCenter );
112 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 112 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
113 lay->addWidget( ok ); 113 lay->addWidget( ok );
114 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 114 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
115 lay->addWidget( cancel ); 115 lay->addWidget( cancel );
116 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 116 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
117 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 117 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
118 resize( 220, 240 ); 118 resize( 220, 240 );
119 qApp->processEvents(); 119 qApp->processEvents();
120 int dw = QApplication::desktop()->width(); 120 int dw = QApplication::desktop()->width();
121 int dh = QApplication::desktop()->height(); 121 int dh = QApplication::desktop()->height();
122 move( (dw-width())/2, (dh - height() )/2 ); 122 move( (dw-width())/2, (dh - height() )/2 );
123 } 123 }
124 124
125public: 125public:
126 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 126 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
127 QCheckBox* mWriteBackFuture; 127 QCheckBox* mWriteBackFuture;
128 QSpinBox* mWriteBackFutureWeeks; 128 QSpinBox* mWriteBackFutureWeeks;
129}; 129};
130 130
131int globalFlagBlockStartup; 131int globalFlagBlockStartup;
132MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 132MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
133 QMainWindow( parent, name ) 133 QMainWindow( parent, name )
134{ 134{
135 135
136 mClosed = false; 136 mClosed = false;
137 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 137 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
138 QString confFile = locateLocal("config","korganizerrc"); 138 QString confFile = locateLocal("config","korganizerrc");
139 QFileInfo finf ( confFile ); 139 QFileInfo finf ( confFile );
140 bool showWarning = !finf.exists(); 140 bool showWarning = !finf.exists();
141 setIcon(SmallIcon( "ko24" ) ); 141 setIcon(SmallIcon( "ko24" ) );
142 mBlockAtStartup = true; 142 mBlockAtStartup = true;
143 mFlagKeyPressed = false; 143 mFlagKeyPressed = false;
144 setCaption("KOrganizer/Pi"); 144 setCaption("KOrganizer/Pi");
145 KOPrefs *p = KOPrefs::instance(); 145 KOPrefs *p = KOPrefs::instance();
146 KPimGlobalPrefs::instance()->setGlobalConfig(); 146 KPimGlobalPrefs::instance()->setGlobalConfig();
147 if ( p->mHourSize > 22 ) 147 if ( p->mHourSize > 22 )
148 p->mHourSize = 22; 148 p->mHourSize = 22;
149 QMainWindow::ToolBarDock tbd; 149 QMainWindow::ToolBarDock tbd;
150 if ( p->mToolBarHor ) { 150 if ( p->mToolBarHor ) {
151 if ( p->mToolBarUp ) 151 if ( p->mToolBarUp )
152 tbd = Bottom; 152 tbd = Bottom;
153 else 153 else
154 tbd = Top; 154 tbd = Top;
155 } 155 }
156 else { 156 else {
157 if ( p->mToolBarUp ) 157 if ( p->mToolBarUp )
158 tbd = Right; 158 tbd = Right;
159 else 159 else
160 tbd = Left; 160 tbd = Left;
161 } 161 }
162 if ( KOPrefs::instance()->mUseAppColors ) 162 if ( KOPrefs::instance()->mUseAppColors )
163 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 163 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
164 globalFlagBlockStartup = 1; 164 globalFlagBlockStartup = 1;
165 iconToolBar = new QPEToolBar( this ); 165 iconToolBar = new QPEToolBar( this );
166 addToolBar (iconToolBar , tbd ); 166 addToolBar (iconToolBar , tbd );
167 mCalendarModifiedFlag = false; 167 mCalendarModifiedFlag = false;
168 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); 168 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
169 splash->setAlignment ( AlignCenter ); 169 splash->setAlignment ( AlignCenter );
170 setCentralWidget( splash ); 170 setCentralWidget( splash );
171#ifndef DESKTOP_VERSION 171#ifndef DESKTOP_VERSION
172 showMaximized(); 172 showMaximized();
173#endif 173#endif
174 174
175 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); 175 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
176 setDefaultPreferences(); 176 setDefaultPreferences();
177 mCalendar = new CalendarLocal(); 177 mCalendar = new CalendarLocal();
178 mView = new CalendarView( mCalendar, this,"mCalendar " ); 178 mView = new CalendarView( mCalendar, this,"mCalendar " );
179 mView->hide(); 179 mView->hide();
180 //mView->resize(splash->size() ); 180 //mView->resize(splash->size() );
181 initActions(); 181 initActions();
182 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu); 182 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu);
183 mSyncManager->setBlockSave(false); 183 mSyncManager->setBlockSave(false);
184 mView->setSyncManager(mSyncManager); 184 mView->setSyncManager(mSyncManager);
185#ifndef DESKTOP_VERSION 185#ifndef DESKTOP_VERSION
186 iconToolBar->show(); 186 iconToolBar->show();
187 qApp->processEvents(); 187 qApp->processEvents();
188#endif 188#endif
189 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); 189 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
190 int vh = height() ; 190 int vh = height() ;
191 int vw = width(); 191 int vw = width();
192 //qDebug("Toolbar hei %d ",iconToolBar->height() ); 192 //qDebug("Toolbar hei %d ",iconToolBar->height() );
193 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 193 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
194 vh -= iconToolBar->height(); 194 vh -= iconToolBar->height();
195 } else { 195 } else {
196 vw -= iconToolBar->height(); 196 vw -= iconToolBar->height();
197 } 197 }
198 //mView->setMaximumSize( splash->size() ); 198 //mView->setMaximumSize( splash->size() );
199 //mView->resize( splash->size() ); 199 //mView->resize( splash->size() );
200 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 200 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
201 mView->readSettings(); 201 mView->readSettings();
202 bool newFile = false; 202 bool newFile = false;
203 if( !QFile::exists( defaultFileName() ) ) { 203 if( !QFile::exists( defaultFileName() ) ) {
204 QFileInfo finfo ( defaultFileName() ); 204 QFileInfo finfo ( defaultFileName() );
205 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 205 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
206 qDebug("oldfile %s ", oldFile.latin1()); 206 qDebug("oldfile %s ", oldFile.latin1());
207 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 207 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
208 finfo.setFile( oldFile ); 208 finfo.setFile( oldFile );
209 if (finfo.exists() ) { 209 if (finfo.exists() ) {
210 KMessageBox::information( this, message); 210 KMessageBox::information( this, message);
211 mView->openCalendar( oldFile ); 211 mView->openCalendar( oldFile );
212 qApp->processEvents(); 212 qApp->processEvents();
213 } else { 213 } else {
214 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 214 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
215 finfo.setFile( oldFile ); 215 finfo.setFile( oldFile );
216 if (finfo.exists() ) { 216 if (finfo.exists() ) {
217 KMessageBox::information( this, message); 217 KMessageBox::information( this, message);
218 mView->openCalendar( oldFile ); 218 mView->openCalendar( oldFile );
219 qApp->processEvents(); 219 qApp->processEvents();
220 } 220 }
221 } 221 }
222 mView->saveCalendar( defaultFileName() ); 222 mView->saveCalendar( defaultFileName() );
223 newFile = true; 223 newFile = true;
224 } 224 }
225 225
226 QTime neededSaveTime = QDateTime::currentDateTime().time(); 226 QTime neededSaveTime = QDateTime::currentDateTime().time();
227 mView->openCalendar( defaultFileName() ); 227 mView->openCalendar( defaultFileName() );
228 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 228 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
229 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 229 qDebug("KO: Calendar loading time: %d ms",msNeeded );
230 230
231 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) { 231 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) {
232 KOPrefs::instance()->setAllDefaults(); 232 KOPrefs::instance()->setAllDefaults();
233 int count = mView->addCategories(); 233 int count = mView->addCategories();
234 } 234 }
235 processIncidenceSelection( 0 ); 235 processIncidenceSelection( 0 );
236 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 236 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
237 SLOT( processIncidenceSelection( Incidence * ) ) ); 237 SLOT( processIncidenceSelection( Incidence * ) ) );
238 connect( mView, SIGNAL( modifiedChanged( bool ) ), 238 connect( mView, SIGNAL( modifiedChanged( bool ) ),
239 SLOT( slotModifiedChanged( bool ) ) ); 239 SLOT( slotModifiedChanged( bool ) ) );
240 240
241 241
242 connect( mView, SIGNAL( tempDisableBR(bool) ), 242 connect( mView, SIGNAL( tempDisableBR(bool) ),
243 SLOT( disableBR(bool) ) ); 243 SLOT( disableBR(bool) ) );
244 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 244 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
245 mView->setModified( false ); 245 mView->setModified( false );
246 mBlockAtStartup = false; 246 mBlockAtStartup = false;
247 mView->setModified( false ); 247 mView->setModified( false );
248 setCentralWidget( mView ); 248 setCentralWidget( mView );
249 globalFlagBlockStartup = 0; 249 globalFlagBlockStartup = 0;
250 mView->show(); 250 mView->show();
251 delete splash; 251 delete splash;
252 if ( newFile ) 252 if ( newFile )
253 mView->updateConfig(); 253 mView->updateConfig();
254 // qApp->processEvents(); 254 // qApp->processEvents();
255 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 255 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
256 //fillSyncMenu(); 256 //fillSyncMenu();
257 257
258 258
259 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); 259 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) );
260 connect(mView , SIGNAL( save() ), this, SLOT( save() ) ); 260 connect(mView , SIGNAL( save() ), this, SLOT( save() ) );
261 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) ); 261 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) );
262 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 262 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
263 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 263 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
264 mSyncManager->setDefaultFileName( sentSyncFile()); 264 mSyncManager->setDefaultFileName( sentSyncFile());
265 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) ); 265 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) );
266 mSyncManager->fillSyncMenu(); 266 mSyncManager->fillSyncMenu();
267 267
268 268
269 269
270 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); 270 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins );
271 if ( showWarning ) { 271 if ( showWarning ) {
272 KMessageBox::information( this, 272 KMessageBox::information( this,
273 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); 273 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information");
274 qApp->processEvents(); 274 qApp->processEvents();
275 mView->dialogManager()->showSyncOptions(); 275 mView->dialogManager()->showSyncOptions();
276 } 276 }
277 277
278 //US listen for result adressed from Ka/Pi 278 //US listen for result adressed from Ka/Pi
279#ifndef DESKTOP_VERSION 279#ifndef DESKTOP_VERSION
280 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 280 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
281#endif 281#endif
282#ifndef DESKTOP_VERSION 282#ifndef DESKTOP_VERSION
283 infrared = 0; 283 infrared = 0;
284#endif 284#endif
285 updateWeek( mView->startDate() ); 285 updateWeek( mView->startDate() );
286 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ), 286 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ),
287 SLOT( updateWeekNum( const KCal::DateList & ) ) ); 287 SLOT( updateWeekNum( const KCal::DateList & ) ) );
288 mBRdisabled = false; 288 mBRdisabled = false;
289 //toggleBeamReceive(); 289 //toggleBeamReceive();
290} 290}
291MainWindow::~MainWindow() 291MainWindow::~MainWindow()
292{ 292{
293 //qDebug("MainWindow::~MainWindow() "); 293 //qDebug("MainWindow::~MainWindow() ");
294 //save toolbar location 294 //save toolbar location
295 delete mCalendar; 295 delete mCalendar;
296 delete mSyncManager; 296 delete mSyncManager;
297#ifndef DESKTOP_VERSION 297#ifndef DESKTOP_VERSION
298 if ( infrared ) 298 if ( infrared )
299 delete infrared; 299 delete infrared;
300#endif 300#endif
301 301
302 302
303} 303}
304 304
305void MainWindow::disableBR(bool b) 305void MainWindow::disableBR(bool b)
306{ 306{
307#ifndef DESKTOP_VERSION 307#ifndef DESKTOP_VERSION
308 if ( b ) { 308 if ( b ) {
309 if ( infrared ) { 309 if ( infrared ) {
310 toggleBeamReceive(); 310 toggleBeamReceive();
311 mBRdisabled = true; 311 mBRdisabled = true;
312 } 312 }
313 mBRdisabled = true; 313 mBRdisabled = true;
314 } else { 314 } else {
315 if ( mBRdisabled ) { 315 if ( mBRdisabled ) {
316 mBRdisabled = false; 316 mBRdisabled = false;
317 //makes no sense,because other cal ap is probably running 317 //makes no sense,because other cal ap is probably running
318 // toggleBeamReceive(); 318 // toggleBeamReceive();
319 } 319 }
320 } 320 }
321#endif 321#endif
322 322
323} 323}
324bool MainWindow::beamReceiveEnabled() 324bool MainWindow::beamReceiveEnabled()
325{ 325{
326#ifndef DESKTOP_VERSION 326#ifndef DESKTOP_VERSION
327 return ( infrared != 0 ); 327 return ( infrared != 0 );
328#endif 328#endif
329 return false; 329 return false;
330} 330}
331 331
332void MainWindow::toggleBeamReceive() 332void MainWindow::toggleBeamReceive()
333{ 333{
334 if ( mBRdisabled ) 334 if ( mBRdisabled )
335 return; 335 return;
336#ifndef DESKTOP_VERSION 336#ifndef DESKTOP_VERSION
337 if ( infrared ) { 337 if ( infrared ) {
338 qDebug("disable BeamReceive "); 338 qDebug("disable BeamReceive ");
339 delete infrared; 339 delete infrared;
340 infrared = 0; 340 infrared = 0;
341 brAction->setOn(false); 341 brAction->setOn(false);
342 return; 342 return;
343 } 343 }
344 qDebug("enable BeamReceive "); 344 qDebug("enable BeamReceive ");
345 brAction->setOn(true); 345 brAction->setOn(true);
346 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 346 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
347 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 347 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
348#endif 348#endif
349} 349}
350void MainWindow::showMaximized () 350void MainWindow::showMaximized ()
351{ 351{
352#ifndef DESKTOP_VERSION 352#ifndef DESKTOP_VERSION
353 if ( ! globalFlagBlockStartup ) 353 if ( ! globalFlagBlockStartup )
354 if ( mClosed ) 354 if ( mClosed )
355 mView->goToday(); 355 mView->goToday();
356#endif 356#endif
357 QWidget::showMaximized () ; 357 QWidget::showMaximized () ;
358 mClosed = false; 358 mClosed = false;
359} 359}
360void MainWindow::closeEvent( QCloseEvent* ce ) 360void MainWindow::closeEvent( QCloseEvent* ce )
361{ 361{
362 362
363 363
364 364
365 if ( ! KOPrefs::instance()->mAskForQuit ) { 365 if ( ! KOPrefs::instance()->mAskForQuit ) {
366 saveOnClose(); 366 saveOnClose();
367 mClosed = true; 367 mClosed = true;
368 ce->accept(); 368 ce->accept();
369 return; 369 return;
370 370
371 } 371 }
372 372
373 switch( QMessageBox::information( this, "KO/Pi", 373 switch( QMessageBox::information( this, "KO/Pi",
374 i18n("Do you really want\nto close KO/Pi?"), 374 i18n("Do you really want\nto close KO/Pi?"),
375 i18n("Close"), i18n("No"), 375 i18n("Close"), i18n("No"),
376 0, 0 ) ) { 376 0, 0 ) ) {
377 case 0: 377 case 0:
378 saveOnClose(); 378 saveOnClose();
379 mClosed = true; 379 mClosed = true;
380 ce->accept(); 380 ce->accept();
381 break; 381 break;
382 case 1: 382 case 1:
383 ce->ignore(); 383 ce->ignore();
384 break; 384 break;
385 case 2: 385 case 2:
386 386
387 default: 387 default:
388 break; 388 break;
389 } 389 }
390 390
391 391
392} 392}
393 393
394void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 394void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
395{ 395{
396 QDataStream stream( data, IO_ReadOnly ); 396 QDataStream stream( data, IO_ReadOnly );
397 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 397 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
398 //QString datamess; 398 //QString datamess;
399 //qDebug("message "); 399 //qDebug("message ");
400 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 400 qDebug("KO: QCOP message received: %s ", cmsg.data() );
401 401
402 if ( cmsg == "setDocument(QString)" ) { 402 if ( cmsg == "setDocument(QString)" ) {
403 QDataStream stream( data, IO_ReadOnly ); 403 QDataStream stream( data, IO_ReadOnly );
404 QString fileName; 404 QString fileName;
405 stream >> fileName; 405 stream >> fileName;
406 //qDebug("filename %s ", fileName.latin1()); 406 //qDebug("filename %s ", fileName.latin1());
407 showMaximized(); 407 showMaximized();
408 raise(); 408 raise();
409 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 409 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
410 mSyncManager->slotSyncMenu( 1002 ); 410 mSyncManager->slotSyncMenu( 1002 );
411 return; 411 return;
412 } 412 }
413 413
414 if ( cmsg == "-writeFile" ) { 414 if ( cmsg == "-writeFile" ) {
415 // I made from the "-writeFile" an "-writeAlarm" 415 // I made from the "-writeFile" an "-writeAlarm"
416 mView->viewManager()->showWhatsNextView(); 416 mView->viewManager()->showWhatsNextView();
417 mCalendar->checkAlarmForIncidence( 0, true); 417 mCalendar->checkAlarmForIncidence( 0, true);
418 showMaximized(); 418 showMaximized();
419 raise(); 419 raise();
420 return; 420 return;
421 421
422 } 422 }
423 if ( cmsg == "-writeFileSilent" ) { 423 if ( cmsg == "-writeFileSilent" ) {
424 // I made from the "-writeFile" an "-writeAlarm" 424 // I made from the "-writeFile" an "-writeAlarm"
425 // mView->viewManager()->showWhatsNextView(); 425 // mView->viewManager()->showWhatsNextView();
426 mCalendar->checkAlarmForIncidence( 0, true); 426 mCalendar->checkAlarmForIncidence( 0, true);
427 //showMaximized(); 427 //showMaximized();
428 //raise(); 428 //raise();
429 hide(); 429 hide();
430 return; 430 return;
431 } 431 }
432 if ( cmsg == "-newCountdown" ) { 432 if ( cmsg == "-newCountdown" ) {
433 qDebug("newCountdown "); 433 qDebug("newCountdown ");
434 434
435 } 435 }
436 QString msg ; 436 QString msg ;
437 QString allmsg = cmsg; 437 QString allmsg = cmsg;
438 while ( allmsg.length() > 0 ) { 438 while ( allmsg.length() > 0 ) {
439 int nextC = allmsg.find( "-", 1 ); 439 int nextC = allmsg.find( "-", 1 );
440 if ( nextC == -1 ) { 440 if ( nextC == -1 ) {
441 msg = allmsg; 441 msg = allmsg;
442 allmsg = ""; 442 allmsg = "";
443 } else{ 443 } else{
444 msg = allmsg.left( nextC ); 444 msg = allmsg.left( nextC );
445 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 445 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
446 } 446 }
447 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 447 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
448 if ( msg == "-newEvent" ) { 448 if ( msg == "-newEvent" ) {
449 mView->newEvent(); 449 mView->newEvent();
450 } 450 }
451 if ( msg == "-newTodo" ) { 451 if ( msg == "-newTodo" ) {
452 mView->newTodo(); 452 mView->newTodo();
453 453
454 } 454 }
455 if ( msg == "-showWN" ) { 455 if ( msg == "-showWN" ) {
456 mView->viewManager()->showWhatsNextView(); 456 mView->viewManager()->showWhatsNextView();
457 } 457 }
458 if ( msg == "-showTodo" ) { 458 if ( msg == "-showTodo" ) {
459 mView->viewManager()->showTodoView(); 459 mView->viewManager()->showTodoView();
460 } 460 }
461 if ( msg == "-showList" ) { 461 if ( msg == "-showList" ) {
462 mView->viewManager()->showListView(); 462 mView->viewManager()->showListView();
463 } 463 }
464 else if ( msg == "-showDay" ) { 464 else if ( msg == "-showDay" ) {
465 mView->viewManager()->showDayView(); 465 mView->viewManager()->showDayView();
466 } 466 }
467 else if ( msg == "-showWWeek" ) { 467 else if ( msg == "-showWWeek" ) {
468 mView->viewManager()->showWorkWeekView(); 468 mView->viewManager()->showWorkWeekView();
469 } 469 }
470 else if ( msg == "-ringSync" ) { 470 else if ( msg == "-ringSync" ) {
471 mSyncManager->multiSync( false ); 471 mSyncManager->multiSync( false );
472 } 472 }
473 else if ( msg == "-showWeek" ) { 473 else if ( msg == "-showWeek" ) {
474 mView->viewManager()->showWeekView(); 474 mView->viewManager()->showWeekView();
475 } 475 }
476 else if ( msg == "-showTodo" ) { 476 else if ( msg == "-showTodo" ) {
477 mView->viewManager()->showTodoView(); 477 mView->viewManager()->showTodoView();
478 } 478 }
479 else if ( msg == "-showJournal" ) { 479 else if ( msg == "-showJournal" ) {
480 mView->dateNavigator()->selectDates( 1 ); 480 mView->dateNavigator()->selectDates( 1 );
481 mView->dateNavigator()->selectToday(); 481 mView->dateNavigator()->selectToday();
482 mView->viewManager()->showJournalView(); 482 mView->viewManager()->showJournalView();
483 } 483 }
484 else if ( msg == "-showKO" ) { 484 else if ( msg == "-showKO" ) {
485 mView->viewManager()->showNextXView(); 485 mView->viewManager()->showNextXView();
486 } 486 }
487 else if ( msg == "-showWNext" || msg == "nextView()" ) { 487 else if ( msg == "-showWNext" || msg == "nextView()" ) {
488 mView->viewManager()->showWhatsNextView(); 488 mView->viewManager()->showWhatsNextView();
489 } 489 }
490 else if ( msg == "-showNextXView" ) { 490 else if ( msg == "-showNextXView" ) {
491 mView->viewManager()->showNextXView(); 491 mView->viewManager()->showNextXView();
492 } 492 }
493 493
494 494
495 } 495 }
496 496
497 showMaximized(); 497 showMaximized();
498 raise(); 498 raise();
499} 499}
500 500
501QPixmap MainWindow::loadPixmap( QString name ) 501QPixmap MainWindow::loadPixmap( QString name )
502{ 502{
503 return SmallIcon( name ); 503 return SmallIcon( name );
504 504
505} 505}
506void MainWindow::initActions() 506void MainWindow::initActions()
507{ 507{
508 //KOPrefs::instance()->mShowFullMenu 508 //KOPrefs::instance()->mShowFullMenu
509 iconToolBar->clear(); 509 iconToolBar->clear();
510 KOPrefs *p = KOPrefs::instance(); 510 KOPrefs *p = KOPrefs::instance();
511 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 511 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
512 512
513 QPopupMenu *viewMenu = new QPopupMenu( this ); 513 QPopupMenu *viewMenu = new QPopupMenu( this );
514 QPopupMenu *actionMenu = new QPopupMenu( this ); 514 QPopupMenu *actionMenu = new QPopupMenu( this );
515 QPopupMenu *importMenu = new QPopupMenu( this ); 515 QPopupMenu *importMenu = new QPopupMenu( this );
516 selectFilterMenu = new QPopupMenu( this ); 516 selectFilterMenu = new QPopupMenu( this );
517 selectFilterMenu->setCheckable( true ); 517 selectFilterMenu->setCheckable( true );
518 syncMenu = new QPopupMenu( this ); 518 syncMenu = new QPopupMenu( this );
519 configureAgendaMenu = new QPopupMenu( this ); 519 configureAgendaMenu = new QPopupMenu( this );
520 configureToolBarMenu = new QPopupMenu( this ); 520 configureToolBarMenu = new QPopupMenu( this );
521 QPopupMenu *helpMenu = new QPopupMenu( this ); 521 QPopupMenu *helpMenu = new QPopupMenu( this );
522
523 QIconSet icon;
524 int pixWid = 22, pixHei = 22;
525 QString pathString = "";
526 if ( !p->mToolBarMiniIcons ) {
527 if ( QApplication::desktop()->width() < 480 ) {
528 pathString += "icons16/";
529 pixWid = 18; pixHei = 16;
530 }
531 } else {
532 pathString += "iconsmini/";
533 pixWid = 18; pixHei = 16;
534 }
522 if ( KOPrefs::instance()->mShowFullMenu ) { 535 if ( KOPrefs::instance()->mShowFullMenu ) {
523 QMenuBar *menuBar1; 536 QMenuBar *menuBar1;
524 menuBar1 = menuBar(); 537 menuBar1 = menuBar();
525 menuBar1->insertItem( i18n("File"), importMenu ); 538 menuBar1->insertItem( i18n("File"), importMenu );
526 menuBar1->insertItem( i18n("View"), viewMenu ); 539 menuBar1->insertItem( i18n("View"), viewMenu );
527 menuBar1->insertItem( i18n("Actions"), actionMenu ); 540 menuBar1->insertItem( i18n("Actions"), actionMenu );
528#ifdef DESKTOP_VERSION 541#ifdef DESKTOP_VERSION
529 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 542 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
530 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 543 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
531#else 544#else
532 menuBar1->insertItem( i18n("Sync"), syncMenu ); 545 menuBar1->insertItem( i18n("Sync"), syncMenu );
533 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu ); 546 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu );
534#endif 547#endif
535 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 548 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
536 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 549 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
537 menuBar1->insertItem( i18n("Help"), helpMenu ); 550 menuBar1->insertItem( i18n("Help"), helpMenu );
538 } else { 551 } else {
539 QPEMenuBar *menuBar1; 552 QPEMenuBar *menuBar1;
540 menuBar1 = new QPEMenuBar( iconToolBar ); 553 menuBar1 = new QPEMenuBar( iconToolBar );
541 QPopupMenu *menuBar = new QPopupMenu( this ); 554 QPopupMenu *menuBar = new QPopupMenu( this );
542 menuBar1->insertItem( i18n("ME"), menuBar); 555 icon = loadPixmap( pathString + "z_menu" );
556 menuBar1->insertItem( icon.pixmap(), menuBar);
557 //menuBar1->insertItem( i18n("ME"), menuBar);
543 menuBar->insertItem( i18n("File"), importMenu ); 558 menuBar->insertItem( i18n("File"), importMenu );
544 menuBar->insertItem( i18n("View"), viewMenu ); 559 menuBar->insertItem( i18n("View"), viewMenu );
545 menuBar->insertItem( i18n("Actions"), actionMenu ); 560 menuBar->insertItem( i18n("Actions"), actionMenu );
546 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 561 menuBar->insertItem( i18n("Synchronize"), syncMenu );
547 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 562 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
548 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 563 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
549 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 564 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
550 menuBar->insertItem( i18n("Help"), helpMenu ); 565 menuBar->insertItem( i18n("Help"), helpMenu );
551 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 566 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
552 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 567 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
553 } 568 }
554 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 569 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
555 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) ); 570 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) );
556 QIconSet icon;
557 int pixWid = 22, pixHei = 22;
558 QString pathString = "";
559 if ( !p->mToolBarMiniIcons ) {
560 if ( QApplication::desktop()->width() < 480 ) {
561 pathString += "icons16/";
562 pixWid = 18; pixHei = 16;
563 }
564 } else {
565 pathString += "iconsmini/";
566 pixWid = 18; pixHei = 16;
567 }
568 mWeekBgColor = iconToolBar->backgroundColor(); 571 mWeekBgColor = iconToolBar->backgroundColor();
569 mWeekPixmap.resize( pixWid , pixHei ); 572 mWeekPixmap.resize( pixWid , pixHei );
570 mWeekPixmap.fill( mWeekBgColor ); 573 mWeekPixmap.fill( mWeekBgColor );
571 icon = mWeekPixmap; 574 icon = mWeekPixmap;
572 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this ); 575 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this );
573 if ( p-> mShowIconWeekNum ) 576 if ( p-> mShowIconWeekNum )
574 mWeekAction->addTo( iconToolBar ); 577 mWeekAction->addTo( iconToolBar );
575 mWeekFont = font(); 578 mWeekFont = font();
576 579
577 int fontPoint = mWeekFont.pointSize(); 580 int fontPoint = mWeekFont.pointSize();
578 QFontMetrics f( mWeekFont ); 581 QFontMetrics f( mWeekFont );
579 int fontWid = f.width( "30" ); 582 int fontWid = f.width( "30" );
580 while ( fontWid > pixWid ) { 583 while ( fontWid > pixWid ) {
581 --fontPoint; 584 --fontPoint;
582 mWeekFont.setPointSize( fontPoint ); 585 mWeekFont.setPointSize( fontPoint );
583 QFontMetrics f( mWeekFont ); 586 QFontMetrics f( mWeekFont );
584 fontWid = f.width( "30" ); 587 fontWid = f.width( "30" );
585 qDebug("dec-- "); 588 qDebug("dec-- ");
586 } 589 }
587 590
588 connect( mWeekAction, SIGNAL( activated() ), 591 connect( mWeekAction, SIGNAL( activated() ),
589 this, SLOT( weekAction() ) ); 592 this, SLOT( weekAction() ) );
590 593
591 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) ); 594 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) );
592 595
593 //#endif 596 //#endif
594 // ****************** 597 // ******************
595 QAction *action; 598 QAction *action;
596 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 599 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
597 configureToolBarMenu->setCheckable( true ); 600 configureToolBarMenu->setCheckable( true );
598 601
599 602
600 configureAgendaMenu->setCheckable( true ); 603 configureAgendaMenu->setCheckable( true );
601 int iii ; 604 int iii ;
602 for ( iii = 1;iii<= 10 ;++iii ){ 605 for ( iii = 1;iii<= 10 ;++iii ){
603 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 ); 606 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 );
604 } 607 }
605 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 608 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
606 609
607 connect( configureAgendaMenu, SIGNAL( aboutToShow()), 610 connect( configureAgendaMenu, SIGNAL( aboutToShow()),
608 this, SLOT( showConfigureAgenda( ) ) ); 611 this, SLOT( showConfigureAgenda( ) ) );
609 612
610 icon = loadPixmap( pathString + "configure" ); 613 icon = loadPixmap( pathString + "configure" );
611 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this ); 614 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this );
612 action->addTo( actionMenu ); 615 action->addTo( actionMenu );
613 connect( action, SIGNAL( activated() ), 616 connect( action, SIGNAL( activated() ),
614 mView, SLOT( edit_options() ) ); 617 mView, SLOT( edit_options() ) );
615 actionMenu->insertSeparator(); 618 actionMenu->insertSeparator();
616 619
617 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this ); 620 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
618 action->addTo( actionMenu ); 621 action->addTo( actionMenu );
619 connect( action, SIGNAL( activated() ), 622 connect( action, SIGNAL( activated() ),
620 mView, SLOT( undo_delete() ) ); 623 mView, SLOT( undo_delete() ) );
621 actionMenu->insertSeparator(); 624 actionMenu->insertSeparator();
622 625
623 icon = loadPixmap( pathString + "newevent" ); 626 icon = loadPixmap( pathString + "newevent" );
624 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 627 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
625 configureToolBarMenu->insertSeparator(); 628 configureToolBarMenu->insertSeparator();
626 configureToolBarMenu->insertItem(i18n("Week Number"), 400); 629 configureToolBarMenu->insertItem(i18n("Week Number"), 400);
627 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 630 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
628 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 631 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
629 ne_action->addTo( actionMenu ); 632 ne_action->addTo( actionMenu );
630 connect( ne_action, SIGNAL( activated() ), 633 connect( ne_action, SIGNAL( activated() ),
631 mView, SLOT( newEvent() ) ); 634 mView, SLOT( newEvent() ) );
632 icon = loadPixmap( pathString + "newtodo" ); 635 icon = loadPixmap( pathString + "newtodo" );
633 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 636 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
634 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); 637 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
635 nt_action->addTo( actionMenu ); 638 nt_action->addTo( actionMenu );
636 connect( nt_action, SIGNAL( activated() ), 639 connect( nt_action, SIGNAL( activated() ),
637 mView, SLOT( newTodo() ) ); 640 mView, SLOT( newTodo() ) );
638 641
639 icon = loadPixmap( pathString + "today" ); 642 icon = loadPixmap( pathString + "today" );
640 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 643 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
641 today_action->addTo( viewMenu ); 644 today_action->addTo( viewMenu );
642 connect( today_action, SIGNAL( activated() ), 645 connect( today_action, SIGNAL( activated() ),
643 mView, SLOT( goToday() ) ); 646 mView, SLOT( goToday() ) );
644 viewMenu->insertSeparator(); 647 viewMenu->insertSeparator();
645 648
646 icon = loadPixmap( pathString + "navi" ); 649 icon = loadPixmap( pathString + "navi" );
647 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 650 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
648 action->addTo( viewMenu ); 651 action->addTo( viewMenu );
649 connect( action, SIGNAL( activated() ), 652 connect( action, SIGNAL( activated() ),
650 mView, SLOT( toggleDateNavigatorWidget() ) ); 653 mView, SLOT( toggleDateNavigatorWidget() ) );
651 mToggleNav = action ; 654 mToggleNav = action ;
652 icon = loadPixmap( pathString + "filter" ); 655 icon = loadPixmap( pathString + "filter" );
653 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this ); 656 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this );
654 action->addTo( viewMenu ); 657 action->addTo( viewMenu );
655 connect( action, SIGNAL( activated() ), 658 connect( action, SIGNAL( activated() ),
656 mView, SLOT( toggleFilter() ) ); 659 mView, SLOT( toggleFilter() ) );
657 mToggleFilter = action; 660 mToggleFilter = action;
658 icon = loadPixmap( pathString + "allday" ); 661 icon = loadPixmap( pathString + "allday" );
659 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this ); 662 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this );
660 action->addTo( viewMenu ); 663 action->addTo( viewMenu );
661 connect( action, SIGNAL( activated() ), 664 connect( action, SIGNAL( activated() ),
662 mView, SLOT( toggleAllDaySize() ) ); 665 mView, SLOT( toggleAllDaySize() ) );
663 mToggleAllday = action; 666 mToggleAllday = action;
664 667
665 668
666 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 669 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
667 mToggleNav, SLOT( setEnabled ( bool ) ) ); 670 mToggleNav, SLOT( setEnabled ( bool ) ) );
668 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 671 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
669 mToggleFilter, SLOT( setEnabled ( bool ) ) ); 672 mToggleFilter, SLOT( setEnabled ( bool ) ) );
670 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 673 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
671 mToggleAllday, SLOT( setEnabled ( bool ) ) ); 674 mToggleAllday, SLOT( setEnabled ( bool ) ) );
672 675
673 viewMenu->insertSeparator(); 676 viewMenu->insertSeparator();
674 icon = loadPixmap( pathString + "picker" ); 677 icon = loadPixmap( pathString + "picker" );
675 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this ); 678 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this );
676 action->addTo( viewMenu ); 679 action->addTo( viewMenu );
677 connect( action, SIGNAL( activated() ), 680 connect( action, SIGNAL( activated() ),
678 mView, SLOT( showDatePicker() ) ); 681 mView, SLOT( showDatePicker() ) );
679 action->addTo( iconToolBar ); 682 action->addTo( iconToolBar );
680 viewMenu->insertSeparator(); 683 viewMenu->insertSeparator();
681 icon = loadPixmap( pathString + "list" ); 684 icon = loadPixmap( pathString + "list" );
682 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 685 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
683 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 686 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
684 showlist_action->addTo( viewMenu ); 687 showlist_action->addTo( viewMenu );
685 connect( showlist_action, SIGNAL( activated() ), 688 connect( showlist_action, SIGNAL( activated() ),
686 mView->viewManager(), SLOT( showListView() ) ); 689 mView->viewManager(), SLOT( showListView() ) );
687 690
688 691
689 icon = loadPixmap( pathString + "day" ); 692 icon = loadPixmap( pathString + "day" );
690 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 693 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
691 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 694 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
692 day1_action->addTo( viewMenu ); 695 day1_action->addTo( viewMenu );
693 // action->addTo( toolBar ); 696 // action->addTo( toolBar );
694 connect( day1_action, SIGNAL( activated() ), 697 connect( day1_action, SIGNAL( activated() ),
695 mView->viewManager(), SLOT( showDayView() ) ); 698 mView->viewManager(), SLOT( showDayView() ) );
696 699
697 icon = loadPixmap( pathString + "workweek" ); 700 icon = loadPixmap( pathString + "workweek" );
698 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 701 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
699 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 702 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
700 day5_action->addTo( viewMenu ); 703 day5_action->addTo( viewMenu );
701 connect( day5_action, SIGNAL( activated() ), 704 connect( day5_action, SIGNAL( activated() ),
702 mView->viewManager(), SLOT( showWorkWeekView() ) ); 705 mView->viewManager(), SLOT( showWorkWeekView() ) );
703 706
704 icon = loadPixmap( pathString + "week" ); 707 icon = loadPixmap( pathString + "week" );
705 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 708 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
706 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 709 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
707 day7_action->addTo( viewMenu ); 710 day7_action->addTo( viewMenu );
708 connect( day7_action, SIGNAL( activated() ), 711 connect( day7_action, SIGNAL( activated() ),
709 mView->viewManager(), SLOT( showWeekView() ) ); 712 mView->viewManager(), SLOT( showWeekView() ) );
710 713
711 icon = loadPixmap( pathString + "workweek2" ); 714 icon = loadPixmap( pathString + "workweek2" );
712 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 ); 715 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 );
713 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this ); 716 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this );
714 day6_action->addTo( viewMenu ); 717 day6_action->addTo( viewMenu );
715 connect( day6_action, SIGNAL( activated() ), 718 connect( day6_action, SIGNAL( activated() ),
716 mView->viewManager(), SLOT( showMonthViewWeek() ) ); 719 mView->viewManager(), SLOT( showMonthViewWeek() ) );
717 720
718 icon = loadPixmap( pathString + "month" ); 721 icon = loadPixmap( pathString + "month" );
719 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 722 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
720 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 723 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
721 month_action->addTo( viewMenu ); 724 month_action->addTo( viewMenu );
722 connect( month_action, SIGNAL( activated() ), 725 connect( month_action, SIGNAL( activated() ),
723 mView->viewManager(), SLOT( showMonthView() ) ); 726 mView->viewManager(), SLOT( showMonthView() ) );
724 727
725 icon = loadPixmap( pathString + "todo" ); 728 icon = loadPixmap( pathString + "todo" );
726 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 729 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
727 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 730 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
728 todoview_action->addTo( viewMenu ); 731 todoview_action->addTo( viewMenu );
729 connect( todoview_action, SIGNAL( activated() ), 732 connect( todoview_action, SIGNAL( activated() ),
730 mView->viewManager(), SLOT( showTodoView() ) ); 733 mView->viewManager(), SLOT( showTodoView() ) );
731 734
732 icon = loadPixmap( pathString + "journal" ); 735 icon = loadPixmap( pathString + "journal" );
733 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 736 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
734 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 737 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
735 viewjournal_action->addTo( viewMenu ); 738 viewjournal_action->addTo( viewMenu );
736 connect( viewjournal_action, SIGNAL( activated() ), 739 connect( viewjournal_action, SIGNAL( activated() ),
737 mView->viewManager(), SLOT( showJournalView() ) ); 740 mView->viewManager(), SLOT( showJournalView() ) );
738 741
739 icon = loadPixmap( pathString + "xdays" ); 742 icon = loadPixmap( pathString + "xdays" );
740 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100,4 ); 743 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100,4 );
741 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 744 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
742 xdays_action->addTo( viewMenu ); 745 xdays_action->addTo( viewMenu );
743 connect( xdays_action, SIGNAL( activated() ), 746 connect( xdays_action, SIGNAL( activated() ),
744 mView->viewManager(), SLOT( showNextXView() ) ); 747 mView->viewManager(), SLOT( showNextXView() ) );
745 748
746 icon = loadPixmap( pathString + "whatsnext" ); 749 icon = loadPixmap( pathString + "whatsnext" );
747 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110, 4 ); 750 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110, 4 );
748 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 751 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
749 whatsnext_action->addTo( viewMenu ); 752 whatsnext_action->addTo( viewMenu );
750 connect( whatsnext_action, SIGNAL( activated() ), 753 connect( whatsnext_action, SIGNAL( activated() ),
751 mView->viewManager(), SLOT( showWhatsNextView() ) ); 754 mView->viewManager(), SLOT( showWhatsNextView() ) );
752 755
753#if 0 756#if 0
754 action = new QAction( "view_timespan", "Time Span", 0, this ); 757 action = new QAction( "view_timespan", "Time Span", 0, this );
755 action->addTo( viewMenu ); 758 action->addTo( viewMenu );
756 connect( action, SIGNAL( activated() ), 759 connect( action, SIGNAL( activated() ),
757 mView->viewManager(), SLOT( showTimeSpanView() ) ); 760 mView->viewManager(), SLOT( showTimeSpanView() ) );
758#endif 761#endif
759 762
760 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 763 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
761 this ); 764 this );
762 mNewSubTodoAction->addTo( actionMenu ); 765 mNewSubTodoAction->addTo( actionMenu );
763 connect( mNewSubTodoAction, SIGNAL( activated() ), 766 connect( mNewSubTodoAction, SIGNAL( activated() ),
764 mView, SLOT( newSubTodo() ) ); 767 mView, SLOT( newSubTodo() ) );
765 768
766 actionMenu->insertSeparator(); 769 actionMenu->insertSeparator();
767 770
768 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this ); 771 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this );
769 mShowAction->addTo( actionMenu ); 772 mShowAction->addTo( actionMenu );
770 connect( mShowAction, SIGNAL( activated() ), 773 connect( mShowAction, SIGNAL( activated() ),
771 mView, SLOT( showIncidence() ) ); 774 mView, SLOT( showIncidence() ) );
772 775
773 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 776 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
774 mEditAction->addTo( actionMenu ); 777 mEditAction->addTo( actionMenu );
775 connect( mEditAction, SIGNAL( activated() ), 778 connect( mEditAction, SIGNAL( activated() ),
776 mView, SLOT( editIncidence() ) ); 779 mView, SLOT( editIncidence() ) );
777 780
778 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 781 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
779 mDeleteAction->addTo( actionMenu ); 782 mDeleteAction->addTo( actionMenu );
780 connect( mDeleteAction, SIGNAL( activated() ), 783 connect( mDeleteAction, SIGNAL( activated() ),
781 mView, SLOT( deleteIncidence() ) ); 784 mView, SLOT( deleteIncidence() ) );
782 785
783 786
784 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 787 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
785 mCloneAction->addTo( actionMenu ); 788 mCloneAction->addTo( actionMenu );
786 connect( mCloneAction, SIGNAL( activated() ), 789 connect( mCloneAction, SIGNAL( activated() ),
787 mView, SLOT( cloneIncidence() ) ); 790 mView, SLOT( cloneIncidence() ) );
788 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 791 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
789 mMoveAction->addTo( actionMenu ); 792 mMoveAction->addTo( actionMenu );
790 connect( mMoveAction, SIGNAL( activated() ), 793 connect( mMoveAction, SIGNAL( activated() ),
791 mView, SLOT( moveIncidence() ) ); 794 mView, SLOT( moveIncidence() ) );
792 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 795 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
793 mBeamAction->addTo( actionMenu ); 796 mBeamAction->addTo( actionMenu );
794 connect( mBeamAction, SIGNAL( activated() ), 797 connect( mBeamAction, SIGNAL( activated() ),
795 mView, SLOT( beamIncidence() ) ); 798 mView, SLOT( beamIncidence() ) );
796 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 799 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
797 mCancelAction->addTo( actionMenu ); 800 mCancelAction->addTo( actionMenu );
798 connect( mCancelAction, SIGNAL( activated() ), 801 connect( mCancelAction, SIGNAL( activated() ),
799 mView, SLOT( toggleCancelIncidence() ) ); 802 mView, SLOT( toggleCancelIncidence() ) );
800 803
801 actionMenu->insertSeparator(); 804 actionMenu->insertSeparator();
802 805
803 action = new QAction( "purge_completed", i18n("Purge Completed"), 0, 806 action = new QAction( "purge_completed", i18n("Purge Completed"), 0,
804 this ); 807 this );
805 action->addTo( actionMenu ); 808 action->addTo( actionMenu );
806 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 809 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
807 810
808 icon = loadPixmap( pathString + "search" ); 811 icon = loadPixmap( pathString + "search" );
809 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 812 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
810 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 4); 813 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 4);
811 search_action->addTo( actionMenu ); 814 search_action->addTo( actionMenu );
812 connect( search_action, SIGNAL( activated() ), 815 connect( search_action, SIGNAL( activated() ),
813 mView->dialogManager(), SLOT( showSearchDialog() ) ); 816 mView->dialogManager(), SLOT( showSearchDialog() ) );
814 817
815 818
816 819
817 if ( KOPrefs::instance()->mShowFullMenu ) { 820 if ( KOPrefs::instance()->mShowFullMenu ) {
818 actionMenu->insertSeparator(); 821 actionMenu->insertSeparator();
819 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 822 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
820 823
821 } 824 }
822 // actionMenu->insertSeparator(); 825 // actionMenu->insertSeparator();
823 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 826 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
824 this ); 827 this );
825 action->addTo( importMenu ); 828 action->addTo( importMenu );
826 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 829 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
827 action = new QAction( "import_quick", i18n("Import last file"), 0, 830 action = new QAction( "import_quick", i18n("Import last file"), 0,
828 this ); 831 this );
829 action->addTo( importMenu ); 832 action->addTo( importMenu );
830 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 833 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
831 importMenu->insertSeparator(); 834 importMenu->insertSeparator();
832 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 835 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
833 this ); 836 this );
834 action->addTo( importMenu ); 837 action->addTo( importMenu );
835 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 838 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
836 //#ifndef DESKTOP_VERSION 839 //#ifndef DESKTOP_VERSION
837 importMenu->insertSeparator(); 840 importMenu->insertSeparator();
838 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 841 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
839 this ); 842 this );
840 action->addTo( importMenu ); 843 action->addTo( importMenu );
841 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 844 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
842 //#else 845 //#else
843#ifdef _OL_IMPORT_ 846#ifdef _OL_IMPORT_
844 importMenu->insertSeparator(); 847 importMenu->insertSeparator();
845 action = new QAction( "import_ol", i18n("Import from OL"), 0, 848 action = new QAction( "import_ol", i18n("Import from OL"), 0,
846 this ); 849 this );
847 action->addTo( importMenu ); 850 action->addTo( importMenu );
848 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 851 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
849#endif 852#endif
850 //#endif 853 //#endif
851 854
852 importMenu->insertSeparator(); 855 importMenu->insertSeparator();
853 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 856 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
854 this ); 857 this );
855 action->addTo( importMenu ); 858 action->addTo( importMenu );
856 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 859 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
857 860
858 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0, 861 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0,
859 this ); 862 this );
860 action->addTo( importMenu ); 863 action->addTo( importMenu );
861 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 864 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
862 865
863 importMenu->insertSeparator(); 866 importMenu->insertSeparator();
864 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 867 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
865 this ); 868 this );
866 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 869 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
867 870
868 871
869 //LR 872 //LR
870 QPopupMenu *ex2phone = new QPopupMenu( this ); 873 QPopupMenu *ex2phone = new QPopupMenu( this );
871 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 874 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
872 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 875 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
873 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 876 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
874 importMenu->insertItem( i18n("Export to phone"), ex2phone ); 877 importMenu->insertItem( i18n("Export to phone"), ex2phone );
875 878
876 importMenu->insertSeparator(); 879 importMenu->insertSeparator();
877 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 880 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
878 this ); 881 this );
879 action->addTo( importMenu ); 882 action->addTo( importMenu );
880 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 883 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
881#ifndef DESKTOP_VERSION 884#ifndef DESKTOP_VERSION
882 importMenu->insertSeparator(); 885 importMenu->insertSeparator();
883 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0, 886 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0,
884 this ); 887 this );
885 brAction->addTo( importMenu ); 888 brAction->addTo( importMenu );
886 brAction->setToggleAction (true ) ; 889 brAction->setToggleAction (true ) ;
887 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 890 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
888 891
889 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 892 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
890 this ); 893 this );
891 action->addTo( importMenu ); 894 action->addTo( importMenu );
892 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 895 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
893 896
894 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 897 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
895 this ); 898 this );
896 action->addTo( importMenu ); 899 action->addTo( importMenu );
897 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 900 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
898#else 901#else
899 importMenu->insertSeparator(); 902 importMenu->insertSeparator();
900 icon = loadPixmap( pathString + "print" ); 903 icon = loadPixmap( pathString + "print" );
901 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 904 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
902 action->addTo( importMenu ); 905 action->addTo( importMenu );
903 connect( action, SIGNAL( activated() ), 906 connect( action, SIGNAL( activated() ),
904 this, SLOT( printCal() ) ); 907 this, SLOT( printCal() ) );
905 908
906 icon = loadPixmap( pathString + "print" ); 909 icon = loadPixmap( pathString + "print" );
907 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 910 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
908 action->addTo( importMenu ); 911 action->addTo( importMenu );
909 connect( action, SIGNAL( activated() ), 912 connect( action, SIGNAL( activated() ),
910 this, SLOT( printSel() ) ); 913 this, SLOT( printSel() ) );
911 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this ); 914 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this );
912 action->addTo( importMenu ); 915 action->addTo( importMenu );
913 connect( action, SIGNAL( activated() ), 916 connect( action, SIGNAL( activated() ),
914 mView->viewManager(), SIGNAL( printWNV() ) ); 917 mView->viewManager(), SIGNAL( printWNV() ) );
915#endif 918#endif
916 importMenu->insertSeparator(); 919 importMenu->insertSeparator();
917 action = new QAction( "beam all", i18n("Save"), 0, 920 action = new QAction( "beam all", i18n("Save"), 0,
918 this ); 921 this );
919 action->addTo( importMenu ); 922 action->addTo( importMenu );
920 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 923 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
921 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 924 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
922 this ); 925 this );
923 action->addTo( importMenu ); 926 action->addTo( importMenu );
924 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 927 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
925 928
926 //menuBar->insertItem( "Configure",configureMenu ); 929 //menuBar->insertItem( "Configure",configureMenu );
927 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 930 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
928 icon = loadPixmap( "korganizer/korganizer" ); 931 icon = loadPixmap( "korganizer/korganizer" );
929 932
930 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 933 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
931 action->addTo( helpMenu ); 934 action->addTo( helpMenu );
932 connect( action, SIGNAL( activated() ), 935 connect( action, SIGNAL( activated() ),
933 SLOT( whatsNew() ) ); 936 SLOT( whatsNew() ) );
934 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 937 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
935 action->addTo( helpMenu ); 938 action->addTo( helpMenu );
936 connect( action, SIGNAL( activated() ), 939 connect( action, SIGNAL( activated() ),
937 SLOT( features() ) ); 940 SLOT( features() ) );
938 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 941 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
939 action->addTo( helpMenu ); 942 action->addTo( helpMenu );
940 connect( action, SIGNAL( activated() ), 943 connect( action, SIGNAL( activated() ),
941 SLOT( keyBindings() ) ); 944 SLOT( keyBindings() ) );
942 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 945 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
943 action->addTo( helpMenu ); 946 action->addTo( helpMenu );
944 connect( action, SIGNAL( activated() ), 947 connect( action, SIGNAL( activated() ),
945 SLOT( synchowto() ) ); 948 SLOT( synchowto() ) );
946 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); 949 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this );
947 action->addTo( helpMenu ); 950 action->addTo( helpMenu );
948 connect( action, SIGNAL( activated() ), 951 connect( action, SIGNAL( activated() ),
949 SLOT( kdesynchowto() ) ); 952 SLOT( kdesynchowto() ) );
950 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this ); 953 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this );
951 action->addTo( helpMenu ); 954 action->addTo( helpMenu );
952 connect( action, SIGNAL( activated() ), 955 connect( action, SIGNAL( activated() ),
953 SLOT( multisynchowto() ) ); 956 SLOT( multisynchowto() ) );
954 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 957 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
955 action->addTo( helpMenu ); 958 action->addTo( helpMenu );
956 connect( action, SIGNAL( activated() ), 959 connect( action, SIGNAL( activated() ),
957 SLOT( aboutAutoSaving() ) ); 960 SLOT( aboutAutoSaving() ) );
958 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 961 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
959 action->addTo( helpMenu ); 962 action->addTo( helpMenu );
960 connect( action, SIGNAL( activated() ), 963 connect( action, SIGNAL( activated() ),
961 SLOT( aboutKnownBugs() ) ); 964 SLOT( aboutKnownBugs() ) );
962 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 965 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
963 action->addTo( helpMenu ); 966 action->addTo( helpMenu );
964 connect( action, SIGNAL( activated() ), 967 connect( action, SIGNAL( activated() ),
965 SLOT( usertrans() ) ); 968 SLOT( usertrans() ) );
966 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 969 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
967 action->addTo( helpMenu ); 970 action->addTo( helpMenu );
968 connect( action, SIGNAL( activated() ), 971 connect( action, SIGNAL( activated() ),
969 SLOT( faq() ) ); 972 SLOT( faq() ) );
970 action = new QAction( "licence", i18n("Licence..."), 0, this ); 973 action = new QAction( "licence", i18n("Licence..."), 0, this );
971 action->addTo( helpMenu ); 974 action->addTo( helpMenu );
972 connect( action, SIGNAL( activated() ), 975 connect( action, SIGNAL( activated() ),
973 SLOT( licence() ) ); 976 SLOT( licence() ) );
974 action = new QAction( "about", i18n("About..."), 0, this ); 977 action = new QAction( "about", i18n("About..."), 0, this );
975 action->addTo( helpMenu ); 978 action->addTo( helpMenu );
976 connect( action, SIGNAL( activated() ), 979 connect( action, SIGNAL( activated() ),
977 SLOT( about() ) ); 980 SLOT( about() ) );
978 //menuBar->insertSeparator(); 981 //menuBar->insertSeparator();
979 982
980 // ****************************************************** 983 // ******************************************************
981 // menubar icons 984 // menubar icons
982 985
983 986
984 iconToolBar->setHorizontalStretchable (true ); 987 iconToolBar->setHorizontalStretchable (true );
985 //menuBar->insertItem( iconToolBar ); 988 //menuBar->insertItem( iconToolBar );
986 //xdays_action 989 //xdays_action
987 if (p-> mShowIconNewEvent) 990 if (p-> mShowIconNewEvent)
988 ne_action->addTo( iconToolBar ); 991 ne_action->addTo( iconToolBar );
989 if (p->mShowIconNewTodo ) 992 if (p->mShowIconNewTodo )
990 nt_action->addTo( iconToolBar ); 993 nt_action->addTo( iconToolBar );
991 if (p-> mShowIconSearch) 994 if (p-> mShowIconSearch)
992 search_action->addTo( iconToolBar ); 995 search_action->addTo( iconToolBar );
993 if (p-> mShowIconNext) 996 if (p-> mShowIconNext)
994 whatsnext_action->addTo( iconToolBar ); 997 whatsnext_action->addTo( iconToolBar );
995 if (p-> mShowIconNextDays) 998 if (p-> mShowIconNextDays)
996 xdays_action->addTo( iconToolBar ); 999 xdays_action->addTo( iconToolBar );
997 if (p-> mShowIconList) 1000 if (p-> mShowIconList)
998 showlist_action->addTo( iconToolBar ); 1001 showlist_action->addTo( iconToolBar );
999 if (p-> mShowIconDay1) 1002 if (p-> mShowIconDay1)
1000 day1_action->addTo( iconToolBar ); 1003 day1_action->addTo( iconToolBar );
1001 if (p-> mShowIconDay5) 1004 if (p-> mShowIconDay5)
1002 day5_action->addTo( iconToolBar ); 1005 day5_action->addTo( iconToolBar );
1003 if (p-> mShowIconDay7) 1006 if (p-> mShowIconDay7)
1004 day7_action->addTo( iconToolBar ); 1007 day7_action->addTo( iconToolBar );
1005 if (p-> mShowIconDay6) 1008 if (p-> mShowIconDay6)
1006 day6_action->addTo( iconToolBar ); 1009 day6_action->addTo( iconToolBar );
1007 if (p-> mShowIconMonth) 1010 if (p-> mShowIconMonth)
1008 month_action->addTo( iconToolBar ); 1011 month_action->addTo( iconToolBar );
1009 if (p-> mShowIconTodoview) 1012 if (p-> mShowIconTodoview)
1010 todoview_action->addTo( iconToolBar ); 1013 todoview_action->addTo( iconToolBar );
1011 if (p-> mShowIconJournal) 1014 if (p-> mShowIconJournal)
1012 viewjournal_action->addTo( iconToolBar ); 1015 viewjournal_action->addTo( iconToolBar );
1013 icon = loadPixmap( pathString + "2leftarrowB" ); 1016 icon = loadPixmap( pathString + "2leftarrowB" );
1014 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14); 1017 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14);
1015 if (p-> mShowIconBackFast) { 1018 if (p-> mShowIconBackFast) {
1016 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 1019 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
1017 connect( action, SIGNAL( activated() ), 1020 connect( action, SIGNAL( activated() ),
1018 mView, SLOT( goPreviousMonth() ) ); 1021 mView, SLOT( goPreviousMonth() ) );
1019 action->addTo( iconToolBar ); 1022 action->addTo( iconToolBar );
1020 } 1023 }
1021 icon = loadPixmap( pathString + "1leftarrowB" ); 1024 icon = loadPixmap( pathString + "1leftarrowB" );
1022 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15); 1025 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15);
1023 if (p-> mShowIconBack) { 1026 if (p-> mShowIconBack) {
1024 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 1027 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
1025 connect( action, SIGNAL( activated() ), 1028 connect( action, SIGNAL( activated() ),
1026 mView, SLOT( goPrevious() ) ); 1029 mView, SLOT( goPrevious() ) );
1027 action->addTo( iconToolBar ); 1030 action->addTo( iconToolBar );
1028 } 1031 }
1029 icon = loadPixmap( pathString + "today" ); 1032 icon = loadPixmap( pathString + "today" );
1030 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 1033 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
1031 if (p-> mShowIconToday) 1034 if (p-> mShowIconToday)
1032 today_action->addTo( iconToolBar ); 1035 today_action->addTo( iconToolBar );
1033 icon = loadPixmap( pathString + "1rightarrowB" ); 1036 icon = loadPixmap( pathString + "1rightarrowB" );
1034 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 1037 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
1035 if (p-> mShowIconForward) { 1038 if (p-> mShowIconForward) {
1036 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 1039 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
1037 connect( action, SIGNAL( activated() ), 1040 connect( action, SIGNAL( activated() ),
1038 mView, SLOT( goNext() ) ); 1041 mView, SLOT( goNext() ) );
1039 action->addTo( iconToolBar ); 1042 action->addTo( iconToolBar );
1040 } 1043 }
1041 icon = loadPixmap( pathString + "2rightarrowB" ); 1044 icon = loadPixmap( pathString + "2rightarrowB" );
1042 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 1045 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
1043 if (p-> mShowIconForwardFast) { 1046 if (p-> mShowIconForwardFast) {
1044 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 1047 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
1045 connect( action, SIGNAL( activated() ), 1048 connect( action, SIGNAL( activated() ),
1046 mView, SLOT( goNextMonth() ) ); 1049 mView, SLOT( goNextMonth() ) );
1047 action->addTo( iconToolBar ); 1050 action->addTo( iconToolBar );
1048 } 1051 }
1049 1052
1050 1053
1051 configureToolBarMenu->insertItem(i18n("What's This?"), 300); 1054 configureToolBarMenu->insertItem(i18n("What's This?"), 300);
1052 1055
1053 if (p-> mShowIconNewEvent) 1056 if (p-> mShowIconNewEvent)
1054 configureToolBarMenu->setItemChecked( 10, true ); 1057 configureToolBarMenu->setItemChecked( 10, true );
1055 if (p->mShowIconNewTodo ) 1058 if (p->mShowIconNewTodo )
1056 configureToolBarMenu->setItemChecked( 20, true ); 1059 configureToolBarMenu->setItemChecked( 20, true );
1057 if (p-> mShowIconSearch) 1060 if (p-> mShowIconSearch)
1058 configureToolBarMenu->setItemChecked( 120, true ); 1061 configureToolBarMenu->setItemChecked( 120, true );
1059 if (p-> mShowIconList) 1062 if (p-> mShowIconList)
1060 configureToolBarMenu->setItemChecked( 30, true ); 1063 configureToolBarMenu->setItemChecked( 30, true );
1061 if (p-> mShowIconDay1) 1064 if (p-> mShowIconDay1)
1062 configureToolBarMenu->setItemChecked( 40, true ); 1065 configureToolBarMenu->setItemChecked( 40, true );
1063 if (p-> mShowIconDay5) 1066 if (p-> mShowIconDay5)
1064 configureToolBarMenu->setItemChecked( 50, true ); 1067 configureToolBarMenu->setItemChecked( 50, true );
1065 if (p-> mShowIconDay6) 1068 if (p-> mShowIconDay6)
1066 configureToolBarMenu->setItemChecked( 75, true ); 1069 configureToolBarMenu->setItemChecked( 75, true );
1067 if (p-> mShowIconDay7) 1070 if (p-> mShowIconDay7)
1068 configureToolBarMenu->setItemChecked( 60, true ); 1071 configureToolBarMenu->setItemChecked( 60, true );
1069 if (p-> mShowIconMonth) 1072 if (p-> mShowIconMonth)
1070 configureToolBarMenu->setItemChecked( 70, true ); 1073 configureToolBarMenu->setItemChecked( 70, true );
1071 if (p-> mShowIconTodoview) 1074 if (p-> mShowIconTodoview)
1072 configureToolBarMenu->setItemChecked( 80, true ); 1075 configureToolBarMenu->setItemChecked( 80, true );
1073 if (p-> mShowIconBackFast) 1076 if (p-> mShowIconBackFast)
1074 configureToolBarMenu->setItemChecked( 200, true ); 1077 configureToolBarMenu->setItemChecked( 200, true );
1075 if (p-> mShowIconBack) 1078 if (p-> mShowIconBack)
1076 configureToolBarMenu->setItemChecked( 210, true ); 1079 configureToolBarMenu->setItemChecked( 210, true );
1077 if (p-> mShowIconToday) 1080 if (p-> mShowIconToday)
1078 configureToolBarMenu->setItemChecked( 130, true ); 1081 configureToolBarMenu->setItemChecked( 130, true );
1079 if (p-> mShowIconForward) 1082 if (p-> mShowIconForward)
1080 configureToolBarMenu->setItemChecked( 220, true ); 1083 configureToolBarMenu->setItemChecked( 220, true );
1081 if (p-> mShowIconForwardFast) 1084 if (p-> mShowIconForwardFast)
1082 configureToolBarMenu->setItemChecked( 230, true ); 1085 configureToolBarMenu->setItemChecked( 230, true );
1083 if (p-> mShowIconNextDays) 1086 if (p-> mShowIconNextDays)
1084 configureToolBarMenu->setItemChecked( 100, true ); 1087 configureToolBarMenu->setItemChecked( 100, true );
1085 if (p-> mShowIconNext) 1088 if (p-> mShowIconNext)
1086 configureToolBarMenu->setItemChecked( 110, true ); 1089 configureToolBarMenu->setItemChecked( 110, true );
1087 if (p-> mShowIconJournal) 1090 if (p-> mShowIconJournal)
1088 configureToolBarMenu->setItemChecked( 90, true ); 1091 configureToolBarMenu->setItemChecked( 90, true );
1089 if (p-> mShowIconWhatsThis) 1092 if (p-> mShowIconWhatsThis)
1090 configureToolBarMenu->setItemChecked( 300, true ); 1093 configureToolBarMenu->setItemChecked( 300, true );
1091 if (p-> mShowIconWeekNum) 1094 if (p-> mShowIconWeekNum)
1092 configureToolBarMenu->setItemChecked( 400, true ); 1095 configureToolBarMenu->setItemChecked( 400, true );
1093 QLabel* dummy = new QLabel( iconToolBar ); 1096 QLabel* dummy = new QLabel( iconToolBar );
1094 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 1097 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
1095 if (!p-> mShowIconStretch) 1098 if (!p-> mShowIconStretch)
1096 iconToolBar->setStretchableWidget ( dummy ) ; 1099 iconToolBar->setStretchableWidget ( dummy ) ;
1097 else 1100 else
1098 configureToolBarMenu->setItemChecked( 5, true ); 1101 configureToolBarMenu->setItemChecked( 5, true );
1099 if (p-> mShowIconWhatsThis) 1102 if (p-> mShowIconWhatsThis)
1100 QWhatsThis::whatsThisButton ( iconToolBar ); 1103 QWhatsThis::whatsThisButton ( iconToolBar );
1101 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 1104 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
1102 configureAgenda( p->mHourSize ); 1105 configureAgenda( p->mHourSize );
1103 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 1106 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
1104} 1107}
1105 1108
1106void MainWindow::exportToPhone( int mode ) 1109void MainWindow::exportToPhone( int mode )
1107{ 1110{
1108 1111
1109 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1112 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1110 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1113 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1111 KOex2phonePrefs ex2phone; 1114 KOex2phonePrefs ex2phone;
1112 1115
1113 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 1116 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
1114 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 1117 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
1115 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1118 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
1116 if ( mode == 1 ) 1119 if ( mode == 1 )
1117 ex2phone.setCaption(i18n("Export complete calendar")); 1120 ex2phone.setCaption(i18n("Export complete calendar"));
1118 if ( mode == 2 ) 1121 if ( mode == 2 )
1119 ex2phone.setCaption(i18n("Export filtered calendar")); 1122 ex2phone.setCaption(i18n("Export filtered calendar"));
1120 1123
1121 if ( !ex2phone.exec() ) { 1124 if ( !ex2phone.exec() ) {
1122 return; 1125 return;
1123 } 1126 }
1124 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 1127 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1125 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 1128 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1126 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 1129 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1127 1130
1128 int inFuture = 0; 1131 int inFuture = 0;
1129 if ( ex2phone.mWriteBackFuture->isChecked() ) 1132 if ( ex2phone.mWriteBackFuture->isChecked() )
1130 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 1133 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1131 QPtrList<Incidence> delSel; 1134 QPtrList<Incidence> delSel;
1132 if ( mode == 1 ) 1135 if ( mode == 1 )
1133 delSel = mCalendar->rawIncidences(); 1136 delSel = mCalendar->rawIncidences();
1134 if ( mode == 2 ) 1137 if ( mode == 2 )
1135 delSel = mCalendar->incidences(); 1138 delSel = mCalendar->incidences();
1136 CalendarLocal* cal = new CalendarLocal(); 1139 CalendarLocal* cal = new CalendarLocal();
1137 cal->setLocalTime(); 1140 cal->setLocalTime();
1138 Incidence *incidence = delSel.first(); 1141 Incidence *incidence = delSel.first();
1139 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1142 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1140 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 1143 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1141 while ( incidence ) { 1144 while ( incidence ) {
1142 if ( incidence->type() != "Journal" ) { 1145 if ( incidence->type() != "Journal" ) {
1143 bool add = true; 1146 bool add = true;
1144 if ( inFuture ) { 1147 if ( inFuture ) {
1145 QDateTime dt; 1148 QDateTime dt;
1146 if ( incidence->type() == "Todo" ) { 1149 if ( incidence->type() == "Todo" ) {
1147 Todo * t = (Todo*)incidence; 1150 Todo * t = (Todo*)incidence;
1148 if ( t->hasDueDate() ) 1151 if ( t->hasDueDate() )
1149 dt = t->dtDue(); 1152 dt = t->dtDue();
1150 else 1153 else
1151 dt = cur.addSecs( 62 ); 1154 dt = cur.addSecs( 62 );
1152 } 1155 }
1153 else { 1156 else {
1154 bool ok; 1157 bool ok;
1155 dt = incidence->getNextOccurence( cur, &ok ); 1158 dt = incidence->getNextOccurence( cur, &ok );
1156 if ( !ok ) 1159 if ( !ok )
1157 dt = cur.addSecs( -62 ); 1160 dt = cur.addSecs( -62 );
1158 } 1161 }
1159 if ( dt < cur || dt > end ) { 1162 if ( dt < cur || dt > end ) {
1160 add = false; 1163 add = false;
1161 } 1164 }
1162 } 1165 }
1163 if ( add ) { 1166 if ( add ) {
1164 Incidence *in = incidence->clone(); 1167 Incidence *in = incidence->clone();
1165 cal->addIncidence( in ); 1168 cal->addIncidence( in );
1166 } 1169 }
1167 } 1170 }
1168 incidence = delSel.next(); 1171 incidence = delSel.next();
1169 } 1172 }
1170 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1173 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1171 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1174 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1172 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1175 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1173 1176
1174 setCaption( i18n("Writing to phone...")); 1177 setCaption( i18n("Writing to phone..."));
1175 if ( PhoneFormat::writeToPhone( cal ) ) 1178 if ( PhoneFormat::writeToPhone( cal ) )
1176 setCaption( i18n("Export to phone successful!")); 1179 setCaption( i18n("Export to phone successful!"));
1177 else 1180 else
1178 setCaption( i18n("Error exporting to phone!")); 1181 setCaption( i18n("Error exporting to phone!"));
1179 delete cal; 1182 delete cal;
1180} 1183}
1181 1184
1182 1185
1183void MainWindow::setDefaultPreferences() 1186void MainWindow::setDefaultPreferences()
1184{ 1187{
1185 KOPrefs *p = KOPrefs::instance(); 1188 KOPrefs *p = KOPrefs::instance();
1186 1189
1187 p->mCompactDialogs = true; 1190 p->mCompactDialogs = true;
1188 p->mConfirm = true; 1191 p->mConfirm = true;
1189 // p->mEnableQuickTodo = false; 1192 // p->mEnableQuickTodo = false;
1190 1193
1191} 1194}
1192 1195
1193QString MainWindow::resourcePath() 1196QString MainWindow::resourcePath()
1194{ 1197{
1195 return KGlobal::iconLoader()->iconPath(); 1198 return KGlobal::iconLoader()->iconPath();
1196} 1199}
1197 1200
1198void MainWindow::displayText( QString text ,QString cap ) 1201void MainWindow::displayText( QString text ,QString cap )
1199{ 1202{
1200 QDialog dia( this, "name", true ); ; 1203 QDialog dia( this, "name", true ); ;
1201 dia.setCaption( cap ); 1204 dia.setCaption( cap );
1202 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1205 QVBoxLayout* lay = new QVBoxLayout( &dia );
1203 lay->setSpacing( 3 ); 1206 lay->setSpacing( 3 );
1204 lay->setMargin( 3 ); 1207 lay->setMargin( 3 );
1205 QTextBrowser tb ( &dia ); 1208 QTextBrowser tb ( &dia );
1206 lay->addWidget( &tb ); 1209 lay->addWidget( &tb );
1207 tb.setText( text ); 1210 tb.setText( text );
1208#ifdef DESKTOP_VERSION 1211#ifdef DESKTOP_VERSION
1209 dia.resize( 640, 480); 1212 dia.resize( 640, 480);
1210#else 1213#else
1211 dia.showMaximized(); 1214 dia.showMaximized();
1212#endif 1215#endif
1213 dia.exec(); 1216 dia.exec();
1214} 1217}
1215 1218
1216void MainWindow::features() 1219void MainWindow::features()
1217{ 1220{
1218 1221
1219 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1222 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1220} 1223}
1221 1224
1222void MainWindow::usertrans() 1225void MainWindow::usertrans()
1223{ 1226{
1224 1227
1225 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1228 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1226} 1229}
1227 1230
1228void MainWindow::kdesynchowto() 1231void MainWindow::kdesynchowto()
1229{ 1232{
1230 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1233 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1231} 1234}
1232void MainWindow::multisynchowto() 1235void MainWindow::multisynchowto()
1233{ 1236{
1234 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1237 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1235} 1238}
1236void MainWindow::synchowto() 1239void MainWindow::synchowto()
1237{ 1240{
1238 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1241 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1239} 1242}
1240void MainWindow::faq() 1243void MainWindow::faq()
1241{ 1244{
1242 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1245 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1243 1246
1244} 1247}
1245void MainWindow::whatsNew() 1248void MainWindow::whatsNew()
1246{ 1249{
1247 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1250 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1248 1251
1249} 1252}
1250void MainWindow::licence() 1253void MainWindow::licence()
1251{ 1254{
1252 KApplication::showLicence(); 1255 KApplication::showLicence();
1253 1256
1254} 1257}
1255void MainWindow::about() 1258void MainWindow::about()
1256{ 1259{
1257 QString version; 1260 QString version;
1258#include <../version> 1261#include <../version>
1259 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1262 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1260 i18n("KOrganizer/Platform-independent\n") + 1263 i18n("KOrganizer/Platform-independent\n") +
1261 "(KO/Pi) " + version + " - " + 1264 "(KO/Pi) " + version + " - " +
1262 1265
1263#ifdef DESKTOP_VERSION 1266#ifdef DESKTOP_VERSION
1264 i18n("Desktop Edition\n") + 1267 i18n("Desktop Edition\n") +
1265#else 1268#else
1266 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") + 1269 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") +
1267#endif 1270#endif
1268 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.net --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") ); 1271 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.net --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") );
1269} 1272}
1270void MainWindow::keyBindings() 1273void MainWindow::keyBindings()
1271{ 1274{
1272 QString cap = i18n("KO/Pi Keys + Colors"); 1275 QString cap = i18n("KO/Pi Keys + Colors");
1273 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1276 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1274 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1277 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1275 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1278 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1276 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1279 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1277 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ 1280 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+
1278 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1281 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1279 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1282 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1280 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ 1283 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+
1281 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1284 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1282 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1285 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1283 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1286 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1284 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ 1287 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+
1285 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1288 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1286 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1289 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1287 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ 1290 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+
1288 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1291 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1289 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1292 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1290 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1293 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1291 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1294 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1292 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1295 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1293 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1296 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1294 i18n("<p><h3>In agenda view:</h3></p>\n") + 1297 i18n("<p><h3>In agenda view:</h3></p>\n") +
1295 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1298 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1296 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1299 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1297 i18n("<p><h3>In todo view:</h3></p>\n") + 1300 i18n("<p><h3>In todo view:</h3></p>\n") +
1298 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1301 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1299 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1302 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1300 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1303 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1301 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1304 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1302 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1305 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1303 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1306 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1304 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1307 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1305 i18n("<p><h3>In list view:</h3></p>\n") + 1308 i18n("<p><h3>In list view:</h3></p>\n") +
1306 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1309 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1307 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1310 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1308 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1311 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1309 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1312 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1310 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1313 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1311 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1314 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1312 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1315 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1313 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1316 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1314 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1317 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1315 i18n("<p><b>E</b>: Edit item</p>\n") + 1318 i18n("<p><b>E</b>: Edit item</p>\n") +
1316 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1319 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1317 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1320 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1318 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1321 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1319 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1322 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1320 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1323 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1321 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1324 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1322 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1325 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1323 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1326 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1324 i18n("<p><b>White</b>: Item readonly</p>\n"); 1327 i18n("<p><b>White</b>: Item readonly</p>\n");
1325 displayText( text, cap); 1328 displayText( text, cap);
1326} 1329}
1327void MainWindow::aboutAutoSaving() 1330void MainWindow::aboutAutoSaving()
1328{ 1331{
1329 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); 1332 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n");
1330 1333
1331 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); 1334 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text);
1332 1335
1333} 1336}
1334void MainWindow::aboutKnownBugs() 1337void MainWindow::aboutKnownBugs()
1335{ 1338{
diff --git a/pwmanager/pwmanager/listviewpwm.cpp b/pwmanager/pwmanager/listviewpwm.cpp
index 8d46fff..0df9431 100644
--- a/pwmanager/pwmanager/listviewpwm.cpp
+++ b/pwmanager/pwmanager/listviewpwm.cpp
@@ -1,121 +1,129 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * copyright (C) 2004 by Michael Buesch * 3 * copyright (C) 2004 by Michael Buesch *
4 * email: mbuesch@freenet.de * 4 * email: mbuesch@freenet.de *
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 version 2 * 7 * it under the terms of the GNU General Public License version 2 *
8 * as published by the Free Software Foundation. * 8 * as published by the Free Software Foundation. *
9 * * 9 * *
10 ***************************************************************************/ 10 ***************************************************************************/
11 11
12/*************************************************************************** 12/***************************************************************************
13 * copyright (C) 2004 by Ulf Schenk 13 * copyright (C) 2004 by Ulf Schenk
14 * This file is originaly based on version 1.0.1 of pwmanager 14 * This file is originaly based on version 1.0.1 of pwmanager
15 * and was modified to run on embedded devices that run microkde 15 * and was modified to run on embedded devices that run microkde
16 * 16 *
17 * $Id$ 17 * $Id$
18 **************************************************************************/ 18 **************************************************************************/
19 19
20#include "listviewpwm.h" 20#include "listviewpwm.h"
21#include "pwmexception.h" 21#include "pwmexception.h"
22#include "pwmview.h" 22#include "pwmview.h"
23 23
24#include <qpainter.h> 24#include <qpainter.h>
25#include <qpixmap.h> 25#include <qpixmap.h>
26 26
27#include <kiconloader.h> 27#include <kiconloader.h>
28 28
29#ifdef PWM_EMBEDDED 29#ifdef PWM_EMBEDDED
30#include <kglobal.h> 30#include <kglobal.h>
31#endif 31#endif
32 32
33ListViewPwM::ListViewPwM(QWidget *parent, const char *name) 33ListViewPwM::ListViewPwM(QWidget *parent, const char *name)
34 : KListView(parent, name) 34 : KListView(parent, name)
35{ 35{
36 //setResizeMode(QListView::AllColumns); 36 //setResizeMode(QListView::AllColumns);
37 setAllColumnsShowFocus (true ); 37 setAllColumnsShowFocus (true );
38} 38}
39 39
40bool ListViewPwM::event(QEvent *e) 40bool ListViewPwM::event(QEvent *e)
41{ 41{
42 if (e->type() == QEvent::LayoutHint) 42 if (e->type() == QEvent::LayoutHint)
43 emit layoutChanged(); 43 emit layoutChanged();
44 if (e->type() == QEvent::KeyPress) { 44 if (e->type() == QEvent::KeyPress) {
45 QKeyEvent* ke = (QKeyEvent*) e; 45 QKeyEvent* ke = (QKeyEvent*) e;
46 if ( ke->key() == Qt::Key_Space) { 46 if ( ke->key() == Qt::Key_Space) {
47 emit toggleOverview(); 47 emit toggleOverview();
48 return true; 48 return true;
49 } 49 }
50 if ( ke->key() == Qt::Key_I || ke->key() == Qt::Key_N || ke->key() == Qt::Key_Insert) {
51 emit insertPW();
52 return true;
53 }
54 if ( ke->key() == Qt::Key_Delete || ke->key() == Qt::Key_Backspace) {
55 emit deletePW();
56 return true;
57 }
50 58
51 } 59 }
52 return KListView::event(e); 60 return KListView::event(e);
53} 61}
54 62
55 63
56QPixmap * ListViewItemPwM::onPix = 0; 64QPixmap * ListViewItemPwM::onPix = 0;
57QPixmap * ListViewItemPwM::offPix = 0; 65QPixmap * ListViewItemPwM::offPix = 0;
58 66
59ListViewItemPwM::ListViewItemPwM(QListView *parent) 67ListViewItemPwM::ListViewItemPwM(QListView *parent)
60 : QCheckListItem(parent, "", QCheckListItem::CheckBox) 68 : QCheckListItem(parent, "", QCheckListItem::CheckBox)
61{ 69{
62 if (!onPix) { 70 if (!onPix) {
63 PWM_ASSERT(!offPix); 71 PWM_ASSERT(!offPix);
64 KIconLoader* picons; 72 KIconLoader* picons;
65#ifndef PWM_EMBEDDED 73#ifndef PWM_EMBEDDED
66 KIconLoader il; 74 KIconLoader il;
67 picons = &il; 75 picons = &il;
68#else 76#else
69 picons = KGlobal::iconLoader(); 77 picons = KGlobal::iconLoader();
70#endif 78#endif
71 79
72 KIconLoader il; 80 KIconLoader il;
73#ifndef PWM_EMBEDDED 81#ifndef PWM_EMBEDDED
74 static QPixmap onP(picons->loadIcon("button_ok", KIcon::Small)); 82 static QPixmap onP(picons->loadIcon("button_ok", KIcon::Small));
75#else 83#else
76 static QPixmap onP(picons->loadIcon("decrypted", KIcon::Small)); 84 static QPixmap onP(picons->loadIcon("decrypted", KIcon::Small));
77#endif 85#endif
78 onPix = &onP; 86 onPix = &onP;
79 static QPixmap offP(picons->loadIcon("encrypted", KIcon::Small)); 87 static QPixmap offP(picons->loadIcon("encrypted", KIcon::Small));
80 offPix = &offP; 88 offPix = &offP;
81 } 89 }
82} 90}
83 91
84void ListViewItemPwM::paintCell(QPainter *p, const QColorGroup &cg, 92void ListViewItemPwM::paintCell(QPainter *p, const QColorGroup &cg,
85 int column, int width, int align) 93 int column, int width, int align)
86{ 94{
87 // qDebug("ListViewItemPwM::paintCell column=%i", column); 95 // qDebug("ListViewItemPwM::paintCell column=%i", column);
88 if (!p) 96 if (!p)
89 return; 97 return;
90 //US BUG: 98 //US BUG:
91 if (column != COLUMN_DESC) { 99 if (column != COLUMN_DESC) {
92 QCheckListItem::paintCell(p, cg, column, width, align); 100 QCheckListItem::paintCell(p, cg, column, width, align);
93 return; 101 return;
94 } 102 }
95 QPixmap *curPix = isOn() ? onPix : offPix; 103 QPixmap *curPix = isOn() ? onPix : offPix;
96 int pixSpace = curPix->width(); 104 int pixSpace = curPix->width();
97 pixSpace += 4; 105 pixSpace += 4;
98#ifndef PWM_EMBEDDED 106#ifndef PWM_EMBEDDED
99 QRect window(p->viewport()); 107 QRect window(p->viewport());
100 // clear the rectangle (we have to clear it first. see QT doc) 108 // clear the rectangle (we have to clear it first. see QT doc)
101 p->eraseRect(0, 0, pixSpace, window.height()); 109 p->eraseRect(0, 0, pixSpace, window.height());
102 // now draw the pixmap 110 // now draw the pixmap
103 int y = (height() - curPix->height()) / 2; 111 int y = (height() - curPix->height()) / 2;
104 p->drawPixmap(1, y, *curPix); 112 p->drawPixmap(1, y, *curPix);
105 window.moveLeft(pixSpace); 113 window.moveLeft(pixSpace);
106 p->setViewport(window); 114 p->setViewport(window);
107#else 115#else
108 p->eraseRect(0, 0, pixSpace, height()); 116 p->eraseRect(0, 0, pixSpace, height());
109 // now draw the pixmap 117 // now draw the pixmap
110 int y = (height() - curPix->height()) / 2; 118 int y = (height() - curPix->height()) / 2;
111 p->drawPixmap(1, y, *curPix); 119 p->drawPixmap(1, y, *curPix);
112 p->translate( pixSpace, 0 ); 120 p->translate( pixSpace, 0 );
113 121
114#endif 122#endif
115 QListViewItem::paintCell(p, cg, column, width - pixSpace, align); 123 QListViewItem::paintCell(p, cg, column, width - pixSpace, align);
116 124
117} 125}
118 126
119#ifndef PWM_EMBEDDED 127#ifndef PWM_EMBEDDED
120#include "listviewpwm.moc" 128#include "listviewpwm.moc"
121#endif 129#endif
diff --git a/pwmanager/pwmanager/listviewpwm.h b/pwmanager/pwmanager/listviewpwm.h
index 840ee73..51008b8 100644
--- a/pwmanager/pwmanager/listviewpwm.h
+++ b/pwmanager/pwmanager/listviewpwm.h
@@ -1,58 +1,60 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * copyright (C) 2004 by Michael Buesch * 3 * copyright (C) 2004 by Michael Buesch *
4 * email: mbuesch@freenet.de * 4 * email: mbuesch@freenet.de *
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 version 2 * 7 * it under the terms of the GNU General Public License version 2 *
8 * as published by the Free Software Foundation. * 8 * as published by the Free Software Foundation. *
9 * * 9 * *
10 ***************************************************************************/ 10 ***************************************************************************/
11 11
12/*************************************************************************** 12/***************************************************************************
13 * copyright (C) 2004 by Ulf Schenk 13 * copyright (C) 2004 by Ulf Schenk
14 * This file is originaly based on version 1.0.1 of pwmanager 14 * This file is originaly based on version 1.0.1 of pwmanager
15 * and was modified to run on embedded devices that run microkde 15 * and was modified to run on embedded devices that run microkde
16 * 16 *
17 * $Id$ 17 * $Id$
18 **************************************************************************/ 18 **************************************************************************/
19 19
20#ifndef __LISTVIEW_H 20#ifndef __LISTVIEW_H
21#define __LISTVIEW_H 21#define __LISTVIEW_H
22 22
23#include <klistview.h> 23#include <klistview.h>
24 24
25/** PwManager implementation of the list view. 25/** PwManager implementation of the list view.
26 * Derived from KListView. 26 * Derived from KListView.
27 */ 27 */
28class ListViewPwM : public KListView 28class ListViewPwM : public KListView
29{ 29{
30 Q_OBJECT 30 Q_OBJECT
31public: 31public:
32 ListViewPwM(QWidget *parent = 0, const char *name = 0); 32 ListViewPwM(QWidget *parent = 0, const char *name = 0);
33 33
34signals: 34signals:
35 void layoutChanged(); 35 void layoutChanged();
36 void toggleOverview(); 36 void toggleOverview();
37 void insertPW();
38 void deletePW( );
37 39
38protected: 40protected:
39 virtual bool event(QEvent *e); 41 virtual bool event(QEvent *e);
40}; 42};
41 43
42class ListViewItemPwM : public QCheckListItem 44class ListViewItemPwM : public QCheckListItem
43{ 45{
44public: 46public:
45 ListViewItemPwM(QListView *parent); 47 ListViewItemPwM(QListView *parent);
46 48
47protected: 49protected:
48 void paintCell(QPainter *p, const QColorGroup &cg, 50 void paintCell(QPainter *p, const QColorGroup &cg,
49 int column, int width, int align); 51 int column, int width, int align);
50 52
51protected: 53protected:
52 /** pixmap to display for an item with state "on" */ 54 /** pixmap to display for an item with state "on" */
53 static QPixmap *onPix; 55 static QPixmap *onPix;
54 /** pixmap to display for an item with state "off" */ 56 /** pixmap to display for an item with state "off" */
55 static QPixmap *offPix; 57 static QPixmap *offPix;
56}; 58};
57 59
58#endif 60#endif
diff --git a/pwmanager/pwmanager/pwmview.cpp b/pwmanager/pwmanager/pwmview.cpp
index 0092692..2533487 100644
--- a/pwmanager/pwmanager/pwmview.cpp
+++ b/pwmanager/pwmanager/pwmview.cpp
@@ -1,621 +1,623 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * copyright (C) 2003, 2004 by Michael Buesch * 3 * copyright (C) 2003, 2004 by Michael Buesch *
4 * email: mbuesch@freenet.de * 4 * email: mbuesch@freenet.de *
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 version 2 * 7 * it under the terms of the GNU General Public License version 2 *
8 * as published by the Free Software Foundation. * 8 * as published by the Free Software Foundation. *
9 * * 9 * *
10 ***************************************************************************/ 10 ***************************************************************************/
11 11
12/*************************************************************************** 12/***************************************************************************
13 * copyright (C) 2004 by Ulf Schenk 13 * copyright (C) 2004 by Ulf Schenk
14 * This file is originaly based on version 1.0.1 of pwmanager 14 * This file is originaly based on version 1.0.1 of pwmanager
15 * and was modified to run on embedded devices that run microkde 15 * and was modified to run on embedded devices that run microkde
16 * 16 *
17 * $Id$ 17 * $Id$
18 **************************************************************************/ 18 **************************************************************************/
19 19
20#include "pwmview.h" 20#include "pwmview.h"
21#include "pwmexception.h" 21#include "pwmexception.h"
22#include "globalstuff.h" 22#include "globalstuff.h"
23#include "pwm.h" 23#include "pwm.h"
24#include "rencatwnd.h" 24#include "rencatwnd.h"
25#ifndef PWM_EMBEDDED 25#ifndef PWM_EMBEDDED
26#include "configuration.h" 26#include "configuration.h"
27#else 27#else
28#include "pwmprefs.h" 28#include "pwmprefs.h"
29#endif 29#endif
30#include "commentbox.h" 30#include "commentbox.h"
31 31
32#include <kmessagebox.h> 32#include <kmessagebox.h>
33#include <klocale.h> 33#include <klocale.h>
34 34
35#include <qlineedit.h> 35#include <qlineedit.h>
36#include <qpoint.h> 36#include <qpoint.h>
37#include <qapplication.h> 37#include <qapplication.h>
38#include <qlayout.h> 38#include <qlayout.h>
39 39
40//US ENH: wouldn't it be a good idea if we could use this consts everywhere else. 40//US ENH: wouldn't it be a good idea if we could use this consts everywhere else.
41//US ENH: for examle in listviewpwm.cpp 41//US ENH: for examle in listviewpwm.cpp
42//US ENH: Because of that I transfer them into the headerfile. 42//US ENH: Because of that I transfer them into the headerfile.
43/* 43/*
44 #define COLUMN_DESC 0 44 #define COLUMN_DESC 0
45 #define COLUMN_NAME 1 45 #define COLUMN_NAME 1
46 #define COLUMN_PW 2 46 #define COLUMN_PW 2
47 #define COLUMN_URL 3 47 #define COLUMN_URL 3
48 #define COLUMN_LAUNCHER 4 48 #define COLUMN_LAUNCHER 4
49*/ 49*/
50 50
51PwMView::PwMView(PwM *_mainClass, 51PwMView::PwMView(PwM *_mainClass,
52 QWidget *parent, PwMDoc *_doc, 52 QWidget *parent, PwMDoc *_doc,
53 const char *name) 53 const char *name)
54 : PwMViewStyle(parent, name) 54 : PwMViewStyle(parent, name)
55{ 55{
56 PWM_ASSERT(_mainClass); 56 PWM_ASSERT(_mainClass);
57 PWM_ASSERT(parent); 57 PWM_ASSERT(parent);
58 PWM_ASSERT(_doc); 58 PWM_ASSERT(_doc);
59 setView(this); 59 setView(this);
60 doc = _doc; 60 doc = _doc;
61 doc->setListViewPointer(this); 61 doc->setListViewPointer(this);
62 mainClass = _mainClass; 62 mainClass = _mainClass;
63 resize(_mainClass->size()); 63 resize(_mainClass->size());
64 initStyle(conf()->confWndMainViewStyle()); 64 initStyle(conf()->confWndMainViewStyle());
65 initCtxMenu(); 65 initCtxMenu();
66 doc->setCurrentView(this); 66 doc->setCurrentView(this);
67 connect(doc, SIGNAL(dataChanged(PwMDoc *)), this, SLOT(updateView())); 67 connect(doc, SIGNAL(dataChanged(PwMDoc *)), this, SLOT(updateView()));
68 connect(this, SIGNAL(editPW()), mainClass, SLOT(editPwd_slot())); 68 connect(this, SIGNAL(editPW()), mainClass, SLOT(editPwd_slot()));
69 connect(this, SIGNAL(insertPW()), mainClass, SLOT(addPwd_slot()));
70 connect(this, SIGNAL(deletePW()), mainClass, SLOT(deletePwd_slot()));
69} 71}
70 72
71PwMView::~PwMView() 73PwMView::~PwMView()
72{ 74{
73} 75}
74 76
75void PwMView::initCtxMenu() 77void PwMView::initCtxMenu()
76{ 78{
77 ctxMenu = new QPopupMenu(this); 79 ctxMenu = new QPopupMenu(this);
78 ctxMenu->insertItem(i18n("&Add password"), mainClass, SLOT(addPwd_slot())); 80 ctxMenu->insertItem(i18n("&Add password"), mainClass, SLOT(addPwd_slot()));
79 ctxMenu->insertSeparator(); 81 ctxMenu->insertSeparator();
80 ctxMenu->insertItem(i18n("&Edit"), mainClass, SLOT(editPwd_slot())); 82 ctxMenu->insertItem(i18n("&Edit"), mainClass, SLOT(editPwd_slot()));
81 ctxMenu->insertItem(i18n("&Delete"), mainClass, SLOT(deletePwd_slot())); 83 ctxMenu->insertItem(i18n("&Delete"), mainClass, SLOT(deletePwd_slot()));
82 ctxMenu->insertSeparator(); 84 ctxMenu->insertSeparator();
83 ctxMenu->insertItem(i18n("copy password to clipboard"), 85 ctxMenu->insertItem(i18n("copy password to clipboard"),
84 this, SLOT(copyPwToClip())); 86 this, SLOT(copyPwToClip()));
85 ctxMenu->insertItem(i18n("copy username to clipboard"), 87 ctxMenu->insertItem(i18n("copy username to clipboard"),
86 this, SLOT(copyNameToClip())); 88 this, SLOT(copyNameToClip()));
87 ctxMenu->insertItem(i18n("copy description to clipboard"), 89 ctxMenu->insertItem(i18n("copy description to clipboard"),
88 this, SLOT(copyDescToClip())); 90 this, SLOT(copyDescToClip()));
89 ctxMenu->insertItem(i18n("copy url to clipboard"), 91 ctxMenu->insertItem(i18n("copy url to clipboard"),
90 this, SLOT(copyUrlToClip())); 92 this, SLOT(copyUrlToClip()));
91 ctxMenu->insertItem(i18n("copy launcher to clipboard"), 93 ctxMenu->insertItem(i18n("copy launcher to clipboard"),
92 this, SLOT(copyLauncherToClip())); 94 this, SLOT(copyLauncherToClip()));
93 ctxMenu->insertItem(i18n("copy comment to clipboard"), 95 ctxMenu->insertItem(i18n("copy comment to clipboard"),
94 this, SLOT(copyCommentToClip())); 96 this, SLOT(copyCommentToClip()));
95 ctxMenu->insertSeparator(); 97 ctxMenu->insertSeparator();
96 ctxMenu->insertItem(i18n("Execute \"Launcher\""), mainClass, 98 ctxMenu->insertItem(i18n("Execute \"Launcher\""), mainClass,
97 SLOT(execLauncher_slot())); 99 SLOT(execLauncher_slot()));
98 ctxMenu->insertItem(i18n("Go to \"URL\""), mainClass, 100 ctxMenu->insertItem(i18n("Go to \"URL\""), mainClass,
99 SLOT(goToURL_slot())); 101 SLOT(goToURL_slot()));
100} 102}
101 103
102void PwMView::resizeEvent(QResizeEvent *) 104void PwMView::resizeEvent(QResizeEvent *)
103{ 105{
104 resizeView(size()); 106 resizeView(size());
105} 107}
106 108
107void PwMView::refreshCommentTextEdit(QListViewItem *curItem) 109void PwMView::refreshCommentTextEdit(QListViewItem *curItem)
108{ 110{
109 PWM_ASSERT(commentBox); 111 PWM_ASSERT(commentBox);
110 if (!curItem) 112 if (!curItem)
111 return; 113 return;
112 string comment; 114 string comment;
113 PwMerror ret; 115 PwMerror ret;
114 ret = document()->getCommentByLvp_long(getCurrentCategory(), 116 ret = document()->getCommentByLvp_long(getCurrentCategory(),
115 lv->childCount() - lv->itemIndex(curItem) - 1, 117 lv->childCount() - lv->itemIndex(curItem) - 1,
116 &comment); 118 &comment);
117 if (ret == e_binEntry) { 119 if (ret == e_binEntry) {
118 commentBox->setContent(i18n("This is a binary entry.\n" 120 commentBox->setContent(i18n("This is a binary entry.\n"
119 "It is not a normal password-entry, as it contains " 121 "It is not a normal password-entry, as it contains "
120 "binary data, which PwManager can't display here.")); 122 "binary data, which PwManager can't display here."));
121 } else if (ret == e_normalEntry) { 123 } else if (ret == e_normalEntry) {
122 commentBox->setContent(comment.c_str()); 124 commentBox->setContent(comment.c_str());
123 } else { 125 } else {
124 BUG(); 126 BUG();
125 return; 127 return;
126 } 128 }
127 lv->ensureItemVisible(curItem); 129 lv->ensureItemVisible(curItem);
128} 130}
129 131
130void PwMView::keyReleaseEvent(QKeyEvent * /*e*/) 132void PwMView::keyReleaseEvent(QKeyEvent * /*e*/)
131{ 133{
132 refreshCommentTextEdit(lv->currentItem()); 134 refreshCommentTextEdit(lv->currentItem());
133} 135}
134 136
135bool PwMView::getCurEntryIndex(unsigned int *index) 137bool PwMView::getCurEntryIndex(unsigned int *index)
136{ 138{
137 QListViewItem *current = lv->currentItem(); 139 QListViewItem *current = lv->currentItem();
138 if (!current) 140 if (!current)
139 return false; 141 return false;
140 return getDocEntryIndex(index, current); 142 return getDocEntryIndex(index, current);
141} 143}
142 144
143bool PwMView::getDocEntryIndex(unsigned int *index, 145bool PwMView::getDocEntryIndex(unsigned int *index,
144 const QListViewItem *item) 146 const QListViewItem *item)
145{ 147{
146 vector<unsigned int> foundPositions; 148 vector<unsigned int> foundPositions;
147 PwMDataItem curItem; 149 PwMDataItem curItem;
148 curItem.desc = item->text(COLUMN_DESC).latin1(); 150 curItem.desc = item->text(COLUMN_DESC).latin1();
149 curItem.name = item->text(COLUMN_NAME).latin1(); 151 curItem.name = item->text(COLUMN_NAME).latin1();
150 document()->getCommentByLvp(getCurrentCategory(), 152 document()->getCommentByLvp(getCurrentCategory(),
151 lv->childCount() - lv->itemIndex(item) - 1, 153 lv->childCount() - lv->itemIndex(item) - 1,
152 &curItem.comment); 154 &curItem.comment);
153 curItem.url = item->text(COLUMN_URL).latin1(); 155 curItem.url = item->text(COLUMN_URL).latin1();
154 curItem.launcher = item->text(COLUMN_LAUNCHER).latin1(); 156 curItem.launcher = item->text(COLUMN_LAUNCHER).latin1();
155 document()->findEntry(getCurrentCategory(), curItem, SEARCH_IN_DESC | 157 document()->findEntry(getCurrentCategory(), curItem, SEARCH_IN_DESC |
156 SEARCH_IN_NAME | SEARCH_IN_COMMENT | SEARCH_IN_URL | 158 SEARCH_IN_NAME | SEARCH_IN_COMMENT | SEARCH_IN_URL |
157 SEARCH_IN_LAUNCHER, 159 SEARCH_IN_LAUNCHER,
158 &foundPositions, true); 160 &foundPositions, true);
159 if (foundPositions.size()) { 161 if (foundPositions.size()) {
160 *index = foundPositions[0]; 162 *index = foundPositions[0];
161 return true; 163 return true;
162 } 164 }
163 165
164 return false; 166 return false;
165} 167}
166 168
167void PwMView::handleToggle(QListViewItem *item) 169void PwMView::handleToggle(QListViewItem *item)
168{ 170{
169 PWM_ASSERT(doc); 171 PWM_ASSERT(doc);
170 if (!item) 172 if (!item)
171 return; 173 return;
172 QCheckListItem *clItem = (QCheckListItem *)item; 174 QCheckListItem *clItem = (QCheckListItem *)item;
173 QString curCat(getCurrentCategory()); 175 QString curCat(getCurrentCategory());
174 176
175 // find document position of this entry. 177 // find document position of this entry.
176 unsigned int curEntryDocIndex; 178 unsigned int curEntryDocIndex;
177 if (!getDocEntryIndex(&curEntryDocIndex, item)) 179 if (!getDocEntryIndex(&curEntryDocIndex, item))
178 return; 180 return;
179 181
180 // hack to refresh the comment, if only one item is present 182 // hack to refresh the comment, if only one item is present
181 if (lv->childCount() == 1) 183 if (lv->childCount() == 1)
182 refreshCommentTextEdit(lv->currentItem()); 184 refreshCommentTextEdit(lv->currentItem());
183 185
184 if (doc->isLocked(curCat, curEntryDocIndex) != clItem->isOn()) 186 if (doc->isLocked(curCat, curEntryDocIndex) != clItem->isOn())
185 return; // this is just a click somewhere on the entry 187 return; // this is just a click somewhere on the entry
186 if (doc->isDeepLocked()) { 188 if (doc->isDeepLocked()) {
187 PwMerror ret; 189 PwMerror ret;
188 ret = doc->deepLock(false); 190 ret = doc->deepLock(false);
189 if (ret != e_success) 191 if (ret != e_success)
190 clItem->setOn(false); 192 clItem->setOn(false);
191 return; 193 return;
192 } 194 }
193 doc->lockAt(curCat, curEntryDocIndex, !clItem->isOn()); 195 doc->lockAt(curCat, curEntryDocIndex, !clItem->isOn());
194} 196}
195 197
196void PwMView::handleRightClick(QListViewItem *item, const QPoint &point, int) 198void PwMView::handleRightClick(QListViewItem *item, const QPoint &point, int)
197{ 199{
198 if (!item) 200 if (!item)
199 return; 201 return;
200 ctxMenu->move(point); 202 ctxMenu->move(point);
201 /* don't use ctxMenu->exec() here, as it generates race conditions 203 /* don't use ctxMenu->exec() here, as it generates race conditions
202 * with the card interface code. Believe it or not. :) 204 * with the card interface code. Believe it or not. :)
203 */ 205 */
204 ctxMenu->show(); 206 ctxMenu->show();
205} 207}
206 208
207void PwMView::updateCategories() 209void PwMView::updateCategories()
208{ 210{
209 //qDebug("PwMView::updateCategories() "); 211 //qDebug("PwMView::updateCategories() ");
210 QString oldSel(getCurrentCategory()); 212 QString oldSel(getCurrentCategory());
211 delAllCategories(); 213 delAllCategories();
212 QStringList catList; 214 QStringList catList;
213 document()->getCategoryList(&catList); 215 document()->getCategoryList(&catList);
214 catList.sort(); 216 catList.sort();
215#ifndef PWM_EMBEDDED 217#ifndef PWM_EMBEDDED
216 QStringList::iterator i = catList.begin(), 218 QStringList::iterator i = catList.begin(),
217 end = catList.end(); 219 end = catList.end();
218#else 220#else
219 QStringList::Iterator i = catList.begin(), 221 QStringList::Iterator i = catList.begin(),
220 end = catList.end(); 222 end = catList.end();
221#endif 223#endif
222 while (i != end) { 224 while (i != end) {
223 addCategory(*i); 225 addCategory(*i);
224 ++i; 226 ++i;
225 } 227 }
226 selectCategory(oldSel); 228 selectCategory(oldSel);
227} 229}
228 230
229void PwMView::shiftToView() 231void PwMView::shiftToView()
230{ 232{
231 int cX = lv->contentsX(); 233 int cX = lv->contentsX();
232 int cY = lv->contentsY(); 234 int cY = lv->contentsY();
233 commentBox->clear(); 235 commentBox->clear();
234 236
235 unsigned int catDocIndex; 237 unsigned int catDocIndex;
236 if (unlikely( 238 if (unlikely(
237 !(document()->findCategory(getCurrentCategory(), 239 !(document()->findCategory(getCurrentCategory(),
238 &catDocIndex)))) { 240 &catDocIndex)))) {
239 BUG(); 241 BUG();
240 } 242 }
241 243
242 // ensure all listViewPos are set 244 // ensure all listViewPos are set
243 doc->ensureLvp(); 245 doc->ensureLvp();
244 246
245 // clear all tmp-data vectors 247 // clear all tmp-data vectors
246 unsigned int i, entries = doc->numEntries(catDocIndex); 248 unsigned int i, entries = doc->numEntries(catDocIndex);
247 if (entries) { 249 if (entries) {
248 mainClass->setVirgin(false); 250 mainClass->setVirgin(false);
249 } 251 }
250 vector<PwMDataItem> tmpSorted; 252 vector<PwMDataItem> tmpSorted;
251 PwMDataItem currItem; 253 PwMDataItem currItem;
252 currItem.clear(); 254 currItem.clear();
253 tmpSorted.insert(tmpSorted.begin(), entries, currItem); 255 tmpSorted.insert(tmpSorted.begin(), entries, currItem);
254 256
255 // Sort items and store them in tempoary tmpSorted. 257 // Sort items and store them in tempoary tmpSorted.
256 for (i = 0; i < entries; ++i) { 258 for (i = 0; i < entries; ++i) {
257 doc->getEntry(catDocIndex, i, &currItem); 259 doc->getEntry(catDocIndex, i, &currItem);
258 //qDebug("PwMView::shiftToView: %s, %i", currItem.desc.c_str(), currItem.listViewPos); 260 //qDebug("PwMView::shiftToView: %s, %i", currItem.desc.c_str(), currItem.listViewPos);
259 tmpSorted[currItem.listViewPos] = currItem; 261 tmpSorted[currItem.listViewPos] = currItem;
260 } 262 }
261 263
262 // shift tempoary data to ListView. 264 // shift tempoary data to ListView.
263 tmpDisableSort(); 265 tmpDisableSort();
264 lv->clear(); 266 lv->clear();
265 267
266 //US ENH: adjust the headers of the table according the category texts 268 //US ENH: adjust the headers of the table according the category texts
267 { 269 {
268 PwMCategoryItem* catItem = doc->getCategoryEntry(catDocIndex); 270 PwMCategoryItem* catItem = doc->getCategoryEntry(catDocIndex);
269 // qDebug("PwMView::ShiftToView CAT: %i, %s", catDocIndex, catItem->name.c_str()); 271 // qDebug("PwMView::ShiftToView CAT: %i, %s", catDocIndex, catItem->name.c_str());
270 lv->setColumnText(COLUMN_DESC, catItem->desc_text.c_str()); 272 lv->setColumnText(COLUMN_DESC, catItem->desc_text.c_str());
271 lv->setColumnText(COLUMN_NAME, catItem->name_text.c_str()); 273 lv->setColumnText(COLUMN_NAME, catItem->name_text.c_str());
272 lv->setColumnText(COLUMN_PW, catItem->pw_text.c_str()); 274 lv->setColumnText(COLUMN_PW, catItem->pw_text.c_str());
273 } 275 }
274 276
275 QCheckListItem *newItem; 277 QCheckListItem *newItem;
276 vector<PwMDataItem>::iterator it = tmpSorted.begin(), 278 vector<PwMDataItem>::iterator it = tmpSorted.begin(),
277 end = tmpSorted.end(); 279 end = tmpSorted.end();
278 while (it != end) { 280 while (it != end) {
279 newItem = new ListViewItemPwM(lv); 281 newItem = new ListViewItemPwM(lv);
280 newItem->setText(COLUMN_DESC, (*it).desc.c_str()); 282 newItem->setText(COLUMN_DESC, (*it).desc.c_str());
281 if ((*it).binary) { 283 if ((*it).binary) {
282 newItem->setText(COLUMN_NAME, ""); 284 newItem->setText(COLUMN_NAME, "");
283 newItem->setText(COLUMN_PW, i18n("<BINARY ENTRY>")); 285 newItem->setText(COLUMN_PW, i18n("<BINARY ENTRY>"));
284 newItem->setText(COLUMN_URL, ""); 286 newItem->setText(COLUMN_URL, "");
285 newItem->setText(COLUMN_LAUNCHER, (*it).launcher.c_str()); 287 newItem->setText(COLUMN_LAUNCHER, (*it).launcher.c_str());
286 } else { 288 } else {
287 newItem->setText(COLUMN_NAME, (*it).name.c_str()); 289 newItem->setText(COLUMN_NAME, (*it).name.c_str());
288 if ((*it).lockStat) { 290 if ((*it).lockStat) {
289 newItem->setText(COLUMN_PW, QString((*it).pw.c_str()) 291 newItem->setText(COLUMN_PW, QString((*it).pw.c_str())
290 + " " 292 + " "
291 + i18n("To unlock click the icon on the left.")); 293 + i18n("To unlock click the icon on the left."));
292 } else { 294 } else {
293 newItem->setText(COLUMN_PW, (*it).pw.c_str()); 295 newItem->setText(COLUMN_PW, (*it).pw.c_str());
294 } 296 }
295 newItem->setText(COLUMN_URL, (*it).url.c_str()); 297 newItem->setText(COLUMN_URL, (*it).url.c_str());
296 newItem->setText(COLUMN_LAUNCHER, (*it).launcher.c_str()); 298 newItem->setText(COLUMN_LAUNCHER, (*it).launcher.c_str());
297 } 299 }
298 newItem->setOn(!((*it).lockStat)); 300 newItem->setOn(!((*it).lockStat));
299 lv->insertItem(newItem); 301 lv->insertItem(newItem);
300 ++it; 302 ++it;
301 } 303 }
302 tmpReEnableSort(); 304 tmpReEnableSort();
303 305
304 if (cY || cX) 306 if (cY || cX)
305 lv->setContentsPos(cX, cY); 307 lv->setContentsPos(cX, cY);
306} 308}
307 309
308void PwMView::reorgLp() 310void PwMView::reorgLp()
309{ 311{
310 if (!lv->childCount()) 312 if (!lv->childCount())
311 return; 313 return;
312 PWM_ASSERT(doc); 314 PWM_ASSERT(doc);
313 PWM_ASSERT(!doc->isDocEmpty()); 315 PWM_ASSERT(!doc->isDocEmpty());
314 QListViewItem *currItem; 316 QListViewItem *currItem;
315 vector<unsigned int> foundPos; 317 vector<unsigned int> foundPos;
316 /* This searchIn _should_ be: 318 /* This searchIn _should_ be:
317 *const unsigned int searchIn = SEARCH_IN_DESC; 319 *const unsigned int searchIn = SEARCH_IN_DESC;
318 * But we want backward compatibility (see comment in PwMDoc::addEntry()). 320 * But we want backward compatibility (see comment in PwMDoc::addEntry()).
319 * So we need to search again, if we don't find the entry. (see below) 321 * So we need to search again, if we don't find the entry. (see below)
320 */ 322 */
321 const unsigned int searchIn = SEARCH_IN_DESC | SEARCH_IN_NAME | 323 const unsigned int searchIn = SEARCH_IN_DESC | SEARCH_IN_NAME |
322 SEARCH_IN_URL | SEARCH_IN_LAUNCHER; 324 SEARCH_IN_URL | SEARCH_IN_LAUNCHER;
323 QString curCat(getCurrentCategory()); 325 QString curCat(getCurrentCategory());
324 PwMDataItem findThis; 326 PwMDataItem findThis;
325 unsigned int i, cnt = lv->childCount(); 327 unsigned int i, cnt = lv->childCount();
326 for (i = 0; i < cnt; ++i) { 328 for (i = 0; i < cnt; ++i) {
327 currItem = lv->itemAtIndex(i); 329 currItem = lv->itemAtIndex(i);
328 findThis.desc = currItem->text(COLUMN_DESC).latin1(); 330 findThis.desc = currItem->text(COLUMN_DESC).latin1();
329 findThis.name = currItem->text(COLUMN_NAME).latin1(); 331 findThis.name = currItem->text(COLUMN_NAME).latin1();
330 findThis.url = currItem->text(COLUMN_URL).latin1(); 332 findThis.url = currItem->text(COLUMN_URL).latin1();
331 findThis.launcher = currItem->text(COLUMN_LAUNCHER).latin1(); 333 findThis.launcher = currItem->text(COLUMN_LAUNCHER).latin1();
332 doc->findEntry(curCat, findThis, searchIn, 334 doc->findEntry(curCat, findThis, searchIn,
333 &foundPos, true); 335 &foundPos, true);
334 if (!foundPos.size()) { 336 if (!foundPos.size()) {
335 /* Did not find the entry. We seem to have a binary 337 /* Did not find the entry. We seem to have a binary
336 * entry here (pray for it!). So search again with 338 * entry here (pray for it!). So search again with
337 * the "correct" searchIn flags. 339 * the "correct" searchIn flags.
338 */ 340 */
339 const unsigned int searchIn2 = SEARCH_IN_DESC; 341 const unsigned int searchIn2 = SEARCH_IN_DESC;
340 doc->findEntry(curCat, findThis, searchIn2, 342 doc->findEntry(curCat, findThis, searchIn2,
341 &foundPos, true); 343 &foundPos, true);
342 if (unlikely(!foundPos.size())) { 344 if (unlikely(!foundPos.size())) {
343 BUG(); 345 BUG();
344 continue; 346 continue;
345 } 347 }
346 /* We assert that it's a binary entry, now. 348 /* We assert that it's a binary entry, now.
347 * No chance to efficiently verify it here. 349 * No chance to efficiently verify it here.
348 */ 350 */
349 } 351 }
350 doc->setListViewPos(curCat, foundPos[0], cnt - i - 1); 352 doc->setListViewPos(curCat, foundPos[0], cnt - i - 1);
351 } 353 }
352} 354}
353 355
354void PwMView::selAt(int index) 356void PwMView::selAt(int index)
355{ 357{
356 QListViewItem *item = lv->itemAtIndex(index); 358 QListViewItem *item = lv->itemAtIndex(index);
357 if (!item) 359 if (!item)
358 return; 360 return;
359 lv->setCurrentItem(item); 361 lv->setCurrentItem(item);
360 lv->ensureItemVisible(item); 362 lv->ensureItemVisible(item);
361} 363}
362 364
363void PwMView::renCatButton_slot() 365void PwMView::renCatButton_slot()
364{ 366{
365 if (doc->isDeepLocked()) 367 if (doc->isDeepLocked())
366 return; 368 return;
367 RenCatWnd wnd(this); 369 RenCatWnd wnd(this);
368 if (wnd.exec() == 1) { 370 if (wnd.exec() == 1) {
369 QString newName(wnd.getNewName()); 371 QString newName(wnd.getNewName());
370 if (newName == "") 372 if (newName == "")
371 return; 373 return;
372 document()->renameCategory(getCurrentCategory(), 374 document()->renameCategory(getCurrentCategory(),
373 newName); 375 newName);
374 } 376 }
375} 377}
376 378
377void PwMView::delCatButton_slot() 379void PwMView::delCatButton_slot()
378{ 380{
379 if (doc->isDeepLocked()) 381 if (doc->isDeepLocked())
380 return; 382 return;
381 if (numCategories() <= 1) { 383 if (numCategories() <= 1) {
382 mainClass->showStatMsg(i18n("Can't remove the last category.")); 384 mainClass->showStatMsg(i18n("Can't remove the last category."));
383 return; 385 return;
384 } 386 }
385 if (KMessageBox::questionYesNo(this, 387 if (KMessageBox::questionYesNo(this,
386 i18n("Do you really want to\n" 388 i18n("Do you really want to\n"
387 "delete the selected\n" 389 "delete the selected\n"
388 "category? All password-\n" 390 "category? All password-\n"
389 "entries will be lost in\n" 391 "entries will be lost in\n"
390 "this category!\n"), 392 "this category!\n"),
391 i18n("Delete category?")) 393 i18n("Delete category?"))
392 == KMessageBox::No) { 394 == KMessageBox::No) {
393 return; 395 return;
394 } 396 }
395 document()->delCategory(getCurrentCategory()); 397 document()->delCategory(getCurrentCategory());
396} 398}
397 399
398void PwMView::copyPwToClip() 400void PwMView::copyPwToClip()
399{ 401{
400 if (doc->isDeepLocked()) 402 if (doc->isDeepLocked())
401 return; 403 return;
402 unsigned int curIndex = 0; 404 unsigned int curIndex = 0;
403 if (!getCurEntryIndex(&curIndex)) 405 if (!getCurEntryIndex(&curIndex))
404 return; 406 return;
405 PwMDataItem d; 407 PwMDataItem d;
406 document()->getDataChangedLock(); 408 document()->getDataChangedLock();
407 document()->getEntry(getCurrentCategory(), curIndex, &d, true); 409 document()->getEntry(getCurrentCategory(), curIndex, &d, true);
408 document()->putDataChangedLock(); 410 document()->putDataChangedLock();
409 PwM::copyToClipboard(d.pw.c_str()); 411 PwM::copyToClipboard(d.pw.c_str());
410} 412}
411 413
412void PwMView::copyNameToClip() 414void PwMView::copyNameToClip()
413{ 415{
414 if (doc->isDeepLocked()) 416 if (doc->isDeepLocked())
415 return; 417 return;
416 unsigned int curIndex = 0; 418 unsigned int curIndex = 0;
417 if (!getCurEntryIndex(&curIndex)) 419 if (!getCurEntryIndex(&curIndex))
418 return; 420 return;
419 PwMDataItem d; 421 PwMDataItem d;
420 document()->getEntry(getCurrentCategory(), curIndex, &d); 422 document()->getEntry(getCurrentCategory(), curIndex, &d);
421 PwM::copyToClipboard(d.name.c_str()); 423 PwM::copyToClipboard(d.name.c_str());
422} 424}
423 425
424void PwMView::copyDescToClip() 426void PwMView::copyDescToClip()
425{ 427{
426 if (doc->isDeepLocked()) 428 if (doc->isDeepLocked())
427 return; 429 return;
428 unsigned int curIndex = 0; 430 unsigned int curIndex = 0;
429 if (!getCurEntryIndex(&curIndex)) 431 if (!getCurEntryIndex(&curIndex))
430 return; 432 return;
431 PwMDataItem d; 433 PwMDataItem d;
432 document()->getEntry(getCurrentCategory(), curIndex, &d); 434 document()->getEntry(getCurrentCategory(), curIndex, &d);
433 PwM::copyToClipboard(d.desc.c_str()); 435 PwM::copyToClipboard(d.desc.c_str());
434} 436}
435 437
436void PwMView::copyUrlToClip() 438void PwMView::copyUrlToClip()
437{ 439{
438 if (doc->isDeepLocked()) 440 if (doc->isDeepLocked())
439 return; 441 return;
440 unsigned int curIndex = 0; 442 unsigned int curIndex = 0;
441 if (!getCurEntryIndex(&curIndex)) 443 if (!getCurEntryIndex(&curIndex))
442 return; 444 return;
443 PwMDataItem d; 445 PwMDataItem d;
444 document()->getEntry(getCurrentCategory(), curIndex, &d); 446 document()->getEntry(getCurrentCategory(), curIndex, &d);
445 PwM::copyToClipboard(d.url.c_str()); 447 PwM::copyToClipboard(d.url.c_str());
446} 448}
447 449
448void PwMView::copyLauncherToClip() 450void PwMView::copyLauncherToClip()
449{ 451{
450 if (doc->isDeepLocked()) 452 if (doc->isDeepLocked())
451 return; 453 return;
452 unsigned int curIndex = 0; 454 unsigned int curIndex = 0;
453 if (!getCurEntryIndex(&curIndex)) 455 if (!getCurEntryIndex(&curIndex))
454 return; 456 return;
455 PwMDataItem d; 457 PwMDataItem d;
456 document()->getEntry(getCurrentCategory(), curIndex, &d); 458 document()->getEntry(getCurrentCategory(), curIndex, &d);
457 PwM::copyToClipboard(d.launcher.c_str()); 459 PwM::copyToClipboard(d.launcher.c_str());
458} 460}
459 461
460void PwMView::copyCommentToClip() 462void PwMView::copyCommentToClip()
461{ 463{
462 if (doc->isDeepLocked()) 464 if (doc->isDeepLocked())
463 return; 465 return;
464 unsigned int curIndex = 0; 466 unsigned int curIndex = 0;
465 if (!getCurEntryIndex(&curIndex)) 467 if (!getCurEntryIndex(&curIndex))
466 return; 468 return;
467 PwMDataItem d; 469 PwMDataItem d;
468 document()->getEntry(getCurrentCategory(), curIndex, &d); 470 document()->getEntry(getCurrentCategory(), curIndex, &d);
469 PwM::copyToClipboard(d.comment.c_str()); 471 PwM::copyToClipboard(d.comment.c_str());
470} 472}
471 473
472/************************************************************************ 474/************************************************************************
473 * 475 *
474 * 476 *
475 * 477 *
476 ************************************************************************/ 478 ************************************************************************/
477 479
478 480
479PwMDataItemView::PwMDataItemView( QWidget *parent, const char *name ) 481PwMDataItemView::PwMDataItemView( QWidget *parent, const char *name )
480 : QTextBrowser( parent, name ) 482 : QTextBrowser( parent, name )
481 483
482 484
483{ 485{
484//US setWrapPolicy( QTextEdit::AtWordBoundary ); 486//US setWrapPolicy( QTextEdit::AtWordBoundary );
485 setLinkUnderline( false ); 487 setLinkUnderline( false );
486 // setVScrollBarMode( QScrollView::AlwaysOff ); 488 // setVScrollBarMode( QScrollView::AlwaysOff );
487 //setHScrollBarMode( QScrollView::AlwaysOff ); 489 //setHScrollBarMode( QScrollView::AlwaysOff );
488 490
489//US QStyleSheet *sheet = styleSheet(); 491//US QStyleSheet *sheet = styleSheet();
490//US QStyleSheetItem *link = sheet->item( "a" ); 492//US QStyleSheetItem *link = sheet->item( "a" );
491//US link->setColor( KGlobalSettings::linkColor() ); 493//US link->setColor( KGlobalSettings::linkColor() );
492 494
493} 495}
494 496
495void PwMDataItemView::setPwMDataItem( const PwMDataItem& a ) 497void PwMDataItemView::setPwMDataItem( const PwMDataItem& a )
496 498
497{ 499{
498 mItem = a; 500 mItem = a;
499 // clear view 501 // clear view
500 setText( QString::null ); 502 setText( QString::null );
501 503
502 504
503 QString dynamicPart; 505 QString dynamicPart;
504 QString format = "<tr><td align=\"right\"><b>%1</b></td>" 506 QString format = "<tr><td align=\"right\"><b>%1</b></td>"
505 "<td align=\"left\">%2</td></tr>"; 507 "<td align=\"left\">%2</td></tr>";
506 508
507 dynamicPart += format 509 dynamicPart += format
508 .arg( i18n("LastUpdate") ) 510 .arg( i18n("LastUpdate") )
509 .arg( mItem.meta.update.toString().latin1() ); 511 .arg( mItem.meta.update.toString().latin1() );
510 512
511 dynamicPart += format 513 dynamicPart += format
512 .arg( i18n("Description") ) 514 .arg( i18n("Description") )
513 .arg( mItem.desc.c_str() ); 515 .arg( mItem.desc.c_str() );
514 516
515 dynamicPart += format 517 dynamicPart += format
516 .arg( i18n("Name") ) 518 .arg( i18n("Name") )
517 .arg( mItem.name.c_str() ); 519 .arg( mItem.name.c_str() );
518 520
519 dynamicPart += format 521 dynamicPart += format
520 .arg( i18n("Password") ) 522 .arg( i18n("Password") )
521 .arg( mItem.pw.c_str() ); 523 .arg( mItem.pw.c_str() );
522 524
523 QString comment(mItem.pw.c_str()); 525 QString comment(mItem.pw.c_str());
524 dynamicPart += format 526 dynamicPart += format
525 .arg( i18n("Comment") ) 527 .arg( i18n("Comment") )
526 .arg( comment.replace( QRegExp("\n"), "<br>" ) ); 528 .arg( comment.replace( QRegExp("\n"), "<br>" ) );
527 529
528 dynamicPart += format 530 dynamicPart += format
529 .arg( i18n("URL") ) 531 .arg( i18n("URL") )
530 .arg( mItem.url.c_str() ); 532 .arg( mItem.url.c_str() );
531 533
532 dynamicPart += format 534 dynamicPart += format
533 .arg( i18n("Launcher") ) 535 .arg( i18n("Launcher") )
534 .arg( mItem.launcher.c_str() ); 536 .arg( mItem.launcher.c_str() );
535 537
536 QString mText = "<table><td colspan=\"2\">&nbsp;</td>"; 538 QString mText = "<table><td colspan=\"2\">&nbsp;</td>";
537 539
538 mText += dynamicPart; 540 mText += dynamicPart;
539 mText += "</table>"; 541 mText += "</table>";
540 542
541 // at last display it... 543 // at last display it...
542 setText( mText ); 544 setText( mText );
543 545
544} 546}
545 547
546PwMDataItem PwMDataItemView::pwmdataitem() const 548PwMDataItem PwMDataItemView::pwmdataitem() const
547{ 549{
548 return mItem; 550 return mItem;
549} 551}
550 552
551/************************************************************************ 553/************************************************************************
552 * 554 *
553 * 555 *
554 * 556 *
555 ************************************************************************/ 557 ************************************************************************/
556 558
557 559
558PwMDataItemChooser::PwMDataItemChooser( PwMDataItem loc, PwMDataItem rem, bool takeloc, QWidget *parent, const char *name ) 560PwMDataItemChooser::PwMDataItemChooser( PwMDataItem loc, PwMDataItem rem, bool takeloc, QWidget *parent, const char *name )
559 : KDialogBase(parent, name, true , 561 : KDialogBase(parent, name, true ,
560 i18n("Conflict! Please choose Entry!"),Ok|User1|Close,Close, false) 562 i18n("Conflict! Please choose Entry!"),Ok|User1|Close,Close, false)
561{ 563{
562 findButton( Close )->setText( i18n("Cancel Sync")); 564 findButton( Close )->setText( i18n("Cancel Sync"));
563 findButton( Ok )->setText( i18n("Remote")); 565 findButton( Ok )->setText( i18n("Remote"));
564 findButton( User1 )->setText( i18n("Local")); 566 findButton( User1 )->setText( i18n("Local"));
565 QWidget* topframe = new QWidget( this ); 567 QWidget* topframe = new QWidget( this );
566 setMainWidget( topframe ); 568 setMainWidget( topframe );
567 QBoxLayout* bl; 569 QBoxLayout* bl;
568 if ( QApplication::desktop()->width() < 640 ) { 570 if ( QApplication::desktop()->width() < 640 ) {
569 bl = new QVBoxLayout( topframe ); 571 bl = new QVBoxLayout( topframe );
570 } else { 572 } else {
571 bl = new QHBoxLayout( topframe ); 573 bl = new QHBoxLayout( topframe );
572 } 574 }
573 QVBox* subframe = new QVBox( topframe ); 575 QVBox* subframe = new QVBox( topframe );
574 bl->addWidget(subframe ); 576 bl->addWidget(subframe );
575 QLabel* lab = new QLabel( i18n("Local Entry"), subframe ); 577 QLabel* lab = new QLabel( i18n("Local Entry"), subframe );
576 if ( takeloc ) 578 if ( takeloc )
577 lab->setBackgroundColor(Qt::green.light() ); 579 lab->setBackgroundColor(Qt::green.light() );
578 PwMDataItemView * av = new PwMDataItemView( subframe ); 580 PwMDataItemView * av = new PwMDataItemView( subframe );
579 av->setPwMDataItem( loc ); 581 av->setPwMDataItem( loc );
580 subframe = new QVBox( topframe ); 582 subframe = new QVBox( topframe );
581 bl->addWidget(subframe ); 583 bl->addWidget(subframe );
582 lab = new QLabel( i18n("Remote Entry"), subframe ); 584 lab = new QLabel( i18n("Remote Entry"), subframe );
583 if ( !takeloc ) 585 if ( !takeloc )
584 lab->setBackgroundColor(Qt::green.light() ); 586 lab->setBackgroundColor(Qt::green.light() );
585 av = new PwMDataItemView( subframe ); 587 av = new PwMDataItemView( subframe );
586 av->setPwMDataItem( rem ); 588 av->setPwMDataItem( rem );
587 QObject::connect(findButton( Ok ),SIGNAL(clicked()),this, SLOT(slot_remote())); 589 QObject::connect(findButton( Ok ),SIGNAL(clicked()),this, SLOT(slot_remote()));
588 QObject::connect(this,SIGNAL(user1Clicked()),this, SLOT(slot_local())); 590 QObject::connect(this,SIGNAL(user1Clicked()),this, SLOT(slot_local()));
589#ifndef DESKTOP_VERSION 591#ifndef DESKTOP_VERSION
590 showMaximized(); 592 showMaximized();
591#else 593#else
592 resize ( 640, 400 ); 594 resize ( 640, 400 );
593#endif 595#endif
594} 596}
595 597
596int PwMDataItemChooser::executeD( bool local ) 598int PwMDataItemChooser::executeD( bool local )
597{ 599{
598 mSyncResult = 3; 600 mSyncResult = 3;
599 if ( local ) 601 if ( local )
600 findButton( User1 )->setFocus(); 602 findButton( User1 )->setFocus();
601 else 603 else
602 findButton( Ok )->setFocus(); 604 findButton( Ok )->setFocus();
603 exec(); 605 exec();
604 return mSyncResult; 606 return mSyncResult;
605} 607}
606void PwMDataItemChooser::slot_remote() 608void PwMDataItemChooser::slot_remote()
607{ 609{
608 mSyncResult = 2; 610 mSyncResult = 2;
609 accept(); 611 accept();
610} 612}
611void PwMDataItemChooser::slot_local() 613void PwMDataItemChooser::slot_local()
612{ 614{
613 mSyncResult = 1; 615 mSyncResult = 1;
614 accept(); 616 accept();
615} 617}
616 618
617 619
618 620
619#ifndef PWM_EMBEDDED 621#ifndef PWM_EMBEDDED
620#include "pwmview.moc" 622#include "pwmview.moc"
621#endif 623#endif
diff --git a/pwmanager/pwmanager/pwmviewstyle.cpp b/pwmanager/pwmanager/pwmviewstyle.cpp
index 5f25880..ee35472 100644
--- a/pwmanager/pwmanager/pwmviewstyle.cpp
+++ b/pwmanager/pwmanager/pwmviewstyle.cpp
@@ -1,250 +1,254 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * copyright (C) 2004 by Michael Buesch * 3 * copyright (C) 2004 by Michael Buesch *
4 * email: mbuesch@freenet.de * 4 * email: mbuesch@freenet.de *
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 version 2 * 7 * it under the terms of the GNU General Public License version 2 *
8 * as published by the Free Software Foundation. * 8 * as published by the Free Software Foundation. *
9 * * 9 * *
10 ***************************************************************************/ 10 ***************************************************************************/
11 11
12 12
13/*************************************************************************** 13/***************************************************************************
14 * copyright (C) 2004 by Ulf Schenk 14 * copyright (C) 2004 by Ulf Schenk
15 * This file is originaly based on version 1.0.1 of pwmanager 15 * This file is originaly based on version 1.0.1 of pwmanager
16 * and was modified to run on embedded devices that run microkde 16 * and was modified to run on embedded devices that run microkde
17 * 17 *
18 * $Id$ 18 * $Id$
19 **************************************************************************/ 19 **************************************************************************/
20 20
21#include "pwmviewstyle.h" 21#include "pwmviewstyle.h"
22#include "pwmexception.h" 22#include "pwmexception.h"
23#include "pwmviewstyle_0.h" 23#include "pwmviewstyle_0.h"
24#include "pwmviewstyle_1.h" 24#include "pwmviewstyle_1.h"
25#include "listviewpwm.h" 25#include "listviewpwm.h"
26#include "pwmview.h" 26#include "pwmview.h"
27#include "commentbox.h" 27#include "commentbox.h"
28#ifndef PWM_EMBEDDED 28#ifndef PWM_EMBEDDED
29#include "configuration.h" 29#include "configuration.h"
30#else 30#else
31#include "pwmprefs.h" 31#include "pwmprefs.h"
32#endif 32#endif
33 33
34PwMViewStyle::PwMViewStyle(QWidget *parent, const char *name) 34PwMViewStyle::PwMViewStyle(QWidget *parent, const char *name)
35 : QWidget(parent, name) 35 : QWidget(parent, name)
36{ 36{
37 curStyle = style_notset; 37 curStyle = style_notset;
38 s0 = 0; 38 s0 = 0;
39 s1 = 0; 39 s1 = 0;
40} 40}
41 41
42PwMViewStyle::~PwMViewStyle() 42PwMViewStyle::~PwMViewStyle()
43{ 43{
44 //US ENH : store the size of the listviewcolumns 44 //US ENH : store the size of the listviewcolumns
45 switch (curStyle) 45 switch (curStyle)
46 { 46 {
47 case style_0: 47 case style_0:
48 s0->saveSettings(PWMPrefs::instance()); 48 s0->saveSettings(PWMPrefs::instance());
49 break; 49 break;
50 case style_1: 50 case style_1:
51 s1->saveSettings(PWMPrefs::instance()); 51 s1->saveSettings(PWMPrefs::instance());
52 break; 52 break;
53 default: 53 default:
54 BUG(); 54 BUG();
55 } 55 }
56 56
57 57
58 PWMPrefs::instance()->writeConfig(); 58 PWMPrefs::instance()->writeConfig();
59 59
60 delete_ifnot_null(s0); 60 delete_ifnot_null(s0);
61 delete_ifnot_null(s1); 61 delete_ifnot_null(s1);
62} 62}
63 63
64void PwMViewStyle::editPassWord( QListViewItem * i ) 64void PwMViewStyle::editPassWord( QListViewItem * i )
65{ 65{
66 if ( !i ) 66 if ( !i )
67 return; 67 return;
68 emit editPW(); 68 emit editPW();
69} 69}
70void PwMViewStyle::initStyle(style_t style) 70void PwMViewStyle::initStyle(style_t style)
71{ 71{
72 printDebug(string("initializing style ") + tostr(style)); 72 printDebug(string("initializing style ") + tostr(style));
73 bool wasMaximized = v->isMaximized(); 73 bool wasMaximized = v->isMaximized();
74 if (v->isVisible()) 74 if (v->isVisible())
75 v->hide(); 75 v->hide();
76 switch (style) { 76 switch (style) {
77 case style_0: 77 case style_0:
78 delete_ifnot_null(s0); 78 delete_ifnot_null(s0);
79 delete_ifnot_null(s1); 79 delete_ifnot_null(s1);
80 s0 = new PwMViewStyle_0(v); 80 s0 = new PwMViewStyle_0(v);
81 lv = s0->getLv(); 81 lv = s0->getLv();
82 commentBox = s0->getCommentBox(); 82 commentBox = s0->getCommentBox();
83 break; 83 break;
84 case style_1: 84 case style_1:
85 delete_ifnot_null(s0); 85 delete_ifnot_null(s0);
86 delete_ifnot_null(s1); 86 delete_ifnot_null(s1);
87 s1 = new PwMViewStyle_1(v); 87 s1 = new PwMViewStyle_1(v);
88 lv = s1->getLv(); 88 lv = s1->getLv();
89 commentBox = s1->getCommentBox(); 89 commentBox = s1->getCommentBox();
90 break; 90 break;
91 default: 91 default:
92 BUG(); 92 BUG();
93 return; 93 return;
94 } 94 }
95 curStyle = style; 95 curStyle = style;
96 connect(lv, SIGNAL(pressed(QListViewItem *)), 96 connect(lv, SIGNAL(pressed(QListViewItem *)),
97 v, SLOT(handleToggle(QListViewItem *))); 97 v, SLOT(handleToggle(QListViewItem *)));
98 connect(lv, SIGNAL(rightButtonClicked(QListViewItem *, const QPoint &, int)), 98 connect(lv, SIGNAL(rightButtonClicked(QListViewItem *, const QPoint &, int)),
99 v, SLOT(handleRightClick(QListViewItem *, const QPoint &, int))); 99 v, SLOT(handleRightClick(QListViewItem *, const QPoint &, int)));
100 connect(lv, SIGNAL(clicked(QListViewItem *)), 100 connect(lv, SIGNAL(clicked(QListViewItem *)),
101 v, SLOT(refreshCommentTextEdit(QListViewItem *))); 101 v, SLOT(refreshCommentTextEdit(QListViewItem *)));
102 connect(lv, SIGNAL(returnPressed(QListViewItem *)), 102 connect(lv, SIGNAL(returnPressed(QListViewItem *)),
103 this, SLOT(editPassWord(QListViewItem *))); 103 this, SLOT(editPassWord(QListViewItem *)));
104 connect(lv, SIGNAL(doubleClicked(QListViewItem *)), 104 connect(lv, SIGNAL(doubleClicked(QListViewItem *)),
105 this, SLOT(editPassWord(QListViewItem *))); 105 this, SLOT(editPassWord(QListViewItem *)));
106 connect(lv, SIGNAL(insertPW()),
107 this, SIGNAL( insertPW() ));
108 connect(lv, SIGNAL(deletePW()),
109 this, SIGNAL( deletePW() ));
106 110
107 lv->addColumn(i18n("Description"), 180); 111 lv->addColumn(i18n("Description"), 180);
108 lv->addColumn(i18n("Username"), 150); 112 lv->addColumn(i18n("Username"), 150);
109 lv->addColumn(i18n("Password"), 150); 113 lv->addColumn(i18n("Password"), 150);
110 lv->addColumn(i18n("URL"), 180); 114 lv->addColumn(i18n("URL"), 180);
111 lv->addColumn(i18n("Launcher"), 120); 115 lv->addColumn(i18n("Launcher"), 120);
112 v->tmpReEnableSort(); 116 v->tmpReEnableSort();
113 117
114 //US ENH : load the size of the listviewcolumns 118 //US ENH : load the size of the listviewcolumns
115 switch (curStyle) 119 switch (curStyle)
116 { 120 {
117 case style_0: 121 case style_0:
118 s0->restoreSettings(PWMPrefs::instance()); 122 s0->restoreSettings(PWMPrefs::instance());
119 break; 123 break;
120 case style_1: 124 case style_1:
121 s1->restoreSettings(PWMPrefs::instance()); 125 s1->restoreSettings(PWMPrefs::instance());
122 break; 126 break;
123 default: 127 default:
124 BUG(); 128 BUG();
125 } 129 }
126 130
127 resizeView(v->size()); 131 resizeView(v->size());
128 v->updateView(); 132 v->updateView();
129 if (wasMaximized) { 133 if (wasMaximized) {
130 v->showMaximized(); 134 v->showMaximized();
131 } else { 135 } else {
132 v->show(); 136 v->show();
133 } 137 }
134 connect(lv, SIGNAL(layoutChanged()), 138 connect(lv, SIGNAL(layoutChanged()),
135 v, SLOT(reorgLp())); 139 v, SLOT(reorgLp()));
136} 140}
137 141
138void PwMViewStyle::resizeView(const QSize &size) 142void PwMViewStyle::resizeView(const QSize &size)
139{ 143{
140 switch (curStyle) { 144 switch (curStyle) {
141 case style_0: 145 case style_0:
142 PWM_ASSERT(s0); 146 PWM_ASSERT(s0);
143 s0->resize(size); 147 s0->resize(size);
144 return; 148 return;
145 case style_1: 149 case style_1:
146 PWM_ASSERT(s1); 150 PWM_ASSERT(s1);
147 s1->resize(size); 151 s1->resize(size);
148 return; 152 return;
149 default: 153 default:
150 BUG(); 154 BUG();
151 } 155 }
152} 156}
153 157
154QString PwMViewStyle::getCurrentCategory() 158QString PwMViewStyle::getCurrentCategory()
155{ 159{
156 switch (curStyle) { 160 switch (curStyle) {
157 case style_0: 161 case style_0:
158 PWM_ASSERT(s0); 162 PWM_ASSERT(s0);
159 return s0->getCurrentCategory(); 163 return s0->getCurrentCategory();
160 case style_1: 164 case style_1:
161 PWM_ASSERT(s1); 165 PWM_ASSERT(s1);
162 return s1->getCurrentCategory(); 166 return s1->getCurrentCategory();
163 default: 167 default:
164 BUG(); 168 BUG();
165 } 169 }
166 return ""; 170 return "";
167} 171}
168 172
169void PwMViewStyle::addCategory(const QString &cat) 173void PwMViewStyle::addCategory(const QString &cat)
170{ 174{
171 switch (curStyle) { 175 switch (curStyle) {
172 case style_0: 176 case style_0:
173 PWM_ASSERT(s0); 177 PWM_ASSERT(s0);
174 s0->addCategory(cat); 178 s0->addCategory(cat);
175 return; 179 return;
176 case style_1: 180 case style_1:
177 PWM_ASSERT(s1); 181 PWM_ASSERT(s1);
178 s1->addCategory(cat); 182 s1->addCategory(cat);
179 return; 183 return;
180 default: 184 default:
181 BUG(); 185 BUG();
182 } 186 }
183} 187}
184 188
185void PwMViewStyle::delCategory(const QString &cat) 189void PwMViewStyle::delCategory(const QString &cat)
186{ 190{
187 switch (curStyle) { 191 switch (curStyle) {
188 case style_0: 192 case style_0:
189 PWM_ASSERT(s0); 193 PWM_ASSERT(s0);
190 s0->delCategory(cat); 194 s0->delCategory(cat);
191 return; 195 return;
192 case style_1: 196 case style_1:
193 PWM_ASSERT(s1); 197 PWM_ASSERT(s1);
194 s1->delCategory(cat); 198 s1->delCategory(cat);
195 return; 199 return;
196 default: 200 default:
197 BUG(); 201 BUG();
198 } 202 }
199} 203}
200 204
201void PwMViewStyle::delAllCategories() 205void PwMViewStyle::delAllCategories()
202{ 206{
203 switch (curStyle) { 207 switch (curStyle) {
204 case style_0: 208 case style_0:
205 PWM_ASSERT(s0); 209 PWM_ASSERT(s0);
206 s0->delAllCategories(); 210 s0->delAllCategories();
207 return; 211 return;
208 case style_1: 212 case style_1:
209 PWM_ASSERT(s1); 213 PWM_ASSERT(s1);
210 s1->delAllCategories(); 214 s1->delAllCategories();
211 return; 215 return;
212 default: 216 default:
213 BUG(); 217 BUG();
214 } 218 }
215} 219}
216 220
217void PwMViewStyle::selectCategory(const QString &cat) 221void PwMViewStyle::selectCategory(const QString &cat)
218{ 222{
219 switch (curStyle) { 223 switch (curStyle) {
220 case style_0: 224 case style_0:
221 PWM_ASSERT(s0); 225 PWM_ASSERT(s0);
222 s0->selectCategory(cat); 226 s0->selectCategory(cat);
223 return; 227 return;
224 case style_1: 228 case style_1:
225 PWM_ASSERT(s1); 229 PWM_ASSERT(s1);
226 s1->selectCategory(cat); 230 s1->selectCategory(cat);
227 return; 231 return;
228 default: 232 default:
229 BUG(); 233 BUG();
230 } 234 }
231} 235}
232 236
233int PwMViewStyle::numCategories() 237int PwMViewStyle::numCategories()
234{ 238{
235 switch (curStyle) { 239 switch (curStyle) {
236 case style_0: 240 case style_0:
237 PWM_ASSERT(s0); 241 PWM_ASSERT(s0);
238 return s0->numCategories(); 242 return s0->numCategories();
239 case style_1: 243 case style_1:
240 PWM_ASSERT(s1); 244 PWM_ASSERT(s1);
241 return s1->numCategories(); 245 return s1->numCategories();
242 default: 246 default:
243 BUG(); 247 BUG();
244 } 248 }
245 return 0; 249 return 0;
246} 250}
247 251
248#ifndef PWM_EMBEDDED 252#ifndef PWM_EMBEDDED
249#include "pwmviewstyle.moc" 253#include "pwmviewstyle.moc"
250#endif 254#endif
diff --git a/pwmanager/pwmanager/pwmviewstyle.h b/pwmanager/pwmanager/pwmviewstyle.h
index 5656cbc..6c2d81c 100644
--- a/pwmanager/pwmanager/pwmviewstyle.h
+++ b/pwmanager/pwmanager/pwmviewstyle.h
@@ -1,113 +1,115 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * copyright (C) 2004 by Michael Buesch * 3 * copyright (C) 2004 by Michael Buesch *
4 * email: mbuesch@freenet.de * 4 * email: mbuesch@freenet.de *
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 version 2 * 7 * it under the terms of the GNU General Public License version 2 *
8 * as published by the Free Software Foundation. * 8 * as published by the Free Software Foundation. *
9 * * 9 * *
10 ***************************************************************************/ 10 ***************************************************************************/
11 11
12 12
13/*************************************************************************** 13/***************************************************************************
14 * copyright (C) 2004 by Ulf Schenk 14 * copyright (C) 2004 by Ulf Schenk
15 * This file is originaly based on version 1.0.1 of pwmanager 15 * This file is originaly based on version 1.0.1 of pwmanager
16 * and was modified to run on embedded devices that run microkde 16 * and was modified to run on embedded devices that run microkde
17 * 17 *
18 * $Id$ 18 * $Id$
19 **************************************************************************/ 19 **************************************************************************/
20 20
21#ifndef PWMVIEWSTYLE_H 21#ifndef PWMVIEWSTYLE_H
22#define PWMVIEWSTYLE_H 22#define PWMVIEWSTYLE_H
23 23
24#include <qwidget.h> 24#include <qwidget.h>
25#include <qsplitter.h> 25#include <qsplitter.h>
26#include <qhbox.h> 26#include <qhbox.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qpushbutton.h> 28#include <qpushbutton.h>
29#include <qpopupmenu.h> 29#include <qpopupmenu.h>
30#ifndef PWM_EMBEDDED 30#ifndef PWM_EMBEDDED
31#include <qtextedit.h> 31#include <qtextedit.h>
32#else 32#else
33#include <qmultilineedit.h> 33#include <qmultilineedit.h>
34#endif 34#endif
35 35
36#include <qlabel.h> 36#include <qlabel.h>
37#include <qlistbox.h> 37#include <qlistbox.h>
38#include <qcombobox.h> 38#include <qcombobox.h>
39#include <qsize.h> 39#include <qsize.h>
40 40
41class ListViewPwM; 41class ListViewPwM;
42class PwMViewStyle_0; 42class PwMViewStyle_0;
43class PwMViewStyle_1; 43class PwMViewStyle_1;
44class PwMView; 44class PwMView;
45class QListViewItem; 45class QListViewItem;
46class CommentBox; 46class CommentBox;
47 47
48class PwMViewStyle : public QWidget 48class PwMViewStyle : public QWidget
49{ 49{
50 Q_OBJECT 50 Q_OBJECT
51 51
52public: 52public:
53 enum style_t 53 enum style_t
54 { 54 {
55 style_notset= -1, 55 style_notset= -1,
56 style_0 = 0, 56 style_0 = 0,
57 style_1 = 1 57 style_1 = 1
58 }; 58 };
59 59
60public: 60public:
61 PwMViewStyle(QWidget *parent = 0, const char *name = 0); 61 PwMViewStyle(QWidget *parent = 0, const char *name = 0);
62 ~PwMViewStyle(); 62 ~PwMViewStyle();
63 63
64 /** initialize a new style */ 64 /** initialize a new style */
65 void initStyle(style_t style); 65 void initStyle(style_t style);
66 void initStyle(int style) 66 void initStyle(int style)
67 { initStyle(static_cast<style_t>(style)); } 67 { initStyle(static_cast<style_t>(style)); }
68 /** returns the currently used style */ 68 /** returns the currently used style */
69 style_t getCurStyle() 69 style_t getCurStyle()
70 { return curStyle; } 70 { return curStyle; }
71 void setView(PwMView *view) 71 void setView(PwMView *view)
72 { v = view; } 72 { v = view; }
73 73
74 /** returns the currently selected category */ 74 /** returns the currently selected category */
75 QString getCurrentCategory(); 75 QString getCurrentCategory();
76 76
77protected: 77protected:
78 /** add Category to the view */ 78 /** add Category to the view */
79 void addCategory(const QString &cat); 79 void addCategory(const QString &cat);
80 /** delete Category from view */ 80 /** delete Category from view */
81 void delCategory(const QString &cat); 81 void delCategory(const QString &cat);
82 /** delete all categories from view */ 82 /** delete all categories from view */
83 void delAllCategories(); 83 void delAllCategories();
84 /** select the specified category */ 84 /** select the specified category */
85 void selectCategory(const QString &cat); 85 void selectCategory(const QString &cat);
86 /** returns the number of categories in this view. 86 /** returns the number of categories in this view.
87 * This value dosn't say anything about the number of 87 * This value dosn't say anything about the number of
88 * categories in the document. 88 * categories in the document.
89 */ 89 */
90 int numCategories(); 90 int numCategories();
91 /** resize the view */ 91 /** resize the view */
92 void resizeView(const QSize &size); 92 void resizeView(const QSize &size);
93 ListViewPwM *lv; 93 ListViewPwM *lv;
94 CommentBox *commentBox; 94 CommentBox *commentBox;
95 95
96protected slots: 96protected slots:
97 void editPassWord( QListViewItem * ); 97 void editPassWord( QListViewItem * );
98 98
99private: 99private:
100 /** which style has the view? 100 /** which style has the view?
101 * KListBox on the left, 101 * KListBox on the left,
102 * or QComboBox on the top? 102 * or QComboBox on the top?
103 */ 103 */
104 style_t curStyle; 104 style_t curStyle;
105 105
106 PwMViewStyle_0 *s0; 106 PwMViewStyle_0 *s0;
107 PwMViewStyle_1 *s1; 107 PwMViewStyle_1 *s1;
108 PwMView *v; 108 PwMView *v;
109 signals: 109 signals:
110 void editPW(); 110 void editPW();
111 void insertPW();
112 void deletePW();
111 113
112}; 114};
113#endif 115#endif