package Ġru . d tx 1 2 . cool blue . features . search Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Rating Bar Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġru . d tx 1 2 . cool blue . R Ċ import Ġru . d tx 1 2 . cool blue . core . domain . models . Product Ċ import Ġru . d tx 1 2 . cool blue . core . domain . models . Promo Icon Ċ import Ġru . d tx 1 2 . cool blue . core . domain . models . Review Summary Ċ import Ġru . d tx 1 2 . cool blue . core . extensions . get Price CharSequence Ċ import Ġru . d tx 1 2 . cool blue . core . extensions . visible Ċ Ċ object ĠProduct Binding Adapters Ġ{ ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter (" load Image By Url ") ĊĠĠĠ Ġfun Ġbind Image By Url ( view : ĠImageView , Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( view ). load ( url ). into ( view ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Bitmap ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter (" visible If NotNull ") ĊĠĠĠ Ġfun Ġbind Visible If NotNull ( view : ĠView , Ġany : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . visible ( any Ġ!= Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter (" visible If True ") ĊĠĠĠ Ġfun Ġbind Visible If True ( view : ĠView , Ġvisible : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . visible ( visible Ġ== Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter (" reviews Rating ") ĊĠĠĠ Ġfun Ġbind Reviews Rating ( rating View : ĠRating Bar , Ġreview Summary : ĠReview Summary ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( review Summary Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating View . rating Ġ= Ġ 0 . 0 F ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating View . rating Ġ= Ġreview Summary . review Average . toFloat () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter (" reviews Count ") ĊĠĠĠ Ġfun Ġbind Reviews Count ( view : ĠTextView , Ġreview Summary : ĠReview Summary ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( review Summary Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= Ġview . resources . get Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . reviews _ count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview Summary . review Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview Summary . review Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter (" product Description ") ĊĠĠĠ Ġfun Ġbind Product Description ( view : ĠTextView , Ġlines : ĠList < String > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( lines Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= Ġlines . join ToString ( separator Ġ= Ġ"\ n ") Ġ{ Ġ" âĢ¢ Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter (" product Price ") ĊĠĠĠ Ġfun Ġbind Product Price ( view : ĠTextView , Ġproduct : ĠProduct ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( product Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= Ġproduct . get Price CharSequence () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Binding Adapter (" product Promo ") ĊĠĠĠ Ġfun Ġbind Product Promo ( view : ĠTextView , Ġprom o Icon : ĠProm o Icon ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( promo Icon Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . visible ( false ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( promo Icon . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cool bl ues - choice " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setText ( R . string . search _ cb _ choice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setTextColor ( Context Compat . getColor ( view . context , ĠR . color . purple _ 7 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setText ( R . string . search _ promotion ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setTextColor ( Context Compat . getColor ( view . context , ĠR . color . orange )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }