diff --git a/core/base/src/main/java/de/mm20/launcher2/search/SavableSearchable.kt b/core/base/src/main/java/de/mm20/launcher2/search/SavableSearchable.kt index c6448c92..1a1b5f1f 100644 --- a/core/base/src/main/java/de/mm20/launcher2/search/SavableSearchable.kt +++ b/core/base/src/main/java/de/mm20/launcher2/search/SavableSearchable.kt @@ -6,7 +6,7 @@ import android.os.Bundle import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.icons.StaticLauncherIcon import de.mm20.launcher2.ktx.romanize -import java.text.Collator +import de.mm20.launcher2.text.Collator interface SavableSearchable : Searchable, Comparable { val key: String @@ -37,8 +37,7 @@ interface SavableSearchable : Searchable, Comparable { override fun compareTo(other: SavableSearchable): Int { val label1 = labelOverride ?: label val label2 = other.labelOverride ?: other.label - return Collator.getInstance().apply { strength = Collator.SECONDARY } - .compare(label1.romanize(), label2.romanize()) + return Collator.compare(label1.romanize(), label2.romanize()) } val domain: String diff --git a/core/base/src/main/java/de/mm20/launcher2/text/Collator.kt b/core/base/src/main/java/de/mm20/launcher2/text/Collator.kt new file mode 100644 index 00000000..c529895a --- /dev/null +++ b/core/base/src/main/java/de/mm20/launcher2/text/Collator.kt @@ -0,0 +1,17 @@ +package de.mm20.launcher2.text + +import android.icu.text.Collator +import kotlin.concurrent.getOrSet + + +private val threadLocalCollator = ThreadLocal.withInitial { + android.icu.text.Collator.getInstance().apply { + strength = android.icu.text.Collator.SECONDARY + } +} + +val Collator = threadLocalCollator.getOrSet { + android.icu.text.Collator.getInstance().apply { + strength = android.icu.text.Collator.SECONDARY + } +} \ No newline at end of file diff --git a/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutConfigActivity.kt b/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutConfigActivity.kt index 08f378c7..a63f42b3 100644 --- a/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutConfigActivity.kt +++ b/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutConfigActivity.kt @@ -9,9 +9,9 @@ import android.os.Process import androidx.core.content.getSystemService import de.mm20.launcher2.ktx.romanize import de.mm20.launcher2.search.AppProfile +import de.mm20.launcher2.text.Collator import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow -import java.text.Collator class AppShortcutConfigActivity( private val launcherActivityInfo: LauncherActivityInfo, @@ -32,7 +32,6 @@ class AppShortcutConfigActivity( val label1 = label val label2 = other.label - return Collator.getInstance().apply { strength = Collator.SECONDARY } - .compare(label1.romanize(), label2.romanize()) + return Collator.compare(label1.romanize(), label2.romanize()) } } \ No newline at end of file