From 7a6dd2afac04fb31d2fafcca5ffc3183ed075fbb Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Wed, 15 Feb 2023 17:19:33 +0100 Subject: [PATCH] Added changeable icons --- src/menuitem.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/menuitem.h b/src/menuitem.h index e0f0fed..49f502e 100644 --- a/src/menuitem.h +++ b/src/menuitem.h @@ -41,6 +41,38 @@ public: virtual const Icon *selectedIcon() const override { return T; } }; +template +class ChangeableSelectableIcon : public virtual SelectableIconInterface +{ +public: + virtual const Icon *icon(bool selected) const override { return selected ? m_selectedIcon : m_icon; } + + void setIcon(const Icon *icon, const Icon *selectedIcon) + { + m_icon = icon; + m_selectedIcon = selectedIcon; + } + + void setIcon(const Icon *icon) { m_icon = icon; } + void setSelectedIcon(const Icon *selectedIcon) { m_selectedIcon = selectedIcon; } + +private: + const Icon *m_icon = nullptr; + const Icon *m_selectedIcon = nullptr; +}; + +template +class ChangeableSelectedIcon : public virtual SelectedIconInterface +{ +public: + virtual const Icon *selectedIcon() const override { return m_selectedIcon; } + + void setSelectedIcon(const Icon *selectedIcon) { m_selectedIcon = selectedIcon; } + +private: + const Icon *m_selectedIcon = nullptr; +}; + using MenuItemIconInterface = SelectableIconInterface<24, 24>; using MenuItemSelectedIconInterface = SelectedIconInterface<24, 24>; @@ -51,6 +83,10 @@ using StaticMenuItemIcon = StaticSelectableIcon<24, 24, T, Tselected>; template using StaticMenuItemSelectedIcon = StaticSelectedIcon<24, 24, T>; +using ChangeableMenuItemIcon = ChangeableSelectableIcon<24, 24>; + +using ChangeableMenuItemSelectedIcon = ChangeableSelectedIcon<24, 24>; + class MenuItem : public virtual ActionInterface, public virtual TextInterface,