diff options
author | Petr Mrázek <peterix@gmail.com> | 2014-03-19 22:26:25 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2014-03-19 22:26:25 +0100 |
commit | 39d37394423dc204efe774920a59ce010781b28c (patch) | |
tree | 2b961bcbb4d979790f40e88e45e2bd0f8ddb9140 /logic/LiteLoaderInstaller.cpp | |
parent | 26b485d82f03c0191142cf9b660b4ab43962878d (diff) | |
parent | 42a85def60036a5788a9dd862d0c6f835b62337c (diff) | |
download | PrismLauncher-39d37394423dc204efe774920a59ce010781b28c.tar.gz PrismLauncher-39d37394423dc204efe774920a59ce010781b28c.tar.bz2 PrismLauncher-39d37394423dc204efe774920a59ce010781b28c.zip |
Merge remote-tracking branch 'origin/feature_json_fixes' into develop
Diffstat (limited to 'logic/LiteLoaderInstaller.cpp')
-rw-r--r-- | logic/LiteLoaderInstaller.cpp | 68 |
1 files changed, 66 insertions, 2 deletions
diff --git a/logic/LiteLoaderInstaller.cpp b/logic/LiteLoaderInstaller.cpp index bb4b07ca..99cc5643 100644 --- a/logic/LiteLoaderInstaller.cpp +++ b/logic/LiteLoaderInstaller.cpp @@ -23,12 +23,17 @@ #include "VersionFinal.h" #include "OneSixLibrary.h" #include "OneSixInstance.h" +#include "MultiMC.h" +#include "lists/LiteLoaderVersionList.h" -LiteLoaderInstaller::LiteLoaderInstaller(LiteLoaderVersionPtr version) - : BaseInstaller(), m_version(version) +LiteLoaderInstaller::LiteLoaderInstaller() : BaseInstaller() { } +void LiteLoaderInstaller::prepare(LiteLoaderVersionPtr version) +{ + m_version = version; +} bool LiteLoaderInstaller::add(OneSixInstance *to) { if (!BaseInstaller::add(to)) @@ -84,3 +89,62 @@ bool LiteLoaderInstaller::add(OneSixInstance *to) return true; } + +class LiteLoaderInstallTask : public Task +{ + Q_OBJECT +public: + LiteLoaderInstallTask(LiteLoaderInstaller *installer, OneSixInstance *instance, + BaseVersionPtr version, QObject *parent) + : Task(parent), m_installer(installer), m_instance(instance), m_version(version) + { + } + +protected: + void executeTask() override + { + LiteLoaderVersionPtr liteloaderVersion = + std::dynamic_pointer_cast<LiteLoaderVersion>(m_version); + if (!liteloaderVersion) + { + return; + } + m_installer->prepare(liteloaderVersion); + if (!m_installer->add(m_instance)) + { + emitFailed(tr("For reasons unknown, the LiteLoader installation failed. Check your " + "MultiMC log files for details.")); + } + else + { + try + { + m_instance->reloadVersion(); + emitSucceeded(); + } + catch (MMCError &e) + { + emitFailed(e.cause()); + } + catch (...) + { + emitFailed( + tr("Failed to load the version description file for reasons unknown.")); + } + } + } + +private: + LiteLoaderInstaller *m_installer; + OneSixInstance *m_instance; + BaseVersionPtr m_version; +}; + +ProgressProvider *LiteLoaderInstaller::createInstallTask(OneSixInstance *instance, + BaseVersionPtr version, + QObject *parent) +{ + return new LiteLoaderInstallTask(this, instance, version, parent); +} + +#include "LiteLoaderInstaller.moc" |