Store highlight status per buffer coreside
[quassel.git] / src / common / buffersyncer.h
index 3dc706e..9ca0c01 100644 (file)
@@ -32,13 +32,14 @@ class BufferSyncer : public SyncableObject
 
 public:
     explicit BufferSyncer(QObject *parent);
-    explicit BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, const QHash<BufferId, MsgId> &markerLines, const QHash<BufferId, Message::Types> &activities, QObject *parent);
+    explicit BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, const QHash<BufferId, MsgId> &markerLines, const QHash<BufferId, Message::Types> &activities, const QHash<BufferId, int> &highlightCounts, QObject *parent);
 
     inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
 
     MsgId lastSeenMsg(BufferId buffer) const;
     MsgId markerLine(BufferId buffer) const;
     Message::Types activity(BufferId buffer) const;
+    int highlightCount(BufferId buffer) const;
 
     void markActivitiesChanged() {
         for (auto buffer : _bufferActivities.keys()) {
@@ -46,6 +47,12 @@ public:
         }
     }
 
+    void markHighlightCountsChanged() {
+        for (auto buffer : _highlightCounts.keys()) {
+            emit highlightCountChanged(buffer, highlightCount(buffer));
+        }
+    }
+
 public slots:
     QVariantList initLastSeenMsg() const;
     void initSetLastSeenMsg(const QVariantList &);
@@ -56,6 +63,9 @@ public slots:
     QVariantList initActivities() const;
     void initSetActivities(const QVariantList &);
 
+    QVariantList initHighlightCounts() const;
+    void initSetHighlightCounts(const QVariantList &);
+
     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); }
 
@@ -66,6 +76,12 @@ public slots:
         emit bufferActivityChanged(buffer, flags);
     }
 
+    virtual inline void setHighlightCount(BufferId buffer, int count) {
+        SYNC(ARG(buffer), ARG(count));
+        _highlightCounts[buffer] = count;
+        emit highlightCountChanged(buffer, count);
+    }
+
     virtual inline void requestRemoveBuffer(BufferId buffer) { REQUEST(ARG(buffer)) }
     virtual void removeBuffer(BufferId buffer);
 
@@ -88,6 +104,7 @@ signals:
     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);
@@ -102,6 +119,7 @@ private:
     QHash<BufferId, MsgId> _lastSeenMsg;
     QHash<BufferId, MsgId> _markerLines;
     QHash<BufferId, Message::Types> _bufferActivities;
+    QHash<BufferId, int> _highlightCounts;
 };