diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-28 20:36:31 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-28 20:36:31 +1000 |
| commit | c214d4b40e2502bf22aa827e8f210cc4296de9fd (patch) | |
| tree | da596a778e53e2255994e79a640ba2eab58c2f42 /src/ui/ui_fsm.cpp | |
| parent | fa7fa98dc1a6d611dcc4badbfeebef307514a166 (diff) | |
| download | tangara-fw-c214d4b40e2502bf22aa827e8f210cc4296de9fd.tar.gz | |
Add some more icons, and reflect play/pause in top bar
Diffstat (limited to 'src/ui/ui_fsm.cpp')
| -rw-r--r-- | src/ui/ui_fsm.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp index 32032978..dd3ba8fd 100644 --- a/src/ui/ui_fsm.cpp +++ b/src/ui/ui_fsm.cpp @@ -8,6 +8,7 @@ #include <memory> +#include "audio_fsm.hpp" #include "battery.hpp" #include "core/lv_obj.h" #include "misc/lv_gc.h" @@ -110,12 +111,21 @@ void UiState::react(const system_fsm::BatteryStateChanged&) { void UiState::UpdateTopBar() { auto battery_state = sBattery->State(); + bool has_queue = sQueue->GetCurrent().has_value(); + bool is_playing = audio::AudioState::is_in_state<audio::states::Playback>(); + widgets::TopBar::State state{ .playback_state = widgets::TopBar::PlaybackState::kIdle, .battery_percent = static_cast<uint_fast8_t>( battery_state.has_value() ? battery_state->percent : 100), .is_charging = !battery_state.has_value() || battery_state->is_charging, }; + + if (has_queue) { + state.playback_state = is_playing ? widgets::TopBar::PlaybackState::kPlaying + : widgets::TopBar::PlaybackState::kPaused; + } + if (sCurrentScreen) { sCurrentScreen->UpdateTopBar(state); } @@ -208,6 +218,7 @@ void Playing::exit() { } void Playing::react(const audio::PlaybackStarted& ev) { + UpdateTopBar(); sPlayingScreen->OnTrackUpdate(); } @@ -215,6 +226,10 @@ void Playing::react(const audio::PlaybackUpdate& ev) { sPlayingScreen->OnPlaybackUpdate(ev.seconds_elapsed, ev.seconds_total); } +void Playing::react(const audio::PlaybackFinished& ev) { + UpdateTopBar(); +} + void Playing::react(const audio::QueueUpdate& ev) { sPlayingScreen->OnQueueUpdate(); } |
