summaryrefslogtreecommitdiffstats
path: root/application/UpdateController.h
diff options
context:
space:
mode:
Diffstat (limited to 'application/UpdateController.h')
-rw-r--r--application/UpdateController.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/application/UpdateController.h b/application/UpdateController.h
new file mode 100644
index 00000000..2b258701
--- /dev/null
+++ b/application/UpdateController.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include <QString>
+#include <QList>
+#include <updater/GoUpdate.h>
+
+class QWidget;
+
+class UpdateController
+{
+public:
+ UpdateController(QWidget * parent, const QString &root, const QString updateFilesDir, GoUpdate::OperationList operations);
+ void installUpdates();
+
+private:
+ void fail();
+ bool rollback();
+
+private:
+ QString m_root;
+ QString m_updateFilesDir;
+ GoUpdate::OperationList m_operations;
+ QWidget * m_parent;
+
+ struct BackupEntry
+ {
+ // path where we got the new file from
+ QString update;
+ // path of what is being actually updated
+ QString original;
+ // path where the backup of the updated file was placed
+ QString backup;
+ };
+ QList <BackupEntry> m_replace_backups;
+ QList <BackupEntry> m_delete_backups;
+ enum Failure
+ {
+ Replace,
+ Delete,
+ Start,
+ Nothing
+ } m_failedOperationType = Nothing;
+ QString m_failedFile;
+};