package Ġcom . ve yn dan . paper . reddit . post . media . delegate Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . custom tabs . Custom Tabs Client Ċ import Ġandroid . support . custom tabs . Custom Tabs Intent Ċ import Ġandroid . support . custom tabs . Custom Tabs Session Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . util . Size Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . DataSource Ċ import Ġcom . bump tech . glide . load . engine . G lide Exception Ċ import Ġcom . bump tech . glide . request . RequestListener Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . h ann es dor fm ann . adapter deleg ates 3 . Abs ListItem Adapter Delegate Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . view . click s Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . view . layout Changes Ċ import Ġcom . ve yn dan . paper . reddit . databinding . Post Media Image Binding Ċ import Ġcom . ve yn dan . paper . reddit . post . media . model . Image Ċ import Ġcom . ve yn dan . paper . reddit . post . model . Post Ċ import Ġio . reactivex . Observable Ċ Ċ class ĠImage Adapter Delegate ( private Ġval Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcustom Tabs Client : ĠCustom Tabs Client ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcustom Tabs Intent : ĠCustom Tabs Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġpost : ĠPost ) ĊĠĠĠ Ġ: ĠAbs ListItem Adapter Delegate < Image , ĠAny , ĠImage Adapter Delegate . ImageView Holder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġis For ViewType ( item : ĠAny , Ġitems : ĠList < Any >, Ġposition : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitem Ġis ĠImage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ): ĠImage ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠPost Media Image Binding Ġ= ĠPost Media Image Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠImage ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( image : ĠImage , Ġholder : ĠImage ViewHolder , Ġpayload s : ĠList < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext : ĠContext Ġ= Ġholder . item View . context ĊĊĠĠĠĠĠĠĠ Ġholder . binding . post Media Image Progress . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġif Ġ( custom Tabs Client Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession : ĠCustom Tabs Session Ġ= Ġcustom Tabs Client . new Session ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . may Launch Url ( Uri . parse ( image . url ), Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . item View . click s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Tabs Intent . launch Url ( activity , ĠUri . parse ( image . url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġimage Dim ens Available Ġ: ĠBoolean Ġ= Ġimage . size . width Ġ> Ġ 0 Ġ&& Ġimage . size . height Ġ> Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( image . type Ġ== ĠImage . IMAGE _ TYPE _ STANDARD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . post Media ImageType . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . post Media ImageType . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . post Media ImageType . setText ( image . type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠOnce Ġmedia Ġadapter Ġis Ġshared Ġbetween Ġposts , Ġwidth Ġcan Ġbe Ġcalculated Ġin Ġthe Ġholder Ġconstructor . ĊĠĠĠĠĠĠĠ Ġholder . item View . layout Changes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth : ĠInt Ġ= Ġholder . item View . width ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( image . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object : ĠRequest Listener < Drawable > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Drawable > ?, ĠdataSource : ĠDataSource ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . post Media Image Progress . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! image Dim ens Available ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Width Ġ: ĠInt Ġ= Ġresource !!. intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Height Ġ: ĠInt Ġ= Ġresource . intrinsic Height ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . size Ġ= ĠSize ( image Width , Ġimage Height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . medi as Ġ= Ġpost . medi as . concat With ( Observable . just ( image )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . post Media Image . layout Params . height Ġ= Ġ( width . toFloat () Ġ/ Ġimage Width Ġ* Ġimage Height ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Drawable > ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . post Media Image Progress . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . binding . post Media Image ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Dim ens Available ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . post Media Image . layout Params . height Ġ= Ġ( width . toFloat () Ġ/ Ġimage . size . width Ġ* Ġimage . size . height ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠImage ViewHolder ( val Ġbinding : ĠPost Media Image Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ċ } Ċ