summaryrefslogtreecommitdiff
path: root/src/ui/include
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-25 15:13:25 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-25 15:13:25 +1000
commit795f26873742eaad7ce53084052d988a0fd542f8 (patch)
tree1616ad6149c27b3cd263377741c677d5294a5080 /src/ui/include
parent3b3bc64d19715c418f407d5231795ca5a2c2fa71 (diff)
downloadtangara-fw-795f26873742eaad7ce53084052d988a0fd542f8.tar.gz
Add placeholder settings UI
Diffstat (limited to 'src/ui/include')
-rw-r--r--src/ui/include/screen.hpp9
-rw-r--r--src/ui/include/screen_menu.hpp3
-rw-r--r--src/ui/include/screen_settings.hpp70
-rw-r--r--src/ui/include/ui_events.hpp5
-rw-r--r--src/ui/include/ui_fsm.hpp5
5 files changed, 89 insertions, 3 deletions
diff --git a/src/ui/include/screen.hpp b/src/ui/include/screen.hpp
index 250b3c8d..f93d17a5 100644
--- a/src/ui/include/screen.hpp
+++ b/src/ui/include/screen.hpp
@@ -52,8 +52,8 @@ class Screen {
-> widgets::TopBar*;
lv_obj_t* const root_;
- lv_obj_t* const content_;
- lv_obj_t* const modal_content_;
+ lv_obj_t* content_;
+ lv_obj_t* modal_content_;
lv_group_t* const group_;
lv_group_t* modal_group_;
@@ -62,4 +62,9 @@ class Screen {
std::unique_ptr<widgets::TopBar> top_bar_;
};
+class MenuScreen : public Screen {
+ public:
+ MenuScreen(const std::string& title, bool show_back_button = true);
+};
+
} // namespace ui
diff --git a/src/ui/include/screen_menu.hpp b/src/ui/include/screen_menu.hpp
index e4cc0e78..be2a9493 100644
--- a/src/ui/include/screen_menu.hpp
+++ b/src/ui/include/screen_menu.hpp
@@ -13,11 +13,12 @@
#include "lvgl.h"
#include "screen.hpp"
+#include "screen_settings.hpp"
namespace ui {
namespace screens {
-class Menu : public Screen {
+class Menu : public MenuScreen {
public:
explicit Menu(std::vector<database::IndexInfo> indexes);
~Menu();
diff --git a/src/ui/include/screen_settings.hpp b/src/ui/include/screen_settings.hpp
new file mode 100644
index 00000000..ebc5bf7d
--- /dev/null
+++ b/src/ui/include/screen_settings.hpp
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2023 jacqueline <me@jacqueline.id.au>
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#pragma once
+
+#include <memory>
+#include <vector>
+
+#include "index.hpp"
+#include "lvgl.h"
+
+#include "screen.hpp"
+
+namespace ui {
+namespace screens {
+
+class Settings : public MenuScreen {
+ public:
+ Settings();
+ ~Settings();
+ private:
+ std::shared_ptr<Screen> bluetooth_;
+ std::shared_ptr<Screen> headphones_;
+ std::shared_ptr<Screen> appearance_;
+ std::shared_ptr<Screen> input_method_;
+ std::shared_ptr<Screen> storage_;
+ std::shared_ptr<Screen> firmware_update_;
+ std::shared_ptr<Screen> about_;
+};
+
+class Bluetooth : public MenuScreen {
+ public:
+ Bluetooth();
+};
+
+class Headphones : public MenuScreen {
+ public:
+ Headphones();
+};
+
+class Appearance : public MenuScreen {
+ public:
+ Appearance();
+};
+
+class InputMethod : public MenuScreen {
+ public:
+ InputMethod();
+};
+
+class Storage : public MenuScreen {
+ public:
+ Storage();
+};
+
+class FirmwareUpdate : public MenuScreen {
+ public:
+ FirmwareUpdate();
+};
+
+class About : public MenuScreen {
+ public:
+ About();
+};
+
+} // namespace screens
+} // namespace ui
diff --git a/src/ui/include/ui_events.hpp b/src/ui/include/ui_events.hpp
index 759a0879..2f26c854 100644
--- a/src/ui/include/ui_events.hpp
+++ b/src/ui/include/ui_events.hpp
@@ -9,6 +9,7 @@
#include <memory>
#include "database.hpp"
#include "index.hpp"
+#include "screen.hpp"
#include "tinyfsm.hpp"
namespace ui {
@@ -36,6 +37,10 @@ struct IndexSelected : tinyfsm::Event {
};
struct BackPressed : tinyfsm::Event {};
+struct ShowNowPlaying : tinyfsm::Event {};
+struct ShowSettingsPage : tinyfsm::Event {
+ std::shared_ptr<Screen> screen;
+};
struct ModalConfirmPressed : tinyfsm::Event {};
struct ModalCancelPressed : tinyfsm::Event {};
diff --git a/src/ui/include/ui_fsm.hpp b/src/ui/include/ui_fsm.hpp
index 4985129a..80c01c68 100644
--- a/src/ui/include/ui_fsm.hpp
+++ b/src/ui/include/ui_fsm.hpp
@@ -52,6 +52,8 @@ 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 internal::ShowNowPlaying&){};
+ virtual void react(const internal::ShowSettingsPage&){};
virtual void react(const internal::ModalCancelPressed&) {
sCurrentModal.reset();
}
@@ -104,6 +106,9 @@ class Browse : public UiState {
void react(const internal::IndexSelected&) override;
void react(const internal::BackPressed&) override;
+ void react(const internal::ShowNowPlaying&) override;
+ void react(const internal::ShowSettingsPage&) override;
+
void react(const system_fsm::StorageMounted&) override;
using UiState::react;
};