/* Ċ Ġ* ĠDevelop ed ĠBy ĠSh ud ipt o ĠTr af der Ċ Ġ* Ġ Ġon Ġ 8 / 2 4 / 1 8 Ġ 8 : 1 5 ĠPM Ċ Ġ* Ġ ĠCopyright Ġ( c ) 2 0 1 8 Ġ ĠSh ud ipt o ĠTr af der . Ċ Ġ*/ Ċ Ċ package Ġcom . i ams dt . p ssd . ui . color Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . graphics . drawable . Shape Drawable Ċ import Ġandroid . graphics . drawable . shapes . O val Shape Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Attr Res Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . i ams dt . p ssd . R Ċ import Ġcom . i ams dt . p ssd . ui . callback . ClickListener Ċ import Ġkotlinx . android . synt hetic . main . color _ item . view .* Ċ Ċ internal Ġdata Ġclass ĠColor Adapter ( private Ġval Ġmy Theme : ĠArrayList < My Theme >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġclick Listener : ĠClick Listener ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . Adapter < Color Adapter . Color ViewHolder >() Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠColor ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . color _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠColor ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠColor ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= Ġmy Theme [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind To ( theme ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Theme . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġfor Ġcreate Ġa Ġnew Ġdrawable ĊĠĠĠĠ Ġ* Ġwe Ġtake Ġa Ġcolor Ġid Ġand Ġshow Ġcolor Ġthrough Ġdrawable ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġcolor Ġid Ġfor Ġselected Ġcolor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Draw ables With Color (@ Color Int Ġid : ĠInt ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshape Drawable Ġ= ĠShape Drawable ( O val Shape ()) ĊĊĠĠĠĠĠĠĠ Ġ// initialize Ġ 3 2 Ġdb Ġvalue ĊĠĠĠĠĠĠĠ Ġshape Drawable . intrinsic Width Ġ= Ġpixel Converter ( 3 2 ) ĊĠĠĠĠĠĠĠ Ġshape Drawable . intrinsic Height Ġ= Ġpixel Converter ( 3 2 ) ĊĊĠĠĠĠĠĠĠ Ġshape Drawable . setColor Filter ( id , ĠPort er D uff . Mode . SRC ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġshape Drawable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethods Ġconvert Ġdp Ġto Ġpx ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdp Ġfloat Ġto Ġconvert ĊĠĠĠĠ Ġ* Ġ@ return Ġconverted Ġvalue Ġin Ġpx ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpixel Converter ( dp : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġdp . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . display Metrics ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethods Ġfor Ġfind Ġcolor Ġid Ġthrough Ġtheme ĊĠĠĠĠ Ġ* Ġ@ param Ġstyles ID Ġtheme Ġid Ġof Ġany Ġtheme ĊĠĠĠĠ Ġ* Ġ@ param Ġattr Id Ġcolor Ġtype Ġid Ġlike Ġcolor Ġprimary , Ġaccent Ġcolor ĊĠĠĠĠ Ġ* Ġ@ return Ġgiven Ġcolor Ġid Ġfrom Ġtheme Ġin Ġthe Ġbasis Ġof Ġcolor Attr ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Theme Color ( styles ID : ĠInt , Ġ@ Attr Res Ġattr Id : ĠInt ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtyped Value Ġ= Ġcontext . obtain Styled Attributes ( styles ID , Ġint ArrayOf ( attr Id )) ĊĠĠĠĠĠĠĠ Ġval Ġcolor From Theme Ġ= Ġtyped Value . getColor ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtyped Value . recycle () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcolor From Theme ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinner Ġclass ĠColor ViewHolder ( view Item : ĠView ) ĊĠĠĠĠĠĠĠ Ġ: ĠRecyclerView . ViewHolder ( view Item ), ĠView . OnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname : ĠTextView Ġ= Ġview Item . color _ list _ name ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprimary Color Txt : ĠTextView Ġ= Ġview Item . color _ list _ primary ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprimary Color Dark Txt : ĠTextView Ġ= Ġview Item . color _ list _ primary Dark ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġaccent Color Txt : ĠTextView Ġ= Ġview Item . color _ list _ accent ĊĠĠĠĠĠĠĠ Ġ// layout ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlinear Layout : ĠConstraint Layout Ġ= Ġview Item . color _ list _ linear Layout ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* Ġset Ġclick Ġlistener ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠMethods Ġfor Ġbind Ġall Ġview Ġwith Ġlatest Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbind To ( my Theme : ĠMy Theme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ex ert Ġfrom Ġmy Theme ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprimary Color Ġ= Ġget Theme Color ( my Theme . id , ĠR . attr . color Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprimary Color Dark Ġ= Ġget Theme Color ( my Theme . id , ĠR . attr . color Primary Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccent Color Ġ= Ġget Theme Color ( my Theme . id , ĠR . attr . color Accent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . text Ġ= Ġmy Theme . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . setTextColor ( primary Color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// circle Ġof Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Color Txt . background Ġ= Ġget Draw ables With Color ( primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Color Dark Txt . background Ġ= Ġget Draw ables With Color ( primary Color Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccent Color Txt . background Ġ= Ġget Draw ables With Color ( accent Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener . on Item Click ( adapter Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }