aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui
diff options
context:
space:
mode:
authorIrgendwer01 <67506320+Irgendwer01@users.noreply.github.com>2022-04-15 13:04:25 +0200
committerGitHub <noreply@github.com>2022-04-15 13:04:25 +0200
commitecad388846060f486bc1ae665ffa854d3b867ee1 (patch)
treea946ef393142bf9f4cf6f32842faf44bc0d5c19a /launcher/ui
parent9a120f43c8df3062e34c32b28f3060b95e61249a (diff)
parent4ff1306e0c6c4c1a8c9b3c2ee72f8e7f0aa590dc (diff)
downloadPrismLauncher-ecad388846060f486bc1ae665ffa854d3b867ee1.tar.gz
PrismLauncher-ecad388846060f486bc1ae665ffa854d3b867ee1.tar.bz2
PrismLauncher-ecad388846060f486bc1ae665ffa854d3b867ee1.zip
Merge branch 'PolyMC:develop' into develop
Diffstat (limited to 'launcher/ui')
-rw-r--r--launcher/ui/pages/instance/ModFolderPage.cpp7
-rw-r--r--launcher/ui/pages/instance/VersionPage.cpp32
-rw-r--r--launcher/ui/pages/instance/VersionPage.h1
-rw-r--r--launcher/ui/pages/instance/VersionPage.ui9
-rw-r--r--launcher/ui/pages/modplatform/ModModel.cpp15
-rw-r--r--launcher/ui/pages/modplatform/ModModel.h1
-rw-r--r--launcher/ui/pages/modplatform/ModPage.cpp11
7 files changed, 57 insertions, 19 deletions
diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp
index fcb6022d..8113fe85 100644
--- a/launcher/ui/pages/instance/ModFolderPage.cpp
+++ b/launcher/ui/pages/instance/ModFolderPage.cpp
@@ -56,6 +56,8 @@
#include "minecraft/VersionFilterData.h"
#include "minecraft/PackProfile.h"
+#include "modplatform/ModAPI.h"
+
#include "Version.h"
#include "ui/dialogs/ProgressDialog.h"
#include "tasks/SequentialTask.h"
@@ -388,9 +390,8 @@ void ModFolderPage::on_actionInstall_mods_triggered()
if(m_inst->typeName() != "Minecraft"){
return; //this is a null instance or a legacy instance
}
- bool hasFabric = !((MinecraftInstance *)m_inst)->getPackProfile()->getComponentVersion("net.fabricmc.fabric-loader").isEmpty();
- bool hasForge = !((MinecraftInstance *)m_inst)->getPackProfile()->getComponentVersion("net.minecraftforge").isEmpty();
- if (!hasFabric && !hasForge) {
+ auto profile = ((MinecraftInstance *)m_inst)->getPackProfile();
+ if (profile->getModLoader() == ModAPI::Unspecified) {
QMessageBox::critical(this,tr("Error"),tr("Please install a mod loader first!"));
return;
}
diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp
index ed37dd1a..23e2367b 100644
--- a/launcher/ui/pages/instance/VersionPage.cpp
+++ b/launcher/ui/pages/instance/VersionPage.cpp
@@ -243,6 +243,9 @@ void VersionPage::updateVersionControls()
bool supportsFabric = minecraftVersion >= Version("1.14");
ui->actionInstall_Fabric->setEnabled(controlsEnabled && supportsFabric);
+ bool supportsQuilt = minecraftVersion >= Version("1.14");
+ ui->actionInstall_Quilt->setEnabled(controlsEnabled && supportsQuilt);
+
bool supportsLiteLoader = minecraftVersion <= Version("1.12.2");
ui->actionInstall_LiteLoader->setEnabled(controlsEnabled && supportsLiteLoader);
@@ -392,7 +395,7 @@ void VersionPage::on_actionChange_version_triggered()
return;
}
VersionSelectDialog vselect(list.get(), tr("Change %1 version").arg(name), this);
- if (uid == "net.fabricmc.intermediary")
+ if (uid == "net.fabricmc.intermediary" || uid == "org.quiltmc.hashed")
{
vselect.setEmptyString(tr("No intermediary mappings versions are currently available."));
vselect.setEmptyErrorString(tr("Couldn't load or download the intermediary mappings version lists!"));
@@ -498,6 +501,33 @@ void VersionPage::on_actionInstall_Fabric_triggered()
}
}
+void VersionPage::on_actionInstall_Quilt_triggered()
+{
+ auto vlist = APPLICATION->metadataIndex()->get("org.quiltmc.quilt-loader");
+ if(!vlist)
+ {
+ return;
+ }
+ VersionSelectDialog vselect(vlist.get(), tr("Select Quilt Loader version"), this);
+ vselect.setEmptyString(tr("No Quilt Loader versions are currently available."));
+ vselect.setEmptyErrorString(tr("Couldn't load or download the Quilt Loader version lists!"));
+
+ auto currentVersion = m_profile->getComponentVersion("org.quiltmc.quilt-loader");
+ if(!currentVersion.isEmpty())
+ {
+ vselect.setCurrentVersion(currentVersion);
+ }
+
+ if (vselect.exec() && vselect.selectedVersion())
+ {
+ auto vsn = vselect.selectedVersion();
+ m_profile->setComponentVersion("org.quiltmc.quilt-loader", vsn->descriptor());
+ m_profile->resolve(Net::Mode::Online);
+ preselect(m_profile->rowCount(QModelIndex())-1);
+ m_container->refreshContainer();
+ }
+}
+
void VersionPage::on_actionAdd_Empty_triggered()
{
NewComponentDialog compdialog(QString(), QString(), this);
diff --git a/launcher/ui/pages/instance/VersionPage.h b/launcher/ui/pages/instance/VersionPage.h
index 2d37af43..979311fc 100644
--- a/launcher/ui/pages/instance/VersionPage.h
+++ b/launcher/ui/pages/instance/VersionPage.h
@@ -73,6 +73,7 @@ private slots:
void on_actionChange_version_triggered();
void on_actionInstall_Forge_triggered();
void on_actionInstall_Fabric_triggered();
+ void on_actionInstall_Quilt_triggered();
void on_actionAdd_Empty_triggered();
void on_actionInstall_LiteLoader_triggered();
void on_actionReload_triggered();
diff --git a/launcher/ui/pages/instance/VersionPage.ui b/launcher/ui/pages/instance/VersionPage.ui
index a4990ff3..489f7218 100644
--- a/launcher/ui/pages/instance/VersionPage.ui
+++ b/launcher/ui/pages/instance/VersionPage.ui
@@ -107,6 +107,7 @@
<addaction name="separator"/>
<addaction name="actionInstall_Forge"/>
<addaction name="actionInstall_Fabric"/>
+ <addaction name="actionInstall_Quilt"/>
<addaction name="actionInstall_LiteLoader"/>
<addaction name="actionInstall_mods"/>
<addaction name="separator"/>
@@ -192,6 +193,14 @@
<string>Install the Fabric Loader package.</string>
</property>
</action>
+ <action name="actionInstall_Quilt">
+ <property name="text">
+ <string>Install Quilt</string>
+ </property>
+ <property name="toolTip">
+ <string>Install the Quilt Loader package.</string>
+ </property>
+ </action>
<action name="actionInstall_LiteLoader">
<property name="text">
<string>Install LiteLoader</string>
diff --git a/launcher/ui/pages/modplatform/ModModel.cpp b/launcher/ui/pages/modplatform/ModModel.cpp
index 01b5d247..f75d2847 100644
--- a/launcher/ui/pages/modplatform/ModModel.cpp
+++ b/launcher/ui/pages/modplatform/ModModel.cpp
@@ -61,14 +61,18 @@ auto ListModel::data(const QModelIndex& index, int role) const -> QVariant
void ListModel::requestModVersions(ModPlatform::IndexedPack const& current)
{
+ auto profile = (dynamic_cast<MinecraftInstance*>((dynamic_cast<ModPage*>(parent()))->m_instance))->getPackProfile();
+
m_parent->apiProvider()->getVersions(this,
- { current.addonId.toString(), getMineVersions(), hasFabric() ? ModAPI::ModLoaderType::Fabric : ModAPI::ModLoaderType::Forge });
+ { current.addonId.toString(), getMineVersions(), profile->getModLoader() });
}
void ListModel::performPaginatedSearch()
{
+ auto profile = (dynamic_cast<MinecraftInstance*>((dynamic_cast<ModPage*>(parent()))->m_instance))->getPackProfile();
+
m_parent->apiProvider()->searchMods(this,
- { nextSearchOffset, currentSearchTerm, getSorts()[currentSort], hasFabric() ? ModAPI::Fabric : ModAPI::Forge, getMineVersions().at(0) });
+ { nextSearchOffset, currentSearchTerm, getSorts()[currentSort], profile->getModLoader(), getMineVersions().at(0) });
}
void ListModel::searchWithTerm(const QString& term, const int sort)
@@ -218,13 +222,6 @@ void ListModel::versionRequestSucceeded(QJsonDocument doc, QString addonId)
} // namespace ModPlatform
/******** Helpers ********/
-auto ModPlatform::ListModel::hasFabric() const -> bool
-{
- return !(dynamic_cast<MinecraftInstance*>((dynamic_cast<ModPage*>(parent()))->m_instance))
- ->getPackProfile()
- ->getComponentVersion("net.fabricmc.fabric-loader")
- .isEmpty();
-}
auto ModPlatform::ListModel::getMineVersions() const -> QList<QString>
{
diff --git a/launcher/ui/pages/modplatform/ModModel.h b/launcher/ui/pages/modplatform/ModModel.h
index 64cfa71e..dbadbeee 100644
--- a/launcher/ui/pages/modplatform/ModModel.h
+++ b/launcher/ui/pages/modplatform/ModModel.h
@@ -62,7 +62,6 @@ class ListModel : public QAbstractListModel {
void requestLogo(QString file, QString url);
- inline auto hasFabric() const -> bool;
inline auto getMineVersions() const -> QList<QString>;
protected:
diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp
index 3a116d3c..eabd8379 100644
--- a/launcher/ui/pages/modplatform/ModPage.cpp
+++ b/launcher/ui/pages/modplatform/ModPage.cpp
@@ -68,7 +68,7 @@ void ModPage::onSelectionChanged(QModelIndex first, QModelIndex second)
text = name;
else
text = "<a href=\"" + current.websiteUrl + "\">" + name + "</a>";
-
+
if (!current.authors.empty()) {
auto authorToStr = [](ModPlatform::ModpackAuthor& author) -> QString {
if (author.url.isEmpty()) { return author.name; }
@@ -128,7 +128,7 @@ void ModPage::onModSelected()
void ModPage::retranslate()
{
- ui->retranslateUi(this);
+ ui->retranslateUi(this);
}
void ModPage::updateModVersions()
@@ -136,13 +136,14 @@ void ModPage::updateModVersions()
auto packProfile = (dynamic_cast<MinecraftInstance*>(m_instance))->getPackProfile();
QString mcVersion = packProfile->getComponentVersion("net.minecraft");
- QString loaderString = (packProfile->getComponentVersion("net.minecraftforge").isEmpty()) ? "fabric" : "forge";
+
+ QString loaderString = ModAPI::getModLoaderString(packProfile->getModLoader());
for (int i = 0; i < current.versions.size(); i++) {
auto version = current.versions[i];
//NOTE: Flame doesn't care about loaderString, so passing it changes nothing.
- if (!validateVersion(version, mcVersion, loaderString)) {
- continue;
+ if (!validateVersion(version, mcVersion, loaderString)) {
+ continue;
}
ui->versionSelectionBox->addItem(version.version, QVariant(i));
}