summaryrefslogtreecommitdiff
path: root/src/tangara/ui/ui_fsm.cpp
diff options
context:
space:
mode:
authorcooljqln <cooljqln@noreply.codeberg.org>2025-08-15 07:00:43 +0200
committercooljqln <cooljqln@noreply.codeberg.org>2025-08-15 07:00:43 +0200
commitd470f7046dd1a3e4c184365d782e0cf20e474ad4 (patch)
treebd9ea18c4bd17d6fce19c050a497aca68150642d /src/tangara/ui/ui_fsm.cpp
parentacdb94e36d6626ab5694254f1a04c309335144ba (diff)
parentdc5676229d19f317b97df6a3d3582bbb02df33df (diff)
downloadtangara-fw-d470f7046dd1a3e4c184365d782e0cf20e474ad4.tar.gz
Merge pull request 'add single touch shourtcuts for touch wheel' (#340) from Tab_theFox/tangara-fw:wheel_with_buttons into main
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/340
Diffstat (limited to 'src/tangara/ui/ui_fsm.cpp')
-rw-r--r--src/tangara/ui/ui_fsm.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/tangara/ui/ui_fsm.cpp b/src/tangara/ui/ui_fsm.cpp
index aaf35d13..1b8c0984 100644
--- a/src/tangara/ui/ui_fsm.cpp
+++ b/src/tangara/ui/ui_fsm.cpp
@@ -403,6 +403,31 @@ void UiState::react(const Screenshot& ev) {
SaveScreenshot(sCurrentScreen->root(), ev.filename);
}
+void UiState::react(const SeekBack& ev) {
+ const auto playback_position = sPlaybackPosition.get();
+ if (!std::holds_alternative<int>(playback_position)) {
+ // I don't think this ever happens, but check anyway.
+ return;
+ }
+
+ const auto track = sPlaybackTrack.get();
+ if (!std::holds_alternative<audio::TrackInfo>(track)) {
+ // Nothing is playing
+ return;
+ }
+
+ const auto current_position = std::get<int>(playback_position);
+ int32_t seek_position = current_position - ev.seconds;
+ if (seek_position < 1) {
+ seek_position = 0;
+ }
+
+ events::Audio().Dispatch(audio::SetTrack{
+ .new_track = std::get<audio::TrackInfo>(track).uri,
+ .seek_to_second = seek_position,
+ });
+}
+
void UiState::react(const system_fsm::KeyLockChanged& ev) {
sDisplay->SetDisplayOn(!ev.locking);
sInput->lock(ev.locking);