More preference grouping

This commit is contained in:
arkon 2020-02-27 18:34:14 -05:00
parent bf8268adc4
commit 3a62acc54d
3 changed files with 99 additions and 94 deletions

View File

@ -27,98 +27,6 @@ class SettingsGeneralController : SettingsController() {
override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) { override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) {
titleRes = R.string.pref_category_general 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 { intListPreference {
key = Keys.startScreen key = Keys.startScreen
titleRes = R.string.pref_start_screen 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 { preferenceCategory {
titleRes = R.string.pref_category_security titleRes = R.string.pref_category_security

View File

@ -41,7 +41,7 @@ class SettingsLibraryController : SettingsController() {
titleRes = R.string.pref_category_library titleRes = R.string.pref_category_library
preferenceCategory { preferenceCategory {
titleRes = R.string.pref_category_library_display titleRes = R.string.pref_category_display
preference { preference {
titleRes = R.string.pref_library_columns titleRes = R.string.pref_library_columns

View File

@ -147,7 +147,7 @@
<string name="secure_screen_summary">Hide app contents when switching apps and block screenshots</string> <string name="secure_screen_summary">Hide app contents when switching apps and block screenshots</string>
<!-- Library section --> <!-- Library section -->
<string name="pref_category_library_display">Display</string> <string name="pref_category_display">Display</string>
<string name="pref_library_columns">Library manga per row</string> <string name="pref_library_columns">Library manga per row</string>
<string name="portrait">Portrait</string> <string name="portrait">Portrait</string>
<string name="landscape">Landscape</string> <string name="landscape">Landscape</string>