aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages/modplatform
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-07-28 23:00:00 -0300
committerflow <flowlnlnln@gmail.com>2022-09-23 16:59:40 -0300
commit3df8594f19563cd50ac73200ee8512b7c6ceec96 (patch)
treee7e460e98d1777b254f83fdac30233be9798b2e8 /launcher/ui/pages/modplatform
parentee4a82929365d817d64b37e0e7064bb217a3d66b (diff)
downloadPrismLauncher-3df8594f19563cd50ac73200ee8512b7c6ceec96.tar.gz
PrismLauncher-3df8594f19563cd50ac73200ee8512b7c6ceec96.tar.bz2
PrismLauncher-3df8594f19563cd50ac73200ee8512b7c6ceec96.zip
feat: change project item delegate for modrinth modpacks
more info! \ ^-^/ Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/ui/pages/modplatform')
-rw-r--r--launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp56
-rw-r--r--launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp4
2 files changed, 37 insertions, 23 deletions
diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp
index 614be434..03b73510 100644
--- a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp
+++ b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp
@@ -41,6 +41,7 @@
#include "minecraft/MinecraftInstance.h"
#include "minecraft/PackProfile.h"
#include "ui/dialogs/ModDownloadDialog.h"
+#include "ui/widgets/ProjectItem.h"
#include <QMessageBox>
@@ -74,31 +75,40 @@ auto ModpackListModel::data(const QModelIndex& index, int role) const -> QVarian
}
Modrinth::Modpack pack = modpacks.at(pos);
- if (role == Qt::DisplayRole) {
- return pack.name;
- } else if (role == Qt::ToolTipRole) {
- if (pack.description.length() > 100) {
- // some magic to prevent to long tooltips and replace html linebreaks
- QString edit = pack.description.left(97);
- edit = edit.left(edit.lastIndexOf("<br>")).left(edit.lastIndexOf(" ")).append("...");
- return edit;
+ switch (role) {
+ case Qt::ToolTipRole: {
+ if (pack.description.length() > 100) {
+ // some magic to prevent to long tooltips and replace html linebreaks
+ QString edit = pack.description.left(97);
+ edit = edit.left(edit.lastIndexOf("<br>")).left(edit.lastIndexOf(" ")).append("...");
+ return edit;
+ }
+ return pack.description;
}
- return pack.description;
- } else if (role == Qt::DecorationRole) {
- if (m_logoMap.contains(pack.iconName)) {
- auto icon = m_logoMap.value(pack.iconName);
- // FIXME: This doesn't really belong here, but Qt doesn't offer a good way right now ;(
- auto icon_scaled = QIcon(icon.pixmap(48, 48).scaledToWidth(48));
-
- return icon_scaled;
+ case Qt::DecorationRole: {
+ if (m_logoMap.contains(pack.iconName))
+ return m_logoMap.value(pack.iconName);
+
+ QIcon icon = APPLICATION->getThemedIcon("screenshot-placeholder");
+ ((ModpackListModel*)this)->requestLogo(pack.iconName, pack.iconUrl.toString());
+ return icon;
+ }
+ case Qt::UserRole: {
+ QVariant v;
+ v.setValue(pack);
+ return v;
}
- QIcon icon = APPLICATION->getThemedIcon("screenshot-placeholder");
- ((ModpackListModel*)this)->requestLogo(pack.iconName, pack.iconUrl.toString());
- return icon;
- } else if (role == Qt::UserRole) {
- QVariant v;
- v.setValue(pack);
- return v;
+ case Qt::SizeHintRole:
+ return QSize(0, 58);
+ // Custom data
+ case UserDataTypes::TITLE:
+ return pack.name;
+ case UserDataTypes::DESCRIPTION:
+ return pack.description;
+ case UserDataTypes::SELECTED:
+ return false;
+ default:
+ break;
}
return {};
diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
index df29c0c3..8ee9bff5 100644
--- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
+++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
@@ -43,6 +43,8 @@
#include "InstanceImportTask.h"
#include "Json.h"
+#include "ui/widgets/ProjectItem.h"
+
#include <HoeDown.h>
#include <QComboBox>
@@ -70,6 +72,8 @@ ModrinthPage::ModrinthPage(NewInstanceDialog* dialog, QWidget* parent) : QWidget
connect(ui->sortByBox, SIGNAL(currentIndexChanged(int)), this, SLOT(triggerSearch()));
connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &ModrinthPage::onSelectionChanged);
connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &ModrinthPage::onVersionSelectionChanged);
+
+ ui->packView->setItemDelegate(new ProjectItemDelegate(this));
}
ModrinthPage::~ModrinthPage()