barclock: add Fast Loading

pull/2337/head
Richard de Boer 2022-12-01 01:16:23 +01:00
parent 1d4fb1301a
commit 050139c763
No known key found for this signature in database
3 changed files with 122 additions and 117 deletions

View File

@ -13,3 +13,4 @@
0.13: Add font setting 0.13: Add font setting
0.14: Use ClockFace_menu.addItems 0.14: Use ClockFace_menu.addItems
0.15: Add Power saving option 0.15: Add Power saving option
0.16: Support Fast Loading

View File

@ -1,20 +1,21 @@
/* jshint esversion: 6 */ /* jshint esversion: 6 */
/** {
/**
* A simple digital clock showing seconds as a bar * A simple digital clock showing seconds as a bar
**/ **/
// Check settings for what type our clock should be // Check settings for what type our clock should be
let locale = require("locale"); let locale = require("locale");
{ // add some more info to locale { // add some more info to locale
let date = new Date(); let date = new Date();
date.setFullYear(1111); date.setFullYear(1111);
date.setMonth(1, 3); // februari: months are zero-indexed date.setMonth(1, 3); // februari: months are zero-indexed
const localized = locale.date(date, true); const localized = locale.date(date, true);
locale.dayFirst = /3.*2/.test(localized); locale.dayFirst = /3.*2/.test(localized);
locale.hasMeridian = (locale.meridian(date)!==""); locale.hasMeridian = (locale.meridian(date)!=="");
} }
let barW = 0, prevX = 0; let barW = 0, prevX = 0;
function renderBar(l) { const renderBar = function (l) {
"ram"; "ram";
if (l) prevX = 0; // called from Layout: drawing area was cleared if (l) prevX = 0; // called from Layout: drawing area was cleared
else l = clock.layout.bar; else l = clock.layout.bar;
@ -25,9 +26,9 @@ function renderBar(l) {
if (x2<Math.max(0, prevX)) g.setBgColor(l.bgCol || g.theme.bg).clearRect(x2+1, l.y, prevX, l.y2); if (x2<Math.max(0, prevX)) g.setBgColor(l.bgCol || g.theme.bg).clearRect(x2+1, l.y, prevX, l.y2);
else g.setColor(l.col || g.theme.fg).fillRect(prevX+1, l.y, x2, l.y2); else g.setColor(l.col || g.theme.fg).fillRect(prevX+1, l.y, x2, l.y2);
prevX = x2; prevX = x2;
} }
function timeText(date) { const timeText = function(date) {
if (!clock.is12Hour) { if (!clock.is12Hour) {
return locale.time(date, true); return locale.time(date, true);
} }
@ -39,19 +40,17 @@ function timeText(date) {
date12.setHours(hours-12); date12.setHours(hours-12);
} }
return locale.time(date12, true); return locale.time(date12, true);
} }
function ampmText(date) { const ampmText = date => (clock.is12Hour && locale.hasMeridian) ? locale.meridian(date) : "";
return (clock.is12Hour && locale.hasMeridian) ? locale.meridian(date) : ""; const dateText = date => {
}
function dateText(date) {
const dayName = locale.dow(date, true), const dayName = locale.dow(date, true),
month = locale.month(date, true), month = locale.month(date, true),
day = date.getDate(); day = date.getDate();
const dayMonth = locale.dayFirst ? `${day} ${month}` : `${month} ${day}`; const dayMonth = locale.dayFirst ? `${day} ${month}` : `${month} ${day}`;
return `${dayName} ${dayMonth}`; return `${dayName} ${dayMonth}`;
} };
const ClockFace = require("ClockFace"), const ClockFace = require("ClockFace"),
clock = new ClockFace({ clock = new ClockFace({
precision: 1, precision: 1,
settingsFile: "barclock.settings.json", settingsFile: "barclock.settings.json",
@ -110,15 +109,20 @@ const ClockFace = require("ClockFace"),
prevX = 0; // force redraw of bar prevX = 0; // force redraw of bar
this.layout.forgetLazyState(); this.layout.forgetLazyState();
}, },
remove: function() {
if (this.onLock) Bangle.removeListener("lock", this.onLock);
},
}); });
// power saving: only update once a minute while locked, hide bar // power saving: only update once a minute while locked, hide bar
if (clock.powerSave) { if (clock.powerSave) {
Bangle.on("lock", lock => { clock.onLock = lock => {
clock.precision = lock ? 60 : 1; clock.precision = lock ? 60 : 1;
clock.tick(); clock.tick();
renderBar(); // hide/redraw bar right away renderBar(); // hide/redraw bar right away
}); }
} Bangle.on("lock", clock.onLock);
}
clock.start(); clock.start();
}

View File

@ -1,7 +1,7 @@
{ {
"id": "barclock", "id": "barclock",
"name": "Bar Clock", "name": "Bar Clock",
"version": "0.15", "version": "0.16",
"description": "A simple digital clock showing seconds as a bar", "description": "A simple digital clock showing seconds as a bar",
"icon": "clock-bar.png", "icon": "clock-bar.png",
"screenshots": [{"url":"screenshot.png"},{"url":"screenshot_pm.png"}], "screenshots": [{"url":"screenshot.png"},{"url":"screenshot_pm.png"}],