diff options
| author | cyberta <cyberta@riseup.net> | 2026-04-13 22:34:12 +0200 |
|---|---|---|
| committer | cyberta <cyberta@riseup.net> | 2026-04-15 23:56:05 +0000 |
| commit | 20755f680fee748ae0003af390a57ae4932fe682 (patch) | |
| tree | de9a6fd22b98bb5a790c46c9577b1ca9de3576fc | |
| parent | 139c2c3c20eb4b614b5cf49d76b3321f4c05af47 (diff) | |
sort excluded apps to the top when loading the app list and while using search
| -rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java index 2e38a11e..3e981aa7 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/ExcludeAppsFragment.java @@ -22,7 +22,6 @@ import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.SearchView; import android.widget.TextView; @@ -38,7 +37,6 @@ import java.util.Locale; import java.util.Set; import java.util.Vector; -import de.blinkt.openvpn.VpnProfile; import se.leap.bitmaskclient.R; import se.leap.bitmaskclient.base.utils.ApplicationInfoManager; import se.leap.bitmaskclient.base.utils.PreferenceHelper; @@ -130,6 +128,7 @@ public class ExcludeAppsFragment extends Fragment implements SimpleCheckBox.OnCh nlist.add(pInfo); } } + sortList(nlist); results.values = nlist; results.count = nlist.size(); @@ -153,6 +152,7 @@ public class ExcludeAppsFragment extends Fragment implements SimpleCheckBox.OnCh @WorkerThread private void populateList(Activity c) { Vector<ApplicationInfo> appsList = mAppInfoManager.getApplicationInfos(); + sortList(appsList); mPackages = appsList; mFilteredData = appsList; c.runOnUiThread(() -> { @@ -163,6 +163,24 @@ public class ExcludeAppsFragment extends Fragment implements SimpleCheckBox.OnCh }); } + private void sortList(Vector<ApplicationInfo> appsList) { + appsList.sort((info1, info2) -> { + boolean app1IsExcluded = apps.contains(info1.packageName); + boolean app2IsExcluded = apps.contains(info2.packageName); + + // First, sort by the app exclusion boolean condition + if (app1IsExcluded != app2IsExcluded) { + return Boolean.compare(app2IsExcluded, app1IsExcluded); + } + + // If boolean conditions are equal, sort alphabetically by label + String label1 = mAppInfoManager.loadLabel(info1).toString(); + String label2 = mAppInfoManager.loadLabel(info2).toString(); + return label1.compareToIgnoreCase(label2); + }); + + } + @Override public int getItemCount() { return mFilteredData.size(); |
