package Ġbe . app wise . core . ui . custom Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . widget . TextView Compat Ċ import Ġandroidx . view binding . View Binding Ċ import Ġbe . app wise . core . R Ċ import Ġbe . app wise . core . databinding . Profile ActionButton Binding Ċ import Ġbe . app wise . core . databinding . Profile ActionButton Vertical Binding Ċ Ċ class ĠProfile ActionButton Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġctx : ĠContext , ĊĠĠĠ Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠConstraint Layout ( ctx , Ġattribute Set , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Is Vertical : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Title : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Sub Title : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Hint : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Divider Is Visible : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Next Icon Is Visible : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Title TextAppearance : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġm Sub Title TextAppearance : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġm Title TextColor : ĠColor State List ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Sub Title TextColor : ĠColor State List ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Hint Color : ĠColor State List ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Divider Color : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġm Next Icon Color : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġm Next Icon : ĠDrawable ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Profile ActionButton Binding : ĠView Binding ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġcontext . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġattribute Set ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= Ġcontext . obtain Styled Attributes ( it , ĠR . style able . Profile ActionButton ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Vertical Ġ= Ġattributes . getBoolean ( R . style able . Profile ActionButton _ p ab _ vertical , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Title Ġ= Ġattributes . getString ( R . style able . Profile ActionButton _ p ab _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sub Title Ġ= Ġattributes . getString ( R . style able . Profile ActionButton _ p ab _ sub Title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hint Ġ= Ġattributes . getString ( R . style able . Profile ActionButton _ p ab _ hint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Next Icon Is Visible Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getBoolean ( R . style able . Profile ActionButton _ p ab _ visible Next Icon , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Divider Is Visible Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . getBoolean ( R . style able . Profile ActionButton _ p ab _ visible Divider , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Title TextAppearance Ġ= Ġattributes . getResource Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Profile ActionButton _ p ab _ title TextAppearance , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . p ab _ title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sub Title TextAppearance Ġ= Ġattributes . getResource Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Profile ActionButton _ p ab _ sub Title TextAppearance , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . p ab _ sub Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Title TextColor Ġ= Ġattributes . getColor State List ( R . style able . Profile ActionButton _ p ab _ title TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sub Title TextColor Ġ= Ġattributes . getColor State List ( R . style able . Profile ActionButton _ p ab _ sub Title TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hint Color Ġ= Ġattributes . getColor State List ( R . style able . Profile ActionButton _ p ab _ hint TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Next Icon Color Ġ= Ġattributes . getColor ( R . style able . Profile ActionButton _ p ab _ next Icon Color , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Divider Color Ġ= Ġattributes . getColor ( R . style able . Profile ActionButton _ p ab _ divider Color , Ġ- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Next Icon Ġ= Ġattributes . get Drawable ( R . style able . Profile ActionButton _ p ab _ next Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ baseline _ chevron _ right ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Profile ActionButton Binding Ġ= Ġif Ġ(! m Is Vertical ) ĠProfile ActionButton Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse ĠProfile ActionButton Vertical Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġis Divider Visible () ĊĠĠĠĠĠĠĠ Ġis Arrow Visible () ĊĠĠĠĠĠĠĠ ĠsetTitle ( m Title ) ĊĠĠĠĠĠĠĠ Ġset Sub Title ( m Sub Title ) ĊĠĠĠĠĠĠĠ Ġset Hint ( m Hint ) ĊĊĠĠĠĠĠĠĠ Ġtitle View ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextAppearance On TextView ( it , Ġm Title TextAppearance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor On TextView ( it , Ġm Title TextColor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsubtitle View ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextAppearance On TextView ( it , Ġm Sub Title TextAppearance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor On TextView ( it , Ġm Sub Title TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Hint TextColor ( m Hint Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdivider ?. set BackgroundColor ( m Divider Color ) ĊĠĠĠĠĠĠĠ Ġnext View ?. setImage Drawable ( m Next Icon ) ĊĠĠĠĠĠĠĠ Ġnext View ?. image Tint List Ġ= ĠColor State List . valueOf ( m Next Icon Color ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtitle View ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( val Ġbinding Ġ= Ġm Profile ActionButton Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile ActionButton Binding Ġ-> Ġbinding . tv Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile ActionButton Vertical Binding Ġ-> Ġbinding . tv Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsubtitle View ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( val Ġbinding Ġ= Ġm Profile ActionButton Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile ActionButton Binding Ġ-> Ġbinding . tv Subtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile ActionButton Vertical Binding Ġ-> Ġbinding . tv Subtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdivider ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( val Ġbinding Ġ= Ġm Profile ActionButton Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile ActionButton Binding Ġ-> Ġbinding . divider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile ActionButton Vertical Binding Ġ-> Ġbinding . divider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnext View ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( val Ġbinding Ġ= Ġm Profile ActionButton Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile ActionButton Binding Ġ-> Ġbinding . iv Next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile ActionButton Vertical Binding Ġ-> Ġbinding . iv Next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Divider Visible () Ġ{ ĊĠĠĠĠĠĠĠ Ġdivider ?. isVisible Ġ= Ġm Divider Is Visible ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Arrow Visible () Ġ{ ĊĠĠĠĠĠĠĠ Ġnext View ?. isVisible Ġ= Ġm Next Icon Is Visible ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Hint ( hint : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsubtitle View ?. isVisible Ġ= Ġhint Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġsubtitle View ?. hint Ġ= Ġhint ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetTitle ( text : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle View ?. visibility Ġ= Ġif Ġ( text . isNull OrEmpty ()) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ/* spacing ?. visibility Ġ= Ġif Ġ( text . isNull OrEmpty ()) ĠView . VISIBLE Ġelse ĠView . GONE */ ĊĠĠĠĠĠĠĠ Ġtitle View ?. text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Sub Title ( text : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsubtitle View ?. isVisible Ġ= Ġtext Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġsubtitle View ?. text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset TextColor On TextView ( tv : ĠTextView , ĠtextColor : ĠColor State List ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( textColor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset TextAppearance On TextView ( tv : ĠTextView , Ġappearance : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( appearance Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTextView Compat . setText Appearance ( tv , Ġappearance ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }