From c295f524b23af358192ddb352454ebf995dd51b0 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 6 Jun 2009 17:36:06 +0000 Subject: Implement feature request #1180217: "GUI: Mute option" svn-id: r41233 --- gui/options.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'gui/options.cpp') diff --git a/gui/options.cpp b/gui/options.cpp index 415d7ca357..2e23a4dc61 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -119,6 +119,7 @@ void OptionsDialog::init() { _speechVolumeDesc = 0; _speechVolumeSlider = 0; _speechVolumeLabel = 0; + _muteCheckbox = 0; _subToggleDesc = 0; _subToggleButton = 0; _subSpeedDesc = 0; @@ -240,12 +241,19 @@ void OptionsDialog::open() { vol = ConfMan.getInt("speech_volume", _domain); _speechVolumeSlider->setValue(vol); _speechVolumeLabel->setValue(vol); + + bool val = false; + if (ConfMan.hasKey("mute", _domain)) { + val = ConfMan.getBool("mute", _domain); + } else { + ConfMan.setBool("mute", false); + } + _muteCheckbox->setState(val); } // Subtitle options if (_subToggleButton) { - int speed; - int sliderMaxValue = _subSpeedSlider->getMaxValue(); + int speed; int sliderMaxValue = _subSpeedSlider->getMaxValue(); _subMode = getSubtitleMode(ConfMan.getBool("subtitles", _domain), ConfMan.getBool("speech_mute", _domain)); _subToggleButton->setLabel(_subModeDesc[_subMode]); @@ -300,10 +308,12 @@ void OptionsDialog::close() { ConfMan.setInt("music_volume", _musicVolumeSlider->getValue(), _domain); ConfMan.setInt("sfx_volume", _sfxVolumeSlider->getValue(), _domain); ConfMan.setInt("speech_volume", _speechVolumeSlider->getValue(), _domain); + ConfMan.setBool("mute", _muteCheckbox->getState(), _domain); } else { ConfMan.removeKey("music_volume", _domain); ConfMan.removeKey("sfx_volume", _domain); ConfMan.removeKey("speech_volume", _domain); + ConfMan.removeKey("mute", _domain); } } @@ -514,6 +524,7 @@ void OptionsDialog::setVolumeSettingsState(bool enabled) { _speechVolumeDesc->setEnabled(enabled); _speechVolumeSlider->setEnabled(enabled); _speechVolumeLabel->setEnabled(enabled); + _muteCheckbox->setEnabled(enabled); } void OptionsDialog::setSubtitleSettingsState(bool enabled) { @@ -640,6 +651,9 @@ void OptionsDialog::addVolumeControls(GuiObject *boss, const String &prefix) { _musicVolumeSlider->setMaxValue(Audio::Mixer::kMaxMixerVolume); _musicVolumeLabel->setFlags(WIDGET_CLEARBG); + _muteCheckbox = new CheckboxWidget(boss, prefix + "vcMuteCheckbox", "Mute All", 0, 0); + + _sfxVolumeDesc = new StaticTextWidget(boss, prefix + "vcSfxText", "SFX volume:"); _sfxVolumeSlider = new SliderWidget(boss, prefix + "vcSfxSlider", kSfxVolumeChanged); _sfxVolumeLabel = new StaticTextWidget(boss, prefix + "vcSfxLabel", "100%"); -- cgit v1.2.3 From b0db1b5ed0634dee707d234cfda23201c648cf98 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 6 Jun 2009 17:52:44 +0000 Subject: Implement FR#2507667: "GUI: Improve PopupWidget rendering / theme layouting". - Split out label from PopUp widget - Aligned every widget on all layouts so GUI becomes to look nice again - Moved textHAlign to layout properties svn-id: r41266 --- gui/options.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'gui/options.cpp') diff --git a/gui/options.cpp b/gui/options.cpp index 2e23a4dc61..5d603fa25e 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -477,7 +477,9 @@ void OptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data void OptionsDialog::setGraphicSettingsState(bool enabled) { _enableGraphicSettings = enabled; + _gfxPopUpDesc->setEnabled(enabled); _gfxPopUp->setEnabled(enabled); + _renderModePopUpDesc->setEnabled(enabled); _renderModePopUp->setEnabled(enabled); #ifndef SMALL_SCREEN_DEVICE _fullscreenCheckbox->setEnabled(enabled); @@ -488,8 +490,11 @@ void OptionsDialog::setGraphicSettingsState(bool enabled) { void OptionsDialog::setAudioSettingsState(bool enabled) { _enableAudioSettings = enabled; + _midiPopUpDesc->setEnabled(enabled); _midiPopUp->setEnabled(enabled); + _oplPopUpDesc->setEnabled(enabled); _oplPopUp->setEnabled(enabled); + _outputRatePopUpDesc->setEnabled(enabled); _outputRatePopUp->setEnabled(enabled); } @@ -541,7 +546,8 @@ void OptionsDialog::addGraphicControls(GuiObject *boss, const String &prefix) { const OSystem::GraphicsMode *gm = g_system->getSupportedGraphicsModes(); // The GFX mode popup - _gfxPopUp = new PopUpWidget(boss, prefix + "grModePopup", "Graphics mode:"); + _gfxPopUpDesc = new StaticTextWidget(boss, prefix + "grModePopupDesc", "Graphics mode:"); + _gfxPopUp = new PopUpWidget(boss, prefix + "grModePopup"); _gfxPopUp->appendEntry(""); _gfxPopUp->appendEntry(""); @@ -551,7 +557,8 @@ void OptionsDialog::addGraphicControls(GuiObject *boss, const String &prefix) { } // RenderMode popup - _renderModePopUp = new PopUpWidget(boss, prefix + "grRenderPopup", "Render mode:"); + _renderModePopUpDesc = new StaticTextWidget(boss, prefix + "grRenderPopupDesc", "Render mode:"); + _renderModePopUp = new PopUpWidget(boss, prefix + "grRenderPopup"); _renderModePopUp->appendEntry("", Common::kRenderDefault); _renderModePopUp->appendEntry(""); const Common::RenderModeDescription *rm = Common::g_renderModes; @@ -570,7 +577,8 @@ void OptionsDialog::addGraphicControls(GuiObject *boss, const String &prefix) { void OptionsDialog::addAudioControls(GuiObject *boss, const String &prefix) { // The MIDI mode popup & a label - _midiPopUp = new PopUpWidget(boss, prefix + "auMidiPopup", "Music driver:"); + _midiPopUpDesc = new StaticTextWidget(boss, prefix + "auMidiPopupDesc", "Music driver:"); + _midiPopUp = new PopUpWidget(boss, prefix + "auMidiPopup"); // Populate it const MidiDriverDescription *md = MidiDriver::getAvailableMidiDrivers(); @@ -580,7 +588,8 @@ void OptionsDialog::addAudioControls(GuiObject *boss, const String &prefix) { } // The OPL emulator popup & a label - _oplPopUp = new PopUpWidget(boss, prefix + "auOPLPopup", "AdLib emulator:"); + _oplPopUpDesc = new StaticTextWidget(boss, prefix + "auOPLPopupDesc", "AdLib emulator:"); + _oplPopUp = new PopUpWidget(boss, prefix + "auOPLPopup"); // Populate it const OPL::Config::EmulatorDescription *ed = OPL::Config::getAvailable(); @@ -590,7 +599,8 @@ void OptionsDialog::addAudioControls(GuiObject *boss, const String &prefix) { } // Sample rate settings - _outputRatePopUp = new PopUpWidget(boss, prefix + "auSampleRatePopup", "Output rate:"); + _outputRatePopUpDesc = new StaticTextWidget(boss, prefix + "auSampleRatePopupDesc", "Output rate:"); + _outputRatePopUp = new PopUpWidget(boss, prefix + "auSampleRatePopup"); for (int i = 0; outputRateLabels[i]; i++) { _outputRatePopUp->appendEntry(outputRateLabels[i], outputRateValues[i]); @@ -754,12 +764,14 @@ GlobalOptionsDialog::GlobalOptionsDialog() _curTheme = new StaticTextWidget(tab, "GlobalOptions_Misc.CurTheme", g_gui.theme()->getThemeName()); - _rendererPopUp = new PopUpWidget(tab, "GlobalOptions_Misc.Renderer", "GUI Renderer:"); + _rendererPopUpDesc = new StaticTextWidget(tab, "GlobalOptions_Misc.RendererPopupDesc", "GUI Renderer:"); + _rendererPopUp = new PopUpWidget(tab, "GlobalOptions_Misc.RendererPopup"); for (uint i = 1; i < GUI::ThemeEngine::_rendererModesSize; ++i) _rendererPopUp->appendEntry(GUI::ThemeEngine::_rendererModes[i].name, GUI::ThemeEngine::_rendererModes[i].mode); - _autosavePeriodPopUp = new PopUpWidget(tab, "GlobalOptions_Misc.AutosavePeriod", "Autosave:"); + _autosavePeriodPopUpDesc = new StaticTextWidget(tab, "GlobalOptions_Misc.AutosavePeriodPopupDesc", "Autosave:"); + _autosavePeriodPopUp = new PopUpWidget(tab, "GlobalOptions_Misc.AutosavePeriodPopup"); for (int i = 0; savePeriodLabels[i]; i++) { _autosavePeriodPopUp->appendEntry(savePeriodLabels[i], savePeriodValues[i]); -- cgit v1.2.3 From bbac0f1eeae44519032f742e94ed6ea956f8a161 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 6 Jun 2009 17:58:08 +0000 Subject: Implement FR#862150: "GUI: Show subtitles/speech options only for speech games" Add generic per-game GUI options support along the way ;) svn-id: r41275 --- gui/options.cpp | 70 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 14 deletions(-) (limited to 'gui/options.cpp') diff --git a/gui/options.cpp b/gui/options.cpp index 5d603fa25e..1f3f703218 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -125,6 +125,11 @@ void OptionsDialog::init() { _subSpeedDesc = 0; _subSpeedSlider = 0; _subSpeedLabel = 0; + + // Retrieve game GUI options + _guioptions = 0; + if (ConfMan.hasKey("guioptions", _domain)) + _guioptions = parseGameGUIOptions(ConfMan.get("guioptions", _domain)); } void OptionsDialog::open() { @@ -133,6 +138,11 @@ void OptionsDialog::open() { // Reset result value setResult(0); + // Retrieve game GUI options + _guioptions = 0; + if (ConfMan.hasKey("guioptions", _domain)) + _guioptions = parseGameGUIOptions(ConfMan.get("guioptions", _domain)); + // Graphic options if (_fullscreenCheckbox) { _gfxPopUp->setSelected(0); @@ -518,28 +528,55 @@ void OptionsDialog::setMIDISettingsState(bool enabled) { } void OptionsDialog::setVolumeSettingsState(bool enabled) { + bool ena; + _enableVolumeSettings = enabled; - _musicVolumeDesc->setEnabled(enabled); - _musicVolumeSlider->setEnabled(enabled); - _musicVolumeLabel->setEnabled(enabled); - _sfxVolumeDesc->setEnabled(enabled); - _sfxVolumeSlider->setEnabled(enabled); - _sfxVolumeLabel->setEnabled(enabled); - _speechVolumeDesc->setEnabled(enabled); - _speechVolumeSlider->setEnabled(enabled); - _speechVolumeLabel->setEnabled(enabled); + ena = enabled; + if (_guioptions & Common::GUIO_NOMUSIC) + ena = false; + + _musicVolumeDesc->setEnabled(ena); + _musicVolumeSlider->setEnabled(ena); + _musicVolumeLabel->setEnabled(ena); + + ena = enabled; + if (_guioptions & Common::GUIO_NOSFX) + ena = false; + + _sfxVolumeDesc->setEnabled(ena); + _sfxVolumeSlider->setEnabled(ena); + _sfxVolumeLabel->setEnabled(ena); + + ena = enabled; + if (_guioptions & Common::GUIO_NOSPEECH) + ena = false; + + _speechVolumeDesc->setEnabled(ena); + _speechVolumeSlider->setEnabled(ena); + _speechVolumeLabel->setEnabled(ena); + _muteCheckbox->setEnabled(enabled); } void OptionsDialog::setSubtitleSettingsState(bool enabled) { + bool ena; _enableSubtitleSettings = enabled; - _subToggleButton->setEnabled(enabled); - _subToggleDesc->setEnabled(enabled); - _subSpeedDesc->setEnabled(enabled); - _subSpeedSlider->setEnabled(enabled); - _subSpeedLabel->setEnabled(enabled); + ena = enabled; + if ((_guioptions & Common::GUIO_NOSUBTITLES) || (_guioptions & Common::GUIO_NOSPEECH)) + ena = false; + + _subToggleButton->setEnabled(ena); + _subToggleDesc->setEnabled(ena); + + ena = enabled; + if (_guioptions & Common::GUIO_NOSUBTITLES) + ena = false; + + _subSpeedDesc->setEnabled(ena); + _subSpeedSlider->setEnabled(ena); + _subSpeedLabel->setEnabled(ena); } void OptionsDialog::addGraphicControls(GuiObject *boss, const String &prefix) { @@ -682,6 +719,11 @@ void OptionsDialog::addVolumeControls(GuiObject *boss, const String &prefix) { } int OptionsDialog::getSubtitleMode(bool subtitles, bool speech_mute) { + if (_guioptions & Common::GUIO_NOSUBTITLES) + return 0; // Speech only + if (_guioptions & Common::GUIO_NOSPEECH) + return 2; // Subtitles only + if (!subtitles && !speech_mute) // Speech only return 0; else if (subtitles && !speech_mute) // Speech and subtitles -- cgit v1.2.3 From 986a0b83b61146094cb748b7b291ed5e074a832b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 6 Jun 2009 18:21:07 +0000 Subject: Disable MIDI controls if GUIO_NOMIDI is set svn-id: r41281 --- gui/options.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gui/options.cpp') diff --git a/gui/options.cpp b/gui/options.cpp index 1f3f703218..5991a204e9 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -509,6 +509,9 @@ void OptionsDialog::setAudioSettingsState(bool enabled) { } void OptionsDialog::setMIDISettingsState(bool enabled) { + if (_guioptions & Common::GUIO_NOMIDI) + enabled = false; + _enableMIDISettings = enabled; _soundFontButton->setEnabled(enabled); -- cgit v1.2.3