diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceKeys.kt b/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceKeys.kt new file mode 100644 index 0000000..1bcbe27 --- /dev/null +++ b/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceKeys.kt @@ -0,0 +1,9 @@ +package jackall.overlaymulticounter.common + +/** + * SharedPreferencesのkeyを管理するクラス + * + * Created by matsumoto_k on 2017/11/08. + */ +enum class PreferenceKeys(val preferenceNames: PreferenceNames, val valueClass: Class<*>, val key: String) { +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceNames.kt b/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceNames.kt new file mode 100644 index 0000000..843351b --- /dev/null +++ b/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceNames.kt @@ -0,0 +1,11 @@ +package jackall.overlaymulticounter.common + +/** + * SharedPreferencesのデータの名前を管理するクラス + * + * Created by matsumoto_k on 2017/11/08. + */ +enum class PreferenceNames(val rawValue: String) { + DEFAULT("default"), + CONFIG("config") +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/utils/MySharedPref.kt b/app/src/main/kotlin/jackall/overlaymulticounter/utils/MySharedPref.kt new file mode 100644 index 0000000..274c162 --- /dev/null +++ b/app/src/main/kotlin/jackall/overlaymulticounter/utils/MySharedPref.kt @@ -0,0 +1,66 @@ +package jackall.overlaymulticounter.utils + +import android.content.Context +import android.content.SharedPreferences +import android.preference.PreferenceManager +import jackall.overlaymulticounter.common.PreferenceKeys +import jackall.overlaymulticounter.common.PreferenceNames + +/** + * SharedPreferencesを管理するクラス + * + * Created by matsumoto_k on 2017/11/08. + */ +class MySharedPref(context: Context, val preferenceNames: PreferenceNames) { + private var sp: SharedPreferences + + init { + if (preferenceNames == PreferenceNames.DEFAULT) { + this.sp = PreferenceManager.getDefaultSharedPreferences(context) + } else { + this.sp = context.getSharedPreferences(preferenceNames.name, Context.MODE_PRIVATE) + } + } + + /** + * SharedPreferencesから値を取得する + * + * @param preferenceKeys 取得する値のkey + * @param valueClass 取得する値のClass + * @param defaultValue 取得する値のデフォルトの値 + * @return + */ + fun getValue(preferenceKeys: PreferenceKeys, valueClass: Class<*>, defaultValue: Any): Any { + if (preferenceKeys.preferenceNames == preferenceNames) { + when (valueClass) { + Int::class.java -> return sp.getInt(preferenceKeys.key, defaultValue as Int) + String::class.java -> return sp.getString(preferenceKeys.key, defaultValue as String) + Boolean::class.java -> return sp.getBoolean(preferenceKeys.key, defaultValue as Boolean) + Float::class.java -> return sp.getFloat(preferenceKeys.key, defaultValue as Float) + } + } else { + throw IllegalArgumentException() + } + return -1 + } + + /** + * SharedPreferencesに値を保存する + * + * @param preferenceKeys 保存する値のkey + * @param valueClass 保存する値のClass + * @param value 保存する値 + */ + fun putValue(preferenceKeys: PreferenceKeys, valueClass: Class<*>, value: Any) { + if (preferenceKeys.preferenceNames == preferenceNames) { + when (valueClass) { + Int::class.java -> sp.edit().putInt(preferenceKeys.key, value as Int).apply() + String::class.java -> sp.edit().putString(preferenceKeys.key, value as String).apply() + Boolean::class.java -> sp.edit().putBoolean(preferenceKeys.key, value as Boolean).apply() + Float::class.java -> sp.edit().putFloat(preferenceKeys.key, value as Float).apply() + } + } else { + throw IllegalArgumentException() + } + } +} \ No newline at end of file