/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġ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 . organ ism . information Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . google . android . material . card . Material Card View Ċ import Ġuk . gov . hm rc . components . R Ċ import Ġuk . gov . hm rc . components . atom . button . Secondary Button Ċ import Ġuk . gov . hm rc . components . databinding . Component Information Message Card Binding Ċ import Ġuk . gov . hm rc . components . extensions . set Margins Ċ import Ġuk . gov . hm rc . components . molecule . warning . Warning View . Companion . NO _ ICON Ċ Ċ class ĠInformation Message Card View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull Ċ ) Ġ: ĠMaterial Card View ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠComponent Information Message Card Binding Ġ= ĊĠĠĠĠĠĠĠ ĠComponent Information Message Card Binding . inflate ( LayoutInflater . from ( context ), Ġthis ) ĊĊĠĠĠ Ġvar Ġtype : ĠType ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . warning View . setTextColor ( it . headline Tint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . warning View . setIcon Tint Color ( it . headline Tint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . setTextColor ( Context Compat . getColor ( context , Ġit . headline Tint )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root Layout . set BackgroundColor ( Context Compat . getColor ( context , Ġit . headline BackgroundColor )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root Layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġattrs ?. let Ġ{ Ġattribute Set Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . theme ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. obtain Styled Attributes ( attribute Set , ĠR . style able . Information Message Card View , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Head line ( typed Array . getString ( R . style able . Information Message Card View _ headline )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getString ( R . style able . Information Message Card View _ headline Content Description )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Head line Content Description ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Head line Icon ( typed Array . getResource Id ( R . style able . Information Message Card View _ headline Icon , ĠNO _ ICON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Body ( typed Array . getString ( R . style able . Information Message Card View _ body )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ordinal Ġ= Ġtyped Array . getInt ( R . style able . Information Message Card View _ type , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ordinal Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠType . values ()[ type Ordinal ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġimportant For Accessibility Ġ= ĠView . IMPORTANT _ FOR _ ACC ES SI B ILITY _ NO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Head line ( headline : ĠCharSequence ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . warning View . setText ( headline ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Head line Content Description ( content Desc : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . warning View . update Content Description ( content Desc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Head line Icon ( res Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . warning View . setIcon ( res Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Body ( body Text : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( body Text . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . body . text Ġ= Ġbody Text ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Head line Buttons ( buttons : ĠList < Secondary Button >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . headline Buttons Container . removeAll Views () ĊĊĠĠĠĠĠĠĠ Ġval Ġspacing 8 Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . hm rc _ spacing _ 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġspacing 1 6 Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . hm rc _ spacing _ 1 6 ) ĊĊĠĠĠĠĠĠĠ Ġbinding . headline Buttons Container . visibility Ġ= Ġif Ġ( buttons . isNotEmpty ()) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbuttons . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Margins ( spacing 1 6 , Ġspacing 8 , Ġspacing 1 6 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . background Tint List Ġ= ĠContext Compat . getColor State List ( context , ĠR . color . hm rc _ white ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . headline Buttons Container . addView ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠType ( val Ġheadline BackgroundColor : ĠInt , Ġval Ġheadline Tint : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWARNING ( R . color . hm rc _ information _ message _ warning _ headline _ background , ĠR . color . hm rc _ always _ black ), ĊĠĠĠĠĠĠĠ ĠINFO ( R . color . hm rc _ information _ message _ info _ headline _ background , ĠR . color . hm rc _ white ), ĊĠĠĠĠĠĠĠ ĠU RG ENT ( R . color . hm rc _ information _ message _ ur gent _ headline _ background , ĠR . color . hm rc _ white ), ĊĠĠĠĠĠĠĠ ĠNOTICE ( R . color . hm rc _ information _ message _ notice _ headline _ background , ĠR . color . hm rc _ white ) ĊĠĠĠ Ġ} Ċ } Ċ