aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages
diff options
context:
space:
mode:
authorTheKodeToad <TheKodeToad@proton.me>2022-11-02 09:59:52 +0000
committerTheKodeToad <TheKodeToad@proton.me>2022-11-02 09:59:58 +0000
commita29d88c31305deda4136df9ad5046aed60a91afd (patch)
tree84bdeb171cbceb14c99b325a1bad8d6930d3852d /launcher/ui/pages
parenta1ed8154f75378a25ea20781d481fb971f616dc8 (diff)
downloadPrismLauncher-a29d88c31305deda4136df9ad5046aed60a91afd.tar.gz
PrismLauncher-a29d88c31305deda4136df9ad5046aed60a91afd.tar.bz2
PrismLauncher-a29d88c31305deda4136df9ad5046aed60a91afd.zip
Even more fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
Diffstat (limited to 'launcher/ui/pages')
-rw-r--r--launcher/ui/pages/modplatform/ModPage.cpp56
1 files changed, 31 insertions, 25 deletions
diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp
index f347d817..6ec283fc 100644
--- a/launcher/ui/pages/modplatform/ModPage.cpp
+++ b/launcher/ui/pages/modplatform/ModPage.cpp
@@ -254,19 +254,20 @@ void ModPage::openUrl(const QUrl& url)
}
// detect mod URLs and search instead
- int prefixLength;
+ int prefixLength = 0;
const char* page;
if ((url.host() == "modrinth.com" || url.host() == "www.modrinth.com") && url.path().startsWith("/mod/")) {
prefixLength = 5;
page = "modrinth";
} else if (APPLICATION->capabilities() & Application::SupportsFlame &&
- (url.host() == "curseforge.com" || url.host() == "www.curseforge.com") &&
- url.path().toLower().startsWith("/minecraft/mc-mods/")) {
- prefixLength = 19;
+ (url.host() == "curseforge.com" || url.host().endsWith(".curseforge.com"))) {
+ if (url.path().toLower().startsWith("/minecraft/mc-mods/"))
+ prefixLength = 19;
+ else if (url.path().toLower().startsWith("/projects/"))
+ prefixLength = 10;
page = "curseforge";
- } else
- prefixLength = 0;
+ }
if (prefixLength != 0) {
QString slug = url.path().mid(prefixLength);
@@ -282,31 +283,36 @@ void ModPage::openUrl(const QUrl& url)
dialog->selectPage(page);
ModPage* newPage = dialog->getSelectedPage();
+
QLineEdit* searchEdit = newPage->ui->searchEdit;
+ ModPlatform::ListModel* model = newPage->listModel;
+ QListView* view = newPage->ui->packView;
+
+ auto jump = [url, slug, model, view] {
+ for (int row = 0; row < model->rowCount({}); row++) {
+ QModelIndex index = model->index(row);
+ auto pack = model->data(index, Qt::UserRole).value<ModPlatform::IndexedPack>();
- if (searchEdit->text() != slug) {
- searchEdit->setText(slug);
- newPage->triggerSearch();
-
- ModPlatform::ListModel* model = newPage->listModel;
- QListView* view = newPage->ui->packView;
-
- connect(model->activeJob(), &Task::finished, [url, slug, model, view] {
- for (int row = 0; row < model->rowCount({}); row++) {
- QModelIndex index = model->index(row);
- auto pack = model->data(index, Qt::UserRole).value<ModPlatform::IndexedPack>();
- if (pack.slug == slug) {
- view->setCurrentIndex(index);
- return;
- }
+ if (pack.slug == slug) {
+ view->setCurrentIndex(index);
+ return;
}
+ }
- // The final fallback.
- QDesktopServices::openUrl(url);
- });
+ // The final fallback.
+ QDesktopServices::openUrl(url);
+ };
+
+ searchEdit->setText(slug);
+ newPage->triggerSearch();
- return;
+ if (!model->activeJob())
+ jump();
+ else {
+ connect(model->activeJob(), &Task::finished, jump);
}
+
+ return;
}
}