summaryrefslogtreecommitdiff
path: root/src/input/input_hook.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-05-02 19:12:26 +1000
committerjacqueline <me@jacqueline.id.au>2024-05-02 19:12:26 +1000
commit1573a8c4cde1cd9528b422b2dcc598e37ffe94a7 (patch)
treed162822b8fd7054f81bace0c7a65ab4d5e6f93ef /src/input/input_hook.cpp
parenta231fd1c8afedbeb14b0bc77d76bad61db986059 (diff)
downloadtangara-fw-1573a8c4cde1cd9528b422b2dcc598e37ffe94a7.tar.gz
WIP merge cyclically dependent components into one big component
Diffstat (limited to 'src/input/input_hook.cpp')
-rw-r--r--src/input/input_hook.cpp97
1 files changed, 0 insertions, 97 deletions
diff --git a/src/input/input_hook.cpp b/src/input/input_hook.cpp
deleted file mode 100644
index bf9f3596..00000000
--- a/src/input/input_hook.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2024 jacqueline <me@jacqueline.id.au>
- *
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-#include "input_hook.hpp"
-
-#include <functional>
-#include <optional>
-#include "hal/lv_hal_indev.h"
-#include "input_trigger.hpp"
-#include "lua.h"
-
-namespace input {
-
-Hook::Hook(std::string name, std::optional<HookCallback> cb)
- : name_(name), default_(cb), override_() {}
-
-auto Hook::invoke(lv_indev_data_t* d) -> void {
- auto cb = callback();
- if (cb) {
- std::invoke(cb->fn, d);
- }
-}
-
-auto Hook::override(std::optional<HookCallback> cb) -> void {
- override_ = cb;
-}
-
-auto Hook::callback() -> std::optional<HookCallback> {
- if (override_) {
- return override_;
- } else if (default_) {
- return default_;
- }
- return {};
-}
-
-TriggerHooks::TriggerHooks(std::string name,
- std::optional<HookCallback> click,
- std::optional<HookCallback> double_click,
- std::optional<HookCallback> long_press,
- std::optional<HookCallback> repeat)
- : name_(name),
- click_("click", click),
- double_click_("double_click", double_click),
- long_press_("long_press", long_press),
- repeat_("repeat", repeat) {}
-
-auto TriggerHooks::update(bool pressed, lv_indev_data_t* d) -> void {
- switch (trigger_.update(pressed)) {
- case Trigger::State::kClick:
- click_.invoke(d);
- break;
- case Trigger::State::kDoubleClick:
- double_click_.invoke(d);
- break;
- case Trigger::State::kLongPress:
- long_press_.invoke(d);
- break;
- case Trigger::State::kRepeatPress:
- repeat_.invoke(d);
- break;
- case Trigger::State::kNone:
- default:
- break;
- }
-}
-
-auto TriggerHooks::override(Trigger::State s, std::optional<HookCallback> cb)
- -> void {
- switch (s) {
- case Trigger::State::kClick:
- click_.override(cb);
- break;
- case Trigger::State::kLongPress:
- long_press_.override(cb);
- break;
- case Trigger::State::kRepeatPress:
- repeat_.override(cb);
- break;
- case Trigger::State::kNone:
- default:
- break;
- }
-}
-
-auto TriggerHooks::name() const -> const std::string& {
- return name_;
-}
-
-auto TriggerHooks::hooks() -> std::vector<std::reference_wrapper<Hook>> {
- return {click_, long_press_, repeat_};
-}
-
-} // namespace input