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/input_hook_actions.cpp | 53 ++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 16 deletions(-) (limited to 'src/input/input_hook_actions.cpp') diff --git a/src/input/input_hook_actions.cpp b/src/input/input_hook_actions.cpp index 0694cccf..26075c4c 100644 --- a/src/input/input_hook_actions.cpp +++ b/src/input/input_hook_actions.cpp @@ -16,36 +16,57 @@ namespace input { namespace actions { -auto select(lv_indev_data_t* d) -> void { - d->state = LV_INDEV_STATE_PRESSED; +auto select() -> HookCallback { + return HookCallback{.name = "select", .fn = [&](lv_indev_data_t* d) { + d->state = LV_INDEV_STATE_PRESSED; + }}; } -auto scrollUp(lv_indev_data_t* d) -> void { - d->enc_diff = -1; +auto scrollUp() -> HookCallback { + return HookCallback{.name = "scroll_up", + .fn = [&](lv_indev_data_t* d) { d->enc_diff = -1; }}; } -auto scrollDown(lv_indev_data_t* d) -> void { - d->enc_diff = 1; +auto scrollDown() -> HookCallback { + return HookCallback{.name = "scroll_down", + .fn = [&](lv_indev_data_t* d) { d->enc_diff = 1; }}; } -auto scrollToTop(lv_indev_data_t* d) -> void { - d->enc_diff = INT16_MIN; +auto scrollToTop() -> HookCallback { + return HookCallback{.name = "scroll_to_top", .fn = [&](lv_indev_data_t* d) { + d->enc_diff = INT16_MIN; + }}; } -auto scrollToBottom(lv_indev_data_t* d) -> void { - d->enc_diff = INT16_MAX; +auto scrollToBottom() -> HookCallback { + return HookCallback{ + .name = "scroll_to_bottom", + .fn = [&](lv_indev_data_t* d) { d->enc_diff = INT16_MAX; }}; } -auto goBack(lv_indev_data_t* d) -> void { - events::Ui().Dispatch(ui::internal::BackPressed{}); +auto goBack() -> HookCallback { + return HookCallback{.name = "back", .fn = [&](lv_indev_data_t* d) { + events::Ui().Dispatch(ui::internal::BackPressed{}); + }}; } -auto volumeUp(lv_indev_data_t* d) -> void { - events::Audio().Dispatch(audio::StepUpVolume{}); +auto volumeUp() -> HookCallback { + return HookCallback{.name = "volume_up", .fn = [&](lv_indev_data_t* d) { + events::Audio().Dispatch(audio::StepUpVolume{}); + }}; } -auto volumeDown(lv_indev_data_t* d) -> void { - events::Audio().Dispatch(audio::StepDownVolume{}); +auto volumeDown() -> HookCallback { + return HookCallback{.name = "volume_down", .fn = [&](lv_indev_data_t* d) { + events::Audio().Dispatch(audio::StepDownVolume{}); + }}; +} + +auto allActions() -> std::vector { + return { + select(), scrollUp(), scrollDown(), scrollToTop(), + scrollToBottom(), goBack(), volumeUp(), volumeDown(), + }; } } // namespace actions -- cgit v1.2.3