diff --git a/apps/berlinc/ChangeLog b/apps/berlinc/ChangeLog index b6ed1a5b4..1a0a9c9cf 100644 --- a/apps/berlinc/ChangeLog +++ b/apps/berlinc/ChangeLog @@ -4,4 +4,5 @@ 0.05: Update *on* the minute rather than every 15 secs Now show widgets Make compatible with themes, and Bangle.js 2 -0.06: Enable fastloading \ No newline at end of file +0.06: Enable fastloading +0.07: Adds fullscreen mode setting \ No newline at end of file diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index cd0f12fa3..9391d2cc1 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -1,11 +1,11 @@ { // Berlin Clock see https://en.wikipedia.org/wiki/Mengenlehreuhr // https://github.com/eska-muc/BangleApps + +var settings = require('Storage').readJSON("berlinc.json", true) || {}; const fields = [4, 4, 11, 4]; -const offset = 24; -const width = g.getWidth() - 2 * offset; -const height = g.getHeight() - 2 * offset; -const rowHeight = height / 4; + +let fullscreen = !!settings.fullscreen; let show_date = false; let show_time = false; @@ -24,10 +24,18 @@ let queueDraw = () => { drawTimeout = undefined; draw(); }, 60000 - (Date.now() % 60000)); -} +}; 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(); // show date below the clock @@ -38,7 +46,7 @@ let draw = () => { var dateString = `${yr}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`; var strWidth = g.stringWidth(dateString); 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); @@ -51,15 +59,16 @@ let draw = () => { time_digit[2] = Math.floor(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++) { nfields = fields[row]; - boxWidth = width / nfields; + boxWidth = (width - 1) / nfields; for (col = 0; col < nfields; col++) { - x1 = col * boxWidth + offset; + x1 = col * boxWidth + x; y1 = row * rowHeight + offset; - x2 = (col + 1) * boxWidth + offset; + x2 = (col + 1) * boxWidth + x; y2 = (row + 1) * rowHeight + offset; g.setColor(g.theme.fg).drawRect(x1, y1, x2, y2); @@ -111,6 +120,7 @@ let onLcdPower = on => { let cleanup = () => { clear(); Bangle.removeListener("lcdPower", onLcdPower); + require("widget_utils").show(); } // Stop updates when LCD is off, restart when on @@ -124,6 +134,13 @@ Bangle.setUI({mode: "clockupdown", remove: cleanup}, dir=> { g.clear(); Bangle.loadWidgets(); + +if (fullscreen){ + if (process.env.HWVERSION == 2) require("widget_utils").swipeOn(); + else require("widget_utils").hide(); +} + Bangle.drawWidgets(); + draw(); } \ No newline at end of file diff --git a/apps/berlinc/metadata.json b/apps/berlinc/metadata.json index 7f63f96cd..85567868b 100644 --- a/apps/berlinc/metadata.json +++ b/apps/berlinc/metadata.json @@ -1,7 +1,7 @@ { "id": "berlinc", "name": "Berlin Clock", - "version": "0.06", + "version": "0.07", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "icon": "berlin-clock.png", "type": "clock", @@ -12,6 +12,8 @@ "screenshots": [{"url":"berlin-clock-screenshot.png"}], "storage": [ {"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} - ] + ], + "data": [{"name":"berlinc.json"}] } diff --git a/apps/berlinc/settings.js b/apps/berlinc/settings.js new file mode 100644 index 000000000..a1b655a62 --- /dev/null +++ b/apps/berlinc/settings.js @@ -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); + +});