The common interface for a widget that contains multiple children. More...
#include <multi_child_widget.hpp>
Public Member Functions | |
| MultiChildWidget (const Position &pos={0, 0}, const Alignment &align={ALIGN_LEFT, ALIGN_TOP}, const Padding &padding={0}) | |
| Constructor. | |
| ~MultiChildWidget () override | |
| Destructor. | |
| void | update (time_t time_ms) override |
| Update any internal state of the widget, and check if it needs to be re-rendered. | |
| void | render (bool force) const override |
| Recursively render this widget and any child widgets that need it. | |
| void | drawDone () override |
| Reset any state variables after rendering has finished. | |
| void | draw () const override |
| Render the widget to the screen. | |
| virtual void | push (Widget *const child) |
| Append a child widget to the end of the list. | |
| bool | handleEvent (Event &event) override |
| Handle events from the touchscreen. | |
| virtual void | drawBoundingBox (time_t time) const override |
| Render the bounding box of this and any child widgets. | |
| Widget * | getWidgetById (id_t id) noexcept override |
| Get the first widget (this or any children) that has the given ID. | |
Public Member Functions inherited from ui::Widget | |
| Widget (const Position &pos={0, 0}, const Alignment &align={ALIGN_LEFT, ALIGN_TOP}, const Padding &padding={0}) | |
| The default widget constructor. | |
| virtual | ~Widget () |
| The default widget destructor. | |
| virtual Size | size () const =0 |
| Get the size of the widget. | |
| virtual Bounds | bounds () const |
| Get the rendering bounds of this widget. | |
| void | setPosition (const Position &pos) |
| Set the position of this widget. | |
| Position | getPosition () const |
| Get the position of this widget. | |
| void | setAlign (const Alignment &align) |
| Set the alignment of this widget. | |
| void | requestRedraw () |
| Tell this widget that it needs to be re-rendered. | |
| void | requestParentRedraw () |
| Tell the parent widget that it needs to be re-rendered. | |
| bool | needsRedraw () const |
| Check if this widget has requested to be redrawn. | |
| void | setParent (Widget *parent) |
| Set the parent widget. | |
| Bounds | parentBounds () const |
| Get the bounds of the parent widget, if any. | |
| void | onpress (std::function< void(Widget &, const Event &)> callback) override |
| Register a touchscreen event handler that triggers on press. | |
| void | onblur (std::function< void(Widget &, const Event &)> callback) override |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| void | onhold (std::function< void(Widget &, const Event &, time_t)> callback) override |
| Register a touchscreen event handler that repeatedly triggers when the widget is held for a while. | |
| void | onrelease (std::function< void(Widget &, const Event &)> callback) override |
| Register a touchscreen event handler that triggers on release. | |
| void | click () |
| Manually trigger the onrelease event handler. | |
| void | press () |
| Manually trigger the onpress event handler. | |
| void | blur () |
| Manually trigger the onblur event handler. | |
| void | release () |
| Manually trigger the onrelease event handler. | |
| void | hold (time_t time) |
| Manually trigger the onhold event handler. | |
Public Member Functions inherited from ui::EventHandlers< Widget > | |
| void | onpress (std::function< void(Widget &)> callback) |
| Register a touchscreen event handler that triggers on press. | |
| void | onpress (std::function< void(const Event &)> callback) |
| Register a touchscreen event handler that triggers on press. | |
| void | onpress (std::function< void()> callback) |
| Register a touchscreen event handler that triggers on press. | |
| void | onrelease (std::function< void(Widget &)> callback) |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| void | onrelease (std::function< void(const Event &)> callback) |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| void | onrelease (std::function< void()> callback) |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| void | onblur (std::function< void(Widget &)> callback) |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| void | onblur (std::function< void(const Event &)> callback) |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| void | onblur (std::function< void()> callback) |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| void | onhold (std::function< void(Widget &, time_t)> callback) |
| Register a touchscreen event handler that repeatedly triggers when the widget is held for a while. | |
| void | onhold (std::function< void(const Event &, time_t)> callback) |
| Register a touchscreen event handler that repeatedly triggers when the widget is held for a while. | |
| void | onhold (std::function< void(time_t)> callback) |
| Register a touchscreen event handler that repeatedly triggers when the widget is held for a while. | |
| void | onhold (std::function< void(Widget &)> callback) |
| Register a touchscreen event handler that repeatedly triggers when the widget is held for a while. | |
| void | onhold (std::function< void(const Event &)> callback) |
| Register a touchscreen event handler that repeatedly triggers when the widget is held for a while. | |
| void | onhold (std::function< void()> callback) |
| Register a touchscreen event handler that repeatedly triggers when the widget is held for a while. | |
| void | onclick (std::function< void(Widget &)> callback) |
| Register a touchscreen event handler that triggers on release. | |
| void | onclick (std::function< void(const Event &)> callback) |
| Register a touchscreen event handler that triggers on release. | |
| void | onclick (std::function< void()> callback) |
| Register a touchscreen event handler that triggers on release. | |
Public Member Functions inherited from ui::CoreEventHandlers< T > | |
| virtual void | onpress (std::function< void(T &, const Event &)> callback)=0 |
| Register a touchscreen event handler that triggers on press. | |
| virtual void | onrelease (std::function< void(T &, const Event &)> callback)=0 |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| virtual void | onblur (std::function< void(T &, const Event &)> callback)=0 |
| Register a touchscreen event handler that triggers when the widget stops being pressed. | |
| virtual void | onhold (std::function< void(T &, const Event &, time_t)> callback)=0 |
| Register a touchscreen event handler that repeatedly triggers when the widget is held for a while. | |
| void | onclick (std::function< void(T &, const Event &)> callback) |
| Register a touchscreen event handler that triggers on release. | |
Protected Attributes | |
| std::vector< Widget * > | children |
| The child widgets. | |
Protected Attributes inherited from ui::Widget | |
| Padding | padding |
| The padding that will be applied to any child widgets. | |
| bool | redrawSelf |
| If true, force a redraw of this widget and any child widgets. | |
Additional Inherited Members | |
Public Attributes inherited from ui::Widget | |
| id_t | id |
| An optional (usually unique) identifier that can be used to search for this widget. | |
The common interface for a widget that contains multiple children.
| ui::MultiChildWidget::MultiChildWidget | ( | const Position & | pos = {0, 0}, |
| const Alignment & | align = {ALIGN_LEFT, ALIGN_TOP}, |
||
| const Padding & | padding = {0} |
||
| ) |
Constructor.
| pos | The position of this widget relative to its parent. |
| align | The alignment of this widget relative to its parent. |
| padding | The padding to apply to the child widget. |
|
override |
Destructor.
This automatically handles destroying the child widget when this widget is destroyed.
|
overridevirtual |
Render the widget to the screen.
This only gets called when widgets indicate that a redraw is needed of either themselves or their parents. Widgets that implement this method should only render graphics specific to this widget, not any children.
Implements ui::Widget.
|
overridevirtual |
Render the bounding box of this and any child widgets.
Reimplemented from ui::Widget.
|
overridevirtual |
Reset any state variables after rendering has finished.
Reimplemented from ui::Widget.
Get the first widget (this or any children) that has the given ID.
An ID is expected to be a unique, typically non-zero value. To generate an id, you can either call ui::id("some text"), or (for constant strings only), "some text"_id.
| id | The unique identifier of the widget. |
nullptr if not found. Reimplemented from ui::Widget.
|
overridevirtual |
Handle events from the touchscreen.
| event | The touch event info. |
Reimplemented from ui::Widget.
|
virtual |
Append a child widget to the end of the list.
| child | The new child widget. |
Reimplemented in ui::Column, and ui::Row.
|
overridevirtual |
Recursively render this widget and any child widgets that need it.
This member function does not directly draw graphics to the screen, instead it decides whether this widget will get redrawn based on its current state and that of any parents, and if needed, redraw it and any child widgets.
| force | Force this widget to redraw due to parents being redrawn. |
Reimplemented from ui::Widget.
|
overridevirtual |
Update any internal state of the widget, and check if it needs to be re-rendered.
| time | The current time in milliseconds. |
Reimplemented from ui::Widget.
Reimplemented in ui::Row.