X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fbuffertreemodel.h;h=e194c27b56186a9582ba432226ab047024f8644a;hp=7053ef753cc2956d3ce608c1b51f786d4dd7803c;hb=99fb0a0f1f66ae5117fa64cc204256e5b3a19499;hpb=902c95728306e5ba115de84800fc8d5d239c9d62 diff --git a/src/client/buffertreemodel.h b/src/client/buffertreemodel.h index 7053ef75..e194c27b 100644 --- a/src/client/buffertreemodel.h +++ b/src/client/buffertreemodel.h @@ -24,9 +24,19 @@ #include #include "treemodel.h" -class BufferInfo; #include "buffer.h" +#include + +#include + +class BufferInfo; + +#include "selectionmodelsynchronizer.h" +#include "modelpropertymapper.h" +class MappedSelectionModel; +class QAbstractItemView; + /***************************************** * Fancy Buffer Items *****************************************/ @@ -38,7 +48,6 @@ public: 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 &); @@ -58,14 +67,14 @@ class NetworkTreeItem : public TreeItem { Q_OBJECT public: - NetworkTreeItem(const QString &, TreeItem *parent = 0); + NetworkTreeItem(const uint &netid, const QString &, TreeItem *parent = 0); + virtual QVariant data(int column, int row) const; virtual uint id() const; - virtual Qt::ItemFlags flags() const; private: + uint _networkId; QString net; - }; /***************************************** @@ -78,24 +87,37 @@ public: enum myRoles { BufferTypeRole = Qt::UserRole, BufferActiveRole, - BufferNameRole, - BufferInfoRole + BufferUidRole, + NetworkIdRole }; BufferTreeModel(QObject *parent = 0); static QList defaultHeader(); + + inline SelectionModelSynchronizer *selectionModelSynchronizer() { return _selectionModelSynchronizer; } + inline ModelPropertyMapper *propertyMapper() { return _propertyMapper; } + + void synchronizeSelectionModel(MappedSelectionModel *selectionModel); + void synchronizeView(QAbstractItemView *view); + void mapProperty(int column, int role, QObject *target, const QByteArray &property); + + static bool mimeContainsBufferList(const QMimeData *mimeData); + static QList< QPair > mimeDataToBufferList(const QMimeData *mimeData); + virtual QStringList mimeTypes() const; + virtual QMimeData *mimeData(const QModelIndexList &) const; + virtual bool dropMimeData(const QMimeData *, Qt::DropAction, int, int, const QModelIndex &); + + public slots: - void bufferUpdated(Buffer *); - void changeCurrent(const QModelIndex &, const QModelIndex &); + void bufferUpdated(Buffer *); + void setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); void selectBuffer(Buffer *buffer); - void doubleClickReceived(const QModelIndex &); void bufferActivity(Buffer::ActivityLevel, Buffer *buffer); signals: void bufferSelected(Buffer *); void invalidateFilter(); - void fakeUserInput(BufferInfo, QString); void selectionChanged(const QModelIndex &); private: @@ -104,10 +126,8 @@ private: QModelIndex getOrCreateNetworkItemIndex(Buffer *buffer); QModelIndex getOrCreateBufferItemIndex(Buffer *buffer); - QStringList mimeTypes() const; - QMimeData *mimeData(const QModelIndexList &) const; - bool dropMimeData(const QMimeData *, Qt::DropAction, int, int, const QModelIndex &); - + QPointer _selectionModelSynchronizer; + QPointer _propertyMapper; Buffer *currentBuffer; };