/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 Ġ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 . show details . details Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . widget . PopupMenu Ċ import Ġandroidx . core . view . forEach Ċ import Ġapp . t ivi . common . e po xy . Half Span Override Ċ import Ġapp . t ivi . common . e po xy . Total Span Override Ċ import Ġapp . t ivi . common . e po xy . t ivi Carousel Ċ import Ġapp . t ivi . common . e po xy . with Models From Ċ import Ġapp . t ivi . common . layouts . header Ċ import Ġapp . t ivi . common . layouts . vert Spacer Small Ċ import Ġapp . t ivi . data . entities . Action Date Ċ import Ġapp . t ivi . data . entities . Episode Ċ import Ġapp . t ivi . data . entities . Season Ċ import Ġapp . t ivi . data . entities . Show Status Ċ import Ġapp . t ivi . data . entities . T ivi Show Ċ import Ġapp . t ivi . data . entities . find Highest R ated Post er Ċ import Ġapp . t ivi . data . result entities . Related Show Entry With Show Ċ import Ġapp . t ivi . data . result entities . Season With Episode s And W atches Ċ import Ġapp . t ivi . data . views . Follow ed Shows Watch Stats Ċ import Ġapp . t ivi . extensions . observable Ċ import Ġapp . t ivi . inject . Per Activity Ċ import Ġapp . t ivi . show details . details . databinding . ViewHolder Details Season Binding Ċ import Ġapp . t ivi . ui . widget . PopupMenu Button Ċ import Ġcom . air bnb . e po xy . Carousel Ċ import Ġcom . air bnb . e po xy . E po xy Controller Ċ import Ġcom . air bnb . e po xy . E po xy Model Ċ import Ġcom . air bnb . e po xy . E po xy Model Group Ċ import Ġcom . air bnb . mv rx . Async Ċ import Ġcom . air bnb . mv rx . Success Ċ import Ġjavax . inject . Inject Ċ Ċ internal Ġclass ĠShow Details E po xy Controller Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġ@ Per Activity Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġtext Creator : ĠShow Details Text Creator Ċ ) Ġ: ĠE po xy Controller () Ġ{ ĊĠĠĠ Ġvar Ġstate Ġby Ġobservable ( Show Details ViewState (), Ġ:: request Model Build ) ĊĠĠĠ Ġvar Ġcallbacks : ĠCallback s ? Ġby Ġobservable ( null , Ġ:: request Model Build ) ĊĊĠĠĠ Ġinterface ĠCallback s Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Related Show Clicked ( show : ĠT ivi Show , ĠitemView : ĠView ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Episode Clicked ( episode : ĠEp isode , ĠitemView : ĠView ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Mark Season W atched ( season : ĠSe ason , Ġonly A ired : ĠBoolean , Ġdate : ĠAction Date ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Mark Season Un w atched ( season : ĠSe ason ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Collapse Season ( season : ĠSe ason , ĠitemView : ĠView ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Expand Season ( season : ĠSe ason , ĠitemView : ĠView ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Mark Season Follow ed ( season : ĠSe ason ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Mark Season Ignored ( season : ĠSe ason ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Mark Previous Se asons Ignored ( season : ĠSe ason ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Models () Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild Show Models ( state ) ĊĊĠĠĠĠĠĠĠ Ġval Ġepisode With Season Ġ= Ġstate . next Episode To Watch () ĊĠĠĠĠĠĠĠ Ġif Ġ( episode With Season ?. episode Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert Spacer Small Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" next _ episode _ spacer ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" next _ episode _ header ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( R . string . details _ next _ episode _ to _ watch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetails Next Episode To Watch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" next _ episode _${ episode With Season . episode !!. id }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseason ( episode With Season . season ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode ( episode With Season . episode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Creator ( text Creator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Episode Clicked ( episode With Season . episode !! , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuild Related Shows Models ( state . related Shows ) ĊĊĠĠĠĠĠĠĠ Ġbuild Se asons Models ( state . view Stats , Ġstate . se asons , Ġstate . expanded Season Ids ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Show Models ( state : ĠShow Details ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdetails Post er Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid (" poster ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter Image ( state . poster Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Half Span Override ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġshow Ġ= Ġstate . show ĊĠĠĠĠĠĠĠ Ġval Ġbad ges Ġ= ĠArrayList < E po xy Model <* >>() ĊĠĠĠĠĠĠĠ Ġbad ges Ġ+= ĠDetails Info Rating Binding Model _ (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid (" rating ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( show ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( show . network Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbad ges Ġ+= ĠDetails Info Network Binding Model _ (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" network ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( show ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( show . cert ification Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbad ges Ġ+= ĠDetails Info Cert Binding Model _ (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" cert ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( show ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( show . runtime Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbad ges Ġ+= ĠDetails Info Runtime Binding Model _ (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" runtime ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( show ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( show . status Ġ!= Ġnull Ġ&& Ġshow . status Ġ!= ĠShow Status . RET UR NING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbad ges Ġ+= ĠDetails Info Status Binding Model _ (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" status ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Creator ( text Creator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( show . airs Time Ġ!= Ġnull Ġ&& Ġshow . airs Day Ġ!= Ġnull Ġ&& Ġshow . airs TimeZone Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( show . status Ġ== Ġnull Ġ|| Ġshow . status Ġ== ĠShow Status . RET UR NING )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbad ges Ġ+= ĠDetails Info Air s Binding Model _ (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" airs ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Creator ( text Creator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( badges . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE po xy Model Group ( R . layout . layout _ show _ details _ info _ holder , Ġbad ges ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvert Spacer Small Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid (" about _ show _ spacer ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid (" about _ show _ header ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( R . string . details _ about ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdetails Summary Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid (" summary ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( show ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( show . genres . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetails Gen res Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" genres ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Show ( show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Creator ( text Creator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Related Shows Models ( related Shows : ĠAsync < List < Related Show Entry With Show >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( related Shows Ġis ĠSuccess ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelated Ġ= Ġrelated Shows () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( related . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert Spacer Small Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" related _ spacer ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" related _ header ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( R . string . details _ related ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ivi Carousel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" related _ shows ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Width ( context . resources . get Dimension Pixel Size ( R . dim en . related _ shows _ item _ width )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvert Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . spacing _ small ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh oriz Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . spacing _ normal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Spacing Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . spacing _ micro ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding ( Carousel . Padding ( h oriz , Ġvert , Ġh oriz , Ġvert , Ġitem Spacing )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Models From ( related ) Ġ{ Ġrelated Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelated Show Ġ= Ġrelated Entry . show ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetails Related Item Binding Model _() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id (" related _${ related Show . id }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. t ivi Show ( related Show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. poster Image ( related Entry . images . find Highest R ated Post er ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Listener Ġ{ Ġview Ġ-> Ġcallbacks ?. on Related Show Clicked ( related Show , Ġview ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Se asons Models ( ĊĠĠĠĠĠĠĠ Ġasync Stats : ĠAsync < Follow ed Shows Watch Stats >, ĊĠĠĠĠĠĠĠ Ġasync Se asons : ĠAsync < List < Season With Episode s And W atches >>, ĊĠĠĠĠĠĠĠ Ġexpanded Season Ids : ĠSet < Long > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstats Ġ= Ġasync Stats () ĊĠĠĠĠĠĠĠ Ġif Ġ( stats Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert Spacer Small Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" view _ stats _ spacer ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" view _ stats _ header ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( R . string . details _ view _ stats ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetails Stats Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" view _ stats ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats ( stats ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Creator ( text Creator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( async Se asons Ġis ĠSuccess ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse asons Ġ= Ġasync Se asons () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( se asons . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert Spacer Small Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" se asons _ spacer ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" se asons _ header ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ( R . string . show _ details _ se asons ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( season Ġin Ġse asons ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpanded Ġ= Ġexpanded Season Ids . contains ( season . season . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetails Season Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ( generate Season ItemId ( season . season . id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseason ( season ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Creator ( text Creator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded ( expanded ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener Ġ{ Ġmodel , Ġ_, Ġclicked View , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . expanded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Collapse Season ( season . season , Ġclicked View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Expand Season ( season . season , Ġclicked View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu Listener ( Season PopupMenu Listener ( season )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu ClickListener ( Season Popup ClickListener ( season . season )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Bind Ġ{ Ġ_, Ġview , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġview . data Binding Ġas ĠViewHolder Details Season Binding ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġbinding . popup Menu Listener Ġas ĠSe ason PopupMenu Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . season Ġ= Ġbinding . season !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseason . episodes . forEach Ġ{ Ġepisode With W atches Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetails Season Episode Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Ġ= Ġepisode With W atches . episode !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ( generate Episode ItemId ( episode . id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Creator ( text Creator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode With W atches ( episode With W atches ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Override ( Total Span Override ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener Ġ{ Ġview Ġ-> Ġcallbacks ?. on Episode Clicked ( episode , Ġview ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠSe ason PopupMenu Listener ( ĊĠĠĠĠĠĠĠ Ġvar Ġseason : ĠSe ason With Episode s And W atches ĊĠĠĠ Ġ) Ġ: ĠPopup Menu Button . PopupMenu Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Prepare PopupMenu ( popup Menu : ĠPopup Menu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . menu . forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ stats _ ignore Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isVisible Ġ= Ġ! season . season . ignored ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ stats _ ignore _ previous Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isVisible Ġ= Ġ( season . season . number Ġ?: Ġ- 1 ) Ġ>= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ stats _ include Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isVisible Ġ= Ġseason . season . ignored ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ mark _ all _ un w atched Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isVisible Ġ= Ġseason . number W atched Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ mark _ w atched _ all Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isVisible Ġ= Ġseason . number W atched Ġ< Ġseason . number Episode s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ mark _ w atched _ a ired Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isVisible Ġ= Ġseason . number W atched Ġ< Ġseason . number A ired Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseason . number A ired Ġ< Ġseason . number Episode s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠSe ason Popup ClickListener ( ĊĠĠĠĠĠĠĠ Ġvar Ġseason : ĠSe ason ĊĠĠĠ Ġ) Ġ: ĠPopup Menu . On MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon MenuItem Click ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ mark _ all _ w atched _ now Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Mark Season W atched ( season , Ġfalse , ĠAction Date . NOW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ mark _ all _ w atched _ air _ date Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Mark Season W atched ( season , Ġfalse , ĠAction Date . AIR _ DATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ mark _ a ired _ w atched _ now Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Mark Season W atched ( season , Ġtrue , ĠAction Date . NOW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ mark _ a ired _ w atched _ air _ date Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Mark Season W atched ( season , Ġtrue , ĠAction Date . AIR _ DATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ mark _ all _ un w atched Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Mark Season Un w atched ( season ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ stats _ ignore Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Mark Season Ignored ( season ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ stats _ include Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Mark Season Follow ed ( season ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . season _ stats _ ignore _ previous Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. on Mark Previous Se asons Ignored ( season ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġcallbacks Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ