From c214d4b40e2502bf22aa827e8f210cc4296de9fd Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 28 Aug 2023 20:36:31 +1000 Subject: Add some more icons, and reflect play/pause in top bar --- src/ui/ui_fsm.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/ui/ui_fsm.cpp') 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 +#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(); + widgets::TopBar::State state{ .playback_state = widgets::TopBar::PlaybackState::kIdle, .battery_percent = static_cast( 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(); } -- cgit v1.2.3