From 64a7a8f14747005ac17956e37f402466f752b0c8 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 18:42:52 +0200 Subject: [PATCH 01/24] 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 From 013a5e9e2ab5f5a19c1689c3cb5bac4262fe20cc Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 19:09:44 +0200 Subject: [PATCH 02/24] Corrected problem with apps.json --- apps.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps.json b/apps.json index 969267bc8..935a25e28 100644 --- a/apps.json +++ b/apps.json @@ -898,8 +898,7 @@ "storage": [ {"name":"berlinc.app.js","url":"berlin-clock.js"}, {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}, - {"name":"berlinc.settings.js","url":"settings.js"}, - + {"name":"berlinc.settings.js","url":"settings.js"} ] }, { "id": "ctrclk", From f8a830c69634655ce4c9ce6426aead90af64009c Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 19:17:42 +0200 Subject: [PATCH 03/24] try to fix corrupt apps.json --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index 935a25e28..e05500483 100644 --- a/apps.json +++ b/apps.json @@ -892,7 +892,7 @@ "tags": "clock", "type":"clock", "allow_emulator":true, - "data": [ + "data": [ {"name":"berlin-clock.json"} ], "storage": [ From e253e9d2c29f112c31bf2cb73602b9e282e59f08 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 19:54:24 +0200 Subject: [PATCH 04/24] Corrected Settings. Set Color for date always to white. --- apps/berlinc/berlin-clock.js | 2 +- apps/berlinc/settings.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 544ccce64..db4b5bbb9 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -12,7 +12,6 @@ rowlights = []; function drawBerlinClock() { g.clear(); - var now = new Date(); if (show_date) { var yr = now.getFullYear(); @@ -20,6 +19,7 @@ function drawBerlinClock() { var day = now.getDate(); var dateString=`${yr}-${month<10?'0':''}${month}-${day<10?'0':''}${day}`; var strWidth = g.stringWidth(dateString); + g.setColor(1,1,1); g.drawString(dateString,(g.getWidth()-strWidth)/2,height+offset+2); } rowlights[0] = Math.floor(now.getHours() / 5); diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js index b08df63fc..6a785a4d4 100644 --- a/apps/berlinc/settings.js +++ b/apps/berlinc/settings.js @@ -9,7 +9,8 @@ '< Back': back, 'Show Date': { value: settings.show_date||false, - onchange: (m) => {save('show_date', m)} + format: v => v?'On':'Off', + onchange: v => {save('show_date', v)} } }; E.showMenu(appMenu) From 8bc72576a005236ff3173f12a8bb1184165e13e5 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 20:24:10 +0200 Subject: [PATCH 05/24] Enabled reading of settings. --- apps/berlinc/berlin-clock.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index db4b5bbb9..90c6cdeb7 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -5,8 +5,8 @@ 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; +settings = require("Storage").readJSON("berlin-clock.json", 1); +const show_date = settings.show_date || false; rowlights = []; From da05661e34757e971c156d8d58e9ec275276809b Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 21:13:07 +0200 Subject: [PATCH 06/24] Fix settings --- apps/berlinc/berlin-clock.js | 3 +-- apps/berlinc/berlin-clock.json | 2 +- apps/berlinc/settings.js | 6 ++++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 90c6cdeb7..b205d87ed 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -5,8 +5,7 @@ const width = g.getWidth() - 2*offset; const height = g.getHeight() - 2*offset; const rowHeight = height/4; -settings = require("Storage").readJSON("berlin-clock.json", 1); -const show_date = settings.show_date || false; +const show_date = (require('Storage').readJSON('berlin-clock.json', 1) || {})['showdate']; rowlights = []; diff --git a/apps/berlinc/berlin-clock.json b/apps/berlinc/berlin-clock.json index f11df27ed..08c6dc9d4 100644 --- a/apps/berlinc/berlin-clock.json +++ b/apps/berlinc/berlin-clock.json @@ -1,3 +1,3 @@ { - "show_date" : false + "showdate" : false } \ No newline at end of file diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js index 6a785a4d4..6abbf70c7 100644 --- a/apps/berlinc/settings.js +++ b/apps/berlinc/settings.js @@ -6,12 +6,14 @@ } const appMenu = { '': {'title': 'Berlin Clock Settings'}, - '< Back': back, + '< Back': back + /*, 'Show Date': { value: settings.show_date||false, format: v => v?'On':'Off', - onchange: v => {save('show_date', v)} + onchange: v => {save('showdate', v)} } + */ }; E.showMenu(appMenu) }) \ No newline at end of file From d8489a0e8a0ecbbc592a3aef833cfb1932d28bcb Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 21:31:16 +0200 Subject: [PATCH 07/24] Re-Wrote settings --- apps/berlinc/settings.js | 50 ++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js index 6abbf70c7..90579c84c 100644 --- a/apps/berlinc/settings.js +++ b/apps/berlinc/settings.js @@ -1,19 +1,35 @@ (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 SETTINGS_FILE = 'berlin-clock.json' + + // initialize structure + let s = { + 'showdate' : false + } + + const storage = require('Storage') + const savedsettings = storage.readJSON(SETTINGS_FILE,1) || {} + // read values from storage (if any) + for (const key in savedsettings) { + s[key]=savedsettings[key] + } + + function save (key) { + return function(value) { + s[key]=value; + storage.write(SETTINGS_FILE,s); } - const appMenu = { - '': {'title': 'Berlin Clock Settings'}, - '< Back': back - /*, - 'Show Date': { - value: settings.show_date||false, - format: v => v?'On':'Off', - onchange: v => {save('showdate', v)} - } - */ - }; - E.showMenu(appMenu) - }) \ No newline at end of file + } + + const booleanFormat = b => ( b ? 'on':'off' ) + + const menu = { + '' : { 'title' : 'Berlin Clock Settings'} , + '< Back' : back, + 'Show Date' : { + value : s.showdate, + format: booleanFormat, + onChange: save('showdat'), + }, + } + E.showMenu(menu) +}) \ No newline at end of file From b69c9e0c26f7f9c78d3ea641e41792ff5edf3281 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 21:45:25 +0200 Subject: [PATCH 08/24] Added json to storage structure --- apps.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps.json b/apps.json index e05500483..7be3dfe7b 100644 --- a/apps.json +++ b/apps.json @@ -898,7 +898,8 @@ "storage": [ {"name":"berlinc.app.js","url":"berlin-clock.js"}, {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}, - {"name":"berlinc.settings.js","url":"settings.js"} + {"name":"berlinc.settings.js","url":"settings.js"}, + {"name":"berlin-clock.json","url":"berlin-clock.json"} ] }, { "id": "ctrclk", From 1bf355c8f0b3b8b402ff7db2330e98a381471f01 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sat, 23 May 2020 21:48:43 +0200 Subject: [PATCH 09/24] Temporarily added minor version --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index 7be3dfe7b..318648004 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03", + "version":"0.03.01", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", From 17d5e1a1c416598c6004d7aed0b2d3d910e5c420 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 13:29:11 +0200 Subject: [PATCH 10/24] Removed settings from apps.json for test purposes --- apps.json | 3 +-- apps/berlinc/berlin-clock.json | 2 +- apps/berlinc/settings.js | 6 +++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps.json b/apps.json index 318648004..b878242ef 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.01", + "version":"0.03.02", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", @@ -898,7 +898,6 @@ "storage": [ {"name":"berlinc.app.js","url":"berlin-clock.js"}, {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}, - {"name":"berlinc.settings.js","url":"settings.js"}, {"name":"berlin-clock.json","url":"berlin-clock.json"} ] }, diff --git a/apps/berlinc/berlin-clock.json b/apps/berlinc/berlin-clock.json index 08c6dc9d4..ef4493569 100644 --- a/apps/berlinc/berlin-clock.json +++ b/apps/berlinc/berlin-clock.json @@ -1,3 +1,3 @@ { - "showdate" : false + "showdate" : true } \ No newline at end of file diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js index 90579c84c..a5f06b2cf 100644 --- a/apps/berlinc/settings.js +++ b/apps/berlinc/settings.js @@ -1,4 +1,7 @@ (function(back) { + + digitalWrite(LED1,1); + const SETTINGS_FILE = 'berlin-clock.json' // initialize structure @@ -28,8 +31,9 @@ 'Show Date' : { value : s.showdate, format: booleanFormat, - onChange: save('showdat'), + onChange: save('showdate'), }, } + digitalWrite(LED1,0); E.showMenu(menu) }) \ No newline at end of file From bcea5326a50ddc3af1ae0ef290d129ab32a405ed Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 13:54:32 +0200 Subject: [PATCH 11/24] Replaced template String with concatenation. Performed code indentation. Enabled settings again. --- apps.json | 3 +- apps/berlinc/berlin-clock.js | 97 +++++++++++++++++++----------------- 2 files changed, 52 insertions(+), 48 deletions(-) diff --git a/apps.json b/apps.json index b878242ef..d6bae8880 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.02", + "version":"0.03.03", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", @@ -898,6 +898,7 @@ "storage": [ {"name":"berlinc.app.js","url":"berlin-clock.js"}, {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}, + {"name":"berlinc.settings.js","url":"settings.js"}, {"name":"berlin-clock.json","url":"berlin-clock.json"} ] }, diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index b205d87ed..8ed20f32e 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -1,70 +1,73 @@ // 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 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 show_date = (require('Storage').readJSON('berlin-clock.json', 1) || {})['showdate']; 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.setColor(1,1,1); - 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.drawRect(offset,offset,width+offset,height+offset); - for (row = 0 ; row < 4 ; row++) { - nfields = fields[row]; - boxWidth = width/nfields; + 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 monthZero = month < 10 ? '0' : ''; + var dayZero = day < 10 ? '0' : ''; + var dateString = yr + "-" + monthZero + month + "-" + dayZero + day; + var strWidth = g.stringWidth(dateString); + g.setColor(1, 1, 1); + 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; - for (col = 0 ; col < nfields ; col++) { - x1 = col*boxWidth + offset ; - y1 = row*rowHeight + offset; - x2 = (col+1)*boxWidth + offset; - y2 = (row+1)*rowHeight + offset; + g.drawRect(offset, offset, width + offset, height + offset); + for (row = 0; row < 4; row++) { + nfields = fields[row]; + boxWidth = width / nfields; - g.setColor(1,1,1); - g.drawRect(x1,y1,x2,y2); - if (col { g.clear(); if (on) { - Bangle.drawWidgets(); - // call your app function here - drawBerlinClock(); -}}); + Bangle.drawWidgets(); + // call your app function here + drawBerlinClock(); + } +}); // refesh every 15 sec setInterval(drawBerlinClock, 15E3); @@ -74,4 +77,4 @@ Bangle.loadWidgets(); Bangle.drawWidgets(); drawBerlinClock(); // Show launcher when middle button pressed -setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"}); +setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" }); From ee6171e1ca1a38bb3fb060c83176ddcdcc789474 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 14:11:42 +0200 Subject: [PATCH 12/24] Commented out date code for debugging purpose. --- apps.json | 2 +- apps/berlinc/berlin-clock.js | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/apps.json b/apps.json index d6bae8880..4e967ba22 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.03", + "version":"0.03.04", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 8ed20f32e..a1ce5a90c 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -12,18 +12,17 @@ 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 monthZero = month < 10 ? '0' : ''; - var dayZero = day < 10 ? '0' : ''; - var dateString = yr + "-" + monthZero + month + "-" + dayZero + day; + var dateString = `${yr}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`; var strWidth = g.stringWidth(dateString); g.setColor(1, 1, 1); - g.drawString(dateString, (g.getWidth() - strWidth) / 2, height + offset + 2); + 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); From bdd1dc018d87443e45865f31787b8d6542cc068e Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 14:39:12 +0200 Subject: [PATCH 13/24] Changed code for reading settings. --- apps.json | 2 +- apps/berlinc/berlin-clock.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps.json b/apps.json index 4e967ba22..0b2a51d27 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.04", + "version":"0.03.05", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index a1ce5a90c..3bc04cd08 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -5,14 +5,14 @@ const width = g.getWidth() - 2 * offset; const height = g.getHeight() - 2 * offset; const rowHeight = height / 4; -const show_date = (require('Storage').readJSON('berlin-clock.json', 1) || {})['showdate']; +const show_date = require("Storage").readJSON('berlin-clock.json')['showdate']; rowlights = []; function drawBerlinClock() { g.clear(); var now = new Date(); - /* + if (show_date) { var yr = now.getFullYear(); var month = now.getMonth() + 1; @@ -22,7 +22,7 @@ function drawBerlinClock() { g.setColor(1, 1, 1); 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); From 4f77cb887ff74af40d68c82d37ac7b9a47b86a1f Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 14:47:39 +0200 Subject: [PATCH 14/24] Changed settings --- apps/berlinc/settings.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js index a5f06b2cf..74f969eae 100644 --- a/apps/berlinc/settings.js +++ b/apps/berlinc/settings.js @@ -1,7 +1,5 @@ (function(back) { - digitalWrite(LED1,1); - const SETTINGS_FILE = 'berlin-clock.json' // initialize structure @@ -31,8 +29,8 @@ 'Show Date' : { value : s.showdate, format: booleanFormat, - onChange: save('showdate'), - }, + onChange: save('showdate') + } } digitalWrite(LED1,0); E.showMenu(menu) From 6c377eb582caf28cabeb806b77578261b22af2f8 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 14:48:08 +0200 Subject: [PATCH 15/24] Updated version --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index 0b2a51d27..0a9fda370 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.05", + "version":"0.03.06", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", From 2818c1049f50fc8706defcf0c9e2703d0b048d27 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 15:05:11 +0200 Subject: [PATCH 16/24] Changed logic for reading settings --- apps.json | 2 +- apps/berlinc/berlin-clock.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index 0a9fda370..29b36dbf3 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.06", + "version":"0.03.07", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 3bc04cd08..03ceafa3f 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -5,7 +5,9 @@ const width = g.getWidth() - 2 * offset; const height = g.getHeight() - 2 * offset; const rowHeight = height / 4; -const show_date = require("Storage").readJSON('berlin-clock.json')['showdate']; +const storage = require("Storage"); +const settingsfile = 'berlin-clock.json'; +var show_date = false; rowlights = []; @@ -58,6 +60,14 @@ function drawBerlinClock() { } } +// try to read settings +try { + const settings = storage.readJSON(settingsfile); + show_date=settings['showdate'] || false; +} catch (exception) { + console.log(exception) +} + // special function to handle display switch on Bangle.on('lcdPower', (on) => { g.clear(); From 7a409f74a35b1bacc78526c9b1cf324e0643b830 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 15:40:02 +0200 Subject: [PATCH 17/24] Restructured settings file handling. --- apps.json | 8 ++++---- apps/berlinc/berlin-clock.js | 12 ++++++++++-- apps/berlinc/settings.js | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apps.json b/apps.json index 29b36dbf3..1e3a3cc15 100644 --- a/apps.json +++ b/apps.json @@ -887,19 +887,19 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.07", + "version":"0.03.08", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", "allow_emulator":true, "data": [ - {"name":"berlin-clock.json"} + { "name":"berlinc.json","storageFile":true} ], "storage": [ {"name":"berlinc.app.js","url":"berlin-clock.js"}, {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}, - {"name":"berlinc.settings.js","url":"settings.js"}, - {"name":"berlin-clock.json","url":"berlin-clock.json"} + {"name":"berlinc.settings.js","url":"settings.js"}, + {"name":"berlinc.json","url":"berlin-clock.json"} ] }, { "id": "ctrclk", diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 03ceafa3f..07116b5ca 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -6,7 +6,7 @@ const height = g.getHeight() - 2 * offset; const rowHeight = height / 4; const storage = require("Storage"); -const settingsfile = 'berlin-clock.json'; +const settingsfile = 'berlinc.json'; var show_date = false; rowlights = []; @@ -63,7 +63,15 @@ function drawBerlinClock() { // try to read settings try { const settings = storage.readJSON(settingsfile); - show_date=settings['showdate'] || false; + if (settings) { + if (settings.showdate) { + show_date=settings.showdate; + } else { + console.log("Settings file does not contain showdate."); + } + } else { + console.log("Settings file not defined.") + } } catch (exception) { console.log(exception) } diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js index 74f969eae..1217c61fe 100644 --- a/apps/berlinc/settings.js +++ b/apps/berlinc/settings.js @@ -1,6 +1,6 @@ (function(back) { - const SETTINGS_FILE = 'berlin-clock.json' + const SETTINGS_FILE = 'berlinc.json' // initialize structure let s = { From a02a3c9edc9099b78378e0286835ac4e25ae44b3 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 17:12:02 +0200 Subject: [PATCH 18/24] Changed handling of settings. --- apps/berlinc/berlin-clock.js | 17 +++-------------- apps/berlinc/settings.js | 6 ++++-- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 07116b5ca..12e5ff49f 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -61,20 +61,9 @@ function drawBerlinClock() { } // try to read settings -try { - const settings = storage.readJSON(settingsfile); - if (settings) { - if (settings.showdate) { - show_date=settings.showdate; - } else { - console.log("Settings file does not contain showdate."); - } - } else { - console.log("Settings file not defined.") - } -} catch (exception) { - console.log(exception) -} +const settings = storage.readJSON(settingsfile,1) || { + "showdate" : true +} // special function to handle display switch on Bangle.on('lcdPower', (on) => { diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js index 1217c61fe..7fc0fa6a5 100644 --- a/apps/berlinc/settings.js +++ b/apps/berlinc/settings.js @@ -4,11 +4,13 @@ // initialize structure let s = { - 'showdate' : false + 'showdate' : true } const storage = require('Storage') - const savedsettings = storage.readJSON(SETTINGS_FILE,1) || {} + const savedsettings = storage.readJSON(SETTINGS_FILE,1) || { + "showdate" : true + } // read values from storage (if any) for (const key in savedsettings) { s[key]=savedsettings[key] From 96febe52f11035ea1052a67561c8f908a1932228 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 17:13:16 +0200 Subject: [PATCH 19/24] Changed version. --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index 1e3a3cc15..6d841e358 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.08", + "version":"0.03.09", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", From 379da3d6dbe133b30d2dc86c9e3827d1fe9d531d Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 18:22:44 +0200 Subject: [PATCH 20/24] Final changes for new release. --- apps.json | 9 ++------ apps/berlinc/ChangeLog | 2 +- apps/berlinc/README.md | 10 +++++++++ apps/berlinc/berlin-clock.js | 39 ++++++++++++++++++++++++++-------- apps/berlinc/berlin-clock.json | 3 --- apps/berlinc/settings.js | 39 ---------------------------------- 6 files changed, 43 insertions(+), 59 deletions(-) create mode 100644 apps/berlinc/README.md delete mode 100644 apps/berlinc/berlin-clock.json delete mode 100644 apps/berlinc/settings.js diff --git a/apps.json b/apps.json index 6d841e358..3e6efb4cf 100644 --- a/apps.json +++ b/apps.json @@ -887,19 +887,14 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.09", + "version":"0.03", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", "allow_emulator":true, - "data": [ - { "name":"berlinc.json","storageFile":true} - ], "storage": [ {"name":"berlinc.app.js","url":"berlin-clock.js"}, - {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}, - {"name":"berlinc.settings.js","url":"settings.js"}, - {"name":"berlinc.json","url":"berlin-clock.json"} + {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true} ] }, { "id": "ctrclk", diff --git a/apps/berlinc/ChangeLog b/apps/berlinc/ChangeLog index f333911b4..a33332bc4 100644 --- a/apps/berlinc/ChangeLog +++ b/apps/berlinc/ChangeLog @@ -1,2 +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. +0.03: Shrinked size to avoid cut-off edges on the physical device. BTN3: show date. BTN1: show time in decimal. diff --git a/apps/berlinc/README.md b/apps/berlinc/README.md new file mode 100644 index 000000000..f21efdf29 --- /dev/null +++ b/apps/berlinc/README.md @@ -0,0 +1,10 @@ +# Berlin Clock Watch Face + +This is a clock-face analogous to the [Berlin Clock][https://en.wikipedia.org/wiki/Mengenlehreuhr]. + +## Usage + +* BTN1: toggle displaying the time in decimal figures (24 hour format) in the minutes fields. The first two fields are used for the hour and the last two fields for the minute. This might be a help when you're still familarizig yourself with this new way to express the time. +* BTN2: start the launcher +* BTN3: toggle displaying the current date (in ISO 8601 format) below the actual clock-face. + diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 12e5ff49f..66b25adb5 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -1,20 +1,22 @@ // Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr +// https://github.com/eska-muc/BangleApps 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 storage = require("Storage"); -const settingsfile = 'berlinc.json'; var show_date = false; +var show_time = false; rowlights = []; +time_digit = []; function drawBerlinClock() { g.clear(); var now = new Date(); + // show date below the clock if (show_date) { var yr = now.getFullYear(); var month = now.getMonth() + 1; @@ -22,7 +24,8 @@ function drawBerlinClock() { var dateString = `${yr}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`; var strWidth = g.stringWidth(dateString); g.setColor(1, 1, 1); - g.drawString(dateString, ( g.getWidth() - strWidth ) / 2, height + offset + 2); + g.setFontAlign(-1,-1); + g.drawString(dateString, ( g.getWidth() - strWidth ) / 2, height + offset + 4); } rowlights[0] = Math.floor(now.getHours() / 5); @@ -30,6 +33,11 @@ function drawBerlinClock() { rowlights[2] = Math.floor(now.getMinutes() / 5); rowlights[3] = now.getMinutes() % 5; + time_digit[0] = Math.floor(now.getHours() / 10); + time_digit[1] = now.getHours() % 10; + time_digit[2] = Math.floor(now.getMinutes() / 10); + time_digit[3] = now.getMinutes() % 10; + g.drawRect(offset, offset, width + offset, height + offset); for (row = 0; row < 4; row++) { nfields = fields[row]; @@ -44,7 +52,6 @@ function drawBerlinClock() { g.setColor(1, 1, 1); g.drawRect(x1, y1, x2, y2); if (col < rowlights[row]) { - if (row === 2) { if (((col + 1) % 3) === 0) { g.setColor(1, 0, 0); @@ -54,16 +61,26 @@ function drawBerlinClock() { } else { g.setColor(1, 0, 0); } - g.fillRect(x1 + 2, y1 + 2, x2 - 2, y2 - 2); + g.fillRect(x1 + 2, y1 + 2, x2 - 2, y2 - 2); + } + if (row == 3 && show_time) { + g.setColor(1,1,1); + g.setFontAlign(0,0); + g.drawString(time_digit[col],(x1+x2)/2,(y1+y2)/2); } } } } -// try to read settings -const settings = storage.readJSON(settingsfile,1) || { - "showdate" : true -} +function toggleDate() { + show_date = ! show_date; + drawBerlinClock(); +} + +function toggleTime() { + show_time = ! show_time; + drawBerlinClock(); +} // special function to handle display switch on Bangle.on('lcdPower', (on) => { @@ -82,5 +99,9 @@ g.clear(); Bangle.loadWidgets(); Bangle.drawWidgets(); drawBerlinClock(); +// Toggle date display, when BTN3 is pressed +setWatch(toggleTime,BTN1, { repeat : true, edge: "falling"}); +// Toggle date display, when BTN3 is pressed +setWatch(toggleDate,BTN3, { repeat : true, edge: "falling"}); // Show launcher when middle button pressed setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" }); diff --git a/apps/berlinc/berlin-clock.json b/apps/berlinc/berlin-clock.json deleted file mode 100644 index ef4493569..000000000 --- a/apps/berlinc/berlin-clock.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "showdate" : true -} \ No newline at end of file diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js deleted file mode 100644 index 7fc0fa6a5..000000000 --- a/apps/berlinc/settings.js +++ /dev/null @@ -1,39 +0,0 @@ -(function(back) { - - const SETTINGS_FILE = 'berlinc.json' - - // initialize structure - let s = { - 'showdate' : true - } - - const storage = require('Storage') - const savedsettings = storage.readJSON(SETTINGS_FILE,1) || { - "showdate" : true - } - // read values from storage (if any) - for (const key in savedsettings) { - s[key]=savedsettings[key] - } - - function save (key) { - return function(value) { - s[key]=value; - storage.write(SETTINGS_FILE,s); - } - } - - const booleanFormat = b => ( b ? 'on':'off' ) - - const menu = { - '' : { 'title' : 'Berlin Clock Settings'} , - '< Back' : back, - 'Show Date' : { - value : s.showdate, - format: booleanFormat, - onChange: save('showdate') - } - } - digitalWrite(LED1,0); - E.showMenu(menu) -}) \ No newline at end of file From 10cd2a31e95c7296ba14068f79158e9439414b39 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 18:25:42 +0200 Subject: [PATCH 21/24] Corrected markdown syntax --- apps/berlinc/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/berlinc/README.md b/apps/berlinc/README.md index f21efdf29..1f86ad73e 100644 --- a/apps/berlinc/README.md +++ b/apps/berlinc/README.md @@ -1,6 +1,6 @@ # Berlin Clock Watch Face -This is a clock-face analogous to the [Berlin Clock][https://en.wikipedia.org/wiki/Mengenlehreuhr]. +This is a clock-face analogous to the [Berlin Clock](https://en.wikipedia.org/wiki/Mengenlehreuhr). ## Usage From 42bb0e418e7ede99e7ed78a66537bbe9bfd44c97 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 18:45:38 +0200 Subject: [PATCH 22/24] Try/Catch and Stacktrace for debugging --- apps.json | 2 +- apps/berlinc/berlin-clock.js | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index 3e6efb4cf..c99e0914a 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03", + "version":"0.03.10", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock", diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index 66b25adb5..b00eb3e01 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -13,6 +13,7 @@ rowlights = []; time_digit = []; function drawBerlinClock() { + try { g.clear(); var now = new Date(); @@ -65,11 +66,15 @@ function drawBerlinClock() { } if (row == 3 && show_time) { g.setColor(1,1,1); - g.setFontAlign(0,0); + g.setFontAlign(0,0); g.drawString(time_digit[col],(x1+x2)/2,(y1+y2)/2); } } } +} catch (e) { + console.log(e) + console.trace() +} } function toggleDate() { From 29170c9abe5d346b81eaba031c829ed0fb2391d6 Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 18:49:30 +0200 Subject: [PATCH 23/24] Attempt to fix reference error. --- apps/berlinc/berlin-clock.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index b00eb3e01..3950147b8 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -8,12 +8,12 @@ const rowHeight = height / 4; var show_date = false; var show_time = false; +var yy = 0; rowlights = []; time_digit = []; function drawBerlinClock() { - try { g.clear(); var now = new Date(); @@ -66,15 +66,11 @@ function drawBerlinClock() { } if (row == 3 && show_time) { g.setColor(1,1,1); - g.setFontAlign(0,0); + g.setFontAlign(0,0); g.drawString(time_digit[col],(x1+x2)/2,(y1+y2)/2); } } } -} catch (e) { - console.log(e) - console.trace() -} } function toggleDate() { From 854cc6831320d33c01ea5cfc7f5aa61dd5f85a7d Mon Sep 17 00:00:00 2001 From: Stefan Kuehnel Date: Sun, 24 May 2020 18:54:16 +0200 Subject: [PATCH 24/24] Correct version number --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index c99e0914a..3e6efb4cf 100644 --- a/apps.json +++ b/apps.json @@ -887,7 +887,7 @@ { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version":"0.03.10", + "version":"0.03", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", "type":"clock",