From de1bed674219eb22c126219013a43b9a49a1e1a2 Mon Sep 17 00:00:00 2001 From: Tobias Hagemann Date: Sun, 1 Mar 2020 15:01:16 +0100 Subject: [PATCH 01/58] updated tray and window icons --- main/ui/src/main/resources/tray_icon.png | Bin 576 -> 483 bytes .../main/resources/tray_icon_mac_black.png | Bin 350 -> 373 bytes .../main/resources/tray_icon_mac_black@2x.png | Bin 692 -> 750 bytes .../main/resources/tray_icon_mac_white.png | Bin 359 -> 378 bytes .../main/resources/tray_icon_mac_white@2x.png | Bin 707 -> 758 bytes main/ui/src/main/resources/window_icon_32.png | Bin 1330 -> 1246 bytes .../ui/src/main/resources/window_icon_512.png | Bin 24284 -> 23668 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/main/ui/src/main/resources/tray_icon.png b/main/ui/src/main/resources/tray_icon.png index 684db18244e594100539942e78de90b9af0423cb..bb302fe027519ed9c9797cc8b6230ef7086f48fb 100644 GIT binary patch delta 458 zcmV;*0X6=>1mgpcBYy#^NklPEJh~p&H4b4f+O$C#77BfmvA- zSkyH@&e;-%N5`7~I-SicG6DGfm4VAa1-RXmfyYAyg5uHu^?&Gp6BDE5Th-8Vm{L%D z?i~|<kP| zVFt6G4E$qKXu5j)&k%Gb-6R8eaR-V4Ply;iznjOKPcVboPX^VEEsI_e37v(bMMuv9 zW^*B6wGn`RNyII&C4nptKk2-EG@xbV279ldndZsn`(535Y(wMuZ%_k@23N)d0I1~{9%KqKQUCw|07*qoM6N<$g4M3r Axc~qF delta 552 zcmV+@0@wZH1Hc53BYy%1Nkl`TC4pDQZQ50RPCyjAiv28oQZQHhO+qP}n zuWBB965BetH?{}+R2VGi8Zo1n4FsG{h&BFIJjqge7vG{vh`x&Xd#M5i%{3!bfb2l@dmGn$L&+? z=f=jyN;vyY!SwX>!J(lc*mpTVx=H4}ICr~%WN`MKg5;c{Gs7bzw>^41UJC0RcVmO= zo|k*?9&Zc{4}ag{>>Kjf#AJfDt>-O45IoE~EM5vrmA7NL=8l(p+fG}|%m{XzW#_3( zKhtLViB5<_;x77@ZEZSjUJ6@+_F-GZzL$H)E+|%%A7a!vXB80%wUGfMBj|RPy$C|BL&~DQ~_Hg!Nub?n2+oK515T@+B@kP=> z1cAldWie~zW>~oT1E#O-B!Rj_cY6n{ZKy|`N; qq5j)~Eg=$DXlD5m@$Ywga-RSu&TJ3I_BFx)000024HKGn3a#MTJp(rRb!@5fSe#+VF?6BNGlp#0r)~#DNJ%%6=)>7grsNh?Y@@ zBI4MP*jIp}8Sxrz5fKkWM6|IcR`l}NoQ6kO6%jEYB4QQOrq$G_y62Ti&+Lkbh=_k%(XuJN8*<$_zdaQ3)FmH$6<=&QZ(hW>E_X#N=r^w46PHc8 s=!J+|x)g1TrkaAEdepVVrh@DIQ*r8cK(s%?d9Y};Al>kk;b zVL4UjJop>_H|$m*EG)-vzr9S;gC+*7Fpqz=C77&a?1*f?giHP~h5&#V VW>t2o;N1WK002ovPDHLkV1na{o7?~Z diff --git a/main/ui/src/main/resources/tray_icon_mac_black@2x.png b/main/ui/src/main/resources/tray_icon_mac_black@2x.png index f02eb7b6d2f72bb4529bfda14d3d42eff6e706d7..cc8d76505a96b7eb6f808177eb409ad04eef5a3a 100644 GIT binary patch delta 726 zcmV;{0xA8p1?~lqB!9I@L_t(|+U?cbZ&Xzn#^I+7(u#)84JskTFtLG20I3Zj(UyYH zD2X(pC2|lG6N5pZqFyxhKoc4;#)_uGShXi0+6vN%tbfpp*|WQuy=OB6#w*sk+3Q{J z_nTRV?^`@+|9>m!H)hU?zf_#F^YM{o6``SjYt!Q(2USzZAb(g=epKZ4CdeB0g-1bl zniovzQSg!}p<#4QNBhus1i{8=v@v6}zkTRT)1}w@bi2qc4@Cx{-F@BH67)cO&>n9Z z^qM_(E7|3^8>YSIWj%WB)$f4AwzY#CRdGM@kLHXjD;u?tQ17c4Z3TD40`9c5_#n88 zKaAudcL;vN?|&^r=P)bS(Hwd~FoTJfp%c;N%h`rAf~ta(EkjQ!s0z+BhxQ7BF2kwd zuXHQ=GNlje5(K@?kZX(y7I85ZTm;=I{UR0wW7cFL*SjtVhB8xh11P5SUoj*Iezrah zJr&soa4!}7K02ID=_?qB_cyilrD$p^Rx*y{aQw54(0{Gb_j2PFJQroq1h|!%=ffH5 zO%hk|RqN`&XMGbPuSc)XWJdTddo$F_U{m~(&D&gqeqq_$j=JZw2MY9qeRI6bWIq~3 zOqx^HW7gH0@V5`Zhi*rfqPwZ^r#+LA`Nb$=$!T!HN=;bw2^cqv4*f>_*it_IWW*jY zZAvFTSAVHN`|VS5Rqz%*ZaGEk{ay5`TGpqew0inGO?n-rL>;}6i~1%0sw(0|r|XB* zECqt9u8hlGFV81EpBNA27wPfXcnkDp9NBH#u{NQ6ln=cW8|NeCdq>=i)foqU7tO3f z&*novjg5bTbtdqXL$3M3fDT-VW>%rc^Pz7vR8OXZj-@>3Z9^&H?8}F4upC?Z0aO0)YJ7US0)X;s5{u07*qo IM6N<$f+n(Ro&W#< delta 668 zcmV;N0%QH|1+)c_B!7EJL_t(|0qxX-vn)p(#qrPL*|u%lHcPQ>C;M(}TZI^l=l%VG zVF%lnwJAj3o@typ)9&^^|I-62-S1-!q2VKUSmG}-%(Eg7Du!vBvNuJS;Z0?2a$Iy9 z4r`MSgm9&S`a2*T)Zai?3*jSeF+BBYb}C&m9L!GoXl<}i^nVzZYJ+t`XlQm*={ow( zKobqbL~9H}(HI-u=W7qxV!ZweMp$PelDB7usAvi=DA}swb4^X3tJr6hea`qoQfyW7 ztk6_3L=QZehW510qSvt5nUs4_x0IYurbp}$y@nkgNxAdN-Opx6GIiM6r%KOA{+?#` z>STJ}s;q)f-GA)UOk3sol)G9FJRpP@yl7=s!8Aj4f5vwy*h78&01(@m;bHB~pYl!sg7MKD`93@}{HotWlkjBEL2wMoABd)fCUWtYu3 z+-w@|R5JpArM@*A$a=cL3gH${`QB4*5ms2A^%R)xTT69KHmCc%rKUfiznZu0%jUFq zvekbnJJl88n=&F~4da!tqvD>59pMe8HH3#oJ@r7CQ*lnkoG@U(kik%J+pIoM ztg5wY*bT3ByI2_!8r{(&9pZgMzo$|qVe6!?)XA(W4idz!n&gyZ- xBd7H_>7_)Qs3L0_>xLW=2}c!`uqY!A&o3A9vXhd4C?x;@002ovPDHLkV1l{Urp5pO delta 332 zcmV-S0ki)40_OsdB!4bRL_t(|0nN<=%usO{h4Gv1F>7pyL$)#I8nWi)dD%5KWj8Ck zA=}27jk{m(XMa;V=i=Pw|7KC5z1z zPVHt6z#Vt*Y!d@xL*1bOd=I{DRV zzPf85;6xM{6!fd=`PB_RYiI*c%Hr$1WR2xg;+pN%7jcBw|f0 eK_(@CIKKe%5OD&D4%`#~0000`T69E|C?yGz}t@K_nQM=G%Np(n4w3}rzYfbiN($tN`Ie@Tn;haIra1zpWzat z9YeRNnoZHIq}x=@rs&2VBQrc=jgqz`5p7D^l0>vAc_70h4!M-Q84hu)MvPD6#Qhra zU>YZ;dBkG(nrDv5W?N^!y`FTZX*$ifz!EFmo<@o7dJL*MVw(;fw&_(hsK@qPidd;v z{H{@dh+nKtJ%3^*z861e)DdwQGcz>t3J!`cjp`Byu`NRrTQH#6294UN*#Nd=Xrfce z7^@V$t3|7K6sIHYJ?B3c!FCzdPu z#@Jj)Y*MyJoK^Ic7-6fTez8c|ru>s=(x+^a=vQlnO@C_ji%H5(X-bv2$$2GRi8!Iw z606kuIT2mT?lCGQ;zsWqRI<;6MC?*)w)tv(n1~4uC_83i67iPP9<$n6ZzPFWqt--| z)LNY+;v+}RFx6qZlZZb(orq_gOcK%RjH2t^py-U&BoTc!Ct|(+B;vRi60y@^F~UM? zeWej!TYqa_BKG>iXz`|=Bx0fawA+nG#dC)1anWhOX>+w}Pnnoymxn~VK^6O5%(p5A zw2Iqoc1voBjVjK$&Q?P^Z-bjvEl+)7r-~DaxZ4>;CruYusd_f`i4Rm9OA_(9m3~rj z&{CfziKu!$^@&$i{F;bSy2Le>+2c!#j1-?F;#XQ#>r$V1Sk*YO)DyXYc-b9dvZ}eM zPmFU)#WIV%XLK$gT6}Dd^(v0KIu|4Ea$MP8UecTzVvL;zmGzpLEB1;Yi9B!7xYL_t(|0qxZTjAd6C0N{UZ+qQRu+O}=mjZ@pUjX`bOW>~wU zVEw+n^k!b~>5dyzUv!OMC;r#C|5?usK30c1AGyrx@z?0@Q7bCfKiWzsuWHz9Iz`(! zQsWMZw($WtQBPg%j{|ho(<$JiXbS@Y^Rhil4U8gl0mGv8tbeR&YeehW6x1nb*rw5P zdK#~1gz+}kD?$e&Y~_02yU}*W>Z+YVHZ#6-ZPWBoW;veF(GJRdsbIM;mD$Ho`>ODD z>B#mvdKAl*=@X4}GvGnnYTmXg05?ZtbhHp~yInMI7qeP5ND*=^uXwgF}O4m0Y zStkP?w}I5>&VTp0)CL|0oE(jFBY4tN){~kRVVcx>p7bQRF&g7^i?Pr+o7zKaWQ37Y zd)UM{3$fVg(GcqbK8Pa6OFbXq1*zk66N2?(MaltJN0EJ`eu(gc)IL$<8bEpcnGR|} zAsZmZD9C#=!kh96#zc|%3ZO=ZNNMMARk$lM=_9C&P=87KnvA@X~djAJo5LOV6OM0i`vy&a*m8to!X!m*KYCRr@KZI(_J zX}Lu@nt$c3EVei+G7c=QL{C}OKzZk?lB#m9yn$BrR1}$)TV)MY?eYlIoF8GdybVq8 zs}jGOU;}xhBb;wqgv(VM6!om(NApUr$lJoYxX=TB^?(bpuFd5QjNh5(M{7pIq%qys z>#B9l&grVg8}?0O8ZD4!{~44;i84H!X1_)3rX-e<#kPzRTUsow)BpW*{RVAGWcSeW R8jB!8tzL_t(|0qvFpkSl2vh4XCNwym*k+t0Rb+qR8p6l1+xSi7*c z_w2o0ovBWG9LcUECe0PwXMSBjCbE z#AFuvqXe1}&zUV2tlhC65jj&aG&~K%BQg+QGz)u==;?8ow`L0q{6zHl zJq2!^yK(~~a^n$rDqO(-P=ruEEH$y>y?_(p7#yC02Wl-#?D@R}suN#MTe?mtWCq73 zVQ5++M&!j~M1Mg%hUX+;P?)eLuzd4w7I@?L5@=5#u5cDcM`vMdYz~G+rebhZ5{8h- zU?zs1houVZqlm2Oi&%iE{aXcE5{HR*tTr2;S2(z{dNWl?-pUHdKoV2FX4jz z0+y(j3h!my&P2|gTui+`4ePY)1R1qj{S{|%CZTYJ?_|*6+eV`iN~IDen+YM;L)|9) zMuZ^n;K2iM7H2-`5vWFAD8k{^YPCX0@~srN1+wqt2(xq)g-0>7+7q3E{m0L~&O<7d ziibH&R)64sEEv7RJ~cEBJxI*tYAoyH#!X*Eiin#uWUW>R+3O$R#vu{vpAEp3567=7c>yfUpV~zzGnNr zqx3paYthQWnbAx9Dg?%@3#fD(zJ4gfkFz+FvwykcQKvvhKx8tJsx+&_Kskf+y)kT> z&qLSsRz2qg6H_F)I+*}{do?6hU%7er9dV;~i8_Q2??u@4@Jb8%#d~64wpXQVF*jo! zh5a~7%mjCEm)NP`a^@cK%(%GRlM@!K`eE*>%@G94)g`{3c7M9O%O#6a=6l2{}@XNe=%4A&5PJ z*gexd7TCz;jF_nubGZvrfma9*B8d2qh$Y4mWxmOUFX;@%AGZ{5bt(zI9172^0r1)$ zh>)w!d%vf2FG|YFzo*}g7bxQf(N4_#P=D<3;7+MPb)p&ZF0qNIMZ8adNuDqp7K;VD zN_NSPgzKIkC_4y)!HDSm={)P;CQ(Jqepl?OE)kI7MZiICuLwjWXQ8CD4A+g!=S1|S+Iq{9nZo^sKS$|A_ zFavXxb8%6Bkw*CBKcveaecLXw=j(|rPhYIu@6T~0YVZ>?TE8;Wa z@I9q^NVgF_Khrj%K&-1k2X_Q|Nr(G*M~MPs`1wUb!BBBMq86cGdW{Qt$00BvFi~3m zAyLI00pRZhGAwtMqW}N^07*qoM6N<$f^I`g9{>OV delta 1311 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 Zf&2Zn#$Httwcx`5L*45-D#^)cI>R>p zz(@hWL9m>goU0yHVBmX}i)Y@pC3Fr(4pn-1O^gZ1R&89L-agOdX%ki7P&FWgw z@iV@rm-Xcd4|dt7(9c_ai?Tw3seP5A{U}C!oyi{*f_`4|_+GFWN;*AHF%cL@a_4SA zh)&-5Ii1RR=fCiPdg~uTPx-6Rm(ii4+6k3sT0Vf%CJw;-$Sq2d|p8y^8?15o)Wt& zT&4do1?0+WxO+Vyy+Z@k`Kw{|sn}&KYtcg~Qd13n|J|n1L6!Gn(2+XyEwM^($%lpq zz?fH!4O=Ya;vE@wx&McEc`Pg|geyR7K4X?i=L>Ti2<^()-w`^yy%wkaIj(~A24%d` z^1OYJoTjX{5BxII@p?S z^axx<$Hc_^;Qw2u)F1kHK!`)QT5+34Nf z?B-52@EdHe@6P?8es!MmnM~7d4j#W%@#N(>mZ{AKV|kn9cs7spo!pk~)@sNZ&~I_9 z$y$FgO1sHSN|tA-5p0b{{3B1)dMrK{^4(fr;!+nGM?O*ZR+fLWgHz30cHGZujfOfo zdzB{VXg|tV?joTE!3=;!>DU90?zh1jEr(L~Eyd*B^msD9kzzX|g$NTTZOMQ0JdKh6 zP}?K_sC>JBZZ0Ll8=1G`b7C1o1>J3YJxh|T#`&BGbS*kk1)LnU&2CnDN>v)|k?2pQ9=$J=lW-dkDe z<#yI9*=A!(P><=UJdrxaJ`NQ2LwQnpVAo4R$L445)C+ml{F(F*IgOE$rt=K*B5{6a zAY)0_{nfd@w*d!+0ze;C43E*h-m!ere*bRbB=y2zotbk<(ocnLm!{WVPWYav>Dv&) z`eSbkD^8Bv?_UL^ic$|q{uWNv#>nF9!~oDH`!5Xsob}5`W87g1VE|N~@%XIuyLU396(&zV+{Q9S>{Mb$xmm^VVbly5w;%y@q@G;L zv@GJ%OX=Q73e}0gqlZ$I)Fd7_^}5F}$Xp6=wgr^mCC105UW^Ha)%IbVGkp1&vHx>a z7HxasF^PagFMTg4Ha%${*Qq8^5=+Ov8>@yskyiufar5?w10h7eW`|D&XB41T)&p0ZxpDY;evXfR`0778y z%R{GIVf}3)*^fi5`f>Rx~Je;D2aA}KR zF*!*Dt1%Aj)5#|U#7JM}`8V3j8tLK`TtsG*O|-&ZWyXL%LH}e@}0U(X$ zcU#D>;|o{=kqJ%db0m$KPXx4lk+DNlTYfwl^(w^`fXD6J^V{F1U^5+B9uICTGan}{ zb7GA$3LBs{ei^eG!}L-Vv`HZa;LXyxQVtB^>r!{3Ee|ufX-MI7Y7cU;AmK$M_?37% z2e~6ArTeJRCQcH%n{)%>pyut#s{#BRBme9&68(+TD5z)kK1>$ z%~<0f5<2t{bmB_~h{16Hs`|P-R9z=W>HAxIk*^o|4>WqKaHxsWo>I(q{b?^c+27rF zzpAM^kzZycRpc^}DMtf{*VaDq(iN~ZA#MDL1ng1s(S!N*oW=P_C``IS1;YUOP9y-K`7do%cyf-jLJOXK%|N|r zFZL*&5ys-=JK1mdczF2W?egGxX^hb*qnqz={0aq_@_7YzK0^-mw_zOfN1pYE&f?`u z{}gupP;Bh|*%s1U)Amty&%LigGzRL$vIeVAonI9sO<+VxWl-9T)(t`y{rmS%16?Q3 zy>$`sXS$|rz-?It9a+Wu@c6-7r+>z9S1g4CJYYR<^X&|hr@k>hyiLn(&Renj!s+lq z|5ZkLp~yrI*7Y}eQoY^+_sddkvfmF`VvLuUY*a}`q@bMIYgBOka=v8f`^wS!hc1TY zn$Py_V+SYSzX~5d;2{`z-=FlW%-$6fbxrPp?YqK47}?ZL&p|#!q>4DT6=IZieD>>LO3*AK$kp}PkwH|MO?R8nEK7O#5Hlt z7@VTTz|M5{#U;D-=SAeRNhZ={`T&b%-6i9e8ZgRu?2SJgB;K2q4$cx za+UQ8DX3$=;9m=-fk>JV+?|wWTJ4aZy5;!MH<|!kq+;tuQ;7kA5ydrnVG{WLA{`ts9Yx7%~X8qPi-#s0{1k+(wP=jB90fz%> zF6FbyYjnVQ>{Vlvjcs}Ozk8w&^z9v@7tb7x+=G^5S>)+^)?4+Z2bh!}0kCmV&Qsht z`M%Sn=Z$6P-0|kqLh7E=srrbWWBIT;Q?c=6MX;iH38i7)_QW=ByK*Lpy$u=%fBs8r zQHe{dg_(N(**s&d-_7rp4_G9J;OO58TVKk;Qg98r4DUNkm?eg{4B#h(Z4C&mO6l10F=OVxN z6YrP@f7t(Zx1RL(@88Vg;DU9Hgc+cw-0xBeNg4X#XWtdN{{EXIG#Q4rUj66!o1@36 z;$!K{kXNXBq$C^z^k_shdN+&z+GPkA>`ISf))(pd?T5Np#v+KR4@qMpNt0dZ)sciF zG1o{TunAX6#%k4l;xo3plOAH>_*F)E0YQ9sKyE-#>BssyM{{jdt%o^S0cFRgcNhJWDX+m&?<_W{8av8@LOBm6Qm3)k)h`Vy^CdIumyo^F4Br zj?`QZ%t#OST~-MRs_#pght^B(c&2hg`J?qnqv53?WpStvjg9~pf|-|3H>3r4em%p$ z0n8dnowps2XUUX_06?TV8DXO=2G}4JG0$2#-={y#FwomI~z%!xO>E{_7AfNdP_`PyCR?C;2Rf31NBU-8uKd zey%1xP#Q(#2LG7!?1nBIHRD}8@wm-bUYKYDRC)4$i#y##c*FZq^9!j>Q%As=U`IUb z1%&tY8O`i^(bu7vF7q<>E0BHHp$LJLSfhZn66x5=`ML$q+(PXFCZx!a(j=b^OJX?0 zBLPU|^ddY;sz=;ksp-+&pRJ~ke_DFMpoCnP>n#Ws*j(6N6uo>U{4Af{WerNrA1aj4 z@Qe|B8Qj>ojwtLB@)11S@ahtpmy7i}A^;J2CPva&CxQcE#`KOOne z(zA!IFneCoVQFP<%Q>3iX&u_}$9wy%JP}v7>fidG`~-s|W_mx7T z%oSxjd14l$Lghl@7J~RTrPiv(pdzFS(q@vM#4EqG-u~q>j*~9&86#U&)$xq!LH!q& z`BO}JXIs;voAsP}R7n|6^~6bdv+|!#+njg8$%W&>X@HdP{~)Xv;SKsd5Vlm?aM7QX zEV=-#CswbX#$IshJ$17%u&wwdJpaOj-s!c1BE){W!w-QYwo{p5`r)A_{fI(mp#qlm({+$+9ZG~uude}(r(i6cLP23(Q;kCL_` zJk8~A9^(}533GaDYGC@`IYxCIo`>a=0ri{>mxs*dj^l3z3j^*M`%w4722`6@E5(VLy_`{iN*Vj=sI<(=N8ixPz`S zH1GJ29<-t%Mdsl>XK{fseK2+kP8BF1AsuRwAuP%W8!4@K>7}R^cUb+wUl6J4;IZD&IppBU)+b9T9 zR7N%jgnI;&clPkM$u0r~B`qT?)VD07e8|#Pe!K{mB{CKXWCEI{@nJN;TdhOK59-mG zbJ#ak9y?M>gVq8|X#Ljz)_1hE)W%5a-j1g_`rP_p&UU{DLE3=DxOpQw0I1RnXI()1=KO^7k&LzB&W5oNsojWyXPhpDxh0CX%zCpb;8v68V;=~>(JPSM&Z?Rl6Hg=4>8MWMuK}xS= z#5_;$4JKBlO*ApI6{NJLR<_T~(nTlr0+>|w{0I9179*P_{pM-^qNV-;_k4}j>zq$M z?Mv#!i4v(%^JMPd1nRf!_xBHEOFnJ)YV4X!rb7ks$6d1!XAjSq`)|6{wT#I8pDv!A zZz|0mpTF>|OUqS{nI64A!2c4mt&8Fy@5YuyyWTg;k2SGQQZWZLr|dpID}9^3ZcXq7 ze(r0$yg;;o1D&t5!%a@V15vA$Z%p5c|`>;F@swH;P7 zrt7ZRMD^E7U#S_IAmw4#2=P~S2zRcnEG{fpkDvyG0mtJhye`debCURur2&_mvoKgG^HXo>-T8$qao9d~acXx@@e zQ{Z!`6HblB*74cinQz+PuvmHaRz76x)1*??TMbyyobEyaqrN?B zoEGlE`KNnZ-1?xuaiHY%9M@H~dnONRP$krGH4J=meD4u3zjwIa$=Ow(vzHEbZg9$NfiFm zmT#8vCe^7YacGZbwk(wUg3pWv4o3c3<0<-8M^BZ9G&R+~+?vq%YHs>sXKGPvbKh9# z;+{8bdx{QYilqd9w&8j5v)cgWaDqqCkb*=F6P!+-Z%YPxm3J&goYxfJK5HAQW1k=k z#;gBw_65wu??_yG?=X@JXq!dJPN|EkSs*`_t&8#8yO_ErL<{@6B&(dz4ZOerJ47Dr zdLW5UdVg372~e!;S|F*Ab*bPJ6afzZ`{DY(9Vzk$0R34O1@xu+|6Awy-}<$DAsl?G zB`l?YfzIt>b}d>2s{2yf&4gyEwb$q!*TaVz(KMf9;C~5b4VgPTc{@8h4LgbqLk$Bh zl!~DrHFVL{$0xnmyZPmJE30zGM5U*QZ}s+Xxvmdv!mA=+sEU8(s+v+VIH#0iLu}OG zu>kGm&!M3qCY5w`;k5o$ma}Q$br_k%HO8vOuc=nw zpLGjqJwAtv9yW1#bTwu9EdA+CO$SkE?int5>ED|aau@N z*faN9=S=qc(&Vhlv-kK?k3U9Yu(y}5UX|Uw_*ORRv(q_hqH;@CNxdmtfSh*W!&cVD z+632n-}<7@5%J>S(96Z_#{Qx-moF332dK`#t|*#s4;QEQ!;Bg#zc~0D&)Y94QnmUN z`XB5^wcCGLUi?-jY$R{zXR$hR|D6AP@#9rciDUVb!p`CypBg5yuMD@=zqaj8;Eu+Q zK8Wp$T}WN9bE)2BaFO5sVsfh+>h2SDIHP7TXia!+Wf?OnQ+`6-+7i@wH4O zw4{tAw0h>Bo@%9Q9Zn!J_c8_Ulo9%dipYFH3$Ddk+7Qzlwi;c3LnZ~gQ|Hr@beRC= zpC5S!>8k&v_6zr-?u4~n#B{(p!tw3OY=~0XpplV+Y2eSTu0CIPfp> zH#9P%c#_5b&mf$D^hd!ONzZKU;8Em8*T#1_r}yaY7Lf#T?i`Jr-4U!1?fb*tD(2Bs z8lp(vk;zKB5aBrdfE|1ZGG?k-)e6loB>U7?$duK?alu+4SEq}m-Y-I0jiDSyt_lA6 zD*54TbI;ocKAVQS#wTesvikmGc+-RHTNhL>T>Ko-HJ)`a;LL?{-+)*^lD(k3u6Lgu zgvDbUEQ7ktDs8n@M^WF1W02 zOm`pi7R}S>*b9jk6oG$Zgyc%!ER} zszd3)LgM?R@39a}vIk2S##}E-M=a=(Ci7=~vx?OzMSQiS-5YAZ(gL`o__fDs$RAD> z-f#HwjESMAt1DjexLI;}dvUt0VL?OlrK*u=sOZePJNyRn)27ntTsfQvK&$sImvrhy z9zJ1ealiX~;-rXwii74wpo9ACP_U)fORV27;RzbjG@k9XG^ZF|;05)(rxOIh7A8_Y zH-(d(=us2%;TFUDUklbC7tTAiQmF7#-JzZzrR2blYoL_=HpD}9$}@k_rSkkjvS!Q5 z$I<+P5%qS4<|WE)R{ySS1s?OttE>6gpFgGSvtHK8j z{!myfWLQ{k#x}^53eB?TQvHfQ_9*M#|T{_~ERSzt%=S(<9nVk%z}KeF1jiBX ziZ!;smkxAt#)iG08}+tf z=+x&L)nR@J$-w0aDaj8KR36{A>x8H`Z*ik8a9BQ+XXt|Z=#>l09nHKe2-f6R=b3>x zRAeOOeEm%>`g>Pe7H2H)#-gwiPTwTwP#!-7p-eBh@2g85by$9pYdG1~PMjj)J|&g4 z+43=^(r-)fQVi3oz{z~Mej`=i+d>>s9Vd^ZM&rdmjI^bU7P%E_3;gE!^5QCk_J&Aha$C&sZZlD2>p|JiMf^n)1{^sY z88`WA!CD8GJnVDLC)eD&_Ifv5+mqYk#)TT$Xa8%+kZ1YM#DcLoc(k|Bp6!v(H{Jp1 zW8sCo4kFCdf~(v`Y**#+f+7T{v{GPn$1JTUfut3nH$DHc+2AW%MY6s0mGkfoU2I#_ zin>deBl~)UG8%@uLv9=TYYARbRz`b0g@{4i;4pk^TyKkwelRF??lh3dy!D?E?tc}* zX}8g$)lU&8y#)!XM~{m@s)k8sY}q^N#=v+u=5A}xy?n~b8P(DJ60Ra8-DJB9nUJVw z!7c^Z`SRVU_2~32&o#vVTeU{D-%L(3%CJ9VyKMAP5XM*TF{@?7iP|E8jn4oi^7_nx z97BGZg3kfN)Ynsk*@M9yAtXiom3`j!5;gNg_3Jk@sjD}>_{|#iEdoHP@&?R;+*aCd zS>luQU%0>~Y#o-=di4#4zPJz8b6^)dO%4&&hJBUQ^b|K@B-m+J>Om4qEX5-Zs#|c=1Yg@S+ zRuJe(DKs-AqSvY683HP$Wf(oXd8qx%n_xym8u=GR4Gqb{$QHWF6*?lq{9B*vh6LAo zkl>Ioe$Hd)Fkg2Bzt^Zy!^8u<&;`-F09O4^`K3U$PSsJapOcx8dpt~cTtp2>`(2c_+Ym_c195te7umdkIs4xr`V|293Ra*%tik>SX9;H zEJJ*uj7q_-k9ir0h?1)6)@pwtvHs=GQfYOu5mmk^{r+;P%eeT1#oHYtl;J{`t=;I# zpOw%&+kYF$aqKJ2_rZ7q%sIqC+G^ZMZpQ4cY)$r--@q-uv=wTE@!gj1 zSd%`y94Ojp-T7v)Xkt}M7XRCUn@(K2nX!xk{@AHhsneYQM$2hM?7O(B+DF5cvBK#1kgj2h-;E^7L|l4QeXll3Y{_k` zr_pL!6F6*t|4}?I#zO;r$AbbKpuy&Mp)<3giF+prCkN8?!rNKgELXTh#$2 z<>kbo^Qg9!%X!JjlhNg09FGhyXz+*qXF|F0bG{J}h!K3e>Sy|tU!M3)69!pE`61)w zaXv=UfuZHGG=8joP4AI$j~(k+ww~=V$;YBD`+YK2P94^wQiE8(Qw2vSOkX!P>4ArP z+ky3Jb?JIH%Fm=Yy{3M6T*!P6YtF(`fICMS{3$vqLMUL}jU|2>`srP4Vc=21-w`9Foo-mBp z_LSt-uTm~i81l61;ue|=_T*bqIAe1c)5XT7)BDT@P(Z~I{*73Q_xs8FCJv!x=0Djs z=GN0=S#VxpbFfWloWUsSkY8_ZyZ&URPyd#aP$7jfgwIGpRd_%bb_Iczmw}lMrS|?3(q_@h z;oijRs`mK{fCYlDYH0+Q)m$u3T}=aClt0s=do!5&NjHC=?e(5#jy9)9vG?D=d$E)< ztFlT^^M(7^cp<|mBIcUKWMqt_0B1%Hxf8R;@B{5xKn({ z%25eSO70;EZN*Xe7ezoPzzjzp5)%-wRDI7T>`!z56P4%O!ts3yExDGIIdfYC*Xoy} zKT?Ev%Lghb2}0eExKGGL>i$b(OguB^J#cVOe^w)!75Ad+!~9rk zP2#i6?QY}ZmmH+TJtEalmGvLFK0@ARWp(nczjzC)rowXGe4P7WNf9_Je$hnGr{}u@ zXoNBI`)dc$mW1<1LVEwhbDIRrVeh6-r-?9B>b1059nQjNco8=Pl7L&j~xqh6k)ovarZiF3!<=9frQa>Y~z z^6T3PT^~(TRFaykPC>P@?)012Yv`-1;<~2Swd8GK8!-=;4W06)*RA{P_axk|Ou9NP z$Y9I}a%|ms)JaStW+-5Oex1?8kAWIO#(h-|%r;Ty;rJaXA(CX71V^r)97S%$qh)o; zU^8S{4dmdx7j-Kq3Ii}IvHhSc+2Greq)ND=fuo(7pJDG4Kd~*vkvu|BfS=zYu0Ywr zv$a&Jjh{HMV+SA{Xb9R;KK=A5M{r0td%d){?5)HePQ*d~F-t{mn7mFhN70}&RJLmcIuaJ=T3BXBs zqt6zHILkmuUcU6VN9r7urAR3<7HZbWo$Kntsle~_-Z@F~hw3IjaX=;#)09$wFmf`g zy377InbmhdLhxz!QfJV0UPfc0u=4(LO+D(JMj9|X zW0TwCuw(7vm9ehz%{&=Cmy+Osq3eJBbxnFO8n;t}|NL5#27#1jepYRN>%L}?F9zz2 zc$5g-F26G@hf@(F3Jzd2#)vtK`WwUIR4(4QGB9$WQr( zQwQ$0Vz>9cwjD21i_3dx5%>~%uHso_j(2mmzUJSMm+Se zQBq0N2;^;&%r9+Z=}E5#Y^`^OfPfiKAh3L6@0#}o@ZxEP8pD1%ZYqkpoElXgsT@B- zVW55&5qabC)X`?$XzyB?`PrwCqcCr?ei;jd1#K>{nPx2_>?t$pH;%yp9Wt1fl)ymd zRe>~V!yQmzE~Wa4Q>Ru`_4##D!8I#0x654@brs1TUa{M%u%uO-aYC=gRFRlJD%=@6xVlRazR7BVP zr#NuOx&NUUkS%i(9ZFqb{!)S-D}w@;<+&&0pnXe)fR>ohmzS z+M5a#!39$8XT$vb#krn6LYp3X*ISZF1S7bOrszU1^~aL8YJ0B>UI*xtTv0^`IqLiZzo{(FVGyI$_+dg=8O zGphvB!<49+b7E$YXKNJ^qv!7Gb;?K8&MVx;yXoxmU$cgZPMs)|MyXxSj%lCm3XlRv z6hAZKaepblGunSGuPkhFJeSqhJ>!-{{RyY>F5h($xf*tf z?s9!8a8i&{U5+x4taD0nQzwQ(AcbmY9d_cl)Gvn8#KnY>o9M}l2zaEV#33o<`m>OD zbfg0F<=G@@5_LRcZcla#UtNx&*YHD0z19^^c*J!+J15ry5ok+_mIu0crTv<^3jY%G z&83$=#oUIWgK2k!NT_P@1kS#YDo{o*P?3+VxT>9Sbj2!pnN}UdSoqjB7%QekGsiJOAN!^gxQ{*6UMo)lMzAE|FPQetNEt zw3%dgEe;xb`5@uyG|kvheVa7w!37JQ2w!lK{eJ%8`H|0ib*7up{X!k7J3-OY*n506 zJ3GK4qjg!m1cmM`u~Tc+&Le~_u32_|Hbs6%)@D`n{$wENgtzuz-~IYEP>G3bqNoLJ zmv>*c(uFD_GIG@^9yFzKkYp}qMnZh6p41R^`P~H6>`5)tllhdF`)?QXzi*@7JHl7Y zR5ctd2L*)|s)AnUhnx?VUj9gYPz?4CJTYUUU4PboKmh0H8ti17PL-wf|`KB)T|@d~({ z@jTj-aOIB}vQSQXr99MgaN42d6!P_LS+LO7*z-11n&fMpE6_s_(0>txsg7hAGIn4y z+X*c<5HJLBIE_!{fk z#HUM5y@Hs^7gu>1<*D2S?X^c?zHyQsIN*^Nd`U2i8sUdqDJG^(8q(5qVb%&-}C0~Gv&G&|imxC;W#8BNL50ZyX% zA*UxxASk^=!USH!k*B_Y5>fE1@^zTLnras;RNk9~hs1(kLX3HsN3TtMCJOA}sDeve zD7*OPgRBe!q|sV2quM$F$M!?UForBg2w?HO9_QERp1usx214ZMP*RB(04iNC&* zWPY~(ydVlr3$)QxcA!U*(8*Pa@)GmUZo~Y<;riPof-g}o>u!M(Gng*99iYo^>qCkL`l%7P8h1bZz!X|_F z0SH)V)NP`;?loh~oXJ}$aXS%qz>Rv;lfc(dpz7GaxGHU!2(uLpbwc80bvsOqr%#+; zZ?7{f?ypnn5<8{#B}Ul|7qTYFLT~W(-vQy19xhO=P>s}iMwt+Pd(EB{Up!nK3|P|y zGhlesdF+n#wmcmu{FG!!iCz!`xS(?HfQfdCD{QoBR9)^<{%F<;UOb$-c(fZE_9Ziz zSWvA)$eVvd>x7;iX?GU_FO7m560-k&hOq6`@Sh}dijrM3aB}*Rs|wIWaHhBQ)QJ** zrz(pr1KCvd>8 z)~(=OG=mL`#dLlSM~;5NASW@GdG#ABpnoLHAU*U5c>{kT7~%w(Hat^YL&FQyY-!v#y) zxPr=C7CM4P(^u$VL?kqR`TGoBnJ9H=c9nA>m{&tAz>mL!4G|v24V^PbG@8Ebvf@bd zG6UpQ#s+D8p>K^SP3(qCc#`q5LfbfzRTw}c`+34uDHF_AOv^?EFFTPA@Kt2yFcD+i zstr4fUbDzl3EM@&(KgIX=Y2leMZ71s0+eM;y~s7Bg~5AOVsTtCrqE`j$HTeC$7Bwh z80^Fs)OGN^!r5D(Jzpv`#1eDSOB!ao=4pW<*SxvX<7mlNSx|(jIu6=d-*~y_CSaf* ze3(ez{`mxQmXt6olk0GS-q&4s$N&d>dHDg$L4 zNfPQU1;wD!<#c8JPB#zSQM6pUeFgw#1LB}ElLo)@upE(tXKT9^sB zfuGs(RTSh30{^^37Q+`Fs~x%_n6WmU9vd*%Q-8Gh&B`{~#tE8vB_ktRFdzH0B>hT+ zBOR!TJh6WTC@MUQ$h__u@ZCqosj8;^KC6V0_zdm#QMd9Kr~eaDo3=yVVCMb2T9})1 zMf5kh3L36bT~GvcEcq^9-U32CcIdZWBFRaQ-yPaRSf74ATSPJ!a=E<;U5_oJX?2Ko z+#WWd&a9W^p+X=T9>eA+FB@^%J9um^LoRVAVC^s-D8qjBzU?>ILWrUkFk|949%1`| zANF*hLM@5j7TX=ZaDU@{zd;n^UzNvRV)+=T?>l^<9I3`#4w9e~ECz5O&W(CllO~Q6-AOUAQ0g%5{T()qr}{2xMWNds%2#x!&Yu&JF6Z9b`n)u;LJN0&HA*c)2$g@IgvSVatBe0v1QuF5@u!iTUM5Beh>) zyD{kTz?Uwh0JMMUkY%MCd;z!g+y~RGJZF>W5Ad0vo!cENc{$X>Le-9sel#N^ej}2~ z=)+TQ>#kA;6e@+Nx#sRQ(DjUb1kTi5z$M+K99Cj=&RB3gk|;x*B``_uV34$>B$?J) zH4R#$UAY>vJ7g+{^JyL3E3#dO5#fJb8%&UTf1=Y`?nx@RtP+&)Lv4WXv6l`nhX*bN z1%=ygixgs0Ml=_jr2MA6>A8WEwek(Jh8G>rxP;ZVyZ#a;(GN3rfl*Cu&9s)=lJ_d- zJ~@X%G1Sk=OQ+AMM`Y}{T_)CZXIh3;HMsguqZcx^NJu&PKc0vs=hwWD|8=N>&#zP6 zQ%EluTd{&9T?zUOzMD^ZRq4QHuuddHb3Q)}%$(;iy>~sbtWPt5u}F5tG#CCNF1?#3 z>ixP0g4uwPzDH}T(&vnE)5Pq28c$V9oh8`<#=V$&5e=>TO5( zJ%(;eLcm&xiCzc*6|hHEi)qjpwEW@P>yhT`*LBhYSJwv|8gG(u*%QCQ=E_9P1Icw- z1Zqb>>klHgD$QWG2mRNHj|f$zhA_%jf9lm0CTWJ;byeXjuI;YDT_gm@f1;2cgOrMV z&*F-shqgzQTYmIsWu5E=V%hKStu{5@d0k`mfH0awG0&Cg8OEYXMZTF$vz!xhlyJrl z!MuN)@}telSrf_t@l^6M5l~VD*|MVO+A2RS|d~gt*+!9=N(Q-O= zggHTH25@{Nl9)|zjYo}1NX3mE(>-elTdNo6 zN$E>}qCe)U9m_C%c9L=`ySJeY>j6R!#9uR9lvW$0^MyV*NSO$l)5w4$;{m}{>5L#T z@$#vlp$yRlt`z1TI=To8HAY!}@ri)vFY^bR^lZ2g^j zLMa&k3VjXWLPq>`;HA7GG8~yO$3)Q)PX7*hcS{qqX~ya?jQ>M+Hv+BAY<1STYvo_9 zOnOuWQ|+*Ul66P+rUX=4H1@I`TEt}oo96(Iwqy2DpRrOU_|WZGI4rqz`2g zRmBd6vCceXMo4*&?a|JRXQZn{$!;V^|D&PWc!O5EQ`) zfdYy@iD&`P>~%)KkuRLdT2Wl86yY-e2(HebADwa{u}I2&PO;NT#BZd9MeL`s!BUW~ zyOLLt8TdRF57@$>={N!RhB;n)(y!l`ttjE-wM96x8>l1?`wc%mcyr_esNseU(1;<8 z`9BzrfGM@xN={MTQ)qFi9RN5DfUn@!E?Nc34P?DW!-& z=?odOmA3C4%+WS1mW#GD8}gt6B! z>-{$a>pCRa7}CsJ6g3xOFrP$1}RCZr!1i=V=O`Ahhbp^x;}>ZG#jfOhCoq&yJ5mG1~U{3 z8FxF%k)T;JBGWU^6vFtJS>aMfG>LZqoy>I|HSoY_{6NpHsOeP?<5Svk0TnPQK|y@p zlM@n-zGuQwu)OUCq$?>!?>8f`ejr7E@sWg?AZ~#(cudjK!E270 zo2yPHhQ7(`6u6?e_pq-EX4qhOpcoY`fzz(0h@y^D3lg@#W>>s~@YX;u@9!uwYmCGF z={=u(tq6lSc6hwf;GXwhb`K-Wr@o9(Q*~vGpm6~^iM|vOfG`2tnC)tUsAx`Xicpds z;?{7VQ~!gbyBtf+bijq@y$AM^d4!*5wtRL*;?+8;igOjVBdHqvx`_^WOY>^M-WO4Z zcf!N}O&qwW_k0rudwTufdxM7WYZ>SBUmny`XolWkOT%MV%(LMG7TAkfu{AE3%*DVJ zrZJs*nU+Oo2^MOr#q9;LZvA~mFkH~Huqu53c$os)zD3MZfaTk0Io04Q{D8I%6ef!I z1T&O_XSw#a-=qbCd0WslFN8gRM(`^X?fMHF3?LGReem=_G-OJo?1~HvIv6KB%vhcn zi&=U|m1fjl!l^xM;RQ+n;K|3nps*ykqh**cAbH}6QH~`5f-v9r;fJSQwU#<0?uXad zt0KaE5}-9~P4EcGAIjmE?kBJ^qR+9{Obc9y70F-D&^Bd}r9ORrX>OYYwW5sK7~{3( zXcuNIzcXw`@ctH}U4{m!@)JV<2z=g0X3%qp$WDg2J}wmQ1Fdeyl4BWh!)!J-k*hDR z$JSL@(Xb>MlCY1eL}u8H3lx_KD!}(@d!_fwTNqz9=KUlV{Rg2+=Fbblyx$USmN{lL z`;4pm49z|xx^i*|2&X~ejeM`|KbR>X1QeQ8LkPapzTVW$VFX`Hfv3JF^SuJmicjy^ zRd+(fjd4La`WhCqK^;)HM8O`}htKT#iOoz(>hsnb`6~2A%Q=&I>hpWKGb~7W?L!NK zD^U`x`>oU=ZG#DRHsa^&NR_iyrZJL$-uWc@J$wkVH=Z+&Gi_^H+z&y+}qG;VAWt&6}vE&kC`>u<%epCU2i^Lvph9RPO?az%V$#n7EPY~z5dmG);i-|1Y4`r7u6AYN zMCN@uJ_<^KroyW)N$f%hYmTK~Irp9PdzvXMDO2R)AO8(;-#fF%B1!$A8q5y+e|>y+ zR8vpz?@a=P4$^z`E28u!MUYTb1Qe8BBovVj3P>-ZgepzC(p7pFP-;R)KtQ?_2}P=q z&?MBn=s)kBch2vZJtybxxtW>W&&=JOJDVAseV&py6?sX7oG5iHf=$-bic*M+MOCVm zrn~Yu`YX|`a%z=u9iFu*`x2|Z!S&^%bVK%7!tN%E;TkuIf4u67s_RjK`otzNZ}voh z-#&2dNrfbGwegsB_BqJrHU4WuTve8&Tk zciH1A15reeRPL$p&&Z=ubiwf|79z<(Ghllb%0@$Y4&Xr+R+iKyN)zP6V98n1fx3Vt zJ9+3c{qo%K8#@z@E2L##>N9(@xtwe9v0^bZMqkPp8xs1!?QM;$I0}(4S=1tLBR1gc z^KbHWPz*?qXO6UcLqvw;SHUzQ(*nU8C=EDd!CpIs@1tpOP`>B2`68t>&P!ZL#$*rc zY82V)Vn3A-YA-{@&($`%YWB7EUxyTX98i_)FkWpf;as=6YC$(}wH7uMOecrfhq?0I zD~3Jg0PcY$n<1%ovizLUKg@C5dMx$G5KxoVw?-0Se!eD&tWz$(|7wu%==+IE_Z;tT z8nx@LJQv+>_HHHHQ6=uM1=Al*^%zs_R6sT|%O0ToTiGBR4^E*tw@?c{2#cv%Jzig) zZZ$S4fM%*Zx{|5Vc%Qa^7`QTXc^S1&XL`c3Gf$`!K3Y*4`r~kA!G;gwfnm{OS)lD+ zrJiWE07j=klD@2|cSSM0FtR{W6*4=$S2NJn!s~gtjvrq*-u~o6R)(Yce)K|a*4DZQ zm7bQO{Wy`vr!umYWK!AJ>5{S^fl{Z^V`-!6wh}E7CPgUX8WPPQ(_wZv*(Clmk=8~{ zsMN^CQ_$?}xHClm963V_@rG0_SRT3myfHVv9?4tQ9%;uia!>P_e`cj;1CYN1D$D0# zVY#b=loJtgXqv-e@+elD*A}3o1-92Knd^}3ae;6=(!|>-s{uPyCfZ_AeKjjx9j(m5 z@&rYzFDl}X?PyQgp#Av$RA5s1Mb-6(|f0*VI&N_u=x9?r81QqlP{75Uab{ypeYOU?_`DXn}D}G z2FA3GQLt&;eFq|=BE>qIs%}g>!3f8k1m7&}?dnUZWR?#y!=$E`W-yuYKf}RWL_4Zq ztvZuK?K*t&nfh(lvv@?zJM$1#ODG8@13w7DTX-lEj-Jj?+OzMpD)LcGL2$ib*#+C7 zU*UZCP}}lWBEQytX_MoklR5~a-%}l7Tvw*xB7YX z(y2Wi{=6qW_!{+DO&Kp%Qs?mzX?rUPLW~K1xT-fgWL8H;`qhmb4HmX1g1)yoV#3ZMk6BD_k-1`ycJ#n7;#2QKj0`ZK?Bepq#tWm4_v zL8my$aCuGRETQnmh$xL2_X+C+V5ce@MQhnLa~*^!hVckX1}1g6b zUEBEF27f*xhAuxF9U{@|GFPuUfB8jm|u-#WzoF^Y$8y^V3sv(q~ zI9M}p3FZ&v&m~bb(={D+;-CB+oVZ<@xYsGJfxQ}Zxc=?b-om{l=*w|Z{&W&|zDP5O zvh699k9e%!4}pqgYd_^}Co2;>Qjnl4R?YBktZG3$n6we&Yf4IKwyYzB9Z|87G zBsSRNnOzC*dOp8UoKq(VJC*YQnAz#DruGy)D)~ui@Z)v7xmBB{Q&vxw%pqRlPp5cy z%}UqN`rxU(*+|JNUd39e$wU&pbYzDT9c{s1;H+eluDPp1h`xVwH;2${T6*2|%rZ=#>LVQMuuwMfKagri5sR5XKdgxrJeVtM_JXZ*0s9f&eS& zBz{yRn;y#~f-dxCIaE*#I7_;Q-_E7gPUpV@5_(xt}zcj3{N5895_`#z2AX4)I{}oVng8&_B!@dViJ%!hKBE6NLYa$X{w!i=*>?p@0*`2^j1EILQHag_BGNx zDy+QhJI!dqQAuKEV2Y1@J3o#5#@nxvq3+?W{JF}|dU$F2_i`8(3V=|4E!%q5Y){?* z^eb5@f8h79k>m#m!U*L^Qu*V{UuRKpb5t;G(3H(Z5_5Wkat?Vbb@I$I- z3 zZY7mTPSa^@6d8rWyuIOCSzO<#zs;EL`Z)nh)qXqvw#p5DU?R= z@%iv+9(EvT=hWa700vdpg|`6|@N_7|wZ zY4jQ7u5kW9)sp(ot1B%|s>Fmx_HC0r=y?2C(vw*AJ? znW&FHBBpne2rY#Je9y2bBb4c?Aq3sC0HVr}_R_bVxhAoS*OwA9642%5ElW)JbLeSo zVWAU#U$=Gt_`Tz*Y`eXOAmW865UpbLNBnnq4$m}c#nAGa*uD}8(}l{PVUT8>SWIWZ zk=u;P>u-&&EdegXx?twbF>qnEC8_pEZ}*u~u@{SBU`eO}k-W<4dm%=H-#kaI8U zdvMnLhwkMHBul)`H$;UH0B!jB+Z)O}VupX>s-t;>p9Hb*jyCop2Qaqu&I<9`{Q-6d z#xEcSHR^!=xUu?28awsTbC{nx>EzKgXIY1{bF}vOplfbL8At|#-5lf}^>~|PlkI*Q{+R!z*GaFdB%Mb_-(C9(`v^Byl9MA+ zuVMd3mAlLx&8{trM$n2I>ToOBf25zGXc|O!Ac_=_m2l|0ylTU<$5R5Pf9ZwDI~ye$yN9fR(GQOPVs%kDne z7e-uK*?3W^JUg)#rYs-Snp12fMW5Hy`S`56ZF&2|m4`lsChjMvEjs7Q{+eWq4qw!y z0<1_Q93_nQuY#d}=9mrOmrpnx2?#2V)oGk`Dz;_bwy#&)tsaA8-5jygWSg z<6vjtOj0~{qBdEQ8v_G)+6dD}jN@7mq8rLnSBLF?kSthGM3LK=U8JV}U6_p*gZBF2 zZE6voS6Ge8doE&jWt1Z?)68ju`Wy(pdILZl)8amZBuIozp9WFV-j!y3)8oYG$l>&L z^yR_J0Xb&$2BBro(;mgKD9ms<%ar?u6E~ZiWU)HVfd>NbYXN{Qzh?Me45_MgNKfjF zSMw`us0qZ{e_q*ZCXme-N>kErpi?Yrufd7xTPfH%qaCj){jOT-%v1Agk|UFPQ58s1 z6C`nzxMkVKPRjc8ZjHx^w}*Vraya_&fn@vmOBjb$Xb5$kM!QZ)50+M?pu9LK-`*ju> zJ6lowBb?*Y4F4|aG~L97PuWRdfcF3Lj+5hbV_B73-j9sscRW9MyEa~#Ywl#4=+G=; zbTg|>Q-}LgW2+gY1#_Dmcp?u~<#?SiOwS51Q7Bw9I5=$bU3qK{b@yKUpzzQ$svpQp z+u}j7WGnf^^xhYYDTDLW?o4ug0sot=EOE9sr5=7b5srKqvwT#s8~|YoBwRdz%T_u) z{g|`4KCwQQkib2$>M+)eKdDfu_Q>s@8t3pO`^zDWCQOEnJy}2z5Gouy*nIq| z@>Xwmy`q^T@ejrWl_QLcGd=?zT0bi;GraIv75~_KQN3}MKa!V-+2Wwv|K^{EqOH@_xj% zlX|i{bbrUtInA#L3D(?X0GP%Zr8YY!InA=t6?sZ_s^7=&yc24)(NVfbRnx|s>YVrdfZ)3TR&OZ_dP1x4k^2}?-{44Mb-LvJyWWmM}E<$TQ`7r@ZK)1G&IeMjynV4AQnt}Kv#k#PW3Y+Bt(cx~yZn zjV|!o&p{cZk2gPmT$Rd`01z49HeFWid{Ycm{fx|K~WuI$gS*h40fzXjAl z0zWQ&8)u*ZnCG5&aOkL!10M9}!<}P(9D|it&7L#GyEB@ED6D(;hHfCBe8-p+6B@EZ z1;7P>J8EoS#<*xd6iL*kje0;1f(4U`Z;E_QaLF?~m|Yoe65SJ4g67o<*D|SFUvz9M zGUedh*<{^}I6ziItNRwID(L?r0KUBN46k(a`?{HPuUry4oH`UflifkymTnpFk$-Cq ziJ3m+$20sK^mEMCE}c(*Bi`|sCJvLVoIad_uUqgN3#+niAv4k*ZtBQHdNM3760S5N zCc)Lee&Ot>#^f``q}r4OO(|38!HD0`#NY8QxA{)RXDhwA&1D)>tdEwnIpY_XP4Ofa zu|77;CZc<%+*EMK?S-^vP{2jbDNjW$J6J!E0 za&I+)Ywr1PZR~jt*uG)5X3zqX<}jb+996-05k)NVu6IO8hMNrcs?Z$t%3*odOclwo z10d{-jO?jj(>Uk)lU29O2qs{a4WENlK9qbZ-q6Ur+ptSb74PX55J=@CTk>SFATzJtg%rDx@J; zTegkpwE{R7K>M&%|5`|ZpGcj!jv6IUCt!(8%oqUaf30!Qfk*UI)k}>=!ZF@>vD{8o zlduNsTAS9qAkVac&AkjzI&B4*krXj%LCGs_2;ou=cKe>$+wo*2n=@2*sl}m3&xDc< zuCHZmKq2mrhZuKifcP{}kx{XrkDmyOF_YE|X@;Z80}6=b9cc(*zMO(MRFTjT?&6KB zuAdc49h9cg|7jVcjcsly@2(l_(`E_*5e}S0+AMz2zlAJu zP8ifvBHEqrvnYcmqw**focLckE_VWVOWJsh&lZ;zx9@lS=M=?!SRP%bERlCj`8@RF z-?i(9;ubZV@y@H@E8cPmO%gG)Lo?N7>HhkwRgBwR#Ho6*+J!J$jh)N;6R?w03v9Vs zHYf1NrI&ayU+mn~&4-dIX8-^t;>Q+9#^XfEgl{7}S;-R!3A?5mY##XZRr{jgxk6b~ z$g@d#X5blBkX2Vz+wj+|UEWLdaLs@HCAm&U60DtA5Z~NiU|BNI>n_BlMk3>4)2N^2 zu5QQ~d(DUbuM6(RqBs}QO~C3)6@s`XH-ZGztaBtU~M-aq6l{F)63Qx zBoF}%jmMe&VFvkdGY$uB1zk5fkmIG$e#159d=YygNam&d>NU^hd`agT5rOD$$vA}- zRv$L)QrlvKgX24KqE-*yJlyl*+NsbkH>3pm{toOOBgXSy$VHO>dHHCxNQK+aM|4&M zl#KhqEgC^eK$0V3ZprhC0iE~TlGhFks9DrefW+5MA51{k{GQD6V<@_}i8K7KX3KTa z>jJ53!d_Q@YttR&Ip&t>TY=U_D946SD0jHZas z=jJK=A`p@eCIw6(y3U;W9g`OWmfc>Noa0;i^P6H#d z%ijX8RBi-OOohi7Si4%xM01M0@3Rj&CJ0c6ebfTMB3FL77=!+>!?9bz*KL_IHF+z- z7`KdM^(sT)9S%hE-Y~POD+dlvO`lfkPF`HbGg}F`chH}|CzfltP+aM>7f2ZhQN$M$ z3$?wdqJ&J=H!qGfWD7y8=z~cXIoFEpiHSa@hQVUp^h92(HquIzd3mI{EyE2JyT=MM z0K*AWpnK-~+@{&%0K!Le5q5vD`Cm(rTlt>69SUm~DzDy^YhRkY&`788nuPgZuD2ed zxKfBpPAaGCvM)Jwc6?oS_CTiy(-T_4(LcW~Eg`)Ak)Vs#0Ksy;?zeGhGNY#4uo_r{ zg|Q8NHY%!^5+^>-FYm18-kznQ@;dn_fghX^D(H2mXLCBJuHcj}g7Qm8kjFCgWq%gi zP@w53jmVYuGBq*JEQO2H`R57J({%l9Gb6kb_ z>Vkt{&ByE_QP^aQ*duG2|LSPP!m!C+%W*Zi#D_|!Ck2OGO+}QQ#SoERqWY?z2`Wz@ z`V7zIsd%3JSp>?@VyJsmmiX<~H*-z?CR4=DeW_~2A0|;Ud{MY*=y08CJ=YPHVf62JOW$#s7 V*W4Y5we0}l!QDq1RccmY{|5~1NT~n- From 37d84d3f7f5b4f568deb568ee3e1847ea729e740 Mon Sep 17 00:00:00 2001 From: Tobias Hagemann Date: Mon, 2 Mar 2020 12:36:50 +0100 Subject: [PATCH 02/58] updated tray icons, heights weren't quite right --- .../src/main/resources/tray_icon_mac_black.png | Bin 373 -> 359 bytes .../main/resources/tray_icon_mac_black@2x.png | Bin 750 -> 733 bytes .../src/main/resources/tray_icon_mac_white.png | Bin 378 -> 367 bytes .../main/resources/tray_icon_mac_white@2x.png | Bin 758 -> 749 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/main/ui/src/main/resources/tray_icon_mac_black.png b/main/ui/src/main/resources/tray_icon_mac_black.png index e96cdf550f4bc6ce603e0846f9a39582c97af964..42d6aad409288b27bbf21c24e3d2432ad74b6a69 100644 GIT binary patch delta 332 zcmV-S0ki(~0_OsdB!4bRL_t(|0nNd^OOycs2jEAtQ;>r?ZYVXlCC-L~Iu}VT5W_wM zp|EgG8$xJ|cN2t65gUSQNbv$O%1n8G|6qd=9a&q@^Z4Hkda2{so)_x=V$`9Ci1?)G z5BlwkrV-IJBKB0AX-Y&yL_|zE(?vCX2Hf}F0|WZh)cj`5gnz<`(ynF0mhCE?C`=gB zWy@pRA|fIp;;l!vbXoJ%hKM+@S9Q zL`1|_ZE>h-+C>FFO^TS;@Ifg`Z9^7C+|=cUh(%T7hCFoHZT*%+G24HKGn3a#MTJp(rRb!@5fSe#+VF?6BNGlp#0r)~#DNJ%%6=)>7grsNh?Y@@ zBI4MP*jIp}8Sxrz5fKkWM6|IcR`l}NoQ6kO6%jEYB4QQOrq$G_y62Ti&+Lkbh=_k%(XuJN8*<$_zdaQ3)FmH$6<=&QZ(hW>E_X#N=r^w46PHc8 s=!J+|x)g1TrkaAEdepVVrh@FUZB!8qyL_t(|+U?fgPt#`<$MF}|)eSo!7Q8=nr*} z6(8IP@`xaqbx_7Zvx(@1_gjZP5Coku>P(4>ts?h$+3@8nEBj7s(Bp4J2EmEepda|u zemiAl<$Y+-j2YkfNM2UfPW$ya)C#ho->^wj9+~s2ADy<(y9SKQ`tEH-P6& zy?hXq@wKi-$bT-&7O>bfbP-FQG{O!G=5V)Z=v~YSF4l*BFDT0xY8pBuqb#^mA9_>} z@bq@dshw1y|%(<8$&0niI1Z)?WY=W*{BEclULA7jiJ}7iA%8$enyue^Zqhu zH}1y;dj&n;82VMsHnrohZxcD=y09;$TkBZ9<~|QupCgJXv!~#mLp76NDW1aycC316 rpBeF1YR+~ytCwTxO?$s-|A+kx&Q-g9lZY-v00000NkvXXu0mjfEPZ8b delta 726 zcmV;{0xA971?~lqB!9I@L_t(|+U?cbZ&Xzn#^I+7(u#)84JskTFtLG20I3Zj(UyYH zD2X(pC2|lG6N5pZqFyxhKoc4;#)_uGShXi0+6vN%tbfpp*|WQuy=OB6#w*sk+3Q{J z_nTRV?^`@+|9>m!H)hU?zf_#F^YM{o6``SjYt!Q(2USzZAb(g=epKZ4CdeB0g-1bl zniovzQSg!}p<#4QNBhus1i{8=v@v6}zkTRT)1}w@bi2qc4@Cx{-F@BH67)cO&>n9Z z^qM_(E7|3^8>YSIWj%WB)$f4AwzY#CRdGM@kLHXjD;u?tQ17c4Z3TD40`9c5_#n88 zKaAudcL;vN?|&^r=P)bS(Hwd~FoTJfp%c;N%h`rAf~ta(EkjQ!s0z+BhxQ7BF2kwd zuXHQ=GNlje5(K@?kZX(y7I85ZTm;=I{UR0wW7cFL*SjtVhB8xh11P5SUoj*Iezrah zJr&soa4!}7K02ID=_?qB_cyilrD$p^Rx*y{aQw54(0{Gb_j2PFJQroq1h|!%=ffH5 zO%hk|RqN`&XMGbPuSc)XWJdTddo$F_U{m~(&D&gqeqq_$j=JZw2MY9qeRI6bWIq~3 zOqx^HW7gH0@V5`Zhi*rfqPwZ^r#+LA`Nb$=$!T!HN=;bw2^cqv4*f>_*it_IWW*jY zZAvFTSAVHN`|VS5Rqz%*ZaGEk{ay5`TGpqew0inGO?n-rL>;}6i~1%0sw(0|r|XB* zECqt9u8hlGFV81EpBNA27wPfXcnkDp9NBH#u{NQ6ln=cW8|NeCdq>=i)foqU7tO3f z&*novjg5bTbtdqXL$3M3fDT-VW>%rc^Pz7vR8OXZj-@>3Z9^&H?8}F4upC?Z0aO0)YJ7US0)X;s5{u07*qo IM6N<$f|~eh#{d8T diff --git a/main/ui/src/main/resources/tray_icon_mac_white.png b/main/ui/src/main/resources/tray_icon_mac_white.png index 33becc6d76d632802e67ab19228fb9330b7cb58f..d178cd01700f3b1c7a1431a6721cd4181389ef22 100644 GIT binary patch delta 340 zcmV-a0jvJ{0`CHlB!4zZL_t(|0nNd^OOyc|0N@{zWa1#)PzN`OSqM4>ow$fYsaufr z;ZTTFSS}3(nczQQ9WH`{e?VMwgF}*pLro3Wlt>r-mkE}&K%Vw-fYc(EAhpkEs0$%$||}e!hly^8;h_abyaF5!i1t1hQd9=rrgo5D3y~cy5P2H!^T6C zoF_W$;e%gleoZRjhm2cJN6Ix-5B2!u02L+Y%&NK^^;}XlE8~hT4|KYz&2v@xsHfRm ml-zY9{&Lckb-d9O$LJ4BX@L|Y#sxnB0000n=&F~4da!tqvD>59pMe8HH3#oJ@r7CQ*lnkoG@U(kik%J+pIoM ztg5wY*bT3ByI2_!8r{(&9pZgMzo$|qVe6!?)XA(W4idz!n&gyZ- xBd7H_>7_)Qs3L0_>xLW=2}c!`uqY!A&o3A9vXhd4C?x;@002ovPDHLkV1mTXrp^EW diff --git a/main/ui/src/main/resources/tray_icon_mac_white@2x.png b/main/ui/src/main/resources/tray_icon_mac_white@2x.png index 05e32ed17aca08276b5e969782765553d625b33f..8c721bbcef0a4b31bfc6e7895677361aefcff2aa 100644 GIT binary patch delta 725 zcmV;`0xJFX1?>fpB!9F?L_t(|0qwz0Xw?M(2k@_RnR5;qQaK~rSQ^+LifCSq0tJac z8I=_ZL3B#gL#L!vszWU=B_t`OQV>>FE7_E( z63dnJ>C&i6pOQXZ8g=QzKOV@`h$Biml0_hE>~OgKEQKp;0Bn zno}m4tu&@&dm;u@TkT2JPA6i!30vKr5^=vF6ZV;vh<&OpwN$lziJ0Xe&KfXcWfJj| zpWUuquOE{{tWs@}MXIez64C1mjT#+vGKmNw zl8D3hXn(NODTl;;elZo_>JU5pWusPadOL||(&Skjv%nl@m5r-UpXp}X>Aa^?A!fK! zgLqEGqXyK{?BY#*~fN?MRY{ig!|* z_)ytUBBuLVblU8MU%liu@l7IbQ1NQf1<5L$+IAd9^```Twg?!$jqgi=q00000NkvXX Hu0mjf)OKuC delta 734 zcmV<40wMkF1@;AyB!9h0L_t(|0qwz0Xw?M(2k@_Mm1!A)W4BQXNf78zDcwOaT!{w{ zrIuMDQg{f3#3Ts+B^^3+Fzm1Pk1hsQL_3s}K~M_|Bz0+&f0m_COe@1pa-VoS9xs1y zPv49>`T69E|C?yGz}t@K_nQM=G%Np(n4w3}rzYfbiN($tN`Ie@Tn;haIra1zpWzat z9YeRNnoZHIq}x=@rs&2VBQrc=jgqz`5p7D^l0>vAc_70h4!M-Q84hu)MvPD6#Qhra zU>YZ;dBkG(nrDv5W?N^!y`FTZX*$ifz!EFmo<@o7dJL*MVw(;fw&_(hsK@qPidd;v z{H{@dh+nKtJ%3^*z861e)DdwQGcz>t3J!`cjp`Byu`NRrTQH#6294UN*#Nd=Xrfce z7^@V$t3|7K6sIHYJ?B3c!FCzdPu z#@Jj)Y*MyJoK^Ic7-6fTez8c|ru>s=(x+^a=vQlnO@C_ji%H5(X-bv2$$2GRi8!Iw z606kuIT2mT?lCGQ;zsWqRI<;6MC?*)w)tv(n1~4uC_83i67iPP9<$n6ZzPFWqt--| z)LNY+;v+}RFx6qZlZZb(orq_gOcK%RjH2t^py-U&BoTc!Ct|(+B;vRi60y@^F~UM? zeWej!TYqa_BKG>iXz`|=Bx0fawA+nG#dC)1anWhOX>+w}Pnnoymxn~VK^6O5%(p5A zw2Iqoc1voBjVjK$&Q?P^Z-bjvEl+)7r-~DaxZ4>;CruYusd_f`i4Rm9OA_(9m3~rj z&{CfziKu!$^@&$i{F;bSy2Le>+2c!#j1-?F;#XQ#>r$V1Sk*YO)DyXYc-b9dvZ}eM zPmFU)#WIV%XLK$gT6}Dd^(v0KIu|4Ea$MP8UecTzVvL;zmGzpLEB Date: Tue, 3 Mar 2020 15:30:36 +0100 Subject: [PATCH 03/58] updated logo --- main/ui/src/main/resources/bot.png | Bin 8577 -> 8508 bytes main/ui/src/main/resources/bot@2x.png | Bin 18046 -> 17867 bytes main/ui/src/main/resources/tray_icon.png | Bin 483 -> 472 bytes main/ui/src/main/resources/window_icon_32.png | Bin 1246 -> 1187 bytes .../ui/src/main/resources/window_icon_512.png | Bin 23668 -> 23211 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/main/ui/src/main/resources/bot.png b/main/ui/src/main/resources/bot.png index c02c60d7be9109138b58659b761857996fdd5507..cdbecfa1a8a002747a7ffb2a1167c973c2463a71 100644 GIT binary patch literal 8508 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 o;x3*((RR*m-=GE*4X%s_06Ib-BZU z)HOiP*%F3F$D02-oy{vU0r>otfy+S!xZRY2$3q2z;?e;1=zo6`6Qku@)zEU7Qc!&E z9TR`$6B~b(R#0+QS>L>mdajuHPE0vGJbYR^R(mDeBnL80vY_8)0C?fMT(dkhj5Sc!9e*p`#tdfPi5aD|JX$+@Hc>R8>hbFJX8{jNz#I0Opnjr$6*HK{nzsg- zXyu^Am|ap)Y1v`<=@)D|Z6Up&v=}jTPi*E}12VJ}(CTKE(T3Q}H1O#0e3|Us>jM#~ z$-pG71&AqlV#%KMZ;fy?pk?F+d#|9G=E>&!UEO$W<3jo5{IYwBhBhG0AiNi$1Ji&W zkRnwJ*B_epes(Z%O*@}xHA}Z|Py>nvSH=SXsO1v-k$H(*|}6i%lT)b=frw6DyI2{uN4NjWsR1%Cll)YN0m+I1Y_A0ljT zo1aGf)~C}$U6TjZ-PzC-<@?OlRe4a}la1{1Vyy4)=MWzghwRM&Pg!j?^S5 zS{dY>$_4YXd`MTy`8UY4N>tS~!sT*-YO3~TfR9?*I-oAkhw6@;1#Zh(2v8#UjnL#3 zz+f_iYNqy<`G2tl?!NB<|BzSGG&JY(urpBInGH>We?2_*6b(^|- z`#|q_tF;XeKlTL5s%lYQQ-?<$e-dxDw4tX@i?)tVUZ@+X<_F@u-7*~;8#`!fYU&Y- z#nR1BZ*f_$+_nOJmOgaPb;E2mW7;_lYTL@~lg=sr4SzjzJQIgW6k*ZIH(9VmyH*gDD}e)s2-{jZIi8)a{!Evj)JvVb7zPA0AeG7$;nCZ zyLz35MR$q3{(P=wbAD$wvi44euv)D@2m@3MR*IUWyqboTH`7Ji8i$+UcDsEVthrO> zC6(1jG=JT4+fOT2uG%s&G4Uf87Y!5z86-ZIg6kuq7$iNH8r05H!)t&>;0M-XP1fGg z@SmzP7{BMOR9)Y+g1%?iU3SqYjBQTz1&F^ZIjCK+P6_wCn?u~lTCB<1>=7!!YkbkX z+0u%s>FL+`{GZq`DH~_WSAtPeSdfXlSVpgu_kM?hp0IvJdAF%4|vEu zL=mc4=j@^jEv6w6ad#vwx(l3cC+oy`w7{?jdu?x?OZ>%$3+>x~sneUD5xI~+L4TpB z36DTzew=7qE$_ZK{Zf#DWSJB^|2M=& zLw~v^IKW#oZ-HuO1s>I`?eVySJ%s@_5@DXtGsOMG{zL*@!LK;n4wMd*1+IZ!2_n?A z2C{?K0Pg@E{+71(CrINe*7a!4cs_@*r!YV>cl4P5PFz5A5MWI7k7sPdxOY2-goE-i z-QBC@S}&!n>Cv9?cr|ao4h|x2CN3n-B7e4e1(aF2Fq+Mnan9i8k((Dazhm@H@V(L9 z(~GS9B4L0pJsuZ&JVM?J+%Zc~j8v%{;W4pz?!_13a=W0lXi+{`5isONtC9bR&{g~t zZj6e7T$9bULQV={85E#WSezn}`3{}ZimIPzaZM6fZC``_xBJ1XomTm9CiV69lYgnR zxK_w{yAnVWI06d)v70V=&$BzOAzmh)A};0MVv|xfdiyCd14dvgaqO-HIEMJmE5J{~ zqEYdQB%D*ZSe-D%PDHLkV1jx?Ij;Z! delta 1226 zcmV;*1U37k3El~iB!8tzL_t(|0qvFpkSl2vh4XCNwym*k+t0Rb+qR8p6l1+xSi7*c z_w2o0ovBWG9LcUECe0PwXMSBjCbE z#AFuvqXe1}&zUV2tlhC65jj&aG&~K%BQg+QGz)u==;?8ow`L0q{6zHl zJq2!^yK(~~a^n$rDqO(-P=ruEEH$y>y?_(p7#yC02Wl-#?D@R}suN#MTe?mtWCq73 zVQ5++M&!j~M1Mg%hUX+;P?)eLuzd4w7I@?L5@=5#u5cDcM`vMdYz~G+rebhZ5{8h- zU?zs1houVZqlm2Oi&%iE{aXcE5{HR*tTr2;S2(z{dNWl?-pUHdKoV2FX4jz z0+y(j3h!my&P2|gTui+`4ePY)1R1qj{S{|%CZTYJ?_|*6+eV`iN~IDen+YM;L)|9) zMuZ^n;K2iM7H2-`5vWFAD8k{^YPCX0@~srN1+wqt2(xq)g-0>7+7q3E{m0L~&O<7d ziibH&R)64sEEv7RJ~cEBJxI*tYAoyH#!X*Eiin#uWUW>R+3O$R#vu{vpAEp3567=7c>yfUpV~zzGnNr zqx3paYthQWnbAx9Dg?%@3#fD(zJ4gfkFz+FvwykcQKvvhKx8tJsx+&_Kskf+y)kT> z&qLSsRz2qg6H_F)I+*}{do?6hU%7er9dV;~i8_Q2??u@4@Jb8%#d~64wpXQVF*jo! zh5a~7%mjCEm)NP`a^@cK%(%GRlM@!K`eE*>%@G94)g`{3c7M9O%O#6a=6l2{}@XNe=%4A&5PJ z*gexd7TCz;jF_nubGZvrfma9*B8d2qh$Y4mWxmOUFX;@%AGZ{5bt(zI9172^0r1)$ zh>)w!d%vf2FG|YFzo*}g7bxQf(N4_#P=D<3;7+MPb)p&ZF0qNIMZ8adNuDqp7K;VD zN_NSPgzKIkC_4y)!HDSm={)P;CQ(Jqepl?OE)kI7MZiICuLwjWXQ8CD4A+g!=S1|S+Iq{9nZo^sKS$|A_ zFavXxb8%6Bkw*CBKcveaecLXw=j(|rPhYIu@6T~0YVZ>?TE8;Wa z@I9q^NVgF_Khrj%K&-1k2X_Q|Nr(G*M~MPs`1wUb!BBBMq86cGdW{Qt$00BvFi~3m zAyLI00pRZhGAwtMqW}N^07*qoM6N<$f+3_!4*&oF diff --git a/main/ui/src/main/resources/window_icon_512.png b/main/ui/src/main/resources/window_icon_512.png index 9339061f3a95ee28bea25ac955e0d1aed5df0803..b83f5f1c74a4fb1d231bea09b2abfd7e562423e0 100644 GIT binary patch literal 23211 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 literal 23668 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 Zf&2Zn#$Httwcx`5L*45- Date: Wed, 4 Mar 2020 10:01:53 +0100 Subject: [PATCH 04/58] auto unlock vaults sequentially (#1044) --- .../cryptomator/ui/common/VaultService.java | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java b/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java index 68e1fecb0..b215c0c36 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java @@ -62,22 +62,12 @@ public class VaultService { if (!keychain.isPresent()) { LOG.debug("No system keychain found. Unable to auto unlock without saved passwords."); } else { - for (Vault vault : vaults) { - attemptAutoUnlock(vault, keychain.get()); - } + List> unlockTasks = vaults.stream().map(v -> createAutoUnlockTask(v, keychain.get())).collect(Collectors.toList()); + Task> runSequentiallyTask = new RunSequentiallyTask(unlockTasks); + executorService.execute(runSequentiallyTask); } } - /** - * Unlocks a vault in a background thread using a stored passphrase - * - * @param vault The vault to unlock - * @param keychainAccess The system keychain holding the passphrase for the vault - */ - public void attemptAutoUnlock(Vault vault, KeychainAccess keychainAccess) { - executorService.execute(createAutoUnlockTask(vault, keychainAccess)); - } - /** * Creates but doesn't start an auto-unlock task. * @@ -199,14 +189,14 @@ public class VaultService { } @Override - protected Collection call() throws Exception { + protected Collection call() throws ExecutionException, InterruptedException { Iterator> remainingTasks = startedTasks.iterator(); Collection completed = new ArrayList<>(); try { // wait for all tasks: while (remainingTasks.hasNext()) { - Vault lockedVault = remainingTasks.next().get(); - completed.add(lockedVault); + Vault done = remainingTasks.next().get(); + completed.add(done); } } catch (ExecutionException e) { // cancel all remaining: @@ -215,7 +205,30 @@ public class VaultService { } throw e; } - return List.copyOf(completed); + return completed; + } + } + + /** + * A task that runs a list of tasks in their given order + */ + private static class RunSequentiallyTask extends Task> { + + private final List> tasks; + + public RunSequentiallyTask(List> tasks) { + this.tasks = List.copyOf(tasks); + } + + @Override + protected List call() throws ExecutionException, InterruptedException { + List completed = new ArrayList<>(); + for (Task task : tasks) { + task.run(); + Vault done = task.get(); + completed.add(done); + } + return completed; } } From b5a8442ed28a709dbc3065dfabb5bbcdf694b2a1 Mon Sep 17 00:00:00 2001 From: Tobias Hagemann Date: Fri, 6 Mar 2020 12:20:33 +0100 Subject: [PATCH 05/58] added "unlock themes" hyperlink in general preferences if no valid license has been found --- .../GeneralPreferencesController.java | 11 ++++++++++- .../ui/preferences/PreferencesController.java | 17 +++++++++++++++-- main/ui/src/main/resources/css/dark_theme.css | 4 ++++ main/ui/src/main/resources/css/light_theme.css | 4 ++++ .../ui/src/main/resources/fxml/preferences.fxml | 8 ++++---- .../resources/fxml/preferences_general.fxml | 8 +++++--- .../src/main/resources/i18n/strings.properties | 1 + 7 files changed, 43 insertions(+), 10 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java index ae18dbd3f..85c8630b0 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java @@ -1,6 +1,7 @@ package org.cryptomator.ui.preferences; import javafx.application.Platform; +import javafx.beans.property.ObjectProperty; import javafx.beans.value.ObservableValue; import javafx.concurrent.Task; import javafx.fxml.FXML; @@ -31,6 +32,7 @@ public class GeneralPreferencesController implements FxController { private final Settings settings; private final boolean trayMenuSupported; private final Optional autoStartStrategy; + private final ObjectProperty selectedTabProperty; private final LicenseHolder licenseHolder; private final ExecutorService executor; public ChoiceBox themeChoiceBox; @@ -42,10 +44,11 @@ public class GeneralPreferencesController implements FxController { public RadioButton nodeOrientationRtl; @Inject - GeneralPreferencesController(Settings settings, @Named("trayMenuSupported") boolean trayMenuSupported, Optional autoStartStrategy, LicenseHolder licenseHolder, ExecutorService executor) { + GeneralPreferencesController(Settings settings, @Named("trayMenuSupported") boolean trayMenuSupported, Optional autoStartStrategy, ObjectProperty selectedTabProperty, LicenseHolder licenseHolder, ExecutorService executor) { this.settings = settings; this.trayMenuSupported = trayMenuSupported; this.autoStartStrategy = autoStartStrategy; + this.selectedTabProperty = selectedTabProperty; this.licenseHolder = licenseHolder; this.executor = executor; } @@ -103,6 +106,12 @@ public class GeneralPreferencesController implements FxController { return licenseHolder; } + + @FXML + public void showDonationTab() { + selectedTabProperty.set(SelectedPreferencesTab.DONATION_KEY); + } + /* Helper classes */ private static class UiThemeConverter extends StringConverter { diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java index 718f9d443..2b3a8d5ea 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java @@ -1,9 +1,7 @@ package org.cryptomator.ui.preferences; -import javafx.beans.Observable; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ObjectProperty; -import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; @@ -11,12 +9,16 @@ import javafx.stage.Stage; import javafx.stage.WindowEvent; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.fxapp.UpdateChecker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.inject.Inject; @PreferencesScoped public class PreferencesController implements FxController { + private static final Logger LOG = LoggerFactory.getLogger(PreferencesController.class); + private final Stage window; private final ObjectProperty selectedTabProperty; private final BooleanBinding updateAvailable; @@ -37,6 +39,7 @@ public class PreferencesController implements FxController { public void initialize() { window.setOnShowing(this::windowWillAppear); selectedTabProperty.addListener(observable -> this.selectChosenTab()); + tabPane.getSelectionModel().selectedItemProperty().addListener(observable -> this.selectedTabChanged()); } private void selectChosenTab() { @@ -60,6 +63,16 @@ public class PreferencesController implements FxController { } } + private void selectedTabChanged() { + Tab selectedTab = tabPane.getSelectionModel().getSelectedItem(); + try { + SelectedPreferencesTab selectedPreferencesTab = SelectedPreferencesTab.valueOf(selectedTab.getId()); + selectedTabProperty.set(selectedPreferencesTab); + } catch (IllegalArgumentException e) { + LOG.error("Unknown preferences tab id: {}", selectedTab.getId()); + } + } + private void windowWillAppear(@SuppressWarnings("unused") WindowEvent windowEvent) { selectChosenTab(); } diff --git a/main/ui/src/main/resources/css/dark_theme.css b/main/ui/src/main/resources/css/dark_theme.css index 4a31930f8..3c309a9da 100644 --- a/main/ui/src/main/resources/css/dark_theme.css +++ b/main/ui/src/main/resources/css/dark_theme.css @@ -567,6 +567,10 @@ -fx-graphic-text-gap: 6px; } +.hyperlink.hyperlink-underline { + -fx-underline: true; +} + .hyperlink.hyperlink-secondary { -fx-text-fill: TEXT_FILL_MUTED; } diff --git a/main/ui/src/main/resources/css/light_theme.css b/main/ui/src/main/resources/css/light_theme.css index 64e4a527b..3b3594ffd 100644 --- a/main/ui/src/main/resources/css/light_theme.css +++ b/main/ui/src/main/resources/css/light_theme.css @@ -566,6 +566,10 @@ -fx-graphic-text-gap: 6px; } +.hyperlink.hyperlink-underline { + -fx-underline: true; +} + .hyperlink.hyperlink-secondary { -fx-text-fill: TEXT_FILL_MUTED; } diff --git a/main/ui/src/main/resources/fxml/preferences.fxml b/main/ui/src/main/resources/fxml/preferences.fxml index 661ca097f..58faa7179 100644 --- a/main/ui/src/main/resources/fxml/preferences.fxml +++ b/main/ui/src/main/resources/fxml/preferences.fxml @@ -14,7 +14,7 @@ tabClosingPolicy="UNAVAILABLE" tabDragPolicy="FIXED"> - + @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + @@ -38,7 +38,7 @@ - + diff --git a/main/ui/src/main/resources/fxml/preferences_general.fxml b/main/ui/src/main/resources/fxml/preferences_general.fxml index 97d7e544c..555264bfe 100644 --- a/main/ui/src/main/resources/fxml/preferences_general.fxml +++ b/main/ui/src/main/resources/fxml/preferences_general.fxml @@ -3,11 +3,12 @@ + - - + + diff --git a/main/ui/src/main/resources/fxml/vault_detail_missing.fxml b/main/ui/src/main/resources/fxml/vault_detail_missing.fxml new file mode 100644 index 000000000..cc94063f5 --- /dev/null +++ b/main/ui/src/main/resources/fxml/vault_detail_missing.fxml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index 9a029f29e..ace961512 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -167,6 +167,8 @@ main.vaultDetail.bytesPerSecondWritten=written: main.vaultDetail.throughput.idle=idle main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s +### Missing +main.vaultDetail.missing.info=Cryptomator could not find a vault at this path. ### Needs Migration main.vaultDetail.migrateButton=Upgrade Vault main.vaultDetail.migratePrompt=Your vault needs to be upgraded to a new format, before you can access it From 0eec66a9e054dd8c7b9b38a43717f44bdaacda68 Mon Sep 17 00:00:00 2001 From: Tobias Hagemann Date: Fri, 6 Mar 2020 16:11:29 +0100 Subject: [PATCH 07/58] updated logo [ci skip] --- cryptomator.png | Bin 26873 -> 10357 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/cryptomator.png b/cryptomator.png index 77b5b8b352c8fcdc2212eda637bf81897d6f3c04..bfa5b754929cd7f1accf1e4c6b45146f8693df38 100644 GIT binary patch literal 10357 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 Date: Fri, 6 Mar 2020 16:24:16 +0100 Subject: [PATCH 08/58] some cleanup, did some todos --- .../ui/changepassword/ChangePasswordController.java | 6 ++++-- .../java/org/cryptomator/ui/common/FxControllerKey.java | 1 - .../java/org/cryptomator/ui/controls/FormattedLabel.java | 2 +- .../ui/recoverykey/RecoveryKeyResetPasswordController.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java index d711f9069..607e408f3 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java @@ -14,6 +14,7 @@ import javafx.stage.Stage; import org.cryptomator.common.vaults.Vault; import org.cryptomator.cryptofs.CryptoFileSystemProvider; import org.cryptomator.cryptolib.api.InvalidPassphraseException; +import org.cryptomator.ui.common.Animations; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.controls.FontAwesome5IconView; import org.cryptomator.ui.controls.NiceSecurePasswordField; @@ -71,8 +72,9 @@ public class ChangePasswordController implements FxController { LOG.error("IO error occured during password change. Unable to perform operation.", e); e.printStackTrace(); } catch (InvalidPassphraseException e) { - // TODO shake - LOG.info("Wrong old password."); + Animations.createShakeWindowAnimation(window).play(); + oldPasswordField.selectAll(); + oldPasswordField.requestFocus(); } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java b/main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java index d4f87c60b..1daf5bc30 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java @@ -14,7 +14,6 @@ import java.lang.annotation.Target; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; -// TODO rename after refactoring @Documented @Target(METHOD) @Retention(RUNTIME) diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/FormattedLabel.java b/main/ui/src/main/java/org/cryptomator/ui/controls/FormattedLabel.java index 44f446f47..c99cc62ea 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controls/FormattedLabel.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controls/FormattedLabel.java @@ -12,7 +12,7 @@ public class FormattedLabel extends Label { private final StringProperty format = new SimpleStringProperty(""); private final ObjectProperty arg1 = new SimpleObjectProperty<>(); - // TODO: add arg2, arg3, ... on demand + // add arg2, arg3, ... on demand public FormattedLabel() { textProperty().bind(createStringBinding()); diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyResetPasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyResetPasswordController.java index 7bda40364..ac21626c5 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyResetPasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyResetPasswordController.java @@ -67,7 +67,7 @@ public class RecoveryKeyResetPasswordController implements FxController { }); task.setOnFailed(event -> { // TODO show generic error screen - LOG.error("Creation of recovery key failed.", task.getException()); + LOG.error("Resetting password failed.", task.getException()); }); executor.submit(task); } From 99ed87de173e95ed38902f6ed29b008df65f7a75 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 6 Mar 2020 18:28:56 +0100 Subject: [PATCH 09/58] updating vault file text and removing RTF format instructions from strings.properties --- .../ui/addvaultwizard/ReadmeGenerator.java | 27 ++++++++++++++----- .../main/resources/i18n/strings.properties | 16 +++++++---- .../addvaultwizard/ReadMeGeneratorTest.java | 6 ++--- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java index 19a5107e7..c1b7840ad 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java @@ -10,21 +10,34 @@ public class ReadmeGenerator { // specs: https://web.archive.org/web/20190708132914/http://www.kleinlercher.at/tools/Windows_Protocols/Word2007RTFSpec9.pdf private static final String RTF_HEADER = "{\\rtf1\\fbidis\\ansi\\uc0\\fs32\n"; private static final String RTF_FOOTER = "}"; - private static final String HELP_URL = "{\\field{\\*\\fldinst HYPERLINK \"http://docs.cryptoamtor.org/\"}{\\fldrslt docs.cryptoamtor.org}}"; + private static final String HEADING = "\\fs40\\qc %s"; + private static final String EMPTY_PAR = ""; + private static final String DONT_PAR = "\\b %s"; + private static final String IDENT_PAR = " %s"; + private static final String HELP_URL = "{\\field{\\*\\fldinst HYPERLINK \"http://docs.cryptoamtor.org/\"}{\\fldrslt http://docs.cryptoamtor.org}}"; private final ResourceBundle resourceBundle; @Inject - public ReadmeGenerator(ResourceBundle resourceBundle){ + public ReadmeGenerator(ResourceBundle resourceBundle) { this.resourceBundle = resourceBundle; } public String createVaultStorageLocationReadmeRtf() { return createDocument(List.of( // - resourceBundle.getString("addvault.new.readme.storageLocation.1"), // + String.format(HEADING, resourceBundle.getString("addvault.new.readme.storageLocation.1")), // resourceBundle.getString("addvault.new.readme.storageLocation.2"), // - resourceBundle.getString("addvault.new.readme.storageLocation.3"), // - String.format(resourceBundle.getString("addvault.new.readme.storageLocation.4"), HELP_URL) // + EMPTY_PAR, // + String.format(DONT_PAR, resourceBundle.getString("addvault.new.readme.storageLocation.3")), // + String.format(IDENT_PAR, resourceBundle.getString("addvault.new.readme.storageLocation.4")), // + String.format(IDENT_PAR, resourceBundle.getString("addvault.new.readme.storageLocation.5")), // + EMPTY_PAR, // + resourceBundle.getString("addvault.new.readme.storageLocation.6"), // + String.format(IDENT_PAR, resourceBundle.getString("addvault.new.readme.storageLocation.7")), // + String.format(IDENT_PAR, resourceBundle.getString("addvault.new.readme.storageLocation.8")), // + String.format(IDENT_PAR, resourceBundle.getString("addvault.new.readme.storageLocation.9")), // + EMPTY_PAR, // + String.format(resourceBundle.getString("addvault.new.readme.storageLocation.10"), HELP_URL) // )); } @@ -40,9 +53,9 @@ public class ReadmeGenerator { String createDocument(Iterable paragraphs) { StringBuilder sb = new StringBuilder(RTF_HEADER); for (String p : paragraphs) { - sb.append("\\par {\\sa80 "); + sb.append("{\\sa80 "); appendEscaped(sb, p); - sb.append("}\n"); + sb.append("}\\par \n"); } sb.append(RTF_FOOTER); return sb.toString(); diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index 412b5afcb..645afdfa8 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -50,12 +50,18 @@ addvaultwizard.new.generateRecoveryKeyChoice=You won't be able to access your da addvaultwizard.new.generateRecoveryKeyChoice.yes=Yes please, better safe than sorry addvaultwizard.new.generateRecoveryKeyChoice.no=No thanks, I will not lose my password ### Information -addvault.new.readme.storageLocation.fileName=HELP.rtf -addvault.new.readme.storageLocation.1=\\fs40\\qc ⚠️ VAULT DIRECTORY ⚠️ -addvault.new.readme.storageLocation.2=This is your vault's storage location. {\\b DO NOT} alter any files within this directory. -addvault.new.readme.storageLocation.3=If you want to encrypt files using Cryptomator, unlock the vault and use the provided drive. -addvault.new.readme.storageLocation.4=If you need help, try %s. addvault.new.readme.accessLocation.fileName=WELCOME.rtf +addvault.new.readme.storageLocation.fileName=WHAT IS THIS DIRECTORY.rtf +addvault.new.readme.storageLocation.1=⚠️ VAULT FILES ⚠️ +addvault.new.readme.storageLocation.2=This is your vault's storage location. +addvault.new.readme.storageLocation.3=DO NOT +addvault.new.readme.storageLocation.4=• alter any files within this directory or +addvault.new.readme.storageLocation.5=• paste any files for encrypttion into this directory +addvault.new.readme.storageLocation.6=If you want to encrypt files and view the content of the vault, do the following: +addvault.new.readme.storageLocation.7=1. Add this vault to Cryptomator +addvault.new.readme.storageLocation.8=2. Unlock the vault in Cryptomator +addvault.new.readme.storageLocation.9=3. Open the access location by clicking the "Reveal" button +addvault.new.readme.storageLocation.10=If you need help, read the documentation: %s addvault.new.readme.accessLocation.1=\\fs40\\qc 🔐️ ENCRYPTED VOLUME 🔐️ addvault.new.readme.accessLocation.2=This is your vault's access location. Any files added to this volume will be encrypted by Cryptomator. To access this volume at a later point in time, simply unlock it again from within the Cryptomator application. addvault.new.readme.accessLocation.3=Feel free to remove this file. diff --git a/main/ui/src/test/java/org/cryptomator/ui/addvaultwizard/ReadMeGeneratorTest.java b/main/ui/src/test/java/org/cryptomator/ui/addvaultwizard/ReadMeGeneratorTest.java index 709fde0f0..9715c6654 100644 --- a/main/ui/src/test/java/org/cryptomator/ui/addvaultwizard/ReadMeGeneratorTest.java +++ b/main/ui/src/test/java/org/cryptomator/ui/addvaultwizard/ReadMeGeneratorTest.java @@ -37,9 +37,9 @@ public class ReadMeGeneratorTest { String result = readmeGenerator.createDocument(paragraphs); MatcherAssert.assertThat(result, CoreMatchers.startsWith("{\\rtf1\\fbidis\\ansi\\uc0\\fs32")); - MatcherAssert.assertThat(result, CoreMatchers.containsString("\\par {\\sa80 Dear User,}")); - MatcherAssert.assertThat(result, CoreMatchers.containsString("\\par {\\sa80 \\b please don't touch the \"d\" directory.}")); - MatcherAssert.assertThat(result, CoreMatchers.containsString("\\par {\\sa80 Thank you for your cooperation \\u55357\\u56841}")); + MatcherAssert.assertThat(result, CoreMatchers.containsString("{\\sa80 Dear User,}\\par")); + MatcherAssert.assertThat(result, CoreMatchers.containsString("{\\sa80 \\b please don't touch the \"d\" directory.}\\par ")); + MatcherAssert.assertThat(result, CoreMatchers.containsString("{\\sa80 Thank you for your cooperation \\u55357\\u56841}\\par")); MatcherAssert.assertThat(result, CoreMatchers.endsWith("}")); } From 70b70c55f3dad48239ab2ad0c063328b3a951332 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 6 Mar 2020 18:33:43 +0100 Subject: [PATCH 10/58] addtional removal of RTF sequences in strings.properties --- .../java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java index c1b7840ad..08a37a198 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java @@ -43,7 +43,7 @@ public class ReadmeGenerator { public String createVaultAccessLocationReadmeRtf() { return createDocument(List.of( // - resourceBundle.getString("addvault.new.readme.accessLocation.1"), // + String.format(HEADING,resourceBundle.getString("addvault.new.readme.accessLocation.1")), // resourceBundle.getString("addvault.new.readme.accessLocation.2"), // resourceBundle.getString("addvault.new.readme.accessLocation.3") // )); From 1c30b209695d13e543a6073087a2549ccfddaab6 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 6 Mar 2020 18:53:26 +0100 Subject: [PATCH 11/58] updating text of first document inside a vault --- .../cryptomator/ui/addvaultwizard/ReadmeGenerator.java | 5 ++++- main/ui/src/main/resources/i18n/strings.properties | 9 +++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java index 08a37a198..e36ef9883 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java @@ -45,7 +45,10 @@ public class ReadmeGenerator { return createDocument(List.of( // String.format(HEADING,resourceBundle.getString("addvault.new.readme.accessLocation.1")), // resourceBundle.getString("addvault.new.readme.accessLocation.2"), // - resourceBundle.getString("addvault.new.readme.accessLocation.3") // + EMPTY_PAR, // + resourceBundle.getString("addvault.new.readme.accessLocation.3"), // + EMPTY_PAR, // + resourceBundle.getString("addvault.new.readme.accessLocation.4") )); } diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index 3003e8b0a..9aff45993 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -50,7 +50,6 @@ addvaultwizard.new.generateRecoveryKeyChoice=You won't be able to access your da addvaultwizard.new.generateRecoveryKeyChoice.yes=Yes please, better safe than sorry addvaultwizard.new.generateRecoveryKeyChoice.no=No thanks, I will not lose my password ### Information -addvault.new.readme.accessLocation.fileName=WELCOME.rtf addvault.new.readme.storageLocation.fileName=WHAT IS THIS DIRECTORY.rtf addvault.new.readme.storageLocation.1=⚠️ VAULT FILES ⚠️ addvault.new.readme.storageLocation.2=This is your vault's storage location. @@ -62,9 +61,11 @@ addvault.new.readme.storageLocation.7=1. Add this vault to Cryptomator addvault.new.readme.storageLocation.8=2. Unlock the vault in Cryptomator addvault.new.readme.storageLocation.9=3. Open the access location by clicking the "Reveal" button addvault.new.readme.storageLocation.10=If you need help, read the documentation: %s -addvault.new.readme.accessLocation.1=\\fs40\\qc 🔐️ ENCRYPTED VOLUME 🔐️ -addvault.new.readme.accessLocation.2=This is your vault's access location. Any files added to this volume will be encrypted by Cryptomator. To access this volume at a later point in time, simply unlock it again from within the Cryptomator application. -addvault.new.readme.accessLocation.3=Feel free to remove this file. +addvault.new.readme.accessLocation.fileName=WELCOME TO YOUR VAULT.rtf +addvault.new.readme.accessLocation.1=🔐️ ENCRYPTED VOLUME 🔐️ +addvault.new.readme.accessLocation.2=This is your vault's access location. +addvault.new.readme.accessLocation.3=Any files added to this volume will be encrypted by Cryptomator. You can work on it like on any other drive/folder. This is only a decrypted view of its content, your files stay encrypted on your hard drive all the time. +addvault.new.readme.accessLocation.4=Feel free to remove this file. ## Existing addvaultwizard.existing.instruction=Choose the "masterkey.cryptomator" file of your existing vault. addvaultwizard.existing.chooseBtn=Choose… From bf27ec29683e4e84ef8eea1155ebb9d70196619e Mon Sep 17 00:00:00 2001 From: Tobias Hagemann Date: Sat, 7 Mar 2020 10:26:31 +0100 Subject: [PATCH 12/58] proofreading --- main/ui/src/main/resources/i18n/strings.properties | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index 9aff45993..2032732f2 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -50,18 +50,18 @@ addvaultwizard.new.generateRecoveryKeyChoice=You won't be able to access your da addvaultwizard.new.generateRecoveryKeyChoice.yes=Yes please, better safe than sorry addvaultwizard.new.generateRecoveryKeyChoice.no=No thanks, I will not lose my password ### Information -addvault.new.readme.storageLocation.fileName=WHAT IS THIS DIRECTORY.rtf +addvault.new.readme.storageLocation.fileName=IMPORTANT.rtf addvault.new.readme.storageLocation.1=⚠️ VAULT FILES ⚠️ addvault.new.readme.storageLocation.2=This is your vault's storage location. addvault.new.readme.storageLocation.3=DO NOT addvault.new.readme.storageLocation.4=• alter any files within this directory or -addvault.new.readme.storageLocation.5=• paste any files for encrypttion into this directory +addvault.new.readme.storageLocation.5=• paste any files for encryption into this directory. addvault.new.readme.storageLocation.6=If you want to encrypt files and view the content of the vault, do the following: -addvault.new.readme.storageLocation.7=1. Add this vault to Cryptomator -addvault.new.readme.storageLocation.8=2. Unlock the vault in Cryptomator -addvault.new.readme.storageLocation.9=3. Open the access location by clicking the "Reveal" button +addvault.new.readme.storageLocation.7=1. Add this vault to Cryptomator. +addvault.new.readme.storageLocation.8=2. Unlock the vault in Cryptomator. +addvault.new.readme.storageLocation.9=3. Open the access location by clicking the "Reveal" button. addvault.new.readme.storageLocation.10=If you need help, read the documentation: %s -addvault.new.readme.accessLocation.fileName=WELCOME TO YOUR VAULT.rtf +addvault.new.readme.accessLocation.fileName=WELCOME.rtf addvault.new.readme.accessLocation.1=🔐️ ENCRYPTED VOLUME 🔐️ addvault.new.readme.accessLocation.2=This is your vault's access location. addvault.new.readme.accessLocation.3=Any files added to this volume will be encrypted by Cryptomator. You can work on it like on any other drive/folder. This is only a decrypted view of its content, your files stay encrypted on your hard drive all the time. From f2f14063a4a8ebd43e1dee1d5fc7b514a0e3bf9e Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 9 Mar 2020 11:33:00 +0100 Subject: [PATCH 13/58] fixed NPE when deselecting vault --- .../org/cryptomator/ui/mainwindow/VaultListController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index 0da7063ce..167138e0f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -1,6 +1,5 @@ package org.cryptomator.ui.mainwindow; -import javafx.beans.Observable; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ObjectProperty; @@ -9,7 +8,6 @@ import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.ListView; -import javafx.stage.Stage; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultListManager; import org.cryptomator.common.vaults.VaultState; @@ -21,7 +19,6 @@ import org.slf4j.LoggerFactory; import javax.inject.Inject; -//TODO: Add check if a vault in the list is invalid and add notification & controller @MainWindowScoped public class VaultListController implements FxController { @@ -63,6 +60,9 @@ public class VaultListController implements FxController { } private void selectedVaultDidChange(@SuppressWarnings("unused") ObservableValue observableValue, @SuppressWarnings("unused") Vault oldValue, Vault newValue) { + if (newValue == null) { + return; + } VaultState reportedState = newValue.getState(); switch (reportedState) { case LOCKED: From 48815657441723c664fe783ed1d718c5720bacd7 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 9 Mar 2020 11:36:22 +0100 Subject: [PATCH 14/58] Added welcome screen and onboarding text --- .../ui/mainwindow/MainWindowModule.java | 5 +++ .../ui/mainwindow/WelcomeController.java | 45 +++++++++++++++++++ .../src/main/resources/fxml/main_window.fxml | 3 -- .../src/main/resources/fxml/vault_detail.fxml | 4 +- .../resources/fxml/vault_detail_welcome.fxml | 23 ++++++++++ .../main/resources/i18n/strings.properties | 2 + 6 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java create mode 100644 main/ui/src/main/resources/fxml/vault_detail_welcome.fxml diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index 2251903bc..5043fa485 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -87,6 +87,11 @@ abstract class MainWindowModule { @IntoMap @FxControllerKey(VaultDetailController.class) abstract FxController bindVaultDetailController(VaultDetailController controller); + + @Binds + @IntoMap + @FxControllerKey(WelcomeController.class) + abstract FxController bindWelcomeController(WelcomeController controller); @Binds @IntoMap diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java new file mode 100644 index 000000000..6d780032f --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java @@ -0,0 +1,45 @@ +package org.cryptomator.ui.mainwindow; + +import javafx.application.Application; +import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanBinding; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.common.FxController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; + +@MainWindowScoped +public class WelcomeController implements FxController { + + private static final Logger LOG = LoggerFactory.getLogger(WelcomeController.class); + private static final String GETTING_STARTED_URI = "https://docs.cryptomator.org/en/latest/desktop/basic-concepts/"; + + private final Application application; + private final BooleanBinding noVaultPresent; + + @Inject + public WelcomeController(Application application, ObservableList vaults) { + this.application = application; + this.noVaultPresent = Bindings.isEmpty(vaults); + } + + @FXML + public void visitGettingStartedGuide() { + LOG.trace("Opening {}", GETTING_STARTED_URI); + application.getHostServices().showDocument(GETTING_STARTED_URI); + } + + /* Getter/Setter */ + + public BooleanBinding noVaultPresentProperty() { + return noVaultPresent; + } + + public boolean isNoVaultPresent() { + return noVaultPresent.get(); + } +} diff --git a/main/ui/src/main/resources/fxml/main_window.fxml b/main/ui/src/main/resources/fxml/main_window.fxml index 8bae2c6a6..1eb017a75 100644 --- a/main/ui/src/main/resources/fxml/main_window.fxml +++ b/main/ui/src/main/resources/fxml/main_window.fxml @@ -1,10 +1,7 @@ - - - diff --git a/main/ui/src/main/resources/fxml/vault_detail.fxml b/main/ui/src/main/resources/fxml/vault_detail.fxml index 19a590cd6..3c97edb9d 100644 --- a/main/ui/src/main/resources/fxml/vault_detail.fxml +++ b/main/ui/src/main/resources/fxml/vault_detail.fxml @@ -13,14 +13,13 @@ - + @@ -48,6 +47,7 @@ + diff --git a/main/ui/src/main/resources/fxml/vault_detail_welcome.fxml b/main/ui/src/main/resources/fxml/vault_detail_welcome.fxml new file mode 100644 index 000000000..2712354ec --- /dev/null +++ b/main/ui/src/main/resources/fxml/vault_detail_welcome.fxml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index 2032732f2..a6f56a4b6 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -160,6 +160,8 @@ main.vaultlist.emptyList.onboardingInstruction=Click here to add a vault main.vaultlist.contextMenu.remove=Remove Vault main.vaultlist.addVaultBtn=Add Vault ## Vault Detail +### Welcome +main.vaultDetail.welcomeOnboarding=Thanks for choosing Cryptomator to protect your files. If you need any assistance, check out our getting started guides: ### Locked main.vaultDetail.lockedStatus=LOCKED main.vaultDetail.unlockBtn=Unlock From 7f8659afed3ac36e9b7617d8f66b22592e38fd28 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 9 Mar 2020 12:12:35 +0100 Subject: [PATCH 15/58] did some more TODOs --- .../src/main/java/org/cryptomator/common/Constants.java | 7 +++++++ .../src/main/java/org/cryptomator/common/vaults/Vault.java | 3 ++- .../org/cryptomator/common/vaults/VaultListManager.java | 4 ++-- .../addvaultwizard/CreateNewVaultPasswordController.java | 2 +- .../ui/changepassword/ChangePasswordController.java | 3 ++- .../main/java/org/cryptomator/ui/fxapp/FxApplication.java | 4 ---- .../main/java/org/cryptomator/ui/fxapp/UpdateChecker.java | 1 - .../org/cryptomator/ui/launcher/AppLaunchEventHandler.java | 3 ++- .../cryptomator/ui/mainwindow/MainWindowController.java | 3 ++- .../cryptomator/ui/migration/MigrationRunController.java | 3 ++- .../org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java | 3 ++- .../org/cryptomator/ui/traymenu/TrayIconController.java | 1 - 12 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 main/commons/src/main/java/org/cryptomator/common/Constants.java diff --git a/main/commons/src/main/java/org/cryptomator/common/Constants.java b/main/commons/src/main/java/org/cryptomator/common/Constants.java new file mode 100644 index 000000000..432cd08e5 --- /dev/null +++ b/main/commons/src/main/java/org/cryptomator/common/Constants.java @@ -0,0 +1,7 @@ +package org.cryptomator.common; + +public interface Constants { + + String MASTERKEY_FILENAME = "masterkey.cryptomator"; + +} diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java index 59db806f4..436fc837f 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java @@ -48,11 +48,12 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Predicate; +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; + @PerVault public class Vault { private static final Logger LOG = LoggerFactory.getLogger(Vault.class); - private static final String MASTERKEY_FILENAME = "masterkey.cryptomator"; // TODO: deduplicate constant declared in multiple classes private static final Path HOME_DIR = Paths.get(SystemUtils.USER_HOME); private final VaultSettings vaultSettings; diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java index e950fd4e2..521ca4658 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java @@ -25,11 +25,11 @@ import java.util.Collection; import java.util.Optional; import java.util.stream.Collectors; +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; + @Singleton public class VaultListManager { - private static final String MASTERKEY_FILENAME = "masterkey.cryptomator"; // TODO: deduplicate constant declared in multiple classes - private final VaultComponent.Builder vaultComponentBuilder; private final ObservableList vaultList; diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java index 4ddf54c6a..5a7fd3cc1 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java @@ -42,12 +42,12 @@ import java.util.ResourceBundle; import java.util.concurrent.ExecutorService; import static java.nio.charset.StandardCharsets.US_ASCII; +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; @AddVaultWizardScoped public class CreateNewVaultPasswordController implements FxController { private static final Logger LOG = LoggerFactory.getLogger(CreateNewVaultPasswordController.class); - private static final String MASTERKEY_FILENAME = "masterkey.cryptomator"; // TODO: deduplicate constant declared in multiple classes private final Stage window; private final Lazy chooseLocationScene; diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java index 607e408f3..eb8260bdb 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java @@ -28,11 +28,12 @@ import javax.inject.Named; import java.io.IOException; import java.util.ResourceBundle; +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; + @ChangePasswordScoped public class ChangePasswordController implements FxController { private static final Logger LOG = LoggerFactory.getLogger(ChangePasswordController.class); - private static final String MASTERKEY_FILENAME = "masterkey.cryptomator"; // TODO: deduplicate constant declared in multiple classes private final Stage window; private final Vault vault; diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java index aca5650ea..289497647 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java +++ b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java @@ -129,10 +129,6 @@ public class FxApplication extends Application { private void loadSelectedStyleSheet(UiTheme desiredTheme) { UiTheme theme = licenseHolder.isValidLicense() ? desiredTheme : UiTheme.LIGHT; switch (theme) { -// case CUSTOM: -// // TODO -// Application.setUserAgentStylesheet(getClass().getResource("/css/mac_theme.css").toString()); -// break; case DARK: Application.setUserAgentStylesheet(getClass().getResource("/css/dark_theme.css").toString()); macFunctions.map(MacFunctions::uiAppearance).ifPresent(JniException.ignore(MacApplicationUiAppearance::setToDarkAqua)); diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java b/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java index 149834978..4a8515b42 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java +++ b/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java @@ -69,7 +69,6 @@ public class UpdateChecker { String latestVersion = updateCheckerService.getValue(); LOG.info("Current version: {}, lastest version: {}", currentVersion, latestVersion); - // TODO settings.lastVersionCheck = Instant.now() if (currentVersion == null || semVerComparator.compare(currentVersion, latestVersion) < 0) { // update is available latestVersionProperty.set(latestVersion); diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java b/main/ui/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java index 7847940cc..3ab8d0de1 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java +++ b/main/ui/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java @@ -14,11 +14,12 @@ import java.nio.file.Path; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; + @Singleton class AppLaunchEventHandler { private static final Logger LOG = LoggerFactory.getLogger(AppLaunchEventHandler.class); - private static final String MASTERKEY_FILENAME = "masterkey.cryptomator"; // TODO: deduplicate constant declared in multiple classes private final BlockingQueue launchEventQueue; private final ExecutorService executorService; diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java index 14d9350da..b83acb0a3 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java @@ -20,11 +20,12 @@ import java.nio.file.Path; import java.util.Set; import java.util.stream.Collectors; +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; + @MainWindowScoped public class MainWindowController implements FxController { private static final Logger LOG = LoggerFactory.getLogger(MainWindowController.class); - private static final String MASTERKEY_FILENAME = "masterkey.cryptomator"; // TODO: deduplicate constant declared in multiple classes private final VaultListManager vaultListManager; private final WrongFileAlertComponent.Builder wrongFileAlert; diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java b/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java index 81c8f90f7..1ca2c90bc 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java @@ -40,11 +40,12 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; + @MigrationScoped public class MigrationRunController implements FxController { private static final Logger LOG = LoggerFactory.getLogger(MigrationRunController.class); - private static final String MASTERKEY_FILENAME = "masterkey.cryptomator"; // TODO: deduplicate constant declared in multiple classes private static final long MIGRATION_PROGRESS_UPDATE_MILLIS = 50; private final Stage window; diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java index 25374a7f2..c07bd3bd3 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java +++ b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java @@ -12,10 +12,11 @@ import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; + @Singleton public class RecoveryKeyFactory { - private static final String MASTERKEY_FILENAME = "masterkey.cryptomator"; // TODO: deduplicate constant declared in multiple classes private static final byte[] PEPPER = new byte[0]; private final WordEncoder wordEncoder; diff --git a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayIconController.java b/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayIconController.java index ded374e8c..a8d8dd71e 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayIconController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayIconController.java @@ -33,7 +33,6 @@ public class TrayIconController { macFunctions.map(MacFunctions::uiAppearance).ifPresent(uiAppearance -> uiAppearance.addListener(this::macInterfaceThemeChanged)); if (SystemUtils.IS_OS_WINDOWS) { - // TODO: test on windows: is this a double click? trayIcon.addActionListener(trayMenuController::showMainWindow); } From 54c0df51d5f2b05aeea1097a8d41139433903d7d Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 9 Mar 2020 14:38:36 +0100 Subject: [PATCH 16/58] replaced AddVaultFailureExistingController by AddVaultGenericErrorController --- .../AddVaultFailureExistingController.java | 51 ------------------- .../AddVaultGenericErrorController.java | 48 +++++++++++++++++ .../ui/addvaultwizard/AddVaultModule.java | 38 +++++++++++--- .../ChooseExistingVaultController.java | 12 +++-- .../org/cryptomator/ui/common/FxmlFile.java | 4 +- .../fxml/addvault_existing_error.fxml | 41 --------------- .../fxml/addvault_generic_error.fxml | 30 +++++++++++ .../main/resources/i18n/strings.properties | 2 - 8 files changed, 118 insertions(+), 108 deletions(-) delete mode 100644 main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultFailureExistingController.java create mode 100644 main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultGenericErrorController.java delete mode 100644 main/ui/src/main/resources/fxml/addvault_existing_error.fxml create mode 100644 main/ui/src/main/resources/fxml/addvault_generic_error.fxml diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultFailureExistingController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultFailureExistingController.java deleted file mode 100644 index 1bb9eef40..000000000 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultFailureExistingController.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.cryptomator.ui.addvaultwizard; - -import dagger.Lazy; -import javafx.beans.binding.Bindings; -import javafx.beans.binding.StringBinding; -import javafx.beans.property.ObjectProperty; -import javafx.fxml.FXML; -import javafx.scene.Scene; -import javafx.stage.Stage; -import org.cryptomator.ui.common.FxController; -import org.cryptomator.ui.common.FxmlFile; -import org.cryptomator.ui.common.FxmlScene; - -import javax.inject.Inject; -import java.nio.file.Path; - -@AddVaultWizardScoped -public class AddVaultFailureExistingController implements FxController { - - private final Stage window; - private final Lazy previousScene; - private final StringBinding vaultName; - - @Inject - AddVaultFailureExistingController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_EXISTING) Lazy previousScene, ObjectProperty pathOfFailedVault){ - this.window = window; - this.previousScene = previousScene; - this.vaultName = Bindings.createStringBinding(() -> pathOfFailedVault.get().getFileName().toString(),pathOfFailedVault); - } - - @FXML - public void close(){ - window.close(); - } - - @FXML - public void back(){ - window.setScene(previousScene.get()); - } - - // Getter & Setter - - public StringBinding vaultNameProperty(){ - return vaultName; - } - - public String getVaultName(){ - return vaultName.get(); - } - -} diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultGenericErrorController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultGenericErrorController.java new file mode 100644 index 000000000..299f183f3 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultGenericErrorController.java @@ -0,0 +1,48 @@ +package org.cryptomator.ui.addvaultwizard; + +import javafx.beans.binding.BooleanBinding; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.fxml.FXML; +import javafx.scene.Scene; +import javafx.stage.Stage; +import org.cryptomator.ui.common.FxController; + +import javax.inject.Inject; +import javax.inject.Named; + +@AddVaultWizardScoped +public class AddVaultGenericErrorController implements FxController { + + private final Stage window; + private final ReadOnlyObjectProperty previousScene; + private final BooleanBinding returnToPreviousSceneAllowed; + + @Inject + AddVaultGenericErrorController(@AddVaultWizardWindow Stage window, @Named("genericErrorReturnScene") ObjectProperty previousScene) { + this.window = window; + this.previousScene = previousScene; + this.returnToPreviousSceneAllowed = previousScene.isNotNull(); + } + + @FXML + public void back() { + assert previousScene.get() != null; // otherwise button should be disabled + window.setScene(previousScene.get()); + } + + @FXML + public void close(){ + window.close(); + } + + /* Getter/Setter */ + + public BooleanBinding returnToPreviousSceneAllowedProperty() { + return returnToPreviousSceneAllowed; + } + + public boolean isReturnToPreviousSceneAllowed() { + return returnToPreviousSceneAllowed.get(); + } +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java index 4e5143d8c..b1a99cf75 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java @@ -21,6 +21,7 @@ import org.cryptomator.ui.common.FxmlFile; import org.cryptomator.ui.common.FxmlScene; import org.cryptomator.ui.common.NewPasswordController; import org.cryptomator.ui.common.PasswordStrengthUtil; +import org.cryptomator.ui.common.StackTraceController; import org.cryptomator.ui.mainwindow.MainWindow; import org.cryptomator.ui.recoverykey.RecoveryKeyDisplayController; @@ -61,6 +62,20 @@ public abstract class AddVaultModule { return stage; } + @Provides + @Named("genericErrorCause") + @AddVaultWizardScoped + static ObjectProperty provideGenericErrorCause() { + return new SimpleObjectProperty<>(); + } + + @Provides + @Named("genericErrorReturnScene") + @AddVaultWizardScoped + static ObjectProperty provideGenericErrorReturnScene() { + return new SimpleObjectProperty<>(); + } + @Provides @AddVaultWizardScoped static ObjectProperty provideVaultPath() { @@ -105,10 +120,10 @@ public abstract class AddVaultModule { } @Provides - @FxmlScene(FxmlFile.ADDVAULT_EXISTING_ERROR) + @FxmlScene(FxmlFile.ADDVAULT_GENERIC_ERROR) @AddVaultWizardScoped - static Scene provideChooseExistingVaultErrorScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { - return fxmlLoaders.createScene(FxmlFile.ADDVAULT_EXISTING_ERROR.getRessourcePathString()); + static Scene provideGenericErrorScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene(FxmlFile.ADDVAULT_GENERIC_ERROR.getRessourcePathString()); } @Provides @@ -158,11 +173,6 @@ public abstract class AddVaultModule { @FxControllerKey(ChooseExistingVaultController.class) abstract FxController bindChooseExistingVaultController(ChooseExistingVaultController controller); - @Binds - @IntoMap - @FxControllerKey(AddVaultFailureExistingController.class) - abstract FxController bindAddVaultFailureExistingController(AddVaultFailureExistingController controller); - @Binds @IntoMap @FxControllerKey(CreateNewVaultNameController.class) @@ -201,4 +211,16 @@ public abstract class AddVaultModule { @IntoMap @FxControllerKey(AddVaultSuccessController.class) abstract FxController bindAddVaultSuccessController(AddVaultSuccessController controller); + + @Binds + @IntoMap + @FxControllerKey(AddVaultGenericErrorController.class) + abstract FxController bindAddVaultGenericErrorController(AddVaultGenericErrorController controller); + + @Provides + @IntoMap + @FxControllerKey(StackTraceController.class) + static FxController provideStackTraceController(@Named("genericErrorCause") ObjectProperty errorCause) { + return new StackTraceController(errorCause.get()); + } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java index 8bd11139a..3951cfbee 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java @@ -15,6 +15,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; +import javax.inject.Named; import java.io.File; import java.nio.file.NoSuchFileException; import java.nio.file.Path; @@ -28,18 +29,20 @@ public class ChooseExistingVaultController implements FxController { private final Stage window; private final Lazy welcomeScene; private final Lazy successScene; - private final Lazy errorScene; + private final Lazy genericErrorScene; + private final ObjectProperty genericErrorCause; private final ObjectProperty vaultPath; private final ObjectProperty vault; private final VaultListManager vaultListManager; private final ResourceBundle resourceBundle; @Inject - ChooseExistingVaultController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_WELCOME) Lazy welcomeScene, @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, @FxmlScene(FxmlFile.ADDVAULT_EXISTING_ERROR) Lazy errorScene, ObjectProperty vaultPath, @AddVaultWizardWindow ObjectProperty vault, VaultListManager vaultListManager, ResourceBundle resourceBundle) { + ChooseExistingVaultController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_WELCOME) Lazy welcomeScene, @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, @FxmlScene(FxmlFile.ADDVAULT_GENERIC_ERROR) Lazy genericErrorScene, @Named("genericErrorCause") ObjectProperty genericErrorCause, ObjectProperty vaultPath, @AddVaultWizardWindow ObjectProperty vault, VaultListManager vaultListManager, ResourceBundle resourceBundle) { this.window = window; this.welcomeScene = welcomeScene; this.successScene = successScene; - this.errorScene = errorScene; + this.genericErrorScene = genericErrorScene; + this.genericErrorCause = genericErrorCause; this.vaultPath = vaultPath; this.vault = vault; this.vaultListManager = vaultListManager; @@ -65,7 +68,8 @@ public class ChooseExistingVaultController implements FxController { window.setScene(successScene.get()); } catch (NoSuchFileException e) { LOG.error("Failed to open existing vault.", e); - window.setScene(errorScene.get()); + genericErrorCause.set(e); + window.setScene(genericErrorScene.get()); } } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java b/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java index 998bea98e..5ff125cc9 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java @@ -1,14 +1,14 @@ package org.cryptomator.ui.common; public enum FxmlFile { - ADDVAULT_WELCOME("/fxml/addvault_welcome.fxml"), // ADDVAULT_EXISTING("/fxml/addvault_existing.fxml"), // - ADDVAULT_EXISTING_ERROR("/fxml/addvault_existing_error.fxml"), + ADDVAULT_GENERIC_ERROR("/fxml/addvault_generic_error.fxml"), ADDVAULT_NEW_NAME("/fxml/addvault_new_name.fxml"), // ADDVAULT_NEW_LOCATION("/fxml/addvault_new_location.fxml"), // ADDVAULT_NEW_PASSWORD("/fxml/addvault_new_password.fxml"), // ADDVAULT_NEW_RECOVERYKEY("/fxml/addvault_new_recoverykey.fxml"), // ADDVAULT_SUCCESS("/fxml/addvault_success.fxml"), // + ADDVAULT_WELCOME("/fxml/addvault_welcome.fxml"), // CHANGEPASSWORD("/fxml/changepassword.fxml"), // FORGET_PASSWORD("/fxml/forget_password.fxml"), // MAIN_WINDOW("/fxml/main_window.fxml"), // diff --git a/main/ui/src/main/resources/fxml/addvault_existing_error.fxml b/main/ui/src/main/resources/fxml/addvault_existing_error.fxml deleted file mode 100644 index 244f57602..000000000 --- a/main/ui/src/main/resources/fxml/addvault_existing_error.fxml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -