Bring back activity levels. I think Buffer has to go soon, since this is all that...
[quassel.git] / src / client / buffer.h
index 746ba3d..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        *
@@ -21,6 +21,8 @@
 #ifndef _BUFFER_H_
 #define _BUFFER_H_
 
+#include <QDateTime>
+
 class AbstractUiMsg;
 class IrcChannel;
 class NickModel;
@@ -30,24 +32,13 @@ 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);
-  virtual ~Buffer();
-
-  enum Type {
-    StatusType,
-    ChannelType,
-    QueryType
-  };
-
   enum Activity {
     NoActivity = 0x00,
     OtherActivity = 0x01,
@@ -56,74 +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);
-
-  BufferId uid() const;
-  NetworkId networkId() const;
-  
-  QString networkName() const;
-  QString name() const;
-  
-  QList<AbstractUiMsg *> contents() const;
-  
-  QVariantMap nickList() const;
-  QString topic() const;
-  QString ownNick() const;
-
-  //! Returns a pointer to the associated IrcChannel object for the buffer.
-  /** A buffer has an IrcChannel object only if it is a channel buffer
-   * (i.e. bufferType() == ChannelType), and if it is active at the moment.
-   * \returns A pointer to the associated IrcChannel object, if the buffer is a channel and online; 0 else.
-   */
-  IrcChannel *ircChannel() const;
-  NickModel *nickModel() 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 msgAppended(AbstractUiMsg *);
   void msgPrepended(AbstractUiMsg *);
   void layoutQueueEmpty();
 
 public slots:
-  void setActive(bool active = true);
   void appendMsg(const Message &);
   void prependMsg(const Message &);
   bool layoutMsg();
-  void setIrcChannel(IrcChannel *chan = 0);
-
-  // 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;
-  QPointer<IrcChannel> _ircChannel;
-  QPointer<NickModel> _nickModel;
+  bool _isVisible;
+  MsgId _lastSeenMsg;
+  ActivityLevel _activityLevel;
 
-  QList<Message> layoutQueue;
+  QLinkedList<Message> layoutQueue;
   QList<AbstractUiMsg *> layoutedMsgs;
 
 };
+
 Q_DECLARE_OPERATORS_FOR_FLAGS(Buffer::ActivityLevel)
 
 #endif