Merge pull request #2484 from halemmerich/berlinc

Berlin clock - Enable fast loading
master
Gordon Williams 2023-01-13 08:31:14 +00:00 committed by GitHub
commit becbce3c0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 17 deletions

View File

@ -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

View File

@ -1,3 +1,4 @@
{
// Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr
// https://github.com/eska-muc/BangleApps
const fields = [4, 4, 11, 4];
@ -6,18 +7,18 @@ 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 = [];
let rowlights = [];
let time_digit = [];
// timeout used to update every minute
var drawTimeout;
let drawTimeout;
// schedule a draw for the next minute
function queueDraw() {
let queueDraw = () => {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() {
drawTimeout = undefined;
@ -25,7 +26,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 +85,39 @@ function draw() {
queueDraw();
}
function toggleDate() {
let toggleDate = () => {
show_date = ! show_date;
draw();
}
function toggleTime() {
let toggleTime = () => {
show_time = ! show_time;
draw();
}
// Stop updates when LCD is off, restart when on
Bangle.on('lcdPower',on=>{
let clear = () => {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
}
let onLcdPower = on => {
if (on) {
draw(); // draw immediately, queue redraw
} else { // stop draw timer
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
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("clockupdown", dir=> {
Bangle.setUI({mode: "clockupdown", remove: cleanup}, dir=> {
if (dir<0) toggleTime();
if (dir>0) toggleDate();
});
@ -114,3 +126,4 @@ g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
draw();
}

View File

@ -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",