Call widget_utils' show/hide instead of Bangle.drawWidgets()

master
Felipe Manga 2024-01-19 11:48:21 +00:00
parent 417b434cf1
commit 58e8c032c7
2 changed files with 38 additions and 28 deletions

View File

@ -623,16 +623,23 @@ let lcdBuffer = 0,
start = 0; start = 0;
let locked = false, let locked = false,
charging = false; let charging = false;
var interval = 30; let stopped = true;
var timeout; let interval = 30;
let timeout;
function setupInterval(force) { function setupInterval(force) {
if (timeout) if (timeout)
clearTimeout(timeout); clearTimeout(timeout);
let stopped = locked && !charging; let stop = locked && !charging;
timeout = setTimeout(setupInterval, stopped ? 60000 : 60); timeout = setTimeout(setupInterval, stop ? 60000 : 60);
tick(stopped && !force); tick(stop && !force);
if (stop != stopped) {
stopped = stop;
let widget_utils = require("widget_utils");
if (stop) widget_utils.show();
else if (widget_utils.hide) widget_utils.hide();
}
} }
function test(addr, y) { function test(addr, y) {
@ -720,30 +727,26 @@ function init() {
setTimeout(probe, 1); setTimeout(probe, 1);
} }
function tick(widgets) { function tick(locked) {
g.reset(); g.reset();
if (lcdBuffer && !widgets) { if (lcdBuffer && !locked) {
BLACK().drawRect(-1, -1, 0, 177); // dirty all the rows BLACK().drawRect(-1, -1, 0, 177); // dirty all the rows
gfx.tick(bgColor); gfx.tick(bgColor);
} }
var d = new Date(); var d = new Date();
var h = d.getHours(), m = d.getMinutes(); var h = d.getHours(), m = d.getMinutes();
g.setColor(widgets ? g.theme.fg : g.toColor(1,0,1)) g.setColor(locked ? g.theme.fg : g.toColor(1,0,1))
.setBgColor(g.theme.bg) .setBgColor(g.theme.bg)
.setFontCustom(fontNum, 48, 28, 41) .setFontCustom(fontNum, 48, 28, 41)
.setFontAlign(-1, -1) .setFontAlign(-1, -1)
.drawString(("0" + h).substr(-2) + ("0"+m).substr(-2), 30, 30, true); .drawString(("0" + h).substr(-2) + ("0"+m).substr(-2), 30, 30, true);
if (widgets)
Bangle.drawWidgets();
} }
init();
Bangle.setUI("clock"); Bangle.setUI("clock");
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.on("lock", l => { Bangle.on("lock", l => {
locked = l; locked = l;
setupInterval(); setupInterval();
@ -753,3 +756,5 @@ Bangle.on('charging', c => {
charging = c; charging = c;
setupInterval(); setupInterval();
}); });
init();

View File

@ -493,17 +493,24 @@ const WHITE = g.setColor.bind(g, 0xFFFF);
let lcdBuffer = 0, let lcdBuffer = 0,
start = 0; start = 0;
let locked = false, let locked = false;
charging = false; let charging = false;
var interval = 30, let stopped = true;
timeout; let interval = 30;
let timeout;
function setupInterval(force) { function setupInterval(force) {
if (timeout) if (timeout)
clearTimeout(timeout); clearTimeout(timeout);
let stopped = locked && !charging; let stop = locked && !charging;
timeout = setTimeout(setupInterval, stopped ? 60000 : 30); timeout = setTimeout(setupInterval, stop ? 60000 : 60);
tick(stopped && !force); tick(stop && !force);
if (stop != stopped) {
stopped = stop;
let widget_utils = require("widget_utils");
if (stop) widget_utils.show();
else if (widget_utils.hide) widget_utils.hide();
}
} }
function test(addr, y) { function test(addr, y) {
@ -655,10 +662,10 @@ function drawNode(index) {
gfx.render(E.getAddressOf(translation, true)); gfx.render(E.getAddressOf(translation, true));
} }
function tick(widgets) { function tick(locked) {
g.reset(); g.reset();
if (lcdBuffer && !widgets) { if (lcdBuffer && !locked) {
BLACK().drawRect(-1, -1, 0, 177); // dirty all the rows BLACK().drawRect(-1, -1, 0, 177); // dirty all the rows
gfx.clear(bgColor); gfx.clear(bgColor);
gfx.stars(); gfx.stars();
@ -677,15 +684,11 @@ function tick(widgets) {
.setFontAlign(0, 0.5) .setFontAlign(0, 0.5)
.setFont('6x8', 2) .setFont('6x8', 2)
.drawString(time, 176 / 2, 176 - 16, true); .drawString(time, 176 / 2, 176 - 16, true);
if (widgets)
Bangle.drawWidgets();
} }
init();
Bangle.setUI("clock"); Bangle.setUI("clock");
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.on("lock", l => { Bangle.on("lock", l => {
locked = l; locked = l;
setupInterval(); setupInterval();
@ -695,3 +698,5 @@ Bangle.on('charging', c => {
charging = c; charging = c;
setupInterval(); setupInterval();
}); });
init();