[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