blob: 9fbd7a8cce2fa763a292edd0082a1d96e758e26d [file] [log] [blame]
Zack Rusin601e8372011-03-24 22:23:21 -04001#ifndef MAINWINDOW_H
2#define MAINWINDOW_H
3
4#include "ui_mainwindow.h"
5
Zack Rusin96130ac2011-03-27 01:48:36 -04006#include <QMainWindow>
Zack Rusin27cb2c42011-03-27 23:53:36 -04007#include <QProcess>
Zack Rusin96130ac2011-03-27 01:48:36 -04008
Zack Rusinf6667d12011-03-30 11:03:37 -04009class ApiTrace;
Zack Rusin2caa06d2011-03-30 18:30:20 -040010class ApiTraceFrame;
Zack Rusin601e8372011-03-24 22:23:21 -040011class ApiTraceModel;
Zack Rusin91065372011-03-26 01:54:10 -040012class ApiTraceFilter;
Zack Rusinea295452011-03-27 02:22:13 -040013class QLineEdit;
Zack Rusin96130ac2011-03-27 01:48:36 -040014class QModelIndex;
Zack Rusin27cb2c42011-03-27 23:53:36 -040015class QProcess;
Zack Rusinde4ea412011-03-30 11:30:08 -040016class QProgressBar;
Zack Rusin601e8372011-03-24 22:23:21 -040017
Zack Rusin11f7e632011-03-30 22:47:51 -040018namespace QJson {
19 class Parser;
20}
21
Zack Rusin601e8372011-03-24 22:23:21 -040022class MainWindow : public QMainWindow
23{
24 Q_OBJECT
25public:
26 MainWindow();
Zack Rusin11f7e632011-03-30 22:47:51 -040027 ~MainWindow();
Zack Rusin601e8372011-03-24 22:23:21 -040028
29public slots:
30 void loadTrace(const QString &fileName);
31
32private slots:
Zack Rusin96130ac2011-03-27 01:48:36 -040033 void callItemSelected(const QModelIndex &index);
Zack Rusin601e8372011-03-24 22:23:21 -040034 void openTrace();
Zack Rusinea295452011-03-27 02:22:13 -040035 void filterTrace();
Zack Rusin27cb2c42011-03-27 23:53:36 -040036 void replayStart();
37 void replayStop();
38 void replayFinished();
39 void replayError(QProcess::ProcessError err);
Zack Rusinde4ea412011-03-30 11:30:08 -040040 void startedLoadingTrace();
41 void finishedLoadingTrace();
Zack Rusin2caa06d2011-03-30 18:30:20 -040042 void lookupState();
Zack Rusin27cb2c42011-03-27 23:53:36 -040043
44private:
45 void newTraceFile(const QString &fileName);
Zack Rusin2caa06d2011-03-30 18:30:20 -040046 void replayTrace(bool dumpState);
Zack Rusin11f7e632011-03-30 22:47:51 -040047 void parseState(const QVariantMap &params);
48 void fillStateForFrame();
Zack Rusin601e8372011-03-24 22:23:21 -040049
50private:
51 Ui_MainWindow m_ui;
Zack Rusinf6667d12011-03-30 11:03:37 -040052 ApiTrace *m_trace;
Zack Rusin601e8372011-03-24 22:23:21 -040053 ApiTraceModel *m_model;
Zack Rusin91065372011-03-26 01:54:10 -040054 ApiTraceFilter *m_proxyModel;
Zack Rusinea295452011-03-27 02:22:13 -040055 QLineEdit *m_filterEdit;
Zack Rusin27cb2c42011-03-27 23:53:36 -040056
57 QProcess *m_replayProcess;
58
Zack Rusinde4ea412011-03-30 11:30:08 -040059 QProgressBar *m_progressBar;
60
Zack Rusin27cb2c42011-03-27 23:53:36 -040061 QString m_traceFileName;
Zack Rusin2caa06d2011-03-30 18:30:20 -040062
63 ApiTraceFrame *m_currentFrame;
Zack Rusin11f7e632011-03-30 22:47:51 -040064
65 ApiTraceFrame *m_stateFrame;
Zack Rusin2caa06d2011-03-30 18:30:20 -040066 bool m_findingState;
Zack Rusin11f7e632011-03-30 22:47:51 -040067
68 QJson::Parser *m_jsonParser;
Zack Rusin601e8372011-03-24 22:23:21 -040069};
70
71
72#endif