Bring back activity levels. I think Buffer has to go soon, since this is all that...
[quassel.git] / src / client / buffer.h
index 3465e5f..8a20f52 100644 (file)
@@ -1,11 +1,11 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by The Quassel Team                             *
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
+ *   (at your option) version 3.                                           *
  *                                                                         *
  *   This program is distributed in the hope that it will be useful,       *
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 #ifndef _BUFFER_H_
 #define _BUFFER_H_
 
+#include <QDateTime>
+
 class AbstractUiMsg;
+class IrcChannel;
+class NickModel;
 
 struct BufferState;
 
 #include "message.h"
 #include "bufferinfo.h"
 
-#include <QVariantMap>
-
-//!\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:
-  Buffer(BufferInfo, QObject *parent = 0);
-  ~Buffer();
-
-  enum Type {
-    ServerBuffer,
-    ChannelBuffer,
-    QueryBuffer
-  };
-
   enum Activity {
     NoActivity = 0x00,
     OtherActivity = 0x01,
@@ -54,64 +47,39 @@ public:
   };
   Q_DECLARE_FLAGS(ActivityLevel, Activity)
 
-  bool isStatusBuffer() const;
-  Type bufferType() const;
-  bool isActive() const;
+  Buffer(BufferInfo, QObject *parent = 0);
 
   BufferInfo bufferInfo() const;
-  void updateBufferInfo(BufferInfo bufferid);
-  
-  uint networkId() const;
-  
-  QString networkName() const;
-  QString bufferName() const;
-  QString displayName() const;
-  
-  QList<AbstractUiMsg *> contents() const;
-  
-  QVariantMap nickList() const;
-  QString topic() const;
-  QString ownNick() const;
+  const QList<AbstractUiMsg *> &contents() const;
+  inline bool isVisible() const { return _isVisible; }
+  inline MsgId lastSeenMsg() const { return _lastSeenMsg; }
+  inline ActivityLevel activityLevel() const { return _activityLevel; }
 
 signals:
-  void userInput(const BufferInfo &, QString);
-  void nickListChanged(QVariantMap nicks);
-  void topicSet(QString topic);
-  void ownNickSet(QString ownNick);
-  void bufferUpdated(Buffer *);
-  void bufferDestroyed(Buffer *);
-
   void msgAppended(AbstractUiMsg *);
   void msgPrepended(AbstractUiMsg *);
   void layoutQueueEmpty();
 
 public slots:
-  void setActive(bool active = true);
   void appendMsg(const Message &);
   void prependMsg(const Message &);
   bool layoutMsg();
-
-  // no longer needed
-//   void setTopic(QString);
-//   //void setNicks(QStringList);
-//   void addNick(QString nick, QVariantMap props);
-//   void renameNick(QString oldnick, QString newnick);
-//   void removeNick(QString nick);
-//   void updateNick(QString nick, QVariantMap props);
-//  void setOwnNick(QString nick);
-
-  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 _active;
-  Type _type;
-  BufferState *state;
+  bool _isVisible;
+  MsgId _lastSeenMsg;
+  ActivityLevel _activityLevel;
 
-  QList<Message> layoutQueue;
+  QLinkedList<Message> layoutQueue;
   QList<AbstractUiMsg *> layoutedMsgs;
 
 };
+
 Q_DECLARE_OPERATORS_FOR_FLAGS(Buffer::ActivityLevel)
 
 #endif