package Ġcom . re vol gen x . an ilib . media . fragment Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . text . style . Clickable Span Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . flex box . Flex box LayoutManager Ċ import Ġcom . otal i ast ud ios . elements . Adapter Ċ import Ġcom . otal i ast ud ios . elements . Presenter Ċ import Ġcom . otal i ast ud ios . elements . Source Ċ import Ġcom . otal i ast ud ios . elements . pag ers . PageSize Pager Ċ import Ġcom . re vol gen x . an ilib . ui . view . widgets . Al Card View Ċ import Ġcom . re vol gen x . an ilib . R Ċ import Ġcom . re vol gen x . an ilib . app . theme . contrast Accent With Surface Ċ import Ġcom . re vol gen x . an ilib . common . preference . enable Auto Ml Translation Ċ import Ġcom . re vol gen x . an ilib . common . preference . enable Ml Translation Ċ import Ġcom . re vol gen x . an ilib . common . preference . in Use Ml Language Model Ċ import Ġcom . re vol gen x . an ilib . constant .* Ċ import Ġcom . re vol gen x . an ilib . media . data . field . Media Overview Field Ċ import Ġcom . re vol gen x . an ilib . common . ui . fragment . Base Layout Fragment Ċ import Ġcom . re vol gen x . an ilib . media . data . meta . Media Info Meta Ċ import Ġcom . re vol gen x . an ilib . databinding . Media Overview Fragment Binding Ċ import Ġcom . re vol gen x . an ilib . common . event . Open Studio Event Ċ import Ġcom . re vol gen x . an ilib . common . repository . util . Resource Ċ import Ġcom . re vol gen x . an ilib . media . presenter . Media Info Relationship Presenter Ċ import Ġcom . re vol gen x . an ilib . media . presenter . Media External Link Presenter Ċ import Ġcom . re vol gen x . an ilib . media . presenter . Media Meta Presenter Ċ import Ġcom . re vol gen x . an ilib . media . presenter . Media Recommendation Presenter Ċ import Ġcom . re vol gen x . an ilib . common . view model . get ViewModel Owner Ċ import Ġcom . re vol gen x . an ilib . infrastructure . source . Media Overview Recommendation Source Ċ import Ġcom . re vol gen x . an ilib . media . data . model .* Ċ import Ġcom . re vol gen x . an ilib . social . factory . Al Mark won Factory Ċ import Ġcom . re vol gen x . an ilib . ui . adapter . Media Genre Chip Adapter Ċ import Ġcom . re vol gen x . an ilib . ui . adapter . Media Tag Chip Adapter Ċ import Ġcom . re vol gen x . an ilib . ui . dialog . Media Tag Description Dialog Ċ import Ġcom . re vol gen x . an ilib . media . presenter . Media Overview Character Presenter Ċ import Ġcom . re vol gen x . an ilib . media . view model . Media Info Container Shared VM Ċ import Ġcom . re vol gen x . an ilib . util . na Text Ċ import Ġcom . re vol gen x . an ilib . ui . view . air ing . A iring Episode View Ċ import Ġcom . re vol gen x . an ilib . media . view model . Media Overview VM Ċ import Ġcom . re vol gen x . an ilib . studio . data . model . Studio Edge Model Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠMedia Overview Fragment Ġ: ĠBase Layout Fragment < Media Overview Fragment Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmedia Browser Meta : ĠMedia Info Meta ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġarguments ?. get Parcelable ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMED IA _ INFO _ META _ KEY ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby ĠviewModel < Media Overview VM >() ĊĠĠĠ Ġprivate Ġval Ġshared ViewModel Ġby ĠviewModel < Media Info Container Shared VM >( owner Ġ= Ġget ViewModel Owner ()) ĊĊĠĠĠ Ġprivate Ġval Ġrecommendation Source : ĠMedia Overview Recommendation Source ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠviewModel . source Ġ?: Ġcreate Recommendation Source () ĊĠĠĠ Ġprivate Ġval Ġrelationship Presenter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMedia Info Relationship Presenter ( require Context ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġgenre Chip Adapter Ġ= ĠMedia Genre Chip Adapter () ĊĠĠĠ Ġprivate Ġval Ġtags Chip Adapter Ġ= ĠMedia Tag Chip Adapter (:: on Tag Info Clicked ) ĊĠĠĠ Ġprivate Ġval Ġcharacter Presenter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMedia Overview Character Presenter ( require Context ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġrecommendation Presenter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMedia Recommendation Presenter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġloading Presenter : ĠPres enter < Unit > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPres enter . for Loading Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . loading _ layout ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmedia Meta List Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable ListOf < Media Meta Collection >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġerror Presenter : ĠPres enter < Unit > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPres enter . for Error Indicator ( require Context (), ĠR . layout . error _ layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġempty Presenter : ĠPres enter < Unit > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPres enter . for Empty Indicator ( require Context (), ĠR . layout . empty _ layout ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġvar Ġmeta Link Adapter : ĠAdapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmeta Container Adapter : ĠAdapter ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMED IA _ INFO _ META _ KEY Ġ= Ġ" MEDIA _ INFO _ META _ KEY " ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( meta : ĠMedia Info Meta ) Ġ= ĠMedia Overview Fragment (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . arguments Ġ= Ġbundle Of ( MEDIA _ INFO _ META _ KEY Ġto Ġmeta ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġbind View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup ? ĊĠĠĠ Ġ): ĠMedia Overview Fragment Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMedia Overview Fragment Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( require Context (). resources . configuration . orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ) Ġ 4 Ġelse Ġ 2 ĊĠĠĠĠĠĠĠ Ġbinding . meta Container RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGrid LayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . span Size Lookup Ġ= Ġobject Ġ: ĠGrid LayoutManager . Span Size Lookup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Span Size ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( meta Container Adapter ?. getItem ViewType ( position ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . meta Link RecyclerView . layout Manager Ġ= ĠFlex box LayoutManager ( require Context ()) ĊĊĠĠĠĠĠĠĠ Ġbinding . recommend ation RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( context , ĠRecyclerView . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . relation RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( context , ĠRecyclerView . HORIZONTAL , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġmedia Browser Meta Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ ĠviewModel . field . media Id Ġ= Ġmedia Browser Meta !!. media Id ĊĊĠĠĠĠĠĠĠ Ġbinding . init View () ĊĊĠĠĠĠĠĠĠ ĠviewModel . media Overview LiveData . observe ( view Lifecycle Owner ) Ġ{ Ġres Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared ViewModel . media LiveData . value Ġ= Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( res ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Status Container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Progress Layout . progress Layout . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Error Layout . error Layout . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . update View ( res . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Recommendation Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Status Container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Progress Layout . progress Layout . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Error Layout . error Layout . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Recommendation Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Status Container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Progress Layout . progress Layout . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . resource Status Layout . resource Error Layout . error Layout . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get Overview ( Media Overview Field (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . media Id Ġ= Ġmedia Browser Meta !!. media Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMedia Overview Fragment Binding . init View () Ġ{ ĊĠĠĠĠĠĠĠ Ġgenre RecyclerView . layout Manager Ġ= ĠFlex box LayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠ Ġmedia Tags RecyclerView . layout Manager Ġ= ĠFlex box LayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠ Ġmedia Character RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( require Context (), ĠRecyclerView . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġgenre RecyclerView . adapter Ġ= Ġgenre Chip Adapter ĊĠĠĠĠĠĠĠ Ġmedia Tags RecyclerView . adapter Ġ= Ġtags Chip Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Genre ( genres : ĠList < String > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġgenre Chip Adapter . submit List ( genres ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Tags ( tags : ĠList < Media Tag Model > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Chip Adapter . submit List ( tags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMedia Overview Fragment Binding . update View ( overview : ĠMedia Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġnative Title . subtitle Ġ= Ġoverview . title ?. native . na Text () ĊĠĠĠĠĠĠĠ Ġenglish Title . subtitle Ġ= Ġoverview . title ?. english . na Text () ĊĊĠĠĠĠĠĠĠ Ġset Description ( overview . description ) ĊĊĠĠĠĠĠĠĠ Ġmedia Format Tv . subtitle Ġ= Ġoverview . format ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). resources . getString Array ( R . array . media _ format )[ it ] ĊĠĠĠĠĠĠĠ Ġ}. na Text () ĊĠĠĠĠĠĠĠ Ġmedia Source Tv . subtitle Ġ= Ġoverview . source ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). resources . getString Array ( R . array . media _ source )[ it . ordinal ] ĊĠĠĠĠĠĠĠ Ġ}. na Text () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( overview . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAl MediaType . AN IME . ordinal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Episode Tv . subtitle Ġ= Ġoverview . episodes . na Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Duration Tv . subtitle Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . min _ s ). format ( overview . duration . na Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAl MediaType . M ANG A . ordinal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Episode Tv . title Ġ= ĠgetString ( R . string . chapter s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Episode Tv . subtitle Ġ= Ġoverview . chapter s . na Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Duration Tv . title Ġ= ĠgetString ( R . string . volumes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Duration Tv . subtitle Ġ= Ġoverview . volumes . na Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( overview . characters ?. edges . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Header Tv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Character RecyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAdapter . builder ( view Lifecycle Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Source ( Source . fromList ( overview . characters !!. edges !! )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Presenter ( character Presenter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Presenter ( empty Presenter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( media Character RecyclerView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( overview . tr ailer ?. site ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠY OUT UBE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverview . tr ailer ?. thumbnail ?. let Ġ{ Ġtr ailer Simple Draw ee . setImage URI ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtr ailer Layout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ VIEW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Y OUT UBE _ URL Ġ+ Ġoverview . tr ailer ?. id ). to Uri () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDA IL Y MOT ION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverview . tr ailer ?. thumbnail ?. let Ġ{ Ġtr ailer Simple Draw ee . setImage URI ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtr ailer Layout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ VIEW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( DA IL Y MOT ION _ URL Ġ+ Ġoverview . tr ailer ?. id ). to Uri () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtr ailer Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtr ailer Header Tv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmedia Status Tv . subtitle Ġ= Ġoverview . status ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). resources . getString Array ( R . array . media _ status )[ it ] ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ" ?" ĊĊĠĠĠĠĠĠĠ ĠstartDate Tv . subtitle Ġ= Ġoverview . startDate ?. toString (). na Text () ĊĠĠĠĠĠĠĠ ĠendDate Tv . subtitle Ġ= Ġoverview . endDate ?. toString (). na Text () ĊĊĠĠĠĠĠĠĠ Ġoverview . next A iring Episode ?. let Ġ{ Ġat Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa iring Container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa iring Container . addView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAl Card View ( require Context ()). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . layout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . use Compat Padding Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . addView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA iring Episode View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ Ġae Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġae . layout Params Ġ= ĠFrame Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ Ġparams Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġae . set Timer ( at Model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( overview . relations ?. edges . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelation RecyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelationship Header Tv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Relationship Adapter ( overview . relations !!. edges !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( media Meta List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Media Collection ( getString ( R . string . rom aji _ title ), Ġoverview . title ?. rom aji . na Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverview . hasht ag ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Media Collection ( getString ( R . string . hasht ag ), Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Media Collection ( R . string . average _ score , Ġ"${ overview . average Score Ġ?: Ġ 0 } Ġ% ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Media Collection ( R . string . mean _ score , Ġ"${ overview . mean Score Ġ?: Ġ 0 } Ġ% ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Media Collection ( R . string . pop ularity , Ġ"${ overview . pop ularity Ġ?: Ġ 0 }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Media Collection ( R . string . fav our ites , Ġ"${ overview . fav our ites Ġ?: Ġ 0 }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Syn onyms To Meta Collection ( overview . syn onyms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Studio To Meta Collection ( overview . stud ios ?. edges ?. filter Ġ{ Ġit . is Main Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Producer To Meta Collection ( overview . stud ios ?. edges ?. filter Ġ{ Ġ! it . is Main Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind Genre ( overview . genres ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( overview . tags . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Tags Header Tv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Tags RecyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Tags ( overview . tags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġmeta Container Adapter Ġ= ĠAdapter . builder ( view Lifecycle Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Source ( Source . fromList ( media Meta List )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Presenter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Meta Presenter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( meta Container RecyclerView ) ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( overview . external Links . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlink Header Tv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Link RecyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverview . external Links ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Link Adapter Ġ= ĠAdapter . builder ( view Lifecycle Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Source ( Source . fromList ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Presenter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia External Link Presenter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( meta Link RecyclerView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMedia Overview Fragment Binding . setDescription ( description : ĠString ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( description . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Switch . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Translated By Google ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Description Tv . setText ( R . string . no _ description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġenable Ml Translation Ġ= Ġenable Ml Translation () ĊĠĠĠĠĠĠĠ Ġval ĠisIn Use Model Ġ= Ġin Use Ml Language Model ( require Context ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( enable Ml Translation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isIn Use Model . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Switch . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Translated By Google ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Markdown Description ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Switch . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Switch . setOn Checked ChangeListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenable Auto Translate Ġ= Ġenable Auto Ml Translation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Switch . isChecked Ġ= Ġenable Auto Translate ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enable Auto Translate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Description ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Translated By Google ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Markdown Description ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Switch . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Description ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Translated By Google ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Markdown Description ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Switch . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Translated By Google ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Markdown Description ( description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMedia Overview Fragment Binding . set Markdown Description ( ĊĠĠĠĠĠĠĠ Ġdescription : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAl Mark won Factory . get Mark won () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Markdown ( media Description Tv , Ġdescription ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtranslate Description ( description : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . media Description Tv . text Ġ= ĠgetString ( R . string . trans lating ) ĊĠĠĠĠĠĠĠ ĠviewModel . translation Store . translate ( require Context (), Ġdescription ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . media Description Tv . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Translated By Google ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Translated By Google ( b : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . translated By Google Sign . visibility Ġ= Ġif Ġ( b ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠaddTo Media Collection ( header : ĠString , Ġsubtitle : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmedia Meta List . add ( Media Meta Collection (). also Ġ{ Ġcol Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . header Ġ= Ġheader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . sub Title Ġ= Ġsubtitle ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠaddTo Media Collection (@ String Res Ġheader : ĠInt , Ġsubtitle : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmedia Meta List . add ( Media Meta Collection (). also Ġ{ Ġcol Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . header Ġ= Ġrequire Context (). getString ( header ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . sub Title Ġ= Ġsubtitle ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġadd Syn onyms To Meta Collection ( syn onyms : ĠList < String > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsyn onyms ?. take If Ġ{ Ġit . isNotEmpty () Ġ} ?. join ToString ("\ n ") ?. let Ġ{ Ġj Syn onyms Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Meta List . add ( Media Meta Collection (). also Ġ{ Ġcol Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol . header Ġ= ĠgetString ( R . string . syn onyms ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol . sub Title Ġ= Ġj Syn onyms ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Studio To Meta Collection ( stud ios : ĠList < Studio Edge Model > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( stud ios Ġ== Ġnull Ġ|| Ġstud ios . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġsp ann able StringBuilder Ġ= ĠSp ann able StringBuilder () ĊĠĠĠĠĠĠĠ Ġval Ġlast Index Ġ= Ġstud ios . size Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġstud ios . forEach Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġsp ann able StringBuilder . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . append ( it . node ?. studio Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . set Span ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠClick able Span () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( widget : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOpen Studio Event ( it . node ?. id !! ). post Event ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Draw State ( ds : ĠText Paint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġds . color Ġ= Ġcontrast Accent With Surface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . length , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġlast Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . append (", Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmedia Meta List . add ( Media Meta Collection (). also Ġ{ Ġcol Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . header Ġ= ĠgetString ( R . string . stud ios ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . sub Title Sp ann able Ġ= Ġsp ann able StringBuilder ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Tag Info Clicked ( model : ĠMedia Tag Model ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMedia Tag Description Dialog . newInstance ( model ). show ( require Context ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġadd Producer To Meta Collection ( stud ios : ĠList < Studio Edge Model > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( stud ios Ġ== Ġnull Ġ|| Ġstud ios . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġsp ann able StringBuilder Ġ= ĠSp ann able StringBuilder () ĊĠĠĠĠĠĠĠ Ġval Ġlast Index Ġ= Ġstud ios . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġstud ios . forEach Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġsp ann able StringBuilder . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . append ( it . node ?. studio Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . set Span ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠClick able Span () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( widget : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOpen Studio Event ( it . node ?. id !! ). post Event ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Draw State ( ds : ĠText Paint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġds . color Ġ= Ġcontrast Accent With Surface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . length , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġlast Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able StringBuilder . append (", Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmedia Meta List . add ( Media Meta Collection (). also Ġ{ Ġcol Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . header Ġ= ĠgetString ( R . string . pro ducers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . sub Title Sp ann able Ġ= Ġsp ann able StringBuilder ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcreate Recommendation Source (): ĠMedia Overview Recommendation Source Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠviewModel . create Source () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinvalidate Relationship Adapter ( list : ĠList < Media Edge Model >) Ġ{ ĊĠĠĠĠĠĠĠ ĠAdapter . builder ( view Lifecycle Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Source ( Source . fromList ( list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Presenter ( relationship Presenter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Resource Loader () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . relation RecyclerView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinvalidate Recommendation Adapter () Ġ{ ĊĠĠĠĠĠĠĠ ĠAdapter . builder ( this , ĠPAGE _ SIZE _ HINT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pager ( PageSize Pager ( PAGE _ SIZE )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Source ( recommend ation Source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Presenter ( recommend ation Presenter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Resource Loader () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . recommend ation RecyclerView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠAdapter . Builder . add Resource Loader (): ĠAdapter . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Presenter ( loading Presenter ) ĊĠĠĠĠĠĠĠ Ġadd Presenter ( error Presenter ) ĊĠĠĠĠĠĠĠ Ġadd Presenter ( empty Presenter ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊ Ċ }