summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/zsafe/zsafe.cpp106
1 files changed, 19 insertions, 87 deletions
diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp
index d55624b..43565ee 100644
--- a/noncore/apps/zsafe/zsafe.cpp
+++ b/noncore/apps/zsafe/zsafe.cpp
@@ -8,192 +8,196 @@
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
105#define tr(arg) arg
106#endif
107
104 108
105#ifdef DESKTOP 109#ifdef DESKTOP
106#ifndef WIN32 110#ifndef WIN32
107const QString APP_KEY="/.zsafe/"; 111const QString APP_KEY="/.zsafe/";
108#else 112#else
109const QString APP_KEY=""; 113const QString APP_KEY="";
110#endif 114#endif
111#else 115#else
112const QString APP_KEY=""; 116const QString APP_KEY="";
113#endif 117#endif
114 118
115// include xmp images 119// include xmp images
116#include "pics/zsafe/copy.xpm" 120#include "pics/zsafe/copy.xpm"
117#include "pics/zsafe/cut.xpm" 121#include "pics/zsafe/cut.xpm"
118#include "pics/zsafe/edit.xpm" 122#include "pics/zsafe/edit.xpm"
119#include "pics/zsafe/editdelete.xpm" 123#include "pics/zsafe/editdelete.xpm"
120#include "pics/zsafe/find.xpm" 124#include "pics/zsafe/find.xpm"
121#include "pics/zsafe/folder_open.xpm" 125#include "pics/zsafe/folder_open.xpm"
122#include "pics/zsafe/help_icon.xpm" 126#include "pics/zsafe/help_icon.xpm"
123#include "pics/zsafe/new.xpm" 127#include "pics/zsafe/new.xpm"
124#include "pics/zsafe/paste.xpm" 128#include "pics/zsafe/paste.xpm"
125#include "pics/zsafe/quit_icon.xpm" 129#include "pics/zsafe/quit_icon.xpm"
126#include "pics/zsafe/save.xpm" 130#include "pics/zsafe/save.xpm"
127#include "pics/zsafe/trash.xpm" 131#include "pics/zsafe/trash.xpm"
128#include "pics/zsafe/expand.xpm" 132#include "pics/zsafe/expand.xpm"
129#include "pics/zsafe/export.xpm" 133#include "pics/zsafe/export.xpm"
130#include "pics/zsafe/import.xpm" 134#include "pics/zsafe/import.xpm"
131#include "pics/zsafe/zsafe.xpm" 135#include "pics/zsafe/zsafe.xpm"
132 136
133static const char* const bank_cards_data[] = { 137static const char* const bank_cards_data[] = {
134"14 14 16 1", 138"14 14 16 1",
135". c None", 139". c None",
136"# c #000000", 140"# c #000000",
137"b c #0000de", 141"b c #0000de",
138"a c #0000e6", 142"a c #0000e6",
139"j c #41de83", 143"j c #41de83",
140"k c #4acecd", 144"k c #4acecd",
141"h c #4aced5", 145"h c #4aced5",
142"g c #5a40cd", 146"g c #5a40cd",
143"d c #5a44d5", 147"d c #5a44d5",
144"l c #9440d5", 148"l c #9440d5",
145"m c #b4ce4a", 149"m c #b4ce4a",
146"n c #cd4883", 150"n c #cd4883",
147"e c #d5ae10", 151"e c #d5ae10",
148"f c #de3ce6", 152"f c #de3ce6",
149"i c #e640e6", 153"i c #e640e6",
150"c c #ffffff", 154"c c #ffffff",
151"..............", 155"..............",
152".###########..", 156".###########..",
153".#ababababa#..", 157".#ababababa#..",
154".#babbbabbb#..", 158".#babbbabbb#..",
155".#ccccccccc#..", 159".#ccccccccc#..",
156".#cdcefcghc#..", 160".#cdcefcghc#..",
157".#ccccccccc#..", 161".#ccccccccc#..",
158".#cicjkclic#..", 162".#cicjkclic#..",
159".#ccccccccc#..", 163".#ccccccccc#..",
160".#cmchlcnec#..", 164".#cmchlcnec#..",
161".#ccccccccc#..", 165".#ccccccccc#..",
162".###########..", 166".###########..",
163"..............", 167"..............",
164".............."}; 168".............."};
165 169
166 170
167static const char* const passwords_data[] = { 171static const char* const passwords_data[] = {
168"16 16 20 1", 172"16 16 20 1",
169". c None", 173". c None",
170"# c #000000", 174"# c #000000",
171"r c #000083", 175"r c #000083",
172"p c #0000c5", 176"p c #0000c5",
173"q c #0000ff", 177"q c #0000ff",
174"n c #008100", 178"n c #008100",
175"l c #00c200", 179"l c #00c200",
176"m c #00ff00", 180"m c #00ff00",
177"j c #838100", 181"j c #838100",
178"a c #c55900", 182"a c #c55900",
179"h c #c5c200", 183"h c #c5c200",
180"o c #c5c2ff", 184"o c #c5c2ff",
181"k c #c5ffc5", 185"k c #c5ffc5",
182"f c #ff0000", 186"f c #ff0000",
183"d c #ff8100", 187"d c #ff8100",
184"b c #ffaa5a", 188"b c #ffaa5a",
185"e c #ffc2c5", 189"e c #ffc2c5",
186"c c #ffdeac", 190"c c #ffdeac",
187"i c #ffff00", 191"i c #ffff00",
188"g c #ffffc5", 192"g c #ffffc5",
189"............###.", 193"............###.",
190"...........#abb#", 194"...........#abb#",
191"..........#cbab#", 195"..........#cbab#",
192".........#cbdd#.", 196".........#cbdd#.",
193"######..#cbdd#..", 197"######..#cbdd#..",
194"#eeff#..#add#...", 198"#eeff#..#add#...",
195"#eeff#######....", 199"#eeff#######....",
196"#ccdbdd#........", 200"#ccdbdd#........",
197"#dddbdd###......", 201"#dddbdd###......",
198"#gghihhjj#......", 202"#gghihhjj#......",
199"#hhhihhjj###....", 203"#hhhihhjj###....",
@@ -404,209 +408,217 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
404#endif 408#endif
405 409
406 // create a zsafe configuration object 410 // create a zsafe configuration object
407#ifdef DESKTOP 411#ifdef DESKTOP
408#ifndef WIN32 412#ifndef WIN32
409 conf = new QSettings (); 413 conf = new QSettings ();
410 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath()); 414 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath());
411#else 415#else
412 conf = new QSettings (cfgFile); 416 conf = new QSettings (cfgFile);
413 conf->insertSearchPath (QSettings::Unix, cfgFile); 417 conf->insertSearchPath (QSettings::Unix, cfgFile);
414#endif 418#endif
415#else 419#else
416 conf = new Config (cfgFile, Config::File); 420 conf = new Config (cfgFile, Config::File);
417 conf->setGroup ("zsafePrefs"); 421 conf->setGroup ("zsafePrefs");
418#endif 422#endif
419#ifdef DESKTOP 423#ifdef DESKTOP
420// #ifndef WIN32 424// #ifndef WIN32
421 expandTree = conf->readBoolEntry(APP_KEY+"expandTree", false); 425 expandTree = conf->readBoolEntry(APP_KEY+"expandTree", false);
422// #endif 426// #endif
423#else 427#else
424 expandTree = conf->readNumEntry(APP_KEY+"expandTree", 0); 428 expandTree = conf->readNumEntry(APP_KEY+"expandTree", 0);
425#endif 429#endif
426#ifndef DESKTOP 430#ifndef DESKTOP
427 conf->setGroup ("zsafe"); 431 conf->setGroup ("zsafe");
428#endif 432#endif
429 433
430 QPixmap copy_img((const char**) copy_xpm); 434 QPixmap copy_img((const char**) copy_xpm);
431 QPixmap cut_img((const char**) cut_xpm); 435 QPixmap cut_img((const char**) cut_xpm);
432 QPixmap edit_img((const char**) edit_xpm); 436 QPixmap edit_img((const char**) edit_xpm);
433 QPixmap editdelete_img((const char**) editdelete_xpm); 437 QPixmap editdelete_img((const char**) editdelete_xpm);
434 QPixmap find_img((const char**) find_xpm); 438 QPixmap find_img((const char**) find_xpm);
435 QPixmap folder_open_img((const char**) folder_open_xpm); 439 QPixmap folder_open_img((const char**) folder_open_xpm);
436 QPixmap help_icon_img((const char**) help_icon_xpm); 440 QPixmap help_icon_img((const char**) help_icon_xpm);
437 QPixmap new_img((const char**) new_xpm); 441 QPixmap new_img((const char**) new_xpm);
438 QPixmap paste_img((const char**) paste_xpm); 442 QPixmap paste_img((const char**) paste_xpm);
439 QPixmap quit_icon_img((const char**) quit_icon_xpm); 443 QPixmap quit_icon_img((const char**) quit_icon_xpm);
440 QPixmap save_img((const char**) save_xpm); 444 QPixmap save_img((const char**) save_xpm);
441 QPixmap trash_img((const char**) trash_xpm); 445 QPixmap trash_img((const char**) trash_xpm);
442 QPixmap expand_img((const char**) expand_xpm); 446 QPixmap expand_img((const char**) expand_xpm);
443 QPixmap export_img((const char**) export_xpm); 447 QPixmap export_img((const char**) export_xpm);
444 QPixmap import_img((const char**) import_xpm); 448 QPixmap import_img((const char**) import_xpm);
445 449
446 QPixmap bank_cards( ( const char** ) bank_cards_data ); 450 QPixmap bank_cards( ( const char** ) bank_cards_data );
447 QPixmap passwords( ( const char** ) passwords_data ); 451 QPixmap passwords( ( const char** ) passwords_data );
448 QPixmap software( ( const char** ) software_data ); 452 QPixmap software( ( const char** ) software_data );
449 QPixmap general( ( const char** ) general_data ); 453 QPixmap general( ( const char** ) general_data );
450 if ( !name ) 454 if ( !name )
451 setName( "ZSafe" ); 455 setName( "ZSafe" );
452 456
453#ifdef DESKTOP 457#ifdef DESKTOP
454#ifdef WIN32 458#ifdef WIN32
455 setGeometry(100, 150, DeskW, DeskH-30 ); 459 setGeometry(100, 150, DeskW, DeskH-30 );
456#else 460#else
457 resize( DeskW, DeskH-30 ); 461 resize( DeskW, DeskH-30 );
458#endif 462#endif
459 463
460#else 464#else
461 465
462#ifdef JPATCH_HDE 466#ifdef JPATCH_HDE
463 int DeskS; 467 int DeskS;
464 if(DeskW > DeskH) 468 if(DeskW > DeskH)
465 { 469 {
466 DeskS = DeskW; 470 DeskS = DeskW;
467 } 471 }
468 else 472 else
469 { 473 {
470 DeskS = DeskH; 474 DeskS = DeskH;
471 } 475 }
472 resize( DeskW, DeskH ); 476 resize( DeskW, DeskH );
473 setMinimumSize( QSize( DeskS, DeskS ) ); 477 setMinimumSize( QSize( DeskS, DeskS ) );
474 setMaximumSize( QSize( DeskS, DeskS ) ); 478 setMaximumSize( QSize( DeskS, DeskS ) );
475#else 479#else
476 resize( DeskW, DeskH-30 ); 480 resize( DeskW, DeskH-30 );
477#endif 481#endif
478 482
479#endif 483#endif
480 // setCaption( tr( "ZSafe" ) ); 484 // setCaption( tr( "ZSafe" ) );
481 485
482 filename = conf->readEntry(APP_KEY+"document"); 486 filename = conf->readEntry(APP_KEY+"document");
483 if (filename.isEmpty() || filename.isNull()) 487 if (filename.isEmpty() || filename.isNull())
484 { 488 {
485 489
486 // check if the directory application exists, if not 490 // check if the directory application exists, if not
487 // create it 491 // create it
488// #ifndef WIN32 492// #ifndef WIN32
489 // QString d1("Documents/application"); 493 // QString d1("Documents/application");
490// #else 494// #else
491 QString d1(QDir::homeDirPath() + "/Documents/application"); 495 QString d1(QDir::homeDirPath() + "/Documents/application");
492// #endif 496// #endif
493 QDir pd1(d1); 497 QDir pd1(d1);
494 if (!pd1.exists()) 498 if (!pd1.exists())
495 { 499 {
496 QDir pd1("Documents"); 500 QDir pd1("Documents");
497 if (!pd1.mkdir("application", FALSE)) 501 if (!pd1.mkdir("application", FALSE))
498 { 502 {
499 QMessageBox::critical( 0, tr("ZSafe"), 503 QMessageBox::critical( 0, tr("ZSafe"),
504#ifdef JPATCH_HDE
505 tr("Can't create directory\n.../Documents/application\n\nZSafe will now exit."));
506#else
500 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d1)); 507 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d1));
508#endif
501 exitZs (1); 509 exitZs (1);
502 } 510 }
503 } 511 }
504// #ifndef WIN32 512// #ifndef WIN32
505 // QString d2("Documents/application/zsafe"); 513 // QString d2("Documents/application/zsafe");
506// #else 514// #else
507 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe"); 515 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe");
508// #endif 516// #endif
509 QDir pd2(d2); 517 QDir pd2(d2);
510 if (!pd2.exists()) 518 if (!pd2.exists())
511 { 519 {
512 QDir pd2("Documents/application"); 520 QDir pd2("Documents/application");
513 if (!pd2.mkdir("zsafe", FALSE)) 521 if (!pd2.mkdir("zsafe", FALSE))
514 { 522 {
515 QMessageBox::critical( 0, tr("ZSafe"), 523 QMessageBox::critical( 0, tr("ZSafe"),
524#ifdef JPATCH_HDE
525 tr("Can't create directory\n...//Documents/application/zsafe\n\nZSafe will now exit."));
526#else
516 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d2)); 527 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d2));
528#endif
517 exitZs (1); 529 exitZs (1);
518 } 530 }
519 } 531 }
520 532
521 533
522 // set the default filename 534 // set the default filename
523 filename=d2 + "/passwords.zsf"; 535 filename=d2 + "/passwords.zsf";
524 536
525 // save the current filename to the config file 537 // save the current filename to the config file
526 conf->writeEntry(APP_KEY+"document", filename); 538 conf->writeEntry(APP_KEY+"document", filename);
527 saveConf(); 539 saveConf();
528 } 540 }
529 541
530 //if (filename == "INVALIDPWD") 542 //if (filename == "INVALIDPWD")
531 //filename = ""; 543 //filename = "";
532 544
533 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 545 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
534#ifdef WIN32 546#ifdef WIN32
535 this->setCaption("Qt ZSafe: " + ti); 547 this->setCaption("Qt ZSafe: " + ti);
536#else 548#else
537 this->setCaption("ZSafe: " + ti); 549 this->setCaption("ZSafe: " + ti);
538#endif 550#endif
539 551
540 selectedItem = NULL; 552 selectedItem = NULL;
541 lastSearchedCategory = NULL; 553 lastSearchedCategory = NULL;
542 lastSearchedItem = NULL; 554 lastSearchedItem = NULL;
543 lastSearchedName = ""; 555 lastSearchedName = "";
544 lastSearchedUsername = ""; 556 lastSearchedUsername = "";
545 lastSearchedComment = ""; 557 lastSearchedComment = "";
546 558
547 infoForm = new InfoForm(); 559 infoForm = new InfoForm();
548 categoryDialog = NULL; 560 categoryDialog = NULL;
549 561
550 // add a menu bar 562 // add a menu bar
551 QMenuBar *menu = new QMenuBar( this ); 563 QMenuBar *menu = new QMenuBar( this );
552 564
553 // add file menu 565 // add file menu
554 // QPopupMenu *file = new QPopupMenu( this ); 566 // QPopupMenu *file = new QPopupMenu( this );
555 file = new QPopupMenu( this ); 567 file = new QPopupMenu( this );
556 568
557// #ifdef DESKTOP 569// #ifdef DESKTOP
558 file->insertItem( new_img, tr("&New document"), this, SLOT(newDocument()) ); 570 file->insertItem( new_img, tr("&New document"), this, SLOT(newDocument()) );
559 file->insertItem( folder_open_img, tr("&Open document"), this, SLOT(loadDocument()) ); 571 file->insertItem( folder_open_img, tr("&Open document"), this, SLOT(loadDocument()) );
560 file->insertItem( save_img, tr("&Save document as .."), this, SLOT(saveDocumentAs()) ); 572 file->insertItem( save_img, tr("&Save document as .."), this, SLOT(saveDocumentAs()) );
561 file->insertSeparator(); 573 file->insertSeparator();
562// #endif 574// #endif
563 575
564 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) ); 576 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) );
565 file->insertItem( save_img, tr("S&ave document with new Password"), this, 577 file->insertItem( save_img, tr("S&ave document with new Password"), this,
566 SLOT(saveDocumentWithPwd()) ); 578 SLOT(saveDocumentWithPwd()) );
567 file->insertSeparator(); 579 file->insertSeparator();
568 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) ); 580 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) );
569 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) ); 581 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) );
570 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) ); 582 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) );
571 file->insertSeparator(); 583 file->insertSeparator();
572 file->insertItem( expand_img, tr("&Open entries expanded"), this, 584 file->insertItem( expand_img, tr("&Open entries expanded"), this,
573 SLOT(setExpandFlag()), 0, 'o'); 585 SLOT(setExpandFlag()), 0, 'o');
574 file->setItemChecked('o', expandTree); 586 file->setItemChecked('o', expandTree);
575 file->insertSeparator(); 587 file->insertSeparator();
576 file->insertItem( quit_icon_img, tr("E&xit"), this, SLOT(quitMe()) ); 588 file->insertItem( quit_icon_img, tr("E&xit"), this, SLOT(quitMe()) );
577 menu->insertItem( tr("&File"), file ); 589 menu->insertItem( tr("&File"), file );
578 590
579 QPopupMenu *cat = new QPopupMenu( this ); 591 QPopupMenu *cat = new QPopupMenu( this );
580 cat->insertItem( new_img, tr("&New"), this, SLOT(addCategory()) ); 592 cat->insertItem( new_img, tr("&New"), this, SLOT(addCategory()) );
581 cat->insertItem( edit_img, tr("&Edit"), this, SLOT(editCategory()) ); 593 cat->insertItem( edit_img, tr("&Edit"), this, SLOT(editCategory()) );
582 cat->insertItem( trash_img, tr("&Delete"), this, SLOT(delCategory()) ); 594 cat->insertItem( trash_img, tr("&Delete"), this, SLOT(delCategory()) );
583 menu->insertItem( tr("&Category"), cat ); 595 menu->insertItem( tr("&Category"), cat );
584 596
585 QPopupMenu *it = new QPopupMenu( this ); 597 QPopupMenu *it = new QPopupMenu( this );
586 it->insertItem( cut_img, tr("&Cut"), this, SLOT(cutItem()) ); 598 it->insertItem( cut_img, tr("&Cut"), this, SLOT(cutItem()) );
587 it->insertItem( copy_img, tr("C&opy"), this, SLOT(copyItem()) ); 599 it->insertItem( copy_img, tr("C&opy"), this, SLOT(copyItem()) );
588 it->insertItem( paste_img, tr("&Paste"), this, SLOT(pasteItem()) ); 600 it->insertItem( paste_img, tr("&Paste"), this, SLOT(pasteItem()) );
589 it->insertSeparator(); 601 it->insertSeparator();
590 it->insertItem( new_img, tr("&New"), this, SLOT(newPwd()) ); 602 it->insertItem( new_img, tr("&New"), this, SLOT(newPwd()) );
591 it->insertItem( edit_img, tr("&Edit"), this, SLOT(editPwd()) ); 603 it->insertItem( edit_img, tr("&Edit"), this, SLOT(editPwd()) );
592 it->insertItem( trash_img, tr("&Delete"), this, SLOT(deletePwd()) ); 604 it->insertItem( trash_img, tr("&Delete"), this, SLOT(deletePwd()) );
593 it->insertItem( find_img, tr("&Search"), this, SLOT(findPwd()) ); 605 it->insertItem( find_img, tr("&Search"), this, SLOT(findPwd()) );
594 menu->insertItem( tr("&Entry"), it ); 606 menu->insertItem( tr("&Entry"), it );
595 607
596 QPopupMenu *help = new QPopupMenu( this ); 608 QPopupMenu *help = new QPopupMenu( this );
597 help->insertItem( help_icon_img, tr("&About"), this, SLOT(about()) ); 609 help->insertItem( help_icon_img, tr("&About"), this, SLOT(about()) );
598 menu->insertItem( tr("&Help"), help ); 610 menu->insertItem( tr("&Help"), help );
599 611
600 // toolbar icons 612 // toolbar icons
601 613
602 New = new QToolButton( menu, "New" ); 614 New = new QToolButton( menu, "New" );
603 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) ); 615 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) );
604 New->setMouseTracking( TRUE ); 616 New->setMouseTracking( TRUE );
605 New->setText( tr( "" ) ); 617 New->setText( tr( "" ) );
606 New->setPixmap( new_img ); 618 New->setPixmap( new_img );
607 QToolTip::add( New, tr( "New entry" ) ); 619 QToolTip::add( New, tr( "New entry" ) );
608 620
609 Edit = new QToolButton( menu, "Edit" ); 621 Edit = new QToolButton( menu, "Edit" );
610 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) ); 622 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) );
611 Edit->setText( tr( "" ) ); 623 Edit->setText( tr( "" ) );
612 Edit->setPixmap( edit_img ); 624 Edit->setPixmap( edit_img );
@@ -682,315 +694,283 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
682 this, SLOT( showInfo( QListViewItem* ) ) ); 694 this, SLOT( showInfo( QListViewItem* ) ) );
683 695
684} 696}
685 697
686const QColor *ZSafe::evenRowColor = &Qt::white; 698const QColor *ZSafe::evenRowColor = &Qt::white;
687// const QColor *ZSafe::oddRowColor = &Qt::lightGray; 699// const QColor *ZSafe::oddRowColor = &Qt::lightGray;
688const QColor *ZSafe::oddRowColor = new QColor(216,240,255); 700const QColor *ZSafe::oddRowColor = new QColor(216,240,255);
689 701
690/* 702/*
691 * Destroys the object and frees any allocated resources 703 * Destroys the object and frees any allocated resources
692 */ 704 */
693ZSafe::~ZSafe() 705ZSafe::~ZSafe()
694{ 706{
695 // no need to delete child widgets, Qt does it all for us 707 // no need to delete child widgets, Qt does it all for us
696 quitMe(); 708 quitMe();
697} 709}
698 710
699// load the default document 711// load the default document
700void ZSafe::slotLoadDocu() 712void ZSafe::slotLoadDocu()
701{ 713{
702 openDocument (filename); 714 openDocument (filename);
703} 715}
704 716
705void ZSafe::deletePwd() 717void ZSafe::deletePwd()
706{ 718{
707 719
708 if (!selectedItem) 720 if (!selectedItem)
709 return; 721 return;
710 if (!isCategory(selectedItem)) 722 if (!isCategory(selectedItem))
711 { 723 {
712 switch( QMessageBox::information( this, tr("ZSafe"), 724 switch( QMessageBox::information( this, tr("ZSafe"),
713 tr("Do you want to delete?"), 725 tr("Do you want to delete?"),
714 tr("&Delete"), tr("D&on't Delete"), 726 tr("&Delete"), tr("D&on't Delete"),
715 0 // Enter == button 0 727 0 // Enter == button 0
716 ) ) { // Escape == button 2 728 ) ) { // Escape == button 2
717 case 0: // Delete clicked, Alt-S or Enter pressed. 729 case 0: // Delete clicked, Alt-S or Enter pressed.
718 // Delete 730 // Delete
719 modified = true; 731 modified = true;
720 selectedItem->parent()->takeItem(selectedItem); 732 selectedItem->parent()->takeItem(selectedItem);
721 selectedItem = NULL; 733 selectedItem = NULL;
722 break; 734 break;
723 case 1: // Don't delete 735 case 1: // Don't delete
724 break; 736 break;
725 } 737 }
726 } 738 }
727 else 739 else
728 { 740 {
729 delCategory(); 741 delCategory();
730 } 742 }
731} 743}
732 744
733void ZSafe::editPwd() 745void ZSafe::editPwd()
734{ 746{
735 if (!selectedItem) 747 if (!selectedItem)
736 return; 748 return;
737 if (!isCategory(selectedItem)) 749 if (!isCategory(selectedItem))
738 { 750 {
739 // open the 'New Entry' dialog 751 // open the 'New Entry' dialog
740 NewDialog *dialog = new NewDialog(this, tr("Edit Entry"), TRUE); 752 NewDialog *dialog = new NewDialog(this, tr("Edit Entry"), TRUE);
741#ifdef WIN32 753#ifdef WIN32
742 dialog->setCaption ("Qt " + tr("Edit Entry")); 754 dialog->setCaption ("Qt " + tr("Edit Entry"));
743 dialog->setGeometry(200, 250, 220, 310 ); 755 dialog->setGeometry(200, 250, 220, 310 );
744#endif 756#endif
745 757
746 // set the labels 758 // set the labels
747 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 759 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
748 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 760 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
749 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 761 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password")));
750 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 762 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
751 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); 763 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4")));
752 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); 764 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5")));
753 765
754 // set the fields 766 // set the fields
755 dialog->NameField->setText(selectedItem->text (0)); 767 dialog->NameField->setText(selectedItem->text (0));
756 dialog->UsernameField->setText(selectedItem->text (1)); 768 dialog->UsernameField->setText(selectedItem->text (1));
757 dialog->PasswordField->setText(selectedItem->text (2)); 769 dialog->PasswordField->setText(selectedItem->text (2));
758 QString comment = selectedItem->text (3); 770 QString comment = selectedItem->text (3);
759 comment.replace (QRegExp("<br>"), "\n"); 771 comment.replace (QRegExp("<br>"), "\n");
760 dialog->Field5->setText(selectedItem->text (4)); 772 dialog->Field5->setText(selectedItem->text (4));
761 dialog->Field6->setText(selectedItem->text (5)); 773 dialog->Field6->setText(selectedItem->text (5));
762 dialog->CommentField->insertLine(comment); 774 dialog->CommentField->insertLine(comment);
763 dialog->CommentField->setCursorPosition(0,0); 775 dialog->CommentField->setCursorPosition(0,0);
764#ifdef DESKTOP 776#ifdef DESKTOP
765#ifndef WIN32 777#ifndef WIN32
766 dialog->show(); 778 dialog->show();
767#endif 779#endif
768#else 780#else
769 dialog->showMaximized(); 781 dialog->showMaximized();
770#endif 782#endif
771 DialogCode result = (DialogCode) dialog->exec(); 783 DialogCode result = (DialogCode) dialog->exec();
772 784
773#ifdef DESKTOP 785#ifdef DESKTOP
774 result = Accepted; 786 result = Accepted;
775#endif 787#endif
776 if (result == Accepted) 788 if (result == Accepted)
777 { 789 {
778#ifdef JPATCH_HDE
779 // edit the selected item
780 QString name = dialog->NameField->text();
781 selectedItem->setText (0, name);
782 QString user = dialog->UsernameField->text();
783 selectedItem->setText (1, user);
784 QString pwd = dialog->PasswordField->text();
785 selectedItem->setText (2, pwd);
786 QString comment = dialog->CommentField->text();
787 comment.replace (QRegExp("\n"), "<br>");
788 selectedItem->setText (3, comment);
789 QString f5 = dialog->Field5->text();
790 selectedItem->setText (4, f5);
791 QString f6 = dialog->Field6->text();
792 selectedItem->setText (5, f6);
793#else
794 modified = true; 790 modified = true;
795 // edit the selected item 791 // edit the selected item
796 QString name = dialog->NameField->text(); 792 QString name = dialog->NameField->text();
797 selectedItem->setText (0, tr (name)); 793 selectedItem->setText (0, tr (name));
798 QString user = dialog->UsernameField->text(); 794 QString user = dialog->UsernameField->text();
799 selectedItem->setText (1, tr (user)); 795 selectedItem->setText (1, tr (user));
800 QString pwd = dialog->PasswordField->text(); 796 QString pwd = dialog->PasswordField->text();
801 selectedItem->setText (2, tr (pwd)); 797 selectedItem->setText (2, tr (pwd));
802 QString comment = dialog->CommentField->text(); 798 QString comment = dialog->CommentField->text();
803 comment.replace (QRegExp("\n"), "<br>"); 799 comment.replace (QRegExp("\n"), "<br>");
804 selectedItem->setText (3, tr (comment)); 800 selectedItem->setText (3, tr (comment));
805 QString f5 = dialog->Field5->text(); 801 QString f5 = dialog->Field5->text();
806 selectedItem->setText (4, tr (f5)); 802 selectedItem->setText (4, tr (f5));
807 QString f6 = dialog->Field6->text(); 803 QString f6 = dialog->Field6->text();
808 selectedItem->setText (5, tr (f6)); 804 selectedItem->setText (5, tr (f6));
809#endif
810 } 805 }
811 806
812 delete dialog; 807 delete dialog;
813 } 808 }
814 else 809 else
815 { 810 {
816 editCategory(); 811 editCategory();
817 } 812 }
818} 813}
819 814
820void ZSafe::newPwd() 815void ZSafe::newPwd()
821{ 816{
822 if (!selectedItem) 817 if (!selectedItem)
823 return; 818 return;
824 819
825 if (!isCategory(selectedItem)) 820 if (!isCategory(selectedItem))
826 selectedItem = selectedItem->parent(); 821 selectedItem = selectedItem->parent();
827 822
828 if (isCategory(selectedItem)) 823 if (isCategory(selectedItem))
829 { 824 {
830 QString cat = selectedItem->text(0); 825 QString cat = selectedItem->text(0);
831 826
832 // open the 'New Entry' dialog 827 // open the 'New Entry' dialog
833 NewDialog *dialog = new NewDialog(this, tr("New Entry"), TRUE); 828 NewDialog *dialog = new NewDialog(this, tr("New Entry"), TRUE);
834#ifdef WIN32 829#ifdef WIN32
835 dialog->setCaption ("Qt " + tr("New Entry")); 830 dialog->setCaption ("Qt " + tr("New Entry"));
836 dialog->setGeometry(200, 250, 220, 310 ); 831 dialog->setGeometry(200, 250, 220, 310 );
837#endif 832#endif
838 // set the labels 833 // set the labels
839 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 834 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
840 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 835 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
841 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 836 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password")));
842 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 837 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
843 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); 838 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4")));
844 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); 839 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5")));
845retype: 840retype:
846#ifdef DESKTOP 841#ifdef DESKTOP
847#ifndef WIN32 842#ifndef WIN32
848 dialog->show(); 843 dialog->show();
849#endif 844#endif
850#else 845#else
851 dialog->showMaximized(); 846 dialog->showMaximized();
852#endif 847#endif
853 DialogCode result = (DialogCode) dialog->exec(); 848 DialogCode result = (DialogCode) dialog->exec();
854#ifdef DESKTOP 849#ifdef DESKTOP
855 result = Accepted; 850 result = Accepted;
856#endif 851#endif
857 852
858 if (result == Accepted) 853 if (result == Accepted)
859 { 854 {
860 855
861 QString name = dialog->NameField->text(); 856 QString name = dialog->NameField->text();
862 if (cat == name) 857 if (cat == name)
863 { 858 {
864 QMessageBox::critical( 0, tr("ZSafe"), 859 QMessageBox::critical( 0, tr("ZSafe"),
865 tr("Entry name must be different\nfrom the category name.") ); 860 tr("Entry name must be different\nfrom the category name.") );
866 goto retype; // it's not a good programming style :-) 861 goto retype; // it's not a good programming style :-)
867 } 862 }
868 863
869 modified = true; 864 modified = true;
870 // add the new item 865 // add the new item
871 QListViewItem *i = new ShadedListItem (0, selectedItem); 866 QListViewItem *i = new ShadedListItem (0, selectedItem);
872 i->setOpen (TRUE); 867 i->setOpen (TRUE);
873 868
874#ifdef JPATCH_HDE
875 i->setText (0, name);
876 QString user = dialog->UsernameField->text();
877 i->setText (1, user);
878 QString pwd = dialog->PasswordField->text();
879 i->setText (2, pwd);
880 QString comment = dialog->CommentField->text();
881 comment.replace (QRegExp("\n"), "<br>");
882 i->setText (3, comment);
883 QString f5 = dialog->Field5->text();
884 i->setText (4, f5);
885 QString f6 = dialog->Field6->text();
886 i->setText (5, f6);
887#else
888 i->setText (0, tr (name)); 869 i->setText (0, tr (name));
889 QString user = dialog->UsernameField->text(); 870 QString user = dialog->UsernameField->text();
890 i->setText (1, tr (user)); 871 i->setText (1, tr (user));
891 QString pwd = dialog->PasswordField->text(); 872 QString pwd = dialog->PasswordField->text();
892 i->setText (2, tr (pwd)); 873 i->setText (2, tr (pwd));
893 QString comment = dialog->CommentField->text(); 874 QString comment = dialog->CommentField->text();
894 comment.replace (QRegExp("\n"), "<br>"); 875 comment.replace (QRegExp("\n"), "<br>");
895 i->setText (3, tr (comment)); 876 i->setText (3, tr (comment));
896 QString f5 = dialog->Field5->text(); 877 QString f5 = dialog->Field5->text();
897 i->setText (4, tr (f5)); 878 i->setText (4, tr (f5));
898 QString f6 = dialog->Field6->text(); 879 QString f6 = dialog->Field6->text();
899 i->setText (5, tr (f6)); 880 i->setText (5, tr (f6));
900#endif
901 } 881 }
902 882
903 delete dialog; 883 delete dialog;
904 } 884 }
905} 885}
906 886
907void ZSafe::findPwd() 887void ZSafe::findPwd()
908{ 888{
909 889
910 // open the 'Search' dialog 890 // open the 'Search' dialog
911 SearchDialog *dialog = new SearchDialog(this, tr("Search"), TRUE); 891 SearchDialog *dialog = new SearchDialog(this, tr("Search"), TRUE);
912#ifdef WIN32 892#ifdef WIN32
913 dialog->setCaption ("Qt " + tr("Search")); 893 dialog->setCaption ("Qt " + tr("Search"));
914#endif 894#endif
915 895
916#ifdef DESKTOP 896#ifdef DESKTOP
917#endif 897#endif
918 if (lastSearchedName) 898 if (lastSearchedName)
919 dialog->NameField->setText(lastSearchedName); 899 dialog->NameField->setText(lastSearchedName);
920 else 900 else
921 dialog->NameField->setText(""); 901 dialog->NameField->setText("");
922 if (lastSearchedUsername) 902 if (lastSearchedUsername)
923 dialog->UsernameField->setText(lastSearchedUsername); 903 dialog->UsernameField->setText(lastSearchedUsername);
924 else 904 else
925 dialog->UsernameField->setText(""); 905 dialog->UsernameField->setText("");
926 if (lastSearchedComment) 906 if (lastSearchedComment)
927 dialog->CommentField->setText(lastSearchedComment); 907 dialog->CommentField->setText(lastSearchedComment);
928 else 908 else
929 dialog->CommentField->setText(""); 909 dialog->CommentField->setText("");
930 DialogCode result = (DialogCode) dialog->exec(); 910 DialogCode result = (DialogCode) dialog->exec();
931#ifdef DESKTOP 911#ifdef DESKTOP
932 result = Accepted; 912 result = Accepted;
933#endif 913#endif
934 914
935 QString name; 915 QString name;
936 QString username; 916 QString username;
937 QString comment; 917 QString comment;
938 if (result == Accepted) 918 if (result == Accepted)
939 { 919 {
940 name = dialog->NameField->text(); 920 name = dialog->NameField->text();
941 username = dialog->UsernameField->text(); 921 username = dialog->UsernameField->text();
942 comment = dialog->CommentField->text(); 922 comment = dialog->CommentField->text();
943 qWarning (name); 923 qWarning (name);
944 } 924 }
945 else 925 else
946 { 926 {
947 delete dialog; 927 delete dialog;
948 return; 928 return;
949 } 929 }
950 930
951 if (!name.isEmpty() && name != lastSearchedName || 931 if (!name.isEmpty() && name != lastSearchedName ||
952 lastSearchedName.isEmpty() && !name.isEmpty()) 932 lastSearchedName.isEmpty() && !name.isEmpty())
953 { 933 {
954 // set search at the beginning if a new name is given 934 // set search at the beginning if a new name is given
955 lastSearchedCategory = NULL; 935 lastSearchedCategory = NULL;
956 lastSearchedItem = NULL; 936 lastSearchedItem = NULL;
957 } 937 }
958 lastSearchedName = name; 938 lastSearchedName = name;
959 if (!username.isEmpty() && username != lastSearchedUsername || 939 if (!username.isEmpty() && username != lastSearchedUsername ||
960 lastSearchedUsername.isEmpty() && !username.isEmpty()) 940 lastSearchedUsername.isEmpty() && !username.isEmpty())
961 { 941 {
962 // set search at the beginning if a new name is given 942 // set search at the beginning if a new name is given
963 lastSearchedCategory = NULL; 943 lastSearchedCategory = NULL;
964 lastSearchedItem = NULL; 944 lastSearchedItem = NULL;
965 } 945 }
966 lastSearchedUsername = username; 946 lastSearchedUsername = username;
967 if (!comment.isEmpty() && comment != lastSearchedComment || 947 if (!comment.isEmpty() && comment != lastSearchedComment ||
968 lastSearchedComment.isEmpty() && !comment.isEmpty()) 948 lastSearchedComment.isEmpty() && !comment.isEmpty())
969 { 949 {
970 // set search at the beginning if a new name is given 950 // set search at the beginning if a new name is given
971 lastSearchedCategory = NULL; 951 lastSearchedCategory = NULL;
972 lastSearchedItem = NULL; 952 lastSearchedItem = NULL;
973 } 953 }
974 lastSearchedComment = comment; 954 lastSearchedComment = comment;
975 955
976 ListView->clearSelection(); 956 ListView->clearSelection();
977 957
978 bool found=FALSE; 958 bool found=FALSE;
979 // step through all categories 959 // step through all categories
980 QListViewItem *i; 960 QListViewItem *i;
981 if (lastSearchedCategory) 961 if (lastSearchedCategory)
982 i = lastSearchedCategory; 962 i = lastSearchedCategory;
983 else 963 else
984 i = ListView->firstChild(); 964 i = ListView->firstChild();
985 for (; 965 for (;
986 i != NULL; 966 i != NULL;
987 i = i->nextSibling()) 967 i = i->nextSibling())
988 { 968 {
989 qWarning (i->text(0)); 969 qWarning (i->text(0));
990 i->setSelected(FALSE); 970 i->setSelected(FALSE);
991 971
992 // step through all subitems 972 // step through all subitems
993 QListViewItem *si; 973 QListViewItem *si;
994 if (lastSearchedItem) 974 if (lastSearchedItem)
995 si = lastSearchedItem; 975 si = lastSearchedItem;
996 else 976 else
@@ -1452,230 +1432,213 @@ void ZSafe::readAllEntries()
1452 // step through all categories 1432 // step through all categories
1453 for (i = ListView->firstChild(); 1433 for (i = ListView->firstChild();
1454 i != NULL; 1434 i != NULL;
1455 i = i->nextSibling()) 1435 i = i->nextSibling())
1456 { 1436 {
1457 // step through all subitems 1437 // step through all subitems
1458 QListViewItem *si; 1438 QListViewItem *si;
1459 for (si = i->firstChild(); 1439 for (si = i->firstChild();
1460 si != NULL; ) 1440 si != NULL; )
1461 // si = si->nextSibling()) 1441 // si = si->nextSibling())
1462 { 1442 {
1463 QListViewItem *_si = si; 1443 QListViewItem *_si = si;
1464 si = si->nextSibling(); 1444 si = si->nextSibling();
1465 i->takeItem(_si); // remove from view list 1445 i->takeItem(_si); // remove from view list
1466 if (_si) delete _si; 1446 if (_si) delete _si;
1467 } 1447 }
1468 } 1448 }
1469 1449
1470 qWarning ("ReadAllEntries(): "); 1450 qWarning ("ReadAllEntries(): ");
1471 1451
1472 QTextStream t(&f); 1452 QTextStream t(&f);
1473 while ( !t.eof() ) 1453 while ( !t.eof() )
1474 { 1454 {
1475 QString s = t.readLine(); 1455 QString s = t.readLine();
1476 s.replace (QRegExp("\";\""), "\"|\""); 1456 s.replace (QRegExp("\";\""), "\"|\"");
1477 // char buffer[1024]; 1457 // char buffer[1024];
1478#ifndef WIN32 1458#ifndef WIN32
1479 char buffer[s.length()+1]; 1459 char buffer[s.length()+1];
1480#else 1460#else
1481 char buffer[4048]; 1461 char buffer[4048];
1482#endif 1462#endif
1483 1463
1484 1464
1485 /* modify QString -> QCString::utf8 */ 1465 /* modify QString -> QCString::utf8 */
1486 1466
1487 strcpy (buffer, s.utf8()); 1467 strcpy (buffer, s.utf8());
1488 1468
1489 QString name; 1469 QString name;
1490 QString user; 1470 QString user;
1491 QString password; 1471 QString password;
1492 QString comment; 1472 QString comment;
1493 QString field5=""; 1473 QString field5="";
1494 QString field6=""; 1474 QString field6="";
1495 1475
1496 // separete the entries 1476 // separete the entries
1497 char *i = strtok (buffer, "|"); 1477 char *i = strtok (buffer, "|");
1498 QString category(QString::fromUtf8(&i[1])); 1478 QString category(QString::fromUtf8(&i[1]));
1499 category.truncate(category.length() -1); 1479 category.truncate(category.length() -1);
1500 1480
1501 int idx=0; 1481 int idx=0;
1502 while ((i = strtok (NULL, "|")) != NULL) 1482 while ((i = strtok (NULL, "|")) != NULL)
1503 { 1483 {
1504 switch (idx) 1484 switch (idx)
1505 { 1485 {
1506 case 0: 1486 case 0:
1507 name = QString::fromUtf8(&i[1]); 1487 name = QString::fromUtf8(&i[1]);
1508 name.truncate(name.length() -1); 1488 name.truncate(name.length() -1);
1509 // name 1489 // name
1510 break; 1490 break;
1511 case 1: 1491 case 1:
1512 // user 1492 // user
1513 user = QString::fromUtf8(&i[1]); 1493 user = QString::fromUtf8(&i[1]);
1514 user.truncate(user.length() -1); 1494 user.truncate(user.length() -1);
1515 break; 1495 break;
1516 case 2: 1496 case 2:
1517 // password 1497 // password
1518 password = QString::fromUtf8(&i[1]); 1498 password = QString::fromUtf8(&i[1]);
1519 password.truncate(password.length() -1); 1499 password.truncate(password.length() -1);
1520 break; 1500 break;
1521 case 3: 1501 case 3:
1522 // comment 1502 // comment
1523 comment = QString::fromUtf8(&i[1]); 1503 comment = QString::fromUtf8(&i[1]);
1524 comment.truncate(comment.length() -1); 1504 comment.truncate(comment.length() -1);
1525 break; 1505 break;
1526 case 4: 1506 case 4:
1527 // field5 1507 // field5
1528 field5 = QString::fromUtf8(&i[1]); 1508 field5 = QString::fromUtf8(&i[1]);
1529 field5.truncate(field5.length() -1); 1509 field5.truncate(field5.length() -1);
1530 break; 1510 break;
1531 case 5: 1511 case 5:
1532 // field6 1512 // field6
1533 field6 = QString::fromUtf8(&i[1]); 1513 field6 = QString::fromUtf8(&i[1]);
1534 field6.truncate(field6.length() -1); 1514 field6.truncate(field6.length() -1);
1535 break; 1515 break;
1536 } 1516 }
1537 idx++; 1517 idx++;
1538 } 1518 }
1539 1519
1540 Category *cat= categories.find (category); 1520 Category *cat= categories.find (category);
1541 if (cat) 1521 if (cat)
1542 { 1522 {
1543 // use the existend item 1523 // use the existend item
1544 QListViewItem *catItem = cat->getListItem(); 1524 QListViewItem *catItem = cat->getListItem();
1545 if (catItem) 1525 if (catItem)
1546 { 1526 {
1547 QListViewItem * item = new ShadedListItem( 0, catItem ); 1527 QListViewItem * item = new ShadedListItem( 0, catItem );
1548#ifdef JPATCH_HDE
1549 item->setText( 0, name );
1550 item->setText( 1, user );
1551 item->setText( 2, password );
1552 item->setText( 3, comment );
1553 item->setText( 4, field5 );
1554 item->setText( 5, field6 );
1555#else
1556 item->setText( 0, tr( name ) ); 1528 item->setText( 0, tr( name ) );
1557 item->setText( 1, tr( user ) ); 1529 item->setText( 1, tr( user ) );
1558 item->setText( 2, tr( password ) ); 1530 item->setText( 2, tr( password ) );
1559 item->setText( 3, tr( comment ) ); 1531 item->setText( 3, tr( comment ) );
1560 item->setText( 4, tr( field5 ) ); 1532 item->setText( 4, tr( field5 ) );
1561 item->setText( 5, tr( field6 ) ); 1533 item->setText( 5, tr( field6 ) );
1562 catItem->setOpen( TRUE ); 1534 catItem->setOpen( TRUE );
1563#endif
1564 } 1535 }
1565 } 1536 }
1566 else 1537 else
1567 { 1538 {
1568 QListViewItem *catI = new ShadedListItem( 1, ListView ); 1539 QListViewItem *catI = new ShadedListItem( 1, ListView );
1569 // create and insert a new item 1540 // create and insert a new item
1570 QListViewItem * item = new ShadedListItem( 0, catI ); 1541 QListViewItem * item = new ShadedListItem( 0, catI );
1571#ifdef JPATCH_HDE
1572 item->setText( 0, name );
1573 item->setText( 1, user );
1574 item->setText( 2, password );
1575 item->setText( 3, comment );
1576 item->setText( 4, field5 );
1577 item->setText( 5, field6 );
1578#else
1579 item->setText( 0, tr( name ) ); 1542 item->setText( 0, tr( name ) );
1580 item->setText( 1, tr( user ) ); 1543 item->setText( 1, tr( user ) );
1581 item->setText( 2, tr( password ) ); 1544 item->setText( 2, tr( password ) );
1582 item->setText( 3, tr( comment ) ); 1545 item->setText( 3, tr( comment ) );
1583 item->setText( 4, tr( field5 ) ); 1546 item->setText( 4, tr( field5 ) );
1584 item->setText( 5, tr( field6 ) ); 1547 item->setText( 5, tr( field6 ) );
1585#endif 1548
1586 catI->setOpen( TRUE ); 1549 catI->setOpen( TRUE );
1587 1550
1588 Category *c1 = new Category(); 1551 Category *c1 = new Category();
1589 c1->setCategoryName(category); 1552 c1->setCategoryName(category);
1590 1553
1591 QString icon; 1554 QString icon;
1592 QString fullIconPath; 1555 QString fullIconPath;
1593 QPixmap *pix; 1556 QPixmap *pix;
1594// #ifndef WIN32 1557// #ifndef WIN32
1595 icon = conf->readEntry(APP_KEY+category); 1558 icon = conf->readEntry(APP_KEY+category);
1596// #endif 1559// #endif
1597 bool isIconAv = false; 1560 bool isIconAv = false;
1598 if (!icon.isEmpty() && !icon.isNull()) 1561 if (!icon.isEmpty() && !icon.isNull())
1599 { 1562 {
1600 // build the full path 1563 // build the full path
1601 fullIconPath = iconPath + icon; 1564 fullIconPath = iconPath + icon;
1602 pix = new QPixmap (fullIconPath); 1565 pix = new QPixmap (fullIconPath);
1603 if (pix) 1566 if (pix)
1604 { 1567 {
1605 QImage img = pix->convertToImage(); 1568 QImage img = pix->convertToImage();
1606 pix->convertFromImage(img.smoothScale(14,14)); 1569 pix->convertFromImage(img.smoothScale(14,14));
1607 c1->setIconName (icon); 1570 c1->setIconName (icon);
1608 c1->setIcon (*pix); 1571 c1->setIcon (*pix);
1609 isIconAv = true; 1572 isIconAv = true;
1610 } 1573 }
1611 } 1574 }
1612 if (!isIconAv) 1575 if (!isIconAv)
1613 { 1576 {
1614 c1->setIcon (*getPredefinedIcon(category)); 1577 c1->setIcon (*getPredefinedIcon(category));
1615 } 1578 }
1616 c1->setListItem (catI); 1579 c1->setListItem (catI);
1617 c1->initListItem(); 1580 c1->initListItem();
1618 categories.insert (c1->getCategoryName(), c1); 1581 categories.insert (c1->getCategoryName(), c1);
1619 } 1582 }
1620 1583
1621 } 1584 }
1622 f.close(); 1585 f.close();
1623 1586
1624 } 1587 }
1625 else 1588 else
1626 { 1589 {
1627 } 1590 }
1628 1591
1629} 1592}
1630 1593
1631#ifdef UNUSED 1594#ifdef UNUSED
1632void ZSafe::writeAllEntries() 1595void ZSafe::writeAllEntries()
1633{ 1596{
1634 // open the file for writing 1597 // open the file for writing
1635 QString fn = filename + ".txt"; 1598 QString fn = filename + ".txt";
1636 QFile f( fn ); 1599 QFile f( fn );
1637 if ( !f.open( IO_WriteOnly ) ) { 1600 if ( !f.open( IO_WriteOnly ) ) {
1638 qWarning( QString("Could not write to file %1").arg(fn), 1601 qWarning( QString("Could not write to file %1").arg(fn),
1639 2000 ); 1602 2000 );
1640 QMessageBox::critical( 0, tr("ZSafe"), 1603 QMessageBox::critical( 0, tr("ZSafe"),
1641 tr("Could not export to text file.") ); 1604 tr("Could not export to text file.") );
1642 return; 1605 return;
1643 } 1606 }
1644 QTextStream t( &f ); 1607 QTextStream t( &f );
1645 1608
1646 QListViewItem *i; 1609 QListViewItem *i;
1647 // step through all categories 1610 // step through all categories
1648 for (i = ListView->firstChild(); 1611 for (i = ListView->firstChild();
1649 i != NULL; 1612 i != NULL;
1650 i = i->nextSibling()) 1613 i = i->nextSibling())
1651 { 1614 {
1652 // step through all subitems 1615 // step through all subitems
1653 QListViewItem *si; 1616 QListViewItem *si;
1654 for (si = i->firstChild(); 1617 for (si = i->firstChild();
1655 si != NULL; 1618 si != NULL;
1656 si = si->nextSibling()) 1619 si = si->nextSibling())
1657 { 1620 {
1658 QString oneEntry; 1621 QString oneEntry;
1659 oneEntry += "\""; 1622 oneEntry += "\"";
1660 oneEntry += i->text(0); 1623 oneEntry += i->text(0);
1661 oneEntry += "\";"; 1624 oneEntry += "\";";
1662 oneEntry += "\""; 1625 oneEntry += "\"";
1663 oneEntry += si->text(0); 1626 oneEntry += si->text(0);
1664 oneEntry += "\";"; 1627 oneEntry += "\";";
1665 oneEntry += "\""; 1628 oneEntry += "\"";
1666 oneEntry += si->text(1); 1629 oneEntry += si->text(1);
1667 oneEntry += "\";"; 1630 oneEntry += "\";";
1668 oneEntry += "\""; 1631 oneEntry += "\"";
1669 oneEntry += si->text(2); 1632 oneEntry += si->text(2);
1670 oneEntry += "\";"; 1633 oneEntry += "\";";
1671 oneEntry += "\""; 1634 oneEntry += "\"";
1672 // oneEntry += si->text(3); 1635 // oneEntry += si->text(3);
1673 QString comment = si->text(3); 1636 QString comment = si->text(3);
1674 comment.replace (QRegExp("\n"), "<br>"); 1637 comment.replace (QRegExp("\n"), "<br>");
1675 oneEntry += comment; 1638 oneEntry += comment;
1676 oneEntry += "\""; 1639 oneEntry += "\"";
1677 // qWarning (oneEntry); 1640 // qWarning (oneEntry);
1678 t << oneEntry << endl; 1641 t << oneEntry << endl;
1679 1642
1680 // qWarning (si->text(0)); 1643 // qWarning (si->text(0));
1681 } 1644 }
@@ -1689,222 +1652,210 @@ void ZSafe::readAllEntries()
1689 QFile f( fn ); 1652 QFile f( fn );
1690 if ( !f.open( IO_ReadOnly ) ) 1653 if ( !f.open( IO_ReadOnly ) )
1691 { 1654 {
1692 qWarning( QString("Could not read file %1").arg(fn), 1655 qWarning( QString("Could not read file %1").arg(fn),
1693 2000 ); 1656 2000 );
1694 QMessageBox::critical( 0, tr("ZSafe"), 1657 QMessageBox::critical( 0, tr("ZSafe"),
1695 tr("Could not import text file.") ); 1658 tr("Could not import text file.") );
1696 return; 1659 return;
1697 } 1660 }
1698 1661
1699 modified = true; 1662 modified = true;
1700 1663
1701 // clear the password list 1664 // clear the password list
1702 selectedItem = NULL; 1665 selectedItem = NULL;
1703 QListViewItem *i; 1666 QListViewItem *i;
1704 // step through all categories 1667 // step through all categories
1705 for (i = ListView->firstChild(); 1668 for (i = ListView->firstChild();
1706 i != NULL; 1669 i != NULL;
1707 i = i->nextSibling()) 1670 i = i->nextSibling())
1708 { 1671 {
1709 // step through all subitems 1672 // step through all subitems
1710 QListViewItem *si; 1673 QListViewItem *si;
1711 for (si = i->firstChild(); 1674 for (si = i->firstChild();
1712 si != NULL; ) 1675 si != NULL; )
1713 // si = si->nextSibling()) 1676 // si = si->nextSibling())
1714 { 1677 {
1715 QListViewItem *_si = si; 1678 QListViewItem *_si = si;
1716 si = si->nextSibling(); 1679 si = si->nextSibling();
1717 i->takeItem(_si); // remove from view list 1680 i->takeItem(_si); // remove from view list
1718 if (_si) delete _si; 1681 if (_si) delete _si;
1719 } 1682 }
1720 } 1683 }
1721 1684
1722 qWarning ("ReadAllEntries(): "); 1685 qWarning ("ReadAllEntries(): ");
1723 1686
1724 QTextStream t(&f); 1687 QTextStream t(&f);
1725 while ( !t.eof() ) 1688 while ( !t.eof() )
1726 { 1689 {
1727 QString s = t.readLine(); 1690 QString s = t.readLine();
1728 s.replace (QRegExp("\";\""), "\"|\""); 1691 s.replace (QRegExp("\";\""), "\"|\"");
1729 // char buffer[1024]; 1692 // char buffer[1024];
1730 int len=s.length()+1; 1693 int len=s.length()+1;
1731#ifdef WIN32 1694#ifdef WIN32
1732 char buffer[512]; 1695 char buffer[512];
1733#else 1696#else
1734 char buffer[len]; 1697 char buffer[len];
1735#endif 1698#endif
1736 strcpy (buffer, s); 1699 strcpy (buffer, s);
1737 1700
1738 QString name; 1701 QString name;
1739 QString user; 1702 QString user;
1740 QString password; 1703 QString password;
1741 QString comment; 1704 QString comment;
1742 1705
1743 // separete the entries 1706 // separete the entries
1744 char *i = strtok (buffer, "|"); 1707 char *i = strtok (buffer, "|");
1745 QString category(&i[1]); 1708 QString category(&i[1]);
1746 category.truncate(category.length() -1); 1709 category.truncate(category.length() -1);
1747 1710
1748 int idx=0; 1711 int idx=0;
1749 while (i = strtok (NULL, "|")) 1712 while (i = strtok (NULL, "|"))
1750 { 1713 {
1751 switch (idx) 1714 switch (idx)
1752 { 1715 {
1753 case 0: 1716 case 0:
1754 name = &i[1]; 1717 name = &i[1];
1755 name.truncate(name.length() -1); 1718 name.truncate(name.length() -1);
1756 // name 1719 // name
1757 break; 1720 break;
1758 case 1: 1721 case 1:
1759 // user 1722 // user
1760 user = &i[1]; 1723 user = &i[1];
1761 user.truncate(user.length() -1); 1724 user.truncate(user.length() -1);
1762 break; 1725 break;
1763 case 2: 1726 case 2:
1764 // password 1727 // password
1765 password = &i[1]; 1728 password = &i[1];
1766 password.truncate(password.length() -1); 1729 password.truncate(password.length() -1);
1767 break; 1730 break;
1768 case 3: 1731 case 3:
1769 // comment 1732 // comment
1770 comment = &i[1]; 1733 comment = &i[1];
1771 comment.truncate(comment.length() -1); 1734 comment.truncate(comment.length() -1);
1772 break; 1735 break;
1773 } 1736 }
1774 idx++; 1737 idx++;
1775 } 1738 }
1776 1739
1777 Category *cat= categories.find (category); 1740 Category *cat= categories.find (category);
1778 if (cat) 1741 if (cat)
1779 { 1742 {
1780 // use the existend item 1743 // use the existend item
1781 QListViewItem *catItem = cat->getListItem(); 1744 QListViewItem *catItem = cat->getListItem();
1782 if (catItem) 1745 if (catItem)
1783 { 1746 {
1784 QListViewItem * item = new ShadedListItem( 0, catItem ); 1747 QListViewItem * item = new ShadedListItem( 0, catItem );
1785#ifdef JPATCH_HDE
1786 item->setText( 0, name );
1787 item->setText( 1, user );
1788 item->setText( 2, password );
1789 item->setText( 3, comment );
1790#else
1791 item->setText( 0, tr( name ) ); 1748 item->setText( 0, tr( name ) );
1792 item->setText( 1, tr( user ) ); 1749 item->setText( 1, tr( user ) );
1793 item->setText( 2, tr( password ) ); 1750 item->setText( 2, tr( password ) );
1794 item->setText( 3, tr( comment ) ); 1751 item->setText( 3, tr( comment ) );
1795#endif 1752
1796 catItem->setOpen( TRUE ); 1753 catItem->setOpen( TRUE );
1797 } 1754 }
1798 } 1755 }
1799 else 1756 else
1800 { 1757 {
1801 QListViewItem *catI = new ShadedListItem( 1, ListView ); 1758 QListViewItem *catI = new ShadedListItem( 1, ListView );
1802 // create and insert a new item 1759 // create and insert a new item
1803 QListViewItem * item = new ShadedListItem( 0, catI ); 1760 QListViewItem * item = new ShadedListItem( 0, catI );
1804#ifdef JPATCH_HDE
1805 item->setText( 0, name );
1806 item->setText( 1, user );
1807 item->setText( 2, password );
1808 item->setText( 3, comment );
1809#else
1810 item->setText( 0, tr( name ) ); 1761 item->setText( 0, tr( name ) );
1811 item->setText( 1, tr( user ) ); 1762 item->setText( 1, tr( user ) );
1812 item->setText( 2, tr( password ) ); 1763 item->setText( 2, tr( password ) );
1813 item->setText( 3, tr( comment ) ); 1764 item->setText( 3, tr( comment ) );
1814#endif 1765
1815 catI->setOpen( TRUE ); 1766 catI->setOpen( TRUE );
1816 1767
1817 Category *c1 = new Category(); 1768 Category *c1 = new Category();
1818 c1->setCategoryName(category); 1769 c1->setCategoryName(category);
1819 1770
1820 QString icon; 1771 QString icon;
1821 QString fullIconPath; 1772 QString fullIconPath;
1822 QPixmap *pix; 1773 QPixmap *pix;
1823// #ifndef WIN32 1774// #ifndef WIN32
1824 icon = conf->readEntry(APP_KEY+category); 1775 icon = conf->readEntry(APP_KEY+category);
1825// #endif 1776// #endif
1826 bool isIconAv = false; 1777 bool isIconAv = false;
1827 if (!icon.isEmpty() && !icon.isNull()) 1778 if (!icon.isEmpty() && !icon.isNull())
1828 { 1779 {
1829 // build the full path 1780 // build the full path
1830 fullIconPath = iconPath + icon; 1781 fullIconPath = iconPath + icon;
1831 pix = new QPixmap (fullIconPath); 1782 pix = new QPixmap (fullIconPath);
1832 if (pix) 1783 if (pix)
1833 { 1784 {
1834 QImage img = pix->convertToImage(); 1785 QImage img = pix->convertToImage();
1835 pix->convertFromImage(img.smoothScale(14,14)); 1786 pix->convertFromImage(img.smoothScale(14,14));
1836 c1->setIconName (icon); 1787 c1->setIconName (icon);
1837 c1->setIcon (*pix); 1788 c1->setIcon (*pix);
1838 isIconAv = true; 1789 isIconAv = true;
1839 } 1790 }
1840 } 1791 }
1841 if (!isIconAv) 1792 if (!isIconAv)
1842 { 1793 {
1843 c1->setIcon (*getPredefinedIcon(category)); 1794 c1->setIcon (*getPredefinedIcon(category));
1844 } 1795 }
1845 c1->setListItem (catI); 1796 c1->setListItem (catI);
1846 c1->initListItem(); 1797 c1->initListItem();
1847 categories.insert (c1->getCategoryName(), c1); 1798 categories.insert (c1->getCategoryName(), c1);
1848 } 1799 }
1849 1800
1850 } 1801 }
1851 f.close(); 1802 f.close();
1852 1803
1853} 1804}
1854#endif // UNUSED 1805#endif // UNUSED
1855 1806
1856void ZSafe::resume(int) 1807void ZSafe::resume(int)
1857{ 1808{
1858 qWarning ("Resume"); 1809 qWarning ("Resume");
1859 // hide the main window 1810 // hide the main window
1860 1811
1861 infoForm->hide(); 1812 infoForm->hide();
1862 // open zsafe again 1813 // open zsafe again
1863 m_password = ""; 1814 m_password = "";
1864 selectedItem = NULL; 1815 selectedItem = NULL;
1865 1816
1866 // clear the password list 1817 // clear the password list
1867 QListViewItem *i; 1818 QListViewItem *i;
1868 // step through all categories 1819 // step through all categories
1869 for (i = ListView->firstChild(); 1820 for (i = ListView->firstChild();
1870 i != NULL; 1821 i != NULL;
1871 i = i->nextSibling()) 1822 i = i->nextSibling())
1872 { 1823 {
1873 // step through all subitems 1824 // step through all subitems
1874 QListViewItem *si; 1825 QListViewItem *si;
1875 for (si = i->firstChild(); 1826 for (si = i->firstChild();
1876 si != NULL; ) 1827 si != NULL; )
1877 { 1828 {
1878 QListViewItem *_si = si; 1829 QListViewItem *_si = si;
1879 si = si->nextSibling(); 1830 si = si->nextSibling();
1880 i->takeItem(_si); // remove from view list 1831 i->takeItem(_si); // remove from view list
1881 if (_si) delete _si; 1832 if (_si) delete _si;
1882 } 1833 }
1883 } 1834 }
1884 1835
1885 // ask for password and read again 1836 // ask for password and read again
1886 openDocument(filename); 1837 openDocument(filename);
1887} 1838}
1888 1839
1889//--------------------------------------------- 1840//---------------------------------------------
1890 1841
1891 1842
1892bool ZSafe::openDocument(const char* _filename, const char* ) 1843bool ZSafe::openDocument(const char* _filename, const char* )
1893{ 1844{
1894 int retval; 1845 int retval;
1895 char* entry[FIELD_SIZE]; 1846 char* entry[FIELD_SIZE];
1896// #ifndef WIN32 1847// #ifndef WIN32
1897 int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1); 1848 int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1);
1898// #else 1849// #else
1899 // int validationFlag = 1; 1850 // int validationFlag = 1;
1900// #endif 1851// #endif
1901 1852
1902 int pwdOk = 0; 1853 int pwdOk = 0;
1903 int numberOfTries = 3; 1854 int numberOfTries = 3;
1904 for (int i=0; i < numberOfTries; i++) 1855 for (int i=0; i < numberOfTries; i++)
1905 { 1856 {
1906 QFile f(_filename); 1857 QFile f(_filename);
1907 if (f.exists()) 1858 if (f.exists())
1908 { 1859 {
1909 // ask with a dialog for the password 1860 // ask with a dialog for the password
1910 if (m_password.isEmpty()) 1861 if (m_password.isEmpty())
@@ -1916,232 +1867,217 @@ bool ZSafe::openDocument(const char* _filename, const char* )
1916 tr("Wrong password.\n\nZSafe will now exit.") ); 1867 tr("Wrong password.\n\nZSafe will now exit.") );
1917 exitZs (1); 1868 exitZs (1);
1918 } 1869 }
1919 1870
1920 retval = loadInit(_filename, m_password); 1871 retval = loadInit(_filename, m_password);
1921 if (retval != PWERR_GOOD) 1872 if (retval != PWERR_GOOD)
1922 { 1873 {
1923 qWarning ("Error loading Document"); 1874 qWarning ("Error loading Document");
1924 return false; 1875 return false;
1925 } 1876 }
1926 } 1877 }
1927 else 1878 else
1928 { 1879 {
1929#ifdef WIN32 1880#ifdef WIN32
1930 this->setCaption("Qt ZSafe"); 1881 this->setCaption("Qt ZSafe");
1931#else 1882#else
1932 this->setCaption("ZSafe"); 1883 this->setCaption("ZSafe");
1933#endif 1884#endif
1934 filename = ""; 1885 filename = "";
1935 return false; 1886 return false;
1936 } 1887 }
1937 1888
1938 1889
1939 // load the validation entry 1890 // load the validation entry
1940 if (validationFlag == 0) 1891 if (validationFlag == 0)
1941 { 1892 {
1942 pwdOk = 1; 1893 pwdOk = 1;
1943 break; 1894 break;
1944 } 1895 }
1945 1896
1946 retval = loadEntry(entry); 1897 retval = loadEntry(entry);
1947 if (retval == 1 && 1898 if (retval == 1 &&
1948 !strcmp (entry[0], "ZSAFECATEGORY") && 1899 !strcmp (entry[0], "ZSAFECATEGORY") &&
1949 !strcmp (entry[1], "name") && 1900 !strcmp (entry[1], "name") &&
1950 !strcmp (entry[2], "username") && 1901 !strcmp (entry[2], "username") &&
1951 !strcmp (entry[3], "password") && 1902 !strcmp (entry[3], "password") &&
1952 !strcmp (entry[4], "comment") ) 1903 !strcmp (entry[4], "comment") )
1953 { 1904 {
1954 for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]); 1905 for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
1955 pwdOk = 1; 1906 pwdOk = 1;
1956 break; 1907 break;
1957 } 1908 }
1958 else 1909 else
1959 // for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]); 1910 // for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
1960 fclose (fd); 1911 fclose (fd);
1961 m_password = ""; 1912 m_password = "";
1962 1913
1963 if (i < numberOfTries - 1) 1914 if (i < numberOfTries - 1)
1964 { 1915 {
1965 switch( QMessageBox::warning( this, tr("ZSafe"), 1916 switch( QMessageBox::warning( this, tr("ZSafe"),
1966 tr("Wrong password.\nEnter again?"), 1917 tr("Wrong password.\nEnter again?"),
1967 tr("&Yes"), tr("&No."), 1918 tr("&Yes"), tr("&No."),
1968 0 1919 0
1969 ) ) 1920 ) )
1970 { 1921 {
1971 case 1: // No 1922 case 1: // No
1972 exitZs (1); 1923 exitZs (1);
1973 break; 1924 break;
1974 case 0: // Yes 1925 case 0: // Yes
1975 continue; 1926 continue;
1976 } 1927 }
1977 } 1928 }
1978 } 1929 }
1979 if (pwdOk == 0) 1930 if (pwdOk == 0)
1980 { 1931 {
1981 // unset the document entry 1932 // unset the document entry
1982 conf->writeEntry(APP_KEY+"document", "INVALIDPWD"); 1933 conf->writeEntry(APP_KEY+"document", "INVALIDPWD");
1983 if (conf) 1934 if (conf)
1984 delete conf; 1935 delete conf;
1985 1936
1986 exitZs (1); 1937 exitZs (1);
1987 } 1938 }
1988 1939
1989 1940
1990 retval = loadEntry(entry); 1941 retval = loadEntry(entry);
1991 1942
1992 int numberOfEntries=0; 1943 int numberOfEntries=0;
1993 while (retval == 1) { 1944 while (retval == 1) {
1994 1945
1995 QString category( QString::fromUtf8(entry[0]) ); 1946 QString category( QString::fromUtf8(entry[0]) );
1996 QString name( QString::fromUtf8(entry[1]) ); 1947 QString name( QString::fromUtf8(entry[1]) );
1997 QString user( QString::fromUtf8(entry[2]) ); 1948 QString user( QString::fromUtf8(entry[2]) );
1998 QString password( QString::fromUtf8(entry[3]) ); 1949 QString password( QString::fromUtf8(entry[3]) );
1999 QString comment( QString::fromUtf8(entry[4]) ); 1950 QString comment( QString::fromUtf8(entry[4]) );
2000 QString field5( QString::fromUtf8(entry[5]) ); 1951 QString field5( QString::fromUtf8(entry[5]) );
2001 QString field6( QString::fromUtf8(entry[6]) ); 1952 QString field6( QString::fromUtf8(entry[6]) );
2002 // add the subitems to the categories 1953 // add the subitems to the categories
2003 1954
2004 Category *cat= categories.find (category); 1955 Category *cat= categories.find (category);
2005 if (cat) 1956 if (cat)
2006 { 1957 {
2007 // use the existend item 1958 // use the existend item
2008 QListViewItem *catItem = cat->getListItem(); 1959 QListViewItem *catItem = cat->getListItem();
2009 if (catItem) 1960 if (catItem)
2010 { 1961 {
2011 QListViewItem * item = new ShadedListItem( 0, catItem ); 1962 QListViewItem * item = new ShadedListItem( 0, catItem );
2012#ifdef JPATCH_HDE
2013 item->setText( 0, name );
2014 item->setText( 1, user );
2015 item->setText( 2, password );
2016 item->setText( 3, comment );
2017 item->setText( 4, field5 );
2018 item->setText( 5, field6 );
2019#else
2020 item->setText( 0, tr( name ) ); 1963 item->setText( 0, tr( name ) );
2021 item->setText( 1, tr( user ) ); 1964 item->setText( 1, tr( user ) );
2022 item->setText( 2, tr( password ) ); 1965 item->setText( 2, tr( password ) );
2023 item->setText( 3, tr( comment ) ); 1966 item->setText( 3, tr( comment ) );
2024 item->setText( 4, tr( field5 ) ); 1967 item->setText( 4, tr( field5 ) );
2025 item->setText( 5, tr( field6 ) ); 1968 item->setText( 5, tr( field6 ) );
2026#endif 1969
2027 if (expandTree) 1970 if (expandTree)
2028 catItem->setOpen( TRUE ); 1971 catItem->setOpen( TRUE );
2029 numberOfEntries++; 1972 numberOfEntries++;
2030 } 1973 }
2031 } 1974 }
2032 else 1975 else
2033 { 1976 {
2034 QListViewItem *catI = new ShadedListItem( 1, ListView ); 1977 QListViewItem *catI = new ShadedListItem( 1, ListView );
2035 // create and insert a new item 1978 // create and insert a new item
2036 QListViewItem * item = new ShadedListItem( 0, catI ); 1979 QListViewItem * item = new ShadedListItem( 0, catI );
2037#ifdef JPATCH_HDE 1980
2038 item->setText( 0, name );
2039 item->setText( 1, user );
2040 item->setText( 2, password );
2041 item->setText( 3, comment );
2042 item->setText( 4, field5 );
2043 item->setText( 5, field6 );
2044#else
2045 item->setText( 0, tr( name ) ); 1981 item->setText( 0, tr( name ) );
2046 item->setText( 1, tr( user ) ); 1982 item->setText( 1, tr( user ) );
2047 item->setText( 2, tr( password ) ); 1983 item->setText( 2, tr( password ) );
2048 item->setText( 3, tr( comment ) ); 1984 item->setText( 3, tr( comment ) );
2049 item->setText( 4, tr( field5 ) ); 1985 item->setText( 4, tr( field5 ) );
2050 item->setText( 5, tr( field6 ) ); 1986 item->setText( 5, tr( field6 ) );
2051#endif 1987
2052 if (expandTree) 1988 if (expandTree)
2053 catI->setOpen( TRUE ); 1989 catI->setOpen( TRUE );
2054 1990
2055 Category *c1 = new Category(); 1991 Category *c1 = new Category();
2056 c1->setCategoryName(category); 1992 c1->setCategoryName(category);
2057 1993
2058 QString icon; 1994 QString icon;
2059 QString fullIconPath; 1995 QString fullIconPath;
2060 QPixmap *pix; 1996 QPixmap *pix;
2061// #ifndef WIN32 1997// #ifndef WIN32
2062 icon = conf->readEntry(APP_KEY+category); 1998 icon = conf->readEntry(APP_KEY+category);
2063// #endif 1999// #endif
2064 bool isIconAv = false; 2000 bool isIconAv = false;
2065 if (!icon.isEmpty() && !icon.isNull()) 2001 if (!icon.isEmpty() && !icon.isNull())
2066 { 2002 {
2067 // build the full path 2003 // build the full path
2068 fullIconPath = iconPath + icon; 2004 fullIconPath = iconPath + icon;
2069 pix = new QPixmap (fullIconPath); 2005 pix = new QPixmap (fullIconPath);
2070 if (pix) 2006 if (pix)
2071 { 2007 {
2072 QImage img = pix->convertToImage(); 2008 QImage img = pix->convertToImage();
2073 pix->convertFromImage(img.smoothScale(14,14)); 2009 pix->convertFromImage(img.smoothScale(14,14));
2074 c1->setIconName (icon); 2010 c1->setIconName (icon);
2075 c1->setIcon (*pix); 2011 c1->setIcon (*pix);
2076 isIconAv = true; 2012 isIconAv = true;
2077 } 2013 }
2078 } 2014 }
2079 if (!isIconAv) 2015 if (!isIconAv)
2080 { 2016 {
2081 c1->setIcon (*getPredefinedIcon(category)); 2017 c1->setIcon (*getPredefinedIcon(category));
2082 } 2018 }
2083 2019
2084 c1->setListItem (catI); 2020 c1->setListItem (catI);
2085 c1->initListItem(); 2021 c1->initListItem();
2086 categories.insert (c1->getCategoryName(), c1); 2022 categories.insert (c1->getCategoryName(), c1);
2087 numberOfEntries++; 2023 numberOfEntries++;
2088 } 2024 }
2089 2025
2090 for (int count = 0; count < FIELD_SIZE; count++) { 2026 for (int count = 0; count < FIELD_SIZE; count++) {
2091 free(entry[count]); 2027 free(entry[count]);
2092 } 2028 }
2093 retval = loadEntry(entry); 2029 retval = loadEntry(entry);
2094 if (retval == 2) { 2030 if (retval == 2) {
2095 // m_parent->slotStatusHelpMsg("Last entry loaded"); 2031 // m_parent->slotStatusHelpMsg("Last entry loaded");
2096 } 2032 }
2097 } // end while 2033 } // end while
2098 2034
2099 if (numberOfEntries == 0) 2035 if (numberOfEntries == 0)
2100 { 2036 {
2101 2037
2102 switch( QMessageBox::warning( this, tr("ZSafe"), 2038 switch( QMessageBox::warning( this, tr("ZSafe"),
2103 tr("Empty document or\nwrong password.\nContinue?"), 2039 tr("Empty document or\nwrong password.\nContinue?"),
2104 tr("&No"), tr("&Yes."), 2040 tr("&No"), tr("&Yes."),
2105 0 2041 0
2106 ) ) { 2042 ) ) {
2107 case 0: // No 2043 case 0: // No
2108 retval = loadFinalize(); 2044 retval = loadFinalize();
2109 exitZs (1); 2045 exitZs (1);
2110 break; 2046 break;
2111 case 1: // Yes 2047 case 1: // Yes
2112 break; 2048 break;
2113 } 2049 }
2114 } 2050 }
2115 2051
2116 retval = loadFinalize(); 2052 retval = loadFinalize();
2117 2053
2118 return true; 2054 return true;
2119} 2055}
2120 2056
2121int ZSafe::loadInit(const char* _filename, const char *password) 2057int ZSafe::loadInit(const char* _filename, const char *password)
2122{ 2058{
2123 unsigned int j = 0; 2059 unsigned int j = 0;
2124 unsigned int keylength=0; 2060 unsigned int keylength=0;
2125 int count=0, count2=0, count3=0; 2061 int count=0, count2=0, count3=0;
2126 unsigned char charbuf[8]; 2062 unsigned char charbuf[8];
2127 unsigned short ciphertext[4]; 2063 unsigned short ciphertext[4];
2128 char key[128]; 2064 char key[128];
2129 Krc2* krc2 = new Krc2(); 2065 Krc2* krc2 = new Krc2();
2130 2066
2131 fd = fopen (_filename, "rb"); 2067 fd = fopen (_filename, "rb");
2132 2068
2133 QFileInfo f (_filename); 2069 QFileInfo f (_filename);
2134 load_buffer_length = f.size(); 2070 load_buffer_length = f.size();
2135 load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2; 2071 load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2;
2136 2072
2137 if (fd == NULL) 2073 if (fd == NULL)
2138 return PWERR_OPEN; 2074 return PWERR_OPEN;
2139 2075
2140 buffer = (char *)malloc(load_buffer_length); 2076 buffer = (char *)malloc(load_buffer_length);
2141 for (j = 0; password[j] != '\0'; j++) { 2077 for (j = 0; password[j] != '\0'; j++) {
2142 key[j] = password[j]; 2078 key[j] = password[j];
2143 } 2079 }
2144 keylength = j; 2080 keylength = j;
2145 krc2->rc2_expandkey (key, keylength, 128); 2081 krc2->rc2_expandkey (key, keylength, 128);
2146 2082
2147#ifndef WIN32 2083#ifndef WIN32
@@ -3210,199 +3146,195 @@ void ZSafe::editCategory()
3210 d.setFilter( QDir::Files); 3146 d.setFilter( QDir::Files);
3211 3147
3212 const QFileInfoList *list = d.entryInfoList(); 3148 const QFileInfoList *list = d.entryInfoList();
3213 int i=0; 3149 int i=0;
3214 QFileInfoListIterator it( *list ); // create list iterator 3150 QFileInfoListIterator it( *list ); // create list iterator
3215 QFileInfo *fi; // pointer for traversing 3151 QFileInfo *fi; // pointer for traversing
3216 if (icon.isEmpty() || icon.isNull()) 3152 if (icon.isEmpty() || icon.isNull())
3217 { 3153 {
3218 dialog->IconField->setCurrentItem(0); 3154 dialog->IconField->setCurrentItem(0);
3219 } 3155 }
3220 else 3156 else
3221 { 3157 {
3222 3158
3223 while ( (fi=it.current()) ) 3159 while ( (fi=it.current()) )
3224 { // for each file... 3160 { // for each file...
3225 QString fileName = fi->fileName(); 3161 QString fileName = fi->fileName();
3226 if(fileName.right(4) == ".png") 3162 if(fileName.right(4) == ".png")
3227 { 3163 {
3228 fileName = fileName.mid(0,fileName.length()-4); 3164 fileName = fileName.mid(0,fileName.length()-4);
3229 3165
3230 3166
3231 if(fileName+".png"==icon) 3167 if(fileName+".png"==icon)
3232 { 3168 {
3233 dialog->IconField->setCurrentItem(i+1); 3169 dialog->IconField->setCurrentItem(i+1);
3234 break; 3170 break;
3235 } 3171 }
3236 ++i; 3172 ++i;
3237 } 3173 }
3238 ++it; 3174 ++it;
3239 } 3175 }
3240 } 3176 }
3241 } 3177 }
3242 3178
3243 // dialog->show(); 3179 // dialog->show();
3244#ifndef DESKTOP 3180#ifndef DESKTOP
3245 // dialog->move (20, 100); 3181 // dialog->move (20, 100);
3246#endif 3182#endif
3247 DialogCode result = (DialogCode) dialog->exec(); 3183 DialogCode result = (DialogCode) dialog->exec();
3248#ifdef DESKTOP 3184#ifdef DESKTOP
3249 result = Accepted; 3185 result = Accepted;
3250#endif 3186#endif
3251 3187
3252 QString fullIconPath; 3188 QString fullIconPath;
3253 QPixmap *pix; 3189 QPixmap *pix;
3254 if (result == Accepted) 3190 if (result == Accepted)
3255 { 3191 {
3256 modified = true; 3192 modified = true;
3257 if (category != dialog->CategoryField->currentText()) 3193 if (category != dialog->CategoryField->currentText())
3258 { 3194 {
3259 categories.remove (category); 3195 categories.remove (category);
3260// #ifndef WIN32 3196// #ifndef WIN32
3261 conf->removeEntry(category); 3197 conf->removeEntry(category);
3262// #endif 3198// #endif
3263 saveConf(); 3199 saveConf();
3264 } 3200 }
3265 3201
3266 category = dialog->CategoryField->currentText(); 3202 category = dialog->CategoryField->currentText();
3267 icon = dialog->IconField->currentText()+".png"; 3203 icon = dialog->IconField->currentText()+".png";
3268 3204
3269 if (cat) 3205 if (cat)
3270 { 3206 {
3271 qWarning("Category found"); 3207 qWarning("Category found");
3272 3208
3273 // if (!icon.isEmpty() && !icon.isNull()) 3209 // if (!icon.isEmpty() && !icon.isNull())
3274 if (icon != "predefined.png") 3210 if (icon != "predefined.png")
3275 { 3211 {
3276 // build the full path 3212 // build the full path
3277 fullIconPath = iconPath + icon; 3213 fullIconPath = iconPath + icon;
3278 pix = new QPixmap (fullIconPath); 3214 pix = new QPixmap (fullIconPath);
3279 if (pix) 3215 if (pix)
3280 { 3216 {
3281 // save the full pixmap name into the config file 3217 // save the full pixmap name into the config file
3282// #ifndef WIN32 3218// #ifndef WIN32
3283 conf->writeEntry(APP_KEY+category, icon); 3219 conf->writeEntry(APP_KEY+category, icon);
3284// #endif 3220// #endif
3285 saveConf(); 3221 saveConf();
3286 QImage img = pix->convertToImage(); 3222 QImage img = pix->convertToImage();
3287 pix->convertFromImage(img.smoothScale(14,14)); 3223 pix->convertFromImage(img.smoothScale(14,14));
3288 cat->setIconName (icon); 3224 cat->setIconName (icon);
3289 cat->setIcon (*pix); 3225 cat->setIcon (*pix);
3290 } 3226 }
3291 } 3227 }
3292 else 3228 else
3293 { 3229 {
3294// #ifndef WIN32 3230// #ifndef WIN32
3295 conf->removeEntry (category); 3231 conf->removeEntry (category);
3296// #endif 3232// #endif
3297 saveConf(); 3233 saveConf();
3298 cat->setIcon (*getPredefinedIcon(category)); 3234 cat->setIcon (*getPredefinedIcon(category));
3299 } 3235 }
3300 3236
3301 // change the category name of the selected category 3237 // change the category name of the selected category
3302 QListViewItem *catItem = cat->getListItem(); 3238 QListViewItem *catItem = cat->getListItem();
3303 if (catItem) 3239 if (catItem)
3304 { 3240 {
3305 qWarning (category); 3241 qWarning (category);
3306#ifdef JPATCH_HDE
3307 catItem->setText( 0, category );
3308 cat->setCategoryName (category);
3309#else
3310 catItem->setText( 0, tr( category ) ); 3242 catItem->setText( 0, tr( category ) );
3311 cat->setCategoryName (tr(category)); 3243 cat->setCategoryName (tr(category));
3312#endif 3244
3313 cat->initListItem(); 3245 cat->initListItem();
3314 categories.insert (category, cat); 3246 categories.insert (category, cat);
3315 } 3247 }
3316 } 3248 }
3317 saveCategoryDialogFields(dialog); 3249 saveCategoryDialogFields(dialog);
3318 } 3250 }
3319 else 3251 else
3320 { 3252 {
3321 // delete dialog; 3253 // delete dialog;
3322 dialog->hide(); 3254 dialog->hide();
3323 return; 3255 return;
3324 } 3256 }
3325 3257
3326 } 3258 }
3327} 3259}
3328 3260
3329void ZSafe::cutItem() 3261void ZSafe::cutItem()
3330{ 3262{
3331 if (!selectedItem) 3263 if (!selectedItem)
3332 return; 3264 return;
3333 if (!isCategory(selectedItem)) 3265 if (!isCategory(selectedItem))
3334 { 3266 {
3335 IsCut = true; 3267 IsCut = true;
3336 copiedItem = selectedItem; 3268 copiedItem = selectedItem;
3337 } 3269 }
3338} 3270}
3339 3271
3340void ZSafe::copyItem() 3272void ZSafe::copyItem()
3341{ 3273{
3342 if (!selectedItem) 3274 if (!selectedItem)
3343 return; 3275 return;
3344 if (!isCategory(selectedItem)) 3276 if (!isCategory(selectedItem))
3345 { 3277 {
3346 IsCopy = true; 3278 IsCopy = true;
3347 copiedItem = selectedItem; 3279 copiedItem = selectedItem;
3348 } 3280 }
3349} 3281}
3350 3282
3351// paste item into category 3283// paste item into category
3352void ZSafe::pasteItem() 3284void ZSafe::pasteItem()
3353{ 3285{
3354 if (!selectedItem) 3286 if (!selectedItem)
3355 return; 3287 return;
3356 if (isCategory(selectedItem)) 3288 if (isCategory(selectedItem))
3357 { 3289 {
3358 modified = true; 3290 modified = true;
3359 if (IsCut) 3291 if (IsCut)
3360 { 3292 {
3361 if (copiedItem) 3293 if (copiedItem)
3362 { 3294 {
3363 // add the new item 3295 // add the new item
3364 QListViewItem *i = new ShadedListItem (0, selectedItem); 3296 QListViewItem *i = new ShadedListItem (0, selectedItem);
3365 // i->setOpen (TRUE); 3297 // i->setOpen (TRUE);
3366 i->setText (0, copiedItem->text(0)); 3298 i->setText (0, copiedItem->text(0));
3367 i->setText (1, copiedItem->text(1)); 3299 i->setText (1, copiedItem->text(1));
3368 i->setText (2, copiedItem->text(2)); 3300 i->setText (2, copiedItem->text(2));
3369 i->setText (3, copiedItem->text(3)); 3301 i->setText (3, copiedItem->text(3));
3370 i->setText (4, copiedItem->text(4)); 3302 i->setText (4, copiedItem->text(4));
3371 i->setText (5, copiedItem->text(5)); 3303 i->setText (5, copiedItem->text(5));
3372 selectedItem->setOpen( TRUE ); 3304 selectedItem->setOpen( TRUE );
3373 3305
3374 // remove the cutted item 3306 // remove the cutted item
3375 copiedItem->parent()->takeItem(copiedItem); 3307 copiedItem->parent()->takeItem(copiedItem);
3376 selectedItem = NULL; 3308 selectedItem = NULL;
3377 } 3309 }
3378 } 3310 }
3379 else if (IsCopy) 3311 else if (IsCopy)
3380 { 3312 {
3381 if (copiedItem) 3313 if (copiedItem)
3382 { 3314 {
3383 // add the new item 3315 // add the new item
3384 QListViewItem *i = new ShadedListItem (0, selectedItem); 3316 QListViewItem *i = new ShadedListItem (0, selectedItem);
3385 // i->setOpen (TRUE); 3317 // i->setOpen (TRUE);
3386 i->setText (0, copiedItem->text(0)); 3318 i->setText (0, copiedItem->text(0));
3387 i->setText (1, copiedItem->text(1)); 3319 i->setText (1, copiedItem->text(1));
3388 i->setText (2, copiedItem->text(2)); 3320 i->setText (2, copiedItem->text(2));
3389 i->setText (3, copiedItem->text(3)); 3321 i->setText (3, copiedItem->text(3));
3390 i->setText (4, copiedItem->text(4)); 3322 i->setText (4, copiedItem->text(4));
3391 i->setText (5, copiedItem->text(5)); 3323 i->setText (5, copiedItem->text(5));
3392 selectedItem->setOpen( TRUE ); 3324 selectedItem->setOpen( TRUE );
3393 } 3325 }
3394 } 3326 }
3395 } 3327 }
3396 IsCut = false; 3328 IsCut = false;
3397 IsCopy = false; 3329 IsCopy = false;
3398} 3330}
3399 3331
3400void ZSafe::newDocument() 3332void ZSafe::newDocument()
3401{ 3333{
3402 3334
3403 // open the file dialog 3335 // open the file dialog
3404#ifndef DESKTOP 3336#ifndef DESKTOP
3405#ifndef NO_OPIE 3337#ifndef NO_OPIE
3406 QMap<QString, QStringList> mimeTypes; 3338 QMap<QString, QStringList> mimeTypes;
3407 mimeTypes.insert(tr("All"), QStringList() ); 3339 mimeTypes.insert(tr("All"), QStringList() );
3408 mimeTypes.insert(tr("ZSafe"), "zsafe/*" ); 3340 mimeTypes.insert(tr("ZSafe"), "zsafe/*" );