]> git.cworth.org Git - apitrace/blob - gui/mainwindow.cpp
Start on custom filtering.
[apitrace] / gui / mainwindow.cpp
1 #include "mainwindow.h"
2
3 #include "apitracecall.h"
4 #include "apicalldelegate.h"
5 #include "apitracemodel.h"
6 #include "apitracefilter.h"
7
8 #include <QAction>
9 #include <QDebug>
10 #include <QDir>
11 #include <QLineEdit>
12 #include <QFileDialog>
13 #include <QToolBar>
14 #include <QWebView>
15
16
17 MainWindow::MainWindow()
18     : QMainWindow()
19 {
20     m_ui.setupUi(this);
21
22     m_model = new ApiTraceModel();
23     m_proxyModel = new ApiTraceFilter();
24     m_proxyModel->setSourceModel(m_model);
25     m_ui.callView->setModel(m_proxyModel);
26     m_ui.callView->setItemDelegate(new ApiCallDelegate);
27     for (int column = 0; column < m_model->columnCount(); ++column)
28         m_ui.callView->resizeColumnToContents(column);
29
30     QToolBar *toolBar = addToolBar(tr("Navigation"));
31     m_filterEdit = new QLineEdit(toolBar);
32     toolBar->addWidget(m_filterEdit);
33
34     m_ui.detailsDock->hide();
35
36     connect(m_ui.actionOpen, SIGNAL(triggered()),
37             this, SLOT(openTrace()));
38     connect(m_ui.callView, SIGNAL(activated(const QModelIndex &)),
39             this, SLOT(callItemSelected(const QModelIndex &)));
40     connect(m_filterEdit, SIGNAL(returnPressed()),
41             this, SLOT(filterTrace()));
42 }
43
44 void MainWindow::openTrace()
45 {
46     QString fileName =
47         QFileDialog::getOpenFileName(
48             this,
49             tr("Open Trace"),
50             QDir::homePath(),
51             tr("Trace Files (*.trace)"));
52
53     qDebug()<< "File name : " <<fileName;
54
55     m_model->loadTraceFile(fileName);
56 }
57
58 void MainWindow::loadTrace(const QString &fileName)
59 {
60     qDebug()<< "Loading  : " <<fileName;
61
62     m_model->loadTraceFile(fileName);
63 }
64
65 void MainWindow::callItemSelected(const QModelIndex &index)
66 {
67     ApiTraceCall *call = index.data().value<ApiTraceCall*>();
68     if (call) {
69         m_ui.detailsWebView->setHtml(call->richText());
70         m_ui.detailsDock->show();
71     } else {
72         m_ui.detailsDock->hide();
73     }
74 }
75
76 void MainWindow::filterTrace()
77 {
78     m_proxyModel->setFilterString(m_filterEdit->text());
79 }
80
81 #include "mainwindow.moc"