/* Ċ // ĠCopyright Ġ 2 0 1 8 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠMIT - 0 . Ċ Ġ*/ Ċ package Ġcom . amazonaws . mobile . samples . app sync settings . ui Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġcom . amazonaws . mobile . samples . app sync settings . R Ċ import Ġcom . amazonaws . mobile . samples . app sync settings . R . id . prefs _ theme _ spinner Ċ import Ġcom . amazonaws . mobile . samples . app sync settings . R . id . prefs _ toolbar Ċ import Ġcom . amazonaws . mobile . samples . app sync settings . models . Theme Ċ import Ġcom . amazonaws . mobile . samples . app sync settings . models . Themes Ċ import Ġcom . amazonaws . mobile . samples . app sync settings . view models . Preferences Activity ViewModel Ċ import Ġkotlinx . android . synt hetic . main . activity _ preferences .* Ċ import Ġorg . jetbrains . ank o . toast Ċ import Ġorg . k oin . android . architecture . ext . viewModel Ċ Ċ class ĠPreferences Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby ĠviewModel < Preferences Activity ViewModel >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ preferences ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( prefs _ toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠPopulate Ġthe Ġspinner ĊĠĠĠĠĠĠĠ Ġval Ġthemes Ġ= ĠThe mes . instance . getAll Themes (). map Ġ{ Ġentry Ġ-> Ġentry . value . displayName Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtheme Adapter : ĠArray Adapter < String > Ġ= ĠArray Adapter ( this , Ġandroid . R . layout . simple _ spinner _ item , Ġthemes ) ĊĠĠĠĠĠĠĠ Ġtheme Adapter . set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġprefs _ theme _ spinner . adapter Ġ= Ġtheme Adapter ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġinitial Ġposition Ġof Ġthe Ġspinner ĊĠĠĠĠĠĠĠ Ġprefs _ theme _ spinner . setSelection ( theme Adapter . getPosition ( viewModel . theme . value ?. displayName Ġ?: ĠThe mes . default Theme )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠListen Ġfor Ġchanges Ġto Ġthe Ġtheme ĊĠĠĠĠĠĠĠ Ġprefs _ theme _ spinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ Ġ/* ĠDo ĠNothing Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdisplayName : ĠString Ġ= Ġparent ?. getItem At Position ( position ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= ĠThe mes . instance . get Theme By DisplayName ( displayName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Theme ( theme ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Theme Ġupdated ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . theme . observe ( this , ĠObserver Ġ{ Ġupdate Theme ( it ) Ġ}) ĊĠĠĠĠĠĠĠ Ġupdate Theme ( viewModel . theme . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġhook Ġis Ġcalled Ġwhenever Ġan Ġitem Ġin Ġthe Ġoptions Ġmenu Ġis Ġselected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ= Ġwhen ( item !!. itemId ) Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġconsume Ġ{ Ġfinish () Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġby Ġthe Ġmenu Ġcallbacks Ġto Ġconsume Ġan Ġevent Ġ- Ġthis Ġis Ġjust Ġsh orthand ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconsume ( lambda : Ġ() Ġ-> ĠUnit ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġlambda () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġthe Ġheader Ġt int Ġbased Ġon Ġthe Ġtheme ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate Theme ( theme : ĠTheme ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtheme ?. let Ġ{ Ġsupport ActionBar ?. setBackground Drawable ( Color Drawable ( getColor ( theme . color ))) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ