package Ġio . github . z wi eb ack . family finance . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Dim en Res Ċ import Ġandroidx . core . widget . TextView Compat Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ import Ġcom . mike pen z . icon ics . Icon ics Color Ċ import Ġcom . mike pen z . icon ics . Icon ics Drawable Ċ import Ġcom . mike pen z . icon ics . Icon ics Size Ċ import Ġio . github . z wi eb ack . family finance . core . R Ċ import Ġio . github . z wi eb ack . family finance . extension . is Left To Right Layout Direction Ċ import Ġio . github . z wi eb ack . family finance . widget . listener . On Icon ClickListener Ċ Ċ /** Ċ Ġ* ĠView Ġwith Ġan Ġability Ġto Ġdisplay Ġcustom Ġicon Ġat Ġthe Ġend Ġof Ġthis Ġview 's Ġborder Ċ Ġ*/ Ċ abstract Ġclass ĠIcon ics EditText Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style : ĠInt Ġ= ĠR . attr . edit TextStyle Ċ ) Ġ: ĠText Input EditText ( context , Ġattrs , Ġdef Style ), ĊĠĠĠ ĠView . On Touch Listener , ĊĠĠĠ ĠOn Icon ClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġicon : ĠIcon ics Drawable ĊĠĠĠ Ġprivate Ġvar Ġicon Visible : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprotected Ġabstract Ġval Ġicon Name : ĠString ĊĊĠĠĠ Ġ@ get : Dim en Res ĊĠĠĠ Ġprotected Ġabstract Ġval Ġicon Size : ĠInt ĊĊĠĠĠ Ġ@ get : Color Res ĊĠĠĠ Ġprotected Ġabstract Ġval Ġicon Color : ĠInt ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish Inf late () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Finish Inf late () ĊĠĠĠĠĠĠĠ Ġinitialize ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġprotected Ġopen Ġfun Ġinitialize ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġicon Ġ= Ġcreate Icon ( context ) ĊĠĠĠĠĠĠĠ Ġset Icon Visible ( false ) ĊĠĠĠĠĠĠĠ Ġset On Touch Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Icon ( context : ĠContext ): ĠIcon ics Drawable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠIcon ics Drawable ( context , Ġicon Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( Icon ics Size . res ( icon Size )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. color ( Icon ics Color . color Res ( icon Color )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrep aint Icon ( icon : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġicon Visible Ġ= Ġicon Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġdraw ables Ġ= ĠTextView Compat . get Compound Draw ables Relative ( this ) ĊĠĠĠĠĠĠĠ ĠTextView Compat . set Compound Draw ables Relative With Intr insic Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ables [ 0 ], Ġdraw ables [ 1 ], Ġicon , Ġdraw ables [ 3 ] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch ( v : ĠView , Ġevent : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Clicked On Icon ( event )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Icon Click () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Clicked On Icon ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ!= ĠMotion Event . ACTION _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġl tr Ġ= Ġthis . is Left To Right Layout Direction () ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġevent . x . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġevent . y . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġif Ġ( ltr ) Ġwidth Ġ- Ġpadding Right Ġ- Ġicon . intrinsic Width Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġif Ġ( ltr ) Ġwidth Ġelse Ġpadding Left Ġ+ Ġicon . intrinsic Width ĊĠĠĠĠĠĠĠ Ġreturn Ġx Ġin Ġleft .. right Ġ&& Ġy Ġin Ġ 0 .. ( bottom Ġ- Ġtop ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Icon Visible ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwas Visible Ġ= Ġicon Visible ĊĠĠĠĠĠĠĠ Ġif Ġ( visible Ġ!= Ġwas Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrep aint Icon ( if Ġ( visible ) Ġicon Ġelse Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ