summaryrefslogtreecommitdiffabout
path: root/pwmanager
Side-by-side diff
Diffstat (limited to 'pwmanager') (more/less context) (ignore whitespace changes)
-rw-r--r--pwmanager/pwmanager/pwm.cpp22
-rw-r--r--pwmanager/pwmanager/pwm.h1
-rw-r--r--pwmanager/pwmanager/pwmdoc.cpp92
-rw-r--r--pwmanager/pwmanager/pwmdoc.h25
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