LSH-Core
A robust C++ framework for Arduino-based home automation nodes
Loading...
Searching...
No Matches
clickable_manager.hpp
Go to the documentation of this file.
1
21#ifndef LSHCORE_DEVICE_CLICKABLE_MANAGER_HPP
22#define LSHCORE_DEVICE_CLICKABLE_MANAGER_HPP
23
24#include <etl/array.h>
25#include <etl/map.h>
26#include <stdint.h>
27
30
31class Clickable;
32
37namespace Clickables
38{
39 extern uint8_t totalClickables;
40 extern etl::array<Clickable *, CONFIG_MAX_CLICKABLES> clickables;
41 extern etl::map<uint8_t, uint8_t, CONFIG_MAX_CLICKABLES> clickablesMap;
42
43 void addClickable(Clickable *clickable); // Add one clickable to clickables vector and activate it
44 [[nodiscard]] auto getClickable(uint8_t clickableId) -> Clickable *; // Returns a single clickable
45 [[nodiscard]] auto getIndex(uint8_t clickableId) -> uint8_t; // Returns a single clickable index
46 [[nodiscard]] auto clickableExists(uint8_t clickableId) -> bool; // Returns true if clickable exists
47 [[nodiscard]] auto click(const Clickable *clickable, constants::ClickType clickType) -> bool; // Method for all types of clicks, since not all click can be done within clickable class
48 [[nodiscard]] auto click(uint8_t clickableIndex, constants::ClickType clickType) -> bool; // Alternative method for all types of click
49 void finalizeSetup(); // Resize vectors of all clickables to the actual needed size
50} // namespace Clickables
51
52#endif // LSHCORE_DEVICE_CLICKABLE_MANAGER_HPP
A class that represents a clickable object, like a button, and its associated logic.
Definition clickable.hpp:37
Defines enums for various click types and fallback behaviors.
Forward declaration.
Definition clickable_manager.cpp:33
uint8_t totalClickables
Device real total Clickables.
Definition clickable_manager.cpp:34
void finalizeSetup()
Resize vectors of all clickables to the actual needed size.
Definition clickable_manager.cpp:159
void addClickable(Clickable *const clickable)
Adds a clickable to the system.
Definition clickable_manager.cpp:46
etl::array< Clickable *, CONFIG_MAX_CLICKABLES > clickables
Device clickables.
Definition clickable_manager.cpp:35
auto clickableExists(uint8_t clickableId) -> bool
Get if the clickable actually exists.
Definition clickable_manager.cpp:101
etl::map< uint8_t, uint8_t, CONFIG_MAX_CLICKABLES > clickablesMap
Device clickables map (UUID -> clickables index)
Definition clickable_manager.cpp:36
auto getClickable(uint8_t clickableId) -> Clickable *
Get a single clickable.
Definition clickable_manager.cpp:78
auto getIndex(uint8_t clickableId) -> uint8_t
Get a single clickable index (in device vector of clickable).
Definition clickable_manager.cpp:89
auto click(const Clickable *const clickable, constants::ClickType clickType) -> bool
Perform a click.
Definition clickable_manager.cpp:116
ClickType
Clickable (like button) click types.
Definition clicktypes.hpp:36
Internal bridge that imports user-defined macros into the library's scope.