Skip to content

Commit bb1014a

Browse files
committed
Fix Activity Launcher search functionality - Preserve search query when switching tabs - Search now filters activities by name, not just app name - Auto expand apps when activities match search query - Better search matching for activity full name
1 parent b7cbe00 commit bb1014a

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

app/src/main/java/com/appcontrolx/ui/ActivityLauncherBottomSheet.kt

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)