package Ġcom . chr yn an . colors . sample . android . screen Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . material . Circular Progress Indicator Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġco il . Image Loader Ċ import Ġcom . chr yn an . colors . palette . Sw atch Ċ import Ġcom . chr yn an . colors . sample . android . R Ċ import Ġcom . chr yn an . colors . sample . android . action . Generate Palette From Resource Action Ċ import Ġcom . chr yn an . colors . sample . android . action . Generate Palette From Uri Action Ċ import Ġcom . chr yn an . colors . sample . android . comp osable . Sw atch Item Ċ import Ġcom . chr yn an . colors . sample . android . data . Color Data Ċ import Ġcom . chr yn an . colors . sample . android . presenter . Palette Presenter Ċ import Ġcom . chr yn an . colors . sample . android . reducer . Palette Reducer Ċ import Ġcom . chr yn an . colors . sample . android . state . Palette Change Ċ import Ġcom . chr yn an . colors . sample . android . state . Palette Intent Ċ import Ġcom . chr yn an . colors . sample . android . state . Palette State Ċ import Ġcom . chr yn an . colors . sample . android . util . to Color Data Ċ import Ġcom . chr yn an . presentation . Presenter Factory Ċ import Ġcom . chr yn an . presentation . compose . layout . Layout Ċ import Ġcom . chr yn an . ui . components . image . Image Ċ Ċ class ĠPalette Screen ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġimage Loader : ĠImage Loader , ĊĠĠĠ Ġprivate Ġval Ġon Sw atch Selected : Ġ( Sw atch ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval ĠonChange Color Data : Ġ( Color Data ) Ġ-> ĠUnit Ċ ) Ġ: ĠLayout < Palette Intent , ĠPalette State , ĠPalette Change >() Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġpresenter Factory : ĠPres enter Factory < Palette Intent , ĠPalette State , ĠPalette Change > Ġ= ĊĠĠĠĠĠĠĠ ĠPres enter Factory Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPalette Presenter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreducer Ġ= ĠPalette Reducer (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Palette From Resources Ġ= ĠGenerate Palette From Resource Action ( context Ġ= Ġcontext ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Palette From Uri Ġ= ĠGenerate Palette From Uri Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Loader Ġ= Ġimage Loader ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġresource Id Ġ= ĠR . drawable . palette _ test _ ter ti ary ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġoverride Ġfun ĠOn Layout ( state : ĠPalette State ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( data Ġ= Ġpainter Resource ( resourceId )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPalette State . Loading Ġ-> Ġrender Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPalette State . Display ing Loaded Ġ-> Ġrender Loaded ( state Ġ= Ġstate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPalette State . Display ing Error Ġ-> ĠText ( state . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Bind () ĊĊĠĠĠĠĠĠĠ Ġintent ( Palette Intent . Load Resource ( resourceId Ġ= Ġresource Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Composable Naming ") ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġprivate Ġfun Ġrender Loading () Ġ{ ĊĠĠĠĠĠĠĠ ĠBox ( modifier Ġ= ĠModifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( modifier Ġ= ĠModifier . align ( Alignment . Center )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Composable Naming ") ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġprivate Ġfun Ġrender Loaded ( state : ĠPalette State . Display ing Loaded ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpalette State Ġby Ġremember Ġ{ Ġmutable State Of ( state . palette ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġpalette State . dom inant Sw atch ?. let Ġ{ Ġsw atch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Color Data ( sw atch . color . to Color Data ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠLazy Column Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw atch Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette State . dom inant Sw atch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Dominant ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Sw atch Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw atch Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette State . vi br ant Sw atch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" V ibr ant ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Sw atch Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw atch Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette State . vi br ant Light Sw atch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" V ibr ant ĠLight ", ĠonClick Ġ= Ġon Sw atch Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw atch Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette State . vi br ant Dark Sw atch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" V ibr ant ĠDark ", ĠonClick Ġ= Ġon Sw atch Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw atch Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette State . muted Sw atch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Mut ed ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Sw atch Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw atch Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette State . muted Light Sw atch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Mut ed ĠLight ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Sw atch Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw atch Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette State . muted Dark Sw atch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Mut ed ĠDark ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Sw atch Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ