/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġapp . t ivi . home . discover Ċ Ċ import Ġapp . t ivi . R Ċ import Ġapp . t ivi . data . Entry Ċ import Ġapp . t ivi . data . entities . T ivi Show Ċ import Ġapp . t ivi . data . result entities . Entry With Show Ċ import Ġapp . t ivi . data . result entities . Pop ular Entry With Show Ċ import Ġapp . t ivi . data . result entities . Trend ing Entry With Show Ċ import Ġapp . t ivi . empty State Ċ import Ġapp . t ivi . header Ċ import Ġapp . t ivi . poster Grid Item Ċ import Ġapp . t ivi . ui . e po xy . Total Span Override Ċ import Ġcom . air bnb . e po xy . Typed E po xy Controller Ċ Ċ class ĠDis cover E po xy Controller ( ĊĠĠĠ Ġprivate Ġval Ġcallbacks : ĠCallback s Ċ ) Ġ: ĠTyped E po xy Controller < Discover ViewState >() Ġ{ ĊĊĠĠĠ Ġinterface ĠCallback s Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Trend ing Header Clicked ( items : ĠList < Trend ing Entry With Show >) ĊĠĠĠĠĠĠĠ Ġfun Ġon Pop ular Header Clicked ( items : ĠList < Pop ular Entry With Show >) ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Clicked ( view Holder Id : ĠLong , Ġitem : ĠEntry With Show < out ĠEntry >) ĊĠĠĠĠĠĠĠ Ġfun Ġon Search Item Clicked ( view Holder Id : ĠLong , Ġitem : ĠT ivi Show ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Models ( view State : ĠDis cover ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view State . is Search Open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild SearchResult Models ( view State ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Discover Models ( view State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild SearchResult Models ( view State : ĠDis cover ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt mdb ImageUrl Provider Ġ= Ġview State . t mdb ImageUrl Provider ĊĊĠĠĠĠĠĠĠ Ġview State . search Results ?. results ?. forEach Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter Grid Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ( result . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt mdb ImageUrl Provider ( t mdb ImageUrl Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener Ġ{ Ġmodel , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks . on Search Item Clicked ( model . id (), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Discover Models ( view State : ĠDis cover ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrend ing Shows Ġ= Ġview State . trend ing Items ĊĠĠĠĠĠĠĠ Ġval Ġpopular Shows Ġ= Ġview State . popular Items ĊĠĠĠĠĠĠĠ Ġval Ġt mdb ImageUrl Provider Ġ= Ġview State . t mdb ImageUrl Provider ĊĊĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid (" trend ing _ header ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( R . string . discover _ trend ing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks . on Trend ing Header Clicked ( trend ing Shows ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( trend ing Shows . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrend ing Shows . take ( span Count Ġ* Ġ 2 ). forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposter Grid Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ( item . generate Stable Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt mdb ImageUrl Provider ( t mdb ImageUrl Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( item . show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Label ( item . entry ?. watch ers . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Icon ( R . drawable . ic _ eye _ 1 2 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Name (" trend ing _${ item . show . homepage }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener Ġ{ Ġmodel , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks . on Item Clicked ( model . id (), Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty State Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" trend ing _ placeholder ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid (" popular _ header ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( R . string . discover _ popular ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks . on Pop ular Header Clicked ( popular Shows ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( popular Shows . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopular Shows . take ( span Count Ġ* Ġ 2 ). forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposter Grid Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ( item . generate Stable Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt mdb ImageUrl Provider ( t mdb ImageUrl Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( item . show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Name (" popular _${ item . show . homepage }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener Ġ{ Ġmodel , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks . on Item Clicked ( model . id (), Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty State Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" popular _ placeholder ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }