GUI: Add a checkbox to allow overriding the global backend settings

This commit is contained in:
Cameron Cawley 2021-01-17 10:03:51 +00:00 committed by Filippos Karapetis
parent 7b08d041a2
commit 76b25ec1c3
22 changed files with 121 additions and 41 deletions

View file

@ -65,6 +65,7 @@ enum {
kCmdGlobalGraphicsOverride = 'OGFX',
kCmdGlobalShaderOverride = 'OSHD',
kCmdGlobalBackendOverride = 'OBAK',
kCmdGlobalAudioOverride = 'OSFX',
kCmdGlobalMIDIOverride = 'OMID',
kCmdGlobalMT32Override = 'OM32',
@ -245,6 +246,11 @@ EditGameDialog::EditGameDialog(const String &domain)
//
int backendTabId = tab->addTab(_("Backend"), "GameOptions_Backend");
if (g_system->getOverlayWidth() > 320)
_globalBackendOverride = new CheckboxWidget(tab, "GameOptions_Backend.EnableTabCheckbox", _("Override global backend settings"), Common::U32String(), kCmdGlobalBackendOverride);
else
_globalBackendOverride = new CheckboxWidget(tab, "GameOptions_Backend.EnableTabCheckbox", _c("Override global backend settings", "lowres"), Common::U32String(), kCmdGlobalBackendOverride);
g_system->registerDefaultSettings(_domain);
_backendOptions = g_system->buildBackendOptionsWidget(tab, "GameOptions_Backend.Container", _domain);
@ -410,6 +416,11 @@ void EditGameDialog::open() {
_globalShaderOverride->setState(e);
}
if (_backendOptions) {
e = _backendOptions->hasKeys();
_globalBackendOverride->setState(e);
}
e = ConfMan.hasKey("music_driver", _domain) ||
ConfMan.hasKey("output_rate", _domain) ||
ConfMan.hasKey("opl_driver", _domain) ||
@ -510,6 +521,10 @@ void EditGameDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 dat
setShaderSettingsState(data != 0);
g_gui.scheduleTopDialogRedraw();
break;
case kCmdGlobalBackendOverride:
_backendOptions->setEnabled(data != 0);
g_gui.scheduleTopDialogRedraw();
break;
case kCmdGlobalAudioOverride:
setAudioSettingsState(data != 0);
setSubtitleSettingsState(data != 0);