X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=gui%2Fbufferview.h;h=6fcadf86e345d76b21a6fb0be72ae8fbbbf57768;hp=a76e327246c0a40c87e368932e552d1c777d839c;hb=9d4be7eefb855df7efe6d140bc498cc574140466;hpb=bb0bf17b61958e92529338596574f7a2a4f61d2a diff --git a/gui/bufferview.h b/gui/bufferview.h index a76e3272..6fcadf86 100644 --- a/gui/bufferview.h +++ b/gui/bufferview.h @@ -18,86 +18,70 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _BUFFERVIEW_H_ -#define _BUFFERVIEW_H_ +#ifndef _BUFFERVIEWWIDGET_H_ +#define _BUFFERVIEWWIDGET_H_ #include -#include "ui_bufferview.h" -#include "guiproxy.h" +#include #include "buffer.h" -typedef QHash > BufferHash; - -class BufferViewWidget : public QWidget { +/***************************************** + * Buffer View Filter + *****************************************/ +class BufferViewFilter : public QSortFilterProxyModel { Q_OBJECT + +public: + enum Mode { + NoActive = 0x01, + NoInactive = 0x02, + SomeNets = 0x04, + AllNets = 0x08, + NoChannels = 0x10, + NoQueries = 0x20, + NoServers = 0x40 + }; + Q_DECLARE_FLAGS(Modes, Mode) + + BufferViewFilter(QAbstractItemModel *model, Modes mode, QStringList nets, QObject *parent = 0); + +public slots: + void invalidateMe(); + void changeCurrent(const QModelIndex &, const QModelIndex &); + void doubleClickReceived(const QModelIndex &); + void select(const QModelIndex &, QItemSelectionModel::SelectionFlags); + +signals: + void currentChanged(const QModelIndex &, const QModelIndex &); + void doubleClicked(const QModelIndex &); + void updateSelection(const QModelIndex &, QItemSelectionModel::SelectionFlags); + +private: + bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; - public: - BufferViewWidget(QWidget *parent = 0); - - QTreeWidget *tree() { return ui.tree; } - - virtual QSize sizeHint () const; - - signals: - void bufferSelected(QString net, QString buf); - - private slots: - - - private: - Ui::BufferViewWidget ui; - + Modes mode; + QStringList networks; }; +Q_DECLARE_OPERATORS_FOR_FLAGS(BufferViewFilter::Modes) -class BufferView : public QDockWidget { +/***************************************** + * The TreeView showing the Buffers + *****************************************/ +class BufferView : public QTreeView { Q_OBJECT - + public: - enum Mode { - NoActive = 0x01, NoInactive = 0x02, - SomeNets = 0x04, AllNets = 0x08, - NoChannels = 0x10, NoQueries = 0x20, NoServers = 0x40 - }; + BufferView(QWidget *parent = 0); + void init(); + void setModel(QAbstractItemModel *model); + void setFilteredModel(QAbstractItemModel *model, BufferViewFilter::Modes mode, QStringList nets); - enum ActivityLevel { - NoActivity = 0x00, OtherActivity = 0x01, - NewMessage = 0x02, Highlight = 0x40 - }; - - BufferView(QString name, int mode, QStringList nets = QStringList(), QWidget *parent = 0); - void setMode(int mode, QStringList nets = QStringList()); - void setName(QString name); + void dragEnterEvent(QDragEnterEvent *); - - public slots: - void bufferUpdated(Buffer *); - void bufferActivity(uint, Buffer *); - void bufferDestroyed(Buffer *); - void setBuffers(QList); - void selectBuffer(Buffer *); - - signals: - void bufferSelected(Buffer *); - void fakeUserInput(BufferId, QString); - - private slots: - void itemClicked(QTreeWidgetItem *item); - void itemDoubleClicked(QTreeWidgetItem *item); - - private: - int mode; - QString name; - QStringList networks; - Buffer *currentBuffer; - //QHash > buffers; - QHash bufitems; - QHash netitems; - //QHash > items; - QTreeWidget *tree; - - bool shouldShow(Buffer *); - void clearActivity(Buffer *); + protected: + void rowsInserted (const QModelIndex & parent, int start, int end); }; #endif +