]> git.cworth.org Git - apitrace/blob - gui/apitrace.h
Fix minor errors in the apitracemodel
[apitrace] / gui / apitrace.h
1 #ifndef APITRACE_H
2 #define APITRACE_H
3
4 #include "apitracecall.h"
5
6 #include <QObject>
7 #include <QSet>
8
9 class LoaderThread;
10 class SaverThread;
11
12 class ApiTrace : public QObject
13 {
14     Q_OBJECT
15 public:
16     enum FrameMarker {
17         FrameMarker_SwapBuffers,
18         FrameMarker_Flush,
19         FrameMarker_Finish,
20         FrameMarker_Clear
21     };
22     static bool isCallAFrameMarker(const ApiTraceCall *call,
23                                    FrameMarker marker);
24 public:
25     ApiTrace();
26     ~ApiTrace();
27
28     bool isEmpty() const;
29
30     QString fileName() const;
31
32     FrameMarker frameMarker() const;
33
34     ApiTraceState defaultState() const;
35
36     QList<ApiTraceCall*> calls() const;
37     ApiTraceCall *callAt(int idx) const;
38     ApiTraceCall *callWithIndex(int idx) const;
39     int numCalls() const;
40
41     QList<ApiTraceFrame*> frames() const;
42     ApiTraceFrame *frameAt(int idx) const;
43     int numFrames() const;
44     int numCallsInFrame(int idx) const;
45
46     void callEdited(ApiTraceCall *call);
47     void callReverted(ApiTraceCall *call);
48     void callError(ApiTraceCall *call);
49
50     bool edited() const;
51     bool needsSaving() const;
52
53     bool isSaving() const;
54
55     bool hasErrors() const;
56
57 public slots:
58     void setFileName(const QString &name);
59     void setFrameMarker(FrameMarker marker);
60     void save();
61
62 signals:
63     void startedLoadingTrace();
64     void finishedLoadingTrace();
65     void invalidated();
66     void framesInvalidated();
67     void changed(ApiTraceCall *call);
68     void startedSaving();
69     void saved();
70
71     void beginAddingFrames(int oldCount, int numAdded);
72     void endAddingFrames();
73     void callsAdded(int oldCount, int numAdded);
74
75 private slots:
76     void addFrames(const QList<ApiTraceFrame*> &frames);
77     void slotSaved();
78 private:
79     void detectFrames();
80 private:
81     QString m_fileName;
82     QString m_tempFileName;
83
84     QList<ApiTraceFrame*> m_frames;
85     QList<ApiTraceCall*> m_calls;
86
87     FrameMarker m_frameMarker;
88
89     LoaderThread *m_loader;
90     SaverThread  *m_saver;
91
92     QSet<ApiTraceCall*> m_editedCalls;
93
94     bool m_needsSaving;
95
96     QSet<ApiTraceCall*> m_errors;
97 };
98
99 #endif