From 2938602d75f1b92ee52ee0d12f2b16f528f3f122 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 21 Jul 2024 16:20:53 +1000 Subject: [PATCH] Qt: Remove BIOS search directory from per-game settings Rather than just disabling it and confusing the user. --- src/duckstation-qt/biossettingswidget.cpp | 31 ++++++++++++------- src/duckstation-qt/biossettingswidget.h | 1 - src/duckstation-qt/biossettingswidget.ui | 10 +++--- .../interfacesettingswidget.cpp | 2 +- src/duckstation-qt/setupwizarddialog.cpp | 2 +- 5 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/duckstation-qt/biossettingswidget.cpp b/src/duckstation-qt/biossettingswidget.cpp index 2352aa03a..938dee46b 100644 --- a/src/duckstation-qt/biossettingswidget.cpp +++ b/src/duckstation-qt/biossettingswidget.cpp @@ -64,24 +64,33 @@ BIOSSettingsWidget::BIOSSettingsWidget(SettingsWindow* dialog, QWidget* parent) connect(m_ui.refresh, &QPushButton::clicked, this, &BIOSSettingsWidget::refreshList); - m_ui.searchDirectory->setText(QString::fromStdString(EmuFolders::Bios)); - SettingWidgetBinder::BindWidgetToFolderSetting(sif, m_ui.searchDirectory, m_ui.browseSearchDirectory, - m_ui.openSearchDirectory, nullptr, "BIOS", "SearchDirectory", - Path::Combine(EmuFolders::DataRoot, "bios")); - connect(m_ui.searchDirectory, &QLineEdit::textChanged, this, &BIOSSettingsWidget::refreshList); + if (!m_dialog->isPerGameSettings()) + { + SettingWidgetBinder::BindWidgetToFolderSetting(sif, m_ui.searchDirectory, m_ui.browseSearchDirectory, + m_ui.openSearchDirectory, nullptr, "BIOS", "SearchDirectory", + Path::Combine(EmuFolders::DataRoot, "bios")); + connect(m_ui.searchDirectory, &QLineEdit::textChanged, this, &BIOSSettingsWidget::refreshList); + } + else + { + m_ui.mainLayout->removeWidget(m_ui.directoryGroupBox); + delete m_ui.directoryGroupBox; + m_ui.directoryGroupBox = nullptr; + m_ui.directoryGroupBoxLabel = nullptr; + m_ui.directoryGroupBoxLayout = nullptr; + m_ui.directoryGroupBoxHorizontalLayout = nullptr; + m_ui.searchDirectory = nullptr; + m_ui.browseSearchDirectory = nullptr; + } + refreshList(); } BIOSSettingsWidget::~BIOSSettingsWidget() = default; -std::vector> BIOSSettingsWidget::getList(const char* directory) -{ - return BIOS::FindBIOSImagesInDirectory(directory); -} - void BIOSSettingsWidget::refreshList() { - auto images = getList(m_ui.searchDirectory->text().toUtf8().constData()); + auto images = BIOS::FindBIOSImagesInDirectory(EmuFolders::Bios.c_str()); populateDropDownForRegion(ConsoleRegion::NTSC_J, m_ui.imageNTSCJ, images, m_dialog->isPerGameSettings()); populateDropDownForRegion(ConsoleRegion::NTSC_U, m_ui.imageNTSCU, images, m_dialog->isPerGameSettings()); populateDropDownForRegion(ConsoleRegion::PAL, m_ui.imagePAL, images, m_dialog->isPerGameSettings()); diff --git a/src/duckstation-qt/biossettingswidget.h b/src/duckstation-qt/biossettingswidget.h index 43908f760..66c7d1814 100644 --- a/src/duckstation-qt/biossettingswidget.h +++ b/src/duckstation-qt/biossettingswidget.h @@ -26,7 +26,6 @@ public: std::vector>& images, bool per_game); static void setDropDownValue(QComboBox* cb, const std::optional& name, bool per_game); - static std::vector> getList(const char* directory); private Q_SLOTS: void refreshList(); diff --git a/src/duckstation-qt/biossettingswidget.ui b/src/duckstation-qt/biossettingswidget.ui index 34870f200..c87b7fa5a 100644 --- a/src/duckstation-qt/biossettingswidget.ui +++ b/src/duckstation-qt/biossettingswidget.ui @@ -10,7 +10,7 @@ 330 - + 0 @@ -115,13 +115,13 @@ - + BIOS Directory - + - + DuckStation will search for BIOS images in this directory. @@ -131,7 +131,7 @@ - + diff --git a/src/duckstation-qt/interfacesettingswidget.cpp b/src/duckstation-qt/interfacesettingswidget.cpp index 3f6f96c8a..35eeef50c 100644 --- a/src/duckstation-qt/interfacesettingswidget.cpp +++ b/src/duckstation-qt/interfacesettingswidget.cpp @@ -61,7 +61,7 @@ InterfaceSettingsWidget::InterfaceSettingsWidget(SettingsWindow* dialog, QWidget if (!m_dialog->isPerGameSettings()) SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.startFullscreen, "Main", "StartFullscreen", false); else - m_ui.startFullscreen->setEnabled(false); + SettingWidgetBinder::SetAvailability(m_ui.startFullscreen, false); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.doubleClickTogglesFullscreen, "Main", "DoubleClickTogglesFullscreen", true); diff --git a/src/duckstation-qt/setupwizarddialog.cpp b/src/duckstation-qt/setupwizarddialog.cpp index 4015fd590..25d2d6790 100644 --- a/src/duckstation-qt/setupwizarddialog.cpp +++ b/src/duckstation-qt/setupwizarddialog.cpp @@ -223,7 +223,7 @@ void SetupWizardDialog::setupBIOSPage() void SetupWizardDialog::refreshBiosList() { - auto list = BIOSSettingsWidget::getList(m_ui.biosSearchDirectory->text().toUtf8().constData()); + auto list = BIOS::FindBIOSImagesInDirectory(m_ui.biosSearchDirectory->text().toUtf8().constData()); BIOSSettingsWidget::populateDropDownForRegion(ConsoleRegion::NTSC_U, m_ui.imageNTSCU, list, false); BIOSSettingsWidget::populateDropDownForRegion(ConsoleRegion::NTSC_J, m_ui.imageNTSCJ, list, false); BIOSSettingsWidget::populateDropDownForRegion(ConsoleRegion::PAL, m_ui.imagePAL, list, false);