diff options
author | flow <flowlnlnln@gmail.com> | 2022-10-13 19:55:21 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-12-06 16:54:54 -0300 |
commit | e5c42f68c2429a924b22dbcfb0df5a497690b805 (patch) | |
tree | 9e4cec7c4e971d4c3555a67c8b44cac108071a5b /launcher/ui/pages/instance/ManagedPackPage.cpp | |
parent | 02b4468bcddcdab6c269282564a0968c6394a34f (diff) | |
download | PrismLauncher-e5c42f68c2429a924b22dbcfb0df5a497690b805.tar.gz PrismLauncher-e5c42f68c2429a924b22dbcfb0df5a497690b805.tar.bz2 PrismLauncher-e5c42f68c2429a924b22dbcfb0df5a497690b805.zip |
feat: add basic ManagedPackPage classes
The idea is to have a base class that defines common behavior, and
subclasses for each modpack provider, adding specific behavior.
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/ui/pages/instance/ManagedPackPage.cpp')
-rw-r--r-- | launcher/ui/pages/instance/ManagedPackPage.cpp | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/launcher/ui/pages/instance/ManagedPackPage.cpp b/launcher/ui/pages/instance/ManagedPackPage.cpp new file mode 100644 index 00000000..725f8ce5 --- /dev/null +++ b/launcher/ui/pages/instance/ManagedPackPage.cpp @@ -0,0 +1,129 @@ +#include "ManagedPackPage.h" +#include "ui_ManagedPackPage.h" + +#include <QListView> +#include <QProxyStyle> + +#include "Application.h" + +/** This is just to override the combo box popup behavior so that the combo box doesn't take the whole screen. + * ... thanks Qt. + */ +class NoBigComboBoxStyle : public QProxyStyle { + Q_OBJECT + + public: + NoBigComboBoxStyle(QStyle* style) : QProxyStyle(style) {} + + // clang-format off + int styleHint(QStyle::StyleHint hint, const QStyleOption* option = nullptr, const QWidget* widget = nullptr, QStyleHintReturn* returnData = nullptr) const override + { + if (hint == QStyle::SH_ComboBox_Popup) + return false; + + return QProxyStyle::styleHint(hint, option, widget, returnData); + } + // clang-format on +}; + +ManagedPackPage* ManagedPackPage::createPage(BaseInstance* inst, QString type, QWidget* parent) +{ + if (type == "modrinth") + return new ModrinthManagedPackPage(inst, parent); + if (type == "flame") + return new FlameManagedPackPage(inst, parent); + + return new GenericManagedPackPage(inst, parent); +} + +ManagedPackPage::ManagedPackPage(BaseInstance* inst, QWidget* parent) : QWidget(parent), ui(new Ui::ManagedPackPage), m_inst(inst) +{ + Q_ASSERT(inst); + + ui->setupUi(this); + + ui->versionsComboBox->setStyle(new NoBigComboBoxStyle(ui->versionsComboBox->style())); +} + +ManagedPackPage::~ManagedPackPage() +{ + delete ui; +} + +void ManagedPackPage::openedImpl() +{ + ui->packName->setText(m_inst->getManagedPackName()); + ui->packVersion->setText(m_inst->getManagedPackVersionName()); + ui->packOrigin->setText(tr("Website: %1 | Pack ID: %2 | Version ID: %3") + .arg(displayName(), m_inst->getManagedPackID(), m_inst->getManagedPackVersionID())); + + parseManagedPack(); +} + +QString ManagedPackPage::displayName() const +{ + auto type = m_inst->getManagedPackType(); + if (type.isEmpty()) + return {}; + return type.replace(0, 1, type[0].toUpper()); +} + +QIcon ManagedPackPage::icon() const +{ + return APPLICATION->getThemedIcon(m_inst->getManagedPackType()); +} + +QString ManagedPackPage::helpPage() const +{ + return {}; +} + +void ManagedPackPage::retranslate() +{ + ui->retranslateUi(this); +} + +bool ManagedPackPage::shouldDisplay() const +{ + return m_inst->isManagedPack(); +} + +ModrinthManagedPackPage::ModrinthManagedPackPage(BaseInstance* inst, QWidget* parent) : ManagedPackPage(inst, parent) +{ + Q_ASSERT(inst->isManagedPack()); + connect(ui->versionsComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(suggestVersion())); +} + +void ModrinthManagedPackPage::parseManagedPack() +{ +} + +QString ModrinthManagedPackPage::url() const +{ + return {}; +} + +void ModrinthManagedPackPage::suggestVersion() +{ +} + +FlameManagedPackPage::FlameManagedPackPage(BaseInstance* inst, QWidget* parent) : ManagedPackPage(inst, parent) +{ + Q_ASSERT(inst->isManagedPack()); + connect(ui->versionsComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(suggestVersion())); +} + +void FlameManagedPackPage::parseManagedPack() +{ +} + +QString FlameManagedPackPage::url() const +{ + return {}; +} + +void FlameManagedPackPage::suggestVersion() +{ +} + +#include "ManagedPackPage.moc" |