/** Ċ Ġ* ĠBack pack Ġfor ĠAndroid Ġ- ĠSky scanner 's ĠDesign ĠSystem Ċ Ġ* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 2 1 ĠSky scanner ĠLtd Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġnet . sky scanner . back pack . demo Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġnet . sky scanner . back pack . demo . components . Settings Theme Option Ċ import Ġnet . sky scanner . back pack . demo . data . SharedPreferences Ċ import Ġnet . sky scanner . back pack . toggle . B pk Switch Ċ Ċ class ĠSettings Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠ Ġprivate Ġlateinit Ġvar Ġthemes : ĠList < Settings Theme Option > ĊĠ Ġprivate Ġval Ġtheme Mapping Ġ= Ġmap Of ( ĊĠĠĠ Ġ" App Theme " Ġto ĠR . style . App Theme , ĊĠĠĠ Ġ" L ondon " Ġto ĠR . style . L ondon Theme , ĊĠĠĠ Ġ" Do ha " Ġto ĠR . style . Do ha Theme ĊĠ Ġ) ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġval Ġtheme Ġ= ĠSharedPreferences . get Theme ( this ) ĊĠĠĠ Ġval Ġhas Custom Theme Ġ= Ġtheme Ġ!= ĠR . style . App Theme ĊĊĠĠĠ ĠsetContentView ( R . layout . activity _ settings ) ĊĊĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . settings _ toolbar ) ĊĠĠĠ Ġtoolbar . title Ġ= Ġ" Settings " ĊĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠ Ġthemes Ġ= ĠlistOf ( ĊĠĠĠĠĠ ĠfindViewById ( R . id . theme _ l ondon ), ĊĠĠĠĠĠ ĠfindViewById ( R . id . theme _ do ha ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġtheme Toggle Ġ= ĠfindViewById < B pk Switch >( R . id . theme _ toggle ) ĊĊĠĠĠ Ġtheme Toggle ?. apply Ġ{ ĊĠĠĠĠĠ Ġset On Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠ Ġon Theme Switch Clicked ( isChecked ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( has Custom Theme ) Ġ{ ĊĠĠĠĠĠ Ġtheme Toggle ?. apply Ġ{ Ġis Checked Ġ= Ġtrue Ġ} ĊĠĠĠĠĠ Ġthemes . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( theme Mapping [ it . text ] Ġ== Ġtheme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . is Current Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġthis . on Back Pressed () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠ Ġ} ĊĊĠ Ġfun Ġon Theme Selected ( view : ĠView ) Ġ{ ĊĠĠĠ Ġthemes . forEach Ġ{ Ġit . is Current Ġ= Ġfalse Ġ} ĊĊĠĠĠ Ġview Ġas ĠSettings Theme Option ĊĠĠĠ Ġview . is Current Ġ= Ġ! view . is Current ĊĊĠĠĠ Ġupdate Theme () ĊĠ Ġ} ĊĊĠ Ġfun Ġon Theme Switch Clicked ( isChecked : ĠBoolean ) Ġ{ ĊĠĠĠ Ġval Ġtheme List Ġ= ĠfindViewById < LinearLayout >( R . id . themes _ list ) ĊĊĠĠĠ Ġthemes . forEach Ġ{ Ġit . is Current Ġ= Ġfalse Ġ} ĊĊĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠ Ġtheme List . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġtheme List . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ(! isChecked ) Ġ{ ĊĠĠĠĠĠ Ġupdate Theme () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate Theme () Ġ{ ĊĠĠĠ Ġvar Ġtheme Ġ= Ġ" App Theme " ĊĠĠĠ Ġthemes . forEach Ġ{ ĊĠĠĠĠĠ Ġif Ġ( it . is Current ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtheme Ġ= Ġit . text Ġas ĠString ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtheme Mapping [ theme ]?. let Ġ{ ĊĠĠĠĠĠ ĠSharedPreferences . save Theme ( this , Ġit ) ĊĠĠĠĠĠ ĠBack pack Demo Application . trigger Re birth ( this ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ