A single row in a List with start, content and end slots.
More...
#include <Malena/Graphics/Controls/ListItem.h>
Public Types | |
| using | Flag = ListItemManifest::Flag |
| using | State = ListItemManifest::State |
Public Member Functions | |
| ListItem (const sf::Font &font=FontManager<>::getDefault()) | |
| ListItemTheme & | applyFrom (const Theme &t) override |
Populate all fields from the global Theme token set. | |
| template<typename S> | |
| void | applySettings (const S &s) |
| template<typename St> | |
| void | applyStyle (const St &s) |
| template<typename T> | |
| void | applyTheme (const T &t) |
| sf::Color | getBgDisabled () const |
| sf::Color | getBgHover () const |
| sf::Color | getBgIdle () const |
| std::string | getDescription () const |
| sf::Color | getDisabledColor () const |
| sf::Color | getDisabledTextColor () const |
| sf::Color | getDividerColor () const |
| float | getDividerThickness () const |
| sf::Color | getErrorColor () const |
| sf::Color | getFillColor () const |
| sf::Color | getFocusColor () const |
| const sf::Font * | getFont () const |
| unsigned int | getFontSize () const |
| unsigned int | getFontSizeSmall () const |
| sf::FloatRect | getGlobalBounds () const override |
| sf::Color | getHoverColor () const |
| std::string | getLabel () const |
| sf::Color | getMutedColor () const |
| sf::Color | getOutlineColor () const |
| float | getOutlineThickness () const |
| float | getPadding () const |
| sf::Vector2f | getPosition () const override |
| float | getRadius () const |
| float | getRowHeight () const |
| float | getSlotGap () const |
| sf::Color | getTextColor () const |
| float | getWidth () const |
| bool | isEnabled () const |
| bool | isSettingsLocked () const |
Return true if applySettings() is currently blocked. | |
| bool | isThemeLocked () const |
Return true if this component ignores theme changes. | |
| void | lockSettings () |
Prevent applySettings() from taking effect. | |
| void | lockTheme () |
| Prevent automatic re-styling when the global theme changes. | |
| void | onClick (std::function< void()> callback) |
| Register a callback fired when the row is clicked. | |
| void | setBgDisabled (const sf::Color &c) |
| void | setBgHover (const sf::Color &c) |
| void | setBgIdle (const sf::Color &c) |
| void | setContent (ml::Core &component) |
| Replace the built-in label/description with a custom component. | |
| void | setDescription (const std::string &text) |
| Set an optional secondary description line below the label. Pass an empty string to remove. | |
| void | setDisabledColor (const sf::Color &c) |
| void | setDisabledTextColor (const sf::Color &c) |
| void | setDividerColor (const sf::Color &c) |
| void | setDividerThickness (float t) |
| void | setEnabled (bool enabled) |
| void | setEnd (ml::Core &component) |
| Assign a component to the end (right) slot. | |
| void | setErrorColor (const sf::Color &c) |
| void | setFillColor (const sf::Color &c) |
| void | setFocusColor (const sf::Color &c) |
| void | setFont (const sf::Font &&)=delete |
| void | setFont (const sf::Font &f) |
| void | setFontSize (unsigned int s) |
| void | setFontSizeSmall (unsigned int s) |
| void | setHoverColor (const sf::Color &c) |
| void | setLabel (const std::string &text) |
| Set the primary label text. | |
| void | setMutedColor (const sf::Color &c) |
| void | setOutlineColor (const sf::Color &c) |
| void | setOutlineThickness (float t) |
| void | setPadding (float p) |
| void | setPosition (const sf::Vector2f &position) override |
| void | setRadius (float r) |
| void | setRowHeight (float h) |
| void | setSlotGap (float g) |
| void | setStart (ml::Core &component) |
| Assign a component to the start (left) slot. | |
| void | setTextColor (const sf::Color &c) |
| void | setWidth (float width) |
Set the total row width. Called automatically by List when the item is added. | |
| void | unlockSettings () |
Allow applySettings() to take effect again. | |
| void | unlockTheme () |
| Resume reacting to global theme changes. | |
Public Attributes | |
| sf::Color | bgDisabled = sf::Color::Transparent |
| sf::Color | bgHover = sf::Color(255, 255, 255, 18) |
| sf::Color | bgIdle = sf::Color::Transparent |
| sf::Color | disabledColor = sf::Color(60, 60, 60) |
| sf::Color | disabledTextColor = sf::Color(120, 120, 120) |
| sf::Color | dividerColor = sf::Color(80, 80, 80) |
| float | dividerThickness = 1.f |
| sf::Color | errorColor = sf::Color(220, 70, 70) |
| sf::Color | fillColor = sf::Color(40, 40, 40) |
| sf::Color | focusColor = sf::Color(100, 60, 200) |
| const sf::Font * | font = &FontManager<>::getDefault() |
| unsigned int | fontSize = 14 |
| unsigned int | fontSizeSmall = 11 |
| sf::Color | hoverColor = sf::Color(70, 130, 230) |
| sf::Color | mutedColor = sf::Color(120, 120, 120) |
| sf::Color | outlineColor = sf::Color(100, 100, 100) |
| float | outlineThickness = 1.5f |
| float | padding = 8.f |
| float | radius = 8.f |
| float | rowHeight = 0.f |
| 0 = auto-sized from content | |
| float | slotGap = 8.f |
| Pixel gap between start / content / end slots. | |
| sf::Color | textColor = sf::Color::White |
Protected Member Functions | |
| void | draw (sf::RenderTarget &target, sf::RenderStates states) const override |
| void | onThemeApplied (const Theme &theme) override |
Called by ThemeManager when the active theme changes. | |
A single row in a List with start, content and end slots.
Inspired by Ionic Framework's ion-item — each row has three optional slots that accept any ml::Core component:
| Slot | Typical use |
|---|---|
| start | Icon, avatar, Checkbox, Radio |
| content | Label + description (built-in) or any Core |
| end | Toggle, RectangleButton, badge |
Slot components are not owned by ListItem — the caller is responsible for their lifetime. Do NOT call addComponent on them separately; List handles drawing.
Definition at line 77 of file ListItem.h.
Definition at line 83 of file ListItem.h.
Definition at line 84 of file ListItem.h.
|
explicit |
|
inlineoverridevirtualinherited |
Populate all fields from the global Theme token set.
Subclasses call GraphicTheme::applyFrom(t) first, then apply their own token mappings.
Reimplemented from ml::ControlTheme.
Definition at line 36 of file ListItemTheme.h.
|
inline |
Definition at line 121 of file ListItem.h.
|
inline |
Definition at line 140 of file ListItem.h.
|
inline |
Definition at line 130 of file ListItem.h.
|
overrideprotected |
|
inlinenodiscardinherited |
Definition at line 62 of file ListItemTheme.h.
|
inlinenodiscardinherited |
Definition at line 61 of file ListItemTheme.h.
|
inlinenodiscardinherited |
Definition at line 60 of file ListItemTheme.h.
|
nodiscard |
|
inlinenodiscardinherited |
Definition at line 75 of file ControlTheme.h.
|
inlinenodiscardinherited |
Definition at line 76 of file ControlTheme.h.
|
inlinenodiscardinherited |
Definition at line 63 of file ListItemTheme.h.
|
inlinenodiscardinherited |
Definition at line 64 of file ListItemTheme.h.
|
inlinenodiscardinherited |
Definition at line 74 of file ControlTheme.h.
|
inlinenodiscardinherited |
Definition at line 67 of file GraphicTheme.h.
|
inlinenodiscardinherited |
Definition at line 73 of file ControlTheme.h.
|
inlinenodiscardinherited |
Definition at line 80 of file ControlTheme.h.
|
inlinenodiscardinherited |
Definition at line 81 of file ControlTheme.h.
|
inlinenodiscardinherited |
Definition at line 82 of file ControlTheme.h.
|
override |
|
inlinenodiscardinherited |
Definition at line 72 of file ControlTheme.h.
|
nodiscard |
|
inlinenodiscardinherited |
Definition at line 78 of file ControlTheme.h.
|
inlinenodiscardinherited |
Definition at line 68 of file GraphicTheme.h.
|
inlinenodiscardinherited |
Definition at line 69 of file GraphicTheme.h.
|
inlinenodiscardinherited |
Definition at line 79 of file ControlTheme.h.
|
override |
|
inlinenodiscardinherited |
Definition at line 70 of file GraphicTheme.h.
|
inlinenodiscardinherited |
Definition at line 39 of file ListItemSettings.h.
|
inlinenodiscardinherited |
Definition at line 40 of file ListItemSettings.h.
|
inlinenodiscardinherited |
Definition at line 77 of file ControlTheme.h.
|
inlinenodiscard |
Definition at line 207 of file ListItem.h.
|
nodiscard |
|
inlinenodiscardinherited |
Return true if applySettings() is currently blocked.
Definition at line 115 of file Themeable.h.
|
inlinenodiscardinherited |
Return true if this component ignores theme changes.
Definition at line 97 of file Themeable.h.
|
inlineinherited |
Prevent applySettings() from taking effect.
Explicit individual setter calls still work normally. Only blocks the batch applySettings() path.
Definition at line 107 of file Themeable.h.
|
inlineinherited |
Prevent automatic re-styling when the global theme changes.
The component keeps its current visual state. Explicit individual setter calls still work normally.
Definition at line 85 of file Themeable.h.
| void ml::ListItem::onClick | ( | std::function< void()> | callback | ) |
Register a callback fired when the row is clicked.
|
overrideprotectedvirtual |
Called by ThemeManager when the active theme changes.
Override in your component to re-style from the new theme. Always check isThemeLocked() first:
| theme | The newly active theme. |
Implements ml::Themeable.
|
inlineinherited |
Definition at line 68 of file ListItemTheme.h.
|
inlineinherited |
Definition at line 67 of file ListItemTheme.h.
|
inlineinherited |
Definition at line 66 of file ListItemTheme.h.
| void ml::ListItem::setContent | ( | ml::Core & | component | ) |
Replace the built-in label/description with a custom component.
When set, setLabel and setDescription have no visual effect. The component is not owned — do not addComponent it separately.
| void ml::ListItem::setDescription | ( | const std::string & | text | ) |
Set an optional secondary description line below the label. Pass an empty string to remove.
|
inlineinherited |
Definition at line 87 of file ControlTheme.h.
|
inlineinherited |
Definition at line 88 of file ControlTheme.h.
|
inlineinherited |
Definition at line 69 of file ListItemTheme.h.
|
inlineinherited |
Definition at line 70 of file ListItemTheme.h.
| void ml::ListItem::setEnabled | ( | bool | enabled | ) |
| void ml::ListItem::setEnd | ( | ml::Core & | component | ) |
Assign a component to the end (right) slot.
Typical use: PillToggle, RectangleButton, badge. The component is not owned — do not addComponent it separately.
|
inlineinherited |
Definition at line 86 of file ControlTheme.h.
|
inlineinherited |
Definition at line 72 of file GraphicTheme.h.
|
inlineinherited |
Definition at line 85 of file ControlTheme.h.
|
deleteinherited |
|
inlineinherited |
Definition at line 92 of file ControlTheme.h.
|
inlineinherited |
Definition at line 94 of file ControlTheme.h.
|
inlineinherited |
Definition at line 95 of file ControlTheme.h.
|
inlineinherited |
Definition at line 84 of file ControlTheme.h.
| void ml::ListItem::setLabel | ( | const std::string & | text | ) |
Set the primary label text.
|
inlineinherited |
Definition at line 90 of file ControlTheme.h.
|
inlineinherited |
Definition at line 73 of file GraphicTheme.h.
|
inlineinherited |
Definition at line 74 of file GraphicTheme.h.
|
inlineinherited |
Definition at line 91 of file ControlTheme.h.
|
override |
|
inlineinherited |
Definition at line 75 of file GraphicTheme.h.
|
inlineinherited |
Definition at line 42 of file ListItemSettings.h.
|
inlineinherited |
Definition at line 43 of file ListItemSettings.h.
| void ml::ListItem::setStart | ( | ml::Core & | component | ) |
Assign a component to the start (left) slot.
Typical use: icon, Checkbox, RadioButton, avatar. The component is not owned — do not addComponent it separately.
|
inlineinherited |
Definition at line 89 of file ControlTheme.h.
| void ml::ListItem::setWidth | ( | float | width | ) |
Set the total row width. Called automatically by List when the item is added.
|
inlineinherited |
Allow applySettings() to take effect again.
Definition at line 112 of file Themeable.h.
|
inlineinherited |
Resume reacting to global theme changes.
Does NOT immediately re-apply the current theme — call ThemeManager::get() and pass it to onThemeApplied() manually if you want to re-sync immediately after unlocking.
Definition at line 94 of file Themeable.h.
|
inherited |
Definition at line 30 of file ListItemTheme.h.
Definition at line 29 of file ListItemTheme.h.
|
inherited |
Definition at line 28 of file ListItemTheme.h.
Definition at line 33 of file ControlTheme.h.
Definition at line 34 of file ControlTheme.h.
Definition at line 31 of file ListItemTheme.h.
|
inherited |
Definition at line 32 of file ListItemTheme.h.
Definition at line 32 of file ControlTheme.h.
Definition at line 43 of file GraphicTheme.h.
Definition at line 31 of file ControlTheme.h.
|
inherited |
Definition at line 39 of file ControlTheme.h.
|
inherited |
Definition at line 40 of file ControlTheme.h.
|
inherited |
Definition at line 41 of file ControlTheme.h.
Definition at line 30 of file ControlTheme.h.
Definition at line 36 of file ControlTheme.h.
Definition at line 44 of file GraphicTheme.h.
|
inherited |
Definition at line 45 of file GraphicTheme.h.
|
inherited |
Definition at line 37 of file ControlTheme.h.
|
inherited |
Definition at line 46 of file GraphicTheme.h.
|
inherited |
0 = auto-sized from content
Definition at line 26 of file ListItemSettings.h.
|
inherited |
Pixel gap between start / content / end slots.
Definition at line 27 of file ListItemSettings.h.
|
inherited |
Definition at line 35 of file ControlTheme.h.