Skip to content

Commit e286d3d

Browse files
committed
Add enabled filter & enable-all to app picker
1 parent f29fb48 commit e286d3d

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

app/src/main/java/tech/httptoolkit/android/ApplicationListActivity.kt

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class ApplicationListActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefres
2828
private lateinit var blockedPackages: MutableSet<String>
2929

3030
private var showSystem = false
31+
private var showEnabledOnly = false
3132
private var textFilter = ""
3233

3334
override fun onCreate(savedInstanceState: Bundle?) {
@@ -81,7 +82,8 @@ class ApplicationListActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefres
8182
val isSystemApp = appInfo.flags and ApplicationInfo.FLAG_SYSTEM == 1
8283

8384
return (textFilter.isEmpty() || appLabel.contains(textFilter, true)) && // Filter by name
84-
(showSystem || !isSystemApp) && // Only show system if that's enabled
85+
(showSystem || !isSystemApp) && // Show system apps, if that's active
86+
(!showEnabledOnly || isAppEnabled(app)) && // Only show enabled apps, if that's active
8587
app.packageName != packageName // Never show ourselves
8688
}
8789

@@ -90,11 +92,13 @@ class ApplicationListActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefres
9092
}
9193

9294
private fun setAppEnabled(app: PackageInfo, isEnabled: Boolean) {
93-
if (!isEnabled) {
95+
val wasChanged = if (!isEnabled) {
9496
blockedPackages.add(app.packageName)
9597
} else {
9698
blockedPackages.remove(app.packageName)
9799
}
100+
101+
if (wasChanged && showEnabledOnly) applyFilters()
98102
}
99103

100104
private suspend fun loadAllApps(): List<PackageInfo> =
@@ -115,6 +119,27 @@ class ApplicationListActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefres
115119
applyFilters()
116120
true
117121
}
122+
R.id.action_show_enabled -> {
123+
showEnabledOnly = showEnabledOnly.not()
124+
applyFilters()
125+
true
126+
}
127+
R.id.action_toggle_all -> {
128+
if (blockedPackages.isEmpty()) {
129+
// If everything is enabled, disable everything
130+
blockedPackages.addAll(allApps.map { app -> app.packageName })
131+
} else {
132+
// Otherwise, re-enable everything
133+
blockedPackages.removeAll(allApps.map { app -> app.packageName })
134+
}
135+
136+
if (showEnabledOnly) {
137+
applyFilters()
138+
} else {
139+
apps_list_recyclerView.adapter?.notifyDataSetChanged()
140+
}
141+
true
142+
}
118143
else -> false
119144
}
120145
}
@@ -125,6 +150,13 @@ class ApplicationListActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefres
125150
PopupMenu(this, apps_list_more_menu).apply {
126151
this.inflate(R.menu.menu_app_list)
127152
this.menu.findItem(R.id.action_show_system).isChecked = showSystem
153+
this.menu.findItem(R.id.action_show_enabled).isChecked = showEnabledOnly
154+
this.menu.findItem(R.id.action_toggle_all).title = getString(
155+
if (blockedPackages.isEmpty())
156+
R.string.disable_all
157+
else
158+
R.string.enable_all
159+
)
128160
this.setOnMenuItemClickListener(this@ApplicationListActivity)
129161
}.show()
130162
}

app/src/main/res/menu/menu_app_list.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<menu xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item
4+
android:id="@+id/action_toggle_all"
5+
android:title="@string/disable_all" />
6+
<item
7+
android:id="@+id/action_show_enabled"
8+
android:checkable="true"
9+
android:checked="false"
10+
android:title="@string/show_enabled" />
311
<item
412
android:id="@+id/action_show_system"
513
android:checkable="true"

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,7 @@
3838
<string name="applications">Applications</string>
3939
<string name="all_applications">All applications</string>
4040
<string name="show_system">Show system</string>
41+
<string name="show_enabled">Show enabled only</string>
42+
<string name="enable_all">Enable all apps</string>
43+
<string name="disable_all">Disable all apps</string>
4144
</resources>

0 commit comments

Comments
 (0)