summaryrefslogtreecommitdiff
path: root/src/input/input_hook_actions.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-04-24 16:06:10 +1000
committerjacqueline <me@jacqueline.id.au>2024-04-24 16:06:10 +1000
commit920345b940bb3993c389d9e9be1a75a8041d431d (patch)
tree562e53906a14c31ba8a21b3c2ae64c652a16acb4 /src/input/input_hook_actions.cpp
parent531475e3511e9c722677d3a351b51d4a579876df (diff)
downloadtangara-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.cpp53
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