aboutsummaryrefslogtreecommitdiff
path: root/scumm/dialogs.cpp
diff options
context:
space:
mode:
authorMax Horn2005-03-06 18:00:54 +0000
committerMax Horn2005-03-06 18:00:54 +0000
commita0d5debc7a8f4b24b6888de668d18fa8e0aedab9 (patch)
tree376f92d6891a17f33b9bc1208b8e881bec97c669 /scumm/dialogs.cpp
parente55d31ba39cab6384bfae0cac12ab4e9013a0b06 (diff)
downloadscummvm-rg350-a0d5debc7a8f4b24b6888de668d18fa8e0aedab9.tar.gz
scummvm-rg350-a0d5debc7a8f4b24b6888de668d18fa8e0aedab9.tar.bz2
scummvm-rg350-a0d5debc7a8f4b24b6888de668d18fa8e0aedab9.zip
Added dialogs which are shown when you modify the talkspeed or music volume using hotkeys (FR #1153300)
svn-id: r17009
Diffstat (limited to 'scumm/dialogs.cpp')
-rw-r--r--scumm/dialogs.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/scumm/dialogs.cpp b/scumm/dialogs.cpp
index 6ef9a7de00..daa4d87044 100644
--- a/scumm/dialogs.cpp
+++ b/scumm/dialogs.cpp
@@ -598,6 +598,60 @@ void ConfirmDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
ScummDialog::handleKeyDown(ascii, keycode, modifiers);
}
+#pragma mark -
+
+ValueDisplayDialog::ValueDisplayDialog(const Common::String& label, int minVal, int maxVal, int val, uint16 incKey, uint16 decKey)
+ : GUI::Dialog(0, 80, 0, 16), _label(label), _min(minVal), _max(maxVal), _value(val), _incKey(incKey), _decKey(decKey) {
+ assert(_min <= _value && _value <= _max);
+
+ int width = g_gui.getStringWidth(label) + 16 + kPercentBarWidth;
+
+ _x = (320 - width) / 2;
+ _w = width;
+ setResult(_value);
+
+ _timer = getMillis() + kDisplayDelay;
+}
+
+void ValueDisplayDialog::drawDialog() {
+ g_gui.blendRect(_x, _y, _w, _h, g_gui._bgcolor);
+ g_gui.box(_x, _y, _w, _h, g_gui._color, g_gui._shadowcolor);
+
+ const int labelWidth = _w - 8 - kPercentBarWidth;
+
+ // Draw the label
+ g_gui.drawString(_label, _x + 4, _y + 4, labelWidth, g_gui._textcolor);
+
+ // Draw the percentage bar
+ g_gui.fillRect(_x + 4 + labelWidth, _y + 4, kPercentBarWidth * (_value - _min) / (_max - _min), 8, g_gui._textcolorhi);
+ g_gui.frameRect(_x + 4 + labelWidth, _y + 4, kPercentBarWidth, 8, g_gui._textcolor);
+
+ // Flag the draw area as dirty
+ g_gui.addDirtyRect(_x, _y, _w, _h);
+}
+
+void ValueDisplayDialog::handleTickle() {
+ if (getMillis() > _timer)
+ close();
+}
+
+void ValueDisplayDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
+ if (ascii == _incKey || ascii == _decKey) {
+ if (ascii == _incKey && _value < _max)
+ _value++;
+ else if (ascii == _decKey && _value > _min)
+ _value--;
+
+ setResult(_value);
+ _timer = getMillis() + kDisplayDelay;
+ draw();
+ } else {
+ close();
+ }
+}
+
+
+
} // End of namespace Scumm
#ifdef __PALM_OS__