modernize: Reformat ALL the source... again!
[quassel.git] / src / core / corebuffersyncer.h
index 6b85b12..3f031cf 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-09 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  *
  *   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 COREBUFFERSYNCER_H
-#define COREBUFFERSYNCER_H
+#pragma once
 
 #include "buffersyncer.h"
 
 class CoreSession;
 
-class CoreBufferSyncer : public BufferSyncer {
-  Q_OBJECT
+class CoreBufferSyncer : public BufferSyncer
+{
+    Q_OBJECT
 
 public:
-  CoreBufferSyncer(CoreSession *parent);
+    explicit CoreBufferSyncer(CoreSession* parent);
 
 public slots:
-  virtual void requestSetLastSeenMsg(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;
 
-  virtual inline void requestRenameBuffer(BufferId buffer, QString newName) { renameBuffer(buffer, newName); }
-  virtual void renameBuffer(BufferId buffer, QString newName);
+    void addBufferActivity(const Message& message)
+    {
+        auto oldActivity = activity(message.bufferId());
+        if (!oldActivity.testFlag(message.type())) {
+            setBufferActivity(message.bufferId(), (int)(oldActivity | message.type()));
+        }
+    }
 
-  virtual inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) { mergeBuffersPermanently(buffer1, buffer2); }
-  virtual void mergeBuffersPermanently(BufferId buffer1, BufferId buffer2);
+    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 storeDirtyIds();
+    void setBufferActivity(BufferId buffer, int activity) override;
+
+    void setHighlightCount(BufferId buffer, int highlightCount) override;
+
+    inline void requestRenameBuffer(BufferId buffer, QString newName) override { renameBuffer(buffer, newName); }
+    void renameBuffer(BufferId buffer, QString newName) override;
+
+    inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) override { mergeBuffersPermanently(buffer1, buffer2); }
+    void mergeBuffersPermanently(BufferId buffer1, BufferId buffer2) override;
+
+    void requestPurgeBufferIds() override;
+
+    inline void requestMarkBufferAsRead(BufferId buffer) override
+    {
+        int activity = Message::Types();
+        setBufferActivity(buffer, activity);
+        setHighlightCount(buffer, 0);
+        markBufferAsRead(buffer);
+    }
+
+    void storeDirtyIds();
+
+protected:
+    void customEvent(QEvent* event) override;
 
 private:
-  CoreSession *_coreSession;
+    CoreSession* _coreSession;
+    bool _purgeBuffers;
 
-  QSet<BufferId> dirtyBuffers;
-};
+    QSet<BufferId> dirtyLastSeenBuffers;
+    QSet<BufferId> dirtyMarkerLineBuffers;
+    QSet<BufferId> dirtyActivities;
+    QSet<BufferId> dirtyHighlights;
 
-#endif //COREBUFFERSYNCER_H
+    void purgeBufferIds();
+};