@@ -29,6 +29,7 @@ class ActivityLauncherBottomSheet : BottomSheetDialogFragment() {
2929 private lateinit var adapter: AppActivityAdapter
3030 private var allAppGroups: List <AppActivityGroup > = emptyList()
3131 private var showSystemApps = false
32+ private var currentSearchQuery: String = " "
3233
3334 data class ActivityItem (
3435 val packageName : String ,
@@ -112,7 +113,8 @@ class ActivityLauncherBottomSheet : BottomSheetDialogFragment() {
112113 b.searchView.setOnQueryTextListener(object : androidx.appcompat.widget.SearchView .OnQueryTextListener {
113114 override fun onQueryTextSubmit (query : String? ) = false
114115 override fun onQueryTextChange (newText : String? ): Boolean {
115- filterActivities(newText)
116+ currentSearchQuery = newText?.trim() ? : " "
117+ filterActivities()
116118 return true
117119 }
118120 })
@@ -177,16 +179,33 @@ class ActivityLauncherBottomSheet : BottomSheetDialogFragment() {
177179 return activity.exported || activity.labelRes != 0
178180 }
179181
180- private fun filterActivities (searchQuery : String? = null ) {
182+ private fun filterActivities () {
181183 var filtered = allAppGroups.filter { it.isSystem == showSystemApps }
182184
183185 // Apply search filter
184- if (! searchQuery.isNullOrBlank()) {
185- val query = searchQuery.lowercase()
186- filtered = filtered.filter { group ->
187- group.appName.lowercase().contains(query) ||
188- group.packageName.lowercase().contains(query) ||
189- group.activities.any { it.shortName.lowercase().contains(query) }
186+ if (currentSearchQuery.isNotBlank()) {
187+ val query = currentSearchQuery.lowercase()
188+ filtered = filtered.mapNotNull { group ->
189+ // Check if app name or package matches
190+ val appMatches = group.appName.lowercase().contains(query) ||
191+ group.packageName.lowercase().contains(query)
192+
193+ // Filter activities that match
194+ val matchingActivities = group.activities.filter { activity ->
195+ activity.shortName.lowercase().contains(query) ||
196+ activity.activityName.lowercase().contains(query)
197+ }
198+
199+ when {
200+ // If app name matches, show all activities
201+ appMatches -> group
202+ // If only activities match, show only those activities
203+ matchingActivities.isNotEmpty() -> group.copy(
204+ activities = matchingActivities,
205+ isExpanded = true // Auto expand when searching
206+ )
207+ else -> null
208+ }
190209 }
191210 }
192211
0 commit comments