package Ġio . github . de ll is d . quick save Ċ Ċ /** Ċ Ġ* ĠEn caps ulates Ġan Ġapplication Ġsetting . ĠThe Ġvalue Ġof Ġthe Ġsetting Ġcan Ġbe Ġaccessed , Ġupdated , Ġand Ġobserved Ġfrom Ċ Ġ* Ġinstances Ġof Ġthis Ġclass . ĠThe Ġvalue Ġcan Ġbe Ġaccessed Ġand Ġupdated Ġthrough Ġthe Ġ[ value ] Ġproperty Ġwhich Ġwill Ġread Ġor Ġwrite Ċ Ġ* Ġthe Ġvalue Ġto Ġthe Ġbacking Ġstorage Ġmethod Ġthrough Ġthe Ġ[ provider ]. Ċ Ġ* Ċ Ġ* ĠInstances Ġof Ġthis Ġclass Ġcan Ġbe Ġobtained Ġthrough Ġ[ Settings Provider . setting ] Ġor Ġ[ Settings Provider . adapt ed Setting ]. Ċ Ġ* Ċ Ġ* Ġ@ see ĠSettings Provider Ċ Ġ* Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġvalue Ġof Ġthe Ġsetting Ċ Ġ* Ġ@ param ĠR ĠThe Ġtype Ġto Ġbe Ġused Ġin Ġstoring Ġthe Ġsetting Ġvalue . ĠSome Ġstorage Ġmethods Ġmay Ġnot Ġsupport Ġstoring Ġcertain Ġtypes Ċ Ġ* Ġ( e . g . Ġ[ android . content . SharedPreferences ] Ġcan 't Ġstore Ġdates ), Ġso Ġthis Ġallows Ġfor Ġtypes Ġto Ġbe Ġadapted Ġto Ġa Ġform Ġthat Ġcan Ġbe Ġstored . ĠT Ġ-> ĠR Ċ Ġ* Ċ Ġ* Ġ@ property Ġprovider ĠThe Ġprovider Ġfrom Ġwhich Ġvalues Ġof Ġthis Ġsetting Ġwill Ġbe Ġread Ġfrom Ġand Ġwritten Ġto . Ċ Ġ* Ġ@ see ĠSettings Provider Ċ Ġ* Ċ Ġ* Ġ@ property Ġconfig ĠThe Ġdetails Ġof Ġthis Ġsetting Ġhas Ġbeen Ġconfigured . Ċ Ġ* Ġ@ see ĠConfiguration Ċ Ġ* Ċ Ġ* Ġ@ property Ġvalue ĠUsed Ġto Ġaccess Ġand Ġupdate Ġthe Ġvalue Ġof Ġthe Ġsetting Ċ Ġ*/ Ċ sealed Ġclass ĠSetting < T > Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġprovider : ĠSettings Provider , ĊĠĠĠ Ġval Ġconfig : ĠConfiguration < T > Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlisteners Ġ= Ġmutable Set Of <( T ) Ġ-> ĠUnit >() ĊĊĠĠĠ Ġopen Ġvar Ġvalue : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprovider . get ( this ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Listeners ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovider . set ( this , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġlistener Ġthat Ġwill Ġbe Ġcalled Ġback Ġwhenever Ġthis Ġsetting Ġhas Ġbeen Ġupdated . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġcallback Ġwhere Ġthe Ġnew Ġvalue Ġwill Ġbe Ġpassed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Listener ( listener : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġa Ġlistener . ĠThe Ġlistener Ġwill Ġno Ġlonger Ġbe Ġcalled Ġback Ġwhen Ġthis Ġsetting Ġhas Ġbeen Ġupdated . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġlistener Ġto Ġremove ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Listener ( listener : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġnotify Listeners ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit ( value ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠData Ġclass Ġthat Ġencaps ulates Ġhow Ġa Ġsetting Ġhas Ġbeen Ġconfigured . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġkey ĠThe Ġstring Ġkey Ġthat Ġis Ġused Ġto Ġidentify Ġthis Ġsetting Ġinternally Ġin Ġstorage . ĊĠĠĠĠ Ġ* Ġ@ property Ġtype ĠUsed Ġby Ġa Ġ[ Settings Provider ] Ġto Ġdetermine Ġhow Ġto Ġinternally Ġstore Ġor Ġretrieve Ġthe Ġsetting 's Ġvalue ĊĠĠĠĠ Ġ* Ġ@ property Ġadapter ĠAn Ġadapter Ġthat Ġcan Ġconvert Ġthe Ġsetting 's Ġvalue Ġto Ġanother Ġtype Ġthat Ġcan Ġbe Ġstored , Ġand Ġvice Ġvers a . ĊĠĠĠĠ Ġ* Ġ@ property Ġdefault ĠThe Ġdefault Ġvalue Ġfor Ġthis Ġsetting . ĊĠĠĠĠ Ġ* Ġ@ property Ġtitle ĠThe Ġtitle Ġto Ġdisplay Ġfor Ġthis Ġsetting Ġwhen Ġdisplayed Ġin Ġa ĠUI ĊĠĠĠĠ Ġ* Ġ@ property Ġcaption ĠThe Ġcaption Ġto Ġdisplay Ġfor Ġthis Ġsetting Ġwhen Ġdisplayed Ġin Ġa ĠUI ĊĠĠĠĠ Ġ* Ġ@ property Ġdepends On ĠAnother Ġsetting Ġwith Ġa Ġ[ Boolean ] Ġtype Ġthat Ġthis Ġsetting Ġdepends Ġon . ĠIn Ġa ĠUI , Ġthis Ġsetting Ġwill Ġonly Ġbe Ġenabled Ġif Ġthe Ġother Ġsetting Ġhas Ġa Ġvalue Ġof Ġ` true `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠConfiguration < T > Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġdefault : ĠT ?, ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġcaption : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġdepends On : ĠSetting < Boolean > ?, ĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠString ? ĊĠĠĠ Ġ) Ċ } Ċ Ċ class ĠBoolean Setting ( provider : ĠSettings Provider , Ġconfig : ĠConfiguration < Boolean >) Ġ: ĠSetting < Boolean >( provider , Ġconfig ) Ċ class ĠInt Setting ( provider : ĠSettings Provider , Ġconfig : ĠConfiguration < Int >) Ġ: ĠSetting < Int >( provider , Ġconfig ) Ċ class ĠLong Setting ( provider : ĠSettings Provider , Ġconfig : ĠConfiguration < Long >) Ġ: ĠSetting < Long >( provider , Ġconfig ) Ċ class ĠFloat Setting ( provider : ĠSettings Provider , Ġconfig : ĠConfiguration < Float >) Ġ: ĠSetting < Float >( provider , Ġconfig ) Ċ class ĠString Setting ( provider : ĠSettings Provider , Ġconfig : ĠConfiguration < String >) Ġ: ĠSetting < String >( provider , Ġconfig ) Ċ class ĠString Set Setting ( provider : ĠSettings Provider , Ġconfig : ĠConfiguration < Set < String >>) Ġ: ĊĠĠĠ ĠSetting < Set < String >>( provider , Ġconfig )