[Scummvm-cvs-logs] CVS: scummvm/gui dialog.cpp,1.24,1.25 dialog.h,1.14,1.15 widget.cpp,1.20,1.21 widget.h,1.18,1.19

Max Horn fingolfin at users.sourceforge.net
Thu Jul 25 17:42:02 CEST 2002


Update of /cvsroot/scummvm/scummvm/gui
In directory usw-pr-cvs1:/tmp/cvs-serv21995/gui

Modified Files:
	dialog.cpp dialog.h widget.cpp widget.h 
Log Message:
added painelf's (still unfinished) sound dialog in NewGUI. Beware, this is work in progress, don't report problems with it just yet, we already know they are there :-)

Index: dialog.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/dialog.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- dialog.cpp	19 Jul 2002 10:09:46 -0000	1.24
+++ dialog.cpp	26 Jul 2002 00:41:06 -0000	1.25
@@ -26,6 +26,9 @@
 #include "widget.h"
 #include "scumm.h"
 #include "ListWidget.h"
+#include "config-file.h"
+#include "sound/mididrv.h"
+#include "sound/imuse.h"
 
 Dialog::~Dialog()
 {
@@ -353,6 +356,7 @@
 {
 	switch (cmd) {
 	case kSoundCmd:
+		_gui->soundDialog();
 		break;
 	case kKeysCmd:
 		break;
@@ -384,4 +388,66 @@
 	: Dialog (gui, 50, 80, 220, 16)
 {
 	addResText(4, 4, 220, 16, 10);
+}
+
+SoundDialog::SoundDialog(NewGui *gui)
+	: Dialog (gui, 30, 20, 260, 110)
+{
+
+	// set up dialog
+	addButton(110, 90, 40, 15, CUSTOM_STRING(23), kCloseCmd, 'C');	// Close dialog - FIXME
+	new StaticTextWidget(this, 10, 17, 140, 16, "Master volume", false);
+	new StaticTextWidget(this, 10, 37, 140, 16, "Music volume", false);
+	new StaticTextWidget(this, 10, 57, 140, 16, "SFX volume", false);
+
+	// get current variables
+	_soundVolumeMaster = _gui->getScumm()->_sound_volume_master;
+	_soundVolumeMusic = _gui->getScumm()->_sound_volume_music;
+	_soundVolumeSfx = _gui->getScumm()->_sound_volume_sfx;
+
+	widgetMasterVolume = new SliderWidget(this, 100, 13, 80, 16, "Volume1", kMasterVolumeChanged);
+	widgetMusicVolume = new SliderWidget(this, 100, 33, 80, 16, "Volume2", kMusicVolumeChanged);
+	widgetSfxVolume = new SliderWidget(this, 100, 53, 80, 16, "Volume3", kSfxVolumeChanged);
+
+	widgetMasterVolume->setMinValue(0);	widgetMasterVolume->setMaxValue(255);
+	widgetMusicVolume->setMinValue(0);	widgetMusicVolume->setMaxValue(255);
+	widgetSfxVolume->setMinValue(0);	widgetSfxVolume->setMaxValue(255);
+
+	widgetMasterVolume->setValue(_soundVolumeMaster);
+	widgetMusicVolume->setValue(_soundVolumeMusic);
+	widgetSfxVolume->setValue(_soundVolumeSfx);
+}
+
+void SoundDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data)
+{
+	switch (cmd) {
+	case kMasterVolumeChanged:
+		_soundVolumeMaster = widgetMasterVolume->getValue();
+		break;
+	case kMusicVolumeChanged:
+		_soundVolumeMusic = widgetMusicVolume->getValue();
+		break;
+	case kSfxVolumeChanged:
+		_soundVolumeSfx = widgetSfxVolume->getValue();
+		break;
+	default:
+		Dialog::handleCommand(sender, cmd, data);
+	}
+
+	draw();
+
+	// FIXME: Look at Fingolfins comments in Gui::handleSoundDialogCommand(), gui.cpp 
+	_gui->getScumm()->_sound_volume_master = _soundVolumeMaster;	// Master
+	_gui->getScumm()->_sound_volume_music = _soundVolumeMusic;	// Music
+	_gui->getScumm()->_sound_volume_sfx = _soundVolumeSfx;	// SFX
+
+	_gui->getScumm()->_imuse->set_music_volume(_gui->getScumm()->_sound_volume_music);
+	_gui->getScumm()->_imuse->set_master_volume(_gui->getScumm()->_sound_volume_master);
+	_gui->getScumm()->_mixer->set_volume(_gui->getScumm()->_sound_volume_sfx);
+	_gui->getScumm()->_mixer->set_music_volume(_gui->getScumm()->_sound_volume_music);
+
+	scummcfg->set("master_volume", _gui->getScumm()->_sound_volume_master);
+	scummcfg->set("music_volume", _gui->getScumm()->_sound_volume_music);
+	scummcfg->set("sfx_volume", _gui->getScumm()->_sound_volume_sfx);
+	scummcfg->flush();
 }

Index: dialog.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/dialog.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- dialog.h	19 Jul 2002 10:09:46 -0000	1.14
+++ dialog.h	26 Jul 2002 00:41:07 -0000	1.15
@@ -129,4 +129,28 @@
 
 };
 
+
+class SoundDialog : public Dialog {
+public:
+	SoundDialog(NewGui *gui);
+
+	enum {
+		kMasterVolumeChanged	= 'mavc',
+		kMusicVolumeChanged		= 'muvc',
+		kSfxVolumeChanged		= 'sfvc',
+	};
+
+	virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
+
+protected:
+	int _soundVolumeMaster;
+	int _soundVolumeMusic;
+	int _soundVolumeSfx;
+
+	SliderWidget *widgetMasterVolume;
+	SliderWidget *widgetMusicVolume;
+	SliderWidget *widgetSfxVolume;
+};
+
+
 #endif

Index: widget.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/widget.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- widget.cpp	19 Jul 2002 10:09:46 -0000	1.20
+++ widget.cpp	26 Jul 2002 00:41:07 -0000	1.21
@@ -219,18 +219,18 @@
 	
 	// Remove old 'bar' if necessary
 	if (_value != _old_value) {
-		gui->fillRect(_x + 2 + ((_w - 5) * _old_value / 100), _y + 2, 2, _h - 4, gui->_bgcolor);
+		gui->fillRect(_x + 2 + ((_w - 5) * (_old_value - _valueMin) / _valueDelta), _y + 2, 2, _h - 4, gui->_bgcolor);
 		_old_value = _value;
 	}
 
 	// Draw the 'bar'
-	gui->fillRect(_x + 2 + ((_w - 5) * _value / 100), _y + 2, 2, _h - 4, hilite ? gui->_textcolorhi : gui->_textcolor);
+	gui->fillRect(_x + 2 + ((_w - 5) * (_value - _valueMin) / _valueDelta), _y + 2, 2, _h - 4, hilite ? gui->_textcolorhi : gui->_textcolor);
 }
 
 void SliderWidget::handleMouseDown(int x, int y, int button) {
 	int barx;
 
-	barx = 2 + ((_w - 5) * _old_value / 100);
+	barx = 2 + ((_w - 5) * (_value - _valueMin) / _valueDelta);
 	
 	// only start dragging if mouse is over bar
 	if (x > (barx - 3) && x < (barx + 3))
@@ -238,5 +238,11 @@
 }
 
 void SliderWidget::handleMouseUp(int x, int y, int button) {
+
+	if (_isDragging) {
+		if (_flags & WIDGET_ENABLED)
+			sendCommand(_cmd, 0);
+	}
+
 	_isDragging = false;
 }

Index: widget.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/widget.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- widget.h	19 Jul 2002 10:09:46 -0000	1.18
+++ widget.h	26 Jul 2002 00:41:07 -0000	1.19
@@ -170,12 +170,18 @@
 /* SliderWidget */
 class SliderWidget : public ButtonWidget {
 protected:
-	uint8	_value, _old_value;
+	int		_value, _old_value;
+	int		_valueMin, _valueMax, _valueDelta;
 	bool	_isDragging;
 public:
 	SliderWidget(Dialog *boss, int x, int y, int w, int h, const char *label, uint32 cmd = 0, uint8 hotkey = 0);
 	void setValue(uint8 value)	{ _value = value; }
 	uint8 getValue() const		{ return _value; }
+
+	void setMinValue(int value)	{ _valueMin = value; _valueDelta = _valueMax - _valueMin; }
+	int getMinValue() const		{ return _valueMin; }
+	void setMaxValue(int value)	{ _valueMax = value; _valueDelta = _valueMax - _valueMin; }
+	int getMaxValue() const		{ return _valueMax; }
 
 	void handleMouseMoved(int x, int y, int button);
 	void handleMouseDown(int x, int y, int button);





More information about the Scummvm-git-logs mailing list