@ file : Suppress (" PROTECT ED _ CALL _ FROM _ PUBLIC _ INLINE ") Ċ Ċ package Ġ Ġcom . lifecycle . binding . util Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . content . edit Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . databinding . adapters . Number Picker Binding Adapter . setValue Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . lifecycle . binding . util . fromJson Ċ import Ġcom . lifecycle . binding . util . toJson Ċ import Ġtim ber . log . Tim ber Ċ import Ġkotlin . properties . Deleg ates Ċ import Ġkotlin . properties . Observable Property Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ import Ġkotlin . reflect . full . super classes ĊĊ Ċ fun ĠSharedPreferences . put Bundle ( bundle : ĠBundle , Ġcommit : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġedit ( commit ) Ġ{ Ġfor Ġ( key Ġin Ġbundle . keySet ()) Ġput Value ( key , Ġbundle [ key ]) Ġ} Ċ } Ċ Ċ fun ĠSharedPreferences . put All ( map : ĠMap < String , ĠAny >, Ġcommit : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġedit ( commit ) Ġ{ Ġfor Ġ( key Ġin Ġmap . keys ) Ġput Value ( key , Ġmap [ key ]) Ġ} Ċ } Ċ Ċ fun Ġ< T > ĠSharedPreferences . Editor . put Value ( key : ĠString , Ġit : ĠT ) Ġ{ ĊĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġput Int ( key , Ġit ) ĊĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġput String ( key , Ġit ) ĊĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġput Boolean ( key , Ġit ) ĊĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġput Float ( key , Ġit ) ĊĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġput Long ( key , Ġit ) ĊĠĠĠĠĠĠĠ Ġis ĠCollection < *> Ġ-> Ġput String Set ( key , Ġit . converter Ġ{ ĠtoJson Without BaseType ( it ) Ġ}) ĊĠĠĠĠĠĠĠ Ġis ĠObservable Property < *> Ġ-> Ġit . value ()?. let Ġ{ Ġput Value ( key , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġput String ( key , Ġit . toJson ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠObservable Property <* >. value (): ĠAny ? Ġ= Ġrun Catch ing Ġ{ Ġjava Class . kotlin . super classes [ 0 ]. java . declared Fields [ 0 ]. apply Ġ{ Ġis Accessible Ġ= Ġtrue Ġ}. get ( this @ value ) Ġ}. get OrNull () Ċ Ċ private Ġfun Ġ< T > ĠtoJson Without BaseType ( it : ĠT ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġis ĠInt , ĠBoolean , ĠDouble , ĠFloat , ĠByte , ĠLong , ĠString , ĠChar Ġ-> Ġit . toString () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit . toJson () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T > ĠSharedPreferences . vet o able ( t : ĠT , Ġcommit : ĠBoolean Ġ= Ġfalse , Ġblock : Ġ( T , ĠT ) Ġ-> ĠBoolean Ġ= Ġ{ Ġo , Ġn Ġ-> Ġo Ġ!= Ġn Ġ}): ĠRead Write Property < Any ?, ĠT > Ġ{ ĊĠĠĠ Ġreturn ĠDeleg ates . vet o able ( t ) Ġ{ Ġk , Ġo , Ġn Ġ-> ĊĠĠĠĠĠĠĠ Ġblock ( o , Ġn ). apply Ġ{ Ġif Ġ( this ) Ġput Pair ( k . name Ġto Ġn Ġas ĠAny , Ġcommit Ġ= Ġcommit ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠSharedPreferences . put Pair ( var arg Ġpairs : ĠPair < String , ĠAny >, Ġcommit : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġput Bundle ( bundle Of (* pairs ), Ġcommit ) Ċ } Ċ Ċ fun ĠSharedPreferences . put Value ( key : ĠString , Ġvalue : ĠAny , Ġcommit : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġedit ( commit ) Ġ{ Ġput Value ( key , Ġvalue ) Ġ} Ċ } Ċ Ċ fun ĠSharedPreferences . put ( any : ĠAny , Ġcommit : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġedit ( commit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( field Ġin Ġany . java Class . getAll Fields ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ Ġput Value ( field . no Delegate Name (), Ġfield [ any ]) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . i ("$ all ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠSharedPreferences . clear ( commit : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġedit ( commit ) Ġ{ Ġclear () Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠSharedPreferences . get ( t : ĠT Ġ= ĠT :: class . java . newInstance ()): ĠT Ġ{ ĊĠĠĠ Ġfor Ġ( field Ġin ĠT :: class . java . getAll Fields ()) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġbean FieldSet ( field , Ġt Ġas ĠAny , Ġall [ field . name ]) ĊĠĠĠĠĠĠĠ Ġall [ field . no Delegate Name ()] ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean SetValue ( field . no Delegate Name (), Ġt Ġas ĠAny , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġt Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠSharedPreferences . get ( key : ĠString , Ġt : ĠT ? Ġ= Ġnull ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( T :: class ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBoolean :: class Ġ-> Ġget Boolean ( key , Ġt Ġas ĠBoolean ) Ġas ĠT ĊĠĠĠĠĠĠĠ ĠInt :: class Ġ-> Ġget Int ( key , Ġt Ġas ĠInt ) Ġas ĠT ĊĠĠĠĠĠĠĠ ĠFloat :: class Ġ-> Ġget Float ( key , Ġt Ġas ĠFloat ) Ġas ĠT ĊĠĠĠĠĠĠĠ ĠString :: class Ġ-> ĠgetString ( key , Ġt Ġas ĠString ) Ġas ĠT ĊĠĠĠĠĠĠĠ ĠLong :: class Ġ-> Ġget Long ( key , Ġt Ġas ĠLong ) Ġas ĠT ĊĠĠĠĠĠĠĠ ĠSet :: class Ġ-> ĠgetString Set ( key , Ġdefault Set ( t )) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠgetString ( key , Ġt ?. toJson ()) ?. fromJson < T >() Ġ?: Ġget () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T > Ġdefault Set ( t : ĠT ?): ĠSet < String >? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( t Ġ! is ĠCollection <* >) Ġset Of ( toJson Without BaseType ( t )) ĊĠĠĠ Ġelse Ġreturn ĠHashSet < String >(). apply Ġ{ ĠforEach Ġ{ Ġadd ( toJson Without BaseType ( it )) Ġ} Ġ} Ċ } ĊĊ Ċ inline Ġfun Ġ< re ified ĠT > ĠSharedPreferences . live Data ( key : ĠString , Ġt : ĠT ): ĠMutable LiveData < T > Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠMutable LiveData < T >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetValue () Ġ= Ġsuper . getValue () Ġ?: Ġget ( key , Ġt ). apply Ġ{ ĠsetValue ( t ) Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetValue ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . setValue ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Value ( key , Ġvalue Ġas ĠAny ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ // Ċ // open Ġclass ĠShared Preference LiveData < T >: LiveData < T > (){ Ċ // ĠĠĠ Ġoverride Ġfun ĠgetValue () = super . getValue () Ċ // Ċ // ĠĠĠ Ġpublic Ġoverride Ġfun ĠsetValue ( value : ĠT ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġsuper . setValue ( value ) Ċ // ĠĠĠ Ġ} Ċ //} ĊĊĊ