package Ġcom . ti ago hs . script _ reader . ui . adapters Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ti ago hs . entities . Category Ċ import Ġcom . ti ago hs . entities . Script Ċ import Ġcom . ti ago hs . entities . home .* Ċ import Ġcom . ti ago hs . helpers . enums . Gen res Enum Ċ import Ġcom . ti ago hs . helpers . enums . Home TypeEnum Ċ import Ġcom . ti ago hs . helpers . extensions .* Ċ import Ġcom . ti ago hs . helpers . tools . Space Offset Decoration Ċ import Ġcom . ti ago hs . script _ reader . R Ċ import Ġcom . ti ago hs . script _ reader . ui . adapters . base . Base Adapter Ċ import Ġcom . ti ago hs . script _ reader . ui . adapters . base . Base ViewHolder Ċ import Ġkotlinx . android . extensions . Layout Container Ċ import Ġkotlinx . android . synt hetic . main . adapter _ home _ categories _ cell . view .* Ċ import Ġkotlinx . android . synt hetic . main . adapter _ home _ genres _ cell . view .* Ċ import Ġkotlinx . android . synt hetic . main . adapter _ home _ list _ default _ cell . view .* Ċ import Ġkotlinx . android . synt hetic . main . adapter _ home _ list _ special _ cell . view .* Ċ Ċ class ĠHome Content Adapter ( ĊĠĠĠ Ġlist : ĠList < Home Cell >, ĊĠĠĠ Ġval Ġactivity : ĠFragment Activity Ċ ) Ġ: ĠBase Adapter < Home Cell , ĠBase ViewHolder < Home Cell >>( list ) Ġ{ ĊĊĠĠĠ Ġvar Ġon Genre Clicked : Ġ(( genre : ĠGen res Enum ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Category Clicked : Ġ(( category : ĠCategory ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Script Clicked : Ġ(( script : ĠScript ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res Id ( view Type : ĠInt ): ĠInt Ġ= Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHome TypeEnum . GEN RES . ordinal Ġ-> ĠR . layout . adapter _ home _ genres _ cell ĊĠĠĠĠĠĠĠ ĠHome TypeEnum . CATEG ORIES . ordinal Ġ-> ĠR . layout . adapter _ home _ categories _ cell ĊĠĠĠĠĠĠĠ ĠHome TypeEnum . LIST _ DEFAULT . ordinal Ġ-> ĠR . layout . adapter _ home _ list _ default _ cell ĊĠĠĠĠĠĠĠ ĠHome TypeEnum . LIST _ SPECIAL . ordinal Ġ-> ĠR . layout . adapter _ home _ list _ special _ cell ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . layout . adapter _ home _ empty _ cell ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( view Type : ĠInt , Ġview : ĠView ): ĠBase ViewHolder < Home Cell > Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHome TypeEnum . GEN RES . ordinal Ġ-> ĠGen res Home Content ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHome TypeEnum . CATEG ORIES . ordinal Ġ-> ĠCategory Home Content ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHome TypeEnum . LIST _ DEFAULT . ordinal Ġ-> ĠDefault List Home Content ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHome TypeEnum . LIST _ SPECIAL . ordinal Ġ-> ĠSpecial List Home Content ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġobject Ġ: ĠBase ViewHolder < Home Cell >( view ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ= Ġlist [ position ]. type . ordinal ĊĊĠĠĠ Ġinner Ġclass ĠGen res Home Content ViewHolder ( item View : ĠView ) Ġ: ĠBase ViewHolder < Home Cell >( item View ), ĊĠĠĠĠĠĠĠ ĠLayout Container Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Setup Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( item : ĠHome Cell , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . bind ( item , Ġposition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre Cell Ġ= Ġitem Ġas ? ĠGen re Cell Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Setup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . genres RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( item View . context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . genres RecyclerView . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpace Offset Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 . convert Int To Dp ( item View . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpace Offset Decoration . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . genres RecyclerView . adapter Ġ= ĠGen re Adapter ( genre Cell . genres ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Genre Clicked Ġ= Ġthis @ Home Content Adapter . on Genre Clicked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠCategory Home Content ViewHolder ( item View : ĠView ) Ġ: ĠBase ViewHolder < Home Cell >( item View ), ĊĠĠĠĠĠĠĠ ĠLayout Container Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Setup Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( item : ĠHome Cell , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . bind ( item , Ġposition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Cell Ġ= Ġitem Ġas ? ĠCategory Cell Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Setup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . categories RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( item View . context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . categories RecyclerView . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpace Offset Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 . convert Int To Dp ( item View . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpace Offset Decoration . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . categories RecyclerView . adapter Ġ= ĠCategory Adapter ( category Cell . list ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Category Clicked Ġ= Ġthis @ Home Content Adapter . on Category Clicked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠSpecial List Home Content ViewHolder ( item View : ĠView ) Ġ: ĠBase ViewHolder < Home Cell >( item View ), ĊĠĠĠĠĠĠĠ ĠLayout Container Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Setup Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( item : ĠHome Cell , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . bind ( item , Ġposition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspecial List Ġ= Ġitem Ġas ? ĠList Special Cell Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Setup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġspecial List . config ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List Title . set Resource TextColor ( config . textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List Subtitle . set Resource TextColor ( config . textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List Container . set Resource BackgroundColor ( config . backgroundColor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List Title . set Resource Text ( special List . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List Subtitle . set Resource Text ( special List . subtitle ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . image Special . set Resource Image Drawable ( config . image ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( item View . context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List RecyclerView . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpace Offset Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . get Screen Width () Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpace Offset Decoration . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . header View Clickable . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Category Clicked ?. invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCategory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠitemView . context . getResource String ( special List . title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġconfig . url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List RecyclerView . adapter Ġ= ĠScript Simple Adapter ( special List . list ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Script Clicked Ġ= Ġthis @ Home Content Adapter . on Script Clicked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Category Clicked Ġ= Ġthis @ Home Content Adapter . on Category Clicked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . scripts Special List RecyclerView . add On Scroll Listener ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġre cyclerView . adapter Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . item Count Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Visible Item Position Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( re cyclerView . layout Manager Ġas ? ĠLinearLayoutManager )?. find Last Comp let ely Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Visible Item Position Ġ!= ĠRecyclerView . NO _ POSITION Ġ&& Ġlast Visible Item Position Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . backgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Listener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( last Visible Item Position Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . backgroundColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 0 . 9 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Listener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠDefault List Home Content ViewHolder ( item View : ĠView ) Ġ: ĠBase ViewHolder < Home Cell >( item View ), ĊĠĠĠĠĠĠĠ ĠLayout Container Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Setup Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( item : ĠHome Cell , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . bind ( item , Ġposition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault List Ġ= Ġitem Ġas ? ĠList Default Cell Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Setup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . list Default Title . set Resource Text ( default List . title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . list Default RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( item View . context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . list Default RecyclerView . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpace Offset Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 . convert Int To Dp ( item View . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpace Offset Decoration . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . list Default RecyclerView . adapter Ġ= ĠScript Adapter ( default List . list , Ġorientation Ġ= ĠLinearLayoutManager . HORIZONTAL ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Category Clicked Ġ= Ġthis @ Home Content Adapter . on Category Clicked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Script Clicked Ġ= Ġthis @ Home Content Adapter . on Script Clicked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Setup Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }