summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
Diffstat (limited to 'application')
-rw-r--r--application/pages/VersionPage.cpp30
-rw-r--r--application/pages/VersionPage.h1
2 files changed, 29 insertions, 2 deletions
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 <minecraft/MinecraftVersion.h>
+#include <minecraft/MinecraftVersionList.h>
#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<MinecraftVersion>(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<MinecraftVersion>(mcraw);
+ if(mc && mc->needsUpdate())
+ {
+ if(!doUpdate())
+ {
+ return;
+ }
+ }
if(!m_version->revert(version))
{
// TODO: some error box here
diff --git a/application/pages/VersionPage.h b/application/pages/VersionPage.h
index f3b49544..49837f80 100644
--- a/application/pages/VersionPage.h
+++ b/application/pages/VersionPage.h
@@ -69,6 +69,7 @@ private:
int currentRow();
void updateButtons(int row = -1);
void preselect(int row = 0);
+ int doUpdate();
protected:
/// FIXME: this shouldn't be necessary!