summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp
diff options
context:
space:
mode:
authorJoshua Vandaƫle <joshua@vandaele.software>2025-08-13 00:33:52 +0200
committerJoshua Vandaƫle <joshua@vandaele.software>2025-10-27 16:21:59 +0100
commitb6766e1ca0146de939e6645b743634bda717b719 (patch)
tree8bdcb1e8c3f646f8db674598d484d917c00501e1 /Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp
parent1e227bd736b4343f7fac807ac3540d4824e85a8b (diff)
GameCubePane: Use ConfigControls where applicable
Diffstat (limited to 'Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp')
-rw-r--r--Source/Core/DolphinQt/Config/ConfigControls/ConfigUserPath.cpp59
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();
+}