From 2167f4ca7b64029bade677517712df104fd07dda Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 18 Oct 2022 18:44:24 +0300 Subject: [PATCH 01/59] Create app.js --- apps/rinkulainen/app.js | 146 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 apps/rinkulainen/app.js diff --git a/apps/rinkulainen/app.js b/apps/rinkulainen/app.js new file mode 100644 index 000000000..6a13da68b --- /dev/null +++ b/apps/rinkulainen/app.js @@ -0,0 +1,146 @@ +// Rinkulainen +// +// Bangle.js 2 watch face +// by Jukio Kallio +// www.jukiokallio.com + +// settings +const watch = { + theme: "default", + x:0, y:0, w:0, h:0, + color:"#000000", // change background color + finland:true, // change if you want Finnish style date, or US style + + // default theme "grayscale" + hour: { size:60, weight:20, color:"#999999", cursor:8 }, + minute: { size:40, weight:20, color:"#dddddd", cursor:8 }, + second: { on: false, cursor:2 }, // if on, uses a lot more battery + date: { font:"6x8", size:1, y:15, color:"#ffffff" } +}; + +// more themes +if (watch.theme == "colorful") { + watch.hour = { size:60, weight:8, color:"#00FFFF", cursor:10 }; + watch.minute = { size:40, weight:16, color:"#FFFF00", cursor:6 }; + watch.second = { on: false, cursor:2 }; // if on, uses a lot more battery + watch.date = { font:"6x8", size:1, y:15, color:"#FFFF00" }; +} else if (watch.theme == "maze") { + watch.hour = { size:50, weight:7, color:"#ffffff", cursor:6 }; + watch.minute = { size:30, weight:7, color:"#ffffff", cursor:6 }; + watch.second = { on: false, cursor:2 }; // if on, uses a lot more battery + watch.date = { font:"6x8", size:1, y:15, color:"#ffffff" }; +} else if (watch.theme == "disks") { + watch.hour = { size:72, weight:30, color:"#00ff66", cursor:4 }; + watch.minute = { size:36, weight:32, color:"#0066ff", cursor:4 }; + watch.second = { on: false, cursor:2 }; // if on, uses a lot more battery + watch.date = { font:"6x8", size:1, y:10, color:"#ffffff" }; +} + +// set some additional settings +watch.w = g.getWidth(); // size of the background +watch.h = g.getHeight(); +watch.x = watch.w * 0.5; // position of the circles +watch.y = watch.h * 0.46; +watch.date.y = watch.date.y + watch.y + watch.hour.size; // final position of the date + +const dateWeekday = { 0: "Sunday", 1: "Monday", 2: "Tuesday", 3: "Wednesday", 4:"Thursday", 5:"Friday", 6:"Saturday" }; // weekdays + +var wait = 60000; // wait time, normally a minute +if (watch.second.on) wait = 1000; // a second if seconds are used + + +// timeout used to update every minute +var drawTimeout; + +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, wait - (Date.now() % wait)); +} + + +// main function +function draw() { + // make date object + var date = new Date(); + + // work out the date string + var dateDay = date.getDate(); + var dateMonth = date.getMonth() + 1; + var dateYear = date.getFullYear(); + var dateStr = dateWeekday[date.getDay()] + " " + dateMonth + "." + dateDay + "." + dateYear; + if (watch.finland) dateStr = dateWeekday[date.getDay()] + " " + dateDay + "." + dateMonth + "." + dateYear; // the true way of showing date + + // Reset the state of the graphics library + g.reset(); + + // Clear the area where we want to draw the time + g.setColor(watch.color); + g.fillRect(0, 0, watch.w, watch.h); + + // variables for vertex transformation + var tver, tobj, tran; + + // draw hour circle + g.setColor(watch.hour.color).fillCircle(watch.x, watch.y, watch.hour.size); + g.setColor(watch.color).fillCircle(watch.x, watch.y, watch.hour.size - watch.hour.weight); + // draw hour line + g.setColor(watch.color); + var thour = (date.getHours() / 12) * (Math.PI * 2); + tver = [-watch.hour.cursor, 0, watch.hour.cursor, 0, watch.hour.cursor, -watch.hour.size*1.05, -watch.hour.cursor, -watch.hour.size*1.05]; + tobj = { x:watch.x, y:watch.y, scale:1, rotate:thour }; + tran = g.transformVertices(tver, tobj); + g.fillPoly(tran); + + // draw minute circle + g.setColor(watch.minute.color).fillCircle(watch.x, watch.y, watch.minute.size); + g.setColor(watch.color).fillCircle(watch.x, watch.y, watch.minute.size - watch.minute.weight); + // draw minute line + g.setColor(watch.color); + var tmin = (date.getMinutes() / 60) * (Math.PI * 2); + tver = [-watch.minute.cursor, 0, watch.minute.cursor, 0, watch.minute.cursor, -watch.minute.size*1.05, -watch.minute.cursor, -watch.minute.size*1.05]; + tobj = { x:watch.x, y:watch.y, scale:1, rotate:tmin }; + tran = g.transformVertices(tver, tobj); + g.fillPoly(tran); + + // draw seconds line, if the feature is on + if (watch.second.on) { + g.setColor(watch.color); + var tsec = (date.getSeconds() / 60) * (Math.PI * 2); + tver = [-watch.second.cursor, 0, watch.second.cursor, 0, watch.second.cursor, -watch.second.size*1.045, -watch.second.cursor, -watch.second.size*1.045]; + tobj = { x:watch.x, y:watch.y, scale:1, rotate:tsec }; + tran = g.transformVertices(tver, tobj); + g.fillPoly(tran); + } + + // draw date + g.setFontAlign(0,0).setFont(watch.date.font, 1).setColor(watch.date.color); + g.drawString(dateStr, watch.x, watch.date.y + watch.date.size + 2); + + // queue draw + queueDraw(); +} + + +// Clear the screen once, at startup +g.clear(); +// draw immediately at first +draw(); + + +// Stop updates when LCD is off, restart when on +Bangle.on('lcdPower',on=>{ + if (on) { + draw(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}); + + +// Show launcher when middle button pressed +Bangle.setUI("clock"); From 12a0ce6c303995ecc319880bdc405beaa0f0f2e7 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 18 Oct 2022 18:53:26 +0300 Subject: [PATCH 02/59] Create app-icon.js --- apps/rinkulainen/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/rinkulainen/app-icon.js diff --git a/apps/rinkulainen/app-icon.js b/apps/rinkulainen/app-icon.js new file mode 100644 index 000000000..b27f89b2d --- /dev/null +++ b/apps/rinkulainen/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwkBIPsPAAwVN+AAKFaIxPFpYvJFpovJFpovHFp4vHFp4vGFyIvFFyIvEFyQvEFyQvDFyYvDFyYvCFygvCFygvBFyovBFyvwFy0Pc6YvTC4ajDFpv//4XFF8otBF44HBFywvKFof/R4gXBF8QuEF/4vZFwovwC4wvgFwwvGBBAhDF5oXGF/4v/FAovRFAbtCF6hoKF5QAG")) From 720d60e71f50e586054fcd4c475a62f7de7f363d Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 18 Oct 2022 19:02:04 +0300 Subject: [PATCH 03/59] Create metadata.json --- apps/rinkulainen/metadata.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 apps/rinkulainen/metadata.json diff --git a/apps/rinkulainen/metadata.json b/apps/rinkulainen/metadata.json new file mode 100644 index 000000000..1e7d16865 --- /dev/null +++ b/apps/rinkulainen/metadata.json @@ -0,0 +1,16 @@ +{ "id": "rinkulainen", + "name": "Rinkulainen - Minimal & Stylish watch face", + "shortName":"Rinkulainen", + "version":"0.01", + "description": "A minimal watch face, with rings/disks for hours and minutes. Date underneath. With easy to mod source code for making your own themes. Some example themes included.", + "icon": "app.png", + "screenshots": [{"url":"screenshot1.png"}, {"url":"screenshot2.png"}, {"url":"screenshot3.png"}], + "type": "clock", + "tags": "clock", + "supports" : ["BANGLEJS","BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"rinkulainen.app.js","url":"app.js"}, + {"name":"rinkulainen.img","url":"app-icon.js","evaluate":true} + ] +} From 8d1c52e62059d9c92ae18b457ffcd42505df8032 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 18 Oct 2022 19:02:26 +0300 Subject: [PATCH 04/59] Add screenshots --- apps/rinkulainen/screenshot1.png | Bin 0 -> 6471 bytes apps/rinkulainen/screenshot2.png | Bin 0 -> 6374 bytes apps/rinkulainen/screenshot3.png | Bin 0 -> 6009 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/rinkulainen/screenshot1.png create mode 100644 apps/rinkulainen/screenshot2.png create mode 100644 apps/rinkulainen/screenshot3.png diff --git a/apps/rinkulainen/screenshot1.png b/apps/rinkulainen/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..f897c5a4e096ecaef3407aeb492bd675a320a213 GIT binary patch literal 6471 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 literal 0 HcmV?d00001 diff --git a/apps/rinkulainen/screenshot2.png b/apps/rinkulainen/screenshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..354618167d078c21f984546174024d2c5dd02e86 GIT binary patch literal 6374 zcma)fby!th)Ay#OkCcSqp}VCygdiOvA>EzQozf|d)B%okOE*YLh=|exazwiOP~Y)> z?(cr?>wW)u_jRqkX3flRX0MrR&7KwWLQNhYhY|+>0DMIS*_X(<9y#hBU?SgAo=K(v zfU{sHBlAL0Mh5)C&BfZz(Fy<*V$w6Qv^3|*qz?SI5>mn+C}4MCf5iqfo__HsPJfF| zq=bhpJy?U6*c)9$7d9F~5X&Mgipobe5a#s4(UkhFv@``4uAtU$6etgW@a_Gqq@IvX z?a61zdbNLp8c=}l&X}U2ixI-%n)vkVN*o3B?Z^NGLskld;TNoL{S(9P;h|~BNaI~c zX9sQpcHo#B-As?pJrDfkE6A9q&g6kkUCG%o;Y0+#JbKCLmQvKdyA8Jl@zdsID=v;WkYo{(biSYM?BiB9r(0{gwS) zi>1|QsXIA+97h_aEM0bJXHS0opfnCyX?Ub+L$u_U(Fr_`|RR4deXL+#ml>Pzm;r`NBPZ3yb42L(NO02#GK!T8jhP! z$M}lEtOGhpy~@R3YV=6$9tfn)s!#c6>~i163deSdeB1<{A1u8?V3?n)sOWVT33m4m zdk-z4(gU76DsqVlF!^QJi(d4Hy=1~D zv~}o$fQYt8Sg{E4gb#NHM{4ZXa1j+jH#oXVVwR0Sl%0c<18(oYZJsERiyzYg<3R7^ zoLePImQ4sbyNx6E$gSP8eNF-IA?w}v+-pbRv+dEZuS={{ervdIZunTxM85!{y+9US z`aG)qDvo$^ESfZVG$ytw?JBK+4GOC+s!m8#0YDNuVJcPzXq$2i0|aki1r)jHHhs@u zlP&??y=Y%>F?(@&P?tk_AB4RIVH8PIzU8t+*OO`n;krcy6q>RSDTSmIK2^Z`R7m>8 zuj~O^1Y3c983E#g>*JbG!amhQy-T(Lto;a+UKmRVT_HIOB#kjP;#e-CkVvDPh1H(40;C;TAuUj# zuR&dAP-gs%XPcffuB7mtt#Tu~C_w$@cVWX+<(I)toKqAJVuUz?tep@Nb{AV{+Q>sj z{s<3?I7zXeqmRUNl&2{Ro`stwmW47d#z8jLn{Ap`hcbumDC#BBOx{7Y812;WWp-T; z6Mn3QW)te(AMvxb^|2v}GxI)ZA8((@8Mr`E|G2Z}bQE+c+ezL-U=k@AEt$|06CC-3 zz6=!qfGeB_6vZwobWLMed6& z9SZH@@`bX6;IRmoX^uU;UA-_pDjR|E zc9ESfgrldrXQ*GH9}Gc#rcSAXZ<2tQz)3klne=oj`*-%kY~`mHw#Hu`=c_{ZM012X zUY}3RUo@F=x>qYyuj~6a)z~H2@7P{DC^vfBL#JtG%r{Uf7funt2w)dOOhc|iRPi|pSgPMtg_(Sr&X@>QSxab2=1T-hS|;kO zIU4X9epm~Qo4I4T7y1@odE(A}oO)(izgXlzV4ZmK_$W79CG*BEM7rgm3#WT z#`6YqxVsl~7s6j2KYJ`F+$a{{>fx3qDkw}KLLtg1w&%8OJ*D@v%6x{=CcYu_#C{|7 z^An@TMs9|Q?KeN|x3Yiweeryq|4F>BGw=lQo({CNNwVNrMSiB{? z$64pP>vQkt+UG7@C0vVLyN=x9uZB!izo>v18yVJ!EQlS54xc@AFJ{s2=m&j<50#6}i3jQ7G>d*>f%}q06r5ATuCRoPpW)7wbR#;_X zAr)8lROVErR&iHe%ob!g1!Z7IJzp-unW{VuIjuOopfIDj<{#pR^HDV%>V48<9?)`) zyu2~b8&rPet;oTEk+STVxw|({{}pUkjhDjtw&~ZGWa+K!C9S)JPVQMq3*SY5${gcx zMg*(Umtm=cSNmhH%F2eEbiN!Q8PvE8u>FOc_$_h|-JX3Or=r8eJ<4IHznw=`XujB7?)xDruUH{RtJ2Xu|=7gyTeezHNvy_ssjGK#DQQo z@qX=a>_~0+bIFd{tbw!eitS$ZtS6#mc%q>tz}cvCqAl=DZ8NW?gV)=?J+!8jiO(M=8Fx+b%PI~dV_lH@>tM2}YczIMpuQO}f5 z!+rJb;`!9!)bPQF<%BNon}VaCz49}|iR!M<`~=Rc_-n(v!CmE@*@9Za;fA4MMnhI_ zHxemYTs2jU)w3W=H3cBV3k_JiDZlc2Sx|nDo{D})tUj@ty7mAd!WpPS0e>M5p|qrE zp{;*Nomge74lK^I&h*G;*xQJa#(j&AXR?CBUEW?jw88An+&?<1|9y1C-K0=|fnw_~ zBrvNU?TH4I6MyQ3<$rp&@4_c=a$h_gY|o<+3b`!3BaSsDKZ_T&N0MJq*0W9Q9gdDO3sQ*ao3()?d>;5Q8Ysx4pB4a0L}R&q^TJ@EnN>?RTWVS7bh+=OBZu1E+41Ye;|Okk0_FKvhpwk`#3o|yNmij z=>F0WMbdxR+;rf-R6HCYbh@f9z%njwR$u|Hr(8UA5;$NmSlrFhTJ)u?+~08I3PNY= z;qh9Oo7>ylo6DP@%f-!xn^#0cgqw$tn~#qZsln;)>+E6X!|Ci!{~sg&-;S)6yM>$G zYY#gYXYe1pX67!Q9uPXZKaT!+{_~wyK6d~0KM~$2Jlw{)a32 z!p_IaQCHT^2^k)w4+&l&A@RTT|Ci*y9{+>XcDHhqadAQdJtY1c-@n2C7XDA*UoQ3j z?NadHF8?L@8!68HXXpQl#DBv47Z(|42^?|me{v>)lTNk30|2;h6lJBgd{FlC@H618 z_~9L?5FLWI^cz5%&RW*IH1{|yBM2Q`sv@ZN3F{rIHk5T9zI=O!K=^e9AE99=u^sw# zb>HdmxuN4@WTA#+#e~|cVgRnHDpiaOqdk{q`-hcpv*TF z6shq6siqRtkk%5H=xkOX`W<=Mj1~ZzJ;m4H#{hVV(Y|Nn0BhOZwDu(c*xI~6UlT>j za9T)qf&>^)!P9bJ1EL)ek!A1xhtpL;9eM4-UP+UC?Qulzaji=(BQ&)!V|$SL<6ml9X$stLNb9Gvd%7h5_&JOmNAuB9A1_8gs8QNb?Fk>j_#tb1zwe zWm1wc3B}l=j3a&&M%_yg+c4L}l=)IMZFAVF(rcTNW!6l+#D#N%XO3n*n19xg9=+v; z^F`@Si`Uk#Z7?M`SCR=@!gL*MpZoapLvyb=!9gEFL#}T3nzrwYeSn*o`tzEi??>(z zt(6~E%%>mJ3W$8Bx&5p@Rl2KqL-OYIL2#g*aUG?Rw|Qf>!9IgAslG)?daK?{TZ8qw z+L~C-Pwbm*TwiUQ$vH-c%qw_}w%MzM)Mx>!6U3yXwbAsspgg}z`>Nt_1x=+N)bU^; za7>cKNWf9sO!*Sg)O~+<@cs1wJclcNHH}GU?VT=LCvzvnv8%W8Ft2)c#>A*0X=_vT zO^N)G;aNu3$qO`tOm|wC?lEfUR=$T#MasGP1S&+?<<-R(8 z{cj!Xzy+WDcpFon-RdcMc)y-=#;qAheg%17vKGN_7;t^B_a15ndV*cFH=WDZ(DfnI zf+DF{jsLdBQ61Oy7w0$;xiUXJJoXf>(%%SzVk8E!Na2J_?H=7&dd9_z?~SCvzOqTM zcllJ&bRVDDoPnZk`d;{ds~*DvjrLc@$MTP6@>3%dMD`R>2)tS)0~st)!qkMEhm?NM z8RP!YF+ZpD$Bph9=xY~1o_QB2hg#Evj>;jY>hJ3yXxEzw#P2@+%Zi=6EBD{E^2?br zj(Gz{`8!pf$u-_sx1%x~0=V$~%3e5a&7GkhBq%O(22R@ydgw5KtQ;0+!~2-XiiGyC zUbYG~L|7+y*SP=y3xXah|DVO;G;7-?A>}kZDE%f$QFG5^s~%QL`9>dMWI;mq3s%-a zHa9QNXfP+U1J8>u_=6$e+8>)IF?h{ZAq@2d_KkWFS0Syh&}Y|4S}_L5COyBa3B>tu zdW=ckaDqRB8O)7lV4N|P*P6lcbhR(sMtG-wB;=D~3feBV# zR-LZ#`dyCBLchy^^D*9du@q>4IR}zkxGJaBEJmhsM_TD_g}=T(D~`D2IMnD_=j0>G z(s0f=(%pUYz8H+gPmxIc5kWS}#5Si90%q7XYdpW3@B?r^o z?u%GycuW1)$DPA_zuI86-o_1QngODHZ&G7h{fU;2G~=j!a}oKT<1a z>4;RmXtQ6^zA{{&jCEe8VP+B8Dwl@KuWJt_oi{r+jPyTKAIsI5QMwS8?o)o=Buc?1 zVXWJ`c-pP+a6DI}awRMsqxdt8QflY35$DqYvko~**c9ds+%Gs!d+TpMFa)%-? zKeT?F#3=-sQwFd8mUZ&%XUcNgM87kGun!glP^v#wQv4p~w_syV(|9^?NFuiOZvLd^ zt+eKTee-gDjIz`cQCjTskl)9pnG5s<;w3VFCTaum4oUnqWKlU_;>})(KSpoEa>CjU zs@9OuabgDy_Iw9Lt<=_-hGMbvK_+JLXEf{!O2SrS_!+VdYLKib{LBL=0<8X{LHa%T>_gWDFFwiEO!KGH>6!l#Vl_zj^gix-n9NQ@nV=FG-J>JK+L?TW}C>4$8V2^KL%N5Vjez_ zsRh6@4pHwEktIzrUW(ig<8LGYRx?Nc_=O#aK3g!eCPFq*MD(CYV-%^XSpxo479cv6 zJe21YN1SXe@4mgm*m?Z)1$e^5E54xpI2gl}(RmD(l(R8&F>&6cYtvk-ea&$meLm|y z{j|p=RMK3e-8t}d%)Ov_YDr_Is@f#gBx$>m;DBnd_gem}!Bg(`Rz zTS>pCr{uis_*Q#-NSP+YfTK&H!NE>!U5HBkR_m)U+qGBwzA~jcDZ#YXSOmXA(XW&4al1}!W1wzaVOK$GB! zS?aTd1syot-%wBeBC3d<*MRDtRzZFbCYUX@lhZWasng8c$n8?<*CXdpdeoV;a4Eh# zH2jr(dn53hoQ3`q7r2ET-q}gF2Gx_v;bX4~`OLj!Vd{aYqQl#^P)orBc?dG%j}K7j z=Clf=Z{~t`=e`k46C>MG;&-7hJdl5kJm;)*1r({=5xnpsWQV)s(O)Ht>{Df}!6bR8 zA-bhh){HNaiRVKr+(c$r^al@nGBWYW6c3)4A``zAsTYG}$Bav{h$0iOCN!?}zV{x0 Y+9lR>i;m~~xmGDYSCg%IW*YYY0G1T%a{vGU literal 0 HcmV?d00001 diff --git a/apps/rinkulainen/screenshot3.png b/apps/rinkulainen/screenshot3.png new file mode 100644 index 0000000000000000000000000000000000000000..ef1385288029f070de4b59d2312a8f05faa46ec9 GIT binary patch literal 6009 zcmcgwXH*nxlkOREMly(qWF+U{%m9K&2FV#D4+9K23~4|CB_{#NL9&2I6hz=6NE8qx zOAtwt;}8UPy!Y0-w> zzl9JVd#-8vVF>`lGjK&k9aTj|Rvk~I1Kh{sFUGBQ({tAg51jy%js&^`CN%x0qFRCv^#S4(XrLcvs z?#V$Nbn|fw4KL+VCy`dx_hIU6(LSdas(I@w$fsnWj+A%ia3;VG@$vKEO7R_!-X%h_ zm@_t!KM<6@YeesYo+iDw)-s&fs%WwMn%=xOx&c46Yi-A3cKNVkzEi>$Wdv0vE0x@0b(@4#_XL1{IefI<82gMKV z=AVxZuASrZo;XC}YkO7nCKNqO>3W{)5H={~oLL;hPWw)`czz4Ms^)mmFJ?pITYxTl zmd70%pS5cK$You8K(sL2A?Q7=Z#hKwQM>%su0+bD_Gn<*me6Iibab1{AM3z_-MN?N zcs3^*8Yb@xB|mh0^6TMNUJ~lt*Zq-f7s>Yv@8uP7E5DRltrUSwwpd^n?XGanO$OKy zE5m8HP6zId4mxSjoj16WfQ*4mc(DxikiSqGe@gV1r!pFnp3Arz@fnU1QE-GSf~4c) zWsWQr62-O4`LSbo%Ci!b;fQA7b95oifaoCE@zHk9PJMI7YGRJ!p^_}F& zFHs&G*%3gt1IS=|F%5pWNDN7e#!+B+hEHUDXYr1NBZ$`+Y=~~i2WY~EtnZZp2G&B- z0Qr-me8y~C$Ib`tv~z%82hIoyeg}y#cs@*oFx;IIuTX(0QP2+8M81)d#4{?Wz?z3j z4V_#du0q;ZKs$meBfJ}NH{ZF8{QQP2C?`Tt(P9KzM!^(rshDR?qY=6BM$(0JIKo8u zCV6<#5}rF#HrZO|*&bIjb9ER+r{D?fLod~OrA|5nb0Rs;-l`}fxKslm->QOll zuQP20r9otcf<(UQqg!QWWtQW@KiQdLN(x>&sn_$#0=J&57SxSaj&!dRAA!87&mre@ zEfmo3tLOsjdSN;SdQt-F1l2D7P8#ce;f9Rm43dm{8KA*?{B#2ynbtXPKvTFbvc58n z46Qe3pSgDVKE9|el4jPzaSZe7idbrHW;O@8aqm#>knV7~0T__>ADiD@_d`yV-ZQk5 zTSdw}lZ$JA9vXR@y^J!JQ1GcRIPXoY&i$!}PMqf4q?A3+DwL=TZ;E7QXql_?b4yYR zQQoFnNL1knP8Q=0=U}V4^CBfaQ84LT<#wO`Tbb#sY^AgmsU%FwY%iu4$wLz@(w&m5 z(pTV8IR5DKBNjav&uHrFRB5%K;;(8i)HKzkURd6xPK`^Q?k9P1m^zS}z-wj1VtA*F zq0+z7-N3M1zam>_!;sOSxO}E8vfQDZu98K+?X|2*_oKM-5Be~Pyq0uS{EW8ZD5=xD zIEyRP_4YQ{6&+ukH6nB5jk<9u+?E0>R5qwHiZL*&Ff8{~t4a^EVGxs!)leo{=2;e8 z9^>CO*)jh*rkd1EXSkJtTwzS?vd zlc^GWr9S2}NxR`T1}(bCF7L4u6MMNbcsO_iD$oW%-&rAGM1|NG7cohT`pZSnX{V{squ6DK%LGBQL$h@DODf2DO zPQB5-+P=*`kGAXXlyiR zdTleo=@?s=e(1cG^7*y}vxTR5e9NyT=Z(xI)QFFJZXcxceemJ=x1(>(ZeQKnb~G?{ znB8xI&?87Qiv)`{gbZ?)+mJgv<*?;_a_2-{2q9EH=~0837o6v7n+?)|UBMz?IUn>F z7#4^ZK82izz(bBh*ssX11}YIQ! z;>{Ac;G0idYoVLl!$rN0ntC1dv<|5wgR102q2y&i$ zp5y~}=*>`-MJ^s%h`NuufaWa?FZJ0>Nsc4RG@_^n^M%Btl}G5KiX#l;W5x@y9ekA~47M%M&69$K9FEobRU`J_pwZB561Q(RFT zP<&~o*eL00>&7>C;(JlJoj$NNP~l7I*XwtbMv&gLB|i5qU~P@~ad(bdO@EJtX{+Q8 zsy(ayVwGhWN@g%)@W3GN1AXv<-nP{@eOq(AM*3DMzumFm+6&nb>q{M@N)t2v3;TBe z(A}_JoVCsDpFhc+Z}FE$ZLS!Z_`@5PE-lN*=n;Eorw^bK;-^r1T^XU`6E=)(ogTh{&d%?VnU2RWP6xrJKIVIC1a z#b*`EUrP|=lkwNz_XhU0K7B6P)S5JNlU{Jz&Ybi)FZnc7*A(Pt@qXxC@Uhl^tP zy#6jVjm#rB$kWYDgN_9oN;%#0_v}Tk_Z*%L6IiNP#*)$hsy@G{PA?G(J?}b9K(Oz# z9L}3AN8-huDYB(8QmNGwEK2Gu1)Ay{{B+O!--Gv+8%kiaRO(t7v@*pTk4yW z`85=u>UutLn)CX3(#YQ-(bB|QJPxtbQUTDuIKcN`;$J&y1GCe-6YWZA&W`tJW5#1+x$Kvhk%?zF9PvBSclP&d zSNHdY8dPdAAg4eniAn8eJ~%)*bzetOZr{rtq^QKU-(9_Z@>S#-b<5*ey zIBc_PXm70Qps5Mm#p;9rC<+eXVl@y}n6Lr>ILVO!0d}Oqic&uKAM2ZZoPX)R9ToHx zRaLR0o~@_7y_=U4(z|ZxGYvM>1YFi!!7K>TH~s;j;C zV^)7x7dJ0ie<<6Z9z^*(2q>GerVgtj($k(*LQq^#m<>kE%E}7yv~!Tv zRZ{*Nj=h4iIeB}#%L)nk`S}U@i3uV-9fd?>WMqVdMTJB~1+X3hUIA|2kNpMQyx9K= z@}F^(?7eI~;qKmWq#Nt+xQ}g+KHg9^w%>{VIsUp&dw=-9GP!yEy)5hkg??LvLcIW&U5u6BuGsQmbHGHTBq4wL|2NCOGX8}$@Ur(*M7m;u-mrhw_iymO z8~-ct&y*(rW6FQC{EdVN{a*RMRpPHQ|2d1TGmID_^v|BbhzI?QYO!BRbgD`U`u?Ep zoET3QZqkTtt@-O07JOBrq9*d-PBnMP*yHpV!L^{0c5bbUv;F=3<4cMU`SNObSE?ow z(UIV5J^&qd-x&{ZcfQbp0QflNv_MDsw&Fg(K>ErM07@Gvx^b+96HP%t_6&@M0^KS9 z|LWY%+L;ZuvO2u>7{(s&*aTsk{X_TMpQBmcI2VJ*Ws3p#how0q6KbGA340g}*n1** zBR`mD6GLNtRZa@fp_K5AQi&2H7=Tl=SdB&EUErVzY=o1|Xpa7s2Q~t4k?jnweNkyh zU7%r{ufg%B%V0Eakhd#)G&}G!coKl%bdx(FlpU*DClWBfXn}12MP$X)Xdmtqm%maW%JD`n`BxvVdPim z=7!xOw?#8ejxvFTSh^hN1>r}l37{#P=#;I1?8a?L@r^iA!hinCgcpv;>#aV65A?N^s@}iSxK0^FCY>9ZdTYTsu@| ztE1zBm;@N&e8FJAiK5EuVJQAY#w1l~gJC8td4OHHQrWU-rr-R1TCheSPP;wfip7gS z`z@BTO4QGl91HC;0!F6Vhi)G;Gx!eRHoDN!i!yj40=7*yN9EMCQDy2dS)Y$M@c&uZ z*JP_Liw=xLy;KT7z4K*Il7S#LHmHjos~R_e2}#L1p^E2^HZw<2CoXr* z%$W>)82|Cfu|D=sYGig>`f?u|o^HQn%c_PpeV5DG@9pzg=>68eF?|!$Y@^|Y)AaF# zvWF^f@K|z+X-s$b8LVyPt`*4n5!?f;oqDOGrXtJW2pTPBNw}$3>YkB|# zp|7svy7kQgaR}c;!gb8d7+cfEWb?q*2)&t0(BKl)|_%I*S>(aIMJ~w-5>dV)Lf0AR(N~s+x2R{3_OqT+4(yJY~3&F#~G~#$`ESkhy2l~C$UF`GG6NKlfaxPba_be z(ypp?CBlacFr)3d(jf*Gb$s&~D#5^11;a@c_V-KFTbyoV>|<}({YEYo3`nQm;_0aX zfX2I#mjyIHN5Pi7h#?;E#z16?q8I?k?Fpi5?*iy{+JW;x9Fxt)`!h44WF1YH^Bn@0 zCAbVy+M8NTzi-AEjeMuj<1rg3T5cVYrhKIY66hiRV6U_HlN~?409UHMp5T zEzL|oJqOwbofrc{oWE~0jX8xDp-}SD)a>FNMGk|6RNs1kmye(-ssJ=0xzx5xrXmhi zs#4dxsDPG(SS0klieh^#?NduwG_ACc;WlzPF~amLi;whB->ai%2U?wj4dg1nqc$j6 z7A=eTkQC8vq9HX>rdI#C$*L6YmG9;=PkaLg>|8BfZ$qJ?)un)cvBJ!hX~uijk=3yY zIo-+rDfVMXjw)zRZ^=^&(FkGBYfyfaJ8dqyJ66XT)woj%5pQZqH?)X|Mo{mLT1c@=YDhALl~63HXBrm~CL zYh%6_TfVXfR8HnSj5ocUKZL{X`%BG7(|_$K^J%CzZ%f<3=Th*UXKgdDBr814T|7D8 zA8b&}Vn;6Ks?t4PkQ^6lFBPOCGuqJ%z)4|c5`zpmQi}%!?5>|0e&aiccg}~VpWuh6 zyY#o-#q>`>Sq+cJ2ky0AAtdF09D18oiM?7Z(ZIE_a< zNdt#itI*(x&eOvb=_g8HSl^gFHBuz zdYn3zFL2p!Cuu?Zc0zMl9|uWlX{O7@K%vnOWVkKRC?6CZK=u0OQt?#+cnVxAE_Wyv z7RdMh$E*jSr&o2eu|e5UEZC%@_=DEZoM73LC~3(7XHgRBfcledRv=Gld@R?^i#;wJ<2Fsm1n;4cMd(s z(mWo#F=S#ITHh+uT@4vr-;Pz zw=Wd#0dKTQe+p8Rfe;4sJ78c(?I~Fjt@J_DC>u%qOc3_z`+#Dbalixi96FOe8-akW zO722e>H7}Z?p&>CYbw(KZ%tznloN4z8VN$o;`D})r}~dG!L2E2`jSghbkBAFBby%hbLD9 z7G`Z3&{g-xp9-wWxXEbm{_0+U99ixxL)(&u`;|HVxoDbCC`7r$yGG@)%qj1XPt%HJ&T2+2Tr6`E zh~gAaVI6&k+}RSb%$dl@(_M{aPDCVi7?wH12IYBuvCL^9mQDBy%ba%jYPHyYYddpE zi51&%v5M(LTYvzUNm6bwFM!5*8K%2M3|O~1NZ(Ka0nELmsWwIcFe}mZ{C}JJlpbeI W!A{U%o%MI8ulhhssrtTk_ Date: Tue, 18 Oct 2022 19:04:48 +0300 Subject: [PATCH 05/59] Create README.md --- apps/rinkulainen/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 apps/rinkulainen/README.md diff --git a/apps/rinkulainen/README.md b/apps/rinkulainen/README.md new file mode 100644 index 000000000..fde01262c --- /dev/null +++ b/apps/rinkulainen/README.md @@ -0,0 +1,8 @@ +# Rinkulainen + +A Minimal & stylish watch face. + +![Default grayscale theme](screenshot1.png) + +![Colorful theme](screenshot1.png) +![Maze theme](screenshot2.png) From 4c93dd52c37ee1ca571391224f9afbda767252f5 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 18 Oct 2022 19:05:03 +0300 Subject: [PATCH 06/59] Update README.md --- apps/rinkulainen/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/rinkulainen/README.md b/apps/rinkulainen/README.md index fde01262c..50aee14cd 100644 --- a/apps/rinkulainen/README.md +++ b/apps/rinkulainen/README.md @@ -4,5 +4,5 @@ A Minimal & stylish watch face. ![Default grayscale theme](screenshot1.png) -![Colorful theme](screenshot1.png) -![Maze theme](screenshot2.png) +![Colorful theme](screenshot2.png) +![Maze theme](screenshot3.png) From 2ffde80c7a4d01a483368f13557d7f78d382abf4 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 18 Oct 2022 19:06:47 +0300 Subject: [PATCH 07/59] Update README.md --- apps/rinkulainen/README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/rinkulainen/README.md b/apps/rinkulainen/README.md index 50aee14cd..6c48447c4 100644 --- a/apps/rinkulainen/README.md +++ b/apps/rinkulainen/README.md @@ -1,8 +1,7 @@ # Rinkulainen -A Minimal & stylish watch face. +A Minimal & stylish watch face, with rings or disks for hours and minutes. Date underneath. With easy to mod source code for making your own themes. Some example themes included. -![Default grayscale theme](screenshot1.png) - -![Colorful theme](screenshot2.png) -![Maze theme](screenshot3.png) +![](screenshot1.png) Default grayscale theme +![](screenshot2.png) Colorful theme +![](screenshot3.png) Maze theme From 5d1f736b6106a7c43746326ee1d00e6f58efcb64 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 18 Oct 2022 19:07:20 +0300 Subject: [PATCH 08/59] Update README.md --- apps/rinkulainen/README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/rinkulainen/README.md b/apps/rinkulainen/README.md index 6c48447c4..b41fa3461 100644 --- a/apps/rinkulainen/README.md +++ b/apps/rinkulainen/README.md @@ -1,7 +1,14 @@ # Rinkulainen +By Jukio Kallio + A Minimal & stylish watch face, with rings or disks for hours and minutes. Date underneath. With easy to mod source code for making your own themes. Some example themes included. -![](screenshot1.png) Default grayscale theme -![](screenshot2.png) Colorful theme -![](screenshot3.png) Maze theme +![](screenshot1.png) +Default grayscale theme + +![](screenshot2.png) +Colorful theme + +![](screenshot3.png) +Maze theme From 13c739f186e72396f116773b6dbbc11db4611c55 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 10:32:45 +0300 Subject: [PATCH 09/59] Add files via upload --- apps/rinkulainen/app.png | Bin 0 -> 4656 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/rinkulainen/app.png diff --git a/apps/rinkulainen/app.png b/apps/rinkulainen/app.png new file mode 100644 index 0000000000000000000000000000000000000000..632cf17e033e1997ec76c7061c91ee76d125ea1c GIT binary patch literal 4656 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 Date: Wed, 19 Oct 2022 10:54:04 +0300 Subject: [PATCH 10/59] Changed default theme to the 'colorful' --- apps/rinkulainen/app.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/rinkulainen/app.js b/apps/rinkulainen/app.js index 6a13da68b..b487c9a0d 100644 --- a/apps/rinkulainen/app.js +++ b/apps/rinkulainen/app.js @@ -11,19 +11,19 @@ const watch = { color:"#000000", // change background color finland:true, // change if you want Finnish style date, or US style - // default theme "grayscale" - hour: { size:60, weight:20, color:"#999999", cursor:8 }, - minute: { size:40, weight:20, color:"#dddddd", cursor:8 }, + // default theme "colorful" + hour: { size:60, weight:8, color:"#00FFFF", cursor:10 }, + minute: { size:40, weight:16, color:"#FFFF00", cursor:6 }, second: { on: false, cursor:2 }, // if on, uses a lot more battery - date: { font:"6x8", size:1, y:15, color:"#ffffff" } + date: { font:"6x8", size:1, y:15, color:"#FFFF00" } }; // more themes -if (watch.theme == "colorful") { - watch.hour = { size:60, weight:8, color:"#00FFFF", cursor:10 }; - watch.minute = { size:40, weight:16, color:"#FFFF00", cursor:6 }; +if (watch.theme == "grayscale") { + watch.hour = { size:60, weight:20, color:"#999999", cursor:8 }; + watch.minute = { size:40, weight:20, color:"#dddddd", cursor:8 }; watch.second = { on: false, cursor:2 }; // if on, uses a lot more battery - watch.date = { font:"6x8", size:1, y:15, color:"#FFFF00" }; + watch.date = { font:"6x8", size:1, y:15, color:"#ffffff" }; } else if (watch.theme == "maze") { watch.hour = { size:50, weight:7, color:"#ffffff", cursor:6 }; watch.minute = { size:30, weight:7, color:"#ffffff", cursor:6 }; From 0ef345e2a73a695421693312d30ca63212bed79c Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 10:54:45 +0300 Subject: [PATCH 11/59] Changed order of the screenshots --- apps/rinkulainen/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/rinkulainen/README.md b/apps/rinkulainen/README.md index b41fa3461..4b32ada0a 100644 --- a/apps/rinkulainen/README.md +++ b/apps/rinkulainen/README.md @@ -4,11 +4,11 @@ By Jukio Kallio A Minimal & stylish watch face, with rings or disks for hours and minutes. Date underneath. With easy to mod source code for making your own themes. Some example themes included. -![](screenshot1.png) -Default grayscale theme - ![](screenshot2.png) -Colorful theme +Default Colorful theme + +![](screenshot1.png) +Grayscale theme ![](screenshot3.png) Maze theme From 9ab0242e46e32ae6904f4eef15d1caa9e25e903d Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 10:55:10 +0300 Subject: [PATCH 12/59] Changed order of the screenshots --- apps/rinkulainen/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/rinkulainen/metadata.json b/apps/rinkulainen/metadata.json index 1e7d16865..f0a51af87 100644 --- a/apps/rinkulainen/metadata.json +++ b/apps/rinkulainen/metadata.json @@ -4,7 +4,7 @@ "version":"0.01", "description": "A minimal watch face, with rings/disks for hours and minutes. Date underneath. With easy to mod source code for making your own themes. Some example themes included.", "icon": "app.png", - "screenshots": [{"url":"screenshot1.png"}, {"url":"screenshot2.png"}, {"url":"screenshot3.png"}], + "screenshots": [{"url":"screenshot2.png"}, {"url":"screenshot1.png"}, {"url":"screenshot3.png"}], "type": "clock", "tags": "clock", "supports" : ["BANGLEJS","BANGLEJS2"], From ca41ccf6de3acd927baa3860dc4951778d4236fd Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 13:37:42 +0300 Subject: [PATCH 13/59] Create app.js --- apps/henkinen/app.js | 125 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 apps/henkinen/app.js diff --git a/apps/henkinen/app.js b/apps/henkinen/app.js new file mode 100644 index 000000000..1207b5686 --- /dev/null +++ b/apps/henkinen/app.js @@ -0,0 +1,125 @@ +// Henkinen +// +// Bangle.js 2 breathing helper +// by Jukio Kallio +// www.jukiokallio.com + +// settings +const breath = { + theme: "default", + x:0, y:0, w:0, h:0, + size: 60, + + bgcolor: {r: 1, g: 0.6, b: 0.3}, + incolor: {r: 1, g: 0.8, b: 0.5}, + keepcolor: {r: 1, g: 0.8, b: 0.5}, + outcolor: {r: 1, g: 0.8, b: 0.5}, + + font: "Vector", fontsize: 14, + textcolor: {r: 1, g: 1, b: 1}, + texty: 16, + + in: 4000, + keep: 7000, + out: 8000 +}; + +// set some additional settings +breath.w = g.getWidth(); // size of the background +breath.h = g.getHeight(); +breath.x = breath.w * 0.5; // position of the circles +breath.y = breath.h * 0.45; +breath.texty = breath.y + breath.size + breath.texty; // text position + +var wait = 100; // wait time, normally a minute +var time = 0; // for time keeping + + +// timeout used to update every minute +var drawTimeout; + +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, wait - (Date.now() % wait)); +} + + +// main function +function draw() { + // make date object + var date = new Date(); + + // update current time + time += wait - (Date.now() % wait); + if (time > breath.in + breath.keep + breath.out) time = 0; // reset time + + // Reset the state of the graphics library + g.reset(); + + // Clear the area where we want to draw the time + g.setColor(breath.bgcolor.r, breath.bgcolor.g, breath.bgcolor.b); + g.fillRect(0, 0, breath.w, breath.h); + + // calculate circle size + var circle = 0; + if (time < breath.in) { + // breath in + circle = time / breath.in; + g.setColor(breath.incolor.r, breath.incolor.g, breath.incolor.b); + + } else if (time < breath.in + breath.keep) { + // keep breath + circle = 1; + g.setColor(breath.keepcolor.r, breath.keepcolor.g, breath.keepcolor.b); + + } else if (time < breath.in + breath.keep + breath.out) { + // breath out + circle = ((breath.in + breath.keep + breath.out) - time) / breath.out; + g.setColor(breath.outcolor.r, breath.outcolor.g, breath.outcolor.b); + + } + + // draw breath circle + g.fillCircle(breath.x, breath.y, breath.size * circle); + + // breath area + g.setColor(breath.textcolor.r, breath.textcolor.g, breath.textcolor.b); + g.drawCircle(breath.x, breath.y, breath.size); + + // draw text + g.setFontAlign(0,0).setFont(breath.font, breath.fontsize).setColor(breath.textcolor.r, breath.textcolor.g, breath.textcolor.b); + + if (time < breath.in) { + // breath in + g.drawString("Breath in", breath.x, breath.texty); + + } else if (time < breath.in + breath.keep) { + // keep breath + g.drawString("Keep it in", breath.x, breath.texty); + + } else if (time < breath.in + breath.keep + breath.out) { + // breath out + g.drawString("Breath out", breath.x, breath.texty); + + } + + // queue draw + queueDraw(); +} + + +// Clear the screen once, at startup +g.clear(); +// draw immediately at first +draw(); + + +// keep LCD on +Bangle.setLCDPower(1); + +// Show launcher when middle button pressed +Bangle.setUI("clock"); From 52532b41c59a0115d7ee352af0a739281af8ce2c Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 13:41:11 +0300 Subject: [PATCH 14/59] Create metadata.json --- apps/henkinen/metadata.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 apps/henkinen/metadata.json diff --git a/apps/henkinen/metadata.json b/apps/henkinen/metadata.json new file mode 100644 index 000000000..f6559be72 --- /dev/null +++ b/apps/henkinen/metadata.json @@ -0,0 +1,15 @@ +{ "id": "henkinen", + "name": "Henkinen - Tiny Breathing Helper", + "shortName":"Henkinen", + "version":"0.01", + "description": "A tiny app helping you to breath and relax.", + "icon": "app.png", + "screenshots": [{"url":"screenshot1.png"}], + "type": "outdoors", + "supports" : ["BANGLEJS","BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"henkinen.app.js","url":"app.js"}, + {"name":"henkinen.img","url":"app-icon.js","evaluate":true} + ] +} From d3a7e4fa334c7070a1c4ecad797d47aa0efb73d2 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 13:42:23 +0300 Subject: [PATCH 15/59] Create README.md --- apps/henkinen/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 apps/henkinen/README.md diff --git a/apps/henkinen/README.md b/apps/henkinen/README.md new file mode 100644 index 000000000..e17e86121 --- /dev/null +++ b/apps/henkinen/README.md @@ -0,0 +1,7 @@ +# Henkinen + +By Jukio Kallio + +A tiny app helping you to breath and relax. + +![](screenshot1.png) From efe67c3a3c537dca3192e664c7d7be4b53af6996 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 13:43:31 +0300 Subject: [PATCH 16/59] Added screenshot --- apps/henkinen/screenshot1.png | Bin 0 -> 23611 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/henkinen/screenshot1.png diff --git a/apps/henkinen/screenshot1.png b/apps/henkinen/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6655f6ab41b1c605107503efb672c81a9c33fd GIT binary patch literal 23611 zcmbrlby!qg+c!)K3^53UAdIvys0c_69YYGpASj@8m$Z`7EeHrIog#>oBGTPm3KG&K zAwxHOYq+laxu5U-j`y!`IOf=!wbovHo&7t{wI&?>K#?3m55d8~Ay-zCdx(RB2g81e zuYeX=&$2}v95PdD6bh}3LNTMA9W1Qv%yDp(!r#6p(uq^1_B*)!iT#^2!H1wJxmbGX z`^4Ma-D}P8jbSb}hAzt)5>!3wMprk@t=j0?S z9=;yu9%*O$z3c1iJ!bV^aaLS0=3n)+X#K>k{l)K!CkV3Kd@JusMk!4|W`vKflV+K3 zX;Z*O1fESV_CB{FUyOLwH7eD9@p*+*9)gRbM880mDH}snc^#)lhdGWGN1DvvbIqFY z9?dHjh7M!D7|TycmEP`0DVa;p@P$a6^g5z&VywOE#7S{B9_LxoK)z-$Z79a*=g5Y` zaBkpt;NtNa5{uw&ht<@4x|K#WhCANPycyKfci3e)GJR@EcC@@x8lsar>KB7zhv?q* zZM)D-y5RPx>}nKTH_8rQyy}#HYE161q#C8gNA6rMz$U8j$hKpXUH18JTp?os`F+n=2H z0#mq_odsOh4!8ZEKiV(sN|AfrcA@qqOnBwuc`TCU`aK$)$R`Nph>!yEG3i)prcd7+ z3nE%3S7aC}?>(TYCpY`9M9)~TADv^~)jTJ#|5d!zs7@zbr|H#*qq#qlMOL55?!BKB zW&PC!&)E1lI#-_X(1hjYvEs zg@{$=?r9-B;pUAe+$7=w^qo?VX&ZE0j5VXqG~4}?5K#&uEAMmot(3`bhETGF8Ote7 z5(wk2qrf9sQD;qwjWv%Ks0gjs(G^BE$=9tolDc2d!n zATiv`CR-l@V%c=;i|p-j@}{^}+kf0%YN*CDPCLo!cDT}z3%gZXw{kdw1NS7uneU}d z-BWS*YOp+uRl&=tK^HbZqQUuh8QqD#QHox$OE#y4ny68NKeueJCQ#Ncr>i@uum zc^7DHbS(jTU;4TZ#pA%|M%2F`F9IZtq^xj48=V{>DMarZ1RWXvra!=t?fMC4KxHVY zWEJVc_)PqNvG#>AG%4W4pxGhesE0AG?4+@*_sy}?My84Iz@gw z_G!n<52PO9-qL*WA@ms*c{fBM=GkxoDm7`&OkFFRJhf9)UX(_Z$o1~3>)J!t4cE#l@82R-kE%jl9ai>N`F0i7T2~hTa1T!8xINzd zB&j_8KuXInuU^{s^Et^`C|RU&@60`d$W6KlI?n5c{daer-zDA6Q}pD*kb6|u-_mag zR$1&eCYZx*QcP=_DjE-qNbKj#?oF8`bt=Tgar|y34>=*HCF8kK=X>bzG4E5Hb;=*r z;lhu!s$RW4y-mGl7Ph?)5}qgX_XhTq_G%|G32uHh(jm}My7O2UUV0d4-Z59=toyd$ z@#E;6Pv${6L(Z?vlg-oL);`L5^yR0)=jstH+wadm?%i6uw#LXnn(QQ0YG?Dzr!?o+ z*JrKYZSB-2>dH#XRlYy98Z|ojG1ZY~X=r9>>)Y=CmvSX$6TRX1Gj^rpMUT_ujC&`^ z^KDluu}32Mt_rEODL4BVQYI8B6%Hd~Ugt47H3u&>IdQpudR{5@M&zE2*;YqLY`@}I zz{GMB98Kt$M!mLC*?LkItW-is9+t{=rSg7scboKl1bjHUceS#B(9+@1++bf~PG9GhICyu&X3LEr$9_!W zZ12^eu#PaAtHSOU;<&{jqx>UY>+4?%W50DAc07-TW~F2;XsFE(IGMH=!reH>g`Uv= zro=aK=euqCw{5(Asr~$38dCCw_s_$2r|fx)*3{RQE$ZRZG#4B!NMqfm4Y^P`a}$*} z4<0^ws5UgQ5VNqo@R}r>qbJQ#vXx!_%}~Pq`)c=pr;Us8xz4SIr&_03-?Sd(98*t{ z{IhNr*I5}CtvZ<4lUAitq|%{w!cf=BRet$5`6<(QLJ~@-T(! zX!6}uALEeW$X5O|STM~Qk~*C$VeDSF^T?_0fu)OuLt|Flv| z$Fr!XtRQQBo~rSUi&W%!=62|LPNK@hI}h%Oij)eys?+0$1{$&My{=bXOhxeWuRb)k zkN)J3e$FkBd^)S~#hUzil(U+mxt96-ljO4QQ6D`{1GmCk6*ilm!+Wnr>why(I(nE6 zv{k8DBzFnD{B>u{+ePK@-LXyeYD8g6VenHX2bJ*`$BO&Wf)i@r-#@$fhN{XowVdo5 zq2EkO(*Icf?q^n6*Lcxy>uR12lCfc(<%i|wJT4Ank|pYuo6+e*zEyQn&c5Ba`~Fqw z&wLGhW1LF9F@8$dm>y=fU$IiPwv!UrN2|mc4mTPqoPV7!S)9#h3sHP`BZpDn@!N&Y z;Fl>2U6+Hcf_doEkKZOG`DR;wj%*b^<787$6QOyr+G5@J$JFw)A1=A(wLc)TUm3Dv zu)N0OZh$=eyj)B)Q8T{E<7sGDv*7aS(@WKp!EXQe(S{_I&a1aJSC4E5N5_jf4eCAE zHWb>`W_xqXogHcq3o+$&6FYw?|He=KtbOX#ziY6!`MQ2{1G9>BmRdLuCfb79OTomw z_m#F*OqT=NciU;y@1*?@f9~a3al2q`h>7}Q#hb%xWK@4UcPf1?T}=Gqs5qnk?yl;} zA8!`l!3*ck+w&f}rYDBn+BRR*S=LLPu^ctW)mbwsGu@UF@v%9E zA00gaY^#stS%!K;j7l;S6LD%Lad9LFeZ=$v+JnMZ`KSGuS6xS0?POEx zY9Q-~FxOGGP*cOX1@4J)2yp3f2*DjL_)6k3{Leke0C4ax+wpL4LalKK{vGoGT(O@R z@Wnp!&lUeo2o4eWj|zO;JyV-sNAi0D(N%9v;5C zygdIiH+WPW+bW8-b~m@vk+XgVcn01fDae0M{Br#Nr{}+K{O8F>F6PcChiBkHSIPe} z{ojZGcjy24;N>fI|F5t7Up@amDb9nX{C{!cA2wgM0zOMZ#CiTlW|ENcz6o+5M!2<{ zx)!(sCBuGjv57L`pDXtMrbOY2)djecD9g!cx#O;hQirE5C(?AD&d6FV=XMq9Vveu@gj*ZJUlvFH1zp65IehkzLemslDHkBRb- zmb{f{_wX~N-#?ASxb%>qe>y4s8rlhLP+OZ)=lPr`XZ07^b>|1^7e7WLZ$pp`{xxXw z23(3m7N5htiD^9l5LRPm7A0axwha!2V*_-nIa^X1)tE}#nUvi$dj^9;C-3P;IF_-+Xy96oKU?SqIn8d1!DpoF!meP5%I+f@jDJ?4--~PE5gR{Zv5Rdd9+W!P zzI@fJlhlVyr5?&Yr&&8+e0#@iO#YP_9HLXq+GimcIa%6v%zBBfT*39Fxy~tSTz|#^ z{PPTYKYaKLFN76>S1A(LG()3_2!rcAlLs9@W7M90UCMKGmm&-eKs7dk_BH(K5ZNs= zrS&JYl)d^4X-kwG1vIv=u~Y_PsY3YZ9H0?Y4KQ8?5-LK845FVn@EJd*xzJ*7zYtdI zAUPHdgPUCn#Hkt7u36X@GaeZ~LnIk)$A{*%7G3>fk?@MdOPzqgQyTiuguga2Gcp^P z`L0CzE06%@VEiwcCj9LG!nCdUP(Q1`S%~ zk%i}q6Ue!YhUAI|k=W)Yu{rwv%lZhW5eZlX0WV>XLV%nMbVWuGhX^?ndN_NVDI-&f zo<&0`UOW8jRas83H0+{76@7FVB9`8ZFS6Ktxs;_z)Bi77f{B=us)fKsRY&Y6+#er~ zxfC1vwB&Cln%$4fNQjCZ0wj`;i)_G^YJnOa;gHJ@5r@lW)!dJdq7;?kT#>^rT70{C z94%14zy;NKrO#&4%S%hWpGHi)>&N)dge4Ow8I-?_2^k%J6cu3D48Gz^zmNcj@i&5s z!ObUJNURBfb{(c)g0Kiq)EpNScW|<7mJ4d!H2!Ic7-*8zB?sn0pF@LLaaD0kW0^I8 zME=Ljx`?b0ZxobZREv+Y?1BbJz|ydbo{eQ13CTLTsqPW>WS#!1ZAfK8$$^}72GQ=n z6aHodRW~v!(*`=Lc%b|^OvqKB72d<|3Pf(fr_>uWfiyvT!*N4VCR+SDmAVIU*isQW zxKNKg5LCok*rnKDQUzWJ7>N-iA&MY8fN|i`Ca{*S4JD6vH*H@-LJu^7^26Yuy+pFa76DTa zY0+fF%c`_()?{o7D%0$}3N*?0Qf#fzHAaX$UILy4n@kpv$fY~NpiVJwfdgWXib1e< zeU=*|&ZGuQ!!Ej+O{#!gen%y3o3iYeAnOR33!m|3xSuq1<=+XbC13(DI`%d{z5&E6 zKCnQ?A3!S(KXU83Xd!FTfg{VD0gUw9^VdgZy5D056J5HpZQ#mMZC*$A$XL=HC{0KkT!$=!udLsG=m@pX`{;PKtPg}%) z+X&1v)~=c8nL>z=k*nH(hjLwjhdP%$d|(3XA?&UvZ@10;6WZvDlk`2F7m1ccz6jfr z=X3Rkcubm(8gqT(%VFA`hG1TGdLkM@xc!neDiil`MhTUPLHuy680xpil5;(Di_A=1 z07f4PeJudP|5MqVdgs)p=kPB*B)M7bA$^>wI8j`#5%8t%MMTM(n>8WJE@_HKHO-TC z%PU777nNH9mfmU4I|ExD;$_>v7_(4pvX0Dh92l$fjda%6SUQqC(y5AQO7|$ry$#ml z5>%gtDZl;qhFi|@`IiIl$6^;J3wx=bw`M)VPsR*0fU^vHRmP(+{x^ zKxlX1{029ptq>2r6@%v= z(lYvLUUJUGu(;jdY3|&Hn)82r8tmroVVKX-NdJ7^JVP+)ar)B>#kr@z=kkE)f-qYs zo30+|`gp8Y8u_SaYdL*EUZ|T{eOfPHeK%134Xq7j{Ta9K5SpD#fFeJ95s9W`$8@)z z74WF85Si8+0LfI$JZEcEcYk z>TRj%PLK+0hg*^O$2;eqozY0ei;;8Ue#3c^a>M!W+B3zeMCXnSWw@Wn<=KWxN9aVN z5$S?9f_{JDJ@=w~OeD8`Mdd;R3lrZ9E-U2zA@bG*JrTlL&1^&DBmA=G~Ir_epBh$WCzePE$ zBJ)}yOq>v&MdZPQu3i(p39f7}+6c$;Y;`9V!rtf8Q#dlKKf=aqbu5rMUL|pl<5?bM z55b2ctgx=!SOME!mBv@{w8~lE<_Yj(gnHQEv%8B8K1@yYpYn=MlB80mm-I$feo)j! zuRPW*SrTU24J0{0-x4BSb?}wXUAK^a zSx9P}2F7PDgK{Dd%>pd;R@rLbxM#W_rF5Ov%&l1WSse4-d;y|u6b&Fzo{*wODB zGs2ZSl}Wo;@u0Edk=sWB8=UUIog9ij`b^S@O93;(!Ys$o%h2pNq9q?yV7>f7Tm?FH zZ%lW2S$t)`-&gC~AEoo9)0>+eulhW`VBte%XFEsQYdEh^WMS!-*m~&p`x>@Q(d8TD z@|F#B3~g<~*jce2QwB9yIkiC#d0WGnTuqZkcU?QS$+*4Irn62#`+l}C(TNnn?eM$l zcIRVjvF%4>q7PHZyG#p_kHHsE>1Lb1&{HO0aviN}4^mOLufbyu0S?h)lRO8Sr=gE3Zc zf}#^C+b7KRo+o5S6MVk31D1p8&k!)nkmGj4Jw@SgJ`v+@_tI~@Vd6{V^ogqP9?7Pk#J{^*A+dZVoo63yM`a8R z=I9cGcRfiwB^NS;TzSvXEz!jZ2_+nTkF@QC$!qdS%Q7h&7f>$ctP$6F)x!;mkjSqRQS)3mr)PyMKK2tPJR8@*!jgPyHRFY zXbosgw(5*DisimEaX+<*155vOJ-s^Q`QwfcQ9o@w_lszm8V=TJdlf}LsWA5P=&HaL zD{SXUF!Kl8ZoOcruRQCJzyg5 zn4FBvEP5i%-f$SW3YYM{h%O9Lk~E5dmhzCF70o@eAv z&)QFUL>VN;r2gqyl<>Kq<$@|ICp~TU>qHWvz@7X-f%i1P#-?mH}3PmZkYEP ze#|s)k)QpX-}EgXWXm$Z;3i=)^Q0ctcsu|z(HkNoI~#|&=jnNnEwk9pV552B7s-DH z-8Ga1>m2Fgnl&VLe4^OkZS!b`2o5A^F`7zj2nAQ?$FQ zb&K6**KVog3Bb61zW3^C=0DV>ZUSS{X+;n9nk~y}lJ`7m>+aG=(40$=rZv>c&elpD zSGd(i8fx;+o~F3$o^CH~w*CgzmmlW`2XJ0bSyG^zDGfpAYfpu#Oo4h4IO9$4e#1NM zUyO#{RtHN4H2~*Z9ZUqg4{*v8sd%Dj3CSrIli$P;PwB*t=3D;1i26j!Lk|I@EX~aP zNpXte`43IFqmCavA@g_6r@nUUF4wP#Pd(?mOVO;!VDoL*x#IR_-?1K#dcUaDvIbK{ z462e}2^Bk_eiGka5Wc2QJ1+p!KA(WQ{n==e9b9~s)XshUoLk%%(3rNJAm{{ua7su( zh^)Xs&Q;`RBTo;{kt31lc(amATW_*!>DIKk{mQ z4Y6aHMqj1~w?a@QD;f!z4YmuepO_x5Jt^=TkTxf$cEi0Y>3i@_p!K-_~jCnsWr*XFND zPS>-I)&-$pwR*d#BHD2xvi^DWoQ0Ehg}$Wv_XIX(_q-qPI(i0L*658jyGj-9omtB3svjV2`|m1f7CFzgYnsmqk!LM189~q)T7IEq-DG4m6IS2 zs1(HYe!2na$T6%DKU1tP3SUx3UESh})}`*Qz6+diI_%+Y_HnpDMGaB`+gopokn=bi zxZ~^IXm;vcTF&>iIJ@PQ1fGZu=dpeg@4Xr`G)!fqgTfCeq zA*$VK)YjC@Fj`36K@!#gFAHpg3Rk=YDC2l*+x45%+VlNAs~s~*LqmWvGBtvX;yUXn z_1GV&$^X~1AkVz(nN^mmA`E>#v-Fam#6$m1T=nSFWcZr%khDp%15Xz~4mcJIbLL1UK@GcN44f35l&l6{S_6E zrK*rhd+o798`zoRK_X%&-6}1|>0_pnvee{9)qeLZ;(=tT`G?BZ2!du>_?1P<-yk}=lp%8z&p9O=pDQ|FKpr-FSD&^zY-K$XCL?ZLRyi zBJ=)2LuEvE_sdKBHjg^7KzUW$!4Z^6iFGTcD$w*0!9o=g_wc?74g`FLcYEmvqHc9j zBmPKTK%E`}Y8{%JLsp<08SJ_s8zK29T?3LzTYSkgV5jl%(B9t=9;-+mL-?=TvD6_F zcn~}aO_z+jR_?PiE_q&vUG8&+@@X6@$rrzqLuB^=vX6JLk~JA>gIu&<6kbRT0r3uX zu<<6l()p%I!yYc;6CnrCc~=Z*Qa1Dt^S>s=qCoEQD%t8;Za1Spg||40-t+v9S2({> zmQ9RfLJEp#TC96o_ISBLJi09hlbfl;$lFxEsDa1&&dffMk$gR8GdDBFQA3H7=fjHL zb4f>BvOnqgJK|3iAt3C;-x7dTGQ(+*3ZE57iI4@D-7XE^3d~tfMmS}*H%oO)|KOF` zl@rp7akQ24plRu;zwQfumF~&9*G=iQ_#!rK4fjntFV!_607YlmWqq_0jo676R|mOE zRW;tBCT4NDddX$i#TwzT;@ND`0WH(n(X#%I?jIMB6zJ{B*@`KS2HbsFU!DRBuEz?w`&YrI zcNC$@NV$U?#10hM|Mdr$)cNeYTB5;h6f45vJaQOaP@?Q4n5y{C2(Y}X=iJc#m@MKh zpz2t>l;ywF=dfE7_E$w?iOCV`gMXw$HE%XHDBC4YjAn0H7R$Y+@FIW_fJ*no^v|y$ zJD){M_gk%YQk*1#kIG8NraufDRd-xYJS#jNN(+cP`UL_MI({p3_OvVMlZV8(xMd2+ zRH!EP{RN*m7)%K=ZMyLF!5Qfxgt$aV0IGMQs@oX&1*Ikh)89&#gEFT)kzRAsvpjP63dO}#mI%G2)MjS8HQ-3foJ6=MWKuPQ0|Ylb1@Bp_F-l2F=h(=`DuqwY%e zHxhDb+nXw1FnbC-ZSJzZ` zFZ3?(X{*}$Ymo|x7Y#cfGAp*H55w-70X>!yesb8*E=kV!neob9R{_}Z&5YRr76U+z zl#uTsMA^~U`RVul=PueSO-JtO-ARr>XK!BWY-8Hhe#^h~=^~wvi9Uk;J-@Vl{!SlTgtsGR%6Ak=E>A&) zHBZ11SQgm8Q47|_f(h6c3fnuiqmChxz%cpfEgjM#O>f-^jJQId&d!szED!T#c$S8{ zTsnaoWWV1)nw2>~vCT$7x8M>O1ogHmki%E2#cZ2=6Qwdw%XacI1)g4fF|*A`#GRxa z85}Qr?89=?P{42sA;L_5N4%Rb=0na?Np{98DqU~TbB&!lR5~d|*>BQU3 zgmT$m>O_8QVg&q)t6yl{sX=y2^@~Q+7MJ$bV?4l)VUnCKo$7lvS&g9e-ngyhHWH@8 z0mlu7qQTX$_qo}<{4?HGi1lIeT6{YBjw$i$xke9p4+!IG+|y`lU+%3O)wls&iuNFa?QeVKOOc%)q?H#@|EZ}Jb*8~L%E5Dk7rtNE?{x2mzND<9| zQpfiE0fj$=O9xc`v45eZ-Wh?#X?wwU{^^%Nv0SOTVeq?ed}?PzIIff|e8;XM{1w^{ z)kdiZ#f4<>MmZCS;Pj89VPEWh9}2{`*#M!&mNw8u9;k(E^{fU8zStEipL)EbUUabb zDui`WKsI6G7ecS){S{u@nWih0hL4tRgBqO@pCQ*wa!c)64kjNLtG>*-_)G%KY5lxK zc9shOEG^AlG59QEtNCDa$35i7iHnq|l-D)(;W3r05F#R^!1LKWDKb4p*<%-+GyzyA zzk3({{AmX=nx1=;wsEjTHO&nyR<2<^@py%FtYLKGr0Ra40xA|JkK(KRqS0`(0p{rH zV?8hK=+8}vhJni5IYy=i0_d{J|FiXQ(0HG|2Nzl5#%$@&m+%I$&Co_e31Us#6l685 z%j_nwHm;@Hgx+x=0~UbU-~fjjWj4~l5Eb~I=U)=A3Avc5k#Hwt?cIJlI&FNQ{#F8C zuS{79ygr6*YJZOv`2jRG3_9}A)8RbK*{9zi|L2eEM;VK!*lk3 zCFdNkme?2>p@70u@Ru(~3C{om5gqF!^v9%zSRN>AfQ_S_fi_kAn|L|?kaxMDpE4(N z;PjZ;VDU95qG{!Ow&;y6G%)(75VjfJ&+52@3V!%r2swO#$|OiI*3x9~bFwlrL442x zfK7d5k(fza0kWmDB(whX0vxwKjF<(mm?q{DS{kL&+ zUhqn+*^@YYFCyn_bb(yqto6ovxS&kyuwIz)I#2cS99A544;zHTy+&0~nV0KVvLLS+ zM7kf%9g)pi)^gAer#;p&oZAbcFCRF|kY_>B|3iEjv7$0+n#7po;=e}{fYdqdk z9MzvLXxwS#rbZ`;G1mNOmGOzz0EEf^=p>f}*vAwPP)m%!rEo-gyKNTYtuqm0BC!EOZ?eJGP(!HKJw#yllvZcN+O=;lqV(;= z+X*Npade$0dh@@E_;o$57hw=c`LG10^N9nd!<`TIH5JJ%{O}N0g}eg9r7ZPa8t2ig zpsGD5hw^vwF-s9JVP&SL+|KJ{qlfgq@)vO@ZyMYJ8;F8r6M? zmy5lO`#7P(`;XCzS{%2X^4t)+L!B;*o>9j-moq?}(aUv}^g6p%19s^^0owhu5z*AB% zyppm;V`;h>NG}e5u*BnjZRe-2t0=8gV0P`Odxtogi?M}*O(WWa#wT5az3|eyY5otH#qY~pJ9nK=>`yW~Ne>&A zqw9kjUr2LCG%fy@G`qF|7BmZ?N+T@Pm7GcvlZg#HKdsy_KTGRkf_E=X(+bhT{2f17 zO9S|32O3p+)vFQ7Jiw#q`Hh)*KW_dy?r}fxF$1KGQsRy3vU7>u#@ZmV)QwrO{eP*a zyQxE~!Mi`bAS82Zys0dnjrH9En;$yphlTe17r+&*s|D$wf!77PnE~soMcF zKXYVEaB3P9rvj)IFgvdL~Eg8^{3Mpoh=t< z?S@CEZsWo7f<(m#hNxWO2jhZ&K?q>_E{EUhJ-gU?=UiwU$qDb*zQfCfkoDA}B`(8F zmzb^D8txh3v*K%t&pH5uZgtYG{ zh&+_$B1Q@NQ_KojYYGk6v! z)T9n`YJ3d<%M|L@mgS*YlpR4(Ihjljw}?PXvTvH`5-v>v^dY;)mN<_>vSN*Ulu#c@ zJ4&XpT>J+!HxbXQm9KpY#ve-f{y2P*cf1AsXuxVd#ZkOEK=ubERBINJMMKm*l2*Q2 z|43?`D{Ro1TOSL1IfZh+Z|6Kd)7dOrEw?rU2 z8D7oJZkebg@w@NdxqrK|jB)+%0Wowb=@^65hU%RcCNfal)y#6=@2k_pmY>gQ|5|FJ zl{i{ZTi=^V@iw{>h`er_n3Uv7W688|AlwP=!lm%;M#cM4rg0Jw25*C-PD7l0EHcJ7 z=`iZOq)0S6hLUJXfG;-R7(4-kY2epnQc@Pz?Um?%dzcCMEZg9FF*E+&Qb}JZ@VjRb zzI^+A<)aKDmr;i!LM>0Tyv(6bAl+xbx;iBMx zSEGH~4R<_M>QsWBI~sdwM%rsq*n#(5IEN_0-!!P-bmXAqpcM1R=6HJpjhs)_Iy5iy z;R^P?%8VGYa3X^>pj&b>30;yTiaw}nya0T7Pg=mw{qdQ&TfRu3CYKbp*j(w{$!7$| zSlF1DG5yQul~hbqXaep67)I^5tiQV@D+Htf@I)i+VdcVf$J(XA8zKt#wwdRBH;p^oL1A(iJ{~4T< zv2v}rMT8dSoa>$e(Wa~w(OKHBIe2M%V)#rgVL8f1;7SS^>XOz#VB2w1ql$Zf&sSa= z9xp#-e9zJHVC##qfbqS?wgz5*Y{Jm!t@Z+0AMxjSCwj2WqkRh#!kYItzu_F_eSDO^ z<$jQp5f*FA`iK&{KMfGT%STDzM^SeX5uIj!WyNE{pWyWMirAcBm;bVsmay2TU+}4b)~A2X_A)LFM{SLX<%I#o79poeFy&xdhweQV*>#+N`-Sd;g=0Egim46O0YPIh#rdQv1$%Qcak)T9#Ic|ih zsA>v~tG5xq{abi56Q_piaKYB5dorz`RT>gOC&+=VH9mDoXnS9fn6#tYCbfffkU$cON2tm+^9U5%3Eb2?;_)_!?&##wpp2J`hErQZUn$j(z z9w-*N1f@i!&;%uq`RpU4pL$)=z{l-=e-F=;+I<1v#Q@ntm1uT8_-oar^~^9`Q%FO+ z&Njn1NFD4O{XJxwi9v;!P~PaD3h~w<8jTPJXF`HyhjwtsA6+=k*k)%D1Yrzhd1LRz z7V*Yr?Hruq8tO+s^+9P6TqxLzO(pdYY)mC>+;Q4!Q?Ew$#4dhdWtzQG&Nw}eaTToY z@40u*5XJwpBqM|Pv0&53o~(vS+bpksc`@oGPEOU`eLaU#RaXNz5L;B6vJ79-MRzmx zkM;1msPz411q!CaNVJYeoxqdo_dFo*_+JK|1^1cfp93l)0;7Vlf+;&N?-fyqau5b; zs@j?4e$#{PtokYTx^tQ;|Sg zO=y50!vCsJ&zR1y9o-;hnXB1ta-i73OA~61ElZ1}o1ePDErC9VJ~isi{Y4-$zSCDH zv=Wv6;!Ew-h!NK5a8jo)Ucw4HCdpE#gWsGC# z2_6EW1qImQc!7hRgR21JayohJ5yc2%%?lg9XAkF(mr2^?^1T7ZfIxmWR8#-hFW-7< zj>HeuL&E|kN-UZH0ysKCl6!pi6!3Jl% zNa2CL_85$Rbm?GaH$&~z(NyMzfKxcy;==Ezf3)!IfxWs@Ct>gdF3)vVgP!egy5n?X zJGyhNX#sSCra@d+7lpswW=47kH4D^T9bQ^y0?s7I=^>inZ66gTo#d@gn#HLqjQ$?j zhAKDYdRbp|>s#(tl*7Z;u{-mI)+xY;W|b1uba3o63(Q-x{>;N3q5*|owv+J4pES9p zhg0|GdkE#X285qX{HcAhJ9u7eo;^0dC_%dss#e}%Skc(~x3%K4RL{AdFum`Ss+&7bbGh%|Ek6=e#E_zpYMTu+)pQuq;ZeoA7@0(>>ouQd2I2 z=TiiD!WCn(>-jbI&kfc40cv3CeNPR4K^VMC2d$9=ZuO8X^s`Wo({uu6{STT_c+oHV zWn25q>E7G-;#p-KOnx$cib5)7LnPE*J$1|7Gj_a6MgF8FhWN&t9F`wsruKqmOmii@ewahc2RjPJ5 z$^4Ww+65d>4Pbrz#cl*f$;3@2!IqgCzS|=g;iDymHQ*YH>laP)A2JfYIARFIyja03 zsR022vZSZ{aPeun!r$EogKeGeFM?N#GGcDeT`F^xFh#oX6{TSfa ztVuDvTrJ4sB6;FcC~#gA+SC%Q7IC%hj%>-7(&f^~X$DRJpE$7a2@Ex0>>aYN?M~~z z=hN0XsvuupO4`VgE|Gp-nIJ8Y0&+nAi-Y#vBm3U&l>T$Q+fh>WnFz)tLDtyPlfnr9 zqYq_wJaG80zI2Thm*#m(OrONhL)y<^AsVTzE58D<#FCcD{bCa#1aBml8WEg?SI z97O#jDQuz9!Z%x#u46L-eaUu~6gX)btcvn1$oKd|&Q0O6-E`9VUwyz2|z7(=ZreWbkM}jbIknM6KZR*!&vMRFl5- z$^ntp@9@7#^`%myP4nt1MIKN>!r-KV_~1ZJGlzh^qV$~KUU$d25PhfAKTB6E--++F z{c+ka%GKZTGy<06cI@lnE?aFo=L!5fA$ZivXa%ZZkmf0=aNs?MdvZ49+sijL^fmoUN+0mL`|N>xSD;<|#rw z0GJHYVfp1jP#yK-6)kmf+f|AK?9q!Cmq#yRNF!L01-i-~LQdYZJ#B4$`qBF5h1HpR zze@EgoMP0Oj@$4F@VAdXpZ~E;@Q6@LylvODOJ!dscaZje-?A(WrRb*$x2>*&tS z@!X&I*yV@0g$rw@eHnZJ;!?TnU(s04qvxZ``iGUkE|DtYu((K0$T;8p)t*B?iZM+} z>SPCBL|7workws7vZtSAGc)WRn=j?BBm8O!T&EvEi5gg522fGKU;((k12ujqF~Bqb zn*lbQd4;)y?hnyc-m^gU2DgK^@*d2f`&npVgf&1;Rdx^P6LJqapOH`yy;F&(nelW= zm^hcZ=h^ON#ANk$Q{|)+Z)?x>&D;Z-t9Q1)8$u&j4-C2C!CJBWDGR zhjgL>fBH!nz7F)zoWIV#p}|srcKi-98Pw{0v|Z>oXD3J@zB#JxgED@LLznY~p6D~K zR~?*)LxEfhJ~daOSEp0Ty9^FFd2k`*&WRf<8UlxZ9%7z_A@Cp&LXA%2N^g&u>raPm z;O+*RXc+dK)AmT%W7`9RKgDgC?gm1-T|XM9AgMBAJ%w;PT!RJDov@{DJou1z?0azp zLO?_*%!;aS{BXz{f%w5ZThb#pyXci9O%UV}IIpi>eY~nK!Y%`e?q#}Qn#%Z zelw+qQ+PbvIYrozZRhf&+A>Ci!;#kuQJ{(wC~b#p4u%gZe~_8YV7BkVO`Ry1PH$FB zYye>OpWImYGrjwbJsFgiv1ElzQbc^%J65Q(l@Y{M~Y0NVhBD z(7e9Rg9z`1=CrQ z#%|JWefHDEtxWwR_SA&{Rw1xY!7glZ=L_9fWTC~n$gu`JBhkK|TvQ zPT3j6e2RygB!-t~rzIqb8@EfQN#zU_wllH+Va7zTq8FRS9dCAbOeLGCpuZAdQY8ma!Euimu`Ll9E_j zQISUf(??LdR+loLH$KiXnMgLRb3^bO3wPW3#OoVPT|Nx0Hl1nBn%28ZyeEuNQ{F4n z7K`U_$@I=)F=vo&j#ru*mB&}CRtnrWX#d<+Iu0@kEw9h5wfi0i*CE0ujd|}lN0ZeO zAM5$CeCcC<_w$W}qIUWq4PmP#vcJeOIeFiEf7#@8^ba;j1vr{;+n1HGr3ptIbd=N8 zEVAr!P$q9w`f-XslYHa0(zu!#C)2>RGsW{vOlz>zcI` zHvlzoP3@o%fk<*wwoN&Frahv6Izatm!!Wva0-_%I?Xwa%5K>2TlfFS1)6ef!JkWo7 z+zC!4Xe{|=Y>-fLIJNxx&o5hix`+S|N0g9Me>F+|pH{9soXxC#tDTO-lGf7L*S6ED zPF1u>?b|52U{FiiQVd}RMTimY#M-oUuf{sl1)+nYMC`Pq=t49qVi_?db`nDTPIP|X z_sz7|cYW7fbLG#R_r1=0p0hmn{ha%*zGj1-lp;S8WrXWPYV-8ICPlx2Qq%Vg{G^&) z=mrgVXNO6#<+V9Q_QkT;g&4))#nHy)Al9?adviiql2rg<_RBHnBSm@Q&kCh`$Llfx zY7}N1=`P@cT! zorcL20u1(I^sz*A6<0@j0ypZFhV;3mSfOv_P^WfQ%H_tJ;(h zK2M^sdj=$b$(kbP93|Qd+ZoCuh36RMI${f`mo+_CXTg8>z7h_0%IJ9C+PzY&^?G9L!HJAf>w zFXV=oaIZQL8Gsx88BIwz!Lx4K&D$VJ0_`OS`83nOX(2;EHVIZJ`RziH%H);a^V}{> zih%|q=`REz>``!hqOwfNi?gdVcL>5oNBwRxBTvnDl47UFwSESC+VT=J{XFk!ulJrc4m5*V8g~U#5*8&fdXto!(skDqkti2?1T`kci0H zd!?dd3ctQUs6fh(=@MT1C`hK|iO7!9C9d7)f(Dd}?`_j(p{u{C+V0XFQ`bL{RDSK@ zD*$G-%RL*t6E~`NJykGSE7Ng(O6gg4kb%rb^iryj&5NeQ@LdEi0Oc5S`=F_BJ44D# z4BF4Fjp>_8bbN@pbH3#LbAsH0MN(e17`&Ho>{0j8iCcpagRJ~UgsOsQGv)qVdg?Wa z5&AsqJ_QI+a#oMM@yb=5&cz9;rzpbYro}`MtqFIeZ%cP`1lG)vflJ?OQigWG3Nm8! z=x(=*^3QB*@^^w9ww*SPtEpD`wuEKO|CCg8Lj0nNq^z|>eO+A?cTn6#k$xlDY={>_ zW&T#X^5p5hIaehBk5K?|yXh14B#nFV~`Zsv0dF_YseA^Y)0GdFFLnFx71Xk7cEV=%5_b z65^P4=IVYn-TI?70ld+{&@tjd3Qi+j`Q4l})@!7C^p32ZEfc<5Pq?dd)f(Q>Rpu7! zfXq!rzbN!}@o@a|CX#a#e^&#}a9Q2l|HL?IJg5GoLn#98A66C=<+~QN%QmLFB^#&F zD%sSnIS^V@(dzg}1=+m-gg=XjSn_u_nW&uBsZO1Ry^$8?GL^9+oPF9gv*b+k+!>CH zX=Pta#6sw-BYed8!zGIK&kxK1)$;xlTHDShqkiRAn%|+)qZ^J<0pB>~&b%DEgfV)p zG=0xGXH&`SXT3QwMErL=hgC;&nMk(%oYs-lnGcybi?)bSJ9Bev?P{CYc^O-%89#?T z=U5Qwc%88G2N+D(Ar*0rmRT|0X1ahwKvX-5tOdXLWdKGbA?zHA6`R$XCEtW5w94e!M0jgrTqvaUgVayIKf)TkoXy`NR10#<-BUB3N#RmX+) z=^<&pda-<`vaa^J+p#=+>@r`EYM#`T-MgrBNJMGXk(WhrUlkA$K}%|JNwR9}^MdEV zuT^YjL`|Z9eu5(s`<#Sz-5&Cz zK@d>b`t@A9(CB6P^BJ-rIG46!>v2+CK_KEmxZ6kJIRzl+ zHD3u}0^iDkF*=Hz;U^ht(tD-95CS4vzQX7SRWr7wq@-Cys)gNkW~!hnU=6nhvLr(}PW3SadPFR`uZOi0hbyUk3Ic%4K z@fwuc;709i!sV6Y@i*F6HJ`0zkm~JX*FS9z&L0#;gyVGLJv$clJGw`ef7gGnnNLwY z@6*OPfZ~{#{%|X$BH&>&B_sKpfQ2ru3pbH>Lw~VfAjsXS3jUfFBno$itftBjCyhmY zh@C&}+HoE$xEZ#7(g!dnt>WH+Nh63DxhoJhCxRjII9gDZwRTPmnGEU>RyOJKW9s`& zxBiqTouWDQm13$57aVu5j%~&lsQ7Gh;=5LdvCr-I>!B*vU2i8D zMA2@@!p&Nmf?pG<3)P8KB6X!@*`a65?;UN?jf&am<(cfCOX_*haNibehBnQacfyZ6 z-gt7@hpW;aPp2`JSZki$Ra8JNX5dZM-dd5b5zWysShjHRPV*`_v!7bH87w#Ds_Nwx ziu5kiGKEy-fB~9umlq*$7T^XGrRL7E`JHI_eEf|+S|K(R2)Mond!_EBQ5kG{q1N9VNp9!4(BFq5%ScJ8H|__|!zX>UA^6)LkVfZK4tfgjU(!2v%4*0srhVGU#U>Y@G3@QD zkbH6Y_R%^dB;&y(Wu<}49X56Oc5Y@c&AAwBLR6+fe-CbE9x3X9nADa{(5B%hd;nDF zKbbb#tR==W;H*=Q3tOR0J;2l~Q)b@5yrT?q8{C)Cx$~X1M%|i;>`p_UP4XZigVkk7 z?r`2zQbtq)ZK;fh#=~eFEiSn2q-_+><0x_Q;#-xtVfJHQ$ZE`339F-yK1I1$XGC;k zZ9TR7Z$AYRGQm9|=PhcuD%%i9=C?NoPc1MB_{fO2_au5e4lTt;p9&@%e}j(B>IW7)$s=amxEv8S5CV+fWnwo9fpqH9tslVy(I(IXlZ zPYfSfAx_4zeN7^Z1)IjEm(fdiGKv)3|LDb1;$&<{Y`@R&NUi65zUs?MeTbs^PLa!o zmzuxG7ziSuM!W#5s#Yn{Va2i%Si@CJALNP>X6B6VU>Mir`Ad^W523xcFI60R%;dZV(^AP(4syX zZBoUm+Ngfk0I1nTPzarRaJtS2TQ*dOW-a?5EBD$XygL9@U@h%Yn4MByZE-nPQLN(q z&zh+nLLuBXrGQXm6_q-XPEDM@Du$gy#DG`PP0*f4H;ieP*oCHuopA@o%0iJ#^>SwJ z`@~4@Z7u2nW}8bZzVC$e?;UVf7?iaj83qsn`R~E7muX~Pg$9&ZxktKwK4#+{^T?s5 zyHneT`svjxakCA&G^i<>g$OA_8t`z)4ZDJo%@0O_V7wVp)_$>~S`v>@)6MxeUiGh> z#3Ym&U^e!?7_&t;v)9m3=_1ve)6)PVNg%VY{(|bl)d(ZI`IAM8ZCP8foU0k(ys*dc%2!3ta|h?hWxj|XqWF0}dv{x{YyQ$B&A9lIOzN1=dJWZQ7-K@_qL=HdHkKM1 zZhEnn=^S!&+2;Qksuda-kr)sxs!w8Hf>-97U5TM}Mk-}PQfc;z?OgA*X^&9xk)%In&TzG$g+tA?VgjzZ_?3+n+URU7hS4-@E~VdOF+xMyh+ z#w5MwYmRp*r!~W3+>b)f1eKmpVFXrYSz!E56Zb|e{4Oc#}GFgM+ z+Y<{mQShoBuU|{q%RgEc*UycfZav@33~s|?4<);eU0nb~dTTDAX8aHkqJeyc&k*$T zJVx%ye|^o~WcFWQqahFLx2qq|GflgUj@@zv!5U@jg2V?no|Nwa%S1XcLt4|jPvB{1 zVd4^j2UOsQ4uB0UPm6#;N0PvgkGHU4B_A7tqhS3fNC=_0boYF{YewRna}HVyq$vtv z1X(lv0&O*h-6dcaEJF8YfLG*B8QodJYde~_p z&G3O8up^avCmPz+_&L;cfV@u0zW?yGvBTcp^0m?WjIRw&Lq}T{W<_DS6jk1nwjxnc5a?>!0iUCz7Z?TcZ5!)VNPS*#G5$f2GDT zA)S@Q?u`J8ZVgvIU27Quh;Rz2E!|A38Abv#aVNBDpnI z##+4?31Ooe*B|()G5(BszFmPm=+idW`YLe#{l&B8ITT=j;MpSlsb|Z_;@zj7E&Rfy zWAt)5@CM1SPX@kIm@8I7z@W<+@IBM(HCssRSjn*iz_#`eZyL_~k1>^0cO~jd#xpF< z^ZABRCP;8yB5luIG5$8+=Cuo~ia*;HU0pvg%eO7E|BP+Xe*=o=+$j$)8@AjBut zyF-jp^*1D+ZNRr-Ya=PyE&Rm~H760pAF-GzvM7%scS{d19H*be5H*sN=0~+0ATj$x r6942%g>IL$Zj%xGfAcZ8=G^8=;?vj*LhtxSd;<2?$E`>fez^Yw47Tpa literal 0 HcmV?d00001 From 78a3ea812ad3747afd159c03c389a797507ebb14 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 13:47:15 +0300 Subject: [PATCH 17/59] Added loader icon --- apps/henkinen/app.png | Bin 0 -> 5730 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/henkinen/app.png diff --git a/apps/henkinen/app.png b/apps/henkinen/app.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac3f151f052aa624e66a244ed1aaed6c84ea41a GIT binary patch literal 5730 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 H{oVfo=&1`l literal 0 HcmV?d00001 From 0c4cb7df5a775bfefb23feb709b06902996b1fcd Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 19 Oct 2022 13:49:44 +0300 Subject: [PATCH 18/59] Create app-icon.js --- apps/henkinen/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/henkinen/app-icon.js diff --git a/apps/henkinen/app-icon.js b/apps/henkinen/app-icon.js new file mode 100644 index 000000000..fd1e32d20 --- /dev/null +++ b/apps/henkinen/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4Az64AIFlgyjEZoxfDqYxaDSowYJDBGg54AGU7osOGRgvQCA4tNGJIwOOA4uRGAyRNFzYwTFzgwILx4uXGApgKFz4wHRspgQL0JgNF9ztgSBwujMBYv/F/4v/F/4v/F6IwiFBRgkE5Iv3GDiOLMEZeLeMReNSMAjLMBYwWERgwhFyRtJFyyNMCBotTFyJwDCZAsODZjDRDFBGYI6waEDZwSSDyAfIBpoxbABItdGRwsiAH4AOA==")) From 5d27e21dda922b5815ed93497d742c4a68b2841c Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Sat, 22 Oct 2022 15:14:00 +0300 Subject: [PATCH 19/59] added tags --- apps/henkinen/metadata.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/henkinen/metadata.json b/apps/henkinen/metadata.json index f6559be72..ece0ac5d3 100644 --- a/apps/henkinen/metadata.json +++ b/apps/henkinen/metadata.json @@ -6,6 +6,7 @@ "icon": "app.png", "screenshots": [{"url":"screenshot1.png"}], "type": "outdoors", + "tags": "clock", "supports" : ["BANGLEJS","BANGLEJS2"], "readme": "README.md", "storage": [ From f9cb4bd84b51cbf0c3a6729bfbea5465b565a5d4 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Sat, 22 Oct 2022 15:14:20 +0300 Subject: [PATCH 20/59] fixed tags --- apps/henkinen/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/henkinen/metadata.json b/apps/henkinen/metadata.json index ece0ac5d3..59b037dda 100644 --- a/apps/henkinen/metadata.json +++ b/apps/henkinen/metadata.json @@ -6,7 +6,7 @@ "icon": "app.png", "screenshots": [{"url":"screenshot1.png"}], "type": "outdoors", - "tags": "clock", + "tags": "outdoors", "supports" : ["BANGLEJS","BANGLEJS2"], "readme": "README.md", "storage": [ From ad87a01c063eea5dbc7eee904a390ed7e15da424 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Sat, 22 Oct 2022 15:37:54 +0300 Subject: [PATCH 21/59] Update metadata.json --- apps/henkinen/metadata.json | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/henkinen/metadata.json b/apps/henkinen/metadata.json index 59b037dda..1f1bb77fc 100644 --- a/apps/henkinen/metadata.json +++ b/apps/henkinen/metadata.json @@ -5,7 +5,6 @@ "description": "A tiny app helping you to breath and relax.", "icon": "app.png", "screenshots": [{"url":"screenshot1.png"}], - "type": "outdoors", "tags": "outdoors", "supports" : ["BANGLEJS","BANGLEJS2"], "readme": "README.md", From 4fe12172beb52280fe44e7f040baa8fee347cbb6 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Sat, 22 Oct 2022 16:55:47 +0300 Subject: [PATCH 22/59] Create app.js --- apps/poikkipuinen/app.js | 145 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 apps/poikkipuinen/app.js diff --git a/apps/poikkipuinen/app.js b/apps/poikkipuinen/app.js new file mode 100644 index 000000000..7db3384bd --- /dev/null +++ b/apps/poikkipuinen/app.js @@ -0,0 +1,145 @@ +// Poikkipuinen +// +// Bangle.js 2 watch face +// by Jukio Kallio +// www.jukiokallio.com + +require("Font5x9Numeric7Seg").add(Graphics); + +// settings +const watch = { + x:0, y:0, w:0, h:0, + bgcolor:g.theme.bg, + fgcolor:g.theme.fg, + font: "5x9Numeric7Seg", fontsize: 1, + finland:true, // change if you want Finnish style date, or US style +}; + + +// set some additional settings +watch.w = g.getWidth(); // size of the background +watch.h = g.getHeight(); +watch.x = watch.w * 0.5; // position of the circles +watch.y = watch.h * 0.46; + +const dateWeekday = { 0: "Sunday", 1: "Monday", 2: "Tuesday", 3: "Wednesday", 4:"Thursday", 5:"Friday", 6:"Saturday" }; // weekdays + +var wait = 60000; // wait time, normally a minute + + +// timeout used to update every minute +var drawTimeout; + +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, wait - (Date.now() % wait)); +} + + +// main function +function draw() { + // make date object + var date = new Date(); + + // work out the date string + var dateDay = date.getDate(); + var dateMonth = date.getMonth() + 1; + var dateYear = date.getFullYear(); + var dateStr = dateWeekday[date.getDay()] + " " + dateMonth + "." + dateDay + "." + dateYear; + if (watch.finland) dateStr = dateWeekday[date.getDay()] + " " + dateDay + "." + dateMonth + "." + dateYear; // the true way of showing date + + // Reset the state of the graphics library + g.reset(); + + // Clear the area where we want to draw the time + g.setColor(watch.bgcolor); + g.fillRect(0, 0, watch.w, watch.h); + + // set foreground color + g.setColor(watch.fgcolor); + g.setFontAlign(1,-1).setFont(watch.font, watch.fontsize); + + // watch face size + var facew, faceh; // halves of the size for easier calculation + facew = 40; + faceh = 59; + + // save hour and minute y positions + var houry, minutey; + + // draw hour meter + g.drawLine(watch.x - facew, watch.y - faceh, watch.x - facew, watch.y + faceh); + var lines = 13; + for (var i = 1; i < lines; i++) { + var w = 2; + var y = -faceh * 2 / (lines-2) * (i-1) + faceh; + + if (i % 3 == 0) { + // longer line and numbers every 3 + w = 5; + g.drawString(i, watch.x - facew - 2, y + watch.y); + } + + g.drawLine(watch.x - facew, y + watch.y, watch.x - facew + w, y + watch.y); + + // get hour y position + if (i == date.getHours() % 12) houry = y; + } + + // draw minute meter + g.drawLine(watch.x + facew, watch.y - faceh, watch.x + facew, watch.y + faceh); + g.setFontAlign(-1,-1); + lines = 60; + for (i = 0; i < lines; i++) { + var mw = 2; + var my = -faceh * 2 / (lines-1) * (i) + faceh; + + if (i % 15 == 0 && i != 0) { + // longer line and numbers every 3 + mw = 5; + g.drawString(i, watch.x + facew + 4, my + watch.y); + } + + g.drawLine(watch.x + facew, my + watch.y, watch.x + facew - mw, my + watch.y); + + // get minute y position + if (i == date.getMinutes()) minutey = my; + } + + // draw the time + var timexpad = 8; + g.drawLine(watch.x - facew + timexpad, watch.y + houry, watch.x + facew - timexpad, watch.y + minutey); + + // draw date + var datey = 12; + g.setFontAlign(0,-1); + g.drawString(dateStr, watch.x, watch.y + faceh + datey); + + // queue draw + queueDraw(); +} + + +// Clear the screen once, at startup +g.clear(); +// draw immediately at first +draw(); + + +// Stop updates when LCD is off, restart when on +Bangle.on('lcdPower',on=>{ + if (on) { + draw(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}); + + +// Show launcher when middle button pressed +Bangle.setUI("clock"); From 94975ed7bc08bc492b90c4cc0fa74b16beb04137 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Sat, 22 Oct 2022 16:57:43 +0300 Subject: [PATCH 23/59] Create metadata.json --- apps/poikkipuinen/metadata.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 apps/poikkipuinen/metadata.json diff --git a/apps/poikkipuinen/metadata.json b/apps/poikkipuinen/metadata.json new file mode 100644 index 000000000..ec95ab7ce --- /dev/null +++ b/apps/poikkipuinen/metadata.json @@ -0,0 +1,16 @@ +{ "id": "poikkipuinen", + "name": "Poikkipuinen - Minimal watch face", + "shortName":"Poikkipuinen", + "version":"0.01", + "description": "A minimal digital watch face.", + "icon": "app.png", + "screenshots": [{"url":"screenshot1.png"}], + "type": "clock", + "tags": "clock", + "supports" : ["BANGLEJS","BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"poikkipuinen.app.js","url":"app.js"}, + {"name":"poikkipuinen.img","url":"app-icon.js","evaluate":true} + ] +} From 2ef63c1fcc329a38e54fc0c4f873b72ddca6aaba Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Sat, 22 Oct 2022 16:59:12 +0300 Subject: [PATCH 24/59] Added screenshot --- apps/poikkipuinen/screenshot1.png | Bin 0 -> 52829 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/poikkipuinen/screenshot1.png diff --git a/apps/poikkipuinen/screenshot1.png b/apps/poikkipuinen/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..e9422ee437cb4f056ab93def1eed716ad4a3b7e0 GIT binary patch literal 52829 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 Date: Sat, 22 Oct 2022 17:00:50 +0300 Subject: [PATCH 25/59] Create README.md --- apps/poikkipuinen/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 apps/poikkipuinen/README.md diff --git a/apps/poikkipuinen/README.md b/apps/poikkipuinen/README.md new file mode 100644 index 000000000..12f8d5d7e --- /dev/null +++ b/apps/poikkipuinen/README.md @@ -0,0 +1,7 @@ +# Poikkipuinen + +By Jukio Kallio + +A Minimal digital watch face. Follows the theme colors. + +![](screenshot1.png) From 5bf07144fdd6757fd386c489a018599e7dc68504 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Sat, 22 Oct 2022 17:06:30 +0300 Subject: [PATCH 26/59] Added icon png --- apps/poikkipuinen/app.png | Bin 0 -> 2625 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/poikkipuinen/app.png diff --git a/apps/poikkipuinen/app.png b/apps/poikkipuinen/app.png new file mode 100644 index 0000000000000000000000000000000000000000..fa506c8869155bbcb1d255b36b24814a7edbf6f9 GIT binary patch literal 2625 zcmai0d0Z1`8XgRC2^A3(fuE*>qKG*N1WQQdNJxnqpj-(GN{$Ik37MD#h^z{zRlJ4b zg;-kA01I*oB9RhBMMV%?52`_EQP2g7vPwa!?j%^$s=I$olJ9+<_xaxI`zAYr1HZN~ zvoiw#z=9RP2tmJzy2r!_{p3s;+YSJRm2enW!DX+c2#^FkPl)g#yfQ(G;s8MPR!Vt- zcu0ZeL$R=g1`eqkKrAezfgCcM$d=NfI5;3h28E^sh6z&Q1)f6Cdzl$kNkIh?AO#Pr zOb|=t6eSJR>r&9)Ix_*p>M4qN8pve_W9f(t!jkc1JP}-GhNa4cB1#B@`PLa-(ZD!` zLP{YJl9QA1$!>T=7E5sT^zcnXw7BBImjO2m;!VXjLl zL=Os)>_T*-5Q%zaJsUj@LY{*6|MIv^1Qq*t4h8}+O79mVtBj{rCB7!97?IT04 znUDv*s{z0u9Y)*oQ9A%&QD$Ohm&=xKY@59AXNXp2M%8ldI2q3C^2PA2n>o&nEhG1) zSGU|Bm%wMkC7kTqXZ@QS(pEoO!gFZmNnHtW7-ydzQMyz}9m) zVYr3V1rFTiA}3_p8JD8Rl~0SLc}}yfe-D10l$S?=MnI#BNv-Y=(~5!`)S^EOl3avb$8Hf^Wv=H z436`U6@FRPo-Y|KD_+!=n6~$jZdzY|{bsQE2iuYCVy|<-Z-ll8t*w0O$>Y2YbM2T< zOvL-7nWr9>&DA_sKfbiH_knSrQEqg^>5eaQ5x>4IcDIjvXR%e}%(S~RN8ZbnB3xAOvjk4vTDO;{WKr-7+igvTttiIQNNu>zd6c=Kpz z9$~zpaOM zTrr+87B=Ns9*Y{ksJThA-O4QJ(MG3Zb#kAqqVZ{k?gLtfWd^t$)vIH5jyQ5wZh6CS z(nWemGvUU)pM8ezy*zjC9Qj_rx8qZ2n7ZHc+ZSzW$m1?it?HOo!8LE_3Uaq=xpne| z_m+$+NJ`a}{ugH0bRW&>BX%Z+hL&Y_j}|pc{<)^!oVzEt+AmLxKX;!-Xa(?%~!0z+seSwjY zk;2l_R*;iId|zcHs$scl_d(=}SH!{FfHHU8{NnuibP z|0=cJ-gtg=wDx9)%HHHVzw527{0c62?b?Epm4o|LcD1#&nqQ>=%P}!A@mdqHMbp#c zh{0fh(N~)WlGM&Uhea_dDLMK1jsro3*#a{N8vf1QQe#WNu-xE;V)E-TssL`E*Dboo#nGFR!n=JFTY1L#0xM zZEMXSVVatnl+?LEO-)Tp2UpR@-*_ z_Eb%8uM?ZizQ&mIC4vzM1Q&bOF_}y$<=A5K9KRuT+XBxG_LZwnMXg<1RbKw%ns5<5 z)c!fi^6G-D=0~8dc}RG8c==+?R=v?^)A9rby}1oEuzN0|3IsE{>%Kt z##xq`^U}I(;zKX(%TW#1OWNFmzxea~{o)z9KvzKo{!P#V6+&i@FHGG2JLzTAu9v@v z!;KE#nwe+AIvCltqViVcVyhc=!>RoJ!k@+krWaGQ9n3nJspPng)kmHc`;OjL^>Vh9 c9lqYM#dy98< Date: Sat, 22 Oct 2022 17:07:26 +0300 Subject: [PATCH 27/59] Create app-icon.js --- apps/poikkipuinen/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/poikkipuinen/app-icon.js diff --git a/apps/poikkipuinen/app-icon.js b/apps/poikkipuinen/app-icon.js new file mode 100644 index 000000000..d7ddba399 --- /dev/null +++ b/apps/poikkipuinen/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwkEogA0/4AKCpNPCxYAB+gtTGJQuOGBAWPGAwuQGAwXamQULkYXGBQUgn4WJ+cCMAwXNiQXV+MBC6swh4XU+cAn4XU+IUBC6kgj4XUIwKnV+EDC6sQl4XU+UBd6q8BC6q8BC6i8CC6i8CC6a8DC6a8DC6a8DC6S8EC6S8EC6S8EC6K8FC6K8FC6C8BIwwXOXgwXQXgwXQkIWHd6IXPp4GBmQWJAAMjAQP0C4wAPC7hgDABwWEGCIuFGCIWGGB4uHGJwVJAFY=")) From 4555662d1617cff28ca7fa5c90e9b6c4f52e4ee4 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 11:07:57 +0300 Subject: [PATCH 28/59] Fixed a bug regarding hours --- apps/poikkipuinen/app.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/poikkipuinen/app.js b/apps/poikkipuinen/app.js index 7db3384bd..ed37cfd97 100644 --- a/apps/poikkipuinen/app.js +++ b/apps/poikkipuinen/app.js @@ -74,9 +74,10 @@ function draw() { // draw hour meter g.drawLine(watch.x - facew, watch.y - faceh, watch.x - facew, watch.y + faceh); var lines = 13; + var lineh = faceh * 2 / (lines - 2); for (var i = 1; i < lines; i++) { var w = 2; - var y = -faceh * 2 / (lines-2) * (i-1) + faceh; + var y = faceh - lineh * (i - 1); if (i % 3 == 0) { // longer line and numbers every 3 @@ -94,9 +95,10 @@ function draw() { g.drawLine(watch.x + facew, watch.y - faceh, watch.x + facew, watch.y + faceh); g.setFontAlign(-1,-1); lines = 60; + lineh = faceh * 2 / (lines - 1); for (i = 0; i < lines; i++) { var mw = 2; - var my = -faceh * 2 / (lines-1) * (i) + faceh; + var my = faceh - lineh * i; if (i % 15 == 0 && i != 0) { // longer line and numbers every 3 @@ -104,6 +106,7 @@ function draw() { g.drawString(i, watch.x + facew + 4, my + watch.y); } + //if (i % 2 == 0 || i == 15 || i == 45) g.drawLine(watch.x + facew, my + watch.y, watch.x + facew - mw, my + watch.y); // get minute y position From a6f23a4053ef458505a44a4117b28cfcf7c85814 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:09:19 +0300 Subject: [PATCH 29/59] Fixed hours --- apps/poikkipuinen/app.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/poikkipuinen/app.js b/apps/poikkipuinen/app.js index ed37cfd97..870b365e1 100644 --- a/apps/poikkipuinen/app.js +++ b/apps/poikkipuinen/app.js @@ -88,7 +88,9 @@ function draw() { g.drawLine(watch.x - facew, y + watch.y, watch.x - facew + w, y + watch.y); // get hour y position - if (i == date.getHours() % 12) houry = y; + var hour = date.getHours() % 12; + if (hour == 0) hour = 12; + if (i == hour) houry = y; } // draw minute meter From bda6b87d70e85940b623ac9f4ba5f2f42c7c52ea Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:16:10 +0300 Subject: [PATCH 30/59] Update app-icon.js --- apps/henkinen/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/henkinen/app-icon.js b/apps/henkinen/app-icon.js index fd1e32d20..7c82a375d 100644 --- a/apps/henkinen/app-icon.js +++ b/apps/henkinen/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwxH+AH4Az64AIFlgyjEZoxfDqYxaDSowYJDBGg54AGU7osOGRgvQCA4tNGJIwOOA4uRGAyRNFzYwTFzgwILx4uXGApgKFz4wHRspgQL0JgNF9ztgSBwujMBYv/F/4v/F/4v/F6IwiFBRgkE5Iv3GDiOLMEZeLeMReNSMAjLMBYwWERgwhFyRtJFyyNMCBotTFyJwDCZAsODZjDRDFBGYI6waEDZwSSDyAfIBpoxbABItdGRwsiAH4AOA==")) +require("heatshrink").decompress(atob("mEwwkEogA0/4AKCpNPCxYAB+gtTGJQuOGBAWPGAwuQGAwXH+cykc/C6UhgMSkMQiQXKBQsgiYFDmMCMBIIEmAWEDAUDC5nzBwogDMYgXHBoohJC4wuJEQwXG+ALDmUQgMjEYcPC5MhAYXxgAACj4ICVYYXGIwXzCwYABHAUwC5HyEwXwC4pEC+MvC4/xEoUQC4sBHIQlCC4vwIxBIEGYQXFmJKCC45ECfQQXIRoiRGC5EiOxB4EBwQXdI653XU67XX+QJCPAwrC+JKCC4v/gZIIHIUwCAQXGkIDCSIg4C/8SC5PwEwX/mUQgMjAwXzJQQXH+ZICAA8wEYYXGBgoAEEQoXHGBIhFC44OBcgQADmIgFC5H/kAYEmMCBooXDp4KFkMBiUhiCjDAAX0C5RjBmUjPo4XMABQXEMAwALCwgwRFwowRCwwwPFw4xOCpIArA")) From d2d36d33b8839471072c8989005a3c3a2160a8d8 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:16:28 +0300 Subject: [PATCH 31/59] Update app.png --- apps/henkinen/app.png | Bin 5730 -> 2952 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/henkinen/app.png b/apps/henkinen/app.png index 6ac3f151f052aa624e66a244ed1aaed6c84ea41a..575ecbcd4862e30d56f28e40a0f9394f67e698b2 100644 GIT binary patch delta 1848 zcmZXUc{JPU8pnUJQ@vWI8pc*Ks3HqB6*NTESjQH|(ps_*jUW=G(?39Pmm3BQr(%%ao7fqs3iP2;m-NQGwuH?DnabAvS9VZ8S3%I3)g$cqG&JLB-Jc2Oy zftw-WXORdPJ6-ZC#((h{m>CiV(>?!L)*6RJQi)U&{!h}err-!jI}-IT`U^=!orEY7 zk`zh~x6w^7!Qly^G!j+!eAr=vgb$60i3=uTqsi9L&wok8{|Nm_e=Au-<^Hb2ZkH_l zpXTsVWJcxWZYBVLm_&PfkN+D701UHf*^_5dJi*)o#J(C&bmg` zO*3cT=rvmlKLJ`uXNbaZypfL?xms|mhM!6+R9=Q8rOhrf_01-lUI*Oa?^_{fVFIjX7Cesr*#gvrP|ITe;mvdj!hU4wU|tX#wOrWGaV?%o?c9 z8La6LQ-VfZJ-HLz*V9e11AoXLHW*~N-zM&zE5K(sT~{nvC5lNrX1TXu^A@wAd}ITsSRiDwvQzAC5jTQwb$v2tJ190knm%? zMxaf0Rm=8Rdn3?dHcvS^rO~dIq>zM?vfI8ISpk{MHeTQH)ZZbi&qRMiha@%vVoC6p z#)PZx)T~50s_T}gwHqJUb=f+Zgzx@Ulwt);$|bLE&1M<6ygFd+pMc)77Kp@*9-GEb z(>#THdmvl-zYS47P#DoA(D#%7fM%g3nma;4}U>=WU1_9Jq) zS5r`VsbS{DvXRBxrPe0BhTiBxl;Fg@Xk5r-eO6HPX)#~2iL^WR~0O7 z{$!Xj*Kk^uVa#`Pfo?Q)8ne zfDJTO#Ws#=5)G8oVH|h9uWiLZsbPj*^aC&Mg%WR1O`Nld7t#+jz9Hy*(^es_x+N zcxscIa8Y5q;g_=w%P^8Wxc>gSDopOS#&lCS zZ4;kVvqbsL%+GhdneV+MZ`D^cxx#4b(;)IW4YeE}%nkb0LaM3&!gfk~6?(0ears*7 z<-64nzRSv|A}&vou!iucA~4ws~!2B)-yf_p{lKA7B6Lj=eDTTXy^k2^!+UX>5> zrX6K#VL`4w;3(5}>XhEmDaI*pn}yMdiDL7nU8iF=@8>3Qg^PDCN;bbhonxlBZoYl{ zwpX}FkeHCzR#AC0BFaQ0t!Vj~279N!zhZanAaN{IU1@BnlwSPx8QE=K=H7Qz!G!&G zIycS}wruID^?Ob5!a)llE+Li)mNvXoraT^WKamNykFqFHzy7jlP5TST1_z_?5GHqc Pa{wm?_X{u3A<2ILd;U|- delta 4659 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 From 5c077c490beb3534206d1f2cd5c03fa29615e80e Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:18:29 +0300 Subject: [PATCH 32/59] Changed color scheme to follow bangle.js theme --- apps/henkinen/app.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/henkinen/app.js b/apps/henkinen/app.js index 1207b5686..c3a2f7f4c 100644 --- a/apps/henkinen/app.js +++ b/apps/henkinen/app.js @@ -10,13 +10,13 @@ const breath = { x:0, y:0, w:0, h:0, size: 60, - bgcolor: {r: 1, g: 0.6, b: 0.3}, - incolor: {r: 1, g: 0.8, b: 0.5}, - keepcolor: {r: 1, g: 0.8, b: 0.5}, - outcolor: {r: 1, g: 0.8, b: 0.5}, + bgcolor: g.theme.bg, + incolor: g.theme.fg, + keepcolor: g.theme.fg, + outcolor: g.theme.fg, font: "Vector", fontsize: 14, - textcolor: {r: 1, g: 1, b: 1}, + textcolor: g.theme.fg, texty: 16, in: 4000, From 87ea7335def0454e4b92cb1c89ead5c0f24c57ce Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:26:20 +0300 Subject: [PATCH 33/59] Fixed fonts and colors --- apps/henkinen/app.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/henkinen/app.js b/apps/henkinen/app.js index c3a2f7f4c..d7c7bd5ed 100644 --- a/apps/henkinen/app.js +++ b/apps/henkinen/app.js @@ -4,6 +4,8 @@ // by Jukio Kallio // www.jukiokallio.com +require("FontHaxorNarrow7x17").add(Graphics); + // settings const breath = { theme: "default", @@ -15,9 +17,9 @@ const breath = { keepcolor: g.theme.fg, outcolor: g.theme.fg, - font: "Vector", fontsize: 14, + font: "HaxorNarrow7x17", fontsize: 1, textcolor: g.theme.fg, - texty: 16, + texty: 18, in: 4000, keep: 7000, @@ -61,7 +63,7 @@ function draw() { g.reset(); // Clear the area where we want to draw the time - g.setColor(breath.bgcolor.r, breath.bgcolor.g, breath.bgcolor.b); + g.setColor(breath.bgcolor); g.fillRect(0, 0, breath.w, breath.h); // calculate circle size @@ -69,17 +71,17 @@ function draw() { if (time < breath.in) { // breath in circle = time / breath.in; - g.setColor(breath.incolor.r, breath.incolor.g, breath.incolor.b); + g.setColor(breath.incolor); } else if (time < breath.in + breath.keep) { // keep breath circle = 1; - g.setColor(breath.keepcolor.r, breath.keepcolor.g, breath.keepcolor.b); + g.setColor(breath.keepcolor); } else if (time < breath.in + breath.keep + breath.out) { // breath out circle = ((breath.in + breath.keep + breath.out) - time) / breath.out; - g.setColor(breath.outcolor.r, breath.outcolor.g, breath.outcolor.b); + g.setColor(breath.outcolor); } @@ -87,11 +89,11 @@ function draw() { g.fillCircle(breath.x, breath.y, breath.size * circle); // breath area - g.setColor(breath.textcolor.r, breath.textcolor.g, breath.textcolor.b); + g.setColor(breath.textcolor); g.drawCircle(breath.x, breath.y, breath.size); // draw text - g.setFontAlign(0,0).setFont(breath.font, breath.fontsize).setColor(breath.textcolor.r, breath.textcolor.g, breath.textcolor.b); + g.setFontAlign(0,0).setFont(breath.font, breath.fontsize).setColor(breath.textcolor); if (time < breath.in) { // breath in From 35cb1324f91c8f4e9ff8e3e9efbdb1f05c659cb4 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:27:00 +0300 Subject: [PATCH 34/59] Updated screenshot --- apps/henkinen/screenshot1.png | Bin 23611 -> 17968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/henkinen/screenshot1.png b/apps/henkinen/screenshot1.png index bb6655f6ab41b1c605107503efb672c81a9c33fd..751fc30add2fcca4f373b499287795f974315f38 100644 GIT binary patch literal 17968 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 From 2d3a0c5b108b94ef39dc105493d2e66b0dc57238 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:33:50 +0300 Subject: [PATCH 35/59] Updated app.png icon --- apps/rinkulainen/app.png | Bin 4656 -> 3177 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/rinkulainen/app.png b/apps/rinkulainen/app.png index 632cf17e033e1997ec76c7061c91ee76d125ea1c..50782c48d1fdd50e63b9f15db8f472ee06c21a06 100644 GIT binary patch delta 2084 zcmZXV2~-l;8pk2GGRrcfm(TqiU2nVMND8M&2v_L!MB=e&2`Ip4YG{=R$f|NHK_-}&yZ24eNA8cOm2 z0O0htwKM=g?sSgfhCxX1F>olIPDMhY)YupbBr4_{G$a^Gq!1&Bk#rgq27y6^s=y2& z5XLLs7OV@mw1mRIih6o_bTWyA^zkIpqA0O+a#Z9ouyl=V_>F52$4jHrO?6XAgO~wBv7fev*h5YNEGysvlQ}wg#M(z zl~B;_f5+i9$=vv#c5A}BI)X>KzwbY3q zGQNNm7Jb*n)}o@o>Mdn1N${PSFmBON5mRm)Jvk`H0zP?J<7tnDe7sRhXuNgaFQTJI z9CxdC?bZ^iXi59mOK_}r)WUJZ=|0>3B-V6LNXPJUW}Xi0=;L3C%l9=0vQsB#IY#iY zr`^8X-tR||?|1lfN*EK-4g-oU@D@(Z#jwSP)F-)D+ERK`6b?VVJ>Mv3H{B$~l(kqJ zg-`SuoI$1(36NI?s&d~vYFUiI54(5>#@Z7zEOPwvuMZu3ljW99-aJx3%)}%r!C6LQ zXH-TCGtwzq8KCfb&1#}a*#Useu0-gDGD38?)2oTz_Yz>-$(4yv;c4FG^h z-v*)&WZt)CNbA@PV{hXX%8~f?hWq-cZUw;Ko7*)tscYt@%3^=E#AH@3DJvP%)dW7( zJ~KwPrzJ5)eGc_I>y{K|x?U0u`!&>mnZ+P`^0~;XGmzb@-jIvyGpyC_7UsgbzUW*v z`Hn7%Ii@>(p*`VC-1N;2Hni5?*ik;`CUE{3TLJJGNCB>rTJT$P^J;8!wl#3`q47)B zKdxaH(H$$Bt4#OBE!Xt%18WyUCP6RG<9>TjJ*O=f@D{uffYNQFz0(Oy5O2xP*O0qQ zljYg24j!3}KV3M{%34nSuEF0Ocf0#zsad4Tx;OitR#W99>b{rh#LUe0wM3mften&U zflo#VPe!UlqAO0>Is_t-sJ#Gq=b`%XNx0Khlx6Tuu4D2YT>9>`WPp;tbd=7yspKE? zlg|4wTS4}oIu?R<~Eq)KRq-G!T|o zR)&>joImelns<4R9_AX>a6J)?Ni8dT;9agiJ?6}bZ-nIV3k!pdcrcd+wE~w^8jWT< z)|#fwa{7{0wLi4RH+T3!Ma9DAW)^P2w6$;_6WF((I%%FMKP!eJkFGme6%DLoZg}0%#?snNT)o-_?+5OLqO&0X$Gs_VO;MZ z!Iv{R87xX%%T-WN=pqS=8*#?YB-*I;c$RNPTmAXD%(c-m6Hr#ha%*dAp_!#phP^Gy zSd*)1G;U*{vUiEsaW52ly|Z|9ZYA5RDY1l>LP3~)@rPU&uZ_~`h!*DN=^Ji`!WA8V zH1}u?ht*)Cvpr_&AovGmtTNBD?Jx?3;u0l?-ha8GX==&{aC?|ij5E%^#qXW|oq_-Y z{QUfi{Rd-1Z^$1)E*_FrP@sWISXL4Wg#flh5&@g~@Ih8fORGe6b$%kb zcJ5kibo7BQ5=OmA0bqTlX=38eyy5~AUp@Ye%b5Q(P%f_joy=-@QMa%x@e{8+I~($0 z9%tKs$RvGf<9l$0y~4>IhR#dPcmovzp}LFRq@Tu78^y zl*wpJSc#0EI5f=f`}(ia67tvhM*V%7m4ls~ohQg&UhmU<#l-rUg9==Xq`#t|%=FYL zqNRF>Re^TC=Pg!IQFLtVsTZRoBZY2QOwttQfzlrKIYK&OrnRbI^u^wJz=R83Ix-AZZq z6h7hIN_i7hCiwZN;OD`eDcel*GPieuK%jez>(aa#ZF{9Xt5VrBP`*hwl<%B`Wh%d` zALDiQiqpk@4jx-#iF$q?zQ}=#c3EYv685ZxH!s6xX^*p!Q9Hkx?Vc)LFVR@68104%7I8-q>IyEplG%}OH z10@nMI8-q>IyEplG%_nNGdeIZB9mn-NiKSO}SX0RspIcH%Xn_bw3B8FTHGq^5S_A>9f~bTfkWgYs2qJcL zQNgu~C{}b;MA5YXvR3S6QSAL;K}A^?3pP~VgamZ;z4y;M-#2%DIdl3wb29^gPFJoV zPl4(JkS8sW$At&8#($)wvPe$=0*HVCYyip^C}f=2*eC$0fBq-EyAGuxU2##_`g#3- zlD<%+5CDLrL0lkI2=XAl1OQ$lkjV=GASOV*^`rus3Kv0aAcp}$yg-Gs)OdpmXQ=VM zKAD6#F2rX5Ak+AKc@_ZLS0SHOD9D0#wBJJPDiunk0O;629Dg7X^Mw$@0fyw|O;q8< z5IaD58N`hcvopT4ne`9*83XqD{Hy`2&a02eArgfwmp{2bXEF!@5}*JwkPG-=fc^hd zUaqp=ryU$Lu{iCBRhR~Gr!*rvMpb)=KS+e?_W%G&6)PhW)$*vRK*5Fe z1Wbrsh5V36h<{BX4wL3aM``#OnUXLb#ISqNB1r)+L8CiQqzH}I*jyu@7#GuzGv!>4 zMz@YH@AIpYKcUP?Wq~*$LR}whyMW&pzY)as zA}J@a-;PKzCaOOdp(rF&ojcYdk|t{M#qP@rg5xy0U9#L*jXX{k<%X;HRuG#g3gb1p z_=p17tZMssl&l~&K^-Tap3NT_tBwaR1W|wsdxiy+aAbgqAR9?1kI z0wUm|;eYgNB=@aI;WHi-gTEjW!OrW~3+`JLfkMdtGQd?oT|j2vYGI#74tN4_9*BfJ zD}r&Tw4?*xlE7ogk^JOc0AtOCL$&rZj{`YT8jiBxE=#9hk{C)1Ax03xh>o}k9)SDd zQSccAha1kuefp#QCQo=mXeB%(TqCp*ZcUJs$bWx`WfW+G_QNz8XMCSAZU=38;=#B- zv<@xfOxy&x;2zKq2M>gvJt3E?iCdLB>p$clU=L^j2f;CL3Y-U*z%_6O_D?%_0lL6D(1Rcd385nl#2B$a zY!PR~4PhezNGKA8#33n2I+BG*5hXGenT?bqOOe&cMx+M$9XWs;L(U?t$Svdn(tm-x zMn0h!N<$4$Gt>?phO$u(8i^*LM%k)}zPJ^XN6S4Sj)jV*t~_ zn3yHzg0V3!7K5c?nV1}#j+J2*ST$CMHNiK11#81Pv5z?Ro`?(Ze0(~- z0AG!7!|U-A_!ayC-i3c9&sB!5y2iBBpZm6BGGc94#cE|c0xAIMr{ z3$hzIjGRiAl1s=HAhSW7L83wP2h|O_Jm|gAV51--kx`k^E`OtIMxTsX#-YYJ z#!HMFjPIG?CQc@!O(vPFGdXF}IoM#Z-(bPuvcY=>-!?@}olN6QrR>wiVm1v^{P6-p<}G z*>0{~gWWTGBYU2Gv3;%mT?e{DphLbxwZm0Mq9fZe$8oLWB`4I$(@E@9<#f>*b@pod3 z-Ryd2xc=~w!%K!Y4S((CQ}X3sBP z-d=LAIBM?CVk@_*<1Z}e{qUy9UdH z_Xoe{`f{gnkA`3&;UQ%qEus3MiJ_}Q?}u51Wrfv-b%lF|PYFL7L5PTqSQ2rAXT}ro zYIt2Ey+=+Pc_NY)86UYi@?n%ylsu|w6gq0;sAZ$>Mt|EzOQRcNKnyQtS`P~`3j5Qfu0-|yDN{Jm!5Y(sxQrvo|tGpv1nqe%vn|{Ys>e| zUykCbmwAc}E{#sUL)n7^QOQ2wHPP#92HRe$(lQqrWoMS4Zjq6?FqCeNSzv^cEz zw<-7(!Ib8ymQ!aa3huf0nqGEG>CEJ9&1~ z9J4ty=REo){FmBN?NWK^jk$hv*U!V}N#?c8cb~s%{?{^L*|~Dp@{01$3j_D z%70&b7iKPOS>&~7-D2Wm>Ei240+(!Cs<*Uw>7!+%ment3EiYUCcEyAhXDd7^)~}?l zRIY5RjH+y0WwUDWs?V#%tFKiBSM6G3x@P{G_iKe~FRu$)SGV45efj!N8zdWUZVca8 zUu{=iv5B~;aMP2`Nt;jq#{R8li^-PqEq`COO1HLci`#ah#=E9wyXp2twP>xfwqr-y zj!Qd3b~e_z)NS0w+*Q6C>{jl6{(JiG*Y`y3Y2M4;Ter`4-LJeGCrQS*f6JAcQ= z9KU*E^of>}ktffb3OjZDH0Sh@GyZ1|p7lL@;2is0!+Eds^%p!Z?ElmA&;2c4E%g_@ zFE(ECxzyA;qV@3Qz{|(3gj_jwm3Q_0wdiZD*AuVbypeXJ?WXYNvs<~hUfnLd-E(K= zUBcb6d%E{3?wj7P{+HvwcC~r69e;Wd^5DY5_=k5M2_C(8ta$vnea;j5lZvMnPivmJ zJv-PD)^X|i*yrspWG{L;OaIdQYt2iCm;3$>`ujrHn6CC$@>jjD7rZfkv-PdV+ve`r z?)&fZ-u1jM`(XTG+eh}t)1Q(*J?)wFne@5xi{qE3uaRHx_U85W%J_1A-+xg6g9FXX z1mN{n0O%?3>;UhT)UoP2U>_msduty8{|&3}iGAb+z}6rD5@!Ms17z!!OMZ_nD^-Y=VBu(tp>ny4o74AE+K2#90IKb?eoR$Kp_=1c3o*yCkj1Kn$V-xi446FE>Mt%t-uTk^ zfLx3ygy8FL5J_>{7Y)X%sumAu607*qo IM6N<$f_wDKDF6Tf From a83ea008de2700ad23adee97f6490606c16d61e6 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:34:28 +0300 Subject: [PATCH 36/59] Update app-icon.js --- apps/rinkulainen/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/rinkulainen/app-icon.js b/apps/rinkulainen/app-icon.js index b27f89b2d..0618f7891 100644 --- a/apps/rinkulainen/app-icon.js +++ b/apps/rinkulainen/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwkBIPsPAAwVN+AAKFaIxPFpYvJFpovJFpovHFp4vHFp4vGFyIvFFyIvEFyQvEFyQvDFyYvDFyYvCFygvCFygvBFyovBFyvwFy0Pc6YvTC4ajDFpv//4XFF8otBF44HBFywvKFof/R4gXBF8QuEF/4vZFwovwC4wvgFwwvGBBAhDF5oXGF/4v/FAovRFAbtCF6hoKF5QAG")) +require("heatshrink").decompress(atob("mEwwkEogA0/4AKCpNPCxYAB+gtTGJQuOGBAWPGAwuQGAwXG+chiMRiU/C6HyiDpDgMvC5ItFCoYADGIoXIFoIqDGgUBC5nxB4IoE+YYBj4XLBwJxGJ4IwEC4wuBiYEBmUhiUjAoMxGAgXGmAuCDYIACCYIwBgYXJBYSQGD4IjBC5HyE4QOBgU/+cgEAQ3BTAQXFBQImBN4p/BHARgCC4swCYIaBT4gGDiBgCC4syQ4JVENIsggTvKBgYHG+BRCC5KdDWIYXOiEPC4oUCC8hHUmTJBO44XMCgSnH+SnLa5IABfILXJCgINBgA9CAAnzEIYXF+QKCJAMCn/zkQXCEgJtBR479CEwIADCQRpEC4wLBJAInBAAQ3BD4KxDC4wTBiatCkMSkYFBmKAEa48QGAR1GP4gXHGAMBDAnzEAKvEC44wCgJzC+QGCBwgXIRwoACJ4oXDp4JEFQQACGgYAC+gXJGIMhiMRiR9GC5YALC4hgFABgWEGCIuFGCIWGGB4uHGJwVJAFY")) From 13d205d6f38de0b18125669c0501e1636e1b76df Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 31 Oct 2022 16:37:47 +0200 Subject: [PATCH 37/59] Added weekdays and hour line moving by minutes Also made the watch face a tiny bit wider --- apps/poikkipuinen/app.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/apps/poikkipuinen/app.js b/apps/poikkipuinen/app.js index 870b365e1..1e91cbb63 100644 --- a/apps/poikkipuinen/app.js +++ b/apps/poikkipuinen/app.js @@ -5,6 +5,7 @@ // www.jukiokallio.com require("Font5x9Numeric7Seg").add(Graphics); +require("FontSinclair").add(Graphics); // settings const watch = { @@ -12,6 +13,7 @@ const watch = { bgcolor:g.theme.bg, fgcolor:g.theme.fg, font: "5x9Numeric7Seg", fontsize: 1, + font2: "Sinclair", font2size: 1, finland:true, // change if you want Finnish style date, or US style }; @@ -20,9 +22,9 @@ const watch = { watch.w = g.getWidth(); // size of the background watch.h = g.getHeight(); watch.x = watch.w * 0.5; // position of the circles -watch.y = watch.h * 0.46; +watch.y = watch.h * 0.43; -const dateWeekday = { 0: "Sunday", 1: "Monday", 2: "Tuesday", 3: "Wednesday", 4:"Thursday", 5:"Friday", 6:"Saturday" }; // weekdays +const dateWeekday = { 0: "SUN", 1: "MON", 2: "TUE", 3: "WED", 4:"THU", 5:"FRI", 6:"SAT" }; // weekdays var wait = 60000; // wait time, normally a minute @@ -49,8 +51,9 @@ function draw() { var dateDay = date.getDate(); var dateMonth = date.getMonth() + 1; var dateYear = date.getFullYear(); - var dateStr = dateWeekday[date.getDay()] + " " + dateMonth + "." + dateDay + "." + dateYear; - if (watch.finland) dateStr = dateWeekday[date.getDay()] + " " + dateDay + "." + dateMonth + "." + dateYear; // the true way of showing date + var dateStr = dateMonth + "." + dateDay + "." + dateYear; + if (watch.finland) dateStr = dateDay + "." + dateMonth + "." + dateYear; // the true way of showing date + var dateStr2 = dateWeekday[date.getDay()]; // Reset the state of the graphics library g.reset(); @@ -65,7 +68,7 @@ function draw() { // watch face size var facew, faceh; // halves of the size for easier calculation - facew = 40; + facew = 50; faceh = 59; // save hour and minute y positions @@ -88,9 +91,11 @@ function draw() { g.drawLine(watch.x - facew, y + watch.y, watch.x - facew + w, y + watch.y); // get hour y position - var hour = date.getHours() % 12; - if (hour == 0) hour = 12; - if (i == hour) houry = y; + var hour = date.getHours() % 12; // modulate away the 24h + if (hour == 0) hour = 12; // fix a problem with 0-23 hours + var hourMin = date.getMinutes() / 60; // move hour line by minutes + if (hour == 12) hourMin = 0; // don't do minute moving if 12 (line ends there) + if (i == hour) houry = y - (lineh * hourMin); } // draw minute meter @@ -120,9 +125,11 @@ function draw() { g.drawLine(watch.x - facew + timexpad, watch.y + houry, watch.x + facew - timexpad, watch.y + minutey); // draw date - var datey = 12; + var datey = 15; g.setFontAlign(0,-1); g.drawString(dateStr, watch.x, watch.y + faceh + datey); + g.setFontAlign(0,-1).setFont(watch.font2, watch.font2size); + g.drawString(dateStr2, watch.x, watch.y + faceh + datey*2); // queue draw queueDraw(); From b91a08a4200edfb6eaa993a1287301c5ccbb5574 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 31 Oct 2022 16:38:22 +0200 Subject: [PATCH 38/59] Updated screenshot --- apps/poikkipuinen/screenshot1.png | Bin 52829 -> 6045 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/poikkipuinen/screenshot1.png b/apps/poikkipuinen/screenshot1.png index e9422ee437cb4f056ab93def1eed716ad4a3b7e0..23fcc348c14a5062d2525910be357618bd203256 100644 GIT binary patch delta 5637 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 literal 52829 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 Date: Mon, 31 Oct 2022 16:41:51 +0200 Subject: [PATCH 39/59] Fixed positioning --- apps/poikkipuinen/app.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/poikkipuinen/app.js b/apps/poikkipuinen/app.js index 1e91cbb63..98178cc9d 100644 --- a/apps/poikkipuinen/app.js +++ b/apps/poikkipuinen/app.js @@ -1,4 +1,4 @@ -// Poikkipuinen +// Laatikkoinen // // Bangle.js 2 watch face // by Jukio Kallio @@ -22,7 +22,7 @@ const watch = { watch.w = g.getWidth(); // size of the background watch.h = g.getHeight(); watch.x = watch.w * 0.5; // position of the circles -watch.y = watch.h * 0.43; +watch.y = watch.h * 0.41; const dateWeekday = { 0: "SUN", 1: "MON", 2: "TUE", 3: "WED", 4:"THU", 5:"FRI", 6:"SAT" }; // weekdays @@ -125,7 +125,7 @@ function draw() { g.drawLine(watch.x - facew + timexpad, watch.y + houry, watch.x + facew - timexpad, watch.y + minutey); // draw date - var datey = 15; + var datey = 14; g.setFontAlign(0,-1); g.drawString(dateStr, watch.x, watch.y + faceh + datey); g.setFontAlign(0,-1).setFont(watch.font2, watch.font2size); From 6518dbedfa85a71f64ff919e39a02ff80ad52b8c Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 31 Oct 2022 16:53:11 +0200 Subject: [PATCH 40/59] Wrong app name in the comments --- apps/poikkipuinen/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/poikkipuinen/app.js b/apps/poikkipuinen/app.js index 98178cc9d..026f5ea5b 100644 --- a/apps/poikkipuinen/app.js +++ b/apps/poikkipuinen/app.js @@ -1,4 +1,4 @@ -// Laatikkoinen +// Poikkipuinen // // Bangle.js 2 watch face // by Jukio Kallio From f56806cbd1af47d9309bfb60e3e033404822e6ed Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 31 Oct 2022 17:08:00 +0200 Subject: [PATCH 41/59] Updated hour line Made hour line move by 15-minutes to make it easier to read + other tiny visual modifications --- apps/poikkipuinen/app.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/poikkipuinen/app.js b/apps/poikkipuinen/app.js index 026f5ea5b..0bf09c5e5 100644 --- a/apps/poikkipuinen/app.js +++ b/apps/poikkipuinen/app.js @@ -79,7 +79,7 @@ function draw() { var lines = 13; var lineh = faceh * 2 / (lines - 2); for (var i = 1; i < lines; i++) { - var w = 2; + var w = 3; var y = faceh - lineh * (i - 1); if (i % 3 == 0) { @@ -93,7 +93,8 @@ function draw() { // get hour y position var hour = date.getHours() % 12; // modulate away the 24h if (hour == 0) hour = 12; // fix a problem with 0-23 hours - var hourMin = date.getMinutes() / 60; // move hour line by minutes + //var hourMin = date.getMinutes() / 60; // move hour line by minutes + var hourMin = Math.floor(date.getMinutes() / 15) / 4; // move hour line by 15-minutes if (hour == 12) hourMin = 0; // don't do minute moving if 12 (line ends there) if (i == hour) houry = y - (lineh * hourMin); } @@ -104,7 +105,7 @@ function draw() { lines = 60; lineh = faceh * 2 / (lines - 1); for (i = 0; i < lines; i++) { - var mw = 2; + var mw = 3; var my = faceh - lineh * i; if (i % 15 == 0 && i != 0) { From cf5b6ab14fae2d891e98e971968b6e0b99b74b14 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 31 Oct 2022 17:40:08 +0200 Subject: [PATCH 42/59] Create ChangeLog --- apps/rinkulainen/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/rinkulainen/ChangeLog diff --git a/apps/rinkulainen/ChangeLog b/apps/rinkulainen/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/rinkulainen/ChangeLog @@ -0,0 +1 @@ +0.01: New App! From 4d8a6e43f122db3ee0f021d65dcc55467565bd31 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 31 Oct 2022 17:40:45 +0200 Subject: [PATCH 43/59] Create ChangeLog --- apps/poikkipuinen/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/poikkipuinen/ChangeLog diff --git a/apps/poikkipuinen/ChangeLog b/apps/poikkipuinen/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/poikkipuinen/ChangeLog @@ -0,0 +1 @@ +0.01: New App! From beb8f52eb981783792d2eb2a4d7efa1dde3907a7 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Mon, 31 Oct 2022 17:41:07 +0200 Subject: [PATCH 44/59] Create ChangeLog --- apps/henkinen/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/henkinen/ChangeLog diff --git a/apps/henkinen/ChangeLog b/apps/henkinen/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/henkinen/ChangeLog @@ -0,0 +1 @@ +0.01: New App! From b5611ead785f29522a3152ede168efa8cb9e182c Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 1 Nov 2022 12:31:56 +0200 Subject: [PATCH 45/59] Create app.js --- apps/palikkainen/app.js | 184 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 apps/palikkainen/app.js diff --git a/apps/palikkainen/app.js b/apps/palikkainen/app.js new file mode 100644 index 000000000..42013af69 --- /dev/null +++ b/apps/palikkainen/app.js @@ -0,0 +1,184 @@ +// Palikkainen +// +// Bangle.js 2 watch face +// by Jukio Kallio +// www.jukiokallio.com + +require("Font6x8").add(Graphics); + +// settings +const watch = { + x:0, y:0, w:0, h:0, + bgcolor:g.theme.bg, + fgcolor:g.theme.fg, + font: "6x8", fontsize: 1, + finland:true, // change if you want Finnish style date, or US style +}; + +// set some additional settings +watch.w = g.getWidth(); // size of the background +watch.h = g.getHeight(); +watch.x = watch.w * 0.5; // position of the circles +watch.y = watch.h * 0.45; + +const dateWeekday = { 0: "SUN", 1: "MON", 2: "TUE", 3: "WED", 4:"THU", 5:"FRI", 6:"SAT" }; // weekdays + +var wait = 60000; // wait time, normally a minute + + +// timeout used to update every minute +var drawTimeout; + +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, wait - (Date.now() % wait)); +} + + +// main function +function draw() { + // make date object + var date = new Date(); + + // work out the date string + var dateDay = date.getDate(); + var dateMonth = date.getMonth() + 1; + var dateYear = date.getFullYear(); + var dateStr = dateWeekday[date.getDay()] + " " + dateMonth + "." + dateDay + "." + dateYear; + if (watch.finland) dateStr = dateWeekday[date.getDay()] + " " + dateDay + "." + dateMonth + "." + dateYear; // the true way of showing date + + // Reset the state of the graphics library + g.reset(); + + // Clear the area where we want to draw the time + g.setColor(watch.bgcolor); + g.fillRect(0, 0, watch.w, watch.h); + + // setup watch face + const block = { + w: watch.w / 2 - 6, + h: 18, + pad: 4, + }; + + // get hours and minutes + var hour = date.getHours(); + var minute = date.getMinutes(); + + // calculate size of the block face + var facew = block.w * 2 + block.pad; + var faceh = (block.h + block.pad) * 6; + + + // loop through first 12 hours and draw blocks accordingly + g.setColor(watch.fgcolor); // set foreground color + + for (var i = 0; i < 12; i++) { + // where to draw + var x = watch.x - facew / 2; // starting position + var y = watch.y + faceh / 2 - block.h - block.pad / 2; // draw blocks from bottom up + if (i > 5) { + // second column + x += block.w + block.pad; + y -= (block.h + block.pad) * (i - 6); + } else { + // first column + x += 0; + y -= (block.h + block.pad) * i; + } + + if (i < hour) { + // draw full hour block + g.fillRect(x, y, x + block.w, y + block.h); + } else if (i == hour) { + // draw minutes + g.fillRect(x, y, x + block.w * (minute / 60), y + block.h); + + // minute reading help + for (var m = 1; m < 12; m++) { + // set color + if (m * 5 < minute) g.setColor(watch.bgcolor); else g.setColor(watch.fgcolor); + + var mlineh = 1; // minute line height + if (m == 3 || m == 6 || m == 9) mlineh = 3; // minute line height at 15, 30 and 45 minutes + + g.drawLine(x + (block.w / 12 * m), y + block.h / 2 - mlineh, x + (block.w / 12 * m), y + block.h / 2 + mlineh); + } + } + } + + + // loop through second 12 hours and draw blocks accordingly + if (hour >= 12) { + g.setColor(watch.bgcolor); // set foreground color + + for (var i2 = 0; i2 < 12; i2++) { + // where to draw + var x2 = watch.x - facew / 2; // starting position + var y2 = watch.y + faceh / 2 - block.h - block.pad / 2; // draw blocks from bottom up + if (i2 > 5) { + // second column + x2 += block.w + block.pad; + y2 -= (block.h + block.pad) * (i2 - 6); + } else { + // first column + x2 += 0; + y2 -= (block.h + block.pad) * i2; + } + + if (i2 < hour % 12) { + // draw full hour block + g.fillRect(x2, y2, x2 + block.w, y2 + block.h); + } else if (i2 == hour % 12) { + // draw minutes + g.fillRect(x2, y2, x2 + block.w * (minute / 60), y2 + block.h); + + // minute reading help + for (var m2 = 1; m2 < 12; m2++) { + // set color + if (m2 * 5 < minute) g.setColor(watch.fgcolor); else g.setColor(watch.bgcolor); + + var mlineh2 = 1; // minute line height + if (m2 == 3 || m2 == 6 || m2 == 9) mlineh2 = 3; // minute line height at 15, 30 and 45 minutes + + g.drawLine(x2 + (block.w / 12 * m2), y2 + block.h / 2 - mlineh2, x2 + (block.w / 12 * m2), y2 + block.h / 2 + mlineh2); + } + } + } + } + + + // draw date + var datey = 11; + g.setFontAlign(0,-1).setFont(watch.font, watch.fontsize).setColor(watch.fgcolor); + g.drawString(dateStr, watch.x, watch.y + faceh / 2 + datey); + + + // queue draw + queueDraw(); +} + + +// Clear the screen once, at startup +g.clear(); +// draw immediately at first +draw(); + + +// Stop updates when LCD is off, restart when on +Bangle.on('lcdPower',on=>{ + if (on) { + draw(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}); + + +// Show launcher when middle button pressed +Bangle.setUI("clock"); From fdb96afb3d5efd0320a50a70d5e1a6864b65e5e5 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 1 Nov 2022 12:35:54 +0200 Subject: [PATCH 46/59] Add app.png --- apps/palikkainen/app.png | Bin 0 -> 2242 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/palikkainen/app.png diff --git a/apps/palikkainen/app.png b/apps/palikkainen/app.png new file mode 100644 index 0000000000000000000000000000000000000000..142d429e97d532e3893677ffb658051b261fedd4 GIT binary patch literal 2242 zcmai0c~BE)6kkwI#jze0>y<8}qtaxPAPQ?1ib;^D(a2Fy1RIh~vbbcI-31ax8Ldi1 zyue~dP-|5@k--tHS0h!6ZKstM4?Ixts3_Jeh)0pyZxiGYZU5LL@B6*?d+&SKCPy=K zs*m?a-Vg-&s3H`R;9JZ;p6=i?*7fC=5abq1M8|P)>KUkxN)c)GR1z+-q|g9|AX%t| z*6J4EoFEA|5@rm3bnFByAoLg<8>kkmX*q5pA~G2~DsyJEE^~n{SPzGWc*`s(AV|SE zt-z8(npxC>!46&&{N|4lSm03M7GQ9kS|gBC3@!*11&YLQh_^t-=nZJ3BD~!gNEmG5 zI2uKejEoFXMu3Q7jEE#SI2aL25vf!NG=!|x%xNt`Gwa7wI5`wJt78b7BPg?g=hP-q zX&eT_02j2A>vbL6bQ(iCnDsgYC-D^A%&~|>Btg3B;})Vb8Z+CTE|55cM}WGxn>t4r z-lNVVJ=AFv#Zjz@qC0}>=Ar}cVF=RwZWD`^ewVUZ{om>-Dc!EYa>{g&xb`A+i|LI6 zHrh(#NF>fuX^ak6ri1MHITFX`1=SE1oQzWtAgL^<1_nH`Y-J z)DfSW(u42<9F(1qN-ozhlz|`t#zsz^B2X#i6D7eDCkmw^rwdRv6xb35t3t~GEvXoE zvqT~kOQI!GG$0U_O!5~?QL)&;?9c|&qt|lU|I_DZKp@lWP>$e8+#xwm4@+cW|OCW#BTj3?60#eTBhc1_J@A zXccJqff0Zq6^jD9TV$AU!1n%xB3-ZYCNvq+BY5Y{yKE9*=R5-&3amP$W7h$pV_V{8 zup$|-3-=c7Zh|0}#RTYu9z6g-WAoDT>iw6__B|6i4Bk0TG;i$o)CywvkE^9#qxWx= z){&30_I!W!YO7ggE{Ip=3_Bru(dTeXX#pI`jH^BEbHC+yQK7#2o~)6zHCnfvwf4Jo zYN#?WdC^uwbEXMyC|vu=;ihkhli_{|T=-!5Fdz3_dy+?G4De6CRgoOCwzanKrkC6$ ze(B>C+wNI!sBYXVIBs}yh%U-sQ?-27a_s0l&5MgQIy~z@P|O`9w}m$K{Y!YV^gObr zEot=reJAZqUGmPYuj_= zl;27^Vhn8@UN5((ZB5?k&$q_j+&sO0!fj)9W$KO^@J{ohBj&IWB=X}Q7fW$yIw;U` zl_D(KwB$iySmaXipzPPRM<08S{C2wV=wsK!-3d)|p89U799L{^amS_{OU)XxWMjT! z%(DF6MO3zWiM?&nXe!%dT~6-d;R>c-gI6WC*tK#%7ko7QXzY3}vugKTV zd(}U0Lvz6`RpO97PvW0GqI2?kogU+{V)eQ4U)g`j96H$dipRXO&-dGJ`>%5V>UAMv z!>A*xyqDeWmC%?WdFg!{I`FegQZv$8nN_~e=L~(&?UGynC&e|PWp3hr(>!-US0UKu z>q1tCH$oxnuIru+sN5cMWK+$Gd!H$6Eh8?5XsWj*Rvl{k;h@?!aIfV4%H;DybL9^j z>ghf1*NQyt!_dA*TW!gjO{DI4vSu^cXuTi^ke(8tq Cmo*Lm literal 0 HcmV?d00001 From 5e26fb360b3aebed6841d6f8a02ad02124ef1b69 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 1 Nov 2022 12:36:44 +0200 Subject: [PATCH 47/59] Create app-icon.js --- apps/palikkainen/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/palikkainen/app-icon.js diff --git a/apps/palikkainen/app-icon.js b/apps/palikkainen/app-icon.js new file mode 100644 index 000000000..a99602121 --- /dev/null +++ b/apps/palikkainen/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwkBiIA0/4AKCpMfCxYAB+ItTGJQuOGBAWPGAwuQGAwXvCyJgFC+PwgAAEh4X/C/6//A4gX/C/6//A4QX/C/6/vC6sfCyPxC+ZgSCwgwRFwowRCwwwPFw4xOCpIArA")) From 55369b314e9e3735e254a0f3df99ef889710270e Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 1 Nov 2022 12:38:20 +0200 Subject: [PATCH 48/59] Create metadata.json --- apps/palikkainen/metadata.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 apps/palikkainen/metadata.json diff --git a/apps/palikkainen/metadata.json b/apps/palikkainen/metadata.json new file mode 100644 index 000000000..d63e5ffc2 --- /dev/null +++ b/apps/palikkainen/metadata.json @@ -0,0 +1,15 @@ +{ "id": "palikkainen", + "name": "Palikkainen - A blocky watch face", + "shortName":"Palikkainen", + "version":"0.01", + "description": "A minimal watch face consisting of blocks.", + "icon": "app.png", + "screenshots": [{"url":"screenshot1.png"}], + "tags": "outdoors", + "supports" : ["BANGLEJS","BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"palikkainen.app.js","url":"app.js"}, + {"name":"palikkainen.img","url":"app-icon.js","evaluate":true} + ] +} From b428cad98c194474f3cd4da2de37f5fddd7c49eb Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 1 Nov 2022 12:39:27 +0200 Subject: [PATCH 49/59] Add screenshot --- apps/palikkainen/screenshot1.png | Bin 0 -> 31010 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/palikkainen/screenshot1.png diff --git a/apps/palikkainen/screenshot1.png b/apps/palikkainen/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..7abbf67302cfe25ed2b2d7c7f97265fdc5fb33ad GIT binary patch literal 31010 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 literal 0 HcmV?d00001 From 1526cef140218651d5fe32ff9da955601b9cc60c Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 1 Nov 2022 12:40:50 +0200 Subject: [PATCH 50/59] Create README.md --- apps/palikkainen/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 apps/palikkainen/README.md diff --git a/apps/palikkainen/README.md b/apps/palikkainen/README.md new file mode 100644 index 000000000..81d857209 --- /dev/null +++ b/apps/palikkainen/README.md @@ -0,0 +1,7 @@ +# Palikkainen + +By Jukio Kallio + +A minimal watch face consisting of blocks. Minutes fills the blocks, and after 12 hours it starts to empty them. + +![](screenshot1.png) From 50de14f1dc6d5f0052eccbf57c91789137ba2f39 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Tue, 1 Nov 2022 12:44:14 +0200 Subject: [PATCH 51/59] Update metadata.json --- apps/palikkainen/metadata.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/palikkainen/metadata.json b/apps/palikkainen/metadata.json index d63e5ffc2..4ed8be817 100644 --- a/apps/palikkainen/metadata.json +++ b/apps/palikkainen/metadata.json @@ -5,7 +5,8 @@ "description": "A minimal watch face consisting of blocks.", "icon": "app.png", "screenshots": [{"url":"screenshot1.png"}], - "tags": "outdoors", + "type": "clock", + "tags": "clock", "supports" : ["BANGLEJS","BANGLEJS2"], "readme": "README.md", "storage": [ From 6b5e904e82023fb1163d980de9b0506df11226bb Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 2 Nov 2022 12:59:37 +0200 Subject: [PATCH 52/59] Create app.js --- apps/pisteinen/app.js | 121 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 apps/pisteinen/app.js diff --git a/apps/pisteinen/app.js b/apps/pisteinen/app.js new file mode 100644 index 000000000..a455875ec --- /dev/null +++ b/apps/pisteinen/app.js @@ -0,0 +1,121 @@ +// Pisteinen +// +// Bangle.js 2 watch face +// by Jukio Kallio +// www.jukiokallio.com + + +// settings +const watch = { + x:0, y:0, w:0, h:0, + bgcolor:g.theme.bg, + fgcolor:g.theme.fg, +}; + +// set some additional settings +watch.w = g.getWidth(); // size of the background +watch.h = g.getHeight(); +watch.x = watch.w * 0.5; // position of the circles +watch.y = watch.h * 0.5; + +var wait = 60000; // wait time, normally a minute + + +// timeout used to update every minute +var drawTimeout; + +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, wait - (Date.now() % wait)); +} + + +// main function +function draw() { + // make date object + var date = new Date(); + + // Reset the state of the graphics library + g.reset(); + + // Clear the area where we want to draw the time + g.setColor(watch.bgcolor); + g.fillRect(0, 0, watch.w, watch.h); + + // setup watch face + const hball = { + size: 9, + pad: 9, + }; + const mball = { + size: 3, + pad: 4, + pad2: 2, + }; + + // get hours and minutes + var hour = date.getHours(); + var minute = date.getMinutes(); + + // calculate size of the hour face + var hfacew = (hball.size * 2 + hball.pad) * 6 - hball.pad; + var hfaceh = (hball.size * 2 + hball.pad) * 4 - hball.pad; + var mfacew = (mball.size * 2 + mball.pad) * 15 - mball.pad + mball.pad2 * 2; + var mfaceh = (mball.size * 2 + mball.pad) * 4 - mball.pad; + var faceh = hfaceh + mfaceh + hball.pad + mball.pad; + + g.setColor(watch.fgcolor); // set foreground color + + // draw hour balls + for (var i = 0; i < 24; i++) { + var x = ((hball.size * 2 + hball.pad) * (i % 6)) + (watch.x - hfacew / 2) + hball.size; + var y = watch.y - faceh / 2 + hball.size; + if (i >= 6) y += hball.size * 2 + hball.pad; + if (i >= 12) y += hball.size * 2 + hball.pad; + if (i >= 18) y += hball.size * 2 + hball.pad; + + if (i < hour) g.fillCircle(x, y, hball.size); else g.drawCircle(x, y, hball.size); + } + + // draw minute balls + for (var j = 0; j < 60; j++) { + var x2 = ((mball.size * 2 + mball.pad) * (j % 15)) + (watch.x - mfacew / 2) + mball.size; + if (j % 15 >= 5) x2 += mball.pad2; + if (j % 15 >= 10) x2 += mball.pad2; + var y2 = watch.y - faceh / 2 + hfaceh + mball.size + hball.pad + mball.pad; + if (j >= 15) y2 += mball.size * 2 + mball.pad; + if (j >= 30) y2 += mball.size * 2 + mball.pad; + if (j >= 45) y2 += mball.size * 2 + mball.pad; + + if (j < minute) g.fillCircle(x2, y2, mball.size); else g.drawCircle(x2, y2, mball.size); + } + + + // queue draw + queueDraw(); +} + + +// Clear the screen once, at startup +g.clear(); +// draw immediately at first +draw(); + + +// Stop updates when LCD is off, restart when on +Bangle.on('lcdPower',on=>{ + if (on) { + draw(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}); + + +// Show launcher when middle button pressed +Bangle.setUI("clock"); From eec2d5bea9fd85637140b62cce78ecb2fed7ad8f Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 2 Nov 2022 13:01:05 +0200 Subject: [PATCH 53/59] Create metadata.json --- apps/pisteinen/metadata.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 apps/pisteinen/metadata.json diff --git a/apps/pisteinen/metadata.json b/apps/pisteinen/metadata.json new file mode 100644 index 000000000..f1137e589 --- /dev/null +++ b/apps/pisteinen/metadata.json @@ -0,0 +1,16 @@ +{ "id": "pisteinen", + "name": "Pisteinen - Dotted watch face", + "shortName":"Pisteinen", + "version":"0.01", + "description": "A minimal digital watch face made with dots.", + "icon": "app.png", + "screenshots": [{"url":"screenshot1.png"}], + "type": "clock", + "tags": "clock", + "supports" : ["BANGLEJS","BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"pisteinen.app.js","url":"app.js"}, + {"name":"pisteinen.img","url":"app-icon.js","evaluate":true} + ] +} From a01d91891d7fb29555ec300e305e632adc39b0b9 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 2 Nov 2022 13:02:00 +0200 Subject: [PATCH 54/59] Add screenshot --- apps/pisteinen/screenshot1.png | Bin 0 -> 6015 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/pisteinen/screenshot1.png diff --git a/apps/pisteinen/screenshot1.png b/apps/pisteinen/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..556c004c00f3d6ad39e63c7df34c8b1c4daa3009 GIT binary patch literal 6015 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 IhSTl;0?)cS_W%F@ literal 0 HcmV?d00001 From 4a60719456ba9e104eb88fbe9ef4bfa68c74b5c0 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 2 Nov 2022 13:04:59 +0200 Subject: [PATCH 55/59] Add app.png --- apps/pisteinen/app.png | Bin 0 -> 2403 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/pisteinen/app.png diff --git a/apps/pisteinen/app.png b/apps/pisteinen/app.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c441423c78d7384a5e58c9dde3c930e9c40d44 GIT binary patch literal 2403 zcmai0dsGu=7N0;BOQ|e95g%LWFt`+tCNl|;lZ*)n0VO~v4IqzNAWSC7NRo+}!34@f zup(HtThXIc>h>U&^#vjt>ro2oR`J;&ifHXo6uUlJWNTN!U03!?Kps`Qe@v45{qFtU z$9M0YR3;`Ye$#W7Cj>!nDq^Bk;2U#3QznDYRJSK;+Ev|}M zG-3=S8KP%dGmfHGtCepJ=F=7(Dv(GdC?-UOLLSiIG5ID|ZR44k04K#TM-<5r7Rt<0 zvU4UjfQ# z18qqHO-RZRfy>5OIb2~>>&R3}!|F%5#?IqOlkT^GGcrS-vlUWI6v#z5#+5dP$&g?S zL&y0^e>paK6SylrC9MJB1-mH6Acb6>XrZ-~0bq=3aU`sWmWu=uk%%Yc54!-@h67tl zn;)fSftC;h-7FCBFk!MF7{@~J;Lv%P5XUeVvr8LHk4DX^|DV2d24Ja%z*&klkS=L> zCL#>%urw?hDCZ#H2DM2iLu@<^sa5A0SR^b592iKo+00~71Z|R{&iOG=BSbFgIg=Ef z;6@6{y5J`h}lAG@(5Dn${6G@j54&AwW=*- zgbwtT42jTcDR7JVaH4ZyU@)W@KXjsnRZjx8R~Hl=pUU&lr05I54`)7ZlK{KnGq9n+ zszXP29S}yhC20aH(gJp2!Zz2x|x--fHD37ZH^);B3WPBw?$y7S;#FPvi~v5f3bPV zY5ir|&Vybe_abha{Gq$ZeYHZit(xN~{j8qr#ZB<9X6v@kjNMuFkJw4aXRLy!^yK?V z9r8cChMg3D(tUhMbQuhz#ZhAz0o8EG6;eT~itxWX?L5jD^)iFM` z6_}SiP;qO1rnZN8yRJyP!@VD=T!Z&ium2%ZK3l)8cIt+$y@;C+B`aCxdX8_!VrYa5f1t0dwB=h`nfoH$!ONZdYZlk%&S zf$Q78TwLc!U-9AwKB|bF{9yJJD)!h)UZsQcbkWc=ZI;{M#{Q+PfAhVl+kS}%%jRjWWnSvr zm(ta9GO(3fZ@fIOzTvw@+x2DoXQ%#t;6hP%>EMDTdbYc$YvJQYqGegr_eZ|Z@5=5u a)xyEe{udr;rT=#RH&R3=L^Vccm;DbE Date: Wed, 2 Nov 2022 13:05:35 +0200 Subject: [PATCH 56/59] Create app-icon.js --- apps/pisteinen/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/pisteinen/app-icon.js diff --git a/apps/pisteinen/app-icon.js b/apps/pisteinen/app-icon.js new file mode 100644 index 000000000..d8ad05c50 --- /dev/null +++ b/apps/pisteinen/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwkDmYA0/4AKCpM/CxYAB+YtTGJQuOGBAWPGAwuQGAwXvCyJgFC+UhiQDNC43ygEAl4DLC4/xBYMfAZYXfI653XX/6//X/6//O5gBKU5gGBAZAXfI66//C7s/CyPzC+ZgSCwgwRFwowRCwwwPFw4xOCpIArA==")) From e7bf14b24053b8fa8d23622f98178e2d074d9de0 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Wed, 2 Nov 2022 13:06:21 +0200 Subject: [PATCH 57/59] Create README.md --- apps/pisteinen/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 apps/pisteinen/README.md diff --git a/apps/pisteinen/README.md b/apps/pisteinen/README.md new file mode 100644 index 000000000..20e8bf9a1 --- /dev/null +++ b/apps/pisteinen/README.md @@ -0,0 +1,7 @@ +# Pisteinen + +By Jukio Kallio + +A Minimal digital watch face consisting of dots. Big dots for hours, small dots for minutes. + +![](screenshot1.png) From 60885e43b1b7f9bdc44431542f0ad83b78669694 Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Fri, 4 Nov 2022 17:39:55 +0200 Subject: [PATCH 58/59] Create ChangeLog --- apps/pisteinen/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/pisteinen/ChangeLog diff --git a/apps/pisteinen/ChangeLog b/apps/pisteinen/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/pisteinen/ChangeLog @@ -0,0 +1 @@ +0.01: New App! From 099277673adc895a2d9273b2bff83f5ec2e7c13a Mon Sep 17 00:00:00 2001 From: jukioo <100193873+jukioo@users.noreply.github.com> Date: Fri, 4 Nov 2022 17:40:28 +0200 Subject: [PATCH 59/59] Create ChangeLog --- apps/palikkainen/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/palikkainen/ChangeLog diff --git a/apps/palikkainen/ChangeLog b/apps/palikkainen/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/palikkainen/ChangeLog @@ -0,0 +1 @@ +0.01: New App!