From a98e1df10cef774672e919497c43373e86c77f97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Thu, 28 May 2015 09:36:58 +0200 Subject: GH-1011 fetch missing versions when customizing/reverting Minecraft patches --- application/pages/VersionPage.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'application/pages/VersionPage.cpp') diff --git a/application/pages/VersionPage.cpp b/application/pages/VersionPage.cpp index bb310eea..831408f6 100644 --- a/application/pages/VersionPage.cpp +++ b/application/pages/VersionPage.cpp @@ -44,6 +44,8 @@ #include "liteloader/LiteLoaderInstaller.h" #include "auth/MojangAccountList.h" #include "minecraft/Mod.h" +#include +#include #include "icons/IconList.h" @@ -224,16 +226,21 @@ void VersionPage::on_changeVersionBtn_clicked() reloadMinecraftProfile(); } m_inst->setIntendedVersionId(vselect.selectedVersion()->descriptor()); + doUpdate(); +} +int VersionPage::doUpdate() +{ auto updateTask = m_inst->doUpdate(); if (!updateTask) { - return; + return 1; } ProgressDialog tDialog(this); connect(updateTask.get(), SIGNAL(failed(QString)), SLOT(onGameUpdateError(QString))); - tDialog.exec(updateTask.get()); + int ret = tDialog.exec(updateTask.get()); updateButtons(); + return ret; } void VersionPage::on_forgeBtn_clicked() @@ -353,6 +360,16 @@ void VersionPage::on_customizeBtn_clicked() { return; } + //HACK HACK remove, this is dumb + auto patch = m_version->versionPatch(version); + auto mc = std::dynamic_pointer_cast(patch); + if(mc && mc->needsUpdate()) + { + if(!doUpdate()) + { + return; + } + } if(!m_version->customize(version)) { // TODO: some error box here @@ -384,6 +401,15 @@ void VersionPage::on_revertBtn_clicked() { return; } + auto mcraw = MMC->minecraftlist()->findVersion(m_inst->intendedVersionId()); + auto mc = std::dynamic_pointer_cast(mcraw); + if(mc && mc->needsUpdate()) + { + if(!doUpdate()) + { + return; + } + } if(!m_version->revert(version)) { // TODO: some error box here -- cgit v1.2.3