Bring back activity levels. I think Buffer has to go soon, since this is all that...
[quassel.git] / src / client / buffer.h
index f743913..8a20f52 100644 (file)
@@ -21,6 +21,8 @@
 #ifndef _BUFFER_H_
 #define _BUFFER_H_
 
+#include <QDateTime>
+
 class AbstractUiMsg;
 class IrcChannel;
 class NickModel;
@@ -30,22 +32,30 @@ struct BufferState;
 #include "message.h"
 #include "bufferinfo.h"
 
-//!\brief Encapsulates the contents of a single channel, query or server status context.
-/** A Buffer maintains a list of existing nicks and their status.
+/// Encapsulates the contents of a single channel, query or server status context.
+/**
  */
 class Buffer : public QObject {
   Q_OBJECT
 
 public:
+  enum Activity {
+    NoActivity = 0x00,
+    OtherActivity = 0x01,
+    NewMessage = 0x02,
+    Highlight = 0x40
+  };
+  Q_DECLARE_FLAGS(ActivityLevel, Activity)
+
   Buffer(BufferInfo, QObject *parent = 0);
 
   BufferInfo bufferInfo() const;
+  const QList<AbstractUiMsg *> &contents() const;
+  inline bool isVisible() const { return _isVisible; }
+  inline MsgId lastSeenMsg() const { return _lastSeenMsg; }
+  inline ActivityLevel activityLevel() const { return _activityLevel; }
 
-  QList<AbstractUiMsg *> contents() const;
-  
 signals:
-  void userInput(const BufferInfo &, QString);
-
   void msgAppended(AbstractUiMsg *);
   void msgPrepended(AbstractUiMsg *);
   void layoutQueueEmpty();
@@ -54,15 +64,22 @@ public slots:
   void appendMsg(const Message &);
   void prependMsg(const Message &);
   bool layoutMsg();
-
-  void processUserInput(QString);
+  void setVisible(bool visible);
+  void setLastSeenMsg(const MsgId &msgId);
+  void setActivityLevel(ActivityLevel level);
+  void updateActivityLevel(const Message &msg);
 
 private:
   BufferInfo _bufferInfo;
+  bool _isVisible;
+  MsgId _lastSeenMsg;
+  ActivityLevel _activityLevel;
 
-  QList<Message> layoutQueue;
+  QLinkedList<Message> layoutQueue;
   QList<AbstractUiMsg *> layoutedMsgs;
 
 };
 
+Q_DECLARE_OPERATORS_FOR_FLAGS(Buffer::ActivityLevel)
+
 #endif