package Ġcom . ton ye co lee lection . android . ui . main . fragments . v oter data ĊĊ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġcom . ton ye co lee lection . android . R Ċ import Ġcom . ton ye co lee lection . android . di . DI Constants Ċ import Ġcom . ton ye co lee lection . android . model . p vc . P VC Data Ċ import Ġcom . ton ye co lee lection . android . ui . adapters . base . Single Layout Adapter Ċ import Ġcom . ton ye co lee lection . android . ui . base . Base MV VM Fragment Ċ import Ġcom . ton ye co lee lection . android . ui . filters . Filters Activity Ċ import Ġcom . ton ye co lee lection . android . utils . dp To Px Ċ import Ġcom . ton ye co lee lection . android . views . decorators . Spacing Item Decoration Ċ import Ġdagger . android . support . Android Support Injection Ċ import Ġkotlinx . android . synt hetic . main . fragment _ v oter _ data .* Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Named ĊĊ Ċ class ĠV oter Data Fragment Ġ: ĠBase MV VM Fragment < V oter Data ViewModel >() Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġlayout Res ID : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . fragment _ v oter _ data ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠSingle Layout Adapter < P VC Data > ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ field :[ Named ( DI Constants . DATA _ SHARE _ MODULE . SELECTED _ AGE _ GROUP S _ LIST )] ĊĠĠĠ Ġlateinit Ġvar Ġselected Age Groups : ĠMutable List < String > ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ field :[ Named ( DI Constants . DATA _ SHARE _ MODULE . SELECTED _ PRO F ESS IONS _ LIST )] ĊĠĠĠ Ġlateinit Ġvar Ġselected Occup ations : ĠMutable List < String > ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ field :[ Named ( DI Constants . DATA _ SHARE _ MODULE . SELECTED _ WAR DS _ LIST )] ĊĠĠĠ Ġlateinit Ġvar Ġselected W ards : ĠMutable List < String > ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ field :[ Named ( DI Constants . DATA _ SHARE _ MODULE . SELECTED _ LG AS _ LIST )] ĊĠĠĠ Ġlateinit Ġvar Ġselected LG As : ĠMutable List < String > ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () Ċ // ĠĠĠĠĠĠĠ Ġselected Age Groups . clear () Ċ // ĠĠĠĠĠĠĠ Ġselected Occup ations . clear () Ċ // ĠĠĠĠĠĠĠ Ġselected W ards . clear () Ċ // ĠĠĠĠĠĠĠ Ġselected LG As . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġoverride Ġfun Ġinject ViewModel ( viewModel : ĠV oter Data ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . inject ViewModel ( viewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinject Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . inject Dependencies () ĊĠĠĠĠĠĠĠ ĠAndroid Support Injection . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . filter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilters Activity . start For Result ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġstuff ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġvot ers _ rv . addItem Decoration ( Spacing Item Decoration ( context !!. dp To Px ( 1 6 ), Ġcontext !!. dp To Px ( 1 6 ), Ġfalse )) ĊĠĠĠĠĠĠĠ Ġvot ers _ rv . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġvot ers _ rv . adapter Ġ= Ġadapter ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġname : ĠString ? Ġ= Ġarguments ?. getString ( NAME ) ĊĠĠĠĠĠĠĠ Ġvar Ġmode : ĠInt ? Ġ= Ġarguments ?. getInt ( MODE ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġnull Ġ&& Ġmode Ġ!= Ġnull Ġ&& Ġmode Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ViewModel (). setName And Mode ( name , Ġmode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected LG As . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected W ards . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( mode Ġ== Ġ 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected LG As . add ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected W ards . add ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ViewModel (). run Query () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvot ers _ rv . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible ItemCount Ġ= Ġlayout Manager . child Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal ItemCount Ġ= Ġlayout Manager . item Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpast Visible Items Ġ= Ġlayout Manager . findFirst Visible Item Position () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( visible ItemCount Ġ+ Ġpast Visible Items Ġ>= Ġtotal ItemCount Ġ&& Ġ! get ViewModel (). fetch ing More ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ViewModel (). get More () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġswipe _ to _ refresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ViewModel (). reset Page () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . clear Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ViewModel (). run Query () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġhide Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . hide Loading () ĊĠĠĠĠĠĠĠ Ġswipe _ to _ refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠFilters Activity . FILTER _ TASK _ REQ _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . clear Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Map : ĠHashMap < String , ĠAny > Ġ= Ġdata !!. get Serializable Extra ( Filters Activity . FILTER _ TASK _ DATA ) Ġas ĠHashMap < String , ĠAny > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ViewModel (). query With Filters ( hash Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . p vc _ data _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= Ġthis :: class . java . canonical Name ĊĊĠĠĠĠĠĠĠ Ġval ĠMODE Ġ= Ġ" MODE " ĊĠĠĠĠĠĠĠ Ġval ĠNAME Ġ= Ġ" NAME " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( mode : ĠInt , Ġname : ĠString ?): ĠV oter Data Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . put Int ( MODE , Ġmode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . putString ( NAME , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠV oter Data Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġarguments ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV oter Data Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ