Skip to content

Commit 9c65ed8

Browse files
Wifi app: new "Add network" button (work in progress)
1 parent b821cdb commit 9c65ed8

File tree

1 file changed

+77
-31
lines changed
  • internal_filesystem/builtin/apps/com.micropythonos.wifi/assets

1 file changed

+77
-31
lines changed

internal_filesystem/builtin/apps/com.micropythonos.wifi/assets/wifi.py

Lines changed: 77 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
last_tried_ssid = ""
2424
last_tried_result = ""
2525

26-
# This is basically the wifi settings app
2726
class 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-
216225
class 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

Comments
 (0)