///
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.KEY_STATUS_BAR
|
||||||
import rasel.lunar.launcher.helpers.Constants.Companion.PREFS_APP_NAMES
|
import rasel.lunar.launcher.helpers.Constants.Companion.PREFS_APP_NAMES
|
||||||
import rasel.lunar.launcher.helpers.Constants.Companion.PREFS_SETTINGS
|
import rasel.lunar.launcher.helpers.Constants.Companion.PREFS_SETTINGS
|
||||||
|
import rasel.lunar.launcher.utils.BLog
|
||||||
import java.text.Normalizer
|
import java.text.Normalizer
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
@ -74,6 +75,7 @@ internal class AppDrawer : Fragment() {
|
|||||||
private var appsAdapter: AppsAdapter? = null
|
private var appsAdapter: AppsAdapter? = null
|
||||||
private var packageInfoList: MutableList<ResolveInfo> = mutableListOf()
|
private var packageInfoList: MutableList<ResolveInfo> = mutableListOf()
|
||||||
private var packageList = mutableListOf<Packages>()
|
private var packageList = mutableListOf<Packages>()
|
||||||
|
private var packageListClone = mutableListOf<Packages>()
|
||||||
private val numberPattern = Pattern.compile("[0-9]")
|
private val numberPattern = Pattern.compile("[0-9]")
|
||||||
private val alphabetPattern = Pattern.compile("[A-Z]")
|
private val alphabetPattern = Pattern.compile("[A-Z]")
|
||||||
@JvmStatic var settingsPrefs: SharedPreferences? = null
|
@JvmStatic var settingsPrefs: SharedPreferences? = null
|
||||||
@ -86,28 +88,28 @@ internal class AppDrawer : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun listenScroll(letter: String) {
|
fun listenScroll(letter: String) {
|
||||||
packageList.clear()
|
// packageListClone.clear()
|
||||||
for (resolver in packageInfoList) {
|
// for (resolver in packageInfoList) {
|
||||||
when {
|
// when {
|
||||||
letter == "#" -> {
|
// letter == "#" -> {
|
||||||
if (numberPattern.matcher(appName(resolver).first().uppercase()).matches()) {
|
// if (numberPattern.matcher(appName(resolver).first().uppercase()).matches()) {
|
||||||
packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
// packageListClone.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
alphabetPattern.matcher(letter).matches() -> {
|
// alphabetPattern.matcher(letter).matches() -> {
|
||||||
if (appName(resolver).first().uppercase() == letter) {
|
// if (appName(resolver).first().uppercase() == letter) {
|
||||||
packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
// packageListClone.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
letter == "⠶" -> {
|
// letter == "⠶" -> {
|
||||||
if (!numberPattern.matcher(appName(resolver).first().uppercase()).matches() &&
|
// if (!numberPattern.matcher(appName(resolver).first().uppercase()).matches() &&
|
||||||
!alphabetPattern.matcher(appName(resolver).first().uppercase()).matches()) {
|
// !alphabetPattern.matcher(appName(resolver).first().uppercase()).matches()) {
|
||||||
packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
// packageListClone.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
appsAdapter?.updateData(packageList.sortedBy { it.appName.lowercase() })
|
// appsAdapter?.updateData(packageListClone.sortedBy { it.appName.lowercase() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +140,7 @@ internal class AppDrawer : Fragment() {
|
|||||||
binding.reset.setOnClickListener { onResume() }
|
binding.reset.setOnClickListener { onResume() }
|
||||||
|
|
||||||
binding.moveDown.setOnClickListener {
|
binding.moveDown.setOnClickListener {
|
||||||
binding.appsList.smoothScrollToPosition(packageList.size - 1)
|
binding.appsList.smoothScrollToPosition(packageListClone.size - 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.moveUp.setOnClickListener {
|
binding.moveUp.setOnClickListener {
|
||||||
@ -208,13 +210,15 @@ internal class AppDrawer : Fragment() {
|
|||||||
|
|
||||||
/* add package and app names to the list */
|
/* add package and app names to the list */
|
||||||
packageList.clear()
|
packageList.clear()
|
||||||
|
packageListClone.clear()
|
||||||
for (resolver in packageInfoList) {
|
for (resolver in packageInfoList) {
|
||||||
packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
packageList.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
||||||
|
packageListClone.add(Packages(resolver.activityInfo.packageName, appName(resolver)))
|
||||||
}
|
}
|
||||||
|
|
||||||
when {
|
when {
|
||||||
packageList.size < 1 -> return
|
packageListClone.size < 1 -> return
|
||||||
else -> appsAdapter?.updateData(packageList.sortedBy { it.appName.lowercase() })
|
else -> appsAdapter?.updateData(packageListClone.sortedBy { it.appName.lowercase() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,32 +249,34 @@ internal class AppDrawer : Fragment() {
|
|||||||
|
|
||||||
private fun filterAppsList(searchString: String) {
|
private fun filterAppsList(searchString: String) {
|
||||||
/* check each app name and add if it matches the search string */
|
/* check each app name and add if it matches the search string */
|
||||||
packageList.clear()
|
packageListClone.clear()
|
||||||
for (resolver in packageInfoList) {
|
for (resolver in packageInfoList) {
|
||||||
appName(resolver).let {
|
appName(resolver).let {
|
||||||
|
BLog.LOGE("searchString >>> ${searchString} , normalize(it) ${normalize(it)} ${normalize(it).contains(searchString)}")
|
||||||
if (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())
|
var dialog = AlertDialog.Builder(requireContext())
|
||||||
dialog.setTitle("앱 실행 확인")
|
dialog.setTitle("앱 실행 확인")
|
||||||
dialog.setMessage("${searchString} 검색 결과 '${packageList[0].appName}' 준비됨")
|
dialog.setMessage("${searchString} 검색 결과 '${packageListClone[0].appName}' 준비됨")
|
||||||
dialog.setCancelable(false)
|
dialog.setCancelable(false)
|
||||||
dialog.setOnCancelListener {
|
dialog.setOnCancelListener {
|
||||||
binding.searchInput.setText("")
|
binding.searchInput.setText("")
|
||||||
it.dismiss()
|
it.dismiss()
|
||||||
}
|
}
|
||||||
dialog.setPositiveButton("실행") { s,d ->
|
dialog.setPositiveButton("실행") { s,d ->
|
||||||
startActivity(packageManager?.getLaunchIntentForPackage(packageList[0].packageName))
|
startActivity(packageManager?.getLaunchIntentForPackage(packageListClone[0].packageName))
|
||||||
s.dismiss()
|
s.dismiss()
|
||||||
binding.searchInput.setText("")
|
binding.searchInput.setText("")
|
||||||
}
|
}
|
||||||
dialog.show()
|
dialog.show()
|
||||||
}
|
}
|
||||||
else appsAdapter?.updateData(packageList.sortedBy { it.appName.lowercase() })
|
else appsAdapter?.updateData(packageListClone.sortedBy { it.appName.lowercase() })
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun normalize(str: String): String {
|
private fun normalize(str: String): String {
|
||||||
|
|||||||
@ -125,6 +125,7 @@ internal class AppsAdapter(
|
|||||||
appsCount.text = it.toString()
|
appsCount.text = it.toString()
|
||||||
appsSize = it
|
appsSize = it
|
||||||
}
|
}
|
||||||
|
this.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update text gravity (alignment) */
|
/* update text gravity (alignment) */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user