diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-25 15:13:25 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-25 15:13:25 +1000 |
| commit | 795f26873742eaad7ce53084052d988a0fd542f8 (patch) | |
| tree | 1616ad6149c27b3cd263377741c677d5294a5080 /src/ui/include | |
| parent | 3b3bc64d19715c418f407d5231795ca5a2c2fa71 (diff) | |
| download | tangara-fw-795f26873742eaad7ce53084052d988a0fd542f8.tar.gz | |
Add placeholder settings UI
Diffstat (limited to 'src/ui/include')
| -rw-r--r-- | src/ui/include/screen.hpp | 9 | ||||
| -rw-r--r-- | src/ui/include/screen_menu.hpp | 3 | ||||
| -rw-r--r-- | src/ui/include/screen_settings.hpp | 70 | ||||
| -rw-r--r-- | src/ui/include/ui_events.hpp | 5 | ||||
| -rw-r--r-- | src/ui/include/ui_fsm.hpp | 5 |
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; }; |
