From 85e3ac1414d1dbfab61941fc2817f5e4ad372a49 Mon Sep 17 00:00:00 2001 From: lunaticbum <> Date: Mon, 12 Aug 2024 18:11:58 +0900 Subject: [PATCH] /// --- .../rasel/lunar/launcher/apps/AppDrawer.kt | 68 ++++++++++--------- .../rasel/lunar/launcher/apps/AppsAdapter.kt | 1 + 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/app/src/main/kotlin/rasel/lunar/launcher/apps/AppDrawer.kt b/app/src/main/kotlin/rasel/lunar/launcher/apps/AppDrawer.kt index f3edabb..59024fa 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/apps/AppDrawer.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/apps/AppDrawer.kt @@ -57,6 +57,7 @@ import rasel.lunar.launcher.helpers.Constants.Companion.KEY_SCROLLBAR_HEIGHT import rasel.lunar.launcher.helpers.Constants.Companion.KEY_STATUS_BAR import rasel.lunar.launcher.helpers.Constants.Companion.PREFS_APP_NAMES import rasel.lunar.launcher.helpers.Constants.Companion.PREFS_SETTINGS +import rasel.lunar.launcher.utils.BLog import java.text.Normalizer import java.util.* import java.util.regex.Pattern @@ -74,6 +75,7 @@ internal class AppDrawer : Fragment() { private var appsAdapter: AppsAdapter? = null private var packageInfoList: MutableList = mutableListOf() private var packageList = mutableListOf() + private var packageListClone = mutableListOf() private val numberPattern = Pattern.compile("[0-9]") private val alphabetPattern = Pattern.compile("[A-Z]") @JvmStatic var settingsPrefs: SharedPreferences? = null @@ -86,28 +88,28 @@ internal class AppDrawer : Fragment() { } fun listenScroll(letter: String) { - packageList.clear() - for (resolver in packageInfoList) { - when { - letter == "#" -> { - if (numberPattern.matcher(appName(resolver).first().uppercase()).matches()) { - packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver))) - } - } - alphabetPattern.matcher(letter).matches() -> { - if (appName(resolver).first().uppercase() == letter) { - packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver))) - } - } - letter == "⠶" -> { - if (!numberPattern.matcher(appName(resolver).first().uppercase()).matches() && - !alphabetPattern.matcher(appName(resolver).first().uppercase()).matches()) { - packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver))) - } - } - } - } - appsAdapter?.updateData(packageList.sortedBy { it.appName.lowercase() }) +// packageListClone.clear() +// for (resolver in packageInfoList) { +// when { +// letter == "#" -> { +// if (numberPattern.matcher(appName(resolver).first().uppercase()).matches()) { +// packageListClone.add(Packages(resolver.activityInfo.packageName, appName(resolver))) +// } +// } +// alphabetPattern.matcher(letter).matches() -> { +// if (appName(resolver).first().uppercase() == letter) { +// packageListClone.add(Packages(resolver.activityInfo.packageName, appName(resolver))) +// } +// } +// letter == "⠶" -> { +// if (!numberPattern.matcher(appName(resolver).first().uppercase()).matches() && +// !alphabetPattern.matcher(appName(resolver).first().uppercase()).matches()) { +// packageListClone.add(Packages(resolver.activityInfo.packageName, appName(resolver))) +// } +// } +// } +// } +// appsAdapter?.updateData(packageListClone.sortedBy { it.appName.lowercase() }) } } @@ -138,7 +140,7 @@ internal class AppDrawer : Fragment() { binding.reset.setOnClickListener { onResume() } binding.moveDown.setOnClickListener { - binding.appsList.smoothScrollToPosition(packageList.size - 1) + binding.appsList.smoothScrollToPosition(packageListClone.size - 1) } binding.moveUp.setOnClickListener { @@ -208,13 +210,15 @@ internal class AppDrawer : Fragment() { /* add package and app names to the list */ packageList.clear() + packageListClone.clear() for (resolver in packageInfoList) { packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver))) + packageListClone.add(Packages(resolver.activityInfo.packageName, appName(resolver))) } when { - packageList.size < 1 -> return - else -> appsAdapter?.updateData(packageList.sortedBy { it.appName.lowercase() }) + packageListClone.size < 1 -> return + else -> appsAdapter?.updateData(packageListClone.sortedBy { it.appName.lowercase() }) } } @@ -245,32 +249,34 @@ internal class AppDrawer : Fragment() { private fun filterAppsList(searchString: String) { /* check each app name and add if it matches the search string */ - packageList.clear() + packageListClone.clear() for (resolver in packageInfoList) { appName(resolver).let { + BLog.LOGE("searchString >>> ${searchString} , normalize(it) ${normalize(it)} ${normalize(it).contains(searchString)}") if (normalize(it).contains(searchString)) { - packageList.add(Packages(resolver.activityInfo.packageName, it)) + packageListClone.add(Packages(resolver.activityInfo.packageName, it)) } } } - if (searchString.length > 2 && packageList.size == 1 && settingsPrefs!!.getBoolean(KEY_QUICK_LAUNCH, true)) { + if (searchString.length > 2 && packageListClone.size == 1 && settingsPrefs!!.getBoolean(KEY_QUICK_LAUNCH, true)) { var dialog = AlertDialog.Builder(requireContext()) dialog.setTitle("앱 실행 확인") - dialog.setMessage("${searchString} 검색 결과 '${packageList[0].appName}' 준비됨") + dialog.setMessage("${searchString} 검색 결과 '${packageListClone[0].appName}' 준비됨") dialog.setCancelable(false) dialog.setOnCancelListener { binding.searchInput.setText("") it.dismiss() } dialog.setPositiveButton("실행") { s,d -> - startActivity(packageManager?.getLaunchIntentForPackage(packageList[0].packageName)) + startActivity(packageManager?.getLaunchIntentForPackage(packageListClone[0].packageName)) s.dismiss() binding.searchInput.setText("") } dialog.show() } - else appsAdapter?.updateData(packageList.sortedBy { it.appName.lowercase() }) + else appsAdapter?.updateData(packageListClone.sortedBy { it.appName.lowercase() }) + } private fun normalize(str: String): String { diff --git a/app/src/main/kotlin/rasel/lunar/launcher/apps/AppsAdapter.kt b/app/src/main/kotlin/rasel/lunar/launcher/apps/AppsAdapter.kt index cf14fb7..9072c00 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/apps/AppsAdapter.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/apps/AppsAdapter.kt @@ -125,6 +125,7 @@ internal class AppsAdapter( appsCount.text = it.toString() appsSize = it } + this.notifyDataSetChanged() } /* update text gravity (alignment) */