Fixing issue where we were collating labels based on an old Locale. (Bug 7133873)

Change-Id: Ic1366f06020d1e405a6800386472a8832d683c5e
This commit is contained in:
Winson Chung
2012-09-17 16:58:46 -07:00
parent 804503c75a
commit 1190487e15
2 changed files with 28 additions and 20 deletions
@@ -1691,7 +1691,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
public void setApps(ArrayList<ApplicationInfo> 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);
}
+26 -18
View File
@@ -2437,17 +2437,18 @@ public class LauncherModel extends BroadcastReceiver {
return folderInfo;
}
private static final Collator sCollator = Collator.getInstance();
public static final Comparator<ApplicationInfo> APP_NAME_COMPARATOR
= new Comparator<ApplicationInfo>() {
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<ApplicationInfo> getAppNameComparator() {
final Collator collator = Collator.getInstance();
return new Comparator<ApplicationInfo>() {
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<ApplicationInfo> APP_INSTALL_TIME_COMPARATOR
= new Comparator<ApplicationInfo>() {
public final int compare(ApplicationInfo a, ApplicationInfo b) {
@@ -2456,12 +2457,14 @@ public class LauncherModel extends BroadcastReceiver {
return 0;
}
};
public static final Comparator<AppWidgetProviderInfo> WIDGET_NAME_COMPARATOR
= new Comparator<AppWidgetProviderInfo>() {
public final int compare(AppWidgetProviderInfo a, AppWidgetProviderInfo b) {
return sCollator.compare(a.label.toString(), b.label.toString());
}
};
public static final Comparator<AppWidgetProviderInfo> getWidgetNameComparator() {
final Collator collator = Collator.getInstance();
return new Comparator<AppWidgetProviderInfo>() {
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<ResolveInfo> {
private Collator mCollator;
private PackageManager mPackageManager;
private HashMap<Object, CharSequence> mLabelCache;
ShortcutNameComparator(PackageManager pm) {
mPackageManager = pm;
mLabelCache = new HashMap<Object, CharSequence>();
mCollator = Collator.getInstance();
}
ShortcutNameComparator(PackageManager pm, HashMap<Object, CharSequence> 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<Object> {
private Collator mCollator;
private PackageManager mPackageManager;
private HashMap<Object, String> mLabelCache;
WidgetAndShortcutNameComparator(PackageManager pm) {
mPackageManager = pm;
mLabelCache = new HashMap<Object, String>();
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);
}
};