Periodically save all settings of a coresession
authorSebastian Goth <seezer@roath.org>
Mon, 21 Sep 2009 17:39:52 +0000 (19:39 +0200)
committerSebastian Goth <seezer@roath.org>
Mon, 21 Sep 2009 17:39:52 +0000 (19:39 +0200)
Streamline all managers to get saved via syncTimer and on session shutdown.

src/core/corealiasmanager.cpp
src/core/corealiasmanager.h
src/core/coreignorelistmanager.cpp
src/core/coreignorelistmanager.h
src/core/coresession.cpp
src/core/coresession.h

index 68c3881..b892a04 100644 (file)
@@ -40,7 +40,7 @@ CoreAliasManager::CoreAliasManager(CoreSession *parent)
     loadDefaults();
 }
 
-CoreAliasManager::~CoreAliasManager() {
+void CoreAliasManager::save() const {
   CoreSession *session = qobject_cast<CoreSession *>(parent());
   if(!session) {
     qWarning() << "CoreAliasManager: unable to save Aliases. Parent is not a Coresession!";
index fe85fce..79641df 100644 (file)
@@ -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;
 
index 140d123..0d9901f 100644 (file)
@@ -40,7 +40,7 @@ CoreIgnoreListManager::CoreIgnoreListManager(CoreSession *parent)
     //loadDefaults();
 }
 
-CoreIgnoreListManager::~CoreIgnoreListManager() {
+void CoreIgnoreListManager::save() const {
   CoreSession *session = qobject_cast<CoreSession *>(parent());
   if(!session) {
     qWarning() << "CoreIgnoreListManager: unable to save IgnoreList. Parent is not a Coresession!";
index e53124b..32e78b9 100644 (file)
@@ -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); }
index 371d7ad..433abbf 100644 (file)
@@ -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() {
index 7abd0f1..997d1f5 100644 (file)
@@ -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);