[Android] Reduce setLocale calls

Geoffrey Métais git at videolan.org
Mon Jul 29 14:25:25 CEST 2019


vlc-android | branch: master | Geoffrey Métais <geoffrey.metais at gmail.com> | Fri Jul 26 16:36:40 2019 +0200| [d7c13409b69c9688b13c4192239c0cff73a9d2f2] | committer: Nicolas Pomepuy

Reduce setLocale calls

> https://code.videolan.org/videolan/vlc-android/commit/d7c13409b69c9688b13c4192239c0cff73a9d2f2
---

 vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt             | 9 ++++++++-
 vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt          | 4 ++--
 .../src/org/videolan/vlc/gui/preferences/PreferencesUi.kt        | 9 +++++++--
 .../src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt        | 9 ++++++++-
 .../src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt     | 7 ++++++-
 5 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt b/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt
index f7a31841d..3603fccca 100644
--- a/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt
@@ -17,7 +17,10 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() {
     lateinit var settings: SharedPreferences
 
     override fun onCreate(savedInstanceState: Bundle?) {
-        UiTools.setLocale(this)
+        if (!localeSet) {
+            UiTools.setLocale(this)
+            localeSet = true
+        }
         settings = Settings.getInstance(this)
         /* Theme must be applied before super.onCreate */
         applyTheme()
@@ -38,4 +41,8 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() {
         cancel()
         super.onDestroy()
     }
+
+    companion object {
+        var localeSet = false
+    }
 }
diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
index 3f71abcc8..13cdd8c21 100644
--- a/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
@@ -481,8 +481,8 @@ object UiTools {
     }
 
     fun setLocale(context: Context) {
-        if (!VLCApplication.locale.isNullOrEmpty()) {
-            val locale = getLocaleFromString(VLCApplication.locale!!)
+        VLCApplication.locale.takeIf { !it.isNullOrEmpty() }?.let {
+            val locale = getLocaleFromString(it)
             Locale.setDefault(locale)
             val config = Configuration()
             config.locale = locale
diff --git a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt
index 2e7243c15..be5ec128d 100644
--- a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt
@@ -32,6 +32,7 @@ import androidx.preference.TwoStatePreference
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.ObsoleteCoroutinesApi
 import org.videolan.vlc.R
+import org.videolan.vlc.gui.BaseActivity
 import org.videolan.vlc.gui.helpers.UiTools
 import org.videolan.vlc.util.*
 
@@ -94,7 +95,7 @@ class PreferencesUi : BasePreferenceFragment(), SharedPreferences.OnSharedPrefer
                 (activity as PreferencesActivity).setRestart()
                 return true
             }
-            "media_seen" -> activity!!.setResult(RESULT_UPDATE_SEEN_MEDIA)
+            "media_seen" -> requireActivity().setResult(RESULT_UPDATE_SEEN_MEDIA)
             KEY_ARTISTS_SHOW_ALL -> (activity as PreferencesActivity).updateArtists()
         }
         return super.onPreferenceTreeClick(preference)
@@ -102,7 +103,11 @@ class PreferencesUi : BasePreferenceFragment(), SharedPreferences.OnSharedPrefer
 
     override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
         when (key) {
-            "set_locale" -> UiTools.restartDialog(requireActivity())
+            "set_locale" -> {
+                BaseActivity.localeSet = false
+                (activity as PreferencesActivity).setRestart()
+                UiTools.restartDialog(requireActivity())
+            }
             "browser_show_all_files" -> (activity as PreferencesActivity).setRestart()
             KEY_APP_THEME -> (activity as PreferencesActivity).exitAndRescan()
         }
diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt
index 42160d325..907c42be6 100644
--- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseTvActivity.kt
@@ -57,7 +57,10 @@ abstract class BaseTvActivity : FragmentActivity(), CoroutineScope by MainScope(
 
     override fun onCreate(savedInstanceState: Bundle?) {
         //Init Medialibrary if KO
-        UiTools.setLocale(this)
+        if (!localeSet) {
+            UiTools.setLocale(this)
+            localeSet = true
+        }
         if (savedInstanceState != null) startMedialibrary(firstRun = false, upgrade = false, parse = true)
         super.onCreate(savedInstanceState)
         mediaLibrary = AbstractMedialibrary.getInstance()
@@ -120,4 +123,8 @@ abstract class BaseTvActivity : FragmentActivity(), CoroutineScope by MainScope(
             MediaParsingService.newStorages.value = null
         })
     }
+
+    companion object {
+        var localeSet = false
+    }
 }
diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt
index 13d1d229f..1a5e3a2e5 100644
--- a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt
@@ -34,6 +34,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.ObsoleteCoroutinesApi
 import org.videolan.vlc.R
 import org.videolan.vlc.gui.helpers.UiTools
+import org.videolan.vlc.gui.tv.browser.BaseTvActivity
 import org.videolan.vlc.util.*
 
 
@@ -72,7 +73,11 @@ class PreferencesUi : BasePreferenceFragment(), SharedPreferences.OnSharedPrefer
 
     override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
         when (key) {
-            "set_locale" -> UiTools.restartDialog(activity)
+            "set_locale" -> {
+                BaseTvActivity.localeSet = false
+                (activity as PreferencesActivity).setRestartApp()
+                UiTools.restartDialog(activity)
+            }
             PREF_TV_UI -> {
                 Settings.tvUI = sharedPreferences.getBoolean(PREF_TV_UI, false)
                 (activity as PreferencesActivity).setRestartApp()



More information about the Android mailing list