diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/dialog.cpp | 2 | ||||
-rw-r--r-- | gui/dialog.h | 12 | ||||
-rw-r--r-- | gui/widget.cpp | 19 | ||||
-rw-r--r-- | gui/widget.h | 5 |
4 files changed, 30 insertions, 8 deletions
diff --git a/gui/dialog.cpp b/gui/dialog.cpp index 2131f21983..9031e0e210 100644 --- a/gui/dialog.cpp +++ b/gui/dialog.cpp @@ -29,7 +29,7 @@ void Dialog::draw() { Widget *w = _firstWidget; - _gui->clearArea(_x, _y, _w, _h); + _gui->fillArea(_x, _y, _w, _h, _gui->_bgcolor); _gui->box(_x, _y, _w, _h); _gui->setAreaDirty(_x, _y, _w, _h); diff --git a/gui/dialog.h b/gui/dialog.h index 9473ebf690..f91bc681a6 100644 --- a/gui/dialog.h +++ b/gui/dialog.h @@ -43,6 +43,7 @@ protected: int16 _x, _y; uint16 _w, _h; Widget *_mouseWidget; + public: Dialog(NewGui *gui, int x, int y, int w, int h) : _gui(gui), _firstWidget(0), _x(x), _y(y), _w(w), _h(h), _mouseWidget(0) @@ -66,6 +67,7 @@ protected: void addButton(int x, int y, int w, int h, const char *label, uint32 cmd, char hotkey); }; + class SaveLoadDialog : public Dialog { public: SaveLoadDialog(NewGui *gui); @@ -73,7 +75,17 @@ public: virtual void handleCommand(uint32 cmd); }; + +class SoundDialog; +class KeysDialog; +class MiscDialog; + class OptionsDialog : public Dialog { +protected: + SoundDialog *_soundDialog; + KeysDialog *_keysDialog; + MiscDialog *_miscDialog; + public: OptionsDialog(NewGui *gui); diff --git a/gui/widget.cpp b/gui/widget.cpp index dc65a1422a..510eb8428b 100644 --- a/gui/widget.cpp +++ b/gui/widget.cpp @@ -45,7 +45,7 @@ void Widget::draw() // Clear background if (_flags & WIDGET_CLEARBG) - gui->clearArea(_x, _y, _w, _h); + gui->fillArea(_x, _y, _w, _h, gui->_bgcolor); // Draw border if (_flags & WIDGET_BORDER) { @@ -148,15 +148,16 @@ void CheckboxWidget::drawWidget(bool hilite) if (_state) gui->drawBitmap(checked_img, _x + 3, _y + 3, gui->_textcolor); else - gui->clearArea(_x + 3, _y + 3, 8, 8); + gui->fillArea(_x + 3, _y + 3, 8, 8, gui->_bgcolor); // Finally draw the label gui->drawString(_text, _x + 20, _y + 3, _w, gui->_textcolor); } #pragma mark - + SliderWidget::SliderWidget(Dialog *boss, int x, int y, int w, int h, const char *label, uint32 cmd, uint8 hotkey) - : ButtonWidget(boss, x, y, w, h, label, cmd, hotkey) + : ButtonWidget(boss, x, y, w, h, label, cmd, hotkey), _value(0), _old_value(1) { _flags = WIDGET_ENABLED | WIDGET_TRACK_MOUSE; _type = kSliderWidget; @@ -168,9 +169,15 @@ void SliderWidget::drawWidget(bool hilite) // Draw the box gui->box(_x, _y, _w, _h); + + // Remove old 'bar' if necessary + if (_value != _old_value) { + gui->fillArea(_x + 2 + ((_w - 5) * _old_value / 100), _y + 2, 2, _h - 4, gui->_bgcolor); + _old_value = _value; + } // Draw the 'bar' - gui->line(_x + 2 + ((_w - 5)* _value / 100), _y + 2, _x + 2 + ((_w - 5)* _value / 100), _y + _h - 3, hilite ? gui->_textcolorhi : gui->_textcolor); + gui->fillArea(_x + 2 + ((_w - 5) * _value / 100), _y + 2, 2, _h - 4, hilite ? gui->_textcolorhi : gui->_textcolor); } void SliderWidget::handleMouseMoved(int x, int y, int state) { @@ -179,7 +186,7 @@ void SliderWidget::handleMouseMoved(int x, int y, int state) { if (newvalue != _value) { _value = newvalue; - setFlags(WIDGET_CLEARBG); draw(); clearFlags(WIDGET_CLEARBG); + draw(); } } -}
\ No newline at end of file +} diff --git a/gui/widget.h b/gui/widget.h index b89d0b00bc..651b86a12d 100644 --- a/gui/widget.h +++ b/gui/widget.h @@ -122,9 +122,12 @@ protected: /* SliderWidget */ class SliderWidget : public ButtonWidget { protected: - int _value; + uint8 _value, _old_value; 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() { return _value; } + void handleMouseMoved(int x, int y, int button); protected: |