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 android.app.Application
|
||||||
import com.facebook.stetho.Stetho
|
import com.facebook.stetho.Stetho
|
||||||
import com.owenlejeune.tvtime.di.modules.networkModule
|
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.androidContext
|
||||||
import org.koin.android.ext.koin.androidLogger
|
import org.koin.android.ext.koin.androidLogger
|
||||||
import org.koin.core.context.startKoin
|
import org.koin.core.context.startKoin
|
||||||
@@ -19,7 +20,10 @@ class TvTimeApplication: Application() {
|
|||||||
if (BuildConfig.DEBUG) Level.ERROR else Level.NONE
|
if (BuildConfig.DEBUG) Level.ERROR else Level.NONE
|
||||||
)
|
)
|
||||||
androidContext(this@TvTimeApplication)
|
androidContext(this@TvTimeApplication)
|
||||||
modules(networkModule)
|
modules(
|
||||||
|
networkModule,
|
||||||
|
preferencesModule
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BuildConfig.DEBUG) {
|
if (BuildConfig.DEBUG) {
|
||||||
|
|||||||
@@ -2,10 +2,15 @@ package com.owenlejeune.tvtime.di.modules
|
|||||||
|
|
||||||
import com.owenlejeune.tvtime.BuildConfig
|
import com.owenlejeune.tvtime.BuildConfig
|
||||||
import com.owenlejeune.tvtime.api.*
|
import com.owenlejeune.tvtime.api.*
|
||||||
|
import com.owenlejeune.tvtime.preferences.AppPreferences
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
|
|
||||||
val networkModule = module {
|
val networkModule = module {
|
||||||
single { if (BuildConfig.DEBUG) DebugHttpClient() else ProdHttpClient() }
|
single { if (BuildConfig.DEBUG) DebugHttpClient() else ProdHttpClient() }
|
||||||
single<Converter> { GsonConverter() }
|
single<Converter> { GsonConverter() }
|
||||||
single { (baseUrl: String) -> Client(baseUrl) }
|
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(
|
CustomSwitch(
|
||||||
modifier = Modifier.padding(40.dp, 12.dp),
|
modifier = Modifier.padding(40.dp, 12.dp),
|
||||||
|
switchState = checkedState,
|
||||||
onCheckChanged = { isChecked ->
|
onCheckChanged = { isChecked ->
|
||||||
checkedState.value = isChecked
|
checkedState.value = isChecked
|
||||||
onCheckChanged(isChecked)
|
onCheckChanged(isChecked)
|
||||||
|
|||||||
@@ -6,20 +6,24 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import com.owenlejeune.tvtime.preferences.AppPreferences
|
||||||
import com.owenlejeune.tvtime.ui.components.PaletteView
|
import com.owenlejeune.tvtime.ui.components.PaletteView
|
||||||
import com.owenlejeune.tvtime.ui.components.TopLevelSwitch
|
import com.owenlejeune.tvtime.ui.components.TopLevelSwitch
|
||||||
|
import org.koin.java.KoinJavaComponent.get
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SettingsTab() {
|
fun SettingsTab(preferences: AppPreferences = get(AppPreferences::class.java)) {
|
||||||
Column(modifier = Modifier.fillMaxSize()) {
|
Column(modifier = Modifier.fillMaxSize()) {
|
||||||
val showPalette = remember { mutableStateOf(false) }
|
val usePreferences = remember { mutableStateOf(preferences.usePreferences) }
|
||||||
TopLevelSwitch(
|
TopLevelSwitch(
|
||||||
text = "Show Palette",
|
text = "Show Palette",
|
||||||
|
checkedState = usePreferences,
|
||||||
onCheckChanged = { isChecked ->
|
onCheckChanged = { isChecked ->
|
||||||
showPalette.value = isChecked
|
usePreferences.value = isChecked
|
||||||
|
preferences.usePreferences = isChecked
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
if (showPalette.value) {
|
if (usePreferences.value) {
|
||||||
PaletteView()
|
PaletteView()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user