package Ġig rek . force aw aken . settings . preferences Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġkotlin . reflect . K Class ĊĊ Ċ abstract Ġclass ĠPreference Type Definition < T Ġ: ĠAny >( val ĠdefaultValue : ĠT ) Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġload ( shared Preferences : ĠSharedPreferences , ĠpropertyName : ĠString ): ĠT ĊĊĠĠĠ Ġabstract Ġfun Ġsave ( editor : ĠSharedPreferences . Editor , ĠpropertyName : ĠString , Ġvalue : ĠAny ) ĊĊĠĠĠ Ġopen Ġfun Ġprimitive 2 entity ( primitive : ĠAny ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprimitive Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġentity 2 primitive ( entity : ĠAny ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġentity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalid Class (): ĠK Class < out ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠdefaultValue :: class ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠString Preference Type ( ĊĠĠĠ ĠdefaultValue : ĠString Ċ ) Ġ: ĠPreference Type Definition < String >( defaultValue ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload ( shared Preferences : ĠSharedPreferences , ĠpropertyName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshared Preferences . getString ( propertyName , ĠdefaultValue ) Ġ?: ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( editor : ĠSharedPreferences . Editor , ĠpropertyName : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġeditor . putString ( propertyName , Ġvalue Ġas ĠString ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLong Preference Type ( ĊĠĠĠ ĠdefaultValue : ĠLong Ċ ) Ġ: ĠPreference Type Definition < Long >( defaultValue ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload ( shared Preferences : ĠSharedPreferences , ĠpropertyName : ĠString ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshared Preferences . getLong ( propertyName , ĠdefaultValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( editor : ĠSharedPreferences . Editor , ĠpropertyName : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġeditor . put Long ( propertyName , Ġvalue Ġas ĠLong ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFloat Preference Type ( ĊĠĠĠ ĠdefaultValue : ĠFloat Ċ ) Ġ: ĠPreference Type Definition < Float >( defaultValue ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload ( shared Preferences : ĠSharedPreferences , ĠpropertyName : ĠString ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshared Preferences . get Float ( propertyName , ĠdefaultValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( editor : ĠSharedPreferences . Editor , ĠpropertyName : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġeditor . put Float ( propertyName , Ġvalue Ġas ĠFloat ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBoolean Preference Type ( ĊĠĠĠ ĠdefaultValue : ĠBoolean Ċ ) Ġ: ĠPreference Type Definition < Boolean >( defaultValue ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload ( shared Preferences : ĠSharedPreferences , ĠpropertyName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshared Preferences . getBoolean ( propertyName , ĠdefaultValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( editor : ĠSharedPreferences . Editor , ĠpropertyName : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġeditor . put Boolean ( propertyName , Ġvalue Ġas ĠBoolean ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGeneric String Id Preference Type < T Ġ: ĠAny >( ĊĠĠĠ ĠdefaultValue : ĠT , ĊĠĠĠ Ġprivate Ġval Ġserializer : Ġ( T ) Ġ-> ĠString , ĊĠĠĠ Ġprivate Ġval Ġde serializer : Ġ( String ) Ġ-> ĠT ? Ċ ) Ġ: ĠPreference Type Definition < T >( defaultValue ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload ( shared Preferences : ĠSharedPreferences , ĠpropertyName : ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstring Val : ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences . getString ( propertyName , Ġnull ) Ġ?: Ġreturn ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġreturn Ġde serializer ( string Val ) Ġ?: ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( editor : ĠSharedPreferences . Editor , ĠpropertyName : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġserialized : ĠString Ġ= Ġserializer ( value Ġas ĠT ) ĊĠĠĠĠĠĠĠ Ġeditor . putString ( propertyName , Ġserialized ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprimitive 2 entity ( primitive : ĠAny ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġprimitive Ġas ? ĠString Ġ?: Ġreturn ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġreturn Ġde serializer ( id ) Ġ?: ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġentity 2 primitive ( entity : ĠAny ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġserializer (( entity Ġas ? ĠT ) Ġ?: ĠdefaultValue ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGeneric Long Id Preference Type < T Ġ: ĠAny >( ĊĠĠĠ ĠdefaultValue : ĠT , ĊĠĠĠ Ġprivate Ġval Ġserializer : Ġ( T ) Ġ-> ĠLong , ĊĠĠĠ Ġprivate Ġval Ġde serializer : Ġ( Long ) Ġ-> ĠT ? Ċ ) Ġ: ĠPreference Type Definition < T >( defaultValue ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload ( shared Preferences : ĠSharedPreferences , ĠpropertyName : ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Serialized Ġ= Ġserializer ( defaultValue ) ĊĠĠĠĠĠĠĠ Ġval Ġlong Val : ĠLong Ġ= Ġshared Preferences . getLong ( propertyName , Ġdefault Serialized ) ĊĠĠĠĠĠĠĠ Ġreturn Ġde serializer ( long Val ) Ġ?: ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( editor : ĠSharedPreferences . Editor , ĠpropertyName : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġserialized : ĠLong Ġ= Ġserializer ( value Ġas ĠT ) ĊĠĠĠĠĠĠĠ Ġeditor . put Long ( propertyName , Ġserialized ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprimitive 2 entity ( primitive : ĠAny ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġprimitive Ġas ? ĠLong Ġ?: Ġreturn ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġreturn Ġde serializer ( id ) Ġ?: ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġentity 2 primitive ( entity : ĠAny ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġserializer (( entity Ġas ? ĠT ) Ġ?: ĠdefaultValue ) ĊĠĠĠ Ġ} Ċ } Ċ