commit
02a2f7fb51
|
|
@ -4,4 +4,5 @@
|
||||||
0.05: Update *on* the minute rather than every 15 secs
|
0.05: Update *on* the minute rather than every 15 secs
|
||||||
Now show widgets
|
Now show widgets
|
||||||
Make compatible with themes, and Bangle.js 2
|
Make compatible with themes, and Bangle.js 2
|
||||||
0.06: Enable fastloading
|
0.06: Enable fastloading
|
||||||
|
0.07: Adds fullscreen mode setting
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
{
|
{
|
||||||
// Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr
|
// Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr
|
||||||
// https://github.com/eska-muc/BangleApps
|
// https://github.com/eska-muc/BangleApps
|
||||||
|
|
||||||
|
var settings = require('Storage').readJSON("berlinc.json", true) || {};
|
||||||
const fields = [4, 4, 11, 4];
|
const fields = [4, 4, 11, 4];
|
||||||
const offset = 24;
|
|
||||||
const width = g.getWidth() - 2 * offset;
|
let fullscreen = !!settings.fullscreen;
|
||||||
const height = g.getHeight() - 2 * offset;
|
|
||||||
const rowHeight = height / 4;
|
|
||||||
|
|
||||||
let show_date = false;
|
let show_date = false;
|
||||||
let show_time = false;
|
let show_time = false;
|
||||||
|
|
@ -24,10 +24,18 @@ let queueDraw = () => {
|
||||||
drawTimeout = undefined;
|
drawTimeout = undefined;
|
||||||
draw();
|
draw();
|
||||||
}, 60000 - (Date.now() % 60000));
|
}, 60000 - (Date.now() % 60000));
|
||||||
}
|
};
|
||||||
|
|
||||||
let draw = () => {
|
let draw = () => {
|
||||||
g.reset().clearRect(0,24,g.getWidth(),g.getHeight());
|
let width = Math.min(Bangle.appRect.w,Bangle.appRect.h);
|
||||||
|
let height = width;
|
||||||
|
let offset = g.getHeight() - height;
|
||||||
|
let x = Math.floor((g.getWidth() - width)/2);
|
||||||
|
|
||||||
|
if (show_date) height -= 8;
|
||||||
|
let rowHeight = (height - 1) / 4;
|
||||||
|
g.setBgColor(g.theme.bg);
|
||||||
|
g.reset().clearRect(Bangle.appRect);
|
||||||
var now = new Date();
|
var now = new Date();
|
||||||
|
|
||||||
// show date below the clock
|
// show date below the clock
|
||||||
|
|
@ -38,7 +46,7 @@ let draw = () => {
|
||||||
var dateString = `${yr}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
|
var dateString = `${yr}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
|
||||||
var strWidth = g.stringWidth(dateString);
|
var strWidth = g.stringWidth(dateString);
|
||||||
g.setColor(g.theme.fg).setFontAlign(-1,-1);
|
g.setColor(g.theme.fg).setFontAlign(-1,-1);
|
||||||
g.drawString(dateString, ( g.getWidth() - strWidth ) / 2, height + offset + 4);
|
g.drawString(dateString, ( Bangle.appRect.x + Bangle.appRect.w - strWidth ) / 2, Bangle.appRect.y2 - 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
rowlights[0] = Math.floor(now.getHours() / 5);
|
rowlights[0] = Math.floor(now.getHours() / 5);
|
||||||
|
|
@ -51,15 +59,16 @@ let draw = () => {
|
||||||
time_digit[2] = Math.floor(now.getMinutes() / 10);
|
time_digit[2] = Math.floor(now.getMinutes() / 10);
|
||||||
time_digit[3] = now.getMinutes() % 10;
|
time_digit[3] = now.getMinutes() % 10;
|
||||||
|
|
||||||
g.drawRect(offset, offset, width + offset, height + offset);
|
g.setColor(g.theme.fg);
|
||||||
|
g.drawRect(x, offset, x + width - 1, height + offset - 1);
|
||||||
for (row = 0; row < 4; row++) {
|
for (row = 0; row < 4; row++) {
|
||||||
nfields = fields[row];
|
nfields = fields[row];
|
||||||
boxWidth = width / nfields;
|
boxWidth = (width - 1) / nfields;
|
||||||
|
|
||||||
for (col = 0; col < nfields; col++) {
|
for (col = 0; col < nfields; col++) {
|
||||||
x1 = col * boxWidth + offset;
|
x1 = col * boxWidth + x;
|
||||||
y1 = row * rowHeight + offset;
|
y1 = row * rowHeight + offset;
|
||||||
x2 = (col + 1) * boxWidth + offset;
|
x2 = (col + 1) * boxWidth + x;
|
||||||
y2 = (row + 1) * rowHeight + offset;
|
y2 = (row + 1) * rowHeight + offset;
|
||||||
|
|
||||||
g.setColor(g.theme.fg).drawRect(x1, y1, x2, y2);
|
g.setColor(g.theme.fg).drawRect(x1, y1, x2, y2);
|
||||||
|
|
@ -111,6 +120,7 @@ let onLcdPower = on => {
|
||||||
let cleanup = () => {
|
let cleanup = () => {
|
||||||
clear();
|
clear();
|
||||||
Bangle.removeListener("lcdPower", onLcdPower);
|
Bangle.removeListener("lcdPower", onLcdPower);
|
||||||
|
require("widget_utils").show();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop updates when LCD is off, restart when on
|
// Stop updates when LCD is off, restart when on
|
||||||
|
|
@ -124,6 +134,13 @@ Bangle.setUI({mode: "clockupdown", remove: cleanup}, dir=> {
|
||||||
|
|
||||||
g.clear();
|
g.clear();
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
|
|
||||||
|
if (fullscreen){
|
||||||
|
if (process.env.HWVERSION == 2) require("widget_utils").swipeOn();
|
||||||
|
else require("widget_utils").hide();
|
||||||
|
}
|
||||||
|
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "berlinc",
|
"id": "berlinc",
|
||||||
"name": "Berlin Clock",
|
"name": "Berlin Clock",
|
||||||
"version": "0.06",
|
"version": "0.07",
|
||||||
"description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)",
|
"description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)",
|
||||||
"icon": "berlin-clock.png",
|
"icon": "berlin-clock.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
@ -12,6 +12,8 @@
|
||||||
"screenshots": [{"url":"berlin-clock-screenshot.png"}],
|
"screenshots": [{"url":"berlin-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"berlinc.app.js","url":"berlin-clock.js"},
|
{"name":"berlinc.app.js","url":"berlin-clock.js"},
|
||||||
|
{"name":"berlinc.settings.js","url":"settings.js"},
|
||||||
{"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}
|
{"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}
|
||||||
]
|
],
|
||||||
|
"data": [{"name":"berlinc.json"}]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
(function(back) {
|
||||||
|
var FILE = "berlinc.json";
|
||||||
|
var settings = Object.assign({
|
||||||
|
fullscreem: false,
|
||||||
|
}, require('Storage').readJSON(FILE, true) || {});
|
||||||
|
|
||||||
|
function writeSettings() {
|
||||||
|
require('Storage').writeJSON(FILE, settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
var mainmenu = {
|
||||||
|
"": {
|
||||||
|
"title": "Berlin clock"
|
||||||
|
},
|
||||||
|
"< Back": () => back(),
|
||||||
|
"Fullscreen": {
|
||||||
|
value: !!settings.fullscreen,
|
||||||
|
onchange: v => {
|
||||||
|
settings.fullscreen = v;
|
||||||
|
writeSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
E.showMenu(mainmenu);
|
||||||
|
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue