X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitrace.h;h=d52c669928aeac70654bf3c9a48be89fbaa04698;hb=dc792082bcdd4b761af6b22e67570098ebf9f3f2;hp=f1f6811919ba12a970317df4d35b3b4e9038bceb;hpb=f04cf8a9dd3150a0127a449e606ead585a31d6d2;p=apitrace diff --git a/gui/apitrace.h b/gui/apitrace.h index f1f6811..d52c669 100644 --- a/gui/apitrace.h +++ b/gui/apitrace.h @@ -4,8 +4,10 @@ #include "apitracecall.h" #include +#include class LoaderThread; +class SaverThread; class ApiTrace : public QObject { @@ -29,6 +31,8 @@ public: FrameMarker frameMarker() const; + ApiTraceState defaultState() const; + QList calls() const; ApiTraceCall *callAt(int idx) const; ApiTraceCall *callWithIndex(int idx) const; @@ -39,25 +43,43 @@ public: int numFrames() const; int numCallsInFrame(int idx) const; + 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(); signals: void startedLoadingTrace(); void finishedLoadingTrace(); void invalidated(); void framesInvalidated(); + void changed(ApiTraceCall *call); + void startedSaving(); + void saved(); - 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; @@ -65,6 +87,13 @@ private: FrameMarker m_frameMarker; LoaderThread *m_loader; + SaverThread *m_saver; + + QSet m_editedCalls; + + bool m_needsSaving; + + QSet m_errors; }; #endif