From 1bb3885b2c1834dfc1a32fde85c2f547bfe200c3 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 13 Feb 2022 10:16:32 +0100 Subject: [PATCH] Support for optional fullscreen mode. --- apps/lcars/ChangeLog | 3 ++- apps/lcars/README.md | 4 ++-- apps/lcars/lcars.app.js | 41 ++++++++++++++++++++++------------- apps/lcars/lcars.settings.js | 9 ++++++++ apps/lcars/metadata.json | 6 +++-- apps/lcars/screenshot.png | Bin 5258 -> 0 bytes apps/lcars/screenshot_1.png | Bin 0 -> 5618 bytes apps/lcars/screenshot_2.png | Bin 3027 -> 2707 bytes apps/lcars/screenshot_3.png | Bin 0 -> 4941 bytes 9 files changed, 43 insertions(+), 20 deletions(-) delete mode 100644 apps/lcars/screenshot.png create mode 100644 apps/lcars/screenshot_1.png create mode 100644 apps/lcars/screenshot_3.png diff --git a/apps/lcars/ChangeLog b/apps/lcars/ChangeLog index a8c55f8fd..7d8fecb1e 100644 --- a/apps/lcars/ChangeLog +++ b/apps/lcars/ChangeLog @@ -14,4 +14,5 @@ 0.14: Added altitude as an option to display. 0.15: Using wpedom to count steps. 0.16: Improved stability. Wind can now be shown. -0.17: Settings for mph/kph and other minor improvements. \ No newline at end of file +0.17: Settings for mph/kph and other minor improvements. +0.18: Fullscreen mode can now be enabled or disabled in the settings. \ No newline at end of file diff --git a/apps/lcars/README.md b/apps/lcars/README.md index b6bfda2c1..f979b2304 100644 --- a/apps/lcars/README.md +++ b/apps/lcars/README.md @@ -11,7 +11,7 @@ with Gadgetbride and the weather app must be installed. ## Features * LCARS Style watch face. - * Full screen mode - widgets are still loaded but not shown. + * Enable or disable fullscreen mode (widgets are always loaded, but hidden if fullscreen). * Tab on left/right to switch between different screens. * Cusomizable data that is shown on screen 1 (steps, weather etc.) * Shows random and real images of planets. @@ -33,7 +33,7 @@ with Gadgetbride and the weather app must be installed. ## Multiple screens support Access different screens via tap on the left/ right side of the screen -![](screenshot.png) +![](screenshot_1.png) ![](screenshot_2.png) diff --git a/apps/lcars/lcars.app.js b/apps/lcars/lcars.app.js index 1ac67d8aa..2d2239396 100644 --- a/apps/lcars/lcars.app.js +++ b/apps/lcars/lcars.app.js @@ -7,6 +7,7 @@ let settings = { dataRow2: "Temp", dataRow3: "Battery", speed: "kph", + fullscreen: false, }; let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; for (const key in saved_settings) { @@ -30,6 +31,7 @@ let lcarsViewPos = 0; // let hrmValue = 0; var plotMonth = false; + /* * Requirements and globals */ @@ -217,7 +219,7 @@ function drawHorizontalBgLine(color, x1, x2, y, h){ function drawInfo(){ - if(lcarsViewPos != 0){ + if(lcarsViewPos != 0 || !settings.fullscreen){ return; } @@ -304,15 +306,26 @@ function drawPosition0(){ var currentDate = new Date(); var timeStr = locale.time(currentDate,1); g.setFontAntonioLarge(); - g.drawString(timeStr, 27, 10); + if(settings.fullscreen){ + g.drawString(timeStr, 27, 10); + } else { + g.drawString(timeStr, 27, 30); + } // Write date g.setColor(cWhite); g.setFontAntonioMedium(); - var dayStr = locale.dow(currentDate, true).toUpperCase(); - dayStr += " " + currentDate.getDate(); - dayStr += " " + locale.month(currentDate, 1).toUpperCase(); - g.drawString(dayStr, 30, 56); + if(settings.fullscreen){ + var dayStr = locale.dow(currentDate, true).toUpperCase(); + dayStr += " " + currentDate.getDate(); + dayStr += " " + locale.month(currentDate, 1).toUpperCase(); + g.drawString(dayStr, 30, 56); + } else { + var dayStr = locale.dow(currentDate, true).toUpperCase(); + var date = currentDate.getDate(); + g.drawString(dayStr, 128, 33); + g.drawString(date, 128, 53); + } // Draw data g.setFontAlign(-1, -1, 0); @@ -451,6 +464,13 @@ function draw(){ } else if (lcarsViewPos == 1) { drawPosition1(); } + + // After drawing the watch face, we can draw the widgets + if(settings.fullscreen){ + for (let wd of WIDGETS) {wd.draw=()=>{};wd.area="";} + } else { + Bangle.drawWidgets(); + } } @@ -653,16 +673,7 @@ Bangle.on('touch', function(btn, e){ // Show launcher when middle button pressed Bangle.setUI("clock"); Bangle.loadWidgets(); -/* - * we are not drawing the widgets as we are taking over the whole screen - * so we will blank out the draw() functions of each widget and change the - * area to the top bar doesn't get cleared. - */ -for (let wd of WIDGETS) {wd.draw=()=>{};wd.area="";} // Clear the screen once, at startup and draw clock g.setTheme({bg:"#000",fg:"#fff",dark:true}).clear(); draw(); - -// After drawing the watch face, we can draw the widgets -// Bangle.drawWidgets(); diff --git a/apps/lcars/lcars.settings.js b/apps/lcars/lcars.settings.js index 176f88593..75add1ece 100644 --- a/apps/lcars/lcars.settings.js +++ b/apps/lcars/lcars.settings.js @@ -9,6 +9,7 @@ dataRow2: "Steps", dataRow3: "Temp", speed: "kph", + fullscreen: false, }; let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; for (const key in saved_settings) { @@ -52,6 +53,14 @@ save(); }, }, + 'Full Screen': { + value: settings.fullscreen, + format: () => (settings.fullscreen ? 'Yes' : 'No'), + onchange: () => { + settings.fullscreen = !settings.fullscreen; + save(); + }, + }, 'Speed': { value: 0 | speedOptions.indexOf(settings.speed), min: 0, max: 1, diff --git a/apps/lcars/metadata.json b/apps/lcars/metadata.json index a402b35a4..e6ca10f79 100644 --- a/apps/lcars/metadata.json +++ b/apps/lcars/metadata.json @@ -3,13 +3,15 @@ "name": "LCARS Clock", "shortName":"LCARS", "icon": "lcars.png", - "version":"0.17", + "version":"0.18", "readme": "README.md", "supports": ["BANGLEJS2"], "description": "Library Computer Access Retrieval System (LCARS) clock.", "type": "clock", "tags": "clock", - "screenshots": [{"url":"screenshot.png"}], + "screenshots": [ + {"url":"screenshot_1.png"}, + {"url":"screenshot_3.png"}], "storage": [ {"name":"lcars.app.js","url":"lcars.app.js"}, {"name":"lcars.img","url":"lcars.icon.js","evaluate":true}, diff --git a/apps/lcars/screenshot.png b/apps/lcars/screenshot.png deleted file mode 100644 index e2d2cbd5fc44c8c4aa82e9c4d7577edf5f7a8ac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5258 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 Q_5c6?07*qoM6N<$f~}GSAOHXW diff --git a/apps/lcars/screenshot_1.png b/apps/lcars/screenshot_1.png new file mode 100644 index 0000000000000000000000000000000000000000..09a604069ebb5fdd2ac2db5d919589e2e73cac6b GIT binary patch literal 5618 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 literal 3027 zcmb_e={wX58~)8qW6CguV;v$&lReQ$i%J-C8oi^2Bu0+iFk`Z0pAe3%q(Rxreh3|V zw%@TH*~&83m@(F5Ld0pv>wJ0tg7?Go++UvSx$gVA?&rRq*qa1XVL@3z004w>X2!$= ztoXMM3mo+F+Bv%efY6DiSAnvA^fCY-6L7{?ZUxw_X08NsPYYdtwjH+AYfAJ##W~J6 zG-kI)Tj-TQzP;m#oK+d<;%)^tDkOD%TW4E55T&ho-Qqu#c{}`BmCO%pGRDCS;&w;p zWXVl-H8!^;d&Ln8{khHG2z2%XuVyI}sy8#gO+(diE!*J7lKAQbXkIrEZ0^d_Em0Vvx_rH`KkIqdPJ9Wg|f zP$dhVwCV0kl}odbpv+VguLVW#DC?pwq@Qo&Rf$#unv_3%Fdlp!q)tFzuR_VJ|*3BwFK-t?qAfxb^%di8IJ$1x*)h`|v#%j&ZRx}TeBnJ6*x!QS) zJ0D_C;o2~e?|$TEgE>l(F50!Y`OQdTa_-sK?kY(OisRTHJwxbJ7Wft>*DwF-bt>Ib zXHZI5CFy1j;gpX*Yq%rm6%(3iZ#@ha-V@4~-6jD8*r=jUH3Ym!toQ5iN?75E_I3Zh z#}4B8W{#$Cl7V*hdg9p(9aR^ECJqX^L^`!)(AdJNQ7Oz*PeRfPNiclBTxxtI!MoUK z-K}a0bLd37hRk^2hd;V7kbsr?MkgO2xW~=@qANj(Gyv=+ozmt?98aCOgOAyqzpMXR zdGn5K9IWKlA@XzEp9wT_W+zZO)YGDeDjk##zwPtSxlV?!EUbc{wa>y74P zaUtFi4vZ1-$2D#O;ZiY#R6jwWB9m!slLG)+qIG-p7pF==!<+8Uz`sKM!8mpT~vGsL;|;#HQ;MMzEm7P(8g z%(Pd5^+_HpzqGzB5t%htzwkoPwYkP29cFJCXrgx);*VgW{^l|t)HOO^$8S{k>Log* zd-M9GI$0&xHP7MYRo*R5{7Pe!d}wz*s!=DRO?y8?J57mImr&$$| zwII^MDCI~3S9&-vokOV(e3{FFE6ti(rGZiifp-`|>+{}bI}tqY`fhOh3(7s8+JIx2 zmCG!i;~moWrN7@rBG;hWwl}Q6_pxoAsPN2!@=c7%GJnDSYq45LS=(0`*Lkes>i$wK(~9Sx zymJ2te(xv6(O*&ol!Ks&u@J2$OeMTRaxiyBA)K4h5yuL+*7XfUi7s9$QbE}Dy>$mh zry=(~8`ffN_WkD6Ws>q{&NV#ls=-#k8nbafcCPXyZGFav86GqeOubvf3i{A58O`cfcaK8RGt+cmU*7j@yJue5Aom}{OfO#)8pRlIfB50$ zczd=d!J<%4z5Q%W@%Y&b7YN=$_!pAYX3+#sFk!u&Q8fYz8`YU|JGJ4 z@nQVLFI0bam1j$nj7Qta~Qk(kO zn3)NKtrgdgpM2<#&`gjBuXSJ##~vg^##JEL-Kz$tfS7hZZI)*WLD!k;m5rM~&;c)t z6`v}=sceOjI%l~9q!c_d4wN`xI~X*Jjao|AEW`cFeK05&ke1evNc#-ZS^-a;kans+ z*)A4##sWSik5viVT4Z>5D{W_7xIY=T`eoGrw<(Ui4AAI>;eY}YunI;@rV^6{DlMut zs=>kymv!re5c)^g`I8-G723jiG!YK(Km(5+u!5qJBbEyzwMF0RMmE4^IB4nrjqBLM zYA-Q|b52@54v@gP{pq{RY+-Sk(AGXi`{?2?*fgT!D~ zEsPA)cekNZGcT?!>siLyYM4`Tu1TKhfs~(Nu8?0s8$M!%D zgOpQx8dP$EP1M0j{i}e=CU9nZfH9-?eo-v7kP3JzW?VUpt~>tvfp`>5?#Y-86hVTP zj;FazFbVFnVFOL?q(Z|MUDT=U8vqkTfpPte{A?tLrhh?}k_;yd)h>%Vwi zIXskYkV0MM7tWt?YB`wLf??1A(Y%A!Zo~=J8CE<%+tnH*-AHsQqm??o@<5vf#vMz@ zY?vk@Fsg117}S(GPqdXNnv~{%X43FC6Fxublut;_dU&ilVAsVXu_?4A3U>D@?eP3j z-2{pbCjVlqtEY&Ig`*dQs<;z?@>#PO;igpIzIgs&w50+~-K*OUsf>sk*-4_^RbQBJ zo+8?>j@44xJFHT9qmrii)u9Q-P~V#o=W|jnw-8BbZ|a}zhQ`TSC!eC+R4fGbQN5cv zMoCaCHObw!G670L?FRpxL3-(8#p-LIq_xME@l@!?5J4IxT_!Uc%36Dj&MqJ2I{BV7 z%~<;*_LI!w@>a08b2;wtKS5JJ1e2BD#eJw9-3np3BWXffs4r|3OWf~sKqo4rl@F0d z==;Z7UUR80NX^ix8M7zy4q@FiOKfo6Px|2T4RhRCr$PUFn*nAQ0Pr|A(IaY{ka1juaqAcg>&O899p(LqL7~`}gnfU;IP_ z7LC9w0KDkPMYG=#2mntGgulPJZji6n2ANJjsqadi0pLz!QCdv^_=ubU;s9_dvO48U z0Pf0sOy7pIV`JbAxC#>ofI9)Pw3;EnDFHAib#n0KWuh`90eH(RfH(kLimXogZUBB- z5(^U7J&|(uL;*`aR9gz5KF6B62KgDrT|D_<`^~rTnd|c@+}8o3Ob8b^XnAE zAtB}gVrfg30x$<&jzu*|k%KrEaiy@CC*N!Urjfb0BNF@O3p_**OAA6~SV9BOgH^UA zO98lLEJ4r*fLjLrfwBU?+kUaU`xgLy0CX*j{7C?ZglGw&v1Kg-V9R|#!x)P=G*WA% zn+?F?mbM09P|x0W+rma$1Eg9jmjZC!k)&Hu8!a|6)(0!sgQWnRFSayG4YAVF)-f$} z`+N4cSj0_^d-oZHhx%i-Lt|Q0LTI~oahT_!k$t#W6F3jopNcozApy8%aThyroksV; zYL+?BPOYz81K+pru!sT79TEZy<*-!C0QiXr39{j`R*Z)_pNM>v*((CUz`Y_J^*j=R z{eh$Hlz)P9&A;zL;wK`|F9NTBo5-pG?FIY+;C@3FHN7q2VBi44$`J?#UU~GQ?eS)w zz`)uO2p3}Q@%#DK2Y`Pb0&550>j13nTs`@Ercw2-4Zr%ME{~` z(0ZTf1E;~cNijEo2Qe@=a3zC;3B)A~?753t?b5Cfb0Gr2_^|Z?FqJ)}J}@T_@!tAU4%5H^V0@sS z25`$o9JiKfwbz#i8qeYk zbr?MLND0%d8d`k4SsB}Mu@?<-yS zn z1CHcD(s&01DHBN})mxL-+n1Ho2Y?Gl4*?jGW;OtGT9%VTPwuXHh9m&&iB^^t0Vk4X zCIIK{%>l~w<7s;g9hLwv8Yz+v0Vk4X1^`>_q^vBlbYUo~vIT$(!)Fb8jSGR4UD#|k zTMkIX4x0+Vf9K~B>qGLYbRtRy4#|V0@%A1m6G_9>Tbj??2d!>SLiBvv812jJ@89-* z_BO9*uYJ9B$-p6bkTfY^Xj&v4l4b<}(>4YJ3)8D)z>z#ingH+~0R)^#8k9k6(=E@y zh{f{+fLqtAO`x7DehZwEQ&9`V()_R0HE?Sn)quUlL!DgxvjBKD@V?`+x(5CQ0QcN9 z&={CbuAc3Z7&;i3L}o???g0Mpn!8BcT^rea{U(UGoy1ZMPr-x_?Tow)wP5;d+Kfnea(NASnn9}N8C09d{I z!N9AJ;E%UI82HBluzL5KGVu0fN3E5%dO)N7eIxLGsPpgrNKu=g0C1Z)Mk!bXG5|OG z+F|9Romj&oRYc(J18)qx{ih`h?*-RB;u!-J5wIh0c`w8c;&x2j>S^auhqLY7x$=z}d)XKWE;oq)lckp0wPq42%Gc5+eON zWV()ij2Z#3HF-3Wu3=zqu=2sRuIG1vluu%6Ym!Kt9#Xknd3k$jK5kNQjEuxH2XR*h zM&2_ky}lk{NCd1o+e)8K^}IsgVhnA8n}bao%-pQEZs*c%ngbV|m>hUgeY9K)tTbP4 z6ma0y(o7l7^NRT)7J(m7lu=sAl$pcnAYa zK*`x|1Op@Ovb3vp+k46f&NZoIv00iHaUnE+S<}GC=7<-()A_&}fIS}&M8NOai9=+> zXbr6GuxawfI`A_y15dXTR|;SXupt1R#0SoA+m_|$IgO^BvG8tgXg;uY2a^sMb#)<- zTQ#CbB`3o2kT>nkMwA%GF1DD1a1szg8IvG8;dy7%g>*5m`=^GhH2P4fr0_dPyF2oG6^)ey~zM6Da z+`2RH32mZzgzZX6Q%W~ucGQH!~ z>;)kO@sQqXZpEpq58Qh|dem3?l_G0kdbFL^QQDUtZI$9RJp*t4Y}!F9`S z_tcILfIr&&vr^wFKx0-;i=Jl}7$)WVU&Fw(AA2vZC#Hs-Mr#Eg=>XVG(-Ed_RexR% z!irqIH4IEyHpvK%-8e?pm{n_Q-dBz3C6=X3Yn3O}k(WOm1Di6TQWLk96*Dm~$9xha zb3m0`h#Cf_3~Fg$PV;J7eo75|-u@3wn}WTaJJ=3&&?Aws+#uz(VB}!n9dh{(W%v{$ z>F+r+TdbVwNoCE)z$e2VU_BRRb#BB{ns^olzFT5D_szt>RC{yo$yYG2#f-VkpoJ@h%X8J z%<}Xh3sU-SXYAY574AfD4UDkX=l1;3z(~F)88~NM&6`H!IgJaEVR65^chbDAT#4Qc zjA~nJXO1I_5)G{F#03K%QNFkiIddKiYBBfafz5*aTKOnr&@w#Q)T0?`+L1ePlJ2c# z;3;Sr5bqsvk=PbS=n17(Yn%$ zQ7k5xZ@d1SH4Kd8rJDCC4SZh&-gP&3b|cs6+yAw*6?q-B@55aP>i-rquyJt5V(yc< zKv_bWPI{uC^htvfjmo(Yw~Ze0ESmhuR?UUrTnw7t`d!*Fl-!UDplAA4G6%Bc+n%q5 z$}}tm-AT;K$Nb(iUvM!>+=x*cSYstlGv_QP-7iY};=lj+b4Yicc^H@+Lbn*xV(y$F z+1D%yzOpy8JvFemZQk^f3(>@5E%a(FxirO2+~t(n!LVoWS;qZ*X6bSZE4uyfJ~8qh zG%p|`{qqr+h=CiQHWS>0o6jt4KR+M(sG&s!rg$&J2UMT)zWELr)u!}Ce3wAHteZ}Y zutgcOL|{08Yg~u(U`~oAvpp>C>`4qAa$**2LhTq1VAd|83oK@n;+-$^gK0VRjKj&= zjHZSnB`)2!)n}WtBvs`o_88v3zme-TK8{AerU7sX6WSo0jk2Gyt}k7zjU`gnm}wqc)fqbCk%3Sq5EVD%w7k(I^9dwje%7_Kv?@ z%BAVN`RLF|cY^zvO#@&L178oN%LmG_$BW3q(GB8RZo3RaNt4S9b``7}_z0-!?{7v` zKz+lnb|<*@a|$0gwg2We92d^6E1K70=%k60cFw_V5vsU_BPmZ!8H6 zytBozFa%@;TOXszvvgB2@X5r&lM=g=P^Nk=zA|$D=uB z;%OMz^CSlQEK~ky2LZW@#2EOmG zU7sSp-{H!h0N#6=Jp)Hhqg6dxzZ3&o)03Hu7mzUwY{`ryBT%ri>0}wvoq=yMfvoyv zHzIqj6sUP~%M5intRcQ%Ux0xxw_(LEW+!8&T~!8VnDxTUfCiS_3dI*5%fL>{>dn6u zPQ)J1tA;MtzVx;!J|jh+ZF=Z;)*8e8)V(_>12ZS5S*wkq1Ft1Fn+86|z2fO(i6w8F z7R&>jmJ9Ng3|#6$NE(=GUkZLpcAWS}Hbo}Zz;`fT&-tpS&fG{N7TaO0D>qcEhNUzx zV})IMsW33KP)lI5WCxQ@1@(j)Skl7UV?`pOk|uUAZq>rg8uTG@LfMH^7f@MeR1KWb z&4roi-;+$UtT&oY0rjjJm;#cs(l8oSQZbtv)n(=dEXlwbc&y3DF5H;>(AkJ=^TXO+ zw&FU<2bRDC?ZC+tyuS-~drcJh4z+e5UciN@VqgkZNrou?uC&93T5FVnXWxnASazb?>O3y;j+d8v-Otmq~tkM|=rCqb0g+Q@^GO0HmT0fp{K?X)o zqtS)cJ1EvpnnT-q+ren>p*}DQk{qP>L+n>~;UXiPuZcq2bCr#g90GsJ2d1F0d|a2d zl{_HazaF*|=LL(GY1_FBR!b*lV9J=Rdyw^S7CEH24sgmeGh3_2jdY%FBXCGY+(x!2LmrQ`d`r8%i-8s5K{)OEwA>Dkn%^nd@n0$8!z7$ zzh#%+Y_y|m=ih5UcYENZ*EXtAPqfQ-h`wdKo|cvDBfg~|ZaZ^*LH~T8>z*&#^+ODt zQ?%EeXgPCR$%n0+XqS%+TE=S#19RFQ0dp|jNT&0FwBH@;Sq=Oj4%U&EFO8p+00000 LNkvXXu0mjfxfLn~ literal 0 HcmV?d00001