diff --git a/app/src/main/java/com/owenlejeune/tvtime/TvTimeApplication.kt b/app/src/main/java/com/owenlejeune/tvtime/TvTimeApplication.kt index bf0857e..427e63b 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/TvTimeApplication.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/TvTimeApplication.kt @@ -3,6 +3,7 @@ package com.owenlejeune.tvtime import android.app.Application import com.facebook.stetho.Stetho import com.owenlejeune.tvtime.di.modules.networkModule +import com.owenlejeune.tvtime.di.modules.preferencesModule import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidLogger import org.koin.core.context.startKoin @@ -19,7 +20,10 @@ class TvTimeApplication: Application() { if (BuildConfig.DEBUG) Level.ERROR else Level.NONE ) androidContext(this@TvTimeApplication) - modules(networkModule) + modules( + networkModule, + preferencesModule + ) } if (BuildConfig.DEBUG) { diff --git a/app/src/main/java/com/owenlejeune/tvtime/di/modules/modules.kt b/app/src/main/java/com/owenlejeune/tvtime/di/modules/modules.kt index 104e182..8305ffb 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/di/modules/modules.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/di/modules/modules.kt @@ -2,10 +2,15 @@ package com.owenlejeune.tvtime.di.modules import com.owenlejeune.tvtime.BuildConfig import com.owenlejeune.tvtime.api.* +import com.owenlejeune.tvtime.preferences.AppPreferences import org.koin.dsl.module val networkModule = module { single { if (BuildConfig.DEBUG) DebugHttpClient() else ProdHttpClient() } single { GsonConverter() } single { (baseUrl: String) -> Client(baseUrl) } +} + +val preferencesModule = module { + single { AppPreferences(get()) } } \ No newline at end of file diff --git a/app/src/main/java/com/owenlejeune/tvtime/preferences/AppPreferences.kt b/app/src/main/java/com/owenlejeune/tvtime/preferences/AppPreferences.kt new file mode 100644 index 0000000..b091079 --- /dev/null +++ b/app/src/main/java/com/owenlejeune/tvtime/preferences/AppPreferences.kt @@ -0,0 +1,53 @@ +package com.owenlejeune.tvtime.preferences + +import android.content.Context +import android.content.SharedPreferences + +class AppPreferences(context: Context) { + + companion object { + private val PREF_FILE = "tvtime_shared_preferences" + + private val USE_PREFERENCES = "use_android_12_colors" + } + + private val preferences: SharedPreferences = context.getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE) + +// val usePreferences: MutableState + var usePreferences: Boolean + get() = preferences.getBoolean(USE_PREFERENCES, false) + set(value) { preferences.put(USE_PREFERENCES, value) } + + private fun SharedPreferences.put(key: String, value: Any?) { + edit().apply { + when (value) { + is Boolean -> putBoolean(key, value) + is Int -> putInt(key, value) + is Long -> putLong(key, value) + is Float -> putFloat(key, value) + is String -> putString(key, value) + } + apply() + } + } + +// private fun SharedPreferences.get(key: String, java: Class): T { +// +// } +// +// inner class PrefsMutableState(val key: String): MutableState { +// override var value: T +// get() = preferences.get(key, T::class.java) +// set(value) { preferences.put(key, value) } +// +// override fun component1(): T { +// TODO("Not yet implemented") +// } +// +// override fun component2(): (T) -> Unit { +// TODO("Not yet implemented") +// } +// +// } + +} \ No newline at end of file diff --git a/app/src/main/java/com/owenlejeune/tvtime/ui/components/Widgets.kt b/app/src/main/java/com/owenlejeune/tvtime/ui/components/Widgets.kt index 98c5d5b..bfc4276 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/ui/components/Widgets.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/ui/components/Widgets.kt @@ -68,6 +68,7 @@ fun TopLevelSwitch( ) CustomSwitch( modifier = Modifier.padding(40.dp, 12.dp), + switchState = checkedState, onCheckChanged = { isChecked -> checkedState.value = isChecked onCheckChanged(isChecked) diff --git a/app/src/main/java/com/owenlejeune/tvtime/ui/screens/tabs/SettingsTab.kt b/app/src/main/java/com/owenlejeune/tvtime/ui/screens/tabs/SettingsTab.kt index 0c491af..f460b37 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/ui/screens/tabs/SettingsTab.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/ui/screens/tabs/SettingsTab.kt @@ -6,20 +6,24 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import com.owenlejeune.tvtime.preferences.AppPreferences import com.owenlejeune.tvtime.ui.components.PaletteView import com.owenlejeune.tvtime.ui.components.TopLevelSwitch +import org.koin.java.KoinJavaComponent.get @Composable -fun SettingsTab() { +fun SettingsTab(preferences: AppPreferences = get(AppPreferences::class.java)) { Column(modifier = Modifier.fillMaxSize()) { - val showPalette = remember { mutableStateOf(false) } + val usePreferences = remember { mutableStateOf(preferences.usePreferences) } TopLevelSwitch( text = "Show Palette", + checkedState = usePreferences, onCheckChanged = { isChecked -> - showPalette.value = isChecked + usePreferences.value = isChecked + preferences.usePreferences = isChecked } ) - if (showPalette.value) { + if (usePreferences.value) { PaletteView() } }