widdevst: draw when peripherals are on

pull/3397/head
Rob Pilling 2024-05-02 18:25:39 +01:00
parent 2beb1c2997
commit 535335f065
1 changed files with 17 additions and 18 deletions

View File

@ -1,9 +1,10 @@
(() => { (() => {
var stat = {date: 0}; var stat = {date: 0};
var d = Date.now();
WIDGETS.devst = {area: "tr", width: 22, draw: function() { WIDGETS.devst = {area: "tr", width: 22, draw: function() {
d = Date.now();
if (WIDGETS.devst._draw) return; if (WIDGETS.devst._draw) return;
var d = Date.now();
var t; var t;
if ((d - stat.date) < 6e4) { if ((d - stat.date) < 6e4) {
t = process.memory(false); t = process.memory(false);
@ -20,12 +21,15 @@
g.clearRect(x, y, x + 21, y + 23); g.clearRect(x, y, x + 21, y + 23);
g.drawRect(x + 2, y + 1, x + 20, y + 21); g.drawRect(x + 2, y + 1, x + 20, y + 21);
g.setFont('6x8', 1); g.setFont('6x8', 1);
if (NRF.getSecurityStatus().connected) g.drawString('B', x + 5, y + 3); var again = false;
if (Bangle.isCompassOn()) g.drawString('C', x + 13, y + 3); if (NRF.getSecurityStatus().connected) g.drawString('B', x + 5, y + 3), again = true;
if (Bangle.isGPSOn()) g.drawString('G', x + 5, y + 12); if (Bangle.isCompassOn()) g.drawString('C', x + 13, y + 3), again = true;
if (Bangle.isHRMOn()) g.drawString('H', x + 13, y + 12); if (Bangle.isGPSOn()) g.drawString('G', x + 5, y + 12), again = true;
if (Bangle.isHRMOn()) g.drawString('H', x + 13, y + 12), again = true;
g.setColor(col(stat.sto)); g.drawRect(x + 2, y + 21, x + 2 + stat.sto * 18, y + 22); g.setColor(col(stat.sto)); g.drawRect(x + 2, y + 21, x + 2 + stat.sto * 18, y + 22);
g.setColor(col(t)); g.drawRect(x + 1, y + 21 - t * 20, x + 2, y + 21); g.setColor(col(t)); g.drawRect(x + 1, y + 21 - t * 20, x + 2, y + 21);
// if there's nothing active, don't queue a redraw (rely on Bangle.on(...) below)
if (again) setTimeout(draw, drawTime());
}}; }};
function col(p) { function col(p) {
@ -33,18 +37,13 @@
} }
var draw = WIDGETS.devst.draw.bind(WIDGETS.devst); var draw = WIDGETS.devst.draw.bind(WIDGETS.devst);
var iid = setInterval(draw, Bangle.isLocked() ? 6e4 : 2e3);
Bangle.on('lcdPower', (on) => { var drawTime = () => Bangle.isLocked() ? 6e4 : 2e3;
if (on) { var throttledDraw = () => Date.now() - d > drawTime() && draw();
draw();
if (!iid) iid = setInterval(draw, Bangle.isLocked() ? 6e4 : 2e3); Bangle.on("HRM", throttledDraw);
} else if (iid) iid = clearInterval(iid); Bangle.on("GPS", throttledDraw);
}); Bangle.on("mag", throttledDraw);
Bangle.on('lock', (on) => { NRF.on("connect", throttledDraw);
if (iid) { draw();
clearInterval(iid);
iid = setInterval(draw, on ? 6e4 : 2e3);
}
});
})(); })();