X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=gui%2Fbufferview.h;fp=gui%2Fbufferview.h;h=49f3a809fb87e472be9ef86c45ef09910469899d;hp=a76e327246c0a40c87e368932e552d1c777d839c;hb=6fc26e28a07a2b6bbc60ee786514a802e628d6d3;hpb=ab01b54e37325ab2f9f8b1d33e61b20197abb99c diff --git a/gui/bufferview.h b/gui/bufferview.h index a76e3272..49f3a809 100644 --- a/gui/bufferview.h +++ b/gui/bufferview.h @@ -18,86 +18,64 @@ * 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 - }; - 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); - - - 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 *); +public: + BufferView(QWidget *parent = 0); + void init(); + void setFilteredModel(QAbstractItemModel *model, BufferViewFilter::Modes mode, QStringList nets); + }; -#endif +#endif \ No newline at end of file