summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyberta <cyberta@riseup.net>2026-04-13 22:34:12 +0200
committercyberta <cyberta@riseup.net>2026-04-15 23:56:05 +0000
commit20755f680fee748ae0003af390a57ae4932fe682 (patch)
treede9a6fd22b98bb5a790c46c9577b1ca9de3576fc
parent139c2c3c20eb4b614b5cf49d76b3321f4c05af47 (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.java22
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();