diff options
author | Max Horn | 2005-03-06 18:00:54 +0000 |
---|---|---|
committer | Max Horn | 2005-03-06 18:00:54 +0000 |
commit | a0d5debc7a8f4b24b6888de668d18fa8e0aedab9 (patch) | |
tree | 376f92d6891a17f33b9bc1208b8e881bec97c669 /scumm/dialogs.cpp | |
parent | e55d31ba39cab6384bfae0cac12ab4e9013a0b06 (diff) | |
download | scummvm-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.cpp | 54 |
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__ |