summaryrefslogtreecommitdiff
path: root/src/yuzu/configuration/shared_widget.cpp
diff options
context:
space:
mode:
authorlat9nq <22451773+lat9nq@users.noreply.github.com>2023-06-21 03:29:20 -0400
committerlat9nq <22451773+lat9nq@users.noreply.github.com>2023-07-21 10:56:55 -0400
commit21723879e7631b2d81d3c3ff14f93c834bc1cdd8 (patch)
treeca8a5f8e23f36a207fa04669e3399cd501d03c58 /src/yuzu/configuration/shared_widget.cpp
parentb2438f1fb7d083ffe8c8afdc30e9c612631d6ace (diff)
configuration: Use specialization of settings
Reduces some ugliness in frontend code.
Diffstat (limited to 'src/yuzu/configuration/shared_widget.cpp')
-rw-r--r--src/yuzu/configuration/shared_widget.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/yuzu/configuration/shared_widget.cpp b/src/yuzu/configuration/shared_widget.cpp
index dc8b31238..807d1d668 100644
--- a/src/yuzu/configuration/shared_widget.cpp
+++ b/src/yuzu/configuration/shared_widget.cpp
@@ -376,6 +376,32 @@ void Widget::SetupComponent(const QString& label, std::function<void()>& load_fu
layout->addWidget(qt_label);
}
+ request = [&]() {
+ if (request != RequestType::Default) {
+ return request;
+ }
+ switch (setting.Specialization()) {
+ case Settings::Specialization::Default:
+ return RequestType::Default;
+ case Settings::Specialization::Time:
+ return RequestType::DateTimeEdit;
+ case Settings::Specialization::Hex:
+ return RequestType::HexEdit;
+ case Settings::Specialization::RuntimeList:
+ managed = false;
+ [[fallthrough]];
+ case Settings::Specialization::List:
+ return RequestType::ComboBox;
+ case Settings::Specialization::Scalar:
+ return RequestType::Slider;
+ case Settings::Specialization::Countable:
+ return RequestType::SpinBox;
+ default:
+ break;
+ }
+ return request;
+ }();
+
if (setting.TypeId() == typeid(bool)) {
data_component = CreateCheckBox(&setting, label, serializer, restore_func, touch);
} else if (setting.IsEnum()) {
@@ -544,6 +570,11 @@ Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
return nullptr;
}
+ if (setting->Specialization() == Settings::Specialization::Paired) {
+ LOG_DEBUG(Frontend, "\"{}\" has specialization Paired: ignoring", setting->GetLabel());
+ return nullptr;
+ }
+
return new Widget(setting, *translations, *combobox_translations, parent, runtime_lock,
apply_funcs, request, managed, multiplier, other_setting, string);
}