4 #include "apitracecall.h"
13 class ApiTrace : public QObject
18 SearchResult_NotFound,
22 struct SearchRequest {
30 SearchRequest(Direction dir,
34 Qt::CaseSensitivity caseSens)
45 Qt::CaseSensitivity cs;
54 QString fileName() const;
56 ApiTraceState defaultState() const;
58 ApiTraceCall *callWithIndex(int idx) const;
60 const QList<ApiTraceFrame*> & frames() const;
61 ApiTraceFrame *frameAt(int idx) const;
62 int numFrames() const;
63 int numCallsInFrame(int idx) const;
65 void callEdited(ApiTraceCall *call);
66 void callReverted(ApiTraceCall *call);
67 void callError(ApiTraceCall *call);
70 bool needsSaving() const;
72 bool isSaving() const;
74 bool hasErrors() const;
77 void setFileName(const QString &name);
79 void loadFrame(ApiTraceFrame *frame);
80 void findNext(ApiTraceFrame *frame,
83 Qt::CaseSensitivity sensitivity);
84 void findPrev(ApiTraceFrame *frame,
87 Qt::CaseSensitivity sensitivity);
88 void findFrameStart(ApiTraceFrame *frame);
89 void findFrameEnd(ApiTraceFrame *frame);
90 void findCallIndex(int index);
91 void setCallError(const ApiTraceError &error);
93 void bindThumbnailsToFrames(const QList<QImage> &thumbnails);
96 void loadTrace(const QString &name);
97 void requestFrame(ApiTraceFrame *frame);
98 void startedLoadingTrace();
99 void loaded(int percent);
100 void finishedLoadingTrace();
102 void framesInvalidated();
103 void changed(ApiTraceEvent *event);
104 void startedSaving();
106 void findResult(const ApiTrace::SearchRequest &request,
107 ApiTrace::SearchResult result,
110 void beginAddingFrames(int oldCount, int numAdded);
111 void endAddingFrames();
112 void beginLoadingFrame(ApiTraceFrame *frame, int numAdded);
113 void endLoadingFrame(ApiTraceFrame *frame);
114 void foundFrameStart(ApiTraceFrame *frame);
115 void foundFrameEnd(ApiTraceFrame *frame);
116 void foundCallIndex(ApiTraceCall *call);
119 void loaderSearch(const ApiTrace::SearchRequest &request);
120 void loaderFindFrameStart(ApiTraceFrame *frame);
121 void loaderFindFrameEnd(ApiTraceFrame *frame);
122 void loaderFindCallIndex(int index);
125 void addFrames(const QList<ApiTraceFrame*> &frames);
127 void finishedParsing();
128 void loaderFrameLoaded(ApiTraceFrame *frame,
129 const QVector<ApiTraceCall*> &calls,
130 quint64 binaryDataSize);
131 void loaderSearchResult(const ApiTrace::SearchRequest &request,
132 ApiTrace::SearchResult result,
136 int callInFrame(int callIdx) const;
137 bool isFrameLoading(ApiTraceFrame *frame) const;
140 QString m_tempFileName;
142 QList<ApiTraceFrame*> m_frames;
144 TraceLoader *m_loader;
145 QThread *m_loaderThread;
146 SaverThread *m_saver;
148 QSet<ApiTraceCall*> m_editedCalls;
152 QSet<ApiTraceCall*> m_errors;
153 QList< QPair<ApiTraceFrame*, ApiTraceError> > m_queuedErrors;
154 QSet<ApiTraceFrame*> m_loadingFrames;