package Ġcom . your ss u . design . system . atom Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Motion Event Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Int Def Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġcom . your ss u . design . R Ċ import Ġcom . your ss u . design . databinding . Layout Plain Button Binding Ċ import Ġcom . your ss u . design . system . foundation . Icon Ċ import Ġcom . your ss u . design . system . foundation . Ty po Ċ Ċ class ĠPlain Button Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠConstraint Layout ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĊĠĠĠ Ġvar Ġis Disabled : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis Warn ed : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis Point ed : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Plain Button Size ĊĠĠĠ Ġvar Ġsize : ĠInt Ġ= ĠMED IUM ĊĠĠĠĠĠĠĠ Ġset (@ Plain Button Size Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain ButtonText . text Ġ= Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Icon . Icon o graphy ĊĠĠĠ Ġvar Ġleft Icon : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset (@ Icon . Icon o graphy Ġicon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icon Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Left Icon . icon Ġ= Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Icon . Icon o graphy ĊĠĠĠ Ġvar Ġright Icon : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset (@ Icon . Icon o graphy Ġicon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icon Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Right Icon . icon Ġ= Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠLayout Plain Button Binding Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠLayout Plain Button Binding . inflate ( LayoutInflater . from ( context ), Ġthis , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Touch Event ( event ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( event ?. action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Pressed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Pressed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Button Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Pressed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Color Pressed () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Color () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL ARGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Atom Visibility ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . size Ġ= ĠIcon View . Medium ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Center Icon Resource () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMED IUM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . plain Button Center Icon . isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Atom Visibility ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain ButtonText . ty po Ġ= ĠTy po . Button 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Left Icon . size Ġ= ĠIcon View . Small ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Right Icon . size Ġ= ĠIcon View . Small ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Atom Visibility ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . size Ġ= ĠIcon View . Small ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Center Icon Resource () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSMALL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . plain Button Center Icon . isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Atom Visibility ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain ButtonText . ty po Ġ= ĠTy po . Button 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Left Icon . size Ġ= ĠIcon View . Extra Small ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Right Icon . size Ġ= ĠIcon View . Extra Small ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Button Atom Visibility ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . size Ġ= ĠIcon View . Extra Small ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Center Icon Resource () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Horizontal Icon Visibility () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Button Color () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Disabled Ġ-> Ġset Atom Tint ( context . getColor ( R . color . button Disabled )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Warn ed Ġ-> Ġset Atom Tint ( context . getColor ( R . color . button Warn ed )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Point ed Ġ-> Ġset Atom Tint ( context . getColor ( R . color . button Point )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġset Atom Tint ( context . getColor ( R . color . button Normal )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Button Color Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Disabled Ġ-> Ġset Atom Tint ( context . getColor ( R . color . button Disabled )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Warn ed Ġ-> Ġset Atom Tint ( context . getColor ( R . color . button Warn ed Pressed )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Point ed Ġ-> Ġset Atom Tint ( context . getColor ( R . color . button Point Pressed )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġset Atom Tint ( context . getColor ( R . color . button Normal Pressed )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Horizontal Icon Visibility () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( binding . plain Button Center Icon . isVisible ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( left Icon Ġ== Ġnull Ġ&& Ġright Icon Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Right Icon . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Left Icon . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( left Icon Ġ== Ġnull Ġ&& Ġright Icon Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Left Icon . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Right Icon . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Left Icon . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Right Icon . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Center Icon Resource () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Icon Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . icon Ġ= Ġleft Icon !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Icon Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . icon Ġ= Ġright Icon !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . icon Ġ= ĠIcon . ic _ ad badge _ filled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġset Atom Tint (@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . plain Button Left Icon . setColor Filter ( color ) ĊĠĠĠĠĠĠĠ Ġbinding . plain Button Right Icon . setColor Filter ( color ) ĊĠĠĠĠĠĠĠ Ġbinding . plain Button Center Icon . setColor Filter ( color ) ĊĠĠĠĠĠĠĠ Ġbinding . plain ButtonText . setTextColor ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Button Atom Visibility ( value : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . plain Button Left Icon . isVisible Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġbinding . plain Button Right Icon . isVisible Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġbinding . plain ButtonText . isVisible Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Retention ( Annotation Retention . SOURCE ) ĊĠĠĠ Ġ@ Int Def ( value Ġ= Ġ[ SMALL , ĠMED IUM , ĠL ARGE ]) ĊĠĠĠ Ġannotation Ġclass ĠPlain Button Size ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSMALL Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMED IUM Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠL ARGE Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" is Disabled ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Disabled ( plain Button : ĠPlain Button , Ġis Disabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplain Button . is Disabled Ġ= Ġis Disabled ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" is Warn ed ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Warn ed ( plain Button : ĠPlain Button , Ġis Warn ed : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplain Button . is Warn ed Ġ= Ġis Warn ed ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" is Point ed ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Point ed ( plain Button : ĠPlain Button , Ġis Point ed : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplain Button . is Point ed Ġ= Ġis Point ed ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" size ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Size ( plain Button : ĠPlain Button , Ġ@ Plain Button Size Ġsize : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplain Button . size Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" android : text ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Text ( plain Button : ĠPlain Button , Ġtext : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplain Button . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" left Icon ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Left Icon ( plain Button : ĠPlain Button , Ġ@ Icon . Icon o graphy Ġicon : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplain Button . left Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" right Icon ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Right Icon ( plain Button : ĠPlain Button , Ġ@ Icon . Icon o graphy Ġicon : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplain Button . right Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ Ċ }