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