/* Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . microsoft . device . samples . dual screen experience . presentation . product . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . google . android . material . color . Material Colors Ċ import Ġcom . microsoft . device . samples . dual screen experience . R Ċ import Ġcom . microsoft . device . samples . dual screen experience . domain . product . model . Product Color Ċ import Ġcom . microsoft . device . samples . dual screen experience . domain . product . model . Product Type Ċ import Ġcom . microsoft . device . samples . dual screen experience . presentation . util . replace Click Action Label Ċ Ċ class ĠCustom ize Card View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠCard View ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġvar Ġproduct Color : ĠProduct Color ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Color () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġproduct Type : ĠProduct Type ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Shape () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdefault Card Radius Ġ= Ġcontext . resources . get Dimension ( R . dim en . card _ radius ) ĊĊĠĠĠ Ġprivate Ġval Ġselected Card Elevation Ġ= Ġcontext . resources . get Dimension ( R . dim en . customize _ card _ elevation ) ĊĠĠĠ Ġprivate Ġval Ġun selected Card Elevation Ġ= Ġ 0 f ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinf late ( context , ĠR . layout . card _ image _ view , Ġthis ) ĊĠĠĠĠĠĠĠ Ġradius Ġ= Ġdefault Card Radius ĊĠĠĠĠĠĠĠ Ġuse Compat Padding Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinit Attributes ( attrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Attributes ( attrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . theme . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Custom ize Card View , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Integer ( R . style able . Custom ize Card View _ product Color , ĠNOT _ INIT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠNOT _ INIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Color Ġ= ĠProduct Color . get ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Integer ( R . style able . Custom ize Card View _ product Type , ĠNOT _ INIT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠNOT _ INIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Type Ġ= ĠProduct Type . get ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Color () Ġ{ ĊĠĠĠĠĠĠĠ Ġproduct Color ?. let Ġ{ Ġcolor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < ImageView >( R . id . customize _ card _ item ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Ġ= ĠContext Compat . get Drawable ( context , ĠR . drawable . circle _ color ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġas ĠGradient Drawable ). setColor ( Context Compat . getColor ( context , Ġget Color Res ( color ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġun select () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Shape () Ġ{ ĊĠĠĠĠĠĠĠ Ġproduct Type ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < ImageView >( R . id . customize _ card _ item ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( Context Compat . get Drawable ( context , ĠgetType Drawable ( it ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġun select () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun select () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset Card BackgroundColor ( Context Compat . getColor ( context , Ġandroid . R . color . transparent )) ĊĠĠĠĠĠĠĠ Ġcard Elevation Ġ= Ġun selected Card Elevation ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġbuild Content Description () ĊĠĠĠĠĠĠĠ Ġreplace Click Action Label ( this , Ġresources . getString ( R . string . select _ action _ label )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset Card BackgroundColor ( Material Colors . getColor ( this , ĠR . attr . color Surface )) ĊĠĠĠĠĠĠĠ Ġcard Elevation Ġ= Ġselected Card Elevation ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġbuild Content Description () ĊĠĠĠĠĠĠĠ Ġreplace Click Action Label ( this , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Content Description (): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Color Ġ!= Ġnull Ġ-> Ġproduct Color . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Type Ġ!= Ġnull Ġ-> Ġproduct Type . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNOT _ INIT Ġ= Ġ- 1 ĊĠĠĠ Ġ} Ċ } Ċ