From 5272ecd5720571ca05b92ed705ac318f4980375c Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Wed, 29 Jan 2020 00:01:35 +1000 Subject: [PATCH] Qt: Support binding settings to QSliders --- src/duckstation-qt/settingwidgetbinder.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/duckstation-qt/settingwidgetbinder.h b/src/duckstation-qt/settingwidgetbinder.h index 25dfb0091..7cca2734d 100644 --- a/src/duckstation-qt/settingwidgetbinder.h +++ b/src/duckstation-qt/settingwidgetbinder.h @@ -8,6 +8,7 @@ #include #include #include +#include namespace SettingWidgetBinder { @@ -90,6 +91,25 @@ struct SettingAccessor } }; +template<> +struct SettingAccessor +{ + static bool getBoolValue(const QSlider* widget) { return widget->value() > 0; } + static void setBoolValue(QSlider* widget, bool value) { widget->setValue(value ? 1 : 0); } + + static int getIntValue(const QSlider* widget) { return widget->value(); } + static void setIntValue(QSlider* widget, int value) { widget->setValue(value); } + + static QString getStringValue(const QSlider* widget) { return QStringLiteral("%1").arg(widget->value()); } + static void setStringValue(QSlider* widget, const QString& value) { widget->setValue(value.toInt()); } + + template + static void connectValueChanged(QSlider* widget, F func) + { + widget->connect(widget, &QSlider::valueChanged, func); + } +}; + /// Binds a widget's value to a setting, updating it when the value changes. template