package Ġcom . pro l ific interactive . pat ron s Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . SharedPreferences . On Shared Preference ChangeListener Ċ Ċ /** Ċ Ġ* ĠThe Ġtype ĠBase Ġpreference . Ċ Ġ* Ċ Ġ* Ġ@ param Ġ< T > Ġthe Ġtype Ġparameter Ġhold Ġby Ġthe Ġshared Ġpreference . Ċ Ġ*/ Ċ /** Ċ Ġ* ĠInstanti ates Ġa Ġnew ĠBase Ġpreference . Ċ Ġ* Ċ Ġ* Ġ@ param Ġpreferences Ġthe Ġshared Ġpreferences Ċ Ġ* Ġ@ param Ġkey Ġthe Ġkey Ċ Ġ* Ġ@ param ĠdefaultValue Ġthe Ġdefault Ġvalue Ċ Ġ*/ Ċ abstract Ġclass ĠBase Preference < T >( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġshared Ġpreferences . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval Ġpreferences : ĠSharedPreferences , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġshared Ġpreference ĠKey . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval Ġkey : ĠString , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠDefault Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval ĠdefaultValue : ĠT Ċ ) Ġ: ĠPreference < T > Ġ{ ĊĊĠ Ġprivate Ġval Ġlisteners : ĠMutable Map < On Preference ChangeListener < T ? >, ĠOn Shared Preference ChangeListener > Ġ= Ġmutable Map Of () ĊĊĠ Ġoverride Ġfun Ġdelete () Ġ= Ġpreferences . edit (). remove ( key ). apply () ĊĊĠ Ġoverride Ġfun ĠisSet () Ġ= Ġpreferences . contains ( key ) ĊĊĠ Ġoverride Ġfun Ġregister ChangeListener ( listener : ĠOn Preference ChangeListener < T ?> ) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= ĠOn Shared Preference ChangeListener Ġ{ Ġ_, Ġ_ Ġ-> Ġlistener ( get ()) Ġ} ĊĠĠĠ Ġpreferences . register On Shared Preference ChangeListener ( l ) ĊĠĠĠ Ġlisteners [ listener ] Ġ= Ġl ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġunregister ChangeListener ( listener : ĠOn Preference ChangeListener < T ?> ) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlisteners [ listener ] ĊĠĠĠ Ġpreferences . unregister On Shared Preference ChangeListener ( l ) ĊĠĠĠ Ġlisteners . remove ( listener ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġunregister All ChangeListener () Ġ{ ĊĠĠĠ Ġlisteners . forEach Ġ{ Ġpreferences . unregister On Shared Preference ChangeListener ( it . value ) Ġ} ĊĠĠĠ Ġlisteners . clear () ĊĠ Ġ} Ċ }