From 27eaa5beed65ce140f7c0406836a65538c6826a4 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 08:33:14 +0200 Subject: [PATCH] Improved UI --- apps/ha/ha.app.js | 37 ++++++++++++++++++++++++++++++------- apps/ha/screenshot.png | Bin 1873 -> 2574 bytes 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index bea3a142c..73915d731 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -3,6 +3,12 @@ var W = g.getWidth(), H = g.getHeight(); var position=0; +var icon = { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("AD8BwAFDg/gAocP+AFDj4FEn/8Aod//wFD/1+FAf4j+8AoMD+EPDAUH+OPAoUP+fPAoUfBYk/C4l/EYIwC//8n//FwIFEgYFD4EH+E8nkP8BdBAonjjk44/wj/nzk58/4gAFDF4PgCIMHAoPwhkwh4FB/EEkEfIIWAHwIFC4A+BAoXgg4FDL4IFDL4IFDLIYFkAEQA==")) +}; + // Try to read custom actions, otherwise use default var actions = [ "No Actions", @@ -19,19 +25,22 @@ function draw() { g.reset().clearRect(Bangle.appRect); var h = 22; - g.setFont("Vector", h).setFontAlign(0,0); + g.setFont("Vector", h); var action = actions[position]; var w = g.stringWidth(action); + g.setFontAlign(-1,-1); + g.setColor(g.theme.fg).drawImage(icon, 12, H/5-2); + g.drawString("Home", icon.width + 20, H/5); + g.drawString("Assistant", icon.width + 18, H/5+24); - g.fillRect(W/2-w/2-8, H/2-h/2-8, W/2+w/2+2, H/2+h/2+2); - g.setColor(g.theme.bg).drawString(action, W/2, H/2); + g.setFontAlign(0,0); + var ypos = H/5*3+20; + g.fillRect(W/2-w/2-8, ypos-h/2-8, W/2+w/2+2, ypos+h/2+2); + g.setColor(g.theme.bg).drawString(action, W/2, ypos); } -draw(); -setWatch(_=>load(), BTN1); - Bangle.on('touch', function(btn, e){ var left = parseInt(g.getWidth() * 0.3); var right = g.getWidth() - left; @@ -68,5 +77,19 @@ Bangle.on('touch', function(btn, e){ draw(); }); +// Send a startup trigger such that we could also execute +// an action when the app is started :) +Bluetooth.println(JSON.stringify({ + t:"intent", + action:"com.espruino.gadgetbridge.banglejs.HA", + extra:{ + trigger: "APP_STARTED" + }}) +); + +// Next load the widgets and draw the app Bangle.loadWidgets(); -Bangle.drawWidgets(); \ No newline at end of file +Bangle.drawWidgets(); + +draw(); +setWatch(_=>load(), BTN1); diff --git a/apps/ha/screenshot.png b/apps/ha/screenshot.png index 4125df314fab20e5ba5eb6827940d8ddc38f3bf1..e92b7e97d156cec5e07b421735c3ebf0df8919ca 100644 GIT binary patch literal 2574 zcmcImdpOg58~^^cmW&WaA;MKTt$A`tHHRD$V|$Iwsn#l!(?S#)HHUI|iVExGl;k{H zhe;V`iBNeXXHS;Wau!)~$m{v<{rA1z>-popKiBoSuj{`5`FyU=o%%1l<7T895&*E- z>4-gX9l3wkrj6^J^Xv;{9iRxJqb;a$4>=k}}Jik>&JKcO_#Cd#qVq!x4r!tm_{V6RsaAOnjlwJyuUSAzwWoT zz7=@Z`(Zc>EyAnZQgPY)X0YrgFqD6H6|2meX%OKY zE6H6lBEsOtCM_n;_i{!1%6>4De0(LPbG!_8&+!Iqh`E*dxhtx=g*eJrE^9nm&IPgN zj-0Dj$?wX`$L2LoRx5CdW{2>&Syp*KFz$x!q(xJlM8FF+l?cQ-W9l*Nr3;*wK~h3z zQ`G`6iBs*-MTOaPXrJ-ZnT;dFs{{A=87J3@07RdyyP055Nw=?P|k9*R_&3puZ%7SUvk=7~8f^rTkMk#8qn|wwcg8Slf zKpjuX>Wv-ZqJ`M^oF}|S9M*ELhOKaiVa&D+(|mqfCY(oq`pKbrC?H4u*r~zmX+o)i z4u>zVZ_LL_bi3+13ZUrxqni5_fz{rrWmz@m&(_f!x{&Dq8CkT`mcp$jhGQ?@tqzei z`hC0sj6nykM4{gU9PgfaTYea!QhMjLACeiIFT4cz19>TU?W|s?`ghWoz!b=nRIF1R8SZVQkI8Q1I(20@JXPo&Q9(3bN9;=4~Jt!8qCk!R1EzggMB z%%sGiYBS_jCq_?cccYUY%ZjBRsLf=A?GunkNsUkB?8@^^X+Ty`3=3L7 z=MKzhoHVlbIAKEb-4;or@|Fxj`+ZO~Kk3`EqYeGn)Lc{rJH0FA*+o+3p@@2uEfUx5 zy34e&`RC(D^grzL?#T_#%FlZgbMo7mW1u<;m!-AyE6deG!w%YWEMqkB@y7t~_DgJo zpU517G0kX8Tu-e1PHY=t#_PezRypp?#SW@7gNorhAJ_ckh?gU1^aPE5M}8c&Q2K47Su}aR8xW6NcqN(6MKKIFa^%nX_I5U$w+72MG3Yz^ zx~D)#QaUF2G+v=9I(W+C_l1`**VTEWi6?qH-;$W~kKkd6A__Cx*>n5>FUeP_kVTcD zhUQ0+Z}x1^gF;?S>Te=1Fg~}`{^E;R!92fqZaL{ICI)VnQ=}B z;uhNYpF+3ZdJgj$f6-fy$U8j;xX@*!O_O#Z4^!J%HIYB%on2p)=(7!%*(5`u7sjmW zp-8z$$0fqdgL2`iK5nffCEC z59BO7M{*I5=CHjsV}p+$<@H8l=!b}dLmZx>9^)&~h^)~~N<(5NvUK)1KnC1GMe{BL zAm}Q-B2Y#EFE{CXfhZsfbho3X!9Znc(%YvjDWDlXg4+2CFd{DSu2!Nr% z2@^I9VCg}dT-*Q?mCe0FhCrUV*@j|0@OKiptY-${o*K+u8BiT|h7^+kv&40Cygm~A zQ)juRg0{65lD$Q1^HRrLMIa=opjDbsz_haQ$Df=)gFX!U zf1rdguT`O~nau(Yj=mJNVt)<6WKUuj`BEZ7m-dzxywg&EHKBQyima_2SaQv|`6DAC zFZ4}_zEvlo$?HRFpKEubTsqXZv z)taK}z3VsJZpl!?_@<=Vqyr1KP?LIg+sC|30K4UOkRDj!5DoZ4wxxcSeo+R3D9#*M z)Hd!uqXRB7#u}cW%EnHOK>`DB`F?L{cUBJyN*}1O&MLnDmqy$*|6|$uN(CO>bE&9L z$*S8%W5SFCDtzAP`R0A$yn9*1w&#b{U+h@SVN@%y#CI_Sp(RG2FZD-7nr{d0=Nr~8 zL#%Z%j1liNg-T(!7HJk_r7F{&zzWD$9pRNWr{gCV?uWQmKGb5axd#L@+5L=>2%4F< zlPaL-`$CUkVayb_J<~?RZgHG(Ddz4r4X~UE2`;|9!UNQXr(m)-#7hQ9a5Dc*T~*OD zc8Pz;d4HuW;WJGch-gHIf>-;p^4BKfP4&3tFb@&Q#Brzr35<6bu>rv3S|vzPw|e$)HNu>}iW3Od&v(K)6Y4X(sLT=&YuF2`9Q3&$A( u0j?xN1Z~~OA_L|vyjCOJSoWV;yawMObPcjo?R10R7E_@r*?ZHDb!N2bn#L88V4g6Uw7JQXaDh>0~k{cEetAEZnPixZVeS90-*!LTd(XM&-Y@sd&GGRfYik&5005xv ze#Y(mt~UJxHPu~iY@H6>6>fheR!8s(9zeIgU-s z#{NA8M+S2pUn|G&`}!aGjX~wVpZX+EmwTg546$rr+XK^7MHmWsQI|`H6#bdoOF6+? z5(Pf}o3-eg0A{$&L3$R#^AO4m?NAS}dDErIs4BqurFOt%Lvdo7bjHI9{4A7S8Rao{ zn6zJ#;_+#)t$Gqut}Y!3_?YmAOakZkNEoO3hT{xI6ZUyBbq=M&+FMbE(C4YheqQs9 zE(6KS=gr+3xbmX=iz5T49xtwL;Co}tE}iCIzosc}@L#*?`6Po#*WZ{xbYw!DguJJn z!vqD9D#?l^XQo2Yld_{mD7^uNfq8g+cq9D*&~!OFn)B&sAtJ`i{PvbI9>sa2Q-iAD z<%}QC=x34NzWB_;Fv+cmBDQeCb;1Y?T3+hgUh);qhueik@GU6Hdk7;Ra+o#tLvLGV zsfTp-6&Ya1nB|Mdv>E&`CT-ubQp`6*^-tl|;Fd)so)Ugw| zP}G@o4A$j7;8zAedv4vL9VxePxe%#=!;8x2^`LU(x#F+Ep$HnslS$LF^RER=4|mu{ zt-lS4xOrvUcD8Qu<(r6gyaG6J=^SJ|4~JBhY<)f}RwLFaSBOKJ`t8^Np>!twI|S z8e?i}%xM$LIsj)hJ5i;XKtoQ3j`~&tFP7|r-kLNJeSJjsH59T-A9}+fJ$j|C>*r(d z%9eLRus2)SHJ@59vUXNV0>XSEy&wKmxHLve;v$J~j3bP*IU|XxwkiwXnV)Jq<9FwA zLQpK{Q%za~oDa0^rCyO450@-_-&Z6`fo)HnG#D*AZCX~vqSB7zQda#G#2RjjisSQm z1xeaPdZ8^HSv0APH!66%S(gB>aF3!;kv&wORO?)UB}mU+Vd*#-t5~;unadU?lYft7 zJ9p>_*727mX!*D6V3aE9hOIy8D~_coMQoeU2Je6ewka=TLH6x_76JE$>nFTsx5+1Z z{t9SHEo|Wjsy&46CjGGjwLnPKQabPP1L?^GqB`#G7VZAgCeZ_Kdahx^X`!L{YWVuX zt038lO!>eg-ToG`S!#Zs7dXEm(wBzF;9F(@&83t@gxhT@Lx2FbLO^Cc+n2ln9^WHK z=Rd0$vF^31Rmk8BXjv$>zjdDZ0kzC-;A0tHWzFV@_rj4w?G7djeG(QqxQ_iLdoR&a zV#VB8@2*kiZhNzZCcPrkU(`+l{Z%>7ml8T9K+5q^H}L{Sv=u1I*fEi4IDN^cURSE+ z4i`6FYE9J3Uvu1adzcReM|v{n4hN-WB1D$&I#TqYL`OfI7cKSp>^my*&Qn+Dg?DLv-R zTu|?kspFg|?M|>-tk!!hC}l3JB1@}q!PP(yqP9=}|M0)Ih7xhr15PS%Y%SRRNWlG+ KmmAlWa_etnmSL*^