From e9724edb9e60ac89701e033020f6f4fb703b8d62 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Mon, 9 Jan 2023 18:57:51 +0100 Subject: [PATCH 1/4] berlinc - Enable fastload --- apps/berlinc/berlin-clock.js | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 0dd8ff8ee..7e61a6db4 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -1,3 +1,6 @@ +// timeout used to update every minute +let drawTimeout; +{ // Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr // https://github.com/eska-muc/BangleApps const fields = [4, 4, 11, 4]; @@ -6,18 +9,15 @@ const width = g.getWidth() - 2 * offset; const height = g.getHeight() - 2 * offset; const rowHeight = height / 4; -var show_date = false; -var show_time = false; -var yy = 0; +let show_date = false; +let show_time = false; +let yy = 0; -var rowlights = []; -var time_digit = []; - -// timeout used to update every minute -var drawTimeout; +let rowlights = []; +let time_digit = []; // schedule a draw for the next minute -function queueDraw() { +let queueDraw = () => { if (drawTimeout) clearTimeout(drawTimeout); drawTimeout = setTimeout(function() { drawTimeout = undefined; @@ -25,7 +25,7 @@ function queueDraw() { }, 60000 - (Date.now() % 60000)); } -function draw() { +let draw = () => { g.reset().clearRect(0,24,g.getWidth(),g.getHeight()); var now = new Date(); @@ -84,28 +84,32 @@ function draw() { queueDraw(); } -function toggleDate() { +let toggleDate = () => { show_date = ! show_date; draw(); } -function toggleTime() { +let toggleTime = () => { show_time = ! show_time; draw(); } +let clear = () => { + if (global.drawTimeout) clearTimeout(global.drawTimeout); + delete global.drawTimeout; +} + // Stop updates when LCD is off, restart when on Bangle.on('lcdPower',on=>{ if (on) { draw(); // draw immediately, queue redraw } else { // stop draw timer - if (drawTimeout) clearTimeout(drawTimeout); - drawTimeout = undefined; + clear(); } }); // 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) toggleDate(); }); @@ -114,3 +118,4 @@ g.clear(); Bangle.loadWidgets(); Bangle.drawWidgets(); draw(); +} \ No newline at end of file From 56b6bcf2bdd4a955400305a7aa499ec048df2be3 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Mon, 9 Jan 2023 18:58:09 +0100 Subject: [PATCH 2/4] berlinc - Bump version --- apps/berlinc/ChangeLog | 1 + apps/berlinc/metadata.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/berlinc/ChangeLog b/apps/berlinc/ChangeLog index 9e9c1a6aa..b6ed1a5b4 100644 --- a/apps/berlinc/ChangeLog +++ b/apps/berlinc/ChangeLog @@ -4,3 +4,4 @@ 0.05: Update *on* the minute rather than every 15 secs Now show widgets Make compatible with themes, and Bangle.js 2 +0.06: Enable fastloading \ No newline at end of file diff --git a/apps/berlinc/metadata.json b/apps/berlinc/metadata.json index 85c42fc47..7f63f96cd 100644 --- a/apps/berlinc/metadata.json +++ b/apps/berlinc/metadata.json @@ -1,7 +1,7 @@ { "id": "berlinc", "name": "Berlin Clock", - "version": "0.05", + "version": "0.06", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "icon": "berlin-clock.png", "type": "clock", From 3cab2ce1a315ac003d05dae1ceafdfa1984f6161 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Mon, 9 Jan 2023 23:56:51 +0100 Subject: [PATCH 3/4] berlinc - Remove lcdPower listener --- apps/berlinc/berlin-clock.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 7e61a6db4..e41162732 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -18,9 +18,9 @@ let time_digit = []; // schedule a draw for the next minute let queueDraw = () => { - if (drawTimeout) clearTimeout(drawTimeout); - drawTimeout = setTimeout(function() { - drawTimeout = undefined; + if (global.drawTimeout) clearTimeout(global.drawTimeout); + global.drawTimeout = setTimeout(function() { + global.drawTimeout = undefined; draw(); }, 60000 - (Date.now() % 60000)); } @@ -99,17 +99,24 @@ let clear = () => { delete global.drawTimeout; } -// Stop updates when LCD is off, restart when on -Bangle.on('lcdPower',on=>{ +let onLcdPower = on => { if (on) { draw(); // draw immediately, queue redraw } else { // stop draw timer clear(); } -}); +} + +let cleanup = () => { + clear(); + Bangle.removeListener("lcdPower", onLcdPower); +} + +// Stop updates when LCD is off, restart when on +Bangle.on('lcdPower',onLcdPower); // Show launcher when button pressed, handle up/down -Bangle.setUI({mode: "clockupdown", remove: clear}, dir=> { +Bangle.setUI({mode: "clockupdown", remove: cleanup}, dir=> { if (dir<0) toggleTime(); if (dir>0) toggleDate(); }); From 05cd67286a1514c5e087349c0d23b0ed0f732e4f Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Tue, 10 Jan 2023 12:29:53 +0100 Subject: [PATCH 4/4] berlinc - Move drawTimeout back into scope --- apps/berlinc/berlin-clock.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index e41162732..cd0f12fa3 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -1,5 +1,3 @@ -// timeout used to update every minute -let drawTimeout; { // Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr // https://github.com/eska-muc/BangleApps @@ -16,11 +14,14 @@ let yy = 0; let rowlights = []; let time_digit = []; +// timeout used to update every minute +let drawTimeout; + // schedule a draw for the next minute let queueDraw = () => { - if (global.drawTimeout) clearTimeout(global.drawTimeout); - global.drawTimeout = setTimeout(function() { - global.drawTimeout = undefined; + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; draw(); }, 60000 - (Date.now() % 60000)); } @@ -95,8 +96,8 @@ let toggleTime = () => { } let clear = () => { - if (global.drawTimeout) clearTimeout(global.drawTimeout); - delete global.drawTimeout; + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; } let onLcdPower = on => {