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 # Uncomment this to preserve the line number information for
# debugging stack traces. # debugging stack traces.
#-keepattributes SourceFile,LineNumberTable -keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to # If you keep the line number information, uncomment this to
# hide the original source file name. # hide the original source file name.
#-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile
-keep class io.github.lsposed.manager.util.json.** {public *; }
-keep class io.github.lsposed.manager.Constants { *; } -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) { if (rmList.size() > 0) {
fullList.removeAll(rmList); fullList.removeAll(rmList);
} }
sortApps(); showList = sortApps(fullList);
showList = fullList;
activity.onDataReady(); activity.onDataReady();
} }
private void sortApps() { private List<PackageInfo> sortApps(List<PackageInfo> list) {
Comparator<PackageInfo> cmp = AppHelper.getAppListComparator(preferences.getInt("list_sort", 0), pm); Comparator<PackageInfo> comparator = AppHelper.getAppListComparator(preferences.getInt("list_sort", 0), pm);
fullList.sort((a, b) -> { Comparator<PackageInfo> frameworkComparator = (a, b) -> {
boolean aChecked = checkedList.contains(a.packageName); if (a.packageName.equals("android") == b.packageName.equals("android")) {
boolean bChecked = checkedList.contains(b.packageName); return comparator.compare(a, b);
if (aChecked == bChecked) { } else if (a.packageName.equals("android")) {
if (hasRecommended()) { return -1;
boolean aRecommended = recommendedList.contains(a.packageName); } else {
boolean bRecommended = recommendedList.contains(b.packageName); return 1;
if (aRecommended || bRecommended) { }
};
Comparator<PackageInfo> recommendedComparator = (a, b) -> {
boolean aRecommended = hasRecommended() && recommendedList.contains(a.packageName);
boolean bRecommended = hasRecommended() && recommendedList.contains(b.packageName);
if (aRecommended == bRecommended) { if (aRecommended == bRecommended) {
return cmp.compare(a, b); return frameworkComparator.compare(a, b);
} else if (aRecommended) { } else if (aRecommended) {
return -1; return -1;
} else { } else {
return 1; return 1;
} }
} };
} list.sort((a, b) -> {
if (a.packageName.equals("android")) return -1; boolean aChecked = checkedList.contains(a.packageName);
if (b.packageName.equals("android")) return 1; boolean bChecked = checkedList.contains(b.packageName);
return cmp.compare(a, b); if (aChecked == bChecked) {
return recommendedComparator.compare(a, b);
} else if (aChecked) { } else if (aChecked) {
return -1; return -1;
} else { } else {
return 1; return 1;
} }
}); });
return list;
} }
private void checkRecommended() { private void checkRecommended() {

View File

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