blob: 4382def1ab30efef90fcd8f7aee454a944dd17f6 [file] [log] [blame]
Zack Rusin601e8372011-03-24 22:23:21 -04001#include "mainwindow.h"
2
Zack Rusin96130ac2011-03-27 01:48:36 -04003#include "apitracecall.h"
Zack Rusin18eade52011-03-26 14:23:35 -04004#include "apicalldelegate.h"
Zack Rusin601e8372011-03-24 22:23:21 -04005#include "apitracemodel.h"
Zack Rusin91065372011-03-26 01:54:10 -04006#include "apitracefilter.h"
Zack Rusin601e8372011-03-24 22:23:21 -04007
8#include <QAction>
9#include <QDebug>
10#include <QDir>
Zack Rusinea295452011-03-27 02:22:13 -040011#include <QLineEdit>
Zack Rusin601e8372011-03-24 22:23:21 -040012#include <QFileDialog>
Zack Rusinea295452011-03-27 02:22:13 -040013#include <QToolBar>
Zack Rusin96130ac2011-03-27 01:48:36 -040014#include <QWebView>
Zack Rusin601e8372011-03-24 22:23:21 -040015
16
17MainWindow::MainWindow()
18 : QMainWindow()
19{
20 m_ui.setupUi(this);
21
22 m_model = new ApiTraceModel();
Zack Rusin91065372011-03-26 01:54:10 -040023 m_proxyModel = new ApiTraceFilter();
24 m_proxyModel->setSourceModel(m_model);
Zack Rusin96130ac2011-03-27 01:48:36 -040025 m_ui.callView->setModel(m_proxyModel);
Zack Rusin18eade52011-03-26 14:23:35 -040026 m_ui.callView->setItemDelegate(new ApiCallDelegate);
Zack Rusin601e8372011-03-24 22:23:21 -040027 for (int column = 0; column < m_model->columnCount(); ++column)
28 m_ui.callView->resizeColumnToContents(column);
29
Zack Rusinea295452011-03-27 02:22:13 -040030 QToolBar *toolBar = addToolBar(tr("Navigation"));
31 m_filterEdit = new QLineEdit(toolBar);
32 toolBar->addWidget(m_filterEdit);
33
Zack Rusin96130ac2011-03-27 01:48:36 -040034 m_ui.detailsDock->hide();
35
Zack Rusin601e8372011-03-24 22:23:21 -040036 connect(m_ui.actionOpen, SIGNAL(triggered()),
37 this, SLOT(openTrace()));
Zack Rusin96130ac2011-03-27 01:48:36 -040038 connect(m_ui.callView, SIGNAL(activated(const QModelIndex &)),
39 this, SLOT(callItemSelected(const QModelIndex &)));
Zack Rusinea295452011-03-27 02:22:13 -040040 connect(m_filterEdit, SIGNAL(returnPressed()),
41 this, SLOT(filterTrace()));
Zack Rusin601e8372011-03-24 22:23:21 -040042}
43
44void 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
58void MainWindow::loadTrace(const QString &fileName)
59{
60 qDebug()<< "Loading : " <<fileName;
61
62 m_model->loadTraceFile(fileName);
63}
64
Zack Rusin96130ac2011-03-27 01:48:36 -040065void 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
Zack Rusinea295452011-03-27 02:22:13 -040076void MainWindow::filterTrace()
77{
78 m_proxyModel->setFilterString(m_filterEdit->text());
79}
80
Zack Rusin601e8372011-03-24 22:23:21 -040081#include "mainwindow.moc"