summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/IconCache.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/IconCache.java')
-rw-r--r--src/com/android/launcher3/IconCache.java27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java
index 543b8ee2d..b4bb5b9c3 100644
--- a/src/com/android/launcher3/IconCache.java
+++ b/src/com/android/launcher3/IconCache.java
@@ -27,11 +27,14 @@ import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
+import com.android.launcher3.settings.SettingsProvider;
+
/**
* Cache of application icons. Icons can be made from any thread.
*/
@@ -40,6 +43,7 @@ public class IconCache {
private static final String TAG = "Launcher.IconCache";
private static final int INITIAL_ICON_CACHE_CAPACITY = 50;
+ private IconPackHelper mIconPackHelper;
private static class CacheEntry {
public Bitmap icon;
@@ -63,6 +67,9 @@ public class IconCache {
// need to set mIconDpi before getting default icon
mDefaultIcon = makeDefaultIcon();
+
+ mIconPackHelper = new IconPackHelper(context);
+ loadIconPack();
}
public Drawable getFullResDefaultActivityIcon() {
@@ -110,7 +117,14 @@ public class IconCache {
resources = null;
}
if (resources != null) {
- int iconId = info.getIconResource();
+ int iconId = 0;
+ if (mIconPackHelper != null && mIconPackHelper.isIconPackLoaded()) {
+ iconId = mIconPackHelper.getResourceIdForActivityIcon(info);
+ if (iconId != 0) {
+ return getFullResIcon(mIconPackHelper.getIconPackResources(), iconId);
+ }
+ }
+ iconId = info.getIconResource();
if (iconId != 0) {
return getFullResIcon(resources, iconId);
}
@@ -130,6 +144,16 @@ public class IconCache {
return b;
}
+ private void loadIconPack() {
+ mIconPackHelper.unloadIconPack();
+ String iconPack = SettingsProvider.getStringCustomDefault(mContext,
+ SettingsProvider.SETTINGS_UI_GENERAL_ICONS_ICON_PACK, "");
+ if (!TextUtils.isEmpty(iconPack) && !mIconPackHelper.loadIconPack(iconPack)) {
+ SettingsProvider.putString(mContext,
+ SettingsProvider.SETTINGS_UI_GENERAL_ICONS_ICON_PACK, "");
+ }
+ }
+
/**
* Remove any records for the supplied ComponentName.
*/
@@ -146,6 +170,7 @@ public class IconCache {
synchronized (mCache) {
mCache.clear();
}
+ loadIconPack();
}
/**