summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp')
-rw-r--r--Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp50
1 files changed, 40 insertions, 10 deletions
diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp
index 0de807d68c..2c7b1fd4e8 100644
--- a/Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp
+++ b/Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp
@@ -7,26 +7,56 @@
#include "DolphinQt/Config/Mapping/MappingWidget.h"
#include "InputCommon/ControllerEmu/ControllerEmu.h"
-#include "InputCommon/ControllerEmu/Setting/NumericSetting.h"
#include "InputCommon/ControllerInterface/ControllerInterface.h"
-MappingNumeric::MappingNumeric(MappingWidget* parent, ControllerEmu::NumericSetting* setting)
- : m_setting(*setting)
+MappingDouble::MappingDouble(MappingWidget* parent, ControllerEmu::NumericSetting<double>* setting)
+ : QDoubleSpinBox(parent), m_setting(*setting)
{
- setRange(setting->m_low, setting->m_high);
+ setRange(m_setting.GetMinValue(), m_setting.GetMaxValue());
+ setDecimals(2);
- connect(this, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
- [this, parent](int value) {
- m_setting.SetValue(static_cast<double>(value) / 100);
+ if (const auto ui_suffix = m_setting.GetUISuffix())
+ setSuffix(QStringLiteral(" ") + tr(ui_suffix));
+
+ if (const auto ui_description = m_setting.GetUIDescription())
+ setToolTip(tr(ui_description));
+
+ connect(this, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this,
+ [this, parent](double value) {
+ m_setting.SetValue(value);
parent->SaveSettings();
});
- connect(parent, &MappingWidget::ConfigChanged, this, &MappingNumeric::ConfigChanged);
+ connect(parent, &MappingWidget::ConfigChanged, this, &MappingDouble::ConfigChanged);
+}
+
+// Overriding QDoubleSpinBox's fixup to set the default value when input is cleared.
+void MappingDouble::fixup(QString& input) const
+{
+ input = QString::number(m_setting.GetDefaultValue());
+}
+
+void MappingDouble::ConfigChanged()
+{
+ const bool old_state = blockSignals(true);
+ setValue(m_setting.GetValue());
+ blockSignals(old_state);
+}
+
+MappingBool::MappingBool(MappingWidget* parent, ControllerEmu::NumericSetting<bool>* setting)
+ : QCheckBox(parent), m_setting(*setting)
+{
+ connect(this, &QCheckBox::stateChanged, this, [this, parent](int value) {
+ m_setting.SetValue(value != 0);
+ parent->SaveSettings();
+ });
+
+ connect(parent, &MappingWidget::ConfigChanged, this, &MappingBool::ConfigChanged);
}
-void MappingNumeric::ConfigChanged()
+void MappingBool::ConfigChanged()
{
const bool old_state = blockSignals(true);
- setValue(m_setting.GetValue() * 100);
+ setChecked(m_setting.GetValue());
blockSignals(old_state);
}