Use getEnum for theme preferences too

(cherry picked from commit f430b6f853cb61734d4c31d84be970aad94d1639)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt
This commit is contained in:
arkon 2020-05-25 15:13:30 -04:00 committed by Jobobby04
parent ee150d513f
commit 6641a7480c
4 changed files with 43 additions and 34 deletions

View File

@ -5,16 +5,25 @@ package eu.kanade.tachiyomi.data.preference
*/
object PreferenceValues {
const val THEME_MODE_LIGHT = "light"
const val THEME_MODE_DARK = "dark"
const val THEME_MODE_SYSTEM = "system"
// Keys are lowercase to match legacy string values
enum class ThemeMode {
light,
dark,
system,
}
const val THEME_LIGHT_DEFAULT = "default"
const val THEME_LIGHT_BLUE = "blue"
// Keys are lowercase to match legacy string values
enum class LightThemeVariant {
default,
blue,
}
const val THEME_DARK_DEFAULT = "default"
const val THEME_DARK_BLUE = "blue"
const val THEME_DARK_AMOLED = "amoled"
// Keys are lowercase to match legacy string values
enum class DarkThemeVariant {
default,
blue,
amoled,
}
enum class DisplayMode {
COMPACT_GRID,

View File

@ -69,11 +69,11 @@ class PreferencesHelper(val context: Context) {
fun clear() = prefs.edit().clear().apply()
fun themeMode() = flowPrefs.getString(Keys.themeMode, Values.THEME_MODE_SYSTEM)
fun themeMode() = flowPrefs.getEnum(Keys.themeMode, Values.ThemeMode.system)
fun themeLight() = flowPrefs.getString(Keys.themeLight, Values.THEME_LIGHT_DEFAULT)
fun themeLight() = flowPrefs.getEnum(Keys.themeLight, Values.LightThemeVariant.default)
fun themeDark() = flowPrefs.getString(Keys.themeDark, Values.THEME_DARK_DEFAULT)
fun themeDark() = flowPrefs.getEnum(Keys.themeDark, Values.DarkThemeVariant.default)
fun rotation() = flowPrefs.getInt(Keys.rotation, 1)

View File

@ -25,7 +25,7 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
private val lightTheme: Int by lazy {
when (preferences.themeLight().get()) {
Values.THEME_LIGHT_BLUE -> R.style.Theme_Tachiyomi_LightBlue
Values.LightThemeVariant.blue -> R.style.Theme_Tachiyomi_LightBlue
else -> {
when {
// Light status + navigation bar
@ -47,8 +47,8 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
private val darkTheme: Int by lazy {
when (preferences.themeDark().get()) {
Values.THEME_DARK_BLUE -> R.style.Theme_Tachiyomi_DarkBlue
Values.THEME_DARK_AMOLED -> R.style.Theme_Tachiyomi_Amoled
Values.DarkThemeVariant.blue -> R.style.Theme_Tachiyomi_DarkBlue
Values.DarkThemeVariant.amoled -> R.style.Theme_Tachiyomi_Amoled
else -> R.style.Theme_Tachiyomi_Dark
}
}
@ -61,14 +61,14 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(
when (preferences.themeMode().get()) {
Values.THEME_MODE_SYSTEM -> {
Values.ThemeMode.system -> {
if (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES) {
darkTheme
} else {
lightTheme
}
}
Values.THEME_MODE_DARK -> darkTheme
Values.ThemeMode.dark -> darkTheme
else -> lightTheme
}
)

View File

@ -118,21 +118,21 @@ class SettingsGeneralController : SettingsController() {
R.string.theme_dark
)
entryValues = arrayOf(
Values.THEME_MODE_SYSTEM,
Values.THEME_MODE_LIGHT,
Values.THEME_MODE_DARK
Values.ThemeMode.system.name,
Values.ThemeMode.light.name,
Values.ThemeMode.dark.name
)
defaultValue = Values.THEME_MODE_SYSTEM
defaultValue = Values.ThemeMode.system.name
} else {
entriesRes = arrayOf(
R.string.theme_light,
R.string.theme_dark
)
entryValues = arrayOf(
Values.THEME_MODE_LIGHT,
Values.THEME_MODE_DARK
Values.ThemeMode.light.name,
Values.ThemeMode.dark.name
)
defaultValue = Values.THEME_MODE_LIGHT
defaultValue = Values.ThemeMode.light.name
}
summary = "%s"
@ -150,17 +150,17 @@ class SettingsGeneralController : SettingsController() {
R.string.theme_light_blue
)
entryValues = arrayOf(
Values.THEME_LIGHT_DEFAULT,
Values.THEME_LIGHT_BLUE
Values.LightThemeVariant.default.name,
Values.LightThemeVariant.blue.name
)
defaultValue = Values.THEME_LIGHT_DEFAULT
defaultValue = Values.LightThemeVariant.default.name
summary = "%s"
preferences.themeMode().asImmediateFlow { isVisible = it != Values.THEME_MODE_DARK }
preferences.themeMode().asImmediateFlow { isVisible = it != Values.ThemeMode.dark }
.launchIn(scope)
onChange {
if (preferences.themeMode().get() != Values.THEME_MODE_DARK) {
if (preferences.themeMode().get() != Values.ThemeMode.dark) {
activity?.recreate()
}
true
@ -175,18 +175,18 @@ class SettingsGeneralController : SettingsController() {
R.string.theme_dark_amoled
)
entryValues = arrayOf(
Values.THEME_DARK_DEFAULT,
Values.THEME_DARK_BLUE,
Values.THEME_DARK_AMOLED
Values.DarkThemeVariant.default.name,
Values.DarkThemeVariant.blue.name,
Values.DarkThemeVariant.amoled.name
)
defaultValue = Values.THEME_DARK_DEFAULT
defaultValue = Values.DarkThemeVariant.default.name
summary = "%s"
preferences.themeMode().asImmediateFlow { isVisible = it != Values.THEME_MODE_LIGHT }
preferences.themeMode().asImmediateFlow { isVisible = it != Values.ThemeMode.light }
.launchIn(scope)
onChange {
if (preferences.themeMode().get() != Values.THEME_MODE_LIGHT) {
if (preferences.themeMode().get() != Values.ThemeMode.light) {
activity?.recreate()
}
true