For #7559 - fixes 2 issues:
- The same item now doesn't recreate the activity - The app context now contains the right localemaster
parent
1b7cb117ca
commit
2a876d5e0f
|
@ -21,17 +21,23 @@ class DefaultLocaleSettingsController(
|
||||||
) : LocaleSettingsController {
|
) : LocaleSettingsController {
|
||||||
|
|
||||||
override fun handleLocaleSelected(locale: Locale) {
|
override fun handleLocaleSelected(locale: Locale) {
|
||||||
if (localeSettingsStore.state.selectedLocale == locale) {
|
if (localeSettingsStore.state.selectedLocale == locale &&
|
||||||
|
!LocaleManager.isDefaultLocaleSelected(context)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
localeSettingsStore.dispatch(LocaleSettingsAction.Select(locale))
|
localeSettingsStore.dispatch(LocaleSettingsAction.Select(locale))
|
||||||
LocaleManager.setNewLocale(context, locale.toLanguageTag())
|
LocaleManager.setNewLocale(context, locale.toLanguageTag())
|
||||||
|
LocaleManager.updateBaseConfiguration(context, locale)
|
||||||
(context as Activity).recreate()
|
(context as Activity).recreate()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleDefaultLocaleSelected() {
|
override fun handleDefaultLocaleSelected() {
|
||||||
|
if (LocaleManager.isDefaultLocaleSelected(context)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
localeSettingsStore.dispatch(LocaleSettingsAction.Select(localeSettingsStore.state.localeList[0]))
|
localeSettingsStore.dispatch(LocaleSettingsAction.Select(localeSettingsStore.state.localeList[0]))
|
||||||
LocaleManager.resetToSystemDefault(context)
|
LocaleManager.resetToSystemDefault(context)
|
||||||
|
LocaleManager.updateBaseConfiguration(context, localeSettingsStore.state.localeList[0])
|
||||||
(context as Activity).recreate()
|
(context as Activity).recreate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,3 +51,15 @@ fun LocaleManager.getSelectedLocale(
|
||||||
fun LocaleManager.isDefaultLocaleSelected(context: Context): Boolean {
|
fun LocaleManager.isDefaultLocaleSelected(context: Context): Boolean {
|
||||||
return getCurrentLocale(context) == null
|
return getCurrentLocale(context) == null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the locale for the configuration of the app context's resources
|
||||||
|
*/
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
fun LocaleManager.updateBaseConfiguration(context: Context, locale: Locale) {
|
||||||
|
val resources = context.applicationContext.resources
|
||||||
|
val config = resources.configuration
|
||||||
|
config.setLocale(locale)
|
||||||
|
config.setLayoutDirection(locale)
|
||||||
|
resources.updateConfiguration(config, resources.displayMetrics)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue