From ea2954577e018f7151f88276c8a061ad64ed7c5f Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Sun, 27 Mar 2011 02:22:13 -0400 Subject: [PATCH] Start on custom filtering. --- gui/apitracefilter.cpp | 12 ++++++++++++ gui/apitracefilter.h | 4 ++++ gui/mainwindow.cpp | 14 +++++++++++++- gui/mainwindow.h | 3 +++ gui/ui/mainwindow.ui | 2 +- 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/gui/apitracefilter.cpp b/gui/apitracefilter.cpp index 9611b81..7f7da19 100644 --- a/gui/apitracefilter.cpp +++ b/gui/apitracefilter.cpp @@ -21,6 +21,10 @@ bool ApiTraceFilter::filterAcceptsRow(int sourceRow, QString function = call->name; + if (!m_text.isEmpty()) { + return function.contains(m_text); + } + //XXX make it configurable if (function.contains(QLatin1String("glXGetProcAddress"))) return false; @@ -36,4 +40,12 @@ bool ApiTraceFilter::filterAcceptsRow(int sourceRow, } +void ApiTraceFilter::setFilterString(const QString &text) +{ + if (text != m_text) { + m_text = text; + invalidate(); + } +} + #include "apitracefilter.moc" diff --git a/gui/apitracefilter.h b/gui/apitracefilter.h index a3ac1b0..f2ad91b 100644 --- a/gui/apitracefilter.h +++ b/gui/apitracefilter.h @@ -10,8 +10,12 @@ class ApiTraceFilter : public QSortFilterProxyModel public: ApiTraceFilter(QObject *parent = 0); + void setFilterString(const QString &text); protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; + +private: + QString m_text; }; #endif diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index d36d75d..4382def 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -8,7 +8,9 @@ #include #include #include +#include #include +#include #include @@ -25,13 +27,18 @@ MainWindow::MainWindow() for (int column = 0; column < m_model->columnCount(); ++column) m_ui.callView->resizeColumnToContents(column); + QToolBar *toolBar = addToolBar(tr("Navigation")); + m_filterEdit = new QLineEdit(toolBar); + toolBar->addWidget(m_filterEdit); + m_ui.detailsDock->hide(); connect(m_ui.actionOpen, SIGNAL(triggered()), this, SLOT(openTrace())); - connect(m_ui.callView, SIGNAL(activated(const QModelIndex &)), this, SLOT(callItemSelected(const QModelIndex &))); + connect(m_filterEdit, SIGNAL(returnPressed()), + this, SLOT(filterTrace())); } void MainWindow::openTrace() @@ -66,4 +73,9 @@ void MainWindow::callItemSelected(const QModelIndex &index) } } +void MainWindow::filterTrace() +{ + m_proxyModel->setFilterString(m_filterEdit->text()); +} + #include "mainwindow.moc" diff --git a/gui/mainwindow.h b/gui/mainwindow.h index b64f555..c27db8b 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -8,6 +8,7 @@ class ApiTraceModel; class ApiTraceFilter; +class QLineEdit; class QModelIndex; class MainWindow : public QMainWindow @@ -22,11 +23,13 @@ public slots: private slots: void callItemSelected(const QModelIndex &index); void openTrace(); + void filterTrace(); private: Ui_MainWindow m_ui; ApiTraceModel *m_model; ApiTraceFilter *m_proxyModel; + QLineEdit *m_filterEdit; }; diff --git a/gui/ui/mainwindow.ui b/gui/ui/mainwindow.ui index 07d23fe..e509cb6 100644 --- a/gui/ui/mainwindow.ui +++ b/gui/ui/mainwindow.ui @@ -66,7 +66,7 @@ - + 0 0 -- 2.43.0