From 0038c25df9f979e78f1d45fba70a07e7f7765575 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Tue, 30 Aug 2022 11:01:01 +0200 Subject: [PATCH] [calclock] Version 0.02 More compact rendering & App icon --- apps/calclock/ChangeLog | 1 + apps/calclock/README.md | 3 ++ apps/calclock/app.png | Bin 3119 -> 0 bytes apps/calclock/calclock-icon.js | 1 + apps/calclock/{app.js => calclock.js} | 41 +++++++++++++++++--------- apps/calclock/calclock.png | Bin 0 -> 11346 bytes apps/calclock/location.png | Bin 0 -> 692 bytes apps/calclock/metadata.json | 10 ++++--- apps/calclock/screenshot.png | Bin 0 -> 2922 bytes 9 files changed, 38 insertions(+), 18 deletions(-) delete mode 100644 apps/calclock/app.png create mode 100644 apps/calclock/calclock-icon.js rename apps/calclock/{app.js => calclock.js} (74%) create mode 100644 apps/calclock/calclock.png create mode 100644 apps/calclock/location.png create mode 100644 apps/calclock/screenshot.png diff --git a/apps/calclock/ChangeLog b/apps/calclock/ChangeLog index ec66c5568..faffda176 100644 --- a/apps/calclock/ChangeLog +++ b/apps/calclock/ChangeLog @@ -1 +1,2 @@ 0.01: Initial version +0.02: More compact rendering & app icon diff --git a/apps/calclock/README.md b/apps/calclock/README.md index d4b8fc9b6..2b4e93a0c 100644 --- a/apps/calclock/README.md +++ b/apps/calclock/README.md @@ -4,3 +4,6 @@ This clock shows a chronological view of your current and future events. It uses events synced from Gadgetbridge to achieve this. The current time and date is highlighted in cyan. + +## Screenshot +![](screenshot.png) diff --git a/apps/calclock/app.png b/apps/calclock/app.png deleted file mode 100644 index c850b0e5d1a3eb98b9c9cb68968ab554119fe23f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3119 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 0) { var daysStr = days===1?/*LANG*/"tomorrow":/*LANG*/"in "+days+/*LANG*/" days"; - g.drawString(daysStr,15*timeStr.length,y-15); + g.drawString(daysStr,15*timeStr.length,y-21); } } + return y; +} +function drawEventBody(event, y) { g.setFont("12x20", 1); var lines = g.wrapString(event.title, g.getWidth()-10); + if (lines.length > 2) { + lines = lines.slice(0,2); + lines[1] = lines[1].slice(0,-3)+"..."; + } g.drawString(lines.join('\n'), 5, y); - y += 20 * lines.length; - y += 5; + y+=20 * lines.length; + if(event.location) { + g.drawImage(atob("DBSBAA8D/H/nDuB+B+B+B3Dn/j/B+A8A8AYAYAYAAAAAAA=="),5,y); + g.drawString(event.location, 20, y); + y+=20; + } + y+=5; + return y; +} +function drawEvent(event, y) { + y = drawEventHeader(event, y); + y = drawEventBody(event, y); return y; } @@ -58,8 +75,9 @@ function drawCurrentEvents(y) { if(current.length === 0) { y = drawEvent({timestamp: getTime(), durationInSeconds: 100}, y); } else { + y = drawEventHeader(current[0], y); for (var e of current) { - y = drawEvent(e, y); + y = drawEventBody(e, y); } } curEventHeight = y - curEventHeight; @@ -67,7 +85,7 @@ function drawCurrentEvents(y) { } function drawFutureEvents(y) { - g.setColor("#fff"); + g.setColor(g.theme.fg); for (var e of next) { y = drawEvent(e, y); if(y>g.getHeight())break; @@ -92,15 +110,10 @@ function redraw() { } } -// ------------------ DEBUG ----------------- -// calendar[2].timestamp = getTime(); - -// Clear the screen once, at startup g.clear(); -// draw immediately at first fullRedraw(); var minuteInterval = setInterval(redraw, 60 * 1000); Bangle.loadWidgets(); Bangle.drawWidgets(); -Bangle.setUI("clock"); \ No newline at end of file +Bangle.setUI("clock"); diff --git a/apps/calclock/calclock.png b/apps/calclock/calclock.png new file mode 100644 index 0000000000000000000000000000000000000000..5f953c1ee58bf850e2e3c127f378e9f798e44d33 GIT binary patch literal 11346 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 z z#FT&e0tZs1<%^b%>h#MY7jh)(=?#<0m-M>jGy?=#-w8jHTo zM?qfxQ&6qxmhX&GpN~5|*4;8yy~q%gIEzI0_C;J^5bdbq=PgVH3Of?5tZbmEto)CH z6K06~;1n5+R|d4vS5MfeSmE{q`Bfe{KAP5&b_^F z>}PrhEX)Ya6e)wkq#NKjbzTOqh!s?pJ-+WXH+U&Md2z4QrHE6QzUq@;{>$bl{NGxxvCYv~OrlJ3)L z&bcN{&j%|DR694$7CD% z@9aO9YfQ8Ak04Pr3TN@3g8IV>ZHg`Y@(?S0pj?L?-CP`K1eD86LKmp(p^S7yYXo{CjRW;e;DOF?FoH{7jzrcUf&p+v zdc!#UU0vL~ApTIU-?$LW`E|1h7sqcAZ)Yf%xvl|+vb!geLtI!~7zj}HNBe@f9RIM-)k9bJpYU#8f3kq#L&P8EAtEXa z6mfMG`KyMPx2i7&t>9 z2+{@ViV^j~j4JxKA=Nc?4gRTdO@Ra2)#JAohU~vddZSVQBI|FqUHANU=dXrf)c=Y5 zH|c-){#zI$rK<~3afka{o2RJ)<+>gpf^dhU5s=@faA_b2ghbc_VB(^1fH+bD0f0$L zqX1GcaeFXQLJ9=82mS?0)6L5p<_1SzLt(&$(HI%N(yN&{uc;+Pc$YgVJ?5Q>KY1xfdWe*;S$my7(i44ganAAB&7jhl!OF8 z8V&=(K`>D%gp}BCC>FI^Z#A{4Zps?5< zxYuEUV4T4a3%kx!48U&Rn6u$P95Vi<-Y0brywCTtQY2~jDygcM8)`FC_Lca*mu%oC~TfbkUL4JLtp zd&6=2HkRTBBmnh1LT;H4jk+-rU|4(NB zA@G-*IVSplv|%0+m}id2KOZ`Orp5JS_+Q-qoKgRaBVeHaGswTi?|&lS#559mYwD^J zZW6H(@zaAYl?*UVY8e72{YBqD zx!@)mjjO1f^8I{VVH(6|79*lNZ|m)u&aSb*4)v9Mfyg0qYbhfk_Ls>R3$yGwQ)msF z(_XDCh@x5H&r(8R~iC7)HfStmx?!x;9#wXPr6R-W3>-bg z-fkI0X#K6}3ptrgcAX<50XBrDh)^4=j7$dWIL*;1>v`S;LF5R2dRVG}knirT;&EX>4Tx04R}tkvmAkP!xv$riw)>4t5X`$32Q=L_ z)5(OG&8><(uLxm;GJu%OEMrcRQt*whd#a>mnztAb5Q%4*VcNtS#M7I$ z!FiuJ!b-AAd`>)O(tyN|Tvt4P<6LxE;5{Q|COuCaAr^}rtaLCdnHupFaa7fG>MvwH zRyl8R)+#mDnv=gUoYz;DxlTEZBo?s*2_h8KP(}qd;&keySV+@-!pA@4`XzEHeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004|hL_t(2&&83u4S+BVL?6`dvJZo>11-z3Kw73r85#qY zWxhhw~6lK ae#8PG*-#?oufxy)0000qzjF$hsa7)FsoCQGR7OBxKuntiEkBZD?eM4604S+k90j1n>m z5wef{G4(4E6T;Ye=J)=8&i~Ex;@;1>_nvd_x#ymH?uBLe}IC-g~;;JbTNmC_sXHG=m>W zW;M6#JsOVhemK3dySBErQn+7$v4VYo1r2m7EI7lssxZbCM8NFjMVJb)4dVmj3i`dO z5Drn|wo*J!v@SMp;d4Ph!9pO}7oy=fASreT&dVH{vt9!24;I*AfMT=UI1xJjI1L0f zZ*K`T0tje{Fh9Lyu$T#}LjI3ZAEWEOb#~d^JB!{qH^BZq^Cy08OY$FMha#0R?NWgI z9TySyj_2^aKA;OXdhm4ucni2Q-O42Yna`J*U$k-*)`Uh$qZts%iku1$eFJr`*Oj(` zz7wQYQm22lhm{yBbuQFR{NU25Inr&Vnl(%^fz2g((_tlQQ}L8OYZ2kVo$eiTE%(Jl zEhM1nfu*n;(bezI#~ZBtaZ;x*#KvxWyC87xKH>3d)A?Iz-@chT)^oo+ph{guMxRK& z#$B)@afM4h5=BfKZ|+@zOo|~&Z|R)xD<~*v^w+S2v9HN+?acnTB>q$WvAwcM!#d!o z6)Qh2Y5c7JB$_{h4Xg*hN=TG5@3|fr@+u+z?8_a33eh2+B`X0z4=`lzlD%t7sBy6i z&b8;b9`#GK!JmVYoFV zjI8|PYg<7u&G+$>kizylys8~l3r5um(0^VS;|t=$)@pcdQ;8Z~chK3_!oYACy{Rw> z@YM7lFXut}zxR2a_p?RNmx;^Hc?vvhzhOK4U8HS;9!kjQ<{Ex)XXqcr$|I135fxHl zlg1fcPdhqK5EaFxZpo)G?$dgnjd-1;>pW2sSMN=@Cw#VRET9X~v}qBGT_TvlF8964 ze8OyJ!vCt%QO|Fo-Oa#Z5g1`xN%Bv-zV8&gf+32n+~NIDJG-LV=e8= zjCew!sI^y&5PiS=!|fAwNAVCPKXLe~idx_OPp2QjssIEX&wLEuI2}~N6?HKFgV&qg zB<@?ZgwmDWh50;E#mqTIm_kdsr@| zBuk#rq15r*0RrikguIuv`$UGf68KsIYV5VT#2O~wJZ^+2?Uw5G{zzv_tgC1J6v`8p z3`Io+c1>nFvAYA+hrZ(jMQ?U`AWP`ui?Oyenb1?tUHi5*0OD2){0+#%cRI|Mv*^BS zc7ZMMa+s!Oc>Pl_xR}4#w;mteoR{hzk$j%VOk-Bz8-?g=C}rJB{&j0dE&%6OuU+}C zquwTP=Uwi-n&RO5o{C#lsXP6M4{*Qw>e4BaQ;hFa2>P5~zOKi3`qb8^ac`yd7xbFm zwB_}ki-|+yU)=!DW*I7>jolx+=37l8q{g0>)XK?{>KaAKS!nx?jpd!&mZR7jW==nm zS3JDJif>!=nP@=pq7Zkw+$X`;UhzoX%lZjrvYRXCR!vcV=V3AfmB3vRZsaY$EWpcq zHC?$5+z1Z8!%Ghn^osoqdX!<;pS_QfOAzw7SmI}DQ9GwEIF?8DicW6d8~C*iO(uyo zsk7?%9M$FBYKn@XB>t+m$r%e3WZHccB}P>l#C4ldY?reW`l$I7P#ar;wM~Piq!l3Cd_yW8 zJxsWvu?)u$buFqY=gh-9G~jpy({{PF__CxZEDM+}6OALz%?6zL9q1lmopk%Gp4_l$#A2}=lC`fMuJYp!(we5?!MA6F6w7@H0Si%x?G@>4oSzA zu#eH^Iz?!bxi4fQ78RC|^zPte)BrZn9RS?_x(C$P@Ij5HGn$j<5AVE0O3nN z9V7%lziZ*k%+|LaIwgOcXx{NR>9ai1IeSv@f!zOPjp|(1|LnA2Ia27ns_bZhqhyX& z+p|vKpQYA;S0SiNp0CMdjN%i!ZE|(j`p9!&Z~gki(aw{^^(+n09#}LiKxerU`yXo2 zzA(!0$}yxP4QdeJ60mv($(IWL!mq(L z1iATyunu{@)}^QYEwxq~pM|)q*>8Uz45t(VhaI6OF#Ri`=+#thb$a)>(53jCGI0AF zwqH$|zEE}yl9}s8y`@OGxK%P6Hh{r4VV z*c)1~<7D{&m~8lo4|szz$q$%Ny6dxyZhq)mKSmw>&vcOT(B+YhK)um}RfX`3I!55p zyoIsb%3|W%>1ID=hj(gRb+*Spv$c`x>udM3SDL@Zw ztJOiBp;uV*dcO3E9l(npQvJxJa?@HxZYJTiSP{JR1+2PSnjg(jaQ;JVws3A+rABa_ zg66?0+4EFCqti=HlpD)8cJfxGo!{(EHjhd3;IuT~{ZDmI9rwm)xi_;G1T#rj9%!9DP7Lc##OHBdORbICq$LE> z=w>G*$f2l3h3Vf?IOJ1;nwRMf<5E@5I2dMw0Twfb+YC4t?`DbnyL=D~|6DFF$Dym& muF8Ir;3U!VG(`8qccAav(9f+Nec|JfXTZeJ%z&cj68B$xy>~?b literal 0 HcmV?d00001