]> git.cworth.org Git - apitrace/blobdiff - gui/apitrace.h
Merge branch 'master' into on-demand-loading
[apitrace] / gui / apitrace.h
index f1f6811919ba12a970317df4d35b3b4e9038bceb..d52c669928aeac70654bf3c9a48be89fbaa04698 100644 (file)
@@ -4,8 +4,10 @@
 #include "apitracecall.h"
 
 #include <QObject>
+#include <QSet>
 
 class LoaderThread;
+class SaverThread;
 
 class ApiTrace : public QObject
 {
@@ -29,6 +31,8 @@ public:
 
     FrameMarker frameMarker() const;
 
+    ApiTraceState defaultState() const;
+
     QList<ApiTraceCall*> 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<ApiTraceFrame*> &frames);
+    void slotSaved();
 private:
     void detectFrames();
 private:
     QString m_fileName;
+    QString m_tempFileName;
 
     QList<ApiTraceFrame*> m_frames;
     QList<ApiTraceCall*> m_calls;
@@ -65,6 +87,13 @@ private:
     FrameMarker m_frameMarker;
 
     LoaderThread *m_loader;
+    SaverThread  *m_saver;
+
+    QSet<ApiTraceCall*> m_editedCalls;
+
+    bool m_needsSaving;
+
+    QSet<ApiTraceCall*> m_errors;
 };
 
 #endif