diff options
Diffstat (limited to 'src/com/android/launcher3/IconCache.java')
-rw-r--r-- | src/com/android/launcher3/IconCache.java | 27 |
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(); } /** |