2020-10-08 22:20:20 +02:00
package org.mosad.teapod.preferences
2020-10-23 11:28:47 +02:00
import android.content.Context
2020-11-23 20:11:10 +01:00
import android.content.SharedPreferences
2020-10-23 11:28:47 +02:00
import org.mosad.teapod.R
2020-11-23 20:11:10 +01:00
import org.mosad.teapod.util.DataTypes
2021-12-28 20:32:44 +01:00
import java.util.*
2020-10-23 11:28:47 +02:00
2020-10-08 22:20:20 +02:00
object Preferences {
2022-03-05 20:41:39 +01:00
var preferredLocale : Locale = Locale . forLanguageTag ( " en-US " ) // TODO this should be saved (potential offline usage) but fetched on start
2021-12-28 20:32:44 +01:00
internal set
2022-03-06 18:43:02 +01:00
var preferSubbed = false
internal set
2020-11-15 13:39:33 +01:00
var autoplay = true
internal set
2021-05-09 20:31:51 +02:00
var devSettings = false
internal set
2021-01-16 00:16:47 +01:00
var theme = DataTypes . Theme . DARK
2020-11-23 20:11:10 +01:00
internal set
2020-10-08 22:20:20 +02:00
2022-03-20 12:38:49 +01:00
// dev settings
var updatePlayhead = true
internal set
2020-11-23 20:11:10 +01:00
private fun getSharedPref ( context : Context ) : SharedPreferences {
return context . getSharedPreferences (
2020-10-23 11:28:47 +02:00
context . getString ( R . string . preference _file _key ) ,
Context . MODE _PRIVATE
)
2020-11-23 20:11:10 +01:00
}
2020-10-08 22:20:20 +02:00
2022-03-06 18:43:02 +01:00
fun savePreferredLocal ( context : Context , preferredLocale : Locale ) {
2020-11-23 20:11:10 +01:00
with ( getSharedPref ( context ) . edit ( ) ) {
2022-03-06 18:43:02 +01:00
putString ( context . getString ( R . string . save _key _preferred _local ) , preferredLocale . toLanguageTag ( ) )
2020-10-23 11:28:47 +02:00
apply ( )
}
2020-10-08 22:20:20 +02:00
2022-03-06 18:43:02 +01:00
this . preferredLocale = preferredLocale
2020-10-08 22:20:20 +02:00
}
2022-03-06 18:43:02 +01:00
fun savePreferSecondary ( context : Context , preferSubbed : Boolean ) {
2022-03-05 20:41:39 +01:00
with ( getSharedPref ( context ) . edit ( ) ) {
2022-03-06 18:43:02 +01:00
putBoolean ( context . getString ( R . string . save _key _prefer _secondary ) , preferSubbed )
2022-03-05 20:41:39 +01:00
apply ( )
}
2022-03-06 18:43:02 +01:00
this . preferSubbed = preferSubbed
2022-03-05 20:41:39 +01:00
}
2020-11-15 13:39:33 +01:00
fun saveAutoplay ( context : Context , autoplay : Boolean ) {
2020-11-23 20:11:10 +01:00
with ( getSharedPref ( context ) . edit ( ) ) {
2020-11-15 13:39:33 +01:00
putBoolean ( context . getString ( R . string . save _key _autoplay ) , autoplay )
apply ( )
}
this . autoplay = autoplay
}
2021-05-09 20:31:51 +02:00
fun saveDevSettings ( context : Context , devSettings : Boolean ) {
with ( getSharedPref ( context ) . edit ( ) ) {
putBoolean ( context . getString ( R . string . save _key _dev _settings ) , devSettings )
apply ( )
}
this . devSettings = devSettings
}
2020-11-23 20:11:10 +01:00
fun saveTheme ( context : Context , theme : DataTypes . Theme ) {
with ( getSharedPref ( context ) . edit ( ) ) {
putString ( context . getString ( R . string . save _key _theme ) , theme . toString ( ) )
apply ( )
}
this . theme = theme
}
2022-03-20 12:38:49 +01:00
fun saveUpdatePlayhead ( context : Context , updatePlayhead : Boolean ) {
with ( getSharedPref ( context ) . edit ( ) ) {
putBoolean ( context . getString ( R . string . save _key _update _playhead ) , updatePlayhead )
apply ( )
}
this . updatePlayhead = updatePlayhead
}
2020-10-23 11:28:47 +02:00
/ * *
* initially load the stored values
* /
fun load ( context : Context ) {
2020-11-23 20:11:10 +01:00
val sharedPref = getSharedPref ( context )
2020-10-08 22:20:20 +02:00
2022-03-05 20:41:39 +01:00
preferredLocale = Locale . forLanguageTag (
sharedPref . getString (
context . getString ( R . string . save _key _preferred _local ) , " en-US "
) ?: " en-US "
)
2022-03-06 18:43:02 +01:00
preferSubbed = sharedPref . getBoolean (
context . getString ( R . string . save _key _prefer _secondary ) , false
)
2020-11-15 13:39:33 +01:00
autoplay = sharedPref . getBoolean (
context . getString ( R . string . save _key _autoplay ) , true
)
2021-05-09 20:31:51 +02:00
devSettings = sharedPref . getBoolean (
context . getString ( R . string . save _key _dev _settings ) , false
)
2020-11-23 20:11:10 +01:00
theme = DataTypes . Theme . valueOf (
sharedPref . getString (
2021-01-16 00:16:47 +01:00
context . getString ( R . string . save _key _theme ) , DataTypes . Theme . DARK . toString ( )
) ?: DataTypes . Theme . DARK . toString ( )
2020-11-23 20:11:10 +01:00
)
2022-03-20 12:38:49 +01:00
// dev settings
updatePlayhead = sharedPref . getBoolean (
context . getString ( R . string . save _key _update _playhead ) , true
)
2020-10-08 22:20:20 +02:00
}
2020-10-23 11:28:47 +02:00
2020-10-08 22:20:20 +02:00
}