* re-scale icons that are loaded using different denstiy metrics.
* fix potential npe
diff --git a/src/com/android/launcher/LauncherModel.java b/src/com/android/launcher/LauncherModel.java
index da41f14..3a7fac6 100644
--- a/src/com/android/launcher/LauncherModel.java
+++ b/src/com/android/launcher/LauncherModel.java
@@ -174,7 +174,7 @@
for (ResolveInfo info : matches) {
adapter.setNotifyOnChange(false);
- adapter.add(makeAndCacheApplicationInfo(packageManager, cache, info));
+ adapter.add(makeAndCacheApplicationInfo(packageManager, cache, info, launcher));
}
adapter.sort(new ApplicationInfoComparator());
@@ -239,7 +239,7 @@
final ApplicationInfo applicationInfo = findIntent(adapter,
info.activityInfo.applicationInfo.packageName, info.activityInfo.name);
if (applicationInfo != null) {
- updateAndCacheApplicationInfo(packageManager, info, applicationInfo);
+ updateAndCacheApplicationInfo(packageManager, info, applicationInfo, launcher);
changed = true;
}
}
@@ -252,9 +252,9 @@
}
private void updateAndCacheApplicationInfo(PackageManager packageManager, ResolveInfo info,
- ApplicationInfo applicationInfo) {
+ ApplicationInfo applicationInfo, Context context) {
- updateApplicationInfoTitleAndIcon(packageManager, info, applicationInfo);
+ updateApplicationInfoTitleAndIcon(packageManager, info, applicationInfo, context);
ComponentName componentName = new ComponentName(
info.activityInfo.applicationInfo.packageName, info.activityInfo.name);
@@ -326,10 +326,11 @@
info.activityInfo.applicationInfo.packageName, info.activityInfo.name);
if (applicationInfo == null) {
toAdd.add(makeAndCacheApplicationInfo(launcher.getPackageManager(),
- mAppInfoCache, info));
+ mAppInfoCache, info, launcher));
changed = true;
} else {
- updateAndCacheApplicationInfo(launcher.getPackageManager(), info, applicationInfo);
+ updateAndCacheApplicationInfo(
+ launcher.getPackageManager(), info, applicationInfo, launcher);
changed = true;
}
}
@@ -419,7 +420,8 @@
}
private static ApplicationInfo makeAndCacheApplicationInfo(PackageManager manager,
- HashMap<ComponentName, ApplicationInfo> appInfoCache, ResolveInfo info) {
+ HashMap<ComponentName, ApplicationInfo> appInfoCache, ResolveInfo info,
+ Context context) {
ComponentName componentName = new ComponentName(
info.activityInfo.applicationInfo.packageName,
@@ -430,7 +432,7 @@
application = new ApplicationInfo();
application.container = ItemInfo.NO_ID;
- updateApplicationInfoTitleAndIcon(manager, info, application);
+ updateApplicationInfoTitleAndIcon(manager, info, application, context);
application.setActivity(componentName,
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
@@ -442,14 +444,15 @@
}
private static void updateApplicationInfoTitleAndIcon(PackageManager manager, ResolveInfo info,
- ApplicationInfo application) {
+ ApplicationInfo application, Context context) {
application.title = info.loadLabel(manager);
if (application.title == null) {
application.title = info.activityInfo.name;
}
- application.icon = info.activityInfo.loadIcon(manager);
+ application.icon =
+ Utilities.createIconThumbnail(info.activityInfo.loadIcon(manager), context);
application.filtered = false;
}
@@ -495,7 +498,7 @@
for (int i = 0; i < count && !mStopped; i++) {
ResolveInfo info = apps.get(i);
ApplicationInfo application =
- makeAndCacheApplicationInfo(manager, appInfoCache, info);
+ makeAndCacheApplicationInfo(manager, appInfoCache, info, launcher);
if (action.add(application) && !mStopped) {
launcher.runOnUiThread(action);
@@ -765,7 +768,7 @@
}
if (itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION) {
- info = getApplicationInfo(manager, intent);
+ info = getApplicationInfo(manager, intent, launcher);
} else {
info = getApplicationInfoShortcut(c, launcher, iconTypeIndex,
iconPackageIndex, iconResourceIndex, iconIndex);
@@ -1116,7 +1119,8 @@
/**
* Make an ApplicationInfo object for an application
*/
- private static ApplicationInfo getApplicationInfo(PackageManager manager, Intent intent) {
+ private static ApplicationInfo getApplicationInfo(PackageManager manager, Intent intent,
+ Context context) {
final ResolveInfo resolveInfo = manager.resolveActivity(intent, 0);
if (resolveInfo == null) {
@@ -1125,7 +1129,7 @@
final ApplicationInfo info = new ApplicationInfo();
final ActivityInfo activityInfo = resolveInfo.activityInfo;
- info.icon = activityInfo.loadIcon(manager);
+ info.icon = Utilities.createIconThumbnail(activityInfo.loadIcon(manager), context);
if (info.title == null || info.title.length() == 0) {
info.title = activityInfo.loadLabel(manager);
}
@@ -1154,7 +1158,7 @@
try {
Resources resources = packageManager.getResourcesForApplication(packageName);
final int id = resources.getIdentifier(resourceName, null, null);
- info.icon = resources.getDrawable(id);
+ info.icon = Utilities.createIconThumbnail(resources.getDrawable(id), launcher);
} catch (Exception e) {
info.icon = packageManager.getDefaultActivityIcon();
}