aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
Diffstat (limited to 'launcher')
-rw-r--r--launcher/minecraft/mod/Mod.cpp7
-rw-r--r--launcher/minecraft/mod/Mod.h1
-rw-r--r--launcher/modplatform/ModIndex.cpp8
-rw-r--r--launcher/modplatform/ModIndex.h1
-rw-r--r--launcher/ui/pages/instance/ModFolderPage.cpp18
-rw-r--r--launcher/ui/widgets/InfoFrame.cpp21
6 files changed, 24 insertions, 32 deletions
diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp
index e613ddeb..d5b96bad 100644
--- a/launcher/minecraft/mod/Mod.cpp
+++ b/launcher/minecraft/mod/Mod.cpp
@@ -166,6 +166,13 @@ auto Mod::homeurl() const -> QString
return details().homeurl;
}
+auto Mod::metaurl() const -> QString
+{
+ if (metadata() == nullptr)
+ return homeurl();
+ return ModPlatform::getMetaURL(metadata()->provider, metadata()->project_id);
+}
+
auto Mod::description() const -> QString
{
return details().description;
diff --git a/launcher/minecraft/mod/Mod.h b/launcher/minecraft/mod/Mod.h
index d4e419f4..d6272f4d 100644
--- a/launcher/minecraft/mod/Mod.h
+++ b/launcher/minecraft/mod/Mod.h
@@ -70,6 +70,7 @@ public:
auto provider() const -> std::optional<QString>;
auto licenses() const -> const QList<ModLicense>&;
auto issueTracker() const -> QString;
+ auto metaurl() const -> QString;
/** Get the intneral path to the mod's icon file*/
QString iconPath() const { return m_local_details.icon_file; };
diff --git a/launcher/modplatform/ModIndex.cpp b/launcher/modplatform/ModIndex.cpp
index 6a507caf..a1c4d891 100644
--- a/launcher/modplatform/ModIndex.cpp
+++ b/launcher/modplatform/ModIndex.cpp
@@ -70,11 +70,17 @@ auto ProviderCapabilities::hash(ResourceProvider p, QIODevice* device, QString t
}
QCryptographicHash hash(algo);
- if(!hash.addData(device))
+ if (!hash.addData(device))
qCritical() << "Failed to read JAR to create hash!";
Q_ASSERT(hash.result().length() == hash.hashLength(algo));
return { hash.result().toHex() };
}
+QString getMetaURL(ResourceProvider provider, QVariant projectID)
+{
+ return ((provider == ModPlatform::ResourceProvider::FLAME) ? "https://www.curseforge.com/projects/" : "https://modrinth.com/mod/") +
+ projectID.toString();
+}
+
} // namespace ModPlatform
diff --git a/launcher/modplatform/ModIndex.h b/launcher/modplatform/ModIndex.h
index 3b0a03a1..3f51e700 100644
--- a/launcher/modplatform/ModIndex.h
+++ b/launcher/modplatform/ModIndex.h
@@ -144,6 +144,7 @@ inline auto getOverrideDeps() -> QList<OverrideDep>
{ "qvIfYCYJ", "P7dR8mSH", "API", ModPlatform::ResourceProvider::MODRINTH },
{ "lwVhp9o5", "Ha28R6CL", "KotlinLibraries", ModPlatform::ResourceProvider::MODRINTH } };
};
+QString getMetaURL(ResourceProvider provider, QVariant projectID);
} // namespace ModPlatform
diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp
index 9722d483..1d31a292 100644
--- a/launcher/ui/pages/instance/ModFolderPage.cpp
+++ b/launcher/ui/pages/instance/ModFolderPage.cpp
@@ -298,17 +298,9 @@ bool NilModFolderPage::shouldDisplay() const
void ModFolderPage::visitModPages()
{
auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes();
- for (auto mod : m_model->selectedMods(selection))
- if (auto meta = mod->metadata(); meta != nullptr) {
- auto slug = meta->slug.remove(".pw.toml");
- switch (meta->provider) {
- case ModPlatform::ResourceProvider::MODRINTH:
- DesktopServices::openUrl(QString("https://modrinth.com/mod/%1").arg(slug));
- break;
- case ModPlatform::ResourceProvider::FLAME:
- DesktopServices::openUrl(QString("https://www.curseforge.com/minecraft/mc-mods/%1").arg(slug));
- break;
- }
- } else if (mod->homeurl().size() != 0)
- DesktopServices::openUrl(mod->homeurl());
+ for (auto mod : m_model->selectedMods(selection)) {
+ auto url = mod->metaurl();
+ if (!url.isEmpty())
+ DesktopServices::openUrl(url);
+ }
} \ No newline at end of file
diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp
index 52e79dc0..57562a93 100644
--- a/launcher/ui/widgets/InfoFrame.cpp
+++ b/launcher/ui/widgets/InfoFrame.cpp
@@ -41,9 +41,7 @@
#include "ui/dialogs/CustomMessageBox.h"
-InfoFrame::InfoFrame(QWidget *parent) :
- QFrame(parent),
- ui(new Ui::InfoFrame)
+InfoFrame::InfoFrame(QWidget* parent) : QFrame(parent), ui(new Ui::InfoFrame)
{
ui->setupUi(this);
ui->descriptionLabel->setHidden(true);
@@ -67,31 +65,18 @@ void InfoFrame::updateWithMod(Mod const& m)
QString text = "";
QString name = "";
- QString link = "";
+ QString link = m.metaurl();
QString toolTip = "";
if (m.name().isEmpty())
name = m.internal_id();
else
name = m.name();
- if (auto meta = m.metadata(); meta != nullptr) {
- auto slug = meta->slug.remove(".pw.toml");
- switch (meta->provider) {
- case ModPlatform::ResourceProvider::MODRINTH:
- link = QString("https://modrinth.com/mod/%1").arg(slug);
- break;
- case ModPlatform::ResourceProvider::FLAME:
- link = QString("https://www.curseforge.com/minecraft/mc-mods/%1").arg(slug);
- break;
- }
- } else if (!m.homeurl().isEmpty())
- link = m.homeurl();
-
if (link.isEmpty())
text = name;
else {
text = "<a href=\"" + link + "\">" + name + "</a>";
- toolTip = tr("Go to mod's home page");
+ toolTip = link;
}
if (!m.authors().isEmpty())
text += " by " + m.authors().join(", ");