diff options
Diffstat (limited to 'src/ui/widget_top_bar.cpp')
| -rw-r--r-- | src/ui/widget_top_bar.cpp | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/src/ui/widget_top_bar.cpp b/src/ui/widget_top_bar.cpp index 6b82b20f..1ee14bbd 100644 --- a/src/ui/widget_top_bar.cpp +++ b/src/ui/widget_top_bar.cpp @@ -11,18 +11,21 @@ #include "extra/layouts/flex/lv_flex.h" #include "font/lv_symbol_def.h" #include "font_symbols.hpp" +#include "themes.hpp" #include "ui_events.hpp" #include "ui_fsm.hpp" #include "widgets/lv_img.h" #include "widgets/lv_label.h" -#include "themes.hpp" -LV_IMG_DECLARE(battery_empty); -LV_IMG_DECLARE(battery_20); -LV_IMG_DECLARE(battery_40); -LV_IMG_DECLARE(battery_60); -LV_IMG_DECLARE(battery_80); -LV_IMG_DECLARE(battery_full); +LV_IMG_DECLARE(kIconBluetooth); +LV_IMG_DECLARE(kIconPlay); +LV_IMG_DECLARE(kIconPause); +LV_IMG_DECLARE(kIconBatteryEmpty); +LV_IMG_DECLARE(kIconBattery20); +LV_IMG_DECLARE(kIconBattery40); +LV_IMG_DECLARE(kIconBattery60); +LV_IMG_DECLARE(kIconBattery80); +LV_IMG_DECLARE(kIconBatteryFull); namespace ui { namespace widgets { @@ -37,7 +40,7 @@ TopBar::TopBar(lv_obj_t* parent, const Configuration& config) { lv_obj_set_flex_flow(container_, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(container_, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_END); - + themes::Theme::instance()->ApplyStyle(container_, themes::Style::kTopBar); if (config.show_back_button) { @@ -55,39 +58,42 @@ TopBar::TopBar(lv_obj_t* parent, const Configuration& config) { lv_label_set_text(title_, config.title.c_str()); lv_obj_set_flex_grow(title_, 1); - playback_ = lv_label_create(container_); - lv_label_set_text(playback_, ""); - + playback_ = lv_img_create(container_); battery_ = lv_img_create(container_); + charging_ = lv_label_create(container_); } auto TopBar::Update(const State& state) -> void { switch (state.playback_state) { case PlaybackState::kIdle: - lv_label_set_text(playback_, "-"); + lv_img_set_src(playback_, NULL); break; case PlaybackState::kPaused: - lv_label_set_text(playback_, LV_SYMBOL_PAUSE); + lv_img_set_src(playback_, &kIconPause); break; case PlaybackState::kPlaying: - lv_label_set_text(playback_, LV_SYMBOL_PLAY); + lv_img_set_src(playback_, &kIconPlay); break; } + if (state.is_charging) { + lv_label_set_text(charging_, "+"); + } else { + lv_label_set_text(charging_, ""); + } + if (state.battery_percent >= 95) { - lv_img_set_src(battery_, &battery_full); + lv_img_set_src(battery_, &kIconBatteryFull); } else if (state.battery_percent >= 75) { - lv_img_set_src(battery_, &battery_80); - lv_label_set_text(battery_, ">70"); + lv_img_set_src(battery_, &kIconBattery80); } else if (state.battery_percent >= 55) { - lv_img_set_src(battery_, &battery_60); - lv_label_set_text(battery_, ">40"); + lv_img_set_src(battery_, &kIconBattery60); } else if (state.battery_percent >= 35) { - lv_img_set_src(battery_, &battery_40); + lv_img_set_src(battery_, &kIconBattery40); } else if (state.battery_percent >= 15) { - lv_img_set_src(battery_, &battery_20); + lv_img_set_src(battery_, &kIconBattery20); } else { - lv_img_set_src(battery_, &battery_empty); + lv_img_set_src(battery_, &kIconBatteryEmpty); } } |
