mirror of https://github.com/espruino/BangleApps
barclock: add Fast Loading
parent
1d4fb1301a
commit
050139c763
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
|
@ -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"}],
|
||||||
|
|
Loading…
Reference in New Issue