@@ -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 }
0 commit comments