From c93b568659880d9960e4d48dab599f04bb7d35ee Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sun, 20 May 2018 00:59:16 +0200
Subject: [PATCH] Minor fixes

---
 app/build.gradle.kts                          |  2 +-
 .../quasseldroid/ui/chat/ChatActivity.kt      |  4 +--
 .../quasseldroid/util/ui/LocaleHelper.kt      | 11 +++++++-
 .../main/res/values/strings_preferences.xml   |  4 +--
 .../quasseldroid/util/ui/LocaleHelperTest.kt  | 25 +++++++++++++++++++
 5 files changed, 40 insertions(+), 6 deletions(-)
 create mode 100644 app/src/test/java/de/kuschku/quasseldroid/util/ui/LocaleHelperTest.kt

diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 4e6822916..9c88c5c6d 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -63,7 +63,7 @@ android {
 
     signingConfig = signingConfigs.findByName("default")
 
-    resConfigs("en", "de", "fr-rCA", "lt", "pt")
+    //resConfigs("en", "de", "fr-rCA", "lt", "pt")
 
     vectorDrawables.useSupportLibrary = true
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
index b77f6ae59..e1dd6bcf7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
@@ -588,7 +588,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
     outState?.putInt("OPEN_BUFFER", viewModel.buffer.value ?: -1)
     outState?.putInt("OPEN_BUFFERVIEWCONFIG", viewModel.bufferViewConfigId.value ?: -1)
     outState?.putLong("CONNECTED_ACCOUNT", connectedAccount)
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
       outPersistentState?.putInt("OPEN_BUFFER", viewModel.buffer.value ?: -1)
       outPersistentState?.putInt("OPEN_BUFFERVIEWCONFIG", viewModel.bufferViewConfigId.value ?: -1)
       outPersistentState?.putLong("CONNECTED_ACCOUNT", connectedAccount)
@@ -607,7 +607,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
   override fun onRestoreInstanceState(savedInstanceState: Bundle?,
                                       persistentState: PersistableBundle?) {
     super.onRestoreInstanceState(savedInstanceState, persistentState)
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
       val fallbackBuffer = persistentState?.getInt("OPEN_BUFFER", -1) ?: -1
       viewModel.buffer.onNext(
         savedInstanceState?.getInt("OPEN_BUFFER", fallbackBuffer)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt
index cf95a5ebf..cbc2ec606 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt
@@ -31,8 +31,17 @@ object LocaleHelper {
     return updateResources(context, Settings.appearance(context).language)
   }
 
+  fun parseLanguageCode(rawLanguage: String): Locale {
+    val split = rawLanguage.split("-", limit = 3)
+    return when (split.size) {
+      3    -> Locale(split[0], split[2], split[1])
+      2    -> Locale(split[0], split[1], "")
+      else -> Locale(split[0], "", "")
+    }
+  }
+
   private fun updateResources(context: Context, language: String) = if (language.isNotEmpty()) {
-    val locale = Locale(language)
+    val locale = parseLanguageCode(language)
     Locale.setDefault(locale)
 
     val config = Configuration(context.resources.configuration)
diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml
index 362383ff5..b8f0edd6c 100644
--- a/app/src/main/res/values/strings_preferences.xml
+++ b/app/src/main/res/values/strings_preferences.xml
@@ -107,11 +107,11 @@
     <item>en</item>
     <item>de</item>
     <!--<item>fr</item>-->
-    <item>fr_ca</item>
+    <item>fr-CA</item>
     <!--<item>nl</item>-->
     <item>lt</item>
     <item>pt</item>
-    <!--<item>pt_BR</item>-->
+    <!--<item>pt-BR</item>-->
     <!--<item>sr</item>-->
   </string-array>
 
diff --git a/app/src/test/java/de/kuschku/quasseldroid/util/ui/LocaleHelperTest.kt b/app/src/test/java/de/kuschku/quasseldroid/util/ui/LocaleHelperTest.kt
new file mode 100644
index 000000000..0aa220b82
--- /dev/null
+++ b/app/src/test/java/de/kuschku/quasseldroid/util/ui/LocaleHelperTest.kt
@@ -0,0 +1,25 @@
+package de.kuschku.quasseldroid.util.ui
+
+import org.junit.Assert.assertEquals
+import org.junit.Test
+
+class LocaleHelperTest {
+  @Test
+  fun testParseLanguageCode() {
+    LocaleHelper.parseLanguageCode("fr-CA").let {
+      assertEquals("CA", it.country)
+      assertEquals("", it.variant)
+      assertEquals("fr", it.language)
+    }
+    LocaleHelper.parseLanguageCode("zh-Hant-TW").let {
+      assertEquals("TW", it.country)
+      assertEquals("Hant", it.variant)
+      assertEquals("zh", it.language)
+    }
+    LocaleHelper.parseLanguageCode("zh").let {
+      assertEquals("", it.country)
+      assertEquals("", it.variant)
+      assertEquals("zh", it.language)
+    }
+  }
+}
-- 
GitLab