diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp index 137e249..63aaf74 100644 --- a/CYD-Klipper/src/ui/panels/settings_panel.cpp +++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp @@ -27,6 +27,10 @@ static void reset_calibration_click(lv_event_t * e){ ESP.restart(); } +static void reset_click(lv_event_t * e){ + ESP.restart(); +} + static void reset_wifi_click(lv_event_t * e){ global_config.wifi_configured = false; write_global_config(); @@ -206,4 +210,5 @@ void settings_panel_init(lv_obj_t* panel){ #endif // CYD_SCREEN_DISABLE_TOUCH_CALIBRATION lv_create_custom_menu_button("Configure WiFi", panel, reset_wifi_click, "Restart"); + lv_create_custom_menu_button("Restart ESP", panel, reset_click, "Restart"); } \ No newline at end of file diff --git a/CYD-Klipper/src/ui/wifi_setup.cpp b/CYD-Klipper/src/ui/wifi_setup.cpp index 7c5dd15..eb10ee8 100644 --- a/CYD-Klipper/src/ui/wifi_setup.cpp +++ b/CYD-Klipper/src/ui/wifi_setup.cpp @@ -11,39 +11,19 @@ void wifi_pass_entry(const char* ssid); const char * current_ssid_ptr = NULL; static void reset_btn_event_handler(lv_event_t * e) { - lv_event_code_t code = lv_event_get_code(e); - - if(code == LV_EVENT_CLICKED) { - global_config.wifi_configured = false; - wifi_init_inner(); - } + global_config.wifi_configured = false; + wifi_init_inner(); } -static void refresh_btn_event_handler(lv_event_t * e){ - lv_event_code_t code = lv_event_get_code(e); - - if(code == LV_EVENT_CLICKED) { - wifi_init_inner(); - } -} - -static void ta_event_cb(lv_event_t * e) { - lv_event_code_t code = lv_event_get_code(e); +static void keyboard_cb_enter_password(lv_event_t * e) { lv_obj_t * ta = lv_event_get_target(e); - - if (code == LV_EVENT_READY) - { - const char * txt = lv_textarea_get_text(ta); - global_config.wifi_configured = true; - strcpy(global_config.wifi_SSID, current_ssid_ptr); - strcpy(global_config.wifi_password, txt); - write_global_config(); - wifi_init_inner(); - } - else if (code == LV_EVENT_CANCEL) - { - wifi_init_inner(); - } + lv_obj_t * kb = (lv_obj_t *)lv_event_get_user_data(e); + const char * txt = lv_textarea_get_text(ta); + global_config.wifi_configured = true; + strcpy(global_config.wifi_SSID, current_ssid_ptr); + strcpy(global_config.wifi_password, txt); + write_global_config(); + wifi_init_inner(); } static void btn_reuse_password(lv_event_t * e) @@ -53,14 +33,10 @@ static void btn_reuse_password(lv_event_t * e) static void btn_no_reuse_password(lv_event_t * e) { - const char * ssid = (const char *)lv_event_get_user_data(e); - global_config.wifi_SSID[0] = '\0'; - wifi_pass_entry(ssid); + lv_create_keyboard_text_entry(keyboard_cb_enter_password, "Enter WiFi Password", LV_KEYBOARD_MODE_TEXT_LOWER, CYD_SCREEN_WIDTH_PX * 0.75, 63, "", false); } void ask_reuse_password(const char * ssid){ - lv_obj_clean(lv_scr_act()); - lv_obj_t * root = lv_obj_create(lv_scr_act()); lv_obj_set_size(root, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2); lv_obj_align(root, LV_ALIGN_CENTER, 0, 0); @@ -75,6 +51,7 @@ void ask_reuse_password(const char * ssid){ lv_obj_t * no_btn = lv_btn_create(button_row); lv_obj_add_event_cb(no_btn, btn_no_reuse_password, LV_EVENT_CLICKED, (void*)ssid); + lv_obj_add_event_cb(no_btn, destroy_event_user_data, LV_EVENT_CLICKED, root); lv_obj_set_height(no_btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); lv_obj_set_width(no_btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX); lv_obj_set_style_pad_all(no_btn, CYD_SCREEN_GAP_PX, 0); @@ -103,42 +80,26 @@ void wifi_pass_entry(const char* ssid) return; } - lv_obj_clean(lv_scr_act()); - - lv_obj_t * root = lv_create_empty_panel(lv_scr_act()); - lv_obj_set_size(root, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX); - lv_layout_flex_column(root); - - lv_obj_t * top_root = lv_create_empty_panel(root); - lv_obj_set_width(top_root, CYD_SCREEN_WIDTH_PX); - lv_layout_flex_column(top_root); - lv_obj_set_flex_grow(top_root, 1); - lv_obj_set_style_pad_all(top_root, CYD_SCREEN_GAP_PX, 0); - - lv_obj_t * label = lv_label_create(top_root); - lv_label_set_text(label, "Enter WiFi Password"); - lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2); - - lv_obj_t * passEntry = lv_textarea_create(top_root); - lv_textarea_set_one_line(passEntry, true); - lv_textarea_set_text(passEntry, ""); - lv_obj_set_width(passEntry, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2); - lv_obj_add_event_cb(passEntry, ta_event_cb, LV_EVENT_ALL, NULL); - lv_obj_set_flex_grow(passEntry, 1); - - lv_obj_t * keyboard = lv_keyboard_create(root); - lv_keyboard_set_textarea(keyboard, passEntry); + btn_no_reuse_password(NULL); } static void wifi_btn_event_handler(lv_event_t * e){ - lv_event_code_t code = lv_event_get_code(e); + delay(100); + char* ssid = (char*)e->user_data; + Serial.println(ssid); + wifi_pass_entry(ssid); +} - if(code == LV_EVENT_CLICKED) { - delay(100); - char* ssid = (char*)e->user_data; - Serial.println(ssid); - wifi_pass_entry(ssid); - } +static void wifi_keyboard_cb_manual_ssid(lv_event_t * e){ + lv_obj_t * ta = lv_event_get_target(e); + lv_obj_t * kb = (lv_obj_t *)lv_event_get_user_data(e); + const char * text = lv_textarea_get_text(ta); + Serial.println(text); + wifi_pass_entry(text); +} + +static void wifi_btn_manual_ssid(lv_event_t * e){ + lv_create_keyboard_text_entry(wifi_keyboard_cb_manual_ssid, "Enter SSID Manually", LV_KEYBOARD_MODE_TEXT_LOWER, CYD_SCREEN_WIDTH_PX * 0.75, 31, "", false); } void wifi_init_inner(){ @@ -190,16 +151,25 @@ void wifi_init_inner(){ lv_obj_t * top_row = lv_create_empty_panel(root); lv_obj_set_size(top_row, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, LV_SIZE_CONTENT); - lv_layout_flex_row(top_row, LV_FLEX_ALIGN_SPACE_BETWEEN); + lv_layout_flex_row(top_row); label = lv_label_create(top_row); lv_label_set_text(label, "Select a network"); + lv_obj_set_flex_grow(label, 1); - lv_obj_t * refreshBtn = lv_btn_create(top_row); - lv_obj_add_event_cb(refreshBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL); - lv_obj_set_size(refreshBtn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); + lv_obj_t * btn = lv_btn_create(top_row); + lv_obj_add_event_cb(btn, wifi_btn_manual_ssid, LV_EVENT_CLICKED, NULL); + lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); - label = lv_label_create(refreshBtn); + label = lv_label_create(btn); + lv_label_set_text(label, LV_SYMBOL_KEYBOARD); + lv_obj_center(label); + + btn = lv_btn_create(top_row); + lv_obj_add_event_cb(btn, reset_btn_event_handler, LV_EVENT_CLICKED, NULL); + lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); + + label = lv_label_create(btn); lv_label_set_text(label, LV_SYMBOL_REFRESH); lv_obj_center(label); @@ -224,7 +194,7 @@ void wifi_init_inner(){ ssid_copy[j] = '\0'; lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_WIFI, ssid_copy); - lv_obj_add_event_cb(btn, wifi_btn_event_handler, LV_EVENT_ALL, (void*)ssid_copy); + lv_obj_add_event_cb(btn, wifi_btn_event_handler, LV_EVENT_CLICKED, (void*)ssid_copy); } }