summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt4
-rw-r--r--bin/kdepim/pwmanager/germantranslation.txt2
-rw-r--r--bin/kdepim/pwmanager/icons16/decrypted.pngbin1009 -> 855 bytes
-rw-r--r--bin/kdepim/pwmanager/icons22/decrypted.pngbin939 -> 1117 bytes
-rw-r--r--pwmanager/pwmanager/addentrywndimpl.cpp1
-rw-r--r--pwmanager/pwmanager/pwm.cpp11
-rw-r--r--pwmanager/pwmanager/pwmviewstyle_0.cpp22
-rw-r--r--pwmanager/pwmanager/pwmviewstyle_1.cpp4
8 files changed, 29 insertions, 15 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 11c50f8..657d1de 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,774 +1,776 @@
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.14 ************ 3********** VERSION 2.0.14 ************
4 4
5Made Passwordmanager PwM/Pi more userfriendly: 5Made Passwordmanager PwM/Pi more userfriendly:
6Rearranged some toolbar icons and optimized setting of focus. 6Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
7Fixed bug in KO/Pi todo printing.
8Made Qtopia calendar import possible on desktop .
7 9
8********** VERSION 2.0.13 ************ 10********** VERSION 2.0.13 ************
9 11
10Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 12Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
11 13
12In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 14In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
13 15
14OM/Pi: 16OM/Pi:
15Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 17Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
16Added missing German translation. 18Added missing German translation.
17Added warning if path is specified in local folder settings of account config. 19Added warning if path is specified in local folder settings of account config.
18 20
19********** VERSION 2.0.12 ************ 21********** VERSION 2.0.12 ************
20 22
21KO/Pi: 23KO/Pi:
22Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 24Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
23Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 25Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
24Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 26Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
25 27
26Fixed problem in pi-sync mode when wrong password was sent. 28Fixed problem in pi-sync mode when wrong password was sent.
27 29
28OM/Pi: 30OM/Pi:
29Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 31Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
30Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 32Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
31 33
32********** VERSION 2.0.11 ************ 34********** VERSION 2.0.11 ************
33 35
34Fixed some problems in pi-sync mode 36Fixed some problems in pi-sync mode
35(e.g. details of events were not synced properly) 37(e.g. details of events were not synced properly)
36 38
37********** VERSION 2.0.10 ************ 39********** VERSION 2.0.10 ************
38 40
39KO/Pi: 41KO/Pi:
40In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 42In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
41This is fixed. 43This is fixed.
42Changed the search dialog a bit to make it more user friendly. 44Changed the search dialog a bit to make it more user friendly.
43(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 45(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
44 46
45Added config option to hide the week number in KO/Pi toolbar. 47Added config option to hide the week number in KO/Pi toolbar.
46 48
47********** VERSION 2.0.9 ************ 49********** VERSION 2.0.9 ************
48 50
49Made month view icons for multiday events a bit nicer. 51Made month view icons for multiday events a bit nicer.
50Some minor fixes in KO/Pi 52Some minor fixes in KO/Pi
51(e.g. go to today did not work for new week view properly). 53(e.g. go to today did not work for new week view properly).
52 54
53 55
54********** VERSION 2.0.8 ************ 56********** VERSION 2.0.8 ************
55 57
56Fixed a problem in dependency info in the ipk files for the Zaurus. 58Fixed a problem in dependency info in the ipk files for the Zaurus.
57 59
58Added 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. 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.
59 61
60Added a "go today" button to the datepicker. 62Added a "go today" button to the datepicker.
61 63
62Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 64Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
63and made it configureable to show these values. 65and made it configureable to show these values.
64 66
65Fixed a problem for events (from external iCal files) that do have a duration but no end date. 67Fixed a problem for events (from external iCal files) that do have a duration but no end date.
66 68
67 69
68********** VERSION 2.0.7 ************ 70********** VERSION 2.0.7 ************
69 71
70Added global application font settings 72Added global application font settings
71(for all KDE-Pim/Pi apps) to the general settings. 73(for all KDE-Pim/Pi apps) to the general settings.
72 74
73Fixed a problem in OM/Pi when trying to login to some IMAP servers 75Fixed a problem in OM/Pi when trying to login to some IMAP servers
74(like the IMAP server of Apple: mail.mac.com ) 76(like the IMAP server of Apple: mail.mac.com )
75 77
76Added recurring todos to KO/Pi. 78Added recurring todos to KO/Pi.
77 79
78 80
79********** VERSION 2.0.6 ************ 81********** VERSION 2.0.6 ************
80 82
81Some bugfixes in the pi-sync mode. 83Some bugfixes in the pi-sync mode.
82Added German translation for pi-sync mode. 84Added German translation for pi-sync mode.
83 85
84KO/Pi: 86KO/Pi:
85Made the todolist using alternate background. 87Made the todolist using alternate background.
86 88
87Other minor fixes in KO/Pi. 89Other minor fixes in KO/Pi.
88 90
89 91
90********** VERSION 2.0.5 ************ 92********** VERSION 2.0.5 ************
91 93
92Bugfixes in KO/Pi. 94Bugfixes in KO/Pi.
93 95
94********** VERSION 2.0.4 ************ 96********** VERSION 2.0.4 ************
95 97
96KO/Pi: 98KO/Pi:
97Fixed problem loading translations for summary/location edit boxes in event/todo editor. 99Fixed problem loading translations for summary/location edit boxes in event/todo editor.
98 100
99Added a general "select week number" to the toolbar. 101Added a general "select week number" to the toolbar.
100 102
101Fixed some small problem of the new features introduced in version 2.0.3. 103Fixed some small problem of the new features introduced in version 2.0.3.
102 104
103Made it possible to specify one specific category as category color, 105Made it possible to specify one specific category as category color,
104if more than one categories are selected. 106if more than one categories are selected.
105 107
106Fixed a bug in saving colors for categories with non-ascii characters. 108Fixed a bug in saving colors for categories with non-ascii characters.
107(Like, e.g. German Umlauts). 109(Like, e.g. German Umlauts).
108Propably you have to set your colors again for those categories. 110Propably you have to set your colors again for those categories.
109 111
110 112
111********** VERSION 2.0.3 ************ 113********** VERSION 2.0.3 ************
112 114
113KO/Pi: 115KO/Pi:
114Added feature for changing alarm settings for many items at once: 116Added feature for changing alarm settings for many items at once:
115Open list view (or search dialog), select the desired items and choose in 117Open list view (or search dialog), select the desired items and choose in
116the popup menu: Set alarm for selected... 118the popup menu: Set alarm for selected...
117 119
118Added to the event/todo viewer the option to send an email to 120Added to the event/todo viewer the option to send an email to
119all attendees or all selected (with RSVP) attendees. 121all attendees or all selected (with RSVP) attendees.
120 122
121Made the week-month mode changing in month view faster. 123Made the week-month mode changing in month view faster.
122 124
123Made month view better useable with keyboard. 125Made month view better useable with keyboard.
124Now TAB key jumps to next cell with an event/todo. 126Now TAB key jumps to next cell with an event/todo.
125Scroll in cell with coursor keys, scroll in time (next week) with 127Scroll in cell with coursor keys, scroll in time (next week) with
126Shift/Control + coursorkeys. 128Shift/Control + coursorkeys.
127 129
128Fixed bug that the todo view flat mode was reset after first view update. 130Fixed bug that the todo view flat mode was reset after first view update.
129 131
130If a todo is displayed closed in the todo view, 132If a todo is displayed closed in the todo view,
131it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. 133it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties.
132 134
133Added info about the numbers of years to the caption (title) information about a birthday event. 135Added info about the numbers of years to the caption (title) information about a birthday event.
134 136
135Made completion date in todo editor editable. 137Made completion date in todo editor editable.
136 138
137Added possibility to save/load templates for journals. 139Added possibility to save/load templates for journals.
138(Which is just a simple "save text to file" or "insert text from file". 140(Which is just a simple "save text to file" or "insert text from file".
139 141
140********** VERSION 2.0.2 ************ 142********** VERSION 2.0.2 ************
141 143
142KO/Pi: 144KO/Pi:
143Fixed the layout problem of the day label buttons 145Fixed the layout problem of the day label buttons
144of the agenda view introduced in version 2.0.1. 146of the agenda view introduced in version 2.0.1.
145 147
146Added WhatsThis support for the todo view and the list view. 148Added WhatsThis support for the todo view and the list view.
147 149
148Added a quite useful feature to the montview. 150Added a quite useful feature to the montview.
149Just click on the week numbers on the left. 151Just click on the week numbers on the left.
150And in the top right corner of month view/agenda view 152And in the top right corner of month view/agenda view
151there is now a "week number quick selector". 153there is now a "week number quick selector".
152(Click on the black triangle). 154(Click on the black triangle).
153 155
154Made the quite difficult timezone change in KO/Pi easy. 156Made the quite difficult timezone change in KO/Pi easy.
155 157
156OM/Pi: 158OM/Pi:
157Fixed too small icons on desktop. 159Fixed too small icons on desktop.
158Fixed non visible icons in mainwindow on Z with fastload enabled. 160Fixed non visible icons in mainwindow on Z with fastload enabled.
159Added signature file setting to smtp account config. 161Added signature file setting to smtp account config.
160And the signature can be edited and saved in the edit mail dialog. 162And the signature can be edited and saved in the edit mail dialog.
161That does mean: 163That does mean:
162Simply edit the signature for the selected smtp account in the 164Simply edit the signature for the selected smtp account in the
163edit new mail dialog and press the "save signature" button there. 165edit new mail dialog and press the "save signature" button there.
164Then the signature is saved to the file specified in the smtp account settings. 166Then the signature is saved to the file specified in the smtp account settings.
165If there is no file specified, it is saved automatically to the file 167If there is no file specified, it is saved automatically to the file
166kdepim/apps/kopiemail/<accountname>.sig. 168kdepim/apps/kopiemail/<accountname>.sig.
167 169
168 170
169 171
170********** VERSION 2.0.1 ************ 172********** VERSION 2.0.1 ************
171 173
172Oooops ... I forgot to test on the Zaurus 5500 ... 174Oooops ... I forgot to test on the Zaurus 5500 ...
173 175
174Fixed many problems of new (english) strings (and german translations) 176Fixed many problems of new (english) strings (and german translations)
175introduced in the latest versions, where the text was not fitting on the 177introduced in the latest versions, where the text was not fitting on the
176240x320 display of the Zaurus 5500. 178240x320 display of the Zaurus 5500.
177 179
178KO/Pi: 180KO/Pi:
179Added a popup menu ( press pen and hold to get popup ) to the agenda view 181Added a popup menu ( press pen and hold to get popup ) to the agenda view
180with many useful items (add event/todo, show next week, two weeks, month, journal). 182with many useful items (add event/todo, show next week, two weeks, month, journal).
181 183
182Added items to the todolist popup menu for: 184Added items to the todolist popup menu for:
183Display all opened, all closed or all todos flat. 185Display all opened, all closed or all todos flat.
184The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 186The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
185Made the reparenting of todos on the desktop possible via Drag&Drop. 187Made the reparenting of todos on the desktop possible via Drag&Drop.
186Fixed several bugs in setting the completed datetime for todos. 188Fixed several bugs in setting the completed datetime for todos.
187Added info about completed datetime of todos to the todo viewer. 189Added info about completed datetime of todos to the todo viewer.
188Now displaying a completed todo (with completed datetime set) in the agenda view 190Now displaying a completed todo (with completed datetime set) in the agenda view
189at the time of the completion. Such that now it is possible to see in the agenda view 191at the time of the completion. Such that now it is possible to see in the agenda view
190when what todo was completed. 192when what todo was completed.
191Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 193Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
192Now the behaviour is: 194Now the behaviour is:
193Setting a parent to complete sets all (sub)childs to complete. 195Setting a parent to complete sets all (sub)childs to complete.
194Setting a parent to uncomplete does not change the childs. 196Setting a parent to uncomplete does not change the childs.
195Setting a child to uncomplete sets all parent to uncomplete. 197Setting a child to uncomplete sets all parent to uncomplete.
196Setting a child to complete does not change the parents. 198Setting a child to complete does not change the parents.
197 199
198Smart updating and double buffering of the daymatrix. 200Smart updating and double buffering of the daymatrix.
199Showing holidays in the day matrix. 201Showing holidays in the day matrix.
200Many other small performance updates. 202Many other small performance updates.
201 203
202Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. 204Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
203 205
204Now the translation file usertranslation.txt is supposed to be in utf8 format. 206Now the translation file usertranslation.txt is supposed to be in utf8 format.
205If 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. 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.
206 208
207 209
208********** VERSION 2.0.0 ************ 210********** VERSION 2.0.0 ************
209 211
210Stable release 2.0.0! 212Stable release 2.0.0!
211 213
212KO/Pi: 214KO/Pi:
213Fixed problem in edit dialog recreation at startup. 215Fixed problem in edit dialog recreation at startup.
214Made "toggle view*" menu items enabled context sensitive. 216Made "toggle view*" menu items enabled context sensitive.
215Changed agenda size menu to items 1-10. 217Changed agenda size menu to items 1-10.
216Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 218Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
217Usebility enhancements in the KO/Pi menus. 219Usebility enhancements in the KO/Pi menus.
218Birthday import now adds year to summary. 220Birthday import now adds year to summary.
219What's Next view shows age in years for birthday. 221What's Next view shows age in years for birthday.
220 222
221OM/Pi: 223OM/Pi:
222Added three info lines to display subject, from and to of selected mails. 224Added three info lines to display subject, from and to of selected mails.
223 225
224KA/Pi: 226KA/Pi:
225Fixed jump bar behaviour on Zaurus. 227Fixed jump bar behaviour on Zaurus.
226Now KA/Pi search field supports searching for a range of starting characters. 228Now KA/Pi search field supports searching for a range of starting characters.
227E.g. to search for all contact beginning with b to n, type 229E.g. to search for all contact beginning with b to n, type
228b-n 230b-n
229in the search field. 231in the search field.
230 232
231********** VERSION 1.9.20 ************ 233********** VERSION 1.9.20 ************
232 234
233KO/Pi: 235KO/Pi:
234Added for the "dislplay one day" agenda mode 236Added for the "dislplay one day" agenda mode
235info in the caption and in the day lables: 237info in the caption and in the day lables:
236Now it is displayed, if the selected day is from "day before yesterday" 238Now it is displayed, if the selected day is from "day before yesterday"
237to "day after tomorrow". 239to "day after tomorrow".
238Made it possible to delete a Todo, which has sub-todos. 240Made it possible to delete a Todo, which has sub-todos.
239Fixed two small problems in the todo view. 241Fixed two small problems in the todo view.
240Added missing German translation for filter edit and print dialog. 242Added missing German translation for filter edit and print dialog.
241Made search dialog closeable by cancel key. 243Made search dialog closeable by cancel key.
242 244
243Made it possible to select in the date picker the (ligt grey ) 245Made it possible to select in the date picker the (ligt grey )
244dates of the prev./next month with the mouse. 246dates of the prev./next month with the mouse.
245 247
246OM/Pi: 248OM/Pi:
247"Delete mail" icon in main window now deletes all selected mails. 249"Delete mail" icon in main window now deletes all selected mails.
248Fixed the problem, that the state flag of imap mails was ignored. 250Fixed the problem, that the state flag of imap mails was ignored.
249Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 251Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
250to indecate that they are already seen. 252to indecate that they are already seen.
251Fixed the problem that the body of some mails was not displayed in the 253Fixed the problem that the body of some mails was not displayed in the
252mail viewer when fetching them from the imap server directly to read them. 254mail viewer when fetching them from the imap server directly to read them.
253Made it (configurable) possible to show the "To:" field in the list view. 255Made it (configurable) possible to show the "To:" field in the list view.
254Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 256Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
255Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 257Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
256local storage folder (specified in account settings) of the account of the mail. 258local storage folder (specified in account settings) of the account of the mail.
257Removed some memory leaks in OM/Pi. 259Removed some memory leaks in OM/Pi.
258 260
259 261
260********** VERSION 1.9.19 ************ 262********** VERSION 1.9.19 ************
261 263
262Added a lot of missing translations to KA/Pi, 264Added a lot of missing translations to KA/Pi,
263Added some missing translations to KO/Pi and OM/Pi. 265Added some missing translations to KO/Pi and OM/Pi.
264 266
265Fixed some minor problems in KA/Pi + KO/Pi. 267Fixed some minor problems in KA/Pi + KO/Pi.
266 268
267Fixed a crash when closing PwM/Pi. 269Fixed a crash when closing PwM/Pi.
268Added German translation for PwM/Pi. 270Added German translation for PwM/Pi.
269 271
270Made view change and Month View update faster in KO/Pi. 272Made view change and Month View update faster in KO/Pi.
271 273
272 274
273********** VERSION 1.9.18 ************ 275********** VERSION 1.9.18 ************
274 276
275FYI: The VERSION 1.9.17 was a testing release only. 277FYI: The VERSION 1.9.17 was a testing release only.
276Please read the changelog of VERSION 1.9.17 as well. 278Please read the changelog of VERSION 1.9.17 as well.
277 279
278Cleaned up the syncing config dialog. 280Cleaned up the syncing config dialog.
279Added sync config options for date range for events. 281Added sync config options for date range for events.
280Added sync config options for filters on incoming data. 282Added sync config options for filters on incoming data.
281Added sync config options for filters on outgoing data. 283Added sync config options for filters on outgoing data.
282Please read the updated SyncHowTo about the new filter settings. 284Please read the updated SyncHowTo about the new filter settings.
283These filter settings make it now possible to sync with shared 285These filter settings make it now possible to sync with shared
284calendars without writing back private or confidential data 286calendars without writing back private or confidential data
285(via the outgoing filters). 287(via the outgoing filters).
286To sync only with particular parts of a shared calendar, 288To sync only with particular parts of a shared calendar,
287the incoming filter settings can be used. 289the incoming filter settings can be used.
288An example can be found in the SyncHowTo. 290An example can be found in the SyncHowTo.
289Same for shared addressbooks. 291Same for shared addressbooks.
290 292
291Added a setting for the global kdepim data storage. 293Added a setting for the global kdepim data storage.
292Usually the data is stored in (yourhomedir/kdepim). 294Usually the data is stored in (yourhomedir/kdepim).
293Now you can set in the Global config dialog TAB, subTAB "Data storage path" 295Now you can set in the Global config dialog TAB, subTAB "Data storage path"
294a directory where all the kdepim data is stored. 296a directory where all the kdepim data is stored.
295That makes it easy to save all kdepim data on a SD card on the Z, for example. 297That makes it easy to save all kdepim data on a SD card on the Z, for example.
296 298
297KO/Pi: 299KO/Pi:
298The timeedit input has a pulldown list for times. 300The timeedit input has a pulldown list for times.
299If opened, this pulldown list should now has the right time highlighted. 301If opened, this pulldown list should now has the right time highlighted.
300Added the possibility to exclude events/todos/journals in a filter. 302Added the possibility to exclude events/todos/journals in a filter.
301You should exclude journals, if you do not want them to sync with a public calendar. 303You should exclude journals, if you do not want them to sync with a public calendar.
302 304
303KA/Pi: 305KA/Pi:
304Added the possibility to in/exclude public/private/confidential contacts to a filter. 306Added the possibility to in/exclude public/private/confidential contacts to a filter.
305If 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 ... 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 ...
306Added printing of card view and details view on desktop. 308Added printing of card view and details view on desktop.
307Printing of list view is not working... 309Printing of list view is not working...
308Added button for removing pictures in contact editor. 310Added button for removing pictures in contact editor.
309Parsing data fix of KA/Pi version 1.9.17. 311Parsing data fix of KA/Pi version 1.9.17.
310Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 312Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
311Fixed some syncing merging problems. 313Fixed some syncing merging problems.
312 314
313 315
314********** VERSION 1.9.17 ************ 316********** VERSION 1.9.17 ************
315 317
316KO/Pi: 318KO/Pi:
317Fixed that tooltips were not updated after moving an item in agenda view. 319Fixed that tooltips were not updated after moving an item in agenda view.
318Fixed a bug in sorting start date for recurring events in list view. 320Fixed a bug in sorting start date for recurring events in list view.
319Changed the left button in todo viewer from "Agenda" to "Set completed". 321Changed the left button in todo viewer from "Agenda" to "Set completed".
320This 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. 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.
321Added more info in the todo viewer: Startdate, parent/sub todos. 323Added more info in the todo viewer: Startdate, parent/sub todos.
322 324
323 325
324KA/Pi: 326KA/Pi:
325All fields search does now actually search all the (possible) fields, 327All fields search does now actually search all the (possible) fields,
326not only those listed in the contact list. 328not only those listed in the contact list.
327Made is possible to inline a picture in a vcard on the Z. 329Made is possible to inline a picture in a vcard on the Z.
328This was only possible on the desktop, now is it possible on the Z as well. 330This was only possible on the desktop, now is it possible on the Z as well.
329Fixed of missing save settings after filter configuration. 331Fixed of missing save settings after filter configuration.
330Made saving of addressbook much faster. 332Made saving of addressbook much faster.
331Fixed extension widget layout problem. 333Fixed extension widget layout problem.
332Fixed saving of default formatted name settings. 334Fixed saving of default formatted name settings.
333Fixed formatted name handling in edit dialog. 335Fixed formatted name handling in edit dialog.
334Added an option for changing formatted names of many contacts 336Added an option for changing formatted names of many contacts
335(menu: File - Change - Set formatted name). 337(menu: File - Change - Set formatted name).
336 338
337QWhatsThis was not working on the Z ( only black rectangle was shown). 339QWhatsThis was not working on the Z ( only black rectangle was shown).
338This is Fixed. 340This is Fixed.
339 341
340KDE-Sync: 342KDE-Sync:
341Now readonly KDE resources are synced as well. 343Now readonly KDE resources are synced as well.
342(They are not changed in KDE itself, of course). 344(They are not changed in KDE itself, of course).
343 345
344 346
345 347
346********** VERSION 1.9.16 ************ 348********** VERSION 1.9.16 ************
347 349
348KO/Pi: 350KO/Pi:
349Fixed search dialog size on Z 6000 (480x640 display). 351Fixed search dialog size on Z 6000 (480x640 display).
350Added setting to hide/show time in agenda items. 352Added setting to hide/show time in agenda items.
351Added setting to hide not running todos in todo view. 353Added setting to hide not running todos in todo view.
352Added columns for start date/time in todo view. 354Added columns for start date/time in todo view.
353Replaced the solid half-hour lines in agenda view by dot lines. 355Replaced the solid half-hour lines in agenda view by dot lines.
354Added possibility of printing the What's Next View on the desktop 356Added possibility of printing the What's Next View on the desktop
355(i.e. Windows and Linux). 357(i.e. Windows and Linux).
356Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 358Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
357Added tooltips in month view.(Tooltips only available on desktop) 359Added tooltips in month view.(Tooltips only available on desktop)
358 360
359Fixed a strange problem in KO/Pi alarm applet. 361Fixed a strange problem in KO/Pi alarm applet.
360Did not find the actual problem, 362Did not find the actual problem,
361such that now Qtopia reboots again if deinstalling the alarm applet. 363such that now Qtopia reboots again if deinstalling the alarm applet.
362But the alarm applet should work again. 364But the alarm applet should work again.
363 365
364KA/Pi: 366KA/Pi:
365Fixed the problem, that internal pictures were not saved. 367Fixed the problem, that internal pictures were not saved.
366 368
367Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 369Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
368 370
369Fixed some minor problems. (Like word wrap in help text windows). 371Fixed some minor problems. (Like word wrap in help text windows).
370 372
371Fixed a compiling problem in microkde/kresources. 373Fixed a compiling problem in microkde/kresources.
372 374
373KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 375KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
374This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 376This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
375such that now syncing KO/Pi with Sharp DTM should work on the 377such that now syncing KO/Pi with Sharp DTM should work on the
376Zaurus C 3000 model. 378Zaurus C 3000 model.
377 379
378********** VERSION 1.9.15 ************ 380********** VERSION 1.9.15 ************
379 381
380Usebilty enhancements in KO/Pi: 382Usebilty enhancements in KO/Pi:
381When clicking on the date in a month view cell, the day view is shown. 383When clicking on the date in a month view cell, the day view is shown.
382Old behaviour was, that the "new event" dialog popped up. 384Old behaviour was, that the "new event" dialog popped up.
383 385
384Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 386Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
385That means, you can restore the latest 387That means, you can restore the latest
386event/todo/journal you have deleted. 388event/todo/journal you have deleted.
387A journal is deleted, if you clear all the text of the journal. 389A journal is deleted, if you clear all the text of the journal.
388 390
389Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 391Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
390 392
391KA/Pi starting in 480x640 resolution: 393KA/Pi starting in 480x640 resolution:
392Hide the filter action in toolbar 394Hide the filter action in toolbar
393and added icons for undo/delete/redo in toolbar. 395and added icons for undo/delete/redo in toolbar.
394 396
395Change in OM/Pi ViewMail dialog: 397Change in OM/Pi ViewMail dialog:
396When clicking on the "delete" icon the mail is deleted after confirmation as usual. 398When clicking on the "delete" icon the mail is deleted after confirmation as usual.
397But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 399But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
398 400
399Fixed a crash when deleting mail-accounts in OM/Pi. 401Fixed a crash when deleting mail-accounts in OM/Pi.
400 402
401 403
402********** VERSION 1.9.14 ************ 404********** VERSION 1.9.14 ************
403 405
404Fixed some problems with the dialog sizes when switching 406Fixed some problems with the dialog sizes when switching
405portrait/landscape mode on 640x480 PDA display. 407portrait/landscape mode on 640x480 PDA display.
406 408
407Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 409Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
408 410
409Fixed an ugly bug in KOpieMail: 411Fixed an ugly bug in KOpieMail:
410KOpieMail was not able to write files (mails) to MSDOS file system, 412KOpieMail was not able to write files (mails) to MSDOS file system,
411like on an usual preformatted SD card. That should work now. 413like on an usual preformatted SD card. That should work now.
412To save your mail data on the Sd card do the following: 414To save your mail data on the Sd card do the following:
413Create a dir on the SD card: 415Create a dir on the SD card:
414mkdir /mnt/card/localmail 416mkdir /mnt/card/localmail
415Go to your home dir: 417Go to your home dir:
416cd 418cd
417Go to kopiemail data storage dir: 419Go to kopiemail data storage dir:
418cd kdepim/apps/kopiemail 420cd kdepim/apps/kopiemail
419Create a symlink to the SD card: 421Create a symlink to the SD card:
420ls -s /mnt/card/localmail 422ls -s /mnt/card/localmail
421Now KOpieMail will store all mails on the SD card. 423Now KOpieMail will store all mails on the SD card.
422 424
423KO/Pi Monthview: 425KO/Pi Monthview:
424Now "Go to Today" selects the current month from day 1-end, 426Now "Go to Today" selects the current month from day 1-end,
425not the current date + some days. 427not the current date + some days.
426I.e. "Go to Today" shows now always 428I.e. "Go to Today" shows now always
427the current month with first day of month in the first row. 429the current month with first day of month in the first row.
428 430
429Added missing German translation. 431Added missing German translation.
430 432
431Fixed icons of executeable on Wintendo. 433Fixed icons of executeable on Wintendo.
432 434
433Added a "Show next Mail" button to the OM/Pi 435Added a "Show next Mail" button to the OM/Pi
434mail viewer such that the mail below the current mail 436mail viewer such that the mail below the current mail
435in the mail list view of the current folder 437in the mail list view of the current folder
436can be read with a single click. 438can be read with a single click.
437 439
438 440
439********** VERSION 1.9.13 ************ 441********** VERSION 1.9.13 ************
440 442
441Fixed nasty PwM/Pi file reading bug, when 443Fixed nasty PwM/Pi file reading bug, when
442the used hash algo of file is different then the global 444the used hash algo of file is different then the global
443hash algo. 445hash algo.
444 446
445Added KA/Pi support for opie mailit mailapplication. 447Added KA/Pi support for opie mailit mailapplication.
446 448
447Fixed some bugs in OM/Pi. 449Fixed some bugs in OM/Pi.
448Now character conversion tables are available for the Zaurus 450Now character conversion tables are available for the Zaurus
449to make OM/Pi working properly. 451to make OM/Pi working properly.
450To get the character conversion in OM/Pi working, please download 452To get the character conversion in OM/Pi working, please download
451at the sourceforge project site the package 453at the sourceforge project site the package
452sr-character-conversion_SharpROM_arm.ipk.zip 454sr-character-conversion_SharpROM_arm.ipk.zip
453(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 455(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
454from the section "general files for KDE/Pim" 456from the section "general files for KDE/Pim"
455Instructions how to install this package are in a ReadMe in this file. 457Instructions how to install this package are in a ReadMe in this file.
456 458
457 459
458Fixed the orientation change problem in KA/Pi when switching 460Fixed the orientation change problem in KA/Pi when switching
459portrait/landscape mode. 461portrait/landscape mode.
460 462
461French translation available for KA/Pi and OM/Pi. 463French translation available for KA/Pi and OM/Pi.
462 464
463Fixed some problems with categories in KO/Pi in DTM sync. 465Fixed some problems with categories in KO/Pi in DTM sync.
464 466
465Added selection dialog for export to phone in KA/Pi. 467Added selection dialog for export to phone in KA/Pi.
466 468
467If in KO/Pi is an attendee selected to add to a meeting and this 469If in KO/Pi is an attendee selected to add to a meeting and this
468attendee is already in the list of attendees, this person is not added 470attendee is already in the list of attendees, this person is not added
469again. 471again.
470 472
471Some menu cleanup in KA/Pi. 473Some menu cleanup in KA/Pi.
472 474
473********** VERSION 1.9.12 ************ 475********** VERSION 1.9.12 ************
474 476
475Fix for the bug in KO/Pi What's Next view of version 1.9.11. 477Fix for the bug in KO/Pi What's Next view of version 1.9.11.
476 478
477Bugfix: Licence file is now shown again. 479Bugfix: Licence file is now shown again.
478 480
479OM/Pi now supports Unicode (utf8 charset). 481OM/Pi now supports Unicode (utf8 charset).
480Fixed some bugs in OM/Pi. 482Fixed some bugs in OM/Pi.
481 483
482KA/Pi has more German translation. 484KA/Pi has more German translation.
483 485
484 486
485********** VERSION 1.9.11 ************ 487********** VERSION 1.9.11 ************
486 488
487Fixed several problems in PWM/Pi, like 489Fixed several problems in PWM/Pi, like
488asking the user, if unsaved changed are pending 490asking the user, if unsaved changed are pending
489when closing the app. 491when closing the app.
490And PwM/Pi handles now different texts for the 492And PwM/Pi handles now different texts for the
491fields Description, Username, Password, configurable per category. 493fields Description, Username, Password, configurable per category.
492 494
493Fixed a crash in KO/Pi , when importing/loading vcs files 495Fixed a crash in KO/Pi , when importing/loading vcs files
494which have an entry with an attendee with state: 496which have an entry with an attendee with state:
495NEEDS ACTION 497NEEDS ACTION
496 498
497Fixed some problems in the German translation of OM/Pi, 499Fixed some problems in the German translation of OM/Pi,
498which makes some dialogs not fitting on the screen 500which makes some dialogs not fitting on the screen
499of the Z 5500. 501of the Z 5500.
500 502
501Fixed Qtopia crash, when disabling/deinstalling 503Fixed Qtopia crash, when disabling/deinstalling
502KO/Pi alarm applet. 504KO/Pi alarm applet.
503 505
504Implemented direct KDE<->KA/Pi sync for KA/Pi running 506Implemented direct KDE<->KA/Pi sync for KA/Pi running
505on Linux desktop. 507on Linux desktop.
506 508
507Added feature "remove sync info" to sync menu. 509Added feature "remove sync info" to sync menu.
508 510
509Tweaked the KO/Pi What's next view a bit, added 511Tweaked the KO/Pi What's next view a bit, added
510setting to hide events that are done. 512setting to hide events that are done.
511 513
512Disabled "beam receive enabled" on startup to 514Disabled "beam receive enabled" on startup to
513avoid problems if Fastload is enabled. 515avoid problems if Fastload is enabled.
514Please set "beam receive enabled", 516Please set "beam receive enabled",
515if you want to receive data via IR. 517if you want to receive data via IR.
516 518
517Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 519Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
518on Linux desktop. 520on Linux desktop.
519 521
520Made in KA/Pi scrolling possible, if details view is selected. 522Made in KA/Pi scrolling possible, if details view is selected.
521(The keyboard focus is set automatically to the search line) 523(The keyboard focus is set automatically to the search line)
522 524
523Fixed a bug in DMT sync, that a new entry in DTM was added 525Fixed a bug in DMT sync, that a new entry in DTM was added
524on every sync to Kx/Pi. 526on every sync to Kx/Pi.
525 527
526Fixed missing writing of KA/Pi categories to DMT entries when syncing. 528Fixed missing writing of KA/Pi categories to DMT entries when syncing.
527 529
528Fixed a bug in DMT sync with todos created in KO/Pi containing 530Fixed a bug in DMT sync with todos created in KO/Pi containing
529non-latin1 characters. 531non-latin1 characters.
530 532
531Rearranged package contents of Sharp-ipks and made all 533Rearranged package contents of Sharp-ipks and made all
532packages installable on SD again. 534packages installable on SD again.
533 535
534Fixed the writing of addressbook data in DTM sync. 536Fixed the writing of addressbook data in DTM sync.
535Empty fields in KA/Pi were not removed. 537Empty fields in KA/Pi were not removed.
536 538
537Added better category handling in KA/Pi: 539Added better category handling in KA/Pi:
538Added item 540Added item
539Edit Categories and 541Edit Categories and
540Manage new categories 542Manage new categories
541to the settings menu. 543to the settings menu.
542Possible to configure a view to display categories. 544Possible to configure a view to display categories.
543 545
544Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 546Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
545 547
546Fixed displaying of "free" days and time in KO Monthview and Agendaview. 548Fixed displaying of "free" days and time in KO Monthview and Agendaview.
547 549
548... and many other bugfixes. 550... and many other bugfixes.
549 551
550********** VERSION 1.9.10 ************ 552********** VERSION 1.9.10 ************
551 553
552Many internal small bugfixes. 554Many internal small bugfixes.
553And fix of the "big" bug in KO/Pi, 555And fix of the "big" bug in KO/Pi,
554that after Syncing the appointments had an offset by several hours. 556that after Syncing the appointments had an offset by several hours.
555That was a problem with the internal timezone setting, 557That was a problem with the internal timezone setting,
556introduced by the changed timezone configuration settings. 558introduced by the changed timezone configuration settings.
557 559
558German translation for OM/Pi is now available. 560German translation for OM/Pi is now available.
559 561
560 562
561********** VERSION 1.9.9 ************ 563********** VERSION 1.9.9 ************
562 564
563KDE-Pim/Pi has a new Member! 565KDE-Pim/Pi has a new Member!
564It is called PWM/Pi (Passwordmanager/platform-independent) 566It is called PWM/Pi (Passwordmanager/platform-independent)
565and it is available for the Zaurus. 567and it is available for the Zaurus.
566It is planned, that it will be available later for Windows. 568It is planned, that it will be available later for Windows.
567(And for Linux, of course). 569(And for Linux, of course).
568It is a port of the Passwordmanager of KDE. 570It is a port of the Passwordmanager of KDE.
569It will need the MicroKDElibs to run. 571It will need the MicroKDElibs to run.
570 572
571Made loading of addressbooks in KA/Pi up to 7 times faster! 573Made loading of addressbooks in KA/Pi up to 7 times faster!
572The bigger your addressbook file, the more starting speed 574The bigger your addressbook file, the more starting speed
573will you gain. (relatively) 575will you gain. (relatively)
574 576
575The Qtopia addressbook connector is now platform independend 577The Qtopia addressbook connector is now platform independend
576as well and should work on any platform for importing/exporting 578as well and should work on any platform for importing/exporting
577Qtopia and Opie XML files. 579Qtopia and Opie XML files.
578 580
579Added a +30min feature to the timezone settings to make 581Added a +30min feature to the timezone settings to make
580KDE-Pim/Pi useable in Australia and other parts on the 582KDE-Pim/Pi useable in Australia and other parts on the
581world with strange timezones ;-) 583world with strange timezones ;-)
582 584
583German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 585German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
584 586
585It is now possible to disable the 587It is now possible to disable the
586"receive data via infrared" feature, such that syncing with 588"receive data via infrared" feature, such that syncing with
587Outlook is now possible again with Kx/Pi runing. 589Outlook is now possible again with Kx/Pi runing.
588Please disable it, before syncing Sharp DTM with Outlook. 590Please disable it, before syncing Sharp DTM with Outlook.
589For your convenience, the "receive data via infrared" feature 591For your convenience, the "receive data via infrared" feature
590is disabled automatically, if you sync Kx/Pi with DTM. 592is disabled automatically, if you sync Kx/Pi with DTM.
591You have to enable it again manually after syncing. 593You have to enable it again manually after syncing.
592Enabling this feature makes it impossible to start the 594Enabling this feature makes it impossible to start the
593Sharp DTM apps. If this feature is enabled, you will only get the 595Sharp DTM apps. If this feature is enabled, you will only get the
594alarm notification from KO/Pi and not from the Sharp calendar. 596alarm notification from KO/Pi and not from the Sharp calendar.
595This is very useful if you sync KO/Pi with Sharp DTM, 597This is very useful if you sync KO/Pi with Sharp DTM,
596because after syncing you usually would get notified about 598because after syncing you usually would get notified about
597an alarm by KO/Pi and the Sharp Calendar. 599an alarm by KO/Pi and the Sharp Calendar.
598 600
599Together with the Linux desktop version of KO/Pi 601Together with the Linux desktop version of KO/Pi
600it is now possible to sync KO/Pi on the Zaurus 602it is now possible to sync KO/Pi on the Zaurus
601with the complete KDE-desktop (3.3 or later) 603with the complete KDE-desktop (3.3 or later)
602calendar data easily. 604calendar data easily.
603That makes it possible to sync the Z with one 605That makes it possible to sync the Z with one
604click of a mouse with the KDE-Desktop. 606click of a mouse with the KDE-Desktop.
605This feature it available for all Zaurus platforms KO/Pi 607This feature it available for all Zaurus platforms KO/Pi
606is running on. 608is running on.
607The only thing needed is a running KO/Pi on Linux and 609The only thing needed is a running KO/Pi on Linux and
608a compiled version of the small 610a compiled version of the small
609KDE-Pim/Pi<->KDE-Desktop access command line program, 611KDE-Pim/Pi<->KDE-Desktop access command line program,
610which is in the KDE-Pim/Pi sources available. 612which is in the KDE-Pim/Pi sources available.
611 613
612The "KDE-desktop" syncing feature for KA/Pi will follow 614The "KDE-desktop" syncing feature for KA/Pi will follow
613in the next releases. 615in the next releases.
614 616
615Fixed the vcard export bug, which had the version 1.9.8. 617Fixed the vcard export bug, which had the version 1.9.8.
616 618
617Added missing GERMAN translation to KO/Pi. 619Added missing GERMAN translation to KO/Pi.
618Hi PsionX, could you add the missing french translation?Thx! 620Hi PsionX, could you add the missing french translation?Thx!
619 621
620Translation files for KA/Pi are available as well. 622Translation files for KA/Pi are available as well.
621GERMAN translation will be available in the next release. 623GERMAN translation will be available in the next release.
622PsionX ( yres, you again ;-) ), could you start translating 624PsionX ( yres, you again ;-) ), could you start translating
623KA/Pi? Thx! 625KA/Pi? Thx!
624 626
625You can download the version 1.9.9 at 627You can download the version 1.9.9 at
626 628
627http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 629http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
628 630
629Note: 631Note:
630To run the mail program OM/Pi you need libopenssl. 632To run the mail program OM/Pi you need libopenssl.
631A link to a download loaction is available at 633A link to a download loaction is available at
632ZSI at www.killefiz.de 634ZSI at www.killefiz.de
633 635
634 636
635********** VERSION 1.9.8 ************ 637********** VERSION 1.9.8 ************
636 638
637Fixed character decoding in OM/Pi. 639Fixed character decoding in OM/Pi.
638(e.g. German "Umlaute" were not displayed properly.) 640(e.g. German "Umlaute" were not displayed properly.)
639 641
640Made is possible to reparent todos in KO/Pi. 642Made is possible to reparent todos in KO/Pi.
641Use contextmenu or keys (look at Help-Keys + Colors) for that. 643Use contextmenu or keys (look at Help-Keys + Colors) for that.
642 644
643Added the missing Sync-Howto and WhatsNew to the packages. 645Added the missing Sync-Howto and WhatsNew to the packages.
644 646
645KO/Pi on Linux desktop can now sync with KDE desktop. 647KO/Pi on Linux desktop can now sync with KDE desktop.
646That means: When using KO/Pi on Linux desktop for syncing with 648That means: When using KO/Pi on Linux desktop for syncing with
647KDE desktop and the Zaurus, the Zaurus can be synced now 649KDE desktop and the Zaurus, the Zaurus can be synced now
648with all KDE-Calendar resources, not only with one local file. 650with all KDE-Calendar resources, not only with one local file.
649(That makes it possible to sync the Zaurus with the 651(That makes it possible to sync the Zaurus with the
650calendar data on a Kolab server) 652calendar data on a Kolab server)
651 653
652KA/Pi syncing with KDE desktop will be available in the next version. 654KA/Pi syncing with KDE desktop will be available in the next version.
653 655
654 656
655********** VERSION 1.9.7 ************ 657********** VERSION 1.9.7 ************
656 658
657KO/Pi - KA/Pi on Windows: 659KO/Pi - KA/Pi on Windows:
658Now a directory can be defined by the user, where the 660Now a directory can be defined by the user, where the
659application/config data should be saved. 661application/config data should be saved.
660 Define your desired path in the evironment variable 662 Define your desired path in the evironment variable
661 MICROKDEHOME 663 MICROKDEHOME
662 before starting KO/Pi or KA/Pi. 664 before starting KO/Pi or KA/Pi.
663 665
664An easy Kx/Pi to Kx/Pi syncing is now possible 666An easy Kx/Pi to Kx/Pi syncing is now possible
665(it is called Pi-Sync) via network. 667(it is called Pi-Sync) via network.
666Please look at the Sync Howto. 668Please look at the Sync Howto.
667 669
668Exporting of calendar data and contacts to mobile phones is now possible. 670Exporting of calendar data and contacts to mobile phones is now possible.
669The SyncHowto is updated with information howto 671The SyncHowto is updated with information howto
670access/sync mobile phones. 672access/sync mobile phones.
671Please look at the Sync Howto. 673Please look at the Sync Howto.
672 674
673Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 675Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
674Please disable Fastload for the original contact/calendar applications 676Please disable Fastload for the original contact/calendar applications
675and close them. 677and close them.
676KO/Pi and KA/Pi must be running in order to receive the data. 678KO/Pi and KA/Pi must be running in order to receive the data.
677(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 679(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
678 680
679In the KA/Pi details view are now the preferred tel. numbers displayed on top 681In the KA/Pi details view are now the preferred tel. numbers displayed on top
680of the other data ( emails/tel.numbers/addresses) 682of the other data ( emails/tel.numbers/addresses)
681 683
682Fixed some syncing problems in KA/Pi. 684Fixed some syncing problems in KA/Pi.
683 685
684Added font settings for the KA/Pi details view. 686Added font settings for the KA/Pi details view.
685Added fields "children's name" and "gender" to KA/Pi. 687Added fields "children's name" and "gender" to KA/Pi.
686 688
687Made searching in KA/Pi better: 689Made searching in KA/Pi better:
688Now the first item in a view is selected after a search automatically and 690Now the first item in a view is selected after a search automatically and
689the views can be scrolled up/down when the search input field has the keyboard focus. 691the views can be scrolled up/down when the search input field has the keyboard focus.
690 692
691And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 693And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
692 694
693 695
694********** VERSION 1.9.6 ************ 696********** VERSION 1.9.6 ************
695 697
696Changes in the external application communication on the Zaurus 698Changes in the external application communication on the Zaurus
697in order to use less RAM when the apps are running. 699in order to use less RAM when the apps are running.
698First syncing of addressbooks (KA/Pi) is possible. 700First syncing of addressbooks (KA/Pi) is possible.
699 701
700 702
701********** VERSION 1.9.5a ************ 703********** VERSION 1.9.5a ************
702 704
703Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 705Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
704Fixed some small bugs. 706Fixed some small bugs.
705KA/Pi shows now the birthday in summary view. 707KA/Pi shows now the birthday in summary view.
706Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 708Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
707for displaying dates. 709for displaying dates.
708 710
709 711
710********** VERSION 1.9.5 ************ 712********** VERSION 1.9.5 ************
711 713
712There is still no Addressbook syncing! 714There is still no Addressbook syncing!
713 715
714New in 1.9.5: 716New in 1.9.5:
715 717
716Many bugfixes. 718Many bugfixes.
717Better searching in KA/Pi. 719Better searching in KA/Pi.
718You can configure in KA/Pi if you want to search only after 720You can configure in KA/Pi if you want to search only after
719<return> key pressed. 721<return> key pressed.
720 722
721Better mail downloading in OM/Pi. 723Better mail downloading in OM/Pi.
722 724
723First experimental alpha version of sync of KO/Pi with mobile phones. 725First experimental alpha version of sync of KO/Pi with mobile phones.
724See gammu documentation for supported phones. 726See gammu documentation for supported phones.
725You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp. 727You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp.
726Quick hint how to use: 728Quick hint how to use:
727NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 729NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
728Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 730Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
729Create syncprofile - mobile device 731Create syncprofile - mobile device
730Remove entry for model. (Leave empty ). 732Remove entry for model. (Leave empty ).
731Enable infrared on Zaurus and your Phone. 733Enable infrared on Zaurus and your Phone.
732Sync. 734Sync.
733To get a more detailed log, start kopi from konsole. 735To get a more detailed log, start kopi from konsole.
734 736
735********** VERSION 1.9.4 ************ 737********** VERSION 1.9.4 ************
736 738
737This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 739This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
738 740
739WARNING: 741WARNING:
740PLEASE BACKUP ALL YOUR DATA! 742PLEASE BACKUP ALL YOUR DATA!
741We have changed a lot and maybe there are some unknown problems. 743We have changed a lot and maybe there are some unknown problems.
742 744
743SYNC HANDLING HAS CHANGED! 745SYNC HANDLING HAS CHANGED!
744Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 746Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
745(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 747(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
746 748
747You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 749You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
748If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well. 750If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well.
749 751
750As programs are available: 752As programs are available:
751KO/Pi (korganizer ipk) - a calendar program. 753KO/Pi (korganizer ipk) - a calendar program.
752KA/Pi (kaddressbook ipk ) - an addressbook 754KA/Pi (kaddressbook ipk ) - an addressbook
753OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 755OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
754 756
755An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 757An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
756(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 758(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
757 759
758All the applications are installed in a "Pim" TAB. 760All the applications are installed in a "Pim" TAB.
759If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk 761If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk
760 762
761All the application are integrated. 763All the application are integrated.
762Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail. 764Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail.
763 765
764HINT: 766HINT:
765If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 767If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
766 768
767What's new? 769What's new?
768 770
769SYNC HANDLING HAS CHANGED! 771SYNC HANDLING HAS CHANGED!
770Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 772Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
771(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 773(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
772 774
773New in OM/Pi: 775New in OM/Pi:
774When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails. 776When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails.
diff --git a/bin/kdepim/pwmanager/germantranslation.txt b/bin/kdepim/pwmanager/germantranslation.txt
index a63be31..ccc9d83 100644
--- a/bin/kdepim/pwmanager/germantranslation.txt
+++ b/bin/kdepim/pwmanager/germantranslation.txt
@@ -1,356 +1,356 @@
1{ " Local Time","Ortszeit" }, 1{ " Local Time","Ortszeit" },
2{ "Default","Standard" }, 2{ "Default","Standard" },
3{ "Configure...","Konfigurieren..." }, 3{ "Configure...","Konfigurieren..." },
4{ "Remove sync info","Entferne Sync Info" }, 4{ "Remove sync info","Entferne Sync Info" },
5{ "For all profiles","Für alle Profile" }, 5{ "For all profiles","Für alle Profile" },
6{ "Enable Pi-Sync","Aktiviere Pi-Sync" }, 6{ "Enable Pi-Sync","Aktiviere Pi-Sync" },
7{ "Multiple sync","Multi Sync" }, 7{ "Multiple sync","Multi Sync" },
8{ "&Save","&Speichern" }, 8{ "&Save","&Speichern" },
9{ "&Print...","Drucken..." }, 9{ "&Print...","Drucken..." },
10{ "&File","Datei" }, 10{ "&File","Datei" },
11{ "&Edit","Bearbeite" }, 11{ "&Edit","Bearbeite" },
12{ "&View","Ansicht" }, 12{ "&View","Ansicht" },
13{ "&Help","Hilfe" }, 13{ "&Help","Hilfe" },
14{ "Description","Beschreibungen" }, 14{ "Description","Beschreibungen" },
15{ "URL","URL" }, 15{ "URL","URL" },
16{ "Name:","Name:" }, 16{ "Name:","Name:" },
17{ "Documents","Dokumente" }, 17{ "Documents","Dokumente" },
18{ "Files","Dateien" }, 18{ "Files","Dateien" },
19{ "All Files","Alle Dateien" }, 19{ "All Files","Alle Dateien" },
20{ "Name","Name" }, 20{ "Name","Name" },
21{ "Size","Größe" }, 21{ "Size","Größe" },
22{ "Date","Datum" }, 22{ "Date","Datum" },
23{ "Mime Type","Mime Typ" }, 23{ "Mime Type","Mime Typ" },
24{ "Ok","Ok" }, 24{ "Ok","Ok" },
25{ "Cancel","Abbrechen" }, 25{ "Cancel","Abbrechen" },
26{ "1","1" }, 26{ "1","1" },
27{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile" }, 27{ "Synchronization Preferences","Einstellungen der Synchronisationsprofile" },
28{ "Local device name:","Name dieses Gerätes:" }, 28{ "Local device name:","Name dieses Gerätes:" },
29{ "New profile","Neues Profil" }, 29{ "New profile","Neues Profil" },
30{ "Clone profile","Klone Profil" }, 30{ "Clone profile","Klone Profil" },
31{ "Delete profile","Lösche Profil" }, 31{ "Delete profile","Lösche Profil" },
32{ "Profile:","Profil:" }, 32{ "Profile:","Profil:" },
33{ "Multiple Sync options","Multi Sync Optionen" }, 33{ "Multiple Sync options","Multi Sync Optionen" },
34{ "Include in multiple ","Beziehe in mehrfach " }, 34{ "Include in multiple ","Beziehe in mehrfach " },
35{ "calendar ","Kalender " }, 35{ "calendar ","Kalender " },
36{ "addressbook ","Adressbuch " }, 36{ "addressbook ","Adressbuch " },
37{ "pwmanager","PWmanager" }, 37{ "pwmanager","PWmanager" },
38{ " sync"," Sync ein" }, 38{ " sync"," Sync ein" },
39{ "Sync algo options","Sync Ablauf Optionen" }, 39{ "Sync algo options","Sync Ablauf Optionen" },
40{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" }, 40{ "Ask for preferences before sync","Frage nach Synchronisationseinstellungen vor dem Syncen" },
41{ "Sync preferences","Synchronisations Einstellungen" }, 41{ "Sync preferences","Synchronisations Einstellungen" },
42{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" }, 42{ "Take local entry on conflict","Nimm lokalen Eintrag beim Konflikt" },
43{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" }, 43{ "Take remote entry on conflict","Nimm fernen Eintrag beim Konflikt" },
44{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" }, 44{ "Take newest entry on conflict","Nimm neuesten Eintrag beim Konflikt" },
45{ "Ask for every entry on conflict","Frage bei Konflikten nach" }, 45{ "Ask for every entry on conflict","Frage bei Konflikten nach" },
46{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" }, 46{ "Force: Take local entry always","Erzwinge: Nimm immer lokalen Eintrag" },
47{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" }, 47{ "Force: Take remote entry always","Erzwinge: Nimm immer fernen Eintrag" },
48{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" }, 48{ "Show summary after sync","Zeige Zusammenfassung nach dem Synchronisieren" },
49{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, 49{ "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" },
50{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 50{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
51{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 51{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
52{ "Write back synced data","Schreibe gesyncte Daten zurück" }, 52{ "Write back synced data","Schreibe gesyncte Daten zurück" },
53{ "Write back options","Optionen zum Zurückschreiben" }, 53{ "Write back options","Optionen zum Zurückschreiben" },
54{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, 54{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" },
55{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, 55{ "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" },
56{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 56{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
57{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 57{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
58{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, 58{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" },
59{ "Time period","Zeitspanne" }, 59{ "Time period","Zeitspanne" },
60{ "From ","Von " }, 60{ "From ","Von " },
61{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 61{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
62{ " weeks in the future "," Wochen in der Zukunft " }, 62{ " weeks in the future "," Wochen in der Zukunft " },
63{ "Profile kind","Profil Art" }, 63{ "Profile kind","Profil Art" },
64{ "Local file","Lokale Datei" }, 64{ "Local file","Lokale Datei" },
65{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 65{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
66{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" }, 66{ "Remote file (w down/upload command)","Entfernte Datei (via down/upload Kommando)" },
67{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, 67{ "Mobile device (cell phone)","Mobiles Gerät (Handy)" },
68{ "Profile kind specific settings","Profil Art abhängige Einstellungen" }, 68{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
69{ "I/O device: ","I/O device: " }, 69{ "I/O device: ","I/O device: " },
70{ "Help...","Hilfe..." }, 70{ "Help...","Hilfe..." },
71{ "Connection: ","Connection: " }, 71{ "Connection: ","Connection: " },
72{ "Model(opt.): ","Model(opt.): " }, 72{ "Model(opt.): ","Model(opt.): " },
73{ "Local file Cal:","Lokale Datei Kal:" }, 73{ "Local file Cal:","Lokale Datei Kal:" },
74{ "Local file ABook:","Lokale Datei ABuch:" }, 74{ "Local file ABook:","Lokale Datei ABuch:" },
75{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 75{ "Local file PWMgr:","Lokale Datei PWMgr:" },
76{ "Choose...","Wähle..." }, 76{ "Choose...","Wähle..." },
77{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 77{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
78{ "Calendar:","Kalender:" }, 78{ "Calendar:","Kalender:" },
79{ "AddressBook:","AdressBuch:" }, 79{ "AddressBook:","AdressBuch:" },
80{ "PWManager:","PWManager:" }, 80{ "PWManager:","PWManager:" },
81{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" }, 81{ "Pre sync (download) command:","Bevor Sync (download) Kommando:" },
82{ "Local temp file:","Lokale temp Datei:" }, 82{ "Local temp file:","Lokale temp Datei:" },
83{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" }, 83{ "Post sync (upload) command:","Nach Sync (upload) Kommando:" },
84{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 84{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
85{ "Fill in default values for:","Setze Beispiel Werte ein für:" }, 85{ "Fill in default values for:","Setze Beispiel Werte ein für:" },
86{ "ssh/scp","ssh/scp" }, 86{ "ssh/scp","ssh/scp" },
87{ "ftp","ftp" }, 87{ "ftp","ftp" },
88{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" }, 88{ "Hint: Use $PWD$ for placeholder of password!","Hinweis: Benutze $PWD$ als Platzhalter für ein Passwort!" },
89{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, 89{ "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" },
90{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, 90{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" },
91{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, 91{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" },
92{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, 92{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" },
93{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, 93{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" },
94{ "No Filter","Kein Filter" }, 94{ "No Filter","Kein Filter" },
95{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 95{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
96{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, 96{ "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" },
97{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 97{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
98{ "Configure","Konfiguriere" }, 98{ "Configure","Konfiguriere" },
99{ "Apply","Anwenden" }, 99{ "Apply","Anwenden" },
100{ "None","Kein" }, 100{ "None","Kein" },
101{ "Global","Allgemein" }, 101{ "Global","Allgemein" },
102{ "Email","E-Mail" }, 102{ "Email","E-Mail" },
103{ "Phone","Telefon" }, 103{ "Phone","Telefon" },
104{ "SMS","SMS" }, 104{ "SMS","SMS" },
105{ "Fax","Fax" }, 105{ "Fax","Fax" },
106{ "Pager","Pager" }, 106{ "Pager","Pager" },
107{ "SIP","SIP" }, 107{ "SIP","SIP" },
108{ "Language:(needs restart)","Sprache:(Neustart)" }, 108{ "Language:(needs restart)","Sprache:(Neustart)" },
109{ "English","English" }, 109{ "English","English" },
110{ "German","Deutsch" }, 110{ "German","Deutsch" },
111{ "French","Französisch" }, 111{ "French","Französisch" },
112{ "Italian","Italienisch" }, 112{ "Italian","Italienisch" },
113{ "User defined (usertranslation.txt)","Benutzerdef. (usertranslation.txt)" }, 113{ "User defined (usertranslation.txt)","Benutzerdef. (usertranslation.txt)" },
114{ "Language","Sprache" }, 114{ "Language","Sprache" },
115{ "Time Format(nr):","Zeit Format(nr):" }, 115{ "Time Format(nr):","Zeit Format(nr):" },
116{ "24:00","24:00" }, 116{ "24:00","24:00" },
117{ "12:00am","12:00am" }, 117{ "12:00am","12:00am" },
118{ "Week starts on Sunday","Woche beginnt Sonntags" }, 118{ "Week starts on Sunday","Woche beginnt Sonntags" },
119{ "Time Format","Zeit Format" }, 119{ "Time Format","Zeit Format" },
120{ "Date Format:","Datums Format:" }, 120{ "Date Format:","Datums Format:" },
121{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 121{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
122{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 122{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
123{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 123{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
124{ "User defined","Benutzerdefiniert" }, 124{ "User defined","Benutzerdefiniert" },
125{ "User long date:","Format langes Datum:" }, 125{ "User long date:","Format langes Datum:" },
126{ "User short date:","Format kurzes Datum:" }, 126{ "User short date:","Format kurzes Datum:" },
127{ "Monday 19 April 2004: %A %d %B %Y","Monday 19 April 2004: %A %d %B %Y" }, 127{ "Monday 19 April 2004: %A %d %B %Y","Monday 19 April 2004: %A %d %B %Y" },
128{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 128{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
129{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 129{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
130{ "Date Format","Datums Format" }, 130{ "Date Format","Datums Format" },
131{ "Timezone:","Zeitzone:" }, 131{ "Timezone:","Zeitzone:" },
132{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 132{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
133{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" }, 133{ "Timezone has daylight saving","Zeitzone hat Sommerzeit" },
134{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" }, 134{ "Actual start and end is the\nsunday before this date.","Tatsächlicher Beginn/Ende ist der\nSonntag vor diesem Datum!" },
135{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." }, 135{ "The year in the date is ignored.","Das Jahr vom Datum wird ignoriert." },
136{ "Daylight start:","Sommerzeit Beginn:" }, 136{ "Daylight start:","Sommerzeit Beginn:" },
137{ "Mon","Mo" }, 137{ "Mon","Mo" },
138{ "Tue","Di" }, 138{ "Tue","Di" },
139{ "Wed","Mi" }, 139{ "Wed","Mi" },
140{ "Thu","Do" }, 140{ "Thu","Do" },
141{ "Fri","Fr" }, 141{ "Fri","Fr" },
142{ "Sat","Sa" }, 142{ "Sat","Sa" },
143{ "Sun","So" }, 143{ "Sun","So" },
144{ "January","Januar" }, 144{ "January","Januar" },
145{ "February","Februar" }, 145{ "February","Februar" },
146{ "March","März" }, 146{ "March","März" },
147{ "April","April" }, 147{ "April","April" },
148{ "May","Mai" }, 148{ "May","Mai" },
149{ "June","Juni" }, 149{ "June","Juni" },
150{ "July","July" }, 150{ "July","July" },
151{ "August","August" }, 151{ "August","August" },
152{ "September","September" }, 152{ "September","September" },
153{ "October","October" }, 153{ "October","October" },
154{ "November","November" }, 154{ "November","November" },
155{ "December","Dezember" }, 155{ "December","Dezember" },
156{ "tomorrow","Morgen" }, 156{ "tomorrow","Morgen" },
157{ "today","Heute" }, 157{ "today","Heute" },
158{ "yesterday","Gestern" }, 158{ "yesterday","Gestern" },
159{ "Monday","Montag" }, 159{ "Monday","Montag" },
160{ "Tuesday","Dienstag" }, 160{ "Tuesday","Dienstag" },
161{ "Wednesday","Mittwoch" }, 161{ "Wednesday","Mittwoch" },
162{ "Thursday","Donnerstag" }, 162{ "Thursday","Donnerstag" },
163{ "Friday","Freitag" }, 163{ "Friday","Freitag" },
164{ "Saturday","Samstag" }, 164{ "Saturday","Samstag" },
165{ "Sunday","Sonntag" }, 165{ "Sunday","Sonntag" },
166{ "Daylight end:","Sommerzeit Ende:" }, 166{ "Daylight end:","Sommerzeit Ende:" },
167{ "Time Zone","Zeit Zone" }, 167{ "Time Zone","Zeit Zone" },
168{ "Used Mail Client","Benutzter Mail Client" }, 168{ "Used Mail Client","Benutzter Mail Client" },
169{ "Channel:","Channel:" }, 169{ "Channel:","Channel:" },
170{ "Message:","Message:" }, 170{ "Message:","Message:" },
171{ "Parameters:","Parameter:" }, 171{ "Parameters:","Parameter:" },
172{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 172{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
173{ "extra Message:","extra Message:" }, 173{ "extra Message:","extra Message:" },
174{ "extra Parameters:","extra Parameter:" }, 174{ "extra Parameters:","extra Parameter:" },
175{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 175{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
176{ "External Apps.","Externe Appl." }, 176{ "External Apps.","Externe Appl." },
177{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, 177{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
178{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 178{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
179{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 179{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
180{ "Save settings","Speichere Einstellungen" }, 180{ "Save settings","Speichere Einstellungen" },
181{ "Save standard","Speichere Standard" }, 181{ "Save standard","Speichere Standard" },
182{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 182{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
183{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 183{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
184{ "Data storage path","Daten Speicherpfad" }, 184{ "Data storage path","Daten Speicherpfad" },
185{ "Used %1 Client","Benutzer %1 Client" }, 185{ "Used %1 Client","Benutzer %1 Client" },
186{ "No email client installed","Keine Email Client installiert" }, 186{ "No email client installed","Keine Email Client installiert" },
187{ "Userdefined email client","Benutzerdef. Email Client" }, 187{ "Userdefined email client","Benutzerdef. Email Client" },
188{ "OM/Pi email client","OM/Pi Email Client" }, 188{ "OM/Pi email client","OM/Pi Email Client" },
189{ "URL:","URL:" }, 189{ "URL:","URL:" },
190{ "No","Nein" }, 190{ "No","Nein" },
191{ "Yes","Ja" }, 191{ "Yes","Ja" },
192{ "Untitled","Unbenannt" }, 192{ "Untitled","Unbenannt" },
193{ "&New","&Neu" }, 193{ "&New","&Neu" },
194{ "&Open","&Öffne" }, 194{ "&Open","&Öffne" },
195{ "&Close","Schließen" }, 195{ "&Close","Schließen" },
196{ "Save &as...","Speichere &als..." }, 196{ "Save &as...","Speichere &als..." },
197{ "&Text-file...","&Text-Datei..." }, 197{ "&Text-file...","&Text-Datei..." },
198{ "&Gpasman / Kpasman ...","&Gpasman / Kpasman ..." }, 198{ "&Gpasman / Kpasman ...","&Gpasman / Kpasman ..." },
199{ "&CSV (Comma Separated Value) ...","&CSV (Komma getrennte Werte) ..." }, 199{ "&CSV (Comma Separated Value) ...","&CSV (Komma getrennte Werte) ..." },
200{ "E&xport","E&xport" }, 200{ "E&xport","E&xport" },
201{ "I&mport","I&mport" }, 201{ "I&mport","I&mport" },
202{ "&Quit","Beenden" }, 202{ "&Quit","Beenden" },
203{ "&Add password","&Passwort hinzufügen" }, 203{ "&Add password","&Passwort hinzufügen" },
204{ "&Delete","Lösche" }, 204{ "&Delete","Lösche" },
205{ "Change &Master Password","Ändere &Master Passwort" }, 205{ "Change &Master Password","Ändere &Master Passwort" },
206{ "&Manage","Verwalte" }, 206{ "&Manage","Verwalte" },
207{ "&Find","&Finde" }, 207{ "&Find","&Finde" },
208{ "&Lock all entries","Sperre alle Einträge" }, 208{ "&Lock all entries","Sperre alle Einträge" },
209{ "&Deep-lock all entries","Sperre total alle Einträge" }, 209{ "&Deep-lock all entries","Sperre total alle Einträge" },
210{ "&Unlock all entries","Entsperre alle Einträge" }, 210{ "&Unlock all entries","Entsperre alle Einträge" },
211{ "&Configure...","Konfiguriere..." }, 211{ "&Configure...","Konfiguriere..." },
212{ "&Options","Konfig" }, 212{ "&Options","Konfig" },
213{ "C&ategories...","K&ategorien..." }, 213{ "C&ategories...","K&ategorien..." },
214{ "&Sync","&Sync" }, 214{ "&Sync","&Sync" },
215{ "&License","&Lizenz" }, 215{ "&License","&Lizenz" },
216{ "&Faq","&Faq" }, 216{ "&Faq","&Faq" },
217{ "&About PwManager","Über PwManager" }, 217{ "&About PwManager","Über PwManager" },
218{ "&Sync HowTo","&Sync HowTo" }, 218{ "&Sync HowTo","&Sync HowTo" },
219{ "&What's New","Was ist neu?" }, 219{ "&What's New","Was ist neu?" },
220{ "New","Neu" }, 220{ "New","Neu" },
221{ "Open","Öffnen" }, 221{ "Open","Öffnen" },
222{ "Save","Speichern" }, 222{ "Save","Speichern" },
223{ "Save as","Speichern als" }, 223{ "Save as","Speichern als" },
224{ "Print...","Drucke..." }, 224{ "Print...","Drucke..." },
225{ "Add password","Passwort hinzufügen" }, 225{ "Add password","Passwort hinzufügen" },
226{ "Edit password","Passwort ändern" }, 226{ "Edit password","Passwort ändern" },
227{ "Delete password","Passwort löschen" }, 227{ "Delete password","Passwort löschen" },
228{ "Find entry","Finde Eintrag" }, 228{ "Find entry","Finde Eintrag" },
229{ "Lock all entries","Sperre alle Einträge" }, 229{ "Lock all entries","Sperre alle Einträge" },
230{ "Deep-Lock all entries","Sperre total alle Einträge" }, 230{ "Deep-Lock all entries","Sperre total alle Einträge" },
231{ "Unlock all entries","Entsperre alle Einträge" }, 231{ "Unlock all entries","Entsperre alle Einträge" },
232{ "Categories:","Kategorien:" }, 232{ "Categories:","Kategorien:" },
233{ "&Rename","&Umbenennen" }, 233{ "&Rename","&Umbenennen" },
234{ "Username","Benutzername" }, 234{ "Username","Benutzername" },
235{ "Password","Passwort" }, 235{ "Password","Passwort" },
236{ "Launcher","Launcher" }, 236{ "Launcher","Launcher" },
237{ "copy password to clipboard","Kopiere Passwort ins Clipboard" }, 237{ "copy password to clipboard","Kopiere Passwort ins Clipboard" },
238{ "copy username to clipboard","Kopiere Benutzername ins Clipboard" }, 238{ "copy username to clipboard","Kopiere Benutzername ins Clipboard" },
239{ "copy description to clipboard","Kopiere Beschreibung ins Clipboard" }, 239{ "copy description to clipboard","Kopiere Beschreibung ins Clipboard" },
240{ "copy url to clipboard","Kopiere URL ins Clipboard" }, 240{ "copy url to clipboard","Kopiere URL ins Clipboard" },
241{ "copy launcher to clipboard","Kopiere Launcher ins Clipboard" }, 241{ "copy launcher to clipboard","Kopiere Launcher ins Clipboard" },
242{ "copy comment to clipboard","Kopiere Kommentare ins Clipboard" }, 242{ "copy comment to clipboard","Kopiere Kommentare ins Clipboard" },
243{ "Execute "Launcher"",""Launcher" ausführen" }, 243{ "Execute "Launcher"",""Launcher" ausführen" },
244{ "Go to "URL"","Gehe zu "URL"" }, 244{ "Go to "URL"","Gehe zu "URL"" },
245{ "Ready.","Fertig." }, 245{ "Ready.","Fertig." },
246{ "password filename(*.pwm)","passwort dateiname(*.pwm)" }, 246{ "password filename(*.pwm)","passwort dateiname(*.pwm)" },
247{ "File error","Datei Fehler" }, 247{ "File error","Datei Fehler" },
248{ "Could not read file!","Kann Datei nicht lesen!" }, 248{ "Could not read file!","Kann Datei nicht lesen!" },
249{ "Master-password","Master-Passwort" }, 249{ "Master-password","Master-Passwort" },
250{ "Please enter the master-password:","Bitter Master-Passwort eingeben:" }, 250{ "Please enter the master-password:","Bitter Master-Passwort eingeben:" },
251{ "Wrong master-password!\nPlease try again.","Falsches Master-Passwort!\nBitte erneut versuchen." }, 251{ "Wrong master-password!\nPlease try again.","Falsches Master-Passwort!\nBitte erneut versuchen." },
252{ "password error","Passwort Fehler" }, 252{ "password error","Passwort Fehler" },
253{ "Successfully opened file.","Datei erfolgreich geöffnet." }, 253{ "Successfully opened file.","Datei erfolgreich geöffnet." },
254{ "DEEP-LOCKED","TOTAL-GESPERRT" }, 254{ "DEEP-LOCKED","TOTAL-GESPERRT" },
255{ "This file is DEEP-LOCKED!\nThat means all data has been encrypted\nand written out to the file. If you want\nto see the entries, please UNLOCK the file.\nWhile unlocking, you will be prompted for the\nmaster-password or the key-card.","Diese Datei ist TOTAL-GESPERRT!\nDas bedeutet, dass alle Daten verschlüsselt\nsind und in die Datei geschrieben wurden.\nWenn Sie die Einträge sehen möchten\nENTSPERREN Sie bitte die Datei.\nZum Entsperren werden Sie nach\ndem Master-Passwort gefragt." }, 255{ "This file is DEEP-LOCKED!\nThat means all data has been encrypted\nand written out to the file. If you want\nto see the entries, please UNLOCK the file.\nWhile unlocking, you will be prompted for the\nmaster-password or the key-card.","Diese Datei ist TOTAL-GESPERRT!\nDas bedeutet, dass alle Daten verschlüsselt\nsind und in die Datei geschrieben wurden.\nWenn Sie die Einträge sehen möchten\nENTSPERREN Sie bitte die Datei.\nZum Entsperren werden Sie nach\ndem Master-Passwort gefragt." },
256{ "<LOCKED>","<GESPERRT>" }, 256{ "<LOCKED>","<GESPERRT>" },
257{ "To unlock click the icon on the left.","Zum Entsperren auf linkes Icon klicken." }, 257{ "To unlock click the icon on the left.","Zum Entsperren auf linkes Icon klicken." },
258{ "PwManager","PwManager" }, 258{ "PwManager","PwManager" },
259{ "Window-style:","Window-Stil:" }, 259{ "Window-style:","Window-Stil:" },
260{ "Category on top","Kategorien oben" }, 260{ "Category on top","Kategorien oben" },
261{ "Category-list left/top","Kategorien links oben" }, 261{ "Category-list left/top","Kategorien links oben" },
262{ "Font for Password entries:","Schrift für Passwort Einträge:" }, 262{ "Font for Password entries:","Schrift für Passwort Einträge:" },
263{ "Font for Password summary:","Schrift für Passwort Übersicht:" }, 263{ "Font for Password summary:","Schrift für Passwort Übersicht:" },
264{ "Font:","Schriftart:" }, 264{ "Font:","Schriftart:" },
265{ "Summary","Übersicht" }, 265{ "Summary","Übersicht" },
266{ "Compression:","Kompression:" }, 266{ "Compression:","Kompression:" },
267{ "gzip","gzip" }, 267{ "gzip","gzip" },
268{ "Encryption:","Verschlüsselung:" }, 268{ "Encryption:","Verschlüsselung:" },
269{ "Blowfish (128 bit)","Blowfish (128 bit)" }, 269{ "Blowfish (128 bit)","Blowfish (128 bit)" },
270{ "AES-128, Rijndael (128 bit)","AES-128, Rijndael (128 bit)" }, 270{ "AES-128, Rijndael (128 bit)","AES-128, Rijndael (128 bit)" },
271{ "AES-192, Rijndael (192 bit)","AES-192, Rijndael (192 bit)" }, 271{ "AES-192, Rijndael (192 bit)","AES-192, Rijndael (192 bit)" },
272{ "AES-256, Rijndael (256 bit)","AES-256, Rijndael (256 bit)" }, 272{ "AES-256, Rijndael (256 bit)","AES-256, Rijndael (256 bit)" },
273{ "Triple-DES (168 bit)","Triple-DES (168 bit)" }, 273{ "Triple-DES (168 bit)","Triple-DES (168 bit)" },
274{ "Twofish (256 bit)","Twofish (256 bit)" }, 274{ "Twofish (256 bit)","Twofish (256 bit)" },
275{ "Twofish-128 (128 bit)","Twofish-128 (128 bit)" }, 275{ "Twofish-128 (128 bit)","Twofish-128 (128 bit)" },
276{ "Hashing:","Hashing:" }, 276{ "Hashing:","Hashing:" },
277{ "SHA-160, SHA1 (160 bit)","SHA-160, SHA1 (160 bit)" }, 277{ "SHA-160, SHA1 (160 bit)","SHA-160, SHA1 (160 bit)" },
278{ "SHA-256 (256 bit)","SHA-256 (256 bit)" }, 278{ "SHA-256 (256 bit)","SHA-256 (256 bit)" },
279{ "SHA-384 (384 bit)","SHA-384 (384 bit)" }, 279{ "SHA-384 (384 bit)","SHA-384 (384 bit)" },
280{ "SHA-512 (512 bit)","SHA-512 (512 bit)" }, 280{ "SHA-512 (512 bit)","SHA-512 (512 bit)" },
281{ "MD5 (128 bit)","MD5 (128 bit)" }, 281{ "MD5 (128 bit)","MD5 (128 bit)" },
282{ "RIPE-MD-160 (160 bit)","RIPE-MD-160 (160 bit)" }, 282{ "RIPE-MD-160 (160 bit)","RIPE-MD-160 (160 bit)" },
283{ "Tiger (192 bit)","Tiger (192 bit)" }, 283{ "Tiger (192 bit)","Tiger (192 bit)" },
284{ "Permissions:","Zugriffsrechte:" }, 284{ "Permissions:","Zugriffsrechte:" },
285{ "Make backup before saving","Mache Backup vor dem Speichern" }, 285{ "Make backup before saving","Mache Backup vor dem Speichern" },
286{ "Password timeout\n(timeout to hold password in\nmemory,so you don't have to\nre-enter it,if you\nalready have entered it)\n[set to 0 to disable]:","Passwort Timeout\n(Timeout um das Passwort\nim Speicher zu halten,\nso dass es nicht noch mal\neingegeben werden muß.)\n[Setze auf 0 zum deaktivieren]:" }, 286{ "Password timeout\n(timeout to hold password in\nmemory,so you don't have to\nre-enter it,if you\nalready have entered it)\n[set to 0 to disable]:","Passwort Timeout\n(Timeout um das Passwort\nim Speicher zu halten,\nso dass es nicht noch mal\neingegeben werden muß.)\n[Setze auf 0 zum deaktivieren]:" },
287{ "Auto-lock timeout\n(auto lock document after this\namount of seconds)\n[set to 0 to disable]:","(Total-)Sperr-Timeout\n(Sperre Dokument total nach\ndieser Anzahl Sekunden)\n[Setze auf 0 zum deaktivieren]:" }, 287{ "Auto-lock timeout\n(auto lock document after this\namount of seconds)\n[set to 0 to disable]:","(Total-)Sperr-Timeout\n(Sperre Dokument total nach\ndieser Anzahl Sekunden)\n[Setze auf 0 zum deaktivieren]:" },
288{ "deep-lock on autolock","Sperre total beim Sperr-Timeout" }, 288{ "deep-lock on autolock","Sperre total beim Sperr-Timeout" },
289{ "open deeplocked","Öffne total gesperrt" }, 289{ "open deeplocked","Öffne total gesperrt" },
290{ "Favourite browser:","Bevorzugter Browser:" }, 290{ "Favourite browser:","Bevorzugter Browser:" },
291{ "Favourite x-terminal:","Bevorzugtes x-terminal:" }, 291{ "Favourite x-terminal:","Bevorzugtes x-terminal:" },
292{ "Open document with passwords unlocked","Öffne Dokument mit Passwort ungesperrt" }, 292{ "Open document with passwords unlocked","Öffne Dokument mit Passwort ungesperrt" },
293{ "Look && feel","Aussehen" }, 293{ "Look && feel","Aussehen" },
294{ "File","Datei" }, 294{ "File","Datei" },
295{ "Timeout","Timeout" }, 295{ "Timeout","Timeout" },
296{ "Autostart","Autostart" }, 296{ "Autostart","Autostart" },
297{ "External apps","Externe Applik." }, 297{ "External apps","Externe Applik." },
298{ "Miscellaneous","Verschiedenes" }, 298{ "Miscellaneous","Verschiedenes" },
299{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 299{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
300{ "edit category descriptions","Ändere Label für Kategorie" }, 300{ "edit category descriptions","Ändere Label für Kategorie" },
301{ "Close","Schließen" }, 301{ "Close","Schließen" },
302{ "Category:","Category:" }, 302{ "Category:","Category:" },
303{ "Text1 (Description):","Text1 (Beschreibung):" }, 303{ "Text1 (Description):","Text1 (Beschreibung):" },
304{ "Text2 (Username):","Text2 (Benutzername):" }, 304{ "Text2 (Username):","Text2 (Benutzername):" },
305{ "Text3 (Password):","Text3 (Passwort):" }, 305{ "Text3 (Password):","Text3 (Passwort):" },
306{ "edit/add a password entry","Ändere/hinzufüge Passwort Eintrag" }, 306{ "edit/add a password entry","Ändere/hinzufüge Passwort Eintrag" },
307{ "Description:","Beschreibung:" }, 307{ "Description:","Beschreibung:" },
308{ "Username:","Benutzername:" }, 308{ "Username:","Benutzername:" },
309{ "Password:","Passwort:" }, 309{ "Password:","Passwort:" },
310{ "&Reveal","&Offen zeigen" }, 310{ "&Reveal","&Offen zeigen" },
311{ "&Generate","&Generiere" }, 311{ "&Generate","&Generiere" },
312{ "&Password","&Passwort" }, 312{ "&Password","&Passwort" },
313{ "&Comments","Kommentar" }, 313{ "&Comments","Kommentar" },
314{ "Launcher:","Launcher:" }, 314{ "Launcher:","Launcher:" },
315{ "$d = Description","$d = Beschreibung" }, 315{ "$d = Description","$d = Beschreibung" },
316{ "$n = Username","$n = Benutzername" }, 316{ "$n = Username","$n = Benutzername" },
317{ "$c = Comment","$c = Kommentar" }, 317{ "$c = Comment","$c = Kommentar" },
318{ "$u = URL","$u = URL" }, 318{ "$u = URL","$u = URL" },
319{ "$p = Password","$p = Passwort" }, 319{ "$p = Password","$p = Passwort" },
320{ "&Launcher","&Launcher" }, 320{ "&Launcher","&Launcher" },
321{ "Password generator","Passwort Generator" }, 321{ "Password generator","Passwort Generator" },
322{ "Character set:","Buchstaben Set:" }, 322{ "Character set:","Buchstaben Set:" },
323{ "Lowercase (abc)","Klein (abc)" }, 323{ "Lowercase (abc)","Klein (abc)" },
324{ "Uppercase (ABC)","Groß (ABC)" }, 324{ "Uppercase (ABC)","Groß (ABC)" },
325{ "Numbers (123)","Nummmern (123)" }, 325{ "Numbers (123)","Nummmern (123)" },
326{ "Special characters:","Spezielle Buchstaben:" }, 326{ "Special characters:","Spezielle Buchstaben:" },
327{ "Spaces (blank characters)","Leerzeichen" }, 327{ "Spaces (blank characters)","Leerzeichen" },
328{ "User defined:","Benutzer definiert:" }, 328{ "User defined:","Benutzer definiert:" },
329{ "Password Length:","Passwort Länge:" }, 329{ "Password Length:","Passwort Länge:" },
330{ "Enable Filtering to get better passwords","Enable Filtering to get better passwords" }, 330{ "Enable Filtering to get better passwords","Enable Filtering to get better passwords" },
331{ "no password","Kein Passwort" }, 331{ "no password","Kein Passwort" },
332{ "Sorry, you haven't set a password.","Sorry, Sie haben kein Passwort angegeben." }, 332{ "Sorry, you haven't set a password.","Sorry, Sie haben kein Passwort angegeben." },
333{ "not saved, yet","not saved, yet" }, 333{ "not saved, yet","not saved, yet" },
334{ "Can't deep-lock, because the document\nhasn't been saved, yet. Please save\nto a file and try again.","Kann nicht tiefsperren, weil das\nDokument noch nicht gespeichert wurde.\nBitte speichern und noch einmal versuchen." }, 334{ "Can't deep-lock, because the document\nhasn't been saved, yet. Please save\nto a file and try again.","Kann nicht tiefsperren, weil das\nDokument noch nicht gespeichert wurde.\nBitte speichern und noch einmal versuchen." },
335{ "Find","Finde" }, 335{ "Find","Finde" },
336{ "&Exact match","Genaue Übereinstimmung" }, 336{ "&Exact match","Genaue Übereinstimmung" },
337{ "&Case sensitive","Großschrift abhängig" }, 337{ "&Case sensitive","Großschrift abhängig" },
338{ "Search in Column","Suche in Spalten" }, 338{ "Search in Column","Suche in Spalten" },
339{ "&Description","Beschreibung" }, 339{ "&Description","Beschreibung" },
340{ "C&omment","Kommentar" }, 340{ "C&omment","Kommentar" },
341{ "&Username","Benutzername" }, 341{ "&Username","Benutzername" },
342{ "U&RL","URL" }, 342{ "U&RL","URL" },
343{ "delete?","Löschen?" }, 343{ "delete?","Löschen?" },
344{ "Do you really want to delete\nthe selected entry","Wollen Sie wirklich\nden Eintrag löschen:" }, 344{ "Do you really want to delete\nthe selected entry","Wollen Sie wirklich\nden Eintrag löschen:" },
345{ "Save?","Speichern?" }, 345{ "Save?","Speichern?" },
346{ ""\nhas been modified.\nDo you want to save it?",""\nwurde geändert.\nMöchten Sie speichern?" }, 346{ ""\nhas been modified.\nDo you want to save it?",""\nwurde geändert.\nMöchten Sie speichern?" },
347{ "The list\n "","Die Liste\n "" }, 347{ "The list\n "","Die Liste\n "" },
348{ "nothing to do","Nichts zu tun" }, 348{ "nothing to do","Nichts zu tun" },
349{ "Sorry, there's nothing to save.\nPlease first add some passwords.","Sorry, es gibt nichts zu speichern.\nBitte erst Passwörter hinzufügen." }, 349{ "Sorry, there's nothing to save.\nPlease first add some passwords.","Sorry, es gibt nichts zu speichern.\nBitte erst Passwörter hinzufügen." },
350{ "Add new password","Passwort hinzufügen" }, 350{ "Add new password","Passwort hinzufügen" },
351{ "Successfully saved data.","Datei gespeichert." }, 351{ "Successfully saved data.","Datei gespeichert." },
352{ "","" }, 352{ "Category:","Kategorie:" },
353{ "","" }, 353{ "","" },
354{ "","" }, 354{ "","" },
355{ "","" }, 355{ "","" },
356 356
diff --git a/bin/kdepim/pwmanager/icons16/decrypted.png b/bin/kdepim/pwmanager/icons16/decrypted.png
index a52d790..3777a12 100644
--- a/bin/kdepim/pwmanager/icons16/decrypted.png
+++ b/bin/kdepim/pwmanager/icons16/decrypted.png
Binary files differ
diff --git a/bin/kdepim/pwmanager/icons22/decrypted.png b/bin/kdepim/pwmanager/icons22/decrypted.png
index 2228639..ea770ea 100644
--- a/bin/kdepim/pwmanager/icons22/decrypted.png
+++ b/bin/kdepim/pwmanager/icons22/decrypted.png
Binary files differ
diff --git a/pwmanager/pwmanager/addentrywndimpl.cpp b/pwmanager/pwmanager/addentrywndimpl.cpp
index fa6b6c0..09efd1c 100644
--- a/pwmanager/pwmanager/addentrywndimpl.cpp
+++ b/pwmanager/pwmanager/addentrywndimpl.cpp
@@ -1,220 +1,221 @@
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 * Many very good improvements and the original implementations of * 6 * Many very good improvements and the original implementations of *
7 * them came from Matt Scifo <mscifo@o1.com> * 7 * them came from Matt Scifo <mscifo@o1.com> *
8 * * 8 * *
9 * This program is free software; you can redistribute it and/or modify * 9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License version 2 * 10 * it under the terms of the GNU General Public License version 2 *
11 * as published by the Free Software Foundation. * 11 * as published by the Free Software Foundation. *
12 * * 12 * *
13 ***************************************************************************/ 13 ***************************************************************************/
14 14
15/*************************************************************************** 15/***************************************************************************
16 * copyright (C) 2004 by Ulf Schenk 16 * copyright (C) 2004 by Ulf Schenk
17 * This file is originaly based on version 1.0.1 of pwmanager 17 * This file is originaly based on version 1.0.1 of pwmanager
18 * and was modified to run on embedded devices that run microkde 18 * and was modified to run on embedded devices that run microkde
19 * 19 *
20 * $Id$ 20 * $Id$
21 **************************************************************************/ 21 **************************************************************************/
22 22
23#include "addentrywndimpl.h" 23#include "addentrywndimpl.h"
24#include "pwmexception.h" 24#include "pwmexception.h"
25#include "pwgenwndimpl.h" 25#include "pwgenwndimpl.h"
26#ifndef PWM_EMBEDDED 26#ifndef PWM_EMBEDDED
27#include "advcommeditimpl.h" 27#include "advcommeditimpl.h"
28#endif 28#endif
29#include "htmlgen.h" 29#include "htmlgen.h"
30 30
31#include <kmessagebox.h> 31#include <kmessagebox.h>
32#include <klocale.h> 32#include <klocale.h>
33 33
34#include <qpushbutton.h> 34#include <qpushbutton.h>
35#include <qlabel.h> 35#include <qlabel.h>
36#include <qlayout.h> 36#include <qlayout.h>
37 37
38 38
39#ifndef PWM_EMBEDDED 39#ifndef PWM_EMBEDDED
40AddEntryWndImpl::AddEntryWndImpl() 40AddEntryWndImpl::AddEntryWndImpl()
41 : addEntryWnd( 0, "AddEntryWndImpl", TRUE) 41 : addEntryWnd( 0, "AddEntryWndImpl", TRUE)
42#else 42#else
43AddEntryWndImpl::AddEntryWndImpl( PwMDoc* doc, QWidget* parent, const char* name) 43AddEntryWndImpl::AddEntryWndImpl( PwMDoc* doc, QWidget* parent, const char* name)
44 : addEntryWnd( doc, parent, name) 44 : addEntryWnd( doc, parent, name)
45#endif 45#endif
46{ 46{
47 categoryComboBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding,QSizePolicy::Preferred ));
47#ifndef PWM_EMBEDDED 48#ifndef PWM_EMBEDDED
48 editAdvCommentButton = 0; 49 editAdvCommentButton = 0;
49 commentTextEdit = 0; 50 commentTextEdit = 0;
50#endif 51#endif
51 switchComment(false); 52 switchComment(false);
52 pwGen = new PwGenWndImpl(this); 53 pwGen = new PwGenWndImpl(this);
53} 54}
54 55
55AddEntryWndImpl::~AddEntryWndImpl() 56AddEntryWndImpl::~AddEntryWndImpl()
56{ 57{
57#ifndef PWM_EMBEDDED 58#ifndef PWM_EMBEDDED
58 delete_ifnot_null(editAdvCommentButton); 59 delete_ifnot_null(editAdvCommentButton);
59 delete_ifnot_null(commentTextEdit); 60 delete_ifnot_null(commentTextEdit);
60#endif 61#endif
61 delete pwGen; 62 delete pwGen;
62} 63}
63 64
64#ifdef PWM_EMBEDDED 65#ifdef PWM_EMBEDDED
65void AddEntryWndImpl::slotOk() 66void AddEntryWndImpl::slotOk()
66{ 67{
67 slotApply(); 68 slotApply();
68 69
69 if (pwLineEdit->text().isEmpty()) { 70 if (pwLineEdit->text().isEmpty()) {
70 KMessageBox::error(this, 71 KMessageBox::error(this,
71 i18n("Sorry, you haven't set a password."), 72 i18n("Sorry, you haven't set a password."),
72 i18n("no password")); 73 i18n("no password"));
73 return; 74 return;
74 } 75 }
75 76
76 if (descLineEdit->text().isEmpty()) { 77 if (descLineEdit->text().isEmpty()) {
77 KMessageBox::error(this, 78 KMessageBox::error(this,
78 i18n("You haven't set a \"Description\"."), 79 i18n("You haven't set a \"Description\"."),
79 i18n("Description not set")); 80 i18n("Description not set"));
80 return; 81 return;
81 } 82 }
82 83
83 KDialogBase::slotOk(); 84 KDialogBase::slotOk();
84} 85}
85#else 86#else
86 87
87void AddEntryWndImpl::okButton_slot() 88void AddEntryWndImpl::okButton_slot()
88{ 89{
89 if (pwLineEdit->text().isEmpty()) { 90 if (pwLineEdit->text().isEmpty()) {
90 KMessageBox::error(this, 91 KMessageBox::error(this,
91 i18n("Sorry, you haven't set a password."), 92 i18n("Sorry, you haven't set a password."),
92 i18n("no password")); 93 i18n("no password"));
93 return; 94 return;
94 } 95 }
95 if (descLineEdit->text().isEmpty()) { 96 if (descLineEdit->text().isEmpty()) {
96 KMessageBox::error(this, 97 KMessageBox::error(this,
97 i18n 98 i18n
98 ("You haven't set a \"Description\"."), 99 ("You haven't set a \"Description\"."),
99 i18n("Description not set")); 100 i18n("Description not set"));
100 return; 101 return;
101 } 102 }
102 done(1); 103 done(1);
103} 104}
104 105
105void AddEntryWndImpl::cancelButton_slot() 106void AddEntryWndImpl::cancelButton_slot()
106{ 107{
107 done(2); 108 done(2);
108} 109}
109#endif 110#endif
110 111
111void AddEntryWndImpl::setCurrCategory(const QString &cat) 112void AddEntryWndImpl::setCurrCategory(const QString &cat)
112{ 113{
113 int i, count = categoryComboBox->count(); 114 int i, count = categoryComboBox->count();
114 115
115 for (i = 0; i < count; ++i) { 116 for (i = 0; i < count; ++i) {
116 if (categoryComboBox->text(i) == cat) { 117 if (categoryComboBox->text(i) == cat) {
117 categoryComboBox->setCurrentItem(i); 118 categoryComboBox->setCurrentItem(i);
118#ifdef PWM_EMBEDDED 119#ifdef PWM_EMBEDDED
119 categorySelected(cat); 120 categorySelected(cat);
120#endif 121#endif
121 return; 122 return;
122 } 123 }
123 } 124 }
124 BUG(); 125 BUG();
125} 126}
126 127
127void AddEntryWndImpl::revealButton_slot() 128void AddEntryWndImpl::revealButton_slot()
128{ 129{
129 if (revealButton->isOn()) { 130 if (revealButton->isOn()) {
130 pwLineEdit->setEchoMode(QLineEdit::Normal); 131 pwLineEdit->setEchoMode(QLineEdit::Normal);
131 } else { 132 } else {
132 pwLineEdit->setEchoMode(QLineEdit::Password); 133 pwLineEdit->setEchoMode(QLineEdit::Password);
133 } 134 }
134} 135}
135 136
136void AddEntryWndImpl::generateButton_slot() 137void AddEntryWndImpl::generateButton_slot()
137{ 138{
138 if (!pwGen->exec()) 139 if (!pwGen->exec())
139 return; 140 return;
140 setPassword(pwGen->getPassword()); 141 setPassword(pwGen->getPassword());
141} 142}
142 143
143QString AddEntryWndImpl::getComment() 144QString AddEntryWndImpl::getComment()
144{ 145{
145#ifndef PWM_EMBEDDED 146#ifndef PWM_EMBEDDED
146 if (isAdvancedComment()) { 147 if (isAdvancedComment()) {
147 return advCommentDta; 148 return advCommentDta;
148 } 149 }
149#endif 150#endif
150 return commentTextEdit->text(); 151 return commentTextEdit->text();
151} 152}
152 153
153void AddEntryWndImpl::setComment(const QString &comm) 154void AddEntryWndImpl::setComment(const QString &comm)
154{ 155{
155#ifndef PWM_EMBEDDED 156#ifndef PWM_EMBEDDED
156 if (HtmlGen::isHtml(comm)) { 157 if (HtmlGen::isHtml(comm)) {
157 advancedCommentButton->setOn(true); 158 advancedCommentButton->setOn(true);
158 advCommentDta = comm; 159 advCommentDta = comm;
159 } else { 160 } else {
160 advancedCommentButton->setOn(false); 161 advancedCommentButton->setOn(false);
161 commentTextEdit->setText(comm); 162 commentTextEdit->setText(comm);
162 } 163 }
163#else 164#else
164 commentTextEdit->setText(comm); 165 commentTextEdit->setText(comm);
165#endif 166#endif
166} 167}
167 168
168void AddEntryWndImpl::advancedCommentButton_slot(bool on) 169void AddEntryWndImpl::advancedCommentButton_slot(bool on)
169{ 170{
170#ifndef PWM_EMBEDDED 171#ifndef PWM_EMBEDDED
171 switchComment(on); 172 switchComment(on);
172#endif 173#endif
173} 174}
174 175
175void AddEntryWndImpl::switchComment(bool toAdvanced) 176void AddEntryWndImpl::switchComment(bool toAdvanced)
176{ 177{
177#ifndef PWM_EMBEDDED 178#ifndef PWM_EMBEDDED
178 179
179 useAdvComment = toAdvanced; 180 useAdvComment = toAdvanced;
180 if (toAdvanced) { 181 if (toAdvanced) {
181 if (commentTextEdit) { 182 if (commentTextEdit) {
182 savedCommentText = commentTextEdit->text(); 183 savedCommentText = commentTextEdit->text();
183 delete_and_null(commentTextEdit); 184 delete_and_null(commentTextEdit);
184 } 185 }
185 if (editAdvCommentButton) 186 if (editAdvCommentButton)
186 return; 187 return;
187 editAdvCommentButton = new QPushButton(i18n("Edit advanced comment..."), 188 editAdvCommentButton = new QPushButton(i18n("Edit advanced comment..."),
188 commentDummy); 189 commentDummy);
189 editAdvCommentButton->resize(commentDummy->size().width(), 50); 190 editAdvCommentButton->resize(commentDummy->size().width(), 50);
190 connect(editAdvCommentButton, SIGNAL(clicked()), 191 connect(editAdvCommentButton, SIGNAL(clicked()),
191 this, SLOT(editAdvCommentButton_slot())); 192 this, SLOT(editAdvCommentButton_slot()));
192 editAdvCommentButton->show(); 193 editAdvCommentButton->show();
193 } else { 194 } else {
194 delete_ifnot_null(editAdvCommentButton); 195 delete_ifnot_null(editAdvCommentButton);
195 if (commentTextEdit) 196 if (commentTextEdit)
196 return; 197 return;
197 198
198 commentTextEdit = new QTextEdit(commentDummy); 199 commentTextEdit = new QTextEdit(commentDummy);
199 commentTextEdit->setTextFormat(Qt::PlainText); 200 commentTextEdit->setTextFormat(Qt::PlainText);
200 commentTextEdit->resize(commentDummy->size()); 201 commentTextEdit->resize(commentDummy->size());
201 commentTextEdit->setText(savedCommentText); 202 commentTextEdit->setText(savedCommentText);
202 commentTextEdit->show(); 203 commentTextEdit->show();
203 } 204 }
204#endif 205#endif
205} 206}
206 207
207void AddEntryWndImpl::editAdvCommentButton_slot() 208void AddEntryWndImpl::editAdvCommentButton_slot()
208{ 209{
209#ifndef PWM_EMBEDDED 210#ifndef PWM_EMBEDDED
210 AdvCommEditImpl editor(this); 211 AdvCommEditImpl editor(this);
211 editor.setHtmlDta(advCommentDta); 212 editor.setHtmlDta(advCommentDta);
212 if (editor.exec()) 213 if (editor.exec())
213 return; 214 return;
214 advCommentDta = editor.getHtmlDta(); 215 advCommentDta = editor.getHtmlDta();
215#endif 216#endif
216} 217}
217 218
218#ifndef PWM_EMBEDDED 219#ifndef PWM_EMBEDDED
219#include "addentrywndimpl.moc" 220#include "addentrywndimpl.moc"
220#endif 221#endif
diff --git a/pwmanager/pwmanager/pwm.cpp b/pwmanager/pwmanager/pwm.cpp
index 9187380..a751fce 100644
--- a/pwmanager/pwmanager/pwm.cpp
+++ b/pwmanager/pwmanager/pwm.cpp
@@ -1,1138 +1,1137 @@
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 <klocale.h> 20#include <klocale.h>
21#include <klistview.h> 21#include <klistview.h>
22#include <ktoolbar.h> 22#include <ktoolbar.h>
23#include <kfiledialog.h> 23#include <kfiledialog.h>
24#include <kiconloader.h> 24#include <kiconloader.h>
25#include <kmessagebox.h> 25#include <kmessagebox.h>
26 26
27#include <qstatusbar.h> 27#include <qstatusbar.h>
28 28
29#ifndef PWM_EMBEDDED 29#ifndef PWM_EMBEDDED
30#include <kmenubar.h> 30#include <kmenubar.h>
31#include <kstatusbar.h> 31#include <kstatusbar.h>
32#include <dcopclient.h> 32#include <dcopclient.h>
33#include "configwndimpl.h" 33#include "configwndimpl.h"
34#include "configuration.h" 34#include "configuration.h"
35#else 35#else
36#include <qmenubar.h> 36#include <qmenubar.h>
37#include <qmessagebox.h> 37#include <qmessagebox.h>
38#include <pwmprefs.h> 38#include <pwmprefs.h>
39#include <kpimglobalprefs.h> 39#include <kpimglobalprefs.h>
40#include <kcmconfigs/kcmpwmconfig.h> 40#include <kcmconfigs/kcmpwmconfig.h>
41#include <kcmconfigs/kcmkdepimconfig.h> 41#include <kcmconfigs/kcmkdepimconfig.h>
42#include <kcmultidialog.h> 42#include <kcmultidialog.h>
43#include "editcategory.h" 43#include "editcategory.h"
44#endif 44#endif
45 45
46 46
47#ifndef DESKTOP_VERSION 47#ifndef DESKTOP_VERSION
48#include <qpe/global.h> 48#include <qpe/global.h>
49#endif 49#endif
50 50
51#include <qpixmap.h> 51#include <qpixmap.h>
52#include <qcheckbox.h> 52#include <qcheckbox.h>
53#include <qspinbox.h> 53#include <qspinbox.h>
54#include <qlineedit.h> 54#include <qlineedit.h>
55#include <qfileinfo.h> 55#include <qfileinfo.h>
56#include <qclipboard.h> 56#include <qclipboard.h>
57 57
58 58
59#include <stdio.h> 59#include <stdio.h>
60 60
61#include "pwm.h" 61#include "pwm.h"
62#include "pwminit.h" 62#include "pwminit.h"
63#include "pwmprint.h" 63#include "pwmprint.h"
64#include "addentrywndimpl.h" 64#include "addentrywndimpl.h"
65#include "globalstuff.h" 65#include "globalstuff.h"
66#include "findwndimpl.h" 66#include "findwndimpl.h"
67#include "csv.h" 67#include "csv.h"
68 68
69#ifdef CONFIG_KWALLETIF 69#ifdef CONFIG_KWALLETIF
70# include "kwalletif.h" 70# include "kwalletif.h"
71# include "kwalletemu.h" 71# include "kwalletemu.h"
72#endif 72#endif
73#ifdef CONFIG_KEYCARD 73#ifdef CONFIG_KEYCARD
74# include "pwmkeycard.h" 74# include "pwmkeycard.h"
75#endif 75#endif
76 76
77 77
78 #define DEFAULT_SIZE (QSize(700, 400)) 78 #define DEFAULT_SIZE (QSize(700, 400))
79 79
80// Button IDs for "file" popup menu 80// Button IDs for "file" popup menu
81enum { 81enum {
82 BUTTON_POPUP_FILE_NEW = 0, 82 BUTTON_POPUP_FILE_NEW = 0,
83 BUTTON_POPUP_FILE_OPEN, 83 BUTTON_POPUP_FILE_OPEN,
84 BUTTON_POPUP_FILE_CLOSE, 84 BUTTON_POPUP_FILE_CLOSE,
85 BUTTON_POPUP_FILE_SAVE, 85 BUTTON_POPUP_FILE_SAVE,
86 BUTTON_POPUP_FILE_SAVEAS, 86 BUTTON_POPUP_FILE_SAVEAS,
87 BUTTON_POPUP_FILE_EXPORT, 87 BUTTON_POPUP_FILE_EXPORT,
88 BUTTON_POPUP_FILE_IMPORT, 88 BUTTON_POPUP_FILE_IMPORT,
89 BUTTON_POPUP_FILE_PRINT, 89 BUTTON_POPUP_FILE_PRINT,
90 BUTTON_POPUP_FILE_QUIT 90 BUTTON_POPUP_FILE_QUIT
91}; 91};
92// Button IDs for "manage" popup menu 92// Button IDs for "manage" popup menu
93enum { 93enum {
94 BUTTON_POPUP_MANAGE_ADD = 0, 94 BUTTON_POPUP_MANAGE_ADD = 0,
95 BUTTON_POPUP_MANAGE_EDIT, 95 BUTTON_POPUP_MANAGE_EDIT,
96 BUTTON_POPUP_MANAGE_DEL, 96 BUTTON_POPUP_MANAGE_DEL,
97 BUTTON_POPUP_MANAGE_CHANGEMP 97 BUTTON_POPUP_MANAGE_CHANGEMP
98}; 98};
99// Button IDs for chipcard popup menu 99// Button IDs for chipcard popup menu
100enum { 100enum {
101#ifdef CONFIG_KEYCARD 101#ifdef CONFIG_KEYCARD
102 BUTTON_POPUP_CHIPCARD_GENNEW = 0, 102 BUTTON_POPUP_CHIPCARD_GENNEW = 0,
103 BUTTON_POPUP_CHIPCARD_DEL, 103 BUTTON_POPUP_CHIPCARD_DEL,
104 BUTTON_POPUP_CHIPCARD_READID, 104 BUTTON_POPUP_CHIPCARD_READID,
105 BUTTON_POPUP_CHIPCARD_SAVEBACKUP, 105 BUTTON_POPUP_CHIPCARD_SAVEBACKUP,
106 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP 106 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP
107#else // CONFIG_KEYCARD 107#else // CONFIG_KEYCARD
108 BUTTON_POPUP_CHIPCARD_NO = 0 108 BUTTON_POPUP_CHIPCARD_NO = 0
109#endif // CONFIG_KEYCARD 109#endif // CONFIG_KEYCARD
110}; 110};
111// Button IDs for "view" popup menu 111// Button IDs for "view" popup menu
112enum { 112enum {
113 BUTTON_POPUP_VIEW_FIND = 0, 113 BUTTON_POPUP_VIEW_FIND = 0,
114 BUTTON_POPUP_VIEW_LOCK, 114 BUTTON_POPUP_VIEW_LOCK,
115 BUTTON_POPUP_VIEW_DEEPLOCK, 115 BUTTON_POPUP_VIEW_DEEPLOCK,
116 BUTTON_POPUP_VIEW_UNLOCK 116 BUTTON_POPUP_VIEW_UNLOCK
117}; 117};
118// Button IDs for "options" popup menu 118// Button IDs for "options" popup menu
119enum { 119enum {
120 BUTTON_POPUP_OPTIONS_CONFIG = 0 120 BUTTON_POPUP_OPTIONS_CONFIG = 0
121#ifdef PWM_EMBEDDED 121#ifdef PWM_EMBEDDED
122 ,BUTTON_POPUP_OPTIONS_CATEGORY 122 ,BUTTON_POPUP_OPTIONS_CATEGORY
123#endif 123#endif
124}; 124};
125// Button IDs for "export" popup menu (in "file" popup menu) 125// Button IDs for "export" popup menu (in "file" popup menu)
126enum { 126enum {
127 BUTTON_POPUP_EXPORT_TEXT = 0, 127 BUTTON_POPUP_EXPORT_TEXT = 0,
128 BUTTON_POPUP_EXPORT_GPASMAN, 128 BUTTON_POPUP_EXPORT_GPASMAN,
129 BUTTON_POPUP_EXPORT_CSV 129 BUTTON_POPUP_EXPORT_CSV
130#ifdef CONFIG_KWALLETIF 130#ifdef CONFIG_KWALLETIF
131 ,BUTTON_POPUP_EXPORT_KWALLET 131 ,BUTTON_POPUP_EXPORT_KWALLET
132#endif 132#endif
133}; 133};
134// Button IDs for "import" popup menu (in "file" popup menu) 134// Button IDs for "import" popup menu (in "file" popup menu)
135enum { 135enum {
136 BUTTON_POPUP_IMPORT_TEXT = 0, 136 BUTTON_POPUP_IMPORT_TEXT = 0,
137 BUTTON_POPUP_IMPORT_GPASMAN, 137 BUTTON_POPUP_IMPORT_GPASMAN,
138 BUTTON_POPUP_IMPORT_CSV 138 BUTTON_POPUP_IMPORT_CSV
139#ifdef CONFIG_KWALLETIF 139#ifdef CONFIG_KWALLETIF
140 ,BUTTON_POPUP_IMPORT_KWALLET 140 ,BUTTON_POPUP_IMPORT_KWALLET
141#endif 141#endif
142}; 142};
143 143
144#ifdef PWM_EMBEDDED 144#ifdef PWM_EMBEDDED
145// Button IDs for "help" popup menu 145// Button IDs for "help" popup menu
146enum { 146enum {
147 BUTTON_POPUP_HELP_LICENSE = 0, 147 BUTTON_POPUP_HELP_LICENSE = 0,
148 BUTTON_POPUP_HELP_FAQ, 148 BUTTON_POPUP_HELP_FAQ,
149 BUTTON_POPUP_HELP_ABOUT, 149 BUTTON_POPUP_HELP_ABOUT,
150 BUTTON_POPUP_HELP_SYNC, 150 BUTTON_POPUP_HELP_SYNC,
151 BUTTON_POPUP_HELP_WHATSNEW 151 BUTTON_POPUP_HELP_WHATSNEW
152}; 152};
153#endif 153#endif
154 154
155// Button IDs for toolbar 155// Button IDs for toolbar
156enum { 156enum {
157 BUTTON_TOOL_NEW = 0, 157 BUTTON_TOOL_NEW = 0,
158 BUTTON_TOOL_OPEN, 158 BUTTON_TOOL_OPEN,
159 BUTTON_TOOL_SAVE, 159 BUTTON_TOOL_SAVE,
160 BUTTON_TOOL_SAVEAS, 160 BUTTON_TOOL_SAVEAS,
161 BUTTON_TOOL_PRINT, 161 BUTTON_TOOL_PRINT,
162 BUTTON_TOOL_ADD, 162 BUTTON_TOOL_ADD,
163 BUTTON_TOOL_EDIT, 163 BUTTON_TOOL_EDIT,
164 BUTTON_TOOL_DEL, 164 BUTTON_TOOL_DEL,
165 BUTTON_TOOL_FIND, 165 BUTTON_TOOL_FIND,
166 BUTTON_TOOL_LOCK, 166 BUTTON_TOOL_LOCK,
167 BUTTON_TOOL_DEEPLOCK, 167 BUTTON_TOOL_DEEPLOCK,
168 BUTTON_TOOL_UNLOCK 168 BUTTON_TOOL_UNLOCK
169}; 169};
170 170
171 171
172PwM::PwM(PwMInit *_init, PwMDoc *doc, 172PwM::PwM(PwMInit *_init, PwMDoc *doc,
173 bool virginity, 173 bool virginity,
174 QWidget *parent, const char *name) 174 QWidget *parent, const char *name)
175 : KMainWindow(parent, "HALLO") 175 : KMainWindow(parent, "HALLO")
176 , forceQuit (false) 176 , forceQuit (false)
177 , forceMinimizeToTray (false) 177 , forceMinimizeToTray (false)
178{ 178{
179 syncManager = 0; 179 syncManager = 0;
180 virgin = !virginity; 180 virgin = !virginity;
181 init = _init; 181 init = _init;
182 connect(doc, SIGNAL(docClosed(PwMDoc *)), 182 connect(doc, SIGNAL(docClosed(PwMDoc *)),
183 this, SLOT(docClosed(PwMDoc *))); 183 this, SLOT(docClosed(PwMDoc *)));
184 initMenubar(); 184 initMenubar();
185 initToolbar(); 185 initToolbar();
186 initMetrics(); 186 initMetrics();
187 setVirgin(virginity); 187 setVirgin(virginity);
188 setFocusPolicy(QWidget::WheelFocus); 188 setFocusPolicy(QWidget::WheelFocus);
189#ifndef PWM_EMBEDDED 189#ifndef PWM_EMBEDDED
190 statusBar()->show(); 190 statusBar()->show();
191#endif 191#endif
192 view = makeNewListView(doc); 192 view = makeNewListView(doc);
193 setCentralWidget(view); 193 setCentralWidget(view);
194 updateCaption(); 194 updateCaption();
195 showStatMsg(i18n("Ready.")); 195 showStatMsg(i18n("Ready."));
196} 196}
197 197
198PwM::~PwM() 198PwM::~PwM()
199{ 199{
200 //qDebug("PwM::~PwM() %x", this); 200 //qDebug("PwM::~PwM() %x", this);
201 disconnect(curDoc(), SIGNAL(docClosed(PwMDoc *)), 201 disconnect(curDoc(), SIGNAL(docClosed(PwMDoc *)),
202 this, SLOT(docClosed(PwMDoc *))); 202 this, SLOT(docClosed(PwMDoc *)));
203 conf()->confWndMainWndSize(size()); 203 conf()->confWndMainWndSize(size());
204 //LR closing of windows changed 204 //LR closing of windows changed
205 //needed for fastload option on PDA 205 //needed for fastload option on PDA
206 //emit closed(this); 206 //emit closed(this);
207 //qDebug("PwM::~PwM() emited closed(this)"); 207 //qDebug("PwM::~PwM() emited closed(this)");
208 delete view; 208 delete view;
209 delete syncManager; 209 delete syncManager;
210} 210}
211 211
212void PwM::initMenubar() 212void PwM::initMenubar()
213{ 213{
214 KIconLoader* picons; 214 KIconLoader* picons;
215#ifndef PWM_EMBEDDED 215#ifndef PWM_EMBEDDED
216 KIconLoader icons; 216 KIconLoader icons;
217 picons = &icons; 217 picons = &icons;
218#else 218#else
219 picons = KGlobal::iconLoader(); 219 picons = KGlobal::iconLoader();
220 220
221 221
222 syncPopup = new KPopupMenu(this); 222 syncPopup = new KPopupMenu(this);
223 223
224 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::PWMPI, PWMPrefs::instance(), syncPopup); 224 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::PWMPI, PWMPrefs::instance(), syncPopup);
225 syncManager->setBlockSave(false); 225 syncManager->setBlockSave(false);
226 226
227 connect ( syncPopup, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 227 connect ( syncPopup, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
228 syncManager->fillSyncMenu(); 228 syncManager->fillSyncMenu();
229 229
230#endif 230#endif
231 filePopup = new KPopupMenu(this); 231 filePopup = new KPopupMenu(this);
232 importPopup = new KPopupMenu(filePopup); 232 importPopup = new KPopupMenu(filePopup);
233 exportPopup = new KPopupMenu(filePopup); 233 exportPopup = new KPopupMenu(filePopup);
234 managePopup = new KPopupMenu(this); 234 managePopup = new KPopupMenu(this);
235#ifdef CONFIG_KEYCARD 235#ifdef CONFIG_KEYCARD
236 chipcardPopup = new KPopupMenu(this); 236 chipcardPopup = new KPopupMenu(this);
237#endif // CONFIG_KEYCARD 237#endif // CONFIG_KEYCARD
238 viewPopup = new KPopupMenu(this); 238 viewPopup = new KPopupMenu(this);
239 optionsPopup = new KPopupMenu(this); 239 optionsPopup = new KPopupMenu(this);
240 240
241// "file" popup menu 241// "file" popup menu
242 filePopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)), 242 filePopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)),
243 i18n("&New"), this, 243 i18n("&New"), this,
244 SLOT(new_slot()), 0, BUTTON_POPUP_FILE_NEW); 244 SLOT(new_slot()), 0, BUTTON_POPUP_FILE_NEW);
245 filePopup->insertItem(QIconSet(picons->loadIcon("fileopen", KIcon::Small)), 245 filePopup->insertItem(QIconSet(picons->loadIcon("fileopen", KIcon::Small)),
246 i18n("&Open"), this, 246 i18n("&Open"), this,
247 SLOT(open_slot()), 0, BUTTON_POPUP_FILE_OPEN); 247 SLOT(open_slot()), 0, BUTTON_POPUP_FILE_OPEN);
248 filePopup->insertItem(QIconSet(picons->loadIcon("fileclose", KIcon::Small)), 248 filePopup->insertItem(QIconSet(picons->loadIcon("fileclose", KIcon::Small)),
249 i18n("&Close"), this, 249 i18n("&Close"), this,
250 SLOT(close_slot()), 0, BUTTON_POPUP_FILE_CLOSE); 250 SLOT(close_slot()), 0, BUTTON_POPUP_FILE_CLOSE);
251 filePopup->insertSeparator(); 251 filePopup->insertSeparator();
252 filePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)),
253 i18n("&Add password"), this,
254 SLOT(addPwd_slot()), 0,
255 BUTTON_POPUP_MANAGE_ADD);
256 filePopup->insertSeparator();
257 filePopup->insertItem(QIconSet(picons->loadIcon("filesave", KIcon::Small)), 252 filePopup->insertItem(QIconSet(picons->loadIcon("filesave", KIcon::Small)),
258 i18n("&Save"), this, 253 i18n("&Save"), this,
259 SLOT(save_slot()), 0, BUTTON_POPUP_FILE_SAVE); 254 SLOT(save_slot()), 0, BUTTON_POPUP_FILE_SAVE);
260 filePopup->insertItem(QIconSet(picons->loadIcon("filesaveas", KIcon::Small)), 255 filePopup->insertItem(QIconSet(picons->loadIcon("filesaveas", KIcon::Small)),
261 i18n("Save &as..."), 256 i18n("Save &as..."),
262 this, SLOT(saveAs_slot()), 0, 257 this, SLOT(saveAs_slot()), 0,
263 BUTTON_POPUP_FILE_SAVEAS); 258 BUTTON_POPUP_FILE_SAVEAS);
264 filePopup->insertSeparator(); 259 filePopup->insertSeparator();
265 // "file/export" popup menu 260 // "file/export" popup menu
266 exportPopup->insertItem(i18n("&Text-file..."), this, 261 exportPopup->insertItem(i18n("&Text-file..."), this,
267 SLOT(exportToText()), 0, BUTTON_POPUP_EXPORT_TEXT); 262 SLOT(exportToText()), 0, BUTTON_POPUP_EXPORT_TEXT);
268 exportPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this, 263 exportPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this,
269 SLOT(exportToGpasman()), 0, BUTTON_POPUP_EXPORT_GPASMAN); 264 SLOT(exportToGpasman()), 0, BUTTON_POPUP_EXPORT_GPASMAN);
270 exportPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this, 265 exportPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this,
271 SLOT(exportToCsv()), 0, BUTTON_POPUP_EXPORT_CSV); 266 SLOT(exportToCsv()), 0, BUTTON_POPUP_EXPORT_CSV);
272#ifdef CONFIG_KWALLETIF 267#ifdef CONFIG_KWALLETIF
273 exportPopup->insertItem(i18n("&KWallet..."), this, 268 exportPopup->insertItem(i18n("&KWallet..."), this,
274 SLOT(exportToKWallet()), 0, BUTTON_POPUP_EXPORT_KWALLET); 269 SLOT(exportToKWallet()), 0, BUTTON_POPUP_EXPORT_KWALLET);
275#endif 270#endif
276 filePopup->insertItem(QIconSet(picons->loadIcon("fileexport", KIcon::Small)), 271 filePopup->insertItem(QIconSet(picons->loadIcon("fileexport", KIcon::Small)),
277 i18n("E&xport"), exportPopup, 272 i18n("E&xport"), exportPopup,
278 BUTTON_POPUP_FILE_EXPORT); 273 BUTTON_POPUP_FILE_EXPORT);
279 // "file/import" popup menu 274 // "file/import" popup menu
280 importPopup->insertItem(i18n("&Text-file..."), this, 275 importPopup->insertItem(i18n("&Text-file..."), this,
281 SLOT(importFromText()), 0, BUTTON_POPUP_IMPORT_TEXT); 276 SLOT(importFromText()), 0, BUTTON_POPUP_IMPORT_TEXT);
282 importPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this, 277 importPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this,
283 SLOT(importFromGpasman()), 0, BUTTON_POPUP_IMPORT_GPASMAN); 278 SLOT(importFromGpasman()), 0, BUTTON_POPUP_IMPORT_GPASMAN);
284 importPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this, 279 importPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this,
285 SLOT(importCsv()), 0, BUTTON_POPUP_IMPORT_CSV); 280 SLOT(importCsv()), 0, BUTTON_POPUP_IMPORT_CSV);
286#ifdef CONFIG_KWALLETIF 281#ifdef CONFIG_KWALLETIF
287 importPopup->insertItem(i18n("&KWallet..."), this, 282 importPopup->insertItem(i18n("&KWallet..."), this,
288 SLOT(importKWallet()), 0, BUTTON_POPUP_IMPORT_KWALLET); 283 SLOT(importKWallet()), 0, BUTTON_POPUP_IMPORT_KWALLET);
289#endif 284#endif
290 filePopup->insertItem(QIconSet(picons->loadIcon("fileimport", KIcon::Small)), 285 filePopup->insertItem(QIconSet(picons->loadIcon("fileimport", KIcon::Small)),
291 i18n("I&mport"), importPopup, 286 i18n("I&mport"), importPopup,
292 BUTTON_POPUP_FILE_IMPORT); 287 BUTTON_POPUP_FILE_IMPORT);
293 filePopup->insertSeparator(); 288 filePopup->insertSeparator();
294#if 0 289#if 0
295 filePopup->insertItem(QIconSet(picons->loadIcon("fileprint", KIcon::Small)), 290 filePopup->insertItem(QIconSet(picons->loadIcon("fileprint", KIcon::Small)),
296 i18n("&Print..."), this, 291 i18n("&Print..."), this,
297 SLOT(print_slot()), 0, BUTTON_POPUP_FILE_PRINT); 292 SLOT(print_slot()), 0, BUTTON_POPUP_FILE_PRINT);
298 filePopup->insertSeparator(); 293 filePopup->insertSeparator();
299#endif 294#endif
300 filePopup->insertItem(QIconSet(picons->loadIcon("exit", KIcon::Small)), 295 filePopup->insertItem(QIconSet(picons->loadIcon("exit", KIcon::Small)),
301 i18n("&Quit"), this, 296 i18n("&Quit"), this,
302 SLOT(quitButton_slot()), 0, BUTTON_POPUP_FILE_QUIT); 297 SLOT(quitButton_slot()), 0, BUTTON_POPUP_FILE_QUIT);
303 menuBar()->insertItem(i18n("&File"), filePopup); 298 menuBar()->insertItem(i18n("&File"), filePopup);
304// "manage" popup menu 299// "manage" popup menu
305 managePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)), 300 managePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)),
306 i18n("&Add password"), this, 301 i18n("&Add password"), this,
307 SLOT(addPwd_slot()), 0, 302 SLOT(addPwd_slot()), 0,
308 BUTTON_POPUP_MANAGE_ADD); 303 BUTTON_POPUP_MANAGE_ADD);
309 managePopup->insertSeparator(); 304 managePopup->insertSeparator();
310 managePopup->insertItem(QIconSet(picons->loadIcon("edit", KIcon::Small)), 305 managePopup->insertItem(QIconSet(picons->loadIcon("edit", KIcon::Small)),
311 i18n("&Edit"), this, SLOT(editPwd_slot()), 0, 306 i18n("&Edit"), this, SLOT(editPwd_slot()), 0,
312 BUTTON_POPUP_MANAGE_EDIT); 307 BUTTON_POPUP_MANAGE_EDIT);
313 managePopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)), 308 managePopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)),
314 i18n("&Delete"), this, SLOT(deletePwd_slot()), 309 i18n("&Delete"), this, SLOT(deletePwd_slot()),
315 0, BUTTON_POPUP_MANAGE_DEL); 310 0, BUTTON_POPUP_MANAGE_DEL);
316 managePopup->insertSeparator(); 311 managePopup->insertSeparator();
317 managePopup->insertItem(QIconSet(picons->loadIcon("rotate", KIcon::Small)), 312 managePopup->insertItem(QIconSet(picons->loadIcon("rotate", KIcon::Small)),
318 i18n("Change &Master Password"), this, 313 i18n("Change &Master Password"), this,
319 SLOT(changeMasterPwd_slot()), 0, 314 SLOT(changeMasterPwd_slot()), 0,
320 BUTTON_POPUP_MANAGE_CHANGEMP); 315 BUTTON_POPUP_MANAGE_CHANGEMP);
321 menuBar()->insertItem(i18n("&Manage"), managePopup); 316 menuBar()->insertItem(i18n("&Manage"), managePopup);
322// "chipcard" popup menu 317// "chipcard" popup menu
323#ifdef CONFIG_KEYCARD 318#ifdef CONFIG_KEYCARD
324 chipcardPopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)), 319 chipcardPopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)),
325 i18n("&Generate new key-card"), this, 320 i18n("&Generate new key-card"), this,
326 SLOT(genNewCard_slot()), 0, 321 SLOT(genNewCard_slot()), 0,
327 BUTTON_POPUP_CHIPCARD_GENNEW); 322 BUTTON_POPUP_CHIPCARD_GENNEW);
328 chipcardPopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)), 323 chipcardPopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)),
329 i18n("&Erase key-card"), this, 324 i18n("&Erase key-card"), this,
330 SLOT(eraseCard_slot()), 0, 325 SLOT(eraseCard_slot()), 0,
331 BUTTON_POPUP_CHIPCARD_DEL); 326 BUTTON_POPUP_CHIPCARD_DEL);
332 chipcardPopup->insertItem(QIconSet(picons->loadIcon("", KIcon::Small)), 327 chipcardPopup->insertItem(QIconSet(picons->loadIcon("", KIcon::Small)),
333 i18n("Read card-&ID"), this, 328 i18n("Read card-&ID"), this,
334 SLOT(readCardId_slot()), 0, 329 SLOT(readCardId_slot()), 0,
335 BUTTON_POPUP_CHIPCARD_READID); 330 BUTTON_POPUP_CHIPCARD_READID);
336 chipcardPopup->insertSeparator(); 331 chipcardPopup->insertSeparator();
337 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2rightarrow", KIcon::Small)), 332 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2rightarrow", KIcon::Small)),
338 i18n("&Make card backup-image"), this, 333 i18n("&Make card backup-image"), this,
339 SLOT(makeCardBackup_slot()), 0, 334 SLOT(makeCardBackup_slot()), 0,
340 BUTTON_POPUP_CHIPCARD_SAVEBACKUP); 335 BUTTON_POPUP_CHIPCARD_SAVEBACKUP);
341 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2leftarrow", KIcon::Small)), 336 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2leftarrow", KIcon::Small)),
342 i18n("&Replay card backup-image"), this, 337 i18n("&Replay card backup-image"), this,
343 SLOT(replayCardBackup_slot()), 0, 338 SLOT(replayCardBackup_slot()), 0,
344 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP); 339 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP);
345 menuBar()->insertItem(i18n("&Chipcard manager"), chipcardPopup); 340 menuBar()->insertItem(i18n("&Chipcard manager"), chipcardPopup);
346#endif // CONFIG_KEYCARD 341#endif // CONFIG_KEYCARD
347// "view" popup menu 342// "view" popup menu
348 viewPopup->insertItem(QIconSet(picons->loadIcon("find", KIcon::Small)), 343 viewPopup->insertItem(QIconSet(picons->loadIcon("find", KIcon::Small)),
349 i18n("&Find"), this, 344 i18n("&Find"), this,
350 SLOT(find_slot()), 0, BUTTON_POPUP_VIEW_FIND); 345 SLOT(find_slot()), 0, BUTTON_POPUP_VIEW_FIND);
351 viewPopup->insertSeparator(); 346 viewPopup->insertSeparator();
352 viewPopup->insertItem(QIconSet(picons->loadIcon("halfencrypted", KIcon::Small)), 347 viewPopup->insertItem(QIconSet(picons->loadIcon("halfencrypted", KIcon::Small)),
353 i18n("&Lock all entries"), this, 348 i18n("&Lock all entries"), this,
354 SLOT(lockWnd_slot()), 0, 349 SLOT(lockWnd_slot()), 0,
355 BUTTON_POPUP_VIEW_LOCK); 350 BUTTON_POPUP_VIEW_LOCK);
356 viewPopup->insertItem(QIconSet(picons->loadIcon("encrypted", KIcon::Small)), 351 viewPopup->insertItem(QIconSet(picons->loadIcon("encrypted", KIcon::Small)),
357 i18n("&Deep-lock all entries"), this, 352 i18n("&Deep-lock all entries"), this,
358 SLOT(deepLockWnd_slot()), 0, 353 SLOT(deepLockWnd_slot()), 0,
359 BUTTON_POPUP_VIEW_DEEPLOCK); 354 BUTTON_POPUP_VIEW_DEEPLOCK);
360 viewPopup->insertItem(QIconSet(picons->loadIcon("decrypted", KIcon::Small)), 355 viewPopup->insertItem(QIconSet(picons->loadIcon("decrypted", KIcon::Small)),
361 i18n("&Unlock all entries"), this, 356 i18n("&Unlock all entries"), this,
362 SLOT(unlockWnd_slot()), 0, 357 SLOT(unlockWnd_slot()), 0,
363 BUTTON_POPUP_VIEW_UNLOCK); 358 BUTTON_POPUP_VIEW_UNLOCK);
364 menuBar()->insertItem(i18n("&View"), viewPopup); 359 menuBar()->insertItem(i18n("&View"), viewPopup);
365// "options" popup menu 360// "options" popup menu
366 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)), 361 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
367 i18n("&Configure..."), this, 362 i18n("&Configure..."), this,
368 SLOT(config_slot()),0, 363 SLOT(config_slot()),0,
369 BUTTON_POPUP_OPTIONS_CONFIG); 364 BUTTON_POPUP_OPTIONS_CONFIG);
370 menuBar()->insertItem(i18n("&Options"), optionsPopup); 365 if ( QApplication::desktop()->width() <= 240 ) {
366 managePopup->insertSeparator();
367 managePopup->insertItem(i18n("&Options"), optionsPopup);
368 } else
369 menuBar()->insertItem(i18n("&Options"), optionsPopup);
371// "help" popup menu 370// "help" popup menu
372#ifndef PWM_EMBEDDED 371#ifndef PWM_EMBEDDED
373 helpPopup = helpMenu(QString::null, false); 372 helpPopup = helpMenu(QString::null, false);
374#else 373#else
375 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)), 374 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
376 i18n("C&ategories..."), this, 375 i18n("C&ategories..."), this,
377 SLOT(category_slot()),0, 376 SLOT(category_slot()),0,
378 BUTTON_POPUP_OPTIONS_CATEGORY); 377 BUTTON_POPUP_OPTIONS_CATEGORY);
379 378
380 379
381 menuBar()->insertItem(i18n("&Sync"), syncPopup); 380 menuBar()->insertItem(i18n("&Sync"), syncPopup);
382 381
383 382
384 383
385 384
386 385
387 helpPopup = new KPopupMenu(this); 386 helpPopup = new KPopupMenu(this);
388 387
389 388
390 helpPopup->insertItem(i18n("&License"), this, 389 helpPopup->insertItem(i18n("&License"), this,
391 SLOT(showLicense_slot()), 0, 390 SLOT(showLicense_slot()), 0,
392 BUTTON_POPUP_HELP_LICENSE); 391 BUTTON_POPUP_HELP_LICENSE);
393 392
394 helpPopup->insertItem(i18n("&Faq"), this, 393 helpPopup->insertItem(i18n("&Faq"), this,
395 SLOT(faq_slot()), 0, 394 SLOT(faq_slot()), 0,
396 BUTTON_POPUP_HELP_FAQ); 395 BUTTON_POPUP_HELP_FAQ);
397 396
398 helpPopup->insertItem(i18n("&About PwManager"), this, 397 helpPopup->insertItem(i18n("&About PwManager"), this,
399 SLOT(createAboutData_slot()), 0, 398 SLOT(createAboutData_slot()), 0,
400 BUTTON_POPUP_HELP_ABOUT); 399 BUTTON_POPUP_HELP_ABOUT);
401 400
402 helpPopup->insertItem(i18n("&Sync HowTo"), this, 401 helpPopup->insertItem(i18n("&Sync HowTo"), this,
403 SLOT(syncHowTo_slot()), 0, 402 SLOT(syncHowTo_slot()), 0,
404 BUTTON_POPUP_HELP_SYNC); 403 BUTTON_POPUP_HELP_SYNC);
405 404
406 helpPopup->insertItem(i18n("&What's New"), this, 405 helpPopup->insertItem(i18n("&What's New"), this,
407 SLOT(whatsnew_slot()), 0, 406 SLOT(whatsnew_slot()), 0,
408 BUTTON_POPUP_HELP_WHATSNEW); 407 BUTTON_POPUP_HELP_WHATSNEW);
409 408
410#endif 409#endif
411 menuBar()->insertItem(i18n("&Help"), helpPopup); 410 menuBar()->insertItem(i18n("&Help"), helpPopup);
412 411
413} 412}
414 413
415void PwM::initToolbar() 414void PwM::initToolbar()
416{ 415{
417 KIconLoader* picons; 416 KIconLoader* picons;
418#ifndef PWM_EMBEDDED 417#ifndef PWM_EMBEDDED
419 KIconLoader icons; 418 KIconLoader icons;
420 picons = &icons; 419 picons = &icons;
421#else 420#else
422 picons = KGlobal::iconLoader(); 421 picons = KGlobal::iconLoader();
423#endif 422#endif
424 423
425#if 0 424#if 0
426 toolBar()->insertButton(picons->loadIcon("filenew", KIcon::Toolbar), 425 toolBar()->insertButton(picons->loadIcon("filenew", KIcon::Toolbar),
427 BUTTON_TOOL_NEW, SIGNAL(clicked(int)), this, 426 BUTTON_TOOL_NEW, SIGNAL(clicked(int)), this,
428 SLOT(new_slot()), true, i18n("New")); 427 SLOT(new_slot()), true, i18n("New"));
429#endif 428#endif
430 toolBar()->insertButton(picons->loadIcon("fileopen", KIcon::Toolbar), 429 toolBar()->insertButton(picons->loadIcon("fileopen", KIcon::Toolbar),
431 BUTTON_TOOL_OPEN, SIGNAL(clicked(int)), this, 430 BUTTON_TOOL_OPEN, SIGNAL(clicked(int)), this,
432 SLOT(open_slot()), true, i18n("Open")); 431 SLOT(open_slot()), true, i18n("Open"));
433 toolBar()->insertButton(picons->loadIcon("pencil", KIcon::Toolbar), 432 toolBar()->insertButton(picons->loadIcon("pencil", KIcon::Toolbar),
434 BUTTON_TOOL_ADD, SIGNAL(clicked(int)), this, 433 BUTTON_TOOL_ADD, SIGNAL(clicked(int)), this,
435 SLOT(addPwd_slot()), true, 434 SLOT(addPwd_slot()), true,
436 i18n("Add password")); 435 i18n("Add password"));
437 toolBar()->insertSeparator(); 436 toolBar()->insertSeparator();
438 437
439 toolBar()->insertButton(picons->loadIcon("find", KIcon::Toolbar), 438 toolBar()->insertButton(picons->loadIcon("find", KIcon::Toolbar),
440 BUTTON_TOOL_FIND, SIGNAL(clicked(int)), this, 439 BUTTON_TOOL_FIND, SIGNAL(clicked(int)), this,
441 SLOT(find_slot()), true, i18n("Find entry")); 440 SLOT(find_slot()), true, i18n("Find entry"));
442 toolBar()->insertSeparator(); 441 toolBar()->insertSeparator();
443 toolBar()->insertButton(picons->loadIcon("filesave", KIcon::Toolbar), 442 toolBar()->insertButton(picons->loadIcon("filesave", KIcon::Toolbar),
444 BUTTON_TOOL_SAVE, SIGNAL(clicked(int)), this, 443 BUTTON_TOOL_SAVE, SIGNAL(clicked(int)), this,
445 SLOT(save_slot()), true, i18n("Save")); 444 SLOT(save_slot()), true, i18n("Save"));
446#if 0 445#if 0
447 toolBar()->insertButton(picons->loadIcon("filesaveas", KIcon::Toolbar), 446 toolBar()->insertButton(picons->loadIcon("filesaveas", KIcon::Toolbar),
448 BUTTON_TOOL_SAVEAS, SIGNAL(clicked(int)), this, 447 BUTTON_TOOL_SAVEAS, SIGNAL(clicked(int)), this,
449 SLOT(saveAs_slot()), true, i18n("Save as")); 448 SLOT(saveAs_slot()), true, i18n("Save as"));
450#endif 449#endif
451 450
452 451
453#if 0 452#if 0
454 toolBar()->insertButton(picons->loadIcon("fileprint", KIcon::Toolbar), 453 toolBar()->insertButton(picons->loadIcon("fileprint", KIcon::Toolbar),
455 BUTTON_TOOL_PRINT, SIGNAL(clicked(int)), this, 454 BUTTON_TOOL_PRINT, SIGNAL(clicked(int)), this,
456 SLOT(print_slot()), true, i18n("Print...")); 455 SLOT(print_slot()), true, i18n("Print..."));
457#endif 456#endif
458 toolBar()->insertSeparator(); 457 toolBar()->insertSeparator();
459 toolBar()->insertButton(picons->loadIcon("edit", KIcon::Toolbar), 458 toolBar()->insertButton(picons->loadIcon("edit", KIcon::Toolbar),
460 BUTTON_TOOL_EDIT, SIGNAL(clicked(int)), this, 459 BUTTON_TOOL_EDIT, SIGNAL(clicked(int)), this,
461 SLOT(editPwd_slot()), true, 460 SLOT(editPwd_slot()), true,
462 i18n("Edit password")); 461 i18n("Edit password"));
463 toolBar()->insertButton(picons->loadIcon("editdelete", KIcon::Toolbar), 462 toolBar()->insertButton(picons->loadIcon("editdelete", KIcon::Toolbar),
464 BUTTON_TOOL_DEL, SIGNAL(clicked(int)), this, 463 BUTTON_TOOL_DEL, SIGNAL(clicked(int)), this,
465 SLOT(deletePwd_slot()), true, 464 SLOT(deletePwd_slot()), true,
466 i18n("Delete password")); 465 i18n("Delete password"));
467 toolBar()->insertSeparator(); 466 toolBar()->insertSeparator();
468 toolBar()->insertButton(picons->loadIcon("halfencrypted", KIcon::Toolbar), 467 toolBar()->insertButton(picons->loadIcon("halfencrypted", KIcon::Toolbar),
469 BUTTON_TOOL_LOCK, SIGNAL(clicked(int)), this, 468 BUTTON_TOOL_LOCK, SIGNAL(clicked(int)), this,
470 SLOT(lockWnd_slot()), true, 469 SLOT(lockWnd_slot()), true,
471 i18n("Lock all entries")); 470 i18n("Lock all entries"));
472 toolBar()->insertButton(picons->loadIcon("encrypted", KIcon::Toolbar), 471 toolBar()->insertButton(picons->loadIcon("encrypted", KIcon::Toolbar),
473 BUTTON_TOOL_DEEPLOCK, SIGNAL(clicked(int)), this, 472 BUTTON_TOOL_DEEPLOCK, SIGNAL(clicked(int)), this,
474 SLOT(deepLockWnd_slot()), true, 473 SLOT(deepLockWnd_slot()), true,
475 i18n("Deep-Lock all entries")); 474 i18n("Deep-Lock all entries"));
476 toolBar()->insertButton(picons->loadIcon("decrypted", KIcon::Toolbar), 475 toolBar()->insertButton(picons->loadIcon("decrypted", KIcon::Toolbar),
477 BUTTON_TOOL_UNLOCK, SIGNAL(clicked(int)), this, 476 BUTTON_TOOL_UNLOCK, SIGNAL(clicked(int)), this,
478 SLOT(unlockWnd_slot()), true, 477 SLOT(unlockWnd_slot()), true,
479 i18n("Unlock all entries")); 478 i18n("Unlock all entries"));
480} 479}
481 480
482void PwM::initMetrics() 481void PwM::initMetrics()
483{ 482{
484 QSize s = conf()->confWndMainWndSize(); 483 QSize s = conf()->confWndMainWndSize();
485 if (s.isValid()) 484 if (s.isValid())
486 resize(s); 485 resize(s);
487 else 486 else
488 resize(DEFAULT_SIZE); 487 resize(DEFAULT_SIZE);
489} 488}
490 489
491void PwM::updateCaption() 490void PwM::updateCaption()
492{ 491{
493 setPlainCaption(curDoc()->getTitle() + " - " PROG_NAME " " PACKAGE_VER); 492 setPlainCaption(curDoc()->getTitle() + " - " PROG_NAME " " PACKAGE_VER);
494} 493}
495 494
496void PwM::hideEvent(QHideEvent *) 495void PwM::hideEvent(QHideEvent *)
497{ 496{
498 if (isMinimized()) { 497 if (isMinimized()) {
499 if (init->tray()) { 498 if (init->tray()) {
500 forceMinimizeToTray = true; 499 forceMinimizeToTray = true;
501 close(); 500 close();
502 } 501 }
503 int mmlock = conf()->confGlobMinimizeLock(); 502 int mmlock = conf()->confGlobMinimizeLock();
504 switch (mmlock) { 503 switch (mmlock) {
505 case 0: // don't lock anything 504 case 0: // don't lock anything
506 break; 505 break;
507 case 1: {// normal lock 506 case 1: {// normal lock
508 curDoc()->lockAll(true); 507 curDoc()->lockAll(true);
509 break; 508 break;
510 } case 2: {// deep-lock 509 } case 2: {// deep-lock
511 curDoc()->deepLock(); 510 curDoc()->deepLock();
512 break; 511 break;
513 } default: 512 } default:
514 WARN(); 513 WARN();
515 } 514 }
516 } 515 }
517} 516}
518 517
519void PwM::setVirgin(bool v) 518void PwM::setVirgin(bool v)
520{ 519{
521 if (virgin == v) 520 if (virgin == v)
522 return; 521 return;
523 virgin = v; 522 virgin = v;
524 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVE, !v); 523 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVE, !v);
525 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVEAS, !v); 524 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVEAS, !v);
526 filePopup->setItemEnabled(BUTTON_POPUP_FILE_EXPORT, !v); 525 filePopup->setItemEnabled(BUTTON_POPUP_FILE_EXPORT, !v);
527 filePopup->setItemEnabled(BUTTON_POPUP_FILE_PRINT, !v); 526 filePopup->setItemEnabled(BUTTON_POPUP_FILE_PRINT, !v);
528 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_EDIT, !v); 527 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_EDIT, !v);
529 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_DEL, !v); 528 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_DEL, !v);
530 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, !v); 529 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, !v);
531 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_LOCK, !v); 530 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_LOCK, !v);
532 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_DEEPLOCK, !v); 531 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_DEEPLOCK, !v);
533 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_UNLOCK, !v); 532 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_UNLOCK, !v);
534 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_FIND, !v); 533 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_FIND, !v);
535 toolBar()->setItemEnabled(BUTTON_TOOL_SAVE, !v); 534 toolBar()->setItemEnabled(BUTTON_TOOL_SAVE, !v);
536 toolBar()->setItemEnabled(BUTTON_TOOL_SAVEAS, !v); 535 toolBar()->setItemEnabled(BUTTON_TOOL_SAVEAS, !v);
537 toolBar()->setItemEnabled(BUTTON_TOOL_PRINT, !v); 536 toolBar()->setItemEnabled(BUTTON_TOOL_PRINT, !v);
538 toolBar()->setItemEnabled(BUTTON_TOOL_EDIT, !v); 537 toolBar()->setItemEnabled(BUTTON_TOOL_EDIT, !v);
539 toolBar()->setItemEnabled(BUTTON_TOOL_DEL, !v); 538 toolBar()->setItemEnabled(BUTTON_TOOL_DEL, !v);
540 toolBar()->setItemEnabled(BUTTON_TOOL_LOCK, !v); 539 toolBar()->setItemEnabled(BUTTON_TOOL_LOCK, !v);
541 toolBar()->setItemEnabled(BUTTON_TOOL_DEEPLOCK, !v); 540 toolBar()->setItemEnabled(BUTTON_TOOL_DEEPLOCK, !v);
542 toolBar()->setItemEnabled(BUTTON_TOOL_UNLOCK, !v); 541 toolBar()->setItemEnabled(BUTTON_TOOL_UNLOCK, !v);
543 toolBar()->setItemEnabled(BUTTON_TOOL_FIND, !v); 542 toolBar()->setItemEnabled(BUTTON_TOOL_FIND, !v);
544} 543}
545 544
546void PwM::new_slot() 545void PwM::new_slot()
547{ 546{
548 init->createMainWnd(); 547 init->createMainWnd();
549} 548}
550 549
551//US ENH 550//US ENH
552void PwM::open_slot() 551void PwM::open_slot()
553{ 552{
554 open_slot(""); 553 open_slot("");
555} 554}
556 555
557void PwM::open_slot(QString fn) 556void PwM::open_slot(QString fn)
558{ 557{
559 openDoc(fn); 558 openDoc(fn);
560} 559}
561 560
562PwMDoc * PwM::openDoc(QString filename, bool openDeepLocked) 561PwMDoc * PwM::openDoc(QString filename, bool openDeepLocked)
563{ 562{
564 if (!isVirgin()) { 563 if (!isVirgin()) {
565 // open the document in a new window. 564 // open the document in a new window.
566 PwM *newInstance = init->createMainWnd(); 565 PwM *newInstance = init->createMainWnd();
567 PwMDoc *newDoc = newInstance->openDoc(filename, openDeepLocked); 566 PwMDoc *newDoc = newInstance->openDoc(filename, openDeepLocked);
568 if (!newDoc) { 567 if (!newDoc) {
569 newInstance->setForceQuit(true); 568 newInstance->setForceQuit(true);
570 delete_and_null(newInstance); 569 delete_and_null(newInstance);
571 } 570 }
572 return newDoc; 571 return newDoc;
573 } 572 }
574 573
575 if (!curDoc()->openDocUi(curDoc(), filename, openDeepLocked)) 574 if (!curDoc()->openDocUi(curDoc(), filename, openDeepLocked))
576 return 0; 575 return 0;
577 showStatMsg(i18n("Successfully opened file.")); 576 showStatMsg(i18n("Successfully opened file."));
578 updateCaption(); 577 updateCaption();
579 setVirgin(false); 578 setVirgin(false);
580 return curDoc(); 579 return curDoc();
581} 580}
582 581
583PwMView * PwM::makeNewListView(PwMDoc *doc) 582PwMView * PwM::makeNewListView(PwMDoc *doc)
584{ 583{
585 PwMView *ret = new PwMView(this, this, doc); 584 PwMView *ret = new PwMView(this, this, doc);
586 ret->setFont(conf()->confGlobEntryFont()); 585 ret->setFont(conf()->confGlobEntryFont());
587 ret->show(); 586 ret->show();
588 return ret; 587 return ret;
589} 588}
590 589
591void PwM::close_slot() 590void PwM::close_slot()
592{ 591{
593 close(); 592 close();
594} 593}
595 594
596void PwM::quitButton_slot() 595void PwM::quitButton_slot()
597{ 596{
598 init->shutdownApp(0); 597 init->shutdownApp(0);
599} 598}
600 599
601void PwM::save_slot() 600void PwM::save_slot()
602{ 601{
603 save(); 602 save();
604} 603}
605 604
606bool PwM::save() 605bool PwM::save()
607{ 606{
608 if (!curDoc()->saveDocUi(curDoc())) 607 if (!curDoc()->saveDocUi(curDoc()))
609 return false; 608 return false;
610 showStatMsg(i18n("Successfully saved data.")); 609 showStatMsg(i18n("Successfully saved data."));
611 updateCaption(); 610 updateCaption();
612 return true; 611 return true;
613} 612}
614 613
615void PwM::saveAs_slot() 614void PwM::saveAs_slot()
616{ 615{
617 saveAs(); 616 saveAs();
618} 617}
619 618
620bool PwM::saveAs() 619bool PwM::saveAs()
621{ 620{
622 if (!curDoc()->saveAsDocUi(curDoc())) 621 if (!curDoc()->saveAsDocUi(curDoc()))
623 return false; 622 return false;
624 showStatMsg(i18n("Successfully saved data.")); 623 showStatMsg(i18n("Successfully saved data."));
625 updateCaption(); 624 updateCaption();
626 return true; 625 return true;
627} 626}
628 627
629//US ENH : changed code to run with older MOC 628//US ENH : changed code to run with older MOC
630void PwM::addPwd_slot() 629void PwM::addPwd_slot()
631{ 630{
632 addPwd_slot1(0, 0); 631 addPwd_slot1(0, 0);
633} 632}
634 633
635void PwM::addPwd_slot1(QString *pw, PwMDoc *_doc) 634void PwM::addPwd_slot1(QString *pw, PwMDoc *_doc)
636{ 635{
637 PwMDoc *doc; 636 PwMDoc *doc;
638 if (_doc) { 637 if (_doc) {
639 doc = _doc; 638 doc = _doc;
640 } else { 639 } else {
641 doc = curDoc(); 640 doc = curDoc();
642 } 641 }
643 PWM_ASSERT(doc); 642 PWM_ASSERT(doc);
644 doc->timer()->getLock(DocTimer::id_autoLockTimer); 643 doc->timer()->getLock(DocTimer::id_autoLockTimer);
645#ifndef PWM_EMBEDDED 644#ifndef PWM_EMBEDDED
646 AddEntryWndImpl w; 645 AddEntryWndImpl w;
647#else 646#else
648 AddEntryWndImpl w(doc, this, "addentrywndimpl"); 647 AddEntryWndImpl w(doc, this, "addentrywndimpl");
649#endif 648#endif
650 w.setCaption( i18n ("Add new password") ); 649 w.setCaption( i18n ("Add new password") );
651 vector<string> catList; 650 vector<string> catList;
652 doc->getCategoryList(&catList); 651 doc->getCategoryList(&catList);
653 unsigned i, size = catList.size(); 652 unsigned i, size = catList.size();
654 for (i = 0; i < size; ++i) { 653 for (i = 0; i < size; ++i) {
655 w.addCategory(catList[i].c_str()); 654 w.addCategory(catList[i].c_str());
656 } 655 }
657 w.setCurrCategory(view->getCurrentCategory()); 656 w.setCurrCategory(view->getCurrentCategory());
658 if (pw) 657 if (pw)
659 w.pwLineEdit->setText(*pw); 658 w.pwLineEdit->setText(*pw);
660 659
661 tryAgain: 660 tryAgain:
662 w.descLineEdit->setFocus(); 661 w.descLineEdit->setFocus();
663 if (w.exec() == 1) 662 if (w.exec() == 1)
664 { 663 {
665 PwMDataItem d; 664 PwMDataItem d;
666 665
667 //US BUG: to initialize all values of curEntr with meaningfulldata, 666 //US BUG: to initialize all values of curEntr with meaningfulldata,
668 // we call clear on it. Reason: Metadata will be uninitialized otherwise. 667 // we call clear on it. Reason: Metadata will be uninitialized otherwise.
669 // another option would be to create a constructor for PwMDataItem 668 // another option would be to create a constructor for PwMDataItem
670 d.clear(true); 669 d.clear(true);
671 670
672 d.desc = w.getDescription().latin1(); 671 d.desc = w.getDescription().latin1();
673 d.name = w.getUsername().latin1(); 672 d.name = w.getUsername().latin1();
674 d.pw = w.getPassword().latin1(); 673 d.pw = w.getPassword().latin1();
675 d.comment = w.getComment().latin1(); 674 d.comment = w.getComment().latin1();
676 d.url = w.getUrl().latin1(); 675 d.url = w.getUrl().latin1();
677 d.launcher = w.getLauncher().latin1(); 676 d.launcher = w.getLauncher().latin1();
678 PwMerror ret = doc->addEntry(w.getCategory(), &d); 677 PwMerror ret = doc->addEntry(w.getCategory(), &d);
679 if (ret == e_entryExists) { 678 if (ret == e_entryExists) {
680 KMessageBox::error(this, 679 KMessageBox::error(this,
681 i18n 680 i18n
682 ("An entry with this \"Description\",\n" 681 ("An entry with this \"Description\",\n"
683 "does already exist.\n" 682 "does already exist.\n"
684 "Please select another description."), 683 "Please select another description."),
685 i18n("entry already exists.")); 684 i18n("entry already exists."));
686 goto tryAgain; 685 goto tryAgain;
687 } else if (ret == e_maxAllowedEntr) { 686 } else if (ret == e_maxAllowedEntr) {
688 KMessageBox::error(this, i18n("The maximum possible number of\nentries" 687 KMessageBox::error(this, i18n("The maximum possible number of\nentries"
689 "has been reached.\nYou can't add more entries."), 688 "has been reached.\nYou can't add more entries."),
690 i18n("maximum number of entries")); 689 i18n("maximum number of entries"));
691 doc->timer()->putLock(DocTimer::id_autoLockTimer); 690 doc->timer()->putLock(DocTimer::id_autoLockTimer);
692 return; 691 return;
693 } 692 }
694 } 693 }
695 setVirgin(false); 694 setVirgin(false);
696 doc->timer()->putLock(DocTimer::id_autoLockTimer); 695 doc->timer()->putLock(DocTimer::id_autoLockTimer);
697} 696}
698 697
699//US ENH : changed code to run with older MOC 698//US ENH : changed code to run with older MOC
700void PwM::editPwd_slot() 699void PwM::editPwd_slot()
701{ 700{
702 editPwd_slot3(0,0,0); 701 editPwd_slot3(0,0,0);
703} 702}
704 703
705void PwM::editPwd_slot1(const QString *category) 704void PwM::editPwd_slot1(const QString *category)
706{ 705{
707 editPwd_slot3(category, 0, 0); 706 editPwd_slot3(category, 0, 0);
708} 707}
709 708
710void PwM::editPwd_slot3(const QString *category, const int *index, 709void PwM::editPwd_slot3(const QString *category, const int *index,
711 PwMDoc *_doc) 710 PwMDoc *_doc)
712{ 711{
713 PwMDoc *doc; 712 PwMDoc *doc;
714 if (_doc) { 713 if (_doc) {
715 doc = _doc; 714 doc = _doc;
716 } else { 715 } else {
717 doc = curDoc(); 716 doc = curDoc();
718 } 717 }
719 PWM_ASSERT(doc); 718 PWM_ASSERT(doc);
720 if (doc->isDocEmpty()) 719 if (doc->isDocEmpty())
721 return; 720 return;
722 if (doc->isDeepLocked()) 721 if (doc->isDeepLocked())
723 return; 722 return;
724 doc->timer()->getLock(DocTimer::id_autoLockTimer); 723 doc->timer()->getLock(DocTimer::id_autoLockTimer);
725 unsigned int curEntryIndex; 724 unsigned int curEntryIndex;
726 if (index) { 725 if (index) {
727 curEntryIndex = *index; 726 curEntryIndex = *index;
728 } else { 727 } else {
729 if (!(view->getCurEntryIndex(&curEntryIndex))) { 728 if (!(view->getCurEntryIndex(&curEntryIndex))) {
730 qDebug("couldn't get index. Maybe we have a binary entry here. "); 729 qDebug("couldn't get index. Maybe we have a binary entry here. ");
731 printDebug("couldn't get index. Maybe we have a binary entry here."); 730 printDebug("couldn't get index. Maybe we have a binary entry here.");
732 doc->timer()->putLock(DocTimer::id_autoLockTimer); 731 doc->timer()->putLock(DocTimer::id_autoLockTimer);
733 return; 732 return;
734 } 733 }
735 } 734 }
736 QString curCategory; 735 QString curCategory;
737 if (category) { 736 if (category) {
738 curCategory = *category; 737 curCategory = *category;
739 } else { 738 } else {
740 curCategory = view->getCurrentCategory(); 739 curCategory = view->getCurrentCategory();
741 } 740 }
742 PwMDataItem currItem; 741 PwMDataItem currItem;
743 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) { 742 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) {
744 doc->timer()->putLock(DocTimer::id_autoLockTimer); 743 doc->timer()->putLock(DocTimer::id_autoLockTimer);
745 return; 744 return;
746 } 745 }
747 BUG_ON(currItem.binary); 746 BUG_ON(currItem.binary);
748 AddEntryWndImpl w(doc); 747 AddEntryWndImpl w(doc);
749 w.setCaption( i18n ("Edit password") ); 748 w.setCaption( i18n ("Edit password") );
750 vector<string> catList; 749 vector<string> catList;
751 doc->getCategoryList(&catList); 750 doc->getCategoryList(&catList);
752 unsigned i, size = catList.size(); 751 unsigned i, size = catList.size();
753 for (i = 0; i < size; ++i) { 752 for (i = 0; i < size; ++i) {
754 w.addCategory(catList[i].c_str()); 753 w.addCategory(catList[i].c_str());
755 } 754 }
756 w.setCurrCategory(curCategory); 755 w.setCurrCategory(curCategory);
757 w.setDescription(currItem.desc.c_str()); 756 w.setDescription(currItem.desc.c_str());
758 w.setUsername(currItem.name.c_str()); 757 w.setUsername(currItem.name.c_str());
759 w.setPassword(currItem.pw.c_str()); 758 w.setPassword(currItem.pw.c_str());
760 w.setUrl(currItem.url.c_str()); 759 w.setUrl(currItem.url.c_str());
761 w.setLauncher(currItem.launcher.c_str()); 760 w.setLauncher(currItem.launcher.c_str());
762 w.setComment(currItem.comment.c_str()); 761 w.setComment(currItem.comment.c_str());
763 w.descLineEdit->setFocus(); 762 w.descLineEdit->setFocus();
764 if (w.exec() == 1) { 763 if (w.exec() == 1) {
765 currItem.desc = w.getDescription().latin1(); 764 currItem.desc = w.getDescription().latin1();
766 currItem.name = w.getUsername().latin1(); 765 currItem.name = w.getUsername().latin1();
767 currItem.pw = w.getPassword().latin1(); 766 currItem.pw = w.getPassword().latin1();
768 currItem.comment = w.getComment().latin1(); 767 currItem.comment = w.getComment().latin1();
769 currItem.url = w.getUrl().latin1(); 768 currItem.url = w.getUrl().latin1();
770 currItem.launcher = w.getLauncher().latin1(); 769 currItem.launcher = w.getLauncher().latin1();
771 if (!doc->editEntry(curCategory, w.getCategory(), 770 if (!doc->editEntry(curCategory, w.getCategory(),
772 curEntryIndex, &currItem)) { 771 curEntryIndex, &currItem)) {
773 KMessageBox::error(this, 772 KMessageBox::error(this,
774 i18n("Couldn't edit the entry.\n" 773 i18n("Couldn't edit the entry.\n"
775 "Maybe you changed the category and\n" 774 "Maybe you changed the category and\n"
776 "this entry is already present\nin the new " 775 "this entry is already present\nin the new "
777 "category?"), 776 "category?"),
778 i18n("couldn't edit entry.")); 777 i18n("couldn't edit entry."));
779 doc->timer()->putLock(DocTimer::id_autoLockTimer); 778 doc->timer()->putLock(DocTimer::id_autoLockTimer);
780 return; 779 return;
781 } 780 }
782 } 781 }
783 doc->timer()->putLock(DocTimer::id_autoLockTimer); 782 doc->timer()->putLock(DocTimer::id_autoLockTimer);
784} 783}
785 784
786void PwM::deletePwd_slot() 785void PwM::deletePwd_slot()
787{ 786{
788 PWM_ASSERT(curDoc()); 787 PWM_ASSERT(curDoc());
789 if (curDoc()->isDocEmpty()) 788 if (curDoc()->isDocEmpty())
790 return; 789 return;
791 if (curDoc()->isDeepLocked()) 790 if (curDoc()->isDeepLocked())
792 return; 791 return;
793 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 792 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
794 unsigned int curEntryIndex = 0; 793 unsigned int curEntryIndex = 0;
795 if (!(view->getCurEntryIndex(&curEntryIndex))) { 794 if (!(view->getCurEntryIndex(&curEntryIndex))) {
796 printDebug("couldn't get index"); 795 printDebug("couldn't get index");
797 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 796 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
798 return; 797 return;
799 } 798 }
800 799
801 PwMDataItem currItem; 800 PwMDataItem currItem;
802 QString curCategory = view->getCurrentCategory(); 801 QString curCategory = view->getCurrentCategory();
803 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) { 802 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) {
804 printDebug("couldn't get entry"); 803 printDebug("couldn't get entry");
805 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 804 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
806 return; 805 return;
807 } 806 }
808 if (KMessageBox:: 807 if (KMessageBox::
809 questionYesNo(this, 808 questionYesNo(this,
810 i18n 809 i18n
811 ("Do you really want to delete\nthe selected entry") + 810 ("Do you really want to delete\nthe selected entry") +
812 " \n\"" + QString(currItem.desc.c_str()) 811 " \n\"" + QString(currItem.desc.c_str())
813 + "\" ?", i18n("delete?")) 812 + "\" ?", i18n("delete?"))
814 == KMessageBox::Yes) { 813 == KMessageBox::Yes) {
815 814
816 curDoc()->delEntry(curCategory, curEntryIndex); 815 curDoc()->delEntry(curCategory, curEntryIndex);
817 } 816 }
818 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 817 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
819} 818}
820 819
821void PwM::changeMasterPwd_slot() 820void PwM::changeMasterPwd_slot()
822{ 821{
823 PWM_ASSERT(curDoc()); 822 PWM_ASSERT(curDoc());
824 curDoc()->changeCurrentPw(); 823 curDoc()->changeCurrentPw();
825} 824}
826 825
827void PwM::lockWnd_slot() 826void PwM::lockWnd_slot()
828{ 827{
829 PWM_ASSERT(curDoc()); 828 PWM_ASSERT(curDoc());
830 curDoc()->lockAll(true); 829 curDoc()->lockAll(true);
831} 830}
832 831
833void PwM::deepLockWnd_slot() 832void PwM::deepLockWnd_slot()
834{ 833{
835 PWM_ASSERT(curDoc()); 834 PWM_ASSERT(curDoc());
836 curDoc()->deepLock(); 835 curDoc()->deepLock();
837} 836}
838 837
839void PwM::unlockWnd_slot() 838void PwM::unlockWnd_slot()
840{ 839{
841 PWM_ASSERT(curDoc()); 840 PWM_ASSERT(curDoc());
842 curDoc()->lockAll(false); 841 curDoc()->lockAll(false);
843} 842}
844 843
845void PwM::config_slot() 844void PwM::config_slot()
846{ 845{
847 int oldStyle = conf()->confWndMainViewStyle(); 846 int oldStyle = conf()->confWndMainViewStyle();
848#ifdef PWM_EMBEDDED 847#ifdef PWM_EMBEDDED
849 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"pwmconfigdialog", true ); 848 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"pwmconfigdialog", true );
850 849
851 KCMPwmConfig* pwmcfg = new KCMPwmConfig( ConfigureDialog->getNewVBoxPage(i18n( "PwManager")) , "KCMPwmConfig" ); 850 KCMPwmConfig* pwmcfg = new KCMPwmConfig( ConfigureDialog->getNewVBoxPage(i18n( "PwManager")) , "KCMPwmConfig" );
852 ConfigureDialog->addModule(pwmcfg ); 851 ConfigureDialog->addModule(pwmcfg );
853 852
854 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 853 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
855 ConfigureDialog->addModule(kdelibcfg ); 854 ConfigureDialog->addModule(kdelibcfg );
856 855
857#ifndef DESKTOP_VERSION 856#ifndef DESKTOP_VERSION
858 ConfigureDialog->showMaximized(); 857 ConfigureDialog->showMaximized();
859#endif 858#endif
860 if ( ConfigureDialog->exec() ) 859 if ( ConfigureDialog->exec() )
861 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 860 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
862 delete ConfigureDialog; 861 delete ConfigureDialog;
863 862
864#else //PWM_EMBEDDED 863#else //PWM_EMBEDDED
865 // display the configuration window (modal mode) 864 // display the configuration window (modal mode)
866 if (!conf()->showConfWnd(this)) 865 if (!conf()->showConfWnd(this))
867 return; 866 return;
868#endif 867#endif
869 868
870 int newStyle = conf()->confWndMainViewStyle(); 869 int newStyle = conf()->confWndMainViewStyle();
871 // reinitialize tray 870 // reinitialize tray
872 init->initTray(); 871 init->initTray();
873 // reinitialize KWallet emulation 872 // reinitialize KWallet emulation
874 init->initKWalletEmu(); 873 init->initKWalletEmu();
875 874
876 PwMDocList *_dl = PwMDoc::getOpenDocList(); 875 PwMDocList *_dl = PwMDoc::getOpenDocList();
877 const vector<PwMDocList::listItem> *dl = _dl->getList(); 876 const vector<PwMDocList::listItem> *dl = _dl->getList();
878 vector<PwMDocList::listItem>::const_iterator i = dl->begin(), 877 vector<PwMDocList::listItem>::const_iterator i = dl->begin(),
879 end = dl->end(); 878 end = dl->end();
880 PwMDoc *doc; 879 PwMDoc *doc;
881 while (i != end) { 880 while (i != end) {
882 doc = (*i).doc; 881 doc = (*i).doc;
883 // unlock-without-mpw timeout 882 // unlock-without-mpw timeout
884 doc->timer()->start(DocTimer::id_mpwTimer); 883 doc->timer()->start(DocTimer::id_mpwTimer);
885 // auto-lock timeout 884 // auto-lock timeout
886 doc->timer()->start(DocTimer::id_autoLockTimer); 885 doc->timer()->start(DocTimer::id_autoLockTimer);
887 ++i; 886 ++i;
888 } 887 }
889 888
890 const QValueList<PwM *> *ml = init->mainWndList(); 889 const QValueList<PwM *> *ml = init->mainWndList();
891#ifndef PWM_EMBEDDED 890#ifndef PWM_EMBEDDED
892 QValueList<PwM *>::const_iterator i2 = ml->begin(), 891 QValueList<PwM *>::const_iterator i2 = ml->begin(),
893 end2 = ml->end(); 892 end2 = ml->end();
894#else 893#else
895 QValueList<PwM *>::ConstIterator i2 = ml->begin(), 894 QValueList<PwM *>::ConstIterator i2 = ml->begin(),
896 end2 = ml->end(); 895 end2 = ml->end();
897#endif 896#endif
898 PwM *pwm; 897 PwM *pwm;
899 while (i2 != end2) { 898 while (i2 != end2) {
900 pwm = *i2; 899 pwm = *i2;
901 // reinitialize the window style. 900 // reinitialize the window style.
902 if (oldStyle != newStyle) 901 if (oldStyle != newStyle)
903 pwm->curView()->initStyle(newStyle); 902 pwm->curView()->initStyle(newStyle);
904 // set the new font 903 // set the new font
905 pwm->curView()->setFont(conf()->confGlobEntryFont()); 904 pwm->curView()->setFont(conf()->confGlobEntryFont());
906 ++i2; 905 ++i2;
907 } 906 }
908} 907}
909 908
910void PwM::activateMpButton(bool activate) 909void PwM::activateMpButton(bool activate)
911{ 910{
912 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate); 911 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate);
913} 912}
914 913
915void PwM::closeEvent(QCloseEvent *e) 914void PwM::closeEvent(QCloseEvent *e)
916{ 915{
917 //qDebug("PwM::closeEvent "); 916 //qDebug("PwM::closeEvent ");
918 emit closed( this ); 917 emit closed( this );
919 return; 918 return;
920 e->accept(); 919 e->accept();
921} 920}
922 921
923void PwM::docClosed(PwMDoc *doc) 922void PwM::docClosed(PwMDoc *doc)
924{ 923{
925 //qDebug("PwM::docClosed "); 924 //qDebug("PwM::docClosed ");
926 PARAM_UNUSED(doc); 925 PARAM_UNUSED(doc);
927 PWM_ASSERT(doc == curDoc()); 926 PWM_ASSERT(doc == curDoc());
928 close(); 927 close();
929} 928}
930 929
931void PwM::find_slot() 930void PwM::find_slot()
932{ 931{
933 PWM_ASSERT(curDoc()); 932 PWM_ASSERT(curDoc());
934 if (curDoc()->isDocEmpty()) 933 if (curDoc()->isDocEmpty())
935 return; 934 return;
936 if (curDoc()->isDeepLocked()) 935 if (curDoc()->isDeepLocked())
937 return; 936 return;
938 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 937 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
939 FindWndImpl findWnd(view); 938 FindWndImpl findWnd(view);
940 findWnd.exec(); 939 findWnd.exec();
941 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 940 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
942} 941}
943 942
944void PwM::exportToText() 943void PwM::exportToText()
945{ 944{
946 PWM_ASSERT(curDoc()); 945 PWM_ASSERT(curDoc());
947 if (curDoc()->isDocEmpty()) { 946 if (curDoc()->isDocEmpty()) {
948 KMessageBox::information(this, 947 KMessageBox::information(this,
949 i18n 948 i18n
950 ("Sorry, there's nothing to export.\n" 949 ("Sorry, there's nothing to export.\n"
951 "Please first add some passwords."), 950 "Please first add some passwords."),
952 i18n("nothing to do")); 951 i18n("nothing to do"));
953 return; 952 return;
954 } 953 }
955 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 954 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
956 QString fn(KFileDialog::getSaveFileName(QString::null, 955 QString fn(KFileDialog::getSaveFileName(QString::null,
957 i18n("*|plain-text file"), 956 i18n("*|plain-text file"),
958 this)); 957 this));
959 if (fn == "") { 958 if (fn == "") {
960 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 959 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
961 return; 960 return;
962 } 961 }
963 962
964 PwMerror ret = curDoc()->exportToText(&fn); 963 PwMerror ret = curDoc()->exportToText(&fn);
965 if (ret != e_success) { 964 if (ret != e_success) {
966 KMessageBox::error(this, 965 KMessageBox::error(this,
967 i18n("Error: Couldn't write to file.\n" 966 i18n("Error: Couldn't write to file.\n"
968 "Please check if you have permission to write\n" 967 "Please check if you have permission to write\n"
969 "to the file in that directory."), 968 "to the file in that directory."),
970 i18n("error while writing")); 969 i18n("error while writing"));
971 } else 970 } else
972 showStatMsg(i18n("Successfully exported data.")); 971 showStatMsg(i18n("Successfully exported data."));
973 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 972 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
974} 973}
975 974
976bool PwM::importFromText() 975bool PwM::importFromText()
977{ 976{
978 if (!isVirgin()) { 977 if (!isVirgin()) {
979 if (KMessageBox::questionYesNo(this, 978 if (KMessageBox::questionYesNo(this,
980 i18n("Do you want to import the data\n" 979 i18n("Do you want to import the data\n"
981 "into the current document? (If you\n" 980 "into the current document? (If you\n"
982 "select \"no\", a new document will be\n" 981 "select \"no\", a new document will be\n"
983 "opened.)"), 982 "opened.)"),
984 i18n("import into this document?")) 983 i18n("import into this document?"))
985 == KMessageBox::No) { 984 == KMessageBox::No) {
986 // import the data to a new window. 985 // import the data to a new window.
987 PwM *newInstance = init->createMainWnd(); 986 PwM *newInstance = init->createMainWnd();
988 bool ok = newInstance->importFromText(); 987 bool ok = newInstance->importFromText();
989 if (!ok) { 988 if (!ok) {
990 newInstance->setForceQuit(true); 989 newInstance->setForceQuit(true);
991 delete_and_null(newInstance); 990 delete_and_null(newInstance);
992 } 991 }
993 return ok; 992 return ok;
994 } 993 }
995 } 994 }
996 995
997 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 996 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
998 PwMerror ret; 997 PwMerror ret;
999 QString path(KFileDialog::getOpenFileName(QString::null, 998 QString path(KFileDialog::getOpenFileName(QString::null,
1000 i18n("*|PWM-exported text file"), 999 i18n("*|PWM-exported text file"),
1001 this)); 1000 this));
1002 if (path == "") 1001 if (path == "")
1003 goto cancelImport; 1002 goto cancelImport;
1004 1003
1005 ret = curDoc()->importFromText(&path, 0); 1004 ret = curDoc()->importFromText(&path, 0);
1006 if (ret == e_fileFormat) { 1005 if (ret == e_fileFormat) {
1007 KMessageBox::error(this, 1006 KMessageBox::error(this,
1008 i18n("Could not read file-format.\n" 1007 i18n("Could not read file-format.\n"
1009 "This seems to be _not_ a valid file\n" 1008 "This seems to be _not_ a valid file\n"
1010 "exported by PwM."), 1009 "exported by PwM."),
1011 i18n("invalid file-format")); 1010 i18n("invalid file-format"));
1012 goto cancelImport; 1011 goto cancelImport;
1013 } else if (ret == e_invalidArg) { 1012 } else if (ret == e_invalidArg) {
1014 BUG(); 1013 BUG();
1015 goto cancelImport; 1014 goto cancelImport;
1016 } else if (ret != e_success) { 1015 } else if (ret != e_success) {
1017 KMessageBox::error(this, 1016 KMessageBox::error(this,
1018 i18n("Could not import file!\n" 1017 i18n("Could not import file!\n"
1019 "Do you have permission to read this file?\n" 1018 "Do you have permission to read this file?\n"
1020 "Do you have enough free memory?"), 1019 "Do you have enough free memory?"),
1021 i18n("import failed")); 1020 i18n("import failed"));
1022 goto cancelImport; 1021 goto cancelImport;
1023 } 1022 }
1024 setVirgin(false); 1023 setVirgin(false);
1025 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1024 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1026 return true; 1025 return true;
1027 1026
1028cancelImport: 1027cancelImport:
1029 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1028 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1030 return false; 1029 return false;
1031} 1030}
1032 1031
1033void PwM::exportToGpasman() 1032void PwM::exportToGpasman()
1034{ 1033{
1035 PWM_ASSERT(curDoc()); 1034 PWM_ASSERT(curDoc());
1036 if (curDoc()->isDocEmpty()) { 1035 if (curDoc()->isDocEmpty()) {
1037 KMessageBox::information(this, 1036 KMessageBox::information(this,
1038 i18n 1037 i18n
1039 ("Sorry, there's nothing to export.\n" 1038 ("Sorry, there's nothing to export.\n"
1040 "Please first add some passwords."), 1039 "Please first add some passwords."),
1041 i18n("nothing to do")); 1040 i18n("nothing to do"));
1042 return; 1041 return;
1043 } 1042 }
1044 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1043 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1045 QString fn(KFileDialog::getSaveFileName(QString::null, 1044 QString fn(KFileDialog::getSaveFileName(QString::null,
1046 i18n("*|Gpasman or Kpasman file"), 1045 i18n("*|Gpasman or Kpasman file"),
1047 this)); 1046 this));
1048 if (fn == "") { 1047 if (fn == "") {
1049 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1048 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1050 return; 1049 return;
1051 } 1050 }
1052 1051
1053 PwMerror ret = curDoc()->exportToGpasman(&fn); 1052 PwMerror ret = curDoc()->exportToGpasman(&fn);
1054 if (ret != e_success) { 1053 if (ret != e_success) {
1055 if (ret == e_noPw) { 1054 if (ret == e_noPw) {
1056 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1055 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1057 return; 1056 return;
1058 } 1057 }
1059 KMessageBox::error(this, 1058 KMessageBox::error(this,
1060 i18n("Error: Couldn't write to file.\n" 1059 i18n("Error: Couldn't write to file.\n"
1061 "Please check if you have permission to write " 1060 "Please check if you have permission to write "
1062 "to the file in that directory."), 1061 "to the file in that directory."),
1063 i18n("error while writing")); 1062 i18n("error while writing"));
1064 } else 1063 } else
1065 showStatMsg(i18n("Successfully exported data.")); 1064 showStatMsg(i18n("Successfully exported data."));
1066 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1065 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1067} 1066}
1068 1067
1069 1068
1070 1069
1071void PwM::exportToCsv() 1070void PwM::exportToCsv()
1072{ 1071{
1073 PWM_ASSERT(curDoc()); 1072 PWM_ASSERT(curDoc());
1074 if (curDoc()->isDocEmpty()) { 1073 if (curDoc()->isDocEmpty()) {
1075 KMessageBox::information(this, 1074 KMessageBox::information(this,
1076 i18n 1075 i18n
1077 ("Sorry, there is nothing to export;\n" 1076 ("Sorry, there is nothing to export;\n"
1078 "please add some passwords first."), 1077 "please add some passwords first."),
1079 i18n("Nothing to Do")); 1078 i18n("Nothing to Do"));
1080 return; 1079 return;
1081 } 1080 }
1082 1081
1083 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1082 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1084 QString fn(KFileDialog::getSaveFileName("*.csv", i18n("*|CSV Text File"), this)); 1083 QString fn(KFileDialog::getSaveFileName("*.csv", i18n("*|CSV Text File"), this));
1085 if (fn.isEmpty()) { 1084 if (fn.isEmpty()) {
1086 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1085 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1087 return; 1086 return;
1088 } 1087 }
1089 1088
1090 Csv csv(this); 1089 Csv csv(this);
1091 if (!csv.exportData(fn, curDoc())) { 1090 if (!csv.exportData(fn, curDoc())) {
1092 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1091 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1093 showStatMsg(i18n("CSV file export failed.")); 1092 showStatMsg(i18n("CSV file export failed."));
1094 return; 1093 return;
1095 } 1094 }
1096 showStatMsg(i18n("Successfully exported data.")); 1095 showStatMsg(i18n("Successfully exported data."));
1097 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1096 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1098} 1097}
1099 1098
1100bool PwM::importCsv() 1099bool PwM::importCsv()
1101{ 1100{
1102 Csv csv(this); 1101 Csv csv(this);
1103 if (!isVirgin()) { 1102 if (!isVirgin()) {
1104 if (KMessageBox::questionYesNo(this, 1103 if (KMessageBox::questionYesNo(this,
1105 i18n("Do you want to import the data\n" 1104 i18n("Do you want to import the data\n"
1106 "into the current document? (If you\n" 1105 "into the current document? (If you\n"
1107 "select \"no\", a new document will be\n" 1106 "select \"no\", a new document will be\n"
1108 "opened.)"), 1107 "opened.)"),
1109 i18n("Import into This Document?")) 1108 i18n("Import into This Document?"))
1110 == KMessageBox::No) { 1109 == KMessageBox::No) {
1111 // import the data to a new window. 1110 // import the data to a new window.
1112 PwM *newInstance = init->createMainWnd(); 1111 PwM *newInstance = init->createMainWnd();
1113 bool ok = newInstance->importCsv(); 1112 bool ok = newInstance->importCsv();
1114 if (!ok) { 1113 if (!ok) {
1115 newInstance->setForceQuit(true); 1114 newInstance->setForceQuit(true);
1116 delete_and_null(newInstance); 1115 delete_and_null(newInstance);
1117 } 1116 }
1118 return ok; 1117 return ok;
1119 } 1118 }
1120 } 1119 }
1121 1120
1122 QString filename = KFileDialog::getOpenFileName("*.csv", i18n("*|CSV Text File"), this); 1121 QString filename = KFileDialog::getOpenFileName("*.csv", i18n("*|CSV Text File"), this);
1123 if (filename.isEmpty()) 1122 if (filename.isEmpty())
1124 return false; 1123 return false;
1125 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1124 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1126 if (!csv.importData(filename, curDoc())) { 1125 if (!csv.importData(filename, curDoc())) {
1127 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1126 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1128 showStatMsg(i18n("CSV file import failed.")); 1127 showStatMsg(i18n("CSV file import failed."));
1129 return false; 1128 return false;
1130 } 1129 }
1131 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1130 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1132 KMessageBox::information(this, 1131 KMessageBox::information(this,
1133 i18n("Successfully imported the CSV data\n" 1132 i18n("Successfully imported the CSV data\n"
1134 "into the current document."), i18n("Successfully Imported")); 1133 "into the current document."), i18n("Successfully Imported"));
1135 showStatMsg(i18n("Successfully imported")); 1134 showStatMsg(i18n("Successfully imported"));
1136 setVirgin(false); 1135 setVirgin(false);
1137 return true; 1136 return true;
1138} 1137}
diff --git a/pwmanager/pwmanager/pwmviewstyle_0.cpp b/pwmanager/pwmanager/pwmviewstyle_0.cpp
index d82eb15..1d88a34 100644
--- a/pwmanager/pwmanager/pwmviewstyle_0.cpp
+++ b/pwmanager/pwmanager/pwmviewstyle_0.cpp
@@ -1,132 +1,144 @@
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 "pwmviewstyle_0.h" 20#include "pwmviewstyle_0.h"
21#include "pwmview.h" 21#include "pwmview.h"
22#include "listviewpwm.h" 22#include "listviewpwm.h"
23#include "commentbox.h" 23#include "commentbox.h"
24 24
25#include <klocale.h> 25#include <klocale.h>
26#include <kglobal.h>
27#include <kiconloader.h>
26#include "pwmprefs.h" 28#include "pwmprefs.h"
27 29
28PwMViewStyle_0::PwMViewStyle_0(PwMView *view) 30PwMViewStyle_0::PwMViewStyle_0(PwMView *view)
29 : QObject() 31 : QObject()
30{ 32{
31 vbox1 = new QVBox(view); 33 vbox1 = new QVBox(view);
32 vbox1->setSpacing(3); 34 vbox1->setSpacing(0);
33 hbox1 = new QHBox(vbox1); 35 hbox1 = new QHBox(vbox1);
34 hbox1->setSpacing(3); 36 hbox1->setSpacing(0);
35 categoriesTitle = new QLabel(hbox1); 37 categoriesTitle = new QLabel(hbox1);
36 categoriesTitle->setText(i18n("Categories:")); 38 categoriesTitle->setText(i18n("Category:"));
37 categoriesCombo = new QComboBox(hbox1); 39 categoriesCombo = new QComboBox(hbox1);
38 renCatButton = new QPushButton(i18n("&Rename"), hbox1); 40 categoriesCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding,QSizePolicy::Preferred ));
39 delCatButton = new QPushButton(i18n("&Delete"), hbox1); 41 renCatButton = new QPushButton( hbox1);
42 renCatButton->setPixmap (KGlobal::iconLoader()->loadIcon("edit", KIcon::Small) );
43 int maxsi = renCatButton->sizeHint().height()+4;
44 renCatButton->setMinimumSize( maxsi, maxsi );
45 delCatButton = new QPushButton( hbox1);
46 delCatButton->setPixmap (KGlobal::iconLoader()->loadIcon("editdelete", KIcon::Small) );
47 maxsi = delCatButton->sizeHint().height()+4;
48 delCatButton->setMinimumSize( maxsi, maxsi );
49 delCatButton->setFocusPolicy( QWidget::NoFocus );
50 renCatButton->setFocusPolicy( QWidget::NoFocus );
51
40#ifndef PWM_EMBEDDED 52#ifndef PWM_EMBEDDED
41 splitter1 = new QSplitter(vbox1); 53 splitter1 = new QSplitter(vbox1);
42 splitter1->setOrientation(Qt::Vertical); 54 splitter1->setOrientation(Qt::Vertical);
43#else 55#else
44 splitter1 = new KDGanttMinimizeSplitter( Qt::Vertical, vbox1); 56 splitter1 = new KDGanttMinimizeSplitter( Qt::Vertical, vbox1);
45 splitter1->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 57 splitter1->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
46 58
47 //US topLayout->addWidget(mMiniSplitter ); 59 //US topLayout->addWidget(mMiniSplitter );
48#endif 60#endif
49 lv = new ListViewPwM(splitter1); 61 lv = new ListViewPwM(splitter1);
50 commentBox = new CommentBox(splitter1); 62 commentBox = new CommentBox(splitter1);
51 // set sizes and styles 63 // set sizes and styles
52 commentBox->resize(commentBox->size().width(), 60); 64 commentBox->resize(commentBox->size().width(), 60);
53 categoriesTitle->setAlignment(Qt::AlignVCenter | Qt::AlignRight); 65 categoriesTitle->setAlignment(Qt::AlignVCenter | Qt::AlignRight);
54 // connections 66 // connections
55 connect(categoriesCombo, SIGNAL(activated(int)), 67 connect(categoriesCombo, SIGNAL(activated(int)),
56 view, SLOT(shiftToView())); 68 view, SLOT(shiftToView()));
57 connect(renCatButton, SIGNAL(clicked()), 69 connect(renCatButton, SIGNAL(clicked()),
58 view, SLOT(renCatButton_slot())); 70 view, SLOT(renCatButton_slot()));
59 connect(delCatButton, SIGNAL(clicked()), 71 connect(delCatButton, SIGNAL(clicked()),
60 view, SLOT(delCatButton_slot())); 72 view, SLOT(delCatButton_slot()));
61 connect(lv, SIGNAL(toggleOverview()), 73 connect(lv, SIGNAL(toggleOverview()),
62 this, SLOT(toggleSplitter())); 74 this, SLOT(toggleSplitter()));
63} 75}
64 76
65PwMViewStyle_0::~PwMViewStyle_0() 77PwMViewStyle_0::~PwMViewStyle_0()
66{ 78{
67 delete vbox1; 79 delete vbox1;
68} 80}
69void PwMViewStyle_0::toggleSplitter() 81void PwMViewStyle_0::toggleSplitter()
70{ 82{
71 83
72 QValueList<int> si = splitter1->sizes(); 84 QValueList<int> si = splitter1->sizes();
73 splitter1->toggle(); 85 splitter1->toggle();
74 QValueList<int> si2 = splitter1->sizes(); 86 QValueList<int> si2 = splitter1->sizes();
75 //qDebug("PwMViewStyle_0::toggleSplitter() %d %d %d %d", si[0],si[1],si2[0],si2[1] ); 87 //qDebug("PwMViewStyle_0::toggleSplitter() %d %d %d %d", si[0],si[1],si2[0],si2[1] );
76 if ( si[0] == si2[0] && si[1] == si2[1] && si2[1] == 1 ) { 88 if ( si[0] == si2[0] && si[1] == si2[1] && si2[1] == 1 ) {
77 int diff = si[0]/2; 89 int diff = si[0]/2;
78 if ( diff > 200 ) 90 if ( diff > 200 )
79 diff = 200; 91 diff = 200;
80 si[0] -= diff; 92 si[0] -= diff;
81 si[1] += diff; 93 si[1] += diff;
82 splitter1->toggle(); 94 splitter1->toggle();
83 splitter1->setSizes( si ); 95 splitter1->setSizes( si );
84 } 96 }
85 97
86} 98}
87 99
88void PwMViewStyle_0::delCategory(const QString &cat) 100void PwMViewStyle_0::delCategory(const QString &cat)
89{ 101{
90 PWM_ASSERT(categoriesCombo); 102 PWM_ASSERT(categoriesCombo);
91 int i, count = categoriesCombo->count(); 103 int i, count = categoriesCombo->count();
92 for (i = 0; i < count; ++i) { 104 for (i = 0; i < count; ++i) {
93 if (categoriesCombo->text(i) == cat) { 105 if (categoriesCombo->text(i) == cat) {
94 categoriesCombo->removeItem(i); 106 categoriesCombo->removeItem(i);
95 return; 107 return;
96 } 108 }
97 } 109 }
98 BUG(); 110 BUG();
99} 111}
100 112
101void PwMViewStyle_0::selectCategory(const QString &cat) 113void PwMViewStyle_0::selectCategory(const QString &cat)
102{ 114{
103 PWM_ASSERT(categoriesCombo); 115 PWM_ASSERT(categoriesCombo);
104 int i, count = categoriesCombo->count(); 116 int i, count = categoriesCombo->count();
105 for (i = 0; i < count; ++i) { 117 for (i = 0; i < count; ++i) {
106 if (categoriesCombo->text(i) == cat) { 118 if (categoriesCombo->text(i) == cat) {
107 categoriesCombo->setCurrentItem(i); 119 categoriesCombo->setCurrentItem(i);
108 return; 120 return;
109 } 121 }
110 } 122 }
111 // fall back to 0 123 // fall back to 0
112 categoriesCombo->setCurrentItem(0); 124 categoriesCombo->setCurrentItem(0);
113} 125}
114 126
115 127
116//US ENH: I need a place to load the view dependend settings. Eg. splittersize 128//US ENH: I need a place to load the view dependend settings. Eg. splittersize
117void PwMViewStyle_0::restoreSettings(PWMPrefs* prefs) 129void PwMViewStyle_0::restoreSettings(PWMPrefs* prefs)
118{ 130{
119 //load and store the size of the listviewcolumns 131 //load and store the size of the listviewcolumns
120 lv->restoreLayout(prefs->getConfig(), "listview"); 132 lv->restoreLayout(prefs->getConfig(), "listview");
121 splitter1->setSizes( prefs->mCommentSplitter ); 133 splitter1->setSizes( prefs->mCommentSplitter );
122 commentBox->setFont( prefs->mViewFont ); 134 commentBox->setFont( prefs->mViewFont );
123} 135}
124 136
125//US ENH: I need a place to load the view dependend settings. Eg. splittersize 137//US ENH: I need a place to load the view dependend settings. Eg. splittersize
126void PwMViewStyle_0::saveSettings(PWMPrefs* prefs) 138void PwMViewStyle_0::saveSettings(PWMPrefs* prefs)
127{ 139{
128 //store the size of the listviewcolumns 140 //store the size of the listviewcolumns
129 lv->saveLayout(prefs->getConfig(), "listview"); 141 lv->saveLayout(prefs->getConfig(), "listview");
130 prefs->mCommentSplitter = splitter1->sizes(); 142 prefs->mCommentSplitter = splitter1->sizes();
131 143
132} 144}
diff --git a/pwmanager/pwmanager/pwmviewstyle_1.cpp b/pwmanager/pwmanager/pwmviewstyle_1.cpp
index 7294f34..e335a3f 100644
--- a/pwmanager/pwmanager/pwmviewstyle_1.cpp
+++ b/pwmanager/pwmanager/pwmviewstyle_1.cpp
@@ -1,192 +1,192 @@
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 "pwmviewstyle_1.h" 20#include "pwmviewstyle_1.h"
21#include "pwmview.h" 21#include "pwmview.h"
22#include "listviewpwm.h" 22#include "listviewpwm.h"
23#include "commentbox.h" 23#include "commentbox.h"
24 24
25#include <klocale.h> 25#include <klocale.h>
26#include "pwmprefs.h" 26#include "pwmprefs.h"
27 27
28#ifndef DESKTOP_VERSION 28#ifndef DESKTOP_VERSION
29#include <qpe/qpeapplication.h> 29#include <qpe/qpeapplication.h>
30#else 30#else
31#include <qapplication.h> 31#include <qapplication.h>
32#endif 32#endif
33 #define INITIAL_CATEGORIES_WIDTH100 33 #define INITIAL_CATEGORIES_WIDTH100
34 34
35PwMViewStyle_1::PwMViewStyle_1(PwMView *view) 35PwMViewStyle_1::PwMViewStyle_1(PwMView *view)
36 : QObject() 36 : QObject()
37{ 37{
38#ifndef PWM_EMBEDDED 38#ifndef PWM_EMBEDDED
39 splitter = new QSplitter(view); 39 splitter = new QSplitter(view);
40#else 40#else
41 if ( QApplication::desktop()->width() > 240 ) { 41 if ( QApplication::desktop()->width() > 240 ) {
42 splitter = new KDGanttMinimizeSplitter( Qt::Horizontal, view); 42 splitter = new KDGanttMinimizeSplitter( Qt::Horizontal, view);
43 splitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Left ); 43 splitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Left );
44 // topLayout = new QHBoxLayout( this ); 44 // topLayout = new QHBoxLayout( this );
45 // mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 45 // mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
46 // mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 46 // mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
47 } else { 47 } else {
48 splitter = new KDGanttMinimizeSplitter( Qt::Vertical, view); 48 splitter = new KDGanttMinimizeSplitter( Qt::Vertical, view);
49 splitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 49 splitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
50 // topLayout = new QHBoxLayout( this ); 50 // topLayout = new QHBoxLayout( this );
51 // mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 51 // mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
52 // mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 52 // mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
53 } 53 }
54 //US topLayout->addWidget(mMiniSplitter ); 54 //US topLayout->addWidget(mMiniSplitter );
55#endif 55#endif
56 56
57 vbox1 = new QVBox(splitter); 57 vbox1 = new QVBox(splitter);
58 categoriesTitle = new QLabel(vbox1); 58 categoriesTitle = new QLabel(vbox1);
59 categoriesList = new QListBox(vbox1); 59 categoriesList = new QListBox(vbox1);
60#ifndef PWM_EMBEDDED 60#ifndef PWM_EMBEDDED
61 splitter2 = new QSplitter(splitter); 61 splitter2 = new QSplitter(splitter);
62 splitter2->setOrientation(Qt::Vertical); 62 splitter2->setOrientation(Qt::Vertical);
63#else 63#else
64 splitter2 = new KDGanttMinimizeSplitter( Qt::Vertical, splitter); 64 splitter2 = new KDGanttMinimizeSplitter( Qt::Vertical, splitter);
65 splitter2->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 65 splitter2->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
66 66
67 //US topLayout->addWidget(mMiniSplitter ); 67 //US topLayout->addWidget(mMiniSplitter );
68#endif 68#endif
69 lv = new ListViewPwM(splitter2); 69 lv = new ListViewPwM(splitter2);
70 commentBox = new CommentBox(splitter2); 70 commentBox = new CommentBox(splitter2);
71 // set sizes and styles 71 // set sizes and styles
72 //UScommentBox->resize(commentBox->size().width(), 60); 72 //UScommentBox->resize(commentBox->size().width(), 60);
73 QValueList<int> sizes; 73 QValueList<int> sizes;
74#ifndef PWM_EMBEDDED 74#ifndef PWM_EMBEDDED
75 sizes.push_back(INITIAL_CATEGORIES_WIDTH); 75 sizes.push_back(INITIAL_CATEGORIES_WIDTH);
76 sizes.push_back(view->height() - INITIAL_CATEGORIES_WIDTH); 76 sizes.push_back(view->height() - INITIAL_CATEGORIES_WIDTH);
77#else 77#else
78 sizes.append(INITIAL_CATEGORIES_WIDTH); 78 sizes.append(INITIAL_CATEGORIES_WIDTH);
79 sizes.append(view->height() - INITIAL_CATEGORIES_WIDTH); 79 sizes.append(view->height() - INITIAL_CATEGORIES_WIDTH);
80#endif 80#endif
81 //USsplitter->setSizes(sizes); 81 //USsplitter->setSizes(sizes);
82 categoriesTitle->setAlignment(Qt::AlignHCenter); 82 categoriesTitle->setAlignment(Qt::AlignHCenter);
83#ifndef PWM_EMBEDDED 83#ifndef PWM_EMBEDDED
84 categoriesTitle->setFrameShape(QFrame::MenuBarPanel); 84 categoriesTitle->setFrameShape(QFrame::MenuBarPanel);
85#else 85#else
86 categoriesTitle->setFrameShape(QFrame::StyledPanel); 86 //categoriesTitle->setFrameShape(QFrame::StyledPanel);
87#endif 87#endif
88 categoriesTitle->setText(i18n("Categories:")); 88 categoriesTitle->setText(i18n("Category:"));
89 catCtxMenu = new QPopupMenu(view); 89 catCtxMenu = new QPopupMenu(view);
90 catCtxMenu->insertItem(i18n("&Rename"), 90 catCtxMenu->insertItem(i18n("&Rename"),
91 view, SLOT(renCatButton_slot())); 91 view, SLOT(renCatButton_slot()));
92 catCtxMenu->insertItem(i18n("&Delete"), 92 catCtxMenu->insertItem(i18n("&Delete"),
93 view, SLOT(delCatButton_slot())); 93 view, SLOT(delCatButton_slot()));
94 94
95#ifndef DESKTOP_VERSION 95#ifndef DESKTOP_VERSION
96 QPEApplication::setStylusOperation( categoriesList->viewport(), QPEApplication::RightOnHold ); 96 QPEApplication::setStylusOperation( categoriesList->viewport(), QPEApplication::RightOnHold );
97#endif 97#endif
98 98
99 // connections 99 // connections
100 connect(categoriesList, SIGNAL(highlighted(int)), 100 connect(categoriesList, SIGNAL(highlighted(int)),
101 view, SLOT(shiftToView())); 101 view, SLOT(shiftToView()));
102 connect(categoriesList, 102 connect(categoriesList,
103 SIGNAL(rightButtonClicked(QListBoxItem *, const QPoint &)), 103 SIGNAL(rightButtonClicked(QListBoxItem *, const QPoint &)),
104 this, 104 this,
105 SLOT(catRightClick(QListBoxItem *, const QPoint &))); 105 SLOT(catRightClick(QListBoxItem *, const QPoint &)));
106 106
107 connect(lv, SIGNAL(toggleOverview()), 107 connect(lv, SIGNAL(toggleOverview()),
108 this, SLOT(toggleSplitter())); 108 this, SLOT(toggleSplitter()));
109} 109}
110 110
111PwMViewStyle_1::~PwMViewStyle_1() 111PwMViewStyle_1::~PwMViewStyle_1()
112{ 112{
113 delete catCtxMenu; 113 delete catCtxMenu;
114 delete splitter; 114 delete splitter;
115} 115}
116void PwMViewStyle_1::toggleSplitter() 116void PwMViewStyle_1::toggleSplitter()
117{ 117{
118 QValueList<int> si = splitter2->sizes(); 118 QValueList<int> si = splitter2->sizes();
119 splitter2->toggle(); 119 splitter2->toggle();
120 QValueList<int> si2 = splitter2->sizes(); 120 QValueList<int> si2 = splitter2->sizes();
121 //qDebug("PwMViewStyle_1::toggleSplitter() %d %d %d %d", si[0],si[1],si2[0],si2[1] ); 121 //qDebug("PwMViewStyle_1::toggleSplitter() %d %d %d %d", si[0],si[1],si2[0],si2[1] );
122 if ( si[0] == si2[0] && si[1] == si2[1] && si2[1] == 1 ) { 122 if ( si[0] == si2[0] && si[1] == si2[1] && si2[1] == 1 ) {
123 int diff = si[0]/2; 123 int diff = si[0]/2;
124 if ( diff > 200 ) 124 if ( diff > 200 )
125 diff = 200; 125 diff = 200;
126 si[0] -= diff; 126 si[0] -= diff;
127 si[1] += diff; 127 si[1] += diff;
128 splitter2->toggle(); 128 splitter2->toggle();
129 splitter2->setSizes( si ); 129 splitter2->setSizes( si );
130 } 130 }
131} 131}
132 132
133void PwMViewStyle_1::catRightClick(QListBoxItem *item, const QPoint &point) 133void PwMViewStyle_1::catRightClick(QListBoxItem *item, const QPoint &point)
134{ 134{
135 if (!item) 135 if (!item)
136 return; 136 return;
137 catCtxMenu->move(point); 137 catCtxMenu->move(point);
138 catCtxMenu->show(); 138 catCtxMenu->show();
139} 139}
140 140
141void PwMViewStyle_1::delCategory(const QString &cat) 141void PwMViewStyle_1::delCategory(const QString &cat)
142{ 142{
143 PWM_ASSERT(categoriesList); 143 PWM_ASSERT(categoriesList);
144 int i, count = categoriesList->count(); 144 int i, count = categoriesList->count();
145 for (i = 0; i < count; ++i) { 145 for (i = 0; i < count; ++i) {
146 if (categoriesList->text(i) == cat) { 146 if (categoriesList->text(i) == cat) {
147 categoriesList->removeItem(i); 147 categoriesList->removeItem(i);
148 return; 148 return;
149 } 149 }
150 } 150 }
151 BUG(); 151 BUG();
152} 152}
153 153
154void PwMViewStyle_1::selectCategory(const QString &cat) 154void PwMViewStyle_1::selectCategory(const QString &cat)
155{ 155{
156 PWM_ASSERT(categoriesList); 156 PWM_ASSERT(categoriesList);
157 int i, count = categoriesList->count(); 157 int i, count = categoriesList->count();
158 for (i = 0; i < count; ++i) { 158 for (i = 0; i < count; ++i) {
159 if (categoriesList->text(i) == cat) { 159 if (categoriesList->text(i) == cat) {
160 categoriesList->setCurrentItem(i); 160 categoriesList->setCurrentItem(i);
161 return; 161 return;
162 } 162 }
163 } 163 }
164 // fall back to 0 164 // fall back to 0
165 categoriesList->setCurrentItem(0); 165 categoriesList->setCurrentItem(0);
166} 166}
167 167
168//US ENH: I need a place to load the view dependend settings. Eg. splittersize 168//US ENH: I need a place to load the view dependend settings. Eg. splittersize
169void PwMViewStyle_1::restoreSettings(PWMPrefs* prefs) 169void PwMViewStyle_1::restoreSettings(PWMPrefs* prefs)
170{ 170{
171 //load and store the size of the listviewcolumns 171 //load and store the size of the listviewcolumns
172 lv->restoreLayout(prefs->getConfig(), "listview"); 172 lv->restoreLayout(prefs->getConfig(), "listview");
173 splitter->setSizes( prefs->mCategorySplitter ); 173 splitter->setSizes( prefs->mCategorySplitter );
174 splitter2->setSizes( prefs->mCommentSplitter ); 174 splitter2->setSizes( prefs->mCommentSplitter );
175 commentBox->setFont( prefs->mViewFont ); 175 commentBox->setFont( prefs->mViewFont );
176 176
177} 177}
178 178
179//US ENH: I need a place to load the view dependend settings. Eg. splittersize 179//US ENH: I need a place to load the view dependend settings. Eg. splittersize
180void PwMViewStyle_1::saveSettings(PWMPrefs* prefs) 180void PwMViewStyle_1::saveSettings(PWMPrefs* prefs)
181{ 181{
182 //store the size of the listviewcolumns 182 //store the size of the listviewcolumns
183 lv->saveLayout(prefs->getConfig(), "listview"); 183 lv->saveLayout(prefs->getConfig(), "listview");
184 prefs->mCategorySplitter = splitter->sizes(); 184 prefs->mCategorySplitter = splitter->sizes();
185 prefs->mCommentSplitter = splitter2->sizes(); 185 prefs->mCommentSplitter = splitter2->sizes();
186 186
187} 187}
188 188
189 189
190#ifndef PWM_EMBEDDED 190#ifndef PWM_EMBEDDED
191#include "pwmviewstyle_1.moc" 191#include "pwmviewstyle_1.moc"
192#endif 192#endif