summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--pwmanager/pwmanager/pwm.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/pwmanager/pwmanager/pwm.cpp b/pwmanager/pwmanager/pwm.cpp
index d9fbfc9..083e6d1 100644
--- a/pwmanager/pwmanager/pwm.cpp
+++ b/pwmanager/pwmanager/pwm.cpp
@@ -1,1547 +1,1549 @@
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 filePopup->insertItem(QIconSet(picons->loadIcon("fileprint", KIcon::Small)), 289 filePopup->insertItem(QIconSet(picons->loadIcon("fileprint", KIcon::Small)),
290 i18n("&Print..."), this, 290 i18n("&Print..."), this,
291 SLOT(print_slot()), 0, BUTTON_POPUP_FILE_PRINT); 291 SLOT(print_slot()), 0, BUTTON_POPUP_FILE_PRINT);
292 filePopup->insertSeparator(); 292 filePopup->insertSeparator();
293 filePopup->insertItem(QIconSet(picons->loadIcon("exit", KIcon::Small)), 293 filePopup->insertItem(QIconSet(picons->loadIcon("exit", KIcon::Small)),
294 i18n("&Quit"), this, 294 i18n("&Quit"), this,
295 SLOT(quitButton_slot()), 0, BUTTON_POPUP_FILE_QUIT); 295 SLOT(quitButton_slot()), 0, BUTTON_POPUP_FILE_QUIT);
296 menuBar()->insertItem(i18n("&File"), filePopup); 296 menuBar()->insertItem(i18n("&File"), filePopup);
297// "manage" popup menu 297// "manage" popup menu
298 managePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)), 298 managePopup->insertItem(QIconSet(picons->loadIcon("pencil", KIcon::Small)),
299 i18n("&Add password"), this, 299 i18n("&Add password"), this,
300 SLOT(addPwd_slot()), 0, 300 SLOT(addPwd_slot()), 0,
301 BUTTON_POPUP_MANAGE_ADD); 301 BUTTON_POPUP_MANAGE_ADD);
302 managePopup->insertItem(QIconSet(picons->loadIcon("edit", KIcon::Small)), 302 managePopup->insertItem(QIconSet(picons->loadIcon("edit", KIcon::Small)),
303 i18n("&Edit"), this, SLOT(editPwd_slot()), 0, 303 i18n("&Edit"), this, SLOT(editPwd_slot()), 0,
304 BUTTON_POPUP_MANAGE_EDIT); 304 BUTTON_POPUP_MANAGE_EDIT);
305 managePopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)), 305 managePopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)),
306 i18n("&Delete"), this, SLOT(deletePwd_slot()), 306 i18n("&Delete"), this, SLOT(deletePwd_slot()),
307 0, BUTTON_POPUP_MANAGE_DEL); 307 0, BUTTON_POPUP_MANAGE_DEL);
308 managePopup->insertSeparator(); 308 managePopup->insertSeparator();
309 managePopup->insertItem(QIconSet(picons->loadIcon("rotate", KIcon::Small)), 309 managePopup->insertItem(QIconSet(picons->loadIcon("rotate", KIcon::Small)),
310 i18n("Change &Master Password"), this, 310 i18n("Change &Master Password"), this,
311 SLOT(changeMasterPwd_slot()), 0, 311 SLOT(changeMasterPwd_slot()), 0,
312 BUTTON_POPUP_MANAGE_CHANGEMP); 312 BUTTON_POPUP_MANAGE_CHANGEMP);
313 menuBar()->insertItem(i18n("&Manage"), managePopup); 313 menuBar()->insertItem(i18n("&Manage"), managePopup);
314// "chipcard" popup menu 314// "chipcard" popup menu
315#ifdef CONFIG_KEYCARD 315#ifdef CONFIG_KEYCARD
316 chipcardPopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)), 316 chipcardPopup->insertItem(QIconSet(picons->loadIcon("filenew", KIcon::Small)),
317 i18n("&Generate new key-card"), this, 317 i18n("&Generate new key-card"), this,
318 SLOT(genNewCard_slot()), 0, 318 SLOT(genNewCard_slot()), 0,
319 BUTTON_POPUP_CHIPCARD_GENNEW); 319 BUTTON_POPUP_CHIPCARD_GENNEW);
320 chipcardPopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)), 320 chipcardPopup->insertItem(QIconSet(picons->loadIcon("editdelete", KIcon::Small)),
321 i18n("&Erase key-card"), this, 321 i18n("&Erase key-card"), this,
322 SLOT(eraseCard_slot()), 0, 322 SLOT(eraseCard_slot()), 0,
323 BUTTON_POPUP_CHIPCARD_DEL); 323 BUTTON_POPUP_CHIPCARD_DEL);
324 chipcardPopup->insertItem(QIconSet(picons->loadIcon("", KIcon::Small)), 324 chipcardPopup->insertItem(QIconSet(picons->loadIcon("", KIcon::Small)),
325 i18n("Read card-&ID"), this, 325 i18n("Read card-&ID"), this,
326 SLOT(readCardId_slot()), 0, 326 SLOT(readCardId_slot()), 0,
327 BUTTON_POPUP_CHIPCARD_READID); 327 BUTTON_POPUP_CHIPCARD_READID);
328 chipcardPopup->insertSeparator(); 328 chipcardPopup->insertSeparator();
329 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2rightarrow", KIcon::Small)), 329 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2rightarrow", KIcon::Small)),
330 i18n("&Make card backup-image"), this, 330 i18n("&Make card backup-image"), this,
331 SLOT(makeCardBackup_slot()), 0, 331 SLOT(makeCardBackup_slot()), 0,
332 BUTTON_POPUP_CHIPCARD_SAVEBACKUP); 332 BUTTON_POPUP_CHIPCARD_SAVEBACKUP);
333 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2leftarrow", KIcon::Small)), 333 chipcardPopup->insertItem(QIconSet(picons->loadIcon("2leftarrow", KIcon::Small)),
334 i18n("&Replay card backup-image"), this, 334 i18n("&Replay card backup-image"), this,
335 SLOT(replayCardBackup_slot()), 0, 335 SLOT(replayCardBackup_slot()), 0,
336 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP); 336 BUTTON_POPUP_CHIPCARD_REPLAYBACKUP);
337 menuBar()->insertItem(i18n("&Chipcard manager"), chipcardPopup); 337 menuBar()->insertItem(i18n("&Chipcard manager"), chipcardPopup);
338#endif // CONFIG_KEYCARD 338#endif // CONFIG_KEYCARD
339// "view" popup menu 339// "view" popup menu
340 viewPopup->insertItem(QIconSet(picons->loadIcon("find", KIcon::Small)), 340 viewPopup->insertItem(QIconSet(picons->loadIcon("find", KIcon::Small)),
341 i18n("&Find"), this, 341 i18n("&Find"), this,
342 SLOT(find_slot()), 0, BUTTON_POPUP_VIEW_FIND); 342 SLOT(find_slot()), 0, BUTTON_POPUP_VIEW_FIND);
343 viewPopup->insertSeparator(); 343 viewPopup->insertSeparator();
344 viewPopup->insertItem(QIconSet(picons->loadIcon("halfencrypted", KIcon::Small)), 344 viewPopup->insertItem(QIconSet(picons->loadIcon("halfencrypted", KIcon::Small)),
345 i18n("&Lock all entries"), this, 345 i18n("&Lock all entries"), this,
346 SLOT(lockWnd_slot()), 0, 346 SLOT(lockWnd_slot()), 0,
347 BUTTON_POPUP_VIEW_LOCK); 347 BUTTON_POPUP_VIEW_LOCK);
348 viewPopup->insertItem(QIconSet(picons->loadIcon("encrypted", KIcon::Small)), 348 viewPopup->insertItem(QIconSet(picons->loadIcon("encrypted", KIcon::Small)),
349 i18n("&Deep-lock all entries"), this, 349 i18n("&Deep-lock all entries"), this,
350 SLOT(deepLockWnd_slot()), 0, 350 SLOT(deepLockWnd_slot()), 0,
351 BUTTON_POPUP_VIEW_DEEPLOCK); 351 BUTTON_POPUP_VIEW_DEEPLOCK);
352 viewPopup->insertItem(QIconSet(picons->loadIcon("decrypted", KIcon::Small)), 352 viewPopup->insertItem(QIconSet(picons->loadIcon("decrypted", KIcon::Small)),
353 i18n("&Unlock all entries"), this, 353 i18n("&Unlock all entries"), this,
354 SLOT(unlockWnd_slot()), 0, 354 SLOT(unlockWnd_slot()), 0,
355 BUTTON_POPUP_VIEW_UNLOCK); 355 BUTTON_POPUP_VIEW_UNLOCK);
356 menuBar()->insertItem(i18n("&View"), viewPopup); 356 menuBar()->insertItem(i18n("&View"), viewPopup);
357// "options" popup menu 357// "options" popup menu
358 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)), 358 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
359 i18n("&Configure..."), this, 359 i18n("&Configure..."), this,
360 SLOT(config_slot()),0, 360 SLOT(config_slot()),0,
361 BUTTON_POPUP_OPTIONS_CONFIG); 361 BUTTON_POPUP_OPTIONS_CONFIG);
362 menuBar()->insertItem(i18n("&Options"), optionsPopup); 362 menuBar()->insertItem(i18n("&Options"), optionsPopup);
363// "help" popup menu 363// "help" popup menu
364#ifndef PWM_EMBEDDED 364#ifndef PWM_EMBEDDED
365 helpPopup = helpMenu(QString::null, false); 365 helpPopup = helpMenu(QString::null, false);
366#else 366#else
367 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)), 367 optionsPopup->insertItem(QIconSet(picons->loadIcon("configure", KIcon::Small)),
368 i18n("C&ategories..."), this, 368 i18n("C&ategories..."), this,
369 SLOT(category_slot()),0, 369 SLOT(category_slot()),0,
370 BUTTON_POPUP_OPTIONS_CATEGORY); 370 BUTTON_POPUP_OPTIONS_CATEGORY);
371 371
372 372
373 menuBar()->insertItem(i18n("&Sync"), syncPopup); 373 menuBar()->insertItem(i18n("&Sync"), syncPopup);
374 374
375 375
376 376
377 377
378 378
379 helpPopup = new KPopupMenu(this); 379 helpPopup = new KPopupMenu(this);
380 380
381 381
382 helpPopup->insertItem(i18n("&License"), this, 382 helpPopup->insertItem(i18n("&License"), this,
383 SLOT(showLicense_slot()), 0, 383 SLOT(showLicense_slot()), 0,
384 BUTTON_POPUP_HELP_LICENSE); 384 BUTTON_POPUP_HELP_LICENSE);
385 385
386 helpPopup->insertItem(i18n("&Faq"), this, 386 helpPopup->insertItem(i18n("&Faq"), this,
387 SLOT(faq_slot()), 0, 387 SLOT(faq_slot()), 0,
388 BUTTON_POPUP_HELP_FAQ); 388 BUTTON_POPUP_HELP_FAQ);
389 389
390 helpPopup->insertItem(i18n("&About PwManager"), this, 390 helpPopup->insertItem(i18n("&About PwManager"), this,
391 SLOT(createAboutData_slot()), 0, 391 SLOT(createAboutData_slot()), 0,
392 BUTTON_POPUP_HELP_ABOUT); 392 BUTTON_POPUP_HELP_ABOUT);
393 393
394 helpPopup->insertItem(i18n("&Sync HowTo"), this, 394 helpPopup->insertItem(i18n("&Sync HowTo"), this,
395 SLOT(syncHowTo_slot()), 0, 395 SLOT(syncHowTo_slot()), 0,
396 BUTTON_POPUP_HELP_SYNC); 396 BUTTON_POPUP_HELP_SYNC);
397 397
398 helpPopup->insertItem(i18n("&What's New"), this, 398 helpPopup->insertItem(i18n("&What's New"), this,
399 SLOT(whatsnew_slot()), 0, 399 SLOT(whatsnew_slot()), 0,
400 BUTTON_POPUP_HELP_WHATSNEW); 400 BUTTON_POPUP_HELP_WHATSNEW);
401 401
402#endif 402#endif
403 menuBar()->insertItem(i18n("&Help"), helpPopup); 403 menuBar()->insertItem(i18n("&Help"), helpPopup);
404 404
405} 405}
406 406
407void PwM::initToolbar() 407void PwM::initToolbar()
408{ 408{
409 KIconLoader* picons; 409 KIconLoader* picons;
410#ifndef PWM_EMBEDDED 410#ifndef PWM_EMBEDDED
411 KIconLoader icons; 411 KIconLoader icons;
412 picons = &icons; 412 picons = &icons;
413#else 413#else
414 picons = KGlobal::iconLoader(); 414 picons = KGlobal::iconLoader();
415#endif 415#endif
416 416
417#ifdef PWM_EMBEDDED 417#ifdef PWM_EMBEDDED
418 if ( QApplication::desktop()->width() > 320 ) 418 if ( QApplication::desktop()->width() > 320 )
419#endif 419#endif
420 { 420 {
421 toolBar()->insertButton(picons->loadIcon("filenew", KIcon::Toolbar), 421 toolBar()->insertButton(picons->loadIcon("filenew", KIcon::Toolbar),
422 BUTTON_TOOL_NEW, SIGNAL(clicked(int)), this, 422 BUTTON_TOOL_NEW, SIGNAL(clicked(int)), this,
423 SLOT(new_slot()), true, i18n("New")); 423 SLOT(new_slot()), true, i18n("New"));
424 toolBar()->insertButton(picons->loadIcon("fileopen", KIcon::Toolbar), 424 toolBar()->insertButton(picons->loadIcon("fileopen", KIcon::Toolbar),
425 BUTTON_TOOL_OPEN, SIGNAL(clicked(int)), this, 425 BUTTON_TOOL_OPEN, SIGNAL(clicked(int)), this,
426 SLOT(open_slot()), true, i18n("Open")); 426 SLOT(open_slot()), true, i18n("Open"));
427 toolBar()->insertSeparator(); 427 toolBar()->insertSeparator();
428 } 428 }
429 toolBar()->insertButton(picons->loadIcon("filesave", KIcon::Toolbar), 429 toolBar()->insertButton(picons->loadIcon("filesave", KIcon::Toolbar),
430 BUTTON_TOOL_SAVE, SIGNAL(clicked(int)), this, 430 BUTTON_TOOL_SAVE, SIGNAL(clicked(int)), this,
431 SLOT(save_slot()), true, i18n("Save")); 431 SLOT(save_slot()), true, i18n("Save"));
432 toolBar()->insertButton(picons->loadIcon("filesaveas", KIcon::Toolbar), 432 toolBar()->insertButton(picons->loadIcon("filesaveas", KIcon::Toolbar),
433 BUTTON_TOOL_SAVEAS, SIGNAL(clicked(int)), this, 433 BUTTON_TOOL_SAVEAS, SIGNAL(clicked(int)), this,
434 SLOT(saveAs_slot()), true, i18n("Save as")); 434 SLOT(saveAs_slot()), true, i18n("Save as"));
435 toolBar()->insertButton(picons->loadIcon("fileprint", KIcon::Toolbar), 435 toolBar()->insertButton(picons->loadIcon("fileprint", KIcon::Toolbar),
436 BUTTON_TOOL_PRINT, SIGNAL(clicked(int)), this, 436 BUTTON_TOOL_PRINT, SIGNAL(clicked(int)), this,
437 SLOT(print_slot()), true, i18n("Print...")); 437 SLOT(print_slot()), true, i18n("Print..."));
438 toolBar()->insertSeparator(); 438 toolBar()->insertSeparator();
439 toolBar()->insertButton(picons->loadIcon("pencil", KIcon::Toolbar), 439 toolBar()->insertButton(picons->loadIcon("pencil", KIcon::Toolbar),
440 BUTTON_TOOL_ADD, SIGNAL(clicked(int)), this, 440 BUTTON_TOOL_ADD, SIGNAL(clicked(int)), this,
441 SLOT(addPwd_slot()), true, 441 SLOT(addPwd_slot()), true,
442 i18n("Add password")); 442 i18n("Add password"));
443 toolBar()->insertButton(picons->loadIcon("edit", KIcon::Toolbar), 443 toolBar()->insertButton(picons->loadIcon("edit", KIcon::Toolbar),
444 BUTTON_TOOL_EDIT, SIGNAL(clicked(int)), this, 444 BUTTON_TOOL_EDIT, SIGNAL(clicked(int)), this,
445 SLOT(editPwd_slot()), true, 445 SLOT(editPwd_slot()), true,
446 i18n("Edit password")); 446 i18n("Edit password"));
447 toolBar()->insertButton(picons->loadIcon("editdelete", KIcon::Toolbar), 447 toolBar()->insertButton(picons->loadIcon("editdelete", KIcon::Toolbar),
448 BUTTON_TOOL_DEL, SIGNAL(clicked(int)), this, 448 BUTTON_TOOL_DEL, SIGNAL(clicked(int)), this,
449 SLOT(deletePwd_slot()), true, 449 SLOT(deletePwd_slot()), true,
450 i18n("Delete password")); 450 i18n("Delete password"));
451 toolBar()->insertSeparator(); 451 toolBar()->insertSeparator();
452 toolBar()->insertButton(picons->loadIcon("find", KIcon::Toolbar), 452 toolBar()->insertButton(picons->loadIcon("find", KIcon::Toolbar),
453 BUTTON_TOOL_FIND, SIGNAL(clicked(int)), this, 453 BUTTON_TOOL_FIND, SIGNAL(clicked(int)), this,
454 SLOT(find_slot()), true, i18n("Find entry")); 454 SLOT(find_slot()), true, i18n("Find entry"));
455 toolBar()->insertSeparator(); 455 toolBar()->insertSeparator();
456 toolBar()->insertButton(picons->loadIcon("halfencrypted", KIcon::Toolbar), 456 toolBar()->insertButton(picons->loadIcon("halfencrypted", KIcon::Toolbar),
457 BUTTON_TOOL_LOCK, SIGNAL(clicked(int)), this, 457 BUTTON_TOOL_LOCK, SIGNAL(clicked(int)), this,
458 SLOT(lockWnd_slot()), true, 458 SLOT(lockWnd_slot()), true,
459 i18n("Lock all entries")); 459 i18n("Lock all entries"));
460 toolBar()->insertButton(picons->loadIcon("encrypted", KIcon::Toolbar), 460 toolBar()->insertButton(picons->loadIcon("encrypted", KIcon::Toolbar),
461 BUTTON_TOOL_DEEPLOCK, SIGNAL(clicked(int)), this, 461 BUTTON_TOOL_DEEPLOCK, SIGNAL(clicked(int)), this,
462 SLOT(deepLockWnd_slot()), true, 462 SLOT(deepLockWnd_slot()), true,
463 i18n("Deep-Lock all entries")); 463 i18n("Deep-Lock all entries"));
464 toolBar()->insertButton(picons->loadIcon("decrypted", KIcon::Toolbar), 464 toolBar()->insertButton(picons->loadIcon("decrypted", KIcon::Toolbar),
465 BUTTON_TOOL_UNLOCK, SIGNAL(clicked(int)), this, 465 BUTTON_TOOL_UNLOCK, SIGNAL(clicked(int)), this,
466 SLOT(unlockWnd_slot()), true, 466 SLOT(unlockWnd_slot()), true,
467 i18n("Unlock all entries")); 467 i18n("Unlock all entries"));
468} 468}
469 469
470void PwM::initMetrics() 470void PwM::initMetrics()
471{ 471{
472 QSize s = conf()->confWndMainWndSize(); 472 QSize s = conf()->confWndMainWndSize();
473 if (s.isValid()) 473 if (s.isValid())
474 resize(s); 474 resize(s);
475 else 475 else
476 resize(DEFAULT_SIZE); 476 resize(DEFAULT_SIZE);
477} 477}
478 478
479void PwM::updateCaption() 479void PwM::updateCaption()
480{ 480{
481 setPlainCaption(curDoc()->getTitle() + " - " PROG_NAME " " PACKAGE_VER); 481 setPlainCaption(curDoc()->getTitle() + " - " PROG_NAME " " PACKAGE_VER);
482} 482}
483 483
484void PwM::hideEvent(QHideEvent *) 484void PwM::hideEvent(QHideEvent *)
485{ 485{
486 if (isMinimized()) { 486 if (isMinimized()) {
487 if (init->tray()) { 487 if (init->tray()) {
488 forceMinimizeToTray = true; 488 forceMinimizeToTray = true;
489 close(); 489 close();
490 } 490 }
491 int mmlock = conf()->confGlobMinimizeLock(); 491 int mmlock = conf()->confGlobMinimizeLock();
492 switch (mmlock) { 492 switch (mmlock) {
493 case 0: // don't lock anything 493 case 0: // don't lock anything
494 break; 494 break;
495 case 1: {// normal lock 495 case 1: {// normal lock
496 curDoc()->lockAll(true); 496 curDoc()->lockAll(true);
497 break; 497 break;
498 } case 2: {// deep-lock 498 } case 2: {// deep-lock
499 curDoc()->deepLock(); 499 curDoc()->deepLock();
500 break; 500 break;
501 } default: 501 } default:
502 WARN(); 502 WARN();
503 } 503 }
504 } 504 }
505} 505}
506 506
507void PwM::setVirgin(bool v) 507void PwM::setVirgin(bool v)
508{ 508{
509 if (virgin == v) 509 if (virgin == v)
510 return; 510 return;
511 virgin = v; 511 virgin = v;
512 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVE, !v); 512 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVE, !v);
513 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVEAS, !v); 513 filePopup->setItemEnabled(BUTTON_POPUP_FILE_SAVEAS, !v);
514 filePopup->setItemEnabled(BUTTON_POPUP_FILE_EXPORT, !v); 514 filePopup->setItemEnabled(BUTTON_POPUP_FILE_EXPORT, !v);
515 filePopup->setItemEnabled(BUTTON_POPUP_FILE_PRINT, !v); 515 filePopup->setItemEnabled(BUTTON_POPUP_FILE_PRINT, !v);
516 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_EDIT, !v); 516 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_EDIT, !v);
517 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_DEL, !v); 517 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_DEL, !v);
518 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, !v); 518 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, !v);
519 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_LOCK, !v); 519 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_LOCK, !v);
520 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_DEEPLOCK, !v); 520 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_DEEPLOCK, !v);
521 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_UNLOCK, !v); 521 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_UNLOCK, !v);
522 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_FIND, !v); 522 viewPopup->setItemEnabled(BUTTON_POPUP_VIEW_FIND, !v);
523 toolBar()->setItemEnabled(BUTTON_TOOL_SAVE, !v); 523 toolBar()->setItemEnabled(BUTTON_TOOL_SAVE, !v);
524 toolBar()->setItemEnabled(BUTTON_TOOL_SAVEAS, !v); 524 toolBar()->setItemEnabled(BUTTON_TOOL_SAVEAS, !v);
525 toolBar()->setItemEnabled(BUTTON_TOOL_PRINT, !v); 525 toolBar()->setItemEnabled(BUTTON_TOOL_PRINT, !v);
526 toolBar()->setItemEnabled(BUTTON_TOOL_EDIT, !v); 526 toolBar()->setItemEnabled(BUTTON_TOOL_EDIT, !v);
527 toolBar()->setItemEnabled(BUTTON_TOOL_DEL, !v); 527 toolBar()->setItemEnabled(BUTTON_TOOL_DEL, !v);
528 toolBar()->setItemEnabled(BUTTON_TOOL_LOCK, !v); 528 toolBar()->setItemEnabled(BUTTON_TOOL_LOCK, !v);
529 toolBar()->setItemEnabled(BUTTON_TOOL_DEEPLOCK, !v); 529 toolBar()->setItemEnabled(BUTTON_TOOL_DEEPLOCK, !v);
530 toolBar()->setItemEnabled(BUTTON_TOOL_UNLOCK, !v); 530 toolBar()->setItemEnabled(BUTTON_TOOL_UNLOCK, !v);
531 toolBar()->setItemEnabled(BUTTON_TOOL_FIND, !v); 531 toolBar()->setItemEnabled(BUTTON_TOOL_FIND, !v);
532} 532}
533 533
534void PwM::new_slot() 534void PwM::new_slot()
535{ 535{
536 init->createMainWnd(); 536 init->createMainWnd();
537} 537}
538 538
539//US ENH 539//US ENH
540void PwM::open_slot() 540void PwM::open_slot()
541{ 541{
542 open_slot(""); 542 open_slot("");
543} 543}
544 544
545void PwM::open_slot(QString fn) 545void PwM::open_slot(QString fn)
546{ 546{
547 openDoc(fn); 547 openDoc(fn);
548} 548}
549 549
550PwMDoc * PwM::openDoc(QString filename, bool openDeepLocked) 550PwMDoc * PwM::openDoc(QString filename, bool openDeepLocked)
551{ 551{
552 if (!isVirgin()) { 552 if (!isVirgin()) {
553 // open the document in a new window. 553 // open the document in a new window.
554 PwM *newInstance = init->createMainWnd(); 554 PwM *newInstance = init->createMainWnd();
555 PwMDoc *newDoc = newInstance->openDoc(filename, openDeepLocked); 555 PwMDoc *newDoc = newInstance->openDoc(filename, openDeepLocked);
556 if (!newDoc) { 556 if (!newDoc) {
557 newInstance->setForceQuit(true); 557 newInstance->setForceQuit(true);
558 delete_and_null(newInstance); 558 delete_and_null(newInstance);
559 } 559 }
560 return newDoc; 560 return newDoc;
561 } 561 }
562 562
563 if (!curDoc()->openDocUi(curDoc(), filename, openDeepLocked)) 563 if (!curDoc()->openDocUi(curDoc(), filename, openDeepLocked))
564 return 0; 564 return 0;
565 showStatMsg(i18n("Successfully opened file.")); 565 showStatMsg(i18n("Successfully opened file."));
566 updateCaption(); 566 updateCaption();
567 setVirgin(false); 567 setVirgin(false);
568 return curDoc(); 568 return curDoc();
569} 569}
570 570
571PwMView * PwM::makeNewListView(PwMDoc *doc) 571PwMView * PwM::makeNewListView(PwMDoc *doc)
572{ 572{
573 PwMView *ret = new PwMView(this, this, doc); 573 PwMView *ret = new PwMView(this, this, doc);
574 ret->setFont(conf()->confGlobEntryFont()); 574 ret->setFont(conf()->confGlobEntryFont());
575 ret->show(); 575 ret->show();
576 return ret; 576 return ret;
577} 577}
578 578
579void PwM::close_slot() 579void PwM::close_slot()
580{ 580{
581 close(); 581 close();
582} 582}
583 583
584void PwM::quitButton_slot() 584void PwM::quitButton_slot()
585{ 585{
586 init->shutdownApp(0); 586 init->shutdownApp(0);
587} 587}
588 588
589void PwM::save_slot() 589void PwM::save_slot()
590{ 590{
591 save(); 591 save();
592} 592}
593 593
594bool PwM::save() 594bool PwM::save()
595{ 595{
596 if (!curDoc()->saveDocUi(curDoc())) 596 if (!curDoc()->saveDocUi(curDoc()))
597 return false; 597 return false;
598 showStatMsg(i18n("Successfully saved data.")); 598 showStatMsg(i18n("Successfully saved data."));
599 updateCaption(); 599 updateCaption();
600 return true; 600 return true;
601} 601}
602 602
603void PwM::saveAs_slot() 603void PwM::saveAs_slot()
604{ 604{
605 saveAs(); 605 saveAs();
606} 606}
607 607
608bool PwM::saveAs() 608bool PwM::saveAs()
609{ 609{
610 if (!curDoc()->saveAsDocUi(curDoc())) 610 if (!curDoc()->saveAsDocUi(curDoc()))
611 return false; 611 return false;
612 showStatMsg(i18n("Successfully saved data.")); 612 showStatMsg(i18n("Successfully saved data."));
613 updateCaption(); 613 updateCaption();
614 return true; 614 return true;
615} 615}
616 616
617//US ENH : changed code to run with older MOC 617//US ENH : changed code to run with older MOC
618void PwM::addPwd_slot() 618void PwM::addPwd_slot()
619{ 619{
620 addPwd_slot1(0, 0); 620 addPwd_slot1(0, 0);
621} 621}
622 622
623void PwM::addPwd_slot1(QString *pw, PwMDoc *_doc) 623void PwM::addPwd_slot1(QString *pw, PwMDoc *_doc)
624{ 624{
625 PwMDoc *doc; 625 PwMDoc *doc;
626 if (_doc) { 626 if (_doc) {
627 doc = _doc; 627 doc = _doc;
628 } else { 628 } else {
629 doc = curDoc(); 629 doc = curDoc();
630 } 630 }
631 PWM_ASSERT(doc); 631 PWM_ASSERT(doc);
632 doc->timer()->getLock(DocTimer::id_autoLockTimer); 632 doc->timer()->getLock(DocTimer::id_autoLockTimer);
633#ifndef PWM_EMBEDDED 633#ifndef PWM_EMBEDDED
634 AddEntryWndImpl w; 634 AddEntryWndImpl w;
635#else 635#else
636 AddEntryWndImpl w(doc, this, "addentrywndimpl"); 636 AddEntryWndImpl w(doc, this, "addentrywndimpl");
637#endif 637#endif
638 638
639 vector<string> catList; 639 vector<string> catList;
640 doc->getCategoryList(&catList); 640 doc->getCategoryList(&catList);
641 unsigned i, size = catList.size(); 641 unsigned i, size = catList.size();
642 for (i = 0; i < size; ++i) { 642 for (i = 0; i < size; ++i) {
643 w.addCategory(catList[i].c_str()); 643 w.addCategory(catList[i].c_str());
644 } 644 }
645 w.setCurrCategory(view->getCurrentCategory()); 645 w.setCurrCategory(view->getCurrentCategory());
646 if (pw) 646 if (pw)
647 w.pwLineEdit->setText(*pw); 647 w.pwLineEdit->setText(*pw);
648 648
649 tryAgain: 649 tryAgain:
650 if (w.exec() == 1) 650 if (w.exec() == 1)
651 { 651 {
652 PwMDataItem d; 652 PwMDataItem d;
653 653
654 //US BUG: to initialize all values of curEntr with meaningfulldata, 654 //US BUG: to initialize all values of curEntr with meaningfulldata,
655 // we call clear on it. Reason: Metadata will be uninitialized otherwise. 655 // we call clear on it. Reason: Metadata will be uninitialized otherwise.
656 // another option would be to create a constructor for PwMDataItem 656 // another option would be to create a constructor for PwMDataItem
657 d.clear(true); 657 d.clear(true);
658 658
659 d.desc = w.getDescription().latin1(); 659 d.desc = w.getDescription().latin1();
660 d.name = w.getUsername().latin1(); 660 d.name = w.getUsername().latin1();
661 d.pw = w.getPassword().latin1(); 661 d.pw = w.getPassword().latin1();
662 d.comment = w.getComment().latin1(); 662 d.comment = w.getComment().latin1();
663 d.url = w.getUrl().latin1(); 663 d.url = w.getUrl().latin1();
664 d.launcher = w.getLauncher().latin1(); 664 d.launcher = w.getLauncher().latin1();
665 PwMerror ret = doc->addEntry(w.getCategory(), &d); 665 PwMerror ret = doc->addEntry(w.getCategory(), &d);
666 if (ret == e_entryExists) { 666 if (ret == e_entryExists) {
667 KMessageBox::error(this, 667 KMessageBox::error(this,
668 i18n 668 i18n
669 ("An entry with this \"Description\",\n" 669 ("An entry with this \"Description\",\n"
670 "does already exist.\n" 670 "does already exist.\n"
671 "Please select another description."), 671 "Please select another description."),
672 i18n("entry already exists.")); 672 i18n("entry already exists."));
673 goto tryAgain; 673 goto tryAgain;
674 } else if (ret == e_maxAllowedEntr) { 674 } else if (ret == e_maxAllowedEntr) {
675 KMessageBox::error(this, i18n("The maximum possible number of\nentries" 675 KMessageBox::error(this, i18n("The maximum possible number of\nentries"
676 "has been reached.\nYou can't add more entries."), 676 "has been reached.\nYou can't add more entries."),
677 i18n("maximum number of entries")); 677 i18n("maximum number of entries"));
678 doc->timer()->putLock(DocTimer::id_autoLockTimer); 678 doc->timer()->putLock(DocTimer::id_autoLockTimer);
679 return; 679 return;
680 } 680 }
681 } 681 }
682 setVirgin(false); 682 setVirgin(false);
683 doc->timer()->putLock(DocTimer::id_autoLockTimer); 683 doc->timer()->putLock(DocTimer::id_autoLockTimer);
684} 684}
685 685
686//US ENH : changed code to run with older MOC 686//US ENH : changed code to run with older MOC
687void PwM::editPwd_slot() 687void PwM::editPwd_slot()
688{ 688{
689 editPwd_slot3(0,0,0); 689 editPwd_slot3(0,0,0);
690} 690}
691 691
692void PwM::editPwd_slot1(const QString *category) 692void PwM::editPwd_slot1(const QString *category)
693{ 693{
694 editPwd_slot3(category, 0, 0); 694 editPwd_slot3(category, 0, 0);
695} 695}
696 696
697void PwM::editPwd_slot3(const QString *category, const int *index, 697void PwM::editPwd_slot3(const QString *category, const int *index,
698 PwMDoc *_doc) 698 PwMDoc *_doc)
699{ 699{
700 PwMDoc *doc; 700 PwMDoc *doc;
701 if (_doc) { 701 if (_doc) {
702 doc = _doc; 702 doc = _doc;
703 } else { 703 } else {
704 doc = curDoc(); 704 doc = curDoc();
705 } 705 }
706 PWM_ASSERT(doc); 706 PWM_ASSERT(doc);
707 if (doc->isDocEmpty()) 707 if (doc->isDocEmpty())
708 return; 708 return;
709 if (doc->isDeepLocked()) 709 if (doc->isDeepLocked())
710 return; 710 return;
711 doc->timer()->getLock(DocTimer::id_autoLockTimer); 711 doc->timer()->getLock(DocTimer::id_autoLockTimer);
712 unsigned int curEntryIndex; 712 unsigned int curEntryIndex;
713 if (index) { 713 if (index) {
714 curEntryIndex = *index; 714 curEntryIndex = *index;
715 } else { 715 } else {
716 if (!(view->getCurEntryIndex(&curEntryIndex))) { 716 if (!(view->getCurEntryIndex(&curEntryIndex))) {
717 printDebug("couldn't get index. Maybe we have a binary entry here."); 717 printDebug("couldn't get index. Maybe we have a binary entry here.");
718 doc->timer()->putLock(DocTimer::id_autoLockTimer); 718 doc->timer()->putLock(DocTimer::id_autoLockTimer);
719 return; 719 return;
720 } 720 }
721 } 721 }
722 QString curCategory; 722 QString curCategory;
723 if (category) { 723 if (category) {
724 curCategory = *category; 724 curCategory = *category;
725 } else { 725 } else {
726 curCategory = view->getCurrentCategory(); 726 curCategory = view->getCurrentCategory();
727 } 727 }
728 PwMDataItem currItem; 728 PwMDataItem currItem;
729 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) { 729 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) {
730 doc->timer()->putLock(DocTimer::id_autoLockTimer); 730 doc->timer()->putLock(DocTimer::id_autoLockTimer);
731 return; 731 return;
732 } 732 }
733 BUG_ON(currItem.binary); 733 BUG_ON(currItem.binary);
734 734
735 AddEntryWndImpl w(doc); 735 AddEntryWndImpl w(doc);
736 vector<string> catList; 736 vector<string> catList;
737 doc->getCategoryList(&catList); 737 doc->getCategoryList(&catList);
738 unsigned i, size = catList.size(); 738 unsigned i, size = catList.size();
739 for (i = 0; i < size; ++i) { 739 for (i = 0; i < size; ++i) {
740 w.addCategory(catList[i].c_str()); 740 w.addCategory(catList[i].c_str());
741 } 741 }
742 w.setCurrCategory(curCategory); 742 w.setCurrCategory(curCategory);
743 w.setDescription(currItem.desc.c_str()); 743 w.setDescription(currItem.desc.c_str());
744 w.setUsername(currItem.name.c_str()); 744 w.setUsername(currItem.name.c_str());
745 w.setPassword(currItem.pw.c_str()); 745 w.setPassword(currItem.pw.c_str());
746 w.setUrl(currItem.url.c_str()); 746 w.setUrl(currItem.url.c_str());
747 w.setLauncher(currItem.launcher.c_str()); 747 w.setLauncher(currItem.launcher.c_str());
748 w.setComment(currItem.comment.c_str()); 748 w.setComment(currItem.comment.c_str());
749 if (w.exec() == 1) { 749 if (w.exec() == 1) {
750 currItem.desc = w.getDescription().latin1(); 750 currItem.desc = w.getDescription().latin1();
751 currItem.name = w.getUsername().latin1(); 751 currItem.name = w.getUsername().latin1();
752 currItem.pw = w.getPassword().latin1(); 752 currItem.pw = w.getPassword().latin1();
753 currItem.comment = w.getComment().latin1(); 753 currItem.comment = w.getComment().latin1();
754 currItem.url = w.getUrl().latin1(); 754 currItem.url = w.getUrl().latin1();
755 currItem.launcher = w.getLauncher().latin1(); 755 currItem.launcher = w.getLauncher().latin1();
756 if (!doc->editEntry(curCategory, w.getCategory(), 756 if (!doc->editEntry(curCategory, w.getCategory(),
757 curEntryIndex, &currItem)) { 757 curEntryIndex, &currItem)) {
758 KMessageBox::error(this, 758 KMessageBox::error(this,
759 i18n("Couldn't edit the entry.\n" 759 i18n("Couldn't edit the entry.\n"
760 "Maybe you changed the category and\n" 760 "Maybe you changed the category and\n"
761 "this entry is already present\nin the new " 761 "this entry is already present\nin the new "
762 "category?"), 762 "category?"),
763 i18n("couldn't edit entry.")); 763 i18n("couldn't edit entry."));
764 doc->timer()->putLock(DocTimer::id_autoLockTimer); 764 doc->timer()->putLock(DocTimer::id_autoLockTimer);
765 return; 765 return;
766 } 766 }
767 } 767 }
768 doc->timer()->putLock(DocTimer::id_autoLockTimer); 768 doc->timer()->putLock(DocTimer::id_autoLockTimer);
769} 769}
770 770
771void PwM::deletePwd_slot() 771void PwM::deletePwd_slot()
772{ 772{
773 PWM_ASSERT(curDoc()); 773 PWM_ASSERT(curDoc());
774 if (curDoc()->isDocEmpty()) 774 if (curDoc()->isDocEmpty())
775 return; 775 return;
776 if (curDoc()->isDeepLocked()) 776 if (curDoc()->isDeepLocked())
777 return; 777 return;
778 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 778 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
779 unsigned int curEntryIndex = 0; 779 unsigned int curEntryIndex = 0;
780 if (!(view->getCurEntryIndex(&curEntryIndex))) { 780 if (!(view->getCurEntryIndex(&curEntryIndex))) {
781 printDebug("couldn't get index"); 781 printDebug("couldn't get index");
782 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 782 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
783 return; 783 return;
784 } 784 }
785 785
786 PwMDataItem currItem; 786 PwMDataItem currItem;
787 QString curCategory = view->getCurrentCategory(); 787 QString curCategory = view->getCurrentCategory();
788 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) { 788 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) {
789 printDebug("couldn't get entry"); 789 printDebug("couldn't get entry");
790 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 790 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
791 return; 791 return;
792 } 792 }
793 if (KMessageBox:: 793 if (KMessageBox::
794 questionYesNo(this, 794 questionYesNo(this,
795 i18n 795 i18n
796 ("Do you really want to delete\nthe selected entry") + 796 ("Do you really want to delete\nthe selected entry") +
797 " \n\"" + QString(currItem.desc.c_str()) 797 " \n\"" + QString(currItem.desc.c_str())
798 + "\" ?", i18n("delete?")) 798 + "\" ?", i18n("delete?"))
799 == KMessageBox::Yes) { 799 == KMessageBox::Yes) {
800 800
801 curDoc()->delEntry(curCategory, curEntryIndex); 801 curDoc()->delEntry(curCategory, curEntryIndex);
802 } 802 }
803 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 803 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
804} 804}
805 805
806void PwM::changeMasterPwd_slot() 806void PwM::changeMasterPwd_slot()
807{ 807{
808 PWM_ASSERT(curDoc()); 808 PWM_ASSERT(curDoc());
809 curDoc()->changeCurrentPw(); 809 curDoc()->changeCurrentPw();
810} 810}
811 811
812void PwM::lockWnd_slot() 812void PwM::lockWnd_slot()
813{ 813{
814 PWM_ASSERT(curDoc()); 814 PWM_ASSERT(curDoc());
815 curDoc()->lockAll(true); 815 curDoc()->lockAll(true);
816} 816}
817 817
818void PwM::deepLockWnd_slot() 818void PwM::deepLockWnd_slot()
819{ 819{
820 PWM_ASSERT(curDoc()); 820 PWM_ASSERT(curDoc());
821 curDoc()->deepLock(); 821 curDoc()->deepLock();
822} 822}
823 823
824void PwM::unlockWnd_slot() 824void PwM::unlockWnd_slot()
825{ 825{
826 PWM_ASSERT(curDoc()); 826 PWM_ASSERT(curDoc());
827 curDoc()->lockAll(false); 827 curDoc()->lockAll(false);
828} 828}
829 829
830void PwM::config_slot() 830void PwM::config_slot()
831{ 831{
832 int oldStyle = conf()->confWndMainViewStyle(); 832 int oldStyle = conf()->confWndMainViewStyle();
833#ifdef PWM_EMBEDDED 833#ifdef PWM_EMBEDDED
834 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"pwmconfigdialog", true ); 834 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"pwmconfigdialog", true );
835 835
836 KCMPwmConfig* pwmcfg = new KCMPwmConfig( ConfigureDialog->getNewVBoxPage(i18n( "PwManager")) , "KCMPwmConfig" ); 836 KCMPwmConfig* pwmcfg = new KCMPwmConfig( ConfigureDialog->getNewVBoxPage(i18n( "PwManager")) , "KCMPwmConfig" );
837 ConfigureDialog->addModule(pwmcfg ); 837 ConfigureDialog->addModule(pwmcfg );
838 838
839 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 839 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
840 ConfigureDialog->addModule(kdelibcfg ); 840 ConfigureDialog->addModule(kdelibcfg );
841 841
842#ifndef DESKTOP_VERSION 842#ifndef DESKTOP_VERSION
843 ConfigureDialog->showMaximized(); 843 ConfigureDialog->showMaximized();
844#endif 844#endif
845 if ( ConfigureDialog->exec() ) 845 if ( ConfigureDialog->exec() )
846 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 846 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
847 delete ConfigureDialog; 847 delete ConfigureDialog;
848 848
849#else //PWM_EMBEDDED 849#else //PWM_EMBEDDED
850 // display the configuration window (modal mode) 850 // display the configuration window (modal mode)
851 if (!conf()->showConfWnd(this)) 851 if (!conf()->showConfWnd(this))
852 return; 852 return;
853#endif 853#endif
854 854
855 int newStyle = conf()->confWndMainViewStyle(); 855 int newStyle = conf()->confWndMainViewStyle();
856 // reinitialize tray 856 // reinitialize tray
857 init->initTray(); 857 init->initTray();
858 // reinitialize KWallet emulation 858 // reinitialize KWallet emulation
859 init->initKWalletEmu(); 859 init->initKWalletEmu();
860 860
861 PwMDocList *_dl = PwMDoc::getOpenDocList(); 861 PwMDocList *_dl = PwMDoc::getOpenDocList();
862 const vector<PwMDocList::listItem> *dl = _dl->getList(); 862 const vector<PwMDocList::listItem> *dl = _dl->getList();
863 vector<PwMDocList::listItem>::const_iterator i = dl->begin(), 863 vector<PwMDocList::listItem>::const_iterator i = dl->begin(),
864 end = dl->end(); 864 end = dl->end();
865 PwMDoc *doc; 865 PwMDoc *doc;
866 while (i != end) { 866 while (i != end) {
867 doc = (*i).doc; 867 doc = (*i).doc;
868 // unlock-without-mpw timeout 868 // unlock-without-mpw timeout
869 doc->timer()->start(DocTimer::id_mpwTimer); 869 doc->timer()->start(DocTimer::id_mpwTimer);
870 // auto-lock timeout 870 // auto-lock timeout
871 doc->timer()->start(DocTimer::id_autoLockTimer); 871 doc->timer()->start(DocTimer::id_autoLockTimer);
872 ++i; 872 ++i;
873 } 873 }
874 874
875 const QValueList<PwM *> *ml = init->mainWndList(); 875 const QValueList<PwM *> *ml = init->mainWndList();
876#ifndef PWM_EMBEDDED 876#ifndef PWM_EMBEDDED
877 QValueList<PwM *>::const_iterator i2 = ml->begin(), 877 QValueList<PwM *>::const_iterator i2 = ml->begin(),
878 end2 = ml->end(); 878 end2 = ml->end();
879#else 879#else
880 QValueList<PwM *>::ConstIterator i2 = ml->begin(), 880 QValueList<PwM *>::ConstIterator i2 = ml->begin(),
881 end2 = ml->end(); 881 end2 = ml->end();
882#endif 882#endif
883 PwM *pwm; 883 PwM *pwm;
884 while (i2 != end2) { 884 while (i2 != end2) {
885 pwm = *i2; 885 pwm = *i2;
886 // reinitialize the window style. 886 // reinitialize the window style.
887 if (oldStyle != newStyle) 887 if (oldStyle != newStyle)
888 pwm->curView()->initStyle(newStyle); 888 pwm->curView()->initStyle(newStyle);
889 // set the new font 889 // set the new font
890 pwm->curView()->setFont(conf()->confGlobEntryFont()); 890 pwm->curView()->setFont(conf()->confGlobEntryFont());
891 ++i2; 891 ++i2;
892 } 892 }
893} 893}
894 894
895void PwM::activateMpButton(bool activate) 895void PwM::activateMpButton(bool activate)
896{ 896{
897 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate); 897 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate);
898} 898}
899 899
900void PwM::closeEvent(QCloseEvent *e) 900void PwM::closeEvent(QCloseEvent *e)
901{ 901{
902 qDebug("PwM::closeEvent "); 902 qDebug("PwM::closeEvent ");
903 emit closed( this ); 903 emit closed( this );
904 return; 904 return;
905 e->accept(); 905 e->accept();
906} 906}
907 907
908void PwM::docClosed(PwMDoc *doc) 908void PwM::docClosed(PwMDoc *doc)
909{ 909{
910 qDebug("PwM::docClosed "); 910 qDebug("PwM::docClosed ");
911 PARAM_UNUSED(doc); 911 PARAM_UNUSED(doc);
912 PWM_ASSERT(doc == curDoc()); 912 PWM_ASSERT(doc == curDoc());
913 close(); 913 close();
914} 914}
915 915
916void PwM::find_slot() 916void PwM::find_slot()
917{ 917{
918 PWM_ASSERT(curDoc()); 918 PWM_ASSERT(curDoc());
919 if (curDoc()->isDocEmpty()) 919 if (curDoc()->isDocEmpty())
920 return; 920 return;
921 if (curDoc()->isDeepLocked()) 921 if (curDoc()->isDeepLocked())
922 return; 922 return;
923 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 923 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
924 FindWndImpl findWnd(view); 924 FindWndImpl findWnd(view);
925 findWnd.exec(); 925 findWnd.exec();
926 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 926 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
927} 927}
928 928
929void PwM::exportToText() 929void PwM::exportToText()
930{ 930{
931 PWM_ASSERT(curDoc()); 931 PWM_ASSERT(curDoc());
932 if (curDoc()->isDocEmpty()) { 932 if (curDoc()->isDocEmpty()) {
933 KMessageBox::information(this, 933 KMessageBox::information(this,
934 i18n 934 i18n
935 ("Sorry, there's nothing to export.\n" 935 ("Sorry, there's nothing to export.\n"
936 "Please first add some passwords."), 936 "Please first add some passwords."),
937 i18n("nothing to do")); 937 i18n("nothing to do"));
938 return; 938 return;
939 } 939 }
940 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 940 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
941 QString fn(KFileDialog::getSaveFileName(QString::null, 941 QString fn(KFileDialog::getSaveFileName(QString::null,
942 i18n("*|plain-text file"), 942 i18n("*|plain-text file"),
943 this)); 943 this));
944 if (fn == "") { 944 if (fn == "") {
945 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 945 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
946 return; 946 return;
947 } 947 }
948 948
949 PwMerror ret = curDoc()->exportToText(&fn); 949 PwMerror ret = curDoc()->exportToText(&fn);
950 if (ret != e_success) { 950 if (ret != e_success) {
951 KMessageBox::error(this, 951 KMessageBox::error(this,
952 i18n("Error: Couldn't write to file.\n" 952 i18n("Error: Couldn't write to file.\n"
953 "Please check if you have permission to write\n" 953 "Please check if you have permission to write\n"
954 "to the file in that directory."), 954 "to the file in that directory."),
955 i18n("error while writing")); 955 i18n("error while writing"));
956 } else 956 } else
957 showStatMsg(i18n("Successfully exported data.")); 957 showStatMsg(i18n("Successfully exported data."));
958 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 958 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
959} 959}
960 960
961bool PwM::importFromText() 961bool PwM::importFromText()
962{ 962{
963 if (!isVirgin()) { 963 if (!isVirgin()) {
964 if (KMessageBox::questionYesNo(this, 964 if (KMessageBox::questionYesNo(this,
965 i18n("Do you want to import the data\n" 965 i18n("Do you want to import the data\n"
966 "into the current document? (If you\n" 966 "into the current document? (If you\n"
967 "select \"no\", a new document will be\n" 967 "select \"no\", a new document will be\n"
968 "opened.)"), 968 "opened.)"),
969 i18n("import into this document?")) 969 i18n("import into this document?"))
970 == KMessageBox::No) { 970 == KMessageBox::No) {
971 // import the data to a new window. 971 // import the data to a new window.
972 PwM *newInstance = init->createMainWnd(); 972 PwM *newInstance = init->createMainWnd();
973 bool ok = newInstance->importFromText(); 973 bool ok = newInstance->importFromText();
974 if (!ok) { 974 if (!ok) {
975 newInstance->setForceQuit(true); 975 newInstance->setForceQuit(true);
976 delete_and_null(newInstance); 976 delete_and_null(newInstance);
977 } 977 }
978 return ok; 978 return ok;
979 } 979 }
980 } 980 }
981 981
982 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 982 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
983 PwMerror ret; 983 PwMerror ret;
984 QString path(KFileDialog::getOpenFileName(QString::null, 984 QString path(KFileDialog::getOpenFileName(QString::null,
985 i18n("*|PWM-exported text file"), 985 i18n("*|PWM-exported text file"),
986 this)); 986 this));
987 if (path == "") 987 if (path == "")
988 goto cancelImport; 988 goto cancelImport;
989 989
990 ret = curDoc()->importFromText(&path, 0); 990 ret = curDoc()->importFromText(&path, 0);
991 if (ret == e_fileFormat) { 991 if (ret == e_fileFormat) {
992 KMessageBox::error(this, 992 KMessageBox::error(this,
993 i18n("Could not read file-format.\n" 993 i18n("Could not read file-format.\n"
994 "This seems to be _not_ a valid file\n" 994 "This seems to be _not_ a valid file\n"
995 "exported by PwM."), 995 "exported by PwM."),
996 i18n("invalid file-format")); 996 i18n("invalid file-format"));
997 goto cancelImport; 997 goto cancelImport;
998 } else if (ret == e_invalidArg) { 998 } else if (ret == e_invalidArg) {
999 BUG(); 999 BUG();
1000 goto cancelImport; 1000 goto cancelImport;
1001 } else if (ret != e_success) { 1001 } else if (ret != e_success) {
1002 KMessageBox::error(this, 1002 KMessageBox::error(this,
1003 i18n("Could not import file!\n" 1003 i18n("Could not import file!\n"
1004 "Do you have permission to read this file?\n" 1004 "Do you have permission to read this file?\n"
1005 "Do you have enough free memory?"), 1005 "Do you have enough free memory?"),
1006 i18n("import failed")); 1006 i18n("import failed"));
1007 goto cancelImport; 1007 goto cancelImport;
1008 } 1008 }
1009 setVirgin(false); 1009 setVirgin(false);
1010 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1010 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1011 return true; 1011 return true;
1012 1012
1013cancelImport: 1013cancelImport:
1014 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1014 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1015 return false; 1015 return false;
1016} 1016}
1017 1017
1018void PwM::exportToGpasman() 1018void PwM::exportToGpasman()
1019{ 1019{
1020 PWM_ASSERT(curDoc()); 1020 PWM_ASSERT(curDoc());
1021 if (curDoc()->isDocEmpty()) { 1021 if (curDoc()->isDocEmpty()) {
1022 KMessageBox::information(this, 1022 KMessageBox::information(this,
1023 i18n 1023 i18n
1024 ("Sorry, there's nothing to export.\n" 1024 ("Sorry, there's nothing to export.\n"
1025 "Please first add some passwords."), 1025 "Please first add some passwords."),
1026 i18n("nothing to do")); 1026 i18n("nothing to do"));
1027 return; 1027 return;
1028 } 1028 }
1029 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1029 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1030 QString fn(KFileDialog::getSaveFileName(QString::null, 1030 QString fn(KFileDialog::getSaveFileName(QString::null,
1031 i18n("*|Gpasman or Kpasman file"), 1031 i18n("*|Gpasman or Kpasman file"),
1032 this)); 1032 this));
1033 if (fn == "") { 1033 if (fn == "") {
1034 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1034 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1035 return; 1035 return;
1036 } 1036 }
1037 1037
1038 PwMerror ret = curDoc()->exportToGpasman(&fn); 1038 PwMerror ret = curDoc()->exportToGpasman(&fn);
1039 if (ret != e_success) { 1039 if (ret != e_success) {
1040 if (ret == e_noPw) { 1040 if (ret == e_noPw) {
1041 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1041 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1042 return; 1042 return;
1043 } 1043 }
1044 KMessageBox::error(this, 1044 KMessageBox::error(this,
1045 i18n("Error: Couldn't write to file.\n" 1045 i18n("Error: Couldn't write to file.\n"
1046 "Please check if you have permission to write " 1046 "Please check if you have permission to write "
1047 "to the file in that directory."), 1047 "to the file in that directory."),
1048 i18n("error while writing")); 1048 i18n("error while writing"));
1049 } else 1049 } else
1050 showStatMsg(i18n("Successfully exported data.")); 1050 showStatMsg(i18n("Successfully exported data."));
1051 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1051 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1052} 1052}
1053 1053
1054 1054
1055 1055
1056void PwM::exportToCsv() 1056void PwM::exportToCsv()
1057{ 1057{
1058 PWM_ASSERT(curDoc()); 1058 PWM_ASSERT(curDoc());
1059 if (curDoc()->isDocEmpty()) { 1059 if (curDoc()->isDocEmpty()) {
1060 KMessageBox::information(this, 1060 KMessageBox::information(this,
1061 i18n 1061 i18n
1062 ("Sorry, there is nothing to export;\n" 1062 ("Sorry, there is nothing to export;\n"
1063 "please add some passwords first."), 1063 "please add some passwords first."),
1064 i18n("Nothing to Do")); 1064 i18n("Nothing to Do"));
1065 return; 1065 return;
1066 } 1066 }
1067 1067
1068 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1068 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1069 QString fn(KFileDialog::getSaveFileName("*.csv", i18n("*|CSV Text File"), this)); 1069 QString fn(KFileDialog::getSaveFileName("*.csv", i18n("*|CSV Text File"), this));
1070 if (fn.isEmpty()) { 1070 if (fn.isEmpty()) {
1071 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1071 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1072 return; 1072 return;
1073 } 1073 }
1074 1074
1075 Csv csv(this); 1075 Csv csv(this);
1076 if (!csv.exportData(fn, curDoc())) { 1076 if (!csv.exportData(fn, curDoc())) {
1077 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1077 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1078 showStatMsg(i18n("CSV file export failed.")); 1078 showStatMsg(i18n("CSV file export failed."));
1079 return; 1079 return;
1080 } 1080 }
1081 showStatMsg(i18n("Successfully exported data.")); 1081 showStatMsg(i18n("Successfully exported data."));
1082 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1082 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1083} 1083}
1084 1084
1085bool PwM::importCsv() 1085bool PwM::importCsv()
1086{ 1086{
1087 Csv csv(this); 1087 Csv csv(this);
1088 if (!isVirgin()) { 1088 if (!isVirgin()) {
1089 if (KMessageBox::questionYesNo(this, 1089 if (KMessageBox::questionYesNo(this,
1090 i18n("Do you want to import the data\n" 1090 i18n("Do you want to import the data\n"
1091 "into the current document? (If you\n" 1091 "into the current document? (If you\n"
1092 "select \"no\", a new document will be\n" 1092 "select \"no\", a new document will be\n"
1093 "opened.)"), 1093 "opened.)"),
1094 i18n("Import into This Document?")) 1094 i18n("Import into This Document?"))
1095 == KMessageBox::No) { 1095 == KMessageBox::No) {
1096 // import the data to a new window. 1096 // import the data to a new window.
1097 PwM *newInstance = init->createMainWnd(); 1097 PwM *newInstance = init->createMainWnd();
1098 bool ok = newInstance->importCsv(); 1098 bool ok = newInstance->importCsv();
1099 if (!ok) { 1099 if (!ok) {
1100 newInstance->setForceQuit(true); 1100 newInstance->setForceQuit(true);
1101 delete_and_null(newInstance); 1101 delete_and_null(newInstance);
1102 } 1102 }
1103 return ok; 1103 return ok;
1104 } 1104 }
1105 } 1105 }
1106 1106
1107 QString filename = KFileDialog::getOpenFileName("*.csv", i18n("*|CSV Text File"), this); 1107 QString filename = KFileDialog::getOpenFileName("*.csv", i18n("*|CSV Text File"), this);
1108 if (filename.isEmpty()) 1108 if (filename.isEmpty())
1109 return false; 1109 return false;
1110 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1110 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1111 if (!csv.importData(filename, curDoc())) { 1111 if (!csv.importData(filename, curDoc())) {
1112 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1112 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1113 showStatMsg(i18n("CSV file import failed.")); 1113 showStatMsg(i18n("CSV file import failed."));
1114 return false; 1114 return false;
1115 } 1115 }
1116 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1116 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1117 KMessageBox::information(this, 1117 KMessageBox::information(this,
1118 i18n("Successfully imported the CSV data\n" 1118 i18n("Successfully imported the CSV data\n"
1119 "into the current document."), i18n("Successfully Imported")); 1119 "into the current document."), i18n("Successfully Imported"));
1120 showStatMsg(i18n("Successfully imported")); 1120 showStatMsg(i18n("Successfully imported"));
1121 setVirgin(false); 1121 setVirgin(false);
1122 return true; 1122 return true;
1123} 1123}
1124 1124
1125 1125
1126void PwM::exportToKWallet() 1126void PwM::exportToKWallet()
1127{ 1127{
1128#ifdef CONFIG_KWALLETIF 1128#ifdef CONFIG_KWALLETIF
1129 if (!checkAndAskForKWalletEmu()) 1129 if (!checkAndAskForKWalletEmu())
1130 return; 1130 return;
1131 PWM_ASSERT(curDoc()); 1131 PWM_ASSERT(curDoc());
1132 if (curDoc()->isDocEmpty()) { 1132 if (curDoc()->isDocEmpty()) {
1133 KMessageBox::information(this, 1133 KMessageBox::information(this,
1134 i18n 1134 i18n
1135 ("Sorry, there's nothing to export.\n" 1135 ("Sorry, there's nothing to export.\n"
1136 "Please first add some passwords."), 1136 "Please first add some passwords."),
1137 i18n("nothing to do")); 1137 i18n("nothing to do"));
1138 init->initKWalletEmu(); 1138 init->initKWalletEmu();
1139 return; 1139 return;
1140 } 1140 }
1141 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1141 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1142 KWalletIf walletIf(this); 1142 KWalletIf walletIf(this);
1143 if (walletIf.kwalletExport(curDoc())) { 1143 if (walletIf.kwalletExport(curDoc())) {
1144 KMessageBox::information(this, 1144 KMessageBox::information(this,
1145 i18n("Successfully exported the data of the current " 1145 i18n("Successfully exported the data of the current "
1146 "document to KWallet."), 1146 "document to KWallet."),
1147 i18n("Successfully exported data.")); 1147 i18n("Successfully exported data."));
1148 showStatMsg(i18n("Successfully exported data.")); 1148 showStatMsg(i18n("Successfully exported data."));
1149 } 1149 }
1150 init->initKWalletEmu(); 1150 init->initKWalletEmu();
1151 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1151 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1152#endif // CONFIG_KWALLETIF 1152#endif // CONFIG_KWALLETIF
1153} 1153}
1154 1154
1155bool PwM::importFromGpasman() 1155bool PwM::importFromGpasman()
1156{ 1156{
1157 if (!isVirgin()) { 1157 if (!isVirgin()) {
1158 if (KMessageBox::questionYesNo(this, 1158 if (KMessageBox::questionYesNo(this,
1159 i18n("Do you want to import the data\n" 1159 i18n("Do you want to import the data\n"
1160 "into the current document? (If you\n" 1160 "into the current document? (If you\n"
1161 "select \"no\", a new document will be\n" 1161 "select \"no\", a new document will be\n"
1162 "opened.)"), 1162 "opened.)"),
1163 i18n("import into this document?")) 1163 i18n("import into this document?"))
1164 == KMessageBox::No) { 1164 == KMessageBox::No) {
1165 // import the data to a new window. 1165 // import the data to a new window.
1166 PwM *newInstance = init->createMainWnd(); 1166 PwM *newInstance = init->createMainWnd();
1167 bool ok = newInstance->importFromGpasman(); 1167 bool ok = newInstance->importFromGpasman();
1168 if (!ok) { 1168 if (!ok) {
1169 newInstance->setForceQuit(true); 1169 newInstance->setForceQuit(true);
1170 delete_and_null(newInstance); 1170 delete_and_null(newInstance);
1171 } 1171 }
1172 return ok; 1172 return ok;
1173 } 1173 }
1174 } 1174 }
1175 1175
1176 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1176 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1177 PwMerror ret; 1177 PwMerror ret;
1178 QString path(KFileDialog::getOpenFileName(QString::null, 1178 QString path(KFileDialog::getOpenFileName(QString::null,
1179 i18n("*|Gpasman or Kpasman file"), this)); 1179 i18n("*|Gpasman or Kpasman file"), this));
1180 if (path == "") 1180 if (path == "")
1181 goto cancelImport; 1181 goto cancelImport;
1182 ret = curDoc()->importFromGpasman(&path); 1182 ret = curDoc()->importFromGpasman(&path);
1183 if (ret == e_wrongPw) { 1183 if (ret == e_wrongPw) {
1184 if (KMessageBox::questionYesNo(this, 1184 if (KMessageBox::questionYesNo(this,
1185 i18n 1185 i18n
1186 ("This is probably the wrong master-password\n" 1186 ("This is probably the wrong master-password\n"
1187 "you have typed in.\n" 1187 "you have typed in.\n"
1188 "There is no real way to determine the\n" 1188 "There is no real way to determine the\n"
1189 "correctness of the password in the Gpasman\n" 1189 "correctness of the password in the Gpasman\n"
1190 "file-format. But I think this\n" 1190 "file-format. But I think this\n"
1191 "password ist wrong.\n" 1191 "password ist wrong.\n"
1192 "Do you want to continue nevertheless?"), 1192 "Do you want to continue nevertheless?"),
1193 i18n("password error")) 1193 i18n("password error"))
1194 == KMessageBox::No) { 1194 == KMessageBox::No) {
1195 goto cancelImport; 1195 goto cancelImport;
1196 } 1196 }
1197 } else if (ret != e_success) { 1197 } else if (ret != e_success) {
1198 KMessageBox::error(this, 1198 KMessageBox::error(this,
1199 i18n("Could not import file!\n" 1199 i18n("Could not import file!\n"
1200 "Do you have permission to read this file?"), 1200 "Do you have permission to read this file?"),
1201 i18n("import failed")); 1201 i18n("import failed"));
1202 goto cancelImport; 1202 goto cancelImport;
1203 } 1203 }
1204 setVirgin(false); 1204 setVirgin(false);
1205 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1205 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1206 return true; 1206 return true;
1207 1207
1208cancelImport: 1208cancelImport:
1209 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1209 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1210 return false; 1210 return false;
1211} 1211}
1212 1212
1213#ifdef CONFIG_KWALLETIF 1213#ifdef CONFIG_KWALLETIF
1214bool PwM::checkAndAskForKWalletEmu() 1214bool PwM::checkAndAskForKWalletEmu()
1215{ 1215{
1216 if (init->kwalletEmu()) { 1216 if (init->kwalletEmu()) {
1217 /* KWallet emulation is enabled. We can't import/export 1217 /* KWallet emulation is enabled. We can't import/export
1218 * data from/to it, while emulation is active. 1218 * data from/to it, while emulation is active.
1219 */ 1219 */
1220 if (KMessageBox::questionYesNo(this, 1220 if (KMessageBox::questionYesNo(this,
1221 i18n("KWallet emulation is enabled.\n" 1221 i18n("KWallet emulation is enabled.\n"
1222 "You can't import or export data from/to " 1222 "You can't import or export data from/to "
1223 "the original KWallet, while the emulation " 1223 "the original KWallet, while the emulation "
1224 "is active.\n" 1224 "is active.\n"
1225 "Do you want to tempoarly disable the KWallet emulation?"), 1225 "Do you want to tempoarly disable the KWallet emulation?"),
1226 i18n("Tempoarly disable KWallet emulation?")) 1226 i18n("Tempoarly disable KWallet emulation?"))
1227 == KMessageBox::Yes) { 1227 == KMessageBox::Yes) {
1228 init->initKWalletEmu(true); 1228 init->initKWalletEmu(true);
1229 PWM_ASSERT(!init->kwalletEmu()); 1229 PWM_ASSERT(!init->kwalletEmu());
1230 return true; 1230 return true;
1231 } 1231 }
1232 return false; 1232 return false;
1233 } 1233 }
1234 return true; 1234 return true;
1235} 1235}
1236#endif // CONFIG_KWALLETIF 1236#endif // CONFIG_KWALLETIF
1237 1237
1238bool PwM::importKWallet() 1238bool PwM::importKWallet()
1239{ 1239{
1240#ifdef CONFIG_KWALLETIF 1240#ifdef CONFIG_KWALLETIF
1241 if (!checkAndAskForKWalletEmu()) 1241 if (!checkAndAskForKWalletEmu())
1242 return false; 1242 return false;
1243 KWalletIf walletIf(this); 1243 KWalletIf walletIf(this);
1244 if (!isVirgin()) { 1244 if (!isVirgin()) {
1245 if (KMessageBox::questionYesNo(this, 1245 if (KMessageBox::questionYesNo(this,
1246 i18n("Do you want to import the data " 1246 i18n("Do you want to import the data "
1247 "into the current document? (If you " 1247 "into the current document? (If you "
1248 "select \"no\", a new document will be " 1248 "select \"no\", a new document will be "
1249 "opened.)"), 1249 "opened.)"),
1250 i18n("import into this document?")) 1250 i18n("import into this document?"))
1251 == KMessageBox::No) { 1251 == KMessageBox::No) {
1252 // import the data to a new window. 1252 // import the data to a new window.
1253 PwM *newInstance = init->createMainWnd(); 1253 PwM *newInstance = init->createMainWnd();
1254 bool ok = newInstance->importKWallet(); 1254 bool ok = newInstance->importKWallet();
1255 if (!ok) { 1255 if (!ok) {
1256 newInstance->setForceQuit(true); 1256 newInstance->setForceQuit(true);
1257 delete_and_null(newInstance); 1257 delete_and_null(newInstance);
1258 goto exit_fail; 1258 goto exit_fail;
1259 } else { 1259 } else {
1260 goto exit_ok; 1260 goto exit_ok;
1261 } 1261 }
1262 } 1262 }
1263 } 1263 }
1264 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1264 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1265 if (!walletIf.kwalletImport(curDoc())) { 1265 if (!walletIf.kwalletImport(curDoc())) {
1266 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1266 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1267 showStatMsg(i18n("KWallet import failed")); 1267 showStatMsg(i18n("KWallet import failed"));
1268 goto exit_fail; 1268 goto exit_fail;
1269 } 1269 }
1270 KMessageBox::information(this, 1270 KMessageBox::information(this,
1271 i18n("Successfully imported the KWallet data " 1271 i18n("Successfully imported the KWallet data "
1272 "into the current document."), 1272 "into the current document."),
1273 i18n("successfully imported")); 1273 i18n("successfully imported"));
1274 showStatMsg(i18n("successfully imported")); 1274 showStatMsg(i18n("successfully imported"));
1275 setVirgin(false); 1275 setVirgin(false);
1276 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1276 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1277 1277
1278exit_ok: 1278exit_ok:
1279 init->initKWalletEmu(); 1279 init->initKWalletEmu();
1280 return true; 1280 return true;
1281 1281
1282exit_fail: 1282exit_fail:
1283 init->initKWalletEmu(); 1283 init->initKWalletEmu();
1284#endif // CONFIG_KWALLETIF 1284#endif // CONFIG_KWALLETIF
1285 return false; 1285 return false;
1286} 1286}
1287 1287
1288void PwM::print_slot() 1288void PwM::print_slot()
1289{ 1289{
1290 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1290 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1291#ifndef PWM_EMBEDDED 1291#ifndef PWM_EMBEDDED
1292 PwMPrint p(curDoc(), this); 1292 PwMPrint p(curDoc(), this);
1293 p.printNow(); 1293 p.printNow();
1294#else 1294#else
1295 qDebug("PwM::print_slot , PRINTING IS NOT IMPLEMENTED"); 1295 qDebug("PwM::print_slot , PRINTING IS NOT IMPLEMENTED");
1296#endif 1296#endif
1297 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1297 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1298} 1298}
1299 1299
1300void PwM::genNewCard_slot() 1300void PwM::genNewCard_slot()
1301{ 1301{
1302#ifdef CONFIG_KEYCARD 1302#ifdef CONFIG_KEYCARD
1303 init->keycard()->genNewCard(); 1303 init->keycard()->genNewCard();
1304#endif 1304#endif
1305} 1305}
1306 1306
1307void PwM::eraseCard_slot() 1307void PwM::eraseCard_slot()
1308{ 1308{
1309#ifdef CONFIG_KEYCARD 1309#ifdef CONFIG_KEYCARD
1310 init->keycard()->eraseCard(); 1310 init->keycard()->eraseCard();
1311#endif 1311#endif
1312} 1312}
1313 1313
1314void PwM::readCardId_slot() 1314void PwM::readCardId_slot()
1315{ 1315{
1316#ifdef CONFIG_KEYCARD 1316#ifdef CONFIG_KEYCARD
1317 init->keycard()->displayKey(); 1317 init->keycard()->displayKey();
1318#endif 1318#endif
1319} 1319}
1320 1320
1321void PwM::makeCardBackup_slot() 1321void PwM::makeCardBackup_slot()
1322{ 1322{
1323#ifdef CONFIG_KEYCARD 1323#ifdef CONFIG_KEYCARD
1324 init->keycard()->makeBackupImage(); 1324 init->keycard()->makeBackupImage();
1325#endif 1325#endif
1326} 1326}
1327 1327
1328void PwM::replayCardBackup_slot() 1328void PwM::replayCardBackup_slot()
1329{ 1329{
1330#ifdef CONFIG_KEYCARD 1330#ifdef CONFIG_KEYCARD
1331 init->keycard()->replayBackupImage(); 1331 init->keycard()->replayBackupImage();
1332#endif 1332#endif
1333} 1333}
1334 1334
1335void PwM::execLauncher_slot() 1335void PwM::execLauncher_slot()
1336{ 1336{
1337 PWM_ASSERT(curDoc()); 1337 PWM_ASSERT(curDoc());
1338 if (curDoc()->isDeepLocked()) 1338 if (curDoc()->isDeepLocked())
1339 return; 1339 return;
1340 unsigned int curEntryIndex; 1340 unsigned int curEntryIndex;
1341 if (!view->getCurEntryIndex(&curEntryIndex)) 1341 if (!view->getCurEntryIndex(&curEntryIndex))
1342 return; 1342 return;
1343 bool ret = curDoc()->execLauncher(view->getCurrentCategory(), 1343 bool ret = curDoc()->execLauncher(view->getCurrentCategory(),
1344 curEntryIndex); 1344 curEntryIndex);
1345 if (ret) 1345 if (ret)
1346 showStatMsg(i18n("Executed the \"Launcher\".")); 1346 showStatMsg(i18n("Executed the \"Launcher\"."));
1347 else 1347 else
1348 showStatMsg(i18n("ERROR: Couldn't execute the \"Launcher\"!")); 1348 showStatMsg(i18n("ERROR: Couldn't execute the \"Launcher\"!"));
1349} 1349}
1350 1350
1351void PwM::goToURL_slot() 1351void PwM::goToURL_slot()
1352{ 1352{
1353 PWM_ASSERT(curDoc()); 1353 PWM_ASSERT(curDoc());
1354 if (curDoc()->isDeepLocked()) 1354 if (curDoc()->isDeepLocked())
1355 return; 1355 return;
1356 unsigned int curEntryIndex; 1356 unsigned int curEntryIndex;
1357 if (!view->getCurEntryIndex(&curEntryIndex)) 1357 if (!view->getCurEntryIndex(&curEntryIndex))
1358 return; 1358 return;
1359 bool ret = curDoc()->goToURL(view->getCurrentCategory(), 1359 bool ret = curDoc()->goToURL(view->getCurrentCategory(),
1360 curEntryIndex); 1360 curEntryIndex);
1361 if (ret) 1361 if (ret)
1362 showStatMsg(i18n("started browser with current URL.")); 1362 showStatMsg(i18n("started browser with current URL."));
1363 else 1363 else
1364 showStatMsg(i18n("ERROR: Couldn't start browser! Maybe invalid URL?")); 1364 showStatMsg(i18n("ERROR: Couldn't start browser! Maybe invalid URL?"));
1365} 1365}
1366 1366
1367void PwM::copyToClipboard(const QString &s) 1367void PwM::copyToClipboard(const QString &s)
1368{ 1368{
1369 QClipboard *cb = QApplication::clipboard(); 1369 QClipboard *cb = QApplication::clipboard();
1370#ifndef PWM_EMBEDDED 1370#ifndef PWM_EMBEDDED
1371 if (cb->supportsSelection()) 1371 if (cb->supportsSelection())
1372 cb->setText(s, QClipboard::Selection); 1372 cb->setText(s, QClipboard::Selection);
1373 cb->setText(s, QClipboard::Clipboard); 1373 cb->setText(s, QClipboard::Clipboard);
1374#else 1374#else
1375 cb->setText(s); 1375 cb->setText(s);
1376 1376
1377#endif 1377#endif
1378 1378
1379} 1379}
1380 1380
1381 1381
1382void PwM::showStatMsg(const QString &msg) 1382void PwM::showStatMsg(const QString &msg)
1383{ 1383{
1384#ifdef DESKTOP_VERSION 1384#ifdef DESKTOP_VERSION
1385 statusBar()->message(msg, STATUSBAR_MSG_TIMEOUT * 1000); 1385 statusBar()->message(msg, STATUSBAR_MSG_TIMEOUT * 1000);
1386#else 1386#else
1387 qDebug("Statusbar : %s",msg.latin1()); 1387 qDebug("Statusbar : %s",msg.latin1());
1388 Global::statusMessage(msg); 1388 Global::statusMessage(msg);
1389#endif 1389#endif
1390} 1390}
1391 1391
1392void PwM::focusInEvent(QFocusEvent *e) 1392void PwM::focusInEvent(QFocusEvent *e)
1393{ 1393{
1394 if (e->gotFocus()) { 1394 if (e->gotFocus()) {
1395 emit gotFocus(this); 1395 emit gotFocus(this);
1396 } else if (e->lostFocus()) { 1396 } else if (e->lostFocus()) {
1397 emit lostFocus(this); 1397 emit lostFocus(this);
1398 } 1398 }
1399} 1399}
1400 1400
1401 1401
1402#ifdef PWM_EMBEDDED 1402#ifdef PWM_EMBEDDED
1403 1403
1404void PwM::category_slot() 1404void PwM::category_slot()
1405{ 1405{
1406 PwMDoc *doc = curDoc(); 1406 PwMDoc *doc = curDoc();
1407 PWM_ASSERT(doc); 1407 PWM_ASSERT(doc);
1408 doc->timer()->getLock(DocTimer::id_autoLockTimer); 1408 doc->timer()->getLock(DocTimer::id_autoLockTimer);
1409 1409
1410 editCategoryWnd w(doc, this, "editcategory"); 1410 editCategoryWnd w(doc, this, "editcategory");
1411/* 1411/*
1412 vector<string> catList; 1412 vector<string> catList;
1413 doc->getCategoryList(&catList); 1413 doc->getCategoryList(&catList);
1414 unsigned i, size = catList.size(); 1414 unsigned i, size = catList.size();
1415 for (i = 0; i < size; ++i) { 1415 for (i = 0; i < size; ++i) {
1416 w.addCategory(catList[i].c_str()); 1416 w.addCategory(catList[i].c_str());
1417 } 1417 }
1418 w.setCurrCategory(view->getCurrentCategory()); 1418 w.setCurrCategory(view->getCurrentCategory());
1419 if (pw) 1419 if (pw)
1420 w.pwLineEdit->setText(*pw); 1420 w.pwLineEdit->setText(*pw);
1421*/ 1421*/
1422 w.setCurrCategory(view->getCurrentCategory()); 1422 w.setCurrCategory(view->getCurrentCategory());
1423 1423
1424 tryAgain: 1424 tryAgain:
1425 if (w.exec() == 1) 1425 if (w.exec() == 1)
1426 { 1426 {
1427 PwMDataItem d; 1427 PwMDataItem d;
1428 1428
1429 //US BUG: to initialize all values of curEntr with meaningfulldata, 1429 //US BUG: to initialize all values of curEntr with meaningfulldata,
1430 // we call clear on it. Reason: Metadata will be uninitialized otherwise. 1430 // we call clear on it. Reason: Metadata will be uninitialized otherwise.
1431 // another option would be to create a constructor for PwMDataItem 1431 // another option would be to create a constructor for PwMDataItem
1432 d.clear(true); 1432 d.clear(true);
1433 /* 1433 /*
1434 d.desc = w.getDescription().latin1(); 1434 d.desc = w.getDescription().latin1();
1435 d.name = w.getUsername().latin1(); 1435 d.name = w.getUsername().latin1();
1436 d.pw = w.getPassword().latin1(); 1436 d.pw = w.getPassword().latin1();
1437 d.comment = w.getComment().latin1(); 1437 d.comment = w.getComment().latin1();
1438 d.url = w.getUrl().latin1(); 1438 d.url = w.getUrl().latin1();
1439 d.launcher = w.getLauncher().latin1(); 1439 d.launcher = w.getLauncher().latin1();
1440 PwMerror ret = doc->addEntry(w.getCategory(), &d); 1440 PwMerror ret = doc->addEntry(w.getCategory(), &d);
1441 if (ret == e_entryExists) { 1441 if (ret == e_entryExists) {
1442 KMessageBox::error(this, 1442 KMessageBox::error(this,
1443 i18n 1443 i18n
1444 ("An entry with this \"Description\",\n" 1444 ("An entry with this \"Description\",\n"
1445 "does already exist.\n" 1445 "does already exist.\n"
1446 "Please select another description."), 1446 "Please select another description."),
1447 i18n("entry already exists.")); 1447 i18n("entry already exists."));
1448 goto tryAgain; 1448 goto tryAgain;
1449 } else if (ret == e_maxAllowedEntr) { 1449 } else if (ret == e_maxAllowedEntr) {
1450 KMessageBox::error(this, i18n("The maximum possible number of\nentries" 1450 KMessageBox::error(this, i18n("The maximum possible number of\nentries"
1451 "has been reached.\nYou can't add more entries."), 1451 "has been reached.\nYou can't add more entries."),
1452 i18n("maximum number of entries")); 1452 i18n("maximum number of entries"));
1453 doc->timer()->putLock(DocTimer::id_autoLockTimer); 1453 doc->timer()->putLock(DocTimer::id_autoLockTimer);
1454 return; 1454 return;
1455 } 1455 }
1456 */ 1456 */
1457 } 1457 }
1458 setVirgin(false); 1458 setVirgin(false);
1459 doc->timer()->putLock(DocTimer::id_autoLockTimer); 1459 doc->timer()->putLock(DocTimer::id_autoLockTimer);
1460} 1460}
1461 1461
1462 1462
1463void PwM::whatsnew_slot() 1463void PwM::whatsnew_slot()
1464{ 1464{
1465 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1465 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1466} 1466}
1467 1467
1468void PwM::showLicense_slot() 1468void PwM::showLicense_slot()
1469{ 1469{
1470 KApplication::showLicence(); 1470 KApplication::showLicence();
1471} 1471}
1472 1472
1473void PwM::faq_slot() 1473void PwM::faq_slot()
1474{ 1474{
1475 KApplication::showFile( "PWM/Pi FAQ", "kdepim/pwmanager/pwmanagerFAQ.txt" ); 1475 KApplication::showFile( "PWM/Pi FAQ", "kdepim/pwmanager/pwmanagerFAQ.txt" );
1476} 1476}
1477 1477
1478void PwM::syncHowTo_slot() 1478void PwM::syncHowTo_slot()
1479{ 1479{
1480 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1480 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1481} 1481}
1482 1482
1483 1483
1484void PwM::createAboutData_slot() 1484void PwM::createAboutData_slot()
1485{ 1485{
1486 QString version; 1486 QString version;
1487#include <../version> 1487#include <../version>
1488; 1488;
1489 QMessageBox::about( this, "About PwManager/Pi", 1489 QMessageBox::about( this, "About PwManager/Pi",
1490 "PwManager/Platform-independent\n" 1490 "PwManager/Platform-independent\n"
1491 "(PWM/Pi) " +version + " - " + 1491 "(PWM/Pi) " +version + " - " +
1492#ifdef DESKTOP_VERSION 1492#ifdef DESKTOP_VERSION
1493 "Desktop Edition\n" 1493 "Desktop Edition\n"
1494#else 1494#else
1495 "PDA-Edition\n" 1495 "PDA-Edition\n"
1496 "for: Zaurus 5500 / 7x0 / 8x0\n" 1496 "for: Zaurus 5500 / 7x0 / 8x0\n"
1497#endif 1497#endif
1498 1498
1499 "(c) 2004 Ulf Schenk\n" 1499 "(c) 2004 Ulf Schenk\n"
1500 "(c) 2004 Lutz Rogowski\n" 1500 "(c) 2004 Lutz Rogowski\n"
1501 "(c) 1997-2004, The KDE PIM Team\n" 1501 "(c) 1997-2004, The KDE PIM Team\n"
1502 1502
1503 "(c) Michael Buesch - main programming\nand current maintainer\nmbuesch@freenet.de\n" 1503 "(c) Michael Buesch - main programming\nand current maintainer\nmbuesch@freenet.de\n"
1504 "Matt Scifo - mscifo@o1.com\n" 1504 "Matt Scifo - mscifo@o1.com\n"
1505 "Elias Probst - elias.probst@gmx.de\n" 1505 "Elias Probst - elias.probst@gmx.de\n"
1506 "George Staikos - staikos@kde.org\n" 1506 "George Staikos - staikos@kde.org\n"
1507 "Matthew Palmer - mjp16@uow.edu.au\n" 1507 "Matthew Palmer - mjp16@uow.edu.au\n"
1508 "Olivier Sessink - gpasman@nl.linux.org\n" 1508 "Olivier Sessink - gpasman@nl.linux.org\n"
1509 "The libgcrypt developers -\nBlowfish and SHA1 algorithms\nftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/\n" 1509 "The libgcrypt developers -\nBlowfish and SHA1 algorithms\nftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/\n"
1510 "Troy Engel - tengel@sonic.net\n" 1510 "Troy Engel - tengel@sonic.net\n"
1511 "Wickey - wickey@gmx.at\n" 1511 "Wickey - wickey@gmx.at\n"
1512 "Ian MacGregor - original documentation author.\n" 1512 "Ian MacGregor - original documentation author.\n"
1513 ); 1513 );
1514} 1514}
1515 1515
1516 1516
1517//this are the overwritten callbackmethods from the syncinterface 1517//this are the overwritten callbackmethods from the syncinterface
1518bool PwM::sync(KSyncManager* manager, QString filename, int mode) 1518bool PwM::sync(KSyncManager* manager, QString filename, int mode)
1519{ 1519{
1520 PWM_ASSERT(curDoc()); 1520 PWM_ASSERT(curDoc());
1521 1521
1522 bool ret = curDoc()->sync(manager, filename, mode); 1522 bool ret = curDoc()->sync(manager, filename, mode);
1523 1523
1524 qDebug("PwM::sync save now: ret=%i", ret); 1524 qDebug("PwM::sync save now: ret=%i", ret);
1525 1525
1526 if (ret == true) { 1526 if (ret == true) {
1527 //US BUG: what can we call here to update the view of the current doc? 1527 //US BUG: what can we call here to update the view of the current doc?
1528 //mViewManager->refreshView(); 1528 //mViewManager->refreshView();
1529 1529
1530 //US curDoc()->sync sets the dirtyFlag in case the sync was successfull. 1530 //US curDoc()->sync sets the dirtyFlag in case the sync was successfull.
1531 save(); 1531 save();
1532 } 1532 }
1533 1533
1534 return ret; 1534 return ret;
1535} 1535}
1536 1536
1537void PwM::removeSyncInfo( QString syncProfile) 1537void PwM::removeSyncInfo( QString syncProfile)
1538{ 1538{
1539 qDebug("PWM::not implemented: removeSyncInfo for profile %s ", syncProfile.latin1()); 1539 qDebug("PWM:removeSyncInfo for profile %s ", syncProfile.latin1());
1540 curDoc()->removeSyncInfo( syncProfile );
1541 //US curDoc()->removeSyncInfo sets the dirtyFlag.
1540} 1542}
1541 1543
1542#endif 1544#endif
1543 1545
1544 1546
1545#ifndef PWM_EMBEDDED 1547#ifndef PWM_EMBEDDED
1546#include "pwm.moc" 1548#include "pwm.moc"
1547#endif 1549#endif