mirror of
https://github.com/stenzek/duckstation.git
synced 2024-11-26 23:50:31 +00:00
Qt: Fix settings clear not resetting input profile
This commit is contained in:
parent
a9bfe2642f
commit
6e1d8c5213
@ -762,14 +762,11 @@ void Settings::Clear(SettingsInterface& si)
|
||||
si.ClearSection("PCDrv");
|
||||
si.ClearSection("BIOS");
|
||||
|
||||
si.ClearSection("ControllerPorts");
|
||||
for (u32 i = 0; i < NUM_CONTROLLER_AND_CARD_PORTS; i++)
|
||||
si.ClearSection(Controller::GetSettingsSection(i).c_str());
|
||||
|
||||
si.ClearSection("MemoryCards");
|
||||
|
||||
// Can't wipe out this section, because input profiles.
|
||||
si.DeleteValue("ControllerPorts", "MultitapMode");
|
||||
|
||||
si.ClearSection("Cheevos");
|
||||
si.ClearSection("Logging");
|
||||
si.ClearSection("Debug");
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QFuture>
|
||||
#include <QtCore/QSignalBlocker>
|
||||
#include <QtCore/QStringBuilder>
|
||||
#include <QtWidgets/QDialog>
|
||||
#include <QtWidgets/QDialogButtonBox>
|
||||
@ -72,6 +73,28 @@ GameSummaryWidget::GameSummaryWidget(const std::string& path, const std::string&
|
||||
|
||||
GameSummaryWidget::~GameSummaryWidget() = default;
|
||||
|
||||
void GameSummaryWidget::reloadGameSettings()
|
||||
{
|
||||
if (m_dialog->getBoolValue("ControllerPorts", "UseGameSettingsForController", std::nullopt).value_or(false))
|
||||
{
|
||||
const QSignalBlocker sb(m_ui.inputProfile);
|
||||
m_ui.inputProfile->setCurrentIndex(1);
|
||||
}
|
||||
else if (const std::optional<std::string> profile_name =
|
||||
m_dialog->getStringValue("ControllerPorts", "InputProfileName", std::nullopt);
|
||||
profile_name.has_value() && !profile_name->empty())
|
||||
{
|
||||
const QSignalBlocker sb(m_ui.inputProfile);
|
||||
m_ui.inputProfile->setCurrentIndex(m_ui.inputProfile->findText(QString::fromStdString(profile_name.value())));
|
||||
}
|
||||
else
|
||||
{
|
||||
const QSignalBlocker sb(m_ui.inputProfile);
|
||||
m_ui.inputProfile->setCurrentIndex(0);
|
||||
}
|
||||
m_ui.editInputProfile->setEnabled(m_ui.inputProfile->currentIndex() >= 1);
|
||||
}
|
||||
|
||||
void GameSummaryWidget::populateUi(const std::string& path, const std::string& serial, DiscRegion region,
|
||||
const GameDatabase::Entry* entry)
|
||||
{
|
||||
@ -167,22 +190,7 @@ void GameSummaryWidget::populateUi(const std::string& path, const std::string& s
|
||||
for (const std::string& name : InputManager::GetInputProfileNames())
|
||||
m_ui.inputProfile->addItem(QString::fromStdString(name));
|
||||
|
||||
if (m_dialog->getBoolValue("ControllerPorts", "UseGameSettingsForController", std::nullopt).value_or(false))
|
||||
{
|
||||
m_ui.inputProfile->setCurrentIndex(1);
|
||||
}
|
||||
else if (const std::optional<std::string> profile_name =
|
||||
m_dialog->getStringValue("ControllerPorts", "InputProfileName", std::nullopt);
|
||||
profile_name.has_value() && !profile_name->empty())
|
||||
{
|
||||
m_ui.inputProfile->setCurrentIndex(m_ui.inputProfile->findText(QString::fromStdString(profile_name.value())));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui.inputProfile->setCurrentIndex(0);
|
||||
}
|
||||
m_ui.editInputProfile->setEnabled(m_ui.inputProfile->currentIndex() >= 1);
|
||||
|
||||
reloadGameSettings();
|
||||
populateCustomAttributes();
|
||||
populateTracksInfo();
|
||||
updateWindowTitle();
|
||||
|
@ -24,6 +24,8 @@ public:
|
||||
const GameDatabase::Entry* entry, SettingsWindow* dialog, QWidget* parent);
|
||||
~GameSummaryWidget();
|
||||
|
||||
void reloadGameSettings();
|
||||
|
||||
private Q_SLOTS:
|
||||
void onCompatibilityCommentsClicked();
|
||||
void onInputProfileChanged(int index);
|
||||
|
@ -55,8 +55,8 @@ SettingsWindow::SettingsWindow(const std::string& path, std::string serial, Game
|
||||
m_ui.setupUi(this);
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
|
||||
addWidget(new GameSummaryWidget(path, serial, region, entry, this, m_ui.settingsContainer), tr("Summary"),
|
||||
QStringLiteral("file-list-line"),
|
||||
addWidget(m_game_summary = new GameSummaryWidget(path, serial, region, entry, this, m_ui.settingsContainer),
|
||||
tr("Summary"), QStringLiteral("file-list-line"),
|
||||
tr("<strong>Summary</strong><hr>This page shows information about the selected game, and allows you to "
|
||||
"validate your disc was dumped correctly."));
|
||||
addPages();
|
||||
@ -209,7 +209,11 @@ void SettingsWindow::reloadPages()
|
||||
delete widget;
|
||||
}
|
||||
|
||||
m_ui.safeMode->disconnect();
|
||||
if (isPerGameSettings())
|
||||
{
|
||||
m_game_summary->reloadGameSettings();
|
||||
m_ui.safeMode->disconnect();
|
||||
}
|
||||
|
||||
addPages();
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ enum class Trait : u32;
|
||||
struct Entry;
|
||||
} // namespace GameDatabase
|
||||
|
||||
class GameSummaryWidget;
|
||||
class InterfaceSettingsWidget;
|
||||
class BIOSSettingsWidget;
|
||||
class GameListSettingsWidget;
|
||||
@ -136,6 +137,7 @@ private:
|
||||
std::unique_ptr<INISettingsInterface> m_sif;
|
||||
const GameDatabase::Entry* m_database_entry = nullptr;
|
||||
|
||||
GameSummaryWidget* m_game_summary = nullptr;
|
||||
InterfaceSettingsWidget* m_interface_settings = nullptr;
|
||||
BIOSSettingsWidget* m_bios_settings = nullptr;
|
||||
ConsoleSettingsWidget* m_console_settings = nullptr;
|
||||
|
Loading…
Reference in New Issue
Block a user