///
This commit is contained in:
parent
87629f0423
commit
85e3ac1414
@ -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<ResolveInfo> = mutableListOf()
|
||||
private var packageList = mutableListOf<Packages>()
|
||||
private var packageListClone = mutableListOf<Packages>()
|
||||
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 {
|
||||
|
||||
@ -125,6 +125,7 @@ internal class AppsAdapter(
|
||||
appsCount.text = it.toString()
|
||||
appsSize = it
|
||||
}
|
||||
this.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
/* update text gravity (alignment) */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user