From: Sebastian Goth Date: Mon, 21 Sep 2009 17:39:52 +0000 (+0200) Subject: Periodically save all settings of a coresession X-Git-Tag: 0.5-rc2~19 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=22d6ab71ce70b20f2d2657a27e968570b3dcb837 Periodically save all settings of a coresession Streamline all managers to get saved via syncTimer and on session shutdown. --- diff --git a/src/core/corealiasmanager.cpp b/src/core/corealiasmanager.cpp index 68c38814..b892a04a 100644 --- a/src/core/corealiasmanager.cpp +++ b/src/core/corealiasmanager.cpp @@ -40,7 +40,7 @@ CoreAliasManager::CoreAliasManager(CoreSession *parent) loadDefaults(); } -CoreAliasManager::~CoreAliasManager() { +void CoreAliasManager::save() const { CoreSession *session = qobject_cast(parent()); if(!session) { qWarning() << "CoreAliasManager: unable to save Aliases. Parent is not a Coresession!"; diff --git a/src/core/corealiasmanager.h b/src/core/corealiasmanager.h index fe85fced..79641df0 100644 --- a/src/core/corealiasmanager.h +++ b/src/core/corealiasmanager.h @@ -31,10 +31,11 @@ class CoreAliasManager : public AliasManager { public: explicit CoreAliasManager(CoreSession *parent); - ~CoreAliasManager(); inline virtual const QMetaObject *syncMetaObject() const { return &AliasManager::staticMetaObject; } + void save() const; + protected: const Network *network(NetworkId) const; diff --git a/src/core/coreignorelistmanager.cpp b/src/core/coreignorelistmanager.cpp index 140d1238..0d9901ff 100644 --- a/src/core/coreignorelistmanager.cpp +++ b/src/core/coreignorelistmanager.cpp @@ -40,7 +40,7 @@ CoreIgnoreListManager::CoreIgnoreListManager(CoreSession *parent) //loadDefaults(); } -CoreIgnoreListManager::~CoreIgnoreListManager() { +void CoreIgnoreListManager::save() const { CoreSession *session = qobject_cast(parent()); if(!session) { qWarning() << "CoreIgnoreListManager: unable to save IgnoreList. Parent is not a Coresession!"; diff --git a/src/core/coreignorelistmanager.h b/src/core/coreignorelistmanager.h index e53124b9..32e78b9f 100644 --- a/src/core/coreignorelistmanager.h +++ b/src/core/coreignorelistmanager.h @@ -31,9 +31,9 @@ class CoreIgnoreListManager : public IgnoreListManager { public: explicit CoreIgnoreListManager(CoreSession *parent); - ~CoreIgnoreListManager(); inline virtual const QMetaObject *syncMetaObject() const { return &IgnoreListManager::staticMetaObject; } + void save() const; public slots: virtual inline void requestToggleIgnoreRule(const QString &ignoreRule) { toggleIgnoreRule(ignoreRule); } diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 371d7add..433abbff 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -84,8 +84,8 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) loadSettings(); initScriptEngine(); - connect(&(Core::instance()->syncTimer()), SIGNAL(timeout()), _bufferSyncer, SLOT(storeDirtyIds())); - connect(&(Core::instance()->syncTimer()), SIGNAL(timeout()), _bufferViewManager, SLOT(saveBufferViews())); + // periodically save our session state + connect(&(Core::instance()->syncTimer()), SIGNAL(timeout()), this, SLOT(saveSessionState())); p->synchronize(_bufferSyncer); p->synchronize(&aliasManager()); @@ -154,6 +154,8 @@ void CoreSession::saveSessionState() const { _bufferSyncer->storeDirtyIds(); _bufferViewManager->saveBufferViews(); _networkConfig->save(); + _aliasManager.save(); + _ignoreListManager.save(); } void CoreSession::restoreSessionState() { diff --git a/src/core/coresession.h b/src/core/coresession.h index 7abd0f11..997d1f53 100644 --- a/src/core/coresession.h +++ b/src/core/coresession.h @@ -70,7 +70,6 @@ public: // void attachNetworkConnection(NetworkConnection *conn); //! Return necessary data for restoring the session after restarting the core - void saveSessionState() const; void restoreSessionState(); public slots: @@ -149,6 +148,8 @@ private slots: void updateIdentityBySender(); + void saveSessionState() const; + protected: virtual void customEvent(QEvent *event);