package Ġcom . merc ad op ago . android . px . core . presentation . extensions Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . core . graphics . to Color Filter Ċ import Ġandroidx . core . graphics . to Color Int Ċ import Ġandroidx . core . view . View Compat Ċ import Ġcom . merc ad ol ib re . android . an des ui . sn ackbar . An des Snackbar Ċ import Ġcom . merc ad ol ib re . android . an des ui . sn ackbar . action . An des Snackbar Action Ċ import Ġcom . merc ad ol ib re . android . an des ui . sn ackbar . duration . An des Snackbar Duration Ċ import Ġcom . merc ad ol ib re . android . an des ui . sn ackbar . type . An des Snackbar Type Ċ import Ġcom . merc ad op ago . android . px . core . R Ċ import Ġcom . merc ad op ago . android . px . core . commons . extensions . or If Empty Ċ Ċ /** Ċ Ġ* ĠShows Ġthe Ġan des Ġsn ackbar Ġwhen Ġthe Ġview Ġand Ġthe Ġcontext Ġare Ġnot Ġnull Ċ Ġ* Ċ Ġ* Ġ@ param Ġmessage ĠThe Ġtext Ġto Ġshow Ġin Ġthe Ġsn ackbar Ċ Ġ* Ġ@ param Ġan des Snackbar Type ĠSn ackbar Ġstyle Ġprovided Ġfrom ĠAn des . Ċ Ġ* Ġ@ param Ġan des Snackbar Duration ĠSn ackbar Ġduration Ġon Ġscreen Ġprovided Ġfrom ĠAn des . Ċ Ġ* Ġ@ param Ġan des Snackbar Action ĠNullable Ġsn ackbar Ġaction Ġ( callback Ġwith Ġtext ) Ċ Ġ*/ Ċ fun ĠView ?. show Sn ackBar ( message : ĠString Ġ= Ġ"", ĊĠĠĠ Ġan des Snackbar Type : ĠAn des Snackbar Type Ġ= ĠAn des Snackbar Type . ERROR , ĊĠĠĠ Ġan des Snackbar Duration : ĠAn des Snackbar Duration Ġ= ĠAn des Snackbar Duration . LONG , ĊĠĠĠ Ġan des Snackbar Action : ĠAn des Snackbar Action ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġthis ?. let Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠ Ġview . context ?. let Ġ{ Ġcontext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAn des Snackbar ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des Snackbar Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . or If Empty ( context . getString ( R . string . px _ error _ title )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan des Snackbar Duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ Ġit . action Ġ= Ġan des Snackbar Action Ġ}. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAdds Ġa Ġlayout Ġchange Ġlistener Ġwhen Ġthe Ġview Ġis Ġnot Ġnull . Ċ Ġ* ĠAlso Ġif Ġthe Ġview Ġis La id Out Ġit Ġexecutes Ġthe Ġlistener . Ċ Ġ*/ Ċ fun ĠView ?. add On La id Out Listener ( on La id Out : Ġ(( view : ĠView ) Ġ-> ĠUnit )) Ġ{ ĊĠĠĠ Ġthis ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( View Compat . is La id Out ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon La id Out . invoke ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . add On Layout ChangeListener Ġ{ Ġview , Ġ_, Ġ_, Ġ_, Ġ_, Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> Ġon La id Out . invoke ( view ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠWrapper Ġto Ġset Ġa ĠView Ġheight Ċ Ġ*/ Ċ fun ĠView ?. set Height ( height : ĠInt ) Ġ{ ĊĠĠĠ Ġthis ?. let Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= Ġview . layout Params . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . height Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġlayout ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠRe sets Ġthe Ġdrawable Ġbackground Ġcolor Ġfilter Ġto Ġ[ Color . TRANSP ARENT ] Ċ Ġ*/ Ċ fun ĠView . reset Drawable BackgroundColor () Ġ{ ĊĠĠĠ Ġbackground ?. color Filter Ġ= ĠPort er D uff . Mode . SRC . to Color Filter ( Color . TRANSP ARENT ) Ċ } Ċ Ċ /** Ċ Ġ* ĠSets Ġthe Ġdrawable Ġbackground Ġcolor Ġfilter Ġcolor Ġwhen Ġit 's Ġa Ġvalid Ġcolor . Ċ Ġ* ĠIf Ġit 's Ġnot Ġa Ġvalid Ġcolor Ġthen Ġit Ġresets Ġthe Ġbackground Ġcolor Ġto Ġ[ Color . TRANSP ARENT ] Ċ Ġ* Ċ Ġ* Ġ@ param Ġcolor ĠNullable Ġcolor Ġin Ġ# RR G GB B Ġor Ġ# A ARR G GB B Ċ Ġ*/ Ċ fun ĠView . set Drawable BackgroundColor ( color : ĠString ?) Ġ{ ĊĠĠĠ Ġbackground ?. let { ĊĠĠĠĠĠĠĠ Ġit . color Filter Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff . Mode . SRC . to Color Filter ( color !!. to Color Int ()) ĊĠĠĠĠĠĠĠ Ġ}. get OrDefault ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff . Mode . SRC . to Color Filter ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠWrapper Ġto Ġinf late Ġa Ġlayout Ġwith Ġattach To Root Ġfalse Ċ Ġ*/ Ċ fun ĠViewGroup . inflate (@ Layout Res Ġlayout : ĠInt ): ĠView Ġ= ĠLayoutInflater . from ( context ). inflate ( layout , Ġthis , Ġfalse ) Ċ Ċ /** Ċ Ġ* ĠApplies Ġa Ġgray Ġscale Ġto Ġa Ġview Ġgroup Ġand Ġit 's Ġchildren Ġrecursively Ċ Ġ*/ Ċ fun ĠViewGroup . gray Scale ViewGroup () Ġ{ ĊĠĠĠ Ġloop @ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġview Ġ= Ġget Child At ( i )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠImageView Ġ-> Ġview . gray Scale View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠViewGroup Ġ-> Ġview . gray Scale ViewGroup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcontinue @ loop ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ