mirror of
https://github.com/owenlejeune/TVTime.git
synced 2025-11-20 10:40:53 -05:00
setup preferences
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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<Converter> { GsonConverter() }
|
||||
single { (baseUrl: String) -> Client(baseUrl) }
|
||||
}
|
||||
|
||||
val preferencesModule = module {
|
||||
single { AppPreferences(get()) }
|
||||
}
|
||||
@@ -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<Boolean>
|
||||
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 <T> SharedPreferences.get(key: String, java: Class<T>): T {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// inner class PrefsMutableState<T>(val key: String): MutableState<T> {
|
||||
// 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")
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
@@ -68,6 +68,7 @@ fun TopLevelSwitch(
|
||||
)
|
||||
CustomSwitch(
|
||||
modifier = Modifier.padding(40.dp, 12.dp),
|
||||
switchState = checkedState,
|
||||
onCheckChanged = { isChecked ->
|
||||
checkedState.value = isChecked
|
||||
onCheckChanged(isChecked)
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user