diff options
Diffstat (limited to 'launcher/modplatform/legacy_ftb/PackInstallTask.h')
-rw-r--r-- | launcher/modplatform/legacy_ftb/PackInstallTask.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/launcher/modplatform/legacy_ftb/PackInstallTask.h b/launcher/modplatform/legacy_ftb/PackInstallTask.h new file mode 100644 index 00000000..600f72e7 --- /dev/null +++ b/launcher/modplatform/legacy_ftb/PackInstallTask.h @@ -0,0 +1,55 @@ +#pragma once +#include "InstanceTask.h" +#include "net/NetJob.h" +#include "quazip.h" +#include "quazipdir.h" +#include "meta/Index.h" +#include "meta/Version.h" +#include "meta/VersionList.h" +#include "PackHelpers.h" + +#include <nonstd/optional> + +namespace LegacyFTB { + +class PackInstallTask : public InstanceTask +{ + Q_OBJECT + +public: + explicit PackInstallTask(Modpack pack, QString version); + virtual ~PackInstallTask(){} + + bool canAbort() const override { return true; } + bool abort() override; + +protected: + //! Entry point for tasks. + virtual void executeTask() override; + +private: + void downloadPack(); + void unzip(); + void install(); + +private slots: + void onDownloadSucceeded(); + void onDownloadFailed(QString reason); + void onDownloadProgress(qint64 current, qint64 total); + + void onUnzipFinished(); + void onUnzipCanceled(); + +private: /* data */ + bool abortable = false; + std::unique_ptr<QuaZip> m_packZip; + QFuture<nonstd::optional<QStringList>> m_extractFuture; + QFutureWatcher<nonstd::optional<QStringList>> m_extractFutureWatcher; + NetJobPtr netJobContainer; + QString archivePath; + + Modpack m_pack; + QString m_version; +}; + +} |