/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 0 ĠN HS X . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ package Ġuk . n hs . n hs x . sonar . android . app . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . core . content . edit Ċ Ċ abstract Ġclass ĠShared Preference Provider < T >( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġpreference Name : ĠString , ĊĠĠĠ Ġprotected Ġval Ġpreference Key : ĠString Ċ ) Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġshared Preferences : ĠSharedPreferences Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . get SharedPreferences ( preference Name , ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ= Ġshared Preferences . edit Ġ{ Ġclear () Ġ} ĊĊĠĠĠ Ġfun Ġhas (): ĠBoolean Ġ= Ġshared Preferences . contains ( preference Key ) ĊĊĠĠĠ Ġabstract Ġfun Ġget (): ĠT ĊĊĠĠĠ Ġabstract Ġfun Ġset ( value : ĠT ) Ċ } Ċ Ċ open Ġclass ĠShared Preference String Provider ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġpreference Name : ĠString , ĊĠĠĠ Ġpreference Key : ĠString , ĊĠĠĠ Ġprivate Ġval ĠdefaultValue : ĠString Ġ= Ġ"" Ċ ) Ġ: ĠShared Preference Provider < String >( context , Ġpreference Name , Ġpreference Key ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġshared Preferences . getString ( preference Key , ĠdefaultValue ) Ġ?: ĠdefaultValue ĊĊĠĠĠ Ġoverride Ġfun Ġset ( value : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit Ġ{ Ġput String ( preference Key , Ġvalue ) Ġ} Ċ } Ċ Ċ open Ġclass ĠShared Preference Serial izing Provider < T >( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġpreference Name : ĠString , ĊĠĠĠ Ġpreference Key : ĠString , ĊĠĠĠ Ġprivate Ġval Ġserialize : Ġ( T ) Ġ-> ĠString ?, ĊĠĠĠ Ġprivate Ġval Ġdeserialize : Ġ( String ?) Ġ-> ĠT Ċ ) Ġ: ĠShared Preference Provider < T >( context , Ġpreference Name , Ġpreference Key ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget (): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġshared Preferences . getString ( preference Key , Ġnull ). let ( deserialize ) ĊĊĠĠĠ Ġoverride Ġfun Ġset ( value : ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit Ġ{ Ġput String ( preference Key , Ġvalue ?. let ( serialize )) Ġ} Ċ } Ċ