diff options
| author | JMC47 <JMC4789@gmail.com> | 2025-10-28 18:56:03 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-28 18:56:03 -0400 |
| commit | 1ed86e1b162adda9382f8ccaa9da2c029eb56de7 (patch) | |
| tree | 82ecb1223433ab361c396e7ec7c6662bed347fbf /Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp | |
| parent | 032fdf6335ef3ed9986bdaeeed4d5cde36cd82f6 (diff) | |
| parent | e1088659b1e9e4ba271ac66fb07e77c58891703e (diff) | |
Merge pull request #13866 from JoshuaVandaele/reset-button-third-attempt
AdvancedPane: Add a button to restore default settings
Diffstat (limited to 'Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp')
| -rw-r--r-- | Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp b/Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp new file mode 100644 index 0000000000..1b6c03f915 --- /dev/null +++ b/Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp @@ -0,0 +1,59 @@ +// Copyright 2025 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "DolphinQt/Config/ConfigControls/ConfigUserPath.h" + +#include <QLineEdit> +#include <QString> + +#include "Common/FileUtil.h" + +#include "DolphinQt/Config/ConfigControls/ConfigText.h" +#include "DolphinQt/QtUtils/ModalMessageBox.h" + +ConfigUserPath::ConfigUserPath(const unsigned int dir_index, + const Config::Info<std::string>& setting) + : ConfigUserPath(dir_index, setting, nullptr) +{ +} + +ConfigUserPath::ConfigUserPath(const unsigned int dir_index, + const Config::Info<std::string>& setting, Config::Layer* layer) + : ConfigText(setting, layer), m_dir_index(dir_index) +{ + OnConfigChanged(); + + connect(this, &QLineEdit::editingFinished, this, &ConfigUserPath::Update); +} + +// Display the effective path: if Config has a value, use it; otherwise fall back to UserPath. +// Config values only serve to initialize UserPath at startup, an empty config meaning "use the +// current UserPath". +void ConfigUserPath::RefreshText() +{ + const std::string config_value = ReadValue(m_setting); + const std::string userpath_value = File::GetUserPath(m_dir_index); + const QString text = QString::fromStdString(config_value.empty() ? userpath_value : config_value); + setText(text); +} + +void ConfigUserPath::Update() +{ + const QString new_text = text().trimmed(); + if (new_text.isEmpty()) + { + ModalMessageBox::warning(this, tr("Empty Value"), + tr("This field cannot be left empty. Please enter a value.")); + RefreshText(); + return; + } + + const std::string value = new_text.toStdString(); + File::SetUserPath(m_dir_index, value); + SaveValue(m_setting, value); +} + +void ConfigUserPath::OnConfigChanged() +{ + RefreshText(); +} |
