From c8950400554bcf7ec282a282aa67a77301c9f048 Mon Sep 17 00:00:00 2001 From: Filipe Fradique Date: Tue, 26 Oct 2021 01:27:05 +0100 Subject: [PATCH] Nifty Clock B - Some code refactoring --- apps.json | 17 +++++++++ apps/ffcniftyb/ChangeLog | 1 + apps/ffcniftyb/app-icon.js | 2 +- apps/ffcniftyb/app.js | 58 +++++------------------------- apps/ffcniftyb/app.png | Bin 2188 -> 1218 bytes apps/ffcniftyb/settings.js | 71 ++++++++++++++++++------------------- 6 files changed, 63 insertions(+), 86 deletions(-) diff --git a/apps.json b/apps.json index 51cca784b..102def062 100644 --- a/apps.json +++ b/apps.json @@ -4009,6 +4009,23 @@ {"name":"ffcniftya.img","url":"app-icon.js","evaluate":true} ] }, + { + "id": "ffcniftyb", + "name": "Nifty-B Clock", + "version": "0.02", + "description": "A nifty clock (series B) with time, date and color configuration", + "icon": "app.png", + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS","BANGLEJS2"], + "allow_emulator": true, + "storage": [ + {"name":"ffcniftyb.app.js","url":"app.js"}, + {"name":"ffcniftyb.img","url":"app-icon.js","evaluate":true}, + {"name":"ffcniftyb.settings.js","url":"settings.js"} + ], + "data": [{"name":"ffcniftyb.json"}] + }, { "id": "stopwatch", "name": "Stopwatch Touch", diff --git a/apps/ffcniftyb/ChangeLog b/apps/ffcniftyb/ChangeLog index f6516c6de..dedd31452 100644 --- a/apps/ffcniftyb/ChangeLog +++ b/apps/ffcniftyb/ChangeLog @@ -1 +1,2 @@ 0.01: New Clock Nifty B +0.02: Added configuration \ No newline at end of file diff --git a/apps/ffcniftyb/app-icon.js b/apps/ffcniftyb/app-icon.js index f0a2393b1..1aac04351 100644 --- a/apps/ffcniftyb/app-icon.js +++ b/apps/ffcniftyb/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwkEIf4A5gX/+AGEn//mIWLgP/C4gGCAAMgC5UvC4sDC4YICkIhBgMQiEBE4Uxn4XDj//iEAn/yA4ICBgUikEikYXBBAIXEn/xJYURAYMygERkQHBiYLBKYIXF+AVDC4czgUSmIXBCQgED+ZeBR4YXBLYICDC5CPGC4IAIC40zmaPDC4MSLQQXK+ayCR4QXCiRoEC44ECh4bCC4MTiTDBC6ZHOC5B3NLYcvC4kBgL5BAAUikT+BfIIrB/8ykf/eYQXBkUTI4cBW4YQCgQGDmAXDkJfEC46GBAoJKCR4geCAAMRAAZRDAoIODO4UBPRIAJR5QXWgKNCTApNDC5Mv/6/DAwR3GAAyHCC4anJIo3/+bvEa4Uia4oXHkEvC4cvIgUf+YXKHYIvEAgcPC5QSGC5UBSwYXJLYQXFkUhgABBC5Ef/4mBl4XEmETmIXKgaXBmYCBC4cTkMxiQXJS4IACL4p3MgESCwJHFR5oxCiB3FkERC5cSToQXFmUyiAZFR48Bn7zCAQMjkfykQkBN4n/XgKPBAAQgCUQIfBUwYXHFgIGCdI4XDmYADmIIEkAWJAH4A4A==")) \ No newline at end of file +require("heatshrink").decompress(atob("mEwwkB/4A/AH4ARgMRBA3xBBIJCAYIFDAAYHGCAYJBDYQABj4PD+AXFCwgXGCAg9ECwwJBJQooGCxAXCIYQpBAgg9IC5yPCCw4XKBYIsFPwUBXQQXHAYREIF5ZEC+MfWQYXODQYTGC5ZDEOw0QMAIXMPggvSC44vRL5b8EAYIACC5i0FCwaOBC5C0DA4ZLCC5hfC/4DBIwwXKCInwgAWEKIwXJAA4XXCxYXCEwR2EgJeLR5LbCGRYXIAgzvKh7zGZg4XGIYisBA4JJCC6B5DAoYXWF6xfRC4fwAgMBC6cBU5I6CC5AECCo0QJwQXJaZJHMEYR1JC5QKBXo8QC4oCBAZAwHgKXBTQwSDBIKmGgJ3DEYheEA4ZfJKgkPdJQXHDAQWBC44eIC4QAMDA4A==")) \ No newline at end of file diff --git a/apps/ffcniftyb/app.js b/apps/ffcniftyb/app.js index 60d76ff0a..b5fc94c32 100644 --- a/apps/ffcniftyb/app.js +++ b/apps/ffcniftyb/app.js @@ -1,7 +1,8 @@ -// setTimeout(load,100);Bangle.factoryReset(); -console.log('mem', process.memory().usage); const locale = require("locale"); -const is12Hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"]; +const storage = require('Storage'); + +const is12Hour = (storage.readJSON("setting.json", 1) || {})["12hour"]; +const color = (storage.readJSON("ffcniftyb.json", 1) || {})["color"] || 63488 /* red */; /* Clock *********************************************/ @@ -17,39 +18,10 @@ const center = { y: screen.height / 2, }; -const color = g.toColor(255, 0, 0); -console.log('color', color); - function d02(value) { return ('0' + value).substr(-2); } -// const c = E.compiledC(` -// // void xor(int, int, int) -// void xor(int len, int *dst, int *src){ -// len = len>>2; -// while (len--) { -// *dst ^= *src; -// dst++; -// src++; -// } -// } -// `); - -// function combineLayers(l1, l2) { -// // const l1ptr = E.getAddressOf(l1.buffer, true); -// // const l2ptr = E.getAddressOf(l2.buffer, true); -// // if (l1ptr && l2ptr) { -// // c.xor(l1.buffer.length, l1ptr, l2ptr); -// // } -// if (l1 && l1.buffer && l2 && l2.buffer) { -// for (let i = 0; i < l1.buffer.length; i++) { -// l1.buffer[i] ^= l2.buffer[i]; -// } -// } -// return l1; -// } - function renderEllipse(g) { g.fillEllipse(center.x - 5 * scale, center.y - 70 * scale, center.x + 160 * scale, center.y + 90 * scale); } @@ -78,15 +50,13 @@ function renderText(g) { g.drawString(day2, center.x + 80 * scale, center.y + 60 * scale); } +const buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, { + msb: true +}); + function draw() { - const s = new Date().getTime(); - console.log('mem.b', process.memory().usage); - let buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, { - msb: true - }); - - let img = { + const img = { width: screen.width, height: screen.height, transparent: 0, @@ -108,12 +78,6 @@ function draw() { renderEllipse(buf.setColor(1)); renderText(buf.setColor(0)); g.setColor(color).drawImage(img, 0, 24); - - buf = undefined; - img = undefined; - - console.log('mem.e', process.memory().usage); - console.log('draw', new Date().getTime() - s); } @@ -140,7 +104,6 @@ function startTick(run) { g.clear(); startTick(draw); -// Stop updates when LCD is off, restart when on Bangle.on('lcdPower', (on) => { if (on) { startTick(draw); @@ -149,10 +112,7 @@ Bangle.on('lcdPower', (on) => { } }); -// Load widgets Bangle.loadWidgets(); Bangle.drawWidgets(); -// Show launcher when middle button pressed Bangle.setUI("clock"); -console.log('mem', process.memory().usage); \ No newline at end of file diff --git a/apps/ffcniftyb/app.png b/apps/ffcniftyb/app.png index 1cd8a49b7ba951670fb8c007055a64f6d29dfc98..a6acf01213bece9c3692d0d075b0dd5f5c8eb6b4 100644 GIT binary patch literal 1218 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacjS1AIbUfr6ue)*-Or5z`Z(9c3j!e!&c^OrMww*%&jwrSppw-(zPHo+k0* zAaC<6g{U^qnRCU3E}IBG&f{)ilzUm&!+*818f$*<`w;w9&%27tZIN_um(iqO zGLklG+M3@_-TiZP|Bj#MpX*<}6q69)utCHwSx4@r)tO>-qLTzV|`Zj+2@cq zD`glMm?}M8978;gKb=}yecM3b*nNwQcaQR!Z&CA=)+>MO6)hPiV{B~v^0R-DO0?e- z)8EzKZKjo8`nzOuX*t_Z_k;C3JTG_E-LzkPykx%JjNYRwrZP`?;Ndp!{DsEAg)Pa7 z9ErP6a7|}jcCPG~Igi7(oi8=hZNq0CiPX<#s%tP)o4wL2dWN1stDd5GjPp zL@$5;Qy<-rvNuAR7e7kwFMM#;Zk3xBSFtm1fvi1e$R*~UfZ9h-jx1|#|I}N{QsyJN zps+c<|7R- zuFz(&RR7lm)ql?GcOO__{^P<{`vW`VH$=aEzW&FoZAyDC^2&t1>3#V5PTDSGv&T34 zOI5kJYaeXg{vyb3{F%@a zZdZAIho9kG<*CrL<6+liN_=^@WX{$T$@~0w-i7c|&Wc-qV_6SedeYUg^mR+lb-sC) ze|4SILJ#baS-X0X-ZvND0;Zi4y?+<~W&W%b{hRfaZrEkp%~yjPd|Nm>tG^jeNl=*0 z#T3WD*6CHZM)B)Yb~&Gwjpuxyr5v9f-`H)d=i0C${8e~UlfKS-14pY?&th-8>3eH$ z*%-MBmWrj>UFY2S?AQjLCzH~wCi`0ir{21k`{K+|7Sq)i%5!&Lyl{HuGVzBqUnV8W zoqSh+NB2>vU6^5~mHeTkg^5B1yKN=Q&tFnvThFw#Ls_c!%;Kv3mb(9c{r$wAUUyke T)qzP6l+`?4{an^LB{Ts5zomlw delta 2187 zcmV;62z2+t35*et8Gix*007uvZqNV#2vbQ!K~z|U?O1zIQ&$>4xe0;XBtTpUk8%T9 zNDz4yovDfgC|d~uw1Ox*Wm%E7l!B!=LP4#Sl3LfHHe|fFaLb^yT9+;Uw_Vb&pF?B!3(^=bAn_W z&R{S|Boc&hetsT8=zM&4cXt4QPODo`FD!p9=nQ&&L%mEcQz#Up6Qc|U!x0n1u!A2Q z9R6{5Rz540OQ&Y0n$9=zc)aCQlfFIur~5y_|H1$b=-=C7^_taV<73bs-Y$H58Kii! zJWte~Fc1IW;eP`Np+qKOGMRSy-`)JqOqR$b5}8D$RiR6zN=d_MmgK6Bt2QQXM7EEQ zPf}7603bLdcvIpgGMSv3mda!@Jv=?uu3P&!W>exOG~B?@Kzu@c)A=SRf?iqs3L?+S zXXE1In2!)Z1YG&@3i6*hcgB*h(x?u6Z~)of-rh(5aDP;EL{wZ-Tz$Nn6UZqjDERdF zr^O}3xB6}&4g~<<Aq6EUjKgi`%b2_N>qi6w6wGv*KZ(OsZ_qU<+WY8 zyT}+>p;TD%hlht}XJ?TeKm_#P>Gxs#Xtmm!<25m>V`ii?gF}N8;}dc5agPN_CDNij zMYShtk$;O!COZ*CqnR?I)oE{Bzrp2lgM)(s01qEN?Ck73d*-Z@Kmb6+{t7xy-??Mw z-hF#F3pR5I&W@csa(G!BIv3#Z}X5#jUm^R^tyQ%fN& z9)EP4E(OxZ15qe?gB}22_b~_|AtB>qRi#on5=5quV`F1+IvyDnxhi~>U5;sn0)ql~=kA688jJ=2KxA~J0UBsDn&^l~ zqtTEtG6|5*Hl7_F83h1Tepp#rR!VoHzfHF~v=poDL}Sz#puy6!b=y`mzpT8>?j{5wyw-lrYH-Va zsP=SiZeA`y5ScqN>p!ozE5?*EgTY|srIM)Fli9T7R3EF(*_G4X(``vmsZ}3|KFWDL z$I*t#+Opc0-a({JowdI(WjIW<>iZBHNXfzt_NX9S{AT_r%-~ac0 zt6Le{Gd$cqATa&JV)5A6m~D7pe_!p1+EcZs&?Se%nVy~|ID}5Co1C1qor_-_|D&Vh zmxJ{_6cHJbk)DBJm`bgx`D2YnqjB_TcMtdM*R$DdwhGKxhks?(Szb|Y zghum{aaa!kP+VL*H8W+k#7>?%$qD3GF`qVNiwF)0{`UH}mZLkVsSi~ia(;L`U;6v|n*$LZbsbWv-C(OS?~|jSs1_EBLyb;T_m{ef z@rj>}9UL4~C={r$R4Y?p zL16)o<4J;~#NQ-3;@C+!TK1-IEB0z?L9!r-6QtAY#2w<%k4=z`OVGEA*V{E zLNPdwpE_--wtwaq=7q^ZbaVuV1UH^*#NAATh&#lVBDh?xr>7^fJH#C^t7Go;--(Ef zs5nsZ+40Y)R4Ro+;qiF`cLyHFY>3;SP$=XIIr{oEubEft)eE`>saz_NN#qK-LZOJ? z7;om^?7V4t21{fT^QBUyv}%Lu8tS%e-Gc0G8QVNPJ%59^L4ssK`Tp|lncE41@bdEV z_49pVCT)v+TUZwPd_KSTcCRf*E|=%Mndc~9ON1$9Gcz*-0|Q22M6IV4C}au-u<7Y( zvwLW0C^|AaJ3D(%@g4?)0RhAS*4EZ05{YE9vgZ`^0x$6Y1pvT*0K4_2MY0wP+5i9m N07*qoL () => { - settings.color = color; - save(settings); - showSettings(); + const saveColor = (color) => () => { + settings.color = color; + save(settings); + back(); + }; + + function showMenu(items, opt) { + items[''] = opt || {}; + items['< Back'] = back; + E.showMenu(items); + } + + showMenu( + Object.keys(colors).reduce((menu, color) => { + menu[colors[color]] = saveColor(color); + return menu; + }, {}), + { + title: 'Color', + selected: Object.keys(colors).indexOf(settings.color) } - - E.showMenu({ - '': { 'title': 'Colors' }, - '< Back': showSettings, - 'White': saveColor(65535), - 'Red': saveColor(63488), - 'Yellow': saveColor(65504), - 'Cyan': saveColor(2047), - 'Green': saveColor(2016), - 'Blue': saveColor(31), - 'Black': saveColor(0), - }) - } - - function showSettings() { - E.showMenu({ - '': { 'title': 'Nifty B Clock' }, - '< Back': back, - 'Color': showColors, - }) - } - - showColors(); -}) + ); +});