From 968366c2aecb3337af281a01de56023ce5ffe2f9 Mon Sep 17 00:00:00 2001 From: flow Date: Sat, 12 Nov 2022 11:42:07 -0300 Subject: feat+fix: allow forwarding extra info to InstanceImportTask This allows us to pass to the creation instances their actual pack ID and version ID, that in Flame's case, are only available before starting to create an instance. Signed-off-by: flow --- launcher/ui/pages/modplatform/flame/FlamePage.cpp | 17 +++++++++++++---- launcher/ui/pages/modplatform/flame/FlamePage.h | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'launcher/ui/pages/modplatform/flame') diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index a65b6585..d288a869 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -197,12 +197,18 @@ void FlamePage::suggestCurrent() return; } - if (selectedVersion.isEmpty() || selectedVersion == "-1") { + if (m_selected_version_index == -1) { dialog->setSuggestedPack(); return; } - dialog->setSuggestedPack(current.name, new InstanceImportTask(selectedVersion,this)); + auto version = current.versions.at(m_selected_version_index); + + QMap extra_info; + extra_info.insert("pack_id", QString::number(current.addonId)); + extra_info.insert("pack_version_id", QString::number(version.fileId)); + + dialog->setSuggestedPack(current.name, new InstanceImportTask(version.downloadUrl, this, extra_info)); QString editedLogoName; editedLogoName = "curseforge_" + current.logoName.section(".", 0, 0); listModel->getLogo(current.logoName, current.logoUrl, @@ -212,10 +218,13 @@ void FlamePage::suggestCurrent() void FlamePage::onVersionSelectionChanged(QString data) { if (data.isNull() || data.isEmpty()) { - selectedVersion = ""; + m_selected_version_index = -1; return; } - selectedVersion = ui->versionSelectionBox->currentData().toString(); + + m_selected_version_index = ui->versionSelectionBox->currentIndex(); + Q_ASSERT(current.versions.at(m_selected_version_index).downloadUrl == ui->versionSelectionBox->currentData().toString()); + suggestCurrent(); } diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.h b/launcher/ui/pages/modplatform/flame/FlamePage.h index 8130e416..8bdca38e 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.h +++ b/launcher/ui/pages/modplatform/flame/FlamePage.h @@ -99,5 +99,5 @@ private: Flame::ListModel* listModel = nullptr; Flame::IndexedPack current; - QString selectedVersion; + int m_selected_version_index = -1; }; -- cgit From 1630a23fb029c4ba7d622d0ae4da5c9fbfc57fe2 Mon Sep 17 00:00:00 2001 From: flow Date: Fri, 25 Nov 2022 10:17:43 -0300 Subject: refactor(InstanceImport): require rvalue from 'extra_info' mappings Signed-off-by: flow --- launcher/InstanceImportTask.cpp | 4 ++-- launcher/InstanceImportTask.h | 2 +- launcher/ui/pages/instance/ManagedPackPage.cpp | 4 ++-- launcher/ui/pages/modplatform/flame/FlamePage.cpp | 2 +- launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) (limited to 'launcher/ui/pages/modplatform/flame') diff --git a/launcher/InstanceImportTask.cpp b/launcher/InstanceImportTask.cpp index 7c04ec47..834e9320 100644 --- a/launcher/InstanceImportTask.cpp +++ b/launcher/InstanceImportTask.cpp @@ -55,8 +55,8 @@ #include -InstanceImportTask::InstanceImportTask(const QUrl sourceUrl, QWidget* parent, QMap extra_info) - : m_sourceUrl(sourceUrl), m_extra_info(std::move(extra_info)), m_parent(parent) +InstanceImportTask::InstanceImportTask(const QUrl sourceUrl, QWidget* parent, QMap&& extra_info) + : m_sourceUrl(sourceUrl), m_extra_info(extra_info), m_parent(parent) {} bool InstanceImportTask::abort() diff --git a/launcher/InstanceImportTask.h b/launcher/InstanceImportTask.h index 712ef054..6b8ac966 100644 --- a/launcher/InstanceImportTask.h +++ b/launcher/InstanceImportTask.h @@ -56,7 +56,7 @@ class InstanceImportTask : public InstanceTask { Q_OBJECT public: - explicit InstanceImportTask(const QUrl sourceUrl, QWidget* parent = nullptr, QMap extra_info = {}); + explicit InstanceImportTask(const QUrl sourceUrl, QWidget* parent = nullptr, QMap&& extra_info = {}); bool abort() override; const QVector &getBlockedFiles() const diff --git a/launcher/ui/pages/instance/ManagedPackPage.cpp b/launcher/ui/pages/instance/ManagedPackPage.cpp index 16b2cb57..d8cb9362 100644 --- a/launcher/ui/pages/instance/ManagedPackPage.cpp +++ b/launcher/ui/pages/instance/ManagedPackPage.cpp @@ -275,7 +275,7 @@ void ModrinthManagedPackPage::update() extra_info.insert("pack_id", m_pack.id); extra_info.insert("pack_version_id", version.id); - auto extracted = new InstanceImportTask(version.download_url, this, extra_info); + auto extracted = new InstanceImportTask(version.download_url, this, std::move(extra_info)); InstanceName inst_name(m_inst->getManagedPackName(), version.version); inst_name.setName(m_inst->name().replace(m_inst->getManagedPackVersionName(), version.version)); @@ -413,7 +413,7 @@ void FlameManagedPackPage::update() 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); + auto extracted = new InstanceImportTask(version.downloadUrl, this, std::move(extra_info)); InstanceName inst_name(m_inst->getManagedPackName(), version.version); inst_name.setName(m_inst->name().replace(m_inst->getManagedPackVersionName(), version.version)); diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index d288a869..6023e741 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -208,7 +208,7 @@ void FlamePage::suggestCurrent() extra_info.insert("pack_id", QString::number(current.addonId)); extra_info.insert("pack_version_id", QString::number(version.fileId)); - dialog->setSuggestedPack(current.name, new InstanceImportTask(version.downloadUrl, this, extra_info)); + dialog->setSuggestedPack(current.name, new InstanceImportTask(version.downloadUrl, this, std::move(extra_info))); QString editedLogoName; editedLogoName = "curseforge_" + current.logoName.section(".", 0, 0); listModel->getLogo(current.logoName, current.logoUrl, diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp index c66395f2..8ab2ad1d 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp @@ -304,7 +304,7 @@ void ModrinthPage::suggestCurrent() extra_info.insert("pack_id", current.id); extra_info.insert("pack_version_id", ver.id); - dialog->setSuggestedPack(current.name, ver.version, new InstanceImportTask(ver.download_url, this, extra_info)); + dialog->setSuggestedPack(current.name, ver.version, new InstanceImportTask(ver.download_url, this, std::move(extra_info))); auto iconName = current.iconName; m_model->getLogo(iconName, current.iconUrl.toString(), [this, iconName](QString logo) { dialog->setSuggestedIconFromFile(logo, iconName); }); -- cgit From 6f50809457a2c974f0f8f15f5158cac7347e18d2 Mon Sep 17 00:00:00 2001 From: flow Date: Mon, 5 Dec 2022 18:13:38 -0300 Subject: fix(FlamePage): don't assert / suggest blocked modpacks Signed-off-by: flow --- launcher/ui/pages/modplatform/flame/FlamePage.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'launcher/ui/pages/modplatform/flame') diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index 6023e741..f9ac4a78 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -217,12 +217,16 @@ void FlamePage::suggestCurrent() void FlamePage::onVersionSelectionChanged(QString data) { - if (data.isNull() || data.isEmpty()) { + bool is_blocked = false; + ui->versionSelectionBox->currentData().toInt(&is_blocked); + + if (data.isNull() || data.isEmpty() || is_blocked) { m_selected_version_index = -1; return; } m_selected_version_index = ui->versionSelectionBox->currentIndex(); + Q_ASSERT(current.versions.at(m_selected_version_index).downloadUrl == ui->versionSelectionBox->currentData().toString()); suggestCurrent(); -- cgit