wasp-os/wasp/apps/settings.py
Carlosgg 3fb1faceab 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>
2020-11-29 20:20:03 +00:00

84 lines
2.8 KiB
Python

# SPDX-License-Identifier: LGPL-3.0-or-later
# Copyright (C) 2020 Daniel Thompson
import wasp
import icons
class SettingsApp():
"""Ultra-simple settings application.
Currently the settings application contains only one setting: brightness
.. figure:: res/SettingsApp.png
:width: 179
Screenshot of the settings application
"""
NAME = 'Settings'
ICON = icons.settings
def __init__(self):
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):
self._slider.value = wasp.system.brightness - 1
self._draw()
wasp.system.request_event(wasp.EventMask.TOUCH)
wasp.system.request_event(wasp.EventMask.SWIPE_UPDOWN)
def touch(self, event):
if self._current_setting == 'Brightness':
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()
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):
"""Redraw the display from scratch."""
self._current_setting = self._settings[self._sett_index % len(self._settings)]
wasp.watch.drawable.fill()
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()
def _update(self):
if self._current_setting == 'Brightness':
if wasp.system.brightness == 3:
say = "High"
elif wasp.system.brightness == 2:
say = "Mid"
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)