-rw-r--r-- | pwmanager/pwmanager/pwm.cpp | 22 | ||||
-rw-r--r-- | pwmanager/pwmanager/pwm.h | 1 | ||||
-rw-r--r-- | pwmanager/pwmanager/pwmdoc.cpp | 92 | ||||
-rw-r--r-- | pwmanager/pwmanager/pwmdoc.h | 25 |
4 files changed, 132 insertions, 8 deletions
diff --git a/pwmanager/pwmanager/pwm.cpp b/pwmanager/pwmanager/pwm.cpp index ac2e66e..014e809 100644 --- a/pwmanager/pwmanager/pwm.cpp +++ b/pwmanager/pwmanager/pwm.cpp @@ -1313,43 +1313,53 @@ void PwM::createAboutData_slot() "Olivier Sessink - gpasman@nl.linux.org\n" "The libgcrypt developers -\nBlowfish and SHA1 algorithms\nftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/\n" "Troy Engel - tengel@sonic.net\n" "Wickey - wickey@gmx.at\n" "Ian MacGregor - original documentation author.\n" ); } //this are the overwritten callbackmethods from the syncinterface bool PwM::sync(KSyncManager* manager, QString filename, int mode) { - return true; -} + PWM_ASSERT(curDoc()); -bool PwM::syncExternal(KSyncManager* manager, QString resource) -{ - return true; + bool ret = curDoc()->sync(manager, filename, mode); + + if (ret == true) { + //US BUG: what can we call here to update the view of the current doc? + //mViewManager->refreshView(); + } + + return ret; } -//called by the syncmanager to indicate that the work has to marked as dirty. +//called by the syncmanager to indicate that the work has to be marked as dirty. void PwM::sync_setModified() { + PWM_ASSERT(curDoc()); + curDoc()->sync_setModified(); } //called by the syncmanager to ask if the dirty flag is set. bool PwM::sync_isModified() { + PWM_ASSERT(curDoc()); + return curDoc()->sync_isModified(); } //called by the syncmanager to indicate that the work has to be saved. void PwM::sync_save() { + PWM_ASSERT(curDoc()); + return curDoc()->sync_save(); } #endif #ifndef PWM_EMBEDDED #include "pwm.moc" #endif diff --git a/pwmanager/pwmanager/pwm.h b/pwmanager/pwmanager/pwm.h index 2fe7352..7c6bf0d 100644 --- a/pwmanager/pwmanager/pwm.h +++ b/pwmanager/pwmanager/pwm.h @@ -262,25 +262,24 @@ protected: /** force quit this window? */ bool forceQuit; /** force minimize this window to the tray */ bool forceMinimizeToTray; private: #ifdef PWM_EMBEDDED //this are the overwritten callbackmethods from the syncinterface virtual bool sync(KSyncManager* manager, QString filename, int mode); - virtual bool syncExternal(KSyncManager* manager, QString resource); //called by the syncmanager to indicate that the work has to marked as dirty. virtual void sync_setModified(); //called by the syncmanager to ask if the dirty flag is set. virtual bool sync_isModified(); //called by the syncmanager to indicate that the work has to be saved. virtual void sync_save(); // LR ******************************* // sync stuff! QPopupMenu *syncPopup; KSyncManager* syncManager; diff --git a/pwmanager/pwmanager/pwmdoc.cpp b/pwmanager/pwmanager/pwmdoc.cpp index 1b6d36f..82fc746 100644 --- a/pwmanager/pwmanager/pwmdoc.cpp +++ b/pwmanager/pwmanager/pwmdoc.cpp @@ -2772,15 +2772,107 @@ bool PwMDoc::tryDelete() } else { // cancel operation goto out_ignore; } } out_accept: deleted = true; delete this; return true; out_ignore: return false; } + + +#ifdef PWM_EMBEDDED +//US ENH: this is the magic function that syncronizes the this doc with the remote doc +PwMerror PwMDoc::syncronize(KSyncManager* manager, PwMDoc* syncLocal , PwMDoc* syncRemote, int mode ) +{ + bool syncOK = true; + int addedPasswordsLocal = 0; + int addedPasswordsRemote = 0; + int deletedPasswordsRemote = 0; + int deletedPasswordsLocal = 0; + int changedLocal = 0; + int changedRemote = 0; + + QString mCurrentSyncName = manager->getCurrentSyncName(); + QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); + + + + + + + + + + return e_success; +} + + + +//this are the overwritten callbackmethods from the syncinterface +bool PwMDoc::sync(KSyncManager* manager, QString filename, int mode) +{ + QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); + + // construct on the stack = automatic cleanup. + PwMDoc syncTarget(this, "synctarget"); + + PwMerror err = syncTarget.openDoc(&filename, 2 /*== deeplocked*/); + + if (err != e_success) + return false; + + qDebug("PWM file loaded %s,sync mode %d",filename.latin1(), mode ); + + + err = syncronize(manager, this, &syncTarget, mode ); + + if (err == e_success) { + if ( PWMPrefs::instance()->mWriteBackFile ) { + qDebug("Saving remote PWManager file"); + err = syncTarget.saveDoc(conf()->confGlobCompression()); + if (err != e_success) + return false; + + } + + flagDirty(); + return true; + } + else { + return false; + } +} + +//called by the syncmanager to indicate that the work has to marked as dirty. +void PwMDoc::sync_setModified() +{ + flagDirty(); +} + +//called by the syncmanager to ask if the dirty flag is set. +bool PwMDoc::sync_isModified() +{ + return isDirty(); +} + +//called by the syncmanager to indicate that the work has to be saved. +void PwMDoc::sync_save() +{ + PwMerror ret = saveDoc(conf()->confGlobCompression()); +} + +#endif + + + + + + + + #ifndef PWM_EMBEDDED #include "pwmdoc.moc" #endif diff --git a/pwmanager/pwmanager/pwmdoc.h b/pwmanager/pwmanager/pwmdoc.h index 193247e..ea4d687 100644 --- a/pwmanager/pwmanager/pwmdoc.h +++ b/pwmanager/pwmanager/pwmdoc.h @@ -50,24 +50,25 @@ #include "pwmdocui.h" #include <qobject.h> #include <qtimer.h> #include <qdatetime.h> #include <kprocess.h> #ifndef PWM_EMBEDDED #include "configuration.h" #else #include <kapplication.h> +#include <ksyncmanager.h> #endif #include <string> #include <vector> #include <utility> using std::vector; using std::string; using std::pair; /* used in findEntry() function */ #define SEARCH_IN_DESC (1) @@ -326,25 +327,28 @@ protected: QTimer *autoLockTimer; /** timer object for the metaCheck timer */ QTimer *metaCheckTimer; /** lock counter for the mpw timer */ unsigned int mpwLock; /** lock counter for the autoLock timer */ unsigned int autoLockLock; /** lock counter for the metaCheck timer */ unsigned int metaCheckLock; }; /** Document class for PwM */ -class PwMDoc : public PwMDocUi +//US ENH: derived from KSyncInterfaces, to get called by PwM when a sync is required. +// But PwMDoc is handling the sync by itself. +class PwMDoc : public PwMDocUi, public KSyncInterface + { Q_OBJECT friend class DocTimer; public: /** construtor */ PwMDoc(QObject* parent = 0, const char *name = 0); /** destructor */ ~PwMDoc(); /** returns a pointer to a list of all open documents */ static PwMDocList* getOpenDocList() @@ -687,15 +691,34 @@ protected: bool getDocStatFlag(unsigned int statFlag) const { return (curDocStat & statFlag); } /** set the "currentPassword" */ void setCurrentPw(const QString &pw) { currentPw = pw; setDocStatFlag(DOC_STAT_DISK_DIRTY); } /** make a backup-copy of the given file */ bool backupFile(const QString &filePath); /** copy a file from src to dst */ bool copyFile(const QString &src, const QString &dst); + + + public: +#ifdef PWM_EMBEDDED + //US ENH: this is the magic function that syncronizes the local doc with the remote doc. + PwMerror syncronize(KSyncManager* manager, PwMDoc* syncLocal, PwMDoc* syncRemote, int mode ); + + + //the following methods are the overwritten callbackmethods from the syncinterface + virtual bool sync(KSyncManager* manager, QString filename, int mode); + + //called by the syncmanager to indicate that the work has to be marked as dirty. + virtual void sync_setModified(); + //called by the syncmanager to ask if the dirty flag is set. + virtual bool sync_isModified(); + //called by the syncmanager to indicate that the work has to be saved. + virtual void sync_save(); +#endif + }; #endif |