X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorebuffersyncer.h;h=8a179c6939c7e841f5fe344e58a7007fa3568e24;hp=af009d063a6ac731762700e80047b9b2cc82c776;hb=a65f42197839da536975b3e2858eedcef420035f;hpb=54ead1bace1c9306ccfd5ebd7fb7bbd0c9843db7 diff --git a/src/core/corebuffersyncer.h b/src/core/corebuffersyncer.h index af009d06..8a179c69 100644 --- a/src/core/corebuffersyncer.h +++ b/src/core/corebuffersyncer.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -31,41 +31,52 @@ class CoreBufferSyncer : public BufferSyncer Q_OBJECT public: - CoreBufferSyncer(CoreSession *parent); + explicit CoreBufferSyncer(CoreSession *parent); public slots: - virtual void requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId); - virtual void requestSetMarkerLine(BufferId buffer, const MsgId &msgId); + void requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) override; + void requestSetMarkerLine(BufferId buffer, const MsgId &msgId) override; - virtual inline void requestRemoveBuffer(BufferId buffer) { removeBuffer(buffer); } - virtual void removeBuffer(BufferId bufferId); + inline void requestRemoveBuffer(BufferId buffer) override { removeBuffer(buffer); } + void removeBuffer(BufferId bufferId) override; - void addBufferActivity(Message message) { + void addBufferActivity(const Message &message) { auto oldActivity = activity(message.bufferId()); if (!oldActivity.testFlag(message.type())) { setBufferActivity(message.bufferId(), (int) (oldActivity | message.type())); } } - void setBufferActivity(BufferId buffer, const int &activity) override; + void addCoreHighlight(const Message &message) { + auto oldHighlightCount = highlightCount(message.bufferId()); + if (message.flags().testFlag(Message::Flag::Highlight) && !message.flags().testFlag(Message::Flag::Self)) { + setHighlightCount(message.bufferId(), oldHighlightCount + 1); + } + } + + void setBufferActivity(BufferId buffer, int activity) override; + + void setHighlightCount(BufferId buffer, int highlightCount) override; - virtual inline void requestRenameBuffer(BufferId buffer, QString newName) { renameBuffer(buffer, newName); } - virtual void renameBuffer(BufferId buffer, QString newName); + inline void requestRenameBuffer(BufferId buffer, QString newName) override { renameBuffer(buffer, newName); } + void renameBuffer(BufferId buffer, QString newName) override; - virtual inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) { mergeBuffersPermanently(buffer1, buffer2); } - virtual void mergeBuffersPermanently(BufferId buffer1, BufferId buffer2); + inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) override { mergeBuffersPermanently(buffer1, buffer2); } + void mergeBuffersPermanently(BufferId buffer1, BufferId buffer2) override; - virtual void requestPurgeBufferIds(); + void requestPurgeBufferIds() override; - virtual inline void requestMarkBufferAsRead(BufferId buffer) { - setBufferActivity(buffer, (int) Message::Types()); + inline void requestMarkBufferAsRead(BufferId buffer) override { + int activity = Message::Types(); + setBufferActivity(buffer, activity); + setHighlightCount(buffer, 0); markBufferAsRead(buffer); } void storeDirtyIds(); protected: - virtual void customEvent(QEvent *event); + void customEvent(QEvent *event) override; private: CoreSession *_coreSession; @@ -74,6 +85,7 @@ private: QSet dirtyLastSeenBuffers; QSet dirtyMarkerLineBuffers; QSet dirtyActivities; + QSet dirtyHighlights; void purgeBufferIds(); };