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