Fix app list sort comparators (#48)

* Update proguard rules

* Fix app list sort comparators
This commit is contained in:
tehcneko 2021-02-02 14:17:42 +08:00 committed by GitHub
parent 7aeee8fe9a
commit cccc407084
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 27 deletions

View File

@ -14,10 +14,14 @@
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keep class io.github.lsposed.manager.util.json.** {public *; }
-keep class io.github.lsposed.manager.Constants { *; }
-keepnames class io.github.lsposed.manager.adapters.* { *; }
-keepnames class io.github.lsposed.manager.receivers.* { *; }
-keepnames class io.github.lsposed.manager.ui.* { *; }
-keepnames class io.github.lsposed.manager.utils.* { *; }
-keepnames class io.github.lsposed.manager.* { *; }

View File

@ -147,40 +147,44 @@ public class ScopeAdapter extends RecyclerView.Adapter<ScopeAdapter.ViewHolder>
if (rmList.size() > 0) {
fullList.removeAll(rmList);
}
sortApps();
showList = fullList;
showList = sortApps(fullList);
activity.onDataReady();
}
private void sortApps() {
Comparator<PackageInfo> cmp = AppHelper.getAppListComparator(preferences.getInt("list_sort", 0), pm);
fullList.sort((a, b) -> {
boolean aChecked = checkedList.contains(a.packageName);
boolean bChecked = checkedList.contains(b.packageName);
if (aChecked == bChecked) {
if (hasRecommended()) {
boolean aRecommended = recommendedList.contains(a.packageName);
boolean bRecommended = recommendedList.contains(b.packageName);
if (aRecommended || bRecommended) {
private List<PackageInfo> sortApps(List<PackageInfo> list) {
Comparator<PackageInfo> comparator = AppHelper.getAppListComparator(preferences.getInt("list_sort", 0), pm);
Comparator<PackageInfo> frameworkComparator = (a, b) -> {
if (a.packageName.equals("android") == b.packageName.equals("android")) {
return comparator.compare(a, b);
} else if (a.packageName.equals("android")) {
return -1;
} else {
return 1;
}
};
Comparator<PackageInfo> recommendedComparator = (a, b) -> {
boolean aRecommended = hasRecommended() && recommendedList.contains(a.packageName);
boolean bRecommended = hasRecommended() && recommendedList.contains(b.packageName);
if (aRecommended == bRecommended) {
return cmp.compare(a, b);
return frameworkComparator.compare(a, b);
} else if (aRecommended) {
return -1;
} else {
return 1;
}
}
}
if (a.packageName.equals("android")) return -1;
if (b.packageName.equals("android")) return 1;
return cmp.compare(a, b);
};
list.sort((a, b) -> {
boolean aChecked = checkedList.contains(a.packageName);
boolean bChecked = checkedList.contains(b.packageName);
if (aChecked == bChecked) {
return recommendedComparator.compare(a, b);
} else if (aChecked) {
return -1;
} else {
return 1;
}
});
return list;
}
private void checkRecommended() {

View File

@ -272,7 +272,7 @@ public final class ModuleUtil {
}
public List<String> getScopeList() {
if (this.scopeList == null) {
if (scopeList == null) {
try {
int scopeListResourceId = app.metaData.getInt("xposedscope");
if (scopeListResourceId != 0) {
@ -282,7 +282,7 @@ public final class ModuleUtil {
e.printStackTrace();
}
}
return this.scopeList;
return scopeList;
}
public PackageInfo getPackageInfo() {