diff options
| author | Daniel Thompson <daniel@redfelineninja.org.uk> | 2020-02-03 22:35:16 (GMT) |
|---|---|---|
| committer | Daniel Thompson <daniel@redfelineninja.org.uk> | 2020-02-03 22:35:16 (GMT) |
| commit | 1f2c25a7bdd1ff9ffeb15adfe4c9ab4c41a519be (patch) | |
| tree | bba2d1dc3e91a87737a0e364b53864fdc0c381c2 /wasp/widgets.py | |
| parent | 57035ce0805222800e8cb24e459e612f802d0a50 (diff) | |
wasp: clock: Add a simple battery meter
Diffstat (limited to 'wasp/widgets.py')
| -rw-r--r-- | wasp/widgets.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/wasp/widgets.py b/wasp/widgets.py new file mode 100644 index 0000000..90e98ea --- /dev/null +++ b/wasp/widgets.py @@ -0,0 +1,48 @@ +import icons +import watch + +class BatteryMeter(object): + def __init__(self): + self.level = None + + def draw(self): + display = watch.display + icon = icons.battery + + watch.display.rleblit(icon, pos=(239-icon[0], 0), fg=0x7bef) + self.level = -1 + self.update() + + def update(self): + if watch.battery.charging(): + if self.level != -1: + icon = icons.battery + watch.display.rleblit(icon, pos=(239-icon[0], 0), fg=0x7bef) + self.level = -1 + else: + level = watch.battery.level() + if level == self.level: + return + self.level = level + x = 239 - 31 + w = 18 + + # Use the level to work out the correct height + if level == 100: + h = 26 + else: + h = level // 4 + + # Use the level to figure out the right color + if level > 96: + rgb = 0x07e0 + else: + green = level // 3 + red = 31-green + rgb = (red << 11) + (green << 6) + + if 26 - h: + watch.display.fill(0, x, 13, 18, 26 - h) + if h: + watch.display.fill(rgb, x, 39 - h, 18, h) + |
