package Ġcom . phoenix pen . android . liv ew all paper Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . preference . Preference Manager Ċ import Ġcom . phoenix pen . android . utility . Observer Source Ċ import Ġcom . phoenix pen . game . settings . AppSettings Ċ import Ġcom . phoenix pen . game . simulation . E ternal Season Type Ċ Ċ /** Ċ Ġ* ĠThe Ġmain Ġclass Ġused Ġto Ġreceive Ġand Ġstore Ġuser Ġconfiguration Ġdata . Ċ Ġ* ĠOther Ġapp Ġcomponents Ġcan Ġsubscribe Ġit Ġin Ġorder Ġto Ġreceive Ġnotifications Ċ Ġ* Ġwhen Ġthe Ġconfiguration Ġdata Ġchanges . Ċ Ġ*/ Ċ class ĠConfiguration Ġ: ĠObserver Source < Configuration >() Ċ { ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcurrent Ġapplication Ġsettings Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġapp Settings : ĠApp Settings Ġ= ĠApp Settings () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSingleton Ġimplementation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġapp - global Ġsingleton Ġinstance Ġof Ġthis Ġclass ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠConfiguration () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġconfiguration Ġwas Ġalready Ġinitialized Ġusing Ġan Ġandroid Ġpreference ĊĠĠĠĠ Ġ* Ġinstance ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġvar Ġis Initialized Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitial ise Ġor Ġupdate Ġthe Ġconfiguration Ġstate Ġusing Ġthe Ġcurrent Ġapp Ġcontext . ĊĠĠĠĠ Ġ* ĠThis Ġwill Ġextract Ġall Ġneeded Ġinformation Ġfrom Ġthe Ġcurrently Ġactive ĠSharedPreferences ĊĠĠĠĠ Ġ* Ġinstance . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġctx ĠThe Ġapp Ġcontext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate ( ctx : ĠContext ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRetrieve Ġcurrent Ġpreferences ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( ctx ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDelegate Ġto Ġother Ġupdate Ġmethod ĊĠĠĠĠĠĠĠ Ġthis . update ( prefs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitial ise Ġor Ġupdate Ġthe Ġconfiguration Ġstate Ġusing ĠSharedPreferences Ġobject . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġprefs ĠThe ĠSharedPreferences Ġinstance Ġto Ġretrieve Ġdata Ġfrom ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate ( prefs : ĠSharedPreferences ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġpreferences Ġhere ĊĠĠĠĠĠĠĠ Ġthis . load Settings ( prefs ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNotify Ġall Ġsink s Ġof Ġthe Ġupdate ĊĠĠĠĠĠĠĠ Ġthis . notify All ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMark Ġas Ġinitialized ĊĠĠĠĠĠĠĠ Ġthis . isInitialized Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠActual Ġperform Ġsettings Ġload ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġprefs ĠThe ĠSharedPreferences Ġinstance Ġto Ġretrieve Ġdata Ġfrom ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload Settings ( prefs : ĠSharedPreferences ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . app Settings . enable Rain Ġ= Ġprefs . getBoolean (" enable _ rain ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġthis . app Settings . enable Snow Ġ= Ġprefs . getBoolean (" enable _ snow ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġthis . app Settings . enable Se asons Ġ= Ġprefs . getBoolean (" enable _ se asons ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġthis . app Settings . enable E ternal Season Ġ= Ġprefs . getBoolean (" enable _ et ern al _ season ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġthis . app Settings . et ern al Season Ġ= Ġthis . read E ternal Season ( prefs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread E ternal Season ( prefs : ĠSharedPreferences ): ĠE ternal Season Type ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġprefs . getString (" et ern al _ season ", ĠE ternal Season Type . Spring . toString ()) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġenum ValueOf ( value ) ĊĠĠĠ Ġ} Ċ }