2323last_tried_ssid = ""
2424last_tried_result = ""
2525
26- # This is basically the wifi settings app
2726class WiFi (Activity ):
2827
2928 scan_button_scan_text = "Rescan"
@@ -44,23 +43,27 @@ def onCreate(self):
4443 print ("wifi.py onCreate" )
4544 main_screen = lv .obj ()
4645 main_screen .set_style_pad_all (15 , 0 )
47- print ("create_ui: Creating list widget" )
4846 self .aplist = lv .list (main_screen )
4947 self .aplist .set_size (lv .pct (100 ),lv .pct (75 ))
5048 self .aplist .align (lv .ALIGN .TOP_MID ,0 ,0 )
51- print ("create_ui: Creating error label" )
5249 self .error_label = lv .label (main_screen )
5350 self .error_label .set_text ("THIS IS ERROR TEXT THAT WILL BE SET LATER" )
5451 self .error_label .align_to (self .aplist , lv .ALIGN .OUT_BOTTOM_MID ,0 ,0 )
5552 self .error_label .add_flag (lv .obj .FLAG .HIDDEN )
56- print ("create_ui: Creating Scan button" )
53+ self .add_network_button = lv .button (main_screen )
54+ self .add_network_button .set_size (lv .SIZE_CONTENT ,lv .pct (15 ))
55+ self .add_network_button .align (lv .ALIGN .BOTTOM_LEFT ,0 ,0 )
56+ self .add_network_button .add_event_cb (self .add_network_callback ,lv .EVENT .CLICKED ,None )
57+ self .add_network_button_label = lv .label (self .add_network_button )
58+ self .add_network_button_label .set_text ("Add network" )
59+ self .add_network_button_label .center ()
5760 self .scan_button = lv .button (main_screen )
5861 self .scan_button .set_size (lv .SIZE_CONTENT ,lv .pct (15 ))
59- self .scan_button .align (lv .ALIGN .BOTTOM_MID ,0 ,0 )
62+ self .scan_button .align (lv .ALIGN .BOTTOM_RIGHT ,0 ,0 )
63+ self .scan_button .add_event_cb (self .scan_cb ,lv .EVENT .CLICKED ,None )
6064 self .scan_button_label = lv .label (self .scan_button )
6165 self .scan_button_label .set_text (self .scan_button_scan_text )
6266 self .scan_button_label .center ()
63- self .scan_button .add_event_cb (self .scan_cb ,lv .EVENT .CLICKED ,None )
6467 self .setContentView (main_screen )
6568
6669 def onResume (self , screen ):
@@ -148,6 +151,13 @@ def refresh_list(self):
148151 label .set_text (status )
149152 label .align (lv .ALIGN .RIGHT_MID ,0 ,0 )
150153
154+ def add_network_callback (self , event ):
155+ print (f"add_network_callback clicked" )
156+ intent = Intent (activity_class = PasswordPage )
157+ intent .putExtra ("selected_ssid" , None )
158+ self .startActivityForResult (intent , self .password_page_result_cb )
159+
160+
151161 def scan_cb (self , event ):
152162 print ("scan_cb: Scan button clicked, refreshing list" )
153163 self .start_scan_networks ()
@@ -212,62 +222,98 @@ def attempt_connecting_thread(self, ssid, password):
212222 self .update_ui_threadsafe_if_foreground (self .refresh_list )
213223
214224
215-
216225class PasswordPage (Activity ):
217226 # Would be good to add some validation here so the password is not too short etc...
218227
219228 selected_ssid = None
220229
221230 # Widgets:
231+ ssid_ta = None
222232 password_ta = None
223233 keyboard = None
224234 connect_button = None
225235 cancel_button = None
226236
227237 def onCreate (self ):
228- self .selected_ssid = self .getIntent ().extras .get ("selected_ssid" )
229- print ("PasswordPage: Creating new password page" )
230238 password_page = lv .obj ()
231- print (f"show_password_page: Creating label for SSID: { self .selected_ssid } " )
239+ password_page .set_flex_flow (lv .FLEX_FLOW .COLUMN )
240+ #password_page.set_style_pad_all(5, 5)
241+ self .selected_ssid = self .getIntent ().extras .get ("selected_ssid" )
242+ # SSID:
243+ if self .selected_ssid is None :
244+ print ("No ssid selected, the user should fill it out." )
245+ label = lv .label (password_page )
246+ label .set_text (f"Network name:" )
247+ label .align (lv .ALIGN .TOP_LEFT , 0 , 5 )
248+ self .ssid_ta = lv .textarea (password_page )
249+ self .ssid_ta .set_width (lv .pct (100 ))
250+ self .ssid_ta .set_one_line (True )
251+ self .ssid_ta .set_placeholder_text ("Enter the SSID" )
252+ #self.ssid_ta.align_to(label, lv.ALIGN.OUT_BOTTOM_LEFT, 5, 5) # leave 5 margin for focus border
253+ self .keyboard = MposKeyboard (password_page )
254+ #self.keyboard.align_to(self.ssid_ta, lv.ALIGN.OUT_BOTTOM_LEFT, -5, 5) # reset margin for focus border
255+ self .keyboard .align (lv .ALIGN .BOTTOM_MID , 0 , 0 )
256+ self .keyboard .set_textarea (self .ssid_ta )
257+ self .keyboard .add_flag (lv .obj .FLAG .HIDDEN )
258+
259+ # Password:
232260 label = lv .label (password_page )
233- label .set_text (f"Password for: { self .selected_ssid } " )
234- label .align (lv .ALIGN .TOP_MID ,0 ,5 )
235- print ("PasswordPage: Creating password textarea" )
261+ if self .selected_ssid is None :
262+ label .set_text ("Password:" )
263+ #label.align_to(self.ssid_ta, lv.ALIGN.OUT_BOTTOM_LEFT, -5, 5) # reset margin for focus border
264+ else :
265+ label .set_text (f"Password for '{ self .selected_ssid } ':" )
266+ #label.align(lv.ALIGN.TOP_LEFT, 0, 4)
236267 self .password_ta = lv .textarea (password_page )
237- self .password_ta .set_width (lv .pct (90 ))
268+ self .password_ta .set_width (lv .pct (100 ))
238269 self .password_ta .set_one_line (True )
239- self .password_ta .align_to (label , lv .ALIGN .OUT_BOTTOM_MID , 0 , 5 )
240- print ("PasswordPage: Creating Connect button" )
241- self .connect_button = lv .button (password_page )
270+ #self.password_ta.align_to(label, lv.ALIGN.OUT_BOTTOM_LEFT, 5, 5) # leave 5 margin for focus border
271+ pwd = self .findSavedPassword (self .selected_ssid )
272+ if pwd :
273+ self .password_ta .set_text (pwd )
274+ self .password_ta .set_placeholder_text ("Password" )
275+ self .keyboard = MposKeyboard (password_page )
276+ #self.keyboard.align_to(self.password_ta, lv.ALIGN.OUT_BOTTOM_LEFT, -5, 5) # reset margin for focus border
277+ self .keyboard .align (lv .ALIGN .BOTTOM_MID , 0 , 0 )
278+ self .keyboard .set_textarea (self .password_ta )
279+ self .keyboard .add_flag (lv .obj .FLAG .HIDDEN )
280+ buttons = lv .obj (password_page )
281+ #buttons.set_flex_flow(lv.FLEX_FLOW.ROW)
282+ # Connect button
283+ self .connect_button = lv .button (buttons )
242284 self .connect_button .set_size (100 ,40 )
243- self .connect_button .align (lv .ALIGN .BOTTOM_LEFT ,10 ,- 40 )
285+ #self.connect_button.align(lv.ALIGN.left,10,-40)
286+ self .connect_button .align (lv .ALIGN .LEFT_MID , 0 , 0 )
244287 self .connect_button .add_event_cb (self .connect_cb ,lv .EVENT .CLICKED ,None )
245288 label = lv .label (self .connect_button )
246289 label .set_text ("Connect" )
247290 label .center ()
248- print ( "PasswordPage: Creating Cancel button" )
249- self .cancel_button = lv .button (password_page )
291+ # Close button
292+ self .cancel_button = lv .button (buttons )
250293 self .cancel_button .set_size (100 ,40 )
251- self .cancel_button .align (lv .ALIGN .BOTTOM_RIGHT ,- 10 ,- 40 )
294+ #self.cancel_button.align(lv.ALIGN.BOTTOM_RIGHT,-10,-40)
295+ self .cancel_button .align (lv .ALIGN .RIGHT_MID , 0 , 0 )
252296 self .cancel_button .add_event_cb (self .cancel_cb ,lv .EVENT .CLICKED ,None )
253297 label = lv .label (self .cancel_button )
254298 label .set_text ("Close" )
255299 label .center ()
256- pwd = self .findSavedPassword (self .selected_ssid )
257- if pwd :
258- self .password_ta .set_text (pwd )
259- self .password_ta .set_placeholder_text ("Password" )
260- print ("PasswordPage: Creating keyboard (hidden by default)" )
261- self .keyboard = MposKeyboard (password_page )
262- self .keyboard .align (lv .ALIGN .BOTTOM_MID ,0 ,0 )
263- self .keyboard .set_textarea (self .password_ta )
264- self .keyboard .add_flag (lv .obj .FLAG .HIDDEN )
265- print ("PasswordPage: Loading password page" )
300+ buttons .set_width (lv .pct (100 ))
301+ buttons .set_height (lv .SIZE_CONTENT )
302+ buttons .set_style_pad_all (5 , 5 )
303+ buttons .set_style_bg_opa (lv .OPA .TRANSP , 0 )
266304 self .setContentView (password_page )
267305
268306 def connect_cb (self , event ):
269307 global access_points
270308 print ("connect_cb: Connect button clicked" )
309+ if self .selected_ssid is None :
310+ new_ssid = self .ssid_ta .get_text ()
311+ if not new_ssid :
312+ print ("No SSID provided, not connecting" )
313+ self .ssid_ta .set_style_bg_color (lv .color_hex (0xff8080 ), 0 )
314+ return
315+ else :
316+ self .selected_ssid = new_ssid
271317 password = self .password_ta .get_text ()
272318 print (f"connect_cb: Got password: { password } " )
273319 self .setPassword (self .selected_ssid , password )
0 commit comments