The new 'All Buffers' view is no properly presorted.
[quassel.git] / src / client / networkmodel.h
index 018d6e7..4c78878 100644 (file)
 #ifndef NETWORKMODEL_H
 #define NETWORKMODEL_H
 
-#include <QtCore>
-
-#include "treemodel.h"
 #include "bufferinfo.h"
-
-#include <QPointer>
-
-class BufferInfo;
-
-#include "selectionmodelsynchronizer.h"
-#include "modelpropertymapper.h"
 #include "clientsettings.h"
-#include "ircchannel.h"
-#include "ircuser.h"
 #include "message.h"
 #include "network.h"
+#include "treemodel.h"
 
-class MappedSelectionModel;
-class QAbstractItemView;
 class BufferItem;
 
 /*****************************************
@@ -153,12 +140,13 @@ public:
   QueryBufferItem(const BufferInfo &bufferInfo, NetworkItem *parent);
 
   virtual QVariant data(int column, int role) const;
+  virtual bool setData(int column, const QVariant &value, int role);
   virtual inline bool isActive() const { return (bool)_ircUser; }
   virtual QString toolTip(int column) const;
 
 public slots:
   void attachIrcUser(IrcUser *ircUser);
-  void ircUserDestroyed();
+  void ircUserQuited();
 
 private:
   IrcUser *_ircUser;
@@ -195,7 +183,7 @@ public slots:
   void userModeChanged(IrcUser *ircUser);
 
 private slots:
-  void ircChannelDestroyed();
+  void ircChannelParted();
 
 private:
   IrcChannel *_ircChannel;
@@ -246,7 +234,7 @@ public:
   virtual QString toolTip(int column) const;
 
 private slots:
-  inline void ircUserDestroyed() { parent()->removeChild(this); }
+  inline void ircUserQuited() { parent()->removeChild(this); }
 
 private:
   QPointer<IrcUser> _ircUser;
@@ -289,7 +277,6 @@ public:
 
   virtual QStringList mimeTypes() const;
   virtual QMimeData *mimeData(const QModelIndexList &) const;
-  virtual bool dropMimeData(const QMimeData *, Qt::DropAction, int, int, const QModelIndex &);
 
   void attachNetwork(Network *network);
 
@@ -319,6 +306,8 @@ public:
   QString networkName(BufferId bufferId) const;
 
   inline QList<BufferId> allBufferIds() const { return _bufferItemCache.keys(); }
+  QList<BufferId> allBufferIdsSorted() const;
+  void sortBufferIds(QList<BufferId> &bufferIds) const;
 
 public slots:
   void bufferUpdated(BufferInfo bufferInfo);
@@ -344,6 +333,8 @@ private:
   BufferItem *findBufferItem(BufferId bufferId) const;
   BufferItem *bufferItem(const BufferInfo &bufferInfo);
 
+  static bool bufferItemLessThan(const BufferItem *left, const BufferItem *right);
+
   QHash<BufferId, BufferItem *> _bufferItemCache;
 };
 Q_DECLARE_OPERATORS_FOR_FLAGS(NetworkModel::ItemTypes)