Update app.js

master
xxDUxx 2023-01-22 02:12:19 +01:00 committed by GitHub
parent 84510e46cc
commit 8c7369a423
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 61 additions and 34 deletions

View File

@ -1,14 +1,17 @@
{ {
const interval = 60000;
let digits = []; let digits = [];
let drawTimeout; let drawTimeout;
let extrasTimeout;
let fontName=""; let fontName="";
let settings = require('Storage').readJSON("contourclock.json", true) || {}; let settings = require('Storage').readJSON("contourclock.json", true) || {};
if (settings.fontIndex==undefined) { if (settings.fontIndex==undefined) {
settings.fontIndex=0; settings.fontIndex=0;
settings.widgets=true; settings.widgets=true;
settings.hide=false;
settings.weekday=true; settings.weekday=true;
settings.hideWhenLocked=false; settings.hideWhenLocked=false;
settings.tapToShow=false;
settings.twistToShow=false;
settings.date=true; settings.date=true;
require('Storage').writeJSON("contourclock.json", settings); require('Storage').writeJSON("contourclock.json", settings);
} }
@ -20,52 +23,76 @@
} }
require("Storage").erase("contourclock-install.json"); require("Storage").erase("contourclock-install.json");
} }
require("FontTeletext10x18Ascii").add(Graphics);
let queueDraw = function() { let queueDraw = function() {
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() { drawTimeout = setTimeout(draw, interval - (Date.now() % interval));
drawTimeout = undefined; };
draw(); let drawExtras = function() { //draw date, day of the week and widgets
queueDraw(); let date = new Date();
}, 60000 - (Date.now() % 60000)); g.setFont("Teletext10x18Ascii");
if (settings.weekday)
g.setFontAlign(0,1).drawString(require("locale").dow(date).toUpperCase(),g.getWidth()/2,g.getHeight()-18);
// Draw Date
if (settings.date)
g.setFontAlign(0,1).drawString(require('locale').date(date,1),g.getWidth()/2,g.getHeight());
require("widget_utils").show();
};
let hideExtras = function() {
g.clearRect(0,138,g.getWidth()-1,176);
require("widget_utils").hide();
}; };
let draw = function() { let draw = function() {
var date = new Date(); //drawTimeout = undefined;
// Draw day of the week let date = new Date();
print ("drawing time at:" +date.getHours()+":"+date.getMinutes()+":"+date.getSeconds());
g.reset(); g.reset();
if ((!settings.hideWhenLocked) || (!Bangle.isLocked())) { if ((!settings.hideWhenLocked) || (!Bangle.isLocked())) drawExtras();
// Draw day of the week else require("widget_utils").hide();
g.setFont("Teletext10x18Ascii"); require('contourclock').drawClock(settings.fontIndex);
g.clearRect(0,138,g.getWidth()-1,176); if (drawTimeout) clearTimeout(drawTimeout);
if (settings.weekday) g.setFontAlign(0,1).drawString(require("locale").dow(date).toUpperCase(),g.getWidth()/2,g.getHeight()-18); drawTimeout = setTimeout(draw, interval - (Date.now() % interval));
// Draw Date };
if (settings.date) g.setFontAlign(0,1).drawString(require('locale').date(new Date(),1),g.getWidth()/2,g.getHeight());
let onLock = locked => {
if (!locked) {
require("widget_utils").show();
drawExtras();
} else { } else {
require("widget_utils").hide(); require("widget_utils").hide();
hideExtras();
} }
require('contourclock').drawClock(settings.fontIndex);
}; };
require("FontTeletext10x18Ascii").add(Graphics); let onTap = d => {
g.clear(); if (d.double) {
draw(); drawExtras();
if (settings.hideWhenLocked) Bangle.on('lock', function (locked) { if (extrasTimeout) clearTimeout(extrasTimeout);
if (!locked) require("widget_utils").show(); extrasTimeout = setTimeout(hideExtras, 5000);
else {
g.clear();
if (settings.hide) require("widget_utils").swipeOn();
else require("widget_utils").hide();
} }
draw(); };
}); let onTwist = () => {
drawExtras();
if (extrasTimeout) clearTimeout(extrasTimeout);
extrasTimeout = setTimeout(hideExtras, 5000);
};
if (settings.hideWhenLocked) {
Bangle.on('lock', onLock);
if (settings.tapToShow) Bangle.on('tap', onTap);
if (settings.twistToShow) Bangle.on('twist', onTwist);
}
Bangle.setUI({mode:"clock", remove:function() { Bangle.setUI({mode:"clock", remove:function() {
if (onLock) Bangle.removeListener('lock',onLock);
if (onTap) Bangle.removeListener('tap', onTap);
if (onTwist) Bangle.removeListener('twist',onTwist);
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
if (settings.widgets && settings.hide) require("widget_utils").show(); if (extrasTimeout) clearTimeout(extrasTimeout);
if (settings.hideWhenLocked) require("widget_utils").show();
g.reset(); g.reset();
g.clear(); g.clear();
}}); }});
if (settings.widgets) { g.clear();
Bangle.loadWidgets(); Bangle.loadWidgets();
if (settings.hide) require("widget_utils").swipeOn(); Bangle.drawWidgets();
else Bangle.drawWidgets(); draw();
}
queueDraw();
} }