/** Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠAn i Trend Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġco . anit rend . arch . extension . settings Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . res . Resources Ċ import Ġco . anit rend . arch . extension . ext . UN SAFE Ċ import Ġco . anit rend . arch . extension . preference . Boolean Preference Ċ import Ġco . anit rend . arch . extension . preference . Enum Preference Ċ import Ġco . anit rend . arch . extension . preference . Float Preference Ċ import Ġco . anit rend . arch . extension . preference . Int Preference Ċ import Ġco . anit rend . arch . extension . preference . Long Preference Ċ import Ġco . anit rend . arch . extension . preference . Nullable String Preference Ċ import Ġco . anit rend . arch . extension . preference . String Preference Ċ import Ġco . anit rend . arch . extension . settings . contract . Abstract Setting Ċ import Ġkotlinx . coroutines . channels . await Close Ċ import Ġkotlinx . coroutines . channels . send Blocking Ċ import Ġkotlinx . coroutines . flow . callback Flow Ċ Ċ private Ġtype alias ĠSettings Listener Ġ= ĠSharedPreferences . On Shared Preference ChangeListener Ċ Ċ /** Ċ Ġ* Ġ@ since Ġv 1 . 3 . 0 Ċ Ġ* Ġ@ see ĠAbstract Setting Ċ Ġ*/ Ċ class ĠEnum Setting < T Ġ: ĠEnum < *> >( ĊĠĠĠ Ġkey : ĠInt , ĊĠĠĠ Ġdefault : ĠT , ĊĠĠĠ Ġresources : ĠResources , ĊĠĠĠ Ġpreference : ĠSharedPreferences Ċ ) Ġ: ĠAbstract Setting < T >( preference , Ġdefault ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġidentifier Ġ= Ġresources . getString ( key ) ĊĊĠĠĠ Ġoverride Ġvar Ġvalue Ġby ĠEnum Preference ( identifier , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġval Ġflow Ġby Ġlazy ( UN SAFE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠSettings Listener Ġ{ Ġ_, Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġidentifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Blocking ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . register On Shared Preference ChangeListener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġpreference . unregister On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ since Ġv 1 . 3 . 0 Ċ Ġ* Ġ@ see ĠAbstract Setting Ċ Ġ*/ Ċ class ĠBoolean Setting ( ĊĠĠĠ Ġkey : ĠInt , ĊĠĠĠ Ġdefault : ĠBoolean , ĊĠĠĠ Ġresources : ĠResources , ĊĠĠĠ Ġpreference : ĠSharedPreferences Ċ ) Ġ: ĠAbstract Setting < Boolean >( preference , Ġdefault ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġidentifier Ġ= Ġresources . getString ( key ) ĊĊĠĠĠ Ġoverride Ġvar Ġvalue Ġby ĠBoolean Preference ( identifier , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġval Ġflow Ġby Ġlazy ( UN SAFE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠSettings Listener Ġ{ Ġ_, Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġidentifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Blocking ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . register On Shared Preference ChangeListener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġpreference . unregister On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ since Ġv 1 . 3 . 0 Ċ Ġ* Ġ@ see ĠAbstract Setting Ċ Ġ*/ Ċ class ĠInt Setting ( ĊĠĠĠ Ġkey : ĠInt , ĊĠĠĠ Ġdefault : ĠInt , ĊĠĠĠ Ġresources : ĠResources , ĊĠĠĠ Ġpreference : ĠSharedPreferences Ċ ) Ġ: ĠAbstract Setting < Int >( preference , Ġdefault ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġidentifier Ġ= Ġresources . getString ( key ) ĊĊĠĠĠ Ġoverride Ġvar Ġvalue Ġby ĠInt Preference ( identifier , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġval Ġflow Ġby Ġlazy ( UN SAFE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠSettings Listener Ġ{ Ġ_, Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġidentifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Blocking ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . register On Shared Preference ChangeListener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġpreference . unregister On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ since Ġv 1 . 3 . 0 Ċ Ġ* Ġ@ see ĠAbstract Setting Ċ Ġ*/ Ċ class ĠFloat Setting ( ĊĠĠĠ Ġkey : ĠInt , ĊĠĠĠ Ġdefault : ĠFloat , ĊĠĠĠ Ġresources : ĠResources , ĊĠĠĠ Ġpreference : ĠSharedPreferences Ċ ) Ġ: ĠAbstract Setting < Float >( preference , Ġdefault ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġidentifier Ġ= Ġresources . getString ( key ) ĊĊĠĠĠ Ġoverride Ġvar Ġvalue Ġby ĠFloat Preference ( identifier , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġval Ġflow Ġby Ġlazy ( UN SAFE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠSettings Listener Ġ{ Ġ_, Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġidentifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Blocking ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . register On Shared Preference ChangeListener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġpreference . unregister On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ since Ġv 1 . 3 . 0 Ċ Ġ* Ġ@ see ĠAbstract Setting Ċ Ġ*/ Ċ class ĠLong Setting ( ĊĠĠĠ Ġkey : ĠInt , ĊĠĠĠ Ġdefault : ĠLong , ĊĠĠĠ Ġresources : ĠResources , ĊĠĠĠ Ġpreference : ĠSharedPreferences Ċ ) Ġ: ĠAbstract Setting < Long >( preference , Ġdefault ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġidentifier Ġ= Ġresources . getString ( key ) ĊĊĠĠĠ Ġoverride Ġvar Ġvalue Ġby ĠLong Preference ( identifier , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġval Ġflow Ġby Ġlazy ( UN SAFE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠSettings Listener Ġ{ Ġ_, Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġidentifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Blocking ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . register On Shared Preference ChangeListener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġpreference . unregister On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ since Ġv 1 . 3 . 0 Ċ Ġ* Ġ@ see ĠAbstract Setting Ċ Ġ*/ Ċ class ĠString Setting ( ĊĠĠĠ Ġkey : ĠInt , ĊĠĠĠ Ġdefault : ĠString , ĊĠĠĠ Ġresources : ĠResources , ĊĠĠĠ Ġpreference : ĠSharedPreferences Ċ ) Ġ: ĠAbstract Setting < String >( preference , Ġdefault ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġidentifier Ġ= Ġresources . getString ( key ) ĊĊĠĠĠ Ġoverride Ġvar Ġvalue Ġby ĠString Preference ( identifier , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġval Ġflow Ġby Ġlazy ( UN SAFE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠSettings Listener Ġ{ Ġ_, Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġidentifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Blocking ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . register On Shared Preference ChangeListener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġpreference . unregister On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ since Ġv 1 . 3 . 0 Ċ Ġ* Ġ@ see ĠAbstract Setting Ċ Ġ*/ Ċ class ĠNullable String Setting ( ĊĠĠĠ Ġkey : ĠInt , ĊĠĠĠ Ġdefault : ĠString ?, ĊĠĠĠ Ġresources : ĠResources , ĊĠĠĠ Ġpreference : ĠSharedPreferences Ċ ) Ġ: ĠAbstract Setting < String ? >( preference , Ġdefault ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġidentifier Ġ= Ġresources . getString ( key ) ĊĊĠĠĠ Ġoverride Ġvar Ġvalue Ġby ĠNullable String Preference ( identifier , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġval Ġflow Ġby Ġlazy ( UN SAFE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠSettings Listener Ġ{ Ġ_, Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġidentifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Blocking ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference . register On Shared Preference ChangeListener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġpreference . unregister On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ