]> git.cworth.org Git - apitrace/commitdiff
Start on custom filtering.
authorZack Rusin <zack@kde.org>
Sun, 27 Mar 2011 06:22:13 +0000 (02:22 -0400)
committerZack Rusin <zack@kde.org>
Thu, 31 Mar 2011 02:48:41 +0000 (22:48 -0400)
gui/apitracefilter.cpp
gui/apitracefilter.h
gui/mainwindow.cpp
gui/mainwindow.h
gui/ui/mainwindow.ui

index 9611b81692e6e95e6319e6373278519214bbb912..7f7da1978eca574fd53357939f513ab6efb5b73c 100644 (file)
@@ -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"
index a3ac1b078100bf3f66958fca106c499c14c86fa0..f2ad91bd09a5de152b2b092ddb7a636a67310693 100644 (file)
@@ -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
index d36d75d6ab862f8e7ab880ebc4c27f203fecd712..4382def1ab30efef90fcd8f7aee454a944dd17f6 100644 (file)
@@ -8,7 +8,9 @@
 #include <QAction>
 #include <QDebug>
 #include <QDir>
+#include <QLineEdit>
 #include <QFileDialog>
+#include <QToolBar>
 #include <QWebView>
 
 
@@ -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"
index b64f5559a8da28df9dfb95dec45dd7a43bbfbb68..c27db8be1f9f0469736cdd175e5ea20064a4eb11 100644 (file)
@@ -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;
 };
 
 
index 07d23fe30cf8adb82cff5a0a9f29920a2827f349..e509cb61c9e66d727899b34c93467982b01dbec1 100644 (file)
@@ -66,7 +66,7 @@
      <item>
       <widget class="QWebView" name="detailsWebView">
        <property name="sizePolicy">
-        <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+        <sizepolicy hsizetype="Preferred" vsizetype="Ignored">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>