mirror of https://github.com/espruino/BangleApps
Update app.js
parent
048dcedfcd
commit
e924934146
|
@ -1,53 +1,64 @@
|
|||
{
|
||||
let digits = [];
|
||||
let drawTimeout;
|
||||
let extrasTimeout;
|
||||
let onLock;
|
||||
let onTap;
|
||||
let onTwist;
|
||||
let fontName="";
|
||||
let settings = require('Storage').readJSON("contourclock.json", true) || {};
|
||||
if (settings.fontIndex==undefined) {
|
||||
settings.fontIndex=0;
|
||||
settings.widgets=true;
|
||||
settings.weekday=true;
|
||||
settings.hideWhenLocked=false;
|
||||
settings.tapToShow=false;
|
||||
settings.twistToShow=false;
|
||||
settings.date=true;
|
||||
if (settings.fontIndex == undefined) {
|
||||
settings.fontIndex = 0;
|
||||
settings.widgets = true;
|
||||
settings.weekday = true;
|
||||
settings.hideWhenLocked = false;
|
||||
settings.tapToShow = false;
|
||||
settings.twistToShow = false;
|
||||
settings.date = true;
|
||||
require('Storage').writeJSON("contourclock.json", settings);
|
||||
}
|
||||
require("FontTeletext10x18Ascii").add(Graphics);
|
||||
let extrasShown = (!settings.hidewhenlocked) && (!Bangle.isLocked());
|
||||
let installedFonts = require('Storage').readJSON("contourclock-install.json") || {};
|
||||
if (installedFonts.n>0) { //New install - check for unused font files
|
||||
settings.fontIndex=E.clip(settings.fontIndex,-installedFonts.n+1,installedFonts.n-1);
|
||||
if (installedFonts.n > 0) { //New install - check for unused font files
|
||||
settings.fontIndex = E.clip(settings.fontIndex, -installedFonts.n + 1, installedFonts.n - 1);
|
||||
require('Storage').writeJSON("contourclock.json", settings);
|
||||
for (let n=installedFonts.n; ;n++) {
|
||||
if (require("Storage").read("contourclock-"+n+".json")==undefined) break;
|
||||
require("Storage").erase("contourclock-"+n+".json");
|
||||
for (let n = installedFonts.n;; n++) {
|
||||
if (require("Storage").read("contourclock-" + n + ".json") == undefined) break;
|
||||
require("Storage").erase("contourclock-" + n + ".json");
|
||||
}
|
||||
require("Storage").erase("contourclock-install.json");
|
||||
}
|
||||
require("FontTeletext10x18Ascii").add(Graphics);
|
||||
|
||||
let showExtras = function() { //show extras for a limited time
|
||||
drawExtras();
|
||||
if (extrasTimeout) clearTimeout(extrasTimeout);
|
||||
extrasTimeout = setTimeout(hideExtras, 5000);
|
||||
};
|
||||
let drawExtras = function() { //draw date, day of the week and widgets
|
||||
let date = new Date();
|
||||
g.setFont("Teletext10x18Ascii").setFontAlign(0,1);
|
||||
if (settings.weekday) g.drawString(require("locale").dow(date).toUpperCase(),g.getWidth()/2,g.getHeight()-18);
|
||||
if (settings.date) g.drawString(require('locale').date(date,1),g.getWidth()/2,g.getHeight());
|
||||
g.setFont("Teletext10x18Ascii").setFontAlign(0, 1);
|
||||
if (settings.weekday) g.drawString(require("locale").dow(date).toUpperCase(), g.getWidth() / 2, g.getHeight() - 18);
|
||||
if (settings.date) g.drawString(require('locale').date(date, 1), g.getWidth() / 2, g.getHeight());
|
||||
require("widget_utils").show();
|
||||
extrasShown = true;
|
||||
};
|
||||
let hideExtras = function() {
|
||||
g.clearRect(0,138,g.getWidth()-1,176);
|
||||
if (extrasTimeout) clearTimeout(extrasTimeout);
|
||||
g.clearRect(0, 138, g.getWidth() - 1, 176);
|
||||
require("widget_utils").hide();
|
||||
extrasShown = false;
|
||||
print(drawTimeout);
|
||||
};
|
||||
let draw = function() {
|
||||
print(process.memory().usage + " - " + drawTimeout);
|
||||
let date = new Date();
|
||||
g.reset();
|
||||
if ((!settings.hideWhenLocked) || (!Bangle.isLocked())) drawExtras();
|
||||
else require("widget_utils").hide();
|
||||
if (extrasShown) drawExtras();
|
||||
else hideExtras();
|
||||
require('contourclock').drawClock(settings.fontIndex);
|
||||
if (drawTimeout) clearTimeout(drawTimeout);
|
||||
drawTimeout = setTimeout(draw, 60000 - (Date.now() % 60000));
|
||||
drawTimeout = setTimeout(function() {
|
||||
drawTimeout = undefined;
|
||||
draw();
|
||||
}, 60000 - (Date.now() % 60000));
|
||||
};
|
||||
if (settings.hideWhenLocked) {
|
||||
onLock = locked => {
|
||||
|
@ -59,30 +70,23 @@
|
|||
hideExtras();
|
||||
}
|
||||
};
|
||||
onTap = d => {
|
||||
drawExtras();
|
||||
if (extrasTimeout) clearTimeout(extrasTimeout);
|
||||
extrasTimeout = setTimeout(hideExtras, 5000);
|
||||
};
|
||||
onTwist = () => {
|
||||
drawExtras();
|
||||
if (extrasTimeout) clearTimeout(extrasTimeout);
|
||||
extrasTimeout = setTimeout(hideExtras, 5000);
|
||||
};
|
||||
Bangle.on('lock', onLock);
|
||||
if (settings.tapToShow) Bangle.on('tap', onTap);
|
||||
if (settings.twistToShow) Bangle.on('twist', onTwist);
|
||||
if (settings.tapToShow) Bangle.on('tap', showExtras);
|
||||
if (settings.twistToShow) Bangle.on('twist', showExtras);
|
||||
}
|
||||
Bangle.setUI({mode:"clock", remove:function() {
|
||||
Bangle.removeListener('lock',onLock);
|
||||
Bangle.removeListener('tap', onTap);
|
||||
Bangle.removeListener('twist',onTwist);
|
||||
if (drawTimeout) clearTimeout(drawTimeout);
|
||||
if (extrasTimeout) clearTimeout(extrasTimeout);
|
||||
if (settings.hideWhenLocked) require("widget_utils").show();
|
||||
g.reset();
|
||||
g.clear();
|
||||
}});
|
||||
Bangle.setUI({
|
||||
mode: "clock",
|
||||
remove: function() {
|
||||
Bangle.removeListener('lock', onLock);
|
||||
Bangle.removeListener('tap', showExtras);
|
||||
Bangle.removeListener('twist', showExtras);
|
||||
if (drawTimeout) clearTimeout(drawTimeout);
|
||||
if (extrasTimeout) clearTimeout(extrasTimeout);
|
||||
if (settings.hideWhenLocked) require("widget_utils").show();
|
||||
g.reset();
|
||||
g.clear();
|
||||
}
|
||||
});
|
||||
g.clear();
|
||||
if (settings.widgets) {
|
||||
Bangle.loadWidgets();
|
||||
|
|
Loading…
Reference in New Issue