diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-04-24 16:06:10 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-04-24 16:06:10 +1000 |
| commit | 920345b940bb3993c389d9e9be1a75a8041d431d (patch) | |
| tree | 562e53906a14c31ba8a21b3c2ae64c652a16acb4 /src/input/input_hook_actions.cpp | |
| parent | 531475e3511e9c722677d3a351b51d4a579876df (diff) | |
| download | tangara-fw-920345b940bb3993c389d9e9be1a75a8041d431d.tar.gz | |
Support getting a tree of controls + hooks via lua
Diffstat (limited to 'src/input/input_hook_actions.cpp')
| -rw-r--r-- | src/input/input_hook_actions.cpp | 53 |
1 files changed, 37 insertions, 16 deletions
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<HookCallback> { + return { + select(), scrollUp(), scrollDown(), scrollToTop(), + scrollToBottom(), goBack(), volumeUp(), volumeDown(), + }; } } // namespace actions |
