+ 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 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 markerLineSet(BufferId buffer, const MsgId &msgId);
+ void bufferRemoved(BufferId buffer);
+ void bufferRenamed(BufferId buffer, QString newName);
+ void buffersPermanentlyMerged(BufferId buffer1, BufferId buffer2);
+ void bufferMarkedAsRead(BufferId buffer);
+ void bufferActivityChanged(BufferId, Message::Types);
+ void highlightCountChanged(BufferId, int);
+
+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;
+ QHash<BufferId, Message::Types> _bufferActivities;
+ QHash<BufferId, int> _highlightCounts;