summaryrefslogtreecommitdiffabout
path: root/pwmanager
authorulf69 <ulf69>2004-10-20 18:38:39 (UTC)
committer ulf69 <ulf69>2004-10-20 18:38:39 (UTC)
commit8e00329a4a5f0b66d26d20f067ab6aefca17f17a (patch) (unidiff)
tree9fa40d29baece91dc854b7e124c3bbc2962a0729 /pwmanager
parent13243e1fb1855d306d45a84365f55e20efeff69d (diff)
downloadkdepimpi-8e00329a4a5f0b66d26d20f067ab6aefca17f17a.zip
kdepimpi-8e00329a4a5f0b66d26d20f067ab6aefca17f17a.tar.gz
kdepimpi-8e00329a4a5f0b66d26d20f067ab6aefca17f17a.tar.bz2
removed dead code
Diffstat (limited to 'pwmanager') (more/less context) (ignore whitespace changes)
-rw-r--r--pwmanager/pwmanager/pwm.cpp30
-rw-r--r--pwmanager/pwmanager/pwmdoc.cpp25
2 files changed, 27 insertions, 28 deletions
diff --git a/pwmanager/pwmanager/pwm.cpp b/pwmanager/pwmanager/pwm.cpp
index c511661..66d26d6 100644
--- a/pwmanager/pwmanager/pwm.cpp
+++ b/pwmanager/pwmanager/pwm.cpp
@@ -665,130 +665,130 @@ void PwM::editPwd_slot1(const QString *category)
665 665
666void PwM::editPwd_slot3(const QString *category, const int *index, 666void PwM::editPwd_slot3(const QString *category, const int *index,
667 PwMDoc *_doc) 667 PwMDoc *_doc)
668{ 668{
669 PwMDoc *doc; 669 PwMDoc *doc;
670 if (_doc) { 670 if (_doc) {
671 doc = _doc; 671 doc = _doc;
672 } else { 672 } else {
673 doc = curDoc(); 673 doc = curDoc();
674 } 674 }
675 PWM_ASSERT(doc); 675 PWM_ASSERT(doc);
676 if (doc->isDocEmpty()) 676 if (doc->isDocEmpty())
677 return; 677 return;
678 if (doc->isDeepLocked()) 678 if (doc->isDeepLocked())
679 return; 679 return;
680 doc->timer()->getLock(DocTimer::id_autoLockTimer); 680 doc->timer()->getLock(DocTimer::id_autoLockTimer);
681 unsigned int curEntryIndex; 681 unsigned int curEntryIndex;
682 if (index) { 682 if (index) {
683 curEntryIndex = *index; 683 curEntryIndex = *index;
684 } else { 684 } else {
685 if (!(view->getCurEntryIndex(&curEntryIndex))) { 685 if (!(view->getCurEntryIndex(&curEntryIndex))) {
686 printDebug("couldn't get index. Maybe we have a binary entry here."); 686 printDebug("couldn't get index. Maybe we have a binary entry here.");
687 doc->timer()->putLock(DocTimer::id_autoLockTimer); 687 doc->timer()->putLock(DocTimer::id_autoLockTimer);
688 return; 688 return;
689 } 689 }
690 } 690 }
691 QString curCategory; 691 QString curCategory;
692 if (category) { 692 if (category) {
693 curCategory = *category; 693 curCategory = *category;
694 } else { 694 } else {
695 curCategory = view->getCurrentCategory(); 695 curCategory = view->getCurrentCategory();
696 } 696 }
697 PwMDataItem currItem; 697 PwMDataItem currItem;
698 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) { 698 if (!doc->getEntry(curCategory, curEntryIndex, &currItem, true)) {
699 doc->timer()->putLock(DocTimer::id_autoLockTimer); 699 doc->timer()->putLock(DocTimer::id_autoLockTimer);
700 return; 700 return;
701 } 701 }
702 BUG_ON(currItem.binary); 702 BUG_ON(currItem.binary);
703 703
704 AddEntryWndImpl w; 704 AddEntryWndImpl w;
705 vector<string> catList; 705 vector<string> catList;
706 doc->getCategoryList(&catList); 706 doc->getCategoryList(&catList);
707 unsigned i, size = catList.size(); 707 unsigned i, size = catList.size();
708 for (i = 0; i < size; ++i) { 708 for (i = 0; i < size; ++i) {
709 w.addCategory(catList[i].c_str()); 709 w.addCategory(catList[i].c_str());
710 } 710 }
711 w.setCurrCategory(curCategory); 711 w.setCurrCategory(curCategory);
712 w.setDescription(currItem.desc.c_str()); 712 w.setDescription(currItem.desc.c_str());
713 w.setUsername(currItem.name.c_str()); 713 w.setUsername(currItem.name.c_str());
714 w.setPassword(currItem.pw.c_str()); 714 w.setPassword(currItem.pw.c_str());
715 w.setUrl(currItem.url.c_str()); 715 w.setUrl(currItem.url.c_str());
716 w.setLauncher(currItem.launcher.c_str()); 716 w.setLauncher(currItem.launcher.c_str());
717 w.setComment(currItem.comment.c_str()); 717 w.setComment(currItem.comment.c_str());
718 if (w.exec() == 1) { 718 if (w.exec() == 1) {
719 currItem.desc = w.getDescription().latin1(); 719 currItem.desc = w.getDescription().latin1();
720 currItem.name = w.getUsername().latin1(); 720 currItem.name = w.getUsername().latin1();
721 currItem.pw = w.getPassword().latin1(); 721 currItem.pw = w.getPassword().latin1();
722 currItem.comment = w.getComment().latin1(); 722 currItem.comment = w.getComment().latin1();
723 currItem.url = w.getUrl().latin1(); 723 currItem.url = w.getUrl().latin1();
724 currItem.launcher = w.getLauncher().latin1(); 724 currItem.launcher = w.getLauncher().latin1();
725 if (!doc->editEntry(curCategory, w.getCategory(), 725 if (!doc->editEntry(curCategory, w.getCategory(),
726 curEntryIndex, &currItem)) { 726 curEntryIndex, &currItem)) {
727 KMessageBox::error(this, 727 KMessageBox::error(this,
728 i18n("Couldn't edit the entry.\n" 728 i18n("Couldn't edit the entry.\n"
729 "Maybe you changed the category and " 729 "Maybe you changed the category and\n"
730 "this entry is already present in the new " 730 "this entry is already present\nin the new "
731 "category?"), 731 "category?"),
732 i18n("couldn't edit entry.")); 732 i18n("couldn't edit entry."));
733 doc->timer()->putLock(DocTimer::id_autoLockTimer); 733 doc->timer()->putLock(DocTimer::id_autoLockTimer);
734 return; 734 return;
735 } 735 }
736 } 736 }
737 doc->timer()->putLock(DocTimer::id_autoLockTimer); 737 doc->timer()->putLock(DocTimer::id_autoLockTimer);
738} 738}
739 739
740void PwM::deletePwd_slot() 740void PwM::deletePwd_slot()
741{ 741{
742 PWM_ASSERT(curDoc()); 742 PWM_ASSERT(curDoc());
743 if (curDoc()->isDocEmpty()) 743 if (curDoc()->isDocEmpty())
744 return; 744 return;
745 if (curDoc()->isDeepLocked()) 745 if (curDoc()->isDeepLocked())
746 return; 746 return;
747 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 747 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
748 unsigned int curEntryIndex = 0; 748 unsigned int curEntryIndex = 0;
749 if (!(view->getCurEntryIndex(&curEntryIndex))) { 749 if (!(view->getCurEntryIndex(&curEntryIndex))) {
750 printDebug("couldn't get index"); 750 printDebug("couldn't get index");
751 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 751 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
752 return; 752 return;
753 } 753 }
754 754
755 PwMDataItem currItem; 755 PwMDataItem currItem;
756 QString curCategory = view->getCurrentCategory(); 756 QString curCategory = view->getCurrentCategory();
757 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) { 757 if (!curDoc()->getEntry(curCategory, curEntryIndex, &currItem)) {
758 printDebug("couldn't get entry"); 758 printDebug("couldn't get entry");
759 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 759 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
760 return; 760 return;
761 } 761 }
762 if (KMessageBox:: 762 if (KMessageBox::
763 questionYesNo(this, 763 questionYesNo(this,
764 i18n 764 i18n
765 ("Do you really want to delete\nthe selected entry") + 765 ("Do you really want to delete\nthe selected entry") +
766 " \n\"" + QString(currItem.desc.c_str()) 766 " \n\"" + QString(currItem.desc.c_str())
767 + "\" ?", i18n("delete?")) 767 + "\" ?", i18n("delete?"))
768 == KMessageBox::Yes) { 768 == KMessageBox::Yes) {
769 769
770 curDoc()->delEntry(curCategory, curEntryIndex); 770 curDoc()->delEntry(curCategory, curEntryIndex);
771 } 771 }
772 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 772 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
773} 773}
774 774
775void PwM::changeMasterPwd_slot() 775void PwM::changeMasterPwd_slot()
776{ 776{
777 PWM_ASSERT(curDoc()); 777 PWM_ASSERT(curDoc());
778 curDoc()->changeCurrentPw(); 778 curDoc()->changeCurrentPw();
779} 779}
780 780
781void PwM::lockWnd_slot() 781void PwM::lockWnd_slot()
782{ 782{
783 PWM_ASSERT(curDoc()); 783 PWM_ASSERT(curDoc());
784 curDoc()->lockAll(true); 784 curDoc()->lockAll(true);
785} 785}
786 786
787void PwM::deepLockWnd_slot() 787void PwM::deepLockWnd_slot()
788{ 788{
789 PWM_ASSERT(curDoc()); 789 PWM_ASSERT(curDoc());
790 curDoc()->deepLock(); 790 curDoc()->deepLock();
791} 791}
792 792
793void PwM::unlockWnd_slot() 793void PwM::unlockWnd_slot()
794{ 794{
@@ -854,294 +854,294 @@ void PwM::config_slot()
854 pwm = *i2; 854 pwm = *i2;
855 // reinitialize the window style. 855 // reinitialize the window style.
856 if (oldStyle != newStyle) 856 if (oldStyle != newStyle)
857 pwm->curView()->initStyle(newStyle); 857 pwm->curView()->initStyle(newStyle);
858 // set the new font 858 // set the new font
859 pwm->curView()->setFont(conf()->confGlobEntryFont()); 859 pwm->curView()->setFont(conf()->confGlobEntryFont());
860 ++i2; 860 ++i2;
861 } 861 }
862} 862}
863 863
864void PwM::activateMpButton(bool activate) 864void PwM::activateMpButton(bool activate)
865{ 865{
866 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate); 866 managePopup->setItemEnabled(BUTTON_POPUP_MANAGE_CHANGEMP, activate);
867} 867}
868 868
869void PwM::closeEvent(QCloseEvent *e) 869void PwM::closeEvent(QCloseEvent *e)
870{ 870{
871 e->accept(); 871 e->accept();
872} 872}
873 873
874void PwM::docClosed(PwMDoc *doc) 874void PwM::docClosed(PwMDoc *doc)
875{ 875{
876 PARAM_UNUSED(doc); 876 PARAM_UNUSED(doc);
877 PWM_ASSERT(doc == curDoc()); 877 PWM_ASSERT(doc == curDoc());
878 close(); 878 close();
879} 879}
880 880
881void PwM::find_slot() 881void PwM::find_slot()
882{ 882{
883 PWM_ASSERT(curDoc()); 883 PWM_ASSERT(curDoc());
884 if (curDoc()->isDocEmpty()) 884 if (curDoc()->isDocEmpty())
885 return; 885 return;
886 if (curDoc()->isDeepLocked()) 886 if (curDoc()->isDeepLocked())
887 return; 887 return;
888 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 888 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
889 FindWndImpl findWnd(view); 889 FindWndImpl findWnd(view);
890 findWnd.exec(); 890 findWnd.exec();
891 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 891 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
892} 892}
893 893
894void PwM::exportToText() 894void PwM::exportToText()
895{ 895{
896 PWM_ASSERT(curDoc()); 896 PWM_ASSERT(curDoc());
897 if (curDoc()->isDocEmpty()) { 897 if (curDoc()->isDocEmpty()) {
898 KMessageBox::information(this, 898 KMessageBox::information(this,
899 i18n 899 i18n
900 ("Sorry, there's nothing to export.\n" 900 ("Sorry, there's nothing to export.\n"
901 "Please first add some passwords."), 901 "Please first add some passwords."),
902 i18n("nothing to do")); 902 i18n("nothing to do"));
903 return; 903 return;
904 } 904 }
905 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 905 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
906 QString fn(KFileDialog::getSaveFileName(QString::null, 906 QString fn(KFileDialog::getSaveFileName(QString::null,
907 i18n("*|plain-text file"), 907 i18n("*|plain-text file"),
908 this)); 908 this));
909 if (fn == "") { 909 if (fn == "") {
910 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 910 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
911 return; 911 return;
912 } 912 }
913 913
914 PwMerror ret = curDoc()->exportToText(&fn); 914 PwMerror ret = curDoc()->exportToText(&fn);
915 if (ret != e_success) { 915 if (ret != e_success) {
916 KMessageBox::error(this, 916 KMessageBox::error(this,
917 i18n("Error: Couldn't write to file.\n" 917 i18n("Error: Couldn't write to file.\n"
918 "Please check if you have permission to write " 918 "Please check if you have permission to write\n"
919 "to the file in that directory."), 919 "to the file in that directory."),
920 i18n("error while writing")); 920 i18n("error while writing"));
921 } else 921 } else
922 showStatMsg(i18n("Successfully exported data.")); 922 showStatMsg(i18n("Successfully exported data."));
923 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 923 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
924} 924}
925 925
926bool PwM::importFromText() 926bool PwM::importFromText()
927{ 927{
928 if (!isVirgin()) { 928 if (!isVirgin()) {
929 if (KMessageBox::questionYesNo(this, 929 if (KMessageBox::questionYesNo(this,
930 i18n("Do you want to import the data " 930 i18n("Do you want to import the data\n"
931 "into the current document? (If you " 931 "into the current document? (If you\n"
932 "select \"no\", a new document will be " 932 "select \"no\", a new document will be\n"
933 "opened.)"), 933 "opened.)"),
934 i18n("import into this document?")) 934 i18n("import into this document?"))
935 == KMessageBox::No) { 935 == KMessageBox::No) {
936 // import the data to a new window. 936 // import the data to a new window.
937 PwM *newInstance = init->createMainWnd(); 937 PwM *newInstance = init->createMainWnd();
938 bool ok = newInstance->importFromText(); 938 bool ok = newInstance->importFromText();
939 if (!ok) { 939 if (!ok) {
940 newInstance->setForceQuit(true); 940 newInstance->setForceQuit(true);
941 delete_and_null(newInstance); 941 delete_and_null(newInstance);
942 } 942 }
943 return ok; 943 return ok;
944 } 944 }
945 } 945 }
946 946
947 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 947 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
948 PwMerror ret; 948 PwMerror ret;
949 QString path(KFileDialog::getOpenFileName(QString::null, 949 QString path(KFileDialog::getOpenFileName(QString::null,
950 i18n("*|PWM-exported text file"), 950 i18n("*|PWM-exported text file"),
951 this)); 951 this));
952 if (path == "") 952 if (path == "")
953 goto cancelImport; 953 goto cancelImport;
954 954
955 ret = curDoc()->importFromText(&path, 0); 955 ret = curDoc()->importFromText(&path, 0);
956 if (ret == e_fileFormat) { 956 if (ret == e_fileFormat) {
957 KMessageBox::error(this, 957 KMessageBox::error(this,
958 i18n("Could not read file-format.\n" 958 i18n("Could not read file-format.\n"
959 "This seems to be _not_ a valid file " 959 "This seems to be _not_ a valid file\n"
960 "exported by PwM."), 960 "exported by PwM."),
961 i18n("invalid file-format")); 961 i18n("invalid file-format"));
962 goto cancelImport; 962 goto cancelImport;
963 } else if (ret == e_invalidArg) { 963 } else if (ret == e_invalidArg) {
964 BUG(); 964 BUG();
965 goto cancelImport; 965 goto cancelImport;
966 } else if (ret != e_success) { 966 } else if (ret != e_success) {
967 KMessageBox::error(this, 967 KMessageBox::error(this,
968 i18n("Could not import file!\n" 968 i18n("Could not import file!\n"
969 "Do you have permission to read this file? " 969 "Do you have permission to read this file?\n"
970 "Do you have enough free memory?"), 970 "Do you have enough free memory?"),
971 i18n("import failed")); 971 i18n("import failed"));
972 goto cancelImport; 972 goto cancelImport;
973 } 973 }
974 setVirgin(false); 974 setVirgin(false);
975 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 975 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
976 return true; 976 return true;
977 977
978cancelImport: 978cancelImport:
979 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 979 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
980 return false; 980 return false;
981} 981}
982 982
983void PwM::exportToGpasman() 983void PwM::exportToGpasman()
984{ 984{
985 PWM_ASSERT(curDoc()); 985 PWM_ASSERT(curDoc());
986 if (curDoc()->isDocEmpty()) { 986 if (curDoc()->isDocEmpty()) {
987 KMessageBox::information(this, 987 KMessageBox::information(this,
988 i18n 988 i18n
989 ("Sorry, there's nothing to export.\n" 989 ("Sorry, there's nothing to export.\n"
990 "Please first add some passwords."), 990 "Please first add some passwords."),
991 i18n("nothing to do")); 991 i18n("nothing to do"));
992 return; 992 return;
993 } 993 }
994 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 994 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
995 QString fn(KFileDialog::getSaveFileName(QString::null, 995 QString fn(KFileDialog::getSaveFileName(QString::null,
996 i18n("*|Gpasman or Kpasman file"), 996 i18n("*|Gpasman or Kpasman file"),
997 this)); 997 this));
998 if (fn == "") { 998 if (fn == "") {
999 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 999 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1000 return; 1000 return;
1001 } 1001 }
1002 1002
1003 PwMerror ret = curDoc()->exportToGpasman(&fn); 1003 PwMerror ret = curDoc()->exportToGpasman(&fn);
1004 if (ret != e_success) { 1004 if (ret != e_success) {
1005 if (ret == e_noPw) { 1005 if (ret == e_noPw) {
1006 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1006 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1007 return; 1007 return;
1008 } 1008 }
1009 KMessageBox::error(this, 1009 KMessageBox::error(this,
1010 i18n("Error: Couldn't write to file.\n" 1010 i18n("Error: Couldn't write to file.\n"
1011 "Please check if you have permission to write " 1011 "Please check if you have permission to write "
1012 "to the file in that directory."), 1012 "to the file in that directory."),
1013 i18n("error while writing")); 1013 i18n("error while writing"));
1014 } else 1014 } else
1015 showStatMsg(i18n("Successfully exported data.")); 1015 showStatMsg(i18n("Successfully exported data."));
1016 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1016 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1017} 1017}
1018 1018
1019void PwM::exportToKWallet() 1019void PwM::exportToKWallet()
1020{ 1020{
1021#ifdef CONFIG_KWALLETIF 1021#ifdef CONFIG_KWALLETIF
1022 if (!checkAndAskForKWalletEmu()) 1022 if (!checkAndAskForKWalletEmu())
1023 return; 1023 return;
1024 PWM_ASSERT(curDoc()); 1024 PWM_ASSERT(curDoc());
1025 if (curDoc()->isDocEmpty()) { 1025 if (curDoc()->isDocEmpty()) {
1026 KMessageBox::information(this, 1026 KMessageBox::information(this,
1027 i18n 1027 i18n
1028 ("Sorry, there's nothing to export.\n" 1028 ("Sorry, there's nothing to export.\n"
1029 "Please first add some passwords."), 1029 "Please first add some passwords."),
1030 i18n("nothing to do")); 1030 i18n("nothing to do"));
1031 init->initKWalletEmu(); 1031 init->initKWalletEmu();
1032 return; 1032 return;
1033 } 1033 }
1034 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1034 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1035 KWalletIf walletIf(this); 1035 KWalletIf walletIf(this);
1036 if (walletIf.kwalletExport(curDoc())) { 1036 if (walletIf.kwalletExport(curDoc())) {
1037 KMessageBox::information(this, 1037 KMessageBox::information(this,
1038 i18n("Successfully exported the data of the current " 1038 i18n("Successfully exported the data of the current "
1039 "document to KWallet."), 1039 "document to KWallet."),
1040 i18n("Successfully exported data.")); 1040 i18n("Successfully exported data."));
1041 showStatMsg(i18n("Successfully exported data.")); 1041 showStatMsg(i18n("Successfully exported data."));
1042 } 1042 }
1043 init->initKWalletEmu(); 1043 init->initKWalletEmu();
1044 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1044 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1045#endif // CONFIG_KWALLETIF 1045#endif // CONFIG_KWALLETIF
1046} 1046}
1047 1047
1048bool PwM::importFromGpasman() 1048bool PwM::importFromGpasman()
1049{ 1049{
1050 if (!isVirgin()) { 1050 if (!isVirgin()) {
1051 if (KMessageBox::questionYesNo(this, 1051 if (KMessageBox::questionYesNo(this,
1052 i18n("Do you want to import the data " 1052 i18n("Do you want to import the data\n"
1053 "into the current document? (If you " 1053 "into the current document? (If you\n"
1054 "select \"no\", a new document will be " 1054 "select \"no\", a new document will be\n"
1055 "opened.)"), 1055 "opened.)"),
1056 i18n("import into this document?")) 1056 i18n("import into this document?"))
1057 == KMessageBox::No) { 1057 == KMessageBox::No) {
1058 // import the data to a new window. 1058 // import the data to a new window.
1059 PwM *newInstance = init->createMainWnd(); 1059 PwM *newInstance = init->createMainWnd();
1060 bool ok = newInstance->importFromGpasman(); 1060 bool ok = newInstance->importFromGpasman();
1061 if (!ok) { 1061 if (!ok) {
1062 newInstance->setForceQuit(true); 1062 newInstance->setForceQuit(true);
1063 delete_and_null(newInstance); 1063 delete_and_null(newInstance);
1064 } 1064 }
1065 return ok; 1065 return ok;
1066 } 1066 }
1067 } 1067 }
1068 1068
1069 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer); 1069 curDoc()->timer()->getLock(DocTimer::id_autoLockTimer);
1070 PwMerror ret; 1070 PwMerror ret;
1071 QString path(KFileDialog::getOpenFileName(QString::null, 1071 QString path(KFileDialog::getOpenFileName(QString::null,
1072 i18n("*|Gpasman or Kpasman file"), this)); 1072 i18n("*|Gpasman or Kpasman file"), this));
1073 if (path == "") 1073 if (path == "")
1074 goto cancelImport; 1074 goto cancelImport;
1075 ret = curDoc()->importFromGpasman(&path); 1075 ret = curDoc()->importFromGpasman(&path);
1076 if (ret == e_wrongPw) { 1076 if (ret == e_wrongPw) {
1077 if (KMessageBox::questionYesNo(this, 1077 if (KMessageBox::questionYesNo(this,
1078 i18n 1078 i18n
1079 ("This is probably the wrong master-password" 1079 ("This is probably the wrong master-password\n"
1080 "you have typed in.\n" 1080 "you have typed in.\n"
1081 "There is no real way to determine the " 1081 "There is no real way to determine the\n"
1082 "correctness of the password in the Gpasman " 1082 "correctness of the password in the Gpasman\n"
1083 "file-format. But I think this " 1083 "file-format. But I think this\n"
1084 "password ist wrong.\n" 1084 "password ist wrong.\n"
1085 "Do you want to continue nevertheless?"), 1085 "Do you want to continue nevertheless?"),
1086 i18n("password error")) 1086 i18n("password error"))
1087 == KMessageBox::No) { 1087 == KMessageBox::No) {
1088 goto cancelImport; 1088 goto cancelImport;
1089 } 1089 }
1090 } else if (ret != e_success) { 1090 } else if (ret != e_success) {
1091 KMessageBox::error(this, 1091 KMessageBox::error(this,
1092 i18n("Could not import file!\n" 1092 i18n("Could not import file!\n"
1093 "Do you have permission to read this file?"), 1093 "Do you have permission to read this file?"),
1094 i18n("import failed")); 1094 i18n("import failed"));
1095 goto cancelImport; 1095 goto cancelImport;
1096 } 1096 }
1097 setVirgin(false); 1097 setVirgin(false);
1098 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1098 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1099 return true; 1099 return true;
1100 1100
1101cancelImport: 1101cancelImport:
1102 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer); 1102 curDoc()->timer()->putLock(DocTimer::id_autoLockTimer);
1103 return false; 1103 return false;
1104} 1104}
1105 1105
1106#ifdef CONFIG_KWALLETIF 1106#ifdef CONFIG_KWALLETIF
1107bool PwM::checkAndAskForKWalletEmu() 1107bool PwM::checkAndAskForKWalletEmu()
1108{ 1108{
1109 if (init->kwalletEmu()) { 1109 if (init->kwalletEmu()) {
1110 /* KWallet emulation is enabled. We can't import/export 1110 /* KWallet emulation is enabled. We can't import/export
1111 * data from/to it, while emulation is active. 1111 * data from/to it, while emulation is active.
1112 */ 1112 */
1113 if (KMessageBox::questionYesNo(this, 1113 if (KMessageBox::questionYesNo(this,
1114 i18n("KWallet emulation is enabled.\n" 1114 i18n("KWallet emulation is enabled.\n"
1115 "You can't import or export data from/to " 1115 "You can't import or export data from/to "
1116 "the original KWallet, while the emulation " 1116 "the original KWallet, while the emulation "
1117 "is active.\n" 1117 "is active.\n"
1118 "Do you want to tempoarly disable the KWallet emulation?"), 1118 "Do you want to tempoarly disable the KWallet emulation?"),
1119 i18n("Tempoarly disable KWallet emulation?")) 1119 i18n("Tempoarly disable KWallet emulation?"))
1120 == KMessageBox::Yes) { 1120 == KMessageBox::Yes) {
1121 init->initKWalletEmu(true); 1121 init->initKWalletEmu(true);
1122 PWM_ASSERT(!init->kwalletEmu()); 1122 PWM_ASSERT(!init->kwalletEmu());
1123 return true; 1123 return true;
1124 } 1124 }
1125 return false; 1125 return false;
1126 } 1126 }
1127 return true; 1127 return true;
1128} 1128}
1129#endif // CONFIG_KWALLETIF 1129#endif // CONFIG_KWALLETIF
1130 1130
1131bool PwM::importKWallet() 1131bool PwM::importKWallet()
1132{ 1132{
1133#ifdef CONFIG_KWALLETIF 1133#ifdef CONFIG_KWALLETIF
1134 if (!checkAndAskForKWalletEmu()) 1134 if (!checkAndAskForKWalletEmu())
1135 return false; 1135 return false;
1136 KWalletIf walletIf(this); 1136 KWalletIf walletIf(this);
1137 if (!isVirgin()) { 1137 if (!isVirgin()) {
1138 if (KMessageBox::questionYesNo(this, 1138 if (KMessageBox::questionYesNo(this,
1139 i18n("Do you want to import the data " 1139 i18n("Do you want to import the data "
1140 "into the current document? (If you " 1140 "into the current document? (If you "
1141 "select \"no\", a new document will be " 1141 "select \"no\", a new document will be "
1142 "opened.)"), 1142 "opened.)"),
1143 i18n("import into this document?")) 1143 i18n("import into this document?"))
1144 == KMessageBox::No) { 1144 == KMessageBox::No) {
1145 // import the data to a new window. 1145 // import the data to a new window.
1146 PwM *newInstance = init->createMainWnd(); 1146 PwM *newInstance = init->createMainWnd();
1147 bool ok = newInstance->importKWallet(); 1147 bool ok = newInstance->importKWallet();
diff --git a/pwmanager/pwmanager/pwmdoc.cpp b/pwmanager/pwmanager/pwmdoc.cpp
index 8869f3a..86b6273 100644
--- a/pwmanager/pwmanager/pwmdoc.cpp
+++ b/pwmanager/pwmanager/pwmdoc.cpp
@@ -1203,153 +1203,159 @@ bool PwMDoc::getEntry(const QString &category, unsigned int index,
1203 if (!findCategory(category, &cat)) { 1203 if (!findCategory(category, &cat)) {
1204 BUG(); 1204 BUG();
1205 return false; 1205 return false;
1206 } 1206 }
1207 1207
1208 return getEntry(cat, index, d, unlockIfLocked); 1208 return getEntry(cat, index, d, unlockIfLocked);
1209} 1209}
1210 1210
1211bool PwMDoc::getEntry(unsigned int category, unsigned int index, 1211bool PwMDoc::getEntry(unsigned int category, unsigned int index,
1212 PwMDataItem *d, bool unlockIfLocked) 1212 PwMDataItem *d, bool unlockIfLocked)
1213{ 1213{
1214 if (index > dti.dta[category].d.size() - 1) 1214 if (index > dti.dta[category].d.size() - 1)
1215 return false; 1215 return false;
1216 1216
1217 bool locked = isLocked(category, index); 1217 bool locked = isLocked(category, index);
1218 if (locked) { 1218 if (locked) {
1219 /* this entry is locked. We don't return a password, 1219 /* this entry is locked. We don't return a password,
1220 * until it's unlocked by the user by inserting 1220 * until it's unlocked by the user by inserting
1221 * chipcard or entering the mpw 1221 * chipcard or entering the mpw
1222 */ 1222 */
1223 if (unlockIfLocked) { 1223 if (unlockIfLocked) {
1224 if (!lockAt(category, index, false)) { 1224 if (!lockAt(category, index, false)) {
1225 return false; 1225 return false;
1226 } 1226 }
1227 locked = false; 1227 locked = false;
1228 } 1228 }
1229 } 1229 }
1230 1230
1231 *d = dti.dta[category].d[index]; 1231 *d = dti.dta[category].d[index];
1232 if (locked) 1232 if (locked)
1233 d->pw = LOCKED_STRING.latin1(); 1233 d->pw = LOCKED_STRING.latin1();
1234 1234
1235 return true; 1235 return true;
1236} 1236}
1237 1237
1238PwMerror PwMDoc::getCommentByLvp(const QString &category, int listViewPos, 1238PwMerror PwMDoc::getCommentByLvp(const QString &category, int listViewPos,
1239 string *foundComment) 1239 string *foundComment)
1240{ 1240{
1241 PWM_ASSERT(foundComment); 1241 PWM_ASSERT(foundComment);
1242 unsigned int cat = 0; 1242 unsigned int cat = 0;
1243 1243
1244 if (!findCategory(category, &cat)) 1244 if (!findCategory(category, &cat))
1245 return e_invalidArg; 1245 return e_invalidArg;
1246 1246
1247 unsigned int i, entries = numEntries(cat); 1247 unsigned int i, entries = numEntries(cat);
1248 for (i = 0; i < entries; ++i) { 1248 for (i = 0; i < entries; ++i) {
1249 if (dti.dta[cat].d[i].listViewPos == listViewPos) { 1249 if (dti.dta[cat].d[i].listViewPos == listViewPos) {
1250 *foundComment = dti.dta[cat].d[i].comment; 1250 *foundComment = dti.dta[cat].d[i].comment;
1251 if (dti.dta[cat].d[i].binary) 1251 if (dti.dta[cat].d[i].binary)
1252 return e_binEntry; 1252 return e_binEntry;
1253 return e_normalEntry; 1253 return e_normalEntry;
1254 } 1254 }
1255 } 1255 }
1256 BUG(); 1256 BUG();
1257 return e_generic; 1257 return e_generic;
1258} 1258}
1259 1259
1260bool PwMDoc::compressDta(string *d, char algo) 1260bool PwMDoc::compressDta(string *d, char algo)
1261{ 1261{
1262 PWM_ASSERT(d); 1262 PWM_ASSERT(d);
1263 switch (algo) { 1263 switch (algo) {
1264 case PWM_COMPRESS_GZIP: { 1264 case PWM_COMPRESS_GZIP: {
1265 CompressGzip comp; 1265 CompressGzip comp;
1266 return comp.compress(d); 1266 return comp.compress(d);
1267 /*US } case PWM_COMPRESS_BZIP2: { 1267 }
1268#ifndef PWM_EMBEDDED
1269 case PWM_COMPRESS_BZIP2: {
1268 CompressBzip2 comp; 1270 CompressBzip2 comp;
1269 return comp.compress(d); 1271 return comp.compress(d);
1270*/ 1272 }
1271 } case PWM_COMPRESS_NONE: { 1273#endif
1274 case PWM_COMPRESS_NONE: {
1272 return true; 1275 return true;
1273 } default: { 1276 } default: {
1274 BUG(); 1277 BUG();
1275 } 1278 }
1276 } 1279 }
1277 return false; 1280 return false;
1278} 1281}
1279 1282
1280bool PwMDoc::decompressDta(string *d, char algo) 1283bool PwMDoc::decompressDta(string *d, char algo)
1281{ 1284{
1282 PWM_ASSERT(d); 1285 PWM_ASSERT(d);
1283 switch (algo) { 1286 switch (algo) {
1284 case PWM_COMPRESS_GZIP: { 1287 case PWM_COMPRESS_GZIP: {
1285 CompressGzip comp; 1288 CompressGzip comp;
1286 return comp.decompress(d); 1289 return comp.decompress(d);
1287 /*US } case PWM_COMPRESS_BZIP2: { 1290 }
1291#ifndef PWM_EMBEDDED
1292 case PWM_COMPRESS_BZIP2: {
1288 CompressBzip2 comp; 1293 CompressBzip2 comp;
1289 return comp.decompress(d); 1294 return comp.decompress(d);
1290 */ 1295 }
1291 } case PWM_COMPRESS_NONE: { 1296#endif
1297 case PWM_COMPRESS_NONE: {
1292 return true; 1298 return true;
1293 } 1299 }
1294 } 1300 }
1295 return false; 1301 return false;
1296} 1302}
1297 1303
1298PwMerror PwMDoc::encrypt(string *d, const QString *pw, QFile *f, char algo) 1304PwMerror PwMDoc::encrypt(string *d, const QString *pw, QFile *f, char algo)
1299{ 1305{
1300 PWM_ASSERT(d); 1306 PWM_ASSERT(d);
1301 PWM_ASSERT(pw); 1307 PWM_ASSERT(pw);
1302 PWM_ASSERT(f); 1308 PWM_ASSERT(f);
1303 1309
1304 size_t encSize; 1310 size_t encSize;
1305 byte *encrypted = 0; 1311 byte *encrypted = 0;
1306 1312
1307 switch (algo) { 1313 switch (algo) {
1308 case PWM_CRYPT_BLOWFISH: { 1314 case PWM_CRYPT_BLOWFISH: {
1309 Blowfish::padNull(d); 1315 Blowfish::padNull(d);
1310 encSize = d->length(); 1316 encSize = d->length();
1311 encrypted = new byte[encSize]; 1317 encrypted = new byte[encSize];
1312 Blowfish bf; 1318 Blowfish bf;
1313 if (bf.bf_setkey((byte *) pw->latin1(), pw->length())) { 1319 if (bf.bf_setkey((byte *) pw->latin1(), pw->length())) {
1314 delete [] encrypted; 1320 delete [] encrypted;
1315 return e_weakPw; 1321 return e_weakPw;
1316 } 1322 }
1317 bf.bf_encrypt((byte *) encrypted, (byte *) d->c_str(), encSize); 1323 bf.bf_encrypt((byte *) encrypted, (byte *) d->c_str(), encSize);
1318 break; 1324 break;
1319 } 1325 }
1320 case PWM_CRYPT_AES128: 1326 case PWM_CRYPT_AES128:
1321 /*... fall through */ 1327 /*... fall through */
1322 case PWM_CRYPT_AES192: 1328 case PWM_CRYPT_AES192:
1323 case PWM_CRYPT_AES256: 1329 case PWM_CRYPT_AES256:
1324 case PWM_CRYPT_3DES: 1330 case PWM_CRYPT_3DES:
1325 case PWM_CRYPT_TWOFISH: 1331 case PWM_CRYPT_TWOFISH:
1326 case PWM_CRYPT_TWOFISH128: { 1332 case PWM_CRYPT_TWOFISH128: {
1327 if (!LibGCryptIf::available()) 1333 if (!LibGCryptIf::available())
1328 return e_cryptNotImpl; 1334 return e_cryptNotImpl;
1329 LibGCryptIf gc; 1335 LibGCryptIf gc;
1330 PwMerror err; 1336 PwMerror err;
1331 unsigned char *plain = new unsigned char[d->length() + 1024]; 1337 unsigned char *plain = new unsigned char[d->length() + 1024];
1332 memcpy(plain, d->c_str(), d->length()); 1338 memcpy(plain, d->c_str(), d->length());
1333 err = gc.encrypt(&encrypted, 1339 err = gc.encrypt(&encrypted,
1334 &encSize, 1340 &encSize,
1335 plain, 1341 plain,
1336 d->length(), 1342 d->length(),
1337 reinterpret_cast<const unsigned char *>(pw->latin1()), 1343 reinterpret_cast<const unsigned char *>(pw->latin1()),
1338 pw->length(), 1344 pw->length(),
1339 algo); 1345 algo);
1340 delete [] plain; 1346 delete [] plain;
1341 if (err != e_success) 1347 if (err != e_success)
1342 return e_cryptNotImpl; 1348 return e_cryptNotImpl;
1343 break; 1349 break;
1344 } 1350 }
1345 default: { 1351 default: {
1346 delete_ifnot_null_array(encrypted); 1352 delete_ifnot_null_array(encrypted);
1347 return e_cryptNotImpl; 1353 return e_cryptNotImpl;
1348 } } 1354 } }
1349 1355
1350 // write encrypted data to file 1356 // write encrypted data to file
1351 if (f->writeBlock(reinterpret_cast<const char *>(encrypted), 1357 if (f->writeBlock(reinterpret_cast<const char *>(encrypted),
1352 static_cast<Q_ULONG>(encSize)) 1358 static_cast<Q_ULONG>(encSize))
1353 != static_cast<Q_LONG>(encSize)) { 1359 != static_cast<Q_LONG>(encSize)) {
1354 delete_ifnot_null_array(encrypted); 1360 delete_ifnot_null_array(encrypted);
1355 return e_writeFile; 1361 return e_writeFile;
@@ -3062,227 +3068,220 @@ PwMerror PwMDoc::syncronize(KSyncManager* manager, PwMDoc* syncLocal , PwMDoc* s
3062 if ( ! fullDateRange ) { 3068 if ( ! fullDateRange ) {
3063 if ( syncItemLocal->lastSyncDate != syncItemRemote->lastSyncDate ) { 3069 if ( syncItemLocal->lastSyncDate != syncItemRemote->lastSyncDate ) {
3064 3070
3065 fullDateRange = true; 3071 fullDateRange = true;
3066 qDebug("FULLDATE 3 %s %s", syncItemLocal->lastSyncDate.toString().latin1() , syncItemRemote->lastSyncDate.toString().latin1() ); 3072 qDebug("FULLDATE 3 %s %s", syncItemLocal->lastSyncDate.toString().latin1() , syncItemRemote->lastSyncDate.toString().latin1() );
3067 } 3073 }
3068 } 3074 }
3069 // fullDateRange = true; // debug only! 3075 // fullDateRange = true; // debug only!
3070 if ( fullDateRange ) 3076 if ( fullDateRange )
3071 mLastSync = QDateTime::currentDateTime().addDays( -100*365); 3077 mLastSync = QDateTime::currentDateTime().addDays( -100*365);
3072 else 3078 else
3073 mLastSync = syncItemLocal->lastSyncDate; 3079 mLastSync = syncItemLocal->lastSyncDate;
3074 3080
3075 3081
3076 qDebug("*************************** "); 3082 qDebug("*************************** ");
3077 qDebug("mLastSync %s ",mLastSync.toString().latin1() ); 3083 qDebug("mLastSync %s ",mLastSync.toString().latin1() );
3078 QStringList er = syncRemote->getIDEntryList(); 3084 QStringList er = syncRemote->getIDEntryList();
3079 PwMDataItem* inRemote ;//= er.first(); 3085 PwMDataItem* inRemote ;//= er.first();
3080 PwMDataItem* inLocal; 3086 PwMDataItem* inLocal;
3081 unsigned int catLocal, indexLocal; 3087 unsigned int catLocal, indexLocal;
3082 unsigned int catRemote, indexRemote; 3088 unsigned int catRemote, indexRemote;
3083 3089
3084 QString uid; 3090 QString uid;
3085 manager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count()); 3091 manager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count());
3086 3092
3087 int modulo = (er.count()/10)+1; 3093 int modulo = (er.count()/10)+1;
3088 unsigned int incCounter = 0; 3094 unsigned int incCounter = 0;
3089 while ( incCounter < er.count()) { 3095 while ( incCounter < er.count()) {
3090 if (manager->isProgressBarCanceled()) 3096 if (manager->isProgressBarCanceled())
3091 return e_syncError; 3097 return e_syncError;
3092 if ( incCounter % modulo == 0 ) 3098 if ( incCounter % modulo == 0 )
3093 manager->showProgressBar(incCounter); 3099 manager->showProgressBar(incCounter);
3094 3100
3095 uid = er[ incCounter ]; 3101 uid = er[ incCounter ];
3096 qDebug("sync uid %s from remote file", uid.latin1()); 3102 qDebug("sync uid %s from remote file", uid.latin1());
3097 3103
3098 qApp->processEvents(); 3104 qApp->processEvents();
3099 3105
3100 inLocal = syncLocal->findEntryByID( uid, &catLocal, &indexLocal ); 3106 inLocal = syncLocal->findEntryByID( uid, &catLocal, &indexLocal );
3101 inRemote = syncRemote->findEntryByID( uid, &catRemote, &indexRemote ); 3107 inRemote = syncRemote->findEntryByID( uid, &catRemote, &indexRemote );
3102 PWM_ASSERT(inRemote); 3108 PWM_ASSERT(inRemote);
3103 if ( inLocal != 0 ) { // maybe conflict - same uid in both files 3109 if ( inLocal != 0 ) { // maybe conflict - same uid in both files
3104 if ( (take = takePwMDataItem( inLocal, inRemote, mLastSync, mode, fullDateRange) ) ) { 3110 if ( (take = takePwMDataItem( inLocal, inRemote, mLastSync, mode, fullDateRange) ) ) {
3105 qDebug("take %d %s ", take, inLocal->desc.c_str()); 3111 qDebug("take %d %s ", take, inLocal->desc.c_str());
3106 if ( take == 3 ) 3112 if ( take == 3 )
3107 return e_syncError; 3113 return e_syncError;
3108 if ( take == 1 ) {// take local 3114 if ( take == 1 ) {// take local
3109 int oldlistpos = inRemote->listViewPos; 3115 int oldlistpos = inRemote->listViewPos;
3110 (*inRemote) = (*inLocal); 3116 (*inRemote) = (*inLocal);
3111 inRemote->listViewPos = oldlistpos; 3117 inRemote->listViewPos = oldlistpos;
3112 ++changedRemote; 3118 ++changedRemote;
3113 } else { // take == 2 take remote 3119 } else { // take == 2 take remote
3114 int oldlistpos = inLocal->listViewPos; 3120 int oldlistpos = inLocal->listViewPos;
3115 (*inLocal) = (*inRemote); 3121 (*inLocal) = (*inRemote);
3116 inLocal->listViewPos = oldlistpos; 3122 inLocal->listViewPos = oldlistpos;
3117 ++changedLocal; 3123 ++changedLocal;
3118 } 3124 }
3119 } 3125 }
3120 } else { // no conflict 3126 } else { // no conflict
3121 if ( inRemote->meta.update > mLastSync || mode == 5 ) { 3127 if ( inRemote->meta.update > mLastSync || mode == 5 ) {
3122 inRemote->meta.update = modifiedSync; 3128 inRemote->meta.update = modifiedSync;
3123 3129
3124 //first check if we have a matching category in the local file 3130 //first check if we have a matching category in the local file
3125 const string* remotecat = syncRemote->getCategory(catRemote); 3131 const string* remotecat = syncRemote->getCategory(catRemote);
3126 //US syncRemote->insertAddressee( inRemote, false );
3127 //US syncLocal->insertAddressee( inRemote, false );
3128 syncLocal->addEntry(remotecat->c_str(), inRemote, true, false); 3132 syncLocal->addEntry(remotecat->c_str(), inRemote, true, false);
3129 3133
3130 ++addedPasswordsLocal; 3134 ++addedPasswordsLocal;
3131 } else { 3135 } else {
3132 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR); 3136 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
3133 syncRemote->delEntry(catRemote, indexRemote, true); 3137 syncRemote->delEntry(catRemote, indexRemote, true);
3134 //USsyncRemote->removeAddressee( inRemote );
3135 ++deletedPasswordsRemote; 3138 ++deletedPasswordsRemote;
3136 } 3139 }
3137 } 3140 }
3138 3141
3139 ++incCounter; 3142 ++incCounter;
3140 } 3143 }
3141 3144
3142 3145
3143 er.clear(); 3146 er.clear();
3144 QStringList el = syncLocal->getIDEntryList(); 3147 QStringList el = syncLocal->getIDEntryList();
3145 modulo = (el.count()/10)+1; 3148 modulo = (el.count()/10)+1;
3146 3149
3147 manager->showProgressBar(0, i18n("Add / remove addressees"), el.count()); 3150 manager->showProgressBar(0, i18n("Add / remove addressees"), el.count());
3148 incCounter = 0; 3151 incCounter = 0;
3149 while ( incCounter < el.count()) { 3152 while ( incCounter < el.count()) {
3150 qApp->processEvents(); 3153 qApp->processEvents();
3151 if (manager->isProgressBarCanceled()) 3154 if (manager->isProgressBarCanceled())
3152 return e_syncError; 3155 return e_syncError;
3153 if ( incCounter % modulo == 0 ) 3156 if ( incCounter % modulo == 0 )
3154 manager->showProgressBar(incCounter); 3157 manager->showProgressBar(incCounter);
3155 uid = el[ incCounter ]; 3158 uid = el[ incCounter ];
3156 qDebug("sync uid %s from local file", uid.latin1()); 3159 qDebug("sync uid %s from local file", uid.latin1());
3157 3160
3158 inLocal = syncLocal->findEntryByID( uid, &catLocal, &indexLocal ); 3161 inLocal = syncLocal->findEntryByID( uid, &catLocal, &indexLocal );
3159 inRemote = syncRemote->findEntryByID( uid, &catRemote, &indexRemote ); 3162 inRemote = syncRemote->findEntryByID( uid, &catRemote, &indexRemote );
3160 PWM_ASSERT(inLocal); 3163 PWM_ASSERT(inLocal);
3161 3164
3162 if ( inRemote == 0 ) { 3165 if ( inRemote == 0 ) {
3163 if ( inLocal->meta.update < mLastSync && mode != 4 ) { 3166 if ( inLocal->meta.update < mLastSync && mode != 4 ) {
3164 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 3167 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
3165 syncLocal->delEntry(catLocal, indexLocal, true); 3168 syncLocal->delEntry(catLocal, indexLocal, true);
3166 //USsyncLocal->removeAddressee( inLocal );
3167 ++deletedPasswordsLocal; 3169 ++deletedPasswordsLocal;
3168 } else { 3170 } else {
3169 if ( ! manager->mWriteBackExistingOnly ) { 3171 if ( ! manager->mWriteBackExistingOnly ) {
3170 ++addedPasswordsRemote; 3172 ++addedPasswordsRemote;
3171 inLocal->meta.update = modifiedSync; 3173 inLocal->meta.update = modifiedSync;
3172 3174
3173 //first check if we have a matching category in the remote file 3175 //first check if we have a matching category in the remote file
3174 const string* localcat = syncLocal->getCategory(catLocal); 3176 const string* localcat = syncLocal->getCategory(catLocal);
3175 3177
3176 //USsyncLocal->insertAddressee( inLocal, false );
3177 PwMDataItem newEntry; 3178 PwMDataItem newEntry;
3178 newEntry = *inLocal; 3179 newEntry = *inLocal;
3179 inRemote = &newEntry; 3180 inRemote = &newEntry;
3180 3181
3181 //USsyncRemote->insertAddressee( inRemote, false ); 3182 //USsyncRemote->insertAddressee( inRemote, false );
3182 syncRemote->addEntry(localcat->c_str(), inRemote, true, false); 3183 syncRemote->addEntry(localcat->c_str(), inRemote, true, false);
3183 3184
3184 } 3185 }
3185 } 3186 }
3186 3187
3187 } 3188 }
3188 ++incCounter; 3189 ++incCounter;
3189 } 3190 }
3190 el.clear(); 3191 el.clear();
3191 manager->hideProgressBar(); 3192 manager->hideProgressBar();
3192 3193
3193 // Now write the info back into the sync data space of the files 3194 // Now write the info back into the sync data space of the files
3194 3195
3195 mLastSync = QDateTime::currentDateTime().addSecs( 1 ); 3196 mLastSync = QDateTime::currentDateTime().addSecs( 1 );
3196 // get rid of micro seconds 3197 // get rid of micro seconds
3197 QTime t = mLastSync.time(); 3198 QTime t = mLastSync.time();
3198 mLastSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 3199 mLastSync.setTime( QTime (t.hour (), t.minute (), t.second () ) );
3199 3200
3200 3201
3201 syncItemLocal->lastSyncDate = mLastSync; 3202 syncItemLocal->lastSyncDate = mLastSync;
3202 syncItemRemote->lastSyncDate = mLastSync; 3203 syncItemRemote->lastSyncDate = mLastSync;
3203 3204
3204 QString mes; 3205 QString mes;
3205 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedPasswordsLocal, addedPasswordsRemote, changedLocal, changedRemote, deletedPasswordsLocal, deletedPasswordsRemote ); 3206 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedPasswordsLocal, addedPasswordsRemote, changedLocal, changedRemote, deletedPasswordsLocal, deletedPasswordsRemote );
3206 if ( manager->mShowSyncSummary ) { 3207 if ( manager->mShowSyncSummary ) {
3207 KMessageBox::information(0, mes, i18n("PWM/Pi Synchronization") ); 3208 KMessageBox::information(0, mes, i18n("PWM/Pi Synchronization") );
3208 } 3209 }
3209 qDebug( mes ); 3210 qDebug( mes );
3210 return e_success; 3211 return e_success;
3211} 3212}
3212 3213
3213 3214
3214int PwMDoc::takePwMDataItem( PwMDataItem* local, PwMDataItem* remote, QDateTime lastSync, int mode , bool full ) 3215int PwMDoc::takePwMDataItem( PwMDataItem* local, PwMDataItem* remote, QDateTime lastSync, int mode , bool full )
3215{ 3216{
3216 // 0 equal 3217 // 0 equal
3217 // 1 take local 3218 // 1 take local
3218 // 2 take remote 3219 // 2 take remote
3219 // 3 cancel 3220 // 3 cancel
3220 QDateTime localMod = local->meta.update; 3221 QDateTime localMod = local->meta.update;
3221 QDateTime remoteMod = remote->meta.update; 3222 QDateTime remoteMod = remote->meta.update;
3222 3223
3223 //US QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
3224
3225 if ( localMod == remoteMod ) 3224 if ( localMod == remoteMod )
3226 return 0; 3225 return 0;
3227 3226
3228 qDebug(" %d %d conflict on %s %s ", mode, full, local->desc.c_str(), remote->desc.c_str() ); 3227 qDebug(" %d %d conflict on %s %s ", mode, full, local->desc.c_str(), remote->desc.c_str() );
3229 3228
3230 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , localMod, remote->lastModified().toString().latin1(), remoteMod); 3229 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , localMod, remote->lastModified().toString().latin1(), remoteMod);
3231 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() ); 3230 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
3232 //full = true; //debug only 3231 //full = true; //debug only
3233 if ( full ) { 3232 if ( full ) {
3234 bool equ = ( (*local) == (*remote) ); 3233 bool equ = ( (*local) == (*remote) );
3235 if ( equ ) { 3234 if ( equ ) {
3236 //qDebug("equal "); 3235 //qDebug("equal ");
3237 if ( mode < SYNC_PREF_FORCE_LOCAL ) 3236 if ( mode < SYNC_PREF_FORCE_LOCAL )
3238 return 0; 3237 return 0;
3239 3238
3240 }//else //debug only 3239 }//else //debug only
3241 //qDebug("not equal %s %s ", local->desc.c_str(), remote->desc.c_str()); 3240 //qDebug("not equal %s %s ", local->desc.c_str(), remote->desc.c_str());
3242 } 3241 }
3243 3242
3244 int result; 3243 int result;
3245 bool localIsNew; 3244 bool localIsNew;
3246 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); 3245 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
3247 3246
3248 if ( full && mode < SYNC_PREF_NEWEST ) 3247 if ( full && mode < SYNC_PREF_NEWEST )
3249 mode = SYNC_PREF_ASK; 3248 mode = SYNC_PREF_ASK;
3250 3249
3251 switch( mode ) { 3250 switch( mode ) {
3252 case SYNC_PREF_LOCAL: 3251 case SYNC_PREF_LOCAL:
3253 if ( lastSync > remoteMod ) 3252 if ( lastSync > remoteMod )
3254 return 1; 3253 return 1;
3255 if ( lastSync > localMod ) 3254 if ( lastSync > localMod )
3256 return 2; 3255 return 2;
3257 return 1; 3256 return 1;
3258 break; 3257 break;
3259 case SYNC_PREF_REMOTE: 3258 case SYNC_PREF_REMOTE:
3260 if ( lastSync > remoteMod ) 3259 if ( lastSync > remoteMod )
3261 return 1; 3260 return 1;
3262 if ( lastSync > localMod ) 3261 if ( lastSync > localMod )
3263 return 2; 3262 return 2;
3264 return 2; 3263 return 2;
3265 break; 3264 break;
3266 case SYNC_PREF_NEWEST: 3265 case SYNC_PREF_NEWEST:
3267 if ( localMod > remoteMod ) 3266 if ( localMod > remoteMod )
3268 return 1; 3267 return 1;
3269 else 3268 else
3270 return 2; 3269 return 2;
3271 break; 3270 break;
3272 case SYNC_PREF_ASK: 3271 case SYNC_PREF_ASK:
3273 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 3272 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
3274 if ( lastSync > remoteMod ) 3273 if ( lastSync > remoteMod )
3275 return 1; 3274 return 1;
3276 if ( lastSync > localMod ) 3275 if ( lastSync > localMod )
3277 return 2; 3276 return 2;
3278 localIsNew = localMod >= remoteMod; 3277 localIsNew = localMod >= remoteMod;
3279 //qDebug("conflict! ************************************** "); 3278 //qDebug("conflict! ************************************** ");
3280 { 3279 {
3281 PwMDataItemChooser acd ( *local,*remote, localIsNew , 0/*this*/ ); 3280 PwMDataItemChooser acd ( *local,*remote, localIsNew , 0/*this*/ );
3282 result = acd.executeD(localIsNew); 3281 result = acd.executeD(localIsNew);
3283 return result; 3282 return result;
3284 } 3283 }
3285 break; 3284 break;
3286 case SYNC_PREF_FORCE_LOCAL: 3285 case SYNC_PREF_FORCE_LOCAL:
3287 return 1; 3286 return 1;
3288 break; 3287 break;