diff --git a/firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino b/firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino index ddc2090..1b26645 100644 --- a/firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino +++ b/firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino @@ -1225,6 +1225,18 @@ static void save_dashboard_connection_config(const String &ssid, const String &p dashboard_configured = cargo_wifi_ssid.length() > 0; } +static void setup_keyboard_event_cb(lv_event_t *event) +{ + lv_event_code_t code = lv_event_get_code(event); + + if (code == LV_EVENT_READY || code == LV_EVENT_CANCEL) { + if (setup_keyboard != nullptr) { + lv_keyboard_set_textarea(setup_keyboard, nullptr); + lv_obj_add_flag(setup_keyboard, LV_OBJ_FLAG_HIDDEN); + } + } +} + static void setup_textarea_event_cb(lv_event_t *event) { lv_event_code_t code = lv_event_get_code(event); @@ -1264,6 +1276,11 @@ static void setup_save_event_cb(lv_event_t *event) return; } + if (setup_keyboard != nullptr) { + lv_keyboard_set_textarea(setup_keyboard, nullptr); + lv_obj_add_flag(setup_keyboard, LV_OBJ_FLAG_HIDDEN); + } + String ssid = lv_textarea_get_text(setup_ssid_textarea); String password = lv_textarea_get_text(setup_password_textarea); String api_base = lv_textarea_get_text(setup_api_textarea); @@ -1305,6 +1322,11 @@ static void setup_reset_event_cb(lv_event_t *event) return; } + if (setup_keyboard != nullptr) { + lv_keyboard_set_textarea(setup_keyboard, nullptr); + lv_obj_add_flag(setup_keyboard, LV_OBJ_FLAG_HIDDEN); + } + dashboard_preferences.clear(); cargo_wifi_ssid = ""; cargo_wifi_password = ""; @@ -1369,9 +1391,18 @@ static void show_dashboard_setup_screen() lv_label_set_long_mode(setup_status_label, LV_LABEL_LONG_WRAP); lv_obj_align(setup_status_label, LV_ALIGN_TOP_LEFT, 548, 410); + lv_obj_t *done_button = lv_btn_create(screen); + lv_obj_set_size(done_button, 180, 48); + lv_obj_align(done_button, LV_ALIGN_BOTTOM_RIGHT, -32, -188); + lv_obj_add_event_cb(done_button, setup_keyboard_event_cb, LV_EVENT_CLICKED, nullptr); + lv_obj_t *done_label = lv_label_create(done_button); + lv_label_set_text(done_label, "Done"); + lv_obj_center(done_label); + setup_keyboard = lv_keyboard_create(screen); lv_obj_set_size(setup_keyboard, 1024, 180); lv_obj_align(setup_keyboard, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_obj_add_event_cb(setup_keyboard, setup_keyboard_event_cb, LV_EVENT_ALL, nullptr); lv_obj_add_flag(setup_keyboard, LV_OBJ_FLAG_HIDDEN); }