From 508b6105a0cdc4bec9c3b0e4f91d99303e4bb9a7 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 27 Mar 2022 11:26:22 +0200 Subject: [PATCH] Finished V0.02 with fullscreen mode and optional lock icon --- apps/90sclk/app.js | 6 +-- apps/bwclk/README.md | 9 ++++ apps/bwclk/app.js | 86 +++++++++++++++++++++++++----------- apps/bwclk/lock.png | Bin 0 -> 9212 bytes apps/bwclk/metadata.json | 5 ++- apps/bwclk/screenshot.png | Bin 2963 -> 2693 bytes apps/bwclk/screenshot_2.png | Bin 0 -> 3113 bytes apps/bwclk/settings.js | 40 +++++++++++++++++ 8 files changed, 116 insertions(+), 30 deletions(-) create mode 100644 apps/bwclk/lock.png create mode 100644 apps/bwclk/screenshot_2.png create mode 100644 apps/bwclk/settings.js diff --git a/apps/90sclk/app.js b/apps/90sclk/app.js index 367d77502..6babbfec2 100644 --- a/apps/90sclk/app.js +++ b/apps/90sclk/app.js @@ -75,6 +75,9 @@ function getSteps() { function draw() { + // queue draw in one minute + queueDraw(); + var x = g.getWidth()/2; var y_offset = settings.fullscreen ? 0 : 10; var y = g.getHeight()/2-20 + y_offset; @@ -110,9 +113,6 @@ function draw() { } else { Bangle.drawWidgets(); } - - // queue draw in one minute - queueDraw(); } Bangle.loadWidgets(); diff --git a/apps/bwclk/README.md b/apps/bwclk/README.md index 49ee7f593..18c87d7e8 100644 --- a/apps/bwclk/README.md +++ b/apps/bwclk/README.md @@ -3,5 +3,14 @@ ![](screenshot.png) +In the settings, fullscreen mode can be enabled and disabled: + +![](screenshot_2.png) + +Additionally, in fullscreen mode a lock icon can be shown... + +## Thanks to +Lock icons created by Those Icons - Flaticon + ## Creator - [David Peer](https://github.com/peerdavid) diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index eb61221d9..b1f433c12 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -1,4 +1,25 @@ +const SETTINGS_FILE = "bwclk.setting.json"; const locale = require('locale'); +const storage = require('Storage'); + + +/* + * Load settings + */ +let settings = { + fullscreen: true, + showLock: true, +}; + +let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; +for (const key in saved_settings) { + settings[key] = saved_settings[key] +} + + +/* + * Assets + */ // Manrope font Graphics.prototype.setLargeFont = function(scale) { @@ -13,6 +34,12 @@ Graphics.prototype.setSmallFont = function(scale) { return this; }; +var imgLock = { + width : 16, height : 16, bpp : 1, + transparent : 0, + buffer : E.toArrayBuffer(atob("A8AH4A5wDDAYGBgYP/w//D/8Pnw+fD58Pnw//D/8P/w=")) +}; + // timeout used to update every minute var W = g.getWidth(); @@ -48,37 +75,23 @@ function getSteps() { function draw() { - // Hide widgets - for (let wd of WIDGETS) {wd.draw=()=>{};wd.area="";} + // queue draw in one minute + queueDraw(); // Draw background + var yOffset = settings.fullscreen ? 0 : 10; + var y = H/5*2 + yOffset; g.reset().clearRect(0,0,W,W); - g.setColor("#fff"); - g.fillRect(0,0,W,H/5*2); - - // Draw time - g.setColor("#fff"); - g.setLargeFont(); - g.setFontAlign(0,0); - var date = new Date(); - var timeStr = locale.time(date,1); - g.drawString(timeStr, W/2, H/5*2 + 40); - - // Draw Steps - g.setSmallFont(); - g.setFontAlign(0,0); - var lock = Bangle.isLocked() ? "L" : ""; - var steps = getSteps(); - g.drawString(steps + lock, W/2, H/5*4 + 10); + g.setColor("#000"); + g.fillRect(0,y,W,H); // Draw date + var date = new Date(); g.setColor("#000"); - var y = H/5+30; - g.setFontAlign(0,1); g.setLargeFont(); var dateStr = date.getDate(); - g.drawString(dateStr, W/2, y+7); + g.drawString(dateStr, W/2, y+5); var strW = g.stringWidth(dateStr); g.setSmallFont(); @@ -89,14 +102,37 @@ function draw() { var monthStr = locale.month(date, 1); g.drawString(monthStr, W/2+strW/2, y); - // queue draw in one minute - queueDraw(); + // Draw time + g.setColor("#fff"); + g.setLargeFont(); + g.setFontAlign(0,-1); + var timeStr = locale.time(date,1); + g.drawString(timeStr, W/2, y+10); + + // Draw Steps + y += H/5*2+10; + g.setSmallFont(); + g.setFontAlign(0,0); + g.drawString(getSteps(), W/2, y); + + // Draw lock + if(settings.showLock && Bangle.isLocked()){ + g.setColor("#000"); + g.drawImage(imgLock, 2, 2); + } + + // Draw widgets if not fullscreen + if(settings.fullscreen){ + for (let wd of WIDGETS) {wd.draw=()=>{};wd.area="";} + } else { + Bangle.drawWidgets(); + } } Bangle.loadWidgets(); // Clear the screen once, at startup -g.setTheme({bg:"#000",fg:"#fff",dark:false}).clear(); +g.setTheme({bg:"#fff",fg:"#000",dark:false}).clear(); // draw immediately at first, queue update draw(); // Stop updates when LCD is off, restart when on diff --git a/apps/bwclk/lock.png b/apps/bwclk/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2c8407e79bd5f67969487c1028db745fca11fa GIT binary patch literal 9212 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 HbLsy8P0)rp literal 0 HcmV?d00001 diff --git a/apps/bwclk/metadata.json b/apps/bwclk/metadata.json index aefb1e531..3fe04c4d5 100644 --- a/apps/bwclk/metadata.json +++ b/apps/bwclk/metadata.json @@ -5,13 +5,14 @@ "description": "Black and white clock.", "readme": "README.md", "icon": "app.png", - "screenshots": [{"url":"screenshot.png"}], + "screenshots": [{"url":"screenshot.png"}, {"url":"screenshot_2.png"}], "type": "clock", "tags": "clock", "supports": ["BANGLEJS2"], "allow_emulator": true, "storage": [ {"name":"bwclk.app.js","url":"app.js"}, - {"name":"bwclk.img","url":"app-icon.js","evaluate":true} + {"name":"bwclk.img","url":"app-icon.js","evaluate":true}, + {"name":"bwclk.settings.js","url":"settings.js"} ] } diff --git a/apps/bwclk/screenshot.png b/apps/bwclk/screenshot.png index 84fb273b760489ecfbee271b5c7bc2b45a3feca0..5a3c17c868b9710cf95b1518d9122efc3485a798 100644 GIT binary patch literal 2693 zcmcgu`#aS67k__dOzyWrg^?u{vuup(WGsb|E@F{e(_km-QpRQ&GcF(LBDs{PP{^Gz zGp52+OkE7Nn7~ri!xmkto78)a*wo8i3>|3V?uk*dbSzwB!Fo z*`n2z6|(l*&(~z!gU*k3z{QDl;ge2#;9%FQcw6?a*vgw^|G36{!CnR4N1RfoCjpSEy*Y@vP;h_HmEuUddfU=C`U8V-bD0r9T{)}G** zs#p@UXo$^FsQ6f=o8VwleCvH{$Bv&?dV=wYdIZg?x17>XEAl+k-tzzHD ztzT{PT{WS8-;4NU*P+>Mf6}7S$r!!%1d5=VLOklbJZGQya2_<(@g1W94r}> z)dUhJsDSS)m1q9URFy8JAuN(uQhDDL-(B7SmPP%#9w60V{j(XEG|q^%!I0f?&A@Nt z!kHX{0xo0OxZAVTw7c`4xD}OQQSMJ>0 z`S!xA&yNeMw>~871-^N$nM;L}=6kSlgxYRnaZvsWJ^&AiXVAQtmVF_J%$UoVR{DIIB~b` z4X%ULndg}U9NNL2b>C(GyM6ex6-UmrXIqjgTs;U2t+L35(XT&TU!8LH!CHh8oD##} z_>1u$(V`3b!$A|o>T@cX_?6Go+J<9L!^aSEP{mH6kwvKLExaYZj(uvh5?PX*eA>uZ zL7Un-#H$Gcwt}pE*ay4fEIxnf*m0xt^73g_m5hWatMJ*PEj<&xlS$xf#p+3C@gF$s z&AOc@)Acg6y02bnMwKyhVm7&8sxWGDwxCOdFJm^Ayv#z}kGh^7;9&0h+2{PIRbkygNlb5%6NEu* zA)~7`x<}RRFn@!FvcB-6y9HX_H`M$h?a2GD5GKU|O7JmEvT8c;OEuO8T(Ih4)VkR@Vt5R5MfQAvsWKcb)9^qZ zUTY2pL6E3FDMw8qajKH7PoG3Coi>7O>nLv5jw; zW5rv-nR>t)WaHS7ZCD_*=py_yA4o4Mt*^~|TMZ-*p5Kk>iUx8Ab*8QsXU z-8ghzO~lXw9ta-w3$y4Dy4fa|{|Q=K?h$nC`m1L3geGq~#zE$*p0WU)@^XC$I{bC*GatXFQqS>`!YFe`zxg4x*0k`$fRgzB~ zex9pmt^~X246<>3#`!5-K>YqPL@^NH8yfZJukO9oJhvZ+hj3dr6Nt9OcGnT8IO(5@ hr)IbO?~K~!cBT@d+B+t%L+UHRVVC31?1Q8W{{p+I;AQ{- literal 2963 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 (settings.showLock ? 'Yes' : 'No'), + onchange: () => { + settings.showLock = !settings.showLock; + save(); + }, + }, + 'Full Screen': { + value: settings.fullscreen, + format: () => (settings.fullscreen ? 'Yes' : 'No'), + onchange: () => { + settings.fullscreen = !settings.fullscreen; + save(); + }, + } + }); + })