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,1042 +1,1043 @@
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
778All the application are integrated. 779All the application are integrated.
779Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail. 780Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail.
780 781
781HINT: 782HINT:
782If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 783If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
783 784
784What's new? 785What's new?
785 786
786SYNC HANDLING HAS CHANGED! 787SYNC HANDLING HAS CHANGED!
787Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 788Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
788(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 789(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
789 790
790New in OM/Pi: 791New in OM/Pi:
791When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails. 792When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails.
792 793
793New in KO/Pi: 794New in KO/Pi:
794French is now available for KO/Pi. 795French is now available for KO/Pi.
795Choose menu:Actions - Configure:TAB locale 796Choose menu:Actions - Configure:TAB locale
796Syncing has changed. 797Syncing has changed.
797Phone sync available soon. 798Phone sync available soon.
798Not much changes, I cannot remember them ... 799Not much changes, I cannot remember them ...
799 800
800New in KA/Pi: 801New in KA/Pi:
801Beaming possible. 802Beaming possible.
802Sharp DTM readonly access possible( create a new DTM resource ); 803Sharp DTM readonly access possible( create a new DTM resource );
803Better searching possible. 804Better searching possible.
804Search is performed only after pressing the return key. 805Search is performed only after pressing the return key.
805Use wildcard * to specify parts of a name. 806Use wildcard * to specify parts of a name.
806 807
807Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * . 808Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * .
808 809
809A big improvement is the new management of the contact access. 810A big improvement is the new management of the contact access.
810In version 1.9.3, every application was using their own addressbook access data. 811In version 1.9.3, every application was using their own addressbook access data.
811That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi. 812That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi.
812That was wasting of memory, if you had several hundreds of contacts. 813That was wasting of memory, if you had several hundreds of contacts.
813 814
814Now only KA/Pi accesses the addressbook. 815Now only KA/Pi accesses the addressbook.
815If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them. 816If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them.
816If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly. 817If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly.
817That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first. 818That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first.
818 819
819New in the KO/Pi alarm applet: 820New in the KO/Pi alarm applet:
820Configure your own timer popup menu! 821Configure your own timer popup menu!
821(Text and minutes for timer countdown) 822(Text and minutes for timer countdown)
822Just edit the file 823Just edit the file
823(yourhomedir)/.kopialarmtimerrc 824(yourhomedir)/.kopialarmtimerrc
824and start/stop a timer to get a new menu with the data of this file. 825and start/stop a timer to get a new menu with the data of this file.
825 826
826********** VERSION 1.9.3 ************ 827********** VERSION 1.9.3 ************
8271) 8281)
828Now KO/Pi on Windows imports directly the calendar data of 829Now KO/Pi on Windows imports directly the calendar data of
829an installed Outlook. Should work with OL version >= 2000. 830an installed Outlook. Should work with OL version >= 2000.
830 831
831********** VERSION 1.9.2 ************ 832********** VERSION 1.9.2 ************
8321) 8331)
833KDE-Pim/Pi has got a new member: 834KDE-Pim/Pi has got a new member:
834KmicroMail (KM/Pi) is a mail program, 835KmicroMail (KM/Pi) is a mail program,
835which can handle IMAP and POP mail access. 836which can handle IMAP and POP mail access.
836It is based on Opie-Mail v3. 837It is based on Opie-Mail v3.
837All dependencies to the Opie libraries ar removed, 838All dependencies to the Opie libraries ar removed,
838such that no additional Opie lib is needed. 839such that no additional Opie lib is needed.
839It is already integrated in KO/Pi and KA/Pi. 840It is already integrated in KO/Pi and KA/Pi.
840It it now available for the Zaurus,probably it 841It it now available for the Zaurus,probably it
841will be available for other platforms later. 842will be available for other platforms later.
842Hint: 843Hint:
843Create your own contact (name + email) 844Create your own contact (name + email)
844in KA/Pi, select this contact and choose menu: 845in KA/Pi, select this contact and choose menu:
845Settings - Set Who Am I. 846Settings - Set Who Am I.
846Now the settings of this contact are used as 847Now the settings of this contact are used as
847the sender data in KM/Pi. 848the sender data in KM/Pi.
8482) 8492)
849KDE-Pim/Pi is split up in five different 850KDE-Pim/Pi is split up in five different
850packages now precompiled for Sharp Zaurus: 851packages now precompiled for Sharp Zaurus:
851--kmicrokdelibs_1.9.2_arm.ipk 852--kmicrokdelibs_1.9.2_arm.ipk
852The libs are needed for any 853The libs are needed for any
853of the following programs: 854of the following programs:
854--kaddressbook_1.9.2_arm.ipk 855--kaddressbook_1.9.2_arm.ipk
855--kmicromail_1.9.2_arm.ipk 856--kmicromail_1.9.2_arm.ipk
856--korganizer_1.9.2_arm.ipk 857--korganizer_1.9.2_arm.ipk
857Independ from that, there is the alarm applet 858Independ from that, there is the alarm applet
858available for KO/Pi, which also offers 859available for KO/Pi, which also offers
859quick access for a new mail or 860quick access for a new mail or
860showing the addressbook.: 861showing the addressbook.:
861--korganizer-alarm_1.9.2_arm.ipk 862--korganizer-alarm_1.9.2_arm.ipk
862Independend means, that the alarm applet 863Independend means, that the alarm applet
863does not need any of the libs or programs above to run. 864does not need any of the libs or programs above to run.
864But it would be quite useless without these programs. 865But it would be quite useless without these programs.
865NOTE: 866NOTE:
866If you get a 867If you get a
867"This application depends on other programs" 868"This application depends on other programs"
868during installation of 869during installation of
869--kmicrokdelibs_1.9.2_arm.ipk 870--kmicrokdelibs_1.9.2_arm.ipk
870you probably do not have to care about that. 871you probably do not have to care about that.
871kmicrokdelibs_1.9.2 will come with some 872kmicrokdelibs_1.9.2 will come with some
872resource plugins, which needs additional libraries. 873resource plugins, which needs additional libraries.
873(E.g. libopie1, if you want to use the 874(E.g. libopie1, if you want to use the
874opie resource connector in KA/Pi). 875opie resource connector in KA/Pi).
875If you do not have this libraries installed, 876If you do not have this libraries installed,
876you simply cannot use the resource. 877you simply cannot use the resource.
877To make it clear: 878To make it clear:
878If the libraries are missing, the applications 879If the libraries are missing, the applications
879using kmicrokdelibs will start, 880using kmicrokdelibs will start,
880because the resources are plugins. 881because the resources are plugins.
8813) 8823)
882KO/Pi and friends are now installable on SD-Card! 883KO/Pi and friends are now installable on SD-Card!
883It is recommended to install all libs and apps 884It is recommended to install all libs and apps
884on the SD card or all in the internal storage. 885on the SD card or all in the internal storage.
885There may be problems, if this is mixed. 886There may be problems, if this is mixed.
8864) 8874)
887Fixed two bugs in the alarm notification on Windows. 888Fixed two bugs in the alarm notification on Windows.
8885) 8895)
889Great improvement! 890Great improvement!
890KO/Pi uses now the latest version of libical. 891KO/Pi uses now the latest version of libical.
891Libical is the library which actually reads 892Libical is the library which actually reads
892the calendar files and extract the data from it. 893the calendar files and extract the data from it.
893With the old version, there were problems 894With the old version, there were problems
894(crashes or program hangs) when licical did read 895(crashes or program hangs) when licical did read
895files, which were not stored from KO/Pi. 896files, which were not stored from KO/Pi.
896I do not know, if the new libical works perfect, 897I do not know, if the new libical works perfect,
897but actually it works much better than 898but actually it works much better than
898the old version. 899the old version.
899There are no problems with compatibility with 900There are no problems with compatibility with
900old calendar files of KO/Pi, of course! 901old calendar files of KO/Pi, of course!
9016) 9026)
902New in KA/Pi: 903New in KA/Pi:
903Opie addressbook resource connector available! 904Opie addressbook resource connector available!
904You will need libopie1 and the opie addressbook, 905You will need libopie1 and the opie addressbook,
905of course. 906of course.
906With the Opie addressbook resource connector, 907With the Opie addressbook resource connector,
907you can access the Opie addressbook readonly in KA/Pi. 908you can access the Opie addressbook readonly in KA/Pi.
908If you want to edit or import the data into KA/Pi, 909If you want to edit or import the data into KA/Pi,
909do this: 910do this:
910a) Create an Opie resource. 911a) Create an Opie resource.
911 (Menu: Settings-Configure Resources). 912 (Menu: Settings-Configure Resources).
912After configuration and restarting KA/Pi you should see 913After configuration and restarting KA/Pi you should see
913the Opie contacts in KA/Pi. 914the Opie contacts in KA/Pi.
914b) Select some or all Opie contacts. 915b) Select some or all Opie contacts.
915(NOTE: +++++ 916(NOTE: +++++
916To know exactly, what contacts are Opie contacts, 917To know exactly, what contacts are Opie contacts,
917do this: Choose menu: 918do this: Choose menu:
918View-Modify View - TAB Fields. 919View-Modify View - TAB Fields.
919Select in the above list "Resource" and click 920Select in the above list "Resource" and click
920down arrow to add it to the "Selected fields". 921down arrow to add it to the "Selected fields".
921Click OK. 922Click OK.
922Now you have a new column "Resource" in your list, 923Now you have a new column "Resource" in your list,
923where you can see, what an Opie resource is. 924where you can see, what an Opie resource is.
924++++ NOTE end.) 925++++ NOTE end.)
925Ok, we do have now some Opie contacts seleted. 926Ok, we do have now some Opie contacts seleted.
926(Use SHIFT or CTRL key in order to multiple select). 927(Use SHIFT or CTRL key in order to multiple select).
927c) Choose menu: Edit-Copy. 928c) Choose menu: Edit-Copy.
928d) Choose menu: Edit-Paste. 929d) Choose menu: Edit-Paste.
929e) Select the resource, you want to add the contacts to. 930e) Select the resource, you want to add the contacts to.
930Congrats! Now you have read/write access to the copied 931Congrats! Now you have read/write access to the copied
931opie contacts as "real" KA/Pi contacts. 932opie contacts as "real" KA/Pi contacts.
932 933
933 934
934********** VERSION 1.9.1 ************ 935********** VERSION 1.9.1 ************
9351) 9361)
936 +++ IMPORTANT 1 +++ 937 +++ IMPORTANT 1 +++
937 938
938The storing place of the default calendar 939The storing place of the default calendar
939file has changed! 940file has changed!
940The default calendar file was 941The default calendar file was
941Applications/korganizer/mycalendar.ics 942Applications/korganizer/mycalendar.ics
942on Zaurus and 943on Zaurus and
943(yourHomeDir)/korganizer/mycalendar.ics 944(yourHomeDir)/korganizer/mycalendar.ics
944on Windows/Linux desktop. Now it is 945on Windows/Linux desktop. Now it is
945(yourHomeDir)/kdepim/korganizer/mycalendar.ics 946(yourHomeDir)/kdepim/korganizer/mycalendar.ics
946on Zaurus, Windows and Linux. 947on Zaurus, Windows and Linux.
947To load the old file, choose menu 948To load the old file, choose menu
948File-Load calendar backup. 949File-Load calendar backup.
949(It should be loaded automatically 950(It should be loaded automatically
950at startup with a warning message displayed). 951at startup with a warning message displayed).
951The place of the configuration file has changed too. 952The place of the configuration file has changed too.
952If you want to use your old KO/Pi config, 953If you want to use your old KO/Pi config,
953copy it to 954copy it to
954(yourHomeDir)/kdepim/config/korganizerrc 955(yourHomeDir)/kdepim/config/korganizerrc
955Please read VERSION 1.9.0 - topic 3) as well! 956Please read VERSION 1.9.0 - topic 3) as well!
956 957
957 +++ IMPORTANT 2 +++ 958 +++ IMPORTANT 2 +++
958 959
959Because of the new paths, you will need 960Because of the new paths, you will need
960a new version of the KO/Pi alarm applet 961a new version of the KO/Pi alarm applet
961for Zaurus. 962for Zaurus.
962Use version >= 1.9.1 963Use version >= 1.9.1
963 964
9642) 9652)
965Now the QWhat'sThis Icon works for items 966Now the QWhat'sThis Icon works for items
966in the month view as well. 967in the month view as well.
967(See VERSION 1.7.8 Topic 1) ). 968(See VERSION 1.7.8 Topic 1) ).
9683) 9693)
969You can import birtsdays/anniversaries 970You can import birtsdays/anniversaries
970from KA/Pi into KO/Pi. 971from KA/Pi into KO/Pi.
971Choose menu File-Import birthdays. 972Choose menu File-Import birthdays.
972If you import twice, already imported items 973If you import twice, already imported items
973will not be imported again, if they 974will not be imported again, if they
974have not been changed in KO/Pi. 975have not been changed in KO/Pi.
9754) 9764)
976When syncing with sharp DTM, now a progress 977When syncing with sharp DTM, now a progress
977is shown, when the data is written back. 978is shown, when the data is written back.
978If there is much data in KO/Pi and no data 979If there is much data in KO/Pi and no data
979in DTM, that can take a long time. 980in DTM, that can take a long time.
980(But only for the first time ). 981(But only for the first time ).
9815) 9825)
982In the search dialog, you can search 983In the search dialog, you can search
983now for the name/email of an attendee 984now for the name/email of an attendee
984of an event/todo. 985of an event/todo.
985To get more space for displaying 986To get more space for displaying
986search results, the buttons 987search results, the buttons
987for "search" and "close" on the 988for "search" and "close" on the
988bottom are removed in the PDA version. 989bottom are removed in the PDA version.
989You have to click OK in the top right 990You have to click OK in the top right
990corner to do a search. 991corner to do a search.
9916) 9926)
992Now it is possible to disable the displaying 993Now it is possible to disable the displaying
993of todo items in the Allday part of the Agenda. 994of todo items in the Allday part of the Agenda.
994Choose Menu Action-Configure, 995Choose Menu Action-Configure,
995TAB Todo View, checkbox 996TAB Todo View, checkbox
996"Allday Agenda view shows todos" 997"Allday Agenda view shows todos"
9977) 9987)
998If FastLoad is enabled, now the settings and the 999If FastLoad is enabled, now the settings and the
999calendar data are saved, when KO/Pi is closed. 1000calendar data are saved, when KO/Pi is closed.
1000(If no Fastload is enabled, KO/Pi saves 1001(If no Fastload is enabled, KO/Pi saves
1001the data as well, of course) 1002the data as well, of course)
10028) 10038)
1003The Agenda View has a minimize-splitter now, 1004The Agenda View has a minimize-splitter now,
1004such that the height of the allday part can be 1005such that the height of the allday part can be
1005changed quickly. 1006changed quickly.
1006 1007
1007********** VERSION 1.9.0 ************ 1008********** VERSION 1.9.0 ************
10081) 10091)
1009KO/Pi is now merged with the new microKDE from KA/Pi. 1010KO/Pi is now merged with the new microKDE from KA/Pi.
1010KO/Pi accesses now KA/Pi as the addressbook. 1011KO/Pi accesses now KA/Pi as the addressbook.
1011The other ddressbook-plugins are not working any longer. 1012The other ddressbook-plugins are not working any longer.
1012(It is planned, that later KA/Pi itself uses these plugins) 1013(It is planned, that later KA/Pi itself uses these plugins)
1013New versions of KO/Pi are only available 1014New versions of KO/Pi are only available
1014together with KA/Pi as the KDE-Pim/Pi package. 1015together with KA/Pi as the KDE-Pim/Pi package.
10152) 10162)
1016If you click on an attendee of a meeting in the 1017If you click on an attendee of a meeting in the
1017event viewer, a detailed summary of the 1018event viewer, a detailed summary of the
1018attendee is shown. 1019attendee is shown.
10193) 10203)
1020The place of the configuration file has changed. 1021The place of the configuration file has changed.
1021If you want to use your old KO/Pi config, copy 1022If you want to use your old KO/Pi config, copy
1022Applications/korganizer/config_korganizerrc 1023Applications/korganizer/config_korganizerrc
1023to 1024to
1024Applications/korganizer/config/korganizerrc 1025Applications/korganizer/config/korganizerrc
1025 1026
1026********** VERSION 1.7.8 ************ 1027********** VERSION 1.7.8 ************
10271) 10281)
1028Now the QWhat'sThis ist working. 1029Now the QWhat'sThis ist working.
1029Enable the QWhat'sThis icon in the toolbar. 1030Enable the QWhat'sThis icon in the toolbar.
1030(You have to restart to reload the changed toolbar config). 1031(You have to restart to reload the changed toolbar config).
1031Now click on the QWhat'sThis Icon 1032Now click on the QWhat'sThis Icon
1032in the top right corner of KO/Pi. 1033in the top right corner of KO/Pi.
1033Then click on an item in the Agenda View: 1034Then click on an item in the Agenda View:
1034You will get a detailed display of the items content. 1035You will get a detailed display of the items content.
10352) 10362)
1036Some other very minor changes. 1037Some other very minor changes.
1037But I have forgotten the details ... 1038But I have forgotten the details ...
1038For that reason I start this log here: 1039For that reason I start this log here:
1039To document my changes, when I am doing it. 1040To document my changes, when I am doing it.
1040 1041
1041********** VERSION 1.7.7 ************ 1042********** VERSION 1.7.7 ************
1042Stable Version of KO/Pi 1043Stable Version of KO/Pi
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,1563 +1,1574 @@
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 "
1261 "into the current document? (If you " 1272 "into the current document? (If you "
1262 "select \"no\", a new document will be " 1273 "select \"no\", a new document will be "
1263 "opened.)"), 1274 "opened.)"),
1264 i18n("import into this document?")) 1275 i18n("import into this document?"))
1265 == KMessageBox::No) { 1276 == KMessageBox::No) {
1266 // import the data to a new window. 1277 // import the data to a new window.
1267 PwM *newInstance = init->createMainWnd(); 1278 PwM *newInstance = init->createMainWnd();
1268 bool ok = newInstance->importKWallet(); 1279 bool ok = newInstance->importKWallet();
1269 if (!ok) { 1280 if (!ok) {
1270 newInstance->setForceQuit(true); 1281 newInstance->setForceQuit(true);
1271 delete_and_null(newInstance); 1282 delete_and_null(newInstance);
1272 goto exit_fail; 1283 goto exit_fail;
1273 } else { 1284 } else {
1274 goto exit_ok; 1285 goto exit_ok;
1275 } 1286 }
1276 } 1287 }
1277 } 1288 }
1278 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1289 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1279 if (!walletIf.kwalletImport(curDoc())) { 1290 if (!walletIf.kwalletImport(curDoc())) {
1280 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1291 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1281 showStatMsg(i18n("KWallet import failed")); 1292 showStatMsg(i18n("KWallet import failed"));
1282 goto exit_fail; 1293 goto exit_fail;
1283 } 1294 }
1284 KMessageBox::information(this, 1295 KMessageBox::information(this,
1285 i18n("Successfully imported the KWallet data " 1296 i18n("Successfully imported the KWallet data "
1286 "into the current document."), 1297 "into the current document."),
1287 i18n("successfully imported")); 1298 i18n("successfully imported"));
1288 showStatMsg(i18n("successfully imported")); 1299 showStatMsg(i18n("successfully imported"));
1289 setVirgin(false); 1300 setVirgin(false);
1290 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1301 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1291 1302
1292exit_ok: 1303exit_ok:
1293 init->initKWalletEmu(); 1304 init->initKWalletEmu();
1294 return true; 1305 return true;
1295 1306
1296exit_fail: 1307exit_fail:
1297 init->initKWalletEmu(); 1308 init->initKWalletEmu();
1298#endif // CONFIG_KWALLETIF 1309#endif // CONFIG_KWALLETIF
1299 return false; 1310 return false;
1300} 1311}
1301 1312
1302void PwM::print_slot() 1313void PwM::print_slot()
1303{ 1314{
1304 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1315 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1305#ifndef PWM_EMBEDDED 1316#ifndef PWM_EMBEDDED
1306 PwMPrint p(curDoc(), this); 1317 PwMPrint p(curDoc(), this);
1307 p.printNow(); 1318 p.printNow();
1308#else 1319#else
1309 qDebug("PwM::print_slot , PRINTING IS NOT IMPLEMENTED"); 1320 qDebug("PwM::print_slot , PRINTING IS NOT IMPLEMENTED");
1310#endif 1321#endif
1311 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1322 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1312} 1323}
1313 1324
1314void PwM::genNewCard_slot() 1325void PwM::genNewCard_slot()
1315{ 1326{
1316#ifdef CONFIG_KEYCARD 1327#ifdef CONFIG_KEYCARD
1317 init->keycard()->genNewCard(); 1328 init->keycard()->genNewCard();
1318#endif 1329#endif
1319} 1330}
1320 1331
1321void PwM::eraseCard_slot() 1332void PwM::eraseCard_slot()
1322{ 1333{
1323#ifdef CONFIG_KEYCARD 1334#ifdef CONFIG_KEYCARD
1324 init->keycard()->eraseCard(); 1335 init->keycard()->eraseCard();
1325#endif 1336#endif
1326} 1337}
1327 1338
1328void PwM::readCardId_slot() 1339void PwM::readCardId_slot()
1329{ 1340{
1330#ifdef CONFIG_KEYCARD 1341#ifdef CONFIG_KEYCARD
1331 init->keycard()->displayKey(); 1342 init->keycard()->displayKey();
1332#endif 1343#endif
1333} 1344}
1334 1345
1335void PwM::makeCardBackup_slot() 1346void PwM::makeCardBackup_slot()
1336{ 1347{
1337#ifdef CONFIG_KEYCARD 1348#ifdef CONFIG_KEYCARD
1338 init->keycard()->makeBackupImage(); 1349 init->keycard()->makeBackupImage();
1339#endif 1350#endif
1340} 1351}
1341 1352
1342void PwM::replayCardBackup_slot() 1353void PwM::replayCardBackup_slot()
1343{ 1354{
1344#ifdef CONFIG_KEYCARD 1355#ifdef CONFIG_KEYCARD
1345 init->keycard()->replayBackupImage(); 1356 init->keycard()->replayBackupImage();
1346#endif 1357#endif
1347} 1358}
1348 1359
1349void PwM::execLauncher_slot() 1360void PwM::execLauncher_slot()
1350{ 1361{
1351 PWM_ASSERT(curDoc()); 1362 PWM_ASSERT(curDoc());
1352 if (curDoc()->isDeepLocked()) 1363 if (curDoc()->isDeepLocked())
1353 return; 1364 return;
1354 unsigned int curEntryIndex; 1365 unsigned int curEntryIndex;
1355 if (!view->getCurEntryIndex(&curEntryIndex)) 1366 if (!view->getCurEntryIndex(&curEntryIndex))
1356 return; 1367 return;
1357 bool ret = curDoc()->execLauncher(view->getCurrentCategory(), 1368 bool ret = curDoc()->execLauncher(view->getCurrentCategory(),
1358 curEntryIndex); 1369 curEntryIndex);
1359 if (ret) 1370 if (ret)
1360 showStatMsg(i18n("Executed the \"Launcher\".")); 1371 showStatMsg(i18n("Executed the \"Launcher\"."));
1361 else 1372 else
1362 showStatMsg(i18n("ERROR: Couldn't execute the \"Launcher\"!")); 1373 showStatMsg(i18n("ERROR: Couldn't execute the \"Launcher\"!"));
1363} 1374}
1364 1375
1365void PwM::goToURL_slot() 1376void PwM::goToURL_slot()
1366{ 1377{
1367 PWM_ASSERT(curDoc()); 1378 PWM_ASSERT(curDoc());
1368 if (curDoc()->isDeepLocked()) 1379 if (curDoc()->isDeepLocked())
1369 return; 1380 return;
1370 unsigned int curEntryIndex; 1381 unsigned int curEntryIndex;
1371 if (!view->getCurEntryIndex(&curEntryIndex)) 1382 if (!view->getCurEntryIndex(&curEntryIndex))
1372 return; 1383 return;
1373 bool ret = curDoc()->goToURL(view->getCurrentCategory(), 1384 bool ret = curDoc()->goToURL(view->getCurrentCategory(),
1374 curEntryIndex); 1385 curEntryIndex);
1375 if (ret) 1386 if (ret)
1376 showStatMsg(i18n("started browser with current URL.")); 1387 showStatMsg(i18n("started browser with current URL."));
1377 else 1388 else
1378 showStatMsg(i18n("ERROR: Couldn't start browser! Maybe invalid URL?")); 1389 showStatMsg(i18n("ERROR: Couldn't start browser! Maybe invalid URL?"));
1379} 1390}
1380 1391
1381void PwM::copyToClipboard(const QString &s) 1392void PwM::copyToClipboard(const QString &s)
1382{ 1393{
1383 QClipboard *cb = QApplication::clipboard(); 1394 QClipboard *cb = QApplication::clipboard();
1384#ifndef PWM_EMBEDDED 1395#ifndef PWM_EMBEDDED
1385 if (cb->supportsSelection()) 1396 if (cb->supportsSelection())
1386 cb->setText(s, QClipboard::Selection); 1397 cb->setText(s, QClipboard::Selection);
1387 cb->setText(s, QClipboard::Clipboard); 1398 cb->setText(s, QClipboard::Clipboard);
1388#else 1399#else
1389 cb->setText(s); 1400 cb->setText(s);
1390 1401
1391#endif 1402#endif
1392 1403
1393} 1404}
1394 1405
1395 1406
1396void PwM::showStatMsg(const QString &msg) 1407void PwM::showStatMsg(const QString &msg)
1397{ 1408{
1398#ifdef DESKTOP_VERSION 1409#ifdef DESKTOP_VERSION
1399 statusBar()->message(msg, STATUSBAR_MSG_TIMEOUT * 1000); 1410 statusBar()->message(msg, STATUSBAR_MSG_TIMEOUT * 1000);
1400#else 1411#else
1401 //qDebug("Statusbar : %s",msg.latin1()); 1412 //qDebug("Statusbar : %s",msg.latin1());
1402 Global::statusMessage(msg); 1413 Global::statusMessage(msg);
1403#endif 1414#endif
1404} 1415}
1405 1416
1406void PwM::focusInEvent(QFocusEvent *e) 1417void PwM::focusInEvent(QFocusEvent *e)
1407{ 1418{
1408 if (e->gotFocus()) { 1419 if (e->gotFocus()) {
1409 emit gotFocus(this); 1420 emit gotFocus(this);
1410 } else if (e->lostFocus()) { 1421 } else if (e->lostFocus()) {
1411 emit lostFocus(this); 1422 emit lostFocus(this);
1412 } 1423 }
1413} 1424}
1414 1425
1415 1426
1416#ifdef PWM_EMBEDDED 1427#ifdef PWM_EMBEDDED
1417 1428
1418void PwM::category_slot() 1429void PwM::category_slot()
1419{ 1430{
1420 PwMDoc *doc = curDoc(); 1431 PwMDoc *doc = curDoc();
1421 PWM_ASSERT(doc); 1432 PWM_ASSERT(doc);
1422 doc->timer()->getLock(DocTimer::id_autoLockTimer); 1433 doc->timer()->getLock(DocTimer::id_autoLockTimer);
1423 1434
1424 editCategoryWnd w(doc, this, "editcategory"); 1435 editCategoryWnd w(doc, this, "editcategory");
1425/* 1436/*
1426 vector<string> catList; 1437 vector<string> catList;
1427 doc->getCategoryList(&catList); 1438 doc->getCategoryList(&catList);
1428 unsigned i, size = catList.size(); 1439 unsigned i, size = catList.size();
1429 for (i = 0; i < size; ++i) { 1440 for (i = 0; i < size; ++i) {
1430 w.addCategory(catList[i].c_str()); 1441 w.addCategory(catList[i].c_str());
1431 } 1442 }
1432 w.setCurrCategory(view->getCurrentCategory()); 1443 w.setCurrCategory(view->getCurrentCategory());
1433 if (pw) 1444 if (pw)
1434 w.pwLineEdit->setText(*pw); 1445 w.pwLineEdit->setText(*pw);
1435*/ 1446*/
1436 w.setCurrCategory(view->getCurrentCategory()); 1447 w.setCurrCategory(view->getCurrentCategory());
1437 1448
1438 tryAgain: 1449 tryAgain:
1439 if (w.exec() == 1) 1450 if (w.exec() == 1)
1440 { 1451 {
1441 PwMDataItem d; 1452 PwMDataItem d;
1442 1453
1443 //US BUG: to initialize all values of curEntr with meaningfulldata, 1454 //US BUG: to initialize all values of curEntr with meaningfulldata,
1444 // we call clear on it. Reason: Metadata will be uninitialized otherwise. 1455 // we call clear on it. Reason: Metadata will be uninitialized otherwise.
1445 // another option would be to create a constructor for PwMDataItem 1456 // another option would be to create a constructor for PwMDataItem
1446 d.clear(true); 1457 d.clear(true);
1447 /* 1458 /*
1448 d.desc = w.getDescription().latin1(); 1459 d.desc = w.getDescription().latin1();
1449 d.name = w.getUsername().latin1(); 1460 d.name = w.getUsername().latin1();
1450 d.pw = w.getPassword().latin1(); 1461 d.pw = w.getPassword().latin1();
1451 d.comment = w.getComment().latin1(); 1462 d.comment = w.getComment().latin1();
1452 d.url = w.getUrl().latin1(); 1463 d.url = w.getUrl().latin1();
1453 d.launcher = w.getLauncher().latin1(); 1464 d.launcher = w.getLauncher().latin1();
1454 PwMerror ret = doc->addEntry(w.getCategory(), &d); 1465 PwMerror ret = doc->addEntry(w.getCategory(), &d);
1455 if (ret == e_entryExists) { 1466 if (ret == e_entryExists) {
1456 KMessageBox::error(this, 1467 KMessageBox::error(this,
1457 i18n 1468 i18n
1458 ("An entry with this \"Description\",\n" 1469 ("An entry with this \"Description\",\n"
1459 "does already exist.\n" 1470 "does already exist.\n"
1460 "Please select another description."), 1471 "Please select another description."),
1461 i18n("entry already exists.")); 1472 i18n("entry already exists."));
1462 goto tryAgain; 1473 goto tryAgain;
1463 } else if (ret == e_maxAllowedEntr) { 1474 } else if (ret == e_maxAllowedEntr) {
1464 KMessageBox::error(this, i18n("The maximum possible number of\nentries" 1475 KMessageBox::error(this, i18n("The maximum possible number of\nentries"
1465 "has been reached.\nYou can't add more entries."), 1476 "has been reached.\nYou can't add more entries."),
1466 i18n("maximum number of entries")); 1477 i18n("maximum number of entries"));
1467 doc->timer()->putLock(DocTimer::id_autoLockTimer); 1478 doc->timer()->putLock(DocTimer::id_autoLockTimer);
1468 return; 1479 return;
1469 } 1480 }
1470 */ 1481 */
1471 } 1482 }
1472 setVirgin(false); 1483 setVirgin(false);
1473 doc->timer()->putLock(DocTimer::id_autoLockTimer); 1484 doc->timer()->putLock(DocTimer::id_autoLockTimer);
1474} 1485}
1475 1486
1476 1487
1477void PwM::whatsnew_slot() 1488void PwM::whatsnew_slot()
1478{ 1489{
1479 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1490 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1480} 1491}
1481 1492
1482void PwM::showLicense_slot() 1493void PwM::showLicense_slot()
1483{ 1494{
1484 KApplication::showLicence(); 1495 KApplication::showLicence();
1485} 1496}
1486 1497
1487void PwM::faq_slot() 1498void PwM::faq_slot()
1488{ 1499{
1489 KApplication::showFile( "PWM/Pi FAQ", "kdepim/pwmanager/pwmanagerFAQ.txt" ); 1500 KApplication::showFile( "PWM/Pi FAQ", "kdepim/pwmanager/pwmanagerFAQ.txt" );
1490} 1501}
1491 1502
1492void PwM::syncHowTo_slot() 1503void PwM::syncHowTo_slot()
1493{ 1504{
1494 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1505 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1495} 1506}
1496 1507
1497 1508
1498void PwM::createAboutData_slot() 1509void PwM::createAboutData_slot()
1499{ 1510{
1500 QString version; 1511 QString version;
1501#include <../version> 1512#include <../version>
1502; 1513;
1503 QMessageBox::about( this, "About PwManager/Pi", 1514 QMessageBox::about( this, "About PwManager/Pi",
1504 "PwManager/Platform-independent\n" 1515 "PwManager/Platform-independent\n"
1505 "(PWM/Pi) " +version + " - " + 1516 "(PWM/Pi) " +version + " - " +
1506#ifdef DESKTOP_VERSION 1517#ifdef DESKTOP_VERSION
1507 "Desktop Edition\n" 1518 "Desktop Edition\n"
1508#else 1519#else
1509 "PDA-Edition\n" 1520 "PDA-Edition\n"
1510 "for: Zaurus 5500 / 7x0 / 8x0\n" 1521 "for: Zaurus 5500 / 7x0 / 8x0\n"
1511#endif 1522#endif
1512 1523
1513 "(c) 2004 Ulf Schenk\n" 1524 "(c) 2004 Ulf Schenk\n"
1514 "(c) 2004 Lutz Rogowski\n" 1525 "(c) 2004 Lutz Rogowski\n"
1515 "(c) 1997-2004, The KDE PIM Team\n" 1526 "(c) 1997-2004, The KDE PIM Team\n"
1516 1527
1517 "(c) Michael Buesch - main programming\nand current maintainer\nmbuesch@freenet.de\n" 1528 "(c) Michael Buesch - main programming\nand current maintainer\nmbuesch@freenet.de\n"
1518 "Matt Scifo - mscifo@o1.com\n" 1529 "Matt Scifo - mscifo@o1.com\n"
1519 "Elias Probst - elias.probst@gmx.de\n" 1530 "Elias Probst - elias.probst@gmx.de\n"
1520 "George Staikos - staikos@kde.org\n" 1531 "George Staikos - staikos@kde.org\n"
1521 "Matthew Palmer - mjp16@uow.edu.au\n" 1532 "Matthew Palmer - mjp16@uow.edu.au\n"
1522 "Olivier Sessink - gpasman@nl.linux.org\n" 1533 "Olivier Sessink - gpasman@nl.linux.org\n"
1523 "The libgcrypt developers -\nBlowfish and SHA1 algorithms\nftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/\n" 1534 "The libgcrypt developers -\nBlowfish and SHA1 algorithms\nftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/\n"
1524 "Troy Engel - tengel@sonic.net\n" 1535 "Troy Engel - tengel@sonic.net\n"
1525 "Wickey - wickey@gmx.at\n" 1536 "Wickey - wickey@gmx.at\n"
1526 "Ian MacGregor - original documentation author.\n" 1537 "Ian MacGregor - original documentation author.\n"
1527 ); 1538 );
1528} 1539}
1529 1540
1530 1541
1531//this are the overwritten callbackmethods from the syncinterface 1542//this are the overwritten callbackmethods from the syncinterface
1532bool PwM::sync(KSyncManager* manager, QString filename, int mode) 1543bool PwM::sync(KSyncManager* manager, QString filename, int mode)
1533{ 1544{
1534 PWM_ASSERT(curDoc()); 1545 PWM_ASSERT(curDoc());
1535 1546
1536 bool ret = curDoc()->sync(manager, filename, mode); 1547 bool ret = curDoc()->sync(manager, filename, mode);
1537 1548
1538 qDebug("PwM::sync save now: ret=%i", ret); 1549 qDebug("PwM::sync save now: ret=%i", ret);
1539 1550
1540 if (ret == true) { 1551 if (ret == true) {
1541 //US BUG: what can we call here to update the view of the current doc? 1552 //US BUG: what can we call here to update the view of the current doc?
1542 //mViewManager->refreshView(); 1553 //mViewManager->refreshView();
1543 1554
1544 //US curDoc()->sync sets the dirtyFlag in case the sync was successfull. 1555 //US curDoc()->sync sets the dirtyFlag in case the sync was successfull.
1545 save(); 1556 save();
1546 } 1557 }
1547 1558
1548 return ret; 1559 return ret;
1549} 1560}
1550 1561
1551void PwM::removeSyncInfo( QString syncProfile) 1562void PwM::removeSyncInfo( QString syncProfile)
1552{ 1563{
1553 qDebug("PWM:removeSyncInfo for profile %s ", syncProfile.latin1()); 1564 qDebug("PWM:removeSyncInfo for profile %s ", syncProfile.latin1());
1554 curDoc()->removeSyncInfo( syncProfile ); 1565 curDoc()->removeSyncInfo( syncProfile );
1555 //US curDoc()->removeSyncInfo sets the dirtyFlag. 1566 //US curDoc()->removeSyncInfo sets the dirtyFlag.
1556} 1567}
1557 1568
1558#endif 1569#endif
1559 1570
1560 1571
1561#ifndef PWM_EMBEDDED 1572#ifndef PWM_EMBEDDED
1562#include "pwm.moc" 1573#include "pwm.moc"
1563#endif 1574#endif