Skip to content

Commit 8133513

Browse files
Add sleep and poweroff buttons
1 parent 03a9a5a commit 8133513

File tree

1 file changed

+39
-24
lines changed

1 file changed

+39
-24
lines changed

internal_filesystem/lib/mpos/ui/__init__.py

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,9 @@ def brightness_slider_released(e):
290290
editor.commit()
291291
slider.add_event_cb(brightness_slider_changed,lv.EVENT.VALUE_CHANGED,None)
292292
slider.add_event_cb(brightness_slider_released,lv.EVENT.RELEASED,None)
293+
drawer_button_pct = 31
293294
wifi_btn=lv.button(drawer)
294-
wifi_btn.set_size(lv.pct(40),lv.pct(20))
295+
wifi_btn.set_size(lv.pct(drawer_button_pct),lv.pct(20))
295296
wifi_btn.align(lv.ALIGN.LEFT_MID,0,0)
296297
wifi_label=lv.label(wifi_btn)
297298
wifi_label.set_text(lv.SYMBOL.WIFI+" WiFi")
@@ -300,9 +301,8 @@ def wifi_event(e):
300301
close_drawer()
301302
mpos.apps.start_app_by_name("com.micropythonos.wifi")
302303
wifi_btn.add_event_cb(wifi_event,lv.EVENT.CLICKED,None)
303-
304304
settings_btn=lv.button(drawer)
305-
settings_btn.set_size(lv.pct(40),lv.pct(20))
305+
settings_btn.set_size(lv.pct(drawer_button_pct),lv.pct(20))
306306
settings_btn.align(lv.ALIGN.RIGHT_MID,0,0)
307307
settings_label=lv.label(settings_btn)
308308
settings_label.set_text(lv.SYMBOL.SETTINGS+" Settings")
@@ -312,21 +312,39 @@ def settings_event(e):
312312
mpos.apps.start_app_by_name("com.micropythonos.settings")
313313
settings_btn.add_event_cb(settings_event,lv.EVENT.CLICKED,None)
314314
launcher_btn=lv.button(drawer)
315-
launcher_btn.set_size(lv.pct(40),lv.pct(20))
316-
launcher_btn.align(lv.ALIGN.BOTTOM_LEFT,0,0)
315+
launcher_btn.set_size(lv.pct(drawer_button_pct),lv.pct(20))
316+
launcher_btn.align(lv.ALIGN.CENTER,0,0)
317317
launcher_label=lv.label(launcher_btn)
318-
launcher_label.set_text(lv.SYMBOL.HOME+" Launcher")
318+
launcher_label.set_text(lv.SYMBOL.HOME+" Home")
319319
launcher_label.center()
320320
def launcher_event(e):
321-
print("Launcher button pressed!")
321+
print("Home button pressed!")
322322
close_drawer(True)
323323
show_launcher()
324324
launcher_btn.add_event_cb(launcher_event,lv.EVENT.CLICKED,None)
325+
sleep_btn=lv.button(drawer)
326+
sleep_btn.set_size(lv.pct(drawer_button_pct),lv.pct(20))
327+
sleep_btn.align(lv.ALIGN.BOTTOM_LEFT,0,0)
328+
sleep_label=lv.label(sleep_btn)
329+
sleep_label.set_text("Zz Sleep")
330+
sleep_label.center()
331+
def sleep_event(e):
332+
print("Sleep button pressed!")
333+
import sys
334+
if sys.platform == "esp32":
335+
#On ESP32, there's no power off but there's a hundred-year deepsleep.
336+
import machine
337+
machine.deepsleep(10000) # TODO: make it wakeup when it receives an interrupt from the accelerometer or a button press
338+
else: # assume unix:
339+
# maybe do a system suspend here? or at least show a popup toast "not supported"
340+
close_drawer(True)
341+
show_launcher()
342+
sleep_btn.add_event_cb(sleep_event,lv.EVENT.CLICKED,None)
325343
restart_btn=lv.button(drawer)
326-
restart_btn.set_size(lv.pct(40),lv.pct(20))
327-
restart_btn.align(lv.ALIGN.BOTTOM_RIGHT,0,0)
344+
restart_btn.set_size(lv.pct(drawer_button_pct),lv.pct(20))
345+
restart_btn.align(lv.ALIGN.BOTTOM_MID,0,0)
328346
restart_label=lv.label(restart_btn)
329-
restart_label.set_text(lv.SYMBOL.POWER+" Reset")
347+
restart_label.set_text(lv.SYMBOL.REFRESH+" Reset")
330348
restart_label.center()
331349
def reset_cb(e):
332350
import machine
@@ -336,27 +354,24 @@ def reset_cb(e):
336354
machine.soft_reset()
337355
else:
338356
print("Warning: machine has no reset or soft_reset method available")
339-
340-
try:
341-
restart_btn.add_event_cb(reset_cb,lv.EVENT.CLICKED,None)
342-
except Exception as e:
343-
print("Warning: could not import machine, not adding reset callback")
344-
345-
'''
346-
On ESP32, there's no power off but there's a hundred-year deepsleep.
357+
restart_btn.add_event_cb(reset_cb,lv.EVENT.CLICKED,None)
347358
poweroff_btn=lv.button(drawer)
348-
poweroff_btn.set_size(lv.pct(40),lv.SIZE_CONTENT)
359+
poweroff_btn.set_size(lv.pct(drawer_button_pct),lv.pct(20))
349360
poweroff_btn.align(lv.ALIGN.BOTTOM_RIGHT,0,0)
350361
poweroff_label=lv.label(poweroff_btn)
351-
poweroff_label.set_text(lv.SYMBOL.POWER+" Power Off")
362+
poweroff_label.set_text(lv.SYMBOL.POWER+" Off")
352363
poweroff_label.center()
353364
def poweroff_cb(e):
354-
lv.deinit() # Deinitialize LVGL (if supported)
365+
print("Power off action...")
355366
import sys
356-
sys.exit(0)
367+
if sys.platform == "esp32":
368+
#On ESP32, there's no power off but there's a hundred-year deepsleep.
369+
import machine
370+
machine.deepsleep(10000)
371+
else: # assume unix:
372+
lv.deinit() # Deinitialize LVGL (if supported)
373+
sys.exit(0)
357374
poweroff_btn.add_event_cb(poweroff_cb,lv.EVENT.CLICKED,None)
358-
'''
359-
360375

361376

362377
EVENT_MAP = {

0 commit comments

Comments
 (0)