Loading iconloaderlib/src/com/android/launcher3/icons/IconProvider.java +39 −1 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.content.res.XmlResourceParser; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -70,6 +71,9 @@ public class IconProvider { private static final boolean DEBUG = false; private static final String ICON_METADATA_KEY_PREFIX = ".dynamic_icons"; private static final String MONTH_BG_ICON_METADATA_KEY_PREFIX = ".month_dynamic_icons"; private static final String DAY_FG_ICON_METADATA_KEY_PREFIX = ".day_dynamic_icons"; private static final String SYSTEM_STATE_SEPARATOR = " "; private static final String THEMED_ICON_MAP_FILE = "grayscale_icon_map"; Loading Loading @@ -223,6 +227,7 @@ public class IconProvider { } private Drawable loadCalendarDrawable(int iconDpi) { Log.e("lulz", "loading cal iconn"); PackageManager pm = mContext.getPackageManager(); try { final Bundle metadata = pm.getActivityInfo( Loading @@ -231,9 +236,15 @@ public class IconProvider { .metaData; final Resources resources = pm.getResourcesForApplication(mCalendar.getPackageName()); final int id = getDynamicIconId(metadata, resources); if (id != ID_NULL) { final int[] monthDayIds = getDynamicBackgroundIconId(metadata, resources); if (id != ID_NULL && (monthDayIds == null || monthDayIds[0] == ID_NULL || monthDayIds[1] == ID_NULL)) { if (DEBUG) Log.d(TAG, "Got icon #" + id); return resources.getDrawableForDensity(id, iconDpi, null /* theme */); } else if (monthDayIds != null) { Drawable background = resources.getDrawableForDensity(monthDayIds[0], iconDpi, null /* theme */); Drawable foreground = resources.getDrawableForDensity(monthDayIds[1], iconDpi, null /* theme */); return new AdaptiveIconDrawable(background, foreground); } } catch (PackageManager.NameNotFoundException e) { if (DEBUG) { Loading Loading @@ -272,6 +283,29 @@ public class IconProvider { } } private int[] getDynamicBackgroundIconId(Bundle metadata, Resources resources) { if (metadata == null) { return null; } String bgKey = mCalendar.getPackageName() + MONTH_BG_ICON_METADATA_KEY_PREFIX; String fgKey = mCalendar.getPackageName() + DAY_FG_ICON_METADATA_KEY_PREFIX; final int bgArrayId = metadata.getInt(bgKey, ID_NULL); final int fgArrayId = metadata.getInt(fgKey, ID_NULL); if (bgArrayId == ID_NULL || fgArrayId == ID_NULL) { return null; } try { return new int[] {resources.obtainTypedArray(bgArrayId).getResourceId(getMonth(), ID_NULL), resources.obtainTypedArray(fgArrayId).getResourceId(getDay(), ID_NULL)}; } catch (Resources.NotFoundException e) { if (DEBUG) { Log.d(TAG, "package defines '" + bgKey + " and " + fgKey + "' but corresponding array not found"); } return null; } } /** * @return Today's day of the month, zero-indexed. */ Loading @@ -279,6 +313,10 @@ public class IconProvider { return Calendar.getInstance().get(Calendar.DAY_OF_MONTH) - 1; } private static int getMonth() { return Calendar.getInstance().get(Calendar.MONTH); } private static ComponentName parseComponentOrNull(Context context, int resId) { String cn = context.getString(resId); return TextUtils.isEmpty(cn) ? null : ComponentName.unflattenFromString(cn); Loading Loading
iconloaderlib/src/com/android/launcher3/icons/IconProvider.java +39 −1 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.content.res.XmlResourceParser; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -70,6 +71,9 @@ public class IconProvider { private static final boolean DEBUG = false; private static final String ICON_METADATA_KEY_PREFIX = ".dynamic_icons"; private static final String MONTH_BG_ICON_METADATA_KEY_PREFIX = ".month_dynamic_icons"; private static final String DAY_FG_ICON_METADATA_KEY_PREFIX = ".day_dynamic_icons"; private static final String SYSTEM_STATE_SEPARATOR = " "; private static final String THEMED_ICON_MAP_FILE = "grayscale_icon_map"; Loading Loading @@ -223,6 +227,7 @@ public class IconProvider { } private Drawable loadCalendarDrawable(int iconDpi) { Log.e("lulz", "loading cal iconn"); PackageManager pm = mContext.getPackageManager(); try { final Bundle metadata = pm.getActivityInfo( Loading @@ -231,9 +236,15 @@ public class IconProvider { .metaData; final Resources resources = pm.getResourcesForApplication(mCalendar.getPackageName()); final int id = getDynamicIconId(metadata, resources); if (id != ID_NULL) { final int[] monthDayIds = getDynamicBackgroundIconId(metadata, resources); if (id != ID_NULL && (monthDayIds == null || monthDayIds[0] == ID_NULL || monthDayIds[1] == ID_NULL)) { if (DEBUG) Log.d(TAG, "Got icon #" + id); return resources.getDrawableForDensity(id, iconDpi, null /* theme */); } else if (monthDayIds != null) { Drawable background = resources.getDrawableForDensity(monthDayIds[0], iconDpi, null /* theme */); Drawable foreground = resources.getDrawableForDensity(monthDayIds[1], iconDpi, null /* theme */); return new AdaptiveIconDrawable(background, foreground); } } catch (PackageManager.NameNotFoundException e) { if (DEBUG) { Loading Loading @@ -272,6 +283,29 @@ public class IconProvider { } } private int[] getDynamicBackgroundIconId(Bundle metadata, Resources resources) { if (metadata == null) { return null; } String bgKey = mCalendar.getPackageName() + MONTH_BG_ICON_METADATA_KEY_PREFIX; String fgKey = mCalendar.getPackageName() + DAY_FG_ICON_METADATA_KEY_PREFIX; final int bgArrayId = metadata.getInt(bgKey, ID_NULL); final int fgArrayId = metadata.getInt(fgKey, ID_NULL); if (bgArrayId == ID_NULL || fgArrayId == ID_NULL) { return null; } try { return new int[] {resources.obtainTypedArray(bgArrayId).getResourceId(getMonth(), ID_NULL), resources.obtainTypedArray(fgArrayId).getResourceId(getDay(), ID_NULL)}; } catch (Resources.NotFoundException e) { if (DEBUG) { Log.d(TAG, "package defines '" + bgKey + " and " + fgKey + "' but corresponding array not found"); } return null; } } /** * @return Today's day of the month, zero-indexed. */ Loading @@ -279,6 +313,10 @@ public class IconProvider { return Calendar.getInstance().get(Calendar.DAY_OF_MONTH) - 1; } private static int getMonth() { return Calendar.getInstance().get(Calendar.MONTH); } private static ComponentName parseComponentOrNull(Context context, int resId) { String cn = context.getString(resId); return TextUtils.isEmpty(cn) ? null : ComponentName.unflattenFromString(cn); Loading