berlinc - Enable fastload

master
Martin Boonk 2023-01-09 18:57:51 +01:00
parent cdbc331b17
commit e9724edb9e
1 changed files with 20 additions and 15 deletions

View File

@ -1,3 +1,6 @@
// timeout used to update every minute
let drawTimeout;
{
// Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr // Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr
// https://github.com/eska-muc/BangleApps // https://github.com/eska-muc/BangleApps
const fields = [4, 4, 11, 4]; const fields = [4, 4, 11, 4];
@ -6,18 +9,15 @@ const width = g.getWidth() - 2 * offset;
const height = g.getHeight() - 2 * offset; const height = g.getHeight() - 2 * offset;
const rowHeight = height / 4; const rowHeight = height / 4;
var show_date = false; let show_date = false;
var show_time = false; let show_time = false;
var yy = 0; let yy = 0;
var rowlights = []; let rowlights = [];
var time_digit = []; let time_digit = [];
// timeout used to update every minute
var drawTimeout;
// schedule a draw for the next minute // schedule a draw for the next minute
function queueDraw() { let queueDraw = () => {
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() { drawTimeout = setTimeout(function() {
drawTimeout = undefined; drawTimeout = undefined;
@ -25,7 +25,7 @@ function queueDraw() {
}, 60000 - (Date.now() % 60000)); }, 60000 - (Date.now() % 60000));
} }
function draw() { let draw = () => {
g.reset().clearRect(0,24,g.getWidth(),g.getHeight()); g.reset().clearRect(0,24,g.getWidth(),g.getHeight());
var now = new Date(); var now = new Date();
@ -84,28 +84,32 @@ function draw() {
queueDraw(); queueDraw();
} }
function toggleDate() { let toggleDate = () => {
show_date = ! show_date; show_date = ! show_date;
draw(); draw();
} }
function toggleTime() { let toggleTime = () => {
show_time = ! show_time; show_time = ! show_time;
draw(); draw();
} }
let clear = () => {
if (global.drawTimeout) clearTimeout(global.drawTimeout);
delete global.drawTimeout;
}
// Stop updates when LCD is off, restart when on // Stop updates when LCD is off, restart when on
Bangle.on('lcdPower',on=>{ Bangle.on('lcdPower',on=>{
if (on) { if (on) {
draw(); // draw immediately, queue redraw draw(); // draw immediately, queue redraw
} else { // stop draw timer } else { // stop draw timer
if (drawTimeout) clearTimeout(drawTimeout); clear();
drawTimeout = undefined;
} }
}); });
// Show launcher when button pressed, handle up/down // Show launcher when button pressed, handle up/down
Bangle.setUI("clockupdown", dir=> { Bangle.setUI({mode: "clockupdown", remove: clear}, dir=> {
if (dir<0) toggleTime(); if (dir<0) toggleTime();
if (dir>0) toggleDate(); if (dir>0) toggleDate();
}); });
@ -114,3 +118,4 @@ g.clear();
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.drawWidgets(); Bangle.drawWidgets();
draw(); draw();
}