]> git.cworth.org Git - apitrace/blob - gui/apitracemodel.h
Implement jumping to a specific call.
[apitrace] / gui / apitracemodel.h
1 #ifndef APITRACEMODEL_H
2 #define APITRACEMODEL_H
3
4
5 #include <QAbstractItemModel>
6 #include <QModelIndex>
7 #include <QVariant>
8
9 class ApiTrace;
10 class ApiTraceCall;
11 class ApiTraceEvent;
12
13 class ApiTraceModel : public QAbstractItemModel
14 {
15     Q_OBJECT
16 public:
17     enum Roles {
18         EventRole = Qt::UserRole + 1
19     };
20 public:
21     ApiTraceModel(QObject *parent = 0);
22     ~ApiTraceModel();
23
24     void setApiTrace(ApiTrace *trace);
25     const ApiTrace *apiTrace() const;
26     void stateSetOnEvent(ApiTraceEvent *event);
27
28     QModelIndex callIndex(int callNum) const;
29
30 public:
31     /* QAbstractItemModel { */
32     QVariant data(const QModelIndex &index, int role) const;
33     Qt::ItemFlags flags(const QModelIndex &index) const;
34     QVariant headerData(int section, Qt::Orientation orientation,
35                         int role = Qt::DisplayRole) const;
36     QModelIndex index(int row, int column,
37                       const QModelIndex &parent = QModelIndex()) const;
38     bool hasChildren(const QModelIndex &parent) const;
39     QModelIndex parent(const QModelIndex &index) const;
40     int rowCount(const QModelIndex &parent = QModelIndex()) const;
41     int columnCount(const QModelIndex &parent = QModelIndex()) const;
42
43     bool insertRows(int position, int rows,
44                     const QModelIndex &parent = QModelIndex());
45     bool removeRows(int position, int rows,
46                     const QModelIndex &parent = QModelIndex());
47     /* } QAbstractItemModel; */
48
49 private slots:
50     void invalidateFrames();
51     void appendFrames(int oldCount, int numAdded);
52
53 private:
54     ApiTraceEvent *item(const QModelIndex &index) const;
55
56 private:
57     ApiTrace *m_trace;
58 };
59
60 #endif