updated example clock with fast load code and a screenshot

master
Gordon Williams 2024-05-21 11:28:01 +01:00
parent 662cb75dfa
commit e0acc5610e
3 changed files with 45 additions and 40 deletions

View File

@ -1,44 +1,48 @@
// timeout used to update every minute {
let drawTimeout; // timeout used to update every minute
let drawTimeout;
// schedule a draw for the next minute // schedule a draw for the next minute
function queueDraw() { let queueDraw = function() {
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() { drawTimeout = setTimeout(function() {
drawTimeout = undefined; drawTimeout = undefined;
draw(); draw();
}, 60000 - (Date.now() % 60000)); }, 60000 - (Date.now() % 60000));
} };
function draw() { let draw = function() {
// queue next draw in one minute // queue next draw in one minute
queueDraw(); queueDraw();
// Work out where to draw... // Work out where to draw...
var x = g.getWidth()/2; var x = g.getWidth()/2;
var y = g.getHeight()/2; var y = g.getHeight()/2;
g.reset(); g.reset();
// work out locale-friendly date/time // work out locale-friendly date/time
var date = new Date(); var date = new Date();
var timeStr = require("locale").time(date,1); var timeStr = require("locale").time(date,1);
var dateStr = require("locale").date(date); var dateStr = require("locale").date(date);
// draw time // draw time
g.setFontAlign(0,0).setFont("Vector",48); g.setFontAlign(0,0).setFont("Vector",48);
g.clearRect(0,y-15,g.getWidth(),y+25); // clear the background g.clearRect(0,y-15,g.getWidth(),y+25); // clear the background
g.drawString(timeStr,x,y); g.drawString(timeStr,x,y);
// draw date // draw date
y += 35; y += 35;
g.setFontAlign(0,0).setFont("6x8"); g.setFontAlign(0,0).setFont("6x8");
g.clearRect(0,y-4,g.getWidth(),y+4); // clear the background g.clearRect(0,y-4,g.getWidth(),y+4); // clear the background
g.drawString(dateStr,x,y); g.drawString(dateStr,x,y);
} };
// Clear the screen once, at startup // Clear the screen once, at startup
g.clear(); g.clear();
// draw immediately at first, queue update // draw immediately at first, queue update
draw(); draw();
// Show launcher when middle button pressed // Show launcher when middle button pressed
Bangle.setUI("clock"); Bangle.setUI({mode:"clock", remove:function() {
// Load widgets // free any memory we allocated to allow fast loading
Bangle.loadWidgets(); }});
Bangle.drawWidgets(); // Load widgets
Bangle.loadWidgets();
Bangle.drawWidgets();
}

View File

@ -4,6 +4,7 @@
"version":"0.01", "version":"0.01",
"description": "A detailed description of my clock", "description": "A detailed description of my clock",
"icon": "icon.png", "icon": "icon.png",
"screenshots": [{"url":"screenshot.png"}],
"type": "clock", "type": "clock",
"tags": "clock", "tags": "clock",
"supports" : ["BANGLEJS2"], "supports" : ["BANGLEJS2"],

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB