From 95792cdf803c1a9e81671d18c7da06db0d2c69cc Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 21 Jan 2022 21:10:53 +0100 Subject: [PATCH] Added outside temp. --- apps/notanalog/README.md | 1 + apps/notanalog/notanalog.app.js | 58 ++++++++++++++++++++------------ apps/notanalog/screenshot_1.png | Bin 3459 -> 3690 bytes apps/notanalog/screenshot_2.png | Bin 3530 -> 3706 bytes 4 files changed, 37 insertions(+), 22 deletions(-) diff --git a/apps/notanalog/README.md b/apps/notanalog/README.md index 0d3efb839..73098c233 100644 --- a/apps/notanalog/README.md +++ b/apps/notanalog/README.md @@ -11,6 +11,7 @@ mode - widgets are still loaded in background... ## Other features - If you have done more than 10k steps, the red hand and icon will turn green. - If the battery is charged, the icons will change. +- Shows outside temperature if gadgetbridge is connected with weather. ## Screenshots ![](screenshot_1.png) diff --git a/apps/notanalog/notanalog.app.js b/apps/notanalog/notanalog.app.js index e30e71538..e2bd59577 100644 --- a/apps/notanalog/notanalog.app.js +++ b/apps/notanalog/notanalog.app.js @@ -16,12 +16,6 @@ var stepsImg = { buffer : require("heatshrink").decompress(atob("gPAAYMD+ADBg4DD/ADG/gDBh4DCA4YDBg/AAYMP8ADBj4DIgf8n4DB/ADBgIDDwADBgE8AYQTCgH+AYV+n5RBAYkfAYM8g+AIIMwMoU+AYV/AY1+AY08AYU4gAA=")) }; -var batImg = { - width : 32, height : 32, bpp : 1, - transparent : 0, - buffer : require("heatshrink").decompress(atob("ADf/AAPwAYfABQMwAYfHnPAAYc/AY0zAZwXHFYgDDH45jbA=")) -}; - var chargeImg = { width : 32, height : 32, bpp : 1, transparent : 0, @@ -47,7 +41,7 @@ Graphics.prototype.setTimeFont = function(scale) { return this; }; -Graphics.prototype.setDateFont = function(scale) { +Graphics.prototype.setNormalFont = function(scale) { // Actual height 20 (20 - 1) this.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAf/nAf/3Af/nAAAAAAAAAfgAAfgAAfAAAAAAAfgAAfgAAfgAAAAAADMAAHOAAf/gAf/gADMAADMAAf/gAf/gAf/gADMAAAAAAAggAD54AH98AfefAeOPAeHPAH38AHz8ABxwAPwAAf4BAYYHAcYfAf4/APz8AAPwAA/gAB+AAH5+Afj/AeDnAcDDAQD/AAB+AAAYAH38AP/+Af//Ae+HAccHAccHAcf/Acf/AAf/AAcAAAcAAAAAAAAAAfgAAfgAAfgAAAAAAAAAAH/8AP/+Af//AeAPAcAHAcAHAAAAAAAAAcAHAcAHAeAPAf//AP/+AH/8AAAAAAAAANgAAPgAAfwAAfwAAPgAANgAAAAAAAMAAAMAAAMAAAOAAD/4AD/4AAMAAAMAAAMAAAMAAAAAAAAAAAAHYAAH4AAHwAAAAAAAAAOAAAOAAAOAAAOAAAOAAAAAAAAAAAAHAAAHAAAHAAAAAAADAAB/AB//Af/+Af/AAfAAAAAAAAAAAH/8AP/+Af//AeAPAcAHAcAHAeAPAf//AP/+AH/8AB/wAAAAAf//Af//Af//AAAAAHgPAPgfAfh/AeD/AcH3AcfnAf/HAP8HAH4HAAAAAAAAAHg8APg+Afg/AeOPAcOHAceHAf//AP/+AH78AAAwAAAAAAD4AAP4AA/4AD+4AP44Af//Af//Af//AAA4AAA4AAAAAAAAAf+8Af++Af+/AccPAccHAcePAcf/AcP+AcH8AAAAAH/8AP/+Af//AeePAccHAccHAff/APv+AHn8ABBwAYAAAcAAAcABAcAPAcB/AcP/Ac/8Af/gAf8AAfgAAAAAAAAAAH38AP/+Af//Ae+HAccHAe+PAf//AP/+AH38AAAAAAAAAH88AP++Af/fAcPPAcHHAePPAf//AP/+AH/8AAAAAAAAAAOHAAOHAAOHAAAAAAAAAAOHYAOH4AOHwAAAAAEAAAOAAAfAAA/AAA7gABxwADg4ADA4AAAQAAAAAAAAAAZgAAZgAAZgAAZgAAZgAAZgAAZgAAZgAAZgAAZgAAAAADAYADg4ABxwAB7gAA/gAAfAAAOAAAEAAAAAAHwAAPwAAfwAAeD3AcP3Aef3Af+AAP8AAH4AAAAAAD/4AP/+Af//AeAPAc/HAc/nAc/3AeB3Af/3AP/nAH/PAAAHAAAAAAA/AA//Af//Af/8AfwcAf/8Af//AA//AAA/AAAAAAAAAf//Af//Af//AcOHAcOHAcfPAf//AP/+AH78ABgwAAAAAH/8AP/+Af//AeAPAcAHAcAHAfg/APg+AHg8ABgwAAAAAf//Af//Af//AcAHAcAHAcAHAf//AP/+AP/8AD/4AAAAAf//Af//Af//AcOHAcOHAcOHAcOHAcOHAAAAAAAAAf//Af//Af//AcOAAcOAAcOAAcOAAcOAAAAAAAAAAH/8AP/+Af//AeAPAcHHAcHHAfn/APn+AHn8ABnwAf//Af//Af//Af//AAOAAAOAAAOAAf//Af//Af//AAAAAAAAAf//Af//Af//AAAAAAA8AAA+AAA/AAAHAAAHAAAPAf//Af/+Af/8AAAAAAAAAf//Af//Af//AA+AAD/gAP/4Afj+AeA/AYAPAQADAAAAAf//Af//Af//AAAHAAAHAAAHAAAHAAAHAAAAAAAAAf//Af//Af//AfgAAHwAAD4AAPwAAfgAAf//Af//Af//AAAAAAAAAf//Af//Af//AH+AAA/wAAP8Af//Af//Af//AAAAAB/wAH/8AP/+Af//AcAHAcAHAeAPAf//AP/+AH/8AAAAAAAAAf//Af//Af//AcHAAcHAAcPAAf/AAP+AAP8AADwAAB/wAH/8AP/+Af//AcAHAcAHAeAPAf//AP//gH//gAABAAAAAf//Af//Af//AcOAAcOAAcOAAefgAf//AP//AH5/AAAAAH48AP8+Af8/AeePAcPHAcPPAf3/APz+AHx8AAAAAcAAAcAAAcAAAf//Af//Af//AcAAAcAAAcAAAAAAAf/wAf/8Af/+Af//AAAHAAAHAAAPAf//Af/+Af/8AAAAAfAAAf+AAf/8AB//AAD/AA//Af/+Af/AAfgAAQAAAcAAAf8AAf/8AP//AAH/AD//Af/+Af/AAf//AB//AAP/Af//Af/4Af4AAYAAAYADAfAfAf7/AP/+AB/gAH/8Af//Afh/AcAHAAAAAcAAAfgAAf8AAH//AA//AH//Af8AAfgAAcAAAAAAAcAfAcB/AcH/Acf/Ad/nAf+HAf4HAfgHAeAHAAAAAAAAAf//Af//Af//AcAHAcAHAcAHAcAHAcAAAf4AAf/4AH//AAP/AAAPAAAAAcAHAcAHAcAHAcAHAf//Af//Af//AAAAA"), 32, atob("BAUJCwkQDAUICAgLBQcFBwwFCwsLCgsLCwsFBQoLCgoNCgsLCwoKCwsFCgsKDQsLCwsMCgoLCg8KCgoIBwg="), 24+(scale<<8)+(1<<16)); return this; @@ -69,8 +63,10 @@ function getSteps() { } +function drawBackground() { + g.setFontAlign(0,0,0); + g.setNormalFont(); -function drawLines() { g.setColor(g.theme.fg); for (let a=0;a<360;a+=6){ if (a % 30 == 0 || (a > 345 || a < 15) || (a > 90-15 && a < 90+15) || (a > 180-15 && a < 180+15) || (a > 270-15 && a < 270+15)) { @@ -90,23 +86,36 @@ function drawLines() { } g.clearRect(16,16,W-16,H-16); + + g.drawString("B-JS", cx/2, cy/2); } -function drawHands() { +function drawData() { g.setFontAlign(0,0,0); + g.setNormalFont(); // Set hand functions var drawBatteryHand = g.drawRotRect.bind(g,6,12,R-38); var drawStepsHand = g.drawRotRect.bind(g,5,12,R-24); - // Draw bat hand and icon + // Draw weather if possible + g.setColor(g.theme.fg); + var dataStr = ""; + try { + weather = require('weather').get(); + dataStr = locale.temp(Math.round(weather.temp-273.15)); + } catch(ex) { + // NOP + } + g.setFontAlign(1,0,0); + g.drawString(dataStr, cx+cx/2+15, cy+cy/2+10); + + // Draw battery hand + g.setFontAlign(0,0,0); var bat = E.getBattery(); var maxBat = 100; - var img = Bangle.isCharging() ? chargeImg : batImg; - g.setColor(g.theme.fg); - g.drawImage(img, cx/2 - img.width/2, cy + cy/2 - img.height/2); drawBatteryHand(parseInt(bat*360/maxBat)); // Draw step hand and icon @@ -114,7 +123,12 @@ function drawHands() { var maxSteps = 10000; var stepsColor = steps > 10000 ? "#00ff00" : "#ff0000"; g.setColor(stepsColor); - g.drawImage(stepsImg, cx + cx/2 - stepsImg.width/2, cy/2 - stepsImg.height/2); + + var img = stepsImg; + if(Bangle.isCharging()){ + img = chargeImg; + } + g.drawImage(img, cx/2 - stepsImg.width/2 - 5, cy+cy/2 - stepsImg.height/2+5); drawStepsHand(parseInt(steps*360/maxSteps)); // Draw circle @@ -154,12 +168,12 @@ function drawDate(){ var currentDate = new Date(); // Date - g.setFontAlign(0,0,0); - g.setDateFont(); + g.setFontAlign(1,0,0); + g.setNormalFont(); g.setColor(g.theme.fg); var dayStr = locale.dow(currentDate, true).toUpperCase(); - g.drawString(dayStr, cx/2, cy/2); - g.drawString(currentDate.getDate(), cx+cx/2, cy+cy/2); + g.drawString(dayStr, cx+cx/2+15, cy/2); + g.drawString(currentDate.getDate(), cx+cx/2+15, cy/2+22); } function draw(){ @@ -170,10 +184,10 @@ function draw(){ // Draw again g.setColor(1,1,1); - drawLines(); - drawHands(); - drawTime(); + drawBackground(); drawDate(); + drawData(); + drawTime(); // Queue draw in one minute queueDraw(); @@ -222,7 +236,7 @@ Bangle.loadWidgets(); for (let wd of WIDGETS) {wd.draw=()=>{};wd.area="";} // Clear the screen once, at startup and draw clock -// g.setTheme({bg:"#fff",fg:"#000",dark:false}).clear(); +g.setTheme({bg:"#fff",fg:"#000",dark:false}).clear(); draw(); // After drawing the watch face, we can draw the widgets diff --git a/apps/notanalog/screenshot_1.png b/apps/notanalog/screenshot_1.png index e99d5a39fb967f4776faae2952fe33adbff4ca86..2dceb1f0a5d6f67f33a24a300953c00f5ff0a4e1 100644 GIT binary patch delta 3677 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 EKN9_6KL7v# diff --git a/apps/notanalog/screenshot_2.png b/apps/notanalog/screenshot_2.png index e2b01f1afb789c593df8ccf4b07204b471f54abf..16050a310ee27bf291a48d0e950297321f8a571a 100644 GIT binary patch delta 3693 zcmV-z4wCW88~PlOFn^s-d*tQ7x?T(E1V@U{tKr&XR>ufPXc<>;i1=C#nTv*8?!p zzsHjw%D^6hM<-+zP18S;p>_n=Qv+)pX0q}c3n?Ky9tj$8M`mHv4+31?lOT(~M`LYU z6~Mi#3w6%A`jP$-n_hTp{v*Nf85@}!YGX+vv-n7TQv*E9NejeCaC-fh>NW|$Q4o90 z-J<)$1!j7 zD7f0*IxyPKA|}!|VuQk%W*<7QK73ujG@Y>8pe|9k+;TbpUB+6%_5; zGT)M*Ek9cU@ERY@ev&RD^{(mGqru_tr3RKJD6NJOpMP6L9pOtW`{keIfho}F&ZJp z1<&E!3E*9_Z;i+1IdCM1BMU77T=PBR(<5EB5&V-jsN#zZLX2nPo=sl=DEb~ECk6C) zP6Sw50e^bgp4B39_KhA1BzZyrN1td^{|N8+$PnOx8b>~P7&z^zT@&Czax?o55;p6W z01wca@D32Q(j@_Q)|&7-3o3L+fSvUwz|Mk70QX#{oa<`*(FpJS7=5l&MtSQpUjm;I z39pZinqCggKP3cmXsqe{X|_Bvn;Y?y*RT7)hkqN)#=2lgS3YaKQD>dbr*)cax42Ge zo94V$1bB|tTVJP~Bav+s0&LSw)5?6Ek|l*KGXa)0>al3;&!BT)Zt&Xj6W|^^>upOV zLv9TLJjOltN(K5AAi(_^vWJBVOapl2?ftfOP6~z_>tz}pG4DHuThkw$OqzbTiHYUJcVbu47f)*9vRtY2m>;!27!800WXYkP^IIglKN(_Fd&w?;N}`z^yQsJ4t&@1|GF3mVC_h{rH@}#jtiH1rW)SRT0Vh~71@ zhPj-P=Fh82P--?_9;XmUAIAhyJ7j)$u(=Dsr35G5g^*SUnl%xqqy>TWL4d!PTra?R zZ8|#xH#hL;MTi>6Jpk8^XKGmwEq_Bw{c6X$L*|uAgM5xH&?W6r4vHJG%Ek@pQ_R3# z8zL!_OW7CQq2?L51|lNPT_D~q18ZWV0$97ECHT|NQKwrAK{|?i>QUNG0HYjySnRot zb_jzGh=PY?J@ixowL`|-*=7fTQI7JY$lrz7naqd!elEyYxmf!%TS!g%P=Eb6?F9-{ zPoP?-5Gm;keCCi;;B%&5D>0x=oTk>L=2XB-0fajUU@wQ*4;AoMfB<_ddV~JZ(;M`3 zW27Vmc%-@;_N_VYB)}U6_|7hC-yRu3Wqu7I0dwz zuFk;6_?JI1kV-?K$AJ>H=YJgl&V7U~v=ip2$c^`_bq#e^25w&SMD7D42g>86P-_;(`bCY3}hZ#M2^vvw!&#;F|^XY11LV zPm4I`yIcWo;+BVi4)iEMfP2(q+vN%n;N>Bp13e0e0BgP@)#C`;K2HJkm32!Q=svI{ zE$<6U3i0!j0>c1Cj#F}n2r(hmDnNj>iqSrl0z&|{WZzR2X5mnLgm-2dz{NkVQTSPS z0{mu%8((bgECsj}sDGyeta*ApU8~wc*Xr_h3Zc1D=dpsYwHn__120Ri`jd(PFJc{8 z_=wFS_m>RokpP*29YUu8Q)BDkTIenaaFFn5znP%54>C=6Hwdu1q_z&VKx*x6Ud3-k zfP=(H3#8UQ$TZ#EAi(aD+B(z%skOIx6~7e$4iY0RkXrj7(|>e#g8;irYU@yQvY@fG zd9zO|0vsq-2$+aXpeYS^g#Zti7$1Od;&81_O9HIdY-kG&#Kl*p#|5dMpP@cR>U;{o z$AqhY<}J5v)v`It9kwCstHXaIa>#Xj{WrI{=b(Io-qPKCs3B*$XMia+V?1pCFRKy2m z;vROypO)(B{Els>0sOFRY-NQ2E0miKFCiAALx4qz-hT$m;3dS(2od020Di9`+1s0J z@Z^d9CKlw6eWRV-)oywA&4rafeh|dWz{08v2QN#COT-B9t^gw?#RD=i0d4>sHv6)q z_$WYt?*QhH1;{z0-y-uqjk6>H!m z;I{-AIic97F8*4de3ktBPQCHCz0H&9W+laIZ4%%I0gPnhO*VI*y($3?a8=T|mKVE| zGVw+w#kvffinwsq-?r`*DF&`*E{qG}{<;#PmVW^j2=-`zZ%|T*8Tbsa+eRkPuh2Xm z-rz4ikoOWrfRTo1ivO~c>aR&znDAzik>awrF0Lig3&8H#wnVuk6ahBp2A76G;!~ST z&gcu^Dd3`ys|hQe*;hb4P?;xz{Cbsat#6UrLKg?5)qNTd&cXy3$kh{n?p4iE`u5a9 zZ+};fj6ggPV8RQ)o0^>QniLalG8IoDu5WxdnV|--dLBv+wl*L9rw>Xo zLE`}f>=yW*4D3{!^$4~#h(Vq2VM_$K^~inix0FA=Yz0_qr}ZQGwH@^wHUJ@?6ADSI zJRG&~dl-Yikx`48I`|TZwNnVGodMvW9DkbKs==oL#L|bFfv+QI;1`D~$x?igA*rc$ zUILK-OOjVVFTp3l`*-m3ev(@IP;-!;Bp^)u+J8M+YF{ZrR5Uv+IhHW;xiU|8KFiYJe`ZuLYOB$Up}-gL@93-HZ`nC^QnlQeAv}uIZz;2q0%GMt@q6 zFW-ri2JQwo9YAvUwbnd0sX` zvatxTJGfqC7O*KGw`pJe_9gY;p8R*>762!GE%v*jb=(TfG* z&_|bk(hThh%D`b?atxJ5-?tKJOO55>eJxg9 z>9fotzZn+s6k-=WTO2m8Q%1@Vk;UHm95}MB`BCMb*C~Hz5mjh3v!ZsEY~Rx+s;;Fu zoxWZ!>*rr7idHsAJAeELPYDE0#HI(tp0+zdeDd)5ZeRZMsu6(5gAx5jfCT4`{+}_3 z$U_Qo`1`;+WCzX3LsT$!(7BY@KEKRkU1`>m18HX!746$P=T?1&KFYnvM*5R<8L4+o zGsN$frs6qpvvJ4Q?Ikg-wJ*|dUPqzONm`)&^ajlegQSfW;C~)HC7&cs%>efdjI_0i ziS|7TB1!NO;@snHOp^I}2;#m-@C9z!LmuaHM`#LfA7lGJgb=o-B;?Uo8g= zdny&cs6aiB2xhBzsBfrU4@j%pqH{y+ta0c8*wPjT7@2hM%9yC delta 3516 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