summaryrefslogtreecommitdiff
path: root/src/ui/include
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-29 12:10:27 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-29 12:10:27 +1000
commitf2bb2e25281a14adf9c6b2e7e91bfe14460f2ae4 (patch)
treea5489ec053652bdd473d52a16edb5c360c863b9e /src/ui/include
parent8ee5e781e76a9db005e2a74a299d6cd24e46b8d0 (diff)
downloadtangara-fw-f2bb2e25281a14adf9c6b2e7e91bfe14460f2ae4.tar.gz
Add a brightness slider to settings
Diffstat (limited to 'src/ui/include')
-rw-r--r--src/ui/include/screen_settings.hpp23
-rw-r--r--src/ui/include/ui_events.hpp11
-rw-r--r--src/ui/include/ui_fsm.hpp3
3 files changed, 25 insertions, 12 deletions
diff --git a/src/ui/include/screen_settings.hpp b/src/ui/include/screen_settings.hpp
index 66124164..53d9277b 100644
--- a/src/ui/include/screen_settings.hpp
+++ b/src/ui/include/screen_settings.hpp
@@ -6,12 +6,15 @@
#pragma once
+#include <cstdint>
#include <memory>
#include <vector>
+#include "display.hpp"
#include "index.hpp"
#include "lvgl.h"
+#include "nvs.hpp"
#include "screen.hpp"
namespace ui {
@@ -20,16 +23,6 @@ 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 {
@@ -44,7 +37,15 @@ class Headphones : public MenuScreen {
class Appearance : public MenuScreen {
public:
- Appearance();
+ Appearance(drivers::NvsStorage* nvs, drivers::Display* display);
+
+ auto ChangeBrightness(uint_fast8_t) -> void;
+
+ private:
+ drivers::NvsStorage* nvs_;
+ drivers::Display* display_;
+
+ lv_obj_t* current_brightness_label_;
};
class InputMethod : public MenuScreen {
diff --git a/src/ui/include/ui_events.hpp b/src/ui/include/ui_events.hpp
index 2f26c854..297370db 100644
--- a/src/ui/include/ui_events.hpp
+++ b/src/ui/include/ui_events.hpp
@@ -39,7 +39,16 @@ struct IndexSelected : tinyfsm::Event {
struct BackPressed : tinyfsm::Event {};
struct ShowNowPlaying : tinyfsm::Event {};
struct ShowSettingsPage : tinyfsm::Event {
- std::shared_ptr<Screen> screen;
+ enum class Page {
+ kRoot,
+ kBluetooth,
+ kHeadphones,
+ kAppearance,
+ kInput,
+ kStorage,
+ kFirmwareUpdate,
+ kAbout,
+ } page;
};
struct ModalConfirmPressed : tinyfsm::Event {};
diff --git a/src/ui/include/ui_fsm.hpp b/src/ui/include/ui_fsm.hpp
index 17214e7b..1fa6bf26 100644
--- a/src/ui/include/ui_fsm.hpp
+++ b/src/ui/include/ui_fsm.hpp
@@ -11,6 +11,7 @@
#include "audio_events.hpp"
#include "battery.hpp"
+#include "nvs.hpp"
#include "relative_wheel.hpp"
#include "screen_playing.hpp"
#include "tinyfsm.hpp"
@@ -29,6 +30,7 @@ namespace ui {
class UiState : public tinyfsm::Fsm<UiState> {
public:
static auto Init(drivers::IGpios*,
+ std::shared_ptr<drivers::NvsStorage>,
audio::TrackQueue*,
std::shared_ptr<battery::Battery>) -> bool;
@@ -81,6 +83,7 @@ class UiState : public tinyfsm::Fsm<UiState> {
static std::shared_ptr<drivers::RelativeWheel> sRelativeWheel;
static std::shared_ptr<drivers::Display> sDisplay;
static std::shared_ptr<battery::Battery> sBattery;
+ static std::shared_ptr<drivers::NvsStorage> sNvs;
static std::weak_ptr<database::Database> sDb;
static std::stack<std::shared_ptr<Screen>> sScreens;