aboutsummaryrefslogtreecommitdiff
path: root/library/src/main/kotlin/ca/allanwang/kau/kpref/KPref.kt
blob: add79b9621b73751bba24858e3a120a8e2b53721 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package ca.allanwang.kau.kpref

import android.content.Context
import android.content.SharedPreferences

/**
 * Created by Allan Wang on 2017-06-07.
 */
open class KPref {

    lateinit private var c: Context
    lateinit internal var PREFERENCE_NAME: String
    private var initialized = false

    fun initialize(c: Context, preferenceName: String) {
        if (initialized) throw KPrefException("KPref object $preferenceName has already been initialized; please only do so once")
        initialized = true
        this.c = c.applicationContext
        PREFERENCE_NAME = preferenceName
    }

    internal val sp: SharedPreferences by lazy {
        if (!initialized) throw KPrefException("KPref object has not yet been initialized; please initialize it with a context and preference name")
        c.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE) }

    internal val prefMap: MutableMap<String, KPrefDelegate<*>> = mutableMapOf()

    fun reset() {
        prefMap.values.forEach { it.invalidate() }
    }

}