bufferviews are now saved periodically
[quassel.git] / src / common / buffersyncer.h
index a7e7886..40df958 100644 (file)
 #ifndef BUFFERSYNCER_H_
 #define BUFFERSYNCER_H_
 
-#include <QDateTime>
-
 #include "syncableobject.h"
 #include "types.h"
 
 class BufferSyncer : public SyncableObject {
   Q_OBJECT
 
-  public:
-    explicit BufferSyncer(QObject *parent);
+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 slots:
+  QVariantList initLastSeenMsg() const;
+  void initSetLastSeenMsg(const QVariantList &);
+
+  virtual inline void requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) { emit setLastSeenMsgRequested(buffer, msgId); }
+
+  virtual inline void requestRemoveBuffer(BufferId buffer) { emit removeBufferRequested(buffer); }
+  virtual void removeBuffer(BufferId buffer);
+
+  virtual inline void requestRenameBuffer(BufferId buffer, QString newName) { emit renameBufferRequested(buffer, newName); }
+  virtual inline void renameBuffer(BufferId buffer, QString newName) { emit bufferRenamed(buffer, newName); }
+
+  virtual inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) { emit mergeBuffersPermanentlyRequested(buffer1, buffer2); }
+  virtual void mergeBuffersPermanently(BufferId buffer1, BufferId buffer2);
 
-    QDateTime lastSeen(BufferId buffer) const;
+signals:
+  void lastSeenMsgSet(BufferId buffer, const MsgId &msgId);
+  void setLastSeenMsgRequested(BufferId buffer, const MsgId &msgId);
 
-  public slots:
-    QVariantList initLastSeen() const;
-    void initSetLastSeen(const QVariantList &);
+  void removeBufferRequested(BufferId buffer);
+  void bufferRemoved(BufferId buffer);
 
-    void requestSetLastSeen(BufferId buffer, const QDateTime &time);
-    void requestRemoveBuffer(BufferId buffer);
-    void removeBuffer(BufferId buffer);
+  void renameBufferRequested(BufferId buffer, QString newName);
+  void bufferRenamed(BufferId buffer, QString newName);
 
-  signals:
-    void lastSeenSet(BufferId buffer, const QDateTime &time);
-    void setLastSeenRequested(BufferId buffer, const QDateTime &time);
-    void removeBufferRequested(BufferId buffer);
-    void bufferRemoved(BufferId buffer);
+  void mergeBuffersPermanentlyRequested(BufferId buffer1, BufferId buffer2);
+  void buffersPermanentlyMerged(BufferId buffer1, BufferId buffer2);
 
-  private slots:
-    bool setLastSeen(BufferId buffer, const QDateTime &time);
+protected slots:
+  bool setLastSeenMsg(BufferId buffer, const MsgId &msgId);
 
-  private:
-    QMap<BufferId, QDateTime> _lastSeen;
+private:
+  QHash<BufferId, MsgId> _lastSeenMsg;
 };
 
 #endif