package Ġcom . an ook day . rp istream . stream . settings Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . an ook day . rp istream . R Ċ import Ġcom . an ook day . rp istream . databinding . Fragment Settings Binding Ċ import Ġcom . an ook day . rp istream . repository . database . User Ċ import Ġcom . an ook day . rp istream . stream . Current Fragment Name Ċ import Ġcom . an ook day . rp istream . stream . Stream Activity Ċ import Ġcom . an ook day . rp istream . stream . Stream ViewModel Ċ Ċ /** Ċ Ġ* ĠFragment Ġthat Ġallows Ġusers Ġto Ġchange Ġapp Ġconfigurations Ġ( eg . Ġstream Ġsettings , Ġaccessibility , Ġetc .) Ċ Ġ*/ Ċ class ĠSettings Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Settings Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠStream ViewModel Ġby Ġactivity ViewModels () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Settings Binding . inflate ( in flater , Ġcontainer , Ġfalse ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Config Item . onClick Ġ= Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ settings Fragment _ to _ video Config Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Config Item . onClick Ġ= Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ settings Fragment _ to _ audio Config Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdark Mode Item . onClick Ġ= Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ settings Fragment _ to _ dark Mode Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . observe ( view Lifecycle Owner , Ġ:: on User Change ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . setCurrent Fragment ( Current Fragment Name . SETTINGS ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠStream Activity ). edit Navigation Drawer ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . settings _ title , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ baseline _ arrow _ back _ 2 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon User Change ( user : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser ?. settings ?. let Ġ{ Ġsettings Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( settings . dark Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDark Mode . ON . value Ġ-> Ġdark Mode Item . subtitle Ġ= ĠgetString ( R . string . dark _ mode _ on ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDark Mode . OFF . value Ġ-> Ġdark Mode Item . subtitle Ġ= ĠgetString ( R . string . dark _ mode _ off ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDark Mode . SYSTEM . value Ġ-> Ġdark Mode Item . subtitle Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . dark _ mode _ system ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Mode Item . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchecked Ġ= Ġsettings . developer Mode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon CheckedChanged Ġ= Ġ{ Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Developer Mode ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }