This should fix the bug, that buffer switches are propagated multiple times
[quassel.git] / src / client / buffer.h
index 3465e5f..746ba3d 100644 (file)
@@ -22,6 +22,8 @@
 #define _BUFFER_H_
 
 class AbstractUiMsg;
+class IrcChannel;
+class NickModel;
 
 struct BufferState;
 
@@ -38,12 +40,12 @@ class Buffer : public QObject {
 
 public:
   Buffer(BufferInfo, QObject *parent = 0);
-  ~Buffer();
+  virtual ~Buffer();
 
   enum Type {
-    ServerBuffer,
-    ChannelBuffer,
-    QueryBuffer
+    StatusType,
+    ChannelType,
+    QueryType
   };
 
   enum Activity {
@@ -60,12 +62,12 @@ public:
 
   BufferInfo bufferInfo() const;
   void updateBufferInfo(BufferInfo bufferid);
-  
-  uint networkId() const;
+
+  BufferId uid() const;
+  NetworkId networkId() const;
   
   QString networkName() const;
-  QString bufferName() const;
-  QString displayName() const;
+  QString name() const;
   
   QList<AbstractUiMsg *> contents() const;
   
@@ -73,13 +75,20 @@ public:
   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;
+
 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 *);
@@ -90,6 +99,7 @@ public slots:
   void appendMsg(const Message &);
   void prependMsg(const Message &);
   bool layoutMsg();
+  void setIrcChannel(IrcChannel *chan = 0);
 
   // no longer needed
 //   void setTopic(QString);
@@ -107,6 +117,8 @@ private:
   bool _active;
   Type _type;
   BufferState *state;
+  QPointer<IrcChannel> _ircChannel;
+  QPointer<NickModel> _nickModel;
 
   QList<Message> layoutQueue;
   QList<AbstractUiMsg *> layoutedMsgs;