From 7763bbd81f08cdc6bcf56d2c9b033a3ea9114ba4 Mon Sep 17 00:00:00 2001 From: hmalik144 Date: Sun, 16 Jun 2019 22:52:29 +1000 Subject: [PATCH] 16/06 version --- .idea/caches/gradle_models.ser | Bin 231854 -> 232085 bytes .idea/vcs.xml | 6 + .../days_left/AddItems/AddShiftActivity.java | 1 - .../days_left/CustomValueEventListener.java | 58 +++ .../appttude/h_mal/days_left/FireAdapter.java | 15 +- .../h_mal/days_left/FragmentHome.java | 14 +- .../h_mal/days_left/FragmentList.java | 14 +- .../h_mal/days_left/FragmentTools.java | 2 - .../h_mal/days_left/Global/DateDialog.java | 7 +- .../h_mal/days_left/MainActivity.java | 47 +- .../h_mal/days_left/MapListViewAdapter.java | 36 ++ .../h_mal/days_left/Objects/ShiftObject.java | 2 + .../h_mal/days_left/RecyclerViewAdapter.java | 466 +++++++++++------- .../h_mal/days_left/ShiftListViewAdapter.java | 35 ++ app/src/main/res/layout/item_two.xml | 2 + 15 files changed, 469 insertions(+), 236 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 app/src/main/java/com/appttude/h_mal/days_left/CustomValueEventListener.java create mode 100644 app/src/main/java/com/appttude/h_mal/days_left/MapListViewAdapter.java diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser index d681ca4bd8248e2adae7d769592d2818ab9bcdd2..bd5087a5f64c6cc2cc7ea7996c695e1089d7c8da 100644 GIT binary patch literal 232085 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
    hox}Ci!Katqk{wxf^g=%-x`3>yd*_lB{Hf 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 C&c0Is literal 231854 zcmd443BV*pdH+9qvAeKba(aRSa_IZg_wkC6WfyR9SC9o19EIxZ-GTRgXPB9HcV9db zHJW%~41!S+?<-=W#)#1<9*KCLQPdbzVxlpg(Rf57zi(A{_4Lg2yw7e;cm98Wzbw1c z-Sw@iuKM&-RZl&2`;QtMdfmp3u)R3TmZEOE70veB?S?qaWA*I2WovA);3A>QBN8QHg<|G6Je9X)vJv8=ZT zscqQ!jgNfn_-nqnuCexl#-R&s7G1!?e!IJ)vAMse8~66K7oz>0$DGSkXl&WH34b1i z|6AK{tYaOXk;hI`X=yQs>TJEJGgQTeqSj@FT(;7QuWvk)*XI^dO?ma)FRh*hwlshC z?tT|^A4eu10P1E4ld8Q5(k7d6tEYG)=L|)eve!e2^_FCQ` z-M;`YC+^CWkJ#BbY;ol>*1L|kn>5v|CJx7o+9KY4t3AtewtnV~=O1zScke?}+1Xg% zk$KzS={L4+pKESSJHg4j`^!P3z;SUSoUhqW4%~DU=>p4mAB017Av^eok`OpS?R-e^*C)*_Y&(UZu2iqM)>laUR?0!kW_e=f8iM%(=WnY)=aVK7i z;-#<^<5O^Wda2io7ts~+TeE*>FYGeh*>Bu$=+^CVusq*yJb3)ap@$wYe*JQ^!ZgKW zhb~@~NFMx?MZFBg@6`Jz2MFFD=2GilYK0`;B8V&FtE? zlp3-jWxtM+qu)4QKGs`ajJFB(t^Izt-^hANHwIV4W83iFSigmDA55$`UXnc?jXFz2 z+`FqCUdL_4i!hFAJR(h9T*ykaN-{@_yQ86go+h3Dwz6ZX*P7ph#*{W=d7;mfm6a`@ z;YPzy9i?qDiur}Cg3@H-{rxVw`_|5NJs7p3xbmAed?_nLzmdL*>>@00m}A|D+w6HC zpO2T~uB^O5HnzfI;9u9Y(M`H5rKNZuuxv%eOu7|cl`Gi7GFK*Vlr28}m`+MDZ^&uw z4BwVzKPAx6rJ+2h?Rn_>1!zlX{JY{li&&ra8>f$#E4$~iF2jrNxAvm#bx^SMV>*;t zq1feDWm(f#HS}y=z!W?~*JN*&?!jyv`{tq?`hr_ zS!)Rx3z-m1MbiS&q9?z80^bm+wWlV+-gF(x%I<=Pw|w#o=FNis@Hm z_}Xxq=`==%5B@P8lS485TeOWr#HC#K{IVOeJW1O+y(KjccE^2TQzn?RE;RCfV@7;158&2}ooOj2-Jji* zzKBUT?ZP)!Hp)r&6r# zk*Fk3dO!a;OF~{qyD-0iiR5&I`NVFkAIo7@nx{$Ehu&4%@k(yZbDh#EyW>*PhGZM- z39A+D0Ie=XdY{k7_Zz7_)kiJKku3kaD4cA*vPbg^nbzP^I>^NUa;e8#S2hX9Cz0@V z6D>II4(u66w6_Dhd#LbfLnR-~t3n$VdOXJNdjZy<$8)xee-N;>@{?Bo4eJcy+o zF%^x4(H*&QF}RG?IKD)iPXMG@7uT~~jU_ zeDye6!Cb$tvE{19iHj?j_rR&$_`ikt3WlZ5rT%WX66|bXH8(5zC8-lZzv1qL^w}(( zU_KjO2xsHpSUEj=UaX3rEhNw05y@Go>_IFz-!EH}<_qS%^H%s$FkjEYy7_|_S72~= z*@fBkQIvka^6^R0&j2t>7q8Re$W*X+{eZ=li(yE1k*A*gfM1dtt!PGtrP=e~K!M45 zBy;@Y3i1~%hy4o{*xq(`I9o@Ht9%)E_X@^@i~Q|AN)#X8vUp*kb?w>sgfC(B@a%X$ z;J(Bb(i^i%$cio>hTh@n>iG6nacTUx#g*My+~TvFS>+cBb;ROI;YYD}_j~bPvR{ii z&X&}Fhb48Nw-1@i*({f{!?~PITgON)v!<~|I6JIgT-gz2EBnaFr7ck|3$Qbp*2eDVAm-5l6|^PnH3^yY24pMuFcFO_Ix^cc*=5dkZV3+)G4WfyWFtwzEv-6*#+! z{P_K8 zhw_i+DM83hP0ZuAyDMj>JtC7uMj(T&+`%SW`MsnY zC$0V2`^E3s*DQU%@_w{_&hj0-9%jq4cg2anl$p5^CY$pW|LpoWbod)aSCP;W_wDaC z9?3Ct06kRH+<+{p$IH4kf75!vapG4HOL#>bKvIRi^~?``=Yqd@X>j}6#s+-F64qL{ zcxhLw$G>H19h|?^@2Nm`x_dKzqpUR<_J%l%X=u(?EcvNy)>HIaVIl3Wah0|N+`qp`7x1kqnF%!t> zRw!*zAgjv8{op**Z5(kex>xF4bpFzE?w-Uig3p__@7TTdyq)K7PhHQBTjr%a5h<+c zH+F2BYhDh|lU{Sr)r)MQ2}@)wkWzJcL7~ZTlYl;L1nO!SCY6s9nawO*98Z^E2L&z6?Y5DD=NG$Z} zQR60m2Co`Mgs@&xqXnIIFCG*X!g~$xmtqtqFC2skHT>YC(l&H+c;^f%W5`(yf|EXu zc}@p)u<n`@~6Ih`-!6+wt?4fb5>-|WB6;S%Oad-CweTdeR5;{ zb@7VmUB^GUaR^2`>35-VJX{rd-Z&Z>gTH|w8zSz_#jEKoTAa+9>?24e-+#Dkk0*j0p`DNaj=qK8(*J3aX*+3K!uRI!O5dAa zH;0TPSBqH>j{-cH`Bhc2`&^$)CYH zEGb)sO{SN+Kjw04?0H2x~Q7U8l%<~6{I^ESDW)zH>p9NUx7XWs4Ch3MJ9FJ<~7uW zMrsn}jA)b~sfva$#v*U#u8%%+(kt4g{EEatf#!{R8^{D`)|@wG87R)wo&L1%faHsM zCrRG{Drk%?mrhyfleogalG>!!sy#s8SWgu%vcx>+m#(dab3{ni&ebizb{7+|fjU;qBb_56uM zBT zy!A;e!vLW0&L%bR=}b&nIs$FgvLdO_JsqH}R86B8gPr&7s~`NGNv}%XnCYgJ zq&cMC8gdDmLEDv^y%eGNQ@_IW?}FrxdZ#H=)0pLS+0>Oki8uU<`r%1!SKZ2#g&`0# z{VS*NqCPyzi*P{0u<74>5i4-VWa*qA)={y@FckV@m30s-E)BeuN|r%Jmp4~mn@m@$ z1_@#ZVfZ{ufvL(`&7~ z;#ng%3bT=~IjdV7**mxl)*4M=b!%`)h9uXHJL(3fter97s4qc@Bqx(*J-IXmO zo=U>+<&5r|p7@*LiPiOdXE}dNOtl)F%O11?)2$B@ZK>1gBPL!vD?B-8BZR=adI2%; zL@2}q^|2eg*Q}{w8$ddwz!l-dH`4Cl*oG@%rwwo2Q^Myvz1@*P>4qEP~2PY@C}i(ypzs$#mkd>SuVO9Yv}p=T*DnA z4|E7s{&EK89rYyR0UzbQlTPm0SPk$B1ZnRbzwj2}DrB;afA;^!wfW+Bg2{S%2c;)*bTJZsREarA%Fr zAHTd9#NFrJe)EG5d)c>ND8n1V*?65kD;9Cqc*opxPg;c~%bn_9Y~DBOw3yQL>$I4J zLVXs~0VO|W{nuzQ$?R8XF^ME6Sxo3^YbVY*sM||Ivo?DvO`UM7Qn#06@(19zpl&Y- zk)pkXH<5nvxc{-(+LjFlSKAeK5s0)c-3XO^fCr2pohHLK>-?p#9bv-<2P`~=`KCNk zNS*`_0oKBHF~RoqVrr9&UrfP&$`@YyQus|@e%S>xo&cZA8`CF{`vcwPQrN&$$o5s- z91>ByxOtOius8Bah9fWE-?o4aTLnj6e5rQB2_KtQ2b&~$QP<|5=M{^8d^ec0)~ue# zP(Dd;z1-QG$IH3leJ8xN$M-Tju$9LlG#=c6#c<%F$?ACn$&hB_#1l#3V$L^iO7k9C1+uiKfe&gIB zn-%)ho~%=|d}JvI6Kz*3?6$KX_-p%u&}m_t(D092WOii)Xufr5@d?Y=Tb#7Aodfu3 z^Wvp!pK$%>nLacPeBHp`g*W{q2lz=9Hj?4(`#y8@g^#mehuxYx;H)iVb~ZLFUWTon z1G#nm#u~AqX6={InD8lHqjL*J{A)e_g*VUt`DyXvE&LY#&(DqSKUjkoe4yi&Au~Q} z!ElB@WTdg8<2^23!Hy6nOe$2@u*W&<%iVC2FScYpoZvrQ!g@VKdzRZ%(J`*jGu7e_ zjkJAVv$b(Df+A$7-_G|lKo_OV{7Nv3{P2;zP_h}PZX&aM(*&0lzFIK4G6IPzds#Xa zUEJ3tet#hsc!Vg~z|uj0@^nMRz)wQl!Jl3uc7^eJK2T0%JMs#fUSYByHdM=3@vSX< zD1>d@7%WLOg(vBfE?Ke@Al=bP_bfQc+FbL5U* z6Z;AfUn>h}(rIMjg{WJg0(HQd8AmC( zhj%jaavU9e^^GTreyPbfH1g*7dzqU6xCwibWw8tI2Vvxo9(g~T(4?^^Dvm@{_N_q+ z;Ffz7G0H&g4+w}s4>nZs$YHYf`Q>69F&Sqah2meb2~z`dS8+OIzn~Q_M54GD?xG6Q zKqez8VS{}>61p^-Gs*VoXAJ?{%Cd&WvpKSLvVh~!S3P(LZy7R!fjiz8-r7h;u)!q{ z?SUcJU<(a4a9_OK?<|XHF5WWBH(m|FDIau;;avJnMKMPt(JgpJ^3BKAfwtnpQ;))K zH}?SB5C4RhH=ZMh8jqNM8MF?u$$aom_!t#nX3T)dTc=U<5Y=D+e23Oai*+p^jw+y%b5&^UYaAt+;J zDsQmqiyc%=w&Q9?6l3VUEaKGjmLU27Y7LdZX(pRF0><#&fV@j#R}^?BCPR!|Q$%q( z=YT3G%PxeAPb0UOv=UnkQ@Ex1167wV|&Hvo$m zb@{jgjfU?#mZs8b!?A33Y_chcq{Uw4JmAQ%C5X#eE%8o>?^;@Iymtr_5LGV2Fz! zveA!tByC!k|J7@na8WE23nf3Mq~sVPqM(TSl9u`hCx8E5B(wH&vhV-Js5zZ}^PBu^ zB6R4*v{%d+&4dS#o-t;1-kbB5l+`bO%j>t9Dm6nr2qT1+w<0qP4bOCRQ?m?$@if~g8`>W@0 z?#8TMc&jMpx{d$*)TcZPg->rm8poHX!S6i`=A=lY^|fo?G*m|~Irus%m*G{1tTu&A z)6iVzAl6IlFw?f}*fbo}mY%pyfO?C3W|)2$gmL!NjCg9KYTTQj{!SF@VMBT$#y_jp z%BzpM=drxV_rs${k3A|Xga2{t2R`+YWT+-yFl9~foDEk(Y}APU_evb@MoeBMfU)s5(1WGbA7Ly%6`|k`}T56}uOCICj)`@L@;?sae{A{S$9{Dr{xax9Z$0>GL2<@9QHiwdOmXCziEWxL(=-FM6&aRk z`jMRknim?OANe73w8(3gq*30f?z!a~|A0z6_FBHpaW4H6Q%Z*DL7Wb2Unat!tlRkd z(=Pl&^bK)~sEX4?RbU;1-~ZSXKXKPkW!!M^l_8RDrhoD@n}+Y2k#1|D7KM5eC$aB) ziDz1#u0@WQ7_JvH+l#~WnHm1fNXK~lSDyA!6z@!aBG4YTh+_eI{W-|Snpss~(Zqb-&tLmTLpAa0gRhBV(#e}=GDj-Q{@9y;fr5$SlceaNvKG<> zv$Bf%)HBzA6`P;sGc(z(qLrL2s)qleee0MGpXM5Ln47DrnM_dBisgbEW@zZ9q4}O> zct+wUrWt`QhGQ|u*DTF8y<|`;+0!L8(s@ni_o$JF72n68Mg(9>+RfpI{PZ52#*|kF zzi+fI?mhjHZyTx$g|AC7SA)_Bxbo&<8O*Sw&@^=4GW7d>?HCvH%>eU4Fave_MOm4Y%58a75kQD zqz}QKK{-Zx!>MQd&8^7(Lph>**W>Vvc)2roErtjp)?*iCFBlrK>{s2>L=?v3~$Y@#S)fnh&F74q?qsEqs{xy>c3;^7~D>))dAyei~P zq7z)2RlyqlFMt2nCk++<`3GP8V)CL8Qmcu=`>q`^(`PQaykWzNu=U8$VNmIT>x8~; zd#(|g-q3Ss|HDQ9ocG<6QS>u;Mdxk-@Z3mROA#ifdvn+Jx~68MJ!k{NQ&z$u&zbud z7@p}ZNae&ysSMf$Qu*kyPkPW$#k}<3D`t{VGtCRy2ZWlo?u42d7lkIzb?Wly1P;Hi-cdfGGJeie$gl`BdsGP6H0+~iI@SnBV?5|w|Q!E|+d zxj!QYe_dg*=ilD7_om<8?H}5ApQx_#hoJY6)%9eB^0sVV`Plc}HdLV>P^-|%#e-p5 zo>O7vo6P{V>NsxXTDleLP8>OCc_FuG@Mq#CJ}f)Kbj^wBpk0oCv7i2~7oCBsIA!!@ z&-Y-_h(9>l@~$Z>_fd~ua|i4;egmF9w(MzHed76JuXyE8hpJDZqn3#@c@6}z^=2Ff zPOK+hYz12ES)mnpo)a30ZZTMZTF4SpLw|O~GXmJ7?eJOef8H-q9I@t=byT+8Z_f$` znK}N~8S&SlL4ZE%NV8AY&L19g;^BOVSo#12jw=*pAdpoUEI{XJ|NPL|q3ZfewbnLP zh-P`7(8Qc(#9YJHJTs16KZ($39SoSv$YZV(!x(ferol=y*n~9DyquAK{loT^d^~k3 zFRuIm&bF_^(N>+g>_5h=J8O^D-?q;_@~^?X^cEx_<|9TD7&I>=aMNEs@W(^-^&++U z8qsK`IY9e@M$<(zVr~@J8ms}dE|`MMG#!`EML1e)GSjdFFVVB7(8BQ4NR9OW>~`M5 z9$r!-rmPZlH%wiO*2y1!D||gK^9mjp{cR+#W>z7Gq>umI-?v*sHKJf0mSs{_NvhI> zWuzr~v8j}QIaZ-YSm4m^AGNM2iQSsm%qhyCrd|7WN={&eaF(rTkn_#+i)>KIPDL2S8( zrAMx($CztKU?1oacpYfIg)h8`nJe)SM={DYQV-|8=gKQk7BRy*j{x?|!R+qKFFF6x zZ98_J|D@SYy9MruBf;nJ_c>IhJK9Jd_Jl|LHzw+ES=Q&O>11`Zo+st}*^l{fd@!{7 zbF~^;Rj`SiHMv^T#270HgGi5KrpLB#F~do$*zs9pxHc%`y0M?wj6X5MpUCTKkjcSp z_%=+vib#p_^NLwwUX46lVmc2w7Cm}rIv5>Hh;JBKXTx+Ucgnel$yFdemCxg(;umgV z@C7BT1YnX{gqFNCoAl@FMOXn7r?-UpauV)u9D&*M19hj^n!f0CSvJcf7LvD&dOnxG6aF_VL(5z!@$d~;O1uchcX4GTD>$a!vkDx! z$QKPTQ!gW%4RVl8=4T67{CCXhr^~fNnSds0Z8x7{3o{9k2%oNAx9-;6f4>Gzd&nnD zT8ez`e- zDJ1*#lRukoxWx)sbM;P>pKO5%@WMp66UP{0SWy&dp^YU6W|351hO11WL;tyHCRxJgT;h<$# z&Vv-DZepm|E9=ok{}q+nIpVlS-zLi#)}tjF4qPYud8^-)%uW?Ep_ ze4LDl=fxgYQZPrDI3@<@BSrIiLkWru6y9EJ-=x^X7*fc@A)x-XrFy#VRkKF81AJjjMl34%8nbEs|V44zLj7VcFRA9jq7I z3G;l=PY>e|OGREBMTTkXvBN#Lcx}lA<7%uxvKC6&AZuRD3ZyhEKprJgFY-wBnvh58 z=E!@{#{Ng-OH@N1sZ|T|NY#pwN9&a#@2ibxYy z?D@}PnMId_Xo)`moX$fqBU$zU(mi50U11IKKaSN8`_e1rTUCQ%6o;DYYHnmRW;wQ* zgozgFA*POWLxVL~W(vMR4T`dG%PkDr(>f|vj98$-Vxa}EBVA7%!)IY)!p$TO4Xj9T z`;Y}m!hLLfJxEH^5Q{TVo`<;rdMogn*^8YxMw zT1ZK%R!mA-uZ)!D*H6D2M0-S;amYFy{EU60Gke_$CgKZkzv65-GZgO}H5AX<{mo_h z{?wQlXqLla!+g(RmK$0&7U4ZCOJD)i@PfFEiLX>+;)s3B&vDGFK$?qipt3zD4&gMT zS&4lIXVTMz4Os26Ao7KKhzKjzwp3wbkB`7?gbs-h}$^SZA{;JSkH*{GDN<+B1BH8 z8i~u;z*=!=Fbxiu7GEq*Fscqrj~Nm7TM2EfmIk5j<0z~0I<6L-WKGq8PD--^bW#%a zqLWmw37w>Fj?TLu_>1REhfY$f7Ic!T6{C~ZD?{hZnlJq$(CL&}kr_e{kenCZs{dKP zal(X$M!~t`_S<*Lx2gtC-H#GL(~3PWGHp29+1N#4hage_?n2B$gQIzj#8Tm9-i%qhgYQQF?SphaFiF&a~ zs@H@~Qa8uuzP%@2D?6B)#Yt+_f=yDjVrF=%c}L)PtQ@#><=3csW`l&8$q^ah2Cd(}1I$78!8G$3`B<4h$8UuvV%}Q$bDD&gB8t3>Qq(KfkZ;H3M3K|H6xKyuM3HkZjQtoZaV#R*@qO7NNLrB zL`t=4B$9e%NPN(1Fa0;b?2%=bWV|1t0eC=-1P7Z>7ct_cUK0*U-5iHk z?fT7`vNNgSkkqOLhoox7IHdK;aCps?b8i9;%Y(MCZp7nEPF|h4_W_?pc#p%v!HuIR zJoe<@Tq@t58VcdI=mwU}Y|}_0>>CQS#KI0@gzbnzU@0m?VO3F82IZ0<#LQyg*p?YN z*huKuum(Nf#iltAYuKKp!K)}_I;=(naLFsLS`3o)Q3D1k%?dC`Nz{u$QoSY&lDatt z5B6D+pG7!xC|6t?x7RuG#uGc3(vKC=uH+ldkJ!nNgN)jDufRZ#=|sOqnP zew0ML^dr@4q93W7)9$2TUa(T~)sg?^-J#q^`~%INpwH$Ul#px@92{%lk@ zzu24OQI2PNad&SkLr3O$^s}_Kgsucs2)++<3);;zeV4Rp#%&;Imo(DeR5}XM0G`iMu z!e`FB0h5aI8NpbjCjxkkq*nkY68cei6b7kL5Z`4E!> zdzXz;U@Fcuj+A8J(9LUxgAxU5B1W2n@v~#OI$}Z~gq$0OnDVqSABr$42rdR=Gk|OO z@Y9@;JbYF)TV@ifPHJEzrC9+ZDT#U+NvhYxNK!Xvy_dV}j&zD_F4UME$EodZFD@G%&SBA!2-@M_oK%=%Q8VCCcOWF9e zU!MAp2PMNkS9E zgi}vAup#p#(gC(s(EuB+Osm&U9hf9EtH2~7Q8Okf^|~-g>E@UW-}Ap)Ww%nqB&Agk zCMngbF-hu`Ve%nA_-~F$aa3xCNj6w$DOtstVV%}YXHR=68*h&>^LOSCF6lQOG`^}a zcv8^w9fe6r#Nhp|cJ0~nH7nB73nQFfgm8{F3`@<9%)m!%biSUWW38k#UfBnyqGzF| z%9ddAno12$t%=Pt*q|MII6{esv=6aQJ78KI0kIKI1uz3uj9s;uI2#FTk$Q1Js7oOpeEu0zT$JF3SYSjWyQng}u(t2g^Jn4p4 zT@84O5c4EFlLdw|eaaVpei)u|JC?(T!6_aXhUWUedc$-7_h01;Rf8rLQE*nOgNaPn zX4n#~!?p_oKXy!PKt%A1vgysY*91*bL^;Q4X^6O?+m?plkxt+vRwqu$_aBp)fvb&8ep zPk!K?51EdZR)h&oL{9^X44imrTDFffkZ|}Vk0^;XoIHV-% z#UZI)6Anq;9Eaa~+KaA~okM;#Th)bVF=oBxZoC*T z^%1#zX(FEuhs2H7-%PZ|n4>8l75I#nx6&VK1%peFYIIrXM!U&7)3BneI z9-K1=K%JaswU{OAuLjIgniXJ{lBgH6q+H|(0A^QrMPf^AVFl+fPMXd9>-I@+F1jM+_m4t!%io;%Px4(VLKNggU~>}& zCqh)jIA}Z$5^OZY;y9hgJ`Iv1Dg2YR> zdsG6F7RTnYMk_`nRXcSclF+OIk%UCeh@{l(LL{Y|Bl3z1U!8~NQbZ)BRSzO5)v6Im z>Xjk#(dXVc14N2Yy%W7Pb0*A4>k~&ikGgDL@g(E@ST4`4&*6s(uuT0nkwWK>Ui`)B zfQgd{HN>w7_|ahq{pdTeJe`Q2PmV(gaguAvImYAn{a}klnzHH(y7RUldPv2&`D`lfKE!HUUZV`HKCK# z&Cz+@tIqq0>|ko>B(-WmC#hO7I%&N!bnd>@c{$K2&dM2~!(a)h)r#hDuDdpCj`H%* zzYVU#Svff`apwpm#bf{Vs?YpdzC$&ulG!{qI6s*N+r-`2^Ree9fM=!)uX1LxQb;PE zmorig1Gu4Z&9oYthT(;}rDOFQ(aUx0)eKA?p%<|#xw|N~CAk)MOWNkp!!zl_72%Mq zks5GFX;y$kN}^sIlIk_#kkrj__@)nSxm|W8H5`&!wcwCctr&;2UKtMG^oqM&;Lu!k zP7@rEtJ{+%G52kHU-78L!V?8NiuLdtj{bNaWKRu^u7%KS01>tyTG)N4TaKS-EaIVi z-Nf}u(fF4Y&sr7=D2Lo|vUFL5b9#~p0o6SNr{pk1FSl{_tj^C`^h_VVLx|Z{{CLQE zt#;5&)=&+oq%a6ARML87sQm1w-^KU- z6rG3I#JxYq*riyyzEfAEHeSLUl?k>&8dw*HS335yV|NdZT!f1y4(@@c0wC#|ZeSYm zh?^x(qGC`|6;uZ(3C$`%Nl4TTN=m&hP*S=%D0jW&>3M(#HJj3q zp8wmo@CBSlt!h)|u_3ZW@>Y9k0x$n%?wh~E4$0hVDtU6$#{7wW*OcLavHlJ3MqhJH zj~~#5v%GQUjD-z8SVXZxqckG=`zy9FOA0Ch8sq$0FF@EfAHmz;Z;5d|fvs7RShXl6Ype#8QkoT@l#-|yrKEaIC?$1sls;$Qx1TMI6g8BRTD72* zRIM1Lv|brXANI|+ycj5*T@|Ici0I**p8EKH$p84eqi*guj?C$q-dq5tT-edBo9!}-dbSm1}r%oS>wjBXTu%b2ujV(*H#S8w0!A;j@EP-_VQ>J9Mcg( z34zmfxMD^g2INNUng;gxVB5P1H=+S2)92HLoT_$>ll4*q8Y#^R&`3$ti$+qtCNz?| zIU2XTWm~?vSPhM&RxM~GRVzj#tyhM|w`@4+PN4C?Ha_-Q@488@LcI^Y>HM*ckK%#R z0r|1fpa1)GgiIJVh9@|6kp*zXv3xUfvBF~*OotPrlavy&u8ohPh|-`031f$!dx7I0 zeZygPG6~K~`s27%`dQGq-b#qug z%75MqWZzPQC8<>lEJ@XhVM*(i!Sdc8zJ$B3ukJ7;gV_%3$&&LY&iU+F>xvFT!w(hg zN->4`L+kM4LQ*Pc>kZ(yRcRltjJQB-LxeCaIfa z^WBfR_j$5|sbQ1Uss)>*YQ@;3^~$h$>c($zXQ2b0$y`{#b{{d5X_uYdbMvpS{OyF9 zO!;I1pnPC1lKJ3cPRT!wY7m9Lj*c_K;9|*qxLzif!>2Q0apLp`Q?tD?kINcoGi70$ zY5AHFwnS=tXQaz~8&jI59@#EN>kK1z3oGY{#Ey+hZh@qQ*-V+(Oqy6l&PHU7)qqn< zvjUt_67}MgRIdrAq;8JW8}B$b4{f7{Q&OuIoRX>)JTN+Bzv~UZev$k>sAjMd}U$QwCV0E(ygx zowpGicomEcw?z@9{TbOIv*8!2>3*pBx(P2MGYS$6+L1lP;m|D)=lq0aNmOfkk~LHV zD=EziSV>9L%SuwcCRUQVIV#ea`7J`dDC0bMvdP&-@|zLQv_m1@jZ*_YG(L?|W~`k84uHX8@;hW(FQhaAstH z7{e?=Ky;iR5#Xd9+bf;%{7}VfLZwAbF$#S|>Jvj zFdro@D|oh-CYK_$sud%$)@nd1rC9+|DT#WKN~+g{R8lub>I{_nsDl4-?7#!n#!M;BG8%R7WJ8HnJDw*itp=b{niT+*lBgG`qLh z56fppAi8Vqwf8<*zE(Ae>XB(^aPY*eq5~cwe!J&eIBNoH@`TD5?aRIM1Cv|brFzx@7BaB!ZSrlly6EA&+>hgMfa77)EeK zf)`b2V}%_jmm|`!7BRQ*=uG-(MF=EoqXq<0niU|BlBgGfq!;m-L&`VjcOjwUgb_NLkbq*pu|cHr%PXGrHu*x;tVV=j$JTBg&h1!vaW#g(MWN;) zh9=@?;{1wItMO%OTpX*DW?tH+C`}U);R8hP)Xl`S9UR8XNo^p65?o4y$oE4RR$>q! zBuD<>jCimjDw1_k0~IOF3aCg))JsKDy(TJ>x;YiM9sj~9w@#8;wNQ~%t(c0mUKtgi z@a^BYfZ5rr8HP!h&5MC_xq0}(|9tI2zj2hbqvYMAM&jqre1$t53=xV5CqUrL?-ooI9v%A;_hBpj5B-P2?OW$)+x*xtL@DyHRO8#e5#x}v(ghmDZIB}s(Htq8V(A)=CLeviS}cNR1J)XlN@`L7(Bhlo|f zBB@mi7D?5Lu}JHcVR7x(*4_;)ibEtujHG;pCGE}q)ODA^3m`E z9g*TZGePu9Ck~jK=#K6Mh;r$1ANVN7jz^q9S&~Gxh$L&L21HVt6(Ew5s27o>dQFHV zb#p|1{fz&*zwB0Oh$OXYK_sbKF(PTbGDKeUwqHLHh%8-%?swTzuO+rJmd`RC{*E&c zG~>|0eWOS`{(?U^O};xdB;xcO7twujY+~pmY=-UQd~gg|;jEqL*vD9k#EKT72gQ;o zG-K@L*31OHm)O#+g(3c9Mn-H{JRCdXW5k#Nbz`?Vc(hsslC@C-0x8W35J*YXi$GGn zCIphYIRbz5&Zqja8>u0X)T#x6q-wZ<8Q^#vECAUdLa=Kw4u=Sn*oZC5aa?$-Ti69;2e$2nrHNFFO0tG( zKqaMF0V*kpdQnNL*Mv$^H%H|k|7zu3vTLcKlGLgNm85FLsHFAEQ2F^A9>Gz0TG`6< zLYqa{BU5fE-ZJ;ccOjHTde0~hf4=jkAIo>9hC`3<&jWc7LINJ$Hcsn8^c@W@F!0c^ zBRENyxGLUQ%_?+SBnd!xNE$w(R$$R5=11b#HsV+Wc4T2s4swGd#he5lIZ-oxtXkxe zwNL}{D9s9xM@iI+JW{L9*X&Gqu@L5jytcHZ%z$-afE2(TEIR09MAKT7$JUQBeZlK zjxIPStPFgLzKElCU|uT8z64%~ahSk48{sDqS4cw~ax6B-p5yy2mRB@P9fsJY*vy}- z7Jp=2)PO%qvjY5467}MbRIdqtq;8JCM}Om-t+ErT;g8g+1%IS!#rUK3%JBESo1e;8 zmbEhch3$4XYAvyTySuVn^eOgT(V<7@DQvv zG9wQ_@-Pw&5VR-Mup2okJrwMX)!2b!rIT3XN9=fvVfT!Mvl5Ni_7FM!t=gQkoUuk&>tvkED7{cqDamJihIZjr(M$Qo|#uRSO* z>y_d0`o(3w!YmGw9WjvRqAuGPuTIAMf8wA15C_Q??;M5V@n8Al&&v0w21T3zqw&*f zEIZLW*kvY;l(k}4H%y$0fH;t4HlpGovLjW{EEY`i(25XaJi@}U7wdtWz$&zGPz1KG z#P~H}2%-zmZ5`WaiVs(dLb66`Kp~}B0SYOJdQnKK*Mve+H%H<83od)H>`H1VB(-Wm zA*ot13TeGE6gt0L#TY|-iHVJTp5=2!~V;*qSI8t_PIR)9xJqFy|b>NVk!)Xnku%FFuipAL_tRxNlWRV&6L ztyhM}`ImqASHNSbqfNMsLje}~wAh5@6Zg-b9>LLOaNj5ppZxAeKT*CrH6Xf1V*0L) z@V3|_XCdY`M~|-gz8Ay8FDl)yQjw$0pjeWG2uPm98up{O3H-t%Y-7eq-Ut&HrmJD& zbTJFwh?x0o4j!!*fn;sefIv#K0t8YL^&*f|uL*&qZjQjizwqrmq?DS4NNUxBKvK10 z1k!qC2t4ZbZ#w}9EO*D=*XqRGIKivfv#N>szB_gu$=$KX?jJ>B@aH%FemW#FH^5#M z`1{!mL2IKRf|(flKIZNMn+4_PbXDb!Jytx4#sFvkAPgAyLd4-Wh*b+ZdM?g%NZ|K_ z*gQDS!A@MhyLl{$Y7t4+P7R2pG%G+PB~dRTN%fi#N$Tc^yuNkE<7Br|LnNtH3nEF? ziV;ccl_Byek2v&AK%`N&+`@V*OJT~!)>5*-`V-fke|q`9pNW$ZN*)-6q;8JMO-Jv_ zj~r3MB&k&kCP~$bF-hx{Ve&`U-*^Ww$sMvMhEBw_$&G#(+HwbOe?;rI`K zu;x9}!7=n~BfyGul3?=+f_1|=8(z^N4v`5o9}B@{aJ;P=I1U$0auK1zaB7XE#gT{5 zj@WX|w_n>aY)L=ybq}+Su4{TYP;vP2YLQ6RN)1S)G%G+NB~dRDN%fkLNb2TD)MvlH zR(2;fB$8USAdyt97>TrA84`c|(f6D`$#UEqcY8RHFpfH`8)5|}ScoS~G#>fvlfDhh zvE+eKIDYc`U$|JlO*PBW2(VXZ2Pa@4K8m%op78;`yG(GTu7HfHw-2p%IsZSy~lJ?{CJ{GEJn zY7mT=j>89FaPd9E*wunLJ48@q2DbNMEygc};7bo4g5^bTX2oiXqBkuAp>Mczx#?Je z<=G+PPw?{q`7USV&qb73I4#3e*2PAcn?m%{ARIMsx<=18mR$=lx77eq$KJ^A*o&y3Q64@ zh39|u-=++JLu%E6LQ=J26w-QSDExl!pZKD)RW>GGXoqYe=pwd5$a?)nwzSH2=bbn0 zIt6F2ls+;F#|z%_;^$2VM<2%(T7jYI3^X#L#MW@;JshUJ*hSa}-7kaV?FVljmQ)IY zH9%mVX?YBs z|Gn{JKf)x@H4l}rg*Aa+>v!q1MVoz3UEhB z)QdY(y(Zj|x;gHWH%1SaoktCKq*g7sBULNL9j#Y}yU(2I{U>mD7Av13^=o5cbgF-pw&KspvM2-$Mv69r0y+tuz8+ zMN@^vf=MgTj%+N4;OJ;C;YfBv%Qa1tX^6#R;xrY*k2U-Q;k%0uS8EJLRE^YtLQ1m& z6jBoPqL5Ut35BF?j>0oO|D8LhLm{bE3kpfqicv`Gm7(xk-~8CKU<{sFZVk;XwD!gk z>$7rO@LT`+o!9gmo8(QSrr_s)eCv1Rn^Q9d1H;8hB?b$9!-xIn+c3Z^oKNiiGfHCVQiS#6B8zuX@()t907~iQOJDTXv*g*H3Z43sDXZz zW(D-4Bw{kK4fzh$IEY1JH}VlnD@JH791MVeS{5S6cs%~9 z9+i5|yt;A@Vs}nA&R}R_$4P9!ZN|p_5}2qsVh_`UX5_+)Gq4?;kjjj}h_NV=eL=*- zl@gJxlp2UgX;wf)N}^sOlIk@Pk<`tJxbY9}&3ls?5lO9Dh)AkdOhj6*jEJ|s>ZLsp z@suHZP~dM>*TJuD{NQ)tCAjHpf_)Ddcn$t?;pi7k$3C1<$FwN$qlo(@2O7*j*GU4) zx17XBIO?+LK!tUXu>woazYKT`>%VTu5Q)K!bt}{&55a7(6%a=)TbP#w05ylfi%>pR zDeA~Nr~!49W(BCDB z>!~@Z$W2jCO~meIK^!xL-@!f@+d|A*O>-GDFq~)bi_{DoUf_B>F`XHaPDM`G7FBCC zFqP7*fT@&3y-X$5Yho&?n=|!+Pup|jbWA0+YGEp=S}{{;y)vdg_|muXI1Y1VtO(mn zJ)EP71p-`_f1SxS;C5eN$ZsXbH~vi-v?lx%YixHZqF~o`DEn$VsEYkJkIpu?%q}y_huGj z)?4nzd?(9Hzg;jA~j=yg+ue~1&DUBwXN z8plL=HX=$Q{J$MDmiUetuuv--sDDJw3>~kj=IW(wrZv?Jd@a#!jNbhSxpVl=Lu_!- zT%eCi25pAM{~ zRxMy9RVxN7tv3u-Fm26Q;txO&Tl)v7$1$jN{G3SaLub1tPZJ%pq)pGLg{&Li6pA7M9 zhWN z)wkxb{hjBW^PXEoRUVgD{x-1coP#UaP+nKEVy#=-ICcnFI~s>9u3Wa#0lBuIeCQ!* zW%IXw=+4H`_^sP-B`oZ3jUs%(M80t0h{1&mfLVU~5$UfeNWV9f$Wb{GFJfJJH_`wq z&)*NH%O$q3b!n;HXMKb=lLDI-R|bh7>CL>3i%%bhAC_8!dypXR*@^ap`?Bogo}GM$ zAAU(IcPEGSF1CcY7`=XW6W$)sH^0of(WQ7`#O*^r zp;~vZEC%g`LdlOpP44F94bwKWBI+-t`Q=}D{&&;vcGc=OGNx3PdP%#x*qbq$e1kjw zJF7Pngzxor996C3$ZS_*I{el(Pmc`8ae@G+adC=f$5+g^`g@jx*>F#{)eCT>PjBv$ zJ?(z`3UPh~CT7G419{u{h<-zDeud7BXfORnQcq#8#hY&;)-vy2v-n595!WNc1}%8@ zh87=WZ9Mz`uvAypQ>ts1TK$IF;GcZ+;?-bTrO)4s=ymHkrS^$G_xBsEdWw{BQ9@vL z{~~%rP>)v8AnrG=sYxWag8Pjp)g#gE^&2&{Fp#j{cyc}2zI3*~zu)0a>(I@~Gj6?a zDy%YFgQrvI=r}n7Q?P~?c|o8jcHr5F4UAKD1Xe{jx@?vrX?0^UTOBveYUl~~`p>eXV|GY9;DY5ZVDYko3XbQ5DY4eX>^<<@Ft0XI> zRS8*1k?F}wNlZajGU+MEN~K*S>+|0EA2&@yRxs@7NC-{6#|vissgCA$kae3CDegRC#?=tGVLNzU$XHZ{&^ap#&CDg zwIB#=93bg=NgU|dnF^;{94~==`ffHAa7J;yK0AeHjt5!kj6~i8RX6^pDpl#sOhr{P z`EmZJQI!-Lr|QO^s8W>_8!wd_RcRr0s?urKLRC_>LaLHlRZx`{nVPDkggRB}q}8cP zrd_1!^XA|EyJ@IO9+s4vsRwsb9G?L|$QHG=D>_G0p_NR2971YnC56V(y6NSrXeGtQ zOQnWZT1XwOblSC`m6WXzt)x~JXr)D_Mk^_yj#fHpb+nRc7twn8c_00cY0!$;QIUy* zh~ScoXnH30is?8316x>efFyRahDC$5cRd^-;^oe4r-eAt*aIj3Ys_NLf#Jz@tBX~s zN@r#&s*=f%^GA)Uq|i83*Y8%PDk(NzDmALoLh4kd)2@Z8q-=#$CAF%cDlIZKRY?hT zs?tfTQVJamH@=hALx8vGG!=F_som zXDpp|EsP~)D`YIGRRv>dk*OI=N~klIPFkI@WZFf>?mu;L_cV-6m;<8~Rx9HE1ql6u zI8&bEB5nZYUmYjG)-vIBWfvIBvgp?1yXg9?cU>>tIw#$)4%wrMSUP7@A(l*j97bx0 zC56Tjdk7pR72S2I*EwD)HN=von#Qs9fC^EA`xVg@Dnu+7>;W zOQu~!>`=ulDK=gz zHO$gN>X@a|t_8ECY=xL5wW`1@EiyG`NeOk#(n+ghmQ1^d*<-eTYr`~{NO>Dp1` zyHOA#paPDSGJPO6@tEVvSpy#IArHDE9kjClrctYxTf@5vHe#=unh8s1X)3mo$&XV= zjjg26I9oUFQ)MeDHeM<eWqc&RE`NwM)#sgacyQYR~&b}eKjWh*2rsZ|A8X_2YPN=m4c zl}=intYq3nvR?JF>wh{8SrgaStk6L0#6g@6|AJ#c&XIDN(-rjl}@`Bu#&PB zf|b;&0<5&i)Le`<4a1MmX3x zG$XmfWgYOW>#z^O`gf@kmd@Bzge8+7XOS9VNuhDVuK!zA!jfX+rBWj-Eu>CZI_+8r zOUhPASW>GB!qOsB6PA=vCoG+`I$_DQi-bLV{d2xI4PjXnV3O5|tiZKdA z?3mbKpqV(T>mb~;k_9$D;-hgjq=r~hXdJN{m?~mPvGG!=A(j?W zM=YIoEr=y$D?}`*RRv;ck*N_&N~j~2PFfwYWZFfn|eqd3%K+t)*ccTHm5 z^a3~Va1ym|CK0okks-D;N*3#_EFlK!3SwWkmVj5p+#O!m+VnJ4zS7y6imzny<0Mk! zD=9S2*G+$@%2!fsyi{s@rG?b_N~c{5UrE^t`ATY4!B<*jYQB;Z>U^b>R_803c9E~A zfApkJOvP7C3ll%o9h_-x#lCOqSmz25&PB<fP=$d@Y@Q6*22OZGg2s0@lsg@u}u8 z5Rv(r4y;u2;|Nj&D@vgjZQYLHCSWqtHgwDLaFTYI7$B@%);havSxY)& zC0#bp4?i2WS~qS}g)5z>so+W`KaL?axROHSaNT&JDqKmi@lvV5l@?NmE1h;Na3y6c zge$341zc&7so_dWsKb>`S{<%r+C{j&?ytXj_%v{}{lJa}(|FkU4);%}G zLADW202dRlxtA;JhI?igaQaQS5-!AZ3$49z#QIElyUy{Wc%?tq=I5xgmCn*sY$cN) zr;r+3NuhDJZvGQhwvuAwrBY)nEu_v?I_+B6O3GHqR#K}9w$dU~vz3%kXDgkwI$O!K zi)_9BQ6Ifw8nz~gm=!bMg|Dj-M277fu4RX|=R~0u#+qcS@N{Ka&;hxNAYAVD+BicJ zCnJu{wSG*MtaOH^A}g8vID^#4N(zmWb<I zWTi!>CMzkSPF6Z;b+VFa7s>j;FJADLX~>Gx!42QjLND+Ti!h8#&Gtg3!D~Qwm~Ke2 zZZDYS**g%?}i`j=6CTw;B}`!;`2_4qb2 z{bG}Q{Dc4fPo`;dKK6NAfuZRvaSS6$Y>hF?aw0Ew17_=fHc%2ifTJJt1%8BR&~38_ z5i$FVY-v1x`{u(`Kk9VGruwLp$&Y{j)H(<$H2zWFe5C3}ofI1{mD)$07E=GH(`nc8 zQ72_9{HT*!ReaQGk*PoGq=foMolaW)qfVw>By7*LZ=Z&+R;1an<>1&?3w(`C%l4x% zvZ5sP5!qsxu#>}K@|YH4Iknvx_OjlvtV&oqV^a~9On#h2YJ??)#tFM&MU}9m*m$Yb z2ulm86P8Z97Q&LU6%v-zs)Dez$kc=-CDaK^C#_CcGVLN^f5>k7)ii{~iSDrKYP~| z)6mt7W1Nh^;P$5lwr)fS>2Bz59D8=aJR=wi8Z^;<1$r0TOKBK)Et`Hi7>D)A|Wl7{)h#ZtSp_Rm5n3(Vjj2z3>BZd_$ zxwvYU%@Rm|>%}-~ai_q=4jc8k{(vfA>3mHESTgx>6sZB06dDKY#yeF3ONxz`N)52I zkUC)Lv}*w@DO(|6Nv$dXON&emSW-eAuyoSufF;u|0`}T)i4CTiu5RK44SAZT&H+1dq99pb3j3}0k_dER%;xs%v8s5bb2SxS$>hgDq=r{g zXdJH_PE^G!DK=gzHN4V7>UgEot_828Y=w9wwW`1?EiyG;NeOkl(n+i1l}x*c*HiAh z@+Z^amAL_ew`*o%Gbb<+SSVs~i2c}(7uYPwk9-q&Wg~9ay?w1t+>H~s0q!YX<_cBu zO6O`SypqX}gGddpq|i8CH_fZ!l@uEZl@^&AucU-J zUg@OO@k*v$#OwAG{AW*tR~_Ml+*q?>&qMsnI1Fsd!_jYudk*OI=N~klIPFkI@WZFf>UUL2yR;FQWlDKAI1P+dYXSQoN zVZ^t$B$$ikq1}Ba+iY-F$rP;E-!cauf)|f!fB`oAYXOdEO)On{|D9Iy$)1bi zUTc17coekmpHz`b=VU6RlF5(5M-8c@&^S`peN7dqq}X_=)R0OGsUww6yB4I9vK1ng z)T#ohw8+#*B_-66N++$3R5I-%QlI|ayQeyKh50PTSu0w=EIsrr!$(9aCx!)Ug}#GX zr_5Nz)|9bRSaCAzQm@}-uvc+e{&gms(&uriOu4uJQ>vV$vo{rI$>hh0q{dlNXq>Z~ zKc~uBQf$0bYMiBo)HzG1T?=PP*$O#JYE{8mT4ZX@k`n5irIS|YESYwZv+uwC=i8<- zT_e-b{K$`7-LWw#;NnmK#MbZv%TGK_lL1z}f7>;uOQv0<>>pk6{_jsmS}Q1>0n!3Jy=GtEmZI|#HW zF-=2Gy_Rmi?k%*i_j#YGWl^9sS%bG8Yk=_ zr>GK^6dNy<8ewT6b;8nV*FsoQwnD;^T2&C17MYr`q=Y(Q>7>;OOQu~U>@PNbd3h?r z8i|SH0kF(vg}S9#h7(1Rjs-3+j$${mvIVX)OBT51!sTASy|}j(?;G|T*z`DMtdhBz z4y#o1;{Z~`DkU_I)lC;GW0evcFO?!zNuepQN~T>8Rw>yku}W!Gf>lyvdaP0sQ(%=$ zdJ3#kX&14&=2G}1SsJM0aPdy+Hxfjj<%%S zghHTD2uCS|n*ss8lq+22YWdBfnYZ3m7&ldIc}5kRmSv0Vw0ZOI($skIqi9Q!d zMA0sRX+7MkX>s-{AYO%0x3%9&GFQ+CY_j6|9a^U0`YjgM%Pvn5lbxKX-gxq)1a%ho_HG;ba9 zLtpq5I~FbM(y|>booHvetloj{)gryvfxffsE~ayZu3~er zBb~{juYiIrfexWF>s84O2Edg}!Prkc*wz9>|3*m!teA8oLb(h^!c7Svj!$<}Zro{U8kI?7rdj3roZzx}EV$q}p2k(F5Mnq-Mp=*)Uma>OcjBu}hj+k--^Lbo*} zR-vz25UbdUZDJL=kSA8LX?bE5+BOpFpT7R?B0DqJa44aN)3HP-6idfL{zxk7PllpN zT}z-{1O0xM6{UL8sY+H9{7BT?Q_5tE1L?Kld|7%Gqq0S>Li1K4lA~9lBP+c&TqH}c zLTA>ilA~9#BYAoi+a45p6}qh&>S@~Rk)EnXFx zw=$3%uL>PmdA06LSzZ-7vtE@PuZkVX^QzePpzx~DZ4G%<=&KgIDt2OzsojlBBJtuNVHVvT+g4Yx*P=-s|Q9E?XI>2x9*3tHpo?I+6K9bY#Yh-{?hD8cHRjjf-$tsYB=E!#Zr1Gj57Ww z!|?>7RXv23{%LGob=8-xsa&!LFQdjkrwn`>(D=D5v5N87B37Y!D+S3BtI&~^SR4N> zORPd?)~k{uR_VinsS6k-*+ts$`rebs_k#ZGJ!tI&l!v5HO06RXg+kyyu$JNgGZ z#F|V8QbEM0Xe+>oKY$ic2crH+s5KBm*({SNO;BalI^{=atzEiS>?x336=i*iXF-Gt=RUU z@U75o4f$5+s}_7Kc4C`vg)ZdzR%}|HZ-usve0xf&l(xgSXjAKCB<_!e!-;S>qz7Zk zcq|#xf@qmF+Fm8jz8ctDt7HYz3duz+*-Tnb_9xNwwb0XD%51sc0~WvIVyWQF`@QFrcxIUCBl& zqIa)&t5uZqf8fm3eYz~iilN!!SfP0<8_993(2`0zt#kL29 zV})*O$gx6SwcuE>6WbgsbRo~NV$<>*E3|Fo*eT1;`KK+8ZA~O%kw6S>SQQFI(Z&}j z(@!#h=CG+)JRH^ol{W=Z{HB1-UMqW8w`tv(F0G`e1iMx3DowINZ1zZ2WZp_gk|Zl~ zWF^_U-K9xZ&Rzk}XiaL82 zi?+5l&1O-)M!EN}VtlrUR%qTzNpeIhbYvx3_W`m*D|BYPDmkJRJCY|_vF$-2TA|w- z60OizEr?d^#5U0iUC0xy*t9&+3T+#Sc1YLdb#{mr&0YP`DB{{SiHlvI(O}Y$6f~wgyA~Fv}VAljpG6Ec%{+%wfZ53s&~4 zm-`A?q7~z_MYKZmR!Wj1TA?E=(YmjeC0d~~>s84St=N$~(TZ&k3egJP){tn0zG^|V zVkfqVR_H>WXvL=GiB@RaNVKbNx^0skqD`U?won3sP#_#>jRo{bYpb3}M_cuno(x9g zdb~1+B@1P@`Ky=Kt!4X5nPhR`D}ws_W$9In$`-u}&0C2`j$Vb1tn^y{kSx6lomsC+ zj$Xx%1^7JY;El;mP+eUgl<~C)u9ePa!aeDTk zhF%K9wNyMFMoHUS(ayv{Es+W*((DJXeYEPIYGpIMI(|hk;PpTg+NfOa&8rxVEm{?t zw-S&XtqL7kX|*XQORGX>)~k}ERk0&^S{2(K6j~L!ts$)nebs_i#ZGL~s?dczt%^;{ z)2h(6kyZ~JsjRa@t9m+>4xo>;TH`U4hAWOie@UWJ3up$yOXpGW^8F7}mN) zrg7x~?2Ey+%4~W|mTko#ZLzJ;yp@;a*jDJM3fsOb%eF#i)~k|ZTd^Z~wiVkR6t)$* zts&bAebs_(#ZGLqt@_F5BG>+qSkwBXRUKfEEdbgXj$`N(PJ8 z8${yacu-Hob+#`C+T`8()mDKnIzYP-SIPL&aGWf+iXqwJR-t(-3(0Y-(2`0zl#kL29TZL|G$gM(Owcu8<6WiP>bRo~JV$<^6Dzt6n)>zZ~f3d@@ z>4-lPM>%HFX|%IjAf@}YP+W@yTJc_Q(Ucadynn5>=MYKdj#qPaqunym-tH~I%3?0p zeK>{ry;wXbo4Q?$%bL1<1NQi^Z0dHQ$4ct<$E&7p--vzx4U4B_Q@0BN(A4dZ$);`> z+Be44>S4QoZ6~f0t$~CVO2o8u&>u;J(55S?bSruT6-nqZwEGHsLORIsgv7o}fe%!S zPey!AHhss>9*^9Q%MRgUgtmrop?T|ICpUx(9a)EPH;PfY<=8@J)~k{m!o`l{hj6j& zK^ek@ZfiJ%3w_mM2p2oCJ%kHg$PeLS)AB>O(DneTJ#nwU*`eBKA{Yz>(TZ%e$8{3@ zWSR`M#x;K`7!T>_O@AQrBSUywWpPV$Z|lIULJh-ZX;qBI7Oe`+TM0;xR)vnNwAwII zmR5z%tXCyRt71p;v?{heD6}ecTSHnE`lvF$-2R-xM(606WxEr?a@#5S=CUC0xw*t9&c3T+#Sb?uJpLUxEX8V&2IWGER$ zso4Tiv}{Gw6Uk@@y?@n00rZ`9<(0s`Y{F{F(1w33?aHNel={+;qpb-o9+vy=PYlNv zuL{ju8Ay&-g^sMe+B8v?SB1{3S0%@*Vn_14Dz-f+yef2CLtYj7ss*o#o!I78p$mCl z6`PjlRiSMoub#K&CB+V}`q8dK{y-YhXb}BUiZ&#U>!}1vJDdun{ee_#qQa|w!#e@% zuUfF?I$~H0SofVQyNW^CVppMgD-X%BtI&~^UF&|3Wmlmy>s86ItJsk|yNYcO3cCv3 z){tF=zG}g)VkfrQRp>&VUB#y5*;Q!U$gWGSoPUNLc10`xqG*?Q%^yypZ&0*wJdXBr zL*J()(5ESA9X8uEv)Z>PZDiB&3|V3wj3HWO-v>1OUY1tHXl&7{(7cs^3wg-h)g>Gv|t3qG3pjELG+q5clAy2Df)AF<`v<&lWc6M>8*G`8(ht{qwf0P+pcVR& z0sPPDbkxmoc)I!z(~66xqKEt$4tH1o-2S}Y?ik+HKeNdt<95#~v72@uVKDp!eika!VGKO8K_Rf5Db$OL!9M`}hO7 z<=Cokm%pFW(@SgaS*2!(RSmTSFq>EEo=NLI-S)y=wC?Vvx|tlRhy;3Z(F)bhr`5ih zdGGit)!G)LR$5xfl+bsKLGr?*;%z3awxM&+^|TrpdMa<^TmserTLhgiLXXub6pO<6+g z1@T3)cQq^@Df@K8K;P^ej*9=?shy4EuDZMezqNhn@d%ZEPqO|H8UrfRI9Z@{~%+S6hoI8ss%_0%_#_;RS(u#ll<$5ozIJrtdqHF0c zqG=e4rZ)JqIji;OdP>d3T(*~dCTxiF6g4}cd(I!J*}VodBkUMatu04l`q`I=JeJXX z=;amk)^Ug&bvE(2mqUH0YQV;6W zixzfi*_M>nUtE~g(yeUu+-`3=wq%@wR5Ex=i_d+O^*e~fNkryH3*^6X9fxgt-Ew|PdC0F=-&|Q;4`$V ze-7R7eh&IZqNljPF_LTa)D%7-wc{~sMt3@A8i0;pblpA3veUs@qGY2bFcTKK^i&2l ze39OW<_z*_ZG6MY7Q|%aUX&a=R=!f!Q|1ss0p#3dijyH|JU`IblYXQrD`CWj=UF|a zd{2qADQQ*LfFZrzF#-+P=<%d0k=5sF#U)2-U1ZQkL%FxBpH_x;EI0_!RsyW$M^Mby z3K?`m&E6XZc%R`=yZYzrg(Av#g(n#8_!xOZO^c@)xDkdZ?T#jrPze}Lg?uw~ry(G?=Yv5I(+;O=pS~DSp(gSpB~5H5?Z`* zz%@%>BZA_aZ@3PAR}8vsUmJ02Xli_Q!{`M+dH2I*xLEAw=Op|PEfs9^kQ@m-#0~i+ zRXPQtuV%tcZ1}=#)q=`a`bXW&$uo{5Fn}$GaBR-YD|g68W=@8gFD>)0VRtlOuJxIf3zG`)f z*x?xAa1cYIOOCq3X3Zh<5o2?q1_}K{V!=-cj8!V;QHwZDmyS4jW-hq|x616SR!Zjz zU5As|Jbeyue!gMx1QK7)ub1LE!mx>xs4+DBj?^klL^yFCnupMlcSfYdmpF z(xH(#=|GK;M-MCmJmV`q2FaMRtRNWA1-My^I$mvwfHIVNdVD3zBJ<%enlH z-`z@zbV9*J+t0tFmlq_{K9}CG|HKQDo9S|Xn9Ea)OQB%j>RW>) zUXVQcxtyhoAEp*hgMz2uec#!i@Pgzy&*l8*iKDI}MOHw;bCf%;IGq^yVr`NthWiVsIMy($S6 zZ0LDV`nYm4D2Fj6iH*wePi$;Y&d|9kQH-Vvy>R1qP=5rgKV)A}jwDJr9>tGc#2tM{&D^$qB~>xdGZ+{%w#-?O zl`YI>T^N+_a%CKp?=z(tz49SB1L&1csba%FkGKx%f57S+&?_GiB^3IYAG^w*Ie+#M zL4O#apYi8Euiwavd%Bp-x>=y?=E^ys%rm7Ky{AOZ0D4a!RXqIP1sc>Zu=)n{o*trv zLcRRhRZc4_#t`%gK%boa&IOv%R&ALud{+BD4aHZG5lxFnaI&uckdmE|Z_jm74 zhdV+4`#FOZBV|zmG6OaGgF$;dtW7I0KNB3 zs@Smgorj_R%dEZuz4tYughH?LV^_I+=&j^or0y#~|L;@2eC7pST!mf>gSra6_6J_l zx6NMbGxu6wrPq#`H-b!kNKp8y^;(~)*ZPdT_M=xz0gSue$I;gh-R1pu1HJHGTfaRA zs_yKb!iWT;=Q*D9u7s~CIjqWSw!^m_sNy_co)c9osuE+L##e=eXuZ*=wvm<)Spx4}R! z;NCs7?_lLBP|~i5l$OYOo`Qv0OOn$df|CugA7sx-**+qKU+4(fl)>KoeLO9K}Q z(U`@@uJZm@?zxpj&Ru~1?)kg5`*?9xXEy5%Q}HxcJ_IEfF{K&3nk8op=<`%@%^#kD z`JlR()iDM5^3@HQX9@cM1N0vp*x(3qo9b)K zX1$@AUgyfsq2!xPX-2QUL(Ul5{(Y+WWS@!eLjAW`eFJ)R3sFL$cloia{7K!nCt=)f zCr9sgJ-qxI!@Tt}X4BokZFn!|O1MkjUooW_z4t0|2GD!2rHUP&`{o)jdL^rGK<~Yp zD521A__3?JLu3mXYu!5m`kgZ!C+z{nk7qXBV?cQVSN;r?Co-i4eTtkhpr>6VfBCn! zK{$F7tiBOF?RMaV_Bed(Dqoa-neLp)Ws1BIj^Gf5c7CO}&U0S0Hj` zgAyWVE-1GdIf^-QluG2xAJGeQ5~W(?D5l6!jFIzc{^)NA`Xr!F9sl&BV>u?z1*}Ef zi$HlHSCSWylnyRtN^{$LE+uE6?LG8D^JiUm_ak8R5?0^P_8!`JP>8l0K1O_h%)?}~ za-R(7mxr&J1kJ3DWH#NWa~tX?t~?8rqnXl-UfqS90rcuvs`&2aksF}?POQEGy}Bz= zLZRLGv8&uw96=bRvk^T11`4Y`U)i8}qsHYET}_los?IOI@Kmnyd5#;N%GGVob5!#@ zN8L;>XU4R@xWQAkd5-!IQW6Tiz>i(!^*?`nIL7UUr*ikkLwA1+o|V;gtVP_9gN<9c z66WXX?M!KDd-MEWy^9ph|NZ0V4KZ46ey`q1N`mM0{Mc1~?SfxZzNhcg@oyaN*EYUC z8G^(^J3T(}Pj16Qdp=ff0VO38q%@=VTt~q|(VM7Z&9&isK>0hOMD-1k*7Pjp`!67JzC7ZEk(Y6s-ezXg{S7Evxbi=s^fRRyy|-Y_l( zS$zX~ZPDgjCy(-DS2^DK*v%Ms!ybTs{KSXOhgUZqmDz0AkK6G0 zxN-t0hcTrYy=QxJ2GDy(Q^m?(JODEV&j?oEfZj8bD8b1ne(Wm$x_$qX2>OEo{lpzE zeext;T;Y+^Fcp+MavBZ=rZ zy;5oWO^I9n1@)`7y<%#6#n|?vx12!HZvymBANc3T_U1OdGui!Y_&X?%RPmH{zu|}Fqgj1pXxC+RpC{Uxh!XnW-XqJ%;h@?%%|p3Q3r=QNJu=o@!9 zanfCY$@3bs*|;;e;dz}a$AI!prZl7XyhF|ade8e*ar>9&JO=gOV)YH^JzIzp3cbsZ zUFFlYYsqNU*aGM$%sl-D7{9#-F`JDcZo_*pSHh#ZcM?;Y(R-(nGl1TE7*)Le;Ei8^ z(J8FH0ljxRQ9_|Z__3>ehx3a7#@%=bpg;8bUGuA;co(zTcmycBxe~@oZ=NYF=u6~` z0ev4;9CP4yhS_X^)ic7nD8_+8>aG?;5S$ym&-*EXsZxHmofPU$73wD8D zL==_TYy^5xd|Y`N7#_xy7WC%PN*PUx=8sx_Iy{3a)kZ62Bq<3_M)6};Ir8d5TM7CL z0sTeln%0kbanJD#Q{!q-p1_r5P@c$?X7rvEIRkC)Swt1fuH5-RsGnf<4Q=nyi4qE> z`7!#fy!pM;2>KfU{f*nrb)5&ro0-i%IKs2^nY zjp)Nf356p3*j2tfcl#KE{sBP$;5=s-o_Lg*%x2@m+=g-_R|4ZHvzgM2UNMhW%CV$q z{`RxB`x=Z^8?BUiq$CuY&yQW@O8NzlIl=wCeHi!(px#npO-sqqz1y1DWVP&P89 z8NKQyXQ1s>+C}n5p0fs?i&YP+Z)kg!b~|uFdmKJS-{+k7z$$|NV?h7O=8j*%z~rUF z1!h&aBrhE^u=3yBu$K-&NNGmz{m_Ko`zcjiG-Y%V>VHrLz4s%cghC(lV^=xwMg!rT zCO1dl)Nt{L4e)+Wq1^^yYErljh4vk+912R>6|10E%)k67d5Zqh!t-5FzuGT9N*6~< z-iRpO{Mc3gVB=}mVBAf+0s1j#-q^8}+w`77isLdr1Ldh)xfdu;XG%-kpGD3<sBT$ux9A5)sqtINq5K(Epu%a@nF1K*ga%UFE_ zdX)w)IH56%k6qW2tRg}-*rE-j-bCB(3dB^I1S$4djLKBkmv#Qzu|^G+eGg% zqxV$MM{aV}LH%mzJtp)XBl`6HuaJ38(?&r5=!m-~z;x0JasLE&e(zFn%?4$)D>K5V5f7L z(i}Oe`N>edm=w)lchM2eV6@tkp?U!+3570XPAUr`OOBnZEqs`h>nS94T+K(W?<@SL zX~9P2RddO)z{a`^Si4vxF41bCQb!3b`Y?6+4=Zo8ilpMp+x@ffUjx97n3ry%G zmK3rXx_FG82pmlEA)Hd|_Jz9v^ zL6-D(RFWigB(>xsw7ip~jKM3Jip{}}G+HHu{%;9%MD*5_9!LeyhMwVA*pGL*OZ!nS zns_wkN4tK8*|N75w9K9NL+7Ule)519J2v$v2U-B74p;!i(Dl|VrVR_91}u0IEp&R} zx}o&<0SImdw<<>H!;5x&xOe*Sf*{{gEby8$Uq2Q&f_x`qu^fw2kgzOoC3gs~)bX8% z1&$Bjud%oe3%oMNw;qcJvG^+%&tidN#`iWBcoCHEODz72#LxyThGDTI7C0n_;ssSh zTd}}FG4v2DW?^wG78({f;>iSjD26)pY%DIs0xypodMy@fu=oQOc+;w(k6`f>7B67& z1{UvQu@ws($-`V&c(E9X#co*O$Q|a#0!QgE+);)dfyG=bj>jU6MGgzxl*4|3#V@f~ zjm1@1T#v=ANN_IS&dBA!;lrLpg_^2ycxC7=Ip*02v8o(S)^_rscc4CICyK#^mPut7 zQX*bRSC}qLWeRk(7!cBvQNa#WVgQEPEVHNX>ALQzx$bnP(=b}GPHShiB3y1k??%H< zFBnzpz^#z?lBf*V0(=`raPAxu0Mu++DFHzW>Ovx zX7o6ipSufr_I92@KC^e8MNW}YD~LQ7E67uh^Sr;`G?~1Eb;7fN8=ZFIG1_?%78hf& z3JW}kaIVJUGAw?D#T8h*hXir%+=M1v^|U>Q4C%wetfR5yXk-~yNI*6b>8`9%_bzQj zO+5@ZcW=RQfN|Y?DVNI@aY77@CD=lF(Qy8j$|8L{!dQ3rd%bZyEaMayq;V z9J}F+0wjkIErFMuqmiqULIdSFQM&r4;8ZVoQGL5(CrGhXoYGGRpdOl(315SgWalE~ z>BGxxt%R4IJACa9lsIE5UFTkyMba~r9Bu6=E6{|+dI_ce%5)beRJ-fMsZdFjld*2SQt2X z7&!VIfLlgVLFA9#-URAQ6Ui$9mo_= cEXxg0a`^vOqt%Ro?Yx2dh?YEeeAD;;0H + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/appttude/h_mal/days_left/AddItems/AddShiftActivity.java b/app/src/main/java/com/appttude/h_mal/days_left/AddItems/AddShiftActivity.java index cf17c57..8628a72 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/AddItems/AddShiftActivity.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/AddItems/AddShiftActivity.java @@ -152,7 +152,6 @@ public class AddShiftActivity extends AppCompatActivity { if (ShiftID != null){ DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(auth.getUid()).child(SHIFT_FIREBASE).child(ShiftID); - reference.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { diff --git a/app/src/main/java/com/appttude/h_mal/days_left/CustomValueEventListener.java b/app/src/main/java/com/appttude/h_mal/days_left/CustomValueEventListener.java new file mode 100644 index 0000000..d533dbe --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/days_left/CustomValueEventListener.java @@ -0,0 +1,58 @@ +package com.appttude.h_mal.days_left; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import android.view.View; +import android.widget.ProgressBar; +import android.widget.Toast; + +import com.appttude.h_mal.days_left.Objects.ShiftObject; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseError; +import com.google.firebase.database.ValueEventListener; + +import java.util.HashMap; +import java.util.Map; + +import static com.appttude.h_mal.days_left.MainActivity.shiftObjectArrayList; +import static com.appttude.h_mal.days_left.MainActivity.shiftsMap; + +public class CustomValueEventListener implements ValueEventListener { + + private Context context; + private FragmentManager fragmentManager; + private ProgressBar progressBar; + + public CustomValueEventListener(Context context, FragmentManager fragmentManager, ProgressBar progressBar) { + this.context = context; + this.fragmentManager = fragmentManager; + this.progressBar = progressBar; + + progressBar.setVisibility(View.VISIBLE); + } + + @Override + public void onDataChange(@NonNull DataSnapshot dataSnapshot) { + + for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { + shiftObjectArrayList.add(postSnapshot.getValue(ShiftObject.class)); + shiftsMap.put(postSnapshot.getKey(),postSnapshot.getValue(ShiftObject.class)); + } + + if (shiftObjectArrayList.size() > 0){ + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + fragmentTransaction.replace(R.id.container,new FragmentHome()).commit(); + }else { + Toast.makeText(context, "List Empty", Toast.LENGTH_SHORT).show(); + } + + progressBar.setVisibility(View.GONE); + } + + @Override + public void onCancelled(@NonNull DatabaseError databaseError) { + progressBar.setVisibility(View.GONE); + } +} diff --git a/app/src/main/java/com/appttude/h_mal/days_left/FireAdapter.java b/app/src/main/java/com/appttude/h_mal/days_left/FireAdapter.java index 763eb32..c52271f 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/FireAdapter.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/FireAdapter.java @@ -3,6 +3,7 @@ package com.appttude.h_mal.days_left; import android.app.Activity; import android.util.Log; import android.view.View; +import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -11,6 +12,7 @@ import com.appttude.h_mal.days_left.Objects.ShiftObject; import com.appttude.h_mal.days_left.Objects.TaskObject; import com.appttude.h_mal.days_left.Objects.TimeObject; import com.firebase.ui.database.FirebaseListAdapter; +import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.Query; @@ -22,7 +24,7 @@ class FireAdapter extends FirebaseListAdapter { String TAG = "FireAdapter"; - Query ref; + List shiftObjects; /** * @param activity The activity containing the ListView @@ -36,8 +38,7 @@ class FireAdapter extends FirebaseListAdapter { */ public FireAdapter(Activity activity, Class modelClass, int modelLayout, Query ref) { super(activity, modelClass, modelLayout, ref); - this.ref = ref; - + shiftObjects = new ArrayList<>(); } @Override @@ -97,6 +98,14 @@ class FireAdapter extends FirebaseListAdapter { return getRef(i).getKey(); } + @Override + protected ShiftObject parseSnapshot(DataSnapshot snapshot) { + shiftObjects.add(snapshot.getValue(ShiftObject.class)); + return super.parseSnapshot(snapshot); + } + + + private String getBreakTimeString(int breakMins){ float hoursFloat = breakMins/60; diff --git a/app/src/main/java/com/appttude/h_mal/days_left/FragmentHome.java b/app/src/main/java/com/appttude/h_mal/days_left/FragmentHome.java index 81ee1fe..af4fd92 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/FragmentHome.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/FragmentHome.java @@ -13,10 +13,13 @@ import com.appttude.h_mal.days_left.Objects.ShiftObject; import com.appttude.h_mal.days_left.R; import com.google.firebase.database.DatabaseReference; +import java.util.ArrayList; + import static com.appttude.h_mal.days_left.Global.FirebaseClass.SHIFT_FIREBASE; import static com.appttude.h_mal.days_left.Global.FirebaseClass.USER_FIREBASE; import static com.appttude.h_mal.days_left.Global.FirebaseClass.auth; import static com.appttude.h_mal.days_left.Global.FirebaseClass.mDatabase; +import static com.appttude.h_mal.days_left.MainActivity.shiftsMap; public class FragmentHome extends Fragment { @@ -37,13 +40,16 @@ public class FragmentHome extends Fragment { RecyclerView recyclerView = view.findViewById(R.id.recycler); // recyclerView.setAdapter(new RecyclerViewAdapter(getContext())); - DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(auth.getUid()).child(SHIFT_FIREBASE); - reference.keepSynced(true); +// DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(auth.getUid()).child(SHIFT_FIREBASE); +// reference.keepSynced(true); - recyclerView.setAdapter(new FireRecyclerAdapter(ShiftObject.class,R.layout.item_one,RecyclerView.ViewHolder.class,reference,getContext())); +// recyclerView.setAdapter(new FireRecyclerAdapter(ShiftObject.class,R.layout.item_one,RecyclerView.ViewHolder.class,reference,getContext())); + + RecyclerViewAdapter adapter = new RecyclerViewAdapter(getContext(),new ArrayList<>(shiftsMap.values())); + recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); -// recyclerView.setHasFixedSize(true); + recyclerView.setHasFixedSize(true); return view; } diff --git a/app/src/main/java/com/appttude/h_mal/days_left/FragmentList.java b/app/src/main/java/com/appttude/h_mal/days_left/FragmentList.java index 85e1637..5d46972 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/FragmentList.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/FragmentList.java @@ -110,6 +110,8 @@ public class FragmentList extends Fragment { final String[] grpname = {"Name","Date Added","Date of shift"}; int checkedItem = -1; + + AlertDialog.Builder alt_bld = new AlertDialog.Builder(getContext()); alt_bld.setTitle("Sort by:"); alt_bld.setSingleChoiceItems(grpname, checkedItem, new DialogInterface @@ -117,13 +119,19 @@ public class FragmentList extends Fragment { public void onClick(DialogInterface dialog, final int item) { switch (item){ case 0: - adapter = new FireAdapter(getActivity(), ShiftObject.class, R.layout.list_item, reference.orderByChild("abnObject/companyName")); + Query q1 = reference.orderByChild("abnObject/companyName") + .equalTo("GREEN CLOUD NURSERY"); + + q1.orderByChild("shiftDate") + .equalTo("2019-04-12"); + + adapter = new FireAdapter(getActivity(), ShiftObject.class, R.layout.list_item, q1); break; case 1: - adapter = new FireAdapter(getActivity(), ShiftObject.class, R.layout.list_item, reference.orderByChild("shiftDate")); + adapter = new FireAdapter(getActivity(), ShiftObject.class, R.layout.list_item, reference.orderByChild("dateTimeAdded")); break; case 2: - adapter = new FireAdapter(getActivity(), ShiftObject.class, R.layout.list_item, reference.orderByChild("dateTimeAdded")); + adapter = new FireAdapter(getActivity(), ShiftObject.class, R.layout.list_item, reference.orderByChild("shiftDate")); break; default: diff --git a/app/src/main/java/com/appttude/h_mal/days_left/FragmentTools.java b/app/src/main/java/com/appttude/h_mal/days_left/FragmentTools.java index d4b5e57..929d0de 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/FragmentTools.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/FragmentTools.java @@ -90,8 +90,6 @@ public class FragmentTools extends Fragment { shiftObjectArrayList = new ArrayList<>(); mFunctions = FirebaseFunctions.getInstance(); - - } @Override diff --git a/app/src/main/java/com/appttude/h_mal/days_left/Global/DateDialog.java b/app/src/main/java/com/appttude/h_mal/days_left/Global/DateDialog.java index cc1286b..03212ba 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/Global/DateDialog.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/Global/DateDialog.java @@ -114,10 +114,9 @@ public class DateDialog extends DatePickerDialog { mMonth = month + 1; mDay = dayOfMonth; - editText.setText(String.format("%02d", mDay) + "/" + - String.format("%02d", (mMonth)) +"/" + - mYear - ); + String date = mYear + "-" + String.format("%02d", mMonth) + "-" + String.format("%02d", mDay); + + editText.setText(date); } }; diff --git a/app/src/main/java/com/appttude/h_mal/days_left/MainActivity.java b/app/src/main/java/com/appttude/h_mal/days_left/MainActivity.java index 68b0786..df37632 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/MainActivity.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/MainActivity.java @@ -51,7 +51,9 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -71,26 +73,28 @@ public class MainActivity extends AppCompatActivity { private DatabaseReference reference; public static List shiftObjectArrayList; + public static Map shiftsMap = new HashMap<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawer_main); + shiftObjectArrayList = new ArrayList<>(); + toolbar = (Toolbar) findViewById(R.id.toolbar); + progressBar = (ProgressBar) findViewById(R.id.progressBar2); + FloatingActionButton fab = findViewById(R.id.fab); + setSupportActionBar(toolbar); - FirebaseDatabase.getInstance().setPersistenceEnabled(true); - -// reference.addListenerForSingleValueEvent(valueEventListener); - fragmentManager = getSupportFragmentManager(); + fragmentManager.addOnBackStackChangedListener(backStackChangedListener); + FirebaseDatabase.getInstance().setPersistenceEnabled(true); + reference = mDatabase.child(USER_FIREBASE).child(auth.getUid()).child(SHIFT_FIREBASE); + reference.addListenerForSingleValueEvent(new CustomValueEventListener(this,fragmentManager,progressBar)); - progressBar = (ProgressBar) findViewById(R.id.progressBar2); - progressBar.setVisibility(View.GONE); - - FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -99,8 +103,6 @@ public class MainActivity extends AppCompatActivity { } }); - fragmentManager.addOnBackStackChangedListener(backStackChangedListener); - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); @@ -127,9 +129,6 @@ public class MainActivity extends AppCompatActivity { } }); - FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - fragmentTransaction.replace(R.id.container,new FragmentHome()).commit(); - setupDrawer(); parseXmlLayout(); @@ -138,28 +137,6 @@ public class MainActivity extends AppCompatActivity { navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); } - ValueEventListener valueEventListener = new ValueEventListener() { - @Override - public void onDataChange(@NonNull final DataSnapshot dataSnapshot) { - for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { - shiftObjectArrayList.add(postSnapshot.getValue(ShiftObject.class)); - } - - if (shiftObjectArrayList.size() > 0){ -// FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); -// fragmentTransaction.replace(R.id.container,new FragmentHome()).commit(); - }else { - Toast.makeText(MainActivity.this, "List Empty", Toast.LENGTH_SHORT).show(); - } - - } - - @Override - public void onCancelled(@NonNull DatabaseError databaseError) { - Toast.makeText(MainActivity.this, "Cancelled", Toast.LENGTH_SHORT).show(); - } - }; - private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() { diff --git a/app/src/main/java/com/appttude/h_mal/days_left/MapListViewAdapter.java b/app/src/main/java/com/appttude/h_mal/days_left/MapListViewAdapter.java new file mode 100644 index 0000000..0ff7c22 --- /dev/null +++ b/app/src/main/java/com/appttude/h_mal/days_left/MapListViewAdapter.java @@ -0,0 +1,36 @@ +package com.appttude.h_mal.days_left; + +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.Filter; +import android.widget.Filterable; + +public class MapListViewAdapter extends BaseAdapter implements Filterable { + + + @Override + public int getCount() { + return 0; + } + + @Override + public Object getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return 0; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + return null; + } + + @Override + public Filter getFilter() { + return null; + } +} diff --git a/app/src/main/java/com/appttude/h_mal/days_left/Objects/ShiftObject.java b/app/src/main/java/com/appttude/h_mal/days_left/Objects/ShiftObject.java index 626c09f..4369ea8 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/Objects/ShiftObject.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/Objects/ShiftObject.java @@ -9,6 +9,7 @@ import com.appttude.h_mal.days_left.Login.LoginFragment; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Comparator; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; @@ -76,4 +77,5 @@ public class ShiftObject { this.dateTimeAdded = dt1.format(date); } + } diff --git a/app/src/main/java/com/appttude/h_mal/days_left/RecyclerViewAdapter.java b/app/src/main/java/com/appttude/h_mal/days_left/RecyclerViewAdapter.java index ff95592..1242af0 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/RecyclerViewAdapter.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/RecyclerViewAdapter.java @@ -13,210 +13,308 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import com.appttude.h_mal.days_left.Objects.ShiftObject; import com.appttude.h_mal.days_left.arc.ArcAnimation; import com.appttude.h_mal.days_left.bar.BarAnimation; import com.appttude.h_mal.days_left.arc.CircleView; import com.appttude.h_mal.days_left.bar.BarView; +import java.util.HashSet; +import java.util.List; + public class RecyclerViewAdapter extends RecyclerView.Adapter { -// -// String TAG = "something"; -// + + String TAG = "something"; + private Context context; -// private int dx; -// - public RecyclerViewAdapter(Context context) { + private List shiftObjectList; + private int uniqueEntries; + private int[] typeCount; + + public RecyclerViewAdapter(Context context, List shiftObjectList) { this.context = context; + this.shiftObjectList = shiftObjectList; + uniqueEntries = countDistinct(); + typeCount = countShiftType(); } -// -// class ItemOne extends RecyclerView.ViewHolder { -// -// CircleView arc; -// TextView days; -// -// public ItemOne(View itemView){ -// super(itemView); -// arc = itemView.findViewById(R.id.arc_view); -// days = itemView.findViewById(R.id.days_completed); -// } -// } -// -// class ItemTwo extends RecyclerView.ViewHolder { -// -// BarView barView; -// LinearLayout linearLayout; -//// LinearLayout textholder; -//// LinearLayout bottomTextholder; -// -// public ItemTwo(View itemView){ -// super(itemView); -// -// barView = itemView.findViewById(R.id.bar); -// linearLayout = itemView.findViewById(R.id.lin); -//// textholder = itemView.findViewById(R.id.text_holder); -//// bottomTextholder = itemView.findViewById(R.id.bottom_text_holder); -// -// } -// } -// -// class ItemThree extends RecyclerView.ViewHolder { -// -// private TextView cardTitle; -// private ImageView cardIcon; -// private TextView units; -// private TextView totalEarned; -// private LinearLayout textholderTop; -// private LinearLayout textholderBottom; -// -// public ItemThree(View itemView){ -// super(itemView); -// -// cardTitle = itemView.findViewById(R.id.card_title); -// cardIcon = itemView.findViewById(R.id.card_icon); -// units = itemView.findViewById(R.id.units); -// totalEarned = itemView.findViewById(R.id.total_earned); -// textholderTop = itemView.findViewById(R.id.text_holder); -// textholderBottom = itemView.findViewById(R.id.text_holder_two); -// -// } -// } -// + + class ItemOne extends RecyclerView.ViewHolder { + + CircleView arc; + TextView days; + + public ItemOne(View itemView){ + super(itemView); + arc = itemView.findViewById(R.id.arc_view); + days = itemView.findViewById(R.id.days_completed); + } + } + + class ItemTwo extends RecyclerView.ViewHolder { + + BarView barView; + LinearLayout linearLayout; + TextView pcText; + TextView hrText; +// LinearLayout textholder; +// LinearLayout bottomTextholder; + + public ItemTwo(View itemView){ + super(itemView); + + barView = itemView.findViewById(R.id.bar); + linearLayout = itemView.findViewById(R.id.lin); + pcText = itemView.findViewById(R.id.pc_amount_text); + hrText = itemView.findViewById(R.id.hr_amount_text); +// textholder = itemView.findViewById(R.id.text_holder); +// bottomTextholder = itemView.findViewById(R.id.bottom_text_holder); + + } + } + + class ItemThree extends RecyclerView.ViewHolder { + + private TextView cardTitle; + private ImageView cardIcon; + private TextView units; + private TextView totalEarned; + private LinearLayout textholderTop; + private LinearLayout textholderBottom; + + public ItemThree(View itemView){ + super(itemView); + + cardTitle = itemView.findViewById(R.id.card_title); + cardIcon = itemView.findViewById(R.id.card_icon); + units = itemView.findViewById(R.id.units); + totalEarned = itemView.findViewById(R.id.total_earned); + textholderTop = itemView.findViewById(R.id.text_holder); + textholderBottom = itemView.findViewById(R.id.text_holder_two); + + } + } + @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { -// switch (i) { -// case 1: -// final View itemOne = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_one, viewGroup, false); -// return new ItemOne(itemOne); -// case 2: -// final View itemTwo = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_two, viewGroup, false); -// return new ItemTwo(itemTwo); -// case 3: -// final View itemThree = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_three, viewGroup, false); -// return new ItemThree(itemThree); -// } -// + switch (i) { + case 1: + final View itemOne = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_one, viewGroup, false); + return new ItemOne(itemOne); + case 2: + final View itemTwo = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_two, viewGroup, false); + return new ItemTwo(itemTwo); + case 3: + final View itemThree = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_three, viewGroup, false); + return new ItemThree(itemThree); + } + return null; } -// + @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) { -// -// switch (holder.getItemViewType()) { -// case 1: -// final ItemOne viewHolderCurrent = (ItemOne) holder; -// -// CircleView arcView = viewHolderCurrent.arc; -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { -// arcView.setPaintColor(context.getColor(R.color.two)); -// } -// -// int days = 76; -// -// int complete = (360 * days)/88; -// -// viewHolderCurrent.days.setText(String.valueOf(days)); -// -// ArcAnimation animation = new ArcAnimation(arcView, complete); -// animation.setDuration(600); -// arcView.startAnimation(animation); -// -// break; -// case 2: -// final ItemTwo viewTwo = (ItemTwo) holder; -// -// final BarView barView = viewTwo.barView; -// final LinearLayout linearLayout = viewTwo.linearLayout; -// -// barView.setCover(0.56f); -// -// barView.setColourOne(context.getResources().getColor(R.color.four)); -// barView.setColourTwo(context.getResources().getColor(R.color.three)); -// -//// viewTwo.textholder.setPadding(60,0,60,0); -//// viewTwo.bottomTextholder.setPadding(60,0,60,0); -// -// linearLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { -// @Override -// public void onGlobalLayout() { -// Log.i(TAG, "onGlobalLayout: " + linearLayout.getWidth()); -// -// BarAnimation barAnimation = new BarAnimation(barView, linearLayout.getWidth(), 0); -// barAnimation.setDuration(600); -// barView.setAnimation(barAnimation); -// linearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); -// } -// }); -// -// break; -// -// case 3: -// final ItemThree viewCounting = (ItemThree) holder; -// -// TextView cardTitle = viewCounting.cardTitle; -// ImageView cardIcon = viewCounting.cardIcon; -// TextView units = viewCounting.units; -// TextView totalEarned = viewCounting.totalEarned; -// LinearLayout top = viewCounting.textholderTop; -// LinearLayout bottom = viewCounting.textholderBottom; -// -//// top.setPadding(60,0,60,0); -//// bottom.setPadding(60,0,60,0); -//// cardIcon.setPadding(0,0,10,0); -// -// if (i == 2){ -// cardTitle.setText("Hourly"); -// cardIcon.setImageResource(R.drawable.clock_icon); -// units.setText("296" + "Hours"); -// totalEarned.setText("$" + "907.53"); -// } -// if (i == 3){ -// cardTitle.setText("Piece"); -// cardTitle.setTextColor(context.getResources().getColor(R.color.three)); -// cardIcon.setImageResource(R.drawable.piece); -// cardIcon.setRotation(270); -// units.setText("180" + "Pcs"); -// totalEarned.setText("$" + "67.53"); -// } -// if (i == 4){ -// cardTitle.setVisibility(View.GONE); -// cardIcon.setVisibility(View.GONE); -// -// totalEarned.setText("$" + "974.53"); -// -// viewCounting.textholderTop.setVisibility(View.GONE); -// } -// } + + switch (holder.getItemViewType()) { + case 1: + final ItemOne viewHolderCurrent = (ItemOne) holder; + + CircleView arcView = viewHolderCurrent.arc; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + arcView.setPaintColor(context.getColor(R.color.two)); + } + + int days = uniqueEntries; + + int complete = (360 * days)/88; + + viewHolderCurrent.days.setText(String.valueOf(days)); + + ArcAnimation animation = new ArcAnimation(arcView, complete); + animation.setDuration(600); + arcView.startAnimation(animation); + + break; + case 2: + final ItemTwo viewTwo = (ItemTwo) holder; + + final BarView barView = viewTwo.barView; + final LinearLayout linearLayout = viewTwo.linearLayout; + + float cover = (float) typeCount[1]/shiftObjectList.size(); + + barView.setCover(cover); + + barView.setColourOne(context.getResources().getColor(R.color.four)); + barView.setColourTwo(context.getResources().getColor(R.color.three)); + + viewTwo.pcText.setText(String.valueOf(typeCount[1])); + viewTwo.hrText.setText(String.valueOf(typeCount[0])); + +// viewTwo.textholder.setPadding(60,0,60,0); +// viewTwo.bottomTextholder.setPadding(60,0,60,0); + + linearLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + Log.i(TAG, "onGlobalLayout: " + linearLayout.getWidth()); + + BarAnimation barAnimation = new BarAnimation(barView, linearLayout.getWidth(), 0); + barAnimation.setDuration(600); + barView.setAnimation(barAnimation); + linearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } + }); + + break; + + case 3: + final ItemThree viewCounting = (ItemThree) holder; + + TextView cardTitle = viewCounting.cardTitle; + ImageView cardIcon = viewCounting.cardIcon; + TextView units = viewCounting.units; + TextView totalEarned = viewCounting.totalEarned; + LinearLayout top = viewCounting.textholderTop; + LinearLayout bottom = viewCounting.textholderBottom; + +// top.setPadding(60,0,60,0); +// bottom.setPadding(60,0,60,0); +// cardIcon.setPadding(0,0,10,0); + + if (i == 2){ + cardTitle.setText("Hourly"); + cardIcon.setImageResource(R.drawable.clock_icon); + String hours = String.format("%.2f", calculateHours()); + units.setText(hours + " Hours"); + + String total = String.format("%.2f", calculateAccumulatedPay(0)); + totalEarned.setText("$" + total); + } + if (i == 3){ + cardTitle.setText("Piece"); + cardTitle.setTextColor(context.getResources().getColor(R.color.three)); + cardIcon.setImageResource(R.drawable.piece); + cardIcon.setRotation(270); + String pieces = String.format("%.2f", calculateUnits()); + units.setText(pieces + " Units"); + String total = String.format("%.2f", calculateAccumulatedPay(1)); + totalEarned.setText("$" + total); + } + if (i == 4){ + cardTitle.setVisibility(View.GONE); + cardIcon.setVisibility(View.GONE); + + String total = String.format("%.2f", calculateAccumulatedPay(3)); + totalEarned.setText("$" + total); + + viewCounting.textholderTop.setVisibility(View.GONE); + } + } } -// + @Override public int getItemCount() { return 5; } -// -// @Override -// public int getItemViewType(int position) { -// int type = 0; -// -// switch (position){ -// case 0: -// type = 1; -// break; -// case 1: -// type = 2; -// break; -// case 2: -// type = 3; -// break; -// case 3: -// type = 3; -// break; -// case 4: -// type = 3; -// break; -// } -// -// return type; -// } + + @Override + public int getItemViewType(int position) { + int type = 0; + + switch (position){ + case 0: + type = 1; + break; + case 1: + type = 2; + break; + case 2: + type = 3; + break; + case 3: + type = 3; + break; + case 4: + type = 3; + break; + } + + return type; + } + + private int countDistinct() { + HashSet hs = new HashSet<>(); + + for(int i = 0; i < shiftObjectList.size(); i++) { + + hs.add(shiftObjectList.get(i).getShiftDate()); + } + + return hs.size(); + } + + private int[] countShiftType(){ + int i = 0; + int j = 0; + + for (ShiftObject shiftObject : shiftObjectList){ + if (shiftObject.getTaskObject().getWorkType().equals("Hourly")){ + i++; + }else { + j++; + } + } + + return new int[]{i,j}; + } + + private float calculateHours(){ + float hours = 0; + for (ShiftObject shiftObject : shiftObjectList){ + if (shiftObject.getTaskObject().getWorkType().equals("Hourly")){ + hours = hours + shiftObject.getTimeObject().getHours() - shiftObject.getTimeObject().getBreakEpoch(); + } + } + + return hours; + } + + private float calculateUnits(){ + float units = 0; + for (ShiftObject shiftObject : shiftObjectList){ + if (shiftObject.getTaskObject().getWorkType().equals("Piece Rate")){ + units = units + shiftObject.getUnitsCount(); + } + } + + return units; + } + + private float calculateAccumulatedPay(int type){ + float pay = 0; + + for (ShiftObject shiftObject : shiftObjectList){ + if (type == 0){ + if (shiftObject.getTaskObject().getWorkType().equals("Hourly")){ + pay = pay + (shiftObject.getTaskObject().getRate() * + (shiftObject.getTimeObject().getHours() - shiftObject.getTimeObject().getBreakEpoch())); + } + }else if (type == 1){ + if (shiftObject.getTaskObject().getWorkType().equals("Piece Rate")){ + pay = pay + (shiftObject.getTaskObject().getRate() * shiftObject.getUnitsCount()); + } + }else { + if (shiftObject.getTaskObject().getWorkType().equals("Hourly")){ + pay = pay + (shiftObject.getTaskObject().getRate() * + (shiftObject.getTimeObject().getHours() - shiftObject.getTimeObject().getBreakEpoch())); + }else { + pay = pay + (shiftObject.getTaskObject().getRate() * shiftObject.getUnitsCount()); + } + } + } + + return pay; + } } diff --git a/app/src/main/java/com/appttude/h_mal/days_left/ShiftListViewAdapter.java b/app/src/main/java/com/appttude/h_mal/days_left/ShiftListViewAdapter.java index 0cc4be8..887b615 100644 --- a/app/src/main/java/com/appttude/h_mal/days_left/ShiftListViewAdapter.java +++ b/app/src/main/java/com/appttude/h_mal/days_left/ShiftListViewAdapter.java @@ -7,9 +7,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.Filter; import android.widget.LinearLayout; import android.widget.TextView; +import java.util.ArrayList; import java.util.List; import com.appttude.h_mal.days_left.Objects.ShiftObject; @@ -108,4 +110,37 @@ public class ShiftListViewAdapter extends ArrayAdapter { return s; } + + private class ValueFilter extends Filter { + + @Override + protected FilterResults performFiltering(CharSequence constraint) { + FilterResults results = new FilterResults(); + +// if (constraint != null && constraint.length() > 0) { +// ArrayList filterList = new ArrayList<>(); +// for (int i = 0; i < mStringFilterList.size(); i++) { +// if ((mStringFilterList.get(i).getBabyname().toUpperCase()) +// .contains(constraint.toString().toUpperCase())) { +// BabyDetailsData babydata = new BabyDetailsData(mStringFilterList.get(i) +// .getBabyname(), mStringFilterList.get(i) +// .getBabypicture()); +// filterList.add(babydata); +// } +// } +// results.count = filterList.size(); +// results.values = filterList; +// } else { +// results.count = mStringFilterList.size(); +// results.values = mStringFilterList; +// } + return results; + } + @Override + protected void publishResults(CharSequence constraint, + FilterResults results) { +// babylist = (ArrayList) results.values; + notifyDataSetChanged(); + } + } } diff --git a/app/src/main/res/layout/item_two.xml b/app/src/main/res/layout/item_two.xml index 83ebbf7..42a6425 100644 --- a/app/src/main/res/layout/item_two.xml +++ b/app/src/main/res/layout/item_two.xml @@ -87,6 +87,7 @@ android:text="Piece Rate" />