From 3ea076e2334c9f1e264cad3012430aae4dbc6f7b Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Sat, 14 Jan 2023 23:08:57 +0100 Subject: [PATCH] berlinc - Adds fullscreen mode setting --- apps/berlinc/berlin-clock.js | 42 +++++++++++++++++++++++++----------- apps/berlinc/metadata.json | 4 +++- apps/berlinc/settings.js | 28 ++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 apps/berlinc/settings.js diff --git a/apps/berlinc/berlin-clock.js b/apps/berlinc/berlin-clock.js index cd0f12fa3..b6a2ed465 100644 --- a/apps/berlinc/berlin-clock.js +++ b/apps/berlinc/berlin-clock.js @@ -1,11 +1,21 @@ { // 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; + +g.clear(); +Bangle.loadWidgets(); + +if (fullscreen){ + if (process.env.HWVERSION == 2) require("widget_utils").swipeOn(); + else require("widget_utils").hide(); +} + +Bangle.drawWidgets(); let show_date = false; let show_time = false; @@ -24,10 +34,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 = (g.getWidth() - width)/2; + + if (show_date) height -= 10; + let rowHeight = height / 4; + + g.reset().clearRect(Bangle.appRect); var now = new Date(); // show date below the clock @@ -38,7 +56,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 +69,15 @@ 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.drawRect(x, offset, x + width, height + offset); for (row = 0; row < 4; row++) { nfields = fields[row]; boxWidth = width / 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 +129,7 @@ let onLcdPower = on => { let cleanup = () => { clear(); Bangle.removeListener("lcdPower", onLcdPower); + require("widget_utils").show(); } // Stop updates when LCD is off, restart when on @@ -122,8 +141,5 @@ Bangle.setUI({mode: "clockupdown", remove: cleanup}, dir=> { if (dir>0) toggleDate(); }); -g.clear(); -Bangle.loadWidgets(); -Bangle.drawWidgets(); draw(); } \ No newline at end of file diff --git a/apps/berlinc/metadata.json b/apps/berlinc/metadata.json index 7f63f96cd..acee45603 100644 --- a/apps/berlinc/metadata.json +++ b/apps/berlinc/metadata.json @@ -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..88fe2b757 --- /dev/null +++ b/apps/berlinc/settings.js @@ -0,0 +1,28 @@ +// Settings menu for the enhanced Anton clock + +(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); + +});