aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages/modplatform/flame
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/ui/pages/modplatform/flame')
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModModel.cpp17
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModModel.h8
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.cpp42
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.h5
4 files changed, 31 insertions, 41 deletions
diff --git a/launcher/ui/pages/modplatform/flame/FlameModModel.cpp b/launcher/ui/pages/modplatform/flame/FlameModModel.cpp
index 7588a714..ce2f74f1 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModModel.cpp
+++ b/launcher/ui/pages/modplatform/flame/FlameModModel.cpp
@@ -1,7 +1,24 @@
#include "FlameModModel.h"
+#include "modplatform/flame/FlameModIndex.h"
+
namespace FlameMod {
const char* ListModel::sorts[6]{ "Featured", "Popularity", "LastUpdated", "Name", "Author", "TotalDownloads" };
+void ListModel::loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj)
+{
+ FlameMod::loadIndexedPack(m, obj);
+};
+
+void ListModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr)
+{
+ FlameMod::loadIndexedPackVersions(m, arr, APPLICATION->network(), m_parent->m_instance);
+};
+
+QJsonArray ListModel::documentToArray(QJsonDocument& obj) const
+{
+ return obj.array();
+}
+
} // namespace FlameMod
diff --git a/launcher/ui/pages/modplatform/flame/FlameModModel.h b/launcher/ui/pages/modplatform/flame/FlameModModel.h
index 204834c9..cf3042ed 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModModel.h
+++ b/launcher/ui/pages/modplatform/flame/FlameModModel.h
@@ -1,7 +1,6 @@
#pragma once
#include "FlameModPage.h"
-#include "modplatform/flame/FlameModIndex.h"
namespace FlameMod {
@@ -14,12 +13,13 @@ class ListModel : public ModPlatform::ListModel {
virtual ~ListModel() = default;
private:
- void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj) override { FlameMod::loadIndexedPack(m, obj); };
+ void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj) override;
+ void loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) override;
- QJsonArray documentToArray(QJsonDocument& obj) const override { return obj.array(); };
+ QJsonArray documentToArray(QJsonDocument& obj) const override;
static const char* sorts[6];
- const char** getSorts() const override { return sorts; };
+ inline const char** getSorts() const override { return sorts; };
};
} // namespace FlameMod
diff --git a/launcher/ui/pages/modplatform/flame/FlameModPage.cpp b/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
index 19f58280..091e49c7 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
+++ b/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
@@ -1,15 +1,7 @@
#include "FlameModPage.h"
#include "ui_ModPage.h"
-#include <QKeyEvent>
-
-#include "Application.h"
#include "FlameModModel.h"
-#include "InstanceImportTask.h"
-#include "Json.h"
-#include "ModDownloadTask.h"
-#include "minecraft/MinecraftInstance.h"
-#include "minecraft/PackProfile.h"
#include "ui/dialogs/ModDownloadDialog.h"
FlameModPage::FlameModPage(ModDownloadDialog* dialog, BaseInstance* instance)
@@ -34,31 +26,13 @@ FlameModPage::FlameModPage(ModDownloadDialog* dialog, BaseInstance* instance)
connect(ui->modSelectionButton, &QPushButton::clicked, this, &FlameModPage::onModSelected);
}
-bool FlameModPage::shouldDisplay() const { return true; }
-
-void FlameModPage::onRequestVersionsSucceeded(QJsonDocument& doc, QString addonId)
+bool FlameModPage::validateVersion(ModPlatform::IndexedVersion& ver, QString mineVer, QString loaderVer) const
{
- if (addonId != current.addonId) {
- return; // wrong request
- }
-
- QJsonArray arr = doc.array();
- try {
- FlameMod::loadIndexedPackVersions(current, arr, APPLICATION->network(), m_instance);
- } catch (const JSONValidationError& e) {
- qDebug() << doc;
- qWarning() << "Error while reading Flame mod version: " << e.cause();
- }
- auto packProfile = ((MinecraftInstance*)m_instance)->getPackProfile();
- QString mcVersion = packProfile->getComponentVersion("net.minecraft");
- QString loaderString = (packProfile->getComponentVersion("net.minecraftforge").isEmpty()) ? "fabric" : "forge";
- for (int i = 0; i < current.versions.size(); i++) {
- auto version = current.versions[i];
- if (!version.mcVersion.contains(mcVersion)) { continue; }
- ui->versionSelectionBox->addItem(version.version, QVariant(i));
- }
- if (ui->versionSelectionBox->count() == 0) { ui->versionSelectionBox->addItem(tr("No Valid Version found!"), QVariant(-1)); }
-
- ui->modSelectionButton->setText(tr("Cannot select invalid version :("));
- updateSelectionButton();
+ (void) loaderVer;
+ return ver.mcVersion.contains(mineVer);
}
+
+// I don't know why, but doing this on the parent class makes it so that
+// other mod providers start loading before being selected, at least with
+// my Qt, so we need to implement this in every derived class...
+bool FlameModPage::shouldDisplay() const { return true; }
diff --git a/launcher/ui/pages/modplatform/flame/FlameModPage.h b/launcher/ui/pages/modplatform/flame/FlameModPage.h
index f15b51ec..90513ca5 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModPage.h
+++ b/launcher/ui/pages/modplatform/flame/FlameModPage.h
@@ -19,8 +19,7 @@ class FlameModPage : public ModPage {
inline QString debugName() const override { return tr("Flame"); }
inline QString metaEntryBase() const override { return "FlameMods"; };
- bool shouldDisplay() const override;
+ bool validateVersion(ModPlatform::IndexedVersion& ver, QString mineVer, QString loaderVer = "") const override;
- private:
- void onRequestVersionsSucceeded(QJsonDocument&, QString) override;
+ bool shouldDisplay() const override;
};