summaryrefslogtreecommitdiff
path: root/src/ui/ui_fsm.cpp
diff options
context:
space:
mode:
authorailurux <ailuruxx@gmail.com>2024-02-16 12:55:11 +1100
committerailurux <ailuruxx@gmail.com>2024-02-16 12:55:11 +1100
commit665679b8854d34c13d8eb92167aa8a4691619d8b (patch)
treedd2edb34f09f198357efb1e0a7e6f5e81443c022 /src/ui/ui_fsm.cpp
parenta49d754da6c293445be16ac643d10849c01ea96b (diff)
downloadtangara-fw-665679b8854d34c13d8eb92167aa8a4691619d8b.tar.gz
WIP: seeking in lua example
Diffstat (limited to 'src/ui/ui_fsm.cpp')
-rw-r--r--src/ui/ui_fsm.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp
index 24145ead..3e85c36e 100644
--- a/src/ui/ui_fsm.cpp
+++ b/src/ui/ui_fsm.cpp
@@ -123,7 +123,21 @@ lua::Property UiState::sPlaybackPlaying{
}};
lua::Property UiState::sPlaybackTrack{};
-lua::Property UiState::sPlaybackPosition{0};
+lua::Property UiState::sPlaybackPosition{0, [](const lua::LuaValue& val) {
+ int current_val = std::get<int>(sPlaybackPosition.Get());
+ if (!std::holds_alternative<int>(val)) {
+ return false;
+ }
+ int new_val = std::get<int>(val);
+ if (current_val != new_val) {
+ auto track = sPlaybackTrack.Get();
+ if (!std::holds_alternative<audio::Track>(track)) {
+ return false;
+ }
+ events::Audio().Dispatch(audio::SeekFile{.offset = (uint32_t)new_val, .filename = std::get<audio::Track>(track).filepath});
+ }
+ return true;
+}};
lua::Property UiState::sQueuePosition{0};
lua::Property UiState::sQueueSize{0};