Merge pull request #2350 from xxDUxx/master

ContourClock: New Version (fast load!)
master
Gordon Williams 2022-12-05 12:56:03 +00:00 committed by GitHub
commit 7a236dd9d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 137 additions and 70 deletions

View File

@ -7,3 +7,4 @@
0.25: Fixed a bug that would let widgets change the color of the clock. 0.25: Fixed a bug that would let widgets change the color of the clock.
0.26: Time formatted to locale 0.26: Time formatted to locale
0.27: Fixed the timing code, which sometimes did not update for one minute 0.27: Fixed the timing code, which sometimes did not update for one minute
0.28: More config options for cleaner look, enabled fast loading

View File

@ -0,0 +1,6 @@
# New Features:
- Fast load! (only works if your launcher uses widgets)
- widgets, date and weekday are individually configurable
- you can hide widgets, date and weekday for a cleaner look when the watch is locked
Contact me for bug reports or feature requests: ContourClock@gmx.de

View File

@ -1,35 +1,64 @@
var digits = []; {
var drawTimeout; let digits = [];
var fontName=""; let drawTimeout;
var settings = require('Storage').readJSON("contourclock.json", true) || {}; let fontName="";
if (settings.fontIndex==undefined) { let settings = require('Storage').readJSON("contourclock.json", true) || {};
settings.fontIndex=0; if (settings.fontIndex==undefined) {
require('Storage').writeJSON("myapp.json", settings); settings.fontIndex=0;
} settings.widgets=true;
settings.hide=false;
settings.weekday=true;
settings.hideWhenLocked=false;
settings.date=true; require('Storage').writeJSON("myapp.json", settings);
}
function queueDraw() { let queueDraw = function() {
setTimeout(function() { if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() {
drawTimeout = undefined;
draw();
queueDraw();
}, 60000 - (Date.now() % 60000));
};
let draw = function() {
var date = new Date();
// Draw day of the week
g.reset();
if ((!settings.hideWhenLocked) || (!Bangle.isLocked())) {
// Draw day of the week
g.setFont("Teletext10x18Ascii");
g.clearRect(0,138,g.getWidth()-1,176);
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(new Date(),1),g.getWidth()/2,g.getHeight());
}
require('contourclock').drawClock(settings.fontIndex);
};
require("FontTeletext10x18Ascii").add(Graphics);
g.clear();
draw();
if (settings.hideWhenLocked) Bangle.on('lock', function (locked) {
if (!locked) require("widget_utils").show();
else {
g.clear();
if (settings.hide) require("widget_utils").swipeOn();
else require("widget_utils").hide();
}
draw(); draw();
queueDraw(); });
}, 60000 - (Date.now() % 60000)); Bangle.setUI({mode:"clock", remove:function() {
if (drawTimeout) clearTimeout(drawTimeout);
if (settings.widgets && settings.hide) require("widget_utils").show();
g.reset();
g.clear();
}});
if (settings.widgets) {
Bangle.loadWidgets();
if (settings.hide) require("widget_utils").swipeOn();
else Bangle.drawWidgets();
}
queueDraw();
} }
function draw() {
var date = new Date();
// Draw day of the week
g.reset();
g.setFont("Teletext10x18Ascii");
g.clearRect(0,138,g.getWidth()-1,176);
g.setFontAlign(0,1).drawString(require("locale").dow(date).toUpperCase(),g.getWidth()/2,g.getHeight()-18);
// Draw Date
g.setFontAlign(0,1).drawString(require('locale').date(new Date(),1),g.getWidth()/2,g.getHeight());
require('contourclock').drawClock(settings.fontIndex);
}
require("FontTeletext10x18Ascii").add(Graphics);
Bangle.setUI("clock");
g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
queueDraw();
draw();

View File

@ -1,43 +1,73 @@
(function(back) { (function(back) {
Bangle.removeAllListeners('drag');
Bangle.setUI(""); Bangle.setUI("");
var settings = require('Storage').readJSON('contourclock.json', true) || {}; var 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.hide=false;
settings.weekday=true;
settings.date=true;
settings.hideWhenLocked=false;
require('Storage').writeJSON("myapp.json", settings); require('Storage').writeJSON("myapp.json", settings);
} }
savedIndex=settings.fontIndex; function mainMenu() {
saveListener = setWatch(function() { //save changes and return to settings menu E.showMenu({
require('Storage').writeJSON('contourclock.json', settings); "" : { "title" : "ContourClock" },
Bangle.removeAllListeners('swipe'); "< Back" : () => back(),
Bangle.removeAllListeners('lock'); 'Widgets': {
clearWatch(saveListener); value: (settings.widgets !== undefined ? settings.widgets : true),
g.clear(); onchange : v => {settings.widgets=v; require('Storage').writeJSON('contourclock.json', settings);}
back(); },
}, BTN, { repeat:false, edge:'falling' }); 'hide Widgets': {
lockListener = Bangle.on('lock', function () { //discard changes and return to clock value: (settings.hide !== undefined ? settings.hide : false),
settings.fontIndex=savedIndex; onchange : v => {settings.hide=v; require('Storage').writeJSON('contourclock.json', settings);}
require('Storage').writeJSON('contourclock.json', settings); },
Bangle.removeAllListeners('swipe'); 'Weekday': {
Bangle.removeAllListeners('lock'); value: (settings.weekday !== undefined ? settings.weekday : true),
clearWatch(saveListener); onchange : v => {settings.weekday=v; require('Storage').writeJSON('contourclock.json', settings);}
g.clear(); },
load(); 'Date': {
}); value: (settings.date !== undefined ? settings.date : true),
swipeListener = Bangle.on('swipe', function (direction) { onchange : v => {settings.date=v; require('Storage').writeJSON('contourclock.json', settings);}
var fontName = require('contourclock').drawClock(settings.fontIndex+direction); },
if (fontName) { 'Hide when locked': {
settings.fontIndex+=direction; value: (settings.hideWhenLocked !== undefined ? settings.hideWhenLocked : false),
g.clearRect(0,0,g.getWidth()-1,16); onchange : v => {settings.hideWhenLocked=v; require('Storage').writeJSON('contourclock.json', settings);}
g.setFont('6x8:2x2').setFontAlign(0,-1).drawString(fontName,g.getWidth()/2,0); },
} else { 'set Font': () => fontMenu()
require('contourclock').drawClock(settings.fontIndex); });
} }
}); function fontMenu() {
g.reset(); Bangle.setUI("");
g.clear(); savedIndex=settings.fontIndex;
g.setFont('6x8:2x2').setFontAlign(0,-1); saveListener = setWatch(function() { //save changes and return to settings menu
g.drawString(require('contourclock').drawClock(settings.fontIndex),g.getWidth()/2,0); require('Storage').writeJSON('contourclock.json', settings);
g.drawString('Swipe - change',g.getWidth()/2,g.getHeight()-36); Bangle.removeAllListeners('swipe');
g.drawString('BTN - save',g.getWidth()/2,g.getHeight()-18); Bangle.removeAllListeners('lock');
mainMenu();
}, BTN, { repeat:false, edge:'falling' });
lockListener = Bangle.on('lock', function () { //discard changes and return to clock
settings.fontIndex=savedIndex;
require('Storage').writeJSON('contourclock.json', settings);
Bangle.removeAllListeners('swipe');
Bangle.removeAllListeners('lock');
mainMenu();
});
swipeListener = Bangle.on('swipe', function (direction) {
var fontName = require('contourclock').drawClock(settings.fontIndex+direction);
if (fontName) {
settings.fontIndex+=direction;
g.clearRect(0,g.getHeight()-36,g.getWidth()-1,g.getHeight()-36+16);
g.setFont('6x8:2x2').setFontAlign(0,-1).drawString(fontName,g.getWidth()/2,g.getHeight()-36);
} else {
require('contourclock').drawClock(settings.fontIndex);
}
});
g.reset();
g.clearRect(0,24,g.getWidth()-1,g.getHeight()-1);
g.setFont('6x8:2x2').setFontAlign(0,-1);
g.drawString(require('contourclock').drawClock(settings.fontIndex),g.getWidth()/2,g.getHeight()-36);
g.drawString('Button to save',g.getWidth()/2,g.getHeight()-18);
}
mainMenu();
}) })

View File

@ -1,9 +1,10 @@
{ "id": "contourclock", { "id": "contourclock",
"name": "Contour Clock", "name": "Contour Clock",
"shortName" : "Contour Clock", "shortName" : "Contour Clock",
"version":"0.27", "version":"0.28",
"icon": "app.png", "icon": "app.png",
"description": "A Minimalist clockface with large Digits. Now with more fonts!", "readme": "README.md",
"description": "A Minimalist clockface with large Digits.",
"screenshots" : [{"url":"cc-screenshot-1.png"},{"url":"cc-screenshot-2.png"}], "screenshots" : [{"url":"cc-screenshot-1.png"},{"url":"cc-screenshot-2.png"}],
"tags": "clock", "tags": "clock",
"custom": "custom.html", "custom": "custom.html",