summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Config/ConfigControls/ConfigFloatSlider.cpp
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2023-06-09 22:21:35 +0200
committerGitHub <noreply@github.com>2023-06-09 22:21:35 +0200
commit83b0b8d8371da768c30f01c12e6e5cb111033f68 (patch)
tree6334df44d2a960262e2cdda1f0eadca46710b608 /Source/Core/DolphinQt/Config/ConfigControls/ConfigFloatSlider.cpp
parent8f51a9d2d8a88993167cd1c3b8d447bee1ca6407 (diff)
parent03ec86f2480f8d96651070af6e5e0529243bed35 (diff)
Merge pull request #11900 from Filoppi/add_float_config_tooltip_slider
Qt: Add float config tooltip slider
Diffstat (limited to 'Source/Core/DolphinQt/Config/ConfigControls/ConfigFloatSlider.cpp')
-rw-r--r--Source/Core/DolphinQt/Config/ConfigControls/ConfigFloatSlider.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt/Config/ConfigControls/ConfigFloatSlider.cpp b/Source/Core/DolphinQt/Config/ConfigControls/ConfigFloatSlider.cpp
new file mode 100644
index 0000000000..f881f6653f
--- /dev/null
+++ b/Source/Core/DolphinQt/Config/ConfigControls/ConfigFloatSlider.cpp
@@ -0,0 +1,48 @@
+// Copyright 2023 Dolphin Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "DolphinQt/Config/ConfigControls/ConfigFloatSlider.h"
+
+#include <QSignalBlocker>
+
+#include "Common/Config/Config.h"
+
+#include "DolphinQt/Settings.h"
+
+ConfigFloatSlider::ConfigFloatSlider(float minimum, float maximum,
+ const Config::Info<float>& setting, float step)
+ : ToolTipSlider(Qt::Horizontal), m_minimum(minimum), m_setting(setting), m_step(step)
+{
+ const float range = maximum - minimum;
+ const int steps = std::round(range / step);
+ const int interval = std::round(range / steps);
+ const int current_value = std::round((Config::Get(m_setting) - minimum) / step);
+
+ setMinimum(0);
+ setMaximum(steps);
+ setTickInterval(interval);
+ setValue(current_value);
+
+ connect(this, &ConfigFloatSlider::valueChanged, this, &ConfigFloatSlider::Update);
+
+ connect(&Settings::Instance(), &Settings::ConfigChanged, this, [this] {
+ QFont bf = font();
+ bf.setBold(Config::GetActiveLayerForConfig(m_setting) != Config::LayerType::Base);
+ setFont(bf);
+
+ const QSignalBlocker blocker(this);
+ const int current_value = std::round((Config::Get(m_setting) - m_minimum) / m_step);
+ setValue(current_value);
+ });
+}
+
+void ConfigFloatSlider::Update(int value)
+{
+ const float current_value = (m_step * value) + m_minimum;
+ Config::SetBaseOrCurrent(m_setting, current_value);
+}
+
+float ConfigFloatSlider::GetValue() const
+{
+ return (m_step * value()) + m_minimum;
+}