Notify level in settings app

Signed-off-by: Carlos Gil Gonzalez <carlosgilglez@gmail.com>
[daniel@redfelineninja.org.uk: Fixed board support for simulator and
sphinx (a.k.a. doc builder)]
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
This commit is contained in:
Carlosgg 2020-10-27 17:10:56 +00:00 committed by Daniel Thompson
parent e450ccf9f0
commit 3fb1faceab
5 changed files with 72 additions and 11 deletions

View file

@ -19,29 +19,65 @@ class SettingsApp():
def __init__(self): def __init__(self):
self._slider = wasp.widgets.Slider(3, 10, 90) self._slider = wasp.widgets.Slider(3, 10, 90)
self._nfy_slider = wasp.widgets.Slider(3, 10, 90)
self._settings = ['Brightness', 'Notification Level']
self._sett_index = 0
self._current_setting = self._settings[0]
def foreground(self): def foreground(self):
self._slider.value = wasp.system.brightness - 1 self._slider.value = wasp.system.brightness - 1
self._draw() self._draw()
wasp.system.request_event(wasp.EventMask.TOUCH) wasp.system.request_event(wasp.EventMask.TOUCH)
wasp.system.request_event(wasp.EventMask.SWIPE_UPDOWN)
def touch(self, event): def touch(self, event):
self._slider.touch(event) if self._current_setting == 'Brightness':
wasp.system.brightness = self._slider.value + 1 self._slider.touch(event)
wasp.system.brightness = self._slider.value + 1
elif self._current_setting == 'Notification Level':
self._nfy_slider.touch(event)
wasp.system.notify_level = self._nfy_slider.value + 1
self._update() self._update()
def swipe(self, event):
"""Handle NEXT events by augmenting the default processing by resetting
the count if we are not currently timing something.
No other swipe event is possible for this application.
"""
if event[0] == wasp.EventType.UP:
self._sett_index += 1
self._draw()
elif event[0] == wasp.EventType.DOWN:
self._sett_index -= 1
self._draw()
def _draw(self): def _draw(self):
"""Redraw the display from scratch.""" """Redraw the display from scratch."""
self._current_setting = self._settings[self._sett_index % len(self._settings)]
wasp.watch.drawable.fill() wasp.watch.drawable.fill()
wasp.watch.drawable.string('Brightness', 0, 6, width=240) wasp.watch.drawable.string(self._current_setting, 0, 6, width=240)
if self._current_setting == 'Brightness':
self._slider.value = wasp.system.brightness - 1
elif self._current_setting == 'Notification Level':
self._nfy_slider.value = wasp.system.notify_level - 1
self._update() self._update()
def _update(self): def _update(self):
if wasp.system.brightness == 3: if self._current_setting == 'Brightness':
say = "High" if wasp.system.brightness == 3:
elif wasp.system.brightness == 2: say = "High"
say = "Mid" elif wasp.system.brightness == 2:
else: say = "Mid"
say = "Low" else:
say = "Low"
self._slider.update()
elif self._current_setting == 'Notification Level':
if wasp.system.notify_level == 3:
say = "High"
elif wasp.system.notify_level == 2:
say = "Mid"
else:
say = "Silent"
self._nfy_slider.update()
wasp.watch.drawable.string(say, 0, 150, width=240) wasp.watch.drawable.string(say, 0, 150, width=240)
self._slider.update()

View file

@ -12,8 +12,9 @@ def print_exception(exc, file=sys.stdout):
traceback.print_exception(exc_type, exc_value, exc_traceback, file=file) traceback.print_exception(exc_type, exc_value, exc_traceback, file=file)
sys.print_exception = print_exception sys.print_exception = print_exception
import draw565
import array import array
import draw565
import os
from machine import I2C from machine import I2C
from machine import Pin from machine import Pin

View file

@ -46,6 +46,8 @@ def sleep_ms(ms):
time.sleep(ms / 1000) time.sleep(ms / 1000)
time.sleep_ms = sleep_ms time.sleep_ms = sleep_ms
import os
class Accel(): class Accel():
def reset(self): def reset(self):
pass pass

View file

@ -49,6 +49,7 @@ def GB(cmd):
id = cmd['id'] id = cmd['id']
del cmd['id'] del cmd['id']
wasp.system.notify(id, cmd) wasp.system.notify(id, cmd)
wasp.watch.vibrator.pulse(ms=wasp.system.notify_duration)
elif task == 'notify-': elif task == 'notify-':
wasp.system.unnotify(cmd['id']) wasp.system.unnotify(cmd['id'])
elif task == 'musicstate': elif task == 'musicstate':

View file

@ -122,6 +122,12 @@ class Manager():
self._alarms = [] self._alarms = []
self._brightness = 2 self._brightness = 2
self._notifylevel = 2
if 'P8' in watch.os.uname().machine:
self._nfylevels = [0, 225, 450]
else:
self._nfylevels = [0, 40, 80]
self._nfylev_ms = self._nfylevels[self._notifylevel - 1]
self._button = PinHandler(watch.button) self._button = PinHandler(watch.button)
self._charging = True self._charging = True
self._scheduled = False self._scheduled = False
@ -163,6 +169,21 @@ class Manager():
self._brightness = value self._brightness = value
watch.backlight.set(self._brightness) watch.backlight.set(self._brightness)
@property
def notify_level(self):
"""Cached copy of the current notify level"""
return self._notifylevel
@notify_level.setter
def notify_level(self, value):
self._notifylevel = value
self._nfylev_ms = self._nfylevels[self._notifylevel - 1]
@property
def notify_duration(self):
"""Cached copy of the current vibrator pulse duration in milliseconds"""
return self._nfylev_ms
def switch(self, app): def switch(self, app):
"""Switch to the requested application. """Switch to the requested application.
""" """