From ac825855f761948282c7a41c6ed035c45ed67215 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Mon, 6 Nov 2023 23:01:38 +1000 Subject: [PATCH] Qt: Change settings dialogs to widgets/windows Stops them breaking in Qt 6.6. --- src/duckstation-qt/CMakeLists.txt | 12 +- .../achievementsettingswidget.cpp | 4 +- .../achievementsettingswidget.h | 6 +- src/duckstation-qt/advancedsettingswidget.cpp | 16 +- src/duckstation-qt/advancedsettingswidget.h | 6 +- src/duckstation-qt/audiosettingswidget.cpp | 4 +- src/duckstation-qt/audiosettingswidget.h | 6 +- src/duckstation-qt/biossettingswidget.cpp | 4 +- src/duckstation-qt/biossettingswidget.h | 6 +- src/duckstation-qt/consolesettingswidget.cpp | 4 +- src/duckstation-qt/consolesettingswidget.h | 6 +- .../controllerbindingwidgets.cpp | 10 +- src/duckstation-qt/controllerbindingwidgets.h | 12 +- .../controllerglobalsettingswidget.cpp | 6 +- .../controllerglobalsettingswidget.h | 10 +- ...ialog.cpp => controllersettingswindow.cpp} | 74 +++---- ...ngsdialog.h => controllersettingswindow.h} | 18 +- ...sdialog.ui => controllersettingswindow.ui} | 7 +- src/duckstation-qt/displaysettingswidget.cpp | 4 +- src/duckstation-qt/displaysettingswidget.h | 6 +- src/duckstation-qt/duckstation-qt.vcxproj | 16 +- .../duckstation-qt.vcxproj.filters | 197 +++++++++++++----- .../emulationsettingswidget.cpp | 4 +- src/duckstation-qt/emulationsettingswidget.h | 6 +- .../enhancementsettingswidget.cpp | 4 +- .../enhancementsettingswidget.h | 6 +- src/duckstation-qt/foldersettingswidget.cpp | 4 +- src/duckstation-qt/foldersettingswidget.h | 4 +- src/duckstation-qt/gamelistsettingswidget.cpp | 2 +- src/duckstation-qt/gamelistsettingswidget.h | 4 +- src/duckstation-qt/gamesummarywidget.cpp | 4 +- src/duckstation-qt/gamesummarywidget.h | 6 +- src/duckstation-qt/generalsettingswidget.cpp | 4 +- src/duckstation-qt/generalsettingswidget.h | 6 +- src/duckstation-qt/hotkeysettingswidget.cpp | 4 +- src/duckstation-qt/hotkeysettingswidget.h | 6 +- src/duckstation-qt/inputbindingwidgets.cpp | 6 +- src/duckstation-qt/inputbindingwidgets.h | 8 +- src/duckstation-qt/mainwindow.cpp | 107 ++++++---- src/duckstation-qt/mainwindow.h | 16 +- .../memorycardsettingswidget.cpp | 8 +- src/duckstation-qt/memorycardsettingswidget.h | 10 +- .../postprocessingsettingswidget.cpp | 2 +- .../postprocessingsettingswidget.h | 6 +- src/duckstation-qt/qthost.cpp | 2 +- src/duckstation-qt/qthost.h | 2 +- ...{settingsdialog.cpp => settingswindow.cpp} | 72 ++++--- .../{settingsdialog.h => settingswindow.h} | 18 +- .../{settingsdialog.ui => settingswindow.ui} | 7 +- src/duckstation-qt/settingwidgetbinder.h | 2 +- 50 files changed, 442 insertions(+), 322 deletions(-) rename src/duckstation-qt/{controllersettingsdialog.cpp => controllersettingswindow.cpp} (87%) rename src/duckstation-qt/{controllersettingsdialog.h => controllersettingswindow.h} (91%) rename src/duckstation-qt/{controllersettingsdialog.ui => controllersettingswindow.ui} (95%) rename src/duckstation-qt/{settingsdialog.cpp => settingswindow.cpp} (88%) rename src/duckstation-qt/{settingsdialog.h => settingswindow.h} (94%) rename src/duckstation-qt/{settingsdialog.ui => settingswindow.ui} (93%) diff --git a/src/duckstation-qt/CMakeLists.txt b/src/duckstation-qt/CMakeLists.txt index 6917524e8..d8fa32b9b 100644 --- a/src/duckstation-qt/CMakeLists.txt +++ b/src/duckstation-qt/CMakeLists.txt @@ -55,9 +55,9 @@ set(SRCS controllerledsettingsdialog.ui controllermacroeditwidget.ui controllermacrowidget.ui - controllersettingsdialog.cpp - controllersettingsdialog.h - controllersettingsdialog.ui + controllersettingswindow.cpp + controllersettingswindow.h + controllersettingswindow.ui controllersettingwidgetbinder.h coverdownloaddialog.cpp coverdownloaddialog.h @@ -135,9 +135,9 @@ set(SRCS qtutils.cpp qtutils.h resource.h - settingsdialog.cpp - settingsdialog.h - settingsdialog.ui + settingswindow.cpp + settingswindow.h + settingswindow.ui settingwidgetbinder.h setupwizarddialog.cpp setupwizarddialog.h diff --git a/src/duckstation-qt/achievementsettingswidget.cpp b/src/duckstation-qt/achievementsettingswidget.cpp index b8cf09d7e..663b65091 100644 --- a/src/duckstation-qt/achievementsettingswidget.cpp +++ b/src/duckstation-qt/achievementsettingswidget.cpp @@ -5,7 +5,7 @@ #include "achievementlogindialog.h" #include "mainwindow.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include "core/achievements.h" @@ -16,7 +16,7 @@ #include #include -AchievementSettingsWidget::AchievementSettingsWidget(SettingsDialog* dialog, QWidget* parent) +AchievementSettingsWidget::AchievementSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/achievementsettingswidget.h b/src/duckstation-qt/achievementsettingswidget.h index a6107a02c..3d91f2094 100644 --- a/src/duckstation-qt/achievementsettingswidget.h +++ b/src/duckstation-qt/achievementsettingswidget.h @@ -5,14 +5,14 @@ #include #include "ui_achievementsettingswidget.h" -class SettingsDialog; +class SettingsWindow; class AchievementSettingsWidget : public QWidget { Q_OBJECT public: - explicit AchievementSettingsWidget(SettingsDialog* dialog, QWidget* parent); + explicit AchievementSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~AchievementSettingsWidget(); private Q_SLOTS: @@ -29,5 +29,5 @@ private: Ui::AchievementSettingsWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/advancedsettingswidget.cpp b/src/duckstation-qt/advancedsettingswidget.cpp index 5c3994356..2fb9efdaa 100644 --- a/src/duckstation-qt/advancedsettingswidget.cpp +++ b/src/duckstation-qt/advancedsettingswidget.cpp @@ -5,10 +5,10 @@ #include "core/gpu_types.h" #include "mainwindow.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" -static QCheckBox* addBooleanTweakOption(SettingsDialog* dialog, QTableWidget* table, QString name, std::string section, +static QCheckBox* addBooleanTweakOption(SettingsWindow* dialog, QTableWidget* table, QString name, std::string section, std::string key, bool default_value) { const int row = table->rowCount(); @@ -39,7 +39,7 @@ static QCheckBox* setBooleanTweakOption(QTableWidget* table, int row, bool value return cb; } -static QSpinBox* addIntRangeTweakOption(SettingsDialog* dialog, QTableWidget* table, QString name, std::string section, +static QSpinBox* addIntRangeTweakOption(SettingsWindow* dialog, QTableWidget* table, QString name, std::string section, std::string key, int min_value, int max_value, int default_value) { const int row = table->rowCount(); @@ -72,7 +72,7 @@ static QSpinBox* setIntRangeTweakOption(QTableWidget* table, int row, int value) return cb; } -static QDoubleSpinBox* addFloatRangeTweakOption(SettingsDialog* dialog, QTableWidget* table, QString name, +static QDoubleSpinBox* addFloatRangeTweakOption(SettingsWindow* dialog, QTableWidget* table, QString name, std::string section, std::string key, float min_value, float max_value, float step_value, float default_value) { @@ -109,7 +109,7 @@ static QDoubleSpinBox* setFloatRangeTweakOption(QTableWidget* table, int row, fl } template -static QComboBox* addChoiceTweakOption(SettingsDialog* dialog, QTableWidget* table, QString name, std::string section, +static QComboBox* addChoiceTweakOption(SettingsWindow* dialog, QTableWidget* table, QString name, std::string section, std::string key, std::optional (*parse_callback)(const char*), const char* (*get_value_callback)(T), const char* (*get_display_callback)(T), u32 num_values, T default_value) @@ -145,7 +145,7 @@ static void setChoiceTweakOption(QTableWidget* table, int row, T value) cb->setCurrentIndex(static_cast(value)); } -static void addMSAATweakOption(SettingsDialog* dialog, QTableWidget* table, const QString& name) +static void addMSAATweakOption(SettingsWindow* dialog, QTableWidget* table, const QString& name) { const int row = table->rowCount(); @@ -175,7 +175,7 @@ static void addMSAATweakOption(SettingsDialog* dialog, QTableWidget* table, cons table->setCellWidget(row, 1, msaa); } -static void addDirectoryOption(SettingsDialog* dialog, QTableWidget* table, const QString& name, std::string section, +static void addDirectoryOption(SettingsWindow* dialog, QTableWidget* table, const QString& name, std::string section, std::string key) { const int row = table->rowCount(); @@ -221,7 +221,7 @@ static void setDirectoryOption(QTableWidget* table, int row, const char* value) valuew->setText(QString::fromUtf8(value)); } -AdvancedSettingsWidget::AdvancedSettingsWidget(SettingsDialog* dialog, QWidget* parent) +AdvancedSettingsWidget::AdvancedSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/advancedsettingswidget.h b/src/duckstation-qt/advancedsettingswidget.h index 62cf42278..964836d8c 100644 --- a/src/duckstation-qt/advancedsettingswidget.h +++ b/src/duckstation-qt/advancedsettingswidget.h @@ -7,14 +7,14 @@ #include "ui_advancedsettingswidget.h" -class SettingsDialog; +class SettingsWindow; class AdvancedSettingsWidget : public QWidget { Q_OBJECT public: - explicit AdvancedSettingsWidget(SettingsDialog* dialog, QWidget* parent); + explicit AdvancedSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~AdvancedSettingsWidget(); private: @@ -47,7 +47,7 @@ private: }; }; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; Ui::AdvancedSettingsWidget m_ui; diff --git a/src/duckstation-qt/audiosettingswidget.cpp b/src/duckstation-qt/audiosettingswidget.cpp index 599ddac09..5ed11b152 100644 --- a/src/duckstation-qt/audiosettingswidget.cpp +++ b/src/duckstation-qt/audiosettingswidget.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) #include "audiosettingswidget.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include "core/spu.h" @@ -11,7 +11,7 @@ #include -AudioSettingsWidget::AudioSettingsWidget(SettingsDialog* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) +AudioSettingsWidget::AudioSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/audiosettingswidget.h b/src/duckstation-qt/audiosettingswidget.h index f57995a12..71ada0564 100644 --- a/src/duckstation-qt/audiosettingswidget.h +++ b/src/duckstation-qt/audiosettingswidget.h @@ -7,14 +7,14 @@ #include "ui_audiosettingswidget.h" -class SettingsDialog; +class SettingsWindow; class AudioSettingsWidget : public QWidget { Q_OBJECT public: - explicit AudioSettingsWidget(SettingsDialog* dialog, QWidget* parent); + explicit AudioSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~AudioSettingsWidget(); private Q_SLOTS: @@ -29,5 +29,5 @@ private Q_SLOTS: private: Ui::AudioSettingsWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/biossettingswidget.cpp b/src/duckstation-qt/biossettingswidget.cpp index 1633c314f..2352aa03a 100644 --- a/src/duckstation-qt/biossettingswidget.cpp +++ b/src/duckstation-qt/biossettingswidget.cpp @@ -4,7 +4,7 @@ #include "biossettingswidget.h" #include "qthost.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include "core/bios.h" @@ -13,7 +13,7 @@ #include #include -BIOSSettingsWidget::BIOSSettingsWidget(SettingsDialog* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) +BIOSSettingsWidget::BIOSSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/biossettingswidget.h b/src/duckstation-qt/biossettingswidget.h index 85f1829bc..43908f760 100644 --- a/src/duckstation-qt/biossettingswidget.h +++ b/src/duckstation-qt/biossettingswidget.h @@ -7,7 +7,7 @@ #include "ui_biossettingswidget.h" -class SettingsDialog; +class SettingsWindow; enum class ConsoleRegion; namespace BIOS { @@ -19,7 +19,7 @@ class BIOSSettingsWidget : public QWidget Q_OBJECT public: - explicit BIOSSettingsWidget(SettingsDialog* dialog, QWidget* parent); + explicit BIOSSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~BIOSSettingsWidget(); static void populateDropDownForRegion(ConsoleRegion region, QComboBox* cb, @@ -34,5 +34,5 @@ private Q_SLOTS: private: Ui::BIOSSettingsWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/consolesettingswidget.cpp b/src/duckstation-qt/consolesettingswidget.cpp index c04841e3e..f49d07b93 100644 --- a/src/duckstation-qt/consolesettingswidget.cpp +++ b/src/duckstation-qt/consolesettingswidget.cpp @@ -4,13 +4,13 @@ #include "consolesettingswidget.h" #include "core/system.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include "util/cd_image.h" #include #include -ConsoleSettingsWidget::ConsoleSettingsWidget(SettingsDialog* dialog, QWidget* parent) +ConsoleSettingsWidget::ConsoleSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/consolesettingswidget.h b/src/duckstation-qt/consolesettingswidget.h index 68efbb848..1c4161306 100644 --- a/src/duckstation-qt/consolesettingswidget.h +++ b/src/duckstation-qt/consolesettingswidget.h @@ -7,14 +7,14 @@ #include "ui_consolesettingswidget.h" -class SettingsDialog; +class SettingsWindow; class ConsoleSettingsWidget : public QWidget { Q_OBJECT public: - explicit ConsoleSettingsWidget(SettingsDialog* dialog, QWidget* parent); + explicit ConsoleSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~ConsoleSettingsWidget(); private Q_SLOTS: @@ -28,5 +28,5 @@ private: Ui::ConsoleSettingsWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/controllerbindingwidgets.cpp b/src/duckstation-qt/controllerbindingwidgets.cpp index 5dd94f501..1068958e9 100644 --- a/src/duckstation-qt/controllerbindingwidgets.cpp +++ b/src/duckstation-qt/controllerbindingwidgets.cpp @@ -2,11 +2,11 @@ // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) #include "controllerbindingwidgets.h" -#include "controllersettingsdialog.h" +#include "controllersettingswindow.h" #include "controllersettingwidgetbinder.h" #include "qthost.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include "core/controller.h" @@ -28,7 +28,7 @@ Log_SetChannel(ControllerBindingWidget); -ControllerBindingWidget::ControllerBindingWidget(QWidget* parent, ControllerSettingsDialog* dialog, u32 port) +ControllerBindingWidget::ControllerBindingWidget(QWidget* parent, ControllerSettingsWindow* dialog, u32 port) : QWidget(parent), m_dialog(dialog), m_config_section(Controller::GetSettingsSection(port)), m_port_number(port) { m_ui.setupUi(this); @@ -344,7 +344,7 @@ ControllerMacroEditWidget::ControllerMacroEditWidget(ControllerMacroWidget* pare { m_ui.setupUi(this); - ControllerSettingsDialog* dialog = m_bwidget->getDialog(); + ControllerSettingsWindow* dialog = m_bwidget->getDialog(); const std::string& section = m_bwidget->getConfigSection(); const Controller::ControllerInfo* cinfo = Controller::GetControllerInfo(m_bwidget->getControllerType()); if (!cinfo) @@ -448,7 +448,7 @@ void ControllerMacroEditWidget::updateFrequencyText() void ControllerMacroEditWidget::updateBinds() { - ControllerSettingsDialog* dialog = m_bwidget->getDialog(); + ControllerSettingsWindow* dialog = m_bwidget->getDialog(); const Controller::ControllerInfo* cinfo = Controller::GetControllerInfo(m_bwidget->getControllerType()); if (!cinfo) return; diff --git a/src/duckstation-qt/controllerbindingwidgets.h b/src/duckstation-qt/controllerbindingwidgets.h index 48f3aa2d4..95a1fd175 100644 --- a/src/duckstation-qt/controllerbindingwidgets.h +++ b/src/duckstation-qt/controllerbindingwidgets.h @@ -22,7 +22,7 @@ class QVBoxLayout; class InputBindingWidget; -class ControllerSettingsDialog; +class ControllerSettingsWindow; class ControllerCustomSettingsWidget; class ControllerMacroWidget; class ControllerMacroEditWidget; @@ -35,12 +35,12 @@ class ControllerBindingWidget final : public QWidget Q_OBJECT public: - ControllerBindingWidget(QWidget* parent, ControllerSettingsDialog* dialog, u32 port); + ControllerBindingWidget(QWidget* parent, ControllerSettingsWindow* dialog, u32 port); ~ControllerBindingWidget(); QIcon getIcon() const; - ALWAYS_INLINE ControllerSettingsDialog* getDialog() const { return m_dialog; } + ALWAYS_INLINE ControllerSettingsWindow* getDialog() const { return m_dialog; } ALWAYS_INLINE const std::string& getConfigSection() const { return m_config_section; } ALWAYS_INLINE ControllerType getControllerType() const { return m_controller_type; } ALWAYS_INLINE u32 getPortNumber() const { return m_port_number; } @@ -62,7 +62,7 @@ private: Ui::ControllerBindingWidget m_ui; - ControllerSettingsDialog* m_dialog; + ControllerSettingsWindow* m_dialog; std::string m_config_section; ControllerType m_controller_type; @@ -91,7 +91,7 @@ private: void createWidgets(ControllerBindingWidget* parent); Ui::ControllerMacroWidget m_ui; - ControllerSettingsDialog* m_dialog; + ControllerSettingsWindow* m_dialog; std::array m_macros; }; @@ -156,7 +156,7 @@ public: ControllerBindingWidget_Base(ControllerBindingWidget* parent); virtual ~ControllerBindingWidget_Base(); - ALWAYS_INLINE ControllerSettingsDialog* getDialog() const + ALWAYS_INLINE ControllerSettingsWindow* getDialog() const { return static_cast(parent())->getDialog(); } diff --git a/src/duckstation-qt/controllerglobalsettingswidget.cpp b/src/duckstation-qt/controllerglobalsettingswidget.cpp index 5d45a2f84..58bfba912 100644 --- a/src/duckstation-qt/controllerglobalsettingswidget.cpp +++ b/src/duckstation-qt/controllerglobalsettingswidget.cpp @@ -2,14 +2,14 @@ // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) #include "controllerglobalsettingswidget.h" -#include "controllersettingsdialog.h" +#include "controllersettingswindow.h" #include "controllersettingwidgetbinder.h" #include "qtutils.h" #include "settingwidgetbinder.h" #include "util/sdl_input_source.h" -ControllerGlobalSettingsWidget::ControllerGlobalSettingsWidget(QWidget* parent, ControllerSettingsDialog* dialog) +ControllerGlobalSettingsWidget::ControllerGlobalSettingsWidget(QWidget* parent, ControllerSettingsWindow* dialog) : QWidget(parent), m_dialog(dialog) { m_ui.setupUi(this); @@ -108,7 +108,7 @@ void ControllerGlobalSettingsWidget::updateSDLOptionsEnabled() m_ui.ledSettings->setEnabled(enabled); } -ControllerLEDSettingsDialog::ControllerLEDSettingsDialog(QWidget* parent, ControllerSettingsDialog* dialog) +ControllerLEDSettingsDialog::ControllerLEDSettingsDialog(QWidget* parent, ControllerSettingsWindow* dialog) : QDialog(parent), m_dialog(dialog) { m_ui.setupUi(this); diff --git a/src/duckstation-qt/controllerglobalsettingswidget.h b/src/duckstation-qt/controllerglobalsettingswidget.h index cb34fed51..b229db212 100644 --- a/src/duckstation-qt/controllerglobalsettingswidget.h +++ b/src/duckstation-qt/controllerglobalsettingswidget.h @@ -15,14 +15,14 @@ #include "ui_controllerglobalsettingswidget.h" #include "ui_controllerledsettingsdialog.h" -class ControllerSettingsDialog; +class ControllerSettingsWindow; class ControllerGlobalSettingsWidget : public QWidget { Q_OBJECT public: - ControllerGlobalSettingsWidget(QWidget* parent, ControllerSettingsDialog* dialog); + ControllerGlobalSettingsWidget(QWidget* parent, ControllerSettingsWindow* dialog); ~ControllerGlobalSettingsWidget(); void addDeviceToList(const QString& identifier, const QString& name); @@ -36,7 +36,7 @@ private: void ledSettingsClicked(); Ui::ControllerGlobalSettingsWidget m_ui; - ControllerSettingsDialog* m_dialog; + ControllerSettingsWindow* m_dialog; }; class ControllerLEDSettingsDialog : public QDialog @@ -44,12 +44,12 @@ class ControllerLEDSettingsDialog : public QDialog Q_OBJECT public: - ControllerLEDSettingsDialog(QWidget* parent, ControllerSettingsDialog* dialog); + ControllerLEDSettingsDialog(QWidget* parent, ControllerSettingsWindow* dialog); ~ControllerLEDSettingsDialog(); private: void linkButton(ColorPickerButton* button, u32 player_id); Ui::ControllerLEDSettingsDialog m_ui; - ControllerSettingsDialog* m_dialog; + ControllerSettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/controllersettingsdialog.cpp b/src/duckstation-qt/controllersettingswindow.cpp similarity index 87% rename from src/duckstation-qt/controllersettingsdialog.cpp rename to src/duckstation-qt/controllersettingswindow.cpp index 7dc6cc702..7be208b81 100644 --- a/src/duckstation-qt/controllersettingsdialog.cpp +++ b/src/duckstation-qt/controllersettingswindow.cpp @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2019-2022 Connor McLaughlin // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) -#include "controllersettingsdialog.h" +#include "controllersettingswindow.h" #include "controllerbindingwidgets.h" #include "controllerglobalsettingswidget.h" #include "hotkeysettingswidget.h" @@ -23,7 +23,7 @@ static constexpr const std::array s_mtap_slot_names = {{'A', 'B', 'C', 'D'}}; -ControllerSettingsDialog::ControllerSettingsDialog(QWidget* parent /* = nullptr */) : QDialog(parent) +ControllerSettingsWindow::ControllerSettingsWindow() : QWidget() { m_ui.setupUi(this); @@ -34,31 +34,31 @@ ControllerSettingsDialog::ControllerSettingsDialog(QWidget* parent /* = nullptr m_ui.settingsCategory->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); connect(m_ui.settingsCategory, &QListWidget::currentRowChanged, this, - &ControllerSettingsDialog::onCategoryCurrentRowChanged); + &ControllerSettingsWindow::onCategoryCurrentRowChanged); connect(m_ui.currentProfile, &QComboBox::currentIndexChanged, this, - &ControllerSettingsDialog::onCurrentProfileChanged); - connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &ControllerSettingsDialog::close); - connect(m_ui.newProfile, &QPushButton::clicked, this, &ControllerSettingsDialog::onNewProfileClicked); - connect(m_ui.loadProfile, &QPushButton::clicked, this, &ControllerSettingsDialog::onLoadProfileClicked); - connect(m_ui.deleteProfile, &QPushButton::clicked, this, &ControllerSettingsDialog::onDeleteProfileClicked); - connect(m_ui.restoreDefaults, &QPushButton::clicked, this, &ControllerSettingsDialog::onRestoreDefaultsClicked); + &ControllerSettingsWindow::onCurrentProfileChanged); + connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &ControllerSettingsWindow::close); + connect(m_ui.newProfile, &QPushButton::clicked, this, &ControllerSettingsWindow::onNewProfileClicked); + connect(m_ui.loadProfile, &QPushButton::clicked, this, &ControllerSettingsWindow::onLoadProfileClicked); + connect(m_ui.deleteProfile, &QPushButton::clicked, this, &ControllerSettingsWindow::onDeleteProfileClicked); + connect(m_ui.restoreDefaults, &QPushButton::clicked, this, &ControllerSettingsWindow::onRestoreDefaultsClicked); connect(g_emu_thread, &EmuThread::onInputDevicesEnumerated, this, - &ControllerSettingsDialog::onInputDevicesEnumerated); - connect(g_emu_thread, &EmuThread::onInputDeviceConnected, this, &ControllerSettingsDialog::onInputDeviceConnected); + &ControllerSettingsWindow::onInputDevicesEnumerated); + connect(g_emu_thread, &EmuThread::onInputDeviceConnected, this, &ControllerSettingsWindow::onInputDeviceConnected); connect(g_emu_thread, &EmuThread::onInputDeviceDisconnected, this, - &ControllerSettingsDialog::onInputDeviceDisconnected); + &ControllerSettingsWindow::onInputDeviceDisconnected); connect(g_emu_thread, &EmuThread::onVibrationMotorsEnumerated, this, - &ControllerSettingsDialog::onVibrationMotorsEnumerated); + &ControllerSettingsWindow::onVibrationMotorsEnumerated); // trigger a device enumeration to populate the device list g_emu_thread->enumerateInputDevices(); g_emu_thread->enumerateVibrationMotors(); } -ControllerSettingsDialog::~ControllerSettingsDialog() = default; +ControllerSettingsWindow::~ControllerSettingsWindow() = default; -void ControllerSettingsDialog::setCategory(Category category) +void ControllerSettingsWindow::setCategory(Category category) { switch (category) { @@ -80,17 +80,17 @@ void ControllerSettingsDialog::setCategory(Category category) } } -void ControllerSettingsDialog::onCategoryCurrentRowChanged(int row) +void ControllerSettingsWindow::onCategoryCurrentRowChanged(int row) { m_ui.settingsContainer->setCurrentIndex(row); } -void ControllerSettingsDialog::onCurrentProfileChanged(int index) +void ControllerSettingsWindow::onCurrentProfileChanged(int index) { switchProfile((index == 0) ? 0 : m_ui.currentProfile->itemText(index)); } -void ControllerSettingsDialog::onNewProfileClicked() +void ControllerSettingsWindow::onNewProfileClicked() { const QString profile_name( QInputDialog::getText(this, tr("Create Input Profile"), tr("Enter the name for the new input profile:"))); @@ -142,7 +142,7 @@ void ControllerSettingsDialog::onNewProfileClicked() switchProfile(profile_name); } -void ControllerSettingsDialog::onLoadProfileClicked() +void ControllerSettingsWindow::onLoadProfileClicked() { if (QMessageBox::question(this, tr("Load Input Profile"), tr("Are you sure you want to load the input profile named '%1'?\n\n" @@ -164,7 +164,7 @@ void ControllerSettingsDialog::onLoadProfileClicked() switchProfile({}); } -void ControllerSettingsDialog::onDeleteProfileClicked() +void ControllerSettingsWindow::onDeleteProfileClicked() { if (QMessageBox::question(this, tr("Delete Input Profile"), tr("Are you sure you want to delete the input profile named '%1'?\n\n" @@ -186,7 +186,7 @@ void ControllerSettingsDialog::onDeleteProfileClicked() switchProfile({}); } -void ControllerSettingsDialog::onRestoreDefaultsClicked() +void ControllerSettingsWindow::onRestoreDefaultsClicked() { if (QMessageBox::question( this, tr("Restore Defaults"), @@ -204,21 +204,21 @@ void ControllerSettingsDialog::onRestoreDefaultsClicked() switchProfile({}); } -void ControllerSettingsDialog::onInputDevicesEnumerated(const QList>& devices) +void ControllerSettingsWindow::onInputDevicesEnumerated(const QList>& devices) { m_device_list = devices; for (const QPair& device : devices) m_global_settings->addDeviceToList(device.first, device.second); } -void ControllerSettingsDialog::onInputDeviceConnected(const QString& identifier, const QString& device_name) +void ControllerSettingsWindow::onInputDeviceConnected(const QString& identifier, const QString& device_name) { m_device_list.emplace_back(identifier, device_name); m_global_settings->addDeviceToList(identifier, device_name); g_emu_thread->enumerateVibrationMotors(); } -void ControllerSettingsDialog::onInputDeviceDisconnected(const QString& identifier) +void ControllerSettingsWindow::onInputDeviceDisconnected(const QString& identifier) { for (auto iter = m_device_list.begin(); iter != m_device_list.end(); ++iter) { @@ -233,7 +233,7 @@ void ControllerSettingsDialog::onInputDeviceDisconnected(const QString& identifi g_emu_thread->enumerateVibrationMotors(); } -void ControllerSettingsDialog::onVibrationMotorsEnumerated(const QList& motors) +void ControllerSettingsWindow::onVibrationMotorsEnumerated(const QList& motors) { m_vibration_motors.clear(); m_vibration_motors.reserve(motors.size()); @@ -246,7 +246,7 @@ void ControllerSettingsDialog::onVibrationMotorsEnumerated(const QListGetBoolValue(section, key, default_value); @@ -254,7 +254,7 @@ bool ControllerSettingsDialog::getBoolValue(const char* section, const char* key return Host::GetBaseBoolSettingValue(section, key, default_value); } -s32 ControllerSettingsDialog::getIntValue(const char* section, const char* key, s32 default_value) const +s32 ControllerSettingsWindow::getIntValue(const char* section, const char* key, s32 default_value) const { if (m_profile_interface) return m_profile_interface->GetIntValue(section, key, default_value); @@ -262,7 +262,7 @@ s32 ControllerSettingsDialog::getIntValue(const char* section, const char* key, return Host::GetBaseIntSettingValue(section, key, default_value); } -std::string ControllerSettingsDialog::getStringValue(const char* section, const char* key, +std::string ControllerSettingsWindow::getStringValue(const char* section, const char* key, const char* default_value) const { std::string value; @@ -273,7 +273,7 @@ std::string ControllerSettingsDialog::getStringValue(const char* section, const return value; } -void ControllerSettingsDialog::setBoolValue(const char* section, const char* key, bool value) +void ControllerSettingsWindow::setBoolValue(const char* section, const char* key, bool value) { if (m_profile_interface) { @@ -289,7 +289,7 @@ void ControllerSettingsDialog::setBoolValue(const char* section, const char* key } } -void ControllerSettingsDialog::setIntValue(const char* section, const char* key, s32 value) +void ControllerSettingsWindow::setIntValue(const char* section, const char* key, s32 value) { if (m_profile_interface) { @@ -305,7 +305,7 @@ void ControllerSettingsDialog::setIntValue(const char* section, const char* key, } } -void ControllerSettingsDialog::setStringValue(const char* section, const char* key, const char* value) +void ControllerSettingsWindow::setStringValue(const char* section, const char* key, const char* value) { if (m_profile_interface) { @@ -321,7 +321,7 @@ void ControllerSettingsDialog::setStringValue(const char* section, const char* k } } -void ControllerSettingsDialog::clearSettingValue(const char* section, const char* key) +void ControllerSettingsWindow::clearSettingValue(const char* section, const char* key) { if (m_profile_interface) { @@ -337,7 +337,7 @@ void ControllerSettingsDialog::clearSettingValue(const char* section, const char } } -void ControllerSettingsDialog::createWidgets() +void ControllerSettingsWindow::createWidgets() { QSignalBlocker sb(m_ui.settingsContainer); QSignalBlocker sb2(m_ui.settingsCategory); @@ -364,7 +364,7 @@ void ControllerSettingsDialog::createWidgets() m_global_settings = new ControllerGlobalSettingsWidget(m_ui.settingsContainer, this); m_ui.settingsContainer->addWidget(m_global_settings); connect(m_global_settings, &ControllerGlobalSettingsWidget::bindingSetupChanged, this, - &ControllerSettingsDialog::createWidgets); + &ControllerSettingsWindow::createWidgets); for (const QPair& dev : m_device_list) m_global_settings->addDeviceToList(dev.first, dev.second); } @@ -422,7 +422,7 @@ void ControllerSettingsDialog::createWidgets() m_ui.restoreDefaults->setEnabled(isEditingGlobalSettings()); } -void ControllerSettingsDialog::updateListDescription(u32 global_slot, ControllerBindingWidget* widget) +void ControllerSettingsWindow::updateListDescription(u32 global_slot, ControllerBindingWidget* widget) { for (int i = 0; i < m_ui.settingsCategory->count(); i++) { @@ -446,7 +446,7 @@ void ControllerSettingsDialog::updateListDescription(u32 global_slot, Controller } } } -void ControllerSettingsDialog::refreshProfileList() +void ControllerSettingsWindow::refreshProfileList() { const std::vector names(InputManager::GetInputProfileNames()); @@ -465,7 +465,7 @@ void ControllerSettingsDialog::refreshProfileList() } } -void ControllerSettingsDialog::switchProfile(const QString& name) +void ControllerSettingsWindow::switchProfile(const QString& name) { QSignalBlocker sb(m_ui.currentProfile); diff --git a/src/duckstation-qt/controllersettingsdialog.h b/src/duckstation-qt/controllersettingswindow.h similarity index 91% rename from src/duckstation-qt/controllersettingsdialog.h rename to src/duckstation-qt/controllersettingswindow.h index d36eb3f14..9283d6e4f 100644 --- a/src/duckstation-qt/controllersettingsdialog.h +++ b/src/duckstation-qt/controllersettingswindow.h @@ -1,10 +1,14 @@ -// SPDX-FileCopyrightText: 2019-2022 Connor McLaughlin +// SPDX-FileCopyrightText: 2019-2023 Connor McLaughlin // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) #pragma once -#include "common/types.h" + +#include "ui_controllersettingswindow.h" + #include "util/input_manager.h" -#include "ui_controllersettingsdialog.h" + +#include "common/types.h" + #include #include #include @@ -19,7 +23,7 @@ class HotkeySettingsWidget; class SettingsInterface; -class ControllerSettingsDialog final : public QDialog +class ControllerSettingsWindow final : public QWidget { Q_OBJECT @@ -37,8 +41,8 @@ public: MAX_PORTS = 8 }; - ControllerSettingsDialog(QWidget* parent = nullptr); - ~ControllerSettingsDialog(); + ControllerSettingsWindow(); + ~ControllerSettingsWindow(); ALWAYS_INLINE HotkeySettingsWidget* getHotkeySettingsWidget() const { return m_hotkey_settings; } @@ -85,7 +89,7 @@ private: void refreshProfileList(); void switchProfile(const QString& name); - Ui::ControllerSettingsDialog m_ui; + Ui::ControllerSettingsWindow m_ui; ControllerGlobalSettingsWidget* m_global_settings = nullptr; std::array m_port_bindings{}; diff --git a/src/duckstation-qt/controllersettingsdialog.ui b/src/duckstation-qt/controllersettingswindow.ui similarity index 95% rename from src/duckstation-qt/controllersettingsdialog.ui rename to src/duckstation-qt/controllersettingswindow.ui index e6f831fc5..1834ea676 100644 --- a/src/duckstation-qt/controllersettingsdialog.ui +++ b/src/duckstation-qt/controllersettingswindow.ui @@ -1,10 +1,7 @@ - ControllerSettingsDialog - - - Qt::WindowModal - + ControllerSettingsWindow + 0 diff --git a/src/duckstation-qt/displaysettingswidget.cpp b/src/duckstation-qt/displaysettingswidget.cpp index cc580f78c..9ce4921b7 100644 --- a/src/duckstation-qt/displaysettingswidget.cpp +++ b/src/duckstation-qt/displaysettingswidget.cpp @@ -5,7 +5,7 @@ #include "core/gpu.h" #include "core/settings.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include @@ -18,7 +18,7 @@ #include "util/vulkan_device.h" #endif -DisplaySettingsWidget::DisplaySettingsWidget(SettingsDialog* dialog, QWidget* parent) +DisplaySettingsWidget::DisplaySettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/displaysettingswidget.h b/src/duckstation-qt/displaysettingswidget.h index 320013837..d8d648186 100644 --- a/src/duckstation-qt/displaysettingswidget.h +++ b/src/duckstation-qt/displaysettingswidget.h @@ -8,14 +8,14 @@ #include "ui_displaysettingswidget.h" class PostProcessingChainConfigWidget; -class SettingsDialog; +class SettingsWindow; class DisplaySettingsWidget : public QWidget { Q_OBJECT public: - DisplaySettingsWidget(SettingsDialog* dialog, QWidget* parent); + DisplaySettingsWidget(SettingsWindow* dialog, QWidget* parent); ~DisplaySettingsWidget(); private Q_SLOTS: @@ -29,5 +29,5 @@ private: Ui::DisplaySettingsWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/duckstation-qt.vcxproj b/src/duckstation-qt/duckstation-qt.vcxproj index 7933e84ba..9838684bc 100644 --- a/src/duckstation-qt/duckstation-qt.vcxproj +++ b/src/duckstation-qt/duckstation-qt.vcxproj @@ -16,7 +16,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -134,7 +134,7 @@ Document - + Document @@ -194,7 +194,7 @@ Document - + Document @@ -239,7 +239,7 @@ - + @@ -268,7 +268,7 @@ - + diff --git a/src/duckstation-qt/duckstation-qt.vcxproj.filters b/src/duckstation-qt/duckstation-qt.vcxproj.filters index 32813400a..90e5ee721 100644 --- a/src/duckstation-qt/duckstation-qt.vcxproj.filters +++ b/src/duckstation-qt/duckstation-qt.vcxproj.filters @@ -3,99 +3,189 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + + + moc + @@ -111,6 +201,9 @@ {4230e20b-2aff-4c86-966c-b620263a371d} + + {9c2685f7-0991-4a58-98a5-c548b97d0dd8} + @@ -118,7 +211,7 @@ - + @@ -150,7 +243,7 @@ - + @@ -163,7 +256,7 @@ - + @@ -184,7 +277,7 @@ - + @@ -197,8 +290,8 @@ - + diff --git a/src/duckstation-qt/emulationsettingswidget.cpp b/src/duckstation-qt/emulationsettingswidget.cpp index 013d92e3c..55e00b950 100644 --- a/src/duckstation-qt/emulationsettingswidget.cpp +++ b/src/duckstation-qt/emulationsettingswidget.cpp @@ -4,12 +4,12 @@ #include "emulationsettingswidget.h" #include "core/system.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include #include -EmulationSettingsWidget::EmulationSettingsWidget(SettingsDialog* dialog, QWidget* parent) +EmulationSettingsWidget::EmulationSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/emulationsettingswidget.h b/src/duckstation-qt/emulationsettingswidget.h index 3f96459d0..112a7dc29 100644 --- a/src/duckstation-qt/emulationsettingswidget.h +++ b/src/duckstation-qt/emulationsettingswidget.h @@ -7,14 +7,14 @@ #include "ui_emulationsettingswidget.h" -class SettingsDialog; +class SettingsWindow; class EmulationSettingsWidget : public QWidget { Q_OBJECT public: - explicit EmulationSettingsWidget(SettingsDialog* dialog, QWidget* parent); + explicit EmulationSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~EmulationSettingsWidget(); private Q_SLOTS: @@ -28,5 +28,5 @@ private: Ui::EmulationSettingsWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/enhancementsettingswidget.cpp b/src/duckstation-qt/enhancementsettingswidget.cpp index 10c9c5143..ce25bf4e6 100644 --- a/src/duckstation-qt/enhancementsettingswidget.cpp +++ b/src/duckstation-qt/enhancementsettingswidget.cpp @@ -5,10 +5,10 @@ #include "core/gpu.h" #include "core/settings.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" -EnhancementSettingsWidget::EnhancementSettingsWidget(SettingsDialog* dialog, QWidget* parent) +EnhancementSettingsWidget::EnhancementSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/enhancementsettingswidget.h b/src/duckstation-qt/enhancementsettingswidget.h index 6b4c64cdf..e8ca8a8bc 100644 --- a/src/duckstation-qt/enhancementsettingswidget.h +++ b/src/duckstation-qt/enhancementsettingswidget.h @@ -7,14 +7,14 @@ #include "ui_enhancementsettingswidget.h" -class SettingsDialog; +class SettingsWindow; class EnhancementSettingsWidget : public QWidget { Q_OBJECT public: - EnhancementSettingsWidget(SettingsDialog* dialog, QWidget* parent); + EnhancementSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~EnhancementSettingsWidget(); private Q_SLOTS: @@ -27,5 +27,5 @@ private: Ui::EnhancementSettingsWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/foldersettingswidget.cpp b/src/duckstation-qt/foldersettingswidget.cpp index f18dc33dd..4dc139816 100644 --- a/src/duckstation-qt/foldersettingswidget.cpp +++ b/src/duckstation-qt/foldersettingswidget.cpp @@ -5,10 +5,10 @@ #include #include "foldersettingswidget.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" -FolderSettingsWidget::FolderSettingsWidget(SettingsDialog* dialog, QWidget* parent) : QWidget(parent) +FolderSettingsWidget::FolderSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/foldersettingswidget.h b/src/duckstation-qt/foldersettingswidget.h index 33a99fbc2..8c2a68483 100644 --- a/src/duckstation-qt/foldersettingswidget.h +++ b/src/duckstation-qt/foldersettingswidget.h @@ -7,14 +7,14 @@ #include "ui_foldersettingswidget.h" -class SettingsDialog; +class SettingsWindow; class FolderSettingsWidget : public QWidget { Q_OBJECT public: - FolderSettingsWidget(SettingsDialog* dialog, QWidget* parent); + FolderSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~FolderSettingsWidget(); private: diff --git a/src/duckstation-qt/gamelistsettingswidget.cpp b/src/duckstation-qt/gamelistsettingswidget.cpp index 1c0a64f65..f4baf370b 100644 --- a/src/duckstation-qt/gamelistsettingswidget.cpp +++ b/src/duckstation-qt/gamelistsettingswidget.cpp @@ -22,7 +22,7 @@ #include #include -GameListSettingsWidget::GameListSettingsWidget(SettingsDialog* dialog, QWidget* parent) : QWidget(parent) +GameListSettingsWidget::GameListSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent) { m_ui.setupUi(this); diff --git a/src/duckstation-qt/gamelistsettingswidget.h b/src/duckstation-qt/gamelistsettingswidget.h index 0898ca7d8..09239fdf6 100644 --- a/src/duckstation-qt/gamelistsettingswidget.h +++ b/src/duckstation-qt/gamelistsettingswidget.h @@ -7,7 +7,7 @@ #include "ui_gamelistsettingswidget.h" -class SettingsDialog; +class SettingsWindow; class GameListSearchDirectoriesModel; class GameListSettingsWidget : public QWidget @@ -15,7 +15,7 @@ class GameListSettingsWidget : public QWidget Q_OBJECT public: - GameListSettingsWidget(SettingsDialog* dialog, QWidget* parent); + GameListSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~GameListSettingsWidget(); bool addExcludedPath(const std::string& path); diff --git a/src/duckstation-qt/gamesummarywidget.cpp b/src/duckstation-qt/gamesummarywidget.cpp index dfec62d3a..adce80a11 100644 --- a/src/duckstation-qt/gamesummarywidget.cpp +++ b/src/duckstation-qt/gamesummarywidget.cpp @@ -4,7 +4,7 @@ #include "gamesummarywidget.h" #include "qthost.h" #include "qtprogresscallback.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "core/game_database.h" #include "core/game_list.h" @@ -18,7 +18,7 @@ #include GameSummaryWidget::GameSummaryWidget(const std::string& path, const std::string& serial, DiscRegion region, - const GameDatabase::Entry* entry, SettingsDialog* dialog, QWidget* parent) + const GameDatabase::Entry* entry, SettingsWindow* dialog, QWidget* parent) : m_dialog(dialog) { m_ui.setupUi(this); diff --git a/src/duckstation-qt/gamesummarywidget.h b/src/duckstation-qt/gamesummarywidget.h index 6ae3d6f7a..2e7c99f31 100644 --- a/src/duckstation-qt/gamesummarywidget.h +++ b/src/duckstation-qt/gamesummarywidget.h @@ -13,7 +13,7 @@ namespace GameDatabase { struct Entry; } -class SettingsDialog; +class SettingsWindow; class GameSummaryWidget : public QWidget { @@ -21,7 +21,7 @@ class GameSummaryWidget : public QWidget public: GameSummaryWidget(const std::string& path, const std::string& serial, DiscRegion region, - const GameDatabase::Entry* entry, SettingsDialog* dialog, QWidget* parent); + const GameDatabase::Entry* entry, SettingsWindow* dialog, QWidget* parent); ~GameSummaryWidget(); private Q_SLOTS: @@ -34,7 +34,7 @@ private: void populateTracksInfo(); Ui::GameSummaryWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; std::string m_path; std::string m_redump_search_keyword; diff --git a/src/duckstation-qt/generalsettingswidget.cpp b/src/duckstation-qt/generalsettingswidget.cpp index 72f0b3f17..38d3c3976 100644 --- a/src/duckstation-qt/generalsettingswidget.cpp +++ b/src/duckstation-qt/generalsettingswidget.cpp @@ -7,7 +7,7 @@ #include "mainwindow.h" #include "qtutils.h" #include "scmversion/scmversion.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" const char* GeneralSettingsWidget::THEME_NAMES[] = { @@ -25,7 +25,7 @@ const char* GeneralSettingsWidget::THEME_VALUES[] = { const char* GeneralSettingsWidget::DEFAULT_THEME_NAME = "darkfusion"; -GeneralSettingsWidget::GeneralSettingsWidget(SettingsDialog* dialog, QWidget* parent) +GeneralSettingsWidget::GeneralSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/generalsettingswidget.h b/src/duckstation-qt/generalsettingswidget.h index 186d69b18..a2c745030 100644 --- a/src/duckstation-qt/generalsettingswidget.h +++ b/src/duckstation-qt/generalsettingswidget.h @@ -7,14 +7,14 @@ #include "ui_generalsettingswidget.h" -class SettingsDialog; +class SettingsWindow; class GeneralSettingsWidget : public QWidget { Q_OBJECT public: - explicit GeneralSettingsWidget(SettingsDialog* dialog, QWidget* parent); + explicit GeneralSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~GeneralSettingsWidget(); private Q_SLOTS: @@ -23,7 +23,7 @@ private Q_SLOTS: private: Ui::GeneralSettingsWidget m_ui; - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; public: static const char* THEME_NAMES[]; diff --git a/src/duckstation-qt/hotkeysettingswidget.cpp b/src/duckstation-qt/hotkeysettingswidget.cpp index 782499e35..66e94606b 100644 --- a/src/duckstation-qt/hotkeysettingswidget.cpp +++ b/src/duckstation-qt/hotkeysettingswidget.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) #include "hotkeysettingswidget.h" -#include "controllersettingsdialog.h" +#include "controllersettingswindow.h" #include "util/input_manager.h" #include "inputbindingwidgets.h" #include "qtutils.h" @@ -12,7 +12,7 @@ #include #include -HotkeySettingsWidget::HotkeySettingsWidget(QWidget* parent, ControllerSettingsDialog* dialog) +HotkeySettingsWidget::HotkeySettingsWidget(QWidget* parent, ControllerSettingsWindow* dialog) : QWidget(parent), m_dialog(dialog) { createUi(); diff --git a/src/duckstation-qt/hotkeysettingswidget.h b/src/duckstation-qt/hotkeysettingswidget.h index aabfa6a2f..864a1fab9 100644 --- a/src/duckstation-qt/hotkeysettingswidget.h +++ b/src/duckstation-qt/hotkeysettingswidget.h @@ -12,21 +12,21 @@ class QScrollArea; class QGridLayout; class QVBoxLayout; -class ControllerSettingsDialog; +class ControllerSettingsWindow; class HotkeySettingsWidget : public QWidget { Q_OBJECT public: - HotkeySettingsWidget(QWidget* parent, ControllerSettingsDialog* dialog); + HotkeySettingsWidget(QWidget* parent, ControllerSettingsWindow* dialog); ~HotkeySettingsWidget(); private: void createUi(); void createButtons(); - ControllerSettingsDialog* m_dialog; + ControllerSettingsWindow* m_dialog; QScrollArea* m_scroll_area = nullptr; QWidget* m_container = nullptr; QVBoxLayout* m_layout = nullptr; diff --git a/src/duckstation-qt/inputbindingwidgets.cpp b/src/duckstation-qt/inputbindingwidgets.cpp index e5829e993..c9edbdeb7 100644 --- a/src/duckstation-qt/inputbindingwidgets.cpp +++ b/src/duckstation-qt/inputbindingwidgets.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) #include "inputbindingwidgets.h" -#include "controllersettingsdialog.h" +#include "controllersettingswindow.h" #include "inputbindingdialog.h" #include "qthost.h" #include "qtutils.h" @@ -401,7 +401,7 @@ InputVibrationBindingWidget::InputVibrationBindingWidget(QWidget* parent) connect(this, &QPushButton::clicked, this, &InputVibrationBindingWidget::onClicked); } -InputVibrationBindingWidget::InputVibrationBindingWidget(QWidget* parent, ControllerSettingsDialog* dialog, +InputVibrationBindingWidget::InputVibrationBindingWidget(QWidget* parent, ControllerSettingsWindow* dialog, std::string section_name, std::string key_name) { setMinimumWidth(225); @@ -416,7 +416,7 @@ InputVibrationBindingWidget::~InputVibrationBindingWidget() { } -void InputVibrationBindingWidget::setKey(ControllerSettingsDialog* dialog, std::string section_name, +void InputVibrationBindingWidget::setKey(ControllerSettingsWindow* dialog, std::string section_name, std::string key_name) { m_dialog = dialog; diff --git a/src/duckstation-qt/inputbindingwidgets.h b/src/duckstation-qt/inputbindingwidgets.h index ae11b43b7..087e0c195 100644 --- a/src/duckstation-qt/inputbindingwidgets.h +++ b/src/duckstation-qt/inputbindingwidgets.h @@ -9,7 +9,7 @@ class QTimer; -class ControllerSettingsDialog; +class ControllerSettingsWindow; class SettingsInterface; class InputBindingWidget : public QPushButton @@ -77,11 +77,11 @@ class InputVibrationBindingWidget : public QPushButton public: InputVibrationBindingWidget(QWidget* parent); - InputVibrationBindingWidget(QWidget* parent, ControllerSettingsDialog* dialog, std::string section_name, + InputVibrationBindingWidget(QWidget* parent, ControllerSettingsWindow* dialog, std::string section_name, std::string key_name); ~InputVibrationBindingWidget(); - void setKey(ControllerSettingsDialog* dialog, std::string section_name, std::string key_name); + void setKey(ControllerSettingsWindow* dialog, std::string section_name, std::string key_name); public Q_SLOTS: void clearBinding(); @@ -97,5 +97,5 @@ private: std::string m_key_name; std::string m_binding; - ControllerSettingsDialog* m_dialog; + ControllerSettingsWindow* m_dialog; }; diff --git a/src/duckstation-qt/mainwindow.cpp b/src/duckstation-qt/mainwindow.cpp index 2016aa19e..0c5866670 100644 --- a/src/duckstation-qt/mainwindow.cpp +++ b/src/duckstation-qt/mainwindow.cpp @@ -16,7 +16,7 @@ #include "memorycardeditordialog.h" #include "qthost.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include "core/achievements.h" @@ -130,6 +130,7 @@ MainWindow::~MainWindow() Assert(!m_display_widget); Assert(!m_debugger_window); cancelGameListRefresh(); + destroySubWindows(); // we compare here, since recreate destroys the window later if (g_main_window == this) @@ -730,6 +731,30 @@ void MainWindow::recreate() g_emu_thread->reloadInputSources(); } +void MainWindow::destroySubWindows() +{ + if (m_debugger_window) + { + m_debugger_window->close(); + m_debugger_window->deleteLater(); + m_debugger_window = nullptr; + } + + if (m_controller_settings_window) + { + m_controller_settings_window->close(); + m_controller_settings_window->deleteLater(); + m_controller_settings_window = nullptr; + } + + if (m_settings_window) + { + m_settings_window->close(); + m_settings_window->deleteLater(); + m_settings_window = nullptr; + } +} + void MainWindow::populateGameListContextMenu(const GameList::Entry* entry, QWidget* parent_window, QMenu* menu) { QAction* resume_action = menu->addAction(tr("Resume")); @@ -1269,7 +1294,7 @@ void MainWindow::onViewGamePropertiesActionTriggered() if (path.empty() || serial.empty()) return; - SettingsDialog::openGamePropertiesDialog(path, serial, System::GetDiscRegion()); + SettingsWindow::openGamePropertiesDialog(path, serial, System::GetDiscRegion()); } void MainWindow::onGitHubRepositoryActionTriggered() @@ -1368,7 +1393,7 @@ void MainWindow::onGameListEntryContextMenuRequested(const QPoint& point) { QAction* action = menu.addAction(tr("Properties...")); connect(action, &QAction::triggered, - [entry]() { SettingsDialog::openGamePropertiesDialog(entry->path, entry->serial, entry->region); }); + [entry]() { SettingsWindow::openGamePropertiesDialog(entry->path, entry->serial, entry->region); }); connect(menu.addAction(tr("Open Containing Directory...")), &QAction::triggered, [this, entry]() { const QFileInfo fi(QString::fromStdString(entry->path)); @@ -1951,9 +1976,9 @@ void MainWindow::connectSignals() connect(m_ui.actionEmulationSettings, &QAction::triggered, [this]() { doSettings("Emulation"); }); connect(m_ui.actionGameListSettings, &QAction::triggered, [this]() { doSettings("Game List"); }); connect(m_ui.actionHotkeySettings, &QAction::triggered, - [this]() { doControllerSettings(ControllerSettingsDialog::Category::HotkeySettings); }); + [this]() { doControllerSettings(ControllerSettingsWindow::Category::HotkeySettings); }); connect(m_ui.actionControllerSettings, &QAction::triggered, - [this]() { doControllerSettings(ControllerSettingsDialog::Category::GlobalSettings); }); + [this]() { doControllerSettings(ControllerSettingsWindow::Category::GlobalSettings); }); connect(m_ui.actionMemoryCardSettings, &QAction::triggered, [this]() { doSettings("Memory Cards"); }); connect(m_ui.actionDisplaySettings, &QAction::triggered, [this]() { doSettings("Display"); }); connect(m_ui.actionEnhancementSettings, &QAction::triggered, [this]() { doSettings("Enhancements"); }); @@ -1972,7 +1997,8 @@ void MainWindow::connectSignals() connect(m_ui.actionGitHubRepository, &QAction::triggered, this, &MainWindow::onGitHubRepositoryActionTriggered); connect(m_ui.actionIssueTracker, &QAction::triggered, this, &MainWindow::onIssueTrackerActionTriggered); connect(m_ui.actionDiscordServer, &QAction::triggered, this, &MainWindow::onDiscordServerActionTriggered); - connect(m_ui.actionViewThirdPartyNotices, &QAction::triggered, this, [this]() { AboutDialog::showThirdPartyNotices(this); }); + connect(m_ui.actionViewThirdPartyNotices, &QAction::triggered, this, + [this]() { AboutDialog::showThirdPartyNotices(this); }); connect(m_ui.actionAboutQt, &QAction::triggered, qApp, &QApplication::aboutQt); connect(m_ui.actionAbout, &QAction::triggered, this, &MainWindow::onAboutActionTriggered); connect(m_ui.actionCheckForUpdates, &QAction::triggered, this, &MainWindow::onCheckForUpdatesActionTriggered); @@ -2219,20 +2245,28 @@ void MainWindow::setIconThemeFromSettings() QIcon::setThemeName(dark ? QStringLiteral("white") : QStringLiteral("black")); } -void MainWindow::onSettingsResetToDefault() +void MainWindow::onSettingsResetToDefault(bool system, bool controller) { - if (m_settings_dialog) + if (system && m_settings_window) { - const bool shown = m_settings_dialog->isVisible(); + const bool had_settings_window = m_settings_window->isVisible(); + m_settings_window->close(); + m_settings_window->deleteLater(); + m_settings_window = nullptr; - m_settings_dialog->hide(); - m_settings_dialog->deleteLater(); - m_settings_dialog = new SettingsDialog(this); - if (shown) - { - m_settings_dialog->setModal(false); - m_settings_dialog->show(); - } + if (had_settings_window) + doSettings(); + } + + if (controller && m_controller_settings_window) + { + const bool had_controller_settings_window = m_controller_settings_window->isVisible(); + m_controller_settings_window->close(); + m_controller_settings_window->deleteLater(); + m_controller_settings_window = nullptr; + + if (had_controller_settings_window) + doControllerSettings(ControllerSettingsWindow::Category::GlobalSettings); } updateDebugMenuCPUExecutionMode(); @@ -2285,55 +2319,49 @@ void MainWindow::restoreDisplayWindowGeometryFromConfig() container->resize(640, 480); } -SettingsDialog* MainWindow::getSettingsDialog() +SettingsWindow* MainWindow::getSettingsDialog() { - if (!m_settings_dialog) - m_settings_dialog = new SettingsDialog(this); + if (!m_settings_window) + m_settings_window = new SettingsWindow(); - return m_settings_dialog; + return m_settings_window; } void MainWindow::doSettings(const char* category /* = nullptr */) { - SettingsDialog* dlg = getSettingsDialog(); + SettingsWindow* dlg = getSettingsDialog(); if (!dlg->isVisible()) { - dlg->setModal(false); dlg->show(); } else { dlg->raise(); + dlg->setFocus(); } if (category) dlg->setCategory(category); } -ControllerSettingsDialog* MainWindow::getControllerSettingsDialog() -{ - if (!m_controller_settings_dialog) - m_controller_settings_dialog = new ControllerSettingsDialog(this); - - return m_controller_settings_dialog; -} - void MainWindow::doControllerSettings( - ControllerSettingsDialog::Category category /*= ControllerSettingsDialog::Category::Count*/) + ControllerSettingsWindow::Category category /*= ControllerSettingsDialog::Category::Count*/) { - ControllerSettingsDialog* dlg = getControllerSettingsDialog(); - if (!dlg->isVisible()) + if (!m_controller_settings_window) + m_controller_settings_window = new ControllerSettingsWindow(); + + if (!m_controller_settings_window->isVisible()) { - dlg->setModal(false); - dlg->show(); + m_controller_settings_window->show(); } else { - dlg->raise(); + m_controller_settings_window->raise(); + m_controller_settings_window->setFocus(); } - if (category != ControllerSettingsDialog::Category::Count) - dlg->setCategory(category); + if (category != ControllerSettingsWindow::Category::Count) + m_controller_settings_window->setCategory(category); } void MainWindow::updateDebugMenuCPUExecutionMode() @@ -2426,6 +2454,7 @@ void MainWindow::closeEvent(QCloseEvent* event) { saveGeometryToConfig(); g_emu_thread->stopFullscreenUI(); + destroySubWindows(); QMainWindow::closeEvent(event); return; } diff --git a/src/duckstation-qt/mainwindow.h b/src/duckstation-qt/mainwindow.h index d52a3cd6a..07e4b6cd0 100644 --- a/src/duckstation-qt/mainwindow.h +++ b/src/duckstation-qt/mainwindow.h @@ -3,9 +3,9 @@ #pragma once -#include "controllersettingsdialog.h" +#include "controllersettingswindow.h" #include "displaywidget.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "ui_mainwindow.h" #include "core/types.h" @@ -121,7 +121,7 @@ private Q_SLOTS: void focusDisplayWidget(); void onMouseModeRequested(bool relative_mode, bool hide_cursor); - void onSettingsResetToDefault(); + void onSettingsResetToDefault(bool system, bool controller); void onSystemStarting(); void onSystemStarted(); void onSystemDestroyed(); @@ -227,11 +227,10 @@ private: void updateDisplayWidgetCursor(); void updateDisplayRelatedActions(bool has_surface, bool render_to_main, bool fullscreen); - SettingsDialog* getSettingsDialog(); + SettingsWindow* getSettingsDialog(); void doSettings(const char* category = nullptr); - ControllerSettingsDialog* getControllerSettingsDialog(); - void doControllerSettings(ControllerSettingsDialog::Category category = ControllerSettingsDialog::Category::Count); + void doControllerSettings(ControllerSettingsWindow::Category category = ControllerSettingsWindow::Category::Count); void updateDebugMenuCPUExecutionMode(); void updateDebugMenuGPURenderer(); @@ -244,6 +243,7 @@ private: void updateTheme(); void reloadThemeSpecificImages(); void recreate(); + void destroySubWindows(); void registerForDeviceNotifications(); void unregisterForDeviceNotifications(); @@ -280,8 +280,8 @@ private: QMenu* m_settings_toolbar_menu = nullptr; - SettingsDialog* m_settings_dialog = nullptr; - ControllerSettingsDialog* m_controller_settings_dialog = nullptr; + SettingsWindow* m_settings_window = nullptr; + ControllerSettingsWindow* m_controller_settings_window = nullptr; AutoUpdaterDialog* m_auto_updater_dialog = nullptr; MemoryCardEditorDialog* m_memory_card_editor_dialog = nullptr; diff --git a/src/duckstation-qt/memorycardsettingswidget.cpp b/src/duckstation-qt/memorycardsettingswidget.cpp index af4057ec7..59b47326d 100644 --- a/src/duckstation-qt/memorycardsettingswidget.cpp +++ b/src/duckstation-qt/memorycardsettingswidget.cpp @@ -9,7 +9,7 @@ #include "mainwindow.h" #include "qthost.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "settingwidgetbinder.h" #include "common/small_string.h" @@ -22,7 +22,7 @@ static constexpr char MEMORY_CARD_IMAGE_FILTER[] = QT_TRANSLATE_NOOP("MemoryCardSettingsWidget", "All Memory Card Types (*.mcd *.mcr *.mc)"); -MemoryCardSettingsWidget::MemoryCardSettingsWidget(SettingsDialog* dialog, QWidget* parent) +MemoryCardSettingsWidget::MemoryCardSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { createUi(dialog); @@ -30,7 +30,7 @@ MemoryCardSettingsWidget::MemoryCardSettingsWidget(SettingsDialog* dialog, QWidg MemoryCardSettingsWidget::~MemoryCardSettingsWidget() = default; -void MemoryCardSettingsWidget::createUi(SettingsDialog* dialog) +void MemoryCardSettingsWidget::createUi(SettingsWindow* dialog) { QVBoxLayout* layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); @@ -113,7 +113,7 @@ void MemoryCardSettingsWidget::createUi(SettingsDialog* dialog) setLayout(layout); } -void MemoryCardSettingsWidget::createPortSettingsUi(SettingsDialog* dialog, int index, PortSettingsUI* ui) +void MemoryCardSettingsWidget::createPortSettingsUi(SettingsWindow* dialog, int index, PortSettingsUI* ui) { ui->container = new QGroupBox(tr("Memory Card %1").arg(index + 1), this); ui->layout = new QVBoxLayout(ui->container); diff --git a/src/duckstation-qt/memorycardsettingswidget.h b/src/duckstation-qt/memorycardsettingswidget.h index c03223c58..6edddf597 100644 --- a/src/duckstation-qt/memorycardsettingswidget.h +++ b/src/duckstation-qt/memorycardsettingswidget.h @@ -12,18 +12,18 @@ #include #include -class SettingsDialog; +class SettingsWindow; class MemoryCardSettingsWidget : public QWidget { Q_OBJECT public: - MemoryCardSettingsWidget(SettingsDialog* dialog, QWidget* parent); + MemoryCardSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~MemoryCardSettingsWidget(); private: - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; struct PortSettingsUI { @@ -33,8 +33,8 @@ private: QLineEdit* memory_card_path; }; - void createUi(SettingsDialog* dialog); - void createPortSettingsUi(SettingsDialog* dialog, int index, PortSettingsUI* ui); + void createUi(SettingsWindow* dialog); + void createPortSettingsUi(SettingsWindow* dialog, int index, PortSettingsUI* ui); void onBrowseMemoryCardPathClicked(int index); void onResetMemoryCardPathClicked(int index); void onMemoryCardPathChanged(int index); diff --git a/src/duckstation-qt/postprocessingsettingswidget.cpp b/src/duckstation-qt/postprocessingsettingswidget.cpp index dc2a36d4a..54c3839ea 100644 --- a/src/duckstation-qt/postprocessingsettingswidget.cpp +++ b/src/duckstation-qt/postprocessingsettingswidget.cpp @@ -16,7 +16,7 @@ #include #include -PostProcessingSettingsWidget::PostProcessingSettingsWidget(SettingsDialog* dialog, QWidget* parent) +PostProcessingSettingsWidget::PostProcessingSettingsWidget(SettingsWindow* dialog, QWidget* parent) : QWidget(parent), m_dialog(dialog) { SettingsInterface* sif = dialog->getSettingsInterface(); diff --git a/src/duckstation-qt/postprocessingsettingswidget.h b/src/duckstation-qt/postprocessingsettingswidget.h index 3c44f530a..b188be0fe 100644 --- a/src/duckstation-qt/postprocessingsettingswidget.h +++ b/src/duckstation-qt/postprocessingsettingswidget.h @@ -9,7 +9,7 @@ #include -class SettingsDialog; +class SettingsWindow; class PostProcessingShaderConfigWidget; class PostProcessingSettingsWidget : public QWidget @@ -19,7 +19,7 @@ class PostProcessingSettingsWidget : public QWidget friend PostProcessingShaderConfigWidget; public: - PostProcessingSettingsWidget(SettingsDialog* dialog, QWidget* parent); + PostProcessingSettingsWidget(SettingsWindow* dialog, QWidget* parent); ~PostProcessingSettingsWidget(); private Q_SLOTS: @@ -42,7 +42,7 @@ private: void updateList(const SettingsInterface& si); void updateList(); - SettingsDialog* m_dialog; + SettingsWindow* m_dialog; Ui::PostProcessingSettingsWidget m_ui; diff --git a/src/duckstation-qt/qthost.cpp b/src/duckstation-qt/qthost.cpp index 3eba77e04..1b2f0ceca 100644 --- a/src/duckstation-qt/qthost.cpp +++ b/src/duckstation-qt/qthost.cpp @@ -386,7 +386,7 @@ void EmuThread::setDefaultSettings(bool system /* = true */, bool controller /* applySettings(false); if (system) - emit settingsResetToDefault(); + emit settingsResetToDefault(system, controller); } void QtHost::SetDefaultSettings(SettingsInterface& si, bool system, bool controller) diff --git a/src/duckstation-qt/qthost.h b/src/duckstation-qt/qthost.h index 81329e674..a270bbee2 100644 --- a/src/duckstation-qt/qthost.h +++ b/src/duckstation-qt/qthost.h @@ -121,7 +121,7 @@ Q_SIGNALS: void errorReported(const QString& title, const QString& message); bool messageConfirmed(const QString& title, const QString& message); void debuggerMessageReported(const QString& message); - void settingsResetToDefault(); + void settingsResetToDefault(bool system, bool controller); void onInputDevicesEnumerated(const QList>& devices); void onInputDeviceConnected(const QString& identifier, const QString& device_name); void onInputDeviceDisconnected(const QString& identifier); diff --git a/src/duckstation-qt/settingsdialog.cpp b/src/duckstation-qt/settingswindow.cpp similarity index 88% rename from src/duckstation-qt/settingsdialog.cpp rename to src/duckstation-qt/settingswindow.cpp index 63b72eb28..48849bbd5 100644 --- a/src/duckstation-qt/settingsdialog.cpp +++ b/src/duckstation-qt/settingswindow.cpp @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2019-2023 Connor McLaughlin // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) -#include "settingsdialog.h" +#include "settingswindow.h" #include "advancedsettingswidget.h" #include "audiosettingswidget.h" #include "biossettingswidget.h" @@ -31,19 +31,18 @@ #include #include -static QList s_open_game_properties_dialogs; +static QList s_open_game_properties_dialogs; -SettingsDialog::SettingsDialog(QWidget* parent) : QDialog(parent) +SettingsWindow::SettingsWindow() : QWidget() { m_ui.setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); addPages(); } -SettingsDialog::SettingsDialog(const std::string& path, const std::string& serial, DiscRegion region, - const GameDatabase::Entry* entry, std::unique_ptr sif, - QWidget* parent) - : QDialog(parent), m_sif(std::move(sif)) +SettingsWindow::SettingsWindow(const std::string& path, const std::string& serial, DiscRegion region, + const GameDatabase::Entry* entry, std::unique_ptr sif) + : QWidget(), m_sif(std::move(sif)) { m_ui.setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); @@ -57,13 +56,13 @@ SettingsDialog::SettingsDialog(const std::string& path, const std::string& seria s_open_game_properties_dialogs.push_back(this); } -SettingsDialog::~SettingsDialog() +SettingsWindow::~SettingsWindow() { if (isPerGameSettings()) s_open_game_properties_dialogs.removeOne(this); } -void SettingsDialog::addPages() +void SettingsWindow::addPages() { addWidget(m_general_settings = new GeneralSettingsWidget(this, m_ui.settingsContainer), tr("General"), QStringLiteral("settings-3-line"), @@ -164,13 +163,13 @@ void SettingsDialog::addPages() m_ui.settingsCategory->setCurrentRow(0); m_ui.settingsContainer->setCurrentIndex(0); m_ui.helpText->setText(m_category_help_text[0]); - connect(m_ui.settingsCategory, &QListWidget::currentRowChanged, this, &SettingsDialog::onCategoryCurrentRowChanged); - connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &SettingsDialog::accept); + connect(m_ui.settingsCategory, &QListWidget::currentRowChanged, this, &SettingsWindow::onCategoryCurrentRowChanged); + connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &SettingsWindow::close); connect(m_ui.buttonBox->button(QDialogButtonBox::RestoreDefaults), &QAbstractButton::clicked, this, - &SettingsDialog::onRestoreDefaultsClicked); + &SettingsWindow::onRestoreDefaultsClicked); } -void SettingsDialog::addWidget(QWidget* widget, QString title, QString icon, QString help_text) +void SettingsWindow::addWidget(QWidget* widget, QString title, QString icon, QString help_text) { const int index = m_ui.settingsCategory->count(); @@ -184,7 +183,7 @@ void SettingsDialog::addWidget(QWidget* widget, QString title, QString icon, QSt m_category_help_text[index] = std::move(help_text); } -void SettingsDialog::setCategory(const char* category) +void SettingsWindow::setCategory(const char* category) { // the titles in the category list will be translated. const QString translated_category(tr(category)); @@ -200,14 +199,14 @@ void SettingsDialog::setCategory(const char* category) } } -void SettingsDialog::onCategoryCurrentRowChanged(int row) +void SettingsWindow::onCategoryCurrentRowChanged(int row) { DebugAssert(row < static_cast(MAX_SETTINGS_WIDGETS)); m_ui.settingsContainer->setCurrentIndex(row); m_ui.helpText->setText(m_category_help_text[row]); } -void SettingsDialog::onRestoreDefaultsClicked() +void SettingsWindow::onRestoreDefaultsClicked() { if (QMessageBox::question(this, tr("Confirm Restore Defaults"), tr("Are you sure you want to restore the default settings? Any preferences will be lost."), @@ -219,7 +218,7 @@ void SettingsDialog::onRestoreDefaultsClicked() g_emu_thread->setDefaultSettings(true, false); } -void SettingsDialog::registerWidgetHelp(QObject* object, QString title, QString recommended_value, QString text) +void SettingsWindow::registerWidgetHelp(QObject* object, QString title, QString recommended_value, QString text) { // construct rich text with formatted description QString full_text; @@ -236,7 +235,7 @@ void SettingsDialog::registerWidgetHelp(QObject* object, QString title, QString object->installEventFilter(this); } -bool SettingsDialog::eventFilter(QObject* object, QEvent* event) +bool SettingsWindow::eventFilter(QObject* object, QEvent* event) { if (event->type() == QEvent::Enter) { @@ -256,10 +255,10 @@ bool SettingsDialog::eventFilter(QObject* object, QEvent* event) } } - return QDialog::eventFilter(object, event); + return QWidget::eventFilter(object, event); } -bool SettingsDialog::getEffectiveBoolValue(const char* section, const char* key, bool default_value) const +bool SettingsWindow::getEffectiveBoolValue(const char* section, const char* key, bool default_value) const { bool value; if (m_sif && m_sif->GetBoolValue(section, key, &value)) @@ -268,7 +267,7 @@ bool SettingsDialog::getEffectiveBoolValue(const char* section, const char* key, return Host::GetBaseBoolSettingValue(section, key, default_value); } -int SettingsDialog::getEffectiveIntValue(const char* section, const char* key, int default_value) const +int SettingsWindow::getEffectiveIntValue(const char* section, const char* key, int default_value) const { int value; if (m_sif && m_sif->GetIntValue(section, key, &value)) @@ -277,7 +276,7 @@ int SettingsDialog::getEffectiveIntValue(const char* section, const char* key, i return Host::GetBaseIntSettingValue(section, key, default_value); } -float SettingsDialog::getEffectiveFloatValue(const char* section, const char* key, float default_value) const +float SettingsWindow::getEffectiveFloatValue(const char* section, const char* key, float default_value) const { float value; if (m_sif && m_sif->GetFloatValue(section, key, &value)) @@ -286,7 +285,7 @@ float SettingsDialog::getEffectiveFloatValue(const char* section, const char* ke return Host::GetBaseFloatSettingValue(section, key, default_value); } -std::string SettingsDialog::getEffectiveStringValue(const char* section, const char* key, +std::string SettingsWindow::getEffectiveStringValue(const char* section, const char* key, const char* default_value) const { std::string value; @@ -295,7 +294,7 @@ std::string SettingsDialog::getEffectiveStringValue(const char* section, const c return value; } -Qt::CheckState SettingsDialog::getCheckState(const char* section, const char* key, bool default_value) +Qt::CheckState SettingsWindow::getCheckState(const char* section, const char* key, bool default_value) { bool value; if (m_sif) @@ -311,7 +310,7 @@ Qt::CheckState SettingsDialog::getCheckState(const char* section, const char* ke return value ? Qt::Checked : Qt::Unchecked; } -std::optional SettingsDialog::getBoolValue(const char* section, const char* key, +std::optional SettingsWindow::getBoolValue(const char* section, const char* key, std::optional default_value) const { std::optional value; @@ -331,7 +330,7 @@ std::optional SettingsDialog::getBoolValue(const char* section, const char return value; } -std::optional SettingsDialog::getIntValue(const char* section, const char* key, +std::optional SettingsWindow::getIntValue(const char* section, const char* key, std::optional default_value) const { std::optional value; @@ -351,7 +350,7 @@ std::optional SettingsDialog::getIntValue(const char* section, const char* return value; } -std::optional SettingsDialog::getFloatValue(const char* section, const char* key, +std::optional SettingsWindow::getFloatValue(const char* section, const char* key, std::optional default_value) const { std::optional value; @@ -371,7 +370,7 @@ std::optional SettingsDialog::getFloatValue(const char* section, const ch return value; } -std::optional SettingsDialog::getStringValue(const char* section, const char* key, +std::optional SettingsWindow::getStringValue(const char* section, const char* key, std::optional default_value) const { std::optional value; @@ -391,7 +390,7 @@ std::optional SettingsDialog::getStringValue(const char* section, c return value; } -void SettingsDialog::setBoolSettingValue(const char* section, const char* key, std::optional value) +void SettingsWindow::setBoolSettingValue(const char* section, const char* key, std::optional value) { if (m_sif) { @@ -408,7 +407,7 @@ void SettingsDialog::setBoolSettingValue(const char* section, const char* key, s } } -void SettingsDialog::setIntSettingValue(const char* section, const char* key, std::optional value) +void SettingsWindow::setIntSettingValue(const char* section, const char* key, std::optional value) { if (m_sif) { @@ -425,7 +424,7 @@ void SettingsDialog::setIntSettingValue(const char* section, const char* key, st } } -void SettingsDialog::setFloatSettingValue(const char* section, const char* key, std::optional value) +void SettingsWindow::setFloatSettingValue(const char* section, const char* key, std::optional value) { if (m_sif) { @@ -442,7 +441,7 @@ void SettingsDialog::setFloatSettingValue(const char* section, const char* key, } } -void SettingsDialog::setStringSettingValue(const char* section, const char* key, std::optional value) +void SettingsWindow::setStringSettingValue(const char* section, const char* key, std::optional value) { if (m_sif) { @@ -459,7 +458,7 @@ void SettingsDialog::setStringSettingValue(const char* section, const char* key, } } -void SettingsDialog::removeSettingValue(const char* section, const char* key) +void SettingsWindow::removeSettingValue(const char* section, const char* key) { if (m_sif) { @@ -475,10 +474,10 @@ void SettingsDialog::removeSettingValue(const char* section, const char* key) } } -void SettingsDialog::openGamePropertiesDialog(const std::string& path, const std::string& serial, DiscRegion region) +void SettingsWindow::openGamePropertiesDialog(const std::string& path, const std::string& serial, DiscRegion region) { // check for an existing dialog with this crc - for (SettingsDialog* dialog : s_open_game_properties_dialogs) + for (SettingsWindow* dialog : s_open_game_properties_dialogs) { if (dialog->m_game_serial == serial) { @@ -499,8 +498,7 @@ void SettingsDialog::openGamePropertiesDialog(const std::string& path, const std .arg(dentry ? QtUtils::StringViewToQString(dentry->title) : QStringLiteral("")) .arg(QtUtils::StringViewToQString(serial))); - SettingsDialog* dialog = new SettingsDialog(path, serial, region, dentry, std::move(sif), g_main_window); + SettingsWindow* dialog = new SettingsWindow(path, serial, region, dentry, std::move(sif)); dialog->setWindowTitle(window_title); - dialog->setModal(false); dialog->show(); } diff --git a/src/duckstation-qt/settingsdialog.h b/src/duckstation-qt/settingswindow.h similarity index 94% rename from src/duckstation-qt/settingsdialog.h rename to src/duckstation-qt/settingswindow.h index 639a2e71d..1a050f3db 100644 --- a/src/duckstation-qt/settingsdialog.h +++ b/src/duckstation-qt/settingswindow.h @@ -1,9 +1,11 @@ -// SPDX-FileCopyrightText: 2019-2022 Connor McLaughlin +// SPDX-FileCopyrightText: 2019-2023 Connor McLaughlin // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) #pragma once +#include "ui_settingswindow.h" + #include "common/types.h" -#include "ui_settingsdialog.h" + #include #include #include @@ -31,15 +33,15 @@ class AchievementSettingsWidget; class FolderSettingsWidget; class AdvancedSettingsWidget; -class SettingsDialog final : public QDialog +class SettingsWindow final : public QWidget { Q_OBJECT public: - explicit SettingsDialog(QWidget* parent); - SettingsDialog(const std::string& path, const std::string& serial, DiscRegion region, - const GameDatabase::Entry* entry, std::unique_ptr sif, QWidget* parent); - ~SettingsDialog(); + SettingsWindow(); + SettingsWindow(const std::string& path, const std::string& serial, DiscRegion region, + const GameDatabase::Entry* entry, std::unique_ptr sif); + ~SettingsWindow(); static void openGamePropertiesDialog(const std::string& path, const std::string& serial, DiscRegion region); @@ -101,7 +103,7 @@ private: void addPages(); void addWidget(QWidget* widget, QString title, QString icon, QString help_text); - Ui::SettingsDialog m_ui; + Ui::SettingsWindow m_ui; std::unique_ptr m_sif; diff --git a/src/duckstation-qt/settingsdialog.ui b/src/duckstation-qt/settingswindow.ui similarity index 93% rename from src/duckstation-qt/settingsdialog.ui rename to src/duckstation-qt/settingswindow.ui index 6d4ab2655..b47a7b035 100644 --- a/src/duckstation-qt/settingsdialog.ui +++ b/src/duckstation-qt/settingswindow.ui @@ -1,10 +1,7 @@ - SettingsDialog - - - Qt::WindowModal - + SettingsWindow + 0 diff --git a/src/duckstation-qt/settingwidgetbinder.h b/src/duckstation-qt/settingwidgetbinder.h index 3bba4e860..6b4bdd167 100644 --- a/src/duckstation-qt/settingwidgetbinder.h +++ b/src/duckstation-qt/settingwidgetbinder.h @@ -5,7 +5,7 @@ #include "qthost.h" #include "qtutils.h" -#include "settingsdialog.h" +#include "settingswindow.h" #include "core/host.h" #include "core/settings.h"