properly rewind oidentd config file
[quassel.git] / src / common / buffersyncer.h
index f847093..716178a 100644 (file)
 #include "types.h"
 
 class BufferSyncer : public SyncableObject {
+  SYNCABLE_OBJECT
   Q_OBJECT
 
 public:
   explicit BufferSyncer(QObject *parent);
-  explicit BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, QObject *parent);
+  explicit BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, const QHash<BufferId, MsgId> &markerLines, QObject *parent);
 
   inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
 
   MsgId lastSeenMsg(BufferId buffer) const;
+  MsgId markerLine(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); }
+  QVariantList initMarkerLines() const;
+  void initSetMarkerLines(const QVariantList &);
 
-  virtual inline void requestRemoveBuffer(BufferId buffer) { emit removeBufferRequested(buffer); }
+  virtual inline void requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) { REQUEST(ARG(buffer), ARG(msgId)) }
+  virtual inline void requestSetMarkerLine(BufferId buffer, const MsgId &msgId) { REQUEST(ARG(buffer), ARG(msgId)) setMarkerLine(buffer, msgId); }
+
+  virtual inline void requestRemoveBuffer(BufferId buffer) { REQUEST(ARG(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 requestRenameBuffer(BufferId buffer, QString newName) { REQUEST(ARG(buffer), ARG(newName)) }
+  virtual inline void renameBuffer(BufferId buffer, QString newName) { SYNC(ARG(buffer), ARG(newName)) emit bufferRenamed(buffer, newName); }
 
-  virtual inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) { emit mergeBuffersPermanentlyRequested(buffer1, buffer2); }
+  virtual inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) { emit REQUEST(ARG(buffer1), ARG(buffer2)) }
   virtual void mergeBuffersPermanently(BufferId buffer1, BufferId buffer2);
 
+  virtual inline void requestPurgeBufferIds() { REQUEST(NO_ARG); }
+
+  virtual inline void requestMarkBufferAsRead(BufferId buffer) { REQUEST(ARG(buffer)) emit bufferMarkedAsRead(buffer); }
+  virtual inline void markBufferAsRead(BufferId buffer) { SYNC(ARG(buffer)) emit bufferMarkedAsRead(buffer); }
+
 signals:
   void lastSeenMsgSet(BufferId buffer, const MsgId &msgId);
-  void setLastSeenMsgRequested(BufferId buffer, const MsgId &msgId);
-
-  void removeBufferRequested(BufferId buffer);
+  void markerLineSet(BufferId buffer, const MsgId &msgId);
   void bufferRemoved(BufferId buffer);
-
-  void renameBufferRequested(BufferId buffer, QString newName);
   void bufferRenamed(BufferId buffer, QString newName);
-
-  void mergeBuffersPermanentlyRequested(BufferId buffer1, BufferId buffer2);
   void buffersPermanentlyMerged(BufferId buffer1, BufferId buffer2);
+  void bufferMarkedAsRead(BufferId buffer);
 
 protected slots:
   bool setLastSeenMsg(BufferId buffer, const MsgId &msgId);
+  bool setMarkerLine(BufferId buffer, const MsgId &msgId);
+
+protected:
+  inline QList<BufferId> lastSeenBufferIds() const { return _lastSeenMsg.keys(); }
+  inline QList<BufferId> markerLineBufferIds() const { return _markerLines.keys(); }
+  inline QHash<BufferId, MsgId> markerLines() const { return _markerLines; }
 
 private:
   QHash<BufferId, MsgId> _lastSeenMsg;
+  QHash<BufferId, MsgId> _markerLines;
 };
 
 #endif