diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index ef464a3..d1d2b9b 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,4 +1,4 @@ -idf_component_register(SRCS "HistoryStore.cpp" "KnxWorker.cpp" "Nvs.cpp" "main.cpp" "Display.cpp" "Touch.cpp" "Gui.cpp" "Wifi.cpp" "LvglIdle.c" "Gui/WifiSetting.cpp" "Gui/EthSetting.cpp" "Hardware/Eth.cpp" "WidgetManager.cpp" "WidgetConfig.cpp" "SdCard.cpp" "Fonts.cpp" +idf_component_register(SRCS "HistoryStore.cpp" "KnxWorker.cpp" "Nvs.cpp" "main.cpp" "Display.cpp" "Touch.cpp" "Gui.cpp" "Wifi.cpp" "LvglIdle.c" "Hardware/Eth.cpp" "WidgetManager.cpp" "WidgetConfig.cpp" "SdCard.cpp" "Fonts.cpp" "widgets/Widget.cpp" "widgets/LabelWidget.cpp" "widgets/ButtonWidget.cpp" diff --git a/main/Gui.cpp b/main/Gui.cpp index cde6808..c4bd245 100644 --- a/main/Gui.cpp +++ b/main/Gui.cpp @@ -3,8 +3,6 @@ #include "esp_log.h" #include "esp_heap_caps.h" #include "esp_system.h" -#include "Gui/WifiSetting.hpp" -#include "Gui/EthSetting.hpp" #include "WidgetManager.hpp" #include "lvgl.h" #include "freertos/FreeRTOS.h" @@ -12,14 +10,6 @@ KnxWorker Gui::knxWorker; // Define the static member -static void screen_long_press_handler(lv_event_t * e) -{ - if (lv_event_get_code(e) == LV_EVENT_LONG_PRESSED) { - //WifiSetting::instance().show(); - EthSetting::instance().show(); - } -} - static void widget_manager_timer_cb(lv_timer_t* timer) { (void)timer; @@ -37,9 +27,6 @@ void Gui::create() WidgetManager::instance().init(); if (esp_lv_adapter_lock(-1) == ESP_OK) { - // TEMP: Disabled long press handler for testing - // lv_obj_add_event_cb(lv_scr_act(), screen_long_press_handler, - // LV_EVENT_LONG_PRESSED, NULL); lv_timer_create(widget_manager_timer_cb, 50, nullptr); esp_lv_adapter_unlock(); diff --git a/main/Gui/EthSetting.cpp b/main/Gui/EthSetting.cpp deleted file mode 100644 index fb6c638..0000000 --- a/main/Gui/EthSetting.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "EthSetting.hpp" -#include "../Fonts.hpp" -#include "esp_lv_adapter.h" -#include "esp_log.h" -#include - -static const char* TAG = "EthSetting"; - -EthSetting& EthSetting::instance() { - static EthSetting instance; - return instance; -} - -void EthSetting::show() { - if (visible_) { - return; - } - - ESP_LOGI(TAG, "Showing ETH settings"); - - if (esp_lv_adapter_lock(-1) == ESP_OK) { - createUI(); - visible_ = true; - esp_lv_adapter_unlock(); - } -} - -void EthSetting::hide() { - if (!visible_) { - return; - } - - ESP_LOGI(TAG, "Hiding ETH settings"); - - if (esp_lv_adapter_lock(-1) == ESP_OK) { - - if (overlay_) { - lv_obj_del(overlay_); - overlay_ = nullptr; - } - visible_ = false; - esp_lv_adapter_unlock(); - } -} - -bool EthSetting::isVisible() { - return visible_; -} - -void EthSetting::createUI() { - overlay_ = lv_obj_create(lv_scr_act()); - lv_obj_set_size(overlay_, LV_PCT(100), LV_PCT(100)); - lv_obj_set_style_bg_color(overlay_, lv_color_hex(0x202020), 0); - lv_obj_set_style_bg_opa(overlay_, LV_OPA_COVER, 0); - lv_obj_set_style_text_font(overlay_, Fonts::bySizeIndex(0), 0); - lv_obj_set_style_pad_all(overlay_, 10, 0); - lv_obj_clear_flag(overlay_, LV_OBJ_FLAG_SCROLLABLE); - - lv_obj_t* header = lv_obj_create(overlay_); - lv_obj_set_size(header, LV_PCT(100), 50); - lv_obj_align(header, LV_ALIGN_TOP_MID, 0, 0); - lv_obj_set_style_bg_color(header, lv_color_hex(0x303030), 0); - lv_obj_set_style_pad_all(header, 5, 0); - lv_obj_clear_flag(header, LV_OBJ_FLAG_SCROLLABLE); - - lv_obj_t* closeBtn = lv_btn_create(header); - lv_obj_set_size(closeBtn, 40, 40); - lv_obj_align(closeBtn, LV_ALIGN_LEFT_MID, 0, 0); - lv_obj_set_style_bg_color(closeBtn, lv_color_hex(0x804040), 0); - //lv_obj_add_event_cb(closeBtn, onCloseClick, LV_EVENT_CLICKED, nullptr); - - lv_obj_t* closeLbl = lv_label_create(closeBtn); - lv_label_set_text(closeLbl, "X"); - lv_obj_center(closeLbl); - - lv_obj_t* titleLbl = lv_label_create(header); - lv_label_set_text(titleLbl, "Eth Settings"); - lv_obj_set_style_text_font(titleLbl, Fonts::bySizeIndex(0), 0); - lv_obj_align(titleLbl, LV_ALIGN_CENTER, 0, 0); -} - - -void EthSetting::onCloseClick(lv_event_t* e) { - (void)e; - EthSetting::instance().hide(); -} diff --git a/main/Gui/EthSetting.hpp b/main/Gui/EthSetting.hpp deleted file mode 100644 index 0524aeb..0000000 --- a/main/Gui/EthSetting.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "lvgl.h" -#include -#include - -class EthSetting { -public: - static EthSetting& instance(); - - void show(); - void hide(); - bool isVisible(); - -private: - EthSetting() = default; - EthSetting(const EthSetting&) = delete; - EthSetting& operator=(const EthSetting&) = delete; - - void createUI(); - - static void onCloseClick(lv_event_t* e); - - lv_obj_t* overlay_ = nullptr; - bool visible_ = false; -}; diff --git a/main/Gui/WifiSetting.cpp b/main/Gui/WifiSetting.cpp deleted file mode 100644 index 072442e..0000000 --- a/main/Gui/WifiSetting.cpp +++ /dev/null @@ -1,413 +0,0 @@ -#include "WifiSetting.hpp" -#include "../Wifi.hpp" -#include "../Fonts.hpp" -#include "esp_lv_adapter.h" -#include "esp_log.h" -#include - -static const char* TAG = "WifiSetting"; - -WifiSetting& WifiSetting::instance() { - static WifiSetting instance; - return instance; -} - -void WifiSetting::show() { - if (visible_) { - return; - } - - ESP_LOGI(TAG, "Showing WiFi settings"); - - if (esp_lv_adapter_lock(-1) == ESP_OK) { - createUI(); - visible_ = true; - - Wifi::instance().setStatusCallback([](bool connected) { - if (esp_lv_adapter_lock(100) == ESP_OK) { - WifiSetting::instance().updateStatusDisplay(); - esp_lv_adapter_unlock(); - } - }); - - refreshNetworkList(); - refreshSavedNetworks(); - updateStatusDisplay(); - - esp_lv_adapter_unlock(); - } -} - -void WifiSetting::hide() { - if (!visible_) { - return; - } - - ESP_LOGI(TAG, "Hiding WiFi settings"); - - if (esp_lv_adapter_lock(-1) == ESP_OK) { - Wifi::instance().setStatusCallback(nullptr); - - if (overlay_) { - lv_obj_del(overlay_); - overlay_ = nullptr; - statusLabel_ = nullptr; - disconnectBtn_ = nullptr; - networkList_ = nullptr; - savedList_ = nullptr; - passwordDialog_ = nullptr; - passwordInput_ = nullptr; - keyboard_ = nullptr; - } - visible_ = false; - esp_lv_adapter_unlock(); - } -} - -bool WifiSetting::isVisible() { - return visible_; -} - -void WifiSetting::createUI() { - overlay_ = lv_obj_create(lv_scr_act()); - lv_obj_set_size(overlay_, LV_PCT(100), LV_PCT(100)); - lv_obj_set_style_bg_color(overlay_, lv_color_hex(0x202020), 0); - lv_obj_set_style_bg_opa(overlay_, LV_OPA_COVER, 0); - lv_obj_set_style_text_font(overlay_, Fonts::bySizeIndex(0), 0); - lv_obj_set_style_pad_all(overlay_, 10, 0); - lv_obj_clear_flag(overlay_, LV_OBJ_FLAG_SCROLLABLE); - - lv_obj_t* header = lv_obj_create(overlay_); - lv_obj_set_size(header, LV_PCT(100), 50); - lv_obj_align(header, LV_ALIGN_TOP_MID, 0, 0); - lv_obj_set_style_bg_color(header, lv_color_hex(0x303030), 0); - lv_obj_set_style_pad_all(header, 5, 0); - lv_obj_clear_flag(header, LV_OBJ_FLAG_SCROLLABLE); - - lv_obj_t* closeBtn = lv_btn_create(header); - lv_obj_set_size(closeBtn, 40, 40); - lv_obj_align(closeBtn, LV_ALIGN_LEFT_MID, 0, 0); - lv_obj_set_style_bg_color(closeBtn, lv_color_hex(0x804040), 0); - //lv_obj_add_event_cb(closeBtn, onCloseClick, LV_EVENT_CLICKED, nullptr); - - lv_obj_t* closeLbl = lv_label_create(closeBtn); - lv_label_set_text(closeLbl, "X"); - lv_obj_center(closeLbl); - - lv_obj_t* titleLbl = lv_label_create(header); - lv_label_set_text(titleLbl, "WiFi Settings"); - lv_obj_set_style_text_font(titleLbl, Fonts::bySizeIndex(0), 0); - lv_obj_align(titleLbl, LV_ALIGN_CENTER, 0, 0); - - lv_obj_t* statusSection = lv_obj_create(overlay_); - lv_obj_set_size(statusSection, LV_PCT(100), 80); - lv_obj_align_to(statusSection, header, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); - lv_obj_set_style_bg_color(statusSection, lv_color_hex(0x303030), 0); - lv_obj_set_style_pad_all(statusSection, 10, 0); - lv_obj_clear_flag(statusSection, LV_OBJ_FLAG_SCROLLABLE); - - statusLabel_ = lv_label_create(statusSection); - lv_label_set_text(statusLabel_, "Status: Nicht verbunden"); - lv_obj_align(statusLabel_, LV_ALIGN_LEFT_MID, 0, 0); - - disconnectBtn_ = lv_btn_create(statusSection); - lv_obj_set_size(disconnectBtn_, 100, 40); - lv_obj_align(disconnectBtn_, LV_ALIGN_RIGHT_MID, 0, 0); - //lv_obj_add_event_cb(disconnectBtn_, onDisconnectClick, LV_EVENT_CLICKED, nullptr); - lv_obj_add_flag(disconnectBtn_, LV_OBJ_FLAG_HIDDEN); - - lv_obj_t* disconnectLbl = lv_label_create(disconnectBtn_); - lv_label_set_text(disconnectLbl, "Trennen"); - lv_obj_center(disconnectLbl); - - lv_obj_t* availableSection = lv_obj_create(overlay_); - lv_obj_set_size(availableSection, LV_PCT(100), 280); - lv_obj_align_to(availableSection, statusSection, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); - lv_obj_set_style_bg_color(availableSection, lv_color_hex(0x303030), 0); - lv_obj_set_style_pad_all(availableSection, 10, 0); - lv_obj_clear_flag(availableSection, LV_OBJ_FLAG_SCROLLABLE); - - lv_obj_t* availableHeader = lv_obj_create(availableSection); - lv_obj_set_size(availableHeader, LV_PCT(100), 40); - lv_obj_align(availableHeader, LV_ALIGN_TOP_MID, 0, 0); - lv_obj_set_style_bg_opa(availableHeader, LV_OPA_TRANSP, 0); - lv_obj_set_style_border_width(availableHeader, 0, 0); - lv_obj_set_style_pad_all(availableHeader, 0, 0); - lv_obj_clear_flag(availableHeader, LV_OBJ_FLAG_SCROLLABLE); - - lv_obj_t* availableLbl = lv_label_create(availableHeader); - lv_label_set_text(availableLbl, "Verfuegbare Netzwerke:"); - lv_obj_align(availableLbl, LV_ALIGN_LEFT_MID, 0, 0); - - lv_obj_t* scanBtn = lv_btn_create(availableHeader); - lv_obj_set_size(scanBtn, 100, 35); - lv_obj_align(scanBtn, LV_ALIGN_RIGHT_MID, 0, 0); - //lv_obj_add_event_cb(scanBtn, onScanClick, LV_EVENT_CLICKED, nullptr); - - lv_obj_t* scanLbl = lv_label_create(scanBtn); - lv_label_set_text(scanLbl, "Scannen"); - lv_obj_center(scanLbl); - - networkList_ = lv_list_create(availableSection); - lv_obj_set_size(networkList_, LV_PCT(100), 220); - lv_obj_align_to(networkList_, availableHeader, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); - lv_obj_set_style_bg_color(networkList_, lv_color_hex(0x252525), 0); - - lv_obj_t* savedSection = lv_obj_create(overlay_); - lv_obj_set_size(savedSection, LV_PCT(100), 200); - lv_obj_align_to(savedSection, availableSection, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); - lv_obj_set_style_bg_color(savedSection, lv_color_hex(0x303030), 0); - lv_obj_set_style_pad_all(savedSection, 10, 0); - lv_obj_clear_flag(savedSection, LV_OBJ_FLAG_SCROLLABLE); - - lv_obj_t* savedLbl = lv_label_create(savedSection); - lv_label_set_text(savedLbl, "Gespeicherte Netzwerke:"); - lv_obj_align(savedLbl, LV_ALIGN_TOP_LEFT, 0, 0); - - savedList_ = lv_list_create(savedSection); - lv_obj_set_size(savedList_, LV_PCT(100), 150); - lv_obj_align(savedList_, LV_ALIGN_BOTTOM_MID, 0, 0); - lv_obj_set_style_bg_color(savedList_, lv_color_hex(0x252525), 0); -} - -void WifiSetting::refreshNetworkList() { - ESP_LOGI(TAG, "Starting network scan"); - - if (networkList_) { - lv_obj_clean(networkList_); - lv_obj_t* scanningLbl = lv_list_add_text(networkList_, "Scanning..."); - (void)scanningLbl; - } - - Wifi::instance().scan([](std::vector& networks) { - WifiSetting& settings = WifiSetting::instance(); - settings.scannedNetworks_ = networks; - - if (esp_lv_adapter_lock(100) == ESP_OK) { - if (settings.networkList_) { - lv_obj_clean(settings.networkList_); - - for (const auto& ap : networks) { - char signalStr[64]; - int bars = 0; - if (ap.rssi >= -50) bars = 4; - else if (ap.rssi >= -60) bars = 3; - else if (ap.rssi >= -70) bars = 2; - else bars = 1; - - const char* barSymbols[] = {"[# ]", "[## ]", "[### ]", "[####]"}; - snprintf(signalStr, sizeof(signalStr), "%s %s %ddBm", - (const char*)ap.ssid, barSymbols[bars - 1], ap.rssi); - - lv_obj_t* btn = lv_list_add_btn(settings.networkList_, LV_SYMBOL_WIFI, signalStr); - //lv_obj_add_event_cb(btn, onNetworkSelect, LV_EVENT_CLICKED, nullptr); - - size_t ssidLen = strlen((const char*)ap.ssid); - char* ssidCopy = (char*)lv_malloc(ssidLen + 1); - strcpy(ssidCopy, (const char*)ap.ssid); - lv_obj_set_user_data(btn, ssidCopy); - } - - if (networks.empty()) { - lv_list_add_text(settings.networkList_, "Keine Netzwerke gefunden"); - } - } - esp_lv_adapter_unlock(); - } - }); -} - -void WifiSetting::refreshSavedNetworks() { - if (!savedList_) return; - - lv_obj_clean(savedList_); - - auto savedNetworks = Wifi::instance().getSavedNetworks(); - - for (const auto& ssid : savedNetworks) { - lv_obj_t* item = lv_obj_create(savedList_); - lv_obj_set_size(item, LV_PCT(100), 40); - lv_obj_set_style_bg_color(item, lv_color_hex(0x353535), 0); - lv_obj_set_style_pad_all(item, 5, 0); - lv_obj_clear_flag(item, LV_OBJ_FLAG_SCROLLABLE); - - lv_obj_t* nameLbl = lv_label_create(item); - lv_label_set_text(nameLbl, ssid.c_str()); - lv_obj_align(nameLbl, LV_ALIGN_LEFT_MID, 0, 0); - - lv_obj_t* deleteBtn = lv_btn_create(item); - lv_obj_set_size(deleteBtn, 80, 30); - lv_obj_align(deleteBtn, LV_ALIGN_RIGHT_MID, 0, 0); - lv_obj_set_style_bg_color(deleteBtn, lv_color_hex(0x804040), 0); - //lv_obj_add_event_cb(deleteBtn, onDeleteSavedClick, LV_EVENT_CLICKED, nullptr); - - char* ssidCopy = (char*)lv_malloc(ssid.size() + 1); - strcpy(ssidCopy, ssid.c_str()); - lv_obj_set_user_data(deleteBtn, ssidCopy); - - lv_obj_t* deleteLbl = lv_label_create(deleteBtn); - lv_label_set_text(deleteLbl, "Loeschen"); - lv_obj_center(deleteLbl); - } - - if (savedNetworks.empty()) { - lv_list_add_text(savedList_, "Keine gespeicherten Netzwerke"); - } -} - -void WifiSetting::updateStatusDisplay() { - if (!statusLabel_ || !disconnectBtn_) return; - - Wifi& wifi = Wifi::instance(); - - if (wifi.isConnected()) { - char statusText[64]; - snprintf(statusText, sizeof(statusText), "Verbunden: %s", wifi.getCurrentSSID().c_str()); - lv_label_set_text(statusLabel_, statusText); - lv_obj_clear_flag(disconnectBtn_, LV_OBJ_FLAG_HIDDEN); - } else { - lv_label_set_text(statusLabel_, "Status: Nicht verbunden"); - lv_obj_add_flag(disconnectBtn_, LV_OBJ_FLAG_HIDDEN); - } -} - -static void showPasswordDialogAsync(void* arg) { - WifiSetting::instance().createPasswordDialogUI(); -} - -void WifiSetting::showPasswordDialog(const char* ssid) { - selectedSSID_ = ssid; - lv_async_call(showPasswordDialogAsync, nullptr); -} - -void WifiSetting::createPasswordDialogUI() { - if (passwordDialog_) return; - - ESP_LOGI(TAG, "Creating password dialog for: %s", selectedSSID_.c_str()); - - passwordDialog_ = lv_obj_create(lv_scr_act()); - lv_obj_set_size(passwordDialog_, LV_PCT(100), LV_PCT(100)); - lv_obj_set_pos(passwordDialog_, 0, 0); - lv_obj_set_style_bg_color(passwordDialog_, lv_color_hex(0x303030), 0); - lv_obj_set_style_bg_opa(passwordDialog_, LV_OPA_COVER, 0); - lv_obj_set_style_pad_all(passwordDialog_, 20, 0); - lv_obj_clear_flag(passwordDialog_, LV_OBJ_FLAG_SCROLLABLE); - - char title[64]; - snprintf(title, sizeof(title), "Verbinden mit: %s", selectedSSID_.c_str()); - lv_obj_t* titleLbl = lv_label_create(passwordDialog_); - lv_label_set_text(titleLbl, title); - lv_obj_align(titleLbl, LV_ALIGN_TOP_MID, 0, 10); - - lv_obj_t* pwLabel = lv_label_create(passwordDialog_); - lv_label_set_text(pwLabel, "Passwort:"); - lv_obj_align(pwLabel, LV_ALIGN_TOP_LEFT, 10, 50); - - passwordInput_ = lv_textarea_create(passwordDialog_); - lv_obj_set_size(passwordInput_, LV_PCT(90), 50); - lv_obj_align(passwordInput_, LV_ALIGN_TOP_MID, 0, 80); - lv_textarea_set_password_mode(passwordInput_, true); - lv_textarea_set_one_line(passwordInput_, true); - lv_textarea_set_placeholder_text(passwordInput_, "Passwort eingeben..."); - - lv_obj_t* cancelBtn = lv_btn_create(passwordDialog_); - lv_obj_set_size(cancelBtn, 150, 50); - lv_obj_align(cancelBtn, LV_ALIGN_TOP_LEFT, 20, 150); - lv_obj_set_style_bg_color(cancelBtn, lv_color_hex(0x606060), 0); - //lv_obj_add_event_cb(cancelBtn, onCancelClick, LV_EVENT_CLICKED, nullptr); - - lv_obj_t* cancelLbl = lv_label_create(cancelBtn); - lv_label_set_text(cancelLbl, "Abbrechen"); - lv_obj_center(cancelLbl); - - lv_obj_t* connectBtn = lv_btn_create(passwordDialog_); - lv_obj_set_size(connectBtn, 150, 50); - lv_obj_align(connectBtn, LV_ALIGN_TOP_RIGHT, -20, 150); - lv_obj_set_style_bg_color(connectBtn, lv_color_hex(0x408040), 0); - //lv_obj_add_event_cb(connectBtn, onConnectClick, LV_EVENT_CLICKED, nullptr); - - lv_obj_t* connectLbl = lv_label_create(connectBtn); - lv_label_set_text(connectLbl, "Verbinden"); - lv_obj_center(connectLbl); - - keyboard_ = lv_keyboard_create(passwordDialog_); - lv_obj_set_size(keyboard_, LV_PCT(100), 300); - lv_obj_align(keyboard_, LV_ALIGN_BOTTOM_MID, 0, 0); - lv_keyboard_set_textarea(keyboard_, passwordInput_); - //lv_obj_add_event_cb(keyboard_, onKeyboardReady, LV_EVENT_READY, nullptr); - - ESP_LOGI(TAG, "Password dialog created"); -} - -void WifiSetting::hidePasswordDialog() { - if (passwordDialog_) { - lv_obj_del(passwordDialog_); - passwordDialog_ = nullptr; - passwordInput_ = nullptr; - keyboard_ = nullptr; - } - selectedSSID_.clear(); -} - -void WifiSetting::onCloseClick(lv_event_t* e) { - (void)e; - WifiSetting::instance().hide(); -} - -void WifiSetting::onNetworkSelect(lv_event_t* e) { - lv_obj_t* btn = (lv_obj_t*)lv_event_get_target(e); - char* ssid = (char*)lv_obj_get_user_data(btn); - if (ssid) { - ESP_LOGI(TAG, "Selected network: %s", ssid); - WifiSetting::instance().showPasswordDialog(ssid); - } -} - -void WifiSetting::onScanClick(lv_event_t* e) { - (void)e; - WifiSetting::instance().refreshNetworkList(); -} - -void WifiSetting::onDisconnectClick(lv_event_t* e) { - (void)e; - Wifi::instance().disconnect(); - WifiSetting::instance().updateStatusDisplay(); -} - -void WifiSetting::onConnectClick(lv_event_t* e) { - (void)e; - WifiSetting& settings = WifiSetting::instance(); - - if (settings.passwordInput_ && !settings.selectedSSID_.empty()) { - const char* password = lv_textarea_get_text(settings.passwordInput_); - - ESP_LOGI(TAG, "Connecting to %s", settings.selectedSSID_.c_str()); - - Wifi::instance().connect(settings.selectedSSID_.c_str(), password); - Wifi::instance().saveNetwork(settings.selectedSSID_.c_str(), password); - - settings.hidePasswordDialog(); - settings.refreshSavedNetworks(); - } -} - -void WifiSetting::onCancelClick(lv_event_t* e) { - (void)e; - WifiSetting::instance().hidePasswordDialog(); -} - -void WifiSetting::onDeleteSavedClick(lv_event_t* e) { - lv_obj_t* btn = (lv_obj_t*)lv_event_get_target(e); - char* ssid = (char*)lv_obj_get_user_data(btn); - if (ssid) { - ESP_LOGI(TAG, "Deleting saved network: %s", ssid); - Wifi::instance().removeNetwork(ssid); - lv_free(ssid); - WifiSetting::instance().refreshSavedNetworks(); - } -} - -void WifiSetting::onKeyboardReady(lv_event_t* e) { - (void)e; - onConnectClick(nullptr); -} diff --git a/main/Gui/WifiSetting.hpp b/main/Gui/WifiSetting.hpp deleted file mode 100644 index 92e89c4..0000000 --- a/main/Gui/WifiSetting.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include "lvgl.h" -#include "esp_wifi.h" -#include -#include - -class WifiSetting { -public: - static WifiSetting& instance(); - - void show(); - void hide(); - bool isVisible(); - void createPasswordDialogUI(); - -private: - WifiSetting() = default; - WifiSetting(const WifiSetting&) = delete; - WifiSetting& operator=(const WifiSetting&) = delete; - - void createUI(); - void refreshNetworkList(); - void refreshSavedNetworks(); - void updateStatusDisplay(); - void showPasswordDialog(const char* ssid); - void hidePasswordDialog(); - - static void onCloseClick(lv_event_t* e); - static void onNetworkSelect(lv_event_t* e); - static void onScanClick(lv_event_t* e); - static void onDisconnectClick(lv_event_t* e); - static void onConnectClick(lv_event_t* e); - static void onCancelClick(lv_event_t* e); - static void onDeleteSavedClick(lv_event_t* e); - static void onKeyboardReady(lv_event_t* e); - - lv_obj_t* overlay_ = nullptr; - lv_obj_t* statusLabel_ = nullptr; - lv_obj_t* disconnectBtn_ = nullptr; - lv_obj_t* networkList_ = nullptr; - lv_obj_t* savedList_ = nullptr; - lv_obj_t* passwordDialog_ = nullptr; - lv_obj_t* passwordInput_ = nullptr; - lv_obj_t* keyboard_ = nullptr; - - std::string selectedSSID_; - std::vector scannedNetworks_; - - bool visible_ = false; -};