From 3f9110b96d2b491554085a06963f5584f82ab779 Mon Sep 17 00:00:00 2001 From: MykytaPimonovTD Date: Mon, 9 Dec 2024 12:24:42 +0200 Subject: [PATCH 1/8] Update versions. --- .../src/main/kotlin/io/spine/internal/dependency/Pingh.kt | 2 +- version.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/desktop/buildSrc/src/main/kotlin/io/spine/internal/dependency/Pingh.kt b/desktop/buildSrc/src/main/kotlin/io/spine/internal/dependency/Pingh.kt index b9a1b998..59534e4d 100644 --- a/desktop/buildSrc/src/main/kotlin/io/spine/internal/dependency/Pingh.kt +++ b/desktop/buildSrc/src/main/kotlin/io/spine/internal/dependency/Pingh.kt @@ -28,7 +28,7 @@ package io.spine.internal.dependency // https://github.com/spine-examples/Pingh public object Pingh { - private const val version = "1.0.0-SNAPSHOT.30" + private const val version = "1.0.0-SNAPSHOT.31" private const val group = "io.spine.examples.pingh" public const val client: String = "$group:client:$version" diff --git a/version.gradle.kts b/version.gradle.kts index 0d857e7a..2e641895 100644 --- a/version.gradle.kts +++ b/version.gradle.kts @@ -27,4 +27,4 @@ /** * The version of the `Pingh` to publish. */ -val pinghVersion: String by extra("1.0.0-SNAPSHOT.30") +val pinghVersion: String by extra("1.0.0-SNAPSHOT.31") From 60910000269807aa3c9e678e9ad78d68d42a8f2a Mon Sep 17 00:00:00 2001 From: MykytaPimonovTD Date: Mon, 9 Dec 2024 12:27:09 +0200 Subject: [PATCH 2/8] Update tray icon. --- .../main/composeResources/drawable/tray.png | Bin 53287 -> 35728 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/desktop/src/main/composeResources/drawable/tray.png b/desktop/src/main/composeResources/drawable/tray.png index 2c9c59402ffb24f7a3d0a86c825012d57a52bad0..ecf1332b0dbe31ad27985ad5e34a12e5c7b5eeb5 100644 GIT binary patch literal 35728 zcmd422UL_>(k}cq84Q4A6oE!TfhOl1B}mRuXu3&~nO)NN(DjCDJ@Mk zBM2e_ABi9eGVtGK;HP~Ef=Rlnsv0Pxy&N1lj5Jg@E(uFZOI?PbOUVzCTD9L8(8si% zRquRaM)CEFH; zIilORBGz>fA;Mm$P0VHAc-E0Kmg+<6;0rQglD^!W>onAnFZ9O6Y4nv|q#c|!pu*rG z?RQ(DG|i=1a8)!mWHEi992*U$mY*=8iVq z@JBgLdVRm;(wtBPb;^wW0V|m(<4M)!$4GJZGc_vHcz$XF`rp&S_iw@o1ET>nI z!6xWNN$*zSZ}-B8kKxS|4wT%ZgXz{3%X1nBqA&*Bq=B?h7b~x5tWt^ zm*DvG9~?}FK|9G9sa^SVGVo0v?t;a7%Lobv1Ox~KhzfXNoCSfkNDB&y2#SaxKnsL# zkS7)yi175~`r8O;EGcQr_=2Sh|FuqU7cZ=ruZx%WUtRvE$^Lr%TfV=o z4s7nfZvHn#{H-C@)#=|zL3r~&jp-QZ`fr*N-u%@R?17A$7s`(yiI&>m%nI#=az)Gh zwOAQZVFw{c5ho#ps3Y1DAuS~)jF1);b3llSiHS)IJEFy<9i<3sB#frz>5D~rq8tgM zfhPj4U?fMR2Sl9D1q4vs=dq$K)p{q-@fz%!8U|F|k? z6)9B}VP#=uNij7M31w+@H8lw^oQS%Lx~RIcx(J*DjgoQl!gwHojktOsogD?eJ)Pkk zf0sbj%iRm3>xFidhl~E>b1eXY7%wMRcktq$q44*LWK=PZNUWn8_>qSLzX2X2i4c}H z5f+va5|a@Z5fb{NDHz|?Dd-=X3X33wKvNMJ5pfwY&{X8_O@Y^C@oK{BgPv8W+V6^kl@d*#z+ru zcSm0XM~s1MpriY5t^6L-g5W^zet)!>>&NO{sAtI1bzO4MTh`%kP(smn??LFjjxvzHUNonRCWd) z_BR{*y+H(&;1CfJ5a+mL?&^v53h=%Bx3N(!NKa=+5ETUBg8xn!l$WQ!BL@3-fxM9z zB-nJIb9uNE#><1_4@bD}?dZ&b_4@N0!7cvnkZ4DY>py7d9|!zvHje+Zq5q@m0mMk6 z9VMj^LP#eRLQ+ah1mPf#Mj?QSARVQ}C8Zt20mS^F)BoG5|IflWh)Fs)ib^3I9YsYE z!V+R=gcMR*3?bo&k`@;NB8eaYWc)9}{0SFAGUAdlVq$-Ti~mRL2v`omjF8^m?yjic zXd>wEiT*Qc{{^)Fea7|wb-w?&Ny3hjLSkqqafGB35)C*K2x?LeqD}}DTFk)#Eg~W* z}zRe~kwHJ6QPtZIc8E?EH_gDfrJ3^^fmre*}grgs9?+1>9KXUq#RV zstpqQ1BUq*=OnO1G+>GURfi<>_xe9!iG;xS7gGI2dzArMB@hVTKO?OQ()q8Ls~{|` zEGDL|Dy1%|t}Lmnss=u(s;gg-5El_uQBjvtm;0?ech|r7_)lE*f9>%{D)-NvTS!7m z8084UAcz3NX(zOhqy+Hle;DicI{sL?;QwC6-!xCf6-yw0f6%}` z7ypmUNkQr##wOSY5b-}e`bRVRmvj7X@DEubnD+N0kZKY>{*~l{FMp-Uj-G%8VL%cr zL{exBLBaW2YRV>oS<6!aq4bW&x`=cFH^(&a%pT|;3s43AJ6x9;HWF&D??W%VyQT`}I@Ds@?3RH5)a^LP>RhDkwj(DN>QBCH%nPxpaEi5zNJTV%XZ z(ltX2i61LKN++$za#8H`FK55Y^QWT(N+LJ{Ux~K(VrK(GRDo zIMt%>Z9){uA(R8vuqyHoHzG?(&Qqz7Lu#i2*3Z(^#lTBBIP^NyNm6MlrgqcQ;fdl+ ztj4Gl$5+4ULE?u@`27=zf(&e1s!@lqx z!k1w7q@pijpNc6vb2Co%k(SG?TsShjLNCoB5AA6MLs31IQS)ZdPjw|8BCovI0Dhx( zh$fD5GO?`&P7gc0nkGlfPijVTDX%bo)7_{;o0h3$&+GanzVH`3^cFYli7(k61f6tm z)5#Rl6jc??g*k|A(?F3yqw=Y>30m+e+ z15=aSVX#Ok+Hq;#p9Qh9M3;;@E=u6es85b(u4{5YYC4cLhs9!$1tsebZmcs+oBgT5 z7Bg}(onEtNS$oh+=x5~ct2w>(F`GH2JQ__HhuVn?awDV$ur|(I#Ty4VKipyEo`xwU z=ihABUiwr>hPrb428_tkzPA#~17$<*4NlKFSw=&OwWSYWRjFsAY0Pe|iQZxqE+nVY8{ z4$AWnUX06yJhv*PX$2BUZ%phS(1q#75Ygu%Uwr)Nd}>pU2@_pM^0!o+<#H^_o+n4K`TnkrJpKS;P6t{V-l zr_e)iLEvw+-UaaKM{UiBue$tC8?8G^;WZS4U*hdhG@-g%up$OnQN|-Ixb$UZR zn)~juux{#2YV}KG3yu^(J^CW#N@`ZGefb!6A@!zL`8N|7*2pAq{WXJ$ICpph>yOjk zCzbfgHmOn-xa?n^s3M1wF38n#MS4=n4H~v{ zs*Sc4=349E@|<$`)uJyu@K)Xoq`hftJU%XAuT7$}@ltN*3YinpuI2VQ8YB;CBt>l9*eLfWkS1;TAZJ+{N-OIM@-)DUT*f~=Z$2Cr{K1!t32~}4pkw3hdHZbr&z1skaO5+ z!8j`OeD8+0?Fh3J%-fvWE2aWH)8(9!O70k7Ap;atHml!2mF98uo6xuvp{LOEwMcige{X*ld>>$3;YZEco3zN<~J|Kx)eM&>)LGZozXC6-s zbBE=lNXbVFdJATm;Id+LA>&qAgA2=%!wmH@v6_E4Ti);g&EMw97c8T0Ym^+dT*} zWzoHavnQrrD(m;Gx7(!<NrQ{SD82Y@>DZX4rBE;C1)ZA-ERw#OB3BYy5HOc`GXWAJP^j>#|X4>0p zM=IY1HAt5sn-libkU7!rq&pmWe-olF=N*_Dt2oqPW7ssPd}tSYQ`pOtoVv{cDkBc0 zY6}5FYH#JlJX(O=^P42SG+Uoprp+L4fZo$@csMh3zsoLGip_r!Li%A(u4Wq ziqA=5hVBRCRs{&xz1uXn1>2hSG&^1SXs9FAKh6X1twA~jOfzlrDg78n5d`O-tp{OD zlx;5O>!m5>nl%O$^y^2%uth$qbjrsy;oDVP25n-zD;Jo4h~#MIoFmVQ0lg(PNOvZ9 zpWnT_oZinBbxH1WiJYDFOvrdc@uZdlN+xMn-jXa`c|&fW-WpF-3Aa6d4zoPpv1>!zc$5=*r{sZ=Q``{uDVAZp#|Z8Rg1Y z!CPT${h2&8pt*(&aEMkPp88R&Kt=cJnJegT4Pd)6}nt`n7Hh|YLvN| z4M0|)88&;7RH?_Z!@S;Xp(&jzPS=@MB^LV}7#uMh!(?J~LX;YX7L3LSP{Lr-mp`3G zw6p1qt^B9YsHnxk3mtlAx~dOHKm?>13hG$Z8quLJ4O$Vn=)a&IU-t>_kpUD&Q=;4f z9E*VwCtPIQZ>Uft`a9;?Jk@yvpS<%;63N!kgwar$ zK5hg$ng=?9)eH&~j2M2F-@(-V85zCh@q5$9A?Y}|+j>7B=G0#{nUPcH7$yzfpGin$ zYfx}v+N%#ep_Srwo6a^_KxS^?bZ%<~Lnnd#hNvIb!h0i3SR**qp76L;J|K;qW%iZQjD04%VdIp9-=7kw0c5WI3BU^Stzf#P?8? z1IsQcE!JSPC>M*12CP@v08Et82n}K%tH4Q>P6PaX4F{feq*_4OH!_lFH`3-fe*6mW zfcz)WhLco@@uJ*L+D`2|-&#SV_JT9AevfpmqOV2KI3P%_Br{+Um4}V!+e)6AuzTu0 zJTG9m00?Aw1KX;NkI=sCoKY6F(eSpJ57mc_MaJrBkNQ(q0rRQ^!#@G;zi4&Ljd3rd zQ4vdk=q>ct>AV3EMde&=}7cb|yk7HitxQOT$t8-uZO1x`+dBAJ?h(9E@O zqMJL+^|h}okUXUB_A|!R045) zq5uyT7Q^e1u_PEpW2w|(;{NoC7$eM9cm9sdWoR7WH-iK&2Ed4Bd{t8pm`*(|-G;9^ zLepKc#p=cnn3%q8sJobUxQ-9lR%rzZgFGE3j+EkHdfYTiS3lFjF zRkR|A)q{w)V3>GuTM|yJ`oPmb4u-nk`t2&FWKdzP?y^(-t`Uvo@X! za+01h`t-nLxJebBj_OSbqK;K4Xaz{xDsGAgP6Py7I-+ z5X?;Y(Z?sM8oa!`Hyy=wv?@H#s?|^2y`S-N3`Pj3qk!Mv>EUydwBqJQSe@Tn%iFGOjXY#TCSb$FYTGA?ri_r1c~uj zZEfv{`pkgz91Mdql_#bv){3+|-vcRHsZ&K?xz-;uk2a%pbsMwml=$~iBYcuFIv z%HYBLiXnP0f3DvSJ$UcQ8}EIV`CN^p$CK4==DdPQZ)zOrJw4pwZZ0hF_B}p2rH~~? znIG&WJ95jfBCznXy zwkgoJeIoF-`L_&UpFu|KFZ?t|u*Rsdx1uHQ;=6b6%8}|!n@eLSLRP8;w-4UHE+IU4 zPK8I4Dn~wgG;C3crffavpV%CGmQrEgz9W*OBo?pyd<(U@Z)Iz^a)BqKKZVZ-D&U;0 zzep7doVc+a{%|fC?lIxnN>|#nE`wb)ymSBl8P`qU*o=zcEnd0fQLehZE;rq7TF!2c zPX!M64a;n%fcsa$0!c4JkCK1cXwceOI6N(_eBcjg&c|PeSH0G_Gf(EJWK=PcwydJo zzf*fwS)UR3FTdoWlYVLrv11)>n;Fne~^fcrT>8iWx<7=m1im-(C3v3JIrAi)B9%bHG4xW8fx`1#=m z8g6%taw@i16KzS~m$nORx4dxm#EB%QuMHgA%GyQ5AU@y5$&GQ4ws~CuX+uXXz4Z&l z3GJ(`p0KmRn25ucodDlD>|V3OfQ>Y3=*g=tirdd zZ?0p57Yp-a&uO_9mG;*P4&@$fyr8&8WRIv0U!ogXuTAyAzZOCN6q>}h<^P-vA_jY* zR%}smvvv$ax0iK^=47rydD>_4?K>x%7y|B(V+(ceg+Z((+6+@RXwuB9-|Q?3!==dw z(4@AAK_=*@i;TViy$;M^u6}~a^4OKpRXV%` zvI+diu*47-10BdZ!7A z^JfpTaLjOW2W=)mRtnVUVdnb?Z_n+H1cJq1k*u<}^EA)3^>$E@|EFkK|YrFUiD?iGqwn@(>+AelH;e;9F7-Kr)czP#1W|J0ArS{)z*W#t4K zSrKb`XPMoD7BA0ULzNf`yZ6h62Ly5y?`~~A(b%T^>&Kz{7ZvtWMU^hFNx@~%`jM|4 zl567m@fM^C+zaYT-%mi$0|{J2-NV*9IF3BOMEMo;W0^1kuj*lm!S(o_v4GZFIvO<6 zKc44`IgzHFDbL68d(h&fA<6+$l9K@lJO|58(qp}BnQ!;6md)Netq}FS)J|=f4AX~I z#voeL%7#Bu4rJ2@+^;U&sJc=BW;;8konz03SoDDx78KB<@H_Aw+>p6dIH%fonn*aq zISZ!eJCGcp-)?Hb6m4*Y`cds=SD6@>dO#LZy6nE+W{=qah$TU4_ECMU8RX%St8K*b zm(Y$80WPfXof`4*+$J4@V5?cH51$msqA*QDfEJrSdslgUjXHCp)L z>OT6;7Uk1nY~w~KuQ+O7yc^^(Yb`V?*sye`1a8rNK~sK|O8 z{BbUDyM6>cgH29j?88rENoa}U(&JKFQGPFf8Vy-m!HrabN~e0b!#s3cEd%IaJCm}} zJL4fylUp$q8><6vYz_uKUrW4vRW!5qp!5w`9w(A-S?XMt@mxK7s_fexop~({G*x8O zJa7E2!^nC-t!D33MC^mqREIv)z^`(owdRTYTzz*rnIUty!5 z*mh&BVgMPBsEziRFyg0xaTMM>MO+vG^3Jy3)v3onJ~XUQeEwV(pq`i~hM29lZhVMu za@(8Iai(1~w;ZFRRyZu+U+cXO0KYFo^z49~JfmQ<&}mas%Aw@Xi&2W%aVL)V15#5{ zzuVqu>-#zLEFSoL6p>lDF0X$LnLIF$$2d6vNp`CvaAT-gPg$Ts`+6op4! zwhh>~W%?niH#s6#4=ft6lq>ZI{&z!yi*cGBBJQJRb>AzCgwZ_)9S#+mOr%9-rl?V; zBi(Kq&JJkdaCH80&1q0r3@Y3ZGlinU3ENK9_VA+FbwSs|H_P$38BC-9a^ArUPYW6n z%?oFCf4$ie#vKJzU^)jZTHG%)BCMDfWRI}A+54CK<(5g@s|>xc%hPOU-OD*8W2KN4wg_&8{22oe{G*F%{~I6$~xdgoAc zsyU;|sd74oUGH^1>U>A)TlVxsdTrZAzwVzgU3mdHEl+s)d0KW(>&dKX4hgG~xNw(l zp#%?#`$5d#E5xYPfVky3lTLLWQEfcIa)R@-+m8Hpd-G0Ga+l&MQ&ZErEk(&M6&mNo z*e>3`7V1buc53{S3)zsQDm>U|{AJM=%K4$}Tj4?x!Up*3$b;|_zk6n6-SLSBMfTqO zh9xV$aCl?{wJ@La#BPP#Jy4~n9%BS%9^wjxIDL9?I8A{ zAEo}xxED>idGZ{)03H7Iyq)A^R}5QtYSrOl1@`TkrK&eVL&EEWZ%S~>d z;|*L7)!oG1>6X0My_YUPBkBDc)=%7R=pHXx72uhT8=7(aUq|{6H}(d1%Txi8uAk3} z4sYfwSQ|)A(UUuKbbwU`D@vC@Y&e(Ocu!jn?#4^Jdf@LqNX{cCiJj4Tl0^(S!U5n2 z&82ez@Ao=8gHO%)lglY=TMh}UsJbOIuGF2Xo$@BF+Ybe1I$y!lm61q81v04BW?5Lsl8g;2o@U&6fX#cV z+T4EatGedXM>DYr8M8s>yAndE8docIPoIfXp)+piF>Kd@$TIsYYd&m2CL!t(eja%C zL@I4eFtXy>g9q}$v&~5-!e83~X(zl|IeT~D1(lUN(H<4z{-dr;?v-!tP0Y+*SGt>+ zn63|;1f{t zl{^mYNv@kMoS^1b!2d%#gM6 zJU1K1pVv;{H`*_5x*cV(q}haqf2W=S_0f1Zw+3lrdVj?g7j78uS5*(HhRl9WR-J5x zwD|b=6ED}CoovE}pAxW%P|7SWPxZ8$tJeUzx!+Y&kxTUQ0G^kZpMRl=x7a?AECwp- zlE=%WRrB#Z?~2%7@)E-20Om@g@?BcJ7?gCn_S;H9DWI2I|Ag2zg6o@gXfRl|8%Qq? z6yLvZBqy;gy)s&XYCn`MFuLq6k{g3#R*5B2hHQFQY0Dcpo(^N7nMd!=L~}+aI20tA z+JEcRd~&b@*bhJf(xF{;-%spMK@Ev{_EN-IqPyp@&Q$~#y#rUM=~*W~^R_Qy=t|Tv5*T zhkhC9m1XzFAK}%5yfjELD}|idGJaib0rG8o4c+*t+L=^P@StT8ek#lRRS}d;o_S#U zSK9zMj238gnSA-NKc3fqi(2vR@_2P`<7Y(*qO73(J0fpDpUaG{y=LtS%J$TxLgMBl z?}K1UZQxAz4JOR?YV7!pk)qAAbGj`@8YO!I)8Prup?pM9h0Jx5}sdWxtz#Qv?aw z(yRH?g(wP6wXRDJ;Cw2ccYrN9WpVB+90Hi9(UE#y<=zV3rg2U&;8Ef|!-2#QR`TW6 zXN1Kk`+$1}@tZ8t^=1MBL{QCOM2%M3kA>j8_M$TV?-u+InF8>AcT1vAshOI-#?pg= z8rAhtW|s-VRf%2Ul?#3~r4Lfh19D?FS|DkPS+LV1gpHuK$b^lr^3*pWfXm5X>yk$( zBJ*#aqTjWE^d!n2q!20Hpf<(qB ziiZb6Pj=2iC*$zRjZZ4y)6xgk8F6%Uj}I&-wFLUQ#AEAmmU~CR=2iQhbdTL83N+G2 zU!WWh6(#qnnPZvk!cQ2s9_)m%^PCHi0`;>tY-*F__6w%+Er|)Ix$5fAyYpM-v$G#} z9Ot$~p8}i$DE+Glzw)`69Lmkh%d=mOjlWzm)&u1j8Q4I&&%Q^mW(cT z=$uBO9)k#xD(!0KuSsWc6nTUQ;&b#pV?SxOucMx|K^#Lh3^H&J8I{bbz&BfUYcnJ1 ziL{n)YNyVx>h7QPZLy99<)N6;HGD~49-NTvzxu)71tULye`~RMKe#Bw=(Z5N@a8gQ z&%4L-mTp;;%s-#o2Y&a`_`S-+!zmTO8R}MB^L4so3yk#@&l)Ra-|6mFh*_BmVP5^= zb$Oy@EoWk-YqP9n;5w&)&AF27p0F87Hf3f;W0}%e4ZwFU43%X+AOg%)fHtYz^o!HC zt0H+b`Vp`->`heH2d{xsS=@@qH+Dz*RKwT^EHiY zU-{^CG$?O(vxkg=Y$zShow->GN%Zf!Iq#F6-Kx}DWhe=`_mkCcgt*uQt6}BTm!9aO zpCr!4B|>(RIkvZ~;k;n846JdbfqW^pY}X=9`IbcIl2_W-xS~=?w$A5nW%Yf(6Pr3w zSeWQhgJlMZrqa_AEZ)7TX15yTOUT_{%W!Kq#I+_0o^v73am>lgh6!5n;=iQXeMUpp_%fDSEIIkW<*Uu*v^$Q7~^ zG5_4!u_QutCFF}RVJJ{#0z8>M_W4^~-Szh)b^}5nXNc8pu%LC`bdT&~g1&(JJR4qS zMm;CTu@t<#dG+mI3Cw-DcFJDniVJ~H5{7A9tw_UNdLjnu4U;}2#E9VjQ<559K{)c& zR%e-;6twC(jBDkfT9N)@r0=I$8#vMeR%vr5oAuLYdxs-X*Is+K8&F?a>HM84l7Y|6 zJ`*7+%*Iva6e`bN%2(t(B)rxf;5~Rpqi}1qti_VKK1^i1@>FAw{$-Eh;l1sP%h~%? zeB*_|??uLmbK62Dw0GWpcZ-{m-B{Y7?d$@vajE*izYrBQsE7~a1Lz=-5OHFusn=6# ztzc*{*!>eL-sBx9dqmw+AFrl&b{{iwIstuUbI^7Ut%a}Q!SZ~TDtOc|OZdZ${#31q zR^iYIwqJuqbl$tP8kvb_w9@Q+JYMx4) z*UC?Us13f(xcD#)+DXsdR( zc8`lTshewykz6@a^)xF|=E|kbl_4gOsK+>37UqAi1|a4PQ1fVWD5;Pu_TH;lR9s*{ z)tX#RA3YQ`P13_-&1j3knG)2#&2F9!5*VICoJrH(c1$6P{;n2#*jn#ue%-|P1bhp@ zE5p&r)7&c;CaSJgy|>+_9Pm5Gu;fB}btmHCNfw!tz;Et;n!@j{mHm-wzNtIVP`oka zKk){8_vYZ!tL8R7!&`ORk9vhx_SOo&RrNeKto_o-1oEb2A3{BdR^xn3OV|PO)+vea z{!f>C5oy}Xjl#|%f?QQ!5WvF{4RtbKF{^! z>$hDCN%)dLemd`zdw9VMCoMfU!v$q zYDIp*pQZTqb*V17?JBWj&JVu%*9y6+MgeEg)o`f>$1FBGWqA8fY&*!sl9+r%j#B81^8lG@D?*A1Xf>uIP|j6aV}$Ztk*C*Icrh$cTF_|6H!OUvAN6h}H@{ctEGC zA+(TCtEi-PXDJ$C<^1-mI+$bJSikiy>@0QPPq!`y;d5bqYtLW4e2tK_P5U^KC_|Ln z)=AP~eZX4cS$B4X-P0x6{WyhC3XK0W*qRf*Pa7~9o{wYhYC8T*j+qy<@>rRaPF_C7 z2XE)yl{|Kn-6;0`_4C`n70-(%HJ2SS+pKH+6(egV>nBLuOJei=`plvx*K-=-Tc_|z zZUXU3kx6NiJ2#(D{(>Pwb{>nc`$uSrU-e?ylgFfY?wLa`{T0b2f8H zTW$Bi(Omtjb0*!}Ops>^4a2V&EW$OL0GcCEe!SzER zqkcROs;UOMWY%$(rUDD0NA+Y^qY*WuydtY^Pp0-(Te_z~JTeA(`)lTrQ{7=Xj+V@T z{Uq00zT;N6A>)u#g&=++bZrVhbN$SXa}QSVY1e|Mu~AtE10Dgjt}&vVdG4RHIt#fD z!NIBZJ8CW{6U#zdTPIs%N(#X;C$!UQf7Iu>HZHe3!%?`(;wOi6HF{o{ceTd*FTc|P zv!>e!>|KrdCdJ&c3{orRXR!=(dE|iREz_?_FuE2!9bnL%2ulk4P=R`;X;Kx>)#T{v zMmVagSnJA6Pvl(x(6KWu%*KhxXFolU3k_N2+VFvtXm_rH`w5Kl&lpB%07fvKf zEl7E;^z;eYJDn@HLuUI#^xFvl+VTAbsA>&jqpFtbh6D<^iic)3&LK7+$fAIpMyUAW zfUB{CUz1Wpv>2z?A?z`plg8hZp1VWX zcQ2eX5}boK71c@JEXh!@mY^3zQUG(eR+Ac0W(@Sj0>W%&o!tp@9?9nm`tJWhBtTx2j_dh$hT zOkAA6&%vjr^U3s8EJM#gX8v$+(0gWsp|O&e4Wh3jk6eL%fJpw35$aU?`QfWcp5^jH zEp^zAqUg73^T(2GT#MkK>T6f#st_BOm|3aKomT_brIuW^zAYrpoIkL!924S|a*r?Z z8DqdJ#hhkSm32DDt-GaeIXM1m$ow^7~ewAy^w_7_iZ{h{T6z5UzcRIlq z{`z|2n^5S)GNHme`->~_@^0za)}42|ijg03bkA&u*5}3cQpl0CP2l8O)JY?WsH@RL z_Fc;j)?yDoC4_wy9-^%*1-WIS;u;#L_<31bciK>))Av&ByYJM(j_WamIPAT$$29vr zWkAW*6{$bCkC@R1s*|AWKCUtN>6MF7zJXHHJSZr9xb=~i*JDs*^gdEu9iY4zU$W+x zt_VAn%$3hmK07WJX2@k9Q*-keP>3zZwLP}P-9PWQn7}MkN1Z6W@I`ZK%PDhS{TW0N zBAB>(u%1AwL_6{6=CyrB28g8Yo;F`Tp^$k0{@{n!X9EcbIXDW-owN;st}pEf1w+wF zqs!DF)wb`+y(V2h4GQCV5jg_SU%YtxcI&n0;cgo6*Rw6F`Glz{2|H%@90Nx=mq2c`wP=f!xk+1O-YcZZ zU1G5(y0EaI(@k+Z`T?Zr#{UXjBa|e?x;t`LoKO4~bzCDllXjdCw8R2-|9bo3s_N8- zXld)3Pa_&A^0w!@$ROnQg_096i5nqLH%6<#;V~JFPhG&R*mRKl-3~vx&Z#r{ZeAP@ zJc=$+whw#P>3z0rH$YRX3WwV`il8|hUS6-ddJk{;;50mu7CD4HpBWBQlIwv_<-Lkl zAM$M2OZ*^cD~%U)PEWjNx*8!gjEyQ@3uDhb`TVXLb$@KLf0VfrUH$pGRe>Sebu!U! zuk;lqfXh*E5Iw8LUAY$CtsS z5_^2r4l(6z<+J9DeF`w#QYkZ|ZR72OgXe{XWSAX1o}xJR-sdwpjD4^#rzrSImB?;4 zA1KZ=UiNC4(*vr3KUjy4?3Ps=2+Z0s44D~b7W;!6KdLV>K(php1^~shCzu3cmuRlYwBSp} zjx1F={cMM5A5~%I1~6XxXGv-p0=s{lPjiB`F{qtefh|&8zI?fpGv@sH1NqRHy4r%S0UT0&poC=h41-@J2*pex~gki~HcE*66EvLc0U zg*z1cF_DL{Y;pO+m7E`UdzL9(&Np6E9a*&7^a_vy=>=;?w9@cJvjd|{z69h(QWU1*i1HgAVhbO+~HjyUn4(W&Q zKf-WZ5RHt%3BA+wx{FQi(V&5r8z@qlWntHGgEI@16)U=Q*icXl;Cq!(>^I0R6k_7BsZg~KH{u@afu!#Mwv!I^P#cy3B zR>s<07`kN|eonn4^|t3!zF+S3?!?&@Ve1C0)^i@?OcjX!!)c|IfXw%d;26Y1Jqo9P`m z^=N$xA&D1Vjd8~;up}kzp4N@0^l6xmt;s+4&>A zPd1#J^Kmb4Cj+>w78WM|$Jr)EU?HVBorOB7WdM7Zk@A2<39_ic-oa5IN4}rAgQbdu z6U9-Ae7aAmDmihJt(($Am|=^0-0$r(K>h5(!MQzGUdyM&WZ{q2Md33?NsoY2t4K>% z4l|$3eM{+#qlccVxuj*NIn++=P;J#&wUjiHtv@@6n0xo2Zuj-!M5hoN9k<$n#lr7e zSrnu6`p<74pP)2=shC(>yUD0L7vCP2+)GN=gK>}}oHaoesbZ~7SEt*>NLTmx$iSlx zS(j#8SY+UIRMwkaJL4{+qKx~DI4oi))XlsuqcTcMF{dk^I|eG>0UmNz233YyT3SET zAT#s%k%n<_zu}3UUveS`#jjsKLjccm0+(k7=Q35T)$9-P?|P4&WK?>D4Xx8)XONq5Y%Svl>jUt|Mm2@ z`-x}0>OOu^$KLn*J`@{MuYI{!k z!3@mP?D(Kke86Ua*wTn>Q|6U9D{%V?xN*pvno+8Y7iV+U#l!Z+hG<_WL2yqDWrWPB z5dJ1zvnqN9hTFkc_Tw1%2tJ=6dENzF4C0tLy>plm`fDKK2*kjubKBj?gCKy{ETq;=p}Ypt5&0b0mwQKAol`nTa2G4Ktz9qJUkV_g9wX#ba*NFhVY) z+6FQ(k=)|20|ROpiE?;C(e1rvMg-mP)H%f?bQ}RdZ;#=@<;@`>}F#wgWEdMK;wS8=oE0+QObG_`G)S!K2a)!Aom`v zNESmY)|I#78$ad-x>(8CLZ9O(Jj|XS9OFO#jL8vWd&1$a;C^+8b`Y}|;VH((dFJ`7 zdCFq$kR{nAkqb*H=`DvM5!;_vrW%t#-A>hi+EEgu{T}Z$Qow9ifjx13>@@<6PorB7 zKva~NybYZ05c6EMJMjrylf#cDD>CM7HYWApE`_a|VCQQB*WiTH6dbc_(B3eJc$&R= z>L+wHVwta3zIUyGC_LgBl!;Ya+OO!oCn(clw?-C(V<%-ALP^Tn>s1M1klw_PKaI#E z*VkRLc4}M%G2Rvr-V`2eIm@vO=tEIB&ZM#k>* z=Nhk>^YX!)Vr=>E&xc^Ea1>W;kCGxX5)Fjjy&DIp`Owua)Kf-fTI(5f@6JsY1LIdR zpAh__^PT4+x0ibjt*oxgT**{-T(^)Q6wF*^6j)J%i*yfe27{aobgvnk2?Yi*o!lj_ zp>Vvbs{Pam6zifwrHJb8WqW_U47ftZs>V0xX2790QnsO(Nq>JRfJ8N_`aXt z|ETG@1F8Jq_H*ovBAI1`NZGTAmHacSoXmaaAw{=njDMP-;;BDXxvSc zmfK7_+O_j6yul&vWzoXQ=)p{^uP*AY&B-e()aM>G(ZI>lnv-8`Bc%`vSYXC(8pTK< zNtsZ=Bm()R2cqMRY;i6AE$i1E3M`gJ6*G97((}&ELZJG&w1V&^c)} zJMbG-H zB^x<>x@Ea~5A3^dZEMfp%rmz1$WG^#cro)`hQE7i^ybRE83mIkEAXD@&RwL~{yr=a zoz}M{?9R{I+ZwgtIHUk*WrJj#kZ@M;=JTHboc085HbU=C)kc zO$|b%jLX+j1Diu@emJY`&QgHA2479v^ejQVxOFsqNkgm1j-YFdnxDor^7mH$s9)+U z^35!76lvIW5(H3cv;`yj!f!74)}qW9GlV$df|MO16*)(%&I6Aj)}h~P6n_H) zE6LaciPd`}!(F2&0Pv7Uax^8bgbBglilRJX!D;r3G99+S5IGG$Znt85AdSg ztKD*qv?JJGYUC7z+1==2KG@rmWI@Thjk#JiXcTS;nlsi>>UZ^+cj*)V8b&L0Rt^p_ z`|jczGtI?#S)*=NlfEl2CwKQMWI%rX@?+K3a17ILS#M2Aq@UXIU3&W)2J@*{Y*qsH zTEe9yf_KT+b9CbfN`LPySDC|BI>)msTAY)U^Vz0T0U{Re?2#D_r!al{KR&cC41Kms zhi)Fq)NGAP!&!QnGM#a|8XOHRq=(>xXtX^dz)gYDRbExFy!hk)Icxr@W zzW>U2?TwYu^p0OuK2f>Gmxow=HcS^PI@&YM|0Xp!V&;FX*jFux84Fet_S0y>`LRJP zZ)vHn%zEzdC7OGp{1c9miLRld%B3T!Bk_P-B-OcQL6G>xT-`7Cue(3P!BE_8t;6DO zB65S1*U|`tk8LN9DQI9O6rMdaF~dUa;ZK_7h{%SC1m7B$`HT zF;H~p%jeb=FgjP|N}l!v)rY1)#J)Z=_9jN&8fNTilbM3%0H2-%zz72h*Uvn?qR-`>Ufq@dC3`$ zTy5H0;$Pe2}w@cNz27=K<)4U+qG06vwZRh~NvzuxhztZf=*>`E8AY@ftN(u9Yv^ zyQJmnp#m8(1hG39n7Qy+)oQ<31Md66=g=LGShMjV$j-?rsQ-n+doY%7jKk%U&LtUc z3@X@1s4Uln#@=z*liI*9;;OAt2B1ZVzC?!|-9H9Cg#>8je8@SK``Z1wLkb{^(?5=W zD5k*l@>=@>;g6>{Pe&0j!ha4sqt;g@hJyd)p))iGEad&sS1#49LT2icuaGSV_&j0& zdnssc)Y17@_lzeglI8I*@ma@W8Z%*@o4iWr^}Cb97P8mP$LNPX`pb8x1mczm5fXk2 zZnZj)D2UMHUC#;;558Djq7t5=$y;Z(Gm^1uusHO_d@Op;yskQ+Hs(UOu-6)?Zj~Kf zc6JT|=pw3GsCqR5Gy&qAA$i`NX!_rhj)V6g_<3SwHqt6wYoBfiS@U}KtEb;Z*xB3P zH8zGBkL7ED%(A)cjsYEioT;48uVHR^BPq?JWfb85&ghl&30 zU0t(?`f&QROe^;fjha#(qqSf(yaN7IWO9;eyo7-Ax$B`XY$oF1>$0NLnd<}eXOMW% z1-YgxpPp4(N|Il>Z}uVd9$$-so?Zf&1eZneH`AM$@(Mv3YHCy`ui6B`wV{D$o_0xz zrC)GG{2i`6khiF%dt(S5Q<1>e4Q9MA4k76FYGbi?T@W>sh}%Op7}OZ6Y%3FGsVFso z6G=C7J*_t7{`&e7_1?h*J}op|Zl4dei?Ao>=MUOW#M9R&Sv2?{wem^DhY7U*oN!%T zU6o8Eo|{t)1#T+(x6Om89oglqr-f+aZI#NSoN*`FOPJ3r;pS=nco}`TjBtGa+?eD5 ziIDwy7(~i|xN&W3o30T!gjKuSa)x`T5=sMdEC^f4B4A01T%0Y!pemBur&(z;g8u zsFY>;%5_~ee!HLb9!>#TbmK)&RCg35T4igMpC8Fa-78tSns(y&xFSW6j_MVunHCFq zr0k&dY&ruwe%o5`>Je?s8=j8{@JvV24aL8FfB{y?OUT^SZ_cs~${6)=E5=$KbchSs2~rDEjfa`)7mvE{On>FFn7n{)jY3MaQu z(6rTId+)pO=p`<>>bp{VmROa1pzENWUzrG928SsQP-*Ih<&Q;KINz6!ct4!oGP|fa zKd5Ncn{7v^Qn%ZrEH^P(lx=z^V4uy#5Ouen5{GJf2`HFwU%5rrv*r)_>%Wn*0Scml zrT7R6)nO&M`KC;zdPnDYXy!R10f)fcDg#W+w?!M92A8KWJ;RAjJQsY8b#{*=YL>90HJYT(Fxda;!d!O-5h zRu6|8KKEVb+LH&--CLlA1n4cjiPZQqN;dXp6#L-g$B*B*2`@oqw2dr2o3ZE5SFb#N zM8_`EW6EZ{Rj=|YLBh9B>jfAFxWx8LRX+|YI5wnb(@ zoe-_qY&V=oA2T`}-BHN9$OM0an`Q()vsH4dEWTSKU!p%`g^@{)dirn`miC#3zEI?d zh9uImMWM@8;9*$G%9B7LB{1nRqm@*M&G{7G=HWFuM1F`IWAVKA3Y8-MiiHrF9d#Itpy93Y(& z;&uAT0ZX`B3*=;C8w3x$Hfvyb%4Ht2oa~5oUM-cH{_wQu-yk0I-)AH})|PNU^?1-| zY4?4rHI~f8-#&RLjsT(Lvt+kvu@5_vv|Jv zTx?}Lv%oAR~8L=w!BxiRpW7MGR2ya zNZo)I;j>+|FaC-z)gY94{#HnZ5*iz9o2NG}%zzgV5&HO}d=8~cr_wN|4-S(K2nFLBuu zs&$LS@{zW_ybw;0KT4yST8sH8PRZ<_nb|9>9b>NUWe0<=u`=1-ovB7;IC%=`H*#eH zlu~VcD4P(=g)HAOJjZ4LP|>#g>t_g8^bTM`Q;Hw&vo*=1eo=>1n{(r6+g_#w9G>Vm z_OVQtx>xSLe5aAsqY%fays_M!!LF`qQ0Yknx4bpaB^TRwhG3^!(*zRUv;7qWgnJ&q zF|}X4RN#@|}0 zuE3i9+!ASkjqK#uDc2mINeRHCXa~H*1M$pS)4S9*-YEIR!I2kd5ataB)f}&#O>;{f zM@Om#ne|sVM*hNYBxg0xJDe<*?Kk!yKJ*-y1$&q1)!&3rP42%}9(iIODRm`hez(XL zYC$dwodI<)Ao7>!@(6q!A!9OJmi2HgCGtCJZ_!jLvgtGCqs~+1#w3eGa*TvJ0TF-; zfoE3@`W$I6_-}#H;VbJX;V>k@a=|g@etyIBja_V{=`g~wGa-pLP5TYE{sZdT#`Q6W)AQHa=U0dI8+p-)TKU>a#Ry?gT!edj zW-ZG}?URXEqWEZNVv((-6d+i-f7$$!O?Q0Ic1b9kAJ${oW#(21ySmKI6@k4yVyI1h z$Cou@)vwYfI!SS92A}&S6u$pdh1La7o!H12cYI7R+2&!g@-p?JfPe(c3`6pa>EYHo zKAKuhNj$QZiX=m|)d4H1N^@w4KdEsh9dPnXwH$Pnx(->pS(`-BaZuJWU*i$waA#m@ zxL|7f5bkGISG@<>(mJYPx7tzN zatjyw)6ac%80xAa5IGM4bRX)%)yoKQCBlKMEiRm4$;kc#7`CmRH##*%&b&bYhHn?gL;COZvxbq?E&Z`})j^)Vi^`mx8F%PBhmVy`@|j z0aojxUw=_K-HNmAuQ#a6zt3F!(I6|#tvN)Puc4{=1giE4k>^1!ssSO;5jE(7xOb8m z5mmcmTXGn4qj>P?))ADeb-eI!OHQDLr0)!7Q^bpu&v;H#ASPz21|8PB?!+q#Wjwe> zwt%n)f(YXKuil}X2G|#cn)-ej39PMu?X4>DPQHHIhLx&8GrHz+YEE9>H_L#Ug5O?e zP45{QMZPiik@Wr+O#Qu}Vd+Tl&z-d_bhVSt$+y-fdbPzIXY&nb!B>`=ZcSim4sjc= zRkK+*GCF41aMbr_Co_qP01_QKy6~-)?25(Y-6MM7+iBdi_5NzdBY-DPzLR5h!V{4c zL-O;ym^YjjJC&_U=rOSeQQQ7PFBCDe z0TbL}x1^{S0!&#o+xhvXQqA*Q{p%eZ9pP4f0JvoJ1F!_1ZL*;`xT_~xg^lQM*9Q*+ z)ax{?Vwl+}AXt3(PcJJzveOP&ML!Id(bLEB6C6R*sZ&MRpYl3!8kTv-BShkNrXZ#l z(G!_i?AJIBFmpENdJ_+Q#yBFPu$>ZTxlVRo zq0xF?l%)D+-@J7N@(YXGc~yEk+9_3GsaPvAyoWb%UIYN>Z@v1wj+sFhiO^ENHYhP{ zMeY$VQb@K9KyTHtOa08y#~XZq92m|K&wmR|{%iPngnuo#mL~=MO(T@e1crZpV{o3f z^NVr7#gfA)5vvA(^FFLI-D{y~P19zS7b&R8KeZq;d1q~?v{L6z6rs@@kdEjp*}wms zuf{yl7@gbSU&L^pK0G0^)2gT@Avl`zu`qC~klNm(ZOKU4=^*a22bp+BZonsMQS`0q z-y)1k|8{%Eu^fd%xA*c}R?-mRJ6j$(59Yb0F)tYX)hc`0Z~qOlY1pI>KAF^Q554XmIvu`fu)S*c7`kX>(<7i%tHK=S!i9ruR{et$Gv%>jD*l7hT`mjg-4L;<*%a0sGSC z`MhgUR&?pb;sS8Q7y0GAr9%L3f736oy193gymyv#>3m)ZMBKs;$GJDgZ@k+ z4W#_>d?bZH<(YoN0NUrzpBFx&$~Xgzesuu3TNkbEa_su%okn%P{#vGUhi8g7SN4=H z@z+YL)C7?o!b-W-s>-jfqoB=zW9x^)a>zv_KQe&9`d~-!>es%~p+$Bj%r;9~9jY57 zuUeaJ%Yla`)@{z4S6G^UU94>Ody#GZb2=|AqJ^5H>t*Z7ogfNvO=52-19&+p-S$ou zBPT`9vHM>zS@X?fZR_29q>l)#d_G6})=%zepVp~rYOL+kN>~gH=f5A2{+D36@i!Hm zvoE$W#s+{@O?mO)eo$79O-TI z(bVX%5^e(7`27p_@7?=5VsOxTlWn~0{gI7SNZ5yGY`&3zPECwlr5M{1E(q{k3md*o z@-N21gbn=26pJ0biOqR(@TlCKJqf;Bs6B;&{j2YReMlDo#a0UX4OLJjewy| zL;t$4+22F(e8?EDd5X4Tix^p?+=N&xlXg!HFw)T(0+y5nv^3XByv5#(9AQ!kkXo^n zUeQ7>A<5B%6>h5l&_8&Q`_PcVW7tbhplV+qgi^vrfHvZJm?3F8REoQ(#$49S4yGCP zF+}U=QMEu1sIGa$R9ks}>$XdMHqVd-d+NHHS_F&~A|4(f^Y|tmCwEAtr0Q;gg ziLCpLH9R>)b%LXb8%!Z5S*)a#2k}@v(T<;OR*D?w=1MjbNMy|a3<8;>EEa8->9RSv zdp;mB{h?l|+lj-i9$F~Cy|&czJZMva@A&d}C>uk?TFC@#6V_dUBloMD8*-4)c~sYb ziOyz|3*nqmPFz4Cm}RX&Z)I=PqnW}QW6W|*%A2j_t?_R+Wf!{Cc$ zyw(u7pLQ7;i+BZ$KeqPeBoR^4Dx9}V&?{UF%*}bvmPLr2?4_% zn=fUoT!JYG$OMXZ>{8&hhPt{myEO*udOihld?C;Y%sfKTSXRdFq8pCHoA1T7Mp!turVp!`O=Mx zs%;qDr&l_+r@F6t#PJ(GaqYO;2I#}{8~`FugnaUgn<<|3$LSN5;!c5zrO1w~HYdjU zsCsl`Ghg!M{{<eVP1@)!6u!EI9EzXl&E%~om1IcDbvIJS# z_Rcv0mdt9L*BK~!e3h!7b1}|IhZmeqI^q1MW@{LL=`?^I zJzkitMfs}`YTeb*v670}j)-KDP6der&!u2VJmM8zQp&0U7#Og#n+U8FE)`h4k#7F% z!ed+6C_R&flDL46+AhWGgSOz`g|t5mS~YK<0(S`D*(KhacEkQdYM!&-jq@_SEVdBrL|2WLa$ zw6?iXZ%2Nir1#WnDH3$nNvk|Wfw@gD>dlTnyKVRa{;blQCi~m4E?E5xtmmXUPfCbx zt1wGr*heinU=&(hS2a*kH+T=OpP2P{kR6#x1Ss|PUeK9aF6|25Ibky3RIwcFvmBr( z!L<`{?^5uy<*FZ9Dc)~$yMGp(;#QA+{}9#FliR>r;dt2cC=wRd-En-q9!`PCgX)g(VZ@fD+M1M*XqRQSjM9j&vb)i zQ&~jM8nz|7m4YL+k7!2k1i1fAo12_a?10yne9n6y|14=Rmc4>79xp0&ZEN4NTbSe9 z`Zc`kus=b%+d$)eF0(FF^s2fe1w}XcTnc*y{uYe1VD_ zfy*;~;g+|d4izU38}|m3n>&Hs^wz)O>Ts62aUoxeTkb8Wo`3uG%@6E8lMdU!<(NRf zJ6~hPB-Z5$@iQ=FQ1_-Zyw{kIv(xJJ>({2BY^K&2mdj2i6mYn;-%oLf?#@yZXW^Mt zelg4jOga|lvWXC`*qa8*eFro7z(cy4(z^=#Z17%4COIMin0k`?#gmK5WwlBk`QmR~falzmab-8v#-2@pG?${5iT%LzdmT{k?o$En?L6Sw- z(Qj|FQD!T00%Arj4Go%eje139igOz}W#*8CE4ySrR*0){_R0{)$d@Lyr|mG-#PUIeE;8|RiZ z+1`tRsLPjqV&=>5sy1i8q)ZexmtreEN?yyHPSux_sPFD`f!W_<8!u6OOlIOJUcK)0 z?Db&qEp8(0<7vH_i6<0-(G9gop7^zn8-N;u$KAVBUm`AET%Jh+)jbD2dKBiqaYyws zRQPls-?$0Xk)Ds{JZ1Iu1^kJq+Ecz=`bCaIVU5yvU0j4MhGivna&^BAIedM#Pd#;B z-9TJr?687l1Of=mC1q+Gew7~xS)v|?U z24I#HVmb@P0{l$yvVJLW=#9B$PAg{PLP*C34-PhkW7}RooZ&~Hb@P;6`K4dH%>lR4? zC^Fq%lH4Vcr1uv=we~ye8k7xL)zz-()$(BiEr;Z9nA-ap9quCNHXO@Ga_G?9+rWSJ^LIL z_3h-4Q;20toXUO7#Ve2;+IYG(@$O)Yi#GAfvte>wVpPr-kk|7XR#DF8k&1!C4#a@} z$ae>54T_XEKhgc7ougygxERtk3^(Vi)C=iuUeJeT9%VPOi(n^1L4gd67$Y5Y{Dt8 zjprLbIkV-|47$Z-{;j`*QPUkK?rSzOxoNkibbiodIq3sP@elz=^f@(?3qUJXCXF$S z@_r^YISEU`Ng4bc#`vi!99F5Gv7KlA&3%PgVyT}B@>j2-&(i2!zW+%PzaVD6H7)FL zh+L%8)vne#1%%37=X_4~H5en%MCn6MYU%S^>QOPCs8}kdliB<`2@X!DnPAn%wbD_u zcR0rHFCkE~pVuQ96-mm-TT8>2t5O2tEe$8_vn7*mrq7HWRg&L-;7=1{rQULegTM6! ze$C%EdYp>8_??>M?o49?Y3?V2l~~+0N4gyqj6G1Jo+h;xPvN3P+u$z89oB?b_VzdnhnZ42}~R+C&Qz`iHSfabulstkHV-Qw*rYQ8HVD zq%uBE7H}sfD36$aPb}Mv3zz^4jK-^(qCc#f3vTD$iP|+f!kj^BKCBI!-*$8^&MW2< z>d>-Ic4v*0IaL4fVb)CQxe#9h+H9_;4W& zKy;Fe7x8~Tcv-5XiTsd%9Yx*}7QHu_opaO-u?c$>ffolEf$!l?)|I&x;L*|0WG0mL zMO6(5OoMdx?M%G9C!F6dJU9^BG@Q{tG&aBV5;sXa+wP-`7hF}Ycx(xCNZ+Mz-W*fE z-!ss7t9(bvK$vVZu!N6kKpIl*qiv^O6PU1^#!H~22u5W5<7^T@1usn8Oqm8cF((rT z*_T1+xbS#x^*<@zu>VQ%$`U#^CjC8?xo&|ygUo||UtlCTD=+A&C$@96&UclZJ@lTi z9I&ptb%ufAM#za)Gb^ssCn~{(ESp&xvRJHcDtlEL;~sdh{O|LwJ=(gNo)_r@uDxpD z5ooSEl^!e6P6&a62w)DvA;&MY%1a)|pVhK6gjdr_l-=FMA>^hX_4m0p-I{#CeoLvZ zXSadExsg$~e3hLL3pqZ0lynfE$ z#k_`ti+aAqs{h-f$H21+kL5cM!@j#W%JwnZ1ycNwrrB=;A>)Df?^T%nqHn{eR)Jsl zTDsW-zE%P+01Y~)QgKHXpQl=k3OO7tEiKDH+OlBC$!9Huj*hE}aGoB#R)Gh#Y-sE) zHopzohML_N+^sbE3xs>5f&~H{Up5ctL6-mvY4svVs|SF*Cm71KdC0a#(jK`nZ_R3` zWMpI%I99xyrUu^%@Pm8?Q9nb^n+M4%m)w`raQ-ZKxp*nf(}4|p=4 zY(3`>D086W6Zz;|b6B=f7_b7!{nXst7Z3V_L72e2AH z27TaF^P?{G{raSI&@#V|7gh#ex7keEJzj~Au!188FM!C@u^|>Ytia@hulP>p7CU?I(Lh{FAXp1auVf&2kh`u-FlBeBUcQh zx$9rC8arhCd&P>F4&paY!H>vk5CTx(v(nXzlReGYUpzFd;9rN7=+WGL zYNC}&C^I%h0pO@xJ*xi3sYA)c0GacTI83^l+5h>g=2T7I=@JE9XnZe?hAwBJ_v6)& zk%->V%w zuq_GF;$!Sj7Dz8Em@kItGFzV4&lD)Afd(AZ7_ZEtplGmLJmyCr7Vfecc;KpPaMaXD z=r5wgEDcowuloL<>yXw7bbN6Sf+?~dWLr!lZ9dl#wFu5 zgywGqQ*)$v4rZ(D{>uOpQ=w-4jDU$?n~DQkK2dYnL1s>6tXh}(Xaicmz#qCGly;=9 zFnYQqo^(Ogf^2*%tx7Hj6x6AWFX#6~B?)>Q^7F_b3S{RwcunYfi2s>0Z(wkI8eISV ztr2P?RA%?>GD9ui)bvFY$m0tXph7(NWZ)?lr(?TspdJFxRZvtmpOoV^DF;2h(r8u$ zU+#F>rQ;}4&`5-40Dr{}B;W6lIR|E zO^L7Di~QN~7rY>gck?p|z}e29I&LzNtiaiV1cQ*>gW5~CNIrX9bBuV|Fb1F+YS8i0 z!b|-vGWhAhJzx)I-Bme-|F*Yyedaz7r%k;i@H+Im2v^RwYMz0{01`c<|2j4U-K&m8 zK2N|ylVD92CsK@OA~zu>N=c^%K4O_7wGL~nPW3SuF56m~pt ziiuo=J}R*IA@~sl#Z%mWPtDoZ_kw)naDSg1ljn#VYp2M6H~4H}BDhH~&rRhGnIG%K zc252OmXGam-y&>mS05cTQPb=8Qk*|t=xKV`XEKflue$muP~9V-JszJv+qO^s;G{$s>K^dQ|8(PuhTc9fz4+XGb8YgH{pLITtVcCn z!|yAFeN`x{K`_>9?M{OUhVvLkN94Z&{e>=$;#<7ThkvSKpeeO)UQD$Pg{J;UKd5!pyKzVR z9RGsqL_c7tlO>NI?Lm9Mic^PfJ)*EiWkgtD(nOvmjEj09JG^;Taf72L;kR}CZ}?aC z3PfQ}s5ts96aV{7*&6-Sr;hpfhOA}?uVdc7lHI<3yL(?_ec@3w0>{53n^J?4gSBE63Yr?G`Ms#Uk(XCf>}o*3d5lrhkG9KmCett-7E$%u2~Fm&v9&iR_z2 zA0=1lZl(|xW`=AARtaU~Wr=myH7xqvk8i(_b{)T(!WfM&cUYHjn249SJQ?%sPEg!{ z-bY~ZYSFpZ2m9?Zvhu(T#Dmk;3O$z$kKgQ;FfA$iBc^u_W1DJ)Wi2SL8CJO?mZYYb zf}cwoh1Q_-(wcRGc?A-q*D3%KIevwg_}wI1F#1pLfUxkDy2bH6r6KsQMa>SH%~q#F zScte*9mGc+j=z&K`_uxPjH67;i&J7YQW&L23Mow>pYQ*aDG*1g5Vl{BzV$h~6D_x= zuXajTrna^PmO)}WH+lH+Uc@=kDp;I(N^P^|t0R|D>>ZvUYxRrIiE&IlzMY30dP~5* zC#FSj*E^cytI0U= zvzbOEMk{*pmhI+^TDv%_U0u;C&ErM^+=^PqA4{+A`enIDf6;z3BEMIQSxi-8o<@TM zKS$}$Q0W9Ym+Je#tn;^RFk&*0YYFv&Y0BhCw4|nfuf0wVLFO`Yh2BNo0QV@o*itGn zEVH3vKix`yQ4;+(F)hK!%tQe58lT5mCBu@3cAl~kCXu{)3 zbF;;}V=%qasP3n*Yt3a&rJ%+g@hY7C^4*=unxWLcjA-7_l;x&|VzieINjT61+$;sz z-RR5W-KX1%W3Cs8cUMrNUyAQ?q`BlEr5GNJS zC0ay^`Y!5SR+qPRqNlXdgVbAJwCW^K>0!L~0q0F$I9)ONVwC^;SyZom>vpM&R&qYF zf01@a5pVm0PCk8?@I=1*Qc5rMNt6=x%e@YfxP_yEQN?F!-RB{vd=N(Hsi#U1a`_Mc ziD5!286rRE%}0;>_k1AQ=*g@pf_=?qqn~#j(DdfV=thpZ=(s7Q7 zu)RQ>?QftCZ`-~3qTL2-@#F;V5Wj$phSbn4=757c(3a#A$7l!{-E%j&@G@G2;~|~cvwsNqPcRY0&@A&@_(1R#Aa)-wqlIrcTZwO5X*>IDj#Z>sE{#NCR7rC2C1~F z2T#GJzb8Vgb$HbcjBPW66(7cHw7s)LVp?^Z-sLmJ6TkCs(?UEWjs$r;$U8}(0bH&L zSkT^W{kCqjD}j!>@XC2+=7YHgfq#{qR~$b7`&BO(S_5erQ*KfW;Y%v^Y0_+iOXKGe z)$6lpc}b<=@LEgc0l@8Ukw)L!b~e^Ru}*l}GT^nuF6 zemZRRE?F;fvm%M@Kw&j}IT7a>M3#c59t5u-tBh43L#M|P2ToZzDEw(}C1!cBx8 zgTat1RhDp!5TbcG1nl;)Y9@(f!pQU5=VTHSM-@Z;huqHbQJ<%em`lHs);>4MD%Qu@ zZ-$Vxq3-r!6Ae z(eoMF9427L#5hgd0|cy=W?~ygU(Pic^T(_VR}=M8P*LSku=j1}#Mjo_TqJvd)U*G> zhOiPT{MagY+82!o36a~L+6sEyxE0jl8jHNH|P7YMZ z4n(V4s7zYjvULvQ3Zk~ZgEgZ6!+K#o62Y|9UvO6Ur=h{@A_X1`|64mUKQn zA^v)9!kjoKQvr6l$Xio%M1Zyke9T?=5%Dj1&%CFvy^}j_pD9SFV{XA94rW^p)}PTg zH3CXq;%c4C;&*9nHd8z1#-K-52JQhkw}trl;Bwei1gpYBxYrFmNL#m6pK_x<*zWiK z`8^B&kp{u+Sj!NBJoMf)xD1#c#scp`7s=`=#LhC|4LIu%JNv(PnT)BNum`|FHeseE zDyJEX6DN_q^fv;!cq!aM6`VY?^Bw_Dm_*-?O{lFG%_cM}O=3m3t-7=UekcO1PbehM zpgKPiip8Fc*TnYPrS#^?cds*x0XkwPp&dqm<1IK3R95H{@sY)3i)d?G)gPYK*k-xJ57bV;eO9q5Cwfq`ViUShfv4J}&QDC09lx*3=^ z=rJjs55F6Ye$vHz%5eVgD}xFafzx^u^PK)+i2b3jVdDp@@MFh=GJcv^Unb+a`ny$M zFI)U)T08-}L*o%+^xbt#)pmX-zKcgMz27^kPgX;w=okW{PTZGAx%(`T7qLU-zN*^7 zUxZI^{L&>F)@IWkVi@ukGHpu=m}U-WOZU?$LFKTCb^DGy{5~2^iH@uAg^&NuOKoAOHXW literal 53287 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 CZU(Rb From 7a10c69de829871bdd3607e8acecae60d386f820 Mon Sep 17 00:00:00 2001 From: MykytaPimonovTD Date: Mon, 9 Dec 2024 12:27:30 +0200 Subject: [PATCH 3/8] Delete useless JVM argument. --- desktop/build.gradle.kts | 3 --- 1 file changed, 3 deletions(-) diff --git a/desktop/build.gradle.kts b/desktop/build.gradle.kts index f70dfd4c..f4f97a01 100644 --- a/desktop/build.gradle.kts +++ b/desktop/build.gradle.kts @@ -113,9 +113,6 @@ compose.desktop { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageVersion = pinghVersion.extractSemanticVersion().value macOS { - // Changes tray the icon color depending on the screen theme. - // See: https://bugs.openjdk.org/browse/JDK-8255597. - jvmArgs += "-Dapple.awt.enableTemplateImages=true" iconFile = iconForMacOs() infoPlist { allowBackgroundExecution() From e32bc58cac4470dde5368cf2b542c4fd2777b904 Mon Sep 17 00:00:00 2001 From: MykytaPimonovTD Date: Mon, 9 Dec 2024 14:00:54 +0200 Subject: [PATCH 4/8] Create a `LayoutConfiguration`. --- .../pingh/desktop/LayoutConfiguration.kt | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 desktop/src/main/kotlin/io/spine/examples/pingh/desktop/LayoutConfiguration.kt diff --git a/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/LayoutConfiguration.kt b/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/LayoutConfiguration.kt new file mode 100644 index 00000000..954015ed --- /dev/null +++ b/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/LayoutConfiguration.kt @@ -0,0 +1,73 @@ +/* + * Copyright 2024, TeamDev. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Redistribution and use in source and/or binary forms, with or without + * modification, must retain the above copyright notice and the following + * disclaimer. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package io.spine.examples.pingh.desktop + +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.LayoutDirection +import java.awt.ComponentOrientation +import java.awt.GraphicsEnvironment +import java.util.Locale + +/** + * A density of the screen. + * + * [LocalDensity] may change during execution, + * whereas the device screen density remains constant. + * + * Use this value when adding components outside the main application window. + */ +internal val GlobalDensity + get() = GraphicsEnvironment.getLocalGraphicsEnvironment() + .defaultScreenDevice + .defaultConfiguration + .run { + Density( + defaultTransform.scaleX.toFloat(), + fontScale = 1f + ) + } + +/** + * A layout direction that can be left-to-right or right-to-left. + * + * [LocalLayoutDirection] may change during execution, + * whereas the layout direction on device remains constant. + * + * Use this value when adding components outside the main application window. + */ +internal val GlobalLayoutDirection + get() = Locale.getDefault() + .run { ComponentOrientation.getOrientation(this) } + .run { + if (isLeftToRight) { + LayoutDirection.Ltr + } else { + LayoutDirection.Rtl + } + } From 0946042ebbc46b03df8c86ef0d8cfc047d40ef6c Mon Sep 17 00:00:00 2001 From: MykytaPimonovTD Date: Mon, 9 Dec 2024 14:50:18 +0200 Subject: [PATCH 5/8] Create state of unread mention's count. --- .../examples/pingh/client/PinghApplication.kt | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/client/src/main/kotlin/io/spine/examples/pingh/client/PinghApplication.kt b/client/src/main/kotlin/io/spine/examples/pingh/client/PinghApplication.kt index e7fc5464..ccf9ee21 100644 --- a/client/src/main/kotlin/io/spine/examples/pingh/client/PinghApplication.kt +++ b/client/src/main/kotlin/io/spine/examples/pingh/client/PinghApplication.kt @@ -29,8 +29,15 @@ package io.spine.examples.pingh.client import io.grpc.ManagedChannel import io.grpc.ManagedChannelBuilder import io.spine.core.UserId +import io.spine.examples.pingh.mentions.MentionStatus import io.spine.examples.pingh.sessions.SessionId import java.util.concurrent.TimeUnit +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch /** * Manages the logic for the Pingh app. @@ -107,6 +114,20 @@ public class PinghApplication private constructor( */ private var mentionsFlow: MentionsFlow? = null + private val _unreadMentionCount: MutableStateFlow = MutableStateFlow(null) + + /** + * The count of unread mentions for the user, + * or `null` if the user is not logged in. + */ + public val unreadMentionCount: StateFlow = _unreadMentionCount + + /** + * A job that updates the unread mention count + * whenever the state of a user's mentions changes. + */ + private var mentionsObserver: Job? = null + /** * The application settings control flow. */ @@ -147,6 +168,8 @@ public class PinghApplication private constructor( session.resetToGuest() client = DesktopClient(channel) mentionsFlow = null + _unreadMentionCount.value = null + mentionsObserver?.cancel() settingsFlow = null } @@ -173,12 +196,25 @@ public class PinghApplication private constructor( public fun startMentionsFlow(): MentionsFlow { if (mentionsFlow == null) { mentionsFlow = MentionsFlow(client, session, settings) + observeMention() } else { mentionsFlow!!.applySettings() } return mentionsFlow!! } + /** + * Observes the state of a user's mentions + * and updates the unread mention count whenever changes occur. + */ + private fun observeMention() { + mentionsObserver = CoroutineScope(Dispatchers.Default).launch { + mentionsFlow!!.mentions.collect { mentions -> + _unreadMentionCount.value = mentions.count { it.status == MentionStatus.UNREAD } + } + } + } + /** * Initiates the settings flow. * @@ -195,6 +231,7 @@ public class PinghApplication private constructor( * Closes the client. */ public fun close() { + mentionsObserver?.cancel() loginFlow?.close() settingsFlow?.saveSettings() client.close() From 29bb4ac3ac2206452e57aa3247a0c7ede670254f Mon Sep 17 00:00:00 2001 From: MykytaPimonovTD Date: Mon, 9 Dec 2024 15:15:11 +0200 Subject: [PATCH 6/8] Display number of unread mention on tray icon. --- .../io/spine/examples/pingh/desktop/Tray.kt | 157 ++++++++++++++++-- 1 file changed, 144 insertions(+), 13 deletions(-) diff --git a/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt b/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt index 5b7cb0f9..43d2e622 100644 --- a/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt +++ b/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt @@ -27,19 +27,28 @@ package io.spine.examples.pingh.desktop import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.toAwtImage -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.unit.Density import androidx.compose.ui.window.ApplicationScope import androidx.compose.ui.window.Notification import io.spine.example.pingh.desktop.generated.resources.Res import io.spine.example.pingh.desktop.generated.resources.tray +import io.spine.examples.pingh.client.PinghApplication +import java.awt.Color +import java.awt.Font import java.awt.Frame +import java.awt.Graphics +import java.awt.Image import java.awt.MenuItem +import java.awt.Point import java.awt.PopupMenu import java.awt.SystemTray import java.awt.TrayIcon @@ -47,6 +56,9 @@ import java.awt.TrayIcon.MessageType import java.awt.Window import java.awt.event.MouseAdapter import java.awt.event.MouseEvent +import java.awt.image.BufferedImage +import kotlin.math.min +import kotlin.math.round import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import org.jetbrains.compose.resources.painterResource @@ -73,12 +85,7 @@ internal fun ApplicationScope.Tray(state: AppState) { var tray: TrayIcon? = null - val destiny = LocalDensity.current - val layoutDirection = LocalLayoutDirection.current - val icon = painterResource(Res.drawable.tray) - val awtIcon = remember(icon) { - icon.toAwtImage(destiny, layoutDirection) - } + val awtIcon = rememberIcon(state.app) val menu = remember { Menu { @@ -97,13 +104,103 @@ internal fun ApplicationScope.Tray(state: AppState) { } } - SystemTray.getSystemTray().add(tray) + SideEffect { + if (tray.image != awtIcon) tray.image = awtIcon + } val coroutineScope = rememberCoroutineScope() - state.tray - .notificationFlow - .onEach { tray.displayMessage(it) } - .launchIn(coroutineScope) + + DisposableEffect(Unit) { + SystemTray.getSystemTray().add(tray) + + state.tray + .notificationFlow + .onEach { tray.displayMessage(it) } + .launchIn(coroutineScope) + + onDispose { + SystemTray.getSystemTray().remove(tray) + } + } +} + +/** + * Returns the system tray icon of the application. + * + * If the user is logged in and there are unread mentions, + * a badge showing the number of unread mentions appears on top of the icon. + */ +@Composable +private fun rememberIcon(state: PinghApplication): Image { + val unread by state.unreadMentionCount.collectAsState() + + // We shouldn't use `LocalDensity` here because tray's density doesn't equal it. It + // equals to the density of the screen on which it shows. + val density = GlobalDensity + val layoutDirection = GlobalLayoutDirection + + val icon = painterResource(Res.drawable.tray) + val style = remember { TrayStyle(density) } + + return remember(unread) { + val awtIcon = icon.toAwtImage(density, layoutDirection, style.iconSize.toCompose()) + val buffer = BufferedImage( + style.boxSize.width, + style.boxSize.height, + BufferedImage.TYPE_INT_ARGB + ) + buffer.createGraphics().apply { + drawImage( + awtIcon, + style.iconPosition.x, + style.iconPosition.y, + null + ) + if (unread != null && unread!! > 0) { + drawBadge(style) + drawBadgeContent(unread.toString(), style) + } + dispose() + } + return@remember buffer + } +} + +/** + * Draws red badge for number of unread mentions. + */ +private fun Graphics.drawBadge(style: TrayStyle) { + color = style.badgeColor + val arc = min(style.badgeSize.width, style.badgeSize.height) + fillRoundRect( + style.badgePosition.x, + style.badgePosition.y, + style.badgeSize.width, + style.badgeSize.height, + arc, arc + ) +} + +/** + * Draws the number of unread mentions. + * + * If the number exceeds 100, only the last two digits are shown, + * with an ellipsis preceding them. + */ +private fun Graphics.drawBadgeContent(text: String, style: TrayStyle) { + val content = if (text.length <= 2) text else ".." + text.takeLast(2) + font = Font(style.fontName, Font.PLAIN, style.fontSize) + color = style.fontColor + val metrics = getFontMetrics(font) + val textWidth = metrics.stringWidth(content) + val textHeight = metrics.height + val x = (style.badgeSize.width - textWidth) / 2 + val y = (style.badgeSize.height - textHeight) / 2 + metrics.ascent + drawString( + content, + x + style.badgePosition.x, + y + style.badgePosition.y + ) } /** @@ -163,6 +260,40 @@ private fun mouseEventHandler(state: AppState, menu: Menu) = } } +/** + * Default data for styling the tray icon, + * + * Dimensions and coordinates are specified in pixels and adjusted for screen [density]. + */ +@Suppress("MagicNumber" /* Colors are defined using RGB components. */) +private class TrayStyle(private val density: Density) { + val boxSize = AwtSize(22.adjusted, 22.adjusted) + val iconSize = AwtSize(16.adjusted, 16.adjusted) + val iconPosition = Point(3.adjusted, 3.adjusted) + val badgeSize = AwtSize(17.adjusted, 12.adjusted) + val badgePosition = Point(3.adjusted, 10.adjusted) + val badgeColor = Color(240, 77, 63) + val fontSize = 8.adjusted + val fontName = "San Francisco" + val fontColor = Color.WHITE!! + + /** + * Adapts standard pixel value to fit the screen density. + */ + private val Int.adjusted: Int + get() = round(this * density.density).toInt() +} + +/** + * Holds a 2D integer size. + */ +private data class AwtSize(val width: Int, val height: Int) { + /** + * Converts the size to floating-point size. + */ + fun toCompose(): Size = Size(width.toFloat(), height.toFloat()) +} + /** * Displays a popup message near the tray icon. */ From 276245d2117599d8290461685a158f6cb7f63aad Mon Sep 17 00:00:00 2001 From: MykytaPimonovTD Date: Mon, 9 Dec 2024 16:46:43 +0200 Subject: [PATCH 7/8] Improve docs and names of variable and method. --- .../spine/examples/pingh/client/PinghApplication.kt | 4 ++-- .../kotlin/io/spine/examples/pingh/desktop/Tray.kt | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/src/main/kotlin/io/spine/examples/pingh/client/PinghApplication.kt b/client/src/main/kotlin/io/spine/examples/pingh/client/PinghApplication.kt index ccf9ee21..be3878d5 100644 --- a/client/src/main/kotlin/io/spine/examples/pingh/client/PinghApplication.kt +++ b/client/src/main/kotlin/io/spine/examples/pingh/client/PinghApplication.kt @@ -196,7 +196,7 @@ public class PinghApplication private constructor( public fun startMentionsFlow(): MentionsFlow { if (mentionsFlow == null) { mentionsFlow = MentionsFlow(client, session, settings) - observeMention() + observeMentions() } else { mentionsFlow!!.applySettings() } @@ -207,7 +207,7 @@ public class PinghApplication private constructor( * Observes the state of a user's mentions * and updates the unread mention count whenever changes occur. */ - private fun observeMention() { + private fun observeMentions() { mentionsObserver = CoroutineScope(Dispatchers.Default).launch { mentionsFlow!!.mentions.collect { mentions -> _unreadMentionCount.value = mentions.count { it.status == MentionStatus.UNREAD } diff --git a/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt b/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt index 43d2e622..fb5b420d 100644 --- a/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt +++ b/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt @@ -85,7 +85,7 @@ internal fun ApplicationScope.Tray(state: AppState) { var tray: TrayIcon? = null - val awtIcon = rememberIcon(state.app) + val icon = rememberIcon(state.app) val menu = remember { Menu { @@ -98,14 +98,14 @@ internal fun ApplicationScope.Tray(state: AppState) { val onClick by rememberUpdatedState(mouseEventHandler(state, menu)) tray = remember { - TrayIcon(awtIcon, state.window.title).apply { + TrayIcon(icon, state.window.title).apply { isImageAutoSize = true addMouseListener(onClick) } } SideEffect { - if (tray.image != awtIcon) tray.image = awtIcon + if (tray.image != icon) tray.image = icon } val coroutineScope = rememberCoroutineScope() @@ -128,7 +128,7 @@ internal fun ApplicationScope.Tray(state: AppState) { * Returns the system tray icon of the application. * * If the user is logged in and there are unread mentions, - * a badge showing the number of unread mentions appears on top of the icon. + * a badge showing the number of unread mentions appears on the icon. */ @Composable private fun rememberIcon(state: PinghApplication): Image { @@ -184,7 +184,7 @@ private fun Graphics.drawBadge(style: TrayStyle) { /** * Draws the number of unread mentions. * - * If the number exceeds 100, only the last two digits are shown, + * If the number exceeds 99, only the last two digits are shown, * with an ellipsis preceding them. */ private fun Graphics.drawBadgeContent(text: String, style: TrayStyle) { @@ -261,7 +261,7 @@ private fun mouseEventHandler(state: AppState, menu: Menu) = } /** - * Default data for styling the tray icon, + * Default data for styling the tray icon. * * Dimensions and coordinates are specified in pixels and adjusted for screen [density]. */ From 0adfce073fb07f19fb6d26536de2668696315aca Mon Sep 17 00:00:00 2001 From: MykytaPimonovTD Date: Tue, 10 Dec 2024 11:53:57 +0200 Subject: [PATCH 8/8] Improve docs. --- .../main/kotlin/io/spine/examples/pingh/desktop/Tray.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt b/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt index fb5b420d..e3675806 100644 --- a/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt +++ b/desktop/src/main/kotlin/io/spine/examples/pingh/desktop/Tray.kt @@ -134,8 +134,8 @@ internal fun ApplicationScope.Tray(state: AppState) { private fun rememberIcon(state: PinghApplication): Image { val unread by state.unreadMentionCount.collectAsState() - // We shouldn't use `LocalDensity` here because tray's density doesn't equal it. It - // equals to the density of the screen on which it shows. + // Using `LocalDensity` here is not appropriate because the tray's density does not match it. + // The tray's density corresponds to the density of the screen where it is displayed. val density = GlobalDensity val layoutDirection = GlobalLayoutDirection @@ -286,6 +286,11 @@ private class TrayStyle(private val density: Density) { /** * Holds a 2D integer size. + * + * Java AWT relies exclusively on integer values for specifying dimensions, + * unlike other libraries that support floating-point values. + * + * Use to store integer dimensions for creating components with Java AWT. */ private data class AwtSize(val width: Int, val height: Int) { /**