From e6515080e85e4ef2d1ba081ec453abdcbec51263 Mon Sep 17 00:00:00 2001 From: Dennis Kueper Date: Sat, 11 Jun 2022 17:46:36 +0200 Subject: [PATCH] Fixing refresh issues --- apps/hwid_a_battery_widget/ChangeLog | 3 +- apps/hwid_a_battery_widget/metadata.json | 2 +- apps/hwid_a_battery_widget/widget.js | 92 ++++++++++++------------ 3 files changed, 48 insertions(+), 49 deletions(-) diff --git a/apps/hwid_a_battery_widget/ChangeLog b/apps/hwid_a_battery_widget/ChangeLog index 84cbad8ad..3d7b39737 100644 --- a/apps/hwid_a_battery_widget/ChangeLog +++ b/apps/hwid_a_battery_widget/ChangeLog @@ -2,4 +2,5 @@ 0.02: Internal id update to wid_* as per Gordon's request (2021/11/21) 0.03: Support dark themes 0.04: Increase screen update rate when charging -0.05: Deleting Background - making Font larger \ No newline at end of file +0.05: Deleting Background - making Font larger +0.06: Fixing refresh issues \ No newline at end of file diff --git a/apps/hwid_a_battery_widget/metadata.json b/apps/hwid_a_battery_widget/metadata.json index 7fdd2907a..d0cb5233a 100644 --- a/apps/hwid_a_battery_widget/metadata.json +++ b/apps/hwid_a_battery_widget/metadata.json @@ -3,7 +3,7 @@ "name": "A Battery Widget (with percentage) - Hanks Mod", "shortName":"H Battery Widget", "icon": "widget.png", - "version":"0.04", + "version":"0.06", "type": "widget", "supports": ["BANGLEJS", "BANGLEJS2"], "readme": "README.md", diff --git a/apps/hwid_a_battery_widget/widget.js b/apps/hwid_a_battery_widget/widget.js index 0929dea41..708e8cbbf 100644 --- a/apps/hwid_a_battery_widget/widget.js +++ b/apps/hwid_a_battery_widget/widget.js @@ -1,56 +1,54 @@ (function(){ - const intervalLow = 60000; // update time when not charging - const intervalHigh = 2000; // update time when charging + const intervalLow = 60000; // update time when not charging + const intervalHigh = 2000; // update time when charging + var old_l; - let COLORS = { - 'white': g.theme.dark ? "#000" : "#fff", - 'black': g.theme.dark ? "#fff" : "#000", - 'charging': "#08f", - 'high': g.theme.dark ? "#fff" : "#000", - 'low': "#f00", - }; + let COLORS = { + 'white': g.theme.dark ? "#000" : "#fff", + 'black': g.theme.dark ? "#fff" : "#000", + 'charging': "#08f", + 'high': g.theme.dark ? "#fff" : "#000", + 'low': "#f00", + }; - const levelColor = (l) => { - if (Bangle.isCharging()) return COLORS.charging; - if (l >= 30) return COLORS.high; - return COLORS.low; - }; + const levelColor = (l) => { + if (Bangle.isCharging()) return COLORS.charging; + if (l >= 30) return COLORS.high; + return COLORS.low; + }; - function draw() { - var s = 29; - var x = this.x, y = this.y; + function draw() { + var s = 29; + var x = this.x, y = this.y; + const l = E.getBattery(); + let xl = x+4+l*(s-12)/100; + if (l != old_l){ // Delete the old value from screen + old_l = l; + let xl_old = x+4+old_l*(s-12)/100; + g.setColor(COLORS.white); + // g.fillRect(x+2,y+5,x+s-6,y+18); + g.fillRect(x,y,xl+4,y+16+3); //Clear + g.setFontAlign(0,0); + g.setFont('Vector',16); + g.drawString(old_l, x + 14, y + 10); + g.fillRect(x+4,y+14+3,xl_old,y+16+3); // charging bar + } - const l = E.getBattery(); + g.setColor(levelColor(l)); + g.fillRect(x+4,y+14+3,xl,y+16+3); // charging bar + g.fillRect((x+4+100*(s-12)/100)-1,y+14+3,x+4+100*(s-12)/100,y+16+3); // charging bar "full mark" + // Show percentage + g.setColor(COLORS.black); + g.setFontAlign(0,0); + g.setFont('Vector',16); + g.drawString(l, x + 14, y + 10); - let xl = x+4+l*(s-12)/100; + if (Bangle.isCharging()) changeInterval(id, intervalHigh); + else changeInterval(id, intervalLow); + } - g.setColor(COLORS.white); - // g.fillRect(x+2,y+5,x+s-6,y+18); + Bangle.on('charging',function(charging) { draw(); }); + var id = setInterval(()=>WIDGETS["wid_a_battery_widget"].draw(), intervalLow); - g.fillRect(x,y,xl+4,y+16+3); //Clear - - g.setColor(levelColor(l)); - // g.fillRect(x+1,y+3,x+s-5,y+4); - // g.fillRect(x+1,y+19,x+s-5,y+20); - // g.fillRect(x,y+4,x+1,y+19); - // g.fillRect(x+s-5,y+4,x+s-4,y+19); - //g.fillRect(x+s-3,y+8,x+s-2,y+16); // tip of the battery - g.fillRect(x+4,y+14+3,xl,y+16+3); // charging bar - - g.fillRect((x+4+100*(s-12)/100)-1,y+14+3,x+4+100*(s-12)/100,y+16+3); // charging bar full - - g.setColor(COLORS.black); - g.setFontAlign(0,0); - g.setFont('Vector',16); - g.drawString(l, x + 14, y + 10); - - if (Bangle.isCharging()) changeInterval(id, intervalHigh); - else changeInterval(id, intervalLow); - } - - - Bangle.on('charging',function(charging) { draw(); }); - var id = setInterval(()=>WIDGETS["wid_a_battery_widget"].draw(), intervalLow); - - WIDGETS["wid_a_battery_widget"]={area:"tr",width:30,draw:draw}; + WIDGETS["wid_a_battery_widget"]={area:"tr",width:30,draw:draw}; })();