blob: 587683ba01a45fc81f3780072162905a9598096d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
/*
* Copyright 2024 jacqueline <me@jacqueline.id.au>
*
* SPDX-License-Identifier: GPL-3.0-only
*/
#include "input/input_hook_actions.hpp"
#include <cstdint>
#include "indev/lv_indev.h"
#include "events/event_queue.hpp"
#include "ui/ui_events.hpp"
namespace input {
namespace actions {
auto select() -> HookCallback {
return HookCallback{.name = "select", .fn = [&](lv_indev_data_t* d) {
d->state = LV_INDEV_STATE_PRESSED;
}};
}
auto scrollUp() -> HookCallback {
return HookCallback{.name = "scroll_up",
.fn = [&](lv_indev_data_t* d) { d->enc_diff = -1; }};
}
auto scrollDown() -> HookCallback {
return HookCallback{.name = "scroll_down",
.fn = [&](lv_indev_data_t* d) { d->enc_diff = 1; }};
}
auto scrollToTop() -> HookCallback {
return HookCallback{.name = "scroll_to_top", .fn = [&](lv_indev_data_t* d) {
d->enc_diff = -10;
}};
}
auto scrollToBottom() -> HookCallback {
return HookCallback{
.name = "scroll_to_bottom",
.fn = [&](lv_indev_data_t* d) { d->enc_diff = 10; }};
}
auto goBack() -> HookCallback {
return HookCallback{.name = "back", .fn = [&](lv_indev_data_t* d) {
events::Ui().Dispatch(ui::internal::BackPressed{});
}};
}
auto volumeUp() -> HookCallback {
return HookCallback{.name = "volume_up", .fn = [&](lv_indev_data_t* d) {
events::Audio().Dispatch(audio::StepUpVolume{});
}};
}
auto volumeDown() -> HookCallback {
return HookCallback{.name = "volume_down", .fn = [&](lv_indev_data_t* d) {
events::Audio().Dispatch(audio::StepDownVolume{});
}};
}
auto nextTrack(audio::TrackQueue& queue) -> HookCallback {
return HookCallback{.name = "next_track", .fn = [&](lv_indev_data_t* d) {
queue.next();
}};
}
auto skipBack() -> HookCallback {
return HookCallback{.name = "skip_back", .fn = [&](lv_indev_data_t* d) {
events::Ui().Dispatch(ui::SeekBack{.seconds = 25});
}};
}
auto prevTrack(audio::TrackQueue& queue) -> HookCallback {
return HookCallback{.name = "prev_track", .fn = [&](lv_indev_data_t* d) {
queue.previous();
}};
}
auto togglePlayPause() -> HookCallback {
return HookCallback{.name = "toggle_play_pause", .fn = [&](lv_indev_data_t* d) {
events::Audio().Dispatch(audio::TogglePlayPause{});
}};
}
} // namespace actions
} // namespace input
|