diff --git a/internal_filesystem/apps/com.example.wificonf/assets/wificonf.py b/internal_filesystem/apps/com.example.wificonf/assets/wificonf.py index 8ea8a6f4..122878d4 100644 --- a/internal_filesystem/apps/com.example.wificonf/assets/wificonf.py +++ b/internal_filesystem/apps/com.example.wificonf/assets/wificonf.py @@ -10,7 +10,8 @@ access_points={} selected_ssid=None list=None password_ta=None -popup=None +password_page=None +main_subwindow=None def load_config(): print("load_config: Checking for /data directory") @@ -85,43 +86,62 @@ def select_ssid_cb(event,ssid): global selected_ssid print(f"select_ssid_cb: SSID selected: {ssid}") selected_ssid=ssid - show_password_popup() + show_password_page() -def show_password_popup(): - global popup,password_ta - print("show_password_popup: Creating password popup") - popup=lv.obj(subwindow) - popup.set_size(260,200) - popup.center() - popup.add_flag(lv.obj.FLAG.CLICKABLE) - print(f"show_password_popup: Creating label for SSID: {selected_ssid}") - label=lv.label(popup) +def keyboard_cb(event): + print("keyboard_cb: Keyboard event triggered") + keyboard=event.get_target() + code=event.get_code() + if code==lv.EVENT.READY: + print("keyboard_cb: OK/Checkmark clicked, hiding keyboard") + keyboard.set_height(0) + keyboard.clear_flag(lv.obj.FLAG.CLICKABLE) + +def password_ta_cb(event): + print("password_ta_cb: Password textarea clicked") + global password_page + keyboard=password_page.get_child_by_type(lv.keyboard) + print("password_ta_cb: Showing keyboard") + keyboard.set_height(100) + keyboard.add_flag(lv.obj.FLAG.CLICKABLE) + +def show_password_page(): + global password_page,password_ta + print("show_password_page: Creating new password page") + password_page=lv.obj() + password_page.set_size(lv.pct(100),lv.pct(100)) + print(f"show_password_page: Creating label for SSID: {selected_ssid}") + label=lv.label(password_page) label.set_text(f"Enter password for {selected_ssid}") label.align(lv.ALIGN.TOP_MID,0,10) - print("show_password_popup: Creating password textarea") - password_ta=lv.textarea(popup) + print("show_password_page: Creating password textarea") + password_ta=lv.textarea(password_page) password_ta.set_size(220,40) password_ta.align(lv.ALIGN.CENTER,0,-20) password_ta.set_placeholder_text("Password") - print("show_password_popup: Creating keyboard") - keyboard=lv.keyboard(popup) - keyboard.set_size(260,100) + password_ta.add_event_cb(password_ta_cb,lv.EVENT.CLICKED,None) + print("show_password_page: Creating keyboard (hidden by default)") + keyboard=lv.keyboard(password_page) + keyboard.set_size(260,0) keyboard.align(lv.ALIGN.BOTTOM_MID,0,0) keyboard.set_textarea(password_ta) - print("show_password_popup: Creating Connect button") - connect_button=lv.button(popup) + keyboard.add_event_cb(keyboard_cb,lv.EVENT.READY,None) + print("show_password_page: Creating Connect button") + connect_button=lv.button(password_page) connect_button.set_size(100,40) - connect_button.align(lv.ALIGN.BOTTOM_LEFT,10,-50) + connect_button.align(lv.ALIGN.BOTTOM_LEFT,10,-10) label=lv.label(connect_button) label.set_text("Connect") connect_button.add_event_cb(connect_cb,lv.EVENT.CLICKED,None) - print("show_password_popup: Creating Cancel button") - cancel_button=lv.button(popup) + print("show_password_page: Creating Cancel button") + cancel_button=lv.button(password_page) cancel_button.set_size(100,40) - cancel_button.align(lv.ALIGN.BOTTOM_RIGHT,-10,-50) + cancel_button.align(lv.ALIGN.BOTTOM_RIGHT,-10,-10) label=lv.label(cancel_button) label.set_text("Cancel") cancel_button.add_event_cb(cancel_cb,lv.EVENT.CLICKED,None) + print("show_password_page: Loading password page") + lv.screen_load(password_page) def connect_cb(event): global access_points @@ -131,19 +151,24 @@ def connect_cb(event): access_points[selected_ssid]=password print(f"connect_cb: Updated access_points: {access_points}") save_config() - print("connect_cb: Deleting popup") - popup.delete() + print("connect_cb: Deleting password page") + password_page.delete() + print("connect_cb: Restoring main subwindow") + lv.screen_load(main_subwindow) print(f"connect_cb: Attempting connection to {selected_ssid}") success=attempt_connecting(selected_ssid,password) print(f"connect_cb: Connection {'succeeded' if success else 'failed'}") refresh_list() def cancel_cb(event): - print("cancel_cb: Cancel button clicked, deleting popup") - popup.delete() + print("cancel_cb: Cancel button clicked, deleting password page") + password_page.delete() + print("cancel_cb: Restoring main subwindow") + lv.screen_load(main_subwindow) def create_ui(subwindow): - global list + global list,main_subwindow + main_subwindow=subwindow print("create_ui: Creating list widget") list=lv.list(subwindow) list.set_size(280,300)