summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wasp/apps/testapp.py35
-rw-r--r--wasp/manager.py17
2 files changed, 41 insertions, 11 deletions
diff --git a/wasp/apps/testapp.py b/wasp/apps/testapp.py
index 2cf3431..f5d4de5 100644
--- a/wasp/apps/testapp.py
+++ b/wasp/apps/testapp.py
@@ -4,18 +4,20 @@ import manager
from draw565 import Draw565
-class TouchTestApp(object):
- """Simple application to visualize touch events.
+class TestApp():
+ """Simple test application.
"""
def __init__(self):
- pass
+ self.tests = ('Touch', 'String')
+ self.test = self.tests[0]
+ self.drawable = Draw565(watch.display)
def foreground(self, system, effect=None):
"""Activate the application."""
self.on_screen = ( -1, -1, -1, -1, -1, -1 )
self.draw(effect)
- system.request_event(manager.EVENT_TOUCH)
+ system.request_event(manager.EVENT_TOUCH | manager.EVENT_SWIPE_LEFTRIGHT)
def background(self):
"""De-activate the application (without losing state)."""
@@ -24,12 +26,31 @@ class TouchTestApp(object):
def sleep(self):
return False
+ def swipe(self, event):
+ tests = self.tests
+ i = tests.index(self.test) + 1
+ if i >= len(tests):
+ i = 0
+ self.test = tests[i]
+ self.draw()
+
def touch(self, event):
- draw = Draw565(watch.display)
- draw.string('({}, {})'.format(event[1], event[2]),
- 0, 180, width=240)
+ draw = self.drawable
+ if self.test == 'Touch':
+ draw.string('({}, {})'.format(event[1], event[2]),
+ 0, 180, width=240)
+ elif self.test == 'String':
+ watch.display.fill(0, 0, 30, 240, 240-30)
+ draw.string("The quick brown", 12, 24+24)
+ draw.string("fox jumped over", 12, 24+48)
+ draw.string("the lazy dog.", 12, 24+72)
+ draw.string("0123456789", 12, 24+120)
+ draw.string('!"£$%^&*()', 12, 24+144)
+
return True
def draw(self, effect=None):
"""Redraw the display from scratch."""
watch.display.fill(0)
+ self.drawable.string('{} test'.format(self.test),
+ 0, 6, width=240)
diff --git a/wasp/manager.py b/wasp/manager.py
index d5a4ff9..3dafebe 100644
--- a/wasp/manager.py
+++ b/wasp/manager.py
@@ -3,7 +3,7 @@ import machine
from apps.clock import ClockApp
from apps.flashlight import FlashlightApp
-from apps.testapp import TouchTestApp
+from apps.testapp import TestApp
DOWN = 1
UP = 2
@@ -11,7 +11,9 @@ LEFT = 3
RIGHT = 4
EVENT_TOUCH = 0x0001
-EVENT_BUTTON = 0x0002
+EVENT_SWIPE_LEFTRIGHT = 0x0002
+EVENT_SWIPE_UPDOWN = 0x0004
+EVENT_BUTTON = 0x0008
class Manager(object):
def __init__(self, watch):
@@ -22,7 +24,7 @@ class Manager(object):
self.applications = [
ClockApp(),
FlashlightApp(),
- TouchTestApp()
+ TestApp()
]
self.watch.display.poweron()
@@ -79,8 +81,15 @@ class Manager(object):
def handle_event(self, event):
self.sleep_at = self.watch.rtc.uptime + 15
+ event_mask = self.event_mask
if event[0] < 5:
- self.navigate(event[0])
+ updown = event[0] == 1 or event[0] == 2
+ if (bool(event_mask & EVENT_SWIPE_UPDOWN) and updown) or \
+ (bool(event_mask & EVENT_SWIPE_LEFTRIGHT) and not updown):
+ if not self.app.swipe(event):
+ self.navigate(event[0])
+ else:
+ self.navigate(event[0])
elif event[0] == 5 and self.event_mask & EVENT_TOUCH:
self.app.touch(event)