* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef _BUFFERVIEW_H_
-#define _BUFFERVIEW_H_
+#ifndef _BUFFERVIEWWIDGET_H_
+#define _BUFFERVIEWWIDGET_H_
#include <QtGui>
-#include "ui_bufferview.h"
-#include "guiproxy.h"
+#include <QFlags>
#include "buffer.h"
-typedef QHash<QString, QHash<QString, Buffer*> > 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<Buffer *>);
- 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<QString, QHash<QString, Buffer*> > buffers;
- QHash<Buffer *, QTreeWidgetItem *> bufitems;
- QHash<QString, QTreeWidgetItem *> netitems;
- //QHash<QString, QHash<QString, QTreeWidgetItem *> > 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