Queue draw based on current time.

master
David Peer 2022-02-19 14:31:58 +01:00
parent c7a1d9e368
commit 5460a95b8e
1 changed files with 30 additions and 25 deletions

View File

@ -50,9 +50,6 @@ const screenWidth = g.getWidth();
const screenHeight = g.getHeight(); const screenHeight = g.getHeight();
const halfWidth = screenWidth / 2; const halfWidth = screenWidth / 2;
const scale = screenWidth / 240; const scale = screenWidth / 240;
const REFRESH_RATE = 10E3;
let interval = 0;
let showingDate = false; let showingDate = false;
@ -107,20 +104,22 @@ function drawClock(num){
function draw(date){ function draw(date){
queueDraw();
let d = new Date(); let d = new Date();
let l1, l2; let l1, l2;
showingDate = date; showingDate = date;
if (date) { if (date) {
setUpdateInt(0);
l1 = ('0' + (new Date()).getDate()).substr(-2); l1 = ('0' + (new Date()).getDate()).substr(-2);
l2 = ('0' + ((new Date()).getMonth() + 1)).substr(-2); l2 = ('0' + ((new Date()).getMonth() + 1)).substr(-2);
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
setTimeout(_ => { setTimeout(_ => {
draw(); draw();
setUpdateInt(1);
}, 5000); }, 5000);
} else { } else {
l1 = ('0' + (d.getHours() % (is12hour ? 12 : 24))).substr(-2); l1 = ('0' + (d.getHours() % (is12hour ? 12 : 24))).substr(-2);
@ -137,34 +136,32 @@ function draw(date){
} }
function setUpdateInt(set){ /*
if (interval) { * Draw watch face
clearInterval(interval); */
} var drawTimeout;
function queueDraw() {
if (set) { if (drawTimeout) clearTimeout(drawTimeout);
interval = setInterval(draw, REFRESH_RATE); drawTimeout = setTimeout(function() {
} drawTimeout = undefined;
draw();
}, 60000 - (Date.now() % 60000));
} }
g.clear(1);
Bangle.setUI("clock");
setUpdateInt(1);
draw();
/*
* Event handlers
*/
if (settings.showDate) { if (settings.showDate) {
Bangle.on('touch', () => draw(!showingDate)); Bangle.on('touch', () => draw(!showingDate));
} }
Bangle.on('lcdPower', function(on){ Bangle.on('lcdPower', function(on){
if (on){ if (drawTimeout) clearTimeout(drawTimeout);
setUpdateInt(1); drawTimeout = undefined;
if (on) {
draw(); draw();
} else {
setUpdateInt(0);
} }
}); });
@ -172,6 +169,14 @@ Bangle.on('lock', function(isLocked) {
draw(); draw();
}); });
/*
* Draw first time
*/
g.clear(1);
Bangle.setUI("clock");
draw();
Bangle.loadWidgets(); Bangle.loadWidgets();
if(settings.fullscreen){ if(settings.fullscreen){