{
}
+BufferSyncer::BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, QObject *parent)
+ : SyncableObject(parent),
+ _lastSeenMsg(lastSeenMsg)
+{
+}
MsgId BufferSyncer::lastSeenMsg(BufferId buffer) const {
if(_lastSeenMsg.contains(buffer))
public:
explicit BufferSyncer(QObject *parent);
+ explicit BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, QObject *parent);
+
inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
MsgId lastSeenMsg(BufferId buffer) const;
public:
CoreBufferViewManager(SignalProxy *proxy, CoreSession *parent);
- ~CoreBufferViewManager();
inline virtual const QMetaObject *syncMetaObject() const { return &BufferViewManager::staticMetaObject; }
virtual void requestDeleteBufferView(int bufferViewId);
virtual void requestDeleteBufferViews(const QVariantList &bufferViews);
+ void saveBufferViews();
+
private:
CoreSession *_coreSession;
};
_coreInfo(this),
scriptEngine(new QScriptEngine(this))
{
-
SignalProxy *p = signalProxy();
connect(p, SIGNAL(peerRemoved(QIODevice *)), this, SLOT(removeClient(QIODevice *)));
loadSettings();
initScriptEngine();
- // init BufferSyncer
- QHash<BufferId, MsgId> 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();
}
void CoreSession::saveSessionState() const {
_bufferSyncer->storeDirtyIds();
+ _bufferViewManager->saveBufferViews();
}
void CoreSession::restoreSessionState() {