X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fbuffersyncer.h;h=9ca0c0161256d1d0bda6618fe532bc19e2f41a11;hp=321b0486bf81ac8a1cb8b5871ef218cf38c3566e;hb=aec9c711900a443bfa7860fa86c6e9c86b81a3e7;hpb=0a43227b8cd44625f4881cc1545d42c8c8a4876c diff --git a/src/common/buffersyncer.h b/src/common/buffersyncer.h index 321b0486..9ca0c016 100644 --- a/src/common/buffersyncer.h +++ b/src/common/buffersyncer.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -23,6 +23,7 @@ #include "syncableobject.h" #include "types.h" +#include "message.h" class BufferSyncer : public SyncableObject { @@ -31,12 +32,26 @@ class BufferSyncer : public SyncableObject public: explicit BufferSyncer(QObject *parent); - explicit BufferSyncer(const QHash &lastSeenMsg, const QHash &markerLines, QObject *parent); + explicit BufferSyncer(const QHash &lastSeenMsg, const QHash &markerLines, const QHash &activities, const QHash &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()) { + emit bufferActivityChanged(buffer, activity(buffer)); + } + } + + void markHighlightCountsChanged() { + for (auto buffer : _highlightCounts.keys()) { + emit highlightCountChanged(buffer, highlightCount(buffer)); + } + } public slots: QVariantList initLastSeenMsg() const; @@ -45,9 +60,28 @@ public slots: QVariantList initMarkerLines() const; void initSetMarkerLines(const QVariantList &); + 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); } + virtual inline void setBufferActivity(BufferId buffer, int activity) { + auto flags = Message::Types(activity); + SYNC(ARG(buffer), ARG(activity)); + _bufferActivities[buffer] = flags; + 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); @@ -69,6 +103,8 @@ signals: 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); @@ -82,6 +118,8 @@ protected: private: QHash _lastSeenMsg; QHash _markerLines; + QHash _bufferActivities; + QHash _highlightCounts; };