From 9913080a829acb4ca921c3a68e0caefad0ebcaa1 Mon Sep 17 00:00:00 2001
From: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date: Thu, 4 May 2023 23:44:28 -0700
Subject: feat(modpage): mod icon in description and column
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
---
launcher/ui/widgets/InfoFrame.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'launcher/ui/widgets/InfoFrame.cpp')
diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp
index fdc581b4..6f4036a2 100644
--- a/launcher/ui/widgets/InfoFrame.cpp
+++ b/launcher/ui/widgets/InfoFrame.cpp
@@ -88,7 +88,7 @@ void InfoFrame::updateWithMod(Mod const& m)
setDescription(m.description());
}
- setImage();
+ setImage(m.icon({64,64}));
}
void InfoFrame::updateWithResource(const Resource& resource)
--
cgit
From 74e7c13a177afdb503a642cb9c97d71e72249291 Mon Sep 17 00:00:00 2001
From: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date: Fri, 5 May 2023 13:46:38 -0700
Subject: feat: display license and issue tracker
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
---
launcher/ui/widgets/InfoFrame.cpp | 120 ++++++++++++++++++++++++++++++++++++--
1 file changed, 115 insertions(+), 5 deletions(-)
(limited to 'launcher/ui/widgets/InfoFrame.cpp')
diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp
index 6f4036a2..9c041bfe 100644
--- a/launcher/ui/widgets/InfoFrame.cpp
+++ b/launcher/ui/widgets/InfoFrame.cpp
@@ -47,6 +47,8 @@ InfoFrame::InfoFrame(QWidget *parent) :
ui->setupUi(this);
ui->descriptionLabel->setHidden(true);
ui->nameLabel->setHidden(true);
+ ui->licenseLabel->setHidden(true);
+ ui->issueTrackerLabel->setHidden(true);
updateHiddenState();
}
@@ -89,6 +91,40 @@ void InfoFrame::updateWithMod(Mod const& m)
}
setImage(m.icon({64,64}));
+
+ auto licenses = m.licenses();
+ QString licenseText = "";
+ if (!licenses.empty()) {
+ for (auto l : licenses) {
+ if (!licenseText.isEmpty()) {
+ licenseText += "\n"; // add newline between licenses
+ }
+ if (!l.name.isEmpty()) {
+ if (l.url.isEmpty()) {
+ licenseText += l.name;
+ } else {
+ licenseText += "" + l.name + "";
+ }
+ } else if (!l.url.isEmpty()) {
+ licenseText += "" + l.url + "";
+ }
+ if (!l.description.isEmpty() && l.description != l.name) {
+ licenseText += " " + l.description;
+ }
+ }
+ }
+ if (!licenseText.isEmpty()) {
+ setLicense(tr("License: %1").arg(licenseText));
+ } else {
+ setLicense();
+ }
+
+ QString issueTracker = "";
+ if (!m.issueTracker().isEmpty()) {
+ issueTracker += tr("Report issues to: ");
+ issueTracker += "" + m.issueTracker() + "";
+ }
+ setIssueTracker(issueTracker);
}
void InfoFrame::updateWithResource(const Resource& resource)
@@ -177,16 +213,16 @@ void InfoFrame::clear()
setName();
setDescription();
setImage();
+ setLicense();
+ setIssueTracker();
}
void InfoFrame::updateHiddenState()
{
- if(ui->descriptionLabel->isHidden() && ui->nameLabel->isHidden())
- {
+ if (ui->descriptionLabel->isHidden() && ui->nameLabel->isHidden() && ui->licenseLabel->isHidden() &&
+ ui->issueTrackerLabel->isHidden()) {
setHidden(true);
- }
- else
- {
+ } else {
setHidden(false);
}
}
@@ -251,6 +287,66 @@ void InfoFrame::setDescription(QString text)
ui->descriptionLabel->setText(labeltext);
}
+void InfoFrame::setLicense(QString text)
+{
+ if(text.isEmpty())
+ {
+ ui->licenseLabel->setHidden(true);
+ updateHiddenState();
+ return;
+ }
+ else
+ {
+ ui->licenseLabel->setHidden(false);
+ updateHiddenState();
+ }
+ ui->licenseLabel->setToolTip("");
+ QString intermediatetext = text.trimmed();
+ bool prev(false);
+ QChar rem('\n');
+ QString finaltext;
+ finaltext.reserve(intermediatetext.size());
+ foreach(const QChar& c, intermediatetext)
+ {
+ if(c == rem && prev){
+ continue;
+ }
+ prev = c == rem;
+ finaltext += c;
+ }
+ QString labeltext;
+ labeltext.reserve(300);
+ if(finaltext.length() > 290)
+ {
+ ui->licenseLabel->setOpenExternalLinks(false);
+ ui->licenseLabel->setTextFormat(Qt::TextFormat::RichText);
+ m_description = text;
+ // This allows injecting HTML here.
+ labeltext.append("
" + finaltext.left(287) + "...");
+ QObject::connect(ui->licenseLabel, &QLabel::linkActivated, this, &InfoFrame::licenseEllipsisHandler);
+ }
+ else
+ {
+ ui->licenseLabel->setTextFormat(Qt::TextFormat::AutoText);
+ labeltext.append(finaltext);
+ }
+ ui->licenseLabel->setText(labeltext);
+}
+
+void InfoFrame::setIssueTracker(QString text)
+{
+ if(text.isEmpty())
+ {
+ ui->issueTrackerLabel->setHidden(true);
+ }
+ else
+ {
+ ui->issueTrackerLabel->setText(text);
+ ui->issueTrackerLabel->setHidden(false);
+ }
+ updateHiddenState();
+}
+
void InfoFrame::setImage(QPixmap img)
{
if (img.isNull()) {
@@ -275,6 +371,20 @@ void InfoFrame::descriptionEllipsisHandler(QString link)
}
}
+void InfoFrame::licenseEllipsisHandler(QString link)
+{
+ if(!m_current_box)
+ {
+ m_current_box = CustomMessageBox::selectable(this, "", m_license);
+ connect(m_current_box, &QMessageBox::finished, this, &InfoFrame::boxClosed);
+ m_current_box->show();
+ }
+ else
+ {
+ m_current_box->setText(m_license);
+ }
+}
+
void InfoFrame::boxClosed(int result)
{
m_current_box = nullptr;
--
cgit
From be0df38453977c37ae8b6b241e82ace41149fdcc Mon Sep 17 00:00:00 2001
From: Trial97
Date: Thu, 15 Jun 2023 11:40:39 +0300
Subject: Added tooltip for name label
Signed-off-by: Trial97
---
launcher/ui/widgets/InfoFrame.cpp | 111 +++++++++++++++++++++-----------------
1 file changed, 62 insertions(+), 49 deletions(-)
(limited to 'launcher/ui/widgets/InfoFrame.cpp')
diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp
index fdc581b4..d0b55c0b 100644
--- a/launcher/ui/widgets/InfoFrame.cpp
+++ b/launcher/ui/widgets/InfoFrame.cpp
@@ -1,37 +1,38 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
-* PolyMC - Minecraft Launcher
-* Copyright (c) 2022 flowln
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, version 3.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see .
-*
-* This file incorporates work covered by the following copyright and
-* permission notice:
-*
-* Copyright 2013-2021 MultiMC Contributors
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * Prism Launcher - Minecraft Launcher
+ * Copyright (c) 2022 flowln
+ * Copyright (c) 2023 Trial97
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2013-2021 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
#include
@@ -57,34 +58,47 @@ InfoFrame::~InfoFrame()
void InfoFrame::updateWithMod(Mod const& m)
{
- if (m.type() == ResourceType::FOLDER)
- {
+ if (m.type() == ResourceType::FOLDER) {
clear();
return;
}
QString text = "";
QString name = "";
+ QString link = "";
+ QString toolTip = "";
if (m.name().isEmpty())
name = m.internal_id();
else
name = m.name();
- if (m.homeurl().isEmpty())
+ 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 = "" + name + "";
+ else {
+ text = "" + name + "";
+ toolTip = tr("Go to mod's home page");
+ }
if (!m.authors().isEmpty())
text += " by " + m.authors().join(", ");
- setName(text);
+ setName(text, toolTip);
- if (m.description().isEmpty())
- {
+ if (m.description().isEmpty()) {
setDescription(QString());
- }
- else
- {
+ } else {
setDescription(m.description());
}
@@ -191,16 +205,15 @@ void InfoFrame::updateHiddenState()
}
}
-void InfoFrame::setName(QString text)
+void InfoFrame::setName(QString text, QString toolTip)
{
- if(text.isEmpty())
- {
+ if (text.isEmpty()) {
ui->nameLabel->setHidden(true);
- }
- else
- {
+ ui->nameLabel->setToolTip({});
+ } else {
ui->nameLabel->setText(text);
ui->nameLabel->setHidden(false);
+ ui->nameLabel->setToolTip(toolTip);
}
updateHiddenState();
}
--
cgit
From ce4a86fbcd0c891472b842e76066d285de3aef7b Mon Sep 17 00:00:00 2001
From: Trial97
Date: Sun, 25 Jun 2023 10:41:29 +0300
Subject: Made custom url function
Signed-off-by: Trial97
---
launcher/ui/widgets/InfoFrame.cpp | 21 +++------------------
1 file changed, 3 insertions(+), 18 deletions(-)
(limited to 'launcher/ui/widgets/InfoFrame.cpp')
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 = "" + name + "";
- toolTip = tr("Go to mod's home page");
+ toolTip = link;
}
if (!m.authors().isEmpty())
text += " by " + m.authors().join(", ");
--
cgit
From 40fbae8ff684b6613ff073ec1992587b38dcdf8c Mon Sep 17 00:00:00 2001
From: Trial97
Date: Sun, 25 Jun 2023 11:36:37 +0300
Subject: Fixed links tooltip
Signed-off-by: Trial97
---
launcher/ui/widgets/InfoFrame.cpp | 36 +++++++++++++++++++++++-------------
1 file changed, 23 insertions(+), 13 deletions(-)
(limited to 'launcher/ui/widgets/InfoFrame.cpp')
diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp
index 57562a93..24349014 100644
--- a/launcher/ui/widgets/InfoFrame.cpp
+++ b/launcher/ui/widgets/InfoFrame.cpp
@@ -34,13 +34,24 @@
* limitations under the License.
*/
+#include
#include
+#include
#include "InfoFrame.h"
#include "ui_InfoFrame.h"
#include "ui/dialogs/CustomMessageBox.h"
+void setupLinkTooTip(QLabel* label)
+{
+ QObject::connect(label, &QLabel::linkHovered, [label](const QString& link) {
+ if (!link.isEmpty() && !link.startsWith("http"))
+ return;
+ label->setToolTip(link);
+ });
+}
+
InfoFrame::InfoFrame(QWidget* parent) : QFrame(parent), ui(new Ui::InfoFrame)
{
ui->setupUi(this);
@@ -48,6 +59,12 @@ InfoFrame::InfoFrame(QWidget* parent) : QFrame(parent), ui(new Ui::InfoFrame)
ui->nameLabel->setHidden(true);
ui->licenseLabel->setHidden(true);
ui->issueTrackerLabel->setHidden(true);
+
+ setupLinkTooTip(ui->iconLabel);
+ setupLinkTooTip(ui->descriptionLabel);
+ setupLinkTooTip(ui->nameLabel);
+ setupLinkTooTip(ui->licenseLabel);
+ setupLinkTooTip(ui->issueTrackerLabel);
updateHiddenState();
}
@@ -66,7 +83,6 @@ void InfoFrame::updateWithMod(Mod const& m)
QString text = "";
QString name = "";
QString link = m.metaurl();
- QString toolTip = "";
if (m.name().isEmpty())
name = m.internal_id();
else
@@ -76,12 +92,11 @@ void InfoFrame::updateWithMod(Mod const& m)
text = name;
else {
text = "" + name + "";
- toolTip = link;
}
if (!m.authors().isEmpty())
text += " by " + m.authors().join(", ");
- setName(text, toolTip);
+ setName(text);
if (m.description().isEmpty()) {
setDescription(QString());
@@ -89,14 +104,14 @@ void InfoFrame::updateWithMod(Mod const& m)
setDescription(m.description());
}
- setImage(m.icon({64,64}));
+ setImage(m.icon({ 64, 64 }));
auto licenses = m.licenses();
QString licenseText = "";
if (!licenses.empty()) {
for (auto l : licenses) {
if (!licenseText.isEmpty()) {
- licenseText += "\n"; // add newline between licenses
+ licenseText += "\n"; // add newline between licenses
}
if (!l.name.isEmpty()) {
if (l.url.isEmpty()) {
@@ -226,29 +241,24 @@ void InfoFrame::updateHiddenState()
}
}
-void InfoFrame::setName(QString text, QString toolTip)
+void InfoFrame::setName(QString text)
{
if (text.isEmpty()) {
ui->nameLabel->setHidden(true);
- ui->nameLabel->setToolTip({});
} else {
ui->nameLabel->setText(text);
ui->nameLabel->setHidden(false);
- ui->nameLabel->setToolTip(toolTip);
}
updateHiddenState();
}
void InfoFrame::setDescription(QString text)
{
- if(text.isEmpty())
- {
+ if (text.isEmpty()) {
ui->descriptionLabel->setHidden(true);
updateHiddenState();
return;
- }
- else
- {
+ } else {
ui->descriptionLabel->setHidden(false);
updateHiddenState();
}
--
cgit
From f0aab541f817347a932c65d3b06d2d4c1e7b90c1 Mon Sep 17 00:00:00 2001
From: Trial97
Date: Mon, 3 Jul 2023 15:09:35 +0300
Subject: fixed typo
Signed-off-by: Trial97
---
launcher/ui/widgets/InfoFrame.cpp | 91 +++++++++++++++------------------------
1 file changed, 34 insertions(+), 57 deletions(-)
(limited to 'launcher/ui/widgets/InfoFrame.cpp')
diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp
index 24349014..b16bc097 100644
--- a/launcher/ui/widgets/InfoFrame.cpp
+++ b/launcher/ui/widgets/InfoFrame.cpp
@@ -43,7 +43,7 @@
#include "ui/dialogs/CustomMessageBox.h"
-void setupLinkTooTip(QLabel* label)
+void setupLinkToolTip(QLabel* label)
{
QObject::connect(label, &QLabel::linkHovered, [label](const QString& link) {
if (!link.isEmpty() && !link.startsWith("http"))
@@ -60,11 +60,11 @@ InfoFrame::InfoFrame(QWidget* parent) : QFrame(parent), ui(new Ui::InfoFrame)
ui->licenseLabel->setHidden(true);
ui->issueTrackerLabel->setHidden(true);
- setupLinkTooTip(ui->iconLabel);
- setupLinkTooTip(ui->descriptionLabel);
- setupLinkTooTip(ui->nameLabel);
- setupLinkTooTip(ui->licenseLabel);
- setupLinkTooTip(ui->issueTrackerLabel);
+ setupLinkToolTip(ui->iconLabel);
+ setupLinkToolTip(ui->descriptionLabel);
+ setupLinkToolTip(ui->nameLabel);
+ setupLinkToolTip(ui->licenseLabel);
+ setupLinkToolTip(ui->issueTrackerLabel);
updateHiddenState();
}
@@ -123,9 +123,9 @@ void InfoFrame::updateWithMod(Mod const& m)
licenseText += "" + l.url + "";
}
if (!l.description.isEmpty() && l.description != l.name) {
- licenseText += " " + l.description;
+ licenseText += " " + l.description;
}
- }
+ }
}
if (!licenseText.isEmpty()) {
setLicense(tr("License: %1").arg(licenseText));
@@ -137,7 +137,7 @@ void InfoFrame::updateWithMod(Mod const& m)
if (!m.issueTracker().isEmpty()) {
issueTracker += tr("Report issues to: ");
issueTracker += "" + m.issueTracker() + "";
- }
+ }
setIssueTracker(issueTracker);
}
@@ -147,7 +147,8 @@ void InfoFrame::updateWithResource(const Resource& resource)
setImage();
}
-QString InfoFrame::renderColorCodes(QString input) {
+QString InfoFrame::renderColorCodes(QString input)
+{
// We have to manually set the colors for use.
//
// A color is set using §x, with x = a hex number from 0 to f.
@@ -158,16 +159,12 @@ QString InfoFrame::renderColorCodes(QString input) {
// TODO: Wrap links inside tags
// https://minecraft.fandom.com/wiki/Formatting_codes#Color_codes
- const QMap color_codes_map = {
- {'0', "#000000"}, {'1', "#0000AA"}, {'2', "#00AA00"}, {'3', "#00AAAA"}, {'4', "#AA0000"},
- {'5', "#AA00AA"}, {'6', "#FFAA00"}, {'7', "#AAAAAA"}, {'8', "#555555"}, {'9', "#5555FF"},
- {'a', "#55FF55"}, {'b', "#55FFFF"}, {'c', "#FF5555"}, {'d', "#FF55FF"}, {'e', "#FFFF55"},
- {'f', "#FFFFFF"}
- };
+ const QMap color_codes_map = { { '0', "#000000" }, { '1', "#0000AA" }, { '2', "#00AA00" }, { '3', "#00AAAA" },
+ { '4', "#AA0000" }, { '5', "#AA00AA" }, { '6', "#FFAA00" }, { '7', "#AAAAAA" },
+ { '8', "#555555" }, { '9', "#5555FF" }, { 'a', "#55FF55" }, { 'b', "#55FFFF" },
+ { 'c', "#FF5555" }, { 'd', "#FF55FF" }, { 'e', "#FFFF55" }, { 'f', "#FFFFFF" } };
// https://minecraft.fandom.com/wiki/Formatting_codes#Formatting_codes
- const QMap formatting_codes_map = {
- {'l', "b"}, {'m', "s"}, {'n', "u"}, {'o', "i"}
- };
+ const QMap formatting_codes_map = { { 'l', "b" }, { 'm', "s" }, { 'n', "u" }, { 'o', "i" } };
QString html("");
QList tags{};
@@ -212,14 +209,14 @@ void InfoFrame::updateWithResourcePack(ResourcePack& resource_pack)
{
setName(renderColorCodes(resource_pack.name()));
setDescription(renderColorCodes(resource_pack.description()));
- setImage(resource_pack.image({64, 64}));
+ setImage(resource_pack.image({ 64, 64 }));
}
void InfoFrame::updateWithTexturePack(TexturePack& texture_pack)
{
setName(renderColorCodes(texture_pack.name()));
setDescription(renderColorCodes(texture_pack.description()));
- setImage(texture_pack.image({64, 64}));
+ setImage(texture_pack.image({ 64, 64 }));
}
void InfoFrame::clear()
@@ -268,9 +265,8 @@ void InfoFrame::setDescription(QString text)
QChar rem('\n');
QString finaltext;
finaltext.reserve(intermediatetext.size());
- foreach(const QChar& c, intermediatetext)
- {
- if(c == rem && prev){
+ foreach (const QChar& c, intermediatetext) {
+ if (c == rem && prev) {
continue;
}
prev = c == rem;
@@ -278,17 +274,14 @@ void InfoFrame::setDescription(QString text)
}
QString labeltext;
labeltext.reserve(300);
- if(finaltext.length() > 290)
- {
+ if (finaltext.length() > 290) {
ui->descriptionLabel->setOpenExternalLinks(false);
ui->descriptionLabel->setTextFormat(Qt::TextFormat::RichText);
m_description = text;
// This allows injecting HTML here.
labeltext.append("" + finaltext.left(287) + "...");
QObject::connect(ui->descriptionLabel, &QLabel::linkActivated, this, &InfoFrame::descriptionEllipsisHandler);
- }
- else
- {
+ } else {
ui->descriptionLabel->setTextFormat(Qt::TextFormat::AutoText);
labeltext.append(finaltext);
}
@@ -297,14 +290,11 @@ void InfoFrame::setDescription(QString text)
void InfoFrame::setLicense(QString text)
{
- if(text.isEmpty())
- {
+ if (text.isEmpty()) {
ui->licenseLabel->setHidden(true);
updateHiddenState();
return;
- }
- else
- {
+ } else {
ui->licenseLabel->setHidden(false);
updateHiddenState();
}
@@ -314,9 +304,8 @@ void InfoFrame::setLicense(QString text)
QChar rem('\n');
QString finaltext;
finaltext.reserve(intermediatetext.size());
- foreach(const QChar& c, intermediatetext)
- {
- if(c == rem && prev){
+ foreach (const QChar& c, intermediatetext) {
+ if (c == rem && prev) {
continue;
}
prev = c == rem;
@@ -324,17 +313,14 @@ void InfoFrame::setLicense(QString text)
}
QString labeltext;
labeltext.reserve(300);
- if(finaltext.length() > 290)
- {
+ if (finaltext.length() > 290) {
ui->licenseLabel->setOpenExternalLinks(false);
ui->licenseLabel->setTextFormat(Qt::TextFormat::RichText);
m_description = text;
// This allows injecting HTML here.
labeltext.append("" + finaltext.left(287) + "...");
QObject::connect(ui->licenseLabel, &QLabel::linkActivated, this, &InfoFrame::licenseEllipsisHandler);
- }
- else
- {
+ } else {
ui->licenseLabel->setTextFormat(Qt::TextFormat::AutoText);
labeltext.append(finaltext);
}
@@ -343,12 +329,9 @@ void InfoFrame::setLicense(QString text)
void InfoFrame::setIssueTracker(QString text)
{
- if(text.isEmpty())
- {
+ if (text.isEmpty()) {
ui->issueTrackerLabel->setHidden(true);
- }
- else
- {
+ } else {
ui->issueTrackerLabel->setText(text);
ui->issueTrackerLabel->setHidden(false);
}
@@ -367,28 +350,22 @@ void InfoFrame::setImage(QPixmap img)
void InfoFrame::descriptionEllipsisHandler(QString link)
{
- if(!m_current_box)
- {
+ if (!m_current_box) {
m_current_box = CustomMessageBox::selectable(this, "", m_description);
connect(m_current_box, &QMessageBox::finished, this, &InfoFrame::boxClosed);
m_current_box->show();
- }
- else
- {
+ } else {
m_current_box->setText(m_description);
}
}
void InfoFrame::licenseEllipsisHandler(QString link)
{
- if(!m_current_box)
- {
+ if (!m_current_box) {
m_current_box = CustomMessageBox::selectable(this, "", m_license);
connect(m_current_box, &QMessageBox::finished, this, &InfoFrame::boxClosed);
m_current_box->show();
- }
- else
- {
+ } else {
m_current_box->setText(m_license);
}
}
--
cgit
From 93870c315f84d2bb599d669be8205990ee48907d Mon Sep 17 00:00:00 2001
From: Trial97
Date: Thu, 6 Jul 2023 18:46:59 +0300
Subject: better url handling
Signed-off-by: Trial97
---
launcher/ui/widgets/InfoFrame.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'launcher/ui/widgets/InfoFrame.cpp')
diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp
index b16bc097..a0fda952 100644
--- a/launcher/ui/widgets/InfoFrame.cpp
+++ b/launcher/ui/widgets/InfoFrame.cpp
@@ -46,7 +46,7 @@
void setupLinkToolTip(QLabel* label)
{
QObject::connect(label, &QLabel::linkHovered, [label](const QString& link) {
- if (!link.isEmpty() && !link.startsWith("http"))
+ if (auto url = QUrl(link); !url.isValid() || (url.scheme() != "http" && url.scheme() != "https"))
return;
label->setToolTip(link);
});
--
cgit