X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitrace.h;h=8da0320484a455560c430103885a4b43df298bde;hb=3176ebeffe825a5f998b13755c09cfa312b0e8d3;hp=3c27543e9b0b36a3bc053d799c2831fabbd0ea87;hpb=0ddd2502eeb411d1dae9004cf1636aa3a1b8e755;p=apitrace diff --git a/gui/apitrace.h b/gui/apitrace.h index 3c27543..8da0320 100644 --- a/gui/apitrace.h +++ b/gui/apitrace.h @@ -6,7 +6,9 @@ #include #include -class LoaderThread; +class TraceLoader; +class SaverThread; +class QThread; class ApiTrace : public QObject { @@ -32,8 +34,7 @@ public: ApiTraceState defaultState() const; - QList calls() const; - ApiTraceCall *callAt(int idx) const; + QVector calls() const; ApiTraceCall *callWithIndex(int idx) const; int numCalls() const; @@ -44,38 +45,61 @@ public: void callEdited(ApiTraceCall *call); void callReverted(ApiTraceCall *call); + void callError(ApiTraceCall *call); bool edited() const; + bool needsSaving() const; + + bool isSaving() const; + + bool hasErrors() const; public slots: void setFileName(const QString &name); void setFrameMarker(FrameMarker marker); + void save(); + void loadFrame(ApiTraceFrame *frame); signals: + void loadTrace(const QString &name); + void requestFrame(ApiTraceFrame *frame); void startedLoadingTrace(); + void loaded(int percent); void finishedLoadingTrace(); void invalidated(); void framesInvalidated(); void changed(ApiTraceCall *call); + void startedSaving(); + void saved(); + void frameLoaded(ApiTraceFrame *frame); - void framesAdded(int oldCount, int numAdded); + void beginAddingFrames(int oldCount, int numAdded); + void endAddingFrames(); void callsAdded(int oldCount, int numAdded); private slots: void addFrames(const QList &frames); + void slotSaved(); private: void detectFrames(); private: QString m_fileName; + QString m_tempFileName; QList m_frames; - QList m_calls; + QVector m_calls; FrameMarker m_frameMarker; - LoaderThread *m_loader; + TraceLoader *m_loader; + QThread *m_loaderThread; + SaverThread *m_saver; QSet m_editedCalls; + + bool m_needsSaving; + + QSet m_errors; }; #endif