|
import android.annotation.SuppressLint |
|
import android.content.SharedPreferences |
|
import kotlin.properties.ReadWriteProperty |
|
import kotlin.reflect.KProperty |
|
|
|
|
|
class BooleanSharedPreferencesDelegate(val preferences: SharedPreferences, val key: String, val defValue: Boolean, val writeSynchronously: Boolean = false) : ReadWriteProperty<Any, Boolean> { |
|
override fun getValue(thisRef: Any, property: KProperty<*>): Boolean = preferences.getBoolean(key, defValue) |
|
|
|
@SuppressLint("CommitPrefEdits") |
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Boolean) { |
|
val editor = preferences.edit().putBoolean(key, value) |
|
if (writeSynchronously) { |
|
editor.commit() |
|
} else { |
|
editor.apply() |
|
} |
|
} |
|
} |
|
|
|
class FloatSharedPreferencesDelegate(val preferences: SharedPreferences, val key: String, val defValue: Float, val writeSynchronously: Boolean = false) : ReadWriteProperty<Any, Float> { |
|
override fun getValue(thisRef: Any, property: KProperty<*>): Float = preferences.getFloat(key, defValue) |
|
@SuppressLint("CommitPrefEdits") |
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Float) { |
|
val editor = preferences.edit().putFloat(key, value) |
|
if (writeSynchronously) { |
|
editor.commit() |
|
} else { |
|
editor.apply() |
|
} |
|
} |
|
} |
|
|
|
class IntSharedPreferencesDelegate(val preferences: SharedPreferences, val key: String, val defValue: Int, val writeSynchronously: Boolean = false) : ReadWriteProperty<Any, Int> { |
|
override fun getValue(thisRef: Any, property: KProperty<*>): Int = preferences.getInt(key, defValue) |
|
|
|
@SuppressLint("CommitPrefEdits") |
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Int) { |
|
val editor = preferences.edit().putInt(key, value) |
|
if (writeSynchronously) { |
|
editor.commit() |
|
} else { |
|
editor.apply() |
|
} |
|
} |
|
} |
|
|
|
class LongSharedPreferencesDelegate(val preferences: SharedPreferences, val key: String, val defValue: Long, val writeSynchronously: Boolean = false) : ReadWriteProperty<Any, Long> { |
|
override fun getValue(thisRef: Any, property: KProperty<*>): Long = preferences.getLong(key, defValue) |
|
|
|
@SuppressLint("CommitPrefEdits") |
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Long) { |
|
val editor = preferences.edit().putLong(key, value) |
|
if (writeSynchronously) { |
|
editor.commit() |
|
} else { |
|
editor.apply() |
|
} |
|
} |
|
} |
|
|
|
class StringSharedPreferencesDelegate(val preferences: SharedPreferences, val key: String, val defValue: String, val writeSynchronously: Boolean = false) : ReadWriteProperty<Any, String> { |
|
override fun getValue(thisRef: Any, property: KProperty<*>): String = preferences.getString(key, defValue) |
|
|
|
@SuppressLint("CommitPrefEdits") |
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: String) { |
|
val editor = preferences.edit().putString(key, value) |
|
if (writeSynchronously) { |
|
editor.commit() |
|
} else { |
|
editor.apply() |
|
} |
|
} |
|
} |
|
|
|
class StringSetSharedPreferencesDelegate(val preferences: SharedPreferences, val key: String, val defValue: Set<String>, val writeSynchronously: Boolean = false) : ReadWriteProperty<Any, Set<String>> { |
|
override fun getValue(thisRef: Any, property: KProperty<*>): Set<String> = preferences.getStringSet(key, defValue) |
|
|
|
@SuppressLint("CommitPrefEdits") |
|
override fun setValue(thisRef: Any, property: KProperty<*>, value: Set<String>) { |
|
val editor = preferences.edit().putStringSet(key, value) |
|
if (writeSynchronously) { |
|
editor.commit() |
|
} else { |
|
editor.apply() |
|
} |
|
} |
|
} |