diff --git a/main/boards/atoms3r-echo-base/atoms3r_echo_base.cc b/main/boards/atoms3r-echo-base/atoms3r_echo_base.cc index cb771cd..ff2b79a 100644 --- a/main/boards/atoms3r-echo-base/atoms3r_echo_base.cc +++ b/main/boards/atoms3r-echo-base/atoms3r_echo_base.cc @@ -277,7 +277,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc b/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc index 108d681..b6a7186 100644 --- a/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc +++ b/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc @@ -178,7 +178,7 @@ private: auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } } diff --git a/main/boards/bread-compact-wifi-lcd/compact_wifi_board_lcd.cc b/main/boards/bread-compact-wifi-lcd/compact_wifi_board_lcd.cc index 5699de2..43a8615 100644 --- a/main/boards/bread-compact-wifi-lcd/compact_wifi_board_lcd.cc +++ b/main/boards/bread-compact-wifi-lcd/compact_wifi_board_lcd.cc @@ -151,11 +151,8 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Lamp")); - if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { - thing_manager.AddThing(iot::CreateThing("Backlight")); - } thing_manager.AddThing(iot::CreateThing("Screen")); + thing_manager.AddThing(iot::CreateThing("Lamp")); } public: diff --git a/main/boards/du-chatx/du-chatx-wifi.cc b/main/boards/du-chatx/du-chatx-wifi.cc index 6d495de..58ccdf5 100644 --- a/main/boards/du-chatx/du-chatx-wifi.cc +++ b/main/boards/du-chatx/du-chatx-wifi.cc @@ -128,7 +128,7 @@ private: void InitializeIot() { auto &thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); thing_manager.AddThing(iot::CreateThing("Battery")); } diff --git a/main/boards/esp-box-3/esp_box3_board.cc b/main/boards/esp-box-3/esp_box3_board.cc index d744f58..67c5853 100644 --- a/main/boards/esp-box-3/esp_box3_board.cc +++ b/main/boards/esp-box-3/esp_box3_board.cc @@ -134,7 +134,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/esp-box-lite/esp_box_lite_board.cc b/main/boards/esp-box-lite/esp_box_lite_board.cc index e7b8a05..c53533c 100644 --- a/main/boards/esp-box-lite/esp_box_lite_board.cc +++ b/main/boards/esp-box-lite/esp_box_lite_board.cc @@ -203,7 +203,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/esp-box/esp_box_board.cc b/main/boards/esp-box/esp_box_board.cc index 31876a0..eb16f19 100644 --- a/main/boards/esp-box/esp_box_board.cc +++ b/main/boards/esp-box/esp_box_board.cc @@ -134,7 +134,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/esp-sparkbot/esp_sparkbot_board.cc b/main/boards/esp-sparkbot/esp_sparkbot_board.cc index 7b1cd8d..ad780ed 100644 --- a/main/boards/esp-sparkbot/esp_sparkbot_board.cc +++ b/main/boards/esp-sparkbot/esp_sparkbot_board.cc @@ -126,7 +126,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); thing_manager.AddThing(iot::CreateThing("Chassis")); } diff --git a/main/boards/esp32-cgc/esp32_cgc_board.cc b/main/boards/esp32-cgc/esp32_cgc_board.cc index 536a145..6e45328 100644 --- a/main/boards/esp32-cgc/esp32_cgc_board.cc +++ b/main/boards/esp32-cgc/esp32_cgc_board.cc @@ -154,7 +154,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/esp32-s3-touch-amoled-1.8/esp32-s3-touch-amoled-1.8.cc b/main/boards/esp32-s3-touch-amoled-1.8/esp32-s3-touch-amoled-1.8.cc index 29fe05e..458dcc8 100644 --- a/main/boards/esp32-s3-touch-amoled-1.8/esp32-s3-touch-amoled-1.8.cc +++ b/main/boards/esp32-s3-touch-amoled-1.8/esp32-s3-touch-amoled-1.8.cc @@ -230,9 +230,9 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("BoardControl")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); thing_manager.AddThing(iot::CreateThing("Battery")); + thing_manager.AddThing(iot::CreateThing("BoardControl")); } public: diff --git a/main/boards/esp32-s3-touch-lcd-1.46/esp32-s3-touch-lcd-1.46.cc b/main/boards/esp32-s3-touch-lcd-1.46/esp32-s3-touch-lcd-1.46.cc index ab08fd2..f5e3430 100644 --- a/main/boards/esp32-s3-touch-lcd-1.46/esp32-s3-touch-lcd-1.46.cc +++ b/main/boards/esp32-s3-touch-lcd-1.46/esp32-s3-touch-lcd-1.46.cc @@ -216,7 +216,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/esp32-s3-touch-lcd-1.85/esp32-s3-touch-lcd-1.85.cc b/main/boards/esp32-s3-touch-lcd-1.85/esp32-s3-touch-lcd-1.85.cc index 2019a14..4be53f9 100644 --- a/main/boards/esp32-s3-touch-lcd-1.85/esp32-s3-touch-lcd-1.85.cc +++ b/main/boards/esp32-s3-touch-lcd-1.85/esp32-s3-touch-lcd-1.85.cc @@ -433,7 +433,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/esp32-s3-touch-lcd-1.85c/esp32-s3-touch-lcd-1.85c.cc b/main/boards/esp32-s3-touch-lcd-1.85c/esp32-s3-touch-lcd-1.85c.cc index 37e0956..35625e9 100644 --- a/main/boards/esp32-s3-touch-lcd-1.85c/esp32-s3-touch-lcd-1.85c.cc +++ b/main/boards/esp32-s3-touch-lcd-1.85c/esp32-s3-touch-lcd-1.85c.cc @@ -378,7 +378,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/kevin-sp-v3-dev/kevin-sp-v3_board.cc b/main/boards/kevin-sp-v3-dev/kevin-sp-v3_board.cc index 9935f5d..184f9c1 100644 --- a/main/boards/kevin-sp-v3-dev/kevin-sp-v3_board.cc +++ b/main/boards/kevin-sp-v3-dev/kevin-sp-v3_board.cc @@ -95,8 +95,8 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); + thing_manager.AddThing(iot::CreateThing("Screen")); thing_manager.AddThing(iot::CreateThing("Lamp")); - thing_manager.AddThing(iot::CreateThing("Backlight")); } public: diff --git a/main/boards/kevin-sp-v4-dev/kevin-sp-v4_board.cc b/main/boards/kevin-sp-v4-dev/kevin-sp-v4_board.cc index 323ebd3..a6e280b 100644 --- a/main/boards/kevin-sp-v4-dev/kevin-sp-v4_board.cc +++ b/main/boards/kevin-sp-v4-dev/kevin-sp-v4_board.cc @@ -108,8 +108,8 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); + thing_manager.AddThing(iot::CreateThing("Screen")); thing_manager.AddThing(iot::CreateThing("Lamp")); - thing_manager.AddThing(iot::CreateThing("Backlight")); } public: diff --git a/main/boards/kevin-yuying-313lcd/kevin_yuying_313lcd.cc b/main/boards/kevin-yuying-313lcd/kevin_yuying_313lcd.cc index 4c8d48f..24eadca 100644 --- a/main/boards/kevin-yuying-313lcd/kevin_yuying_313lcd.cc +++ b/main/boards/kevin-yuying-313lcd/kevin_yuying_313lcd.cc @@ -147,7 +147,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/lichuang-c3-dev/lichuang_c3_dev_board.cc b/main/boards/lichuang-c3-dev/lichuang_c3_dev_board.cc index 9841378..0725a23 100644 --- a/main/boards/lichuang-c3-dev/lichuang_c3_dev_board.cc +++ b/main/boards/lichuang-c3-dev/lichuang_c3_dev_board.cc @@ -104,7 +104,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/lichuang-dev/lichuang_dev_board.cc b/main/boards/lichuang-dev/lichuang_dev_board.cc index fe71bf7..7a69fde 100644 --- a/main/boards/lichuang-dev/lichuang_dev_board.cc +++ b/main/boards/lichuang-dev/lichuang_dev_board.cc @@ -134,7 +134,6 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); thing_manager.AddThing(iot::CreateThing("Screen")); } diff --git a/main/boards/lilygo-t-cameraplus-s3/lilygo-t-cameraplus-s3.cc b/main/boards/lilygo-t-cameraplus-s3/lilygo-t-cameraplus-s3.cc index 25d7a38..8f58b6c 100644 --- a/main/boards/lilygo-t-cameraplus-s3/lilygo-t-cameraplus-s3.cc +++ b/main/boards/lilygo-t-cameraplus-s3/lilygo-t-cameraplus-s3.cc @@ -208,7 +208,7 @@ private: void InitializeIot() { auto &thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/lilygo-t-circle-s3/lilygo-t-circle-s3.cc b/main/boards/lilygo-t-circle-s3/lilygo-t-circle-s3.cc index 99ab83a..d624dc8 100644 --- a/main/boards/lilygo-t-circle-s3/lilygo-t-circle-s3.cc +++ b/main/boards/lilygo-t-circle-s3/lilygo-t-circle-s3.cc @@ -226,7 +226,7 @@ private: void InitializeIot() { auto &thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/m5stack-core-s3/m5stack_core_s3.cc b/main/boards/m5stack-core-s3/m5stack_core_s3.cc index 6e7a5a5..c74a952 100644 --- a/main/boards/m5stack-core-s3/m5stack_core_s3.cc +++ b/main/boards/m5stack-core-s3/m5stack_core_s3.cc @@ -309,7 +309,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); thing_manager.AddThing(iot::CreateThing("Battery")); } diff --git a/main/boards/magiclick-2p4/magiclick_2p4_board.cc b/main/boards/magiclick-2p4/magiclick_2p4_board.cc index 4676888..8f4181d 100644 --- a/main/boards/magiclick-2p4/magiclick_2p4_board.cc +++ b/main/boards/magiclick-2p4/magiclick_2p4_board.cc @@ -180,7 +180,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/magiclick-2p5/magiclick_2p5_board.cc b/main/boards/magiclick-2p5/magiclick_2p5_board.cc index 4e279b4..a1c0a00 100644 --- a/main/boards/magiclick-2p5/magiclick_2p5_board.cc +++ b/main/boards/magiclick-2p5/magiclick_2p5_board.cc @@ -224,7 +224,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/magiclick-c3-v2/magiclick_c3_v2_board.cc b/main/boards/magiclick-c3-v2/magiclick_c3_v2_board.cc index a754b35..8620b11 100644 --- a/main/boards/magiclick-c3-v2/magiclick_c3_v2_board.cc +++ b/main/boards/magiclick-c3-v2/magiclick_c3_v2_board.cc @@ -211,7 +211,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/magiclick-c3/magiclick_c3_board.cc b/main/boards/magiclick-c3/magiclick_c3_board.cc index b2c8a73..71a21f0 100644 --- a/main/boards/magiclick-c3/magiclick_c3_board.cc +++ b/main/boards/magiclick-c3/magiclick_c3_board.cc @@ -169,7 +169,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc b/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc index c5ddf22..301b928 100644 --- a/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc +++ b/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc @@ -128,7 +128,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/sensecap-watcher/sensecap_watcher.cc b/main/boards/sensecap-watcher/sensecap_watcher.cc index 98de17e..cdac914 100644 --- a/main/boards/sensecap-watcher/sensecap_watcher.cc +++ b/main/boards/sensecap-watcher/sensecap_watcher.cc @@ -239,7 +239,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } public: diff --git a/main/boards/taiji-pi-s3/taiji_pi_s3.cc b/main/boards/taiji-pi-s3/taiji_pi_s3.cc index 1f1c98f..ca4c2d1 100644 --- a/main/boards/taiji-pi-s3/taiji_pi_s3.cc +++ b/main/boards/taiji-pi-s3/taiji_pi_s3.cc @@ -198,7 +198,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); } void InitializeMute() { gpio_reset_pin(AUDIO_MUTE_PIN); diff --git a/main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc b/main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc index 7f42c49..53dd362 100644 --- a/main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc +++ b/main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc @@ -162,7 +162,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); thing_manager.AddThing(iot::CreateThing("Battery")); } diff --git a/main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc b/main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc index a85b7a6..ac530f0 100644 --- a/main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc +++ b/main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc @@ -166,7 +166,7 @@ private: void InitializeIot() { auto& thing_manager = iot::ThingManager::GetInstance(); thing_manager.AddThing(iot::CreateThing("Speaker")); - thing_manager.AddThing(iot::CreateThing("Backlight")); + thing_manager.AddThing(iot::CreateThing("Screen")); thing_manager.AddThing(iot::CreateThing("Battery")); } diff --git a/main/display/display.cc b/main/display/display.cc index 7575fc5..2744bc0 100644 --- a/main/display/display.cc +++ b/main/display/display.cc @@ -15,6 +15,10 @@ #define TAG "Display" Display::Display() { + // Load theme from settings + Settings settings("display", false); + current_theme_name_ = settings.GetString("theme", "light"); + // Notification timer esp_timer_create_args_t notification_timer_args = { .callback = [](void *arg) { @@ -249,3 +253,9 @@ void Display::SetChatMessage(const char* role, const char* content) { } lv_label_set_text(chat_message_label_, content); } + +void Display::SetTheme(const std::string& theme_name) { + current_theme_name_ = theme_name; + Settings settings("display", true); + settings.SetString("theme", theme_name); +} diff --git a/main/display/display.h b/main/display/display.h index eef02b0..a510240 100644 --- a/main/display/display.h +++ b/main/display/display.h @@ -25,8 +25,8 @@ public: virtual void SetEmotion(const char* emotion); virtual void SetChatMessage(const char* role, const char* content); virtual void SetIcon(const char* icon); - virtual void SetTheme(const std::string& theme_name){} - virtual std::string GetTheme() { return "light"; } + virtual void SetTheme(const std::string& theme_name); + virtual std::string GetTheme() { return current_theme_name_; } inline int width() const { return width_; } inline int height() const { return height_; } @@ -50,6 +50,7 @@ protected: const char* battery_icon_ = nullptr; const char* network_icon_ = nullptr; bool muted_ = false; + std::string current_theme_name_; esp_timer_handle_t notification_timer_ = nullptr; esp_timer_handle_t update_timer_ = nullptr; diff --git a/main/display/lcd_display.cc b/main/display/lcd_display.cc index 4ae9b93..02bfe16 100644 --- a/main/display/lcd_display.cc +++ b/main/display/lcd_display.cc @@ -76,8 +76,6 @@ static const ThemeColors LIGHT_THEME = { // Current theme - initialize based on default config static ThemeColors current_theme = LIGHT_THEME; -// Add theme name variable to track current theme -static std::string current_theme_name = "light"; LV_FONT_DECLARE(font_awesome_30_4); @@ -144,17 +142,11 @@ SpiLcdDisplay::SpiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_h lv_display_set_offset(display_, offset_x, offset_y); } - // Load theme from settings - Settings settings("display", false); - std::string theme = settings.GetString("theme", ""); - if (!theme.empty()) { - if (theme == "dark") { - current_theme = DARK_THEME; - current_theme_name = "dark"; - } else if (theme == "light") { - current_theme = LIGHT_THEME; - current_theme_name = "light"; - } + // Update the theme + if (current_theme_name_ == "dark") { + current_theme = DARK_THEME; + } else if (current_theme_name_ == "light") { + current_theme = LIGHT_THEME; } SetupUI(); @@ -221,17 +213,11 @@ RgbLcdDisplay::RgbLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_h lv_display_set_offset(display_, offset_x, offset_y); } - // Load theme from settings - Settings settings("display", false); - std::string theme = settings.GetString("theme", ""); - if (!theme.empty()) { - if (theme == "dark") { - current_theme = DARK_THEME; - current_theme_name = "dark"; - } else if (theme == "light") { - current_theme = LIGHT_THEME; - current_theme_name = "light"; - } + // Update the theme + if (current_theme_name_ == "dark") { + current_theme = DARK_THEME; + } else if (current_theme_name_ == "light") { + current_theme = LIGHT_THEME; } SetupUI(); @@ -711,22 +697,16 @@ void LcdDisplay::SetIcon(const char* icon) { void LcdDisplay::SetTheme(const std::string& theme_name) { DisplayLockGuard lock(this); - // Update the current theme based on the theme name if (theme_name == "dark" || theme_name == "DARK") { current_theme = DARK_THEME; - current_theme_name = "dark"; } else if (theme_name == "light" || theme_name == "LIGHT") { current_theme = LIGHT_THEME; - current_theme_name = "light"; } else { // Invalid theme name, return false + ESP_LOGE(TAG, "Invalid theme name: %s", theme_name.c_str()); return; } - // Save theme to settings - Settings settings("display", true); - settings.SetString("theme", current_theme_name); - // Get the active screen lv_obj_t* screen = lv_screen_active(); @@ -902,17 +882,7 @@ void LcdDisplay::SetTheme(const std::string& theme_name) { if (low_battery_popup_ != nullptr) { lv_obj_set_style_bg_color(low_battery_popup_, current_theme.low_battery, 0); } -} -std::string LcdDisplay::GetTheme() { - // First try to read from settings - Settings settings("display", false); - std::string theme = settings.GetString("theme", "light"); - - // If theme is not set in settings, return the current theme - if (theme.empty()) { - return current_theme_name; - } - - return theme; + // No errors occurred. Save theme to settings + Display::SetTheme(theme_name); } diff --git a/main/display/lcd_display.h b/main/display/lcd_display.h index 7ee0be9..a12c893 100644 --- a/main/display/lcd_display.h +++ b/main/display/lcd_display.h @@ -41,7 +41,6 @@ public: // Add theme switching function virtual void SetTheme(const std::string& theme_name) override; - virtual std::string GetTheme() override; }; // RGB LCD显示器 diff --git a/main/iot/things/backlight.cc b/main/iot/things/backlight.cc deleted file mode 100644 index 1e7ae81..0000000 --- a/main/iot/things/backlight.cc +++ /dev/null @@ -1,38 +0,0 @@ -#include "iot/thing.h" -#include "board.h" -#include "display/lcd_display.h" -#include "settings.h" - -#include - -#define TAG "Backlight" - -namespace iot { - -// 这里仅定义 Backlight 的属性和方法,不包含具体的实现 -class Backlight : public Thing { -public: - Backlight() : Thing("Backlight", "屏幕背光") { - // 定义设备的属性 - properties_.AddNumberProperty("brightness", "当前亮度百分比", [this]() -> int { - // 这里可以添加获取当前亮度的逻辑 - auto backlight = Board::GetInstance().GetBacklight(); - return backlight ? backlight->brightness() : 0; - }); - - // 定义设备可以被远程执行的指令 - methods_.AddMethod("SetBrightness", "设置亮度", ParameterList({ - Parameter("brightness", "0到100之间的整数", kValueTypeNumber, true) - }), [this](const ParameterList& parameters) { - uint8_t brightness = static_cast(parameters["brightness"].number()); - auto backlight = Board::GetInstance().GetBacklight(); - if (backlight) { - backlight->SetBrightness(brightness, true); - } - }); - } -}; - -} // namespace iot - -DECLARE_THING(Backlight); diff --git a/main/iot/things/screen.cc b/main/iot/things/screen.cc index 67fcee9..eea1606 100644 --- a/main/iot/things/screen.cc +++ b/main/iot/things/screen.cc @@ -13,13 +13,19 @@ namespace iot { // 这里仅定义 Screen 的属性和方法,不包含具体的实现 class Screen : public Thing { public: - Screen() : Thing("Screen", "这是一个屏幕,可设置主题") { + Screen() : Thing("Screen", "这是一个屏幕,可设置主题和亮度") { // 定义设备的属性 properties_.AddStringProperty("theme", "主题", [this]() -> std::string { auto theme = Board::GetInstance().GetDisplay()->GetTheme(); return theme; }); + properties_.AddNumberProperty("brightness", "当前亮度百分比", [this]() -> int { + // 这里可以添加获取当前亮度的逻辑 + auto backlight = Board::GetInstance().GetBacklight(); + return backlight ? backlight->brightness() : 100; + }); + // 定义设备可以被远程执行的指令 methods_.AddMethod("SetTheme", "设置屏幕主题", ParameterList({ Parameter("theme_name", "主题模式, light 或 dark", kValueTypeString, true) @@ -30,6 +36,16 @@ public: display->SetTheme(theme_name); } }); + + methods_.AddMethod("SetBrightness", "设置亮度", ParameterList({ + Parameter("brightness", "0到100之间的整数", kValueTypeNumber, true) + }), [this](const ParameterList& parameters) { + uint8_t brightness = static_cast(parameters["brightness"].number()); + auto backlight = Board::GetInstance().GetBacklight(); + if (backlight) { + backlight->SetBrightness(brightness, true); + } + }); } };