summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-03-10 09:13:29 (UTC)
committer zautrix <zautrix>2005-03-10 09:13:29 (UTC)
commit4b05d69b961309df5d56714889c62ca530580914 (patch) (unidiff)
treec6b7b0651889a88ffe44c570f7e557523cfa1044
parentf20f8ca063abd322387a72f3f5a65c480f6a4233 (diff)
downloadkdepimpi-4b05d69b961309df5d56714889c62ca530580914.zip
kdepimpi-4b05d69b961309df5d56714889c62ca530580914.tar.gz
kdepimpi-4b05d69b961309df5d56714889c62ca530580914.tar.bz2
pwmp fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt1
-rw-r--r--pwmanager/pwmanager/pwm.cpp13
2 files changed, 13 insertions, 1 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index a7b8530..d4b7971 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,777 +1,778 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.0.15 ************ 3********** VERSION 2.0.15 ************
4 4
5PwM/Pi: 5PwM/Pi:
6Added keyboard shorcuts for 6Added keyboard shorcuts for
7- toggling summary view (space bar) 7- toggling summary view (space bar)
8- delete item (delete + backspace key) 8- delete item (delete + backspace key)
9- add new item ( i + n key) 9- add new item ( i + n key)
10Fixed length of info in the title.
10 11
11KO/Pi-KA/Pi: 12KO/Pi-KA/Pi:
12Changed "ME" menu bar entry to an icon. 13Changed "ME" menu bar entry to an icon.
13 14
14KO/Pi: 15KO/Pi:
15Fixed two minor bugs in displaying todos. 16Fixed two minor bugs in displaying todos.
16 17
17 18
18********** VERSION 2.0.14 ************ 19********** VERSION 2.0.14 ************
19 20
20Made Passwordmanager PwM/Pi more userfriendly: 21Made Passwordmanager PwM/Pi more userfriendly:
21Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 22Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
22Fixed bug in KO/Pi todo printing. 23Fixed bug in KO/Pi todo printing.
23Made Qtopia calendar import possible on desktop . 24Made Qtopia calendar import possible on desktop .
24 25
25********** VERSION 2.0.13 ************ 26********** VERSION 2.0.13 ************
26 27
27Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 28Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
28 29
29In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 30In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
30 31
31OM/Pi: 32OM/Pi:
32Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 33Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
33Added missing German translation. 34Added missing German translation.
34Added warning if path is specified in local folder settings of account config. 35Added warning if path is specified in local folder settings of account config.
35 36
36********** VERSION 2.0.12 ************ 37********** VERSION 2.0.12 ************
37 38
38KO/Pi: 39KO/Pi:
39Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 40Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
40Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 41Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
41Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 42Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
42 43
43Fixed problem in pi-sync mode when wrong password was sent. 44Fixed problem in pi-sync mode when wrong password was sent.
44 45
45OM/Pi: 46OM/Pi:
46Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 47Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
47Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 48Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
48 49
49********** VERSION 2.0.11 ************ 50********** VERSION 2.0.11 ************
50 51
51Fixed some problems in pi-sync mode 52Fixed some problems in pi-sync mode
52(e.g. details of events were not synced properly) 53(e.g. details of events were not synced properly)
53 54
54********** VERSION 2.0.10 ************ 55********** VERSION 2.0.10 ************
55 56
56KO/Pi: 57KO/Pi:
57In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 58In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
58This is fixed. 59This is fixed.
59Changed the search dialog a bit to make it more user friendly. 60Changed the search dialog a bit to make it more user friendly.
60(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 61(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
61 62
62Added config option to hide the week number in KO/Pi toolbar. 63Added config option to hide the week number in KO/Pi toolbar.
63 64
64********** VERSION 2.0.9 ************ 65********** VERSION 2.0.9 ************
65 66
66Made month view icons for multiday events a bit nicer. 67Made month view icons for multiday events a bit nicer.
67Some minor fixes in KO/Pi 68Some minor fixes in KO/Pi
68(e.g. go to today did not work for new week view properly). 69(e.g. go to today did not work for new week view properly).
69 70
70 71
71********** VERSION 2.0.8 ************ 72********** VERSION 2.0.8 ************
72 73
73Fixed a problem in dependency info in the ipk files for the Zaurus. 74Fixed a problem in dependency info in the ipk files for the Zaurus.
74 75
75Added 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. 76Added 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.
76 77
77Added a "go today" button to the datepicker. 78Added a "go today" button to the datepicker.
78 79
79Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 80Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
80and made it configureable to show these values. 81and made it configureable to show these values.
81 82
82Fixed a problem for events (from external iCal files) that do have a duration but no end date. 83Fixed a problem for events (from external iCal files) that do have a duration but no end date.
83 84
84 85
85********** VERSION 2.0.7 ************ 86********** VERSION 2.0.7 ************
86 87
87Added global application font settings 88Added global application font settings
88(for all KDE-Pim/Pi apps) to the general settings. 89(for all KDE-Pim/Pi apps) to the general settings.
89 90
90Fixed a problem in OM/Pi when trying to login to some IMAP servers 91Fixed a problem in OM/Pi when trying to login to some IMAP servers
91(like the IMAP server of Apple: mail.mac.com ) 92(like the IMAP server of Apple: mail.mac.com )
92 93
93Added recurring todos to KO/Pi. 94Added recurring todos to KO/Pi.
94 95
95 96
96********** VERSION 2.0.6 ************ 97********** VERSION 2.0.6 ************
97 98
98Some bugfixes in the pi-sync mode. 99Some bugfixes in the pi-sync mode.
99Added German translation for pi-sync mode. 100Added German translation for pi-sync mode.
100 101
101KO/Pi: 102KO/Pi:
102Made the todolist using alternate background. 103Made the todolist using alternate background.
103 104
104Other minor fixes in KO/Pi. 105Other minor fixes in KO/Pi.
105 106
106 107
107********** VERSION 2.0.5 ************ 108********** VERSION 2.0.5 ************
108 109
109Bugfixes in KO/Pi. 110Bugfixes in KO/Pi.
110 111
111********** VERSION 2.0.4 ************ 112********** VERSION 2.0.4 ************
112 113
113KO/Pi: 114KO/Pi:
114Fixed problem loading translations for summary/location edit boxes in event/todo editor. 115Fixed problem loading translations for summary/location edit boxes in event/todo editor.
115 116
116Added a general "select week number" to the toolbar. 117Added a general "select week number" to the toolbar.
117 118
118Fixed some small problem of the new features introduced in version 2.0.3. 119Fixed some small problem of the new features introduced in version 2.0.3.
119 120
120Made it possible to specify one specific category as category color, 121Made it possible to specify one specific category as category color,
121if more than one categories are selected. 122if more than one categories are selected.
122 123
123Fixed a bug in saving colors for categories with non-ascii characters. 124Fixed a bug in saving colors for categories with non-ascii characters.
124(Like, e.g. German Umlauts). 125(Like, e.g. German Umlauts).
125Propably you have to set your colors again for those categories. 126Propably you have to set your colors again for those categories.
126 127
127 128
128********** VERSION 2.0.3 ************ 129********** VERSION 2.0.3 ************
129 130
130KO/Pi: 131KO/Pi:
131Added feature for changing alarm settings for many items at once: 132Added feature for changing alarm settings for many items at once:
132Open list view (or search dialog), select the desired items and choose in 133Open list view (or search dialog), select the desired items and choose in
133the popup menu: Set alarm for selected... 134the popup menu: Set alarm for selected...
134 135
135Added to the event/todo viewer the option to send an email to 136Added to the event/todo viewer the option to send an email to
136all attendees or all selected (with RSVP) attendees. 137all attendees or all selected (with RSVP) attendees.
137 138
138Made the week-month mode changing in month view faster. 139Made the week-month mode changing in month view faster.
139 140
140Made month view better useable with keyboard. 141Made month view better useable with keyboard.
141Now TAB key jumps to next cell with an event/todo. 142Now TAB key jumps to next cell with an event/todo.
142Scroll in cell with coursor keys, scroll in time (next week) with 143Scroll in cell with coursor keys, scroll in time (next week) with
143Shift/Control + coursorkeys. 144Shift/Control + coursorkeys.
144 145
145Fixed bug that the todo view flat mode was reset after first view update. 146Fixed bug that the todo view flat mode was reset after first view update.
146 147
147If a todo is displayed closed in the todo view, 148If a todo is displayed closed in the todo view,
148it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. 149it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties.
149 150
150Added info about the numbers of years to the caption (title) information about a birthday event. 151Added info about the numbers of years to the caption (title) information about a birthday event.
151 152
152Made completion date in todo editor editable. 153Made completion date in todo editor editable.
153 154
154Added possibility to save/load templates for journals. 155Added possibility to save/load templates for journals.
155(Which is just a simple "save text to file" or "insert text from file". 156(Which is just a simple "save text to file" or "insert text from file".
156 157
157********** VERSION 2.0.2 ************ 158********** VERSION 2.0.2 ************
158 159
159KO/Pi: 160KO/Pi:
160Fixed the layout problem of the day label buttons 161Fixed the layout problem of the day label buttons
161of the agenda view introduced in version 2.0.1. 162of the agenda view introduced in version 2.0.1.
162 163
163Added WhatsThis support for the todo view and the list view. 164Added WhatsThis support for the todo view and the list view.
164 165
165Added a quite useful feature to the montview. 166Added a quite useful feature to the montview.
166Just click on the week numbers on the left. 167Just click on the week numbers on the left.
167And in the top right corner of month view/agenda view 168And in the top right corner of month view/agenda view
168there is now a "week number quick selector". 169there is now a "week number quick selector".
169(Click on the black triangle). 170(Click on the black triangle).
170 171
171Made the quite difficult timezone change in KO/Pi easy. 172Made the quite difficult timezone change in KO/Pi easy.
172 173
173OM/Pi: 174OM/Pi:
174Fixed too small icons on desktop. 175Fixed too small icons on desktop.
175Fixed non visible icons in mainwindow on Z with fastload enabled. 176Fixed non visible icons in mainwindow on Z with fastload enabled.
176Added signature file setting to smtp account config. 177Added signature file setting to smtp account config.
177And the signature can be edited and saved in the edit mail dialog. 178And the signature can be edited and saved in the edit mail dialog.
178That does mean: 179That does mean:
179Simply edit the signature for the selected smtp account in the 180Simply edit the signature for the selected smtp account in the
180edit new mail dialog and press the "save signature" button there. 181edit new mail dialog and press the "save signature" button there.
181Then the signature is saved to the file specified in the smtp account settings. 182Then the signature is saved to the file specified in the smtp account settings.
182If there is no file specified, it is saved automatically to the file 183If there is no file specified, it is saved automatically to the file
183kdepim/apps/kopiemail/<accountname>.sig. 184kdepim/apps/kopiemail/<accountname>.sig.
184 185
185 186
186 187
187********** VERSION 2.0.1 ************ 188********** VERSION 2.0.1 ************
188 189
189Oooops ... I forgot to test on the Zaurus 5500 ... 190Oooops ... I forgot to test on the Zaurus 5500 ...
190 191
191Fixed many problems of new (english) strings (and german translations) 192Fixed many problems of new (english) strings (and german translations)
192introduced in the latest versions, where the text was not fitting on the 193introduced in the latest versions, where the text was not fitting on the
193240x320 display of the Zaurus 5500. 194240x320 display of the Zaurus 5500.
194 195
195KO/Pi: 196KO/Pi:
196Added a popup menu ( press pen and hold to get popup ) to the agenda view 197Added a popup menu ( press pen and hold to get popup ) to the agenda view
197with many useful items (add event/todo, show next week, two weeks, month, journal). 198with many useful items (add event/todo, show next week, two weeks, month, journal).
198 199
199Added items to the todolist popup menu for: 200Added items to the todolist popup menu for:
200Display all opened, all closed or all todos flat. 201Display all opened, all closed or all todos flat.
201The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 202The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
202Made the reparenting of todos on the desktop possible via Drag&Drop. 203Made the reparenting of todos on the desktop possible via Drag&Drop.
203Fixed several bugs in setting the completed datetime for todos. 204Fixed several bugs in setting the completed datetime for todos.
204Added info about completed datetime of todos to the todo viewer. 205Added info about completed datetime of todos to the todo viewer.
205Now displaying a completed todo (with completed datetime set) in the agenda view 206Now displaying a completed todo (with completed datetime set) in the agenda view
206at the time of the completion. Such that now it is possible to see in the agenda view 207at the time of the completion. Such that now it is possible to see in the agenda view
207when what todo was completed. 208when what todo was completed.
208Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 209Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
209Now the behaviour is: 210Now the behaviour is:
210Setting a parent to complete sets all (sub)childs to complete. 211Setting a parent to complete sets all (sub)childs to complete.
211Setting a parent to uncomplete does not change the childs. 212Setting a parent to uncomplete does not change the childs.
212Setting a child to uncomplete sets all parent to uncomplete. 213Setting a child to uncomplete sets all parent to uncomplete.
213Setting a child to complete does not change the parents. 214Setting a child to complete does not change the parents.
214 215
215Smart updating and double buffering of the daymatrix. 216Smart updating and double buffering of the daymatrix.
216Showing holidays in the day matrix. 217Showing holidays in the day matrix.
217Many other small performance updates. 218Many other small performance updates.
218 219
219Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. 220Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
220 221
221Now the translation file usertranslation.txt is supposed to be in utf8 format. 222Now the translation file usertranslation.txt is supposed to be in utf8 format.
222If 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. 223If 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.
223 224
224 225
225********** VERSION 2.0.0 ************ 226********** VERSION 2.0.0 ************
226 227
227Stable release 2.0.0! 228Stable release 2.0.0!
228 229
229KO/Pi: 230KO/Pi:
230Fixed problem in edit dialog recreation at startup. 231Fixed problem in edit dialog recreation at startup.
231Made "toggle view*" menu items enabled context sensitive. 232Made "toggle view*" menu items enabled context sensitive.
232Changed agenda size menu to items 1-10. 233Changed agenda size menu to items 1-10.
233Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 234Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
234Usebility enhancements in the KO/Pi menus. 235Usebility enhancements in the KO/Pi menus.
235Birthday import now adds year to summary. 236Birthday import now adds year to summary.
236What's Next view shows age in years for birthday. 237What's Next view shows age in years for birthday.
237 238
238OM/Pi: 239OM/Pi:
239Added three info lines to display subject, from and to of selected mails. 240Added three info lines to display subject, from and to of selected mails.
240 241
241KA/Pi: 242KA/Pi:
242Fixed jump bar behaviour on Zaurus. 243Fixed jump bar behaviour on Zaurus.
243Now KA/Pi search field supports searching for a range of starting characters. 244Now KA/Pi search field supports searching for a range of starting characters.
244E.g. to search for all contact beginning with b to n, type 245E.g. to search for all contact beginning with b to n, type
245b-n 246b-n
246in the search field. 247in the search field.
247 248
248********** VERSION 1.9.20 ************ 249********** VERSION 1.9.20 ************
249 250
250KO/Pi: 251KO/Pi:
251Added for the "dislplay one day" agenda mode 252Added for the "dislplay one day" agenda mode
252info in the caption and in the day lables: 253info in the caption and in the day lables:
253Now it is displayed, if the selected day is from "day before yesterday" 254Now it is displayed, if the selected day is from "day before yesterday"
254to "day after tomorrow". 255to "day after tomorrow".
255Made it possible to delete a Todo, which has sub-todos. 256Made it possible to delete a Todo, which has sub-todos.
256Fixed two small problems in the todo view. 257Fixed two small problems in the todo view.
257Added missing German translation for filter edit and print dialog. 258Added missing German translation for filter edit and print dialog.
258Made search dialog closeable by cancel key. 259Made search dialog closeable by cancel key.
259 260
260Made it possible to select in the date picker the (ligt grey ) 261Made it possible to select in the date picker the (ligt grey )
261dates of the prev./next month with the mouse. 262dates of the prev./next month with the mouse.
262 263
263OM/Pi: 264OM/Pi:
264"Delete mail" icon in main window now deletes all selected mails. 265"Delete mail" icon in main window now deletes all selected mails.
265Fixed the problem, that the state flag of imap mails was ignored. 266Fixed the problem, that the state flag of imap mails was ignored.
266Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 267Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
267to indecate that they are already seen. 268to indecate that they are already seen.
268Fixed the problem that the body of some mails was not displayed in the 269Fixed the problem that the body of some mails was not displayed in the
269mail viewer when fetching them from the imap server directly to read them. 270mail viewer when fetching them from the imap server directly to read them.
270Made it (configurable) possible to show the "To:" field in the list view. 271Made it (configurable) possible to show the "To:" field in the list view.
271Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 272Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
272Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 273Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
273local storage folder (specified in account settings) of the account of the mail. 274local storage folder (specified in account settings) of the account of the mail.
274Removed some memory leaks in OM/Pi. 275Removed some memory leaks in OM/Pi.
275 276
276 277
277********** VERSION 1.9.19 ************ 278********** VERSION 1.9.19 ************
278 279
279Added a lot of missing translations to KA/Pi, 280Added a lot of missing translations to KA/Pi,
280Added some missing translations to KO/Pi and OM/Pi. 281Added some missing translations to KO/Pi and OM/Pi.
281 282
282Fixed some minor problems in KA/Pi + KO/Pi. 283Fixed some minor problems in KA/Pi + KO/Pi.
283 284
284Fixed a crash when closing PwM/Pi. 285Fixed a crash when closing PwM/Pi.
285Added German translation for PwM/Pi. 286Added German translation for PwM/Pi.
286 287
287Made view change and Month View update faster in KO/Pi. 288Made view change and Month View update faster in KO/Pi.
288 289
289 290
290********** VERSION 1.9.18 ************ 291********** VERSION 1.9.18 ************
291 292
292FYI: The VERSION 1.9.17 was a testing release only. 293FYI: The VERSION 1.9.17 was a testing release only.
293Please read the changelog of VERSION 1.9.17 as well. 294Please read the changelog of VERSION 1.9.17 as well.
294 295
295Cleaned up the syncing config dialog. 296Cleaned up the syncing config dialog.
296Added sync config options for date range for events. 297Added sync config options for date range for events.
297Added sync config options for filters on incoming data. 298Added sync config options for filters on incoming data.
298Added sync config options for filters on outgoing data. 299Added sync config options for filters on outgoing data.
299Please read the updated SyncHowTo about the new filter settings. 300Please read the updated SyncHowTo about the new filter settings.
300These filter settings make it now possible to sync with shared 301These filter settings make it now possible to sync with shared
301calendars without writing back private or confidential data 302calendars without writing back private or confidential data
302(via the outgoing filters). 303(via the outgoing filters).
303To sync only with particular parts of a shared calendar, 304To sync only with particular parts of a shared calendar,
304the incoming filter settings can be used. 305the incoming filter settings can be used.
305An example can be found in the SyncHowTo. 306An example can be found in the SyncHowTo.
306Same for shared addressbooks. 307Same for shared addressbooks.
307 308
308Added a setting for the global kdepim data storage. 309Added a setting for the global kdepim data storage.
309Usually the data is stored in (yourhomedir/kdepim). 310Usually the data is stored in (yourhomedir/kdepim).
310Now you can set in the Global config dialog TAB, subTAB "Data storage path" 311Now you can set in the Global config dialog TAB, subTAB "Data storage path"
311a directory where all the kdepim data is stored. 312a directory where all the kdepim data is stored.
312That makes it easy to save all kdepim data on a SD card on the Z, for example. 313That makes it easy to save all kdepim data on a SD card on the Z, for example.
313 314
314KO/Pi: 315KO/Pi:
315The timeedit input has a pulldown list for times. 316The timeedit input has a pulldown list for times.
316If opened, this pulldown list should now has the right time highlighted. 317If opened, this pulldown list should now has the right time highlighted.
317Added the possibility to exclude events/todos/journals in a filter. 318Added the possibility to exclude events/todos/journals in a filter.
318You should exclude journals, if you do not want them to sync with a public calendar. 319You should exclude journals, if you do not want them to sync with a public calendar.
319 320
320KA/Pi: 321KA/Pi:
321Added the possibility to in/exclude public/private/confidential contacts to a filter. 322Added the possibility to in/exclude public/private/confidential contacts to a filter.
322If 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 ... 323If 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 ...
323Added printing of card view and details view on desktop. 324Added printing of card view and details view on desktop.
324Printing of list view is not working... 325Printing of list view is not working...
325Added button for removing pictures in contact editor. 326Added button for removing pictures in contact editor.
326Parsing data fix of KA/Pi version 1.9.17. 327Parsing data fix of KA/Pi version 1.9.17.
327Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 328Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
328Fixed some syncing merging problems. 329Fixed some syncing merging problems.
329 330
330 331
331********** VERSION 1.9.17 ************ 332********** VERSION 1.9.17 ************
332 333
333KO/Pi: 334KO/Pi:
334Fixed that tooltips were not updated after moving an item in agenda view. 335Fixed that tooltips were not updated after moving an item in agenda view.
335Fixed a bug in sorting start date for recurring events in list view. 336Fixed a bug in sorting start date for recurring events in list view.
336Changed the left button in todo viewer from "Agenda" to "Set completed". 337Changed the left button in todo viewer from "Agenda" to "Set completed".
337This 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. 338This 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.
338Added more info in the todo viewer: Startdate, parent/sub todos. 339Added more info in the todo viewer: Startdate, parent/sub todos.
339 340
340 341
341KA/Pi: 342KA/Pi:
342All fields search does now actually search all the (possible) fields, 343All fields search does now actually search all the (possible) fields,
343not only those listed in the contact list. 344not only those listed in the contact list.
344Made is possible to inline a picture in a vcard on the Z. 345Made is possible to inline a picture in a vcard on the Z.
345This was only possible on the desktop, now is it possible on the Z as well. 346This was only possible on the desktop, now is it possible on the Z as well.
346Fixed of missing save settings after filter configuration. 347Fixed of missing save settings after filter configuration.
347Made saving of addressbook much faster. 348Made saving of addressbook much faster.
348Fixed extension widget layout problem. 349Fixed extension widget layout problem.
349Fixed saving of default formatted name settings. 350Fixed saving of default formatted name settings.
350Fixed formatted name handling in edit dialog. 351Fixed formatted name handling in edit dialog.
351Added an option for changing formatted names of many contacts 352Added an option for changing formatted names of many contacts
352(menu: File - Change - Set formatted name). 353(menu: File - Change - Set formatted name).
353 354
354QWhatsThis was not working on the Z ( only black rectangle was shown). 355QWhatsThis was not working on the Z ( only black rectangle was shown).
355This is Fixed. 356This is Fixed.
356 357
357KDE-Sync: 358KDE-Sync:
358Now readonly KDE resources are synced as well. 359Now readonly KDE resources are synced as well.
359(They are not changed in KDE itself, of course). 360(They are not changed in KDE itself, of course).
360 361
361 362
362 363
363********** VERSION 1.9.16 ************ 364********** VERSION 1.9.16 ************
364 365
365KO/Pi: 366KO/Pi:
366Fixed search dialog size on Z 6000 (480x640 display). 367Fixed search dialog size on Z 6000 (480x640 display).
367Added setting to hide/show time in agenda items. 368Added setting to hide/show time in agenda items.
368Added setting to hide not running todos in todo view. 369Added setting to hide not running todos in todo view.
369Added columns for start date/time in todo view. 370Added columns for start date/time in todo view.
370Replaced the solid half-hour lines in agenda view by dot lines. 371Replaced the solid half-hour lines in agenda view by dot lines.
371Added possibility of printing the What's Next View on the desktop 372Added possibility of printing the What's Next View on the desktop
372(i.e. Windows and Linux). 373(i.e. Windows and Linux).
373Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 374Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
374Added tooltips in month view.(Tooltips only available on desktop) 375Added tooltips in month view.(Tooltips only available on desktop)
375 376
376Fixed a strange problem in KO/Pi alarm applet. 377Fixed a strange problem in KO/Pi alarm applet.
377Did not find the actual problem, 378Did not find the actual problem,
378such that now Qtopia reboots again if deinstalling the alarm applet. 379such that now Qtopia reboots again if deinstalling the alarm applet.
379But the alarm applet should work again. 380But the alarm applet should work again.
380 381
381KA/Pi: 382KA/Pi:
382Fixed the problem, that internal pictures were not saved. 383Fixed the problem, that internal pictures were not saved.
383 384
384Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 385Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
385 386
386Fixed some minor problems. (Like word wrap in help text windows). 387Fixed some minor problems. (Like word wrap in help text windows).
387 388
388Fixed a compiling problem in microkde/kresources. 389Fixed a compiling problem in microkde/kresources.
389 390
390KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 391KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
391This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 392This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
392such that now syncing KO/Pi with Sharp DTM should work on the 393such that now syncing KO/Pi with Sharp DTM should work on the
393Zaurus C 3000 model. 394Zaurus C 3000 model.
394 395
395********** VERSION 1.9.15 ************ 396********** VERSION 1.9.15 ************
396 397
397Usebilty enhancements in KO/Pi: 398Usebilty enhancements in KO/Pi:
398When clicking on the date in a month view cell, the day view is shown. 399When clicking on the date in a month view cell, the day view is shown.
399Old behaviour was, that the "new event" dialog popped up. 400Old behaviour was, that the "new event" dialog popped up.
400 401
401Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 402Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
402That means, you can restore the latest 403That means, you can restore the latest
403event/todo/journal you have deleted. 404event/todo/journal you have deleted.
404A journal is deleted, if you clear all the text of the journal. 405A journal is deleted, if you clear all the text of the journal.
405 406
406Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 407Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
407 408
408KA/Pi starting in 480x640 resolution: 409KA/Pi starting in 480x640 resolution:
409Hide the filter action in toolbar 410Hide the filter action in toolbar
410and added icons for undo/delete/redo in toolbar. 411and added icons for undo/delete/redo in toolbar.
411 412
412Change in OM/Pi ViewMail dialog: 413Change in OM/Pi ViewMail dialog:
413When clicking on the "delete" icon the mail is deleted after confirmation as usual. 414When clicking on the "delete" icon the mail is deleted after confirmation as usual.
414But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 415But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
415 416
416Fixed a crash when deleting mail-accounts in OM/Pi. 417Fixed a crash when deleting mail-accounts in OM/Pi.
417 418
418 419
419********** VERSION 1.9.14 ************ 420********** VERSION 1.9.14 ************
420 421
421Fixed some problems with the dialog sizes when switching 422Fixed some problems with the dialog sizes when switching
422portrait/landscape mode on 640x480 PDA display. 423portrait/landscape mode on 640x480 PDA display.
423 424
424Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 425Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
425 426
426Fixed an ugly bug in KOpieMail: 427Fixed an ugly bug in KOpieMail:
427KOpieMail was not able to write files (mails) to MSDOS file system, 428KOpieMail was not able to write files (mails) to MSDOS file system,
428like on an usual preformatted SD card. That should work now. 429like on an usual preformatted SD card. That should work now.
429To save your mail data on the Sd card do the following: 430To save your mail data on the Sd card do the following:
430Create a dir on the SD card: 431Create a dir on the SD card:
431mkdir /mnt/card/localmail 432mkdir /mnt/card/localmail
432Go to your home dir: 433Go to your home dir:
433cd 434cd
434Go to kopiemail data storage dir: 435Go to kopiemail data storage dir:
435cd kdepim/apps/kopiemail 436cd kdepim/apps/kopiemail
436Create a symlink to the SD card: 437Create a symlink to the SD card:
437ls -s /mnt/card/localmail 438ls -s /mnt/card/localmail
438Now KOpieMail will store all mails on the SD card. 439Now KOpieMail will store all mails on the SD card.
439 440
440KO/Pi Monthview: 441KO/Pi Monthview:
441Now "Go to Today" selects the current month from day 1-end, 442Now "Go to Today" selects the current month from day 1-end,
442not the current date + some days. 443not the current date + some days.
443I.e. "Go to Today" shows now always 444I.e. "Go to Today" shows now always
444the current month with first day of month in the first row. 445the current month with first day of month in the first row.
445 446
446Added missing German translation. 447Added missing German translation.
447 448
448Fixed icons of executeable on Wintendo. 449Fixed icons of executeable on Wintendo.
449 450
450Added a "Show next Mail" button to the OM/Pi 451Added a "Show next Mail" button to the OM/Pi
451mail viewer such that the mail below the current mail 452mail viewer such that the mail below the current mail
452in the mail list view of the current folder 453in the mail list view of the current folder
453can be read with a single click. 454can be read with a single click.
454 455
455 456
456********** VERSION 1.9.13 ************ 457********** VERSION 1.9.13 ************
457 458
458Fixed nasty PwM/Pi file reading bug, when 459Fixed nasty PwM/Pi file reading bug, when
459the used hash algo of file is different then the global 460the used hash algo of file is different then the global
460hash algo. 461hash algo.
461 462
462Added KA/Pi support for opie mailit mailapplication. 463Added KA/Pi support for opie mailit mailapplication.
463 464
464Fixed some bugs in OM/Pi. 465Fixed some bugs in OM/Pi.
465Now character conversion tables are available for the Zaurus 466Now character conversion tables are available for the Zaurus
466to make OM/Pi working properly. 467to make OM/Pi working properly.
467To get the character conversion in OM/Pi working, please download 468To get the character conversion in OM/Pi working, please download
468at the sourceforge project site the package 469at the sourceforge project site the package
469sr-character-conversion_SharpROM_arm.ipk.zip 470sr-character-conversion_SharpROM_arm.ipk.zip
470(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 471(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
471from the section "general files for KDE/Pim" 472from the section "general files for KDE/Pim"
472Instructions how to install this package are in a ReadMe in this file. 473Instructions how to install this package are in a ReadMe in this file.
473 474
474 475
475Fixed the orientation change problem in KA/Pi when switching 476Fixed the orientation change problem in KA/Pi when switching
476portrait/landscape mode. 477portrait/landscape mode.
477 478
478French translation available for KA/Pi and OM/Pi. 479French translation available for KA/Pi and OM/Pi.
479 480
480Fixed some problems with categories in KO/Pi in DTM sync. 481Fixed some problems with categories in KO/Pi in DTM sync.
481 482
482Added selection dialog for export to phone in KA/Pi. 483Added selection dialog for export to phone in KA/Pi.
483 484
484If in KO/Pi is an attendee selected to add to a meeting and this 485If in KO/Pi is an attendee selected to add to a meeting and this
485attendee is already in the list of attendees, this person is not added 486attendee is already in the list of attendees, this person is not added
486again. 487again.
487 488
488Some menu cleanup in KA/Pi. 489Some menu cleanup in KA/Pi.
489 490
490********** VERSION 1.9.12 ************ 491********** VERSION 1.9.12 ************
491 492
492Fix for the bug in KO/Pi What's Next view of version 1.9.11. 493Fix for the bug in KO/Pi What's Next view of version 1.9.11.
493 494
494Bugfix: Licence file is now shown again. 495Bugfix: Licence file is now shown again.
495 496
496OM/Pi now supports Unicode (utf8 charset). 497OM/Pi now supports Unicode (utf8 charset).
497Fixed some bugs in OM/Pi. 498Fixed some bugs in OM/Pi.
498 499
499KA/Pi has more German translation. 500KA/Pi has more German translation.
500 501
501 502
502********** VERSION 1.9.11 ************ 503********** VERSION 1.9.11 ************
503 504
504Fixed several problems in PWM/Pi, like 505Fixed several problems in PWM/Pi, like
505asking the user, if unsaved changed are pending 506asking the user, if unsaved changed are pending
506when closing the app. 507when closing the app.
507And PwM/Pi handles now different texts for the 508And PwM/Pi handles now different texts for the
508fields Description, Username, Password, configurable per category. 509fields Description, Username, Password, configurable per category.
509 510
510Fixed a crash in KO/Pi , when importing/loading vcs files 511Fixed a crash in KO/Pi , when importing/loading vcs files
511which have an entry with an attendee with state: 512which have an entry with an attendee with state:
512NEEDS ACTION 513NEEDS ACTION
513 514
514Fixed some problems in the German translation of OM/Pi, 515Fixed some problems in the German translation of OM/Pi,
515which makes some dialogs not fitting on the screen 516which makes some dialogs not fitting on the screen
516of the Z 5500. 517of the Z 5500.
517 518
518Fixed Qtopia crash, when disabling/deinstalling 519Fixed Qtopia crash, when disabling/deinstalling
519KO/Pi alarm applet. 520KO/Pi alarm applet.
520 521
521Implemented direct KDE<->KA/Pi sync for KA/Pi running 522Implemented direct KDE<->KA/Pi sync for KA/Pi running
522on Linux desktop. 523on Linux desktop.
523 524
524Added feature "remove sync info" to sync menu. 525Added feature "remove sync info" to sync menu.
525 526
526Tweaked the KO/Pi What's next view a bit, added 527Tweaked the KO/Pi What's next view a bit, added
527setting to hide events that are done. 528setting to hide events that are done.
528 529
529Disabled "beam receive enabled" on startup to 530Disabled "beam receive enabled" on startup to
530avoid problems if Fastload is enabled. 531avoid problems if Fastload is enabled.
531Please set "beam receive enabled", 532Please set "beam receive enabled",
532if you want to receive data via IR. 533if you want to receive data via IR.
533 534
534Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 535Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
535on Linux desktop. 536on Linux desktop.
536 537
537Made in KA/Pi scrolling possible, if details view is selected. 538Made in KA/Pi scrolling possible, if details view is selected.
538(The keyboard focus is set automatically to the search line) 539(The keyboard focus is set automatically to the search line)
539 540
540Fixed a bug in DMT sync, that a new entry in DTM was added 541Fixed a bug in DMT sync, that a new entry in DTM was added
541on every sync to Kx/Pi. 542on every sync to Kx/Pi.
542 543
543Fixed missing writing of KA/Pi categories to DMT entries when syncing. 544Fixed missing writing of KA/Pi categories to DMT entries when syncing.
544 545
545Fixed a bug in DMT sync with todos created in KO/Pi containing 546Fixed a bug in DMT sync with todos created in KO/Pi containing
546non-latin1 characters. 547non-latin1 characters.
547 548
548Rearranged package contents of Sharp-ipks and made all 549Rearranged package contents of Sharp-ipks and made all
549packages installable on SD again. 550packages installable on SD again.
550 551
551Fixed the writing of addressbook data in DTM sync. 552Fixed the writing of addressbook data in DTM sync.
552Empty fields in KA/Pi were not removed. 553Empty fields in KA/Pi were not removed.
553 554
554Added better category handling in KA/Pi: 555Added better category handling in KA/Pi:
555Added item 556Added item
556Edit Categories and 557Edit Categories and
557Manage new categories 558Manage new categories
558to the settings menu. 559to the settings menu.
559Possible to configure a view to display categories. 560Possible to configure a view to display categories.
560 561
561Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 562Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
562 563
563Fixed displaying of "free" days and time in KO Monthview and Agendaview. 564Fixed displaying of "free" days and time in KO Monthview and Agendaview.
564 565
565... and many other bugfixes. 566... and many other bugfixes.
566 567
567********** VERSION 1.9.10 ************ 568********** VERSION 1.9.10 ************
568 569
569Many internal small bugfixes. 570Many internal small bugfixes.
570And fix of the "big" bug in KO/Pi, 571And fix of the "big" bug in KO/Pi,
571that after Syncing the appointments had an offset by several hours. 572that after Syncing the appointments had an offset by several hours.
572That was a problem with the internal timezone setting, 573That was a problem with the internal timezone setting,
573introduced by the changed timezone configuration settings. 574introduced by the changed timezone configuration settings.
574 575
575German translation for OM/Pi is now available. 576German translation for OM/Pi is now available.
576 577
577 578
578********** VERSION 1.9.9 ************ 579********** VERSION 1.9.9 ************
579 580
580KDE-Pim/Pi has a new Member! 581KDE-Pim/Pi has a new Member!
581It is called PWM/Pi (Passwordmanager/platform-independent) 582It is called PWM/Pi (Passwordmanager/platform-independent)
582and it is available for the Zaurus. 583and it is available for the Zaurus.
583It is planned, that it will be available later for Windows. 584It is planned, that it will be available later for Windows.
584(And for Linux, of course). 585(And for Linux, of course).
585It is a port of the Passwordmanager of KDE. 586It is a port of the Passwordmanager of KDE.
586It will need the MicroKDElibs to run. 587It will need the MicroKDElibs to run.
587 588
588Made loading of addressbooks in KA/Pi up to 7 times faster! 589Made loading of addressbooks in KA/Pi up to 7 times faster!
589The bigger your addressbook file, the more starting speed 590The bigger your addressbook file, the more starting speed
590will you gain. (relatively) 591will you gain. (relatively)
591 592
592The Qtopia addressbook connector is now platform independend 593The Qtopia addressbook connector is now platform independend
593as well and should work on any platform for importing/exporting 594as well and should work on any platform for importing/exporting
594Qtopia and Opie XML files. 595Qtopia and Opie XML files.
595 596
596Added a +30min feature to the timezone settings to make 597Added a +30min feature to the timezone settings to make
597KDE-Pim/Pi useable in Australia and other parts on the 598KDE-Pim/Pi useable in Australia and other parts on the
598world with strange timezones ;-) 599world with strange timezones ;-)
599 600
600German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 601German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
601 602
602It is now possible to disable the 603It is now possible to disable the
603"receive data via infrared" feature, such that syncing with 604"receive data via infrared" feature, such that syncing with
604Outlook is now possible again with Kx/Pi runing. 605Outlook is now possible again with Kx/Pi runing.
605Please disable it, before syncing Sharp DTM with Outlook. 606Please disable it, before syncing Sharp DTM with Outlook.
606For your convenience, the "receive data via infrared" feature 607For your convenience, the "receive data via infrared" feature
607is disabled automatically, if you sync Kx/Pi with DTM. 608is disabled automatically, if you sync Kx/Pi with DTM.
608You have to enable it again manually after syncing. 609You have to enable it again manually after syncing.
609Enabling this feature makes it impossible to start the 610Enabling this feature makes it impossible to start the
610Sharp DTM apps. If this feature is enabled, you will only get the 611Sharp DTM apps. If this feature is enabled, you will only get the
611alarm notification from KO/Pi and not from the Sharp calendar. 612alarm notification from KO/Pi and not from the Sharp calendar.
612This is very useful if you sync KO/Pi with Sharp DTM, 613This is very useful if you sync KO/Pi with Sharp DTM,
613because after syncing you usually would get notified about 614because after syncing you usually would get notified about
614an alarm by KO/Pi and the Sharp Calendar. 615an alarm by KO/Pi and the Sharp Calendar.
615 616
616Together with the Linux desktop version of KO/Pi 617Together with the Linux desktop version of KO/Pi
617it is now possible to sync KO/Pi on the Zaurus 618it is now possible to sync KO/Pi on the Zaurus
618with the complete KDE-desktop (3.3 or later) 619with the complete KDE-desktop (3.3 or later)
619calendar data easily. 620calendar data easily.
620That makes it possible to sync the Z with one 621That makes it possible to sync the Z with one
621click of a mouse with the KDE-Desktop. 622click of a mouse with the KDE-Desktop.
622This feature it available for all Zaurus platforms KO/Pi 623This feature it available for all Zaurus platforms KO/Pi
623is running on. 624is running on.
624The only thing needed is a running KO/Pi on Linux and 625The only thing needed is a running KO/Pi on Linux and
625a compiled version of the small 626a compiled version of the small
626KDE-Pim/Pi<->KDE-Desktop access command line program, 627KDE-Pim/Pi<->KDE-Desktop access command line program,
627which is in the KDE-Pim/Pi sources available. 628which is in the KDE-Pim/Pi sources available.
628 629
629The "KDE-desktop" syncing feature for KA/Pi will follow 630The "KDE-desktop" syncing feature for KA/Pi will follow
630in the next releases. 631in the next releases.
631 632
632Fixed the vcard export bug, which had the version 1.9.8. 633Fixed the vcard export bug, which had the version 1.9.8.
633 634
634Added missing GERMAN translation to KO/Pi. 635Added missing GERMAN translation to KO/Pi.
635Hi PsionX, could you add the missing french translation?Thx! 636Hi PsionX, could you add the missing french translation?Thx!
636 637
637Translation files for KA/Pi are available as well. 638Translation files for KA/Pi are available as well.
638GERMAN translation will be available in the next release. 639GERMAN translation will be available in the next release.
639PsionX ( yres, you again ;-) ), could you start translating 640PsionX ( yres, you again ;-) ), could you start translating
640KA/Pi? Thx! 641KA/Pi? Thx!
641 642
642You can download the version 1.9.9 at 643You can download the version 1.9.9 at
643 644
644http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 645http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
645 646
646Note: 647Note:
647To run the mail program OM/Pi you need libopenssl. 648To run the mail program OM/Pi you need libopenssl.
648A link to a download loaction is available at 649A link to a download loaction is available at
649ZSI at www.killefiz.de 650ZSI at www.killefiz.de
650 651
651 652
652********** VERSION 1.9.8 ************ 653********** VERSION 1.9.8 ************
653 654
654Fixed character decoding in OM/Pi. 655Fixed character decoding in OM/Pi.
655(e.g. German "Umlaute" were not displayed properly.) 656(e.g. German "Umlaute" were not displayed properly.)
656 657
657Made is possible to reparent todos in KO/Pi. 658Made is possible to reparent todos in KO/Pi.
658Use contextmenu or keys (look at Help-Keys + Colors) for that. 659Use contextmenu or keys (look at Help-Keys + Colors) for that.
659 660
660Added the missing Sync-Howto and WhatsNew to the packages. 661Added the missing Sync-Howto and WhatsNew to the packages.
661 662
662KO/Pi on Linux desktop can now sync with KDE desktop. 663KO/Pi on Linux desktop can now sync with KDE desktop.
663That means: When using KO/Pi on Linux desktop for syncing with 664That means: When using KO/Pi on Linux desktop for syncing with
664KDE desktop and the Zaurus, the Zaurus can be synced now 665KDE desktop and the Zaurus, the Zaurus can be synced now
665with all KDE-Calendar resources, not only with one local file. 666with all KDE-Calendar resources, not only with one local file.
666(That makes it possible to sync the Zaurus with the 667(That makes it possible to sync the Zaurus with the
667calendar data on a Kolab server) 668calendar data on a Kolab server)
668 669
669KA/Pi syncing with KDE desktop will be available in the next version. 670KA/Pi syncing with KDE desktop will be available in the next version.
670 671
671 672
672********** VERSION 1.9.7 ************ 673********** VERSION 1.9.7 ************
673 674
674KO/Pi - KA/Pi on Windows: 675KO/Pi - KA/Pi on Windows:
675Now a directory can be defined by the user, where the 676Now a directory can be defined by the user, where the
676application/config data should be saved. 677application/config data should be saved.
677 Define your desired path in the evironment variable 678 Define your desired path in the evironment variable
678 MICROKDEHOME 679 MICROKDEHOME
679 before starting KO/Pi or KA/Pi. 680 before starting KO/Pi or KA/Pi.
680 681
681An easy Kx/Pi to Kx/Pi syncing is now possible 682An easy Kx/Pi to Kx/Pi syncing is now possible
682(it is called Pi-Sync) via network. 683(it is called Pi-Sync) via network.
683Please look at the Sync Howto. 684Please look at the Sync Howto.
684 685
685Exporting of calendar data and contacts to mobile phones is now possible. 686Exporting of calendar data and contacts to mobile phones is now possible.
686The SyncHowto is updated with information howto 687The SyncHowto is updated with information howto
687access/sync mobile phones. 688access/sync mobile phones.
688Please look at the Sync Howto. 689Please look at the Sync Howto.
689 690
690Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 691Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
691Please disable Fastload for the original contact/calendar applications 692Please disable Fastload for the original contact/calendar applications
692and close them. 693and close them.
693KO/Pi and KA/Pi must be running in order to receive the data. 694KO/Pi and KA/Pi must be running in order to receive the data.
694(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 695(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
695 696
696In the KA/Pi details view are now the preferred tel. numbers displayed on top 697In the KA/Pi details view are now the preferred tel. numbers displayed on top
697of the other data ( emails/tel.numbers/addresses) 698of the other data ( emails/tel.numbers/addresses)
698 699
699Fixed some syncing problems in KA/Pi. 700Fixed some syncing problems in KA/Pi.
700 701
701Added font settings for the KA/Pi details view. 702Added font settings for the KA/Pi details view.
702Added fields "children's name" and "gender" to KA/Pi. 703Added fields "children's name" and "gender" to KA/Pi.
703 704
704Made searching in KA/Pi better: 705Made searching in KA/Pi better:
705Now the first item in a view is selected after a search automatically and 706Now the first item in a view is selected after a search automatically and
706the views can be scrolled up/down when the search input field has the keyboard focus. 707the views can be scrolled up/down when the search input field has the keyboard focus.
707 708
708And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 709And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
709 710
710 711
711********** VERSION 1.9.6 ************ 712********** VERSION 1.9.6 ************
712 713
713Changes in the external application communication on the Zaurus 714Changes in the external application communication on the Zaurus
714in order to use less RAM when the apps are running. 715in order to use less RAM when the apps are running.
715First syncing of addressbooks (KA/Pi) is possible. 716First syncing of addressbooks (KA/Pi) is possible.
716 717
717 718
718********** VERSION 1.9.5a ************ 719********** VERSION 1.9.5a ************
719 720
720Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 721Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
721Fixed some small bugs. 722Fixed some small bugs.
722KA/Pi shows now the birthday in summary view. 723KA/Pi shows now the birthday in summary view.
723Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 724Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
724for displaying dates. 725for displaying dates.
725 726
726 727
727********** VERSION 1.9.5 ************ 728********** VERSION 1.9.5 ************
728 729
729There is still no Addressbook syncing! 730There is still no Addressbook syncing!
730 731
731New in 1.9.5: 732New in 1.9.5:
732 733
733Many bugfixes. 734Many bugfixes.
734Better searching in KA/Pi. 735Better searching in KA/Pi.
735You can configure in KA/Pi if you want to search only after 736You can configure in KA/Pi if you want to search only after
736<return> key pressed. 737<return> key pressed.
737 738
738Better mail downloading in OM/Pi. 739Better mail downloading in OM/Pi.
739 740
740First experimental alpha version of sync of KO/Pi with mobile phones. 741First experimental alpha version of sync of KO/Pi with mobile phones.
741See gammu documentation for supported phones. 742See gammu documentation for supported phones.
742You 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. 743You 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.
743Quick hint how to use: 744Quick hint how to use:
744NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 745NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
745Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 746Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
746Create syncprofile - mobile device 747Create syncprofile - mobile device
747Remove entry for model. (Leave empty ). 748Remove entry for model. (Leave empty ).
748Enable infrared on Zaurus and your Phone. 749Enable infrared on Zaurus and your Phone.
749Sync. 750Sync.
750To get a more detailed log, start kopi from konsole. 751To get a more detailed log, start kopi from konsole.
751 752
752********** VERSION 1.9.4 ************ 753********** VERSION 1.9.4 ************
753 754
754This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 755This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
755 756
756WARNING: 757WARNING:
757PLEASE BACKUP ALL YOUR DATA! 758PLEASE BACKUP ALL YOUR DATA!
758We have changed a lot and maybe there are some unknown problems. 759We have changed a lot and maybe there are some unknown problems.
759 760
760SYNC HANDLING HAS CHANGED! 761SYNC HANDLING HAS CHANGED!
761Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 762Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
762(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 763(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
763 764
764You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 765You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
765If 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. 766If 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.
766 767
767As programs are available: 768As programs are available:
768KO/Pi (korganizer ipk) - a calendar program. 769KO/Pi (korganizer ipk) - a calendar program.
769KA/Pi (kaddressbook ipk ) - an addressbook 770KA/Pi (kaddressbook ipk ) - an addressbook
770OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 771OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
771 772
772An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 773An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
773(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 774(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
774 775
775All the applications are installed in a "Pim" TAB. 776All the applications are installed in a "Pim" TAB.
776If 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 777If 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
777 778
diff --git a/pwmanager/pwmanager/pwm.cpp b/pwmanager/pwmanager/pwm.cpp
index a751fce..9c8d12d 100644
--- a/pwmanager/pwmanager/pwm.cpp
+++ b/pwmanager/pwmanager/pwm.cpp
@@ -1,1260 +1,1271 @@
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("filesave", KIcon::Small)), 252 filePopup->insertItem(QIconSet(picons->loadIcon("filesave", KIcon::Small)),
253 i18n("&Save"), this, 253 i18n("&Save"), this,
254 SLOT(save_slot()), 0, BUTTON_POPUP_FILE_SAVE); 254 SLOT(save_slot()), 0, BUTTON_POPUP_FILE_SAVE);
255 filePopup->insertItem(QIconSet(picons->loadIcon("filesaveas", KIcon::Small)), 255 filePopup->insertItem(QIconSet(picons->loadIcon("filesaveas", KIcon::Small)),
256 i18n("Save &as..."), 256 i18n("Save &as..."),
257 this, SLOT(saveAs_slot()), 0, 257 this, SLOT(saveAs_slot()), 0,
258 BUTTON_POPUP_FILE_SAVEAS); 258 BUTTON_POPUP_FILE_SAVEAS);
259 filePopup->insertSeparator(); 259 filePopup->insertSeparator();
260 // "file/export" popup menu 260 // "file/export" popup menu
261 exportPopup->insertItem(i18n("&Text-file..."), this, 261 exportPopup->insertItem(i18n("&Text-file..."), this,
262 SLOT(exportToText()), 0, BUTTON_POPUP_EXPORT_TEXT); 262 SLOT(exportToText()), 0, BUTTON_POPUP_EXPORT_TEXT);
263 exportPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this, 263 exportPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this,
264 SLOT(exportToGpasman()), 0, BUTTON_POPUP_EXPORT_GPASMAN); 264 SLOT(exportToGpasman()), 0, BUTTON_POPUP_EXPORT_GPASMAN);
265 exportPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this, 265 exportPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this,
266 SLOT(exportToCsv()), 0, BUTTON_POPUP_EXPORT_CSV); 266 SLOT(exportToCsv()), 0, BUTTON_POPUP_EXPORT_CSV);
267#ifdef CONFIG_KWALLETIF 267#ifdef CONFIG_KWALLETIF
268 exportPopup->insertItem(i18n("&KWallet..."), this, 268 exportPopup->insertItem(i18n("&KWallet..."), this,
269 SLOT(exportToKWallet()), 0, BUTTON_POPUP_EXPORT_KWALLET); 269 SLOT(exportToKWallet()), 0, BUTTON_POPUP_EXPORT_KWALLET);
270#endif 270#endif
271 filePopup->insertItem(QIconSet(picons->loadIcon("fileexport", KIcon::Small)), 271 filePopup->insertItem(QIconSet(picons->loadIcon("fileexport", KIcon::Small)),
272 i18n("E&xport"), exportPopup, 272 i18n("E&xport"), exportPopup,
273 BUTTON_POPUP_FILE_EXPORT); 273 BUTTON_POPUP_FILE_EXPORT);
274 // "file/import" popup menu 274 // "file/import" popup menu
275 importPopup->insertItem(i18n("&Text-file..."), this, 275 importPopup->insertItem(i18n("&Text-file..."), this,
276 SLOT(importFromText()), 0, BUTTON_POPUP_IMPORT_TEXT); 276 SLOT(importFromText()), 0, BUTTON_POPUP_IMPORT_TEXT);
277 importPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this, 277 importPopup->insertItem(i18n("&Gpasman / Kpasman ..."), this,
278 SLOT(importFromGpasman()), 0, BUTTON_POPUP_IMPORT_GPASMAN); 278 SLOT(importFromGpasman()), 0, BUTTON_POPUP_IMPORT_GPASMAN);
279 importPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this, 279 importPopup->insertItem(i18n("&CSV (Comma Separated Value) ..."), this,
280 SLOT(importCsv()), 0, BUTTON_POPUP_IMPORT_CSV); 280 SLOT(importCsv()), 0, BUTTON_POPUP_IMPORT_CSV);
281#ifdef CONFIG_KWALLETIF 281#ifdef CONFIG_KWALLETIF
282 importPopup->insertItem(i18n("&KWallet..."), this, 282 importPopup->insertItem(i18n("&KWallet..."), this,
283 SLOT(importKWallet()), 0, BUTTON_POPUP_IMPORT_KWALLET); 283 SLOT(importKWallet()), 0, BUTTON_POPUP_IMPORT_KWALLET);
284#endif 284#endif
285 filePopup->insertItem(QIconSet(picons->loadIcon("fileimport", KIcon::Small)), 285 filePopup->insertItem(QIconSet(picons->loadIcon("fileimport", KIcon::Small)),
286 i18n("I&mport"), importPopup, 286 i18n("I&mport"), importPopup,
287 BUTTON_POPUP_FILE_IMPORT); 287 BUTTON_POPUP_FILE_IMPORT);
288 filePopup->insertSeparator(); 288 filePopup->insertSeparator();
289#if 0 289#if 0
290 filePopup->insertItem(QIconSet(picons->loadIcon("fileprint", KIcon::Small)), 290 filePopup->insertItem(QIconSet(picons->loadIcon("fileprint", KIcon::Small)),
291 i18n("&Print..."), this, 291 i18n("&Print..."), this,
292 SLOT(print_slot()), 0, BUTTON_POPUP_FILE_PRINT); 292 SLOT(print_slot()), 0, BUTTON_POPUP_FILE_PRINT);
293 filePopup->insertSeparator(); 293 filePopup->insertSeparator();
294#endif 294#endif
295 filePopup->insertItem(QIconSet(picons->loadIcon("exit", KIcon::Small)), 295 filePopup->insertItem(QIconSet(picons->loadIcon("exit", KIcon::Small)),
296 i18n("&Quit"), this, 296 i18n("&Quit"), this,
297 SLOT(quitButton_slot()), 0, BUTTON_POPUP_FILE_QUIT); 297 SLOT(quitButton_slot()), 0, BUTTON_POPUP_FILE_QUIT);
298 menuBar()->insertItem(i18n("&File"), filePopup); 298 menuBar()->insertItem(i18n("&File"), filePopup);
299// "manage" popup menu 299// "manage" popup menu
300 managePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)), 300 managePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)),
301 i18n("&Add password"), this, 301 i18n("&Add password"), this,
302 SLOT(addPwd_slot()), 0, 302 SLOT(addPwd_slot()), 0,
303 BUTTON_POPUP_MANAGE_ADD); 303 BUTTON_POPUP_MANAGE_ADD);
304 managePopup->insertSeparator(); 304 managePopup->insertSeparator();
305 managePopup->insertItem(QIconSet(picons->loadIcon("edit", KIcon::Small)), 305 managePopup->insertItem(QIconSet(picons->loadIcon("edit", KIcon::Small)),
306 i18n("&Edit"), this, SLOT(editPwd_slot()), 0, 306 i18n("&Edit"), this, SLOT(editPwd_slot()), 0,
307 BUTTON_POPUP_MANAGE_EDIT); 307 BUTTON_POPUP_MANAGE_EDIT);
308 managePopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)), 308 managePopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)),
309 i18n("&Delete"), this, SLOT(deletePwd_slot()), 309 i18n("&Delete"), this, SLOT(deletePwd_slot()),
310 0, BUTTON_POPUP_MANAGE_DEL); 310 0, BUTTON_POPUP_MANAGE_DEL);
311 managePopup->insertSeparator(); 311 managePopup->insertSeparator();
312 managePopup->insertItem(QIconSet(picons->loadIcon("rotate", KIcon::Small)), 312 managePopup->insertItem(QIconSet(picons->loadIcon("rotate", KIcon::Small)),
313 i18n("Change &Master Password"), this, 313 i18n("Change &Master Password"), this,
314 SLOT(changeMasterPwd_slot()), 0, 314 SLOT(changeMasterPwd_slot()), 0,
315 BUTTON_POPUP_MANAGE_CHANGEMP); 315 BUTTON_POPUP_MANAGE_CHANGEMP);
316 menuBar()->insertItem(i18n("&Manage"), managePopup); 316 menuBar()->insertItem(i18n("&Manage"), managePopup);
317// "chipcard" popup menu 317// "chipcard" popup menu
318#ifdef CONFIG_KEYCARD 318#ifdef CONFIG_KEYCARD
319 chipcardPopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)), 319 chipcardPopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)),
320 i18n("&Generate new key-card"), this, 320 i18n("&Generate new key-card"), this,
321 SLOT(genNewCard_slot()), 0, 321 SLOT(genNewCard_slot()), 0,
322 BUTTON_POPUP_CHIPCARD_GENNEW); 322 BUTTON_POPUP_CHIPCARD_GENNEW);
323 chipcardPopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)), 323 chipcardPopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)),
324 i18n("&Erase key-card"), this, 324 i18n("&Erase key-card"), this,
325 SLOT(eraseCard_slot()), 0, 325 SLOT(eraseCard_slot()), 0,
326 BUTTON_POPUP_CHIPCARD_DEL); 326 BUTTON_POPUP_CHIPCARD_DEL);
327 chipcardPopup->insertItem(QIconSet(picons->loadIcon("", KIcon::Small)), 327 chipcardPopup->insertItem(QIconSet(picons->loadIcon("", KIcon::Small)),
328 i18n("Read card-&ID"), this, 328 i18n("Read card-&ID"), this,
329 SLOT(readCardId_slot()), 0, 329 SLOT(readCardId_slot()), 0,
330 BUTTON_POPUP_CHIPCARD_READID); 330 BUTTON_POPUP_CHIPCARD_READID);
331 chipcardPopup->insertSeparator(); 331 chipcardPopup->insertSeparator();
332 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2rightarrow", KIcon::Small)), 332 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2rightarrow", KIcon::Small)),
333 i18n("&Make card backup-image"), this, 333 i18n("&Make card backup-image"), this,
334 SLOT(makeCardBackup_slot()), 0, 334 SLOT(makeCardBackup_slot()), 0,
335 BUTTON_POPUP_CHIPCARD_SAVEBACKUP); 335 BUTTON_POPUP_CHIPCARD_SAVEBACKUP);
336 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2leftarrow", KIcon::Small)), 336 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2leftarrow", KIcon::Small)),
337 i18n("&Replay card backup-image"), this, 337 i18n("&Replay card backup-image"), this,
338 SLOT(replayCardBackup_slot()), 0, 338 SLOT(replayCardBackup_slot()), 0,
339 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP); 339 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP);
340 menuBar()->insertItem(i18n("&Chipcard manager"), chipcardPopup); 340 menuBar()->insertItem(i18n("&Chipcard manager"), chipcardPopup);
341#endif // CONFIG_KEYCARD 341#endif // CONFIG_KEYCARD
342// "view" popup menu 342// "view" popup menu
343 viewPopup->insertItem(QIconSet(picons->loadIcon("find", KIcon::Small)), 343 viewPopup->insertItem(QIconSet(picons->loadIcon("find", KIcon::Small)),
344 i18n("&Find"), this, 344 i18n("&Find"), this,
345 SLOT(find_slot()), 0, BUTTON_POPUP_VIEW_FIND); 345 SLOT(find_slot()), 0, BUTTON_POPUP_VIEW_FIND);
346 viewPopup->insertSeparator(); 346 viewPopup->insertSeparator();
347 viewPopup->insertItem(QIconSet(picons->loadIcon("halfencrypted", KIcon::Small)), 347 viewPopup->insertItem(QIconSet(picons->loadIcon("halfencrypted", KIcon::Small)),
348 i18n("&Lock all entries"), this, 348 i18n("&Lock all entries"), this,
349 SLOT(lockWnd_slot()), 0, 349 SLOT(lockWnd_slot()), 0,
350 BUTTON_POPUP_VIEW_LOCK); 350 BUTTON_POPUP_VIEW_LOCK);
351 viewPopup->insertItem(QIconSet(picons->loadIcon("encrypted", KIcon::Small)), 351 viewPopup->insertItem(QIconSet(picons->loadIcon("encrypted", KIcon::Small)),
352 i18n("&Deep-lock all entries"), this, 352 i18n("&Deep-lock all entries"), this,
353 SLOT(deepLockWnd_slot()), 0, 353 SLOT(deepLockWnd_slot()), 0,
354 BUTTON_POPUP_VIEW_DEEPLOCK); 354 BUTTON_POPUP_VIEW_DEEPLOCK);
355 viewPopup->insertItem(QIconSet(picons->loadIcon("decrypted", KIcon::Small)), 355 viewPopup->insertItem(QIconSet(picons->loadIcon("decrypted", KIcon::Small)),
356 i18n("&Unlock all entries"), this, 356 i18n("&Unlock all entries"), this,
357 SLOT(unlockWnd_slot()), 0, 357 SLOT(unlockWnd_slot()), 0,
358 BUTTON_POPUP_VIEW_UNLOCK); 358 BUTTON_POPUP_VIEW_UNLOCK);
359 menuBar()->insertItem(i18n("&View"), viewPopup); 359 menuBar()->insertItem(i18n("&View"), viewPopup);
360// "options" popup menu 360// "options" popup menu
361 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)), 361 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
362 i18n("&Configure..."), this, 362 i18n("&Configure..."), this,
363 SLOT(config_slot()),0, 363 SLOT(config_slot()),0,
364 BUTTON_POPUP_OPTIONS_CONFIG); 364 BUTTON_POPUP_OPTIONS_CONFIG);
365 if ( QApplication::desktop()->width() <= 240 ) { 365 if ( QApplication::desktop()->width() <= 240 ) {
366 managePopup->insertSeparator(); 366 managePopup->insertSeparator();
367 managePopup->insertItem(i18n("&Options"), optionsPopup); 367 managePopup->insertItem(i18n("&Options"), optionsPopup);
368 } else 368 } else
369 menuBar()->insertItem(i18n("&Options"), optionsPopup); 369 menuBar()->insertItem(i18n("&Options"), optionsPopup);
370// "help" popup menu 370// "help" popup menu
371#ifndef PWM_EMBEDDED 371#ifndef PWM_EMBEDDED
372 helpPopup = helpMenu(QString::null, false); 372 helpPopup = helpMenu(QString::null, false);
373#else 373#else
374 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)), 374 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
375 i18n("C&ategories..."), this, 375 i18n("C&ategories..."), this,
376 SLOT(category_slot()),0, 376 SLOT(category_slot()),0,
377 BUTTON_POPUP_OPTIONS_CATEGORY); 377 BUTTON_POPUP_OPTIONS_CATEGORY);
378 378
379 379
380 menuBar()->insertItem(i18n("&Sync"), syncPopup); 380 menuBar()->insertItem(i18n("&Sync"), syncPopup);
381 381
382 382
383 383
384 384
385 385
386 helpPopup = new KPopupMenu(this); 386 helpPopup = new KPopupMenu(this);
387 387
388 388
389 helpPopup->insertItem(i18n("&License"), this, 389 helpPopup->insertItem(i18n("&License"), this,
390 SLOT(showLicense_slot()), 0, 390 SLOT(showLicense_slot()), 0,
391 BUTTON_POPUP_HELP_LICENSE); 391 BUTTON_POPUP_HELP_LICENSE);
392 392
393 helpPopup->insertItem(i18n("&Faq"), this, 393 helpPopup->insertItem(i18n("&Faq"), this,
394 SLOT(faq_slot()), 0, 394 SLOT(faq_slot()), 0,
395 BUTTON_POPUP_HELP_FAQ); 395 BUTTON_POPUP_HELP_FAQ);
396 396
397 helpPopup->insertItem(i18n("&About PwManager"), this, 397 helpPopup->insertItem(i18n("&About PwManager"), this,
398 SLOT(createAboutData_slot()), 0, 398 SLOT(createAboutData_slot()), 0,
399 BUTTON_POPUP_HELP_ABOUT); 399 BUTTON_POPUP_HELP_ABOUT);
400 400
401 helpPopup->insertItem(i18n("&Sync HowTo"), this, 401 helpPopup->insertItem(i18n("&Sync HowTo"), this,
402 SLOT(syncHowTo_slot()), 0, 402 SLOT(syncHowTo_slot()), 0,
403 BUTTON_POPUP_HELP_SYNC); 403 BUTTON_POPUP_HELP_SYNC);
404 404
405 helpPopup->insertItem(i18n("&What's New"), this, 405 helpPopup->insertItem(i18n("&What's New"), this,
406 SLOT(whatsnew_slot()), 0, 406 SLOT(whatsnew_slot()), 0,
407 BUTTON_POPUP_HELP_WHATSNEW); 407 BUTTON_POPUP_HELP_WHATSNEW);
408 408
409#endif 409#endif
410 menuBar()->insertItem(i18n("&Help"), helpPopup); 410 menuBar()->insertItem(i18n("&Help"), helpPopup);
411 411
412} 412}
413 413
414void PwM::initToolbar() 414void PwM::initToolbar()
415{ 415{
416 KIconLoader* picons; 416 KIconLoader* picons;
417#ifndef PWM_EMBEDDED 417#ifndef PWM_EMBEDDED
418 KIconLoader icons; 418 KIconLoader icons;
419 picons = &icons; 419 picons = &icons;
420#else 420#else
421 picons = KGlobal::iconLoader(); 421 picons = KGlobal::iconLoader();
422#endif 422#endif
423 423
424#if 0 424#if 0
425 toolBar()->insertButton(picons->loadIcon("filenew", KIcon::Toolbar), 425 toolBar()->insertButton(picons->loadIcon("filenew", KIcon::Toolbar),
426 BUTTON_TOOL_NEW, SIGNAL(clicked(int)), this, 426 BUTTON_TOOL_NEW, SIGNAL(clicked(int)), this,
427 SLOT(new_slot()), true, i18n("New")); 427 SLOT(new_slot()), true, i18n("New"));
428#endif 428#endif
429 toolBar()->insertButton(picons->loadIcon("fileopen", KIcon::Toolbar), 429 toolBar()->insertButton(picons->loadIcon("fileopen", KIcon::Toolbar),
430 BUTTON_TOOL_OPEN, SIGNAL(clicked(int)), this, 430 BUTTON_TOOL_OPEN, SIGNAL(clicked(int)), this,
431 SLOT(open_slot()), true, i18n("Open")); 431 SLOT(open_slot()), true, i18n("Open"));
432 toolBar()->insertButton(picons->loadIcon("pencil", KIcon::Toolbar), 432 toolBar()->insertButton(picons->loadIcon("pencil", KIcon::Toolbar),
433 BUTTON_TOOL_ADD, SIGNAL(clicked(int)), this, 433 BUTTON_TOOL_ADD, SIGNAL(clicked(int)), this,
434 SLOT(addPwd_slot()), true, 434 SLOT(addPwd_slot()), true,
435 i18n("Add password")); 435 i18n("Add password"));
436 toolBar()->insertSeparator(); 436 toolBar()->insertSeparator();
437 437
438 toolBar()->insertButton(picons->loadIcon("find", KIcon::Toolbar), 438 toolBar()->insertButton(picons->loadIcon("find", KIcon::Toolbar),
439 BUTTON_TOOL_FIND, SIGNAL(clicked(int)), this, 439 BUTTON_TOOL_FIND, SIGNAL(clicked(int)), this,
440 SLOT(find_slot()), true, i18n("Find entry")); 440 SLOT(find_slot()), true, i18n("Find entry"));
441 toolBar()->insertSeparator(); 441 toolBar()->insertSeparator();
442 toolBar()->insertButton(picons->loadIcon("filesave", KIcon::Toolbar), 442 toolBar()->insertButton(picons->loadIcon("filesave", KIcon::Toolbar),
443 BUTTON_TOOL_SAVE, SIGNAL(clicked(int)), this, 443 BUTTON_TOOL_SAVE, SIGNAL(clicked(int)), this,
444 SLOT(save_slot()), true, i18n("Save")); 444 SLOT(save_slot()), true, i18n("Save"));
445#if 0 445#if 0
446 toolBar()->insertButton(picons->loadIcon("filesaveas", KIcon::Toolbar), 446 toolBar()->insertButton(picons->loadIcon("filesaveas", KIcon::Toolbar),
447 BUTTON_TOOL_SAVEAS, SIGNAL(clicked(int)), this, 447 BUTTON_TOOL_SAVEAS, SIGNAL(clicked(int)), this,
448 SLOT(saveAs_slot()), true, i18n("Save as")); 448 SLOT(saveAs_slot()), true, i18n("Save as"));
449#endif 449#endif
450 450
451 451
452#if 0 452#if 0
453 toolBar()->insertButton(picons->loadIcon("fileprint", KIcon::Toolbar), 453 toolBar()->insertButton(picons->loadIcon("fileprint", KIcon::Toolbar),
454 BUTTON_TOOL_PRINT, SIGNAL(clicked(int)), this, 454 BUTTON_TOOL_PRINT, SIGNAL(clicked(int)), this,
455 SLOT(print_slot()), true, i18n("Print...")); 455 SLOT(print_slot()), true, i18n("Print..."));
456#endif 456#endif
457 toolBar()->insertSeparator(); 457 toolBar()->insertSeparator();
458 toolBar()->insertButton(picons->loadIcon("edit", KIcon::Toolbar), 458 toolBar()->insertButton(picons->loadIcon("edit", KIcon::Toolbar),
459 BUTTON_TOOL_EDIT, SIGNAL(clicked(int)), this, 459 BUTTON_TOOL_EDIT, SIGNAL(clicked(int)), this,
460 SLOT(editPwd_slot()), true, 460 SLOT(editPwd_slot()), true,
461 i18n("Edit password")); 461 i18n("Edit password"));
462 toolBar()->insertButton(picons->loadIcon("editdelete", KIcon::Toolbar), 462 toolBar()->insertButton(picons->loadIcon("editdelete", KIcon::Toolbar),
463 BUTTON_TOOL_DEL, SIGNAL(clicked(int)), this, 463 BUTTON_TOOL_DEL, SIGNAL(clicked(int)), this,
464 SLOT(deletePwd_slot()), true, 464 SLOT(deletePwd_slot()), true,
465 i18n("Delete password")); 465 i18n("Delete password"));
466 toolBar()->insertSeparator(); 466 toolBar()->insertSeparator();
467 toolBar()->insertButton(picons->loadIcon("halfencrypted", KIcon::Toolbar), 467 toolBar()->insertButton(picons->loadIcon("halfencrypted", KIcon::Toolbar),
468 BUTTON_TOOL_LOCK, SIGNAL(clicked(int)), this, 468 BUTTON_TOOL_LOCK, SIGNAL(clicked(int)), this,
469 SLOT(lockWnd_slot()), true, 469 SLOT(lockWnd_slot()), true,
470 i18n("Lock all entries")); 470 i18n("Lock all entries"));
471 toolBar()->insertButton(picons->loadIcon("encrypted", KIcon::Toolbar), 471 toolBar()->insertButton(picons->loadIcon("encrypted", KIcon::Toolbar),
472 BUTTON_TOOL_DEEPLOCK, SIGNAL(clicked(int)), this, 472 BUTTON_TOOL_DEEPLOCK, SIGNAL(clicked(int)), this,
473 SLOT(deepLockWnd_slot()), true, 473 SLOT(deepLockWnd_slot()), true,
474 i18n("Deep-Lock all entries")); 474 i18n("Deep-Lock all entries"));
475 toolBar()->insertButton(picons->loadIcon("decrypted", KIcon::Toolbar), 475 toolBar()->insertButton(picons->loadIcon("decrypted", KIcon::Toolbar),
476 BUTTON_TOOL_UNLOCK, SIGNAL(clicked(int)), this, 476 BUTTON_TOOL_UNLOCK, SIGNAL(clicked(int)), this,
477 SLOT(unlockWnd_slot()), true, 477 SLOT(unlockWnd_slot()), true,
478 i18n("Unlock all entries")); 478 i18n("Unlock all entries"));
479} 479}
480 480
481void PwM::initMetrics() 481void PwM::initMetrics()
482{ 482{
483 QSize s = conf()->confWndMainWndSize(); 483 QSize s = conf()->confWndMainWndSize();
484 if (s.isValid()) 484 if (s.isValid())
485 resize(s); 485 resize(s);
486 else 486 else
487 resize(DEFAULT_SIZE); 487 resize(DEFAULT_SIZE);
488} 488}
489 489
490void PwM::updateCaption() 490void PwM::updateCaption()
491{ 491{
492 setPlainCaption(curDoc()->getTitle() + " - " PROG_NAME " " PACKAGE_VER); 492 QString s = curDoc()->getTitle();
493 int maxlen = 50;
494 if ( QApplication::desktop()->width() < 640 ) {
495 if ( QApplication::desktop()->width() < 320 )
496 maxlen = 22;
497 else
498 maxlen = 35;
499 }
500 if ( s.length() > maxlen ) {
501 s = "..."+s.right(maxlen -3);
502 }
503 setPlainCaption( s );
493} 504}
494 505
495void PwM::hideEvent(QHideEvent *) 506void PwM::hideEvent(QHideEvent *)
496{ 507{
497 if (isMinimized()) { 508 if (isMinimized()) {
498 if (init->tray()) { 509 if (init->tray()) {
499 forceMinimizeToTray = true; 510 forceMinimizeToTray = true;
500 close(); 511 close();
501 } 512 }
502 int mmlock = conf()->confGlobMinimizeLock(); 513 int mmlock = conf()->confGlobMinimizeLock();
503 switch (mmlock) { 514 switch (mmlock) {
504 case 0: // don't lock anything 515 case 0: // don't lock anything
505 break; 516 break;
506 case 1: {// normal lock 517 case 1: {// normal lock
507 curDoc()->lockAll(true); 518 curDoc()->lockAll(true);
508 break; 519 break;
509 } case 2: {// deep-lock 520 } case 2: {// deep-lock
510 curDoc()->deepLock(); 521 curDoc()->deepLock();
511 break; 522 break;
512 } default: 523 } default:
513 WARN(); 524 WARN();
514 } 525 }
515 } 526 }
516} 527}
517 528
518void PwM::setVirgin(bool v) 529void PwM::setVirgin(bool v)
519{ 530{
520 if (virgin == v) 531 if (virgin == v)
521 return; 532 return;
522 virgin = v; 533 virgin = v;
523 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVE, !v); 534 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVE, !v);
524 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVEAS, !v); 535 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVEAS, !v);
525 filePopup->setItemEnabled(BUTTON_POPUP_FILE_EXPORT, !v); 536 filePopup->setItemEnabled(BUTTON_POPUP_FILE_EXPORT, !v);
526 filePopup->setItemEnabled(BUTTON_POPUP_FILE_PRINT, !v); 537 filePopup->setItemEnabled(BUTTON_POPUP_FILE_PRINT, !v);
527 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_EDIT, !v); 538 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_EDIT, !v);
528 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_DEL, !v); 539 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_DEL, !v);
529 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, !v); 540 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, !v);
530 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_LOCK, !v); 541 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_LOCK, !v);
531 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_DEEPLOCK, !v); 542 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_DEEPLOCK, !v);
532 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_UNLOCK, !v); 543 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_UNLOCK, !v);
533 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_FIND, !v); 544 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_FIND, !v);
534 toolBar()->setItemEnabled(BUTTON_TOOL_SAVE, !v); 545 toolBar()->setItemEnabled(BUTTON_TOOL_SAVE, !v);
535 toolBar()->setItemEnabled(BUTTON_TOOL_SAVEAS, !v); 546 toolBar()->setItemEnabled(BUTTON_TOOL_SAVEAS, !v);
536 toolBar()->setItemEnabled(BUTTON_TOOL_PRINT, !v); 547 toolBar()->setItemEnabled(BUTTON_TOOL_PRINT, !v);
537 toolBar()->setItemEnabled(BUTTON_TOOL_EDIT, !v); 548 toolBar()->setItemEnabled(BUTTON_TOOL_EDIT, !v);
538 toolBar()->setItemEnabled(BUTTON_TOOL_DEL, !v); 549 toolBar()->setItemEnabled(BUTTON_TOOL_DEL, !v);
539 toolBar()->setItemEnabled(BUTTON_TOOL_LOCK, !v); 550 toolBar()->setItemEnabled(BUTTON_TOOL_LOCK, !v);
540 toolBar()->setItemEnabled(BUTTON_TOOL_DEEPLOCK, !v); 551 toolBar()->setItemEnabled(BUTTON_TOOL_DEEPLOCK, !v);
541 toolBar()->setItemEnabled(BUTTON_TOOL_UNLOCK, !v); 552 toolBar()->setItemEnabled(BUTTON_TOOL_UNLOCK, !v);
542 toolBar()->setItemEnabled(BUTTON_TOOL_FIND, !v); 553 toolBar()->setItemEnabled(BUTTON_TOOL_FIND, !v);
543} 554}
544 555
545void PwM::new_slot() 556void PwM::new_slot()
546{ 557{
547 init->createMainWnd(); 558 init->createMainWnd();
548} 559}
549 560
550//US ENH 561//US ENH
551void PwM::open_slot() 562void PwM::open_slot()
552{ 563{
553 open_slot(""); 564 open_slot("");
554} 565}
555 566
556void PwM::open_slot(QString fn) 567void PwM::open_slot(QString fn)
557{ 568{
558 openDoc(fn); 569 openDoc(fn);
559} 570}
560 571
561PwMDoc * PwM::openDoc(QString filename, bool openDeepLocked) 572PwMDoc * PwM::openDoc(QString filename, bool openDeepLocked)
562{ 573{
563 if (!isVirgin()) { 574 if (!isVirgin()) {
564 // open the document in a new window. 575 // open the document in a new window.
565 PwM *newInstance = init->createMainWnd(); 576 PwM *newInstance = init->createMainWnd();
566 PwMDoc *newDoc = newInstance->openDoc(filename, openDeepLocked); 577 PwMDoc *newDoc = newInstance->openDoc(filename, openDeepLocked);
567 if (!newDoc) { 578 if (!newDoc) {
568 newInstance->setForceQuit(true); 579 newInstance->setForceQuit(true);
569 delete_and_null(newInstance); 580 delete_and_null(newInstance);
570 } 581 }
571 return newDoc; 582 return newDoc;
572 } 583 }
573 584
574 if (!curDoc()->openDocUi(curDoc(), filename, openDeepLocked)) 585 if (!curDoc()->openDocUi(curDoc(), filename, openDeepLocked))
575 return 0; 586 return 0;
576 showStatMsg(i18n("Successfully opened file.")); 587 showStatMsg(i18n("Successfully opened file."));
577 updateCaption(); 588 updateCaption();
578 setVirgin(false); 589 setVirgin(false);
579 return curDoc(); 590 return curDoc();
580} 591}
581 592
582PwMView * PwM::makeNewListView(PwMDoc *doc) 593PwMView * PwM::makeNewListView(PwMDoc *doc)
583{ 594{
584 PwMView *ret = new PwMView(this, this, doc); 595 PwMView *ret = new PwMView(this, this, doc);
585 ret->setFont(conf()->confGlobEntryFont()); 596 ret->setFont(conf()->confGlobEntryFont());
586 ret->show(); 597 ret->show();
587 return ret; 598 return ret;
588} 599}
589 600
590void PwM::close_slot() 601void PwM::close_slot()
591{ 602{
592 close(); 603 close();
593} 604}
594 605
595void PwM::quitButton_slot() 606void PwM::quitButton_slot()
596{ 607{
597 init->shutdownApp(0); 608 init->shutdownApp(0);
598} 609}
599 610
600void PwM::save_slot() 611void PwM::save_slot()
601{ 612{
602 save(); 613 save();
603} 614}
604 615
605bool PwM::save() 616bool PwM::save()
606{ 617{
607 if (!curDoc()->saveDocUi(curDoc())) 618 if (!curDoc()->saveDocUi(curDoc()))
608 return false; 619 return false;
609 showStatMsg(i18n("Successfully saved data.")); 620 showStatMsg(i18n("Successfully saved data."));
610 updateCaption(); 621 updateCaption();
611 return true; 622 return true;
612} 623}
613 624
614void PwM::saveAs_slot() 625void PwM::saveAs_slot()
615{ 626{
616 saveAs(); 627 saveAs();
617} 628}
618 629
619bool PwM::saveAs() 630bool PwM::saveAs()
620{ 631{
621 if (!curDoc()->saveAsDocUi(curDoc())) 632 if (!curDoc()->saveAsDocUi(curDoc()))
622 return false; 633 return false;
623 showStatMsg(i18n("Successfully saved data.")); 634 showStatMsg(i18n("Successfully saved data."));
624 updateCaption(); 635 updateCaption();
625 return true; 636 return true;
626} 637}
627 638
628//US ENH : changed code to run with older MOC 639//US ENH : changed code to run with older MOC
629void PwM::addPwd_slot() 640void PwM::addPwd_slot()
630{ 641{
631 addPwd_slot1(0, 0); 642 addPwd_slot1(0, 0);
632} 643}
633 644
634void PwM::addPwd_slot1(QString *pw, PwMDoc *_doc) 645void PwM::addPwd_slot1(QString *pw, PwMDoc *_doc)
635{ 646{
636 PwMDoc *doc; 647 PwMDoc *doc;
637 if (_doc) { 648 if (_doc) {
638 doc = _doc; 649 doc = _doc;
639 } else { 650 } else {
640 doc = curDoc(); 651 doc = curDoc();
641 } 652 }
642 PWM_ASSERT(doc); 653 PWM_ASSERT(doc);
643 doc->timer()->getLock(DocTimer::id_autoLockTimer); 654 doc->timer()->getLock(DocTimer::id_autoLockTimer);
644#ifndef PWM_EMBEDDED 655#ifndef PWM_EMBEDDED
645 AddEntryWndImpl w; 656 AddEntryWndImpl w;
646#else 657#else
647 AddEntryWndImpl w(doc, this, "addentrywndimpl"); 658 AddEntryWndImpl w(doc, this, "addentrywndimpl");
648#endif 659#endif
649 w.setCaption( i18n ("Add new password") ); 660 w.setCaption( i18n ("Add new password") );
650 vector<string> catList; 661 vector<string> catList;
651 doc->getCategoryList(&catList); 662 doc->getCategoryList(&catList);
652 unsigned i, size = catList.size(); 663 unsigned i, size = catList.size();
653 for (i = 0; i < size; ++i) { 664 for (i = 0; i < size; ++i) {
654 w.addCategory(catList[i].c_str()); 665 w.addCategory(catList[i].c_str());
655 } 666 }
656 w.setCurrCategory(view->getCurrentCategory()); 667 w.setCurrCategory(view->getCurrentCategory());
657 if (pw) 668 if (pw)
658 w.pwLineEdit->setText(*pw); 669 w.pwLineEdit->setText(*pw);
659 670
660 tryAgain: 671 tryAgain:
661 w.descLineEdit->setFocus(); 672 w.descLineEdit->setFocus();
662 if (w.exec() == 1) 673 if (w.exec() == 1)
663 { 674 {
664 PwMDataItem d; 675 PwMDataItem d;
665 676
666 //US BUG: to initialize all values of curEntr with meaningfulldata, 677 //US BUG: to initialize all values of curEntr with meaningfulldata,
667 // we call clear on it. Reason: Metadata will be uninitialized otherwise. 678 // we call clear on it. Reason: Metadata will be uninitialized otherwise.
668 // another option would be to create a constructor for PwMDataItem 679 // another option would be to create a constructor for PwMDataItem
669 d.clear(true); 680 d.clear(true);
670 681
671 d.desc = w.getDescription().latin1(); 682 d.desc = w.getDescription().latin1();
672 d.name = w.getUsername().latin1(); 683 d.name = w.getUsername().latin1();
673 d.pw = w.getPassword().latin1(); 684 d.pw = w.getPassword().latin1();
674 d.comment = w.getComment().latin1(); 685 d.comment = w.getComment().latin1();
675 d.url = w.getUrl().latin1(); 686 d.url = w.getUrl().latin1();
676 d.launcher = w.getLauncher().latin1(); 687 d.launcher = w.getLauncher().latin1();
677 PwMerror ret = doc->addEntry(w.getCategory(), &d); 688 PwMerror ret = doc->addEntry(w.getCategory(), &d);
678 if (ret == e_entryExists) { 689 if (ret == e_entryExists) {
679 KMessageBox::error(this, 690 KMessageBox::error(this,
680 i18n 691 i18n
681 ("An entry with this \"Description\",\n" 692 ("An entry with this \"Description\",\n"
682 "does already exist.\n" 693 "does already exist.\n"
683 "Please select another description."), 694 "Please select another description."),
684 i18n("entry already exists.")); 695 i18n("entry already exists."));
685 goto tryAgain; 696 goto tryAgain;
686 } else if (ret == e_maxAllowedEntr) { 697 } else if (ret == e_maxAllowedEntr) {
687 KMessageBox::error(this, i18n("The maximum possible number of\nentries" 698 KMessageBox::error(this, i18n("The maximum possible number of\nentries"
688 "has been reached.\nYou can't add more entries."), 699 "has been reached.\nYou can't add more entries."),
689 i18n("maximum number of entries")); 700 i18n("maximum number of entries"));
690 doc->timer()->putLock(DocTimer::id_autoLockTimer); 701 doc->timer()->putLock(DocTimer::id_autoLockTimer);
691 return; 702 return;
692 } 703 }
693 } 704 }
694 setVirgin(false); 705 setVirgin(false);
695 doc->timer()->putLock(DocTimer::id_autoLockTimer); 706 doc->timer()->putLock(DocTimer::id_autoLockTimer);
696} 707}
697 708
698//US ENH : changed code to run with older MOC 709//US ENH : changed code to run with older MOC
699void PwM::editPwd_slot() 710void PwM::editPwd_slot()
700{ 711{
701 editPwd_slot3(0,0,0); 712 editPwd_slot3(0,0,0);
702} 713}
703 714
704void PwM::editPwd_slot1(const QString *category) 715void PwM::editPwd_slot1(const QString *category)
705{ 716{
706 editPwd_slot3(category, 0, 0); 717 editPwd_slot3(category, 0, 0);
707} 718}
708 719
709void PwM::editPwd_slot3(const QString *category, const int *index, 720void PwM::editPwd_slot3(const QString *category, const int *index,
710 PwMDoc *_doc) 721 PwMDoc *_doc)
711{ 722{
712 PwMDoc *doc; 723 PwMDoc *doc;
713 if (_doc) { 724 if (_doc) {
714 doc = _doc; 725 doc = _doc;
715 } else { 726 } else {
716 doc = curDoc(); 727 doc = curDoc();
717 } 728 }
718 PWM_ASSERT(doc); 729 PWM_ASSERT(doc);
719 if (doc->isDocEmpty()) 730 if (doc->isDocEmpty())
720 return; 731 return;
721 if (doc->isDeepLocked()) 732 if (doc->isDeepLocked())
722 return; 733 return;
723 doc->timer()->getLock(DocTimer::id_autoLockTimer); 734 doc->timer()->getLock(DocTimer::id_autoLockTimer);
724 unsigned int curEntryIndex; 735 unsigned int curEntryIndex;
725 if (index) { 736 if (index) {
726 curEntryIndex = *index; 737 curEntryIndex = *index;
727 } else { 738 } else {
728 if (!(view->getCurEntryIndex(&curEntryIndex))) { 739 if (!(view->getCurEntryIndex(&curEntryIndex))) {
729 qDebug("couldn't get index. Maybe we have a binary entry here. "); 740 qDebug("couldn't get index. Maybe we have a binary entry here. ");
730 printDebug("couldn't get index. Maybe we have a binary entry here."); 741 printDebug("couldn't get index. Maybe we have a binary entry here.");
731 doc->timer()->putLock(DocTimer::id_autoLockTimer); 742 doc->timer()->putLock(DocTimer::id_autoLockTimer);
732 return; 743 return;
733 } 744 }
734 } 745 }
735 QString curCategory; 746 QString curCategory;
736 if (category) { 747 if (category) {
737 curCategory = *category; 748 curCategory = *category;
738 } else { 749 } else {
739 curCategory = view->getCurrentCategory(); 750 curCategory = view->getCurrentCategory();
740 } 751 }
741 PwMDataItem currItem; 752 PwMDataItem currItem;
742 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) { 753 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) {
743 doc->timer()->putLock(DocTimer::id_autoLockTimer); 754 doc->timer()->putLock(DocTimer::id_autoLockTimer);
744 return; 755 return;
745 } 756 }
746 BUG_ON(currItem.binary); 757 BUG_ON(currItem.binary);
747 AddEntryWndImpl w(doc); 758 AddEntryWndImpl w(doc);
748 w.setCaption( i18n ("Edit password") ); 759 w.setCaption( i18n ("Edit password") );
749 vector<string> catList; 760 vector<string> catList;
750 doc->getCategoryList(&catList); 761 doc->getCategoryList(&catList);
751 unsigned i, size = catList.size(); 762 unsigned i, size = catList.size();
752 for (i = 0; i < size; ++i) { 763 for (i = 0; i < size; ++i) {
753 w.addCategory(catList[i].c_str()); 764 w.addCategory(catList[i].c_str());
754 } 765 }
755 w.setCurrCategory(curCategory); 766 w.setCurrCategory(curCategory);
756 w.setDescription(currItem.desc.c_str()); 767 w.setDescription(currItem.desc.c_str());
757 w.setUsername(currItem.name.c_str()); 768 w.setUsername(currItem.name.c_str());
758 w.setPassword(currItem.pw.c_str()); 769 w.setPassword(currItem.pw.c_str());
759 w.setUrl(currItem.url.c_str()); 770 w.setUrl(currItem.url.c_str());
760 w.setLauncher(currItem.launcher.c_str()); 771 w.setLauncher(currItem.launcher.c_str());
761 w.setComment(currItem.comment.c_str()); 772 w.setComment(currItem.comment.c_str());
762 w.descLineEdit->setFocus(); 773 w.descLineEdit->setFocus();
763 if (w.exec() == 1) { 774 if (w.exec() == 1) {
764 currItem.desc = w.getDescription().latin1(); 775 currItem.desc = w.getDescription().latin1();
765 currItem.name = w.getUsername().latin1(); 776 currItem.name = w.getUsername().latin1();
766 currItem.pw = w.getPassword().latin1(); 777 currItem.pw = w.getPassword().latin1();
767 currItem.comment = w.getComment().latin1(); 778 currItem.comment = w.getComment().latin1();
768 currItem.url = w.getUrl().latin1(); 779 currItem.url = w.getUrl().latin1();
769 currItem.launcher = w.getLauncher().latin1(); 780 currItem.launcher = w.getLauncher().latin1();
770 if (!doc->editEntry(curCategory, w.getCategory(), 781 if (!doc->editEntry(curCategory, w.getCategory(),
771 curEntryIndex, &currItem)) { 782 curEntryIndex, &currItem)) {
772 KMessageBox::error(this, 783 KMessageBox::error(this,
773 i18n("Couldn't edit the entry.\n" 784 i18n("Couldn't edit the entry.\n"
774 "Maybe you changed the category and\n" 785 "Maybe you changed the category and\n"
775 "this entry is already present\nin the new " 786 "this entry is already present\nin the new "
776 "category?"), 787 "category?"),
777 i18n("couldn't edit entry.")); 788 i18n("couldn't edit entry."));
778 doc->timer()->putLock(DocTimer::id_autoLockTimer); 789 doc->timer()->putLock(DocTimer::id_autoLockTimer);
779 return; 790 return;
780 } 791 }
781 } 792 }
782 doc->timer()->putLock(DocTimer::id_autoLockTimer); 793 doc->timer()->putLock(DocTimer::id_autoLockTimer);
783} 794}
784 795
785void PwM::deletePwd_slot() 796void PwM::deletePwd_slot()
786{ 797{
787 PWM_ASSERT(curDoc()); 798 PWM_ASSERT(curDoc());
788 if (curDoc()->isDocEmpty()) 799 if (curDoc()->isDocEmpty())
789 return; 800 return;
790 if (curDoc()->isDeepLocked()) 801 if (curDoc()->isDeepLocked())
791 return; 802 return;
792 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 803 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
793 unsigned int curEntryIndex = 0; 804 unsigned int curEntryIndex = 0;
794 if (!(view->getCurEntryIndex(&curEntryIndex))) { 805 if (!(view->getCurEntryIndex(&curEntryIndex))) {
795 printDebug("couldn't get index"); 806 printDebug("couldn't get index");
796 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 807 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
797 return; 808 return;
798 } 809 }
799 810
800 PwMDataItem currItem; 811 PwMDataItem currItem;
801 QString curCategory = view->getCurrentCategory(); 812 QString curCategory = view->getCurrentCategory();
802 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) { 813 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) {
803 printDebug("couldn't get entry"); 814 printDebug("couldn't get entry");
804 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 815 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
805 return; 816 return;
806 } 817 }
807 if (KMessageBox:: 818 if (KMessageBox::
808 questionYesNo(this, 819 questionYesNo(this,
809 i18n 820 i18n
810 ("Do you really want to delete\nthe selected entry") + 821 ("Do you really want to delete\nthe selected entry") +
811 " \n\"" + QString(currItem.desc.c_str()) 822 " \n\"" + QString(currItem.desc.c_str())
812 + "\" ?", i18n("delete?")) 823 + "\" ?", i18n("delete?"))
813 == KMessageBox::Yes) { 824 == KMessageBox::Yes) {
814 825
815 curDoc()->delEntry(curCategory, curEntryIndex); 826 curDoc()->delEntry(curCategory, curEntryIndex);
816 } 827 }
817 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 828 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
818} 829}
819 830
820void PwM::changeMasterPwd_slot() 831void PwM::changeMasterPwd_slot()
821{ 832{
822 PWM_ASSERT(curDoc()); 833 PWM_ASSERT(curDoc());
823 curDoc()->changeCurrentPw(); 834 curDoc()->changeCurrentPw();
824} 835}
825 836
826void PwM::lockWnd_slot() 837void PwM::lockWnd_slot()
827{ 838{
828 PWM_ASSERT(curDoc()); 839 PWM_ASSERT(curDoc());
829 curDoc()->lockAll(true); 840 curDoc()->lockAll(true);
830} 841}
831 842
832void PwM::deepLockWnd_slot() 843void PwM::deepLockWnd_slot()
833{ 844{
834 PWM_ASSERT(curDoc()); 845 PWM_ASSERT(curDoc());
835 curDoc()->deepLock(); 846 curDoc()->deepLock();
836} 847}
837 848
838void PwM::unlockWnd_slot() 849void PwM::unlockWnd_slot()
839{ 850{
840 PWM_ASSERT(curDoc()); 851 PWM_ASSERT(curDoc());
841 curDoc()->lockAll(false); 852 curDoc()->lockAll(false);
842} 853}
843 854
844void PwM::config_slot() 855void PwM::config_slot()
845{ 856{
846 int oldStyle = conf()->confWndMainViewStyle(); 857 int oldStyle = conf()->confWndMainViewStyle();
847#ifdef PWM_EMBEDDED 858#ifdef PWM_EMBEDDED
848 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"pwmconfigdialog", true ); 859 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"pwmconfigdialog", true );
849 860
850 KCMPwmConfig* pwmcfg = new KCMPwmConfig( ConfigureDialog->getNewVBoxPage(i18n( "PwManager")) , "KCMPwmConfig" ); 861 KCMPwmConfig* pwmcfg = new KCMPwmConfig( ConfigureDialog->getNewVBoxPage(i18n( "PwManager")) , "KCMPwmConfig" );
851 ConfigureDialog->addModule(pwmcfg ); 862 ConfigureDialog->addModule(pwmcfg );
852 863
853 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 864 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
854 ConfigureDialog->addModule(kdelibcfg ); 865 ConfigureDialog->addModule(kdelibcfg );
855 866
856#ifndef DESKTOP_VERSION 867#ifndef DESKTOP_VERSION
857 ConfigureDialog->showMaximized(); 868 ConfigureDialog->showMaximized();
858#endif 869#endif
859 if ( ConfigureDialog->exec() ) 870 if ( ConfigureDialog->exec() )
860 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 871 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
861 delete ConfigureDialog; 872 delete ConfigureDialog;
862 873
863#else //PWM_EMBEDDED 874#else //PWM_EMBEDDED
864 // display the configuration window (modal mode) 875 // display the configuration window (modal mode)
865 if (!conf()->showConfWnd(this)) 876 if (!conf()->showConfWnd(this))
866 return; 877 return;
867#endif 878#endif
868 879
869 int newStyle = conf()->confWndMainViewStyle(); 880 int newStyle = conf()->confWndMainViewStyle();
870 // reinitialize tray 881 // reinitialize tray
871 init->initTray(); 882 init->initTray();
872 // reinitialize KWallet emulation 883 // reinitialize KWallet emulation
873 init->initKWalletEmu(); 884 init->initKWalletEmu();
874 885
875 PwMDocList *_dl = PwMDoc::getOpenDocList(); 886 PwMDocList *_dl = PwMDoc::getOpenDocList();
876 const vector<PwMDocList::listItem> *dl = _dl->getList(); 887 const vector<PwMDocList::listItem> *dl = _dl->getList();
877 vector<PwMDocList::listItem>::const_iterator i = dl->begin(), 888 vector<PwMDocList::listItem>::const_iterator i = dl->begin(),
878 end = dl->end(); 889 end = dl->end();
879 PwMDoc *doc; 890 PwMDoc *doc;
880 while (i != end) { 891 while (i != end) {
881 doc = (*i).doc; 892 doc = (*i).doc;
882 // unlock-without-mpw timeout 893 // unlock-without-mpw timeout
883 doc->timer()->start(DocTimer::id_mpwTimer); 894 doc->timer()->start(DocTimer::id_mpwTimer);
884 // auto-lock timeout 895 // auto-lock timeout
885 doc->timer()->start(DocTimer::id_autoLockTimer); 896 doc->timer()->start(DocTimer::id_autoLockTimer);
886 ++i; 897 ++i;
887 } 898 }
888 899
889 const QValueList<PwM *> *ml = init->mainWndList(); 900 const QValueList<PwM *> *ml = init->mainWndList();
890#ifndef PWM_EMBEDDED 901#ifndef PWM_EMBEDDED
891 QValueList<PwM *>::const_iterator i2 = ml->begin(), 902 QValueList<PwM *>::const_iterator i2 = ml->begin(),
892 end2 = ml->end(); 903 end2 = ml->end();
893#else 904#else
894 QValueList<PwM *>::ConstIterator i2 = ml->begin(), 905 QValueList<PwM *>::ConstIterator i2 = ml->begin(),
895 end2 = ml->end(); 906 end2 = ml->end();
896#endif 907#endif
897 PwM *pwm; 908 PwM *pwm;
898 while (i2 != end2) { 909 while (i2 != end2) {
899 pwm = *i2; 910 pwm = *i2;
900 // reinitialize the window style. 911 // reinitialize the window style.
901 if (oldStyle != newStyle) 912 if (oldStyle != newStyle)
902 pwm->curView()->initStyle(newStyle); 913 pwm->curView()->initStyle(newStyle);
903 // set the new font 914 // set the new font
904 pwm->curView()->setFont(conf()->confGlobEntryFont()); 915 pwm->curView()->setFont(conf()->confGlobEntryFont());
905 ++i2; 916 ++i2;
906 } 917 }
907} 918}
908 919
909void PwM::activateMpButton(bool activate) 920void PwM::activateMpButton(bool activate)
910{ 921{
911 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate); 922 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate);
912} 923}
913 924
914void PwM::closeEvent(QCloseEvent *e) 925void PwM::closeEvent(QCloseEvent *e)
915{ 926{
916 //qDebug("PwM::closeEvent "); 927 //qDebug("PwM::closeEvent ");
917 emit closed( this ); 928 emit closed( this );
918 return; 929 return;
919 e->accept(); 930 e->accept();
920} 931}
921 932
922void PwM::docClosed(PwMDoc *doc) 933void PwM::docClosed(PwMDoc *doc)
923{ 934{
924 //qDebug("PwM::docClosed "); 935 //qDebug("PwM::docClosed ");
925 PARAM_UNUSED(doc); 936 PARAM_UNUSED(doc);
926 PWM_ASSERT(doc == curDoc()); 937 PWM_ASSERT(doc == curDoc());
927 close(); 938 close();
928} 939}
929 940
930void PwM::find_slot() 941void PwM::find_slot()
931{ 942{
932 PWM_ASSERT(curDoc()); 943 PWM_ASSERT(curDoc());
933 if (curDoc()->isDocEmpty()) 944 if (curDoc()->isDocEmpty())
934 return; 945 return;
935 if (curDoc()->isDeepLocked()) 946 if (curDoc()->isDeepLocked())
936 return; 947 return;
937 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 948 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
938 FindWndImpl findWnd(view); 949 FindWndImpl findWnd(view);
939 findWnd.exec(); 950 findWnd.exec();
940 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 951 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
941} 952}
942 953
943void PwM::exportToText() 954void PwM::exportToText()
944{ 955{
945 PWM_ASSERT(curDoc()); 956 PWM_ASSERT(curDoc());
946 if (curDoc()->isDocEmpty()) { 957 if (curDoc()->isDocEmpty()) {
947 KMessageBox::information(this, 958 KMessageBox::information(this,
948 i18n 959 i18n
949 ("Sorry, there's nothing to export.\n" 960 ("Sorry, there's nothing to export.\n"
950 "Please first add some passwords."), 961 "Please first add some passwords."),
951 i18n("nothing to do")); 962 i18n("nothing to do"));
952 return; 963 return;
953 } 964 }
954 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 965 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
955 QString fn(KFileDialog::getSaveFileName(QString::null, 966 QString fn(KFileDialog::getSaveFileName(QString::null,
956 i18n("*|plain-text file"), 967 i18n("*|plain-text file"),
957 this)); 968 this));
958 if (fn == "") { 969 if (fn == "") {
959 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 970 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
960 return; 971 return;
961 } 972 }
962 973
963 PwMerror ret = curDoc()->exportToText(&fn); 974 PwMerror ret = curDoc()->exportToText(&fn);
964 if (ret != e_success) { 975 if (ret != e_success) {
965 KMessageBox::error(this, 976 KMessageBox::error(this,
966 i18n("Error: Couldn't write to file.\n" 977 i18n("Error: Couldn't write to file.\n"
967 "Please check if you have permission to write\n" 978 "Please check if you have permission to write\n"
968 "to the file in that directory."), 979 "to the file in that directory."),
969 i18n("error while writing")); 980 i18n("error while writing"));
970 } else 981 } else
971 showStatMsg(i18n("Successfully exported data.")); 982 showStatMsg(i18n("Successfully exported data."));
972 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 983 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
973} 984}
974 985
975bool PwM::importFromText() 986bool PwM::importFromText()
976{ 987{
977 if (!isVirgin()) { 988 if (!isVirgin()) {
978 if (KMessageBox::questionYesNo(this, 989 if (KMessageBox::questionYesNo(this,
979 i18n("Do you want to import the data\n" 990 i18n("Do you want to import the data\n"
980 "into the current document? (If you\n" 991 "into the current document? (If you\n"
981 "select \"no\", a new document will be\n" 992 "select \"no\", a new document will be\n"
982 "opened.)"), 993 "opened.)"),
983 i18n("import into this document?")) 994 i18n("import into this document?"))
984 == KMessageBox::No) { 995 == KMessageBox::No) {
985 // import the data to a new window. 996 // import the data to a new window.
986 PwM *newInstance = init->createMainWnd(); 997 PwM *newInstance = init->createMainWnd();
987 bool ok = newInstance->importFromText(); 998 bool ok = newInstance->importFromText();
988 if (!ok) { 999 if (!ok) {
989 newInstance->setForceQuit(true); 1000 newInstance->setForceQuit(true);
990 delete_and_null(newInstance); 1001 delete_and_null(newInstance);
991 } 1002 }
992 return ok; 1003 return ok;
993 } 1004 }
994 } 1005 }
995 1006
996 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1007 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
997 PwMerror ret; 1008 PwMerror ret;
998 QString path(KFileDialog::getOpenFileName(QString::null, 1009 QString path(KFileDialog::getOpenFileName(QString::null,
999 i18n("*|PWM-exported text file"), 1010 i18n("*|PWM-exported text file"),
1000 this)); 1011 this));
1001 if (path == "") 1012 if (path == "")
1002 goto cancelImport; 1013 goto cancelImport;
1003 1014
1004 ret = curDoc()->importFromText(&path, 0); 1015 ret = curDoc()->importFromText(&path, 0);
1005 if (ret == e_fileFormat) { 1016 if (ret == e_fileFormat) {
1006 KMessageBox::error(this, 1017 KMessageBox::error(this,
1007 i18n("Could not read file-format.\n" 1018 i18n("Could not read file-format.\n"
1008 "This seems to be _not_ a valid file\n" 1019 "This seems to be _not_ a valid file\n"
1009 "exported by PwM."), 1020 "exported by PwM."),
1010 i18n("invalid file-format")); 1021 i18n("invalid file-format"));
1011 goto cancelImport; 1022 goto cancelImport;
1012 } else if (ret == e_invalidArg) { 1023 } else if (ret == e_invalidArg) {
1013 BUG(); 1024 BUG();
1014 goto cancelImport; 1025 goto cancelImport;
1015 } else if (ret != e_success) { 1026 } else if (ret != e_success) {
1016 KMessageBox::error(this, 1027 KMessageBox::error(this,
1017 i18n("Could not import file!\n" 1028 i18n("Could not import file!\n"
1018 "Do you have permission to read this file?\n" 1029 "Do you have permission to read this file?\n"
1019 "Do you have enough free memory?"), 1030 "Do you have enough free memory?"),
1020 i18n("import failed")); 1031 i18n("import failed"));
1021 goto cancelImport; 1032 goto cancelImport;
1022 } 1033 }
1023 setVirgin(false); 1034 setVirgin(false);
1024 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1035 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1025 return true; 1036 return true;
1026 1037
1027cancelImport: 1038cancelImport:
1028 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1039 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1029 return false; 1040 return false;
1030} 1041}
1031 1042
1032void PwM::exportToGpasman() 1043void PwM::exportToGpasman()
1033{ 1044{
1034 PWM_ASSERT(curDoc()); 1045 PWM_ASSERT(curDoc());
1035 if (curDoc()->isDocEmpty()) { 1046 if (curDoc()->isDocEmpty()) {
1036 KMessageBox::information(this, 1047 KMessageBox::information(this,
1037 i18n 1048 i18n
1038 ("Sorry, there's nothing to export.\n" 1049 ("Sorry, there's nothing to export.\n"
1039 "Please first add some passwords."), 1050 "Please first add some passwords."),
1040 i18n("nothing to do")); 1051 i18n("nothing to do"));
1041 return; 1052 return;
1042 } 1053 }
1043 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1054 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1044 QString fn(KFileDialog::getSaveFileName(QString::null, 1055 QString fn(KFileDialog::getSaveFileName(QString::null,
1045 i18n("*|Gpasman or Kpasman file"), 1056 i18n("*|Gpasman or Kpasman file"),
1046 this)); 1057 this));
1047 if (fn == "") { 1058 if (fn == "") {
1048 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1059 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1049 return; 1060 return;
1050 } 1061 }
1051 1062
1052 PwMerror ret = curDoc()->exportToGpasman(&fn); 1063 PwMerror ret = curDoc()->exportToGpasman(&fn);
1053 if (ret != e_success) { 1064 if (ret != e_success) {
1054 if (ret == e_noPw) { 1065 if (ret == e_noPw) {
1055 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1066 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1056 return; 1067 return;
1057 } 1068 }
1058 KMessageBox::error(this, 1069 KMessageBox::error(this,
1059 i18n("Error: Couldn't write to file.\n" 1070 i18n("Error: Couldn't write to file.\n"
1060 "Please check if you have permission to write " 1071 "Please check if you have permission to write "
1061 "to the file in that directory."), 1072 "to the file in that directory."),
1062 i18n("error while writing")); 1073 i18n("error while writing"));
1063 } else 1074 } else
1064 showStatMsg(i18n("Successfully exported data.")); 1075 showStatMsg(i18n("Successfully exported data."));
1065 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1076 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1066} 1077}
1067 1078
1068 1079
1069 1080
1070void PwM::exportToCsv() 1081void PwM::exportToCsv()
1071{ 1082{
1072 PWM_ASSERT(curDoc()); 1083 PWM_ASSERT(curDoc());
1073 if (curDoc()->isDocEmpty()) { 1084 if (curDoc()->isDocEmpty()) {
1074 KMessageBox::information(this, 1085 KMessageBox::information(this,
1075 i18n 1086 i18n
1076 ("Sorry, there is nothing to export;\n" 1087 ("Sorry, there is nothing to export;\n"
1077 "please add some passwords first."), 1088 "please add some passwords first."),
1078 i18n("Nothing to Do")); 1089 i18n("Nothing to Do"));
1079 return; 1090 return;
1080 } 1091 }
1081 1092
1082 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1093 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1083 QString fn(KFileDialog::getSaveFileName("*.csv", i18n("*|CSV Text File"), this)); 1094 QString fn(KFileDialog::getSaveFileName("*.csv", i18n("*|CSV Text File"), this));
1084 if (fn.isEmpty()) { 1095 if (fn.isEmpty()) {
1085 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1096 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1086 return; 1097 return;
1087 } 1098 }
1088 1099
1089 Csv csv(this); 1100 Csv csv(this);
1090 if (!csv.exportData(fn, curDoc())) { 1101 if (!csv.exportData(fn, curDoc())) {
1091 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1102 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1092 showStatMsg(i18n("CSV file export failed.")); 1103 showStatMsg(i18n("CSV file export failed."));
1093 return; 1104 return;
1094 } 1105 }
1095 showStatMsg(i18n("Successfully exported data.")); 1106 showStatMsg(i18n("Successfully exported data."));
1096 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1107 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1097} 1108}
1098 1109
1099bool PwM::importCsv() 1110bool PwM::importCsv()
1100{ 1111{
1101 Csv csv(this); 1112 Csv csv(this);
1102 if (!isVirgin()) { 1113 if (!isVirgin()) {
1103 if (KMessageBox::questionYesNo(this, 1114 if (KMessageBox::questionYesNo(this,
1104 i18n("Do you want to import the data\n" 1115 i18n("Do you want to import the data\n"
1105 "into the current document? (If you\n" 1116 "into the current document? (If you\n"
1106 "select \"no\", a new document will be\n" 1117 "select \"no\", a new document will be\n"
1107 "opened.)"), 1118 "opened.)"),
1108 i18n("Import into This Document?")) 1119 i18n("Import into This Document?"))
1109 == KMessageBox::No) { 1120 == KMessageBox::No) {
1110 // import the data to a new window. 1121 // import the data to a new window.
1111 PwM *newInstance = init->createMainWnd(); 1122 PwM *newInstance = init->createMainWnd();
1112 bool ok = newInstance->importCsv(); 1123 bool ok = newInstance->importCsv();
1113 if (!ok) { 1124 if (!ok) {
1114 newInstance->setForceQuit(true); 1125 newInstance->setForceQuit(true);
1115 delete_and_null(newInstance); 1126 delete_and_null(newInstance);
1116 } 1127 }
1117 return ok; 1128 return ok;
1118 } 1129 }
1119 } 1130 }
1120 1131
1121 QString filename = KFileDialog::getOpenFileName("*.csv", i18n("*|CSV Text File"), this); 1132 QString filename = KFileDialog::getOpenFileName("*.csv", i18n("*|CSV Text File"), this);
1122 if (filename.isEmpty()) 1133 if (filename.isEmpty())
1123 return false; 1134 return false;
1124 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1135 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1125 if (!csv.importData(filename, curDoc())) { 1136 if (!csv.importData(filename, curDoc())) {
1126 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1137 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1127 showStatMsg(i18n("CSV file import failed.")); 1138 showStatMsg(i18n("CSV file import failed."));
1128 return false; 1139 return false;
1129 } 1140 }
1130 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1141 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1131 KMessageBox::information(this, 1142 KMessageBox::information(this,
1132 i18n("Successfully imported the CSV data\n" 1143 i18n("Successfully imported the CSV data\n"
1133 "into the current document."), i18n("Successfully Imported")); 1144 "into the current document."), i18n("Successfully Imported"));
1134 showStatMsg(i18n("Successfully imported")); 1145 showStatMsg(i18n("Successfully imported"));
1135 setVirgin(false); 1146 setVirgin(false);
1136 return true; 1147 return true;
1137} 1148}
1138 1149
1139 1150
1140void PwM::exportToKWallet() 1151void PwM::exportToKWallet()
1141{ 1152{
1142#ifdef CONFIG_KWALLETIF 1153#ifdef CONFIG_KWALLETIF
1143 if (!checkAndAskForKWalletEmu()) 1154 if (!checkAndAskForKWalletEmu())
1144 return; 1155 return;
1145 PWM_ASSERT(curDoc()); 1156 PWM_ASSERT(curDoc());
1146 if (curDoc()->isDocEmpty()) { 1157 if (curDoc()->isDocEmpty()) {
1147 KMessageBox::information(this, 1158 KMessageBox::information(this,
1148 i18n 1159 i18n
1149 ("Sorry, there's nothing to export.\n" 1160 ("Sorry, there's nothing to export.\n"
1150 "Please first add some passwords."), 1161 "Please first add some passwords."),
1151 i18n("nothing to do")); 1162 i18n("nothing to do"));
1152 init->initKWalletEmu(); 1163 init->initKWalletEmu();
1153 return; 1164 return;
1154 } 1165 }
1155 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1166 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1156 KWalletIf walletIf(this); 1167 KWalletIf walletIf(this);
1157 if (walletIf.kwalletExport(curDoc())) { 1168 if (walletIf.kwalletExport(curDoc())) {
1158 KMessageBox::information(this, 1169 KMessageBox::information(this,
1159 i18n("Successfully exported the data of the current " 1170 i18n("Successfully exported the data of the current "
1160 "document to KWallet."), 1171 "document to KWallet."),
1161 i18n("Successfully exported data.")); 1172 i18n("Successfully exported data."));
1162 showStatMsg(i18n("Successfully exported data.")); 1173 showStatMsg(i18n("Successfully exported data."));
1163 } 1174 }
1164 init->initKWalletEmu(); 1175 init->initKWalletEmu();
1165 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1176 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1166#endif // CONFIG_KWALLETIF 1177#endif // CONFIG_KWALLETIF
1167} 1178}
1168 1179
1169bool PwM::importFromGpasman() 1180bool PwM::importFromGpasman()
1170{ 1181{
1171 if (!isVirgin()) { 1182 if (!isVirgin()) {
1172 if (KMessageBox::questionYesNo(this, 1183 if (KMessageBox::questionYesNo(this,
1173 i18n("Do you want to import the data\n" 1184 i18n("Do you want to import the data\n"
1174 "into the current document? (If you\n" 1185 "into the current document? (If you\n"
1175 "select \"no\", a new document will be\n" 1186 "select \"no\", a new document will be\n"
1176 "opened.)"), 1187 "opened.)"),
1177 i18n("import into this document?")) 1188 i18n("import into this document?"))
1178 == KMessageBox::No) { 1189 == KMessageBox::No) {
1179 // import the data to a new window. 1190 // import the data to a new window.
1180 PwM *newInstance = init->createMainWnd(); 1191 PwM *newInstance = init->createMainWnd();
1181 bool ok = newInstance->importFromGpasman(); 1192 bool ok = newInstance->importFromGpasman();
1182 if (!ok) { 1193 if (!ok) {
1183 newInstance->setForceQuit(true); 1194 newInstance->setForceQuit(true);
1184 delete_and_null(newInstance); 1195 delete_and_null(newInstance);
1185 } 1196 }
1186 return ok; 1197 return ok;
1187 } 1198 }
1188 } 1199 }
1189 1200
1190 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1201 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1191 PwMerror ret; 1202 PwMerror ret;
1192 QString path(KFileDialog::getOpenFileName(QString::null, 1203 QString path(KFileDialog::getOpenFileName(QString::null,
1193 i18n("*|Gpasman or Kpasman file"), this)); 1204 i18n("*|Gpasman or Kpasman file"), this));
1194 if (path == "") 1205 if (path == "")
1195 goto cancelImport; 1206 goto cancelImport;
1196 ret = curDoc()->importFromGpasman(&path); 1207 ret = curDoc()->importFromGpasman(&path);
1197 if (ret == e_wrongPw) { 1208 if (ret == e_wrongPw) {
1198 if (KMessageBox::questionYesNo(this, 1209 if (KMessageBox::questionYesNo(this,
1199 i18n 1210 i18n
1200 ("This is probably the wrong master-password\n" 1211 ("This is probably the wrong master-password\n"
1201 "you have typed in.\n" 1212 "you have typed in.\n"
1202 "There is no real way to determine the\n" 1213 "There is no real way to determine the\n"
1203 "correctness of the password in the Gpasman\n" 1214 "correctness of the password in the Gpasman\n"
1204 "file-format. But I think this\n" 1215 "file-format. But I think this\n"
1205 "password ist wrong.\n" 1216 "password ist wrong.\n"
1206 "Do you want to continue nevertheless?"), 1217 "Do you want to continue nevertheless?"),
1207 i18n("password error")) 1218 i18n("password error"))
1208 == KMessageBox::No) { 1219 == KMessageBox::No) {
1209 goto cancelImport; 1220 goto cancelImport;
1210 } 1221 }
1211 } else if (ret != e_success) { 1222 } else if (ret != e_success) {
1212 KMessageBox::error(this, 1223 KMessageBox::error(this,
1213 i18n("Could not import file!\n" 1224 i18n("Could not import file!\n"
1214 "Do you have permission to read this file?"), 1225 "Do you have permission to read this file?"),
1215 i18n("import failed")); 1226 i18n("import failed"));
1216 goto cancelImport; 1227 goto cancelImport;
1217 } 1228 }
1218 setVirgin(false); 1229 setVirgin(false);
1219 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1230 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1220 return true; 1231 return true;
1221 1232
1222cancelImport: 1233cancelImport:
1223 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1234 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1224 return false; 1235 return false;
1225} 1236}
1226 1237
1227#ifdef CONFIG_KWALLETIF 1238#ifdef CONFIG_KWALLETIF
1228bool PwM::checkAndAskForKWalletEmu() 1239bool PwM::checkAndAskForKWalletEmu()
1229{ 1240{
1230 if (init->kwalletEmu()) { 1241 if (init->kwalletEmu()) {
1231 /* KWallet emulation is enabled. We can't import/export 1242 /* KWallet emulation is enabled. We can't import/export
1232 * data from/to it, while emulation is active. 1243 * data from/to it, while emulation is active.
1233 */ 1244 */
1234 if (KMessageBox::questionYesNo(this, 1245 if (KMessageBox::questionYesNo(this,
1235 i18n("KWallet emulation is enabled.\n" 1246 i18n("KWallet emulation is enabled.\n"
1236 "You can't import or export data from/to " 1247 "You can't import or export data from/to "
1237 "the original KWallet, while the emulation " 1248 "the original KWallet, while the emulation "
1238 "is active.\n" 1249 "is active.\n"
1239 "Do you want to tempoarly disable the KWallet emulation?"), 1250 "Do you want to tempoarly disable the KWallet emulation?"),
1240 i18n("Tempoarly disable KWallet emulation?")) 1251 i18n("Tempoarly disable KWallet emulation?"))
1241 == KMessageBox::Yes) { 1252 == KMessageBox::Yes) {
1242 init->initKWalletEmu(true); 1253 init->initKWalletEmu(true);
1243 PWM_ASSERT(!init->kwalletEmu()); 1254 PWM_ASSERT(!init->kwalletEmu());
1244 return true; 1255 return true;
1245 } 1256 }
1246 return false; 1257 return false;
1247 } 1258 }
1248 return true; 1259 return true;
1249} 1260}
1250#endif // CONFIG_KWALLETIF 1261#endif // CONFIG_KWALLETIF
1251 1262
1252bool PwM::importKWallet() 1263bool PwM::importKWallet()
1253{ 1264{
1254#ifdef CONFIG_KWALLETIF 1265#ifdef CONFIG_KWALLETIF
1255 if (!checkAndAskForKWalletEmu()) 1266 if (!checkAndAskForKWalletEmu())
1256 return false; 1267 return false;
1257 KWalletIf walletIf(this); 1268 KWalletIf walletIf(this);
1258 if (!isVirgin()) { 1269 if (!isVirgin()) {
1259 if (KMessageBox::questionYesNo(this, 1270 if (KMessageBox::questionYesNo(this,
1260 i18n("Do you want to import the data " 1271 i18n("Do you want to import the data "