diff options
Diffstat (limited to 'app/src/main/java/se')
| -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(); |
