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,386 +1,394 @@
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).
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
@@ -1747,769 +1747,769 @@ void KABCore::initGUI()
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;
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
@@ -138,814 +138,817 @@ MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
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 );
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,452 +1,454 @@
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;
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