From 57b905be2493f68ab49482a45ab63249bb6468fa Mon Sep 17 00:00:00 2001 From: flow Date: Sat, 12 Nov 2022 13:03:50 -0300 Subject: [PATCH] feat(ManagedPackPage): implement Flame modpack updating button Signed-off-by: flow --- .../ui/pages/instance/ManagedPackPage.cpp | 26 +++++++++++++++++++ launcher/ui/pages/instance/ManagedPackPage.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/launcher/ui/pages/instance/ManagedPackPage.cpp b/launcher/ui/pages/instance/ManagedPackPage.cpp index f00a2bdd..5f108cf1 100644 --- a/launcher/ui/pages/instance/ManagedPackPage.cpp +++ b/launcher/ui/pages/instance/ManagedPackPage.cpp @@ -271,6 +271,7 @@ FlameManagedPackPage::FlameManagedPackPage(BaseInstance* inst, InstanceWindow* i { Q_ASSERT(inst->isManagedPack()); connect(ui->versionsComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(suggestVersion())); + connect(ui->updateButton, &QPushButton::pressed, this, &FlameManagedPackPage::update); } void FlameManagedPackPage::parseManagedPack() { @@ -367,4 +368,29 @@ void FlameManagedPackPage::suggestVersion() ManagedPackPage::suggestVersion(); } +void FlameManagedPackPage::update() +{ + auto index = ui->versionsComboBox->currentIndex(); + auto version = m_pack.versions.at(index); + + QMap extra_info; + extra_info.insert("pack_id", m_inst->getManagedPackID()); + extra_info.insert("pack_version_id", QString::number(version.fileId)); + + auto extracted = new InstanceImportTask(version.downloadUrl, this, extra_info); + + InstanceName inst_name(m_inst->getManagedPackName(), version.version); + inst_name.setName(m_inst->name().replace(m_inst->getManagedPackVersionName(), version.version)); + extracted->setName(inst_name); + + extracted->setGroup(APPLICATION->instances()->getInstanceGroup(m_inst->id())); + extracted->setIcon(m_inst->iconKey()); + extracted->setConfirmUpdate(false); + + auto did_succeed = runUpdateTask(extracted); + + if (m_instance_window && did_succeed) + m_instance_window->close(); +} + #include "ManagedPackPage.moc" diff --git a/launcher/ui/pages/instance/ManagedPackPage.h b/launcher/ui/pages/instance/ManagedPackPage.h index 6d487820..9ad5e34a 100644 --- a/launcher/ui/pages/instance/ManagedPackPage.h +++ b/launcher/ui/pages/instance/ManagedPackPage.h @@ -134,6 +134,8 @@ class FlameManagedPackPage final : public ManagedPackPage { public slots: void suggestVersion() override; + void update() override; + private: Flame::IndexedPack m_pack; FlameAPI m_api;