#pragma once #include #include #include 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 m_replace_backups; QList m_delete_backups; enum Failure { Replace, Delete, Start, Nothing } m_failedOperationType = Nothing; QString m_failedFile; };