From 64a7a8f14747005ac17956e37f402466f752b0c8 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 18:42:52 +0200 Subject: [PATCH] Added settings. Changed size to better fit the screen of the physical device. Added date display. --- apps.json | 9 ++++++-- apps/berlinc/ChangeLog | 1 + apps/berlinc/berlin-clock.js | 39 ++++++++++++++++++++++------------ apps/berlinc/berlin-clock.json | 3 +++ apps/berlinc/settings.js | 16 ++++++++++++++ 5 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 apps/berlinc/berlin-clock.json create mode 100644 apps/berlinc/settings.js diff --git a/apps.json b/apps.json index 07cedf21a..08a79710a 100644 --- a/apps.json +++ b/apps.json @@ -887,14 +887,19 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.02", + "version":"0.03", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", "allow_emulator":true, + "data": [ + {"name":"berlin-clock.json"} + ], "storage": [ {"name":"berlinc.app.js","url":"berlin-clock.js"}, - {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true} + {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}, + {"name":"berlinc.settings.js","url":"settings.js"}, + ] }, { "id": "ctrclk", diff --git a/apps/berlinc/ChangeLog b/apps/berlinc/ChangeLog index 7819dbe2a..f333911b4 100644 --- a/apps/berlinc/ChangeLog +++ b/apps/berlinc/ChangeLog @@ -1 +1,2 @@ 0.02: Modified for use with new bootloader and firmware +0.03: Shrinked size to avoid cut off edges on the physical device. Added date and settings. diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 93b584f66..544ccce64 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -1,29 +1,42 @@ -// place your const, vars, functions or classes here -fields = [ 4 , 4 , 11 , 4 ]; -width = g.getWidth(); -height = g.getHeight(); -rowHeight = height/4; +// Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr +const fields = [ 4 , 4 , 11 , 4 ]; +const offset = 20; +const width = g.getWidth() - 2*offset; +const height = g.getHeight() - 2*offset; +const rowHeight = height/4; + +//const settings = require("Storage").readJSON("berlin-clock.json", 1); +const show_date = true; // settings.show_date || true; + rowlights = []; function drawBerlinClock() { + g.clear(); + var now = new Date(); + if (show_date) { + var yr = now.getFullYear(); + var month = now.getMonth()+1; + var day = now.getDate(); + var dateString=`${yr}-${month<10?'0':''}${month}-${day<10?'0':''}${day}`; + var strWidth = g.stringWidth(dateString); + g.drawString(dateString,(g.getWidth()-strWidth)/2,height+offset+2); + } rowlights[0] = Math.floor(now.getHours() / 5); rowlights[1] = now.getHours() % 5; rowlights[2] = Math.floor(now.getMinutes() / 5); rowlights[3] = now.getMinutes() % 5; - - g.clear(); - - g.drawRect(0,0,width,height); + + g.drawRect(offset,offset,width+offset,height+offset); for (row = 0 ; row < 4 ; row++) { nfields = fields[row]; boxWidth = width/nfields; for (col = 0 ; col < nfields ; col++) { - x1 = col*boxWidth; - y1 = row*rowHeight; - x2 = (col+1)*boxWidth; - y2 = (row+1)*rowHeight; + x1 = col*boxWidth + offset ; + y1 = row*rowHeight + offset; + x2 = (col+1)*boxWidth + offset; + y2 = (row+1)*rowHeight + offset; g.setColor(1,1,1); g.drawRect(x1,y1,x2,y2); diff --git a/apps/berlinc/berlin-clock.json b/apps/berlinc/berlin-clock.json new file mode 100644 index 000000000..f11df27ed --- /dev/null +++ b/apps/berlinc/berlin-clock.json @@ -0,0 +1,3 @@ +{ + "show_date" : false +} \ No newline at end of file diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js new file mode 100644 index 000000000..b08df63fc --- /dev/null +++ b/apps/berlinc/settings.js @@ -0,0 +1,16 @@ +(function(back) { + let settings = require('Storage').readJSON('berlin-clock.json',1)||{}; + function save(key, value) { + settings[key] = value; + require('Storage').write('berlin-clock.json',settings); + } + const appMenu = { + '': {'title': 'Berlin Clock Settings'}, + '< Back': back, + 'Show Date': { + value: settings.show_date||false, + onchange: (m) => {save('show_date', m)} + } + }; + E.showMenu(appMenu) + }) \ No newline at end of file