From 8c8c70492edb4fbf6824ac5eeaa85c02c07ed488 Mon Sep 17 00:00:00 2001
From: derf <derf+card10@finalrewind.org>
Date: Wed, 28 Aug 2019 16:52:10 +0000
Subject: [PATCH] feat(card10_nickname): Indicate battery voltage in symbol

full == filled symbol, near empty == empty battery symbol, etc.
---
 preload/apps/card10_nickname/__init__.py | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/preload/apps/card10_nickname/__init__.py b/preload/apps/card10_nickname/__init__.py
index 16fc8ad0..09d8b149 100644
--- a/preload/apps/card10_nickname/__init__.py
+++ b/preload/apps/card10_nickname/__init__.py
@@ -80,17 +80,17 @@ def get_bat_color(bat):
     Voltage threshold's are currently estimates as voltage isn't that great of an indicator for
     battery charge.
     :param bat: battery config tuple (boolean: indicator on/off, array: good rgb, array: ok rgb, array: bad rgb)
-    :return: false if old firmware, RGB color array otherwise
+    :return: battery status tuple (float: battery voltage, false if old firmware, RGB color array otherwise)
     """
     try:
         v = os.read_battery()
         if v > 3.8:
-            return bat[1]
+            return (v, bat[1])
         if v > 3.6:
-            return bat[2]
-        return bat[3]
+            return (v, bat[2])
+        return (v, bat[3])
     except AttributeError:
-        return False
+        return (0, False)
 
 
 def render_battery(disp, bat):
@@ -100,10 +100,15 @@ def render_battery(disp, bat):
     :param disp: open display
     :param bat: battery config tuple (boolean: indicator on/off, array: good rgb, array: ok rgb, array: bad rgb)
     """
-    c = get_bat_color(bat)
+    v, c = get_bat_color(bat)
     if not c:
         return
-    disp.rect(140, 2, 155, 9, filled=True, col=c)
+    if v > 4.0:
+        disp.rect(140, 2, 155, 9, filled=True, col=c)
+    else:
+        disp.rect(140, 2, 154, 8, filled=False, col=c)
+        if v > 3.5:
+            disp.rect(141, 3, 142 + int((v - 3.5) * 24), 8, filled=True, col=c)
     disp.rect(155, 4, 157, 7, filled=True, col=c)
 
 
-- 
GitLab