diff options
| author | cooljqln <cooljqln@noreply.codeberg.org> | 2025-08-15 07:00:43 +0200 |
|---|---|---|
| committer | cooljqln <cooljqln@noreply.codeberg.org> | 2025-08-15 07:00:43 +0200 |
| commit | d470f7046dd1a3e4c184365d782e0cf20e474ad4 (patch) | |
| tree | bd9ea18c4bd17d6fce19c050a497aca68150642d /src/tangara/ui/ui_fsm.cpp | |
| parent | acdb94e36d6626ab5694254f1a04c309335144ba (diff) | |
| parent | dc5676229d19f317b97df6a3d3582bbb02df33df (diff) | |
| download | tangara-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.cpp | 25 |
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); |
