package Ġim . vector . app . each chat . more info . relationship Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġim . vector . app . R Ċ import Ġim . vector . app . each chat . contact . data . User Ċ import Ġim . vector . app . each chat . utils . Screen Utils Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġch eng ww Ġon Ġ 2 0 1 9 - 1 1 - 1 3 Ċ Ġ* Ċ Ġ* Ġ@ author Ġch eng ww Ċ Ġ*/ Ċ class ĠReporting Relationship View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: ĠLinearLayout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġusers : ĠList < User >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠV ERT ICAL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Cut Paste Id ") ĊĠĠĠ Ġfun Ġadd Items ( users : ĠList < User >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . users Ġ= Ġusers ĊĠĠĠĠĠĠĠ Ġval Ġdp 1 Ġ= ĠScreen Utils . dip 2 px Float ( context , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġval Ġdp 6 Ġ= Ġ 7 . 5 f Ġ* Ġdp 1 ĊĠĠĠĠĠĠĠ Ġval Ġdp 7 Ġ= Ġ 9 Ġ* Ġdp 1 ĊĠĠĠĠĠĠĠ Ġval Ġdp 1 6 Ġ= Ġ 1 6 Ġ* Ġdp 1 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġusers . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") Ġval Ġinf late Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . item _ reporting _ relationship , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġusers [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout User Ġ= Ġinf late . findViewById < View >( R . id . layout _ user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( click Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout User . setOnClickListener Ġ{ Ġv : ĠView ? Ġ-> Ġclick Listener !!. onClick ( v , Ġuser ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout User . setOn Long ClickListener Ġ{ Ġv : ĠView ? Ġ-> Ġclick Listener !!. on Long Click ( v , Ġuser ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġresources ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconf Ġ= Ġres . configuration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( conf . font Scale Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Dash Bottom Ġ= Ġinf late . findViewById < View >( R . id . view _ dash _ bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Dash Top Ġ= Ġinf late . findViewById < View >( R . id . view _ dash _ top ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Dash Start Ġ= Ġinf late . findViewById < View >( R . id . view _ dash _ start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Dash End Ġ= Ġinf late . findViewById < View >( R . id . view _ dash _ end ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Circle Ġ= Ġinf late . findViewById < View >( R . id . view _ circle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Switch Line Ġ= Ġinf late . findViewById < View >( R . id . layout _ switch _ line ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Dash Switch Ġ= Ġinf late . findViewById < View >( R . id . view _ dash _ switch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Iv Switch Ġ= Ġinf late . findViewById < View >( R . id . iv _ switch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Layout User Ġ= Ġlayout User . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Bottom Ġ= Ġview Dash Bottom . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Top Ġ= Ġview Dash Top . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Start Ġ= Ġview Dash Start . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Dash Switch Ġ= Ġview Dash Switch . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Iv Switch Ġ= Ġview Iv Switch . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams End Ġ= Ġview Dash End . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Circle Ġ= Ġview Circle . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Switch Ġ= Ġlayout Switch Line . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Layout User . width Ġ= Ġ( params Layout User . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Layout User . height Ġ= Ġ( params Layout User . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Bottom . width Ġ= Ġ( params Bottom . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Bottom . height Ġ= Ġ( params Bottom . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Top . width Ġ= Ġ( params Top . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Top . height Ġ= Ġ( params Top . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Start . width Ġ= Ġ( params Start . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Start . height Ġ= Ġ( params Start . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Dash Switch . width Ġ= Ġ( params Dash Switch . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Dash Switch . height Ġ= Ġ( params Dash Switch . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Iv Switch . width Ġ= Ġ( params Iv Switch . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Iv Switch . height Ġ= Ġ( params Iv Switch . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams End . width Ġ= Ġ( params End . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams End . height Ġ= Ġ( params End . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams End . top Margin Ġ= Ġ( params End . top Margin Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Circle . width Ġ= Ġ( params Circle . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Circle . height Ġ= Ġ( params Circle . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Circle . top Margin Ġ= Ġ( params Circle . top Margin Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Circle . right Margin Ġ= Ġ( params Circle . right Margin Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Switch . top Margin Ġ= Ġ( params Switch . top Margin Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Switch . width Ġ= Ġ( params Switch . width Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Switch . height Ġ= Ġ( params Switch . height Ġ* Ġconf . font Scale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv UserName Ġ= Ġlayout User . findViewById < TextView >( R . id . tv _ user _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv User Title Ġ= Ġlayout User . findViewById < TextView >( R . id . tv _ user _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv User Avatar Ġ= Ġlayout User . findViewById < ImageView >( R . id . iv _ user _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv UserName . text Ġ= Ġuser . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Title Ġ= Ġuser . user Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv User Title . text Ġ= Ġuser Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv User Title . visibility Ġ= Ġif Ġ( TextUtils . isEmpty ( user Title )) ĠG ONE Ġelse ĠVIS IBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser . load Avatar ( context , Ġuser . avatar T Url , Ġiv User Avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( inflate ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLayout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinf late . findViewById < View >( R . id . view _ dash _ start ). visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinf late . findViewById < View >( R . id . view _ dash _ top ). visibility Ġ= ĠIN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġinf late . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmargin Start Ġ= Ġdp 1 6 Ġ* Ġ( i Ġ- Ġ 1 ) Ġ+ Ġdp 6 Ġ* Ġ( i Ġ- Ġ 1 ) Ġ+ Ġdp 7 Ġ- Ġdp 1 Ġ* Ġ( i Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( conf . font Scale Ġ> Ġ 1 ) Ġmargin Start Ġ*= Ġconf . font Scale ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . margin Start Ġ= Ġmargin Start . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe ĠLast ĠOne ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġusers . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinf late . findViewById < View >( R . id . iv _ switch ). visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinf late . findViewById < View >( R . id . view _ dash _ switch ). visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinf late . findViewById < View >( R . id . view _ dash _ bottom ). visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Avatar ( matrix Id : ĠString ?, Ġavatar : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( users . isNull OrEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġusers !!. indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġusers ! ![ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( matrix Id , Ġuser . matrix Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv User Ġ= Ġget Child At ( i ). findViewById < ImageView >( R . id . iv _ user _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser . load Avatar ( context , Ġavatar , Ġiv User ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" update Avatar Ġ% s ", Ġe . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġclick Listener : ĠUser ClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġinterface ĠUser ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Long Click ( view : ĠView ?, Ġuser : ĠUser ?): ĠBoolean ĊĠĠĠĠĠĠĠ Ġfun ĠonClick ( view : ĠView ?, Ġuser : ĠUser ?) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFirst Ġset ĠUser ClickListener Ġthen Ġadd Items ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġclick Listener Ġ[ User ClickListener ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsetUser ClickListener ( click Listener : ĠUser ClickListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . click Listener Ġ= Ġclick Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} Ċ } Ċ