package Ġnet . x black y . anime x stream . ui . main . fav our ites Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . constraint layout . motion . widget . Motion Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġnet . x black y . anime x stream . R Ċ import Ġnet . x black y . anime x stream . databinding . Fragment F avour ite Binding Ċ import Ġnet . x black y . anime x stream . databinding . Fragment Search Binding Ċ import Ġnet . x black y . anime x stream . ui . main . fav our ites . e po xy . F avour ite Controller Ċ import Ġnet . x black y . anime x stream . utils . Item Offset Decoration Ċ import Ġnet . x black y . anime x stream . utils . Utils Ċ import Ġnet . x black y . anime x stream . utils . model . F avour ite Model Ċ Ċ @ Android EntryPoint Ċ class ĠF avour ite Fragment Ġ: ĠFragment (), ĊĠĠĠ ĠF avour ite Controller . E po xy Search Adapter Callbacks , ĊĠĠĠ ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠF avour ite ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġval Ġfavour ite Controller Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠF avour ite Controller ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfavour ite Binding : ĠFragment F avour ite Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch Binding : ĠFragment Search Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġfavour ite Binding Ġ= ĠFragment F avour ite Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsearch Binding Ġ= ĠFragment Search Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġset Adapters () ĊĠĠĠĠĠĠĠ Ġtransition Listener () ĊĠĠĠĠĠĠĠ Ġset Click Listeners () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfavour ite Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Observer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( new Config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Configuration Changed ( new Config ) ĊĠĠĠĠĠĠĠ Ġif Ġ( new Config . orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite Controller . span Count Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( search Binding . search RecyclerView . layout Manager Ġas ĠGrid LayoutManager ). span Count Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( new Config . orientation Ġ== ĠConfiguration . OR IENTATION _ POR TRA IT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite Controller . span Count Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( search Binding . search RecyclerView . layout Manager Ġas ĠGrid LayoutManager ). span Count Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Observer () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . fav our ite List . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite Controller . setData ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Adapters () Ġ{ ĊĠĠĠĠĠĠĠ Ġfavour ite Controller . span Count Ġ= ĠUtils . calculate No Of Columns ( require Context (), Ġ 1 5 0 f ) ĊĠĠĠĠĠĠĠ Ġfavour ite Binding . re cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( context , ĠUtils . calculate No Of Columns ( require Context (), Ġ 1 5 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġfavour ite Controller . adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( layout Manager Ġas ĠGrid LayoutManager ). span Size Lookup Ġ= Ġfavour ite Controller . span Size Lookup ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfavour ite Binding . re cyclerView . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Offset Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . dim en . episode _ offset _ left ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Span Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġorientation Ġ= Ġresources . configuration . orientation ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransition Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġfavour ite Binding . motion Layout . set Transition Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠMotion Layout . Transition Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition Trigger ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 : ĠMotion Layout ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 1 : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 2 : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 3 : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition Started ( p 0 : ĠMotion Layout ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite Binding . top View . card Elevation Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition Change ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 : ĠMotion Layout ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Id : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Id : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Id Ġ== ĠR . id . start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite Binding . top View . card Elevation Ġ= Ġ 2 0 F Ġ* Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite Binding . toolbar Text . alpha Ġ= Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite Binding . top View . card Elevation Ġ= Ġ 1 0 F Ġ* Ġ( 1 Ġ- Ġprogress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavour ite Binding . toolbar Text . alpha Ġ= Ġ( 1 Ġ- Ġprogress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition Completed ( p 0 : ĠMotion Layout ?, Ġp 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Click Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġfavour ite Binding . back . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġan ime Title Click ( model : ĠF avour ite Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF avour ite Fragment Directions . action F avour ite Fragment To An ime Info Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Url Ġ= Ġmodel . category Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . back Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ