summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/zsafe/zsafe.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp
index 43565ee..ee1da77 100644
--- a/noncore/apps/zsafe/zsafe.cpp
+++ b/noncore/apps/zsafe/zsafe.cpp
@@ -1,1288 +1,1290 @@
1/**************************************************************************** 1/****************************************************************************
2** 2**
3** Created: Sat Apr 6 17:57:45 2002 3** Created: Sat Apr 6 17:57:45 2002
4** 4**
5** Author: Carsten Schneider <CarstenSchneider@t-online.de> 5** Author: Carsten Schneider <CarstenSchneider@t-online.de>
6** 6**
7** $Id$ 7** $Id$
8** 8**
9** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html 9** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html
10** 10**
11** Compile Flags: 11** Compile Flags:
12** Zaurus arm : -DNO_OPIE 12** Zaurus arm : -DNO_OPIE
13** Zaurus Opie arm: none 13** Zaurus Opie arm: none
14** Linux Desktop : -DDESKTOP 14** Linux Desktop : -DDESKTOP
15** Windows Desktop: -DDESKTOP -DWIN32 15** Windows Desktop: -DDESKTOP -DWIN32
16** 16**
17** for japanese version additional use: -DJPATCH_HDE 17** for japanese version additional use: -DJPATCH_HDE
18** 18**
19****************************************************************************/ 19****************************************************************************/
20#include "zsafe.h" 20#include "zsafe.h"
21#include "newdialog.h" 21#include "newdialog.h"
22#include "searchdialog.h" 22#include "searchdialog.h"
23#include "categorydialog.h" 23#include "categorydialog.h"
24#include "passworddialog.h" 24#include "passworddialog.h"
25#include "infoform.h" 25#include "infoform.h"
26#include "zlistview.h" 26#include "zlistview.h"
27#include "shadedlistitem.h" 27#include "shadedlistitem.h"
28 28
29#ifndef DESKTOP 29#ifndef DESKTOP
30#ifndef NO_OPIE 30#ifndef NO_OPIE
31#include <opie/ofiledialog.h> 31#include <opie/ofiledialog.h>
32#else 32#else
33#include "scqtfileedit.h" 33#include "scqtfileedit.h"
34#endif 34#endif
35#endif 35#endif
36 36
37#include <qclipboard.h> 37#include <qclipboard.h>
38 38
39#include <stdio.h> 39#include <stdio.h>
40 40
41#include <sys/types.h> 41#include <sys/types.h>
42#include <sys/stat.h> 42#include <sys/stat.h>
43#include <fcntl.h> 43#include <fcntl.h>
44#include <stdlib.h> 44#include <stdlib.h>
45#ifndef WIN32 45#ifndef WIN32
46#include <unistd.h> 46#include <unistd.h>
47#endif 47#endif
48#include <string.h> 48#include <string.h>
49#include <errno.h> 49#include <errno.h>
50 50
51#include <qmenubar.h> 51#include <qmenubar.h>
52#include <qpopupmenu.h> 52#include <qpopupmenu.h>
53 53
54#ifdef DESKTOP 54#ifdef DESKTOP
55#include <qfiledialog.h> 55#include <qfiledialog.h>
56#ifndef WIN32 56#ifndef WIN32
57#include <qsettings.h> 57#include <qsettings.h>
58#else 58#else
59#include "qsettings.h" 59#include "qsettings.h"
60#endif 60#endif
61#include <qapplication.h> 61#include <qapplication.h>
62#else 62#else
63#include <qfile.h> 63#include <qfile.h>
64#include <qpe/fileselector.h> 64#include <qpe/fileselector.h>
65#include <qpe/global.h> 65#include <qpe/global.h>
66#include <qpe/qpeapplication.h> 66#include <qpe/qpeapplication.h>
67#include <qpe/resource.h> 67#include <qpe/resource.h>
68#include <qpe/config.h> 68#include <qpe/config.h>
69#endif 69#endif
70 70
71#include <qtimer.h> 71#include <qtimer.h>
72#include <qlayout.h> 72#include <qlayout.h>
73#include <qmessagebox.h> 73#include <qmessagebox.h>
74#include <qfile.h> 74#include <qfile.h>
75#include <qtextstream.h> 75#include <qtextstream.h>
76#include <qheader.h> 76#include <qheader.h>
77#include <qlistview.h> 77#include <qlistview.h>
78#include <qtoolbutton.h> 78#include <qtoolbutton.h>
79#include <qlayout.h> 79#include <qlayout.h>
80#include <qvariant.h> 80#include <qvariant.h>
81#include <qtooltip.h> 81#include <qtooltip.h>
82#include <qwhatsthis.h> 82#include <qwhatsthis.h>
83#include <qimage.h> 83#include <qimage.h>
84#include <qpixmap.h> 84#include <qpixmap.h>
85#include <qlineedit.h> 85#include <qlineedit.h>
86#include <qmultilineedit.h> 86#include <qmultilineedit.h>
87#include <qregexp.h> 87#include <qregexp.h>
88#include <qdir.h> 88#include <qdir.h>
89#include <qtextbrowser.h> 89#include <qtextbrowser.h>
90#include <qlabel.h> 90#include <qlabel.h>
91#include <qcombobox.h> 91#include <qcombobox.h>
92 92
93#include "krc2.h" 93#include "krc2.h"
94 94
95#include "wait.h" 95#include "wait.h"
96 96
97extern int DeskW, DeskH; 97extern int DeskW, DeskH;
98#ifdef DESKTOP 98#ifdef DESKTOP
99extern QApplication *appl; 99extern QApplication *appl;
100#else 100#else
101extern QPEApplication *appl; 101extern QPEApplication *appl;
102#endif 102#endif
103 103
104#ifdef JPATCH_HDE 104#ifdef JPATCH_HDE
105#define tr(arg) arg 105#define tr(arg) arg
106#endif 106#endif
107 107
108 108
109#ifdef DESKTOP 109#ifdef DESKTOP
110#ifndef WIN32 110#ifndef WIN32
111const QString APP_KEY="/.zsafe/"; 111const QString APP_KEY="/.zsafe/";
112#else 112#else
113const QString APP_KEY=""; 113const QString APP_KEY="";
114#endif 114#endif
115#else 115#else
116const QString APP_KEY=""; 116const QString APP_KEY="";
117#endif 117#endif
118 118
119// include xmp images 119// include xmp images
120#include "pics/zsafe/copy.xpm" 120#include "pics/zsafe/copy.xpm"
121#include "pics/zsafe/cut.xpm" 121#include "pics/zsafe/cut.xpm"
122#include "pics/zsafe/edit.xpm" 122#include "pics/zsafe/edit.xpm"
123#include "pics/zsafe/editdelete.xpm" 123#include "pics/zsafe/editdelete.xpm"
124#include "pics/zsafe/find.xpm" 124#include "pics/zsafe/find.xpm"
125#include "pics/zsafe/folder_open.xpm" 125#include "pics/zsafe/folder_open.xpm"
126#include "pics/zsafe/help_icon.xpm" 126#include "pics/zsafe/help_icon.xpm"
127#include "pics/zsafe/new.xpm" 127#include "pics/zsafe/new.xpm"
128#include "pics/zsafe/paste.xpm" 128#include "pics/zsafe/paste.xpm"
129#include "pics/zsafe/quit_icon.xpm" 129#include "pics/zsafe/quit_icon.xpm"
130#include "pics/zsafe/save.xpm" 130#include "pics/zsafe/save.xpm"
131#include "pics/zsafe/trash.xpm" 131#include "pics/zsafe/trash.xpm"
132#include "pics/zsafe/expand.xpm" 132#include "pics/zsafe/expand.xpm"
133#include "pics/zsafe/export.xpm" 133#include "pics/zsafe/export.xpm"
134#include "pics/zsafe/import.xpm" 134#include "pics/zsafe/import.xpm"
135#include "pics/zsafe/zsafe.xpm" 135#include "pics/zsafe/zsafe.xpm"
136 136
137static const char* const bank_cards_data[] = { 137static const char* const bank_cards_data[] = {
138"14 14 16 1", 138"14 14 16 1",
139". c None", 139". c None",
140"# c #000000", 140"# c #000000",
141"b c #0000de", 141"b c #0000de",
142"a c #0000e6", 142"a c #0000e6",
143"j c #41de83", 143"j c #41de83",
144"k c #4acecd", 144"k c #4acecd",
145"h c #4aced5", 145"h c #4aced5",
146"g c #5a40cd", 146"g c #5a40cd",
147"d c #5a44d5", 147"d c #5a44d5",
148"l c #9440d5", 148"l c #9440d5",
149"m c #b4ce4a", 149"m c #b4ce4a",
150"n c #cd4883", 150"n c #cd4883",
151"e c #d5ae10", 151"e c #d5ae10",
152"f c #de3ce6", 152"f c #de3ce6",
153"i c #e640e6", 153"i c #e640e6",
154"c c #ffffff", 154"c c #ffffff",
155"..............", 155"..............",
156".###########..", 156".###########..",
157".#ababababa#..", 157".#ababababa#..",
158".#babbbabbb#..", 158".#babbbabbb#..",
159".#ccccccccc#..", 159".#ccccccccc#..",
160".#cdcefcghc#..", 160".#cdcefcghc#..",
161".#ccccccccc#..", 161".#ccccccccc#..",
162".#cicjkclic#..", 162".#cicjkclic#..",
163".#ccccccccc#..", 163".#ccccccccc#..",
164".#cmchlcnec#..", 164".#cmchlcnec#..",
165".#ccccccccc#..", 165".#ccccccccc#..",
166".###########..", 166".###########..",
167"..............", 167"..............",
168".............."}; 168".............."};
169 169
170 170
171static const char* const passwords_data[] = { 171static const char* const passwords_data[] = {
172"16 16 20 1", 172"16 16 20 1",
173". c None", 173". c None",
174"# c #000000", 174"# c #000000",
175"r c #000083", 175"r c #000083",
176"p c #0000c5", 176"p c #0000c5",
177"q c #0000ff", 177"q c #0000ff",
178"n c #008100", 178"n c #008100",
179"l c #00c200", 179"l c #00c200",
180"m c #00ff00", 180"m c #00ff00",
181"j c #838100", 181"j c #838100",
182"a c #c55900", 182"a c #c55900",
183"h c #c5c200", 183"h c #c5c200",
184"o c #c5c2ff", 184"o c #c5c2ff",
185"k c #c5ffc5", 185"k c #c5ffc5",
186"f c #ff0000", 186"f c #ff0000",
187"d c #ff8100", 187"d c #ff8100",
188"b c #ffaa5a", 188"b c #ffaa5a",
189"e c #ffc2c5", 189"e c #ffc2c5",
190"c c #ffdeac", 190"c c #ffdeac",
191"i c #ffff00", 191"i c #ffff00",
192"g c #ffffc5", 192"g c #ffffc5",
193"............###.", 193"............###.",
194"...........#abb#", 194"...........#abb#",
195"..........#cbab#", 195"..........#cbab#",
196".........#cbdd#.", 196".........#cbdd#.",
197"######..#cbdd#..", 197"######..#cbdd#..",
198"#eeff#..#add#...", 198"#eeff#..#add#...",
199"#eeff#######....", 199"#eeff#######....",
200"#ccdbdd#........", 200"#ccdbdd#........",
201"#dddbdd###......", 201"#dddbdd###......",
202"#gghihhjj#......", 202"#gghihhjj#......",
203"#hhhihhjj###....", 203"#hhhihhjj###....",
204"#kklmllnnnn#....", 204"#kklmllnnnn#....",
205"#lllmllnnnn#....", 205"#lllmllnnnn#....",
206"#oopqpprprr#....", 206"#oopqpprprr#....",
207"#oopqpprprr#....", 207"#oopqpprprr#....",
208"############...."}; 208"############...."};
209 209
210static const char* const software_data[] = { 210static const char* const software_data[] = {
211"16 16 5 1", 211"16 16 5 1",
212". c None", 212". c None",
213"# c #000000", 213"# c #000000",
214"b c #838183", 214"b c #838183",
215"c c #c5ffff", 215"c c #c5ffff",
216"a c #ffffff", 216"a c #ffffff",
217"................", 217"................",
218".##############.", 218".##############.",
219"#aaaaaaaaaaaaaa#", 219"#aaaaaaaaaaaaaa#",
220"#abbbbbbbbbbbbb#", 220"#abbbbbbbbbbbbb#",
221"#ab##########ab#", 221"#ab##########ab#",
222"#ab#c########ab#", 222"#ab#c########ab#",
223"#ab#c#c######ab#", 223"#ab#c#c######ab#",
224"#ab##########ab#", 224"#ab##########ab#",
225"#ab##########ab#", 225"#ab##########ab#",
226"#ab##########ab#", 226"#ab##########ab#",
227"#ab##########ab#", 227"#ab##########ab#",
228"#ab##########ab#", 228"#ab##########ab#",
229"#aaaaaaaaaaaaab#", 229"#aaaaaaaaaaaaab#",
230"#bbbbbbbbbbbbbb#", 230"#bbbbbbbbbbbbbb#",
231".##############.", 231".##############.",
232"................"}; 232"................"};
233 233
234static const char* const general_data[] = { 234static const char* const general_data[] = {
235"14 14 98 2", 235"14 14 98 2",
236"Qt c None", 236"Qt c None",
237".k c #000000", 237".k c #000000",
238"#x c #080808", 238"#x c #080808",
239"#F c #101008", 239"#F c #101008",
240"#q c #101010", 240"#q c #101010",
241"#i c #101410", 241"#i c #101410",
242"## c #101810", 242"## c #101810",
243".m c #181818", 243".m c #181818",
244".3 c #181c18", 244".3 c #181c18",
245".I c #182018", 245".I c #182018",
246".T c #202420", 246".T c #202420",
247"#D c #202820", 247"#D c #202820",
248"#y c #292c29", 248"#y c #292c29",
249".c c #293029", 249".c c #293029",
250".d c #313031", 250".d c #313031",
251"#E c #313429", 251"#E c #313429",
252"#r c #313831", 252"#r c #313831",
253".j c #393c31", 253".j c #393c31",
254"#j c #394039", 254"#j c #394039",
255"#C c #414841", 255"#C c #414841",
256".w c #4a554a", 256".w c #4a554a",
257".a c #4a594a", 257".a c #4a594a",
258".# c #525052", 258".# c #525052",
259".l c #52594a", 259".l c #52594a",
260"#f c #525952", 260"#f c #525952",
261"#v c #525d52", 261"#v c #525d52",
262".O c #5a4c4a", 262".O c #5a4c4a",
263".9 c #5a595a", 263".9 c #5a595a",
264".A c #5a5d52", 264".A c #5a5d52",
265".B c #624c52", 265".B c #624c52",
266".0 c #625552", 266".0 c #625552",
267"#o c #626562", 267"#o c #626562",
268".R c #626962", 268".R c #626962",
269"#. c #626d5a", 269"#. c #626d5a",
270"#p c #626d62", 270"#p c #626d62",
271".2 c #627162", 271".2 c #627162",
272"#h c #6a6d62", 272"#h c #6a6d62",
273"#z c #6a7562", 273"#z c #6a7562",
274"#w c #6a756a", 274"#w c #6a756a",
275".C c #73656a", 275".C c #73656a",
276".P c #73696a", 276".P c #73696a",
277"#a c #737d6a", 277"#a c #737d6a",
278".U c #738573", 278".U c #738573",
279".E c #7b817b", 279".E c #7b817b",
280"#B c #7b857b", 280"#B c #7b857b",
281"#s c #7b897b", 281"#s c #7b897b",
282"#n c #7b917b", 282"#n c #7b917b",
283".b c #838d83", 283".b c #838d83",
284".7 c #839583", 284".7 c #839583",
285".n c #8b7d7b", 285".n c #8b7d7b",
286"#g c #8b8583", 286"#g c #8b8583",
287".g c #8b858b", 287".g c #8b858b",
288".r c #8b898b", 288".r c #8b898b",
289".s c #8b8d8b", 289".s c #8b8d8b",
290".i c #8b9183", 290".i c #8b9183",
291".8 c #8b918b", 291".8 c #8b918b",
292"#A c #8b9d8b", 292"#A c #8b9d8b",
293".S c #8ba183", 293".S c #8ba183",
294".Z c #94918b", 294".Z c #94918b",
295".N c #949994", 295".N c #949994",
296".F c #949d94", 296".F c #949d94",
297".x c #94a18b", 297".x c #94a18b",
298".v c #94a194", 298".v c #94a194",
299".Y c #94aa94", 299".Y c #94aa94",
300".h c #9c999c", 300".h c #9c999c",
301".Q c #9ca19c", 301".Q c #9ca19c",
302"#u c #9ca59c", 302"#u c #9ca59c",
303".H c #9caa9c", 303".H c #9caa9c",
304"#e c #9cb29c", 304"#e c #9cb29c",
305"#m c #a4b29c", 305"#m c #a4b29c",
306"#t c #a4b2a4", 306"#t c #a4b2a4",
307".M c #a4b69c", 307".M c #a4b69c",
308"#l c #a4b6a4", 308"#l c #a4b6a4",
309".z c #a4baa4", 309".z c #a4baa4",
310".f c #aca5ac", 310".f c #aca5ac",
311".q c #acaaac", 311".q c #acaaac",
312"#d c #acbeac", 312"#d c #acbeac",
313".6 c #acc2ac", 313".6 c #acc2ac",
314".o c #b4b2b4", 314".o c #b4b2b4",
315".t c #b4beb4", 315".t c #b4beb4",
316"#k c #b4c2ac", 316"#k c #b4c2ac",
317".5 c #b4cab4", 317".5 c #b4cab4",
318".D c #bdb6bd", 318".D c #bdb6bd",
319".G c #bdc6b4", 319".G c #bdc6b4",
320"#c c #bdceb4", 320"#c c #bdceb4",
321".X c #bdd2bd", 321".X c #bdd2bd",
322".4 c #bdd6bd", 322".4 c #bdd6bd",
323".1 c #c5bec5", 323".1 c #c5bec5",
324".e c #c5c2c5", 324".e c #c5c2c5",
325".u c #c5cac5", 325".u c #c5cac5",
326"#b c #c5d6c5", 326"#b c #c5d6c5",
327".J c #c5dec5", 327".J c #c5dec5",
328".p c #cdcacd", 328".p c #cdcacd",
329".W c #cddecd", 329".W c #cddecd",
330".L c #cde2cd", 330".L c #cde2cd",
331".K c #d5eacd", 331".K c #d5eacd",
332".V c #d5ead5", 332".V c #d5ead5",
333".y c #d5eed5", 333".y c #d5eed5",
334"QtQtQtQtQtQtQtQtQtQtQtQtQtQt", 334"QtQtQtQtQtQtQtQtQtQtQtQtQtQt",
335"QtQtQt.#.a.b.cQtQtQtQtQtQtQt", 335"QtQtQt.#.a.b.cQtQtQtQtQtQtQt",
336"QtQt.d.e.f.g.h.i.c.j.dQt.kQt", 336"QtQt.d.e.f.g.h.i.c.j.dQt.kQt",
337".a.l.m.n.o.p.q.r.s.t.u.v.wQt", 337".a.l.m.n.o.p.q.r.s.t.u.v.wQt",
338".x.y.z.A.B.C.D.p.q.E.F.G.H.I", 338".x.y.z.A.B.C.D.p.q.E.F.G.H.I",
339".I.J.K.L.M.N.O.P.o.p.Q.R.S.T", 339".I.J.K.L.M.N.O.P.o.p.Q.R.S.T",
340"Qt.U.V.L.W.X.Y.Z.0.P.1.s.2.3", 340"Qt.U.V.L.W.X.Y.Z.0.P.1.s.2.3",
341"Qt.3.X.W.4.X.5.6.7.8.9.s#.##", 341"Qt.3.X.W.4.X.5.6.7.8.9.s#.##",
342"QtQt#a.X#b#c.5.6#d#e#f#g#h#i", 342"QtQt#a.X#b#c.5.6#d#e#f#g#h#i",
343"QtQtQt#j.7#k.6#d#l#m#n#o#p#q", 343"QtQtQt#j.7#k.6#d#l#m#n#o#p#q",
344"QtQtQtQt.k#r#s#m#t.H#u#v#w#x", 344"QtQtQtQt.k#r#s#m#t.H#u#v#w#x",
345"QtQtQtQtQtQt.k#y#z.v#A#B#C#x", 345"QtQtQtQtQtQt.k#y#z.v#A#B#C#x",
346"QtQtQtQtQtQtQtQt.k#D.w#s#E.k", 346"QtQtQtQtQtQtQtQt.k#D.w#s#E.k",
347"QtQtQtQtQtQtQtQtQtQtQt#x#FQt"}; 347"QtQtQtQtQtQtQtQtQtQtQt#x#FQt"};
348 348
349// exit ZSafe and clear the clipboard for security reasons 349// exit ZSafe and clear the clipboard for security reasons
350 void ZSafe::exitZs (int ec) 350 void ZSafe::exitZs (int ec)
351 { 351 {
352 QClipboard *cb = QApplication::clipboard(); 352 QClipboard *cb = QApplication::clipboard();
353 cb->clear(); 353 cb->clear();
354 354
355 exit (ec); 355 exit (ec);
356 } 356 }
357 357
358 358
359// save the configuration into the file 359// save the configuration into the file
360 void ZSafe::saveConf () 360 void ZSafe::saveConf ()
361 { 361 {
362 if (conf) 362 if (conf)
363 { 363 {
364 delete conf; 364 delete conf;
365 365
366#ifdef DESKTOP 366#ifdef DESKTOP
367#ifndef WIN32 367#ifndef WIN32
368 conf = new QSettings (); 368 conf = new QSettings ();
369 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath()); 369 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath());
370#else 370#else
371 conf = new QSettings (cfgFile); 371 conf = new QSettings (cfgFile);
372 conf->insertSearchPath (QSettings::Unix, cfgFile); 372 conf->insertSearchPath (QSettings::Unix, cfgFile);
373#endif 373#endif
374#else 374#else
375 conf = new Config (cfgFile, Config::File); 375 conf = new Config (cfgFile, Config::File);
376 conf->setGroup ("zsafe"); 376 conf->setGroup ("zsafe");
377#endif 377#endif
378 } 378 }
379 } 379 }
380 380
381 381
382/* 382/*
383 * Constructs a ZSafe which is a child of 'parent', with the 383 * Constructs a ZSafe which is a child of 'parent', with the
384 * name 'name' and widget flags set to 'f' 384 * name 'name' and widget flags set to 'f'
385 * 385 *
386 * The dialog will by default be modeless, unless you set 'modal' to 386 * The dialog will by default be modeless, unless you set 'modal' to
387 * TRUE to construct a modal dialog. 387 * TRUE to construct a modal dialog.
388 */ 388 */
389ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl ) 389ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
390 : QDialog( parent, name, modal, fl ) 390 : QDialog( parent, name, modal, fl ),
391 Edit(0l), Delete(0l), Find(0l), New(0l), ListView(0l)
391{ 392{
392 IsCut = false; 393 IsCut = false;
393 IsCopy = false; 394 IsCopy = false;
394 modified = false; 395 modified = false;
395 396
396 // set the config file 397 // set the config file
397 cfgFile=QDir::homeDirPath(); 398 cfgFile=QDir::homeDirPath();
398 cfgFile += "/.zsafe.cfg"; 399 cfgFile += "/.zsafe.cfg";
399 // set the icon path 400 // set the icon path
401#ifdef NO_OPIE
400 QString qpedir ((const char *)getenv("QPEDIR")); 402 QString qpedir ((const char *)getenv("QPEDIR"));
403#else
404 QString qpedir ((const char *)getenv("OPIEDIR"));
405#endif
406
401#ifdef DESKTOP 407#ifdef DESKTOP
402 iconPath = QDir::homeDirPath() + "/pics/"; 408 iconPath = QDir::homeDirPath() + "/pics/";
403#else 409#else
404 if (qpedir.isEmpty()) 410 if (qpedir.isEmpty())
405 iconPath = "/home/QtPalmtop/pics/"; 411 iconPath = "/home/QtPalmtop/pics/";
406 else 412 else
407 iconPath = qpedir + "/pics/"; 413 iconPath = qpedir + "/pics/";
408#endif 414#endif
409 415
410 // create a zsafe configuration object 416 // create a zsafe configuration object
411#ifdef DESKTOP 417#ifdef DESKTOP
412#ifndef WIN32 418#ifndef WIN32
413 conf = new QSettings (); 419 conf = new QSettings ();
414 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath()); 420 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath());
415#else 421#else
416 conf = new QSettings (cfgFile); 422 conf = new QSettings (cfgFile);
417 conf->insertSearchPath (QSettings::Unix, cfgFile); 423 conf->insertSearchPath (QSettings::Unix, cfgFile);
418#endif 424#endif
419#else 425#else
420 conf = new Config (cfgFile, Config::File); 426 conf = new Config (cfgFile, Config::File);
421 conf->setGroup ("zsafePrefs"); 427 conf->setGroup ("zsafePrefs");
422#endif 428#endif
423#ifdef DESKTOP 429#ifdef DESKTOP
424// #ifndef WIN32 430// #ifndef WIN32
425 expandTree = conf->readBoolEntry(APP_KEY+"expandTree", false); 431 expandTree = conf->readBoolEntry(APP_KEY+"expandTree", false);
426// #endif 432// #endif
427#else 433#else
428 expandTree = conf->readNumEntry(APP_KEY+"expandTree", 0); 434 expandTree = conf->readNumEntry(APP_KEY+"expandTree", 0);
429#endif 435#endif
430#ifndef DESKTOP 436#ifndef DESKTOP
431 conf->setGroup ("zsafe"); 437 conf->setGroup ("zsafe");
432#endif 438#endif
433 439
434 QPixmap copy_img((const char**) copy_xpm); 440 QPixmap copy_img((const char**) copy_xpm);
435 QPixmap cut_img((const char**) cut_xpm); 441 QPixmap cut_img((const char**) cut_xpm);
436 QPixmap edit_img((const char**) edit_xpm); 442 QPixmap edit_img((const char**) edit_xpm);
437 QPixmap editdelete_img((const char**) editdelete_xpm); 443 QPixmap editdelete_img((const char**) editdelete_xpm);
438 QPixmap find_img((const char**) find_xpm); 444 QPixmap find_img((const char**) find_xpm);
439 QPixmap folder_open_img((const char**) folder_open_xpm); 445 QPixmap folder_open_img((const char**) folder_open_xpm);
440 QPixmap help_icon_img((const char**) help_icon_xpm); 446 QPixmap help_icon_img((const char**) help_icon_xpm);
441 QPixmap new_img((const char**) new_xpm); 447 QPixmap new_img((const char**) new_xpm);
442 QPixmap paste_img((const char**) paste_xpm); 448 QPixmap paste_img((const char**) paste_xpm);
443 QPixmap quit_icon_img((const char**) quit_icon_xpm); 449 QPixmap quit_icon_img((const char**) quit_icon_xpm);
444 QPixmap save_img((const char**) save_xpm); 450 QPixmap save_img((const char**) save_xpm);
445 QPixmap trash_img((const char**) trash_xpm); 451 QPixmap trash_img((const char**) trash_xpm);
446 QPixmap expand_img((const char**) expand_xpm); 452 QPixmap expand_img((const char**) expand_xpm);
447 QPixmap export_img((const char**) export_xpm); 453 QPixmap export_img((const char**) export_xpm);
448 QPixmap import_img((const char**) import_xpm); 454 QPixmap import_img((const char**) import_xpm);
449 455
450 QPixmap bank_cards( ( const char** ) bank_cards_data ); 456 QPixmap bank_cards( ( const char** ) bank_cards_data );
451 QPixmap passwords( ( const char** ) passwords_data ); 457 QPixmap passwords( ( const char** ) passwords_data );
452 QPixmap software( ( const char** ) software_data ); 458 QPixmap software( ( const char** ) software_data );
453 QPixmap general( ( const char** ) general_data ); 459 QPixmap general( ( const char** ) general_data );
454 if ( !name ) 460 if ( !name )
455 setName( "ZSafe" ); 461 setName( "ZSafe" );
456 462
457#ifdef DESKTOP 463#ifdef DESKTOP
458#ifdef WIN32 464#ifdef WIN32
459 setGeometry(100, 150, DeskW, DeskH-30 ); 465 setGeometry(100, 150, DeskW, DeskH-30 );
460#else 466#else
461 resize( DeskW, DeskH-30 ); 467 resize( DeskW, DeskH-30 );
462#endif 468#endif
463 469
464#else 470#else
465 471
466#ifdef JPATCH_HDE 472#ifdef JPATCH_HDE
467 int DeskS; 473 int DeskS;
468 if(DeskW > DeskH) 474 if(DeskW > DeskH)
469 { 475 {
470 DeskS = DeskW; 476 DeskS = DeskW;
471 } 477 }
472 else 478 else
473 { 479 {
474 DeskS = DeskH; 480 DeskS = DeskH;
475 } 481 }
476 resize( DeskW, DeskH ); 482 resize( DeskW, DeskH );
477 setMinimumSize( QSize( DeskS, DeskS ) ); 483 setMinimumSize( QSize( DeskS, DeskS ) );
478 setMaximumSize( QSize( DeskS, DeskS ) ); 484 setMaximumSize( QSize( DeskS, DeskS ) );
479#else 485#else
480 resize( DeskW, DeskH-30 ); 486 resize( DeskW, DeskH-30 );
481#endif 487#endif
482 488
483#endif 489#endif
484 // setCaption( tr( "ZSafe" ) ); 490 // setCaption( tr( "ZSafe" ) );
485 491
486 filename = conf->readEntry(APP_KEY+"document"); 492 filename = conf->readEntry(APP_KEY+"document");
487 if (filename.isEmpty() || filename.isNull()) 493 if (filename.isEmpty() || filename.isNull())
488 { 494 {
489 495
490 // check if the directory application exists, if not 496 // check if the directory application exists, if not
491 // create it 497 // create it
492// #ifndef WIN32 498// #ifndef WIN32
493 // QString d1("Documents/application"); 499 // QString d1("Documents/application");
494// #else 500// #else
495 QString d1(QDir::homeDirPath() + "/Documents/application"); 501 QString d1(QDir::homeDirPath() + "/Documents/application");
496// #endif 502// #endif
497 QDir pd1(d1); 503 QDir pd1(d1);
498 if (!pd1.exists()) 504 if (!pd1.exists())
499 { 505 {
500 QDir pd1("Documents"); 506 QDir pd1("Documents");
501 if (!pd1.mkdir("application", FALSE)) 507 if (!pd1.mkdir("application", FALSE))
502 { 508 {
503 QMessageBox::critical( 0, tr("ZSafe"), 509 QMessageBox::critical( 0, tr("ZSafe"),
504#ifdef JPATCH_HDE 510#ifdef JPATCH_HDE
505 tr("Can't create directory\n.../Documents/application\n\nZSafe will now exit.")); 511 tr("Can't create directory\n.../Documents/application\n\nZSafe will now exit."));
506#else 512#else
507 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d1)); 513 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d1));
508#endif 514#endif
509 exitZs (1); 515 exitZs (1);
510 } 516 }
511 } 517 }
512// #ifndef WIN32 518 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe");
513 // QString d2("Documents/application/zsafe");
514// #else
515 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe");
516// #endif
517 QDir pd2(d2); 519 QDir pd2(d2);
518 if (!pd2.exists()) 520 if (!pd2.exists())
519 { 521 {
520 QDir pd2("Documents/application"); 522 QDir pd2(QDir::homeDirPath() + "Documents/application");
521 if (!pd2.mkdir("zsafe", FALSE)) 523 if (!pd2.mkdir("zsafe", FALSE))
522 { 524 {
523 QMessageBox::critical( 0, tr("ZSafe"), 525 QMessageBox::critical( 0, tr("ZSafe"),
524#ifdef JPATCH_HDE 526#ifdef JPATCH_HDE
525 tr("Can't create directory\n...//Documents/application/zsafe\n\nZSafe will now exit.")); 527 tr("Can't create directory\n...//Documents/application/zsafe\n\nZSafe will now exit."));
526#else 528#else
527 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d2)); 529 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d2));
528#endif 530#endif
529 exitZs (1); 531 exitZs (1);
530 } 532 }
531 } 533 }
532 534
533 535
534 // set the default filename 536 // set the default filename
535 filename=d2 + "/passwords.zsf"; 537 filename=d2 + "/passwords.zsf";
536 538
537 // save the current filename to the config file 539 // save the current filename to the config file
538 conf->writeEntry(APP_KEY+"document", filename); 540 conf->writeEntry(APP_KEY+"document", filename);
539 saveConf(); 541 saveConf();
540 } 542 }
541 543
542 //if (filename == "INVALIDPWD") 544 //if (filename == "INVALIDPWD")
543 //filename = ""; 545 //filename = "";
544 546
545 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 547 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
546#ifdef WIN32 548#ifdef WIN32
547 this->setCaption("Qt ZSafe: " + ti); 549 this->setCaption("Qt ZSafe: " + ti);
548#else 550#else
549 this->setCaption("ZSafe: " + ti); 551 this->setCaption("ZSafe: " + ti);
550#endif 552#endif
551 553
552 selectedItem = NULL; 554 selectedItem = NULL;
553 lastSearchedCategory = NULL; 555 lastSearchedCategory = NULL;
554 lastSearchedItem = NULL; 556 lastSearchedItem = NULL;
555 lastSearchedName = ""; 557 lastSearchedName = "";
556 lastSearchedUsername = ""; 558 lastSearchedUsername = "";
557 lastSearchedComment = ""; 559 lastSearchedComment = "";
558 560
559 infoForm = new InfoForm(); 561 infoForm = new InfoForm();
560 categoryDialog = NULL; 562 categoryDialog = NULL;
561 563
562 // add a menu bar 564 // add a menu bar
563 QMenuBar *menu = new QMenuBar( this ); 565 QMenuBar *menu = new QMenuBar( this );
564 566
565 // add file menu 567 // add file menu
566 // QPopupMenu *file = new QPopupMenu( this ); 568 // QPopupMenu *file = new QPopupMenu( this );
567 file = new QPopupMenu( this ); 569 file = new QPopupMenu( this );
568 570
569// #ifdef DESKTOP 571// #ifdef DESKTOP
570 file->insertItem( new_img, tr("&New document"), this, SLOT(newDocument()) ); 572 file->insertItem( new_img, tr("&New document"), this, SLOT(newDocument()) );
571 file->insertItem( folder_open_img, tr("&Open document"), this, SLOT(loadDocument()) ); 573 file->insertItem( folder_open_img, tr("&Open document"), this, SLOT(loadDocument()) );
572 file->insertItem( save_img, tr("&Save document as .."), this, SLOT(saveDocumentAs()) ); 574 file->insertItem( save_img, tr("&Save document as .."), this, SLOT(saveDocumentAs()) );
573 file->insertSeparator(); 575 file->insertSeparator();
574// #endif 576// #endif
575 577
576 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) ); 578 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) );
577 file->insertItem( save_img, tr("S&ave document with new Password"), this, 579 file->insertItem( save_img, tr("S&ave document with new Password"), this,
578 SLOT(saveDocumentWithPwd()) ); 580 SLOT(saveDocumentWithPwd()) );
579 file->insertSeparator(); 581 file->insertSeparator();
580 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) ); 582 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) );
581 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) ); 583 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) );
582 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) ); 584 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) );
583 file->insertSeparator(); 585 file->insertSeparator();
584 file->insertItem( expand_img, tr("&Open entries expanded"), this, 586 file->insertItem( expand_img, tr("&Open entries expanded"), this,
585 SLOT(setExpandFlag()), 0, 'o'); 587 SLOT(setExpandFlag()), 0, 'o');
586 file->setItemChecked('o', expandTree); 588 file->setItemChecked('o', expandTree);
587 file->insertSeparator(); 589 file->insertSeparator();
588 file->insertItem( quit_icon_img, tr("E&xit"), this, SLOT(quitMe()) ); 590 file->insertItem( quit_icon_img, tr("E&xit"), this, SLOT(quitMe()) );
589 menu->insertItem( tr("&File"), file ); 591 menu->insertItem( tr("&File"), file );
590 592
591 QPopupMenu *cat = new QPopupMenu( this ); 593 QPopupMenu *cat = new QPopupMenu( this );
592 cat->insertItem( new_img, tr("&New"), this, SLOT(addCategory()) ); 594 cat->insertItem( new_img, tr("&New"), this, SLOT(addCategory()) );
593 cat->insertItem( edit_img, tr("&Edit"), this, SLOT(editCategory()) ); 595 cat->insertItem( edit_img, tr("&Edit"), this, SLOT(editCategory()) );
594 cat->insertItem( trash_img, tr("&Delete"), this, SLOT(delCategory()) ); 596 cat->insertItem( trash_img, tr("&Delete"), this, SLOT(delCategory()) );
595 menu->insertItem( tr("&Category"), cat ); 597 menu->insertItem( tr("&Category"), cat );
596 598
597 QPopupMenu *it = new QPopupMenu( this ); 599 QPopupMenu *it = new QPopupMenu( this );
598 it->insertItem( cut_img, tr("&Cut"), this, SLOT(cutItem()) ); 600 it->insertItem( cut_img, tr("&Cut"), this, SLOT(cutItem()) );
599 it->insertItem( copy_img, tr("C&opy"), this, SLOT(copyItem()) ); 601 it->insertItem( copy_img, tr("C&opy"), this, SLOT(copyItem()) );
600 it->insertItem( paste_img, tr("&Paste"), this, SLOT(pasteItem()) ); 602 it->insertItem( paste_img, tr("&Paste"), this, SLOT(pasteItem()) );
601 it->insertSeparator(); 603 it->insertSeparator();
602 it->insertItem( new_img, tr("&New"), this, SLOT(newPwd()) ); 604 it->insertItem( new_img, tr("&New"), this, SLOT(newPwd()) );
603 it->insertItem( edit_img, tr("&Edit"), this, SLOT(editPwd()) ); 605 it->insertItem( edit_img, tr("&Edit"), this, SLOT(editPwd()) );
604 it->insertItem( trash_img, tr("&Delete"), this, SLOT(deletePwd()) ); 606 it->insertItem( trash_img, tr("&Delete"), this, SLOT(deletePwd()) );
605 it->insertItem( find_img, tr("&Search"), this, SLOT(findPwd()) ); 607 it->insertItem( find_img, tr("&Search"), this, SLOT(findPwd()) );
606 menu->insertItem( tr("&Entry"), it ); 608 menu->insertItem( tr("&Entry"), it );
607 609
608 QPopupMenu *help = new QPopupMenu( this ); 610 QPopupMenu *help = new QPopupMenu( this );
609 help->insertItem( help_icon_img, tr("&About"), this, SLOT(about()) ); 611 help->insertItem( help_icon_img, tr("&About"), this, SLOT(about()) );
610 menu->insertItem( tr("&Help"), help ); 612 menu->insertItem( tr("&Help"), help );
611 613
612 // toolbar icons 614 // toolbar icons
613 615
614 New = new QToolButton( menu, "New" ); 616 New = new QToolButton( menu, "New" );
615 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) ); 617 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) );
616 New->setMouseTracking( TRUE ); 618 New->setMouseTracking( TRUE );
617 New->setText( tr( "" ) ); 619 New->setText( tr( "" ) );
618 New->setPixmap( new_img ); 620 New->setPixmap( new_img );
619 QToolTip::add( New, tr( "New entry" ) ); 621 QToolTip::add( New, tr( "New entry" ) );
620 622
621 Edit = new QToolButton( menu, "Edit" ); 623 Edit = new QToolButton( menu, "Edit" );
622 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) ); 624 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) );
623 Edit->setText( tr( "" ) ); 625 Edit->setText( tr( "" ) );
624 Edit->setPixmap( edit_img ); 626 Edit->setPixmap( edit_img );
625 QToolTip::add( Edit, tr( "Edit category or entry" ) ); 627 QToolTip::add( Edit, tr( "Edit category or entry" ) );
626 628
627 Delete = new QToolButton( menu, "Delete" ); 629 Delete = new QToolButton( menu, "Delete" );
628 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) ); 630 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) );
629 Delete->setText( tr( "" ) ); 631 Delete->setText( tr( "" ) );
630 Delete->setPixmap( trash_img ); 632 Delete->setPixmap( trash_img );
631 QToolTip::add( Delete, tr( "Delete category or entry" ) ); 633 QToolTip::add( Delete, tr( "Delete category or entry" ) );
632 634
633 Find = new QToolButton( menu, "Find" ); 635 Find = new QToolButton( menu, "Find" );
634 Find->setGeometry( QRect( DeskW-24, 2, 20, 20 ) ); 636 Find->setGeometry( QRect( DeskW-24, 2, 20, 20 ) );
635 Find->setText( tr( "" ) ); 637 Find->setText( tr( "" ) );
636 Find->setPixmap( find_img ); 638 Find->setPixmap( find_img );
637 QToolTip::add( Find, tr( "Find entry" ) ); 639 QToolTip::add( Find, tr( "Find entry" ) );
638 640
639/* 641/*
640 QBoxLayout * h = new QHBoxLayout( this ); 642 QBoxLayout * h = new QHBoxLayout( this );
641 h->addWidget (menu); 643 h->addWidget (menu);
642 h->addWidget (New); 644 h->addWidget (New);
643 h->addWidget (Edit); 645 h->addWidget (Edit);
644 h->addWidget (Delete); 646 h->addWidget (Delete);
645 h->addWidget (Find); 647 h->addWidget (Find);
646*/ 648*/
647 649
648 ListView = new ZListView( this, "ListView" ); 650 ListView = new ZListView( this, "ListView" );
649 ListView->addColumn( tr( "Name" ) ); 651 ListView->addColumn( tr( "Name" ) );
650 ListView->addColumn( tr( "Field 2" ) ); 652 ListView->addColumn( tr( "Field 2" ) );
651 ListView->addColumn( tr( "Field 3" ) ); 653 ListView->addColumn( tr( "Field 3" ) );
652 ListView->addColumn( tr( "Comment" ) ); 654 ListView->addColumn( tr( "Comment" ) );
653 ListView->addColumn( tr( "Field 4" ) ); 655 ListView->addColumn( tr( "Field 4" ) );
654 ListView->addColumn( tr( "Field 5" ) ); 656 ListView->addColumn( tr( "Field 5" ) );
655 ListView->setAllColumnsShowFocus(TRUE); 657 ListView->setAllColumnsShowFocus(TRUE);
656 658
657#ifdef DESKTOP 659#ifdef DESKTOP
658 ListView->setResizePolicy(QScrollView::AutoOneFit); 660 ListView->setResizePolicy(QScrollView::AutoOneFit);
659 // ListView->setGeometry( QRect( 0, 22, this->width(), this->height() - 30 ) ); 661 // ListView->setGeometry( QRect( 0, 22, this->width(), this->height() - 30 ) );
660#else 662#else
661 ListView->setResizePolicy(QScrollView::AutoOneFit); 663 ListView->setResizePolicy(QScrollView::AutoOneFit);
662 // ListView->setGeometry( QRect( 0, 22, 664 // ListView->setGeometry( QRect( 0, 22,
663 // this->width(), this->height() - 30 ) ); 665 // this->width(), this->height() - 30 ) );
664 // ListView->setMaximumSize( QSize( 440, 290 ) ); 666 // ListView->setMaximumSize( QSize( 440, 290 ) );
665#endif 667#endif
666 ListView->setVScrollBarMode( QListView::Auto ); 668 ListView->setVScrollBarMode( QListView::Auto );
667 669
668 QBoxLayout * l = new QVBoxLayout( this ); 670 QBoxLayout * l = new QVBoxLayout( this );
669 l->addWidget (menu); 671 l->addWidget (menu);
670 l->addWidget (ListView); 672 l->addWidget (ListView);
671 673
672#ifndef DESKTOP 674#ifndef DESKTOP
673 // start a timer (100 ms) to load the default document 675 // start a timer (100 ms) to load the default document
674 docuTimer.start( 100, true ); 676 docuTimer.start( 100, true );
675 connect( &docuTimer, SIGNAL(timeout()), SLOT( slotLoadDocu() ) ); 677 connect( &docuTimer, SIGNAL(timeout()), SLOT( slotLoadDocu() ) );
676 raiseFlag = true; 678 raiseFlag = true;
677 connect( &raiseTimer, SIGNAL(timeout()), SLOT( slotRaiseTimer() ) ); 679 connect( &raiseTimer, SIGNAL(timeout()), SLOT( slotRaiseTimer() ) );
678#else 680#else
679 // open the default document 681 // open the default document
680 openDocument(filename); 682 openDocument(filename);
681#endif 683#endif
682 684
683 // signals and slots connections for QTollButton 685 // signals and slots connections for QTollButton
684 connect( New, SIGNAL( clicked() ), this, SLOT( newPwd() ) ); 686 connect( New, SIGNAL( clicked() ), this, SLOT( newPwd() ) );
685 connect( Edit, SIGNAL( clicked() ), this, SLOT( editPwd() ) ); 687 connect( Edit, SIGNAL( clicked() ), this, SLOT( editPwd() ) );
686 connect( Delete, SIGNAL( clicked() ), this, SLOT( deletePwd() ) ); 688 connect( Delete, SIGNAL( clicked() ), this, SLOT( deletePwd() ) );
687 connect( Find, SIGNAL( clicked() ), this, SLOT( findPwd() ) ); 689 connect( Find, SIGNAL( clicked() ), this, SLOT( findPwd() ) );
688 // signals and slots connections for QListView 690 // signals and slots connections for QListView
689 connect( ListView, SIGNAL( selectionChanged( QListViewItem* ) ), 691 connect( ListView, SIGNAL( selectionChanged( QListViewItem* ) ),
690 this, SLOT( listViewSelected( QListViewItem* ) ) ); 692 this, SLOT( listViewSelected( QListViewItem* ) ) );
691 connect( ListView, SIGNAL( doubleClicked( QListViewItem* ) ), 693 connect( ListView, SIGNAL( doubleClicked( QListViewItem* ) ),
692 this, SLOT( showInfo( QListViewItem* ) ) ); 694 this, SLOT( showInfo( QListViewItem* ) ) );
693 connect( ListView, SIGNAL( returnPressed( QListViewItem* ) ), 695 connect( ListView, SIGNAL( returnPressed( QListViewItem* ) ),
694 this, SLOT( showInfo( QListViewItem* ) ) ); 696 this, SLOT( showInfo( QListViewItem* ) ) );
695 697
696} 698}
697 699
698const QColor *ZSafe::evenRowColor = &Qt::white; 700const QColor *ZSafe::evenRowColor = &Qt::white;
699// const QColor *ZSafe::oddRowColor = &Qt::lightGray; 701// const QColor *ZSafe::oddRowColor = &Qt::lightGray;
700const QColor *ZSafe::oddRowColor = new QColor(216,240,255); 702const QColor *ZSafe::oddRowColor = new QColor(216,240,255);
701 703
702/* 704/*
703 * Destroys the object and frees any allocated resources 705 * Destroys the object and frees any allocated resources
704 */ 706 */
705ZSafe::~ZSafe() 707ZSafe::~ZSafe()
706{ 708{
707 // no need to delete child widgets, Qt does it all for us 709 // no need to delete child widgets, Qt does it all for us
708 quitMe(); 710 quitMe();
709} 711}
710 712
711// load the default document 713// load the default document
712void ZSafe::slotLoadDocu() 714void ZSafe::slotLoadDocu()
713{ 715{
714 openDocument (filename); 716 openDocument (filename);
715} 717}
716 718
717void ZSafe::deletePwd() 719void ZSafe::deletePwd()
718{ 720{
719 721
720 if (!selectedItem) 722 if (!selectedItem)
721 return; 723 return;
722 if (!isCategory(selectedItem)) 724 if (!isCategory(selectedItem))
723 { 725 {
724 switch( QMessageBox::information( this, tr("ZSafe"), 726 switch( QMessageBox::information( this, tr("ZSafe"),
725 tr("Do you want to delete?"), 727 tr("Do you want to delete?"),
726 tr("&Delete"), tr("D&on't Delete"), 728 tr("&Delete"), tr("D&on't Delete"),
727 0 // Enter == button 0 729 0 // Enter == button 0
728 ) ) { // Escape == button 2 730 ) ) { // Escape == button 2
729 case 0: // Delete clicked, Alt-S or Enter pressed. 731 case 0: // Delete clicked, Alt-S or Enter pressed.
730 // Delete 732 // Delete
731 modified = true; 733 modified = true;
732 selectedItem->parent()->takeItem(selectedItem); 734 selectedItem->parent()->takeItem(selectedItem);
733 selectedItem = NULL; 735 selectedItem = NULL;
734 break; 736 break;
735 case 1: // Don't delete 737 case 1: // Don't delete
736 break; 738 break;
737 } 739 }
738 } 740 }
739 else 741 else
740 { 742 {
741 delCategory(); 743 delCategory();
742 } 744 }
743} 745}
744 746
745void ZSafe::editPwd() 747void ZSafe::editPwd()
746{ 748{
747 if (!selectedItem) 749 if (!selectedItem)
748 return; 750 return;
749 if (!isCategory(selectedItem)) 751 if (!isCategory(selectedItem))
750 { 752 {
751 // open the 'New Entry' dialog 753 // open the 'New Entry' dialog
752 NewDialog *dialog = new NewDialog(this, tr("Edit Entry"), TRUE); 754 NewDialog *dialog = new NewDialog(this, tr("Edit Entry"), TRUE);
753#ifdef WIN32 755#ifdef WIN32
754 dialog->setCaption ("Qt " + tr("Edit Entry")); 756 dialog->setCaption ("Qt " + tr("Edit Entry"));
755 dialog->setGeometry(200, 250, 220, 310 ); 757 dialog->setGeometry(200, 250, 220, 310 );
756#endif 758#endif
757 759
758 // set the labels 760 // set the labels
759 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 761 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
760 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 762 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
761 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 763 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password")));
762 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 764 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
763 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); 765 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4")));
764 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); 766 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5")));
765 767
766 // set the fields 768 // set the fields
767 dialog->NameField->setText(selectedItem->text (0)); 769 dialog->NameField->setText(selectedItem->text (0));
768 dialog->UsernameField->setText(selectedItem->text (1)); 770 dialog->UsernameField->setText(selectedItem->text (1));
769 dialog->PasswordField->setText(selectedItem->text (2)); 771 dialog->PasswordField->setText(selectedItem->text (2));
770 QString comment = selectedItem->text (3); 772 QString comment = selectedItem->text (3);
771 comment.replace (QRegExp("<br>"), "\n"); 773 comment.replace (QRegExp("<br>"), "\n");
772 dialog->Field5->setText(selectedItem->text (4)); 774 dialog->Field5->setText(selectedItem->text (4));
773 dialog->Field6->setText(selectedItem->text (5)); 775 dialog->Field6->setText(selectedItem->text (5));
774 dialog->CommentField->insertLine(comment); 776 dialog->CommentField->insertLine(comment);
775 dialog->CommentField->setCursorPosition(0,0); 777 dialog->CommentField->setCursorPosition(0,0);
776#ifdef DESKTOP 778#ifdef DESKTOP
777#ifndef WIN32 779#ifndef WIN32
778 dialog->show(); 780 dialog->show();
779#endif 781#endif
780#else 782#else
781 dialog->showMaximized(); 783 dialog->showMaximized();
782#endif 784#endif
783 DialogCode result = (DialogCode) dialog->exec(); 785 DialogCode result = (DialogCode) dialog->exec();
784 786
785#ifdef DESKTOP 787#ifdef DESKTOP
786 result = Accepted; 788 result = Accepted;
787#endif 789#endif
788 if (result == Accepted) 790 if (result == Accepted)
789 { 791 {
790 modified = true; 792 modified = true;
791 // edit the selected item 793 // edit the selected item
792 QString name = dialog->NameField->text(); 794 QString name = dialog->NameField->text();
793 selectedItem->setText (0, tr (name)); 795 selectedItem->setText (0, tr (name));
794 QString user = dialog->UsernameField->text(); 796 QString user = dialog->UsernameField->text();
795 selectedItem->setText (1, tr (user)); 797 selectedItem->setText (1, tr (user));
796 QString pwd = dialog->PasswordField->text(); 798 QString pwd = dialog->PasswordField->text();
797 selectedItem->setText (2, tr (pwd)); 799 selectedItem->setText (2, tr (pwd));
798 QString comment = dialog->CommentField->text(); 800 QString comment = dialog->CommentField->text();
799 comment.replace (QRegExp("\n"), "<br>"); 801 comment.replace (QRegExp("\n"), "<br>");
800 selectedItem->setText (3, tr (comment)); 802 selectedItem->setText (3, tr (comment));
801 QString f5 = dialog->Field5->text(); 803 QString f5 = dialog->Field5->text();
802 selectedItem->setText (4, tr (f5)); 804 selectedItem->setText (4, tr (f5));
803 QString f6 = dialog->Field6->text(); 805 QString f6 = dialog->Field6->text();
804 selectedItem->setText (5, tr (f6)); 806 selectedItem->setText (5, tr (f6));
805 } 807 }
806 808
807 delete dialog; 809 delete dialog;
808 } 810 }
809 else 811 else
810 { 812 {
811 editCategory(); 813 editCategory();
812 } 814 }
813} 815}
814 816
815void ZSafe::newPwd() 817void ZSafe::newPwd()
816{ 818{
817 if (!selectedItem) 819 if (!selectedItem)
818 return; 820 return;
819 821
820 if (!isCategory(selectedItem)) 822 if (!isCategory(selectedItem))
821 selectedItem = selectedItem->parent(); 823 selectedItem = selectedItem->parent();
822 824
823 if (isCategory(selectedItem)) 825 if (isCategory(selectedItem))
824 { 826 {
825 QString cat = selectedItem->text(0); 827 QString cat = selectedItem->text(0);
826 828
827 // open the 'New Entry' dialog 829 // open the 'New Entry' dialog
828 NewDialog *dialog = new NewDialog(this, tr("New Entry"), TRUE); 830 NewDialog *dialog = new NewDialog(this, tr("New Entry"), TRUE);
829#ifdef WIN32 831#ifdef WIN32
830 dialog->setCaption ("Qt " + tr("New Entry")); 832 dialog->setCaption ("Qt " + tr("New Entry"));
831 dialog->setGeometry(200, 250, 220, 310 ); 833 dialog->setGeometry(200, 250, 220, 310 );
832#endif 834#endif
833 // set the labels 835 // set the labels
834 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 836 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
835 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 837 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
836 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 838 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password")));
837 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 839 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
838 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); 840 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4")));
839 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); 841 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5")));
840retype: 842retype:
841#ifdef DESKTOP 843#ifdef DESKTOP
842#ifndef WIN32 844#ifndef WIN32
843 dialog->show(); 845 dialog->show();
844#endif 846#endif
845#else 847#else
846 dialog->showMaximized(); 848 dialog->showMaximized();
847#endif 849#endif
848 DialogCode result = (DialogCode) dialog->exec(); 850 DialogCode result = (DialogCode) dialog->exec();
849#ifdef DESKTOP 851#ifdef DESKTOP
850 result = Accepted; 852 result = Accepted;
851#endif 853#endif
852 854
853 if (result == Accepted) 855 if (result == Accepted)
854 { 856 {
855 857
856 QString name = dialog->NameField->text(); 858 QString name = dialog->NameField->text();
857 if (cat == name) 859 if (cat == name)
858 { 860 {
859 QMessageBox::critical( 0, tr("ZSafe"), 861 QMessageBox::critical( 0, tr("ZSafe"),
860 tr("Entry name must be different\nfrom the category name.") ); 862 tr("Entry name must be different\nfrom the category name.") );
861 goto retype; // it's not a good programming style :-) 863 goto retype; // it's not a good programming style :-)
862 } 864 }
863 865
864 modified = true; 866 modified = true;
865 // add the new item 867 // add the new item
866 QListViewItem *i = new ShadedListItem (0, selectedItem); 868 QListViewItem *i = new ShadedListItem (0, selectedItem);
867 i->setOpen (TRUE); 869 i->setOpen (TRUE);
868 870
869 i->setText (0, tr (name)); 871 i->setText (0, tr (name));
870 QString user = dialog->UsernameField->text(); 872 QString user = dialog->UsernameField->text();
871 i->setText (1, tr (user)); 873 i->setText (1, tr (user));
872 QString pwd = dialog->PasswordField->text(); 874 QString pwd = dialog->PasswordField->text();
873 i->setText (2, tr (pwd)); 875 i->setText (2, tr (pwd));
874 QString comment = dialog->CommentField->text(); 876 QString comment = dialog->CommentField->text();
875 comment.replace (QRegExp("\n"), "<br>"); 877 comment.replace (QRegExp("\n"), "<br>");
876 i->setText (3, tr (comment)); 878 i->setText (3, tr (comment));
877 QString f5 = dialog->Field5->text(); 879 QString f5 = dialog->Field5->text();
878 i->setText (4, tr (f5)); 880 i->setText (4, tr (f5));
879 QString f6 = dialog->Field6->text(); 881 QString f6 = dialog->Field6->text();
880 i->setText (5, tr (f6)); 882 i->setText (5, tr (f6));
881 } 883 }
882 884
883 delete dialog; 885 delete dialog;
884 } 886 }
885} 887}
886 888
887void ZSafe::findPwd() 889void ZSafe::findPwd()
888{ 890{
889 891
890 // open the 'Search' dialog 892 // open the 'Search' dialog
891 SearchDialog *dialog = new SearchDialog(this, tr("Search"), TRUE); 893 SearchDialog *dialog = new SearchDialog(this, tr("Search"), TRUE);
892#ifdef WIN32 894#ifdef WIN32
893 dialog->setCaption ("Qt " + tr("Search")); 895 dialog->setCaption ("Qt " + tr("Search"));
894#endif 896#endif
895 897
896#ifdef DESKTOP 898#ifdef DESKTOP
897#endif 899#endif
898 if (lastSearchedName) 900 if (lastSearchedName)
899 dialog->NameField->setText(lastSearchedName); 901 dialog->NameField->setText(lastSearchedName);
900 else 902 else
901 dialog->NameField->setText(""); 903 dialog->NameField->setText("");
902 if (lastSearchedUsername) 904 if (lastSearchedUsername)
903 dialog->UsernameField->setText(lastSearchedUsername); 905 dialog->UsernameField->setText(lastSearchedUsername);
904 else 906 else
905 dialog->UsernameField->setText(""); 907 dialog->UsernameField->setText("");
906 if (lastSearchedComment) 908 if (lastSearchedComment)
907 dialog->CommentField->setText(lastSearchedComment); 909 dialog->CommentField->setText(lastSearchedComment);
908 else 910 else
909 dialog->CommentField->setText(""); 911 dialog->CommentField->setText("");
910 DialogCode result = (DialogCode) dialog->exec(); 912 DialogCode result = (DialogCode) dialog->exec();
911#ifdef DESKTOP 913#ifdef DESKTOP
912 result = Accepted; 914 result = Accepted;
913#endif 915#endif
914 916
915 QString name; 917 QString name;
916 QString username; 918 QString username;
917 QString comment; 919 QString comment;
918 if (result == Accepted) 920 if (result == Accepted)
919 { 921 {
920 name = dialog->NameField->text(); 922 name = dialog->NameField->text();
921 username = dialog->UsernameField->text(); 923 username = dialog->UsernameField->text();
922 comment = dialog->CommentField->text(); 924 comment = dialog->CommentField->text();
923 qWarning (name); 925 qWarning (name);
924 } 926 }
925 else 927 else
926 { 928 {
927 delete dialog; 929 delete dialog;
928 return; 930 return;
929 } 931 }
930 932
931 if (!name.isEmpty() && name != lastSearchedName || 933 if (!name.isEmpty() && name != lastSearchedName ||
932 lastSearchedName.isEmpty() && !name.isEmpty()) 934 lastSearchedName.isEmpty() && !name.isEmpty())
933 { 935 {
934 // set search at the beginning if a new name is given 936 // set search at the beginning if a new name is given
935 lastSearchedCategory = NULL; 937 lastSearchedCategory = NULL;
936 lastSearchedItem = NULL; 938 lastSearchedItem = NULL;
937 } 939 }
938 lastSearchedName = name; 940 lastSearchedName = name;
939 if (!username.isEmpty() && username != lastSearchedUsername || 941 if (!username.isEmpty() && username != lastSearchedUsername ||
940 lastSearchedUsername.isEmpty() && !username.isEmpty()) 942 lastSearchedUsername.isEmpty() && !username.isEmpty())
941 { 943 {
942 // set search at the beginning if a new name is given 944 // set search at the beginning if a new name is given
943 lastSearchedCategory = NULL; 945 lastSearchedCategory = NULL;
944 lastSearchedItem = NULL; 946 lastSearchedItem = NULL;
945 } 947 }
946 lastSearchedUsername = username; 948 lastSearchedUsername = username;
947 if (!comment.isEmpty() && comment != lastSearchedComment || 949 if (!comment.isEmpty() && comment != lastSearchedComment ||
948 lastSearchedComment.isEmpty() && !comment.isEmpty()) 950 lastSearchedComment.isEmpty() && !comment.isEmpty())
949 { 951 {
950 // set search at the beginning if a new name is given 952 // set search at the beginning if a new name is given
951 lastSearchedCategory = NULL; 953 lastSearchedCategory = NULL;
952 lastSearchedItem = NULL; 954 lastSearchedItem = NULL;
953 } 955 }
954 lastSearchedComment = comment; 956 lastSearchedComment = comment;
955 957
956 ListView->clearSelection(); 958 ListView->clearSelection();
957 959
958 bool found=FALSE; 960 bool found=FALSE;
959 // step through all categories 961 // step through all categories
960 QListViewItem *i; 962 QListViewItem *i;
961 if (lastSearchedCategory) 963 if (lastSearchedCategory)
962 i = lastSearchedCategory; 964 i = lastSearchedCategory;
963 else 965 else
964 i = ListView->firstChild(); 966 i = ListView->firstChild();
965 for (; 967 for (;
966 i != NULL; 968 i != NULL;
967 i = i->nextSibling()) 969 i = i->nextSibling())
968 { 970 {
969 qWarning (i->text(0)); 971 qWarning (i->text(0));
970 i->setSelected(FALSE); 972 i->setSelected(FALSE);
971 973
972 // step through all subitems 974 // step through all subitems
973 QListViewItem *si; 975 QListViewItem *si;
974 if (lastSearchedItem) 976 if (lastSearchedItem)
975 si = lastSearchedItem; 977 si = lastSearchedItem;
976 else 978 else
977 si = i->firstChild(); 979 si = i->firstChild();
978 // for (si = i->firstChild(); 980 // for (si = i->firstChild();
979 for (; 981 for (;
980 si != NULL; 982 si != NULL;
981 si = si->nextSibling()) 983 si = si->nextSibling())
982 { 984 {
983 qWarning (si->text(0)); 985 qWarning (si->text(0));
984 if (si->isSelected()) 986 if (si->isSelected())
985 si->setSelected(FALSE); 987 si->setSelected(FALSE);
986 // ListView->repaintItem(si); 988 // ListView->repaintItem(si);
987 989
988 bool n=TRUE; 990 bool n=TRUE;
989 bool u=TRUE; 991 bool u=TRUE;
990 bool c=TRUE; 992 bool c=TRUE;
991 if (!name.isEmpty()) 993 if (!name.isEmpty())
992 n = (si->text(0)).contains (name, FALSE); 994 n = (si->text(0)).contains (name, FALSE);
993 if (!username.isEmpty()) 995 if (!username.isEmpty())
994 u = (si->text(1)).contains (username, FALSE); 996 u = (si->text(1)).contains (username, FALSE);
995 if (!comment.isEmpty()) 997 if (!comment.isEmpty())
996 c = (si->text(3)).contains (comment, FALSE); 998 c = (si->text(3)).contains (comment, FALSE);
997 999
998 if ((n && u && c ) && !found) 1000 if ((n && u && c ) && !found)
999 { 1001 {
1000 qWarning ("Found"); 1002 qWarning ("Found");
1001 selectedItem = si; 1003 selectedItem = si;
1002 si->setSelected(TRUE); 1004 si->setSelected(TRUE);
1003 ListView->setCurrentItem(si); 1005 ListView->setCurrentItem(si);
1004 ListView->ensureItemVisible(si); 1006 ListView->ensureItemVisible(si);
1005 ListView->triggerUpdate(); 1007 ListView->triggerUpdate();
1006 1008
1007 lastSearchedCategory = i; 1009 lastSearchedCategory = i;
1008 // set to the next item 1010 // set to the next item
1009 lastSearchedItem = si->nextSibling(); 1011 lastSearchedItem = si->nextSibling();
1010 if (!lastSearchedItem) 1012 if (!lastSearchedItem)
1011 { 1013 {
1012 // no next item within category -> set next category 1014 // no next item within category -> set next category
1013 lastSearchedCategory = i->nextSibling(); 1015 lastSearchedCategory = i->nextSibling();
1014 if (!lastSearchedCategory) 1016 if (!lastSearchedCategory)
1015 lastSearchedItem = NULL; // END 1017 lastSearchedItem = NULL; // END
1016 } 1018 }
1017 1019
1018 found = TRUE; 1020 found = TRUE;
1019 delete dialog; 1021 delete dialog;
1020 update(); 1022 update();
1021 return; 1023 return;
1022 } 1024 }
1023 } 1025 }
1024 lastSearchedCategory = i->nextSibling(); 1026 lastSearchedCategory = i->nextSibling();
1025 lastSearchedItem = NULL; 1027 lastSearchedItem = NULL;
1026 } 1028 }
1027 lastSearchedCategory = NULL; 1029 lastSearchedCategory = NULL;
1028 lastSearchedItem = NULL; 1030 lastSearchedItem = NULL;
1029 delete dialog; 1031 delete dialog;
1030 update(); 1032 update();
1031 QMessageBox::information( this, tr("ZSafe"), 1033 QMessageBox::information( this, tr("ZSafe"),
1032 tr("Entry not found"), tr("&OK"), 0); 1034 tr("Entry not found"), tr("&OK"), 0);
1033 1035
1034} 1036}
1035 1037
1036QString ZSafe::getFieldLabel (QListViewItem *_item, QString field, QString def) 1038QString ZSafe::getFieldLabel (QListViewItem *_item, QString field, QString def)
1037{ 1039{
1038 QString category; 1040 QString category;
1039 if (_item) 1041 if (_item)
1040 { 1042 {
1041 if (isCategory(_item)) 1043 if (isCategory(_item))
1042 { 1044 {
1043 category = _item->text(0); 1045 category = _item->text(0);
1044 } 1046 }
1045 else 1047 else
1046 { 1048 {
1047 QListViewItem *cat = _item->parent(); 1049 QListViewItem *cat = _item->parent();
1048 category = cat->text(0); 1050 category = cat->text(0);
1049 } 1051 }
1050 } 1052 }
1051 else 1053 else
1052 { 1054 {
1053 return def; 1055 return def;
1054 } 1056 }
1055 1057
1056 QString app_key = APP_KEY; 1058 QString app_key = APP_KEY;
1057#ifndef DESKTOP 1059#ifndef DESKTOP
1058#ifndef WIN32 1060#ifndef WIN32
1059 conf->setGroup ("fieldDefs"); 1061 conf->setGroup ("fieldDefs");
1060#endif 1062#endif
1061#else 1063#else
1062#ifndef WIN32 1064#ifndef WIN32
1063 app_key += "/fieldDefs/"; 1065 app_key += "/fieldDefs/";
1064#endif 1066#endif
1065#endif 1067#endif
1066// #ifndef WIN32 1068// #ifndef WIN32
1067 QString label = conf->readEntry(app_key+category+"-field"+field,def); 1069 QString label = conf->readEntry(app_key+category+"-field"+field,def);
1068// #else 1070// #else
1069// QString label(def); 1071// QString label(def);
1070// #endif 1072// #endif
1071 1073
1072#ifndef DESKTOP 1074#ifndef DESKTOP
1073 conf->setGroup ("zsafe"); 1075 conf->setGroup ("zsafe");
1074#endif 1076#endif
1075 return label; 1077 return label;
1076} 1078}
1077 1079
1078QString ZSafe::getFieldLabel (QString category, QString field, QString def) 1080QString ZSafe::getFieldLabel (QString category, QString field, QString def)
1079{ 1081{
1080 QString app_key = APP_KEY; 1082 QString app_key = APP_KEY;
1081#ifndef DESKTOP 1083#ifndef DESKTOP
1082 conf->setGroup ("fieldDefs"); 1084 conf->setGroup ("fieldDefs");
1083#else 1085#else
1084#ifndef WIN32 1086#ifndef WIN32
1085 app_key += "/fieldDefs/"; 1087 app_key += "/fieldDefs/";
1086#endif 1088#endif
1087#endif 1089#endif
1088// #ifndef WIN32 1090// #ifndef WIN32
1089 QString label = conf->readEntry(app_key+category+"-field"+field, 1091 QString label = conf->readEntry(app_key+category+"-field"+field,
1090 def); 1092 def);
1091// #else 1093// #else
1092 // QString label(def); 1094 // QString label(def);
1093// #endif 1095// #endif
1094#ifndef DESKTOP 1096#ifndef DESKTOP
1095 conf->setGroup ("zsafe"); 1097 conf->setGroup ("zsafe");
1096#endif 1098#endif
1097 return label; 1099 return label;
1098} 1100}
1099 1101
1100void ZSafe::showInfo( QListViewItem *_item) 1102void ZSafe::showInfo( QListViewItem *_item)
1101{ 1103{
1102 if (!_item) 1104 if (!_item)
1103 return; 1105 return;
1104 if (selectedItem != NULL) 1106 if (selectedItem != NULL)
1105 selectedItem->setSelected(FALSE); 1107 selectedItem->setSelected(FALSE);
1106 1108
1107 selectedItem = _item; 1109 selectedItem = _item;
1108 selectedItem->setSelected(TRUE); 1110 selectedItem->setSelected(TRUE);
1109 1111
1110 if (!isCategory(_item)) 1112 if (!isCategory(_item))
1111 { 1113 {
1112/* 1114/*
1113 QString label=selectedItem->text(0); 1115 QString label=selectedItem->text(0);
1114 label+="\n"; 1116 label+="\n";
1115 label+=selectedItem->text(1); 1117 label+=selectedItem->text(1);
1116 label+="\n"; 1118 label+="\n";
1117 label+=selectedItem->text(2); 1119 label+=selectedItem->text(2);
1118 label+="\n"; 1120 label+="\n";
1119 label+=selectedItem->text(3); 1121 label+=selectedItem->text(3);
1120*/ 1122*/
1121 1123
1122 QString text; 1124 QString text;
1123 QString entry; 1125 QString entry;
1124 1126
1125 text = "<html><body><div align=""center""><u><b>"; 1127 text = "<html><body><div align=""center""><u><b>";
1126 text += selectedItem->text(0); 1128 text += selectedItem->text(0);
1127 text += "</b></u><br></div><br>"; 1129 text += "</b></u><br></div><br>";
1128 1130
1129 entry = selectedItem->text(1); 1131 entry = selectedItem->text(1);
1130 if (!entry.isEmpty() && entry.compare(" ")) 1132 if (!entry.isEmpty() && entry.compare(" "))
1131 { 1133 {
1132 text += "<u><b>"; 1134 text += "<u><b>";
1133 text += getFieldLabel (selectedItem, "2", tr("Username")); 1135 text += getFieldLabel (selectedItem, "2", tr("Username"));
1134 text += ":<br></b></u><blockquote>"; 1136 text += ":<br></b></u><blockquote>";
1135 text += entry; 1137 text += entry;
1136 text += "</blockquote>"; 1138 text += "</blockquote>";
1137 // text += "<br>"; 1139 // text += "<br>";
1138 } 1140 }
1139 1141
1140 entry = selectedItem->text(2); 1142 entry = selectedItem->text(2);
1141 if (!entry.isEmpty() && entry.compare(" ")) 1143 if (!entry.isEmpty() && entry.compare(" "))
1142 { 1144 {
1143 text += "<u><b>"; 1145 text += "<u><b>";
1144 text += getFieldLabel (selectedItem, "3", tr("Password")); 1146 text += getFieldLabel (selectedItem, "3", tr("Password"));
1145 text += ":<br> </b></u><blockquote>"; 1147 text += ":<br> </b></u><blockquote>";
1146 text += entry; 1148 text += entry;
1147 text += "</blockquote>"; 1149 text += "</blockquote>";
1148 // text += "<br>"; 1150 // text += "<br>";
1149 } 1151 }
1150 1152
1151 entry = selectedItem->text(4); 1153 entry = selectedItem->text(4);
1152 if (!entry.isEmpty() && entry.compare(" ")) 1154 if (!entry.isEmpty() && entry.compare(" "))
1153 { 1155 {
1154 text += "<u><b>"; 1156 text += "<u><b>";
1155 text += getFieldLabel (selectedItem, "5", tr("Field 4")); 1157 text += getFieldLabel (selectedItem, "5", tr("Field 4"));
1156 text += ":<br> </b></u><blockquote>"; 1158 text += ":<br> </b></u><blockquote>";
1157 text += entry; 1159 text += entry;
1158 text += "</blockquote>"; 1160 text += "</blockquote>";
1159 // text += "<br>"; 1161 // text += "<br>";
1160 } 1162 }
1161 1163
1162 entry = selectedItem->text(5); 1164 entry = selectedItem->text(5);
1163 if (!entry.isEmpty() && entry.compare(" ")) 1165 if (!entry.isEmpty() && entry.compare(" "))
1164 { 1166 {
1165 text += "<u><b>"; 1167 text += "<u><b>";
1166 text += getFieldLabel (selectedItem, "6", tr("Field 5")); 1168 text += getFieldLabel (selectedItem, "6", tr("Field 5"));
1167 text += ":<br> </b></u><blockquote>"; 1169 text += ":<br> </b></u><blockquote>";
1168 text += entry; 1170 text += entry;
1169 text += "</blockquote>"; 1171 text += "</blockquote>";
1170 // text += "<br>"; 1172 // text += "<br>";
1171 } 1173 }
1172 1174
1173 entry = selectedItem->text(3); 1175 entry = selectedItem->text(3);
1174 if (!entry.isEmpty() && entry.compare(" ")) 1176 if (!entry.isEmpty() && entry.compare(" "))
1175 { 1177 {
1176 text += "<u><b>"; 1178 text += "<u><b>";
1177 text += getFieldLabel (selectedItem, "4", tr("Comment")); 1179 text += getFieldLabel (selectedItem, "4", tr("Comment"));
1178 text += ":<br> </b></u>"; 1180 text += ":<br> </b></u>";
1179 QString comment = selectedItem->text(3); 1181 QString comment = selectedItem->text(3);
1180 comment.replace (QRegExp("\n"), "<br>"); 1182 comment.replace (QRegExp("\n"), "<br>");
1181 text += comment; 1183 text += comment;
1182 // text += "<br>"; 1184 // text += "<br>";
1183 } 1185 }
1184 1186
1185 text += "</body></html>"; 1187 text += "</body></html>";
1186 1188
1187 infoForm->InfoText->setText(text); 1189 infoForm->InfoText->setText(text);
1188 infoForm->hide(); 1190 infoForm->hide();
1189#ifdef DESKTOP 1191#ifdef DESKTOP
1190 infoForm->show(); 1192 infoForm->show();
1191#else 1193#else
1192 infoForm->showMaximized(); 1194 infoForm->showMaximized();
1193#endif 1195#endif
1194 1196
1195 } 1197 }
1196} 1198}
1197 1199
1198void ZSafe::listViewSelected( QListViewItem *_item) 1200void ZSafe::listViewSelected( QListViewItem *_item)
1199{ 1201{
1200 if (!_item) 1202 if (!_item)
1201 return; 1203 return;
1202 if (selectedItem != NULL) 1204 if (selectedItem != NULL)
1203 selectedItem->setSelected(FALSE); 1205 selectedItem->setSelected(FALSE);
1204 1206
1205 selectedItem = _item; 1207 selectedItem = _item;
1206 1208
1207#ifndef DESKTOP 1209#ifndef DESKTOP
1208 // set the column text dependent on the selected item 1210 // set the column text dependent on the selected item
1209 ListView->setColumnText(0, getFieldLabel (selectedItem, "1", tr("Name"))); 1211 ListView->setColumnText(0, getFieldLabel (selectedItem, "1", tr("Name")));
1210 ListView->setColumnText(1, getFieldLabel (selectedItem, "2", tr("Field 2"))); 1212 ListView->setColumnText(1, getFieldLabel (selectedItem, "2", tr("Field 2")));
1211 ListView->setColumnText(2, getFieldLabel (selectedItem, "3", tr("Field 3"))); 1213 ListView->setColumnText(2, getFieldLabel (selectedItem, "3", tr("Field 3")));
1212 ListView->setColumnText(3, getFieldLabel (selectedItem, "4", tr("Comment"))); 1214 ListView->setColumnText(3, getFieldLabel (selectedItem, "4", tr("Comment")));
1213 ListView->setColumnText(4, getFieldLabel (selectedItem, "5", tr("Field 4"))); 1215 ListView->setColumnText(4, getFieldLabel (selectedItem, "5", tr("Field 4")));
1214 ListView->setColumnText(5, getFieldLabel (selectedItem, "6", tr("Field 5"))); 1216 ListView->setColumnText(5, getFieldLabel (selectedItem, "6", tr("Field 5")));
1215#endif 1217#endif
1216#ifdef WIN32 1218#ifdef WIN32
1217 // set the column text dependent on the selected item 1219 // set the column text dependent on the selected item
1218 ListView->setColumnText(0, getFieldLabel (selectedItem, "1", tr("Name"))); 1220 ListView->setColumnText(0, getFieldLabel (selectedItem, "1", tr("Name")));
1219 ListView->setColumnText(1, getFieldLabel (selectedItem, "2", tr("Field 2"))); 1221 ListView->setColumnText(1, getFieldLabel (selectedItem, "2", tr("Field 2")));
1220 ListView->setColumnText(2, getFieldLabel (selectedItem, "3", tr("Field 3"))); 1222 ListView->setColumnText(2, getFieldLabel (selectedItem, "3", tr("Field 3")));
1221 ListView->setColumnText(3, getFieldLabel (selectedItem, "4", tr("Comment"))); 1223 ListView->setColumnText(3, getFieldLabel (selectedItem, "4", tr("Comment")));
1222 ListView->setColumnText(4, getFieldLabel (selectedItem, "5", tr("Field 4"))); 1224 ListView->setColumnText(4, getFieldLabel (selectedItem, "5", tr("Field 4")));
1223 ListView->setColumnText(5, getFieldLabel (selectedItem, "6", tr("Field 5"))); 1225 ListView->setColumnText(5, getFieldLabel (selectedItem, "6", tr("Field 5")));
1224#endif 1226#endif
1225 1227
1226} 1228}
1227 1229
1228bool ZSafe::isCategory(QListViewItem *_item) 1230bool ZSafe::isCategory(QListViewItem *_item)
1229{ 1231{
1230 if (_item == NULL) 1232 if (_item == NULL)
1231 return FALSE; 1233 return FALSE;
1232 1234
1233 QString categoryName = _item->text (0); 1235 QString categoryName = _item->text (0);
1234 if (categories.find (categoryName)) 1236 if (categories.find (categoryName))
1235 return TRUE; 1237 return TRUE;
1236 else 1238 else
1237 return FALSE; 1239 return FALSE;
1238} 1240}
1239 1241
1240void ZSafe::removeAsciiFile() 1242void ZSafe::removeAsciiFile()
1241{ 1243{
1242 // QString fn = filename + ".txt"; 1244 // QString fn = filename + ".txt";
1243 // open the file dialog 1245 // open the file dialog
1244#ifndef DESKTOP 1246#ifndef DESKTOP
1245#ifndef NO_OPIE 1247#ifndef NO_OPIE
1246 QMap<QString, QStringList> mimeTypes; 1248 QMap<QString, QStringList> mimeTypes;
1247 mimeTypes.insert(tr("All"), QStringList() ); 1249 mimeTypes.insert(tr("All"), QStringList() );
1248 mimeTypes.insert(tr("Text"), "text/*" ); 1250 mimeTypes.insert(tr("Text"), "text/*" );
1249 QString fn = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL, 1251 QString fn = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL,
1250 QDir::homeDirPath() + "/Documents/application/zsafe", 1252 QDir::homeDirPath() + "/Documents/application/zsafe",
1251 QString::null, 1253 QString::null,
1252 mimeTypes, 1254 mimeTypes,
1253 this, 1255 this,
1254 tr ("Remove text file")); 1256 tr ("Remove text file"));
1255#else 1257#else
1256 QString fn = ScQtFileEdit::getOpenFileName(this, 1258 QString fn = ScQtFileEdit::getOpenFileName(this,
1257 tr ("Remove text file"), 1259 tr ("Remove text file"),
1258 QDir::homeDirPath() + "/Documents/application/zsafe", 1260 QDir::homeDirPath() + "/Documents/application/zsafe",
1259 "*.txt"); 1261 "*.txt");
1260#endif 1262#endif
1261#else 1263#else
1262 QString fn = QFileDialog::getOpenFileName( 1264 QString fn = QFileDialog::getOpenFileName(
1263 QDir::homeDirPath() + "/Documents/application/zsafe", 1265 QDir::homeDirPath() + "/Documents/application/zsafe",
1264 "ZSafe (*.txt)", 1266 "ZSafe (*.txt)",
1265 this, 1267 this,
1266 "ZSafe File Dialog" 1268 "ZSafe File Dialog"
1267 "Choose a text file" ); 1269 "Choose a text file" );
1268#endif 1270#endif
1269 1271
1270 if (fn && fn.length() > 0 ) 1272 if (fn && fn.length() > 0 )
1271 { 1273 {
1272 QFile f( fn ); 1274 QFile f( fn );
1273 if ( !f.remove() ) 1275 if ( !f.remove() )
1274 { 1276 {
1275 qWarning( QString("Could not remove file %1").arg(fn), 1277 qWarning( QString("Could not remove file %1").arg(fn),
1276 2000 ); 1278 2000 );
1277 QMessageBox::critical( 0, tr("ZSafe"), 1279 QMessageBox::critical( 0, tr("ZSafe"),
1278 tr("Could not remove text file.") ); 1280 tr("Could not remove text file.") );
1279 return; 1281 return;
1280 } 1282 }
1281 } 1283 }
1282} 1284}
1283 1285
1284void ZSafe::writeAllEntries() 1286void ZSafe::writeAllEntries()
1285{ 1287{
1286 if (filename.isEmpty()) 1288 if (filename.isEmpty())
1287 { 1289 {
1288 QMessageBox::critical( 0, tr("ZSafe"), 1290 QMessageBox::critical( 0, tr("ZSafe"),
@@ -2882,863 +2884,865 @@ void ZSafe::setCategoryDialogFields(CategoryDialog *dialog)
2882 if(fileName.right(4) == ".png") 2884 if(fileName.right(4) == ".png")
2883 { 2885 {
2884 fileName = fileName.mid(0,fileName.length()-4); 2886 fileName = fileName.mid(0,fileName.length()-4);
2885 2887
2886 if(fileName+".png"==icon) 2888 if(fileName+".png"==icon)
2887 { 2889 {
2888 dialog->IconField->setCurrentItem(i+1); 2890 dialog->IconField->setCurrentItem(i+1);
2889 break; 2891 break;
2890 } 2892 }
2891 ++i; 2893 ++i;
2892 } 2894 }
2893 ++it; 2895 ++it;
2894 } 2896 }
2895 } 2897 }
2896} 2898}
2897 2899
2898void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category) 2900void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category)
2899{ 2901{
2900 if (!dialog) 2902 if (!dialog)
2901 return; 2903 return;
2902 2904
2903 dialog->Field1->setText(getFieldLabel (category, "1", tr("Name"))); 2905 dialog->Field1->setText(getFieldLabel (category, "1", tr("Name")));
2904 dialog->Field2->setText(getFieldLabel (category, "2", tr("Username"))); 2906 dialog->Field2->setText(getFieldLabel (category, "2", tr("Username")));
2905 dialog->Field3->setText(getFieldLabel (category, "3", tr("Password"))); 2907 dialog->Field3->setText(getFieldLabel (category, "3", tr("Password")));
2906 dialog->Field4->setText(getFieldLabel (category, "4", tr("Comment"))); 2908 dialog->Field4->setText(getFieldLabel (category, "4", tr("Comment")));
2907 dialog->Field5->setText(getFieldLabel (category, "5", tr("Field 4"))); 2909 dialog->Field5->setText(getFieldLabel (category, "5", tr("Field 4")));
2908 dialog->Field6->setText(getFieldLabel (category, "6", tr("Field 5"))); 2910 dialog->Field6->setText(getFieldLabel (category, "6", tr("Field 5")));
2909 2911
2910 QString icon; 2912 QString icon;
2911 Category *cat= categories.find (category); 2913 Category *cat= categories.find (category);
2912 if (cat) 2914 if (cat)
2913 { 2915 {
2914 icon = cat->getIconName(); 2916 icon = cat->getIconName();
2915 } 2917 }
2916 else 2918 else
2917 icon = conf->readEntry(APP_KEY+category); 2919 icon = conf->readEntry(APP_KEY+category);
2918 2920
2919#ifdef DESKTOP 2921#ifdef DESKTOP
2920 QDir d(iconPath); 2922 QDir d(iconPath);
2921#else 2923#else
2922 QDir d(QPEApplication::qpeDir() + "/pics/"); 2924 QDir d(QPEApplication::qpeDir() + "/pics/");
2923#endif 2925#endif
2924 d.setFilter( QDir::Files); 2926 d.setFilter( QDir::Files);
2925 2927
2926 const QFileInfoList *list = d.entryInfoList(); 2928 const QFileInfoList *list = d.entryInfoList();
2927 int i=0; 2929 int i=0;
2928 QFileInfoListIterator it( *list ); // create list iterator 2930 QFileInfoListIterator it( *list ); // create list iterator
2929 QFileInfo *fi; // pointer for traversing 2931 QFileInfo *fi; // pointer for traversing
2930 if (icon.isEmpty() || icon.isNull()) 2932 if (icon.isEmpty() || icon.isNull())
2931 { 2933 {
2932 dialog->IconField->setCurrentItem(0); 2934 dialog->IconField->setCurrentItem(0);
2933 } 2935 }
2934 else 2936 else
2935 { 2937 {
2936 while ( (fi=it.current()) ) 2938 while ( (fi=it.current()) )
2937 { // for each file... 2939 { // for each file...
2938 QString fileName = fi->fileName(); 2940 QString fileName = fi->fileName();
2939 if(fileName.right(4) == ".png") 2941 if(fileName.right(4) == ".png")
2940 { 2942 {
2941 fileName = fileName.mid(0,fileName.length()-4); 2943 fileName = fileName.mid(0,fileName.length()-4);
2942 2944
2943 if(fileName+".png"==icon) 2945 if(fileName+".png"==icon)
2944 { 2946 {
2945 dialog->IconField->setCurrentItem(i+1); 2947 dialog->IconField->setCurrentItem(i+1);
2946 break; 2948 break;
2947 } 2949 }
2948 ++i; 2950 ++i;
2949 } 2951 }
2950 ++it; 2952 ++it;
2951 } 2953 }
2952 } 2954 }
2953} 2955}
2954 2956
2955void ZSafe::saveCategoryDialogFields(CategoryDialog *dialog) 2957void ZSafe::saveCategoryDialogFields(CategoryDialog *dialog)
2956{ 2958{
2957 QString app_key = APP_KEY; 2959 QString app_key = APP_KEY;
2958#ifndef DESKTOP 2960#ifndef DESKTOP
2959 conf->setGroup ("fieldDefs"); 2961 conf->setGroup ("fieldDefs");
2960#else 2962#else
2961#ifndef WIN32 2963#ifndef WIN32
2962 app_key += "/fieldDefs/"; 2964 app_key += "/fieldDefs/";
2963#endif 2965#endif
2964#endif 2966#endif
2965 QString category = dialog->CategoryField->currentText(); 2967 QString category = dialog->CategoryField->currentText();
2966// #ifndef WIN32 2968// #ifndef WIN32
2967 conf->writeEntry(app_key+category+"-field1", dialog->Field1->text()); 2969 conf->writeEntry(app_key+category+"-field1", dialog->Field1->text());
2968 conf->writeEntry(app_key+category+"-field2", dialog->Field2->text()); 2970 conf->writeEntry(app_key+category+"-field2", dialog->Field2->text());
2969 conf->writeEntry(app_key+category+"-field3", dialog->Field3->text()); 2971 conf->writeEntry(app_key+category+"-field3", dialog->Field3->text());
2970 conf->writeEntry(app_key+category+"-field4", dialog->Field4->text()); 2972 conf->writeEntry(app_key+category+"-field4", dialog->Field4->text());
2971 conf->writeEntry(app_key+category+"-field5", dialog->Field5->text()); 2973 conf->writeEntry(app_key+category+"-field5", dialog->Field5->text());
2972 conf->writeEntry(app_key+category+"-field6", dialog->Field6->text()); 2974 conf->writeEntry(app_key+category+"-field6", dialog->Field6->text());
2973// #endif 2975// #endif
2974 saveConf(); 2976 saveConf();
2975#ifndef DESKTOP 2977#ifndef DESKTOP
2976 conf->setGroup ("zsafe"); 2978 conf->setGroup ("zsafe");
2977#endif 2979#endif
2978} 2980}
2979 2981
2980void ZSafe::editCategory() 2982void ZSafe::editCategory()
2981{ 2983{
2982 if (!selectedItem) 2984 if (!selectedItem)
2983 return; 2985 return;
2984 if (isCategory(selectedItem)) 2986 if (isCategory(selectedItem))
2985 { 2987 {
2986 QString category = selectedItem->text(0); 2988 QString category = selectedItem->text(0);
2987 bool initIcons = false; 2989 bool initIcons = false;
2988 // open the 'Category' dialog 2990 // open the 'Category' dialog
2989 CategoryDialog *dialog; 2991 CategoryDialog *dialog;
2990 if (categoryDialog) 2992 if (categoryDialog)
2991 { 2993 {
2992 dialog = categoryDialog; 2994 dialog = categoryDialog;
2993 } 2995 }
2994 else 2996 else
2995 { 2997 {
2996 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE); 2998 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE);
2997#ifdef WIN32 2999#ifdef WIN32
2998 categoryDialog->setCaption ("Qt " + tr("Category")); 3000 categoryDialog->setCaption ("Qt " + tr("Category"));
2999#endif 3001#endif
3000 dialog = categoryDialog; 3002 dialog = categoryDialog;
3001 connect( dialog->CategoryField, 3003 connect( dialog->CategoryField,
3002 SIGNAL( activated ( const QString &)), 3004 SIGNAL( activated ( const QString &)),
3003 this, SLOT( categoryFieldActivated( const QString & ) ) ); 3005 this, SLOT( categoryFieldActivated( const QString & ) ) );
3004 initIcons = true; 3006 initIcons = true;
3005 } 3007 }
3006 setCategoryDialogFields(dialog); 3008 setCategoryDialogFields(dialog);
3007 3009
3008#ifdef DESKTOP 3010#ifdef DESKTOP
3009#ifndef WIN32 3011#ifndef WIN32
3010 QStringList list = conf->entryList( APP_KEY+"/fieldDefs" ); 3012 QStringList list = conf->entryList( APP_KEY+"/fieldDefs" );
3011#else 3013#else
3012 // read all categories from the config file and store 3014 // read all categories from the config file and store
3013 // into a list 3015 // into a list
3014 QFile f (cfgFile); 3016 QFile f (cfgFile);
3015 QStringList list; 3017 QStringList list;
3016 if ( f.open(IO_ReadOnly) ) { // file opened successfully 3018 if ( f.open(IO_ReadOnly) ) { // file opened successfully
3017 QTextStream t( &f ); // use a text stream 3019 QTextStream t( &f ); // use a text stream
3018 QString s; 3020 QString s;
3019 int n = 1; 3021 int n = 1;
3020 while ( !t.eof() ) { // until end of file... 3022 while ( !t.eof() ) { // until end of file...
3021 s = t.readLine(); // line of text excluding '\n' 3023 s = t.readLine(); // line of text excluding '\n'
3022 list.append(s); 3024 list.append(s);
3023 } 3025 }
3024 f.close(); 3026 f.close();
3025 } 3027 }
3026#endif 3028#endif
3027#else 3029#else
3028 // read all categories from the config file and store 3030 // read all categories from the config file and store
3029 // into a list 3031 // into a list
3030 QFile f (cfgFile); 3032 QFile f (cfgFile);
3031 QStringList list; 3033 QStringList list;
3032 if ( f.open(IO_ReadOnly) ) { // file opened successfully 3034 if ( f.open(IO_ReadOnly) ) { // file opened successfully
3033 QTextStream t( &f ); // use a text stream 3035 QTextStream t( &f ); // use a text stream
3034 QString s; 3036 QString s;
3035 while ( !t.eof() ) { // until end of file... 3037 while ( !t.eof() ) { // until end of file...
3036 s = t.readLine(); // line of text excluding '\n' 3038 s = t.readLine(); // line of text excluding '\n'
3037 list.append(s); 3039 list.append(s);
3038 } 3040 }
3039 f.close(); 3041 f.close();
3040 } 3042 }
3041#endif 3043#endif
3042 QStringList::Iterator it = list.begin(); 3044 QStringList::Iterator it = list.begin();
3043 QString categ; 3045 QString categ;
3044 dialog->CategoryField->clear(); // remove all items 3046 dialog->CategoryField->clear(); // remove all items
3045 int i=0; 3047 int i=0;
3046 bool foundCategory = false; 3048 bool foundCategory = false;
3047 while( it != list.end() ) 3049 while( it != list.end() )
3048 { 3050 {
3049 QString *cat = new QString (*it); 3051 QString *cat = new QString (*it);
3050 if (cat->contains("-field1", FALSE)) 3052 if (cat->contains("-field1", FALSE))
3051 { 3053 {
3052#ifdef DESKTOP 3054#ifdef DESKTOP
3053#ifndef WIN32 3055#ifndef WIN32
3054 categ = cat->section ("-field1", 0, 0); 3056 categ = cat->section ("-field1", 0, 0);
3055#else 3057#else
3056 int pos = cat->find ("-field1"); 3058 int pos = cat->find ("-field1");
3057 categ = cat->left (pos); 3059 categ = cat->left (pos);
3058#endif 3060#endif
3059#else 3061#else
3060 int pos = cat->find ("-field1"); 3062 int pos = cat->find ("-field1");
3061 cat->truncate(pos); 3063 cat->truncate(pos);
3062 categ = *cat; 3064 categ = *cat;
3063#endif 3065#endif
3064 if (!categ.isEmpty()) 3066 if (!categ.isEmpty())
3065 { 3067 {
3066 dialog->CategoryField->insertItem (categ, i); 3068 dialog->CategoryField->insertItem (categ, i);
3067 if (category.compare(categ) == 0) 3069 if (category.compare(categ) == 0)
3068 { 3070 {
3069 dialog->CategoryField->setCurrentItem(i); 3071 dialog->CategoryField->setCurrentItem(i);
3070 foundCategory = true; 3072 foundCategory = true;
3071 } 3073 }
3072 i++; 3074 i++;
3073 } 3075 }
3074 } 3076 }
3075 ++it; 3077 ++it;
3076 } 3078 }
3077 if (!foundCategory) 3079 if (!foundCategory)
3078 { 3080 {
3079 dialog->CategoryField->insertItem (category, i); 3081 dialog->CategoryField->insertItem (category, i);
3080 dialog->CategoryField->setCurrentItem(i); 3082 dialog->CategoryField->setCurrentItem(i);
3081 } 3083 }
3082 3084
3083 QString icon; 3085 QString icon;
3084 Category *cat= categories.find (selectedItem->text(0)); 3086 Category *cat= categories.find (selectedItem->text(0));
3085 if (cat) 3087 if (cat)
3086 { 3088 {
3087 icon = cat->getIconName(); 3089 icon = cat->getIconName();
3088 } 3090 }
3089 3091
3090 if (initIcons) 3092 if (initIcons)
3091 { 3093 {
3092 3094
3093 Wait waitDialog(this, tr("Wait dialog")); 3095 Wait waitDialog(this, tr("Wait dialog"));
3094 waitDialog.waitLabel->setText(tr("Gathering icons...")); 3096 waitDialog.waitLabel->setText(tr("Gathering icons..."));
3095 waitDialog.show(); 3097 waitDialog.show();
3096 qApp->processEvents(); 3098 qApp->processEvents();
3097 3099
3098#ifdef DESKTOP 3100#ifdef DESKTOP
3099 QDir d(iconPath); 3101 QDir d(iconPath);
3100#else 3102#else
3101 QDir d(QPEApplication::qpeDir() + "/pics/"); 3103 QDir d(QPEApplication::qpeDir() + "/pics/");
3102#endif 3104#endif
3103 d.setFilter( QDir::Files); 3105 d.setFilter( QDir::Files);
3104 3106
3105 const QFileInfoList *list = d.entryInfoList(); 3107 const QFileInfoList *list = d.entryInfoList();
3106 int i=0; 3108 int i=0;
3107 QFileInfoListIterator it( *list ); // create list iterator 3109 QFileInfoListIterator it( *list ); // create list iterator
3108 QFileInfo *fi; // pointer for traversing 3110 QFileInfo *fi; // pointer for traversing
3109 if (icon.isEmpty() || icon.isNull()) 3111 if (icon.isEmpty() || icon.isNull())
3110 { 3112 {
3111 dialog->IconField->setCurrentItem(0); 3113 dialog->IconField->setCurrentItem(0);
3112 } 3114 }
3113 3115
3114 dialog->IconField->insertItem("predefined"); 3116 dialog->IconField->insertItem("predefined");
3115 while ( (fi=it.current()) ) { // for each file... 3117 while ( (fi=it.current()) ) { // for each file...
3116 QString fileName = fi->fileName(); 3118 QString fileName = fi->fileName();
3117 if(fileName.right(4) == ".png") 3119 if(fileName.right(4) == ".png")
3118 { 3120 {
3119 fileName = fileName.mid(0,fileName.length()-4); 3121 fileName = fileName.mid(0,fileName.length()-4);
3120#ifdef DESKTOP 3122#ifdef DESKTOP
3121 QPixmap imageOfFile; 3123 QPixmap imageOfFile;
3122 imageOfFile.load(iconPath + fi->fileName()); 3124 imageOfFile.load(iconPath + fi->fileName());
3123#else 3125#else
3124 QPixmap imageOfFile(Resource::loadPixmap(fileName)); 3126 QPixmap imageOfFile(Resource::loadPixmap(fileName));
3125#endif 3127#endif
3126 QImage foo = imageOfFile.convertToImage(); 3128 QImage foo = imageOfFile.convertToImage();
3127 foo = foo.smoothScale(16,16); 3129 foo = foo.smoothScale(16,16);
3128 imageOfFile.convertFromImage(foo); 3130 imageOfFile.convertFromImage(foo);
3129 dialog->IconField->insertItem(imageOfFile,fileName); 3131 dialog->IconField->insertItem(imageOfFile,fileName);
3130 if(fileName+".png"==icon) 3132 if(fileName+".png"==icon)
3131 dialog->IconField->setCurrentItem(i+1); 3133 dialog->IconField->setCurrentItem(i+1);
3132 ++i; 3134 ++i;
3133 } 3135 }
3134 ++it; 3136 ++it;
3135 } 3137 }
3136 waitDialog.hide(); 3138 waitDialog.hide();
3137 } 3139 }
3138 else 3140 else
3139 { 3141 {
3140#ifdef DESKTOP 3142#ifdef DESKTOP
3141 // QDir d(QDir::homeDirPath() + "/pics/"); 3143 // QDir d(QDir::homeDirPath() + "/pics/");
3142 QDir d(iconPath); 3144 QDir d(iconPath);
3143#else 3145#else
3144 QDir d(QPEApplication::qpeDir() + "/pics/"); 3146 QDir d(QPEApplication::qpeDir() + "/pics/");
3145#endif 3147#endif
3146 d.setFilter( QDir::Files); 3148 d.setFilter( QDir::Files);
3147 3149
3148 const QFileInfoList *list = d.entryInfoList(); 3150 const QFileInfoList *list = d.entryInfoList();
3149 int i=0; 3151 int i=0;
3150 QFileInfoListIterator it( *list ); // create list iterator 3152 QFileInfoListIterator it( *list ); // create list iterator
3151 QFileInfo *fi; // pointer for traversing 3153 QFileInfo *fi; // pointer for traversing
3152 if (icon.isEmpty() || icon.isNull()) 3154 if (icon.isEmpty() || icon.isNull())
3153 { 3155 {
3154 dialog->IconField->setCurrentItem(0); 3156 dialog->IconField->setCurrentItem(0);
3155 } 3157 }
3156 else 3158 else
3157 { 3159 {
3158 3160
3159 while ( (fi=it.current()) ) 3161 while ( (fi=it.current()) )
3160 { // for each file... 3162 { // for each file...
3161 QString fileName = fi->fileName(); 3163 QString fileName = fi->fileName();
3162 if(fileName.right(4) == ".png") 3164 if(fileName.right(4) == ".png")
3163 { 3165 {
3164 fileName = fileName.mid(0,fileName.length()-4); 3166 fileName = fileName.mid(0,fileName.length()-4);
3165 3167
3166 3168
3167 if(fileName+".png"==icon) 3169 if(fileName+".png"==icon)
3168 { 3170 {
3169 dialog->IconField->setCurrentItem(i+1); 3171 dialog->IconField->setCurrentItem(i+1);
3170 break; 3172 break;
3171 } 3173 }
3172 ++i; 3174 ++i;
3173 } 3175 }
3174 ++it; 3176 ++it;
3175 } 3177 }
3176 } 3178 }
3177 } 3179 }
3178 3180
3179 // dialog->show(); 3181 // dialog->show();
3180#ifndef DESKTOP 3182#ifndef DESKTOP
3181 // dialog->move (20, 100); 3183 // dialog->move (20, 100);
3182#endif 3184#endif
3183 DialogCode result = (DialogCode) dialog->exec(); 3185 DialogCode result = (DialogCode) dialog->exec();
3184#ifdef DESKTOP 3186#ifdef DESKTOP
3185 result = Accepted; 3187 result = Accepted;
3186#endif 3188#endif
3187 3189
3188 QString fullIconPath; 3190 QString fullIconPath;
3189 QPixmap *pix; 3191 QPixmap *pix;
3190 if (result == Accepted) 3192 if (result == Accepted)
3191 { 3193 {
3192 modified = true; 3194 modified = true;
3193 if (category != dialog->CategoryField->currentText()) 3195 if (category != dialog->CategoryField->currentText())
3194 { 3196 {
3195 categories.remove (category); 3197 categories.remove (category);
3196// #ifndef WIN32 3198// #ifndef WIN32
3197 conf->removeEntry(category); 3199 conf->removeEntry(category);
3198// #endif 3200// #endif
3199 saveConf(); 3201 saveConf();
3200 } 3202 }
3201 3203
3202 category = dialog->CategoryField->currentText(); 3204 category = dialog->CategoryField->currentText();
3203 icon = dialog->IconField->currentText()+".png"; 3205 icon = dialog->IconField->currentText()+".png";
3204 3206
3205 if (cat) 3207 if (cat)
3206 { 3208 {
3207 qWarning("Category found"); 3209 qWarning("Category found");
3208 3210
3209 // if (!icon.isEmpty() && !icon.isNull()) 3211 // if (!icon.isEmpty() && !icon.isNull())
3210 if (icon != "predefined.png") 3212 if (icon != "predefined.png")
3211 { 3213 {
3212 // build the full path 3214 // build the full path
3213 fullIconPath = iconPath + icon; 3215 fullIconPath = iconPath + icon;
3214 pix = new QPixmap (fullIconPath); 3216 pix = new QPixmap (fullIconPath);
3215 if (pix) 3217 if (pix)
3216 { 3218 {
3217 // save the full pixmap name into the config file 3219 // save the full pixmap name into the config file
3218// #ifndef WIN32 3220// #ifndef WIN32
3219 conf->writeEntry(APP_KEY+category, icon); 3221 conf->writeEntry(APP_KEY+category, icon);
3220// #endif 3222// #endif
3221 saveConf(); 3223 saveConf();
3222 QImage img = pix->convertToImage(); 3224 QImage img = pix->convertToImage();
3223 pix->convertFromImage(img.smoothScale(14,14)); 3225 pix->convertFromImage(img.smoothScale(14,14));
3224 cat->setIconName (icon); 3226 cat->setIconName (icon);
3225 cat->setIcon (*pix); 3227 cat->setIcon (*pix);
3226 } 3228 }
3227 } 3229 }
3228 else 3230 else
3229 { 3231 {
3230// #ifndef WIN32 3232// #ifndef WIN32
3231 conf->removeEntry (category); 3233 conf->removeEntry (category);
3232// #endif 3234// #endif
3233 saveConf(); 3235 saveConf();
3234 cat->setIcon (*getPredefinedIcon(category)); 3236 cat->setIcon (*getPredefinedIcon(category));
3235 } 3237 }
3236 3238
3237 // change the category name of the selected category 3239 // change the category name of the selected category
3238 QListViewItem *catItem = cat->getListItem(); 3240 QListViewItem *catItem = cat->getListItem();
3239 if (catItem) 3241 if (catItem)
3240 { 3242 {
3241 qWarning (category); 3243 qWarning (category);
3242 catItem->setText( 0, tr( category ) ); 3244 catItem->setText( 0, tr( category ) );
3243 cat->setCategoryName (tr(category)); 3245 cat->setCategoryName (tr(category));
3244 3246
3245 cat->initListItem(); 3247 cat->initListItem();
3246 categories.insert (category, cat); 3248 categories.insert (category, cat);
3247 } 3249 }
3248 } 3250 }
3249 saveCategoryDialogFields(dialog); 3251 saveCategoryDialogFields(dialog);
3250 } 3252 }
3251 else 3253 else
3252 { 3254 {
3253 // delete dialog; 3255 // delete dialog;
3254 dialog->hide(); 3256 dialog->hide();
3255 return; 3257 return;
3256 } 3258 }
3257 3259
3258 } 3260 }
3259} 3261}
3260 3262
3261void ZSafe::cutItem() 3263void ZSafe::cutItem()
3262{ 3264{
3263 if (!selectedItem) 3265 if (!selectedItem)
3264 return; 3266 return;
3265 if (!isCategory(selectedItem)) 3267 if (!isCategory(selectedItem))
3266 { 3268 {
3267 IsCut = true; 3269 IsCut = true;
3268 copiedItem = selectedItem; 3270 copiedItem = selectedItem;
3269 } 3271 }
3270} 3272}
3271 3273
3272void ZSafe::copyItem() 3274void ZSafe::copyItem()
3273{ 3275{
3274 if (!selectedItem) 3276 if (!selectedItem)
3275 return; 3277 return;
3276 if (!isCategory(selectedItem)) 3278 if (!isCategory(selectedItem))
3277 { 3279 {
3278 IsCopy = true; 3280 IsCopy = true;
3279 copiedItem = selectedItem; 3281 copiedItem = selectedItem;
3280 } 3282 }
3281} 3283}
3282 3284
3283// paste item into category 3285// paste item into category
3284void ZSafe::pasteItem() 3286void ZSafe::pasteItem()
3285{ 3287{
3286 if (!selectedItem) 3288 if (!selectedItem)
3287 return; 3289 return;
3288 if (isCategory(selectedItem)) 3290 if (isCategory(selectedItem))
3289 { 3291 {
3290 modified = true; 3292 modified = true;
3291 if (IsCut) 3293 if (IsCut)
3292 { 3294 {
3293 if (copiedItem) 3295 if (copiedItem)
3294 { 3296 {
3295 // add the new item 3297 // add the new item
3296 QListViewItem *i = new ShadedListItem (0, selectedItem); 3298 QListViewItem *i = new ShadedListItem (0, selectedItem);
3297 // i->setOpen (TRUE); 3299 // i->setOpen (TRUE);
3298 i->setText (0, copiedItem->text(0)); 3300 i->setText (0, copiedItem->text(0));
3299 i->setText (1, copiedItem->text(1)); 3301 i->setText (1, copiedItem->text(1));
3300 i->setText (2, copiedItem->text(2)); 3302 i->setText (2, copiedItem->text(2));
3301 i->setText (3, copiedItem->text(3)); 3303 i->setText (3, copiedItem->text(3));
3302 i->setText (4, copiedItem->text(4)); 3304 i->setText (4, copiedItem->text(4));
3303 i->setText (5, copiedItem->text(5)); 3305 i->setText (5, copiedItem->text(5));
3304 selectedItem->setOpen( TRUE ); 3306 selectedItem->setOpen( TRUE );
3305 3307
3306 // remove the cutted item 3308 // remove the cutted item
3307 copiedItem->parent()->takeItem(copiedItem); 3309 copiedItem->parent()->takeItem(copiedItem);
3308 selectedItem = NULL; 3310 selectedItem = NULL;
3309 } 3311 }
3310 } 3312 }
3311 else if (IsCopy) 3313 else if (IsCopy)
3312 { 3314 {
3313 if (copiedItem) 3315 if (copiedItem)
3314 { 3316 {
3315 // add the new item 3317 // add the new item
3316 QListViewItem *i = new ShadedListItem (0, selectedItem); 3318 QListViewItem *i = new ShadedListItem (0, selectedItem);
3317 // i->setOpen (TRUE); 3319 // i->setOpen (TRUE);
3318 i->setText (0, copiedItem->text(0)); 3320 i->setText (0, copiedItem->text(0));
3319 i->setText (1, copiedItem->text(1)); 3321 i->setText (1, copiedItem->text(1));
3320 i->setText (2, copiedItem->text(2)); 3322 i->setText (2, copiedItem->text(2));
3321 i->setText (3, copiedItem->text(3)); 3323 i->setText (3, copiedItem->text(3));
3322 i->setText (4, copiedItem->text(4)); 3324 i->setText (4, copiedItem->text(4));
3323 i->setText (5, copiedItem->text(5)); 3325 i->setText (5, copiedItem->text(5));
3324 selectedItem->setOpen( TRUE ); 3326 selectedItem->setOpen( TRUE );
3325 } 3327 }
3326 } 3328 }
3327 } 3329 }
3328 IsCut = false; 3330 IsCut = false;
3329 IsCopy = false; 3331 IsCopy = false;
3330} 3332}
3331 3333
3332void ZSafe::newDocument() 3334void ZSafe::newDocument()
3333{ 3335{
3334 3336
3335 // open the file dialog 3337 // open the file dialog
3336#ifndef DESKTOP 3338#ifndef DESKTOP
3337#ifndef NO_OPIE 3339#ifndef NO_OPIE
3338 QMap<QString, QStringList> mimeTypes; 3340 QMap<QString, QStringList> mimeTypes;
3339 mimeTypes.insert(tr("All"), QStringList() ); 3341 mimeTypes.insert(tr("All"), QStringList() );
3340 mimeTypes.insert(tr("ZSafe"), "zsafe/*" ); 3342 mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
3341 QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL, 3343 QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
3342 QDir::homeDirPath() + "/Documents/application/zsafe", 3344 QDir::homeDirPath() + "/Documents/application/zsafe",
3343 QString::null, 3345 QString::null,
3344 mimeTypes, 3346 mimeTypes,
3345 this, 3347 this,
3346 tr ("Create new ZSafe document")); 3348 tr ("Create new ZSafe document"));
3347#else 3349#else
3348 QString newFile = ScQtFileEdit::getSaveAsFileName(this, 3350 QString newFile = ScQtFileEdit::getSaveAsFileName(this,
3349 tr ("Create new ZSafe document"), 3351 tr ("Create new ZSafe document"),
3350 QDir::homeDirPath() + "/Documents/application/zsafe", 3352 QDir::homeDirPath() + "/Documents/application/zsafe",
3351 "*.zsf"); 3353 "*.zsf");
3352#endif 3354#endif
3353#else 3355#else
3354 QString newFile = QFileDialog::getSaveFileName( 3356 QString newFile = QFileDialog::getSaveFileName(
3355 QDir::homeDirPath() + "/Documents/application/zsafe", 3357 QDir::homeDirPath() + "/Documents/application/zsafe",
3356 "ZSafe (*.zsf)", 3358 "ZSafe (*.zsf)",
3357 this, 3359 this,
3358 "ZSafe File Dialog" 3360 "ZSafe File Dialog"
3359 "Choose a ZSafe file" ); 3361 "Choose a ZSafe file" );
3360#endif 3362#endif
3361 3363
3362 // open the new document 3364 // open the new document
3363 if (newFile && newFile.length() > 0 ) 3365 if (newFile && newFile.length() > 0 )
3364 { 3366 {
3365 // save the previous opened document 3367 // save the previous opened document
3366 if (!filename.isEmpty()) 3368 if (!filename.isEmpty())
3367 saveDocument(filename, FALSE); 3369 saveDocument(filename, FALSE);
3368 3370
3369 modified = true; 3371 modified = true;
3370 3372
3371 // clear the password list 3373 // clear the password list
3372 QListViewItem *i; 3374 QListViewItem *i;
3373 QListViewItem *c = NULL; 3375 QListViewItem *c = NULL;
3374 // step through all categories 3376 // step through all categories
3375 for (i = ListView->firstChild(); 3377 for (i = ListView->firstChild();
3376 i != NULL; 3378 i != NULL;
3377 i = i->nextSibling()) 3379 i = i->nextSibling())
3378 { 3380 {
3379 if (c) delete c; // delete the previous category 3381 if (c) delete c; // delete the previous category
3380 3382
3381 c = i; 3383 c = i;
3382 // step through all subitems 3384 // step through all subitems
3383 QListViewItem *si; 3385 QListViewItem *si;
3384 for (si = i->firstChild(); 3386 for (si = i->firstChild();
3385 si != NULL; ) 3387 si != NULL; )
3386 { 3388 {
3387 QListViewItem *_si = si; 3389 QListViewItem *_si = si;
3388 si = si->nextSibling(); 3390 si = si->nextSibling();
3389 i->takeItem(_si); // remove from view list 3391 i->takeItem(_si); // remove from view list
3390 if (_si) delete _si; 3392 if (_si) delete _si;
3391 } 3393 }
3392 } 3394 }
3393 if (c) delete c; // delete the previous category 3395 if (c) delete c; // delete the previous category
3394 categories.clear(); 3396 categories.clear();
3395 3397
3396 // m_password = ""; 3398 // m_password = "";
3397 selectedItem = NULL; 3399 selectedItem = NULL;
3398 3400
3399 filename = newFile; 3401 filename = newFile;
3400 3402
3401 // save the current filename to the config file 3403 // save the current filename to the config file
3402 conf->writeEntry(APP_KEY+"document", filename); 3404 conf->writeEntry(APP_KEY+"document", filename);
3403 saveConf(); 3405 saveConf();
3404 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3406 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3405#ifdef WIN32 3407#ifdef WIN32
3406 this->setCaption("Qt ZSafe: " + ti); 3408 this->setCaption("Qt ZSafe: " + ti);
3407#else 3409#else
3408 this->setCaption("ZSafe: " + ti); 3410 this->setCaption("ZSafe: " + ti);
3409#endif 3411#endif
3410 3412
3411 // openDocument(filename); 3413 // openDocument(filename);
3412 3414
3413 QMessageBox::information( this, tr("ZSafe"), 3415 QMessageBox::information( this, tr("ZSafe"),
3414 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0); 3416 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
3415 3417
3416 saveDocumentWithPwd(); 3418 saveDocumentWithPwd();
3417 } 3419 }
3418} 3420}
3419 3421
3420void ZSafe::loadDocument() 3422void ZSafe::loadDocument()
3421{ 3423{
3422 3424
3423 // open the file dialog 3425 // open the file dialog
3424#ifndef DESKTOP 3426#ifndef DESKTOP
3425#ifndef NO_OPIE 3427#ifndef NO_OPIE
3426 QMap<QString, QStringList> mimeTypes; 3428 QMap<QString, QStringList> mimeTypes;
3427 mimeTypes.insert(tr("All"), QStringList() ); 3429 mimeTypes.insert(tr("All"), QStringList() );
3428 mimeTypes.insert(tr("ZSafe"), "zsafe/*" ); 3430 mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
3429 QString newFile = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL, 3431 QString newFile = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL,
3430 QDir::homeDirPath() + "/Documents/application/zsafe", 3432 QDir::homeDirPath() + "/Documents/application/zsafe",
3431 QString::null, 3433 QString::null,
3432 mimeTypes, 3434 mimeTypes,
3433 this, 3435 this,
3434 tr ("Open ZSafe document")); 3436 tr ("Open ZSafe document"));
3435#else 3437#else
3436 QString newFile = ScQtFileEdit::getOpenFileName(this, 3438 QString newFile = ScQtFileEdit::getOpenFileName(this,
3437 tr ("Open ZSafe document"), 3439 tr ("Open ZSafe document"),
3438 QDir::homeDirPath() + "/Documents/application/zsafe", 3440 QDir::homeDirPath() + "/Documents/application/zsafe",
3439 "*.zsf"); 3441 "*.zsf");
3440#endif 3442#endif
3441#else 3443#else
3442 QString newFile = QFileDialog::getOpenFileName( 3444 QString newFile = QFileDialog::getOpenFileName(
3443 QDir::homeDirPath() + "/Documents/application/zsafe", 3445 QDir::homeDirPath() + "/Documents/application/zsafe",
3444 "ZSafe (*.zsf)", 3446 "ZSafe (*.zsf)",
3445 this, 3447 this,
3446 "ZSafe File Dialog" 3448 "ZSafe File Dialog"
3447 "Choose a ZSafe file" ); 3449 "Choose a ZSafe file" );
3448#endif 3450#endif
3449 3451
3450 // open the new document 3452 // open the new document
3451 if (newFile && newFile.length() > 0 ) 3453 if (newFile && newFile.length() > 0 )
3452 { 3454 {
3453 // save the previous opened document 3455 // save the previous opened document
3454 if (!filename.isEmpty()) 3456 if (!filename.isEmpty())
3455 saveDocument(filename, FALSE); 3457 saveDocument(filename, FALSE);
3456 3458
3457 // clear the password list 3459 // clear the password list
3458 QListViewItem *i; 3460 QListViewItem *i;
3459 QListViewItem *c = NULL; 3461 QListViewItem *c = NULL;
3460 // step through all categories 3462 // step through all categories
3461 for (i = ListView->firstChild(); 3463 for (i = ListView->firstChild();
3462 i != NULL; 3464 i != NULL;
3463 i = i->nextSibling()) 3465 i = i->nextSibling())
3464 { 3466 {
3465 if (c) delete c; // delete the previous category 3467 if (c) delete c; // delete the previous category
3466 3468
3467 c = i; 3469 c = i;
3468 // step through all subitems 3470 // step through all subitems
3469 QListViewItem *si; 3471 QListViewItem *si;
3470 for (si = i->firstChild(); 3472 for (si = i->firstChild();
3471 si != NULL; ) 3473 si != NULL; )
3472 { 3474 {
3473 QListViewItem *_si = si; 3475 QListViewItem *_si = si;
3474 si = si->nextSibling(); 3476 si = si->nextSibling();
3475 i->takeItem(_si); // remove from view list 3477 i->takeItem(_si); // remove from view list
3476 if (_si) delete _si; 3478 if (_si) delete _si;
3477 } 3479 }
3478 } 3480 }
3479 if (c) delete c; // delete the previous category 3481 if (c) delete c; // delete the previous category
3480 categories.clear(); 3482 categories.clear();
3481 m_password = ""; 3483 m_password = "";
3482 selectedItem = NULL; 3484 selectedItem = NULL;
3483 filename = newFile; 3485 filename = newFile;
3484 3486
3485 // save the current filename to the config file 3487 // save the current filename to the config file
3486 conf->writeEntry(APP_KEY+"document", filename); 3488 conf->writeEntry(APP_KEY+"document", filename);
3487 saveConf(); 3489 saveConf();
3488 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3490 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3489#ifdef WIN32 3491#ifdef WIN32
3490 this->setCaption("Qt ZSafe: " + ti); 3492 this->setCaption("Qt ZSafe: " + ti);
3491#else 3493#else
3492 this->setCaption("ZSafe: " + ti); 3494 this->setCaption("ZSafe: " + ti);
3493#endif 3495#endif
3494 3496
3495 openDocument(filename); 3497 openDocument(filename);
3496 } 3498 }
3497} 3499}
3498 3500
3499void ZSafe::saveDocumentAs() 3501void ZSafe::saveDocumentAs()
3500{ 3502{
3501 3503
3502#ifndef DESKTOP 3504#ifndef DESKTOP
3503#ifndef NO_OPIE 3505#ifndef NO_OPIE
3504 QMap<QString, QStringList> mimeTypes; 3506 QMap<QString, QStringList> mimeTypes;
3505 mimeTypes.insert(tr("All"), QStringList() ); 3507 mimeTypes.insert(tr("All"), QStringList() );
3506 mimeTypes.insert(tr("ZSafe"), "zsafe/*" ); 3508 mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
3507 QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL, 3509 QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
3508 QDir::homeDirPath() + "/Documents/application/zsafe", 3510 QDir::homeDirPath() + "/Documents/application/zsafe",
3509 QString::null, 3511 QString::null,
3510 mimeTypes, 3512 mimeTypes,
3511 this, 3513 this,
3512 tr ("Save ZSafe document as..")); 3514 tr ("Save ZSafe document as.."));
3513#else 3515#else
3514 QString newFile = ScQtFileEdit::getSaveAsFileName(this, 3516 QString newFile = ScQtFileEdit::getSaveAsFileName(this,
3515 tr ("Save ZSafe document as.."), 3517 tr ("Save ZSafe document as.."),
3516 QDir::homeDirPath() + "/Documents/application/zsafe", 3518 QDir::homeDirPath() + "/Documents/application/zsafe",
3517 "*.zsf"); 3519 "*.zsf");
3518#endif 3520#endif
3519#else 3521#else
3520 // open the file dialog 3522 // open the file dialog
3521 QString newFile = QFileDialog::getSaveFileName( 3523 QString newFile = QFileDialog::getSaveFileName(
3522 QDir::homeDirPath() + "/Documents/application/zsafe", 3524 QDir::homeDirPath() + "/Documents/application/zsafe",
3523 "ZSafe (*.zsf)", 3525 "ZSafe (*.zsf)",
3524 this, 3526 this,
3525 "ZSafe File Dialog" 3527 "ZSafe File Dialog"
3526 "Choose a ZSafe file" ); 3528 "Choose a ZSafe file" );
3527#endif 3529#endif
3528 3530
3529 // open the new document 3531 // open the new document
3530 if (newFile && newFile.length() > 0 ) 3532 if (newFile && newFile.length() > 0 )
3531 { 3533 {
3532 // save the previous opened document 3534 // save the previous opened document
3533 if (!filename.isEmpty()) 3535 if (!filename.isEmpty())
3534 saveDocument(filename, FALSE); 3536 saveDocument(filename, FALSE);
3535 3537
3536 selectedItem = NULL; 3538 selectedItem = NULL;
3537 filename = newFile; 3539 filename = newFile;
3538 3540
3539 // save the current filename to the config file 3541 // save the current filename to the config file
3540 conf->writeEntry(APP_KEY+"document", filename); 3542 conf->writeEntry(APP_KEY+"document", filename);
3541 saveConf(); 3543 saveConf();
3542 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3544 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3543#ifdef WIN32 3545#ifdef WIN32
3544 this->setCaption("Qt ZSafe: " + ti); 3546 this->setCaption("Qt ZSafe: " + ti);
3545#else 3547#else
3546 this->setCaption("ZSafe: " + ti); 3548 this->setCaption("ZSafe: " + ti);
3547#endif 3549#endif
3548 3550
3549 QMessageBox::information( this, tr("ZSafe"), 3551 QMessageBox::information( this, tr("ZSafe"),
3550 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0); 3552 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
3551 3553
3552 saveDocumentWithPwd(); 3554 saveDocumentWithPwd();
3553 } 3555 }
3554} 3556}
3555 3557
3556void ZSafe::saveDocumentWithoutPwd() 3558void ZSafe::saveDocumentWithoutPwd()
3557{ 3559{
3558 saveDocument(filename, FALSE); 3560 saveDocument(filename, FALSE);
3559} 3561}
3560 3562
3561void ZSafe::saveDocumentWithPwd() 3563void ZSafe::saveDocumentWithPwd()
3562{ 3564{
3563 saveDocument(filename, TRUE); 3565 saveDocument(filename, TRUE);
3564} 3566}
3565 3567
3566void ZSafe::about() 3568void ZSafe::about()
3567{ 3569{
3568 QString info; 3570 QString info;
3569#ifdef JPATCH_HDE 3571#ifdef JPATCH_HDE
3570 info = "<html><body><div align=""center"">"; 3572 info = "<html><body><div align=""center"">";
3571 info += "<b>"; 3573 info += "<b>";
3572 info += tr("Zaurus Password Manager<br>"); 3574 info += tr("Zaurus Password Manager<br>");
3573 info += tr("ZSafe version 2.1.2-jv01b<br>"); 3575 info += tr("ZSafe version 2.1.2-jv01b<br>");
3574 info += "</b>"; 3576 info += "</b>";
3575 info += tr("by Carsten Schneider<br>"); 3577 info += tr("by Carsten Schneider<br>");
3576 info += "zcarsten@gmx.net<br>"; 3578 info += "zcarsten@gmx.net<br>";
3577 info += "http://z-soft.z-portal.info/zsafe"; 3579 info += "http://z-soft.z-portal.info/zsafe";
3578 info += "<br>"; 3580 info += "<br>";
3579 info += tr("Translations by Robert Ernst<br>"); 3581 info += tr("Translations by Robert Ernst<br>");
3580 info += "robert.ernst@linux-solutions.at<br>"; 3582 info += "robert.ernst@linux-solutions.at<br>";
3581 3583
3582 info += "<br><br>"; 3584 info += "<br><br>";
3583 info += QString::fromUtf8("æ~W¥æ~\\¬èª~^/VGA Zaurus対å¿~\\ã~C~Qã~C~Cã~C~Aä½~\\æ ~H~P<br>"); 3585 info += QString::fromUtf8("æ~W¥æ~\\¬èª~^/VGA Zaurus対å¿~\\ã~C~Qã~C~Cã~C~Aä½~\\æ ~H~P<br>");
3584 info += "HADECO R&D<br>"; 3586 info += "HADECO R&D<br>";
3585 info += "r&d@hadeco.co.jp<br>"; 3587 info += "r&d@hadeco.co.jp<br>";
3586 info += "http://www.hadeco.co.jp/r&d/<br>"; 3588 info += "http://www.hadeco.co.jp/r&d/<br>";
3587 info += "<br></div>"; 3589 info += "<br></div>";
3588 info += "</body></html>"; 3590 info += "</body></html>";
3589#else 3591#else
3590 info = "<html><body><div align=""center"">"; 3592 info = "<html><body><div align=""center"">";
3591 info += "<b>"; 3593 info += "<b>";
3592 info += tr("Zaurus Password Manager<br>"); 3594 info += tr("Zaurus Password Manager<br>");
3593 info += tr("ZSafe version 2.1.2<br>"); 3595 info += tr("ZSafe version 2.1.2<br>");
3594 info += "</b>"; 3596 info += "</b>";
3595 info += tr("by Carsten Schneider<br>"); 3597 info += tr("by Carsten Schneider<br>");
3596 info += "zcarsten@gmx.net<br>"; 3598 info += "zcarsten@gmx.net<br>";
3597 info += "http://z-soft.z-portal.info/zsafe"; 3599 info += "http://z-soft.z-portal.info/zsafe";
3598 info += "<br>"; 3600 info += "<br>";
3599 info += tr("Translations by Robert Ernst<br>"); 3601 info += tr("Translations by Robert Ernst<br>");
3600 info += "robert.ernst@linux-solutions.at<br>"; 3602 info += "robert.ernst@linux-solutions.at<br>";
3601 info += "<br></div>"; 3603 info += "<br></div>";
3602 info += "</body></html>"; 3604 info += "</body></html>";
3603#endif 3605#endif
3604 3606
3605 // QMessageBox::information( this, tr("ZSafe"), info, tr("&OK"), 0); 3607 // QMessageBox::information( this, tr("ZSafe"), info, tr("&OK"), 0);
3606 3608
3607 QMessageBox mb( this, tr("ZSafe")); 3609 QMessageBox mb( this, tr("ZSafe"));
3608 mb.setText (info); 3610 mb.setText (info);
3609 mb.setButtonText (QMessageBox::Ok, tr ("&OK")); 3611 mb.setButtonText (QMessageBox::Ok, tr ("&OK"));
3610 QPixmap zsafe_img((const char**) zsafe_xpm); 3612 QPixmap zsafe_img((const char**) zsafe_xpm);
3611 mb.setIconPixmap (zsafe_img); 3613 mb.setIconPixmap (zsafe_img);
3612 mb.exec(); 3614 mb.exec();
3613} 3615}
3614 3616
3615void ZSafe::setExpandFlag() 3617void ZSafe::setExpandFlag()
3616{ 3618{
3617 expandTree = !expandTree; 3619 expandTree = !expandTree;
3618 file->setItemChecked('o', expandTree); 3620 file->setItemChecked('o', expandTree);
3619#ifndef DESKTOP 3621#ifndef DESKTOP
3620 conf->setGroup ("zsafePrefs"); 3622 conf->setGroup ("zsafePrefs");
3621#endif 3623#endif
3622// #ifndef WIN32 3624// #ifndef WIN32
3623 conf->writeEntry (APP_KEY+"expandTree", expandTree); 3625 conf->writeEntry (APP_KEY+"expandTree", expandTree);
3624// #endif 3626// #endif
3625 saveConf(); 3627 saveConf();
3626 3628
3627} 3629}
3628 3630
3629void ZSafe::paintEvent( QPaintEvent * ) 3631void ZSafe::paintEvent( QPaintEvent * )
3630{ 3632{
3631 if (raiseFlag) 3633 if (raiseFlag)
3632 { 3634 {
3633 raiseFlag = false; 3635 raiseFlag = false;
3634 raiseTimer.start (1, true); 3636 raiseTimer.start (1, true);
3635 if (infoForm->isVisible()) 3637 if (infoForm->isVisible())
3636 infoForm->raise(); 3638 infoForm->raise();
3637 } 3639 }
3638} 3640}
3639 3641
3640void ZSafe::resizeEvent ( QResizeEvent * ) 3642void ZSafe::resizeEvent ( QResizeEvent * )
3641{ 3643{
3642 // qWarning ("resizeEvent"); 3644 // qWarning ("resizeEvent");
3643#ifndef DESKTOP 3645#ifndef DESKTOP
3644 DeskW = appl->desktop()->width(); 3646 DeskW = appl->desktop()->width();
3645 DeskH = appl->desktop()->height(); 3647 DeskH = appl->desktop()->height();
3646#else 3648#else
3647 DeskW = this->width(); 3649 DeskW = this->width();
3648 DeskH = this->height(); 3650 DeskH = this->height();
3649#endif 3651#endif
3650 qWarning( QString("Width : %1").arg(DeskW), 2000 );
3651 qWarning( QString("Height: %1").arg(DeskH), 2000 );
3652 3652
3653 New->setGeometry ( QRect( DeskW-84, 2, 20, 20 ) ); 3653 if (New)
3654 Edit->setGeometry ( QRect( DeskW-64, 2, 20, 20 ) ); 3654 New->setGeometry ( QRect( DeskW-84, 2, 20, 20 ) );
3655 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) ); 3655 if (Edit)
3656 Find->setGeometry ( QRect( DeskW-24, 2, 20, 20 ) ); 3656 Edit->setGeometry ( QRect( DeskW-64, 2, 20, 20 ) );
3657 if (Delete)
3658 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) );
3659 if (Find)
3660 Find->setGeometry ( QRect( DeskW-24, 2, 20, 20 ) );
3657} 3661}
3658 3662
3659void ZSafe::slotRaiseTimer() 3663void ZSafe::slotRaiseTimer()
3660{ 3664{
3661 if (infoForm->isVisible()) 3665 if (infoForm->isVisible())
3662 infoForm->raise(); 3666 infoForm->raise();
3663 raiseFlag = true; 3667 raiseFlag = true;
3664} 3668}
3665 3669
3666QPixmap * ZSafe::getPredefinedIcon(QString category) 3670QPixmap * ZSafe::getPredefinedIcon(QString category)
3667{ 3671{
3668 QPixmap *pm; 3672 QPixmap *pm;
3669 if (category == "Bank cards") 3673 if (category == "Bank cards")
3670 pm = new QPixmap((const char**)bank_cards_data); 3674 pm = new QPixmap((const char**)bank_cards_data);
3671 else if (category == "Passwords") 3675 else if (category == "Passwords")
3672 pm = new QPixmap((const char**)passwords_data); 3676 pm = new QPixmap((const char**)passwords_data);
3673 else if (category == "Software") 3677 else if (category == "Software")
3674 pm = new QPixmap((const char**)software_data); 3678 pm = new QPixmap((const char**)software_data);
3675 else if (category == "General") 3679 else if (category == "General")
3676 pm = new QPixmap((const char**)general_data); 3680 pm = new QPixmap((const char**)general_data);
3677 else 3681 else
3678 pm = new QPixmap((const char**)general_data); 3682 pm = new QPixmap((const char**)general_data);
3679 return pm; 3683 return pm;
3680} 3684}
3681 3685
3682void ZSafe::setDocument(const QString& fileref) 3686void ZSafe::setDocument(const QString& fileref)
3683{ 3687{
3684#ifndef DESKTOP 3688#ifndef DESKTOP
3685 // stop the timer to prevent loading of the default document 3689 // stop the timer to prevent loading of the default document
3686 docuTimer.stop(); 3690 docuTimer.stop();
3687 3691
3688 DocLnk link(fileref); 3692 DocLnk link(fileref);
3689 if ( link.isValid() ) 3693 if ( link.isValid() )
3690 { 3694 {
3691 // if (filename != link.file()) 3695 // if (filename != link.file())
3692 // saveDocument(filename, FALSE); 3696 // saveDocument(filename, FALSE);
3693 filename = link.file(); 3697 filename = link.file();
3694 } 3698 }
3695 else 3699 else
3696 { 3700 {
3697 // if (filename != fileref) 3701 // if (filename != fileref)
3698 // saveDocument(filename, FALSE); 3702 // saveDocument(filename, FALSE);
3699 filename = fileref; 3703 filename = fileref;
3700 } 3704 }
3701 // save the current filename to the config file 3705 // save the current filename to the config file
3702 conf->writeEntry(APP_KEY+"document", filename); 3706 conf->writeEntry(APP_KEY+"document", filename);
3703 saveConf(); 3707 saveConf();
3704 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3708 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3705#ifdef WIN32 3709#ifdef WIN32
3706 this->setCaption("Qt ZSafe: " + ti); 3710 this->setCaption("Qt ZSafe: " + ti);
3707#else 3711#else
3708 this->setCaption("ZSafe: " + ti); 3712 this->setCaption("ZSafe: " + ti);
3709#endif 3713#endif
3710 3714
3711 // clear the password list 3715 // clear the password list
3712 QListViewItem *i; 3716 QListViewItem *i;
3713 QListViewItem *c = NULL; 3717 QListViewItem *c = NULL;
3714 // step through all categories 3718 // step through all categories
3715 for (i = ListView->firstChild(); 3719 for (i = ListView->firstChild();
3716 i != NULL; 3720 i != NULL;
3717 i = i->nextSibling()) 3721 i = i->nextSibling())
3718 { 3722 {
3719 if (c) delete c; // delete the previous category 3723 if (c) delete c; // delete the previous category
3720 3724
3721 c = i; 3725 c = i;
3722 // step through all subitems 3726 // step through all subitems
3723 QListViewItem *si; 3727 QListViewItem *si;
3724 for (si = i->firstChild(); 3728 for (si = i->firstChild();
3725 si != NULL; ) 3729 si != NULL; )
3726 { 3730 {
3727 QListViewItem *_si = si; 3731 QListViewItem *_si = si;
3728 si = si->nextSibling(); 3732 si = si->nextSibling();
3729 i->takeItem(_si); // remove from view list 3733 i->takeItem(_si); // remove from view list
3730 if (_si) delete _si; 3734 if (_si) delete _si;
3731 } 3735 }
3732 } 3736 }
3733 if (c) delete c; // delete the previous category 3737 if (c) delete c; // delete the previous category
3734 categories.clear(); 3738 categories.clear();
3735 3739
3736 m_password = ""; 3740 m_password = "";
3737 selectedItem = NULL; 3741 selectedItem = NULL;
3738 3742
3739 openDocument(filename); 3743 openDocument(filename);
3740#endif 3744#endif
3741} 3745}
3742 3746
3743 3747
3744 3748