From 558260f52de5a9b1364f5672ace17554efc10a74 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Mon, 5 Jan 2009 18:20:15 +0100 Subject: [PATCH] bufferviews are now saved periodically --- src/common/buffersyncer.cpp | 5 +++++ src/common/buffersyncer.h | 2 ++ src/core/corebuffersyncer.cpp | 2 +- src/core/corebufferviewmanager.cpp | 2 +- src/core/corebufferviewmanager.h | 3 ++- src/core/coresession.cpp | 21 +++++---------------- 6 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/common/buffersyncer.cpp b/src/common/buffersyncer.cpp index c6fa1e79..3392403f 100644 --- a/src/common/buffersyncer.cpp +++ b/src/common/buffersyncer.cpp @@ -25,6 +25,11 @@ BufferSyncer::BufferSyncer(QObject *parent) { } +BufferSyncer::BufferSyncer(const QHash &lastSeenMsg, QObject *parent) + : SyncableObject(parent), + _lastSeenMsg(lastSeenMsg) +{ +} MsgId BufferSyncer::lastSeenMsg(BufferId buffer) const { if(_lastSeenMsg.contains(buffer)) diff --git a/src/common/buffersyncer.h b/src/common/buffersyncer.h index f57caaec..40df958c 100644 --- a/src/common/buffersyncer.h +++ b/src/common/buffersyncer.h @@ -29,6 +29,8 @@ class BufferSyncer : public SyncableObject { public: explicit BufferSyncer(QObject *parent); + explicit BufferSyncer(const QHash &lastSeenMsg, QObject *parent); + inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; } MsgId lastSeenMsg(BufferId buffer) const; diff --git a/src/core/corebuffersyncer.cpp b/src/core/corebuffersyncer.cpp index 5f035a91..2334e9dc 100644 --- a/src/core/corebuffersyncer.cpp +++ b/src/core/corebuffersyncer.cpp @@ -26,7 +26,7 @@ #include "ircchannel.h" CoreBufferSyncer::CoreBufferSyncer(CoreSession *parent) - : BufferSyncer(parent), + : BufferSyncer(Core::bufferLastSeenMsgIds(parent->user()), parent), _coreSession(parent) { } diff --git a/src/core/corebufferviewmanager.cpp b/src/core/corebufferviewmanager.cpp index bf18feef..5dd179a0 100644 --- a/src/core/corebufferviewmanager.cpp +++ b/src/core/corebufferviewmanager.cpp @@ -40,7 +40,7 @@ CoreBufferViewManager::CoreBufferViewManager(SignalProxy *proxy, CoreSession *pa } } -CoreBufferViewManager::~CoreBufferViewManager() { +void CoreBufferViewManager::saveBufferViews() { QVariantMap views; BufferViewConfigHash::const_iterator iter = bufferViewConfigHash().constBegin(); diff --git a/src/core/corebufferviewmanager.h b/src/core/corebufferviewmanager.h index c2510021..079e39b3 100644 --- a/src/core/corebufferviewmanager.h +++ b/src/core/corebufferviewmanager.h @@ -30,7 +30,6 @@ class CoreBufferViewManager : public BufferViewManager { public: CoreBufferViewManager(SignalProxy *proxy, CoreSession *parent); - ~CoreBufferViewManager(); inline virtual const QMetaObject *syncMetaObject() const { return &BufferViewManager::staticMetaObject; } @@ -40,6 +39,8 @@ public slots: virtual void requestDeleteBufferView(int bufferViewId); virtual void requestDeleteBufferViews(const QVariantList &bufferViews); + void saveBufferViews(); + private: CoreSession *_coreSession; }; diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 557c9a83..491e99a8 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -51,7 +51,6 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) _coreInfo(this), scriptEngine(new QScriptEngine(this)) { - SignalProxy *p = signalProxy(); connect(p, SIGNAL(peerRemoved(QIODevice *)), this, SLOT(removeClient(QIODevice *))); @@ -75,29 +74,18 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) loadSettings(); initScriptEngine(); - // init BufferSyncer - QHash lastSeenHash = Core::bufferLastSeenMsgIds(user()); - foreach(BufferId id, lastSeenHash.keys()) - _bufferSyncer->requestSetLastSeenMsg(id, lastSeenHash[id]); - connect(&(Core::instance()->syncTimer()), SIGNAL(timeout()), _bufferSyncer, SLOT(storeDirtyIds())); - p->synchronize(_bufferSyncer); - + connect(&(Core::instance()->syncTimer()), SIGNAL(timeout()), _bufferViewManager, SLOT(saveBufferViews())); - // init alias manager + p->synchronize(_bufferSyncer); p->synchronize(&aliasManager()); - - // init BacklogManager p->synchronize(_backlogManager); - - // init IrcListHelper p->synchronize(ircListHelper()); - - // init CoreInfo p->synchronize(&_coreInfo); // Restore session state - if(restoreState) restoreSessionState(); + if(restoreState) + restoreSessionState(); emit initialized(); } @@ -159,6 +147,7 @@ void CoreSession::loadSettings() { void CoreSession::saveSessionState() const { _bufferSyncer->storeDirtyIds(); + _bufferViewManager->saveBufferViews(); } void CoreSession::restoreSessionState() { -- 2.20.1