/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 ĠSimon ĠV ig ĠTh erk ild sen Ċ Ġ* Ċ Ġ* Ġ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 Ġnet . sim on vt . c ath ode . ui . dashboard Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder Ċ import Ġnet . sim on vt . c ath ode . common . ui . adapter . Base Adapter Ċ import Ġnet . sim on vt . c ath ode . databinding . List Row Dashboard Episode Binding Ċ import Ġnet . sim on vt . c ath ode . databinding . List Row Dashboard Show Binding Ċ import Ġnet . sim on vt . c ath ode . entity . Episode Ċ import Ġnet . sim on vt . c ath ode . entity . Show Ċ import Ġnet . sim on vt . c ath ode . images . ImageType . POST ER Ċ import Ġnet . sim on vt . c ath ode . images . ImageType . ST ILL Ċ import Ġnet . sim on vt . c ath ode . images . Image Uri Ċ import Ġnet . sim on vt . c ath ode . provider . util . Data Helper Ċ import Ġnet . sim on vt . c ath ode . ui . dashboard . Dashboard Fragment . Overview Callback Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠDashboard Shows Watch list Adapter ( ĊĠ Ġcontext : ĠContext , ĊĠ Ġprivate Ġval Ġcallback : ĠOverview Callback Ċ ) Ġ: ĠBase Adapter < Any , ĠViewHolder >( context ) Ġ{ ĊĊĠ Ġprivate Ġvar Ġshows : ĠList < Show >? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġepisode s : ĠList < Episode >? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠAny , Ġnew Item : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( old Item Ġis ĠShow Ġ&& Ġnew Item Ġis ĠShow ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġ} Ġelse Ġif Ġ( old Item Ġis ĠEp isode Ġ&& Ġnew Item Ġis ĠEp isode ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĊĠ Ġfun Ġchange Show List ( shows : ĠList < Show > ?) Ġ{ ĊĠĠĠ Ġthis . shows Ġ= Ġshows ĊĠĠĠ Ġupdate Items () ĊĠ Ġ} ĊĊĠ Ġfun Ġchange Episode List ( episodes : ĠList < Episode > ?) Ġ{ ĊĠĠĠ Ġthis . episodes Ġ= Ġepisode s ĊĠĠĠ Ġupdate Items () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate Items () Ġ{ ĊĠĠĠ Ġval Ġitems : ĠMutable List < Any > Ġ= ĠArrayList () ĊĠĠĠ Ġif Ġ( shows Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġitems . addAll ( shows !! ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( episodes Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġitems . addAll ( episodes !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlist Ġ= Ġitems ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( list [ position ] Ġis ĠShow ) Ġ{ ĊĠĠĠĠĠ ĠTYPE _ SHOW ĊĠĠĠ Ġ} Ġelse ĠTYPE _ E PI SO DE ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠ Ġ// ĠTODO : ĠBetter Ġway ? ĊĠĠĠ Ġreturn Ġif Ġ( getItem ViewType ( position ) Ġ== ĠTYPE _ SHOW ) Ġ{ ĊĠĠĠĠĠ Ġ( list [ position ] Ġas ĠShow ). tv db Id . to Long () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġ( list [ position ] Ġas ĠEp isode ). tv db Id . to Long () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠ Ġif Ġ( view Type Ġ== ĠTYPE _ SHOW ) Ġ{ ĊĠĠĠĠĠ Ġval Ġbinding Ġ= ĊĠĠĠĠĠĠĠ ĠList Row Dashboard Show Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠ Ġval Ġholder Ġ= ĠShow ViewHolder ( binding ) ĊĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġshow Ġ= Ġlist [ position ] Ġas ĠShow ĊĠĠĠĠĠĠĠĠĠ Ġcallback . on Display Show ( show . id , Ġshow . title , Ġshow . overview ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġval Ġbinding Ġ= ĊĠĠĠĠĠĠĠ ĠList Row Dashboard Episode Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠ Ġval Ġholder Ġ= ĠEp isode ViewHolder ( binding ) ĊĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Ġ= Ġlist [ position ] Ġas ĠEp isode ĊĠĠĠĠĠĠĠĠĠ Ġcallback . on Display Episode ( episode . id , Ġepisode . show Title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( holder . item ViewType Ġ== ĠTYPE _ SHOW ) Ġ{ ĊĠĠĠĠĠ Ġval Ġshow Holder Ġ= Ġholder Ġas ĠShow ViewHolder ĊĠĠĠĠĠ Ġval Ġ( id , Ġtitle ) Ġ= Ġlist [ position ] Ġas ĠShow ĊĠĠĠĠĠ Ġval Ġposter Ġ= ĠImage Uri . create ( Image Uri . ITEM _ SHOW , ĠPOST ER , Ġid ) ĊĠĠĠĠĠ Ġshow Holder . poster . setImage ( poster ) ĊĠĠĠĠĠ Ġshow Holder . title . text Ġ= Ġtitle ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġval Ġepisode Holder Ġ= ĊĠĠĠĠĠĠĠ Ġholder Ġas ĠEp isode ViewHolder ĊĠĠĠĠĠ Ġval Ġepisode Ġ= ĊĠĠĠĠĠĠĠ Ġlist [ position ] Ġas ĠEp isode ĊĠĠĠĠĠ Ġval Ġscreenshot Uri Ġ= ĠImage Uri . create ( Image Uri . ITEM _ E PI SO DE , ĠST ILL , Ġepisode . id ) ĊĠĠĠĠĠ Ġepisode Holder . screenshot . setImage ( screenshot Uri ) ĊĠĠĠĠĠ Ġval Ġtitle Ġ= ĠData Helper . get Episode Title ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġepisode . title , ĊĠĠĠĠĠĠĠ Ġepisode . season , ĊĠĠĠĠĠĠĠ Ġepisode . episode , ĊĠĠĠĠĠĠĠ Ġepisode . w atched , ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġepisode Holder . title . text Ġ= Ġtitle ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġclass ĠShow ViewHolder ( binding : ĠList Row Dashboard Show Binding ) Ġ: ĠViewHolder ( binding . root ) Ġ{ ĊĠĠĠ Ġvar Ġposter Ġ= Ġbinding . poster ĊĠĠĠ Ġvar Ġtitle Ġ= Ġbinding . title ĊĠ Ġ} ĊĊĠ Ġclass ĠEp isode ViewHolder ( binding : ĠList Row Dashboard Episode Binding ) Ġ: ĠViewHolder ( binding . root ) Ġ{ ĊĠĠĠ Ġval Ġscreenshot Ġ= Ġbinding . screenshot ĊĠĠĠ Ġval Ġtitle Ġ= Ġbinding . title ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTYPE _ SHOW Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġconst Ġval ĠTYPE _ E PI SO DE Ġ= Ġ 1 ĊĠ Ġ} Ċ } Ċ