X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fbuffersyncer.h;h=d6535e2949b57b0476caa8034dcb294f80fde375;hp=0973828f4c0d3b6e3f70208c9cb7a090cc070982;hb=b134e777b822b929a78455fd92146bf7443e9aa1;hpb=aadd816dbcae859ce9ac5b44d609bd3094b3d6fc diff --git a/src/common/buffersyncer.h b/src/common/buffersyncer.h index 0973828f..d6535e29 100644 --- a/src/common/buffersyncer.h +++ b/src/common/buffersyncer.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2020 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,64 +15,137 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef BUFFERSYNCER_H_ -#define BUFFERSYNCER_H_ +#pragma once +#include "common-export.h" + +#include "message.h" #include "syncableobject.h" #include "types.h" -class BufferSyncer : public SyncableObject { - Q_OBJECT +class COMMON_EXPORT BufferSyncer : public SyncableObject +{ + Q_OBJECT + SYNCABLE_OBJECT public: - explicit BufferSyncer(QObject *parent); - explicit BufferSyncer(const QHash &lastSeenMsg, QObject *parent); - - inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; } - - MsgId lastSeenMsg(BufferId buffer) const; + explicit BufferSyncer(QObject* parent); + explicit BufferSyncer(QHash lastMsg, + QHash lastSeenMsg, + QHash markerLines, + QHash activities, + QHash highlightCounts, + QObject* parent); + + MsgId lastSeenMsg(BufferId buffer) const; + MsgId lastMsg(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; - 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); - - virtual inline void requestPurgeBufferIds() { emit purgeBufferIdsRequested(); } + QVariantList initLastMsg() const; + void initSetLastMsg(const QVariantList&); + + QVariantList initLastSeenMsg() const; + void initSetLastSeenMsg(const QVariantList&); + + QVariantList initMarkerLines() const; + void initSetMarkerLines(const QVariantList&); + + QVariantList initActivities() const; + void initSetActivities(const QVariantList&); + + QVariantList initHighlightCounts() const; + void initSetHighlightCounts(const QVariantList&); + + virtual inline void setLastMsg(BufferId buffer, const MsgId& msgId) + { + SYNC(ARG(buffer), ARG(msgId)); + _lastMsg[buffer] = msgId; + emit lastMsgSet(buffer, msgId); + } + + 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); + + 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 setLastSeenMsgRequested(BufferId buffer, const MsgId &msgId); - - void removeBufferRequested(BufferId buffer); - 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 purgeBufferIdsRequested(); + void lastMsgSet(BufferId buffer, const MsgId& msgId); + 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); - QList bufferIds() const { return _lastSeenMsg.keys(); } + bool setLastSeenMsg(BufferId buffer, const MsgId& msgId); + bool setMarkerLine(BufferId buffer, const MsgId& msgId); + +protected: + inline QList lastBufferIds() const { return _lastMsg.keys(); } + inline QList lastSeenBufferIds() const { return _lastSeenMsg.keys(); } + inline QList markerLineBufferIds() const { return _markerLines.keys(); } + inline QHash markerLines() const { return _markerLines; } private: - QHash _lastSeenMsg; + QHash _lastMsg; + QHash _lastSeenMsg; + QHash _markerLines; + QHash _bufferActivities; + QHash _highlightCounts; }; - -#endif