From fe0c52ff78c5d8bd705b0ce11b1c936ed770156d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 5 May 2025 19:57:24 +0300 Subject: [PATCH 1/2] remove: unused files Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 5 - launcher/ui/widgets/ErrorFrame.cpp | 116 ---------------------- launcher/ui/widgets/ErrorFrame.h | 47 --------- launcher/ui/widgets/ErrorFrame.ui | 92 ----------------- launcher/ui/widgets/FocusLineEdit.cpp | 24 ----- launcher/ui/widgets/FocusLineEdit.h | 16 --- launcher/ui/widgets/InstanceCardWidget.ui | 58 ----------- launcher/ui/widgets/LineSeparator.cpp | 35 ------- launcher/ui/widgets/LineSeparator.h | 18 ---- 9 files changed, 411 deletions(-) delete mode 100644 launcher/ui/widgets/ErrorFrame.cpp delete mode 100644 launcher/ui/widgets/ErrorFrame.h delete mode 100644 launcher/ui/widgets/ErrorFrame.ui delete mode 100644 launcher/ui/widgets/FocusLineEdit.cpp delete mode 100644 launcher/ui/widgets/FocusLineEdit.h delete mode 100644 launcher/ui/widgets/InstanceCardWidget.ui delete mode 100644 launcher/ui/widgets/LineSeparator.cpp delete mode 100644 launcher/ui/widgets/LineSeparator.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 4f8b9018a..7cdab2394 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1106,8 +1106,6 @@ SET(LAUNCHER_SOURCES ui/widgets/CustomCommands.h ui/widgets/EnvironmentVariables.cpp ui/widgets/EnvironmentVariables.h - ui/widgets/FocusLineEdit.cpp - ui/widgets/FocusLineEdit.h ui/widgets/IconLabel.cpp ui/widgets/IconLabel.h ui/widgets/JavaWizardWidget.cpp @@ -1116,8 +1114,6 @@ SET(LAUNCHER_SOURCES ui/widgets/LabeledToolButton.h ui/widgets/LanguageSelectionWidget.cpp ui/widgets/LanguageSelectionWidget.h - ui/widgets/LineSeparator.cpp - ui/widgets/LineSeparator.h ui/widgets/LogView.cpp ui/widgets/LogView.h ui/widgets/InfoFrame.cpp @@ -1216,7 +1212,6 @@ qt_wrap_ui(LAUNCHER_UI ui/pages/modplatform/OptionalModDialog.ui ui/pages/modplatform/modrinth/ModrinthPage.ui ui/pages/modplatform/technic/TechnicPage.ui - ui/widgets/InstanceCardWidget.ui ui/widgets/CustomCommands.ui ui/widgets/EnvironmentVariables.ui ui/widgets/InfoFrame.ui diff --git a/launcher/ui/widgets/ErrorFrame.cpp b/launcher/ui/widgets/ErrorFrame.cpp deleted file mode 100644 index 213c26b76..000000000 --- a/launcher/ui/widgets/ErrorFrame.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* 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 -#include - -#include "ErrorFrame.h" -#include "ui_ErrorFrame.h" - -#include "ui/dialogs/CustomMessageBox.h" - -void ErrorFrame::clear() -{ - setTitle(QString()); - setDescription(QString()); -} - -ErrorFrame::ErrorFrame(QWidget* parent) : QFrame(parent), ui(new Ui::ErrorFrame) -{ - ui->setupUi(this); - ui->label_Description->setHidden(true); - ui->label_Title->setHidden(true); - updateHiddenState(); -} - -ErrorFrame::~ErrorFrame() -{ - delete ui; -} - -void ErrorFrame::updateHiddenState() -{ - if (ui->label_Description->isHidden() && ui->label_Title->isHidden()) { - setHidden(true); - } else { - setHidden(false); - } -} - -void ErrorFrame::setTitle(QString text) -{ - if (text.isEmpty()) { - ui->label_Title->setHidden(true); - } else { - ui->label_Title->setText(text); - ui->label_Title->setHidden(false); - } - updateHiddenState(); -} - -void ErrorFrame::setDescription(QString text) -{ - if (text.isEmpty()) { - ui->label_Description->setHidden(true); - updateHiddenState(); - return; - } else { - ui->label_Description->setHidden(false); - updateHiddenState(); - } - ui->label_Description->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->label_Description->setOpenExternalLinks(false); - ui->label_Description->setTextFormat(Qt::TextFormat::RichText); - desc = text; - // This allows injecting HTML here. - labeltext.append("" + finaltext.left(287) + "..."); - QObject::connect(ui->label_Description, &QLabel::linkActivated, this, &ErrorFrame::ellipsisHandler); - } else { - ui->label_Description->setTextFormat(Qt::TextFormat::PlainText); - labeltext.append(finaltext); - } - ui->label_Description->setText(labeltext); -} - -void ErrorFrame::ellipsisHandler(const QString& link) -{ - if (!currentBox) { - currentBox = CustomMessageBox::selectable(this, QString(), desc); - connect(currentBox, &QMessageBox::finished, this, &ErrorFrame::boxClosed); - currentBox->show(); - } else { - currentBox->setText(desc); - } -} - -void ErrorFrame::boxClosed(int result) -{ - currentBox = nullptr; -} diff --git a/launcher/ui/widgets/ErrorFrame.h b/launcher/ui/widgets/ErrorFrame.h deleted file mode 100644 index 1aea6a1d8..000000000 --- a/launcher/ui/widgets/ErrorFrame.h +++ /dev/null @@ -1,47 +0,0 @@ -/* 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. - */ - -#pragma once - -#include - -namespace Ui { -class ErrorFrame; -} - -class ErrorFrame : public QFrame { - Q_OBJECT - - public: - explicit ErrorFrame(QWidget* parent = 0); - ~ErrorFrame(); - - void setTitle(QString text); - void setDescription(QString text); - - void clear(); - - public slots: - void ellipsisHandler(const QString& link); - void boxClosed(int result); - - private: - void updateHiddenState(); - - private: - Ui::ErrorFrame* ui; - QString desc; - class QMessageBox* currentBox = nullptr; -}; diff --git a/launcher/ui/widgets/ErrorFrame.ui b/launcher/ui/widgets/ErrorFrame.ui deleted file mode 100644 index 0bb567439..000000000 --- a/launcher/ui/widgets/ErrorFrame.ui +++ /dev/null @@ -1,92 +0,0 @@ - - - ErrorFrame - - - - 0 - 0 - 527 - 113 - - - - - 0 - 0 - - - - - 16777215 - 120 - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - Qt::RichText - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - true - - - Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - - - - - Qt::RichText - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - true - - - Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - diff --git a/launcher/ui/widgets/FocusLineEdit.cpp b/launcher/ui/widgets/FocusLineEdit.cpp deleted file mode 100644 index 6570227bb..000000000 --- a/launcher/ui/widgets/FocusLineEdit.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "FocusLineEdit.h" -#include - -FocusLineEdit::FocusLineEdit(QWidget* parent) : QLineEdit(parent) -{ - _selectOnMousePress = false; -} - -void FocusLineEdit::focusInEvent(QFocusEvent* e) -{ - QLineEdit::focusInEvent(e); - selectAll(); - _selectOnMousePress = true; -} - -void FocusLineEdit::mousePressEvent(QMouseEvent* me) -{ - QLineEdit::mousePressEvent(me); - if (_selectOnMousePress) { - selectAll(); - _selectOnMousePress = false; - } - qDebug() << selectedText(); -} diff --git a/launcher/ui/widgets/FocusLineEdit.h b/launcher/ui/widgets/FocusLineEdit.h deleted file mode 100644 index 797969406..000000000 --- a/launcher/ui/widgets/FocusLineEdit.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include - -class FocusLineEdit : public QLineEdit { - Q_OBJECT - public: - FocusLineEdit(QWidget* parent); - virtual ~FocusLineEdit() {} - - protected: - void focusInEvent(QFocusEvent* e); - void mousePressEvent(QMouseEvent* me); - - bool _selectOnMousePress; -}; diff --git a/launcher/ui/widgets/InstanceCardWidget.ui b/launcher/ui/widgets/InstanceCardWidget.ui deleted file mode 100644 index 6eeeb0769..000000000 --- a/launcher/ui/widgets/InstanceCardWidget.ui +++ /dev/null @@ -1,58 +0,0 @@ - - - InstanceCardWidget - - - - 0 - 0 - 473 - 118 - - - - - - - - 80 - 80 - - - - - - - - &Name: - - - instNameTextBox - - - - - - - - - - &Group: - - - groupBox - - - - - - - true - - - - - - - - diff --git a/launcher/ui/widgets/LineSeparator.cpp b/launcher/ui/widgets/LineSeparator.cpp deleted file mode 100644 index 2d6239a2f..000000000 --- a/launcher/ui/widgets/LineSeparator.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "LineSeparator.h" - -#include -#include -#include -#include - -void LineSeparator::initStyleOption(QStyleOption* option) const -{ - option->initFrom(this); - // in a horizontal layout, the line is vertical (and vice versa) - if (m_orientation == Qt::Vertical) - option->state |= QStyle::State_Horizontal; -} - -LineSeparator::LineSeparator(QWidget* parent, Qt::Orientation orientation) : QWidget(parent), m_orientation(orientation) -{ - setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); -} - -QSize LineSeparator::sizeHint() const -{ - QStyleOption opt; - initStyleOption(&opt); - const int extent = style()->pixelMetric(QStyle::PM_ToolBarSeparatorExtent, &opt, parentWidget()); - return QSize(extent, extent); -} - -void LineSeparator::paintEvent(QPaintEvent*) -{ - QPainter p(this); - QStyleOption opt; - initStyleOption(&opt); - style()->drawPrimitive(QStyle::PE_IndicatorToolBarSeparator, &opt, &p, parentWidget()); -} diff --git a/launcher/ui/widgets/LineSeparator.h b/launcher/ui/widgets/LineSeparator.h deleted file mode 100644 index 719facb99..000000000 --- a/launcher/ui/widgets/LineSeparator.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once -#include - -class QStyleOption; - -class LineSeparator : public QWidget { - Q_OBJECT - - public: - /// Create a line separator. orientation is the orientation of the line. - explicit LineSeparator(QWidget* parent, Qt::Orientation orientation = Qt::Horizontal); - QSize sizeHint() const; - void paintEvent(QPaintEvent*); - void initStyleOption(QStyleOption* option) const; - - private: - Qt::Orientation m_orientation = Qt::Horizontal; -}; From 956f5ee180b0eac7bc8f4328b22b5125b4bb614b Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 2 Jun 2025 14:43:56 +0100 Subject: [PATCH 2/2] Fix crash and make loader override more consistent with other option groups Signed-off-by: TheKodeToad --- .../ui/widgets/MinecraftSettingsWidget.cpp | 82 +++++++++++-------- launcher/ui/widgets/MinecraftSettingsWidget.h | 4 +- 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index 3307eeb79..f46786518 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -104,19 +104,21 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstancePtr instance, if (!value) m_instance->settings()->reset("GlobalDataPacksPath"); }); - connect(m_ui->dataPacksPathEdit, &QLineEdit::editingFinished, this, &MinecraftSettingsWidget::editedDataPacksPath); + connect(m_ui->dataPacksPathEdit, &QLineEdit::editingFinished, this, &MinecraftSettingsWidget::saveDataPacksPath); connect(m_ui->dataPacksPathBrowse, &QPushButton::clicked, this, &MinecraftSettingsWidget::selectDataPacksFolder); connect(m_ui->loaderGroup, &QGroupBox::toggled, this, [this](bool value) { m_instance->settings()->set("OverrideModDownloadLoaders", value); - if (!value) + if (value) + saveSelectedLoaders(); + else m_instance->settings()->reset("ModDownloadLoaders"); }); - connect(m_ui->neoForge, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged); - connect(m_ui->forge, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged); - connect(m_ui->fabric, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged); - connect(m_ui->quilt, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged); - connect(m_ui->liteLoader, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged); + connect(m_ui->neoForge, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders); + connect(m_ui->forge, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders); + connect(m_ui->fabric, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders); + connect(m_ui->quilt, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders); + connect(m_ui->liteLoader, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders); } m_ui->maximizedWarning->hide(); @@ -251,22 +253,28 @@ void MinecraftSettingsWidget::loadSettings() m_ui->fabric->blockSignals(true); m_ui->quilt->blockSignals(true); m_ui->liteLoader->blockSignals(true); - auto instLoaders = m_instance->getPackProfile()->getSupportedModLoaders().value(); - m_ui->loaderGroup->setChecked(settings->get("OverrideModDownloadLoaders").toBool()); - auto loaders = Json::toStringList(settings->get("ModDownloadLoaders").toString()); - if (loaders.isEmpty()) { - m_ui->neoForge->setChecked(instLoaders & ModPlatform::NeoForge); - m_ui->forge->setChecked(instLoaders & ModPlatform::Forge); - m_ui->fabric->setChecked(instLoaders & ModPlatform::Fabric); - m_ui->quilt->setChecked(instLoaders & ModPlatform::Quilt); - m_ui->liteLoader->setChecked(instLoaders & ModPlatform::LiteLoader); - } else { + + const bool overrideLoaders = settings->get("OverrideModDownloadLoaders").toBool(); + const QStringList loaders = Json::toStringList(settings->get("ModDownloadLoaders").toString()); + + m_ui->loaderGroup->setChecked(overrideLoaders); + + if (overrideLoaders) { m_ui->neoForge->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::NeoForge))); m_ui->forge->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Forge))); m_ui->fabric->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Fabric))); m_ui->quilt->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Quilt))); m_ui->liteLoader->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::LiteLoader))); + } else { + auto instLoaders = m_instance->getPackProfile()->getSupportedModLoaders().value_or(ModPlatform::ModLoaderTypes(0)); + + m_ui->neoForge->setChecked(instLoaders & ModPlatform::NeoForge); + m_ui->forge->setChecked(instLoaders & ModPlatform::Forge); + m_ui->fabric->setChecked(instLoaders & ModPlatform::Fabric); + m_ui->quilt->setChecked(instLoaders & ModPlatform::Quilt); + m_ui->liteLoader->setChecked(instLoaders & ModPlatform::LiteLoader); } + m_ui->loaderGroup->blockSignals(false); m_ui->neoForge->blockSignals(false); m_ui->forge->blockSignals(false); @@ -504,7 +512,29 @@ bool MinecraftSettingsWidget::isQuickPlaySupported() return m_instance->traits().contains("feature:is_quick_play_singleplayer"); } -void MinecraftSettingsWidget::editedDataPacksPath() +void MinecraftSettingsWidget::saveSelectedLoaders() +{ + QStringList loaders; + + if (m_ui->neoForge->isChecked()) + loaders << getModLoaderAsString(ModPlatform::NeoForge); + + if (m_ui->forge->isChecked()) + loaders << getModLoaderAsString(ModPlatform::Forge); + + if (m_ui->fabric->isChecked()) + loaders << getModLoaderAsString(ModPlatform::Fabric); + + if (m_ui->quilt->isChecked()) + loaders << getModLoaderAsString(ModPlatform::Quilt); + + if (m_ui->liteLoader->isChecked()) + loaders << getModLoaderAsString(ModPlatform::LiteLoader); + + m_instance->settings()->set("ModDownloadLoaders", Json::fromStringList(loaders)); +} + +void MinecraftSettingsWidget::saveDataPacksPath() { if (QDir::separator() != '/') m_ui->dataPacksPathEdit->setText(m_ui->dataPacksPathEdit->text().replace(QDir::separator(), '/')); @@ -531,19 +561,3 @@ void MinecraftSettingsWidget::selectDataPacksFolder() m_ui->dataPacksPathEdit->setText(path); m_instance->settings()->set("GlobalDataPacksPath", path); } - -void MinecraftSettingsWidget::selectedLoadersChanged() -{ - QStringList loaders; - if (m_ui->neoForge->isChecked()) - loaders << getModLoaderAsString(ModPlatform::NeoForge); - if (m_ui->forge->isChecked()) - loaders << getModLoaderAsString(ModPlatform::Forge); - if (m_ui->fabric->isChecked()) - loaders << getModLoaderAsString(ModPlatform::Fabric); - if (m_ui->quilt->isChecked()) - loaders << getModLoaderAsString(ModPlatform::Quilt); - if (m_ui->liteLoader->isChecked()) - loaders << getModLoaderAsString(ModPlatform::LiteLoader); - m_instance->settings()->set("ModDownloadLoaders", Json::fromStringList(loaders)); -} diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.h b/launcher/ui/widgets/MinecraftSettingsWidget.h index 1481d0fae..9e3e7afb2 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.h +++ b/launcher/ui/widgets/MinecraftSettingsWidget.h @@ -57,8 +57,8 @@ class MinecraftSettingsWidget : public QWidget { void updateAccountsMenu(const SettingsObject& settings); bool isQuickPlaySupported(); private slots: - void selectedLoadersChanged(); - void editedDataPacksPath(); + void saveSelectedLoaders(); + void saveDataPacksPath(); void selectDataPacksFolder(); MinecraftInstancePtr m_instance;