package Ġio . github . wy kop mob il ny . ui . widgets . link . related Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Typed Value Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . app . Share Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġio . github . wy kop mob il ny . R Ċ import Ġio . github . wy kop mob il ny . databinding . Link Related Layout Binding Ċ import Ġio . github . wy kop mob il ny . models . dataclass . Related Ċ import Ġio . github . wy kop mob il ny . ui . dialogs . show Exception Dialog Ċ import Ġio . github . wy kop mob il ny . ui . modules . profile . Profile Activity Ċ import Ġio . github . wy kop mob il ny . utils . api . getGroup Color Ċ import Ġio . github . wy kop mob il ny . utils . getActivity Context Ċ import Ġio . github . wy kop mob il ny . utils . layout Inflater Ċ import Ġio . github . wy kop mob il ny . utils . user manager . User Manager Api Ċ Ċ class ĠRelated Widget ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠCard View ( context , Ġattrs ), ĠRelated Widget View Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġ= ĠLink Related Layout Binding . inflate ( layout Inflater , Ġthis ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġis Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġtyped Value Ġ= ĠTyped Value () ĊĠĠĠĠĠĠĠ ĠgetActivity Context () !!. theme ?. resolve Attribute ( R . attr . item BackgroundColor State list , Ġtyped Value , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġset Background Resource ( typed Value . resourceId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġurl : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġrelated Item . url ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpresenter : ĠRelated Widget Presenter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrelated Item : ĠRelated ĊĊĠĠĠ Ġfun Ġset Related Data ( ĊĠĠĠĠĠĠĠ Ġlink Id : ĠLong ?, ĊĠĠĠĠĠĠĠ Ġrelated : ĠRelated , ĊĠĠĠĠĠĠĠ Ġuser Manager Api : ĠUser Manager Api , ĊĠĠĠĠĠĠĠ Ġrelated Widget Presenter : ĠRelated Widget Presenter , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrelated Item Ġ= Ġrelated ĊĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġrelated Widget Presenter ĊĠĠĠĠĠĠĠ Ġbinding . title . text Ġ= Ġrelated . title ĊĠĠĠĠĠĠĠ Ġbinding . url TextView . text Ġ= Ġrelated . url ĊĠĠĠĠĠĠĠ Ġpresenter . subscribe ( this ) ĊĠĠĠĠĠĠĠ Ġpresenter . related Id Ġ= Ġrelated Item . id ĊĠĠĠĠĠĠĠ Ġpresenter . link Id Ġ= Ġlink Id ĊĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . handle Link ( related . url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . share TextView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare Url () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Vote Count ( related . vote Count ) ĊĠĠĠĠĠĠĠ Ġbinding . author Header View . isVisible Ġ= Ġrelated . author Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġbinding . userName TextView . isVisible Ġ= Ġrelated . author Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġrelated . author ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . userName TextView . text Ġ= Ġnick ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . userName TextView . setOnClickListener Ġ{ Ġopen Profile () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . author Header View . setOnClickListener Ġ{ Ġopen Profile () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . author Header View . set Author ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . userName TextView . setTextColor ( context . getGroup Color ( group )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetup Buttons () ĊĠĠĠĠĠĠĠ Ġbinding . plus Button . setup ( user Manager Api ) ĊĠĠĠĠĠĠĠ Ġbinding . minus Button . setup ( user Manager Api ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Profile () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠgetActivity Context () !! ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( Profile Activity . create Intent ( context , Ġrelated Item . author !!. nick )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( related Item . user Vote ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Button . is Button Selected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Button . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . minus Button . is Button Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . minus Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . minus Button . vote Listener Ġ= Ġ{ Ġpresenter . vote Down () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Button . is Button Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Button . vote Listener Ġ= Ġ{ Ġpresenter . vote Up () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . minus Button . is Button Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . minus Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . minus Button . vote Listener Ġ= Ġ{ Ġpresenter . vote Down () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . minus Button . is Button Selected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . minus Button . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Button . is Button Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Button . vote Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . vote Up () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmark Un v oted () Ġ{ ĊĠĠĠĠĠĠĠ Ġrelated Item . user Vote Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġsetup Buttons () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmark V oted () Ġ{ ĊĠĠĠĠĠĠĠ Ġrelated Item . user Vote Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġsetup Buttons () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Vote Count ( vote Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrelated Item . vote Count Ġ= Ġvote Count ĊĠĠĠĠĠĠĠ Ġbinding . vote Count TextView . text Ġ= Ġif Ġ( related Item . vote Count Ġ> Ġ 0 ) Ġ"+ ${ related Item . vote Count }" Ġelse Ġ"${ related Item . vote Count }" ĊĠĠĠĠĠĠĠ Ġif Ġ( related Item . vote Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . plus Pressed Color ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( related Item . vote Count Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . minus Pressed Color ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ Ġbinding . vote Count TextView . setTextColor ( Context Compat . getColor ( context , Ġit )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error Dialog ( e : ĠThrowable ) Ġ= Ġcontext . show Exception Dialog ( e ) ĊĊĠĠĠ Ġprivate Ġfun Ġshare Url () Ġ{ ĊĠĠĠĠĠĠĠ ĠShare Compat . Intent Builder ( getActivity Context () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType (" text / plain ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chooser Title ( R . string . share ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Chooser () ĊĠĠĠ Ġ} Ċ } Ċ