[Scummvm-cvs-logs] SF.net SVN: scummvm:[41275] scummvm/trunk

sev at users.sourceforge.net sev at users.sourceforge.net
Sat Jun 6 19:58:08 CEST 2009


Revision: 41275
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41275&view=rev
Author:   sev
Date:     2009-06-06 17:58:08 +0000 (Sat, 06 Jun 2009)

Log Message:
-----------
Implement FR#862150: "GUI: Show subtitles/speech options only for speech games"
Add generic per-game GUI options support along the way ;)

Modified Paths:
--------------
    scummvm/trunk/engines/dialogs.cpp
    scummvm/trunk/gui/options.cpp
    scummvm/trunk/gui/options.h

Modified: scummvm/trunk/engines/dialogs.cpp
===================================================================
--- scummvm/trunk/engines/dialogs.cpp	2009-06-06 17:57:39 UTC (rev 41274)
+++ scummvm/trunk/engines/dialogs.cpp	2009-06-06 17:58:08 UTC (rev 41275)
@@ -277,6 +277,7 @@
 	//
 
 	addVolumeControls(this, "ScummConfig.");
+	setVolumeSettingsState(true); // could disable controls by GUI options
 
 	//
 	// Subtitle speed and toggle controllers
@@ -285,6 +286,7 @@
 	if (subtitleControls) {
 		// Global talkspeed range of 0-255
 		addSubtitleControls(this, "ScummConfig.", 255);
+		setSubtitleSettingsState(true); // could disable controls by GUI options
 	}
 
 	//

Modified: scummvm/trunk/gui/options.cpp
===================================================================
--- scummvm/trunk/gui/options.cpp	2009-06-06 17:57:39 UTC (rev 41274)
+++ scummvm/trunk/gui/options.cpp	2009-06-06 17:58:08 UTC (rev 41275)
@@ -125,6 +125,11 @@
 	_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 @@
 	// 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::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 @@
 }
 
 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

Modified: scummvm/trunk/gui/options.h
===================================================================
--- scummvm/trunk/gui/options.h	2009-06-06 17:57:39 UTC (rev 41274)
+++ scummvm/trunk/gui/options.h	2009-06-06 17:58:08 UTC (rev 41275)
@@ -152,6 +152,11 @@
 	StaticTextWidget *_speechVolumeLabel;
 
 	CheckboxWidget *_muteCheckbox;
+
+	//
+	// Game GUI options
+	//
+	uint32 _guioptions;
 };
 
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list