Ċ Ċ package Ġdev . pat rick gold . fl or is board . settings . components Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . preference . Preference Ċ import Ġandroidx . preference . Preference . On Preference ClickListener Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġdev . pat rick gold . fl or is board . R Ċ import Ġdev . pat rick gold . fl or is board . ime . core . Pref Helper Ċ import Ġdev . pat rick gold . fl or is board . ime . extension . Asset Ref Ċ import Ġdev . pat rick gold . fl or is board . ime . theme . Theme Manager Ċ import Ġdev . pat rick gold . fl or is board . settings . Theme Manager Activity Ċ Ċ /** Ċ Ġ* ĠCustom Ġpreference Ġwhich Ġhandles Ġthe Ġtheme Ġpreset Ġselection Ġdialog Ġand Ġshows Ġa Ġsummary Ġin Ġthe Ċ Ġ* Ġlist . Ċ Ġ*/ Ċ class ĠTheme Selector Preference Ġ: ĠPreference , ĠSharedPreferences . On Shared Preference ChangeListener Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠdefaultValue : ĠString Ġ= Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPref Helper . Theme . DAY _ THEME _ REF Ġ-> Ġ" assets : ime / theme / fl or is _ day . json " ĊĠĠĠĠĠĠĠ ĠPref Helper . Theme . N IGHT _ THEME _ REF Ġ-> Ġ" assets : ime / theme / fl or is _ night . json " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġdialog : ĠAlertDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġprefs : ĠPref Helper Ġ= ĠPref Helper . getDefaultInstance ( context ) ĊĠĠĠ Ġprivate Ġval Ġtheme Manager : ĠTheme Manager Ġ= ĠTheme Manager . default () ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġthis ( context , Ġnull ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġthis ( context , Ġattrs , ĠR . attr . dialog Preference Style ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Preference ClickListener Ġ= ĠOn Preference ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Theme Selector Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Hierarchy ( preference Manager : ĠPreference Manager ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Hierarchy ( preference Manager ) ĊĠĠĠĠĠĠĠ Ġsummary Ġ= Ġgenerate Summary Text () ĊĠĠĠĠĠĠĠ Ġprefs . shared . register On Shared Preference ChangeListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog ?. is Showing Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ?. dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprefs . shared . unregister On Shared Preference ChangeListener ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Detached () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Shared Preference Changed ( sp : ĠSharedPreferences ?, Ġkey Changed : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( key Changed Ġ== Ġkey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= Ġgenerate Summary Text () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġthe Ġsummary Ġtext Ġto Ġdisplay Ġand Ġreturns Ġit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Summary Text (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPref Helper . Theme . DAY _ THEME _ REF Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeta Index Ġ= Ġtheme Manager . indexed Day Theme Refs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsset Ref . fromString ( prefs . theme . day Theme Ref ). on Success Ġ{ Ġref Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Index [ ref ]?. label ?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPref Helper . Theme . N IGHT _ THEME _ REF Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeta Index Ġ= Ġtheme Manager . indexed Night Theme Refs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsset Ref . fromString ( prefs . theme . night Theme Ref ). on Success Ġ{ Ġref Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Index [ ref ]?. label ?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" !! Ġinvalid Ġref Ġ!! " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShows Ġthe Ġtheme Ġselector Ġdialog . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Theme Selector Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( context , ĠTheme Manager Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġi . putExtra ( Theme Manager Activity . EXTRA _ KEY , Ġkey ) ĊĠĠĠĠĠĠĠ Ġi . putExtra ( Theme Manager Activity . EXTRA _ DEFAULT _ VALUE , ĠdefaultValue ) ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( i ) ĊĠĠĠ Ġ} Ċ } Ċ