package Ġcom . dap ulu ous . github user view ers . activity Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Compound Button Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . datastore . core . DataStore Ċ import Ġandroidx . datastore . preferences . core . Preferences Ċ import Ġandroidx . datastore . preferences . preferences DataStore Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . dap ulu ous . github user view ers . R Ċ import Ġcom . dap ulu ous . github user view ers . controller . Setting ViewModel Ċ import Ġcom . dap ulu ous . github user view ers . controller . Setting ViewModel Factory Ċ import Ġcom . google . android . material . switch material . Switch Material Ċ Ċ val ĠContext . data Store : ĠData Store < Preferences > Ġby Ġpreferences DataStore ( name Ġ= Ġ" settings ") Ċ Ċ class ĠSetting Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ setting ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġ" Settings " ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġswitch Theme Ġ= ĠfindViewById < Switch Material >( R . id . switch _ theme ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpref Ġ= ĠSetting Preferences . getInstance ( data Store ) ĊĠĠĠĠĠĠĠ Ġval Ġsetting ViewModel Ġ= ĠViewModel Provider ( this , ĠSetting ViewModel Factory ( pref )). get ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting ViewModel :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsetting ViewModel . get Theme Settings (). observe ( this , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġis Dark Mode Active : ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Dark Mode Active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Theme . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Theme . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġswitch Theme . setOn Checked ChangeListener Ġ{ Ġ_: ĠCompound Button ?, Ġis Checked : ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetting ViewModel . save Theme Setting ( isChecked ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }