4 #include "apitracecall.h"
6 #include "trace_api.hpp"
15 class ApiTrace : public QObject
20 SearchResult_NotFound,
24 struct SearchRequest {
32 SearchRequest(Direction dir,
36 Qt::CaseSensitivity caseSens)
47 Qt::CaseSensitivity cs;
56 QString fileName() const;
58 ApiTraceState defaultState() const;
60 ApiTraceCall *callWithIndex(int idx) const;
62 const QList<ApiTraceFrame*> & frames() const;
63 ApiTraceFrame *frameAt(int idx) const;
64 int numFrames() const;
65 int numCallsInFrame(int idx) const;
67 void callEdited(ApiTraceCall *call);
68 void callReverted(ApiTraceCall *call);
69 void callError(ApiTraceCall *call);
72 bool needsSaving() const;
74 bool isSaving() const;
76 bool hasErrors() const;
78 trace::API api() const;
81 void setFileName(const QString &name);
83 void loadFrame(ApiTraceFrame *frame);
84 void findNext(ApiTraceFrame *frame,
87 Qt::CaseSensitivity sensitivity);
88 void findPrev(ApiTraceFrame *frame,
91 Qt::CaseSensitivity sensitivity);
92 void findFrameStart(ApiTraceFrame *frame);
93 void findFrameEnd(ApiTraceFrame *frame);
94 void findCallIndex(int index);
95 void setCallError(const ApiTraceError &error);
97 void bindThumbnailsToFrames(const QList<QImage> &thumbnails);
100 void loadTrace(const QString &name);
101 void requestFrame(ApiTraceFrame *frame);
102 void startedLoadingTrace();
103 void loaded(int percent);
104 void finishedLoadingTrace();
106 void framesInvalidated();
107 void changed(ApiTraceEvent *event);
108 void startedSaving();
110 void findResult(const ApiTrace::SearchRequest &request,
111 ApiTrace::SearchResult result,
114 void beginAddingFrames(int oldCount, int numAdded);
115 void endAddingFrames();
116 void beginLoadingFrame(ApiTraceFrame *frame, int numAdded);
117 void endLoadingFrame(ApiTraceFrame *frame);
118 void foundFrameStart(ApiTraceFrame *frame);
119 void foundFrameEnd(ApiTraceFrame *frame);
120 void foundCallIndex(ApiTraceCall *call);
123 void loaderSearch(const ApiTrace::SearchRequest &request);
124 void loaderFindFrameStart(ApiTraceFrame *frame);
125 void loaderFindFrameEnd(ApiTraceFrame *frame);
126 void loaderFindCallIndex(int index);
129 void addFrames(const QList<ApiTraceFrame*> &frames);
131 void guessedApi(int api);
132 void finishedParsing();
133 void loaderFrameLoaded(ApiTraceFrame *frame,
134 const QVector<ApiTraceCall*> &calls,
135 quint64 binaryDataSize);
136 void loaderSearchResult(const ApiTrace::SearchRequest &request,
137 ApiTrace::SearchResult result,
141 int callInFrame(int callIdx) const;
142 bool isFrameLoading(ApiTraceFrame *frame) const;
145 QString m_tempFileName;
147 QList<ApiTraceFrame*> m_frames;
150 TraceLoader *m_loader;
151 QThread *m_loaderThread;
152 SaverThread *m_saver;
154 QSet<ApiTraceCall*> m_editedCalls;
158 QSet<ApiTraceCall*> m_errors;
159 QList< QPair<ApiTraceFrame*, ApiTraceError> > m_queuedErrors;
160 QSet<ApiTraceFrame*> m_loadingFrames;