aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages/modplatform/flame
diff options
context:
space:
mode:
authorflow <thiagodonato300@gmail.com>2022-03-07 19:29:59 -0300
committerflow <thiagodonato300@gmail.com>2022-03-07 19:32:28 -0300
commit9c57b54a81a9026aa86a983a203df17c023eaa8d (patch)
treeea152742e106b92903acf083d598897243816b11 /launcher/ui/pages/modplatform/flame
parentb131d3b2ecbe6a9be35088d8411927bcd30de896 (diff)
downloadPrismLauncher-9c57b54a81a9026aa86a983a203df17c023eaa8d.tar.gz
PrismLauncher-9c57b54a81a9026aa86a983a203df17c023eaa8d.tar.bz2
PrismLauncher-9c57b54a81a9026aa86a983a203df17c023eaa8d.zip
refactor: move things around so that related things are close together
This also adds some comments around ModModel.cpp and ModPage.cpp to add some ease of reading the code. Also move some things from headers to cpp files.
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;
};