summaryrefslogtreecommitdiff
path: root/noncore/apps/zsafe/zsafe.cpp
Unidiff
Diffstat (limited to 'noncore/apps/zsafe/zsafe.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/zsafe/zsafe.cpp989
1 files changed, 496 insertions, 493 deletions
diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp
index bdd2aed..f43a206 100644
--- a/noncore/apps/zsafe/zsafe.cpp
+++ b/noncore/apps/zsafe/zsafe.cpp
@@ -28,7 +28,10 @@
28 28
29#ifndef DESKTOP 29#ifndef DESKTOP
30#ifndef NO_OPIE 30#ifndef NO_OPIE
31#include <opie/ofiledialog.h> 31#include <opie2/ofiledialog.h>
32
33using Opie::OFileDialog;
34using Opie::OFileSelector;
32#else 35#else
33#include "scqtfileedit.h" 36#include "scqtfileedit.h"
34#endif 37#endif
@@ -134,7 +137,7 @@ const QString APP_KEY="";
134#include "pics/zsafe/import.xpm" 137#include "pics/zsafe/import.xpm"
135#include "pics/zsafe/zsafe.xpm" 138#include "pics/zsafe/zsafe.xpm"
136 139
137static const char* const bank_cards_data[] = { 140static const char* const bank_cards_data[] = {
138"14 14 16 1", 141"14 14 16 1",
139". c None", 142". c None",
140"# c #000000", 143"# c #000000",
@@ -168,7 +171,7 @@ static const char* const bank_cards_data[] = {
168".............."}; 171".............."};
169 172
170 173
171static const char* const passwords_data[] = { 174static const char* const passwords_data[] = {
172"16 16 20 1", 175"16 16 20 1",
173". c None", 176". c None",
174"# c #000000", 177"# c #000000",
@@ -207,7 +210,7 @@ static const char* const passwords_data[] = {
207"#oopqpprprr#....", 210"#oopqpprprr#....",
208"############...."}; 211"############...."};
209 212
210static const char* const software_data[] = { 213static const char* const software_data[] = {
211"16 16 5 1", 214"16 16 5 1",
212". c None", 215". c None",
213"# c #000000", 216"# c #000000",
@@ -231,7 +234,7 @@ static const char* const software_data[] = {
231".##############.", 234".##############.",
232"................"}; 235"................"};
233 236
234static const char* const general_data[] = { 237static const char* const general_data[] = {
235"14 14 98 2", 238"14 14 98 2",
236"Qt c None", 239"Qt c None",
237".k c #000000", 240".k c #000000",
@@ -379,15 +382,15 @@ static const char* const general_data[] = {
379 } 382 }
380 383
381 384
382/* 385/*
383 * Constructs a ZSafe which is a child of 'parent', with the 386 * Constructs a ZSafe which is a child of 'parent', with the
384 * name 'name' and widget flags set to 'f' 387 * name 'name' and widget flags set to 'f'
385 * 388 *
386 * The dialog will by default be modeless, unless you set 'modal' to 389 * The dialog will by default be modeless, unless you set 'modal' to
387 * TRUE to construct a modal dialog. 390 * TRUE to construct a modal dialog.
388 */ 391 */
389ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl ) 392ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
390 : QDialog( parent, name, modal, fl ), 393 : QDialog( parent, name, modal, fl ),
391 Edit(0l), Delete(0l), Find(0l), New(0l), ListView(0l) 394 Edit(0l), Delete(0l), Find(0l), New(0l), ListView(0l)
392{ 395{
393 IsCut = false; 396 IsCut = false;
@@ -409,7 +412,7 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
409#else 412#else
410 if (qpedir.isEmpty()) 413 if (qpedir.isEmpty())
411 iconPath = "/home/QtPalmtop/pics/"; 414 iconPath = "/home/QtPalmtop/pics/";
412 else 415 else
413 iconPath = qpedir + "/pics/"; 416 iconPath = qpedir + "/pics/";
414#endif 417#endif
415 418
@@ -458,13 +461,13 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
458 QPixmap software( ( const char** ) software_data ); 461 QPixmap software( ( const char** ) software_data );
459 QPixmap general( ( const char** ) general_data ); 462 QPixmap general( ( const char** ) general_data );
460 if ( !name ) 463 if ( !name )
461 setName( "ZSafe" ); 464 setName( "ZSafe" );
462 465
463#ifdef DESKTOP 466#ifdef DESKTOP
464#ifdef WIN32 467#ifdef WIN32
465 setGeometry(100, 150, DeskW, DeskH-30 ); 468 setGeometry(100, 150, DeskW, DeskH-30 );
466#else 469#else
467 resize( DeskW, DeskH-30 ); 470 resize( DeskW, DeskH-30 );
468#endif 471#endif
469 472
470#else 473#else
@@ -498,7 +501,7 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
498// #ifndef WIN32 501// #ifndef WIN32
499 // QString d1("Documents/application"); 502 // QString d1("Documents/application");
500// #else 503// #else
501 QString d1(QDir::homeDirPath() + "/Documents/application"); 504 QString d1(QDir::homeDirPath() + "/Documents/application");
502// #endif 505// #endif
503 QDir pd1(d1); 506 QDir pd1(d1);
504 if (!pd1.exists()) 507 if (!pd1.exists())
@@ -515,7 +518,7 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
515 exitZs (1); 518 exitZs (1);
516 } 519 }
517 } 520 }
518 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe"); 521 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe");
519 QDir pd2(d2); 522 QDir pd2(d2);
520 if (!pd2.exists()) 523 if (!pd2.exists())
521 { 524 {
@@ -531,7 +534,7 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
531 exitZs (1); 534 exitZs (1);
532 } 535 }
533 } 536 }
534 537
535 538
536 // set the default filename 539 // set the default filename
537 filename=d2 + "/passwords.zsf"; 540 filename=d2 + "/passwords.zsf";
@@ -576,14 +579,14 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
576// #endif 579// #endif
577 580
578 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) ); 581 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) );
579 file->insertItem( save_img, tr("S&ave document with new Password"), this, 582 file->insertItem( save_img, tr("S&ave document with new Password"), this,
580 SLOT(saveDocumentWithPwd()) ); 583 SLOT(saveDocumentWithPwd()) );
581 file->insertSeparator(); 584 file->insertSeparator();
582 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) ); 585 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) );
583 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) ); 586 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) );
584 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) ); 587 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) );
585 file->insertSeparator(); 588 file->insertSeparator();
586 file->insertItem( expand_img, tr("&Open entries expanded"), this, 589 file->insertItem( expand_img, tr("&Open entries expanded"), this,
587 SLOT(setExpandFlag()), 0, 'o'); 590 SLOT(setExpandFlag()), 0, 'o');
588 file->setItemChecked('o', expandTree); 591 file->setItemChecked('o', expandTree);
589 file->insertSeparator(); 592 file->insertSeparator();
@@ -614,26 +617,26 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
614 // toolbar icons 617 // toolbar icons
615 618
616 New = new QToolButton( menu, "New" ); 619 New = new QToolButton( menu, "New" );
617 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) ); 620 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) );
618 New->setMouseTracking( TRUE ); 621 New->setMouseTracking( TRUE );
619 New->setText( tr( "" ) ); 622 New->setText( tr( "" ) );
620 New->setPixmap( new_img ); 623 New->setPixmap( new_img );
621 QToolTip::add( New, tr( "New entry" ) ); 624 QToolTip::add( New, tr( "New entry" ) );
622 625
623 Edit = new QToolButton( menu, "Edit" ); 626 Edit = new QToolButton( menu, "Edit" );
624 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) ); 627 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) );
625 Edit->setText( tr( "" ) ); 628 Edit->setText( tr( "" ) );
626 Edit->setPixmap( edit_img ); 629 Edit->setPixmap( edit_img );
627 QToolTip::add( Edit, tr( "Edit category or entry" ) ); 630 QToolTip::add( Edit, tr( "Edit category or entry" ) );
628 631
629 Delete = new QToolButton( menu, "Delete" ); 632 Delete = new QToolButton( menu, "Delete" );
630 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) ); 633 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) );
631 Delete->setText( tr( "" ) ); 634 Delete->setText( tr( "" ) );
632 Delete->setPixmap( trash_img ); 635 Delete->setPixmap( trash_img );
633 QToolTip::add( Delete, tr( "Delete category or entry" ) ); 636 QToolTip::add( Delete, tr( "Delete category or entry" ) );
634 637
635 Find = new QToolButton( menu, "Find" ); 638 Find = new QToolButton( menu, "Find" );
636 Find->setGeometry( QRect( DeskW-24, 2, 20, 20 ) ); 639 Find->setGeometry( QRect( DeskW-24, 2, 20, 20 ) );
637 Find->setText( tr( "" ) ); 640 Find->setText( tr( "" ) );
638 Find->setPixmap( find_img ); 641 Find->setPixmap( find_img );
639 QToolTip::add( Find, tr( "Find entry" ) ); 642 QToolTip::add( Find, tr( "Find entry" ) );
@@ -658,11 +661,11 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
658 661
659#ifdef DESKTOP 662#ifdef DESKTOP
660 ListView->setResizePolicy(QScrollView::AutoOneFit); 663 ListView->setResizePolicy(QScrollView::AutoOneFit);
661 // ListView->setGeometry( QRect( 0, 22, this->width(), this->height() - 30 ) ); 664 // ListView->setGeometry( QRect( 0, 22, this->width(), this->height() - 30 ) );
662#else 665#else
663 ListView->setResizePolicy(QScrollView::AutoOneFit); 666 ListView->setResizePolicy(QScrollView::AutoOneFit);
664 // ListView->setGeometry( QRect( 0, 22, 667 // ListView->setGeometry( QRect( 0, 22,
665 // this->width(), this->height() - 30 ) ); 668 // this->width(), this->height() - 30 ) );
666 // ListView->setMaximumSize( QSize( 440, 290 ) ); 669 // ListView->setMaximumSize( QSize( 440, 290 ) );
667#endif 670#endif
668 ListView->setVScrollBarMode( QListView::Auto ); 671 ListView->setVScrollBarMode( QListView::Auto );
@@ -701,7 +704,7 @@ const QColor *ZSafe::evenRowColor = &Qt::white;
701// const QColor *ZSafe::oddRowColor = &Qt::lightGray; 704// const QColor *ZSafe::oddRowColor = &Qt::lightGray;
702const QColor *ZSafe::oddRowColor = new QColor(216,240,255); 705const QColor *ZSafe::oddRowColor = new QColor(216,240,255);
703 706
704/* 707/*
705 * Destroys the object and frees any allocated resources 708 * Destroys the object and frees any allocated resources
706 */ 709 */
707ZSafe::~ZSafe() 710ZSafe::~ZSafe()
@@ -725,7 +728,7 @@ void ZSafe::deletePwd()
725 { 728 {
726 switch( QMessageBox::information( this, tr("ZSafe"), 729 switch( QMessageBox::information( this, tr("ZSafe"),
727 tr("Do you want to delete?"), 730 tr("Do you want to delete?"),
728 tr("&Delete"), tr("D&on't Delete"), 731 tr("&Delete"), tr("D&on't Delete"),
729 0 // Enter == button 0 732 0 // Enter == button 0
730 ) ) { // Escape == button 2 733 ) ) { // Escape == button 2
731 case 0: // Delete clicked, Alt-S or Enter pressed. 734 case 0: // Delete clicked, Alt-S or Enter pressed.
@@ -754,9 +757,9 @@ void ZSafe::editPwd()
754 NewDialog *dialog = new NewDialog(this, tr("Edit Entry"), TRUE); 757 NewDialog *dialog = new NewDialog(this, tr("Edit Entry"), TRUE);
755#ifdef WIN32 758#ifdef WIN32
756 dialog->setCaption ("Qt " + tr("Edit Entry")); 759 dialog->setCaption ("Qt " + tr("Edit Entry"));
757 dialog->setGeometry(200, 250, 220, 310 ); 760 dialog->setGeometry(200, 250, 220, 310 );
758#endif 761#endif
759 762
760 // set the labels 763 // set the labels
761 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 764 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
762 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 765 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
@@ -785,24 +788,24 @@ void ZSafe::editPwd()
785 { 788 {
786 modified = true; 789 modified = true;
787 // edit the selected item 790 // edit the selected item
788 QString name = dialog->NameField->text(); 791 QString name = dialog->NameField->text();
789 selectedItem->setText (0, tr (name)); 792 selectedItem->setText (0, tr (name));
790 QString user = dialog->UsernameField->text(); 793 QString user = dialog->UsernameField->text();
791 selectedItem->setText (1, tr (user)); 794 selectedItem->setText (1, tr (user));
792 QString pwd = dialog->PasswordField->text(); 795 QString pwd = dialog->PasswordField->text();
793 selectedItem->setText (2, tr (pwd)); 796 selectedItem->setText (2, tr (pwd));
794 QString comment = dialog->CommentField->text(); 797 QString comment = dialog->CommentField->text();
795 comment.replace (QRegExp("\n"), "<br>"); 798 comment.replace (QRegExp("\n"), "<br>");
796 selectedItem->setText (3, tr (comment)); 799 selectedItem->setText (3, tr (comment));
797 QString f5 = dialog->Field5->text(); 800 QString f5 = dialog->Field5->text();
798 selectedItem->setText (4, tr (f5)); 801 selectedItem->setText (4, tr (f5));
799 QString f6 = dialog->Field6->text(); 802 QString f6 = dialog->Field6->text();
800 selectedItem->setText (5, tr (f6)); 803 selectedItem->setText (5, tr (f6));
801 } 804 }
802 805
803 delete dialog; 806 delete dialog;
804 } 807 }
805 else 808 else
806 { 809 {
807 editCategory(); 810 editCategory();
808 } 811 }
@@ -824,7 +827,7 @@ void ZSafe::newPwd()
824 NewDialog *dialog = new NewDialog(this, tr("New Entry"), TRUE); 827 NewDialog *dialog = new NewDialog(this, tr("New Entry"), TRUE);
825#ifdef WIN32 828#ifdef WIN32
826 dialog->setCaption ("Qt " + tr("New Entry")); 829 dialog->setCaption ("Qt " + tr("New Entry"));
827 dialog->setGeometry(200, 250, 220, 310 ); 830 dialog->setGeometry(200, 250, 220, 310 );
828#endif 831#endif
829 // set the labels 832 // set the labels
830 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 833 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
@@ -843,7 +846,7 @@ retype:
843 if (result == Accepted) 846 if (result == Accepted)
844 { 847 {
845 848
846 QString name = dialog->NameField->text(); 849 QString name = dialog->NameField->text();
847 if (cat == name) 850 if (cat == name)
848 { 851 {
849 QMessageBox::critical( 0, tr("ZSafe"), 852 QMessageBox::critical( 0, tr("ZSafe"),
@@ -857,16 +860,16 @@ retype:
857 i->setOpen (TRUE); 860 i->setOpen (TRUE);
858 861
859 i->setText (0, tr (name)); 862 i->setText (0, tr (name));
860 QString user = dialog->UsernameField->text(); 863 QString user = dialog->UsernameField->text();
861 i->setText (1, tr (user)); 864 i->setText (1, tr (user));
862 QString pwd = dialog->PasswordField->text(); 865 QString pwd = dialog->PasswordField->text();
863 i->setText (2, tr (pwd)); 866 i->setText (2, tr (pwd));
864 QString comment = dialog->CommentField->text(); 867 QString comment = dialog->CommentField->text();
865 comment.replace (QRegExp("\n"), "<br>"); 868 comment.replace (QRegExp("\n"), "<br>");
866 i->setText (3, tr (comment)); 869 i->setText (3, tr (comment));
867 QString f5 = dialog->Field5->text(); 870 QString f5 = dialog->Field5->text();
868 i->setText (4, tr (f5)); 871 i->setText (4, tr (f5));
869 QString f6 = dialog->Field6->text(); 872 QString f6 = dialog->Field6->text();
870 i->setText (5, tr (f6)); 873 i->setText (5, tr (f6));
871 } 874 }
872 875
@@ -952,7 +955,7 @@ void ZSafe::findPwd()
952 i = lastSearchedCategory; 955 i = lastSearchedCategory;
953 else 956 else
954 i = ListView->firstChild(); 957 i = ListView->firstChild();
955 for (; 958 for (;
956 i != NULL; 959 i != NULL;
957 i = i->nextSibling()) 960 i = i->nextSibling())
958 { 961 {
@@ -965,7 +968,7 @@ void ZSafe::findPwd()
965 si = lastSearchedItem; 968 si = lastSearchedItem;
966 else 969 else
967 si = i->firstChild(); 970 si = i->firstChild();
968 // for (si = i->firstChild(); 971 // for (si = i->firstChild();
969 for (; 972 for (;
970 si != NULL; 973 si != NULL;
971 si = si->nextSibling()) 974 si = si->nextSibling())
@@ -1018,9 +1021,9 @@ void ZSafe::findPwd()
1018 lastSearchedItem = NULL; 1021 lastSearchedItem = NULL;
1019 delete dialog; 1022 delete dialog;
1020 update(); 1023 update();
1021 QMessageBox::information( this, tr("ZSafe"), 1024 QMessageBox::information( this, tr("ZSafe"),
1022 tr("Entry not found"), tr("&OK"), 0); 1025 tr("Entry not found"), tr("&OK"), 0);
1023 1026
1024} 1027}
1025 1028
1026QString ZSafe::getFieldLabel (QListViewItem *_item, QString field, QString def) 1029QString ZSafe::getFieldLabel (QListViewItem *_item, QString field, QString def)
@@ -1076,7 +1079,7 @@ QString ZSafe::getFieldLabel (QString category, QString field, QString def)
1076#endif 1079#endif
1077#endif 1080#endif
1078// #ifndef WIN32 1081// #ifndef WIN32
1079 QString label = conf->readEntry(app_key+category+"-field"+field, 1082 QString label = conf->readEntry(app_key+category+"-field"+field,
1080 def); 1083 def);
1081// #else 1084// #else
1082 // QString label(def); 1085 // QString label(def);
@@ -1093,7 +1096,7 @@ void ZSafe::showInfo( QListViewItem *_item)
1093 return; 1096 return;
1094 if (selectedItem != NULL) 1097 if (selectedItem != NULL)
1095 selectedItem->setSelected(FALSE); 1098 selectedItem->setSelected(FALSE);
1096 1099
1097 selectedItem = _item; 1100 selectedItem = _item;
1098 selectedItem->setSelected(TRUE); 1101 selectedItem->setSelected(TRUE);
1099 1102
@@ -1238,14 +1241,14 @@ void ZSafe::removeAsciiFile()
1238 this, 1241 this,
1239 tr ("Remove text file")); 1242 tr ("Remove text file"));
1240#else 1243#else
1241 QString fn = ScQtFileEdit::getOpenFileName(this, 1244 QString fn = ScQtFileEdit::getOpenFileName(this,
1242 tr ("Remove text file"), 1245 tr ("Remove text file"),
1243 QDir::homeDirPath() + "/Documents/application/zsafe", 1246 QDir::homeDirPath() + "/Documents/application/zsafe",
1244 "*.txt"); 1247 "*.txt");
1245#endif 1248#endif
1246#else 1249#else
1247 QString fn = QFileDialog::getOpenFileName( 1250 QString fn = QFileDialog::getOpenFileName(
1248 QDir::homeDirPath() + "/Documents/application/zsafe", 1251 QDir::homeDirPath() + "/Documents/application/zsafe",
1249 "ZSafe (*.txt)", 1252 "ZSafe (*.txt)",
1250 this, 1253 this,
1251 "ZSafe File Dialog" 1254 "ZSafe File Dialog"
@@ -1255,7 +1258,7 @@ void ZSafe::removeAsciiFile()
1255 if (fn && fn.length() > 0 ) 1258 if (fn && fn.length() > 0 )
1256 { 1259 {
1257 QFile f( fn ); 1260 QFile f( fn );
1258 if ( !f.remove() ) 1261 if ( !f.remove() )
1259 { 1262 {
1260 qWarning( QString("Could not remove file %1").arg(fn), 1263 qWarning( QString("Could not remove file %1").arg(fn),
1261 2000 ); 1264 2000 );
@@ -1288,14 +1291,14 @@ void ZSafe::writeAllEntries()
1288 this, 1291 this,
1289 tr ("Export text file")); 1292 tr ("Export text file"));
1290#else 1293#else
1291 QString fn = ScQtFileEdit::getSaveAsFileName(this, 1294 QString fn = ScQtFileEdit::getSaveAsFileName(this,
1292 tr ("Export text file"), 1295 tr ("Export text file"),
1293 QDir::homeDirPath() + "/Documents/application/zsafe", 1296 QDir::homeDirPath() + "/Documents/application/zsafe",
1294 "*.txt"); 1297 "*.txt");
1295#endif 1298#endif
1296#else 1299#else
1297 QString fn = QFileDialog::getSaveFileName( 1300 QString fn = QFileDialog::getSaveFileName(
1298 QDir::homeDirPath() + "/Documents/application/zsafe", 1301 QDir::homeDirPath() + "/Documents/application/zsafe",
1299 "ZSafe (*.txt)", 1302 "ZSafe (*.txt)",
1300 this, 1303 this,
1301 "ZSafe File Dialog" 1304 "ZSafe File Dialog"
@@ -1317,13 +1320,13 @@ void ZSafe::writeAllEntries()
1317 1320
1318 QListViewItem *i; 1321 QListViewItem *i;
1319 // step through all categories 1322 // step through all categories
1320 for (i = ListView->firstChild(); 1323 for (i = ListView->firstChild();
1321 i != NULL; 1324 i != NULL;
1322 i = i->nextSibling()) 1325 i = i->nextSibling())
1323 { 1326 {
1324 // step through all subitems 1327 // step through all subitems
1325 QListViewItem *si; 1328 QListViewItem *si;
1326 for (si = i->firstChild(); 1329 for (si = i->firstChild();
1327 si != NULL; 1330 si != NULL;
1328 si = si->nextSibling()) 1331 si = si->nextSibling())
1329 { 1332 {
@@ -1383,14 +1386,14 @@ void ZSafe::readAllEntries()
1383 this, 1386 this,
1384 tr ("Import text file")); 1387 tr ("Import text file"));
1385#else 1388#else
1386 QString fn = ScQtFileEdit::getOpenFileName(this, 1389 QString fn = ScQtFileEdit::getOpenFileName(this,
1387 tr ("Import text file"), 1390 tr ("Import text file"),
1388 QDir::homeDirPath() + "/Documents/application/zsafe", 1391 QDir::homeDirPath() + "/Documents/application/zsafe",
1389 "*.txt"); 1392 "*.txt");
1390#endif 1393#endif
1391#else 1394#else
1392 QString fn = QFileDialog::getOpenFileName( 1395 QString fn = QFileDialog::getOpenFileName(
1393 QDir::homeDirPath() + "/Documents/application/zsafe", 1396 QDir::homeDirPath() + "/Documents/application/zsafe",
1394 "ZSafe (*.txt)", 1397 "ZSafe (*.txt)",
1395 this, 1398 this,
1396 "ZSafe File Dialog" 1399 "ZSafe File Dialog"
@@ -1435,20 +1438,20 @@ void ZSafe::readAllEntries()
1435 qWarning ("ReadAllEntries(): "); 1438 qWarning ("ReadAllEntries(): ");
1436 1439
1437 QTextStream t(&f); 1440 QTextStream t(&f);
1438 while ( !t.eof() ) 1441 while ( !t.eof() )
1439 { 1442 {
1440 QString s = t.readLine(); 1443 QString s = t.readLine();
1441 s.replace (QRegExp("\";\""), "\"|\""); 1444 s.replace (QRegExp("\";\""), "\"|\"");
1442 // char buffer[1024]; 1445 // char buffer[1024];
1443#ifndef WIN32 1446#ifndef WIN32
1444 char buffer[s.length()+1]; 1447 char buffer[s.length()+1];
1445#else 1448#else
1446 char buffer[4048]; 1449 char buffer[4048];
1447#endif 1450#endif
1448 1451
1449 1452
1450 /* modify QString -> QCString::utf8 */ 1453 /* modify QString -> QCString::utf8 */
1451 1454
1452 strcpy (buffer, s.utf8()); 1455 strcpy (buffer, s.utf8());
1453 1456
1454 QString name; 1457 QString name;
@@ -1499,7 +1502,7 @@ void ZSafe::readAllEntries()
1499 field6.truncate(field6.length() -1); 1502 field6.truncate(field6.length() -1);
1500 break; 1503 break;
1501 } 1504 }
1502 idx++; 1505 idx++;
1503 } 1506 }
1504 1507
1505 Category *cat= categories.find (category); 1508 Category *cat= categories.find (category);
@@ -1593,13 +1596,13 @@ void ZSafe::writeAllEntries()
1593 1596
1594 QListViewItem *i; 1597 QListViewItem *i;
1595 // step through all categories 1598 // step through all categories
1596 for (i = ListView->firstChild(); 1599 for (i = ListView->firstChild();
1597 i != NULL; 1600 i != NULL;
1598 i = i->nextSibling()) 1601 i = i->nextSibling())
1599 { 1602 {
1600 // step through all subitems 1603 // step through all subitems
1601 QListViewItem *si; 1604 QListViewItem *si;
1602 for (si = i->firstChild(); 1605 for (si = i->firstChild();
1603 si != NULL; 1606 si != NULL;
1604 si = si->nextSibling()) 1607 si = si->nextSibling())
1605 { 1608 {
@@ -1670,14 +1673,14 @@ void ZSafe::readAllEntries()
1670 qWarning ("ReadAllEntries(): "); 1673 qWarning ("ReadAllEntries(): ");
1671 1674
1672 QTextStream t(&f); 1675 QTextStream t(&f);
1673 while ( !t.eof() ) 1676 while ( !t.eof() )
1674 { 1677 {
1675 QString s = t.readLine(); 1678 QString s = t.readLine();
1676 s.replace (QRegExp("\";\""), "\"|\""); 1679 s.replace (QRegExp("\";\""), "\"|\"");
1677 // char buffer[1024]; 1680 // char buffer[1024];
1678 int len=s.length()+1; 1681 int len=s.length()+1;
1679#ifdef WIN32 1682#ifdef WIN32
1680 char buffer[512]; 1683 char buffer[512];
1681#else 1684#else
1682 char buffer[len]; 1685 char buffer[len];
1683#endif 1686#endif
@@ -1719,7 +1722,7 @@ void ZSafe::readAllEntries()
1719 comment.truncate(comment.length() -1); 1722 comment.truncate(comment.length() -1);
1720 break; 1723 break;
1721 } 1724 }
1722 idx++; 1725 idx++;
1723 } 1726 }
1724 1727
1725 Category *cat= categories.find (category); 1728 Category *cat= categories.find (category);
@@ -1832,7 +1835,7 @@ bool ZSafe::openDocument(const char* _filename, const char* )
1832// #ifndef WIN32 1835// #ifndef WIN32
1833 int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1); 1836 int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1);
1834// #else 1837// #else
1835 // int validationFlag = 1; 1838 // int validationFlag = 1;
1836// #endif 1839// #endif
1837 1840
1838 int pwdOk = 0; 1841 int pwdOk = 0;
@@ -1843,9 +1846,9 @@ bool ZSafe::openDocument(const char* _filename, const char* )
1843 if (f.exists()) 1846 if (f.exists())
1844 { 1847 {
1845 // ask with a dialog for the password 1848 // ask with a dialog for the password
1846 if (m_password.isEmpty()) 1849 if (m_password.isEmpty())
1847 getDocPassword(tr("Enter Password")); 1850 getDocPassword(tr("Enter Password"));
1848 if (m_password.isEmpty() && validationFlag == 0) 1851 if (m_password.isEmpty() && validationFlag == 0)
1849 { 1852 {
1850 qWarning ("Wrong password"); 1853 qWarning ("Wrong password");
1851 QMessageBox::critical( 0, tr("ZSafe"), 1854 QMessageBox::critical( 0, tr("ZSafe"),
@@ -1853,12 +1856,12 @@ bool ZSafe::openDocument(const char* _filename, const char* )
1853 exitZs (1); 1856 exitZs (1);
1854 } 1857 }
1855 1858
1856 retval = loadInit(_filename, m_password); 1859 retval = loadInit(_filename, m_password);
1857 if (retval != PWERR_GOOD) 1860 if (retval != PWERR_GOOD)
1858 { 1861 {
1859 qWarning ("Error loading Document"); 1862 qWarning ("Error loading Document");
1860 return false; 1863 return false;
1861 } 1864 }
1862 } 1865 }
1863 else 1866 else
1864 { 1867 {
@@ -1879,7 +1882,7 @@ bool ZSafe::openDocument(const char* _filename, const char* )
1879 break; 1882 break;
1880 } 1883 }
1881 1884
1882 retval = loadEntry(entry); 1885 retval = loadEntry(entry);
1883 if (retval == 1 && 1886 if (retval == 1 &&
1884 !strcmp (entry[0], "ZSAFECATEGORY") && 1887 !strcmp (entry[0], "ZSAFECATEGORY") &&
1885 !strcmp (entry[1], "name") && 1888 !strcmp (entry[1], "name") &&
@@ -1887,23 +1890,23 @@ bool ZSafe::openDocument(const char* _filename, const char* )
1887 !strcmp (entry[3], "password") && 1890 !strcmp (entry[3], "password") &&
1888 !strcmp (entry[4], "comment") ) 1891 !strcmp (entry[4], "comment") )
1889 { 1892 {
1890 for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]); 1893 for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
1891 pwdOk = 1; 1894 pwdOk = 1;
1892 break; 1895 break;
1893 } 1896 }
1894 else 1897 else
1895 // for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]); 1898 // for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
1896 fclose (fd); 1899 fclose (fd);
1897 m_password = ""; 1900 m_password = "";
1898 1901
1899 if (i < numberOfTries - 1) 1902 if (i < numberOfTries - 1)
1900 { 1903 {
1901 switch( QMessageBox::warning( this, tr("ZSafe"), 1904 switch( QMessageBox::warning( this, tr("ZSafe"),
1902 tr("Wrong password.\nEnter again?"), 1905 tr("Wrong password.\nEnter again?"),
1903 tr("&Yes"), tr("&No."), 1906 tr("&Yes"), tr("&No."),
1904 0 1907 0
1905 ) ) 1908 ) )
1906 { 1909 {
1907 case 1: // No 1910 case 1: // No
1908 exitZs (1); 1911 exitZs (1);
1909 break; 1912 break;
@@ -1923,10 +1926,10 @@ bool ZSafe::openDocument(const char* _filename, const char* )
1923 } 1926 }
1924 1927
1925 1928
1926 retval = loadEntry(entry); 1929 retval = loadEntry(entry);
1927 1930
1928 int numberOfEntries=0; 1931 int numberOfEntries=0;
1929 while (retval == 1) { 1932 while (retval == 1) {
1930 1933
1931 QString category( QString::fromUtf8(entry[0]) ); 1934 QString category( QString::fromUtf8(entry[0]) );
1932 QString name( QString::fromUtf8(entry[1]) ); 1935 QString name( QString::fromUtf8(entry[1]) );
@@ -2008,157 +2011,157 @@ bool ZSafe::openDocument(const char* _filename, const char* )
2008 numberOfEntries++; 2011 numberOfEntries++;
2009 } 2012 }
2010 2013
2011 for (int count = 0; count < FIELD_SIZE; count++) { 2014 for (int count = 0; count < FIELD_SIZE; count++) {
2012 free(entry[count]); 2015 free(entry[count]);
2013 } 2016 }
2014 retval = loadEntry(entry); 2017 retval = loadEntry(entry);
2015 if (retval == 2) { 2018 if (retval == 2) {
2016 // m_parent->slotStatusHelpMsg("Last entry loaded"); 2019 // m_parent->slotStatusHelpMsg("Last entry loaded");
2017 } 2020 }
2018 } // end while 2021 } // end while
2019 2022
2020 if (numberOfEntries == 0) 2023 if (numberOfEntries == 0)
2021 { 2024 {
2022 2025
2023 switch( QMessageBox::warning( this, tr("ZSafe"), 2026 switch( QMessageBox::warning( this, tr("ZSafe"),
2024 tr("Empty document or\nwrong password.\nContinue?"), 2027 tr("Empty document or\nwrong password.\nContinue?"),
2025 tr("&No"), tr("&Yes."), 2028 tr("&No"), tr("&Yes."),
2026 0 2029 0
2027 ) ) { 2030 ) ) {
2028 case 0: // No 2031 case 0: // No
2029 retval = loadFinalize(); 2032 retval = loadFinalize();
2030 exitZs (1); 2033 exitZs (1);
2031 break; 2034 break;
2032 case 1: // Yes 2035 case 1: // Yes
2033 break; 2036 break;
2034 } 2037 }
2035 } 2038 }
2036 2039
2037 retval = loadFinalize(); 2040 retval = loadFinalize();
2038 2041
2039 return true; 2042 return true;
2040} 2043}
2041 2044
2042int ZSafe::loadInit(const char* _filename, const char *password) 2045int ZSafe::loadInit(const char* _filename, const char *password)
2043{ 2046{
2044 unsigned int j = 0; 2047 unsigned int j = 0;
2045 unsigned int keylength=0; 2048 unsigned int keylength=0;
2046 int count=0, count2=0, count3=0; 2049 int count=0, count2=0, count3=0;
2047 unsigned char charbuf[8]; 2050 unsigned char charbuf[8];
2048 unsigned short ciphertext[4]; 2051 unsigned short ciphertext[4];
2049 char key[128]; 2052 char key[128];
2050 Krc2* krc2 = new Krc2(); 2053 Krc2* krc2 = new Krc2();
2051 2054
2052 fd = fopen (_filename, "rb"); 2055 fd = fopen (_filename, "rb");
2053 2056
2054 QFileInfo f (_filename); 2057 QFileInfo f (_filename);
2055 load_buffer_length = f.size(); 2058 load_buffer_length = f.size();
2056 load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2; 2059 load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2;
2057 2060
2058 if (fd == NULL) 2061 if (fd == NULL)
2059 return PWERR_OPEN; 2062 return PWERR_OPEN;
2060 2063
2061 buffer = (char *)malloc(load_buffer_length); 2064 buffer = (char *)malloc(load_buffer_length);
2062 for (j = 0; password[j] != '\0'; j++) { 2065 for (j = 0; password[j] != '\0'; j++) {
2063 key[j] = password[j]; 2066 key[j] = password[j];
2064 } 2067 }
2065 keylength = j; 2068 keylength = j;
2066 krc2->rc2_expandkey (key, keylength, 128); 2069 krc2->rc2_expandkey (key, keylength, 128);
2067 2070
2068#ifndef WIN32 2071#ifndef WIN32
2069 size = read(fileno (fd), (unsigned char *) (charbuf + count), 8); 2072 size = read(fileno (fd), (unsigned char *) (charbuf + count), 8);
2070#else 2073#else
2071 printf ("LoadInit() read1"); 2074 printf ("LoadInit() read1");
2072 size = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd); 2075 size = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd);
2073#endif 2076#endif
2074 2077
2075 if (size < 8) 2078 if (size < 8)
2076 return PWERR_DATA; 2079 return PWERR_DATA;
2077 2080
2078 for (count = 0; count < 4; count++) { 2081 for (count = 0; count < 4; count++) {
2079 count2 = count << 1; 2082 count2 = count << 1;
2080 iv[count] = charbuf[count2] << 8; 2083 iv[count] = charbuf[count2] << 8;
2081 iv[count] += charbuf[count2 + 1]; 2084 iv[count] += charbuf[count2 + 1];
2082 } 2085 }
2083 2086
2084 size = 0; 2087 size = 0;
2085 bufferIndex = 0; 2088 bufferIndex = 0;
2086#ifndef WIN32 2089#ifndef WIN32
2087 while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) { 2090 while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) {
2088 while (count < 8) { 2091 while (count < 8) {
2089 count2 = read (fileno (fd), (unsigned char *) (charbuf + count), 8); 2092 count2 = read (fileno (fd), (unsigned char *) (charbuf + count), 8);
2090#else 2093#else
2091 printf ("LoadInit() read2"); 2094 printf ("LoadInit() read2");
2092 while ((count = fread ((unsigned char *) (charbuf), sizeof(unsigned char), 8, fd)) > 0) { 2095 while ((count = fread ((unsigned char *) (charbuf), sizeof(unsigned char), 8, fd)) > 0) {
2093 while (count < 8) { 2096 while (count < 8) {
2094 count2 = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd); 2097 count2 = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd);
2095#endif 2098#endif
2096 if (count2 == 0) { 2099 if (count2 == 0) {
2097 return PWERR_DATA; 2100 return PWERR_DATA;
2098 } 2101 }
2099 count += count2; 2102 count += count2;
2100 } /* while (count < 8) */ 2103 } /* while (count < 8) */
2101 2104
2102 size += 8; 2105 size += 8;
2103 for (count2 = 0; count2 < 8; count2 += 2) { 2106 for (count2 = 0; count2 < 8; count2 += 2) {
2104 count3 = count2 >> 1; 2107 count3 = count2 >> 1;
2105 ciphertext[count3] = charbuf[count2] << 8; 2108 ciphertext[count3] = charbuf[count2] << 8;
2106 ciphertext[count3] += charbuf[count2 + 1]; 2109 ciphertext[count3] += charbuf[count2 + 1];
2107 2110
2108 plaintext[count3] = ciphertext[count3] ^ iv[count3]; 2111 plaintext[count3] = ciphertext[count3] ^ iv[count3];
2109 iv[count3] = plaintext[count3]; 2112 iv[count3] = plaintext[count3];
2110 } /* for (count2) */ 2113 } /* for (count2) */
2111 2114
2112 krc2->rc2_decrypt (plaintext); 2115 krc2->rc2_decrypt (plaintext);
2113 memcpy ((unsigned char *) (buffer + bufferIndex), plaintext, 8); 2116 memcpy ((unsigned char *) (buffer + bufferIndex), plaintext, 8);
2114 bufferIndex += 8; 2117 bufferIndex += 8;
2115 buffer[bufferIndex + 1] = '\0'; 2118 buffer[bufferIndex + 1] = '\0';
2116 } /* while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) */ 2119 } /* while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) */
2117 size -= buffer[size - 1]; 2120 size -= buffer[size - 1];
2118 lastcount = 0; 2121 lastcount = 0;
2119 2122
2120 /* This will point to the starting index */ 2123 /* This will point to the starting index */
2121 bufferIndex = 0; 2124 bufferIndex = 0;
2122 return PWERR_GOOD; 2125 return PWERR_GOOD;
2123} 2126}
2124 2127
2125int ZSafe::loadEntry(char *entry[FIELD_SIZE]) 2128int ZSafe::loadEntry(char *entry[FIELD_SIZE])
2126{ 2129{
2127 /* Strip off PKCS 5 padding 2130 /* Strip off PKCS 5 padding
2128 * Should check to make sure it's good here 2131 * Should check to make sure it's good here
2129 */ 2132 */
2130 int count, count1=0; 2133 int count, count1=0;
2131 2134
2132 for (count = lastcount; count < size; count++) { 2135 for (count = lastcount; count < size; count++) {
2133 if ((unsigned char) (buffer[count]) == 255) { 2136 if ((unsigned char) (buffer[count]) == 255) {
2134 if (buffer[bufferIndex] == '\0') { 2137 if (buffer[bufferIndex] == '\0') {
2135 bufferIndex++; 2138 bufferIndex++;
2136 } 2139 }
2137 entry[count1] = (char *) malloc (count - bufferIndex + 1); 2140 entry[count1] = (char *) malloc (count - bufferIndex + 1);
2138 memcpy (entry[count1], (unsigned char *) (buffer + bufferIndex), count - bufferIndex); 2141 memcpy (entry[count1], (unsigned char *) (buffer + bufferIndex), count - bufferIndex);
2139 entry[count1][count - bufferIndex] = '\0'; 2142 entry[count1][count - bufferIndex] = '\0';
2140 count++; 2143 count++;
2141 bufferIndex = count; 2144 bufferIndex = count;
2142 count1++; 2145 count1++;
2143 if (count1 == FIELD_SIZE) { 2146 if (count1 == FIELD_SIZE) {
2144 lastcount = count; 2147 lastcount = count;
2145 return 1; 2148 return 1;
2146 } 2149 }
2147 } /* if ((unsigned char) (buffer[count]) == 255) */ 2150 } /* if ((unsigned char) (buffer[count]) == 255) */
2148 } /* for (count = 0; count < size; count++) */ 2151 } /* for (count = 0; count < size; count++) */
2149 2152
2150 return 2; 2153 return 2;
2151} 2154}
2152 2155
2153int ZSafe::loadFinalize(void) 2156int ZSafe::loadFinalize(void)
2154{ 2157{
2155 fclose (fd); 2158 fclose (fd);
2156 if (buffer) free(buffer); 2159 if (buffer) free(buffer);
2157 return PWERR_GOOD; 2160 return PWERR_GOOD;
2158} 2161}
2159 2162
2160bool ZSafe::saveDocument(const char* _filename, 2163bool ZSafe::saveDocument(const char* _filename,
2161 bool withPwd, 2164 bool withPwd,
2162 const char* ) 2165 const char* )
2163{ 2166{
2164 if (filename.isEmpty()) 2167 if (filename.isEmpty())
@@ -2175,45 +2178,45 @@ bool ZSafe::saveDocument(const char* _filename,
2175 bool pwdOk = FALSE; 2178 bool pwdOk = FALSE;
2176 while (!pwdOk) 2179 while (!pwdOk)
2177 { 2180 {
2178 getDocPassword(tr("Enter Password")); 2181 getDocPassword(tr("Enter Password"));
2179 if (m_password.isEmpty()) 2182 if (m_password.isEmpty())
2180 { 2183 {
2181 2184
2182 QMessageBox::critical( 0, tr("ZSafe"), 2185 QMessageBox::critical( 0, tr("ZSafe"),
2183 tr("Password is empty.\nPlease enter again.")); 2186 tr("Password is empty.\nPlease enter again."));
2184 continue; 2187 continue;
2185 } 2188 }
2186 2189
2187 QString firstPasswd = m_password; 2190 QString firstPasswd = m_password;
2188 2191
2189 getDocPassword(tr("Reenter Password")); 2192 getDocPassword(tr("Reenter Password"));
2190 if (m_password.isEmpty()) 2193 if (m_password.isEmpty())
2191 { 2194 {
2192 QMessageBox::critical( 0, tr("ZSafe"), 2195 QMessageBox::critical( 0, tr("ZSafe"),
2193 tr("Password is empty.\nPlease enter again.")); 2196 tr("Password is empty.\nPlease enter again."));
2194 continue; 2197 continue;
2195 } 2198 }
2196 if (firstPasswd != m_password) 2199 if (firstPasswd != m_password)
2197 { 2200 {
2198 2201
2199 QMessageBox::critical( 0, tr("ZSafe"), 2202 QMessageBox::critical( 0, tr("ZSafe"),
2200 tr("Passwords must be identical.\nPlease enter again.")); 2203 tr("Passwords must be identical.\nPlease enter again."));
2201 continue; 2204 continue;
2202 } 2205 }
2203 pwdOk = TRUE; 2206 pwdOk = TRUE;
2204 modified = false; 2207 modified = false;
2205 } 2208 }
2206 } 2209 }
2207 else if (modified) 2210 else if (modified)
2208 { 2211 {
2209 QString fns(_filename); 2212 QString fns(_filename);
2210 fns = fns.right (fns.length() - fns.findRev ('/') - 1); 2213 fns = fns.right (fns.length() - fns.findRev ('/') - 1);
2211 switch( QMessageBox::information( this, tr("ZSafe"), 2214 switch( QMessageBox::information( this, tr("ZSafe"),
2212 tr("Do you want to save ") + fns + tr("\nbefore continuing?"), 2215 tr("Do you want to save ") + fns + tr("\nbefore continuing?"),
2213 tr("&Save"), 2216 tr("&Save"),
2214 tr("&Don't Save"), 2217 tr("&Don't Save"),
2215 0 // Enter == button 0 2218 0 // Enter == button 0
2216 ) ) 2219 ) )
2217 { // Escape == button 2 2220 { // Escape == button 2
2218 case 0: // Save clicked, Alt-S or Enter pressed. 2221 case 0: // Save clicked, Alt-S or Enter pressed.
2219 modified = false; 2222 modified = false;
@@ -2224,38 +2227,38 @@ bool ZSafe::saveDocument(const char* _filename,
2224 } 2227 }
2225 } 2228 }
2226 modified = false; 2229 modified = false;
2227 2230
2228 if (m_password.isEmpty()) 2231 if (m_password.isEmpty())
2229 return false; 2232 return false;
2230 2233
2231 int retval = saveInit(_filename, m_password); 2234 int retval = saveInit(_filename, m_password);
2232 // int retval = saveInit(_filename, "test"); 2235 // int retval = saveInit(_filename, "test");
2233 if (retval != PWERR_GOOD) { 2236 if (retval != PWERR_GOOD) {
2234 return false; 2237 return false;
2235 } 2238 }
2236 2239
2237 char* entry[FIELD_SIZE]; 2240 char* entry[FIELD_SIZE];
2238 2241
2239 // save the validation entry 2242 // save the validation entry
2240 { 2243 {
2241 int i=0; 2244 int i=0;
2242 entry[i] = (char*)malloc(strlen("ZSAFECATEGORY")+1); 2245 entry[i] = (char*)malloc(strlen("ZSAFECATEGORY")+1);
2243 strcpy(entry[i++], "ZSAFECATEGORY"); 2246 strcpy(entry[i++], "ZSAFECATEGORY");
2244 entry[i] = (char*)malloc(strlen("name")+1); 2247 entry[i] = (char*)malloc(strlen("name")+1);
2245 strcpy(entry[i++], "name"); 2248 strcpy(entry[i++], "name");
2246 entry[i] = (char*)malloc(strlen("username")+1); 2249 entry[i] = (char*)malloc(strlen("username")+1);
2247 strcpy(entry[i++], "username"); 2250 strcpy(entry[i++], "username");
2248 entry[i] = (char*)malloc(strlen("password")+1); 2251 entry[i] = (char*)malloc(strlen("password")+1);
2249 strcpy(entry[i++], "password"); 2252 strcpy(entry[i++], "password");
2250 entry[i] = (char*)malloc(strlen("comment")+1); 2253 entry[i] = (char*)malloc(strlen("comment")+1);
2251 strcpy(entry[i++], "comment"); 2254 strcpy(entry[i++], "comment");
2252 2255
2253 entry[i] = (char*)malloc(strlen("field5")+1); 2256 entry[i] = (char*)malloc(strlen("field5")+1);
2254 strcpy(entry[i++], "field5"); 2257 strcpy(entry[i++], "field5");
2255 entry[i] = (char*)malloc(strlen("field6")+1); 2258 entry[i] = (char*)malloc(strlen("field6")+1);
2256 strcpy(entry[i++], "field6"); 2259 strcpy(entry[i++], "field6");
2257 2260
2258 retval = saveEntry(entry); 2261 retval = saveEntry(entry);
2259 for (int z=0; z<i; z++) free(entry[z]); 2262 for (int z=0; z<i; z++) free(entry[z]);
2260 if (retval == PWERR_DATA) { 2263 if (retval == PWERR_DATA) {
2261 qWarning("1: Error writing file, contents not saved"); 2264 qWarning("1: Error writing file, contents not saved");
@@ -2296,7 +2299,7 @@ bool ZSafe::saveDocument(const char* _filename,
2296 entry[j] = (char*)malloc(strlen(si->text(5).utf8())+1); 2299 entry[j] = (char*)malloc(strlen(si->text(5).utf8())+1);
2297 strcpy(entry[j++], si->text(5).utf8()); 2300 strcpy(entry[j++], si->text(5).utf8());
2298 2301
2299 retval = saveEntry(entry); 2302 retval = saveEntry(entry);
2300 for (int z=0; z<j; z++) 2303 for (int z=0; z<j; z++)
2301 { 2304 {
2302 free(entry[z]); 2305 free(entry[z]);
@@ -2310,16 +2313,16 @@ bool ZSafe::saveDocument(const char* _filename,
2310 } 2313 }
2311 } 2314 }
2312 2315
2313 if (saveFinalize() == PWERR_DATA) { 2316 if (saveFinalize() == PWERR_DATA) {
2314 qWarning("2: Error writing file, contents not saved"); 2317 qWarning("2: Error writing file, contents not saved");
2315 return false; 2318 return false;
2316 } else { 2319 } else {
2317#ifndef DESKTOP 2320#ifndef DESKTOP
2318 Global::statusMessage (tr("Password file saved.")); 2321 Global::statusMessage (tr("Password file saved."));
2319#endif 2322#endif
2320 modified = false; 2323 modified = false;
2321 return true; 2324 return true;
2322 } 2325 }
2323} 2326}
2324 2327
2325PasswordForm *newPwdDialog; 2328PasswordForm *newPwdDialog;
@@ -2370,143 +2373,143 @@ qWarning ("getDocPassword");
2370 2373
2371int ZSafe::saveInit(const char *_filename, const char *password) 2374int ZSafe::saveInit(const char *_filename, const char *password)
2372{ 2375{
2373 char key[128]; 2376 char key[128];
2374 unsigned int j = 0; 2377 unsigned int j = 0;
2375 unsigned int keylength; 2378 unsigned int keylength;
2376 // int val; 2379 // int val;
2377 int count2; 2380 int count2;
2378 Krc2* krc2 = new Krc2(); 2381 Krc2* krc2 = new Krc2();
2379 2382
2380 /* first we should check the permissions of the filename */ 2383 /* first we should check the permissions of the filename */
2381/* 2384/*
2382 if (QFile::exists(_filename)) { 2385 if (QFile::exists(_filename)) {
2383 val = checkFile(_filename); 2386 val = checkFile(_filename);
2384 if (val != PWERR_GOOD) 2387 if (val != PWERR_GOOD)
2385 return val; 2388 return val;
2386 } else 2389 } else
2387 { 2390 {
2388 val = creat (_filename, (S_IRUSR | S_IWUSR)); 2391 val = creat (_filename, (S_IRUSR | S_IWUSR));
2389 if (val == -1) 2392 if (val == -1)
2390 return PWERR_OPEN; 2393 return PWERR_OPEN;
2391 else 2394 else
2392 close(val); 2395 close(val);
2393 } 2396 }
2394*/ 2397*/
2395 QFileInfo f (_filename); 2398 QFileInfo f (_filename);
2396 save_buffer_length = f.size(); 2399 save_buffer_length = f.size();
2397 save_buffer_length = ((save_buffer_length / 1024)+1) * 1024; 2400 save_buffer_length = ((save_buffer_length / 1024)+1) * 1024;
2398 2401
2399 fd = fopen (_filename, "wb"); 2402 fd = fopen (_filename, "wb");
2400 if (fd == NULL) 2403 if (fd == NULL)
2401 return PWERR_OPEN; 2404 return PWERR_OPEN;
2402 2405
2403 buffer = (char*)malloc(save_buffer_length); 2406 buffer = (char*)malloc(save_buffer_length);
2404 2407
2405 /* make the key ready */ 2408 /* make the key ready */
2406 for (j = 0; password[j] != '\0'; j++) { 2409 for (j = 0; password[j] != '\0'; j++) {
2407 key[j] = password[j]; 2410 key[j] = password[j];
2408 } 2411 }
2409 keylength = j; 2412 keylength = j;
2410 krc2->rc2_expandkey (key, keylength, 128); 2413 krc2->rc2_expandkey (key, keylength, 128);
2411 2414
2412 /* First, we make the IV */ 2415 /* First, we make the IV */
2413 for (count2 = 0; count2 < 4; count2++) { 2416 for (count2 = 0; count2 < 4; count2++) {
2414 iv[count2] = rand (); 2417 iv[count2] = rand ();
2415 putc ((unsigned char) (iv[count2] >> 8), fd); 2418 putc ((unsigned char) (iv[count2] >> 8), fd);
2416 putc ((unsigned char) (iv[count2] & 0xff), fd); 2419 putc ((unsigned char) (iv[count2] & 0xff), fd);
2417 } 2420 }
2418 2421
2419 bufferIndex = 0; 2422 bufferIndex = 0;
2420 return PWERR_GOOD; 2423 return PWERR_GOOD;
2421} 2424}
2422 2425
2423 2426
2424int ZSafe::saveEntry(char *entry[FIELD_SIZE]) 2427int ZSafe::saveEntry(char *entry[FIELD_SIZE])
2425{ 2428{
2426 char *text1; 2429 char *text1;
2427 int count2, count3; 2430 int count2, count3;
2428 unsigned short ciphertext[4]; 2431 unsigned short ciphertext[4];
2429 Krc2* krc2 = new Krc2(); 2432 Krc2* krc2 = new Krc2();
2430 2433
2431 buffer = (char*)memset(buffer, '\0', save_buffer_length); 2434 buffer = (char*)memset(buffer, '\0', save_buffer_length);
2432 2435
2433 for (count2 = 0; count2 < FIELD_SIZE; count2++) { 2436 for (count2 = 0; count2 < FIELD_SIZE; count2++) {
2434 text1 = entry[count2]; 2437 text1 = entry[count2];
2435 if (strlen (text1) == 0) { 2438 if (strlen (text1) == 0) {
2436 strncat(buffer, " ", strlen(" ")); 2439 strncat(buffer, " ", strlen(" "));
2437 } else { 2440 } else {
2438 strncat(buffer, text1, strlen(text1)); 2441 strncat(buffer, text1, strlen(text1));
2439 } 2442 }
2440 /* Use 255 as the marker. \n is too tough to test for */ 2443 /* Use 255 as the marker. \n is too tough to test for */
2441 buffer[strlen (buffer)] = 255; 2444 buffer[strlen (buffer)] = 255;
2442 } /*for (count2 = 0; count2 < 5; count2++)*/ 2445 } /*for (count2 = 0; count2 < 5; count2++)*/
2443 count2 = 0; 2446 count2 = 0;
2444 /* I'm using CBC mode and encrypting the data straight from top down. 2447 /* I'm using CBC mode and encrypting the data straight from top down.
2445 * At the bottom, encrypted, I will append an MD5 hash of the file, eventually. 2448 * At the bottom, encrypted, I will append an MD5 hash of the file, eventually.
2446 * PKCS 5 padding (explained at the code section 2449 * PKCS 5 padding (explained at the code section
2447 */ 2450 */
2448 while (count2 < (int)strlen (buffer)) { 2451 while (count2 < (int)strlen (buffer)) {
2449#ifndef WORDS_BIGENDIAN 2452#ifndef WORDS_BIGENDIAN
2450 plaintext[bufferIndex] = buffer[count2 + 1] << 8; 2453 plaintext[bufferIndex] = buffer[count2 + 1] << 8;
2451 plaintext[bufferIndex] += buffer[count2] & 0xff; 2454 plaintext[bufferIndex] += buffer[count2] & 0xff;
2452#endif 2455#endif
2453#ifdef WORDS_BIGENDIAN 2456#ifdef WORDS_BIGENDIAN
2454 plaintext[bufferIndex] = buffer[count2] << 8; 2457 plaintext[bufferIndex] = buffer[count2] << 8;
2455 plaintext[bufferIndex] += buffer[count2 + 1] & 0xff; 2458 plaintext[bufferIndex] += buffer[count2 + 1] & 0xff;
2456#endif 2459#endif
2457 bufferIndex++; 2460 bufferIndex++;
2458 if (bufferIndex == 4) { 2461 if (bufferIndex == 4) {
2459 krc2->rc2_encrypt (plaintext); 2462 krc2->rc2_encrypt (plaintext);
2460 2463
2461 for (count3 = 0; count3 < 4; count3++) { 2464 for (count3 = 0; count3 < 4; count3++) {
2462 ciphertext[count3] = iv[count3] ^ plaintext[count3]; 2465 ciphertext[count3] = iv[count3] ^ plaintext[count3];
2463 2466
2464 /* Now store the ciphertext as the iv */ 2467 /* Now store the ciphertext as the iv */
2465 iv[count3] = plaintext[count3]; 2468 iv[count3] = plaintext[count3];
2466 2469
2467 /* reset the buffer index */ 2470 /* reset the buffer index */
2468 bufferIndex = 0; 2471 bufferIndex = 0;
2469 if (putc ((unsigned char) (ciphertext[count3] >> 8), fd) == EOF) return PWERR_DATA; 2472 if (putc ((unsigned char) (ciphertext[count3] >> 8), fd) == EOF) return PWERR_DATA;
2470 if (putc ((unsigned char) (ciphertext[count3] & 0xff), fd) == EOF) return PWERR_DATA; 2473 if (putc ((unsigned char) (ciphertext[count3] & 0xff), fd) == EOF) return PWERR_DATA;
2471 } /*for (count3 = 0; count3 < 5; count3++)*/ 2474 } /*for (count3 = 0; count3 < 5; count3++)*/
2472 } /*if (bufferIndex == 5)*/ 2475 } /*if (bufferIndex == 5)*/
2473 /* increment a short, not a byte */ 2476 /* increment a short, not a byte */
2474 count2 += 2; 2477 count2 += 2;
2475 } /*while (count2 < strlen (buffer))*/ 2478 } /*while (count2 < strlen (buffer))*/
2476 int ret = PWERR_GOOD; 2479 int ret = PWERR_GOOD;
2477 return ret; 2480 return ret;
2478} 2481}
2479 2482
2480int ZSafe::saveFinalize(void) 2483int ZSafe::saveFinalize(void)
2481{ 2484{
2482 int count1, retval = PWERR_GOOD; 2485 int count1, retval = PWERR_GOOD;
2483 unsigned short ciphertext[4]; 2486 unsigned short ciphertext[4];
2484 Krc2* krc2 = new Krc2(); 2487 Krc2* krc2 = new Krc2();
2485 2488
2486 /* Tack on the PKCS 5 padding 2489 /* Tack on the PKCS 5 padding
2487 * How it works is we fill up the last n bytes with the value n 2490 * How it works is we fill up the last n bytes with the value n
2488 * 2491 *
2489 * So, if we have, say, 13 bytes, 8 of which are used, we have 5 left 2492 * So, if we have, say, 13 bytes, 8 of which are used, we have 5 left
2490 * over, leaving us 3 short, so we fill it in with 3's. 2493 * over, leaving us 3 short, so we fill it in with 3's.
2491 * 2494 *
2492 * If we come out even, we fill it with 8 8s 2495 * If we come out even, we fill it with 8 8s
2493 * 2496 *
2494 * um, except that in this instance we are using 4 shorts instead of 8 bytes. 2497 * um, except that in this instance we are using 4 shorts instead of 8 bytes.
2495 * so, half everything 2498 * so, half everything
2496 */ 2499 */
2497 for (count1 = bufferIndex; count1 < 4; count1++) { 2500 for (count1 = bufferIndex; count1 < 4; count1++) {
2498 plaintext[count1] = (4 - bufferIndex); 2501 plaintext[count1] = (4 - bufferIndex);
2499 } 2502 }
2500 krc2->rc2_encrypt (plaintext); 2503 krc2->rc2_encrypt (plaintext);
2501 for (count1 = 0; count1 < 4; count1++) { 2504 for (count1 = 0; count1 < 4; count1++) {
2502 ciphertext[count1] = iv[count1] ^ plaintext[count1]; 2505 ciphertext[count1] = iv[count1] ^ plaintext[count1];
2503 if (putc ((unsigned char) (ciphertext[count1] >> 8), fd) == EOF) retval = PWERR_DATA; 2506 if (putc ((unsigned char) (ciphertext[count1] >> 8), fd) == EOF) retval = PWERR_DATA;
2504 if (putc ((unsigned char) (ciphertext[count1] & 0xff), fd) == EOF) retval = PWERR_DATA; 2507 if (putc ((unsigned char) (ciphertext[count1] & 0xff), fd) == EOF) retval = PWERR_DATA;
2505 } 2508 }
2506 2509
2507 fclose (fd); 2510 fclose (fd);
2508 free(buffer); 2511 free(buffer);
2509 return retval; 2512 return retval;
2510} 2513}
2511 2514
2512void ZSafe::quitMe () 2515void ZSafe::quitMe ()
@@ -2517,11 +2520,11 @@ void ZSafe::quitMe ()
2517 { 2520 {
2518 switch( QMessageBox::information( this, tr("ZSafe"), 2521 switch( QMessageBox::information( this, tr("ZSafe"),
2519 tr("Do you want to save\nbefore exiting?"), 2522 tr("Do you want to save\nbefore exiting?"),
2520 tr("&Save"), 2523 tr("&Save"),
2521 tr("S&ave with\nnew\npassword"), 2524 tr("S&ave with\nnew\npassword"),
2522 tr("&Don't Save"), 2525 tr("&Don't Save"),
2523 0 // Enter == button 0 2526 0 // Enter == button 0
2524 ) ) 2527 ) )
2525 { // Escape == button 2 2528 { // Escape == button 2
2526 case 0: // Save clicked, Alt-S or Enter pressed. 2529 case 0: // Save clicked, Alt-S or Enter pressed.
2527 // save 2530 // save
@@ -2529,7 +2532,7 @@ void ZSafe::quitMe ()
2529 saveDocument(filename, FALSE); 2532 saveDocument(filename, FALSE);
2530 exitZs (1); 2533 exitZs (1);
2531 break; 2534 break;
2532 case 1: // 2535 case 1: //
2533 // Save with new password 2536 // Save with new password
2534 modified = false; 2537 modified = false;
2535 saveDocument(filename, TRUE); 2538 saveDocument(filename, TRUE);
@@ -2576,7 +2579,7 @@ void ZSafe::addCategory()
2576 categoryDialog->setCaption ("Qt " + tr("Category")); 2579 categoryDialog->setCaption ("Qt " + tr("Category"));
2577#endif 2580#endif
2578 dialog = categoryDialog; 2581 dialog = categoryDialog;
2579 connect( dialog->CategoryField, 2582 connect( dialog->CategoryField,
2580 SIGNAL( activated ( const QString &)), 2583 SIGNAL( activated ( const QString &)),
2581 this, SLOT( categoryFieldActivated( const QString & ) ) ); 2584 this, SLOT( categoryFieldActivated( const QString & ) ) );
2582 initIcons = true; 2585 initIcons = true;
@@ -2601,7 +2604,7 @@ void ZSafe::addCategory()
2601 f.close(); 2604 f.close();
2602 } 2605 }
2603#endif 2606#endif
2604#else 2607#else
2605 // read all categories from the config file and store 2608 // read all categories from the config file and store
2606 // into a list 2609 // into a list
2607 QFile f (cfgFile); 2610 QFile f (cfgFile);
@@ -2620,17 +2623,17 @@ void ZSafe::addCategory()
2620 QString categ; 2623 QString categ;
2621 QString firstCategory; 2624 QString firstCategory;
2622 dialog->CategoryField->clear(); // remove all items 2625 dialog->CategoryField->clear(); // remove all items
2623 while( it != list.end() ) 2626 while( it != list.end() )
2624 { 2627 {
2625 QString *cat = new QString (*it); 2628 QString *cat = new QString (*it);
2626 if (cat->contains("-field1", FALSE)) 2629 if (cat->contains("-field1", FALSE))
2627 { 2630 {
2628#ifdef DESKTOP 2631#ifdef DESKTOP
2629#ifndef WIN32 2632#ifndef WIN32
2630 categ = cat->section ("-field1", 0, 0); 2633 categ = cat->section ("-field1", 0, 0);
2631#else 2634#else
2632 int pos = cat->find ("-field1"); 2635 int pos = cat->find ("-field1");
2633 categ = cat->left (pos); 2636 categ = cat->left (pos);
2634#endif 2637#endif
2635#else 2638#else
2636 int pos = cat->find ("-field1"); 2639 int pos = cat->find ("-field1");
@@ -2657,43 +2660,43 @@ void ZSafe::addCategory()
2657 2660
2658 if (initIcons) 2661 if (initIcons)
2659 { 2662 {
2660 Wait waitDialog(this, tr("Wait dialog")); 2663 Wait waitDialog(this, tr("Wait dialog"));
2661 waitDialog.waitLabel->setText(tr("Gathering icons...")); 2664 waitDialog.waitLabel->setText(tr("Gathering icons..."));
2662 waitDialog.show(); 2665 waitDialog.show();
2663 qApp->processEvents(); 2666 qApp->processEvents();
2664 2667
2665#ifdef DESKTOP 2668#ifdef DESKTOP
2666 QDir d(iconPath); 2669 QDir d(iconPath);
2667#else 2670#else
2668 QDir d(QPEApplication::qpeDir() + "/pics/"); 2671 QDir d(QPEApplication::qpeDir() + "/pics/");
2669#endif 2672#endif
2670 d.setFilter( QDir::Files); 2673 d.setFilter( QDir::Files);
2671 2674
2672 const QFileInfoList *list = d.entryInfoList(); 2675 const QFileInfoList *list = d.entryInfoList();
2673 QFileInfoListIterator it( *list ); // create list iterator 2676 QFileInfoListIterator it( *list ); // create list iterator
2674 QFileInfo *fi; // pointer for traversing 2677 QFileInfo *fi; // pointer for traversing
2675 2678
2676 dialog->IconField->insertItem("predefined"); 2679 dialog->IconField->insertItem("predefined");
2677 while ( (fi=it.current()) ) { // for each file... 2680 while ( (fi=it.current()) ) { // for each file...
2678 QString fileName = fi->fileName(); 2681 QString fileName = fi->fileName();
2679 if(fileName.right(4) == ".png"){ 2682 if(fileName.right(4) == ".png"){
2680 fileName = fileName.mid(0,fileName.length()-4); 2683 fileName = fileName.mid(0,fileName.length()-4);
2681#ifdef DESKTOP 2684#ifdef DESKTOP
2682 QPixmap imageOfFile; 2685 QPixmap imageOfFile;
2683 imageOfFile.load(iconPath + fi->fileName()); 2686 imageOfFile.load(iconPath + fi->fileName());
2684#else 2687#else
2685 QPixmap imageOfFile(Resource::loadPixmap(fileName)); 2688 QPixmap imageOfFile(Resource::loadPixmap(fileName));
2686#endif 2689#endif
2687 QImage foo = imageOfFile.convertToImage(); 2690 QImage foo = imageOfFile.convertToImage();
2688 foo = foo.smoothScale(16,16); 2691 foo = foo.smoothScale(16,16);
2689 imageOfFile.convertFromImage(foo); 2692 imageOfFile.convertFromImage(foo);
2690 dialog->IconField->insertItem(imageOfFile,fileName); 2693 dialog->IconField->insertItem(imageOfFile,fileName);
2691 } 2694 }
2692 ++it; 2695 ++it;
2693 } 2696 }
2694 waitDialog.hide(); 2697 waitDialog.hide();
2695 } 2698 }
2696 2699
2697#ifndef WIN32 2700#ifndef WIN32
2698 dialog->show(); 2701 dialog->show();
2699#endif 2702#endif
@@ -2727,7 +2730,7 @@ void ZSafe::addCategory()
2727 // build the full path 2730 // build the full path
2728 fullIconPath = iconPath + icon; 2731 fullIconPath = iconPath + icon;
2729 pix = new QPixmap (fullIconPath); 2732 pix = new QPixmap (fullIconPath);
2730 // pix->resize(14, 14); 2733 // pix->resize(14, 14);
2731 if (pix) 2734 if (pix)
2732 { 2735 {
2733 // save the full pixmap name into the config file 2736 // save the full pixmap name into the config file
@@ -2776,7 +2779,7 @@ void ZSafe::delCategory()
2776 { 2779 {
2777 switch( QMessageBox::information( this, tr("ZSafe"), 2780 switch( QMessageBox::information( this, tr("ZSafe"),
2778 tr("Do you want to delete?"), 2781 tr("Do you want to delete?"),
2779 tr("&Delete"), tr("D&on't Delete"), 2782 tr("&Delete"), tr("D&on't Delete"),
2780 0 // Enter == button 0 2783 0 // Enter == button 0
2781 ) ) { // Escape == button 2 2784 ) ) { // Escape == button 2
2782 case 0: // Delete clicked, Alt-S or Enter pressed. 2785 case 0: // Delete clicked, Alt-S or Enter pressed.
@@ -2817,7 +2820,7 @@ void ZSafe::setCategoryDialogFields(CategoryDialog *dialog)
2817 return; 2820 return;
2818 2821
2819 QString icon; 2822 QString icon;
2820 if (selectedItem) 2823 if (selectedItem)
2821 { 2824 {
2822 dialog->Field1->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 2825 dialog->Field1->setText(getFieldLabel (selectedItem, "1", tr("Name")));
2823 dialog->Field2->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 2826 dialog->Field2->setText(getFieldLabel (selectedItem, "2", tr("Username")));
@@ -2845,39 +2848,39 @@ void ZSafe::setCategoryDialogFields(CategoryDialog *dialog)
2845 } 2848 }
2846 2849
2847#ifdef DESKTOP 2850#ifdef DESKTOP
2848 QDir d(iconPath); 2851 QDir d(iconPath);
2849#else 2852#else
2850 QDir d(QPEApplication::qpeDir() + "/pics/"); 2853 QDir d(QPEApplication::qpeDir() + "/pics/");
2851#endif 2854#endif
2852 d.setFilter( QDir::Files); 2855 d.setFilter( QDir::Files);
2853 2856
2854 const QFileInfoList *list = d.entryInfoList(); 2857 const QFileInfoList *list = d.entryInfoList();
2855 int i=0; 2858 int i=0;
2856 QFileInfoListIterator it( *list ); // create list iterator 2859 QFileInfoListIterator it( *list ); // create list iterator
2857 QFileInfo *fi; // pointer for traversing 2860 QFileInfo *fi; // pointer for traversing
2858 if (icon.isEmpty() || icon.isNull()) 2861 if (icon.isEmpty() || icon.isNull())
2859 { 2862 {
2860 dialog->IconField->setCurrentItem(0); 2863 dialog->IconField->setCurrentItem(0);
2861 } 2864 }
2862 else 2865 else
2863 { 2866 {
2864 while ( (fi=it.current()) ) 2867 while ( (fi=it.current()) )
2865 { // for each file... 2868 { // for each file...
2866 QString fileName = fi->fileName(); 2869 QString fileName = fi->fileName();
2867 if(fileName.right(4) == ".png") 2870 if(fileName.right(4) == ".png")
2868 { 2871 {
2869 fileName = fileName.mid(0,fileName.length()-4); 2872 fileName = fileName.mid(0,fileName.length()-4);
2870 2873
2871 if(fileName+".png"==icon) 2874 if(fileName+".png"==icon)
2872 { 2875 {
2873 dialog->IconField->setCurrentItem(i+1); 2876 dialog->IconField->setCurrentItem(i+1);
2874 break; 2877 break;
2875 } 2878 }
2876 ++i; 2879 ++i;
2877 } 2880 }
2878 ++it; 2881 ++it;
2879 } 2882 }
2880 } 2883 }
2881} 2884}
2882 2885
2883void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category) 2886void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category)
@@ -2902,39 +2905,39 @@ void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category)
2902 icon = conf->readEntry(APP_KEY+category); 2905 icon = conf->readEntry(APP_KEY+category);
2903 2906
2904#ifdef DESKTOP 2907#ifdef DESKTOP
2905 QDir d(iconPath); 2908 QDir d(iconPath);
2906#else 2909#else
2907 QDir d(QPEApplication::qpeDir() + "/pics/"); 2910 QDir d(QPEApplication::qpeDir() + "/pics/");
2908#endif 2911#endif
2909 d.setFilter( QDir::Files); 2912 d.setFilter( QDir::Files);
2910 2913
2911 const QFileInfoList *list = d.entryInfoList(); 2914 const QFileInfoList *list = d.entryInfoList();
2912 int i=0; 2915 int i=0;
2913 QFileInfoListIterator it( *list ); // create list iterator 2916 QFileInfoListIterator it( *list ); // create list iterator
2914 QFileInfo *fi; // pointer for traversing 2917 QFileInfo *fi; // pointer for traversing
2915 if (icon.isEmpty() || icon.isNull()) 2918 if (icon.isEmpty() || icon.isNull())
2916 { 2919 {
2917 dialog->IconField->setCurrentItem(0); 2920 dialog->IconField->setCurrentItem(0);
2918 } 2921 }
2919 else 2922 else
2920 { 2923 {
2921 while ( (fi=it.current()) ) 2924 while ( (fi=it.current()) )
2922 { // for each file... 2925 { // for each file...
2923 QString fileName = fi->fileName(); 2926 QString fileName = fi->fileName();
2924 if(fileName.right(4) == ".png") 2927 if(fileName.right(4) == ".png")
2925 { 2928 {
2926 fileName = fileName.mid(0,fileName.length()-4); 2929 fileName = fileName.mid(0,fileName.length()-4);
2927 2930
2928 if(fileName+".png"==icon) 2931 if(fileName+".png"==icon)
2929 { 2932 {
2930 dialog->IconField->setCurrentItem(i+1); 2933 dialog->IconField->setCurrentItem(i+1);
2931 break; 2934 break;
2932 } 2935 }
2933 ++i; 2936 ++i;
2934 } 2937 }
2935 ++it; 2938 ++it;
2936 } 2939 }
2937 } 2940 }
2938} 2941}
2939 2942
2940void ZSafe::saveCategoryDialogFields(CategoryDialog *dialog) 2943void ZSafe::saveCategoryDialogFields(CategoryDialog *dialog)
@@ -2983,7 +2986,7 @@ void ZSafe::editCategory()
2983 categoryDialog->setCaption ("Qt " + tr("Category")); 2986 categoryDialog->setCaption ("Qt " + tr("Category"));
2984#endif 2987#endif
2985 dialog = categoryDialog; 2988 dialog = categoryDialog;
2986 connect( dialog->CategoryField, 2989 connect( dialog->CategoryField,
2987 SIGNAL( activated ( const QString &)), 2990 SIGNAL( activated ( const QString &)),
2988 this, SLOT( categoryFieldActivated( const QString & ) ) ); 2991 this, SLOT( categoryFieldActivated( const QString & ) ) );
2989 initIcons = true; 2992 initIcons = true;
@@ -3029,17 +3032,17 @@ void ZSafe::editCategory()
3029 dialog->CategoryField->clear(); // remove all items 3032 dialog->CategoryField->clear(); // remove all items
3030 int i=0; 3033 int i=0;
3031 bool foundCategory = false; 3034 bool foundCategory = false;
3032 while( it != list.end() ) 3035 while( it != list.end() )
3033 { 3036 {
3034 QString *cat = new QString (*it); 3037 QString *cat = new QString (*it);
3035 if (cat->contains("-field1", FALSE)) 3038 if (cat->contains("-field1", FALSE))
3036 { 3039 {
3037#ifdef DESKTOP 3040#ifdef DESKTOP
3038#ifndef WIN32 3041#ifndef WIN32
3039 categ = cat->section ("-field1", 0, 0); 3042 categ = cat->section ("-field1", 0, 0);
3040#else 3043#else
3041 int pos = cat->find ("-field1"); 3044 int pos = cat->find ("-field1");
3042 categ = cat->left (pos); 3045 categ = cat->left (pos);
3043#endif 3046#endif
3044#else 3047#else
3045 int pos = cat->find ("-field1"); 3048 int pos = cat->find ("-field1");
@@ -3075,65 +3078,65 @@ void ZSafe::editCategory()
3075 if (initIcons) 3078 if (initIcons)
3076 { 3079 {
3077 3080
3078 Wait waitDialog(this, tr("Wait dialog")); 3081 Wait waitDialog(this, tr("Wait dialog"));
3079 waitDialog.waitLabel->setText(tr("Gathering icons...")); 3082 waitDialog.waitLabel->setText(tr("Gathering icons..."));
3080 waitDialog.show(); 3083 waitDialog.show();
3081 qApp->processEvents(); 3084 qApp->processEvents();
3082 3085
3083#ifdef DESKTOP 3086#ifdef DESKTOP
3084 QDir d(iconPath); 3087 QDir d(iconPath);
3085#else 3088#else
3086 QDir d(QPEApplication::qpeDir() + "/pics/"); 3089 QDir d(QPEApplication::qpeDir() + "/pics/");
3087#endif 3090#endif
3088 d.setFilter( QDir::Files); 3091 d.setFilter( QDir::Files);
3089 3092
3090 const QFileInfoList *list = d.entryInfoList(); 3093 const QFileInfoList *list = d.entryInfoList();
3091 int i=0; 3094 int i=0;
3092 QFileInfoListIterator it( *list ); // create list iterator 3095 QFileInfoListIterator it( *list ); // create list iterator
3093 QFileInfo *fi; // pointer for traversing 3096 QFileInfo *fi; // pointer for traversing
3094 if (icon.isEmpty() || icon.isNull()) 3097 if (icon.isEmpty() || icon.isNull())
3095 { 3098 {
3096 dialog->IconField->setCurrentItem(0); 3099 dialog->IconField->setCurrentItem(0);
3097 } 3100 }
3098 3101
3099 dialog->IconField->insertItem("predefined"); 3102 dialog->IconField->insertItem("predefined");
3100 while ( (fi=it.current()) ) { // for each file... 3103 while ( (fi=it.current()) ) { // for each file...
3101 QString fileName = fi->fileName(); 3104 QString fileName = fi->fileName();
3102 if(fileName.right(4) == ".png") 3105 if(fileName.right(4) == ".png")
3103 { 3106 {
3104 fileName = fileName.mid(0,fileName.length()-4); 3107 fileName = fileName.mid(0,fileName.length()-4);
3105#ifdef DESKTOP 3108#ifdef DESKTOP
3106 QPixmap imageOfFile; 3109 QPixmap imageOfFile;
3107 imageOfFile.load(iconPath + fi->fileName()); 3110 imageOfFile.load(iconPath + fi->fileName());
3108#else 3111#else
3109 QPixmap imageOfFile(Resource::loadPixmap(fileName)); 3112 QPixmap imageOfFile(Resource::loadPixmap(fileName));
3110#endif 3113#endif
3111 QImage foo = imageOfFile.convertToImage(); 3114 QImage foo = imageOfFile.convertToImage();
3112 foo = foo.smoothScale(16,16); 3115 foo = foo.smoothScale(16,16);
3113 imageOfFile.convertFromImage(foo); 3116 imageOfFile.convertFromImage(foo);
3114 dialog->IconField->insertItem(imageOfFile,fileName); 3117 dialog->IconField->insertItem(imageOfFile,fileName);
3115 if(fileName+".png"==icon) 3118 if(fileName+".png"==icon)
3116 dialog->IconField->setCurrentItem(i+1); 3119 dialog->IconField->setCurrentItem(i+1);
3117 ++i; 3120 ++i;
3118 } 3121 }
3119 ++it; 3122 ++it;
3120 } 3123 }
3121 waitDialog.hide(); 3124 waitDialog.hide();
3122 } 3125 }
3123 else 3126 else
3124 { 3127 {
3125#ifdef DESKTOP 3128#ifdef DESKTOP
3126 // QDir d(QDir::homeDirPath() + "/pics/"); 3129 // QDir d(QDir::homeDirPath() + "/pics/");
3127 QDir d(iconPath); 3130 QDir d(iconPath);
3128#else 3131#else
3129 QDir d(QPEApplication::qpeDir() + "/pics/"); 3132 QDir d(QPEApplication::qpeDir() + "/pics/");
3130#endif 3133#endif
3131 d.setFilter( QDir::Files); 3134 d.setFilter( QDir::Files);
3132 3135
3133 const QFileInfoList *list = d.entryInfoList(); 3136 const QFileInfoList *list = d.entryInfoList();
3134 int i=0; 3137 int i=0;
3135 QFileInfoListIterator it( *list ); // create list iterator 3138 QFileInfoListIterator it( *list ); // create list iterator
3136 QFileInfo *fi; // pointer for traversing 3139 QFileInfo *fi; // pointer for traversing
3137 if (icon.isEmpty() || icon.isNull()) 3140 if (icon.isEmpty() || icon.isNull())
3138 { 3141 {
3139 dialog->IconField->setCurrentItem(0); 3142 dialog->IconField->setCurrentItem(0);
@@ -3141,24 +3144,24 @@ void ZSafe::editCategory()
3141 else 3144 else
3142 { 3145 {
3143 3146
3144 while ( (fi=it.current()) ) 3147 while ( (fi=it.current()) )
3145 { // for each file... 3148 { // for each file...
3146 QString fileName = fi->fileName(); 3149 QString fileName = fi->fileName();
3147 if(fileName.right(4) == ".png") 3150 if(fileName.right(4) == ".png")
3148 { 3151 {
3149 fileName = fileName.mid(0,fileName.length()-4); 3152 fileName = fileName.mid(0,fileName.length()-4);
3150 3153
3151 3154
3152 if(fileName+".png"==icon) 3155 if(fileName+".png"==icon)
3153 { 3156 {
3154 dialog->IconField->setCurrentItem(i+1); 3157 dialog->IconField->setCurrentItem(i+1);
3155 break; 3158 break;
3156 } 3159 }
3157 ++i; 3160 ++i;
3158 } 3161 }
3159 ++it; 3162 ++it;
3160 } 3163 }
3161 } 3164 }
3162 } 3165 }
3163 3166
3164 // dialog->show(); 3167 // dialog->show();
@@ -3330,14 +3333,14 @@ void ZSafe::newDocument()
3330 this, 3333 this,
3331 tr ("Create new ZSafe document")); 3334 tr ("Create new ZSafe document"));
3332#else 3335#else
3333 QString newFile = ScQtFileEdit::getSaveAsFileName(this, 3336 QString newFile = ScQtFileEdit::getSaveAsFileName(this,
3334 tr ("Create new ZSafe document"), 3337 tr ("Create new ZSafe document"),
3335 QDir::homeDirPath() + "/Documents/application/zsafe", 3338 QDir::homeDirPath() + "/Documents/application/zsafe",
3336 "*.zsf"); 3339 "*.zsf");
3337#endif 3340#endif
3338#else 3341#else
3339 QString newFile = QFileDialog::getSaveFileName( 3342 QString newFile = QFileDialog::getSaveFileName(
3340 QDir::homeDirPath() + "/Documents/application/zsafe", 3343 QDir::homeDirPath() + "/Documents/application/zsafe",
3341 "ZSafe (*.zsf)", 3344 "ZSafe (*.zsf)",
3342 this, 3345 this,
3343 "ZSafe File Dialog" 3346 "ZSafe File Dialog"
@@ -3395,7 +3398,7 @@ void ZSafe::newDocument()
3395 3398
3396 // openDocument(filename); 3399 // openDocument(filename);
3397 3400
3398 QMessageBox::information( this, tr("ZSafe"), 3401 QMessageBox::information( this, tr("ZSafe"),
3399 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0); 3402 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
3400 3403
3401 saveDocumentWithPwd(); 3404 saveDocumentWithPwd();
@@ -3418,14 +3421,14 @@ void ZSafe::loadDocument()
3418 this, 3421 this,
3419 tr ("Open ZSafe document")); 3422 tr ("Open ZSafe document"));
3420#else 3423#else
3421 QString newFile = ScQtFileEdit::getOpenFileName(this, 3424 QString newFile = ScQtFileEdit::getOpenFileName(this,
3422 tr ("Open ZSafe document"), 3425 tr ("Open ZSafe document"),
3423 QDir::homeDirPath() + "/Documents/application/zsafe", 3426 QDir::homeDirPath() + "/Documents/application/zsafe",
3424 "*.zsf"); 3427 "*.zsf");
3425#endif 3428#endif
3426#else 3429#else
3427 QString newFile = QFileDialog::getOpenFileName( 3430 QString newFile = QFileDialog::getOpenFileName(
3428 QDir::homeDirPath() + "/Documents/application/zsafe", 3431 QDir::homeDirPath() + "/Documents/application/zsafe",
3429 "ZSafe (*.zsf)", 3432 "ZSafe (*.zsf)",
3430 this, 3433 this,
3431 "ZSafe File Dialog" 3434 "ZSafe File Dialog"
@@ -3496,7 +3499,7 @@ void ZSafe::saveDocumentAs()
3496 this, 3499 this,
3497 tr ("Save ZSafe document as..")); 3500 tr ("Save ZSafe document as.."));
3498#else 3501#else
3499 QString newFile = ScQtFileEdit::getSaveAsFileName(this, 3502 QString newFile = ScQtFileEdit::getSaveAsFileName(this,
3500 tr ("Save ZSafe document as.."), 3503 tr ("Save ZSafe document as.."),
3501 QDir::homeDirPath() + "/Documents/application/zsafe", 3504 QDir::homeDirPath() + "/Documents/application/zsafe",
3502 "*.zsf"); 3505 "*.zsf");
@@ -3504,7 +3507,7 @@ void ZSafe::saveDocumentAs()
3504#else 3507#else
3505 // open the file dialog 3508 // open the file dialog
3506 QString newFile = QFileDialog::getSaveFileName( 3509 QString newFile = QFileDialog::getSaveFileName(
3507 QDir::homeDirPath() + "/Documents/application/zsafe", 3510 QDir::homeDirPath() + "/Documents/application/zsafe",
3508 "ZSafe (*.zsf)", 3511 "ZSafe (*.zsf)",
3509 this, 3512 this,
3510 "ZSafe File Dialog" 3513 "ZSafe File Dialog"
@@ -3531,7 +3534,7 @@ void ZSafe::saveDocumentAs()
3531 this->setCaption("ZSafe: " + ti); 3534 this->setCaption("ZSafe: " + ti);
3532#endif 3535#endif
3533 3536
3534 QMessageBox::information( this, tr("ZSafe"), 3537 QMessageBox::information( this, tr("ZSafe"),
3535 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0); 3538 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
3536 3539
3537 saveDocumentWithPwd(); 3540 saveDocumentWithPwd();
@@ -3622,7 +3625,7 @@ void ZSafe::paintEvent( QPaintEvent * )
3622 } 3625 }
3623} 3626}
3624 3627
3625void ZSafe::resizeEvent ( QResizeEvent * ) 3628void ZSafe::resizeEvent ( QResizeEvent * )
3626{ 3629{
3627 // qWarning ("resizeEvent"); 3630 // qWarning ("resizeEvent");
3628#ifndef DESKTOP 3631#ifndef DESKTOP
@@ -3634,13 +3637,13 @@ void ZSafe::resizeEvent ( QResizeEvent * )
3634#endif 3637#endif
3635 3638
3636 if (New) 3639 if (New)
3637 New->setGeometry ( QRect( DeskW-84, 2, 20, 20 ) ); 3640 New->setGeometry ( QRect( DeskW-84, 2, 20, 20 ) );
3638 if (Edit) 3641 if (Edit)
3639 Edit->setGeometry ( QRect( DeskW-64, 2, 20, 20 ) ); 3642 Edit->setGeometry ( QRect( DeskW-64, 2, 20, 20 ) );
3640 if (Delete) 3643 if (Delete)
3641 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) ); 3644 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) );
3642 if (Find) 3645 if (Find)
3643 Find->setGeometry ( QRect( DeskW-24, 2, 20, 20 ) ); 3646 Find->setGeometry ( QRect( DeskW-24, 2, 20, 20 ) );
3644} 3647}
3645 3648
3646void ZSafe::slotRaiseTimer() 3649void ZSafe::slotRaiseTimer()
@@ -3722,7 +3725,7 @@ void ZSafe::setDocument(const QString& fileref)
3722 3725
3723 m_password = ""; 3726 m_password = "";
3724 selectedItem = NULL; 3727 selectedItem = NULL;
3725 3728
3726 openDocument(filename); 3729 openDocument(filename);
3727#endif 3730#endif
3728} 3731}