diff --git a/apps/binaryclk/app.js b/apps/binaryclk/app.js index 988d2ec3f..94c906104 100644 --- a/apps/binaryclk/app.js +++ b/apps/binaryclk/app.js @@ -1,6 +1,6 @@ -var settings = require('Storage').readJSON("binaryclk.json", true) || {}; -var full = settings.fullscreen || false; -delete settings; +var settings = Object.assign({ + fullscreen: false, +}, require('Storage').readJSON("binaryclk.json", true) || {}); function draw() { var dt = new Date(); @@ -15,15 +15,14 @@ function draw() { g.clearRect(Bangle.appRect); let i = 0; - if (full) { - const gap = 12; - const mgn = 0; - } else { - const gap = 8; - const mgn = 20; + var gap = 8; + var mgn = 20; + if (settings.fullscreen) { + gap = 12; + mgn = 0; } const sq = 29; - const pos = sq + gap; + var pos = sq + gap; for (let r = 3; r >= 0; r--) { for (let c = 0; c < 4; c++) { @@ -43,7 +42,7 @@ g.clear(); draw(); var secondInterval = setInterval(draw, 60000); Bangle.setUI("clock"); -if (!full) { +if (!settings.fullscreen) { Bangle.loadWidgets(); Bangle.drawWidgets(); } diff --git a/apps/binaryclk/binaryclk.app.js b/apps/binaryclk/binaryclk.app.js new file mode 100644 index 000000000..02e6172f5 --- /dev/null +++ b/apps/binaryclk/binaryclk.app.js @@ -0,0 +1,49 @@ +var settings = Object.assign({ + fullscreen: false, +}, require('Storage').readJSON("binaryclk.json", true) || {}); +var full = settings.fullscreen; + +function draw() { + var dt = new Date(); + var h = dt.getHours(), m = dt.getMinutes(); + const t = []; + t[0] = Math.floor(h/10); + t[1] = Math.floor(h%10); + t[2] = Math.floor(m/10); + t[3] = Math.floor(m%10); + + g.reset(); + g.clearRect(Bangle.appRect); + + let i = 0; + var gap = 8; + var mgn = 20; + if (full) { + gap = 12; + mgn = 0; + } + const sq = 29; + const pos = sq + gap; + + for (let r = 3; r >= 0; r--) { + for (let c = 0; c < 4; c++) { + if (t[c] & Math.pow(2, r)) { + g.fillRect(mgn/2 + gap + c * pos, mgn + gap + i * pos, mgn/2 + gap + c * pos + sq, mgn + gap + i * pos + sq); + } else { + g.drawRect(mgn/2 + gap + c * pos, mgn + gap + i * pos, mgn/2 + gap + c * pos + sq, mgn + gap + i * pos + sq); + } + } + i++; + } + g.clearRect(mgn/2 + gap, mgn + gap, mgn/2 + gap + sq, mgn + 2 * gap + 2 * sq); + g.clearRect(mgn/2 + 3 * gap + 2 * sq, mgn + gap, mgn/2 + 3 * gap + 3 * sq, mgn + gap + sq); +} + +g.clear(); +draw(); +var secondInterval = setInterval(draw, 60000); +Bangle.setUI("clock"); +if (!full) { + Bangle.loadWidgets(); + Bangle.drawWidgets(); +} diff --git a/apps/binaryclk/binaryclk.info b/apps/binaryclk/binaryclk.info new file mode 100644 index 000000000..6dcdcb435 --- /dev/null +++ b/apps/binaryclk/binaryclk.info @@ -0,0 +1,15 @@ +require("Storage").write("binaryclk.info",{ + "id": "binaryclk", + "name": "Bin Clock", + "version": "0.03", + "description": "Clock face to show binary time in 24 hr format", + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS2"], + "allow_emulator": true, + "storage": [ + {"name":"binaryclk.app.js","url":"app.js"}, + {"name":"binaryclk.settings.js","url":"settings.js"} + ], + "data": [{"name":"binaryclk.json"}] +}); diff --git a/apps/binaryclk/binaryclk.settings.js b/apps/binaryclk/binaryclk.settings.js new file mode 100644 index 000000000..3ae758de2 --- /dev/null +++ b/apps/binaryclk/binaryclk.settings.js @@ -0,0 +1,20 @@ +(function(back) { + var FILE = "binaryclk.json"; + var settings = Object.assign({ + fullscreen: false, + }, require('Storage').readJSON(FILE, true) || {}); + function writeSettings() { + require('Storage').writeJSON(FILE, settings); + } + E.showMenu({ + "" : { "title" : "Bin Clock" }, + "< Back" : () => back(), + 'Fullscreen': { + value: settings.fullscreen, + onchange: v => { + settings.fullscreen = !v; + writeSettings(); + } + }, + }); +}) diff --git a/apps/binaryclk/metadata.json b/apps/binaryclk/metadata.json index 37a8c8c0d..b4ddc6544 100644 --- a/apps/binaryclk/metadata.json +++ b/apps/binaryclk/metadata.json @@ -1,7 +1,7 @@ { "id": "binaryclk", "name": "Bin Clock", - "version": "0.02", + "version": "0.03", "description": "Clock face to show binary time in 24 hr format", "icon": "app-icon.png", "screenshots": [{"url":"screenshot.png"}], diff --git a/apps/binaryclk/settings.js b/apps/binaryclk/settings.js index 3ae758de2..0ef30e19d 100644 --- a/apps/binaryclk/settings.js +++ b/apps/binaryclk/settings.js @@ -1,20 +1,22 @@ (function(back) { - var FILE = "binaryclk.json"; - var settings = Object.assign({ + var FILE = "binaryclk.json"; + var settings = Object.assign({ fullscreen: false, }, require('Storage').readJSON(FILE, true) || {}); - function writeSettings() { - require('Storage').writeJSON(FILE, settings); - } - E.showMenu({ - "" : { "title" : "Bin Clock" }, - "< Back" : () => back(), - 'Fullscreen': { - value: settings.fullscreen, - onchange: v => { - settings.fullscreen = !v; - writeSettings(); - } - }, - }); + + function writeSettings() { + require('Storage').writeJSON(FILE, settings); + } + + E.showMenu({ + "" : { "title" : "Bin Clock" }, + "< Back" : () => back(), + 'Fullscreen': { + value: settings.fullscreen, + onchange: v => { + settings.fullscreen = v; + writeSettings(); + } + }, + }); })