From 0e9d44b7e6059de610e4488538b4c5584b2e502d Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Wed, 17 Jul 2013 13:59:42 +0200 Subject: Fix app selection when adding apps to app groups. - Don't drop separate apps with the same title - Sort case-insensitive - Sort disabled apps to the end of the list Change-Id: Iffadca4896468aaee5fcfd60f8776c2bb1a8ce7f --- .../android/settings/profiles/AppGroupConfig.java | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/profiles/AppGroupConfig.java b/src/com/android/settings/profiles/AppGroupConfig.java index b5ea87c..8fbcfd0 100644 --- a/src/com/android/settings/profiles/AppGroupConfig.java +++ b/src/com/android/settings/profiles/AppGroupConfig.java @@ -74,8 +74,6 @@ public class AppGroupConfig extends SettingsPreferenceFragment private PackageManager mPackageManager; - private List mInstalledPackages; - private NotificationGroup mNotificationGroup; private ProfileManager mProfileManager; @@ -99,8 +97,7 @@ public class AppGroupConfig extends SettingsPreferenceFragment if (args != null) { mNotificationGroup = (NotificationGroup) args.getParcelable("NotificationGroup"); mPackageManager = getPackageManager(); - mInstalledPackages = mPackageManager.getInstalledPackages(0); - mAppAdapter = new PackageAdaptor(mInstalledPackages); + mAppAdapter = new PackageAdaptor(mPackageManager.getInstalledPackages(0)); mAppAdapter.update(); updatePackages(); @@ -323,15 +320,21 @@ public class AppGroupConfig extends SettingsPreferenceFragment } class PackageItem implements Comparable { - CharSequence title; - + String title; String packageName; - Drawable icon; + boolean enabled; @Override public int compareTo(PackageItem another) { - return this.title.toString().compareTo(another.title.toString()); + if (enabled != another.enabled) { + return enabled ? -1 : 1; + } + int titleResult = title.compareToIgnoreCase(another.title); + if (titleResult != 0) { + return titleResult; + } + return packageName.compareTo(another.packageName); } } @@ -352,11 +355,11 @@ public class AppGroupConfig extends SettingsPreferenceFragment for (PackageInfo info : mInstalledPackageInfo) { final PackageItem item = new PackageItem(); ApplicationInfo applicationInfo = info.applicationInfo; - item.title = applicationInfo.loadLabel(mPackageManager); + item.title = applicationInfo.loadLabel(mPackageManager).toString(); item.icon = applicationInfo.loadIcon(mPackageManager); item.packageName = applicationInfo.packageName; + item.enabled = applicationInfo.enabled; handler.post(new Runnable() { - @Override public void run() { int index = Collections.binarySearch(mInstalledPackages, item); -- cgit v1.1