aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages
diff options
context:
space:
mode:
authorflow <thiagodonato300@gmail.com>2022-03-06 15:23:00 -0300
committerflow <thiagodonato300@gmail.com>2022-03-06 15:23:00 -0300
commit5a638fa97711231638615f920462ed5f5f4507e0 (patch)
tree3b6d1f46241d0d7b37892bab61c6df5537c99e04 /launcher/ui/pages
parent5e9d49a91082c53907db84df809d21c3bdc8bcac (diff)
downloadPrismLauncher-5a638fa97711231638615f920462ed5f5f4507e0.tar.gz
PrismLauncher-5a638fa97711231638615f920462ed5f5f4507e0.tar.bz2
PrismLauncher-5a638fa97711231638615f920462ed5f5f4507e0.zip
refactor: move "get versions" task from page to model
This seems more reasonable
Diffstat (limited to 'launcher/ui/pages')
-rw-r--r--launcher/ui/pages/modplatform/ModModel.cpp20
-rw-r--r--launcher/ui/pages/modplatform/ModModel.h2
-rw-r--r--launcher/ui/pages/modplatform/ModPage.cpp17
-rw-r--r--launcher/ui/pages/modplatform/ModPage.h6
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.cpp2
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.h2
-rw-r--r--launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp2
-rw-r--r--launcher/ui/pages/modplatform/modrinth/ModrinthPage.h2
8 files changed, 30 insertions, 23 deletions
diff --git a/launcher/ui/pages/modplatform/ModModel.cpp b/launcher/ui/pages/modplatform/ModModel.cpp
index 481f1c56..c71acd35 100644
--- a/launcher/ui/pages/modplatform/ModModel.cpp
+++ b/launcher/ui/pages/modplatform/ModModel.cpp
@@ -97,6 +97,26 @@ void ListModel::getLogo(const QString& logo, const QString& logoUrl, LogoCallbac
}
}
+void ListModel::populateVersions(ModPlatform::IndexedPack const& current)
+{
+ auto netJob = new NetJob(QString("%1::ModVersions(%2)").arg(m_parent->debugName()).arg(current.name), APPLICATION->network());
+ auto response = new QByteArray();
+ QString addonId = current.addonId.toString();
+
+ netJob->addNetAction(Net::Download::makeByteArray(m_parent->apiProvider()->getVersionsURL(addonId), response));
+
+ QObject::connect(netJob, &NetJob::succeeded, this, [this, response, addonId]{
+ m_parent->onGetVersionsSucceeded(m_parent, response, addonId);
+ });
+
+ QObject::connect(netJob, &NetJob::finished, this, [response, netJob] {
+ netJob->deleteLater();
+ delete response;
+ });
+
+ netJob->start();
+}
+
void ListModel::performPaginatedSearch()
{
QString mcVersion = ((MinecraftInstance*)((ModPage*)parent())->m_instance)->getPackProfile()->getComponentVersion("net.minecraft");
diff --git a/launcher/ui/pages/modplatform/ModModel.h b/launcher/ui/pages/modplatform/ModModel.h
index 23e544f1..2b8ff65e 100644
--- a/launcher/ui/pages/modplatform/ModModel.h
+++ b/launcher/ui/pages/modplatform/ModModel.h
@@ -30,6 +30,8 @@ class ListModel : public QAbstractListModel {
void getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback);
void searchWithTerm(const QString& term, const int sort);
+ virtual void populateVersions(const ModPlatform::IndexedPack& current);
+
protected slots:
virtual void searchRequestFinished() = 0;
diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp
index f427d32a..68c62fb8 100644
--- a/launcher/ui/pages/modplatform/ModPage.cpp
+++ b/launcher/ui/pages/modplatform/ModPage.cpp
@@ -98,22 +98,7 @@ void ModPage::onSelectionChanged(QModelIndex first, QModelIndex second)
ui->modSelectionButton->setText(tr("Loading versions..."));
ui->modSelectionButton->setEnabled(false);
- auto netJob = new NetJob(QString("%1::ModVersions(%2)").arg(debugName()).arg(current.name), APPLICATION->network());
- auto response = new QByteArray();
- QString addonId = current.addonId.toString();
-
- netJob->addNetAction(Net::Download::makeByteArray(apiProvider()->getVersionsURL(addonId), response));
-
- QObject::connect(netJob, &NetJob::succeeded, this, [this, response, addonId]{
- onModVersionSucceed(this, response, addonId);
- });
-
- QObject::connect(netJob, &NetJob::finished, this, [response, netJob] {
- netJob->deleteLater();
- delete response;
- });
-
- netJob->start();
+ listModel->populateVersions(current);
} else {
for (int i = 0; i < current.versions.size(); i++) {
ui->versionSelectionBox->addItem(current.versions[i].version, QVariant(i));
diff --git a/launcher/ui/pages/modplatform/ModPage.h b/launcher/ui/pages/modplatform/ModPage.h
index cd034a3a..b1681b8c 100644
--- a/launcher/ui/pages/modplatform/ModPage.h
+++ b/launcher/ui/pages/modplatform/ModPage.h
@@ -1,11 +1,10 @@
#pragma once
-#include <Application.h>
#include <QWidget>
+#include "Application.h"
#include "modplatform/ModAPI.h"
#include "modplatform/ModIndex.h"
-#include "tasks/Task.h"
#include "ui/pages/BasePage.h"
#include "ui/pages/modplatform/ModModel.h"
@@ -37,13 +36,14 @@ class ModPage : public QWidget, public BasePage {
virtual bool shouldDisplay() const override = 0;
const ModAPI* apiProvider() const { return api.get(); };
+ virtual void onGetVersionsSucceeded(ModPage*, QByteArray*, QString) = 0;
+
void openedImpl() override;
bool eventFilter(QObject* watched, QEvent* event) override;
BaseInstance* m_instance;
protected:
- virtual void onModVersionSucceed(ModPage*, QByteArray*, QString) = 0;
void updateSelectionButton();
diff --git a/launcher/ui/pages/modplatform/flame/FlameModPage.cpp b/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
index 47a79bd6..14766851 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
+++ b/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
@@ -36,7 +36,7 @@ FlameModPage::FlameModPage(ModDownloadDialog* dialog, BaseInstance* instance)
bool FlameModPage::shouldDisplay() const { return true; }
-void FlameModPage::onModVersionSucceed(ModPage* instance, QByteArray* response, QString addonId)
+void FlameModPage::onGetVersionsSucceeded(ModPage* instance, QByteArray* response, QString addonId)
{
if (addonId != current.addonId) {
return; // wrong request
diff --git a/launcher/ui/pages/modplatform/flame/FlameModPage.h b/launcher/ui/pages/modplatform/flame/FlameModPage.h
index 89311e7f..7e8d6707 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModPage.h
+++ b/launcher/ui/pages/modplatform/flame/FlameModPage.h
@@ -22,5 +22,5 @@ class FlameModPage : public ModPage {
bool shouldDisplay() const override;
private:
- void onModVersionSucceed(ModPage*, QByteArray*, QString) override;
+ void onGetVersionsSucceeded(ModPage*, QByteArray*, QString) override;
};
diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
index 4e4a9db4..7ac9b406 100644
--- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
+++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
@@ -35,7 +35,7 @@ ModrinthPage::ModrinthPage(ModDownloadDialog* dialog, BaseInstance* instance)
bool ModrinthPage::shouldDisplay() const { return true; }
-void ModrinthPage::onModVersionSucceed(ModPage* instance, QByteArray* response, QString addonId)
+void ModrinthPage::onGetVersionsSucceeded(ModPage* instance, QByteArray* response, QString addonId)
{
if (addonId != current.addonId) { return; }
QJsonParseError parse_error;
diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h
index d92274dd..0112c5ea 100644
--- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h
+++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h
@@ -22,5 +22,5 @@ class ModrinthPage : public ModPage {
bool shouldDisplay() const override;
private:
- void onModVersionSucceed(ModPage*, QByteArray*, QString) override;
+ void onGetVersionsSucceeded(ModPage*, QByteArray*, QString) override;
};