From 1190487e15325e371c6c18181b1a5ef7ab2a79e6 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Mon, 17 Sep 2012 16:58:46 -0700 Subject: Fixing issue where we were collating labels based on an old Locale. (Bug 7133873) Change-Id: Ic1366f06020d1e405a6800386472a8832d683c5e --- .../android/launcher2/AppsCustomizePagedView.java | 4 +- src/com/android/launcher2/LauncherModel.java | 44 +++++++++++++--------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index 48f56231b..bcc71dc44 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -1691,7 +1691,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen public void setApps(ArrayList list) { mApps = list; - Collections.sort(mApps, LauncherModel.APP_NAME_COMPARATOR); + Collections.sort(mApps, LauncherModel.getAppNameComparator()); updatePageCounts(); invalidateOnDataChange(); } @@ -1700,7 +1700,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen int count = list.size(); for (int i = 0; i < count; ++i) { ApplicationInfo info = list.get(i); - int index = Collections.binarySearch(mApps, info, LauncherModel.APP_NAME_COMPARATOR); + int index = Collections.binarySearch(mApps, info, LauncherModel.getAppNameComparator()); if (index < 0) { mApps.add(-(index + 1), info); } diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index 909cc795f..11beda8dd 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -2437,17 +2437,18 @@ public class LauncherModel extends BroadcastReceiver { return folderInfo; } - private static final Collator sCollator = Collator.getInstance(); - public static final Comparator APP_NAME_COMPARATOR - = new Comparator() { - public final int compare(ApplicationInfo a, ApplicationInfo b) { - int result = sCollator.compare(a.title.toString(), b.title.toString()); - if (result == 0) { - result = a.componentName.compareTo(b.componentName); + public static final Comparator getAppNameComparator() { + final Collator collator = Collator.getInstance(); + return new Comparator() { + public final int compare(ApplicationInfo a, ApplicationInfo b) { + int result = collator.compare(a.title.toString(), b.title.toString()); + if (result == 0) { + result = a.componentName.compareTo(b.componentName); + } + return result; } - return result; - } - }; + }; + } public static final Comparator APP_INSTALL_TIME_COMPARATOR = new Comparator() { public final int compare(ApplicationInfo a, ApplicationInfo b) { @@ -2456,12 +2457,14 @@ public class LauncherModel extends BroadcastReceiver { return 0; } }; - public static final Comparator WIDGET_NAME_COMPARATOR - = new Comparator() { - public final int compare(AppWidgetProviderInfo a, AppWidgetProviderInfo b) { - return sCollator.compare(a.label.toString(), b.label.toString()); - } - }; + public static final Comparator getWidgetNameComparator() { + final Collator collator = Collator.getInstance(); + return new Comparator() { + public final int compare(AppWidgetProviderInfo a, AppWidgetProviderInfo b) { + return collator.compare(a.label.toString(), b.label.toString()); + } + }; + } static ComponentName getComponentNameFromResolveInfo(ResolveInfo info) { if (info.activityInfo != null) { return new ComponentName(info.activityInfo.packageName, info.activityInfo.name); @@ -2470,15 +2473,18 @@ public class LauncherModel extends BroadcastReceiver { } } public static class ShortcutNameComparator implements Comparator { + private Collator mCollator; private PackageManager mPackageManager; private HashMap mLabelCache; ShortcutNameComparator(PackageManager pm) { mPackageManager = pm; mLabelCache = new HashMap(); + mCollator = Collator.getInstance(); } ShortcutNameComparator(PackageManager pm, HashMap labelCache) { mPackageManager = pm; mLabelCache = labelCache; + mCollator = Collator.getInstance(); } public final int compare(ResolveInfo a, ResolveInfo b) { CharSequence labelA, labelB; @@ -2498,15 +2504,17 @@ public class LauncherModel extends BroadcastReceiver { mLabelCache.put(keyB, labelB); } - return sCollator.compare(labelA, labelB); + return mCollator.compare(labelA, labelB); } }; public static class WidgetAndShortcutNameComparator implements Comparator { + private Collator mCollator; private PackageManager mPackageManager; private HashMap mLabelCache; WidgetAndShortcutNameComparator(PackageManager pm) { mPackageManager = pm; mLabelCache = new HashMap(); + mCollator = Collator.getInstance(); } public final int compare(Object a, Object b) { String labelA, labelB; @@ -2526,7 +2534,7 @@ public class LauncherModel extends BroadcastReceiver { ((ResolveInfo) b).loadLabel(mPackageManager).toString(); mLabelCache.put(b, labelB); } - return sCollator.compare(labelA, labelB); + return mCollator.compare(labelA, labelB); } }; -- cgit v1.2.3