summaryrefslogtreecommitdiff
path: root/src/ui/include
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-07-12 22:34:19 +1000
committerjacqueline <me@jacqueline.id.au>2023-07-12 22:34:19 +1000
commit8eabeedbb9a487653c6eca9cb814af3cccb29b6e (patch)
tree43d1230334a547e40b5de63e9a16fc56a8950842 /src/ui/include
parent50bb261f67a0a32a75f7cd76e0a4e4231f6d57c8 (diff)
downloadtangara-fw-8eabeedbb9a487653c6eca9cb814af3cccb29b6e.tar.gz
Make title bar a common component, some ui nits
Diffstat (limited to 'src/ui/include')
-rw-r--r--src/ui/include/screen_track_browser.hpp1
-rw-r--r--src/ui/include/ui_events.hpp2
-rw-r--r--src/ui/include/ui_fsm.hpp4
-rw-r--r--src/ui/include/widget_top_bar.hpp30
4 files changed, 37 insertions, 0 deletions
diff --git a/src/ui/include/screen_track_browser.hpp b/src/ui/include/screen_track_browser.hpp
index 95fb80e2..af80f29c 100644
--- a/src/ui/include/screen_track_browser.hpp
+++ b/src/ui/include/screen_track_browser.hpp
@@ -49,6 +49,7 @@ class TrackBrowser : public Screen {
-> std::optional<database::IndexRecord>;
std::weak_ptr<database::Database> db_;
+ lv_obj_t* back_button_;
lv_obj_t* list_;
lv_obj_t* loading_indicator_;
diff --git a/src/ui/include/ui_events.hpp b/src/ui/include/ui_events.hpp
index fabc56fc..cc7db349 100644
--- a/src/ui/include/ui_events.hpp
+++ b/src/ui/include/ui_events.hpp
@@ -32,6 +32,8 @@ struct IndexSelected : tinyfsm::Event {
database::IndexInfo index;
};
+struct BackPressed : tinyfsm::Event {};
+
} // namespace internal
} // namespace ui
diff --git a/src/ui/include/ui_fsm.hpp b/src/ui/include/ui_fsm.hpp
index 2fc6db4e..20e5beb1 100644
--- a/src/ui/include/ui_fsm.hpp
+++ b/src/ui/include/ui_fsm.hpp
@@ -48,6 +48,7 @@ class UiState : public tinyfsm::Fsm<UiState> {
virtual void react(const internal::RecordSelected&) {}
virtual void react(const internal::IndexSelected&) {}
+ virtual void react(const internal::BackPressed&) {}
virtual void react(const system_fsm::DisplayReady&) {}
virtual void react(const system_fsm::BootComplete&) {}
@@ -83,6 +84,7 @@ class Browse : public UiState {
void react(const internal::RecordSelected&) override;
void react(const internal::IndexSelected&) override;
+ void react(const internal::BackPressed&) override;
void react(const system_fsm::KeyLockChanged&) override;
void react(const system_fsm::StorageMounted&) override;
@@ -93,6 +95,8 @@ class Playing : public UiState {
void entry() override;
void exit() override;
+ void react(const internal::BackPressed&) override;
+
void react(const audio::PlaybackStarted&) override;
void react(const audio::PlaybackUpdate&) override;
void react(const audio::QueueUpdate&) override;
diff --git a/src/ui/include/widget_top_bar.hpp b/src/ui/include/widget_top_bar.hpp
new file mode 100644
index 00000000..9019807f
--- /dev/null
+++ b/src/ui/include/widget_top_bar.hpp
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2023 jacqueline <me@jacqueline.id.au>
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#pragma once
+
+#include <string>
+
+#include "lvgl.h"
+
+namespace ui {
+
+namespace widgets {
+
+class TopBar {
+ public:
+ TopBar(lv_obj_t* parent, lv_group_t* group);
+
+ auto set_title(const std::string&) -> void;
+
+ lv_obj_t* container_;
+ lv_obj_t* title_;
+ lv_obj_t* back_button_;
+};
+
+} // namespace widgets
+
+} // namespace ui