From 5efb717873691fa42447ca0d9d9810b5ad501b42 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Tue, 26 Mar 2019 19:31:03 -0500 Subject: InputCommon: Clean up how numeric settings are handled. Add units of measure to UI. Eliminate hidden magic values of the IR cursor. --- .../DolphinQt/Config/Mapping/MappingNumeric.cpp | 50 +++++++++++++++++----- 1 file changed, 40 insertions(+), 10 deletions(-) (limited to 'Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp') 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* 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(&QSpinBox::valueChanged), this, - [this, parent](int value) { - m_setting.SetValue(static_cast(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::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* 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); } -- cgit v1.2.3