mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 16:18:55 +01:00 
			
		
		
		
	More preference grouping
This commit is contained in:
		@@ -27,98 +27,6 @@ class SettingsGeneralController : SettingsController() {
 | 
			
		||||
    override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) {
 | 
			
		||||
        titleRes = R.string.pref_category_general
 | 
			
		||||
 | 
			
		||||
        listPreference {
 | 
			
		||||
            key = Keys.lang
 | 
			
		||||
            titleRes = R.string.pref_language
 | 
			
		||||
            entryValues = arrayOf("", "ar", "bg", "bn", "ca", "cs", "de", "el", "en-US", "en-GB",
 | 
			
		||||
                    "es", "fr", "hi", "hu", "in", "it", "ja", "ko", "lv", "ms", "nb-rNO", "nl", "pl", "pt",
 | 
			
		||||
                    "pt-BR", "ro", "ru", "sc", "sr", "sv", "th", "tl", "tr", "uk", "vi", "zh-rCN")
 | 
			
		||||
            entries = entryValues.map { value ->
 | 
			
		||||
                val locale = LocaleHelper.getLocaleFromString(value.toString())
 | 
			
		||||
                locale?.getDisplayName(locale)?.capitalize()
 | 
			
		||||
                        ?: context.getString(R.string.system_default)
 | 
			
		||||
            }.toTypedArray()
 | 
			
		||||
            defaultValue = ""
 | 
			
		||||
            summary = "%s"
 | 
			
		||||
 | 
			
		||||
            onChange { newValue ->
 | 
			
		||||
                val activity = activity ?: return@onChange false
 | 
			
		||||
                val app = activity.application
 | 
			
		||||
                LocaleHelper.changeLocale(newValue.toString())
 | 
			
		||||
                LocaleHelper.updateConfiguration(app, app.resources.configuration)
 | 
			
		||||
                activity.recreate()
 | 
			
		||||
                true
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        listPreference {
 | 
			
		||||
            key = Keys.dateFormat
 | 
			
		||||
            titleRes = R.string.pref_date_format
 | 
			
		||||
            entryValues = arrayOf("", "MM/dd/yy", "dd/MM/yy", "yyyy-MM-dd")
 | 
			
		||||
            entries = entryValues.map { value ->
 | 
			
		||||
                if (value == "") {
 | 
			
		||||
                    context.getString(R.string.system_default)
 | 
			
		||||
                } else {
 | 
			
		||||
                    value
 | 
			
		||||
                }
 | 
			
		||||
            }.toTypedArray()
 | 
			
		||||
            defaultValue = ""
 | 
			
		||||
            summary = "%s"
 | 
			
		||||
        }
 | 
			
		||||
        listPreference {
 | 
			
		||||
            key = Keys.themeMode
 | 
			
		||||
            titleRes = R.string.pref_theme_mode
 | 
			
		||||
 | 
			
		||||
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
 | 
			
		||||
                entriesRes = arrayOf(
 | 
			
		||||
                        R.string.theme_system,
 | 
			
		||||
                        R.string.theme_light,
 | 
			
		||||
                        R.string.theme_dark)
 | 
			
		||||
                entryValues = arrayOf(
 | 
			
		||||
                        Values.THEME_MODE_SYSTEM,
 | 
			
		||||
                        Values.THEME_MODE_LIGHT,
 | 
			
		||||
                        Values.THEME_MODE_DARK)
 | 
			
		||||
                defaultValue = Values.THEME_MODE_SYSTEM
 | 
			
		||||
            } else {
 | 
			
		||||
                entriesRes = arrayOf(
 | 
			
		||||
                        R.string.theme_light,
 | 
			
		||||
                        R.string.theme_dark)
 | 
			
		||||
                entryValues = arrayOf(
 | 
			
		||||
                        Values.THEME_MODE_LIGHT,
 | 
			
		||||
                        Values.THEME_MODE_DARK)
 | 
			
		||||
                defaultValue = Values.THEME_MODE_LIGHT
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            summary = "%s"
 | 
			
		||||
 | 
			
		||||
            onChange {
 | 
			
		||||
                activity?.recreate()
 | 
			
		||||
                true
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        listPreference {
 | 
			
		||||
            key = Keys.themeDark
 | 
			
		||||
            titleRes = R.string.pref_theme_dark
 | 
			
		||||
            entriesRes = arrayOf(
 | 
			
		||||
                    R.string.theme_dark_default,
 | 
			
		||||
                    R.string.theme_dark_blue,
 | 
			
		||||
                    R.string.theme_dark_amoled)
 | 
			
		||||
            entryValues = arrayOf(
 | 
			
		||||
                    Values.THEME_DARK_DEFAULT,
 | 
			
		||||
                    Values.THEME_DARK_BLUE,
 | 
			
		||||
                    Values.THEME_DARK_AMOLED)
 | 
			
		||||
            defaultValue = Values.THEME_DARK_DEFAULT
 | 
			
		||||
            summary = "%s"
 | 
			
		||||
 | 
			
		||||
            preferences.themeMode().asObservable()
 | 
			
		||||
                    .subscribeUntilDestroy { isVisible = it != Values.THEME_MODE_LIGHT }
 | 
			
		||||
 | 
			
		||||
            onChange {
 | 
			
		||||
                if (preferences.themeMode().getOrDefault() != Values.THEME_MODE_LIGHT) {
 | 
			
		||||
                    activity?.recreate()
 | 
			
		||||
                }
 | 
			
		||||
                true
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        intListPreference {
 | 
			
		||||
            key = Keys.startScreen
 | 
			
		||||
            titleRes = R.string.pref_start_screen
 | 
			
		||||
@@ -140,6 +48,103 @@ class SettingsGeneralController : SettingsController() {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        preferenceCategory {
 | 
			
		||||
            titleRes = R.string.pref_category_display
 | 
			
		||||
 | 
			
		||||
            listPreference {
 | 
			
		||||
                key = Keys.lang
 | 
			
		||||
                titleRes = R.string.pref_language
 | 
			
		||||
                entryValues = arrayOf("", "ar", "bg", "bn", "ca", "cs", "de", "el", "en-US", "en-GB",
 | 
			
		||||
                        "es", "fr", "hi", "hu", "in", "it", "ja", "ko", "lv", "ms", "nb-rNO", "nl", "pl", "pt",
 | 
			
		||||
                        "pt-BR", "ro", "ru", "sc", "sr", "sv", "th", "tl", "tr", "uk", "vi", "zh-rCN")
 | 
			
		||||
                entries = entryValues.map { value ->
 | 
			
		||||
                    val locale = LocaleHelper.getLocaleFromString(value.toString())
 | 
			
		||||
                    locale?.getDisplayName(locale)?.capitalize()
 | 
			
		||||
                            ?: context.getString(R.string.system_default)
 | 
			
		||||
                }.toTypedArray()
 | 
			
		||||
                defaultValue = ""
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
 | 
			
		||||
                onChange { newValue ->
 | 
			
		||||
                    val activity = activity ?: return@onChange false
 | 
			
		||||
                    val app = activity.application
 | 
			
		||||
                    LocaleHelper.changeLocale(newValue.toString())
 | 
			
		||||
                    LocaleHelper.updateConfiguration(app, app.resources.configuration)
 | 
			
		||||
                    activity.recreate()
 | 
			
		||||
                    true
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            listPreference {
 | 
			
		||||
                key = Keys.dateFormat
 | 
			
		||||
                titleRes = R.string.pref_date_format
 | 
			
		||||
                entryValues = arrayOf("", "MM/dd/yy", "dd/MM/yy", "yyyy-MM-dd")
 | 
			
		||||
                entries = entryValues.map { value ->
 | 
			
		||||
                    if (value == "") {
 | 
			
		||||
                        context.getString(R.string.system_default)
 | 
			
		||||
                    } else {
 | 
			
		||||
                        value
 | 
			
		||||
                    }
 | 
			
		||||
                }.toTypedArray()
 | 
			
		||||
                defaultValue = ""
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
            }
 | 
			
		||||
            listPreference {
 | 
			
		||||
                key = Keys.themeMode
 | 
			
		||||
                titleRes = R.string.pref_theme_mode
 | 
			
		||||
 | 
			
		||||
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
 | 
			
		||||
                    entriesRes = arrayOf(
 | 
			
		||||
                            R.string.theme_system,
 | 
			
		||||
                            R.string.theme_light,
 | 
			
		||||
                            R.string.theme_dark)
 | 
			
		||||
                    entryValues = arrayOf(
 | 
			
		||||
                            Values.THEME_MODE_SYSTEM,
 | 
			
		||||
                            Values.THEME_MODE_LIGHT,
 | 
			
		||||
                            Values.THEME_MODE_DARK)
 | 
			
		||||
                    defaultValue = Values.THEME_MODE_SYSTEM
 | 
			
		||||
                } else {
 | 
			
		||||
                    entriesRes = arrayOf(
 | 
			
		||||
                            R.string.theme_light,
 | 
			
		||||
                            R.string.theme_dark)
 | 
			
		||||
                    entryValues = arrayOf(
 | 
			
		||||
                            Values.THEME_MODE_LIGHT,
 | 
			
		||||
                            Values.THEME_MODE_DARK)
 | 
			
		||||
                    defaultValue = Values.THEME_MODE_LIGHT
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
 | 
			
		||||
                onChange {
 | 
			
		||||
                    activity?.recreate()
 | 
			
		||||
                    true
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            listPreference {
 | 
			
		||||
                key = Keys.themeDark
 | 
			
		||||
                titleRes = R.string.pref_theme_dark
 | 
			
		||||
                entriesRes = arrayOf(
 | 
			
		||||
                        R.string.theme_dark_default,
 | 
			
		||||
                        R.string.theme_dark_blue,
 | 
			
		||||
                        R.string.theme_dark_amoled)
 | 
			
		||||
                entryValues = arrayOf(
 | 
			
		||||
                        Values.THEME_DARK_DEFAULT,
 | 
			
		||||
                        Values.THEME_DARK_BLUE,
 | 
			
		||||
                        Values.THEME_DARK_AMOLED)
 | 
			
		||||
                defaultValue = Values.THEME_DARK_DEFAULT
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
 | 
			
		||||
                preferences.themeMode().asObservable()
 | 
			
		||||
                        .subscribeUntilDestroy { isVisible = it != Values.THEME_MODE_LIGHT }
 | 
			
		||||
 | 
			
		||||
                onChange {
 | 
			
		||||
                    if (preferences.themeMode().getOrDefault() != Values.THEME_MODE_LIGHT) {
 | 
			
		||||
                        activity?.recreate()
 | 
			
		||||
                    }
 | 
			
		||||
                    true
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        preferenceCategory {
 | 
			
		||||
            titleRes = R.string.pref_category_security
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ class SettingsLibraryController : SettingsController() {
 | 
			
		||||
        titleRes = R.string.pref_category_library
 | 
			
		||||
 | 
			
		||||
        preferenceCategory {
 | 
			
		||||
            titleRes = R.string.pref_category_library_display
 | 
			
		||||
            titleRes = R.string.pref_category_display
 | 
			
		||||
 | 
			
		||||
            preference {
 | 
			
		||||
                titleRes = R.string.pref_library_columns
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user