mirror of
https://github.com/suchmememanyskill/CYD-Klipper.git
synced 2026-03-21 05:33:24 +00:00
Refactor wifi setup; add option to type ssid manually
This commit is contained in:
@@ -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");
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user