Fixed crash when joining new channels
[quassel.git] / src / client / buffertreemodel.h
index 9d71dee..7053ef7 100644 (file)
 #define _BUFFERTREEMODEL_H_
 
 #include <QtCore>
-#include <QItemSelectionModel> // FIXME Dependency on QtGui
 
 #include "treemodel.h"
+class BufferInfo;
 #include "buffer.h"
-#include "clientproxy.h"
 
 /*****************************************
  *  Fancy Buffer Items
  *****************************************/
-class BufferTreeItem : public TreeItem{
+class BufferTreeItem : public TreeItem {
   Q_OBJECT
   
 public:
   BufferTreeItem(Buffer *, TreeItem *parent = 0);
+
+  virtual uint id() const;
   QVariant data(int column, int role) const;
+  virtual Qt::ItemFlags flags() const;
+  
   Buffer *buffer() const { return buf; }
   void setActivity(const Buffer::ActivityLevel &);
   
-protected:
+private:
   QString text(int column) const;
   QColor foreground(int column) const;
   
@@ -48,6 +51,22 @@ protected:
   Buffer::ActivityLevel activity;
 };
 
+/*****************************************
+ *  Network Items
+ *****************************************/
+class NetworkTreeItem : public TreeItem {
+  Q_OBJECT
+  
+public:
+  NetworkTreeItem(const QString &, TreeItem *parent = 0);
+
+  virtual uint id() const;
+  virtual Qt::ItemFlags flags() const;
+  
+private:
+  QString net;
+  
+};
 
 /*****************************************
  * BufferTreeModel
@@ -56,18 +75,15 @@ class BufferTreeModel : public TreeModel {
   Q_OBJECT
   
 public:
-  enum  myRoles {
+  enum myRoles {
     BufferTypeRole = Qt::UserRole,
-    BufferActiveRole
+    BufferActiveRole,
+    BufferNameRole,
+    BufferInfoRole
   };
   
-  //BufferTreeModel(const QList<QVariant> &, QObject *parent = 0);
   BufferTreeModel(QObject *parent = 0);
   static QList<QVariant> defaultHeader();
-
-  virtual Qt::ItemFlags flags(const QModelIndex &index) const;
-  
-//  void clearActivity(Buffer *buffer);
   
 public slots:
   void bufferUpdated(Buffer *);    
@@ -79,8 +95,8 @@ public slots:
 signals:
   void bufferSelected(Buffer *);
   void invalidateFilter();
-  void fakeUserInput(BufferId, QString);
-  void updateSelection(const QModelIndex &, QItemSelectionModel::SelectionFlags);
+  void fakeUserInput(BufferInfo, QString);
+  void selectionChanged(const QModelIndex &);
     
 private:
   bool isBufferIndex(const QModelIndex &) const;
@@ -92,8 +108,6 @@ private:
   QMimeData *mimeData(const QModelIndexList &) const;
   bool dropMimeData(const QMimeData *, Qt::DropAction, int, int, const QModelIndex &);
   
-  QHash<QString, TreeItem*> networkItem;
-  QHash<Buffer *, BufferTreeItem*> bufferItem;
   Buffer *currentBuffer;
 };