mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Use getEnum for theme preferences too
This commit is contained in:
		@@ -5,21 +5,24 @@ package eu.kanade.tachiyomi.data.preference
 | 
			
		||||
 */
 | 
			
		||||
object PreferenceValues {
 | 
			
		||||
 | 
			
		||||
    enum class ThemeMode(val value: String) {
 | 
			
		||||
        LIGHT("light"),
 | 
			
		||||
        DARK("dark"),
 | 
			
		||||
        SYSTEM("system"),
 | 
			
		||||
    // Keys are lowercase to match legacy string values
 | 
			
		||||
    enum class ThemeMode {
 | 
			
		||||
        light,
 | 
			
		||||
        dark,
 | 
			
		||||
        system,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    enum class LightThemeVariant(val value: String) {
 | 
			
		||||
        DEFAULT("default"),
 | 
			
		||||
        BLUE("blue"),
 | 
			
		||||
    // Keys are lowercase to match legacy string values
 | 
			
		||||
    enum class LightThemeVariant {
 | 
			
		||||
        default,
 | 
			
		||||
        blue,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    enum class DarkThemeVariant(val value: String) {
 | 
			
		||||
        DEFAULT("default"),
 | 
			
		||||
        BLUE("blue"),
 | 
			
		||||
        AMOLED("amoled"),
 | 
			
		||||
    // Keys are lowercase to match legacy string values
 | 
			
		||||
    enum class DarkThemeVariant {
 | 
			
		||||
        default,
 | 
			
		||||
        blue,
 | 
			
		||||
        amoled,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    enum class DisplayMode {
 | 
			
		||||
 
 | 
			
		||||
@@ -69,11 +69,11 @@ class PreferencesHelper(val context: Context) {
 | 
			
		||||
 | 
			
		||||
    fun clear() = prefs.edit().clear().apply()
 | 
			
		||||
 | 
			
		||||
    fun themeMode() = flowPrefs.getString(Keys.themeMode, Values.ThemeMode.SYSTEM.value)
 | 
			
		||||
    fun themeMode() = flowPrefs.getEnum(Keys.themeMode, Values.ThemeMode.system)
 | 
			
		||||
 | 
			
		||||
    fun themeLight() = flowPrefs.getString(Keys.themeLight, Values.LightThemeVariant.DEFAULT.value)
 | 
			
		||||
    fun themeLight() = flowPrefs.getEnum(Keys.themeLight, Values.LightThemeVariant.default)
 | 
			
		||||
 | 
			
		||||
    fun themeDark() = flowPrefs.getString(Keys.themeDark, Values.DarkThemeVariant.DEFAULT.value)
 | 
			
		||||
    fun themeDark() = flowPrefs.getEnum(Keys.themeDark, Values.DarkThemeVariant.default)
 | 
			
		||||
 | 
			
		||||
    fun rotation() = flowPrefs.getInt(Keys.rotation, 1)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
 | 
			
		||||
 | 
			
		||||
    private val lightTheme: Int by lazy {
 | 
			
		||||
        when (preferences.themeLight().get()) {
 | 
			
		||||
            Values.LightThemeVariant.BLUE.value -> 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.DarkThemeVariant.BLUE.value -> R.style.Theme_Tachiyomi_DarkBlue
 | 
			
		||||
            Values.DarkThemeVariant.AMOLED.value -> 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.ThemeMode.SYSTEM.value -> {
 | 
			
		||||
                Values.ThemeMode.system -> {
 | 
			
		||||
                    if (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES) {
 | 
			
		||||
                        darkTheme
 | 
			
		||||
                    } else {
 | 
			
		||||
                        lightTheme
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                Values.ThemeMode.DARK.value -> darkTheme
 | 
			
		||||
                Values.ThemeMode.dark -> darkTheme
 | 
			
		||||
                else -> lightTheme
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -118,21 +118,21 @@ class SettingsGeneralController : SettingsController() {
 | 
			
		||||
                        R.string.theme_dark
 | 
			
		||||
                    )
 | 
			
		||||
                    entryValues = arrayOf(
 | 
			
		||||
                        Values.ThemeMode.SYSTEM.value,
 | 
			
		||||
                        Values.ThemeMode.LIGHT.value,
 | 
			
		||||
                        Values.ThemeMode.DARK.value
 | 
			
		||||
                        Values.ThemeMode.system.name,
 | 
			
		||||
                        Values.ThemeMode.light.name,
 | 
			
		||||
                        Values.ThemeMode.dark.name
 | 
			
		||||
                    )
 | 
			
		||||
                    defaultValue = Values.ThemeMode.SYSTEM.value
 | 
			
		||||
                    defaultValue = Values.ThemeMode.system.name
 | 
			
		||||
                } else {
 | 
			
		||||
                    entriesRes = arrayOf(
 | 
			
		||||
                        R.string.theme_light,
 | 
			
		||||
                        R.string.theme_dark
 | 
			
		||||
                    )
 | 
			
		||||
                    entryValues = arrayOf(
 | 
			
		||||
                        Values.ThemeMode.LIGHT.value,
 | 
			
		||||
                        Values.ThemeMode.DARK.value
 | 
			
		||||
                        Values.ThemeMode.light.name,
 | 
			
		||||
                        Values.ThemeMode.dark.name
 | 
			
		||||
                    )
 | 
			
		||||
                    defaultValue = Values.ThemeMode.LIGHT.value
 | 
			
		||||
                    defaultValue = Values.ThemeMode.light.name
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
@@ -150,17 +150,17 @@ class SettingsGeneralController : SettingsController() {
 | 
			
		||||
                    R.string.theme_light_blue
 | 
			
		||||
                )
 | 
			
		||||
                entryValues = arrayOf(
 | 
			
		||||
                    Values.LightThemeVariant.DEFAULT.value,
 | 
			
		||||
                    Values.LightThemeVariant.BLUE.value
 | 
			
		||||
                    Values.LightThemeVariant.default.name,
 | 
			
		||||
                    Values.LightThemeVariant.blue.name
 | 
			
		||||
                )
 | 
			
		||||
                defaultValue = Values.LightThemeVariant.DEFAULT.value
 | 
			
		||||
                defaultValue = Values.LightThemeVariant.default.name
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
 | 
			
		||||
                preferences.themeMode().asImmediateFlow { isVisible = it != Values.ThemeMode.DARK.value }
 | 
			
		||||
                preferences.themeMode().asImmediateFlow { isVisible = it != Values.ThemeMode.dark }
 | 
			
		||||
                    .launchIn(scope)
 | 
			
		||||
 | 
			
		||||
                onChange {
 | 
			
		||||
                    if (preferences.themeMode().get() != Values.ThemeMode.DARK.value) {
 | 
			
		||||
                    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.DarkThemeVariant.DEFAULT.value,
 | 
			
		||||
                    Values.DarkThemeVariant.BLUE.value,
 | 
			
		||||
                    Values.DarkThemeVariant.AMOLED.value
 | 
			
		||||
                    Values.DarkThemeVariant.default.name,
 | 
			
		||||
                    Values.DarkThemeVariant.blue.name,
 | 
			
		||||
                    Values.DarkThemeVariant.amoled.name
 | 
			
		||||
                )
 | 
			
		||||
                defaultValue = Values.DarkThemeVariant.DEFAULT.value
 | 
			
		||||
                defaultValue = Values.DarkThemeVariant.default.name
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
 | 
			
		||||
                preferences.themeMode().asImmediateFlow { isVisible = it != Values.ThemeMode.LIGHT.value }
 | 
			
		||||
                preferences.themeMode().asImmediateFlow { isVisible = it != Values.ThemeMode.light }
 | 
			
		||||
                    .launchIn(scope)
 | 
			
		||||
 | 
			
		||||
                onChange {
 | 
			
		||||
                    if (preferences.themeMode().get() != Values.ThemeMode.LIGHT.value) {
 | 
			
		||||
                    if (preferences.themeMode().get() != Values.ThemeMode.light) {
 | 
			
		||||
                        activity?.recreate()
 | 
			
		||||
                    }
 | 
			
		||||
                    true
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user