package Ġcom . k ido zh . dis cu zh ub . activities Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . k ido zh . dis cu zh ub . R Ċ import Ġcom . k ido zh . dis cu zh ub . adapter . App Theme Adapter Ċ import Ġcom . k ido zh . dis cu zh ub . databinding . Activity Choose Theme Binding Ċ import Ġcom . k ido zh . dis cu zh ub . entities . App Theme Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . Theme Utils Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . User Preference Utils Ċ import Ġes . dm oral . toast y . Toast y Ċ Ċ class ĠChoose Theme Activity Ġ: ĠAppCompatActivity (), ĠApp Theme Adapter . On Theme Card Clicked Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠActivity Choose Theme Binding ĊĠĠĠ Ġval ĠTAG Ġ= ĠChoose Theme Activity :: class . simple Name ĊĠĠĠ Ġval Ġstyle List Ġ= ĠTheme Utils . style List ĊĠĠĠ Ġval Ġadapter Ġ= ĠApp Theme Adapter () ĊĠĠĠ Ġlateinit Ġvar Ġtheme List Ġ: ĠArrayList < App Theme > ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġconfigure Theme () ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Choose Theme Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġconfigure ActionBar () ĊĠĠĠĠĠĠĠ Ġconfigure Recycler view () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure Theme (){ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠUser Preference Utils . get Theme Index ( this ) ĊĠĠĠĠĠĠĠ Ġif ( position Ġ< Ġstyle List . size ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Theme ( style List [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// theme . apply Style ( style List [ position ], true ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure ActionBar (){ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure Recycler view (){ ĊĠĠĠĠĠĠĠ Ġtheme List Ġ= ĠTheme Utils ( this ). theme List ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠUser Preference Utils . get Theme Index ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . theme Recycler view . layout Manager Ġ= ĠGrid LayoutManager ( this , Ġ 4 ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Configure Ġre cycler view Ġ"+ theme List . size ) ĊĊĊĠĠĠĠĠĠĠ Ġbinding . theme Recycler view . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġadapter . add App Theme ( theme List , position ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( item . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish After Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Theme Card Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠChange Ġtheme ĊĠĠĠĠĠĠĠ Ġif ( position Ġ< Ġstyle List . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . info ( this , getString ( theme List [ position ]. name Resource ), Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Theme ( style List [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme . apply Style ( style List [ position ], true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Preference Utils . set Theme Index ( this , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . change Selected App Theme ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrecreate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }