/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠH M ĠRe venue Ġ& ĠCustom s Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġuk . gov . hm rc . components . molecule . status Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġuk . gov . hm rc . components . R Ċ import Ġuk . gov . hm rc . components . databinding . Component Status Binding Ċ Ċ class ĠStatus View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġdef Style Res : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠLinearLayout ( context , Ġattrs , Ġdef Style , Ġdef Style Res ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠComponent Status Binding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComponent Status Binding . inflate ( LayoutInflater . from ( context ), Ġthis ) ĊĊĠĠĠ Ġvar Ġon Primary Button Clicked Listener : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġvar Ġon Secondary Button Clicked Listener : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġattrs ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . theme . obtain Styled Attributes ( it , ĠR . style able . Status View , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġtyped Array . getString ( R . style able . Status View _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġtyped Array . getString ( R . style able . Status View _ body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Content Desc Ġ= Ġtyped Array . getString ( R . style able . Status View _ body Content Desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextColor Ġ= Ġtyped Array . getResource Id ( R . style able . Status View _ textColor , ĠR . color . hm rc _ black ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġtyped Array . getResource Id ( R . style able . Status View _ icon , ĠNO _ ICON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Tint Ġ= Ġtyped Array . getResource Id ( R . style able . Status View _ icon Tint Color , ĠNO _ ICON _ T INT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprimary ButtonText Ġ= Ġtyped Array . getString ( R . style able . Status View _ primary ButtonText ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecondary ButtonText Ġ= Ġtyped Array . getString ( R . style able . Status View _ secondary ButtonText ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Text Ġ= Ġtyped Array . getString ( R . style able . Status View _ info Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Body ( body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Body Content Desc ( body Content Desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon Tint Color ( icon Tint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Primary ButtonText ( primary ButtonText ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Secondary ButtonText ( secondary ButtonText ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Info Text ( info Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠV ERT ICAL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetTitle ( title : ĠCharSequence ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . title . text Ġ= Ġtitle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Body ( body : ĠCharSequence ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( body . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . text Ġ= Ġbody ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Body Content Desc ( body Content Desc : ĠCharSequence ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbody Content Desc ?. let Ġ{ Ġbinding . body . content Description Ġ= Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset TextColor (@ Color Res ĠtextColor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . title . setTextColor ( Context Compat . getColor ( context , ĠtextColor )) ĊĠĠĠĠĠĠĠ Ġbinding . body . setTextColor ( Context Compat . getColor ( context , ĠtextColor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Body Gravity ( gravity : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . body . gravity Ġ= Ġgravity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Icon (@ Drawable Res Ġicon : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( icon Ġ!= ĠNO _ ICON ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . icon . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . icon . setImage Resource ( icon ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . icon . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Icon Tint Color (@ Color Res Ġicon Tint : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( icon Tint Ġ!= ĠNO _ ICON _ T INT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . icon . setColor Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( context , Ġicon Tint ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . graphics . Port er D uff . Mode . SRC _ IN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Info Text ( info Text : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinfo Text ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . info . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Primary ButtonText ( primary ButtonText : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġprimary ButtonText ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . primary Button . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġon Primary Button Clicked Listener . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Secondary ButtonText ( secondary ButtonText : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsecondary ButtonText ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . secondary Button . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġon Secondary Button Clicked Listener . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNO _ ICON : ĠInt Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNO _ ICON _ T INT : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġ} Ċ } Ċ