diff --git a/apps/binaryclk/ChangeLog b/apps/binaryclk/ChangeLog index 76a897247..062eece45 100644 --- a/apps/binaryclk/ChangeLog +++ b/apps/binaryclk/ChangeLog @@ -3,3 +3,7 @@ 0.03: Added setting for fullscreen option 0.04: Added settings to hide unused squares and show date 0.05: Minor code improvements +0.06: Added setting to show battery and added artwork to date +0.07: Removed percentage from battery and cleaned up logic +0.08: Changed month to day and text color to black on date +0.09: Changed day color back to white diff --git a/apps/binaryclk/app.js b/apps/binaryclk/app.js index 05a2a5d1a..3f2da272c 100644 --- a/apps/binaryclk/app.js +++ b/apps/binaryclk/app.js @@ -1,13 +1,18 @@ var settings = Object.assign({ - fullscreen: false, + fullscreen: true, hidesq: false, - showdate: false, + showdate: true, + showbat: true, }, require('Storage').readJSON("binaryclk.json", true) || {}); function draw() { + var cnt = 0; var dt = new Date(); - var h = dt.getHours(), m = dt.getMinutes(), d = dt.getDate(); + var h = dt.getHours(); + var m = dt.getMinutes(); + var d = dt.getDate(); + var day = dt.toString().substring(0,3); const t = []; t[0] = Math.floor(h/10); @@ -19,15 +24,16 @@ function draw() { g.clearRect(Bangle.appRect); let i = 0; - var gap = 8; - var mgn = 20; + var gap = 4; + var mgn = 24; + var sq = 33; if (settings.fullscreen) { - gap = 12; + gap = 8; mgn = 0; + sq = 34; } - const sq = 29; var pos = sq + gap; for (let r = 3; r >= 0; r--) { @@ -53,11 +59,47 @@ function draw() { g.clearRect(Math.floor(mgn/2), mgn, Math.floor(mgn/2) + pos, mgn + c1sqhide * pos); g.clearRect(Math.floor(mgn/2) + 2 * pos + gap, mgn, Math.floor(mgn/2) + 3 * pos, mgn + c3sqhide * pos); } + if (settings.showdate) { - g.setFontAlign(0, 0); + g.setColor(-1).fillRect(Math.floor(mgn/2) + gap, mgn + gap, Math.floor(mgn/2) + gap + sq, mgn + gap + sq); + g.setColor('#FF0000').fillRect(Math.floor(mgn/2) + gap, mgn + gap, Math.floor(mgn/2) + gap + sq, mgn + gap + 12); + g.setFontAlign(0, -1); + g.setFont("Vector",12); + g.setColor(-1).drawString(day, Math.ceil(mgn/2) + gap + Math.ceil(sq/2) + 1, mgn + gap + 1); + g.setFontAlign(0, 1); g.setFont("Vector",20); + g.setColor(1).drawString(d, Math.ceil(mgn/2) + gap + Math.ceil(sq/2) + 1, mgn + gap + sq + 2); + if (g.theme.dark) { + g.setColor(-1); + } else { + g.setColor(1); + g.drawLine(Math.floor(mgn/2) + gap, mgn + gap + 13, Math.floor(mgn/2) + gap + sq, mgn + gap + 13); + } g.drawRect(Math.floor(mgn/2) + gap, mgn + gap, Math.floor(mgn/2) + gap + sq, mgn + gap + sq); - g.drawString(d, Math.ceil(mgn/2) + gap + Math.ceil(sq/2) + 1, mgn + gap + Math.ceil(sq/2) + 1); + } + + if (cnt == 0) { + if (settings.showbat) { + var bat = E.getBattery(); + if (bat < 20) { + g.setColor('#FF0000'); + } else if (bat < 40) { + g.setColor('#FFA500'); + } else { + g.setColor('#00FF00'); + } + g.fillRect(Math.floor(mgn/2) + gap + 2 * pos, mgn + gap, Math.floor(mgn/2) + gap + 2 * pos + Math.floor(bat * sq / 100), mgn + gap + sq); + if (g.theme.dark) { + g.setColor(-1); + } else { + g.setColor(1); + } + g.drawRect(Math.floor(mgn/2) + gap + 2 * pos, mgn + gap, Math.floor(mgn/2) + gap + 2 * pos + sq, mgn + gap + sq); + } + cnt++; + if (cnt > 599999) { + cnt = 0; + } } } diff --git a/apps/binaryclk/metadata.json b/apps/binaryclk/metadata.json index 83387d2aa..33eb6dd32 100644 --- a/apps/binaryclk/metadata.json +++ b/apps/binaryclk/metadata.json @@ -1,8 +1,8 @@ { "id": "binaryclk", "name": "Bin Clock", - "version": "0.05", - "description": "Clock face to show binary time in 24 hour format", + "version": "0.09", + "description": "Binary clock with date and battery", "icon": "app-icon.png", "screenshots": [{"url":"screenshot.png"}], "type": "clock", diff --git a/apps/binaryclk/screenshot.png b/apps/binaryclk/screenshot.png index 504a1926f..2b459c87c 100644 Binary files a/apps/binaryclk/screenshot.png and b/apps/binaryclk/screenshot.png differ diff --git a/apps/binaryclk/settings.js b/apps/binaryclk/settings.js index f7e8620de..34b3ae180 100644 --- a/apps/binaryclk/settings.js +++ b/apps/binaryclk/settings.js @@ -4,6 +4,7 @@ fullscreen: false, hidesq: false, showdate: false, + showbat: false, }, require('Storage').readJSON(FILE, true) || {}); function writeSettings() { @@ -34,5 +35,12 @@ writeSettings(); }, }, + 'Show Battery': { + value: settings.showbat, + onchange: v => { + settings.showbat = v; + writeSettings(); + }, + }, }); })