package Ġcom . ash ish . movie guide . ui . discover . base Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġcom . ash ish . movie guide . R Ċ import Ġcom . ash ish . movie guide . data . models . Filter Query Ċ import Ġcom . ash ish . movie guide . data . models . Movie Ċ import Ġcom . ash ish . movie guide . data . models . TV Show Ċ import Ġcom . ash ish . movie guide . di . mult ib ind ings . Abstract Component Ċ import Ġcom . ash ish . movie guide . di . mult ib ind ings . fragment . Fragment Component Builder Ċ import Ġcom . ash ish . movie guide . di . mult ib ind ings . fragment . Fragment Component Builder Host Ċ import Ġcom . ash ish . movie guide . ui . base . recyclerview . Base RecyclerView Fragment Ċ import Ġcom . ash ish . movie guide . ui . common . adapter . ViewType Ċ import Ġcom . ash ish . movie guide . ui . discover . filter . Filter Bottom Sheet Dialog Fragment Ċ import Ġcom . ash ish . movie guide . ui . movie . detail . Movie Detail Activity Ċ import Ġcom . ash ish . movie guide . ui . tv show . detail . TV Show Detail Activity Ċ import Ġcom . ash ish . movie guide . utils . Constants . ADAPTER _ TYPE _ MOV IE Ċ import Ġcom . ash ish . movie guide . utils . Constants . ADAPTER _ TYPE _ TV _ SHOW Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Provider Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA sh ish Ġon ĠJan Ġ 0 7 . Ċ Ġ*/ Ċ abstract Ġclass ĠBase Discover Fragment < I Ġ: ĠView Type , ĠP Ġ: ĠBase Discover Presenter < I >> ĊĠĠĠ Ġ: ĠBase RecyclerView Fragment < I , ĠDis cover View < I >, ĠP >(), ĠDis cover View < I >, ĠFragment Component Builder Host Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDIS COVER _ MOV IE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDIS COVER _ TV _ SHOW Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRC _ FILTER _ FRAGMENT Ġ= Ġ 1 0 0 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġcomponent Builders : ĠMap < Class < out ĠFragment >, Ġ@ Jvm Suppress W ild cards ĠProvider < Fragment Component Builder < *, Ġ* >>> ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< F Ġ: ĠFragment , ĠB Ġ: ĠFragment Component Builder < F , ĠAbstract Component < F >>> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Fragment Component Builder ( fragment Key : ĠClass < F >, Ġbuilder Type : ĠClass < B >): ĠB Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder Type . cast ( component Builders [ fragment Key ] !!. get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Data () Ġ= Ġpresenter ?. filter Contents () ĊĊĠĠĠ Ġoverride Ġfun Ġget Adapter Type (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Movie ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAD AP TER _ TYPE _ MOV IE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAD AP TER _ TYPE _ TV _ SHOW ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Empty Text Id () Ġ= Ġif Ġ( is Movie ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠR . string . no _ movies _ available ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠR . string . no _ tv _ shows _ available ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Empty Image Id () Ġ= Ġif Ġ( is Movie ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠR . drawable . ic _ movie _ white _ 1 0 0 dp ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠR . drawable . ic _ tv _ white _ 1 0 0 dp ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Transition Name Id ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Movie ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . string . transition _ movie _ poster ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . string . transition _ tv _ poster ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Detail Intent ( position : ĠInt ): ĠIntent ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Movie ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= Ġre cyclerView Adapter . getItem < Movie >( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMovie Detail Activity . create Intent ( activity , Ġmovie ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Show Ġ= Ġre cyclerView Adapter . getItem < TV Show >( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTV Show Detail Activity . create Intent ( activity , Ġtv Show ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġget Discover MediaType (): ĠInt ĊĊĠĠĠ Ġprivate Ġfun Ġis Movie () Ġ= Ġget Discover MediaType () Ġ== ĠDIS COVER _ MOV IE ĊĊĠĠĠ Ġoverride Ġfun Ġclear Filtered Data () Ġ= Ġre cyclerView Adapter . clear All () ĊĊĠĠĠ Ġoverride Ġfun Ġshow Filter Bottom Sheet Dialog ( filter Query : ĠFilter Query ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Bottom Sheet Fragment Ġ= ĠFilter Bottom Sheet Dialog Fragment . newInstance ( is Movie (), Ġfilter Query ) ĊĠĠĠĠĠĠĠ Ġfilter Bottom Sheet Fragment . setTarget Fragment ( this , ĠRC _ FILTER _ FRAGMENT ) ĊĠĠĠĠĠĠĠ Ġfilter Bottom Sheet Fragment . show ( child FragmentManager , Ġfilter Bottom Sheet Fragment . tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?, Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ discover , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠ ĠR . id . action _ filter Ġ-> Ġperform Action Ġ{ Ġpresenter ?. on Filter MenuItem Click () Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ }