diff options
Diffstat (limited to 'application/UpdateController.h')
-rw-r--r-- | application/UpdateController.h | 44 |
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; +}; |