Refactor wifi setup; add option to type ssid manually

This commit is contained in:
suchmememanyskill
2024-03-26 20:05:58 +01:00
parent f5f970afce
commit 38a1acb7b1
2 changed files with 48 additions and 73 deletions

View File

@@ -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");
}

View File

@@ -11,28 +11,13 @@ 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();
}
}
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)
{
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);
@@ -40,11 +25,6 @@ static void ta_event_cb(lv_event_t * e) {
write_global_config();
wifi_init_inner();
}
else if (code == LV_EVENT_CANCEL)
{
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);
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);
}
}