summaryrefslogtreecommitdiff
path: root/src/yuzu/configuration/shared_widget.cpp
diff options
context:
space:
mode:
authorlat9nq <22451773+lat9nq@users.noreply.github.com>2023-06-21 05:04:21 -0400
committerlat9nq <22451773+lat9nq@users.noreply.github.com>2023-07-21 10:56:55 -0400
commit926f3e3d3e6ff57633d2d44085f02754ffe1c988 (patch)
tree145da683fb3421a5a500525447181b08cb25b4dd /src/yuzu/configuration/shared_widget.cpp
parent9de50d6194027bf4d757ef58f291763eacea6bfe (diff)
settings,configuration: Add a default suffix
Diffstat (limited to 'src/yuzu/configuration/shared_widget.cpp')
-rw-r--r--src/yuzu/configuration/shared_widget.cpp47
1 files changed, 34 insertions, 13 deletions
diff --git a/src/yuzu/configuration/shared_widget.cpp b/src/yuzu/configuration/shared_widget.cpp
index bbcee7488..978bfa590 100644
--- a/src/yuzu/configuration/shared_widget.cpp
+++ b/src/yuzu/configuration/shared_widget.cpp
@@ -50,6 +50,20 @@ static std::string RelevantDefault(const Settings::BasicSetting& setting) {
return Settings::IsConfiguringGlobal() ? setting.DefaultToString() : setting.ToStringGlobal();
}
+static QString DefaultSuffix(QWidget* parent, Settings::BasicSetting& setting) {
+ const auto tr = [parent](const char* text, const char* context) {
+ return parent->tr(text, context);
+ };
+
+ if ((setting.Specialization() & Settings::SpecializationAttributeMask) ==
+ Settings::Specialization::Percentage) {
+ std::string context{fmt::format("{} percentage (e.g. 50%)", setting.GetLabel())};
+ return tr("%", context.c_str());
+ }
+
+ return QStringLiteral("");
+}
+
QPushButton* Widget::CreateRestoreGlobalButton(bool using_global, QWidget* parent) {
restore_button_count++;
@@ -180,7 +194,7 @@ QWidget* Widget::CreateLineEdit(std::function<std::string()>& serializer,
return line_edit;
}
-QWidget* Widget::CreateSlider(bool reversed, float multiplier, const QString& format,
+QWidget* Widget::CreateSlider(bool reversed, float multiplier, const QString& given_suffix,
std::function<std::string()>& serializer,
std::function<void()>& restore_func,
const std::function<void()>& touch) {
@@ -205,7 +219,10 @@ QWidget* Widget::CreateSlider(bool reversed, float multiplier, const QString& fo
int max_val = std::stoi(setting.MaxVal());
- const QString use_format = format == QStringLiteral("") ? QStringLiteral("%1") : format;
+ QString suffix =
+ given_suffix == QStringLiteral("") ? DefaultSuffix(this, setting) : given_suffix;
+
+ const QString use_format = QStringLiteral("%1").append(suffix);
QObject::connect(slider, &QAbstractSlider::valueChanged, [=](int value) {
int present = (reversed ? max_val - value : value) * multiplier + 0.5f;
@@ -228,7 +245,8 @@ QWidget* Widget::CreateSlider(bool reversed, float multiplier, const QString& fo
return container;
}
-QWidget* Widget::CreateSpinBox(const QString& suffix, std::function<std::string()>& serializer,
+QWidget* Widget::CreateSpinBox(const QString& given_suffix,
+ std::function<std::string()>& serializer,
std::function<void()>& restore_func,
const std::function<void()>& touch) {
const int min_val =
@@ -237,6 +255,9 @@ QWidget* Widget::CreateSpinBox(const QString& suffix, std::function<std::string(
setting.Ranged() ? std::stoi(setting.MaxVal()) : std::numeric_limits<int>::max();
const int default_val = std::stoi(setting.ToString());
+ QString suffix =
+ given_suffix == QStringLiteral("") ? DefaultSuffix(this, setting) : given_suffix;
+
spinbox = new QSpinBox(this);
spinbox->setRange(min_val, max_val);
spinbox->setValue(default_val);
@@ -338,7 +359,7 @@ QWidget* Widget::CreateDateTimeEdit(bool disabled, bool restrict,
void Widget::SetupComponent(const QString& label, std::function<void()>& load_func, bool managed,
RequestType request, float multiplier,
- Settings::BasicSetting* other_setting, const QString& string) {
+ Settings::BasicSetting* other_setting, const QString& suffix) {
created = true;
const auto type = setting.TypeId();
@@ -391,7 +412,7 @@ void Widget::SetupComponent(const QString& label, std::function<void()>& load_fu
if (request != RequestType::Default) {
return request;
}
- switch (setting.Specialization()) {
+ switch (setting.Specialization() & Settings::SpecializationTypeMask) {
case Settings::Specialization::Default:
return RequestType::Default;
case Settings::Specialization::Time:
@@ -422,7 +443,7 @@ void Widget::SetupComponent(const QString& label, std::function<void()>& load_fu
switch (request) {
case RequestType::Slider:
case RequestType::ReverseSlider:
- data_component = CreateSlider(request == RequestType::ReverseSlider, multiplier, string,
+ data_component = CreateSlider(request == RequestType::ReverseSlider, multiplier, suffix,
serializer, restore_func, touch);
break;
case RequestType::Default:
@@ -434,7 +455,7 @@ void Widget::SetupComponent(const QString& label, std::function<void()>& load_fu
serializer, restore_func, touch);
break;
case RequestType::SpinBox:
- data_component = CreateSpinBox(string, serializer, restore_func, touch);
+ data_component = CreateSpinBox(suffix, serializer, restore_func, touch);
break;
case RequestType::HexEdit:
data_component = CreateHexEdit(serializer, restore_func, touch);
@@ -527,7 +548,7 @@ Widget::Widget(Settings::BasicSetting* setting_, const TranslationMap& translati
const ComboboxTranslationMap& combobox_translations_, QWidget* parent_,
bool runtime_lock_, std::forward_list<std::function<void(bool)>>& apply_funcs_,
RequestType request, bool managed, float multiplier,
- Settings::BasicSetting* other_setting, const QString& string)
+ Settings::BasicSetting* other_setting, const QString& suffix)
: QWidget(parent_), parent{parent_}, translations{translations_},
combobox_enumerations{combobox_translations_}, setting{*setting_}, apply_funcs{apply_funcs_},
runtime_lock{runtime_lock_} {
@@ -555,7 +576,7 @@ Widget::Widget(Settings::BasicSetting* setting_, const TranslationMap& translati
std::function<void()> load_func = []() {};
- SetupComponent(label, load_func, managed, request, multiplier, other_setting, string);
+ SetupComponent(label, load_func, managed, request, multiplier, other_setting, suffix);
if (!created) {
LOG_WARNING(Frontend, "No widget was created for \"{}\"", setting.GetLabel());
@@ -587,7 +608,7 @@ Builder::~Builder() = default;
Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
std::forward_list<std::function<void(bool)>>& apply_funcs,
RequestType request, bool managed, float multiplier,
- Settings::BasicSetting* other_setting, const QString& string) const {
+ Settings::BasicSetting* other_setting, const QString& suffix) const {
if (!Settings::IsConfiguringGlobal() && !setting->Switchable()) {
return nullptr;
}
@@ -598,14 +619,14 @@ Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
}
return new Widget(setting, *translations, *combobox_translations, parent, runtime_lock,
- apply_funcs, request, managed, multiplier, other_setting, string);
+ apply_funcs, request, managed, multiplier, other_setting, suffix);
}
Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
std::forward_list<std::function<void(bool)>>& apply_funcs,
Settings::BasicSetting* other_setting, RequestType request,
- const QString& string) const {
- return BuildWidget(setting, apply_funcs, request, true, 1.0f, other_setting, string);
+ const QString& suffix) const {
+ return BuildWidget(setting, apply_funcs, request, true, 1.0f, other_setting, suffix);
}
const ComboboxTranslationMap& Builder::ComboboxTranslations() const {