X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fbuffertreemodel.h;h=7737dd36b475a88606daec275a43627c427e4a88;hp=f300d98626c6cf47a3bfbc71ae0fbeeedb0563e6;hb=1cad7d10240a398c11af0043720d675e631f016f;hpb=974b7adc16b798eda66e1fff1442b73b748f12f9 diff --git a/src/client/buffertreemodel.h b/src/client/buffertreemodel.h index f300d986..7737dd36 100644 --- a/src/client/buffertreemodel.h +++ b/src/client/buffertreemodel.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by The Quassel Team * + * Copyright (C) 2005-07 by the Quassel IRC Team * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -26,32 +26,36 @@ #include "treemodel.h" #include "buffer.h" +#include + #include class BufferInfo; -class SelectionModelSynchronizer; +#include "selectionmodelsynchronizer.h" +#include "modelpropertymapper.h" +class MappedSelectionModel; +class QAbstractItemView; /***************************************** * Fancy Buffer Items *****************************************/ 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 &); - + private: QString text(int column) const; QColor foreground(int column) const; - + Buffer *buf; Buffer::ActivityLevel activity; }; @@ -61,16 +65,16 @@ private: *****************************************/ 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,42 +82,52 @@ private: *****************************************/ class BufferTreeModel : public TreeModel { Q_OBJECT - + public: enum myRoles { BufferTypeRole = Qt::UserRole, BufferActiveRole, - BufferNameRole, - BufferUidRole + 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 setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); void selectBuffer(Buffer *buffer); void bufferActivity(Buffer::ActivityLevel, Buffer *buffer); - + signals: void bufferSelected(Buffer *); void invalidateFilter(); void selectionChanged(const QModelIndex &); - + private: bool isBufferIndex(const QModelIndex &) const; Buffer *getBufferByIndex(const QModelIndex &) const; 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 &); - - SelectionModelSynchronizer *_selectionModelSynchronizer; + QPointer _selectionModelSynchronizer; + QPointer _propertyMapper; Buffer *currentBuffer; };