[Scummvm-cvs-logs] CVS: scummvm/gui browser.cpp,1.7,1.8 browser.h,1.6,1.7 launcher.cpp,1.34,1.35 options.cpp,1.13,1.14 options.h,1.2,1.3

Max Horn fingolfin at users.sourceforge.net
Tue Mar 25 07:33:26 CET 2003


Update of /cvsroot/scummvm/scummvm/gui
In directory sc8-pr-cvs1:/tmp/cvs-serv15121/gui

Modified Files:
	browser.cpp browser.h launcher.cpp options.cpp options.h 
Log Message:
added some meat to the global options dialog (no prefs are stored yet, though)

Index: browser.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/browser.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- browser.cpp	6 Mar 2003 21:45:37 -0000	1.7
+++ browser.cpp	25 Mar 2003 15:32:33 -0000	1.8
@@ -35,12 +35,11 @@
 	kGoUpCmd = 'GoUp'
 };
 
-BrowserDialog::BrowserDialog(NewGui *gui)
+BrowserDialog::BrowserDialog(NewGui *gui, const char *title)
 	: Dialog(gui, 40, 10, 320 -2 * 40, 200 - 2 * 10),
 	  _node(0), _nodeContent(0) {
 	// Headline - TODO: should be customizable during creation time
-	new StaticTextWidget(this, 10, 8, _w-2 * 10, kLineHeight,
-		"Select directory with game data", kTextAlignCenter);
+	new StaticTextWidget(this, 10, 8, _w-2 * 10, kLineHeight, title, kTextAlignCenter);
 
 	// Current path - TODO: handle long paths ?
 	_currentPath = new StaticTextWidget(this, 10, 20, _w - 2 * 10, kLineHeight,

Index: browser.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/browser.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- browser.h	6 Mar 2003 21:45:37 -0000	1.6
+++ browser.h	25 Mar 2003 15:32:33 -0000	1.7
@@ -35,7 +35,7 @@
 	typedef ScummVM::String String;
 	typedef ScummVM::StringList StringList;
 public:
-	BrowserDialog(NewGui *gui);
+	BrowserDialog(NewGui *gui, const char *title);
 	virtual ~BrowserDialog();
 
 	virtual void open();

Index: launcher.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/launcher.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- launcher.cpp	6 Mar 2003 21:45:40 -0000	1.34
+++ launcher.cpp	25 Mar 2003 15:32:33 -0000	1.35
@@ -205,7 +205,7 @@
 	updateButtons();
 
 	// Create file browser dialog
-	_browser = new BrowserDialog(_gui);
+	_browser = new BrowserDialog(_gui, "Select directory with game data");
 }
 
 LauncherDialog::~LauncherDialog() {
@@ -328,7 +328,7 @@
 		//    options for that game.
 		
 		if (_browser->runModal()) {
-			// User did make a choice...
+			// User made his choice...
 			FilesystemNode *dir = _browser->getResult();
 
 			// ...so let's determine a list of candidates, games that
@@ -431,7 +431,7 @@
 		// - music & graphics driver (but see also the comments on EditGameDialog
 		//   for some techincal difficulties with this)
 		// - default volumes (sfx/master/music)
-		GlobalOptionsDialog options(_gui);
+		GlobalOptionsDialog options(_gui, _detector);
 		options.runModal();
 		}
 		break;

Index: options.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/options.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- options.cpp	25 Mar 2003 00:26:53 -0000	1.13
+++ options.cpp	25 Mar 2003 15:32:34 -0000	1.14
@@ -25,9 +25,8 @@
 #include "options.h"
 #include "PopUpWidget.h"
 
-//#include "backends/fs/fs.h"
+#include "backends/fs/fs.h"
 #include "common/config-file.h"
-//#include "common/engine.h"
 #include "common/gameDetector.h"
 
 /*
@@ -49,11 +48,15 @@
 // - default volumes (sfx/master/music)
 
 enum {
-	kOKCmd = 'OK  '
+	kMasterVolumeChanged	= 'mavc',
+	kMusicVolumeChanged		= 'muvc',
+	kSfxVolumeChanged		= 'sfvc',
+	kChooseSaveDirCmd		= 'chos',
+	kOKCmd					= 'ok  '
 };
 
-GlobalOptionsDialog::GlobalOptionsDialog(NewGui *gui)
-	: Dialog(gui, 10, 15, 320 - 2 * 10, 200 - 2 * 15) {
+GlobalOptionsDialog::GlobalOptionsDialog(NewGui *gui, GameDetector &detector)
+	: Dialog(gui, 10, 15, 320 - 2 * 10, 200 - 2 * 15), _detector(detector) {
 	// The GFX mode popup & a label
 	// TODO - add an API to query the list of available GFX modes, and to get/set the mode
 	new StaticTextWidget(this, 5, 10+1, 100, kLineHeight, "Graphics mode: ", kTextAlignRight);
@@ -94,51 +97,103 @@
 	new StaticTextWidget(this, 5, yoffset+26, 100, 16, "Music volume: ", kTextAlignRight);
 	new StaticTextWidget(this, 5, yoffset+42, 100, 16, "SFX volume: ", kTextAlignRight);
 
-	SliderWidget *masterVolumeSlider, *musicVolumeSlider, *sfxVolumeSlider;
-
-	masterVolumeSlider = new SliderWidget(this, 105, yoffset+8, 85, 12, "Volume1", 0);
-	musicVolumeSlider  = new SliderWidget(this, 105, yoffset+24, 85, 12, "Volume2", 0);
-	sfxVolumeSlider    = new SliderWidget(this, 105, yoffset+40, 85, 12, "Volume3", 0);
-
-	masterVolumeSlider->setMinValue(0);	masterVolumeSlider->setMaxValue(255);
-	musicVolumeSlider->setMinValue(0);	musicVolumeSlider->setMaxValue(255);
-	sfxVolumeSlider->setMinValue(0);	sfxVolumeSlider->setMaxValue(255);
+	_masterVolumeSlider = new SliderWidget(this, 105, yoffset+8, 85, 12, "Volume1", kMasterVolumeChanged);
+	_musicVolumeSlider  = new SliderWidget(this, 105, yoffset+24, 85, 12, "Volume2", kMusicVolumeChanged);
+	_sfxVolumeSlider    = new SliderWidget(this, 105, yoffset+40, 85, 12, "Volume3", kSfxVolumeChanged);
 
-	Widget *masterVolumeLabel, *musicVolumeLabel, *sfxVolumeLabel;
+	_masterVolumeSlider->setMinValue(0);	_masterVolumeSlider->setMaxValue(255);
+	_musicVolumeSlider->setMinValue(0);	_musicVolumeSlider->setMaxValue(255);
+	_sfxVolumeSlider->setMinValue(0);	_sfxVolumeSlider->setMaxValue(255);
 
-	masterVolumeLabel = new StaticTextWidget(this, 200, yoffset+10, 24, 16, "100%", kTextAlignLeft);
-	musicVolumeLabel  = new StaticTextWidget(this, 200, yoffset+26, 24, 16, "100%", kTextAlignLeft);
-	sfxVolumeLabel    = new StaticTextWidget(this, 200, yoffset+42, 24, 16, "100%", kTextAlignLeft);
+	_masterVolumeLabel = new StaticTextWidget(this, 200, yoffset+10, 24, 16, "100%", kTextAlignLeft);
+	_musicVolumeLabel  = new StaticTextWidget(this, 200, yoffset+26, 24, 16, "100%", kTextAlignLeft);
+	_sfxVolumeLabel    = new StaticTextWidget(this, 200, yoffset+42, 24, 16, "100%", kTextAlignLeft);
 	
-	masterVolumeLabel->setFlags(WIDGET_CLEARBG);
-	musicVolumeLabel->setFlags(WIDGET_CLEARBG);
-	sfxVolumeLabel->setFlags(WIDGET_CLEARBG);
+	_masterVolumeLabel->setFlags(WIDGET_CLEARBG);
+	_musicVolumeLabel->setFlags(WIDGET_CLEARBG);
+	_sfxVolumeLabel->setFlags(WIDGET_CLEARBG);
 
 
 	//
 	// Save game path
 	//
 	new StaticTextWidget(this, 5, 106, 100, kLineHeight, "Savegame path: ", kTextAlignRight);
-	new StaticTextWidget(this, 105, 106, 180, kLineHeight, "/foo/bar", kTextAlignLeft);
-	new ButtonWidget(this, 105, 120, 64, 16, "Choose...", 0, 0);
+	_savePath = new StaticTextWidget(this, 105, 106, 180, kLineHeight, "/foo/bar", kTextAlignLeft);
+	new ButtonWidget(this, 105, 120, 64, 16, "Choose...", kChooseSaveDirCmd, 0);
 	
+// TODO: set _savePath to the current save path, i.e. as obtained via
+	const char *dir = NULL;
+	dir = g_config->get("savepath", "scummvm");
+	if (dir) {
+		_savePath->setLabel(dir);
+	} else {
+		char buf[256];
+		getcwd(buf, sizeof(buf));
+		_savePath->setLabel(buf);
+	}
+// If that is NULL, we should use the current directory...
 
 	//
 	// Add OK & Cancel buttons
 	//
 	addButton(_w - 2 * (kButtonWidth + 10), _h - 24, "Cancel", kCloseCmd, 0);
 	addButton(_w - (kButtonWidth + 10), _h - 24, "OK", kOKCmd, 0);
+
+	// Create file browser dialog
+	_browser = new BrowserDialog(_gui, "Select directory for savegames");
 }
 
 GlobalOptionsDialog::~GlobalOptionsDialog() {
+	delete _browser;
+}
+
+void GlobalOptionsDialog::open() {
+	Dialog::open();
+
+	_soundVolumeMaster = _detector._master_volume;
+	_soundVolumeMusic = _detector._music_volume;
+	_soundVolumeSfx = _detector._sfx_volume;
+
+	_masterVolumeSlider->setValue(_soundVolumeMaster);
+	_musicVolumeSlider->setValue(_soundVolumeMusic);
+	_sfxVolumeSlider->setValue(_soundVolumeSfx);
+
+	_masterVolumeLabel->setValue(_soundVolumeMaster);
+	_musicVolumeLabel->setValue(_soundVolumeMusic);
+	_sfxVolumeLabel->setValue(_soundVolumeSfx);
 }
 
 void GlobalOptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
-	if (cmd == kOKCmd) {
+	switch (cmd) {
+	case kChooseSaveDirCmd:
+		if (_browser->runModal()) {
+			// User made his choice...
+			FilesystemNode *dir = _browser->getResult();
+			_savePath->setLabel(dir->path());
+			// TODO - we should check if the director is writeable before accepting it
+		}
+		break;
+	case kMasterVolumeChanged:
+		_soundVolumeMaster = _masterVolumeSlider->getValue();
+		_masterVolumeLabel->setValue(_soundVolumeMaster);
+		_masterVolumeLabel->draw();
+		break;
+	case kMusicVolumeChanged:
+		_soundVolumeMusic = _musicVolumeSlider->getValue();
+		_musicVolumeLabel->setValue(_soundVolumeMusic);
+		_musicVolumeLabel->draw();
+		break;
+	case kSfxVolumeChanged:
+		_soundVolumeSfx = _sfxVolumeSlider->getValue();
+		_sfxVolumeLabel->setValue(_soundVolumeSfx);
+		_sfxVolumeLabel->draw();
+		break;
+	case kOKCmd:
 		// TODO Write back changes made to config object
 		setResult(1);
 		close();
-	} else {
+		break;
+	default:
 		Dialog::handleCommand(sender, cmd, data);
 	}
 }

Index: options.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/options.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- options.h	6 Mar 2003 21:45:44 -0000	1.2
+++ options.h	25 Mar 2003 15:32:34 -0000	1.3
@@ -25,18 +25,36 @@
 #include "common/str.h"
 #include "common/list.h"
 
+class BrowserDialog;
+class GameDetector;
 
 class GlobalOptionsDialog : public Dialog {
 	typedef ScummVM::String String;
 public:
-	GlobalOptionsDialog(NewGui *gui);
+	GlobalOptionsDialog(NewGui *gui, GameDetector &detector);
 	~GlobalOptionsDialog();
 
-//	void open();
+	void open();
 //	void close();
 	void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
 
 protected:
+	GameDetector 	&_detector;
+
+	BrowserDialog	*_browser;
+	StaticTextWidget*_savePath;
+
+	int _soundVolumeMaster;
+	int _soundVolumeMusic;
+	int _soundVolumeSfx;
+
+	SliderWidget *_masterVolumeSlider;
+	SliderWidget *_musicVolumeSlider;
+	SliderWidget *_sfxVolumeSlider;
+
+	StaticTextWidget *_masterVolumeLabel;
+	StaticTextWidget *_musicVolumeLabel;
+	StaticTextWidget *_sfxVolumeLabel;
 };
 
 #endif





More information about the Scummvm-git-logs mailing list