From 795f26873742eaad7ce53084052d988a0fd542f8 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 25 Aug 2023 15:13:25 +1000 Subject: Add placeholder settings UI --- src/ui/include/screen.hpp | 9 +++-- src/ui/include/screen_menu.hpp | 3 +- src/ui/include/screen_settings.hpp | 70 ++++++++++++++++++++++++++++++++++++++ src/ui/include/ui_events.hpp | 5 +++ src/ui/include/ui_fsm.hpp | 5 +++ 5 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 src/ui/include/screen_settings.hpp (limited to 'src/ui/include') 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 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 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 + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#pragma once + +#include +#include + +#include "index.hpp" +#include "lvgl.h" + +#include "screen.hpp" + +namespace ui { +namespace screens { + +class Settings : public MenuScreen { + public: + Settings(); + ~Settings(); + private: + std::shared_ptr bluetooth_; + std::shared_ptr headphones_; + std::shared_ptr appearance_; + std::shared_ptr input_method_; + std::shared_ptr storage_; + std::shared_ptr firmware_update_; + std::shared_ptr 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 #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; +}; 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 { 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; }; -- cgit v1.2.3