mirror of
https://github.com/stenzek/duckstation.git
synced 2026-07-08 17:46:19 +00:00
Qt: Remove some unused setting binders
Eww, null terminated arrays.
This commit is contained in:
@@ -1254,138 +1254,6 @@ inline void BindMenuToEnumSetting(QMenu* menu, std::string section, std::string
|
||||
}
|
||||
}
|
||||
|
||||
template<typename WidgetType, typename DataType>
|
||||
inline void BindWidgetToEnumSetting(SettingsInterface* sif, WidgetType* widget, std::string section, std::string key,
|
||||
const char** enum_names, DataType default_value)
|
||||
{
|
||||
using Accessor = SettingAccessor<WidgetType>;
|
||||
using UnderlyingType = std::underlying_type_t<DataType>;
|
||||
|
||||
const std::string value(Core::GetBaseStringSettingValue(section.c_str(), key.c_str(),
|
||||
enum_names[static_cast<UnderlyingType>(default_value)]));
|
||||
|
||||
UnderlyingType enum_index = static_cast<UnderlyingType>(default_value);
|
||||
for (UnderlyingType i = 0; enum_names[i] != nullptr; i++)
|
||||
{
|
||||
if (value == enum_names[i])
|
||||
{
|
||||
enum_index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (sif)
|
||||
{
|
||||
Accessor::makeNullableInt(widget, static_cast<int>(enum_index));
|
||||
|
||||
std::string sif_value;
|
||||
std::optional<int> sif_int_value;
|
||||
if (sif->GetStringValue(section.c_str(), key.c_str(), &sif_value))
|
||||
{
|
||||
for (UnderlyingType i = 0; enum_names[i] != nullptr; i++)
|
||||
{
|
||||
if (sif_value == enum_names[i])
|
||||
{
|
||||
sif_int_value = static_cast<int>(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Accessor::setNullableIntValue(widget, sif_int_value);
|
||||
|
||||
Accessor::connectValueChanged(
|
||||
widget, [sif, widget, section = std::move(section), key = std::move(key), enum_names]() {
|
||||
if (std::optional<int> new_value = Accessor::getNullableIntValue(widget); new_value.has_value())
|
||||
sif->SetStringValue(section.c_str(), key.c_str(), enum_names[new_value.value()]);
|
||||
else
|
||||
sif->DeleteValue(section.c_str(), key.c_str());
|
||||
|
||||
QtHost::SaveGameSettings(sif, true);
|
||||
g_core_thread->reloadGameSettings();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
Accessor::setIntValue(widget, static_cast<int>(enum_index));
|
||||
|
||||
Accessor::connectValueChanged(widget, [widget, section = std::move(section), key = std::move(key), enum_names]() {
|
||||
const UnderlyingType value = static_cast<UnderlyingType>(Accessor::getIntValue(widget));
|
||||
Core::SetBaseStringSettingValue(section.c_str(), key.c_str(), enum_names[value]);
|
||||
Host::CommitBaseSettingChanges();
|
||||
g_core_thread->applySettings();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
template<typename WidgetType>
|
||||
inline void BindWidgetToEnumSetting(SettingsInterface* sif, WidgetType* widget, std::string section, std::string key,
|
||||
const char** enum_names, const char** enum_values, const char* default_value,
|
||||
const char* translation_ctx = nullptr)
|
||||
{
|
||||
using Accessor = SettingAccessor<WidgetType>;
|
||||
|
||||
const std::string value = Core::GetBaseStringSettingValue(section.c_str(), key.c_str(), default_value);
|
||||
|
||||
for (int i = 0; enum_names[i] != nullptr; i++)
|
||||
{
|
||||
widget->addItem(translation_ctx ? qApp->translate(translation_ctx, enum_names[i]) :
|
||||
QString::fromUtf8(enum_names[i]));
|
||||
}
|
||||
|
||||
int enum_index = -1;
|
||||
for (int i = 0; enum_values[i] != nullptr; i++)
|
||||
{
|
||||
if (value == enum_values[i])
|
||||
{
|
||||
enum_index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (sif)
|
||||
{
|
||||
Accessor::makeNullableInt(widget, enum_index);
|
||||
|
||||
std::string sif_value;
|
||||
std::optional<int> sif_int_value;
|
||||
if (sif->GetStringValue(section.c_str(), key.c_str(), &sif_value))
|
||||
{
|
||||
for (int i = 0; enum_values[i] != nullptr; i++)
|
||||
{
|
||||
if (sif_value == enum_values[i])
|
||||
{
|
||||
sif_int_value = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Accessor::setNullableIntValue(widget, sif_int_value);
|
||||
|
||||
Accessor::connectValueChanged(
|
||||
widget, [sif, widget, section = std::move(section), key = std::move(key), enum_values]() {
|
||||
if (std::optional<int> new_value = Accessor::getNullableIntValue(widget); new_value.has_value())
|
||||
sif->SetStringValue(section.c_str(), key.c_str(), enum_values[new_value.value()]);
|
||||
else
|
||||
sif->DeleteValue(section.c_str(), key.c_str());
|
||||
|
||||
QtHost::SaveGameSettings(sif, true);
|
||||
g_core_thread->reloadGameSettings();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
if (enum_index >= 0)
|
||||
Accessor::setIntValue(widget, enum_index);
|
||||
|
||||
Accessor::connectValueChanged(widget, [widget, section = std::move(section), key = std::move(key), enum_values]() {
|
||||
const int value = Accessor::getIntValue(widget);
|
||||
Core::SetBaseStringSettingValue(section.c_str(), key.c_str(), enum_values[value]);
|
||||
Host::CommitBaseSettingChanges();
|
||||
g_core_thread->applySettings();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
inline void BindWidgetToFolderSetting(SettingsInterface* sif, QLineEdit* widget, QAbstractButton* browse_button,
|
||||
QString browse_title, QAbstractButton* open_button, QAbstractButton* reset_button,
|
||||
std::string section, std::string key, std::string default_value,
|
||||
|
||||
Reference in New Issue
Block a user