From 920345b940bb3993c389d9e9be1a75a8041d431d Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 24 Apr 2024 16:06:10 +1000 Subject: Support getting a tree of controls + hooks via lua --- src/input/include/input_hook.hpp | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'src/input/include/input_hook.hpp') diff --git a/src/input/include/input_hook.hpp b/src/input/include/input_hook.hpp index 96b9b5cd..81eb80d9 100644 --- a/src/input/include/input_hook.hpp +++ b/src/input/include/input_hook.hpp @@ -8,35 +8,53 @@ #include #include +#include #include "hal/lv_hal_indev.h" +#include "lua.hpp" + #include "input_trigger.hpp" namespace input { -using HookCb = std::optional>; +struct HookCallback { + std::string name; + std::function fn; +}; class Hook { public: - Hook(HookCb); + Hook(std::string name, std::optional cb); auto invoke(lv_indev_data_t*) -> void; - auto override(HookCb) -> void; + auto override(std::optional) -> void; + + auto name() const -> const std::string& { return name_; } + auto callback() -> std::optional; private: - HookCb default_; - HookCb override_; + std::string name_; + std::optional default_; + std::optional override_; }; class TriggerHooks { public: - TriggerHooks(HookCb cb) : TriggerHooks(cb, cb, cb) {} - TriggerHooks(HookCb, HookCb, HookCb); + TriggerHooks(std::string name, std::optional cb) + : TriggerHooks(name, cb, cb, cb) {} + TriggerHooks(std::string name, + std::optional click, + std::optional long_press, + std::optional repeat); auto update(bool, lv_indev_data_t*) -> void; - auto override(Trigger::State, HookCb) -> void; + auto override(Trigger::State, std::optional) -> void; + + auto name() const -> const std::string&; + auto pushHooks(lua_State*) -> void; private: + std::string name_; Trigger trigger_; Hook click_; -- cgit v1.2.3