[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