From 8ae4198a448ab308aed95756e82da82ce42735a7 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Fri, 10 Nov 2017 11:42:13 -0800 Subject: [PATCH] Adding some task views. Bug: 69166452 Test: Build quickstep Change-Id: Iee4cb0b9ac32716f588082a197a90ec1b2655047 --- quickstep/libs/sysui_shared.jar | Bin 75304 -> 86425 bytes .../drawable/task_thumbnail_background.xml | 19 ++ quickstep/res/layout/task.xml | 35 ++++ .../android/quickstep/RecentsActivity.java | 2 +- .../android/quickstep/TaskThumbnailView.java | 185 ++++++++++++++++++ .../src/com/android/quickstep/TaskView.java | 88 +++++++++ src/com/android/launcher3/Launcher.java | 10 +- src/com/android/launcher3/Workspace.java | 1 - 8 files changed, 333 insertions(+), 7 deletions(-) create mode 100644 quickstep/res/drawable/task_thumbnail_background.xml create mode 100644 quickstep/res/layout/task.xml create mode 100644 quickstep/src/com/android/quickstep/TaskThumbnailView.java create mode 100644 quickstep/src/com/android/quickstep/TaskView.java diff --git a/quickstep/libs/sysui_shared.jar b/quickstep/libs/sysui_shared.jar index f9ce6e0c9ec99a23523e2038dd1083efe112de93..a76f4f9e0e2e8c39a8bd4e280217643e9d7f4657 100644 GIT binary patch delta 35327 zcmZs?1CVA-vo+eb?VdKK@w9DC+qP|Mo@v{*ZQHhObK02po%j9Df8%`ry&F*(wX14J zRAj8om6cgK36WL+iKrkA4uJsz0|Nt6rDqj~$PNBaBNg^fQ@2b8`cIo6$I6yKOHB+c zQqxw)SH<|0V>X-zK$0Y?*)*vw3JMo5Z=X^uDa|(SkxHHosdi9~S>oWCIhg&ri|}Z& zrqLo^Ea88c`Z}opX-)~7r=VW--Fn(|W_#!F{gycy(F6QI?A7$CIPih{Xmx<`ZA~3C zflG1FL{#^3#Dr{WFFuISBj``Dat7)mD${KCHb&zT>Yx4564cjCtg!nA87!5o{H)Vq z*WRt!X~*Mwri*pjX2j#BfWn#1^~2CcQZU2m0^*c$Ejm+Mze=jcNHrr7A$c=>NvEDy z`?t0*y+*UI+>t>StpNt1gqO1H#4|-v803s^J%vM+inIDuvjA`c`S85m_7ymhOm$IA zWjzmzGx#3-z;4rqs})5%IOkBd|D@F!pG-VN3&_OfNj-EBffA#N-6pG`wExj_yk_ku z9YLa1sezxo)|eTriNw2MN$s$r*bIivY>#EZ<>R;!ov$n@t=Q6p&H2VoJ-Iy4j;R55 zW~T<9tezm-&8LG@xqhH&O%Igu(YVi#&bWjnY{BV$NJ!U#w^_M$O)S0QZm3?Dv!BiA z4cqdnz{t>L6aj<9J&Wqpi;^3^;vPt=Q$1SnzDQCJGlko!pNE=HWdr;Y@?#ksZ2{cb zM*0NC*&7}{8v)Rvjsf-tpgRB-sO=GGC@iMI?yVhisPR&q)+!x_Jz#Wn2h`PGckj~I zQYqN=W%G)UtJt!C=oB!}N4bEHkQ`83W3N%P^^0~Qy8}0CJ&s}ObojI}Mv%7vFMp&8 zDtYR6T-QkDLhPCB43f!7rt0Ph^WrwJA7fLnRMzi;bsd@$*CY8rn^tm7<`#qsIyBt4 zGJYDtW(gzCga<}X2$+`d}x^p8WxPTe3L>n5;u~j25$K9ou-tigw~4uspzt2H!h}P=o|tE?^bo zUY%LKOAG=}dmjV)+far>F|+{wem_^4vn_B(pqtcXu{&fAfP@Rme?qm!ALPNTGO2(< zM(iA=zjLWle38iB5ZZg$S?dA{!zCwRf8#2_ZjSxVb;mE`Vv~RWOmx5-zSTSxN1pYY;rYFsr9TQEevx>Ul%1a&mXn&$5<$LgH#n#F|7SOsrdw(=vKVGcdzvT#g zA{gND&>jopjM!qXfo{U~#k`OJ=t@20hu%mKzG3(4`g{Y1bP`~RX!O@(=)@g%2}R}t z0!gK4ucV*K8=v#SV{j7lH>g=GxE3(nnuiG`I1&6XH@w~hNnFgkQ|S-Yq$VJP;sc%o7}8N*nyVCg)sh^Z(kD%-cKGpj zOqlKixw|#Tt`*tGW<$-9QtO`kt@+!4`Dv&YF$!DwtWB=7&AaB>7R0&(p{P+-luVMV zLmBne3mvKe_kx#Z+z3{397A)XkXrfT4>ivO!%AR|*g7jh!k)*B85K&}asI?(NQBQs zK>0rC0Em0~IRg5e2C#u-f^KcorS*!LJipDZ4Abr+KlyB6e2BjoP2<4r5pCe1B9Gn+ z|2c|%eJolxEx=_(a-lfid!$^YbpluXEl}{&wobJG4WV+yV=1qng7rSewT=Q2RhA?; zTn!jdh>hU+r=SZ~eoU)~do2eG@x&q9@Hkei-yw)qnSM$|n`LQHrioR#D;oj%mm82l5aWiKiJ)Du%A(8FWsdTqK+!aw#h0UgSwl*vT&kCSwW9b1=UV#ps zl?MgQs?(>9Fw(BH$uN4`?JA=>H^dm)egq7kj+>`HVZeM5Pw`;(>J3`m2{UQI@m)lD zLa$+Q!Icz!`$6n67yaCGSJB0pp(^#;XoOv7j#aAk&69M>(6Cy&a29j1mfj;sl&)dj zB`^QBoNdi{NsH~JhkHrj+OBr1#XLWR=^IG}8u8vEo@ex_jp5H}Z?Q!>+cqrBu{Gew zvmSfP59x0OMj3k#J>v?bu5D=W&8qgq<3koX!DtuU=|^|Pv!=w{^Y;*O4X1s&()nIZ z6&ndr+Z{I?U`GU90|yV06|D06YH$w+xYJ7gC9DVhl@ z)*Xz?<&p_aNF}YIVFc5^p^z*6fqsC-(BdySPY3=u^vvzxPjupgji3(?mGB!FNlSaTc%E6=}o2GX*UECtW1pBj$~PtzgEg-nqn{01sv27a61SHih&_7+C` ziD$fH%=tnv;^W~Lx7N!6Q=fcTT8}S~l!>RFZD`Yykfb@zOWg~zmpqyPaSI1JIm;=r zXT}sjP`ytine0di#&L_%qEG@Pgsl_QcgKB|Kd|+06jv*`MXCxMN%#)7CiP2a%EOgZ z{W@MXrzO28X-C`CLj9JRNF0zam+1+c6K)MuK-HrvrmMg&bXk~~rRSDOvkXd9m7xwe zoR<&zF2E2Zfo+&aMDPy(4-~p+@R@HwfPj?4{TCFX=vhgF{I82M0hO5wC@Jq|>f~l= z>aO5q@8QW{Y-8x`oTS(%H6V!Mt88p+T(NX6c5|Gkr-PCQZ7&rhSY$N!#*XVM-TuA9 z(grvcK)fpvmXR#gd1i>ao$MINwH#Zh$Sx*1$N||LW zQHt+dvAP|K#0U z(ZT&K>;gkyU@r^%7Sw_g-4WnwmG?(hCH?!?=%h_Q2d%L%6%m$=^p;cankZJh!)M9T zPcGQs^WT}va)umu_Xca6TBiYeL>HOA6J*{Ox4-V?)lPWJ$+zzpe;mF$M{)Zp+}jTT zCFs8euHKdIDehVyrrEMqM5?z)(Yq-;v)$>8*+WIy|FgG_;8?AgpdcVif8YN$Gk?8N zSV?71XBSgjRm&6u3{b4U21nEWAIEffBQi^Jozl_2Lm@fQERWsRuUQg1ofTB1J+}2s zoF?JcmbZ$}*lbv~pY&D%3pNZ}PY_esKO|Qw3C>^G6C~SXmjiR$y@rsA#Ezo3eunRP zvTbMW`cF*H&ritS1`p+tI1Ki^AaeHoQolKjVF#IbM@dR04^$vy6G=?U(G#X5Wx{Fi zEqi9KBw#=cd;u5>uC~=;;nFAp7*>{ME41XvtH~(47Z))A2K{NXu=g(Wb4!4 z_C)|d0SWstCTy+YyyH-qmZ{nwNb6=9$&*5J?IYX?_rq?I$RG-;U1q{%GqzOE70geK zH8?OK%lE`fp@Eb64yijJF-){5fxDwRP{8@lkK-J=BDdq#aNo4fTV z>K=EzO+Ji`!XwVG9%U9m$-&i2l02q!N%b-S-mWd;6I2?y&K5%!#&VbWSSHayOkzzGQbzR}yxhEhfD19? zQ=P+lwRJv#%Dkp_^YPCoMPab)1zZ`)R(*~}Iwmk9DE@kCrNsT7Ht=<7j;(D>}5Fy|jmUd)@1i%oU7F<{{vaw^-5 zjgKDSEG18ZJ~!T?_8fa?QXYzZsjfj#k-ft>L^UEBGDpiSssRG|sA$p>y z2ejG3%VqgcWc+w?7IE`SBs7tpg73z$3n9$n4@i*|tW@;VcH)PY~&Nx;Bx&Wac zY+pB*rpjA3>%P(HEP&5JB*K|{e8%|A6vATToam4A*TozX;e5hYsul2O&3iR&osjFi z06ZK;+nT*^AN+;s=YVFXEtv}^&gQ{GAOq6(56-?#uCT+Me^7D-GEd|Z0v!Y-1@`}j z$-mw>@c)I$e{BxAvWu(He+*BS+J-W^I?h*?NdlrF4IC6CMw1cZ9vY??q&<$1F{%Yx z*}R%gKUl;V!S7hw2>VI=75EBEI0efY!+A7Qic4gtp{E^l)+2ItS~o}5 zyt0-~O^4+KOQt8EJh1osZ5Xkr>N0C5!krez^ld*=zykx_;gW?E_~*M=<-hT;Mckur}>%`tnpOwoFYa zBf93;o2B}(i#)bPwIL}gp>bO;Ey5J`17yn5q;#%-URucp+4KEyy?Ons3Y|k%lQafC zn`siO{iIAzr8d^$@gK|8kPk4b?YeY`Xr=lZ(zO=KHTC4niXTt5iHo%`$^&S2DMMc+ zMt&^U7PjVMA3%N#95F;O4Llnzx`Sva=}!3z ziKk}oyHC{~j0WpQMe6c6m)bp+%^^K_J#R}Xsb4egRit7gpK%xMs-jB_wpATmCsp^* z(Z=SgiMds`GIJ*MPwaBAv*?xG?K`FG$}PQ6J>U!zAFu$S*JDwbVugJmy#+Uz7F=ay z_N4U*-y;1&#mr>Ye%2~nB75rQYRf0b#EAPl0;|o8Hf|{=qxo>DG4{%x1GU~kvYYA} zA5({l9sb<;Fp#-h%vb^C&Rgcfbr z7u0p;KvkHh=E69E8A zHa>;zby8e7t-LpR74lQ1uy-V3PhQ>$*EakvBp$SgJPK9-i6<+{lf)7+*{6njoMI9c zP{AKu5!k>#hZi1XY(#E?`H_LRMy zdWTR~a@MDi$oGFkgQwZwBfpDO8Y>QNU_wEptVGmzt z*!{4=|ZDKf?|z{==Ah!(0B8bQkLDBVBgw%^hN=q`;X_ zM$FIGSDUOKK)hVX%EgEd25!r*)(_p}*-`IywYTSdau2 zE3qm@nQp8&3diAx*CG=s@3kd$I=xU=BEXnvuPj7riV+ zeBH-%ySe-c;LKkad;QeK2F)92<{su5h7jt7svxQe^c`=L?RL*a)_tNGNxpq7dsTQ zVs%6PD~J)6!2LU6GM6nORtU2}mihBPE6A~`1AP*gP`{8n##%aFoKWsSCyGD=33~Gd ze?g$YzD;;`SI1e$I4&bcG=!y0hY&pYHGySC~N*b(cr?nJ=f z0Dr|ov-zwA@bO!$R_u`&`ik)rE!WP3yg!Uf_;_H%yv&BP<2Jq35<}nJa3aBR74E?@ z2Jcts@rKpB2y#~L(d_ZkAL5eCz$f{@G-=)NR zuANnW=S>yB;53=u*Q&DC{WI0MIJ$;)dP)d?K1f?zLq;nev9AZ-@<8?5Q z-z&f6P(@tiUl;{?@-5Gtxh?w}%x{}eWw4k>U3Yhw5lPQPv64^iiuXsp8qlGgu4Y-t zkyrf~M1&rjYjI1hcZI}FOh6M z-aL8lna4NrUM!f1)%L7elo9rO&6qIK-faM)vrgq>C@x8!w5JR(I_(CU*;to9;%KZ^ zPH{;v+|6(TsDz0*w^{iaKmwNTZ6r!Cl95fiDz6xOIXX;4Q%)mP3MV1nX-Pl&{9MLWW%hJ#LFAh}6KCE)Oko&j zd3XaKa4O8GdR0shjjDHpaYv7&!D62d0!cIThdZ1GO+C_NCx116;E~6q17|`)WF8tv-ok8LoOf+j|l`9yV>Y4Blt)o-86z z-SeFoZ`(*fQ@hfD*0Si}>2)DgI}X6FjAKs$pvXz#iB;I z7Ac|eM;bPEW7jEiB2@QtbyFT^5;G^XzL}{s{lLH?Bp$RPl&*^eROZz8YuQaE8W4W< z_rQ|LD`dOUjfio72DHG6yb9JwBO3$-f1P_kkFa)D9B^&`6GEXZ59h~Zx$ut83t<;T z^n{1JXWqD9sO8CYOMGZ&%VJp|%jM{ME>r?3v!ImgWf5vh9Q z$SfM=j874=rZJSHj9u|04qUk-C{J1AC>=`ARK$F(JQmowQ%El2|26 z##qHlKx8q2EHWfAxT}0F-1vrB)2K@&b1sU$!E&ms34q@ix#h+bYG=8+e$FQb?(~7cki0;E59Awbv{$HzjS%_ zZ)RhPeW+a6jTc$FB$vF^3wfP$E%EYKGo=4WSDbUYl0>_L4O)8mVZf*6 zNP5_ioUYyO6v2BI@1~FzwG#(OHR=)XargT^xB$D66hOeZ~a0fjnDye%r0rAIXe~DNh>~7|0 zlsUB{XLXrFuW#-0#_hHi{73MJKf><1+Y^}9yq1cq=6~n=@(4dNdVdOd<&bMu(E#mj z6XSg2Dxb~I6YcBFrhaY5^Q|*U>JqB=jMkAAFU+ON(&MM(R zf!QBDwucm53^weJSPzbRwas+;CF>3xR88DVjEwb#D6UVTlPBtR-?R50VwKfe#Em>< zNHJqZGEMUROsVkwHv=V7iu)ybvaB>%c@kL6xc3ezjBlg0AC^XzhDmQV5+x=kVLB4S z<%oY#{hFkCYj)3kJYHO?+WUe!JlVEv0Cw;t_UW2YlLwW!uc4lJpsA^oTx!lN{*+ff z2{$x7`d}TYjsgqpx1fz*+P;n6+v3Vni!0M$-K@-Zrc4P@IIeE)l<2%$0gqQiQ)2eW z?5Zj7ooL)o0tetoIf9;p9Oi1QQxaiHj|}t#6gKRI*ahI}Pk!BJXihoD6uF^r08LW> zA1J`8fCzOEb13;x>@F)_q}KeC&i=k(}XT z3_ONFF$jBi=YCV$iR1y04MN{}fzfDJMNYb^>3O(q?hAN^c5bYqQa`J-DcldIgBp=bWu zTEf!RuV)v=$^F3e6N|=pgQ>c`_QKf5H7>6uw=m$qy<^=GD3`B!hHw@PIUY zpapykeF_8Pm$dc_a}csnv93bty$MUu6!c{X`e%DI<;7VHgi8Qg4sU1Eb7*lJ2fWhnF#i`)!5==?ilGK7Miu zuLe`vjClE=vJ>@+Uy9(^hVFt?_c}Y=ptV@nd<$Bs#kKb{M$x80R-gB+ z#9Ntn+x*e8&%7R%ams(08{*g?yqytQ26go$T)W$M#F|yNHHc>iBnyz=0wHcr2$?}7 zi*fY`kw+3Sm(`O*(2x&~9Hbb-@ z!s0iEx$p!}_f+X$AFfL}!mYGMtUjDmSY8c?*)6~c=5nFoAHHA}0!l>QSm0Ohug0Q2 z*P{vXwx>%lcvx}(`TeX{uZ9}oSN6H1yVe?USMF^X_{TO}x6`sa{7&ptwrRM7Y4G@q z4Bwaz(YqqN5OXLIIi^b7cggY~Wnv5gEbas%f&)|U=H0>C(Z-Yrh&gjNn)!_gFRC4q z;ym-#o@K$>VNF<;rY@Q2@g*nxyS7R8{2?XO5>oTTnHr&N#{yY(2~2Z3J6)19h5f;htH0XGxEfTpTXy&=VL)xtZ8iA6^Kop51m*z;(GAm zi*RV|(4fYeQNBH~7wi)<+o*zn z%J9WTI@tgyeiL=Bk;0TC8s?oy`<$qv1Ub!2$V+o>UsY3ecpQ9d<*V$ zcq+R_n{(=(liqp=kI(}?DiL+<=OKAbi2<)ELbBg0VN|}T7l83+8G5{*n#J~G2l^(j zHT>&RUz8hPy35ouK! zUb|!8YXGl;Kc+_yDnq83{4g7M?`ntHZ;U%;y8;L=W6P9@7?6Qg1}%}iPKO)JcmC17 zcYO|y-6_fQ-|KaD_k}ex_lJzjQzAUlQ%V|$A$SKSSUi(?!GyoEBh0in)LYw>%vA46v0m}w-bt}n+C7+* z72N?#J4r}SPc1;Gg1Ib@lGMm%58h0hC@AGJKymX`GGeaH4*Dj3WfaswhgHY?*bg6d zaOI!Yq}fu?2WPf@rv^AY#@haGfu`Q%NoIE!d;w=a8k;H75Rk^0n?2h}JNEk?4A8XM zBPAAAw=+VQpbqj(NYTn=5sT*cRt*Z-n|M+YLaY+@wjF@HS>;g_!h04~1S_)$)sRd@ zqocRzd-eQivLSVuYluIaH7?|eqtG$L#%c{JHT!1QaKa?!r*?Jp>Y~QB!)0ZHe#d#V zIs=+nGB1&?B7=t(!?q1vv;nwrZEY6v*U`PW-zmwErrDMDT#_RgzYFMFg;9ET0TMZI zqbZ((g93pxT#BEFIiY&_1U$@eo7!u(VQl1QNjP9mth81k7?_l6eV z&jx>Syv2vDu8Z1#1v^MVbLx*JzE)1v0v08CTq*cXxp7gOgzF7fzl$g!Z^|FIVXg!zAy|v0N{V^Nwy0`mG&@LZrq^>AA z86&tLrM2x!Je$3uyY4M{81C={nHpK#luy`KHp!IV1@ zeVxAx4-@g@NGkj0kZhk4tz;3tCUb+|lis#~HCKGEI7xROe$PPswJJZf&@~~|(|kXm zSC?StF_gL;t6mfp{Z-ud@&88Ha%SVf_14#2_+B@kqWbPqCx!-P`aD=byO*p3r}S`qI;z_lS!N6d_3p6^h5$PyCZ#gu@zFq^Bo{89uxG$+ zvyS}>fjZ*svJ6LgeKiOD_Z_Rid?Y+cfm!T z*?(I1F>l(>q?OTs()CI?Vi}Pd2A@XQb}0Wb z6%AaY{`E%KU!E>t6=sG{A@}0S=ySUVzoif;y$4!Teo&dY@?(ebLp`FQS*~*eM{Q?S zUD%XA4(<7&bfs576;{a6ECbCQa>+8cvtWwgvO106J|Jqi0~n8!p!EA6p&%_wgqZMH zTmA46?fL_*3f>Uyj#Zg;ZD&!vdUvs2+xx6rlg{$P)@F8_I;V5B&vJzrXP*)EX5E`Z+6Y(qg?(F{OS`taLwr6#Li(6x z&FBw&aE@n+aW7J@#X|Z4g%3Du6vR6SQTNqz5uZ zhYyH6kan3k_!s)eP`6s1WIHe>FX!a&(B7G|l1FpXfzMG8!=9$u;75_`5$#?asb>}H zfO>fkfSWzHIrVRq$ceN8qxYQ(sS;WV({vylH}fR`X!5eDqkbE4&g^X!#b8=gUG9%OeMWS;tXX!^Lp_2`U&J_#ivpPhRYK zgh{;Nhds(>rGicb?EVSB32IXNnW*QbXMJ@EGkh!al#7Xjq7d)xnDM&Sf=z%g0CmP6 zt{%`0OPfV@me=f|?_bvRZoFuPU-2wh$(|9WlY01zvr>&k4xFnQnt2_txQ;v~SFCk*cib+~IyAu+MVad{%!!KJ_@pCTj4R z@^zr;cX@=^2-YS1Q!%=vQ1t5PAr{qb=rjG-g|y>8S$ag(1;M=g7{W{RaJPK;?DLg*Aq|G$ZtqHKRKB_n-@fndhRU z*u1{+fkU@yT|JzfFous3CQ9@hv<s4S~YcJ>HH2|urSEci@QtN|OQ68xcte1rw~@BZ>U&w0D>-KoZq*QxvTIv!+u zbJHc*yJ&~|@}-I123^P0yfPUi=5S%P#*ov)1In5zU~col@3P8rhC1W~#uQ!b!Yj2) zTDH8QX%SdF1!1pKFDY6p-Nxuny&p}D2J&SyCCgCLjZb;cY!SS;SlCn@2xbn4S zIz!EP`LBZZL3;toAclT_LKEf0F&n9JB?mIj5$F?{5Nopmw)@@WBF+j>jE+RVOpP2d zZ;~7wVC!6b+y6X?n&NMO`h}mac#M#HC|d^Qx6UZ=4M=gmsl{$8$jWhii#kpM^yLh= z#g;&+g^S;JOa|)dLT!2ukP|S=K@&I5TIAZ9 zVmA`H^aEl{ITLvwak_bAchCpo@i!XG6P1OTxhZD$qZ^CoIboU~3rj4<9lrz;P&>iK z@9bjpXA7Uo$*uQQ$x!|AbE@18)FtS(V>+9R-&<+zAHWOP^e^{RvuA>bUUY#d$L2qH+(kYmThVo0A7rsuIv*4+WmY6Ne7 zudBIV(vZQ)Hfp^|aTC{ELe5DLK>IRkP|dVu)9i4}$&+V@%=~nTqM#MEll!;#Y_di{ zF`3@8XG=BE>jM`**^^NrVkBR#-B@3K?W{eH_ii$ke0R?G;BCivtW}2=sI!Y9GE@&k zH;A7ZeFzLhxSfAX41^T-mM842WPMNwc z{w4DXyb*FvG<-uxF5%j@b_FG#EPMgq-<};3e1aDq2(CwDpV_^Hg0|pC{cU3(kWBnj zv`9)!{Gpi_7f71i0?SF3fFL*fSi7m8ue7s5Q6AZ8Jp5N+;iIFmwUdEN;v9XXmEzoy zd_Lfp&e;9Fa3uzL9R^(>*M3>m;%d_;-##eC<;wTJpSA#;6wzx!AdzG7*B=L>o$P4l z1!u?Le<#mfheFT_K(;-U=?|8@R(4c1Ts2Rx8)h{Pa9cx9$46cj1N)sFk~hSjTTi6{ zzf+cW=wD+_5ikMjUGmY$4)3^Hd->kC>VKrizd)F~<^38|{B)n;zGeC$c%&R<6x{#{ z+heXcK=;jlPyzrefrD-akNpFOyT+=jw9qb>gbl)#Kayg5ARsv19x7(X~R&M$v@kD=05 zJ#ENFI^<54(n&0@Q+zKMFU({NO8>-~=>eDOLMYSET{%SDu(~HN9 z5|eE{jyLk?29B4{g1$MHbIMHr`dAgh=ly~@@%p68KA|T53tB_cTrpVnh+IM{6LJ+G zDWs;?0CAhUtbq?1!4Vzqo!C4xV#>Bx_M5LKe-_4mz1q ztxwR#eX(NBJZ^q~Or?HrpX8QXN^QNA7_;*(JZ6%KHK@y9ff@^S2rmzY%l(Nv0c%CmvvNkhI8bw;+ z$Ov`TLSJ&pM3S!&XkWuE8(nT3dr3;6i^abxegm3&x%&c=4gYOFNYhW%Cj3y)%tyM( z5ex5+1CZT8`x52$EE&%UjlPXt*Mvb6&y?DP9dQAWQ@6mu{I6c!Jjp!`e+6pv( z6`@$X7XcMT*cC9_6q6=iwq%8)@u^4~nA~%>V@YeDpH_NY+n0_2G|FMk(%&;p~Hu~!d6$c>4Bu#%oiAK)gjy` za<_w}0@@b#nc5BiT~>_hi3(>ejucka3!>DmppFluX3Ivrsu;MQ|M!8`qqf%(op$Eb zdq$bb#s8E2s*HIGPU||CQ+CqusUIiZS#%`tFC_Xpl1NM4bpv#Hzy_y}l9 zUFDat4%cELEN=R}_Du8LAtg0qwDNxQ@j;-xtR%TYkp zIZ@3avbwJ$1s&_>%6=N`X07FBTPyIZjroc+unlR`s-2w5;ju+gwSBpAenvyp3zxq~ zaEGJf{9=`Xru`hlcC-4LSYAOJ7(%2eHB%GsUE_)Ds8SJ_wA!umOkJaTV%3ISwaI^1 zK*4ZC0R!1tLwKvkQ2V^bcAwC*ZuvJ#fo_ZrI#d5_}&3IW)cd;xx5m6gwqok{5S(7wY3i$tAuw(&o=XtOa{`Mnu z)sntmO6Is$SQNNns5XiQgpETy91k3gX#h8!#;AFpHm8*RzOAH2(CXxV%Om!g%meHJxwsQ8$9{I^ zEb8muY!s=Tb!hg#d4%2c|5udoe}aAu!C4~U{}cl@Oy+w3Cn|USlPv+z2$zCF_&3^@ zlAi(dZ>`|}>3t#m8$t}NNCx|N5=r&yzd`~@wPeaJ5h!$nOkL%Fdj94qHUJvYP*DFa z{$CMB`G3;p6MCm16M%zwKoNUe2SbLD+9OL+G#?aKwcOrO!PqjJQHDF`P$pP4aE}%>Z58F~FGbvQTP@Em_ljexW$U z6`S_rem2}8sL0y$QCWm(9=w}IqaOBw8Gyr@*HY|5rU%hiX3z0j&2j`8)^C5Sy$mj) zWcvVWN!=bxw|J!G_u?6J=u5pvzkP`$U9a(@3Mq_(Q&c%_G9wCa-#AhAB)A<`4)6yW4Y33C@L1w>kw%eu ze`1nSHCk#xB}_dB6<+K`nIkLCGufY!vsR+Wrgk@zkbz&FB{~TD?S;YL1PmN3IJbV> zi0XuU32ld0_v^pw=j2%IwA;}!@*rl)(akfPT29UXpy`&BrWtP{Uv4VwcFdTDZErfW zi_NT`>Ag&2P;`Jby8Hp&8l)0)eH!@4Y86f zQjR7q`7-pOv0p8_ih}+mj(y-a3ZVy;y^B%~%4kEkTu(1qGb3`{Uw>W^dz~9;srRY_ zn6J1>jTcDnyQ84ln{8Ne#?M60htZ*Skn_t%mZ-xHM;ESLXp4bq4-bJCheTzWpvTy0pqekR93^ z>eX}F`HehOC6)rV=t7Dw%w*6|jiislPhW4g~A){aVlk|gX zZgjXg0#ikYbJcN9bZUs(%B4T0?FeD%<&|miOG_|#Jtr2pBjLYybmzi^k#UUf2#YJB zbttl0Xy1(hg9%YFHsNIDpM5(f!8YhyXjt2 zV+b$y86j#;7L&5rkZ;1)py&hk5@870xiBm9FncB~j{UT5)H#Vcb#0}Bk90dXo5YL7 zsLU72nrMZy_1Aa$-AddWO1q=$jn;&irLwAHcms?ieSv@V$k&KM1pBWZvHZ>I`!798 zSQ<6~s@XbYh@t$XbWfqk2+D+&ga`{k+0`S>;L!gzW{3bwV23s-rWY~a)>US*Yxitr zjy*K<2`BJ6R8uFVSUJC+q56sV6;xz2!vKq|M_YJ)Wo6dx-R_-p_WNp0;Op(t9b}<( zDS%%lebi`t5TaPNGvt}=(Ju_yQLfkkW0jGM}FQ|A|fu(emL zQgDC}eef!q;r-Z~;;PN3kY^!2ua?1!;>v?keIsnTld>=E-MyrR+*)En?Q6fCAX^<~ zCEaR816Lq88M~u-HdZ@Xn|@t*(9ah9;IEI3;2ZrgD79D_W{|alM}Fq+lfqGbD`@oz zECW;_j~b}*%0s{-RwsUQD+S8j<>UigG zDNtayktkPqI}++u*i2F9el*xG>+3@FzWuJ=_`v@g@i)?3z_MHF74P%unjC~hpMA3j zr*bhgab@skSIeaK?L9RUVrHnbLw4ULP^c7v4pslLpchkG37n_P{C&piFcCQ-d*deQ zfjwEQ^=t)Er~U@&l^$WYJ_xQF=g**jfGPZU4K|0R{t}Ib8?17K5I5qTer|qa&ii!5 z6*+2_?}QO)K^LukfSdT1A4Th9n`{mVhF&XN-@P+b2TH}8lISE_s(ejr!itH*f$X*F z+|bG8BsKWI#&p%G&$SK~Ti&OiQkt0^d}pHke@*^2anGvoP8@IJQz?Csbe(%f>uky1 z%bNADCLG?tdYcgC5EVpu(@&h=uzCsiT6E~H;;0nME`fIvKj6(|Y_zRfzJgP4$!(0+ zr!vn|V@s{+R5{Z)?ZKlLq0wKJ075rBr$uwhxf>=|izQE;$5WL@41*vAprET#>Pb%; zol({9&z!!JEaT?4Ww`ueLRjEUwAhm+fHacwE=ZPo^o@KP#r{qz3(VDfN4>-@BqIHw zheD@pAiL=97Qu^g?4|keL)f6@6Gk4e2c#$;#Ra|~Neqiik;Tkz1dY@Z0hLPLDTlg& zcPp#O1IzuG(M;`XE=}KTL--SzgQK`e>f4O zZ3^H3V!yDvpx`d;53^4#1aYa)%S06+_mu-7U!T+bc+0&ivf4mVA;Q#m`YS+s6VmLq9As8}4f>yDrRE4ECq-XVV zRV%)Q(=^Unr&-40cAwIvu<2xMOk8d?9c6q)?);9#kT84b045%EWC->ai;PGz-(PiH zcMD{jKX2K5exAe#fNl;CQ&T!fM{KZ%|C#JR!RoGMisWIx`!nCK&JNdF0OZ56q1(5{ zm;N){-vUXufivK~US+md9fS#GE-RI1MW0Rn{}lEYP;oU&8z_vsySrQPAVCt`-62?T zcMA*_+#Q0uyIXK~3GVKiAPH~>PR@J6`~CO+vxc>XT~Af_-n+Wms;kKKX@qZ@ENlG@ zxXxnpH!C-KgXij)4eH(4H@s@#FBLSW7Fmu{P77>%>bikftv zkJHA-@!}r_T=@GDQypXz_e8ruP%cO*q8eo-9@|p_@Y2yhzfiB%$iKTuSUQpEHA2hR zXGk={u`8QdBAbYEYpxX5g`z)HHcaBpH{G0DO(i+-m%kn`py_rD)}K0Qc)!CK@R`wC z{-=W%O>YjvBC2`pS?z%0^_F)-eIwkDR*R8>7SfYe0hn~Yr0=Jb+!352?!vbTT93qW z)P7^Z0DKEiIj9!81Uu2pKF&j|l`$WUy!o zwpsIdQfKIA~>Vz z834Xw@`&6tx@xYNO%R0>jT!e!uAb}KK5@8!g9^wo@SIzOg3Dp9p|I#Y?#aLqXODJaCNQy*=nKo#c zbG+c>svgu_a~>ZaZg_Y6n%Z(D>RCKcBzSzeNHmsmTqN6oAezqkNL{<86jO#yncqyQy){mC6-J^K;bP<5 z>MeI}M!eqi1okEk%uC56PY-#Pzw?;U*UWQlz^&E9bbFszYL9Ih_Yv~BfwJVWk7HT@ zTj<&UX`#<^kB%{7fRc_J`g;t%=>%)q&>6}1@6SujX#-}3gR{h^*wJLLB)rc%mK=Gf zd`^yyUFwJAF2rsH$yn~!bC4ftw$k#vp+1D28oTU{rFookv)w%2-u=M$E^uWJBVA@7 zi^OI7O4!M`TyNXor30@L@Zk(ojZoJSXCA3rIpdc~`KL$=TtK1BDEZ1}``Yd*e|KX` z|F7kXrbQ=Cv^>`(Y{Y=y)yj$$%+lYP7MUAHqbwi^JDGPSDOV}l>VxXTBD0R6h;AC( zD8l*FM-IxvaF6FCg9~@AxUfEzH-4OO2(rW&h(IUq(Y!`G=+PkxjzEW%qaoz=q+R94 z@9$IXQDF#=Is~9^Y9J|JAsdN0)*Ii3$DEv0T-bJGHsVr5Q>*5&P>ppm;v`e-<2%pIG+bD9bu+h$(9MQrG8H7;nzB!U77l+j-L?%Pvyd8@RUM2L!|EwP zL8R2O)2T-)^kx=Ro-TPPvwdX3#4xT^ZHj3$m%jJ@H>&yr8*AV}I?FvigdS)fd)G*4 zV~7R2q5vS9RnS$cCETX|5q1H2fbhG6*g#BYdpBn{_BIZJIj2Y(nf5xaofd`hc<>-v z76-E*_BW#x!cQrgZvv(DQ?sd+jOXmgb-s4753$ovFQSYnk&JjWW)T0;zl{MTRp2Pk z_y2Xa5PR#z0MtWl0PBCci99788#JIkg2ypdV)lfD5dQ#=|8TO$;Wl>W)jQ@B!vgziS+rgyW^XU?^1HBZJIZ(@3 zgN`h6No2WG2mXd(*@Q->X${A2=Z@@?`f)Ti)RY6*37}QFW*ql0KZu@tHyUAvWK(}; zqg`P8ly~|nL9S`bq3-P3Fzem9Y#7joLZqc zuM#a%D!>cxI6&LXtcQaL{U#f0=m?(h7pl++!V`AYMuy@K*B)G^(Rr$%Qx7$1gzWnB zsLl5%f#vgY0nR7OHfp1GQOD)>4}wy4-x#wM)-_BQ)kTK`zPRB-VpzpZ)K?m8p{nA3 ze-bN#4Aeis_*K@910BtkY-NbjD>Rjya$nR{dkQEJ4lsEd^OHR%*^b>-g{`12QcG@W zyt}!{zcE2%53!tA#a~bh5fZ#y1y1xCHjU=?hS)dQPKs-C$kS!Lb|Y= zI9LN7l6DD}O|$%97G(sa)AwP={ki90Wo~p3&hq)QvcFmB3S;tWI>}UUlbAHXTPJuZ z;)GN_@sr-%V~evad=>$DfGAABA_m7jW8D#_zvHe}3!bjaZHYLNIEAv_By&?48l~jB z5-#(BZt6mQHgg!a@!*U=HIx3gn#KOd%3;TDeJ22*o=r}uU zKcw;?N^D2xD%W0=54T^!8uiv+y`46m-5N~+82(cA8Rop{HclR8c3|?=w|%?*vxRUq zY%z^_NUU|Vj3-g$Xs0u}(l3g-?MRstS(8XV{pLe+yz2T)S$9IM%2(CSc&`%D*5#&4 zH*>)yC#`hGkO;+$!8r|NE2;5k~wk{WJP+CR<0?Lp+&Y~TNJjoWL$WuJ%6m+r5im={fCtf|Oc z`o2x6c`wL>)tm;zEk$bIjQzTP>pEON6(Em}v4bk)`@6Bp70!4pgUq-*mCV{pbkqNk zMLOn$n*AJ4>C+EpqJDPcK{k%&pd)a*{sEJkUFyy33O|1Psz@C9Jay=Y?aeioOznEV zZHf7)m?TQnb;QYUc|W-(7u5wJsgQ&g2AP~FO0uOIrMuK<}@n*waz0K!qQkFP*EmlZ@*URjy&w}tsm24cn|B*5!hzDmaf!HHgXv}g;)`SO0lTSY!ISo8vW>By%f;Es zxR=&@%}!GeZ|*+{V@Y@64B9Y66@B@f` zCpk9lBu~|rVF(p$z%lh!?!gGjMq#p8CR3KH;(AH!a(W{!#pIS2%>MF`R>88A`zE`U zZL3rxCucNo$7!a_Ad3R~Mk&EaE!Y0$mTWF`Ic2VYI3e$|><{Hq`~Jy5L^Gxod$$pV zW+Lt!Tu|PCo`@caVw7_uF707>v~z$mK|TQ#r__g5D87K@P{)KU&*_lua_K7ry9j*v z5W{dmW&*{__QHWZX;xXMyv|(z2rHH<&$JE2HW25tQVA&Xdh(*>h?5xKhg>s;<;@7) zJiJpg^$GbIc`|3b!a^j*rsX1o1c~oMA`fIFoyUzd3yPNhQkagbJ5tjaKT83WCr8Vp zZxlX=N^5M!jb9B~)@PsYiAvhXKKM?xvbJ8BB@!cIW6h@x`0l7F^t#X-#ddL=N!qzQDM(+iHyFF-2>T}-4 z5m$R>gWc!AGmhVx*MQvO6<*W;zpuO=mZwB%d(v{k*q2*7_+ZWsII z5UDrQW=UY7!23Y_yQPyOt!WCjy^uM{Lac|VY4Ke-kDZZt!mV$k3X`NmwV+FcV98G> zy`6<}@NsFUiooe(>l@#8K!JcZ&8ApPvSy&a=HYyn-Bc%vqjNxs78^II&UA|0?1z$R zzomDi4x8nvwP|)vi(&JMi;yVO-Fob(p5pfU#4TyH-Zk@q^rpSc zSszK=&DOsE06~7U;SZ3j|El`&=ZVV}hNsZuK06EiuN<{#VgD$!{Z8C2K8dRbe?rQB z!N#n9VfNw;4#d5rfGa#G_WLt5IAbDuxe~1I&ai;F!G%y)!<7YE*4z=|<6roQ#~b9r zChosfv#fZWJE)yvx9x@XW?TySCN5UI1r+0w<=!A*QKBcF?=}Nq{aV$k%npv-{ri%q zt)kgVOf`j$H_(HdwhVP){8@tHB3FD#@mK)YSWLeXv}j<|JU=pG9Aem6DE8x((fWNu z^X$yL!`} z2&sHqp-+XroV)Q6XPHSq8q9 zT}g!Wws4_{y29xl<1|u>Ma4uL)>1i$%kX1~nwDOncJdkc-WHuKhTRB+yr%y1W_yUS zXnT!CZfN?tx+jpy7`xLL^%oU}JF7!6 zmu;i_VX^z89X1SRefA9SOteP~BJz&_FdR;TTN*@Mu~SR$-a+gH1b>~GdbI!bO}C%9 z3{kDmUML4z6v2iH|JZJtJG8aF>t|^+1Z=gVpZ4P{bB~}?g@5VUd&e}9(n*F{Al!m>P`$5< zL|15R{|&e<4-Mm~YH@1>9EqGjBL9CY=RfneBU#{j!ec(84lO(*jO%-dI&-Zkjy{2W zQ!*9uK?8L5r2UEmXH)0~w$U+5^pE{-nWJ6rHh^dD`)ahz!|@DAzNWG5jc~6u0iG^^ zYYD&3siOPix7C?CI%mODD|x)2<_DTuSF=SG_hkNM?%c3A!PQeGpvi zCMTj?dVls6nhVG^QcG#gOqx2Q)F z)+RlJ^7-)s!p_^g9>9bDjvM?@D%RLGBr=VdQxtx0EkQX*lpP7!k`EsTfF4(cu*CIg{tn$=~SDBu&F{rL8KYU|1 zg-MV-7g_4?6TB{(fyaCrzmHWbog(Aa;|i26imN3ek#rCoPR|11v0ZECYWdwVOd437 zz?9Z|`AeUmR|AL@d(qO|6d{K75>7*l>`)z&pr^FJ2KTix8%Wow4x%89&55H2Jw;F9 zsaSEgFwqb=easT%SXQ!rvKV7wD~^UX3bO|et9RYagv7{tZc;z%UXfboH({Xe)xMh6 z{rhmudtmf9!&q)%{J$(E+kY1m{wQNvX)Qb>=3!oTp~{kPY49V92zn8o1lHHgPGNvd z12}@UNlMxRRcnNe9@)iZH}rW{m`Q_PcuJojC$Gs^vO~MW)8p3BTacR#8AG_lSVIX54DJ9Txe zcDllh0kkdDGAB$z!^nm4ldTn3G3A$WY`- z97VaFJ?HgaaH+vnob|Z&Rx9WTBD!=JWT!47*C8%KF>#)R=eA$PST`d5n<(Bwxd_ps z)&Yd9!$^K^41$-gOUu^3ha>4bmB{!BlE}3#jgcx`g`^w`NIluj~GR+6w zpuH@*A_7_-YPPL2lDV0=ksWLVP0w_y7mw!}1}{Ivk-AOoaMk~h%H^}h{;tXhAl|MN96_p zUgDTijYxse6}f#PaV*HW4G=Mt4T3i09UN1n@FSc8WU&un%h;)ddSQuj%<~M! z>MXsEVvAx)8mV#|Z`R2s37E1%9Evb0)9!oZo|RF)>ucu!e`OSUQAR!Xzm<{wpN<>2 zwguc0=d+d)stK$65+2FQDe6-Xo-N^lZzx62=Fe>d zvyy%qDXv}0o4|Yom@!&vT~MIHcE{3i`b8a;b5!F~nMlwr!@6SRx|k$YbhQpcOKm=kmZw6J z!%@XM`#PzM0I)B45R2ap?XSX7j2{l)AD=Qat(4t5^VuL%Z#qtq1BgVli)fQM2AAsa z@b=hPd4X8~t<+YMQhuE{K_w^MrwVEH!cA7@`c%A}#8ao@Ix&Jv!8|7<=ZMc6@Nl|z zq=Ct~XP@TzhmLpDIg_}gjjk~ISSmL0P9P0*`@u9+D7!vOr*D4x^|BrhLb>yB4-C7q z1zeK<->&z6&KLeY(qpIir#t<#96B)MYyoQZ&|zLuC^#FQZ!@b(nUZALtFDB;7GMOY z6o|{(A~ls^q`1}ZC(uD`)C!J+#?fB+HLc0P{m#g)_Qgh)s&8Zo z|93kp*tx0={poH*bap z817es3nuC8K#w+|J^hLs6qdFEf=8%-nLsYuCFgW4r#9T9&!8p4M{(?|pEeD@`ac6k zXh-*WRH>qyzrC6AIe={Ro&}+V08L19f^XnkhMf?c7NYOKI#v9JJ(Q4j>>C(zEb?OeI@AXZ9z;Y=)8Bl|sgU%E zI#&l31CtG54*um)by6mQw`FB=dS&ASo~gD&wOGO6SXm!_F2;SK8v{olE@E*%_-LZ( z(L;)?tXZH}FtGP6^BmK}K1u3cHo!^VxPrR6b4H))YXNhF8)~BI8EZ$Nn}NjQz~IiW;PktSdUXfz}`j6 zUh0a#)8h|FZ~Q_e1Bkaf=T!vOgZiRK8HM5os=Wle&@2HZ++Y9E>QYsx`hiap15V{qQgr;}Di*~;y{ECqFhR}R7 zJfPk5cDMb2xE2rz8xx13=IXP9-DsrJbfNA`bm3VJ-EMY(489bFd;|#w;k1E9<3!*X zIHKNV#I?k-@9OT6NCN(teqdD2I^v92QFnUVG-lOKzf72zYEzWVW;Ok7^qh4mF#RL$ z>5!4ym@FA(!zc=U6lOqHj9IA1`!>2|xC+hMSO#vWhI&Ag#gLN+8JcW3Ek|8z4(4$DbLWtp9Ic_X0Sc+pQC&-TRLn&i?^Y*mLAfD~5HT&y z=KCUi-*5ny`@!u6yVY(}xc2>gM>xzj@FCaCZ;{s6Qn^VV`DL^Vq|dV7X4gddXY z-^QU=G;o41S?j=|ey(Y7G){V#GT!@i+r?~8VU`G%T#LZQ2Q6aNd)0JAoL=56>shn2 zob95Ak09V&aqtnoM*X;momzHkVMBBU(@UfASN?lIZf;GJ;#<0+1Ty3Bkg{8-x-@6c zAs3`%BEIZe2hiMu<*(|WaK^FZytfAqKM;d+0V%7{76@tQ?m7Qx{|76x&)%VeT(O+{hfyNsRvT}6 zx(e#O0%8CG18k{es1M+99$+f68HVTBg$lbMTaOuGws2^z4Nst5kek#=1= za86creofL(p+VosRFi$_gJ_bBD?VM@W5&}%-cxvvY7D&|=5}&|EJ%4^DFlmrvPSmQ=l>$0^W&exKd~L#{4nB2||l z$ZQU0BWVuf$sTM1US7YD)@c(swzqJ4+w__N&R1javL^1gc0xrroXDWc&^su3OG zI&J;kzh%^-9tMIoc8Pa6-e+wo4AK|p+NmFadKxmyCl}S?=%sq+Hihl9bnQF&p(9Ws zp-7Tg%B?TKluozQi(Ot<%biQCx4qvimp zj;S?yR}2uw4mjl*7L^xdl^UW-&1hk}eh!$CP_z90)BiweN3OnpF=E;xFiM!ie~B-@ zgZU%Qvho5yp`-)PTg(!s-^I4PQxwbES?YIe?hndbvmS?~SKpG`5|&k+3=$64%zjOA z(iO|5%^Il_2;PpQodlFLcf!Yo9t}(a&NBV*P@tWH75rMCNWyi-{i-K?DiEfekn47g{DAx*+0Vi~dAFtJ+ObY(zW`*hCQ#3~(|MQ%41O8X8Z0P9=T)8hjV(_m3R{7s+%@ zg(_a}A>pj9Al-hn5{2g3)`e0;x-Zf-I_MD@%E*vSJ*(H<0fSWtRN0yOpX)VtfL zmgmk%LW~jE^@Yoj<8f2~n+h0_EcqM30jU9Y0jBZ1w1a-(pM89GaPf9h2y+8)?elly z5l*o_k2B$Ps*;El8Q^!~-SloOBvt3?)a`tK=i;VtOV9r%@k<7IlHF3>j#9wjHKgrj zvQfZ2ZUqU>qVy7`4PBnf#+wV3K=zY-6FZaSU-dl1G)I^KD8931Kv#yHD+&ycY-)zE zdE8LZ6+P2n?PfQPRHR$b4rHG%jho_#SGBOlV!G66S!j$F{#7eMOg3+p=o@#;H8h8M zvIS4~;w-0+JIV*87Th28T6*0`=UROuVCAX%$8>xn=*9ON!;lEm#LbgtE)bOP@-eRw zgyx<~^u<$=h9-*k0eDC*p?%rc!KaSB&TvC9Nn6S$q_l0ha<(eb%H*6`TinL+Nz)f# zZ#cG{TDvS#>fo1=gpPyymu8*xCGf(@XFv2hS>&LW*=dl`u~Q$|HZ~*Ipe8q6WEo#S#?NgOSl4WL+oA7yWvdYjBH>|1aN2Z>=*kM+_H_xOqCSj z@Jvw?4w5?$RFGNqGxJ@3`iihsaL%PvQ@iW&wYaEBnn>avvG+Zn7zLJ+5Y&Vux)`7Y z#xt!^^1DUt*DMFZGOLA0Lg8vY-ooM2EH7TiW3mPD2tA}`vkVx&r3t?y!A7MhVVt)# zMu_KZowRQZi2;ZU6@|Y7`e0PsGsi7$?tOM|Jc8;Qjz6f?>(riZDn9Wqs@ALE)uP#i zgEV)2LX2w+Q^g|b<0l*YjKFf2C{EC}-#yAa#+B(9%8wZBf~VL9;lNwEiF7)pDHmY| z2bx_Q`sMeFfE6%S4xZ zT2@Xy=1y}?Jysf8maJM@bjlt8H>*t!)NHUmmMz0_r$?z*X-_v#M0=?==ezAI@>834?C>^C}MHXaAM2Wzd@XV-p;#d%NXQ^*Hmm)C}G9;hD@-#s*Fdu`^C-Dj}6 z2d*;aWlVX%#U^60Zoy;6+p)B4D`r<}wbOk3X^{n6EguZ>l)I zl(eSXQTff^u?N46cD`BH6sFava^K+Q#_@Leoa3YQ9z5p9qdcVKYQH(RTe7Bxkfa|U zS39ujTPLNo?$A2ji@FFuF7~B;T{^fr<(e3D{Nvm@*)Fp6`aM!x*?GLQIWyKY`U)yz@=UCBFSu5P zUh#381peG2xu#`qn?O8FzbH>KmSex+U>ugz$uyZ+S`j-g`>K%Z=`mt&&WWZa4JtBn z9d#s?k~=%0wOoWbEZ@~?J4YN`WT29miv^1nKv?cr&eYJ*9V`Z0v|{E%;Q6SzzUIQ$ zXv~m)MR$f-ek`l;6Ms9*Nh{csN=}?f7t<`|cXn}RU-+2Q;KUaFaQMrR`&2|)NX#iv z<@y8ai6@23KAS9ZVG~|Le@ORG;=+=(g7Wa$^^`6@y+z^Dn8%Me@R*u>&&NV?1z&a% z1;AP;pzOM|_H@h>?I!uig25MKaJh4^YQ?FaUyaHaZ}dU0E=!Nb=D9dp)JBNHkc zB`E1Z2Kn|Qt#1iKJ8Ph7w@IURT+#2OPXO{vV zt+Ur)I$DQeWYn}q`w=Q(8b5o+oKG~q?otuKp^Qn3L(k>oI!1b**7=SFR)>HeSC0CFdo|lp zF?mq=q%F+?|EIjPpVE(@`k_C2lz0In+xn2O(~AotZ+8%*{gYG5_YWNuq3zP6EZ1DI z>Uw&FK2)&LFW@jBVyF~Ht``}-XaRFTMM))JD6b@~T}-Fw z4&m02Yqtn9a>zsFbjTQlncgwM9H^xTHMV3xLo&mK9-Ca{UY$JAW~My{XY&BCkBTrT zej<`aYXrQ+~Wc)Zoedvf>9eDisFED~_k$e+0mp~^v6>Np4Ngc42` z(E}u$A6WG`^D{r4f`l^7H=zWpL)R|TCVwC0?4*MJqI2OYJZI2{wd>slnA?o%WdHFr zU<2ouHkgbTCO9BnNsbz6>`Ugxj-`0(KCcYskr;8_XyeRLVCBwSJc!5B!n217DM{yd z7;^>Ldwu)nW0nKkcvS{+$NHU7I%HsXRTdW$c}sX~N(wAFH_o~f7r``{vpC-!z~^Ck zzYIZSQ=)B6uzqaSW>;~ch={u#49+P9#gTWd#VK7+P zRC+%G^$TX*^2!oUq!hifVQrr06lQqC+-xIu56|bzXhAHY!v|9V0wM`&cBRuPjRdoJ zQQFe;Un=cBHp;h|LwLx=?BXy#qlSb^OW1|E+|@P6tUs10&^gkG!S*EWQIH zW=EmIEqcQ|JNh|Fg?r49ZfyiM^{29|y`*q{vgY_kY2lR4yYh4W_(*2ohp8+6hHgbcS6#S$G84Sfs_4C zhP46?VM=$Zs8tv5A^~BQxNG^BC!e8}^mcVh-O2}!jf^G&RoY`?=+=6P6>hDmJTAG3 zl5OXYBMQic9@XFNh&dwP?O3jlkL(loxr4@!UeK*|-xPl)UaOd@xlSGG7tbEtAXbE6 z>6U9fXZ%7ef0y%{<%>Z1CH1}t!j|07JZ!u`FEZWls3Bw_iZ*~`1?_LMc!BO41MtF2 z^3SP7&hAmpdEL>ZTwDS}8NDov6_p5Pc4(7Z5o`aP>7ABm+3hq%p|Gh7o}y@chqhk2d)s{ji4B4#x-E3)vsf4 zeWLk|Cfl;t@SU7~&-5Lqvj_!$p-7A|C|S@fOQ{G!zo5D~z}<&!Y5pMdljaIs@%z zGv{(!JY1ucli$4Rov$iS3*)=L!YQ5700Sxq>WP)+<^meD-f8A!C^aS%OjOJg=uW6qUX#KG zcX-`qrP_bpokETUFG!Z51Ba|s*>04uA((6`>iF*X{SEksEQN)b3~DURykpB|4MXMX zJ#D$ZYWE~FC%sehPd2R+FxxBh1XQJX*=+t-!`W$fRe)Hnk7;(LeE5Av&0hr`KgF&> z`ZOhg;TwxYr%7<0urL-6pJ79m$ks(Ssutcd{l+fU9vum%c4xneoxZH0Vq)8q0GQON ze^siRcl$JSy0oiVX~W<>sv#MNCT%?$L;JB3#LNss7>s$U`^mVhLHXEV76qQ-`1h9% zvlZ*yDKEgoZY>d;L3_R}JVQc=3Dz8@Nq@v+45qZSH4IB)m!OwojN?v%jDqC=%;0Y} zi&biiK!)CL1m7z2;h~HbZA49yq9c680bMYe|%y%hg^L_er2F z#DCp{Q&BacUo;Ycq&)lh_Kl8l$qbH2*zZlKSPKRK6TFla(8`A;TYzd8uon|fwbXv% ziff_3W*YcT(M!wnu>ZJ>CSSKw$x(oHJ(}_L&MQkr)P$_i3}VAY3FYM3 zXvH~zn`y)zNAlGWQ`lAHn1DS=S{d9M(y8!Y%;D=F{XXVk^aXuA=L~5eTYg|vQvMvG z-NslJt9%L9q@^hreF^8LDXVZmzs+YRF5quL*krdN%Csm;wD=y=5z_c1OB7DACkELK zgG1hR0xO5hm_CoCc_F2a$mMR!J$i`B)BWMqelTP9Sy!#Ra6 z84#faD_4t^kzY)9kE!`?GE~SVx^o1Mr1ZRZ2G z0qex99q6F@u4SzsU(j+uB(!SZj4dYurK#R7x4vTHx&UtaMB_O^c8?z=@B2%0m0ZxL z2Dn$1n)!v02}EbtAuYS_p+uMZ2f`h4X?pe!`X#dnJ%lrAn2vt;M^G0E6b*gm+v4XX5ld zGN%Mk-+QMd$&-oF~y8DfxnP zuh`K>urnvwpiDfnrrrH&#-qs=7g9w^AxPvR-%CbcQ1rdwOi%Y_$F@b7-a7!$GV6xe zy5hyGK;^_MUotT&?T5ngO;=0=U*^$KyptN&I7RJ)iB<|ksJe&MT)t#&(i)#g0so;i z!!LpTvtH7d#fj;yyBFl`M?uY$N^ofc9>4mCcK@aY*C8HLmJ2js&I3LhnI-rE)=Gja zH_hnC@89L7nqhgRQkpD*fw`Lid?MT=t$Mw2+>q01W?eDMeydY!7UBUjq4`ptv!t^Y zQa`37+=1Dc78P|rq_F0FG?FMYH^U5|GJ7yv^j5J5VM=FuoFmvQvAj^>+^5s}O+SFm z7PQ8db9**M!tcjV?-e4eL7J1iA*=qiSLdVxOQ7iBWLS>g`W&=$Nz{TPiS9>c7 z5!91B&LNRVL>-AdsSF6_nx#y?MIU}XWve|A4EF2yS zS@XkH3r8-KQZU*dP65@7a1X03%3n%8e0xGSKUCaDHZP?-LuT1TyiIIkEg%ugEnzIP z>g_G*Wpqie9i@2^Pissca!qd298AS!RK7=drNx(9gZfFfC4qvCFXubI(@})S70O7l z_BN{3Y+(UDz(0pyc$VoVR(bX(W7pwyON&f$?uxoE9ucKn-4TFmb{-MY)U*U@o6m|6 z?(>vK!2LQRKjh?IdNw`vLGeR&Sa<5OG?6uVyqXeZ!!%lZRKgXHW-qn^n@uLiXO^-( zDN}NrY`)fUq<000Q_9End6Kd}T+nWNx{Hxr>kdCMmuEygHso=2yr*1mluUQ;+1A_+QZ=iLz51;=WeZ z6+C7W3UHdN9))Fc)}CLuourb%Ow08ETIXF>6$I=T$dG-pC}6bL^) zc~R*>k73UPor@7VPQfdGfgbx@f$qMyA0dcR#RCr-8k1*?(*A`O9}JsHoiMt885yAQ z7+l`(iBbqP@VjQN`9|Z0=%{_P*{1F^lm#z$>YofC%b&_14~R()lAA2*@t$zqhjgyDbXk-RV>G*eGiacOG zM_^7CPqT)y@5OZ?H2a-eKlGSZi+xply0i82ZrBl5;#NjuKEZn>P*|EC1J^mF(4fRe7JLceheMhLU{L;q2pKoK9hW{}6rjF$*ghgU#2>66 zDNW6(m@B03R0tRtpk8Fr?wR_ey=`c5oz!Bor=n_pil#rCy{k56wrAsy9Vto2r&MoK z{o$7A2j?AOlTzIb^Re@mh}hPx6YftB{hqe9L!Vm79VV9a4ZVY8bp;B|7^Pp*7!D>5 zdXn_BWk@x|j~o*R%777JcvN$QHh^|m79r1t@;3S-a|+!-4!QFFMR&397jl>*WxJ3t zgOhE{<1aCAc>X`Qn<6oR?iU~>reLVucr2vlhJLR1)lDT2FU|vCD)zzjz^&jt;NL6f zfxkj8fPnBmd!X1@z0tRhWw?F|u=vmEK1Ro6S5SOY{AuI>(ku6ay zvuzcc>zp7+Oswg~KQJZpH@1v+@w`k->bnsdT|9lC@i9t*Q-CtND7;uH6p^>U2}VA>rMHVZBuu5G1MRG%U~I4mq0fxPXOec!2p))LaB@#%?Us247{ z^qPWbn6JXdj{3Jn3vh*h0De}!r4b?Lo1FX2%4BW0W;p*hhB+dqX*xbF@~(q=n9MMv zp$KeUzvX6PiNK2H;!X9NjJn)y>C|pLyo6w_MyswK?_h#^z;vUb0fr%+H1jg=v{mNO z=PAPO?V^U{^7YE~Gqn}M)j}&t>$e|o+xz7QDjqt$Zg`U(unF=Hc8m|=shP_WrmfYR z3hI!h5x;Drq)Gbg)goaacZ7KAM%^M9>Y|S;jZDJDh#SN}2%_PI!E3UHqH2eIp}NK< zxdR>K(@fqi0601)kjZ?l#kgcCldSu83)|O4dXF}Lgkgz}{2IBPhVm8QgP@JHjs4vlRV)c;! zv#4D&aithY{^VJ3>C{UsQ#J~BkX^92W8@|DSGQ7mmNjyaX z<$6XY(xQS2y!^001(kgXlJj>4ZlS~>R8WpsIvQdIc_~mZ3=j+u7#Nu6I!XPVotE#f zbhIEK8c?yQ22{_vx+zJXk$>k}<$8t8fPX;>V1kmoApetZ@IUDWpZ&uA_rXJaM!rtW zO7_C@ccQD;^>9IZ<`MaS%~JU9JNi4z)9ZSw;ygZ5@Q#!7(^yn1fW`_D)nV!lc6ARyI5ARxm3yFuVDLi}egMUrRKwsx6JJroFtJ_-nk z;42h0HLxxWiBD*tWG~1xKX3ynATk(;6n}-3VoH3E4yyVb{yZ@S9at>{j^_&>67SGK z(O!6uE8|e7fVS~1aHss0Nd&1EcrGQDpOrLm1QQhD1^suZ_t$R+^ur%Cdg5CwP_&m4 zrLlk|!U3Z!y@)|h%*6u5dLgtu6TU0_L%;+^gMT3~U;_y%W0!@s`4^O!S3uP&aNmm__~J!gp;BWKN%29IUQjC&I5$|py9EQjUg=k;llYeh>KR0o z7>*4r`MH_?9ixl;71}fL<@xXvfMUPM4Mzx0-UODO53J|wCWlu7L^8&UlX4&v)qjJ1(Y{!tcZ9&_xl{2s0Vy$&5U5)~S&603)QQG_sK97o zBrgO4A|Ro)a6weRj?|43nuY}~z{3V3;Maf?3`gib<*Brca|8OAp z)Bd0OJ_j}UC#J!xqSTlEVFdJ$CJvDREyHu=SpGVO{#p&+ul?a5N)#mhqdI?|CVq{E z-u#2cPQ)hzMSqd~_fgH)=-lmp(4qfD|9#X)@KxQ1_x_-<67R|WShW8gz5oGv{|bG6 z0z?!2DS>25hJTTRDM6`T>d~qUc>xQIeR2z&slI*~)lC250S+gjvE-#7 Wft}E^@#F*1zykrHdkYHu@BaZKfsVKU delta 25214 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 + + + + + diff --git a/quickstep/res/layout/task.xml b/quickstep/res/layout/task.xml new file mode 100644 index 0000000000..9d8aea7111 --- /dev/null +++ b/quickstep/res/layout/task.xml @@ -0,0 +1,35 @@ + + + + + + + \ No newline at end of file diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java index 8f759800a7..a0340b65ce 100644 --- a/quickstep/src/com/android/quickstep/RecentsActivity.java +++ b/quickstep/src/com/android/quickstep/RecentsActivity.java @@ -40,7 +40,7 @@ public class RecentsActivity extends ListActivity { plan.preloadPlan(new RecentsTaskLoader(this, 1, 1, 0), -1, UserHandle.myUserId()); mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); - mAdapter.addAll(plan.getTaskStack().getStackTasks()); + mAdapter.addAll(plan.getTaskStack().getTasks()); setListAdapter(mAdapter); } } diff --git a/quickstep/src/com/android/quickstep/TaskThumbnailView.java b/quickstep/src/com/android/quickstep/TaskThumbnailView.java new file mode 100644 index 0000000000..96c93c23f9 --- /dev/null +++ b/quickstep/src/com/android/quickstep/TaskThumbnailView.java @@ -0,0 +1,185 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.quickstep; + +import android.content.Context; +import android.content.res.Configuration; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ColorMatrixColorFilter; +import android.graphics.LightingColorFilter; +import android.graphics.Matrix; +import android.graphics.Outline; +import android.graphics.Paint; +import android.graphics.Point; +import android.graphics.Rect; +import android.graphics.Shader; +import android.util.AttributeSet; +import android.view.Display; +import android.view.View; +import android.view.ViewOutlineProvider; +import android.widget.FrameLayout; + +import com.android.systemui.shared.recents.model.ThumbnailData; + +/** + * A task in the Recents view. + */ +public class TaskThumbnailView extends FrameLayout { + + private ThumbnailData mThumbnailData; + + private Rect mThumbnailRect = new Rect(); + private float mThumbnailScale; + + private Matrix mMatrix = new Matrix(); + private Paint mDrawPaint = new Paint(); + protected Paint mBgFillPaint = new Paint(); + protected BitmapShader mBitmapShader; + + private float mDimAlpha; + private LightingColorFilter mLightingColorFilter = new LightingColorFilter(Color.WHITE, 0); + + public TaskThumbnailView(Context context) { + this(context, null); + } + + public TaskThumbnailView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public TaskThumbnailView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + setWillNotDraw(false); + setDimAlpha(1f); + setClipToOutline(true); + } + + /** + * Updates this thumbnail. + */ + public void setThumbnail(ThumbnailData thumbnailData) { + if (thumbnailData != null && thumbnailData.thumbnail != null) { + Bitmap bm = thumbnailData.thumbnail; + bm.prepareToDraw(); + mThumbnailScale = thumbnailData.scale; + mBitmapShader = new BitmapShader(bm, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + mDrawPaint.setShader(mBitmapShader); + mThumbnailRect.set(0, 0, + bm.getWidth() - thumbnailData.insets.left - thumbnailData.insets.right, + bm.getHeight() - thumbnailData.insets.top - thumbnailData.insets.bottom); + mThumbnailData = thumbnailData; + updateThumbnailMatrix(); + updateThumbnailPaintFilter(); + } else { + mBitmapShader = null; + mDrawPaint.setShader(null); + mThumbnailRect.setEmpty(); + mThumbnailData = null; + } + } + + @Override + protected void onDraw(Canvas canvas) { + int viewWidth = getMeasuredWidth(); + int viewHeight = getMeasuredHeight(); + int thumbnailWidth = Math.min(viewWidth, + (int) (mThumbnailRect.width() * mThumbnailScale)); + int thumbnailHeight = Math.min(viewHeight, + (int) (mThumbnailRect.height() * mThumbnailScale)); + + if (mBitmapShader != null && thumbnailWidth > 0 && thumbnailHeight > 0) { + int topOffset = 0; + // Draw the background, there will be some small overdraw with the thumbnail + if (thumbnailWidth < viewWidth) { + // Portrait thumbnail on a landscape task view + canvas.drawRect(Math.max(0, thumbnailWidth), topOffset, viewWidth, viewHeight, + mBgFillPaint); + } + if (thumbnailHeight < viewHeight) { + // Landscape thumbnail on a portrait task view + canvas.drawRect(0, Math.max(topOffset, thumbnailHeight), viewWidth, viewHeight, + mBgFillPaint); + } + + // Draw the thumbnail + canvas.drawRect(0, topOffset, thumbnailWidth, thumbnailHeight, mDrawPaint); + } else { + canvas.drawRect(0, 0, viewWidth, viewHeight, mBgFillPaint); + } + } + + void updateThumbnailPaintFilter() { + int mul = (int) ((1.0f - mDimAlpha) * 255); + if (mBitmapShader != null) { + mLightingColorFilter = new LightingColorFilter(Color.WHITE, + Color.argb(255, mul, mul, mul)); + mDrawPaint.setColorFilter(mLightingColorFilter); + mDrawPaint.setColor(0xFFffffff); + mBgFillPaint.setColorFilter(mLightingColorFilter); + } else { + int grey = mul; + mDrawPaint.setColorFilter(null); + mDrawPaint.setColor(Color.argb(255, grey, grey, grey)); + } + invalidate(); + } + + public void updateThumbnailMatrix() { + mThumbnailScale = 1f; + if (mBitmapShader != null && mThumbnailData != null) { + if (getMeasuredWidth() == 0) { + // If we haven't measured , skip the thumbnail drawing and only draw the background + // color + mThumbnailScale = 0f; + } else { + float invThumbnailScale = 1f / mThumbnailScale; + final Configuration configuration = + getContext().getApplicationContext().getResources().getConfiguration(); + final Point displaySize = new Point(); + getDisplay().getRealSize(displaySize); + if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { + if (mThumbnailData.orientation == Configuration.ORIENTATION_PORTRAIT) { + // If we are in the same orientation as the screenshot, just scale it to the + // width of the task view + mThumbnailScale = (float) getMeasuredWidth() / mThumbnailRect.width(); + } else { + // Scale the landscape thumbnail up to app size, then scale that to the task + // view size to match other portrait screenshots + mThumbnailScale = invThumbnailScale * + ((float) getMeasuredWidth() / displaySize.x); + } + } else { + // Otherwise, scale the screenshot to fit 1:1 in the current orientation + mThumbnailScale = invThumbnailScale; + } + } + mMatrix.setTranslate(-mThumbnailData.insets.left * mThumbnailScale, + -mThumbnailData.insets.top * mThumbnailScale); + mMatrix.postScale(mThumbnailScale, mThumbnailScale); + mBitmapShader.setLocalMatrix(mMatrix); + } + invalidate(); + } + + public void setDimAlpha(float dimAlpha) { + mDimAlpha = dimAlpha; + updateThumbnailPaintFilter(); + } +} diff --git a/quickstep/src/com/android/quickstep/TaskView.java b/quickstep/src/com/android/quickstep/TaskView.java new file mode 100644 index 0000000000..ea584f0095 --- /dev/null +++ b/quickstep/src/com/android/quickstep/TaskView.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.quickstep; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.FrameLayout; +import android.widget.ImageView; + +import com.android.launcher3.R; +import com.android.systemui.shared.recents.model.Task; +import com.android.systemui.shared.recents.model.Task.TaskCallbacks; +import com.android.systemui.shared.recents.model.ThumbnailData; +import com.android.systemui.shared.system.ActivityManagerWrapper; + +/** + * A task in the Recents view. + */ +public class TaskView extends FrameLayout implements TaskCallbacks { + + private Task mTask; + private TaskThumbnailView mSnapshotView; + private ImageView mIconView; + + public TaskView(Context context) { + this(context, null); + } + + public TaskView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public TaskView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + setWillNotDraw(false); + setOnClickListener((view) -> { + if (mTask != null) { + ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(mTask.key, + null, null, null); + } + }); + } + + @Override + protected void onFinishInflate() { + mSnapshotView = findViewById(R.id.snapshot); + mIconView = findViewById(R.id.icon); + } + + /** + * Updates this task view to the given {@param task}. + */ + public void bind(Task task) { + mTask = task; + task.addCallback(this); + } + + @Override + public void onTaskDataLoaded(Task task, ThumbnailData thumbnailData) { + mSnapshotView.setThumbnail(thumbnailData); + mSnapshotView.setDimAlpha(1f); + mIconView.setImageDrawable(task.icon); + } + + @Override + public void onTaskDataUnloaded() { + // Do nothing + } + + @Override + public void onTaskWindowingModeChanged() { + // Do nothing + } +} diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 75968ae2bc..553a136b29 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -222,15 +222,12 @@ public class Launcher extends BaseActivity @Thunk DragLayer mDragLayer; private DragController mDragController; - public View mWeightWatcher; - private AppWidgetManagerCompat mAppWidgetManager; private LauncherAppWidgetHost mAppWidgetHost; private final int[] mTmpAddItemCellCoordinates = new int[2]; @Thunk Hotseat mHotseat; - private ViewGroup mOverviewPanel; private View mAllAppsButton; @@ -240,6 +237,9 @@ public class Launcher extends BaseActivity @Thunk AllAppsContainerView mAppsView; AllAppsTransitionController mAllAppsController; + // UI and state for the overview panel + private ViewGroup mOverviewPanel; + // We need to store the orientation Launcher was created with, due to a bug (b/64916689) // that results in widgets being inflated in the wrong orientation. private int mOrientation; @@ -1303,8 +1303,8 @@ public class Launcher extends BaseActivity return mHotseat; } - public ViewGroup getOverviewPanel() { - return mOverviewPanel; + public T getOverviewPanel() { + return (T) mOverviewPanel; } public DropTargetBar getDropTargetBar() { diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index daa9bd0119..1f87c004b4 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -296,7 +296,6 @@ public class Workspace extends PagedView mLauncher = Launcher.getLauncher(context); mStateTransitionAnimation = new WorkspaceStateTransitionAnimation(mLauncher, this); - final Resources res = getResources(); DeviceProfile grid = mLauncher.getDeviceProfile(); mWorkspaceFadeInAdjacentScreens = grid.shouldFadeAdjacentWorkspaceScreens(); mWallpaperManager = WallpaperManager.getInstance(context);