aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjörn Andersson2005-05-18 15:58:39 +0000
committerTorbjörn Andersson2005-05-18 15:58:39 +0000
commit35dda2b636825c4273a0d13cd1b65ae49fdb65ca (patch)
treece9aaeefe7b6b3c2cbc2ec1e7347df7f7be5e5cf
parent51f8aa50b15ac99903f5e4ad3c5422d5473bef85 (diff)
downloadscummvm-rg350-35dda2b636825c4273a0d13cd1b65ae49fdb65ca.tar.gz
scummvm-rg350-35dda2b636825c4273a0d13cd1b65ae49fdb65ca.tar.bz2
scummvm-rg350-35dda2b636825c4273a0d13cd1b65ae49fdb65ca.zip
Added big slider widget. There is nothing in the widget itself that's
dependent on size, so the two different sizes are handled through a new addSlider() function. Figuring out why the big widget won't let you set volume to 0 is left as an exercise for the reader. svn-id: r18170
-rw-r--r--gui/dialog.cpp18
-rw-r--r--gui/dialog.h3
-rw-r--r--gui/options.cpp27
-rw-r--r--gui/widget.cpp3
-rw-r--r--gui/widget.h8
5 files changed, 43 insertions, 16 deletions
diff --git a/gui/dialog.cpp b/gui/dialog.cpp
index 9ab22c26ef..78a3ca6d33 100644
--- a/gui/dialog.cpp
+++ b/gui/dialog.cpp
@@ -323,6 +323,24 @@ CheckboxWidget *Dialog::addCheckbox(GuiObject *boss, int x, int y, const Common:
return new CheckboxWidget(boss, x, y, w, h, label, cmd, hotkey, ws);
}
+SliderWidget *Dialog::addSlider(int x, int y, uint32 cmd, WidgetSize ws) {
+ return addSlider(this, x, y, cmd, ws);
+}
+
+SliderWidget *Dialog::addSlider(GuiObject *boss, int x, int y, uint32 cmd, WidgetSize ws) {
+ int w, h;
+
+ if (ws == kBigWidgetSize) {
+ w = kBigSliderWidth;
+ h = kBigSliderHeight;
+ } else {
+ w = kSliderWidth;
+ h = kSliderHeight;
+ }
+
+ return new SliderWidget(boss, x, y, w, h, cmd);
+}
+
uint32 GuiObject::getMillis() {
return g_system->getMillis();
}
diff --git a/gui/dialog.h b/gui/dialog.h
index 77e372144a..e4bd5238bd 100644
--- a/gui/dialog.h
+++ b/gui/dialog.h
@@ -93,6 +93,9 @@ protected:
CheckboxWidget *addCheckbox(GuiObject *boss, int x, int y, const Common::String &label, uint32 cmd, char hotkey, WidgetSize ws = kDefaultWidgetSize);
CheckboxWidget *addCheckbox(int x, int y, const Common::String &label, uint32 cmd, char hotkey, WidgetSize ws = kDefaultWidgetSize);
+ SliderWidget *addSlider(GuiObject *boss, int x, int y, uint32 cmd, WidgetSize ws = kDefaultWidgetSize);
+ SliderWidget *addSlider(int x, int y, uint32 cmd, WidgetSize ws = kDefaultWidgetSize);
+
void setResult(int result) { _result = result; }
int getResult() const { return _result; }
};
diff --git a/gui/options.cpp b/gui/options.cpp
index 8eae066528..257ec54a67 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -407,25 +407,28 @@ int OptionsDialog::addMIDIControls(GuiObject *boss, int yoffset, WidgetSize ws)
int OptionsDialog::addVolumeControls(GuiObject *boss, int yoffset, WidgetSize ws) {
// Volume controllers
new StaticTextWidget(boss, 5, yoffset + 2, 100, kLineHeight, "Music volume: ", kTextAlignRight, ws);
- _musicVolumeSlider = new SliderWidget(boss, 105, yoffset, 85, 12, kMusicVolumeChanged);
- _musicVolumeLabel = new StaticTextWidget(boss, 200, yoffset + 2, 24, kLineHeight, "100%", kTextAlignLeft, ws);
- _musicVolumeSlider->setMinValue(0); _musicVolumeSlider->setMaxValue(Audio::Mixer::kMaxMixerVolume);
+ _musicVolumeSlider = addSlider(boss, 105, yoffset, kMusicVolumeChanged, ws);
+ _musicVolumeLabel = new StaticTextWidget(boss, 105 + _musicVolumeSlider->getWidth() + 10, yoffset + 2, 24, kLineHeight, "100%", kTextAlignLeft, ws);
+ _musicVolumeSlider->setMinValue(0);
+ _musicVolumeSlider->setMaxValue(Audio::Mixer::kMaxMixerVolume);
_musicVolumeLabel->setFlags(WIDGET_CLEARBG);
- yoffset += 16;
+ yoffset += _musicVolumeSlider->getHeight() + 4;
new StaticTextWidget(boss, 5, yoffset + 2, 100, kLineHeight, "SFX volume: ", kTextAlignRight, ws);
- _sfxVolumeSlider = new SliderWidget(boss, 105, yoffset, 85, 12, kSfxVolumeChanged);
- _sfxVolumeLabel = new StaticTextWidget(boss, 200, yoffset + 2, 24, kLineHeight, "100%", kTextAlignLeft, ws);
- _sfxVolumeSlider->setMinValue(0); _sfxVolumeSlider->setMaxValue(Audio::Mixer::kMaxMixerVolume);
+ _sfxVolumeSlider = addSlider(boss, 105, yoffset, kSfxVolumeChanged, ws);
+ _sfxVolumeLabel = new StaticTextWidget(boss, 105 + _musicVolumeSlider->getWidth() + 10, yoffset + 2, 24, kLineHeight, "100%", kTextAlignLeft, ws);
+ _sfxVolumeSlider->setMinValue(0);
+ _sfxVolumeSlider->setMaxValue(Audio::Mixer::kMaxMixerVolume);
_sfxVolumeLabel->setFlags(WIDGET_CLEARBG);
- yoffset += 16;
+ yoffset += _sfxVolumeSlider->getHeight() + 4;
new StaticTextWidget(boss, 5, yoffset + 2, 100, kLineHeight, "Speech volume: ", kTextAlignRight, ws);
- _speechVolumeSlider = new SliderWidget(boss, 105, yoffset, 85, 12, kSpeechVolumeChanged);
- _speechVolumeLabel = new StaticTextWidget(boss, 200, yoffset + 2, 24, kLineHeight, "100%", kTextAlignLeft, ws);
- _speechVolumeSlider->setMinValue(0); _speechVolumeSlider->setMaxValue(Audio::Mixer::kMaxMixerVolume);
+ _speechVolumeSlider = addSlider(boss, 105, yoffset, kSpeechVolumeChanged, ws);
+ _speechVolumeLabel = new StaticTextWidget(boss, 105 + _musicVolumeSlider->getWidth() + 10, yoffset + 2, 24, kLineHeight, "100%", kTextAlignLeft, ws);
+ _speechVolumeSlider->setMinValue(0);
+ _speechVolumeSlider->setMaxValue(Audio::Mixer::kMaxMixerVolume);
_speechVolumeLabel->setFlags(WIDGET_CLEARBG);
- yoffset += 16;
+ yoffset += _speechVolumeSlider->getHeight() + 4;
_enableVolumeSettings = true;
diff --git a/gui/widget.cpp b/gui/widget.cpp
index 8426f1577f..f91c2154bb 100644
--- a/gui/widget.cpp
+++ b/gui/widget.cpp
@@ -238,8 +238,7 @@ void CheckboxWidget::drawWidget(bool hilite) {
SliderWidget::SliderWidget(GuiObject *boss, int x, int y, int w, int h, uint32 cmd)
: Widget(boss, x, y, w, h), CommandSender(boss),
- _cmd(cmd), _value(0), _oldValue(0), _valueMin(0), _valueMax(100), _isDragging(false)
- {
+ _cmd(cmd), _value(0), _oldValue(0), _valueMin(0), _valueMax(100), _isDragging(false) {
_flags = WIDGET_ENABLED | WIDGET_TRACK_MOUSE | WIDGET_CLEARBG;
_type = kSliderWidget;
}
diff --git a/gui/widget.h b/gui/widget.h
index eaf7e33b9d..c1c9459a21 100644
--- a/gui/widget.h
+++ b/gui/widget.h
@@ -74,9 +74,13 @@ enum WidgetSize {
enum {
kButtonWidth = 72,
kButtonHeight = 16,
-
+ kSliderWidth = 85,
+ kSliderHeight = 12,
+
kBigButtonWidth = 108,
- kBigButtonHeight = 24
+ kBigButtonHeight = 24,
+ kBigSliderWidth = 128,
+ kBigSliderHeight = 18
};