Loading src/com/android/launcher3/AutoInstallsLayout.java +1 −1 Original line number Diff line number Diff line Loading @@ -298,7 +298,7 @@ public class AutoInstallsLayout implements WorkspaceLoader { return -1; } mValues.put(Favorites.RESTORED, 1); mValues.put(Favorites.RESTORED, ShortcutInfo.FLAG_AUTOINTALL_ICON); final Intent intent = new Intent(Intent.ACTION_MAIN, null) .addCategory(Intent.CATEGORY_LAUNCHER) .setComponent(new ComponentName(packageName, className)) Loading src/com/android/launcher3/BubbleTextView.java +14 −35 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import android.graphics.Canvas; import android.graphics.Region; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.util.SparseArray; import android.util.TypedValue; import android.view.KeyEvent; Loading @@ -50,10 +49,6 @@ public class BubbleTextView extends TextView { private static final int SHADOW_SMALL_COLOUR = 0xCC000000; static final float PADDING_V = 3.0f; private static final String TAG = "BubbleTextView"; private static final boolean DEBUG = false; private HolographicOutlineHelper mOutlineHelper; private Bitmap mPressedBackground; Loading Loading @@ -118,6 +113,11 @@ public class BubbleTextView extends TextView { public void applyFromShortcutInfo(ShortcutInfo info, IconCache iconCache, boolean setDefaultPadding) { applyFromShortcutInfo(info, iconCache, setDefaultPadding, false); } public void applyFromShortcutInfo(ShortcutInfo info, IconCache iconCache, boolean setDefaultPadding, boolean promiseStateChanged) { Bitmap b = info.getIcon(iconCache); LauncherAppState app = LauncherAppState.getInstance(); Loading @@ -135,8 +135,8 @@ public class BubbleTextView extends TextView { setText(info.title); setTag(info); if (info.wasPromise) { applyState(); if (promiseStateChanged || info.isPromise()) { applyState(promiseStateChanged); } } Loading Loading @@ -377,31 +377,13 @@ public class BubbleTextView extends TextView { mLongPressHelper.cancelLongPress(); } public void applyState() { public void applyState(boolean promiseStateChanged) { if (getTag() instanceof ShortcutInfo) { ShortcutInfo info = (ShortcutInfo) getTag(); final int state = info.getState(); final int progressLevel; if (DEBUG) Log.d(TAG, "applying icon state: " + state); switch(state) { case ShortcutInfo.PACKAGE_STATE_DEFAULT: progressLevel = 100; break; case ShortcutInfo.PACKAGE_STATE_INSTALLING: setText(R.string.package_state_installing); progressLevel = info.getProgress(); break; case ShortcutInfo.PACKAGE_STATE_ERROR: case ShortcutInfo.PACKAGE_STATE_UNKNOWN: default: progressLevel = 0; setText(R.string.package_state_unknown); break; } final boolean isPromise = info.isPromise(); final int progressLevel = isPromise ? ((info.hasStatusFlag(ShortcutInfo.FLAG_INSTALL_SESSION_ACTIVE) ? info.getInstallProgress() : 0)) : 100; Drawable[] drawables = getCompoundDrawables(); Drawable top = drawables[1]; Loading @@ -415,12 +397,9 @@ public class BubbleTextView extends TextView { } preloadDrawable.setLevel(progressLevel); if ((state == ShortcutInfo.PACKAGE_STATE_DEFAULT) && info.wasPromise) { // Clear the promise flag as it is no longer different than a normal shortcut, // once the animation has been run. info.wasPromise = !preloadDrawable.maybePerformFinishedAnimation(); if (promiseStateChanged) { preloadDrawable.maybePerformFinishedAnimation(); } } } } Loading src/com/android/launcher3/IconCache.java +47 −5 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.Log; import com.android.launcher3.compat.LauncherActivityInfoCompat; Loading Loading @@ -254,18 +255,16 @@ public class IconCache { return getIcon(intent, null, user, true); } public Bitmap getIcon(Intent intent, String title, UserHandleCompat user, boolean usePkgIcon) { private Bitmap getIcon(Intent intent, String title, UserHandleCompat user, boolean usePkgIcon) { synchronized (mCache) { LauncherActivityInfoCompat launcherActInfo = mLauncherApps.resolveActivity(intent, user); ComponentName component = intent.getComponent(); // null info means not installed, but if we have a component from the intent then // we should still look in the cache for restored app icons. if (component == null) { return getDefaultIcon(user); } LauncherActivityInfoCompat launcherActInfo = mLauncherApps.resolveActivity(intent, user); CacheEntry entry = cacheLocked(component, launcherActInfo, null, user, usePkgIcon); if (title != null) { entry.title = title; Loading @@ -275,6 +274,32 @@ public class IconCache { } } /** * Fill in "shortcutInfo" with the icon and label for "info." */ public void getTitleAndIcon(ShortcutInfo shortcutInfo, Intent intent, UserHandleCompat user, boolean usePkgIcon) { synchronized (mCache) { ComponentName component = intent.getComponent(); // null info means not installed, but if we have a component from the intent then // we should still look in the cache for restored app icons. if (component == null) { shortcutInfo.setIcon(getDefaultIcon(user)); shortcutInfo.title = ""; shortcutInfo.usingFallbackIcon = true; } else { LauncherActivityInfoCompat launcherActInfo = mLauncherApps.resolveActivity(intent, user); CacheEntry entry = cacheLocked(component, launcherActInfo, null, user, usePkgIcon); shortcutInfo.setIcon(entry.icon); shortcutInfo.title = entry.title; shortcutInfo.usingFallbackIcon = isDefaultIcon(entry.icon, user); } } } public Bitmap getDefaultIcon(UserHandleCompat user) { if (!mDefaultIcons.containsKey(user)) { mDefaultIcons.put(user, makeDefaultIcon(user)); Loading Loading @@ -332,10 +357,11 @@ public class IconCache { if (usePackageIcon) { CacheEntry packageEntry = getEntryForPackage( componentName.getPackageName(), user); if (packageEntry != null && packageEntry.icon != null) { if (packageEntry != null) { if (DEBUG) Log.d(TAG, "using package default icon for " + componentName.toShortString()); entry.icon = packageEntry.icon; entry.title = packageEntry.title; } } if (entry.icon == null) { Loading @@ -349,6 +375,21 @@ public class IconCache { return entry; } /** * Adds a default package entry in the cache. This entry is not persisted and will be removed * when the cache is flushed. */ public void cachePackageInstallInfo(String packageName, UserHandleCompat user, Bitmap icon, CharSequence title) { CacheEntry entry = getEntryForPackage(packageName, user); if (!TextUtils.isEmpty(title)) { entry.title = title; } if (icon != null) { entry.icon = Utilities.createIconBitmap(icon, mContext); } } /** * Gets an entry for the package, which can be used as a fallback entry for various components. */ Loading @@ -358,6 +399,7 @@ public class IconCache { CacheEntry entry = mCache.get(cacheKey); if (entry == null) { entry = new CacheEntry(); entry.title = ""; mCache.put(cacheKey, entry); try { Loading src/com/android/launcher3/ItemInfo.java +0 −4 Original line number Diff line number Diff line Loading @@ -146,10 +146,6 @@ public class ItemInfo { throw new RuntimeException("Unexpected Intent"); } protected Intent getRestoredIntent() { throw new RuntimeException("Unexpected Intent"); } /** * Write the fields of this item to the DB * Loading src/com/android/launcher3/Launcher.java +4 −2 Original line number Diff line number Diff line Loading @@ -2600,9 +2600,11 @@ public class Launcher extends Activity } // Check for abandoned promise if (shortcut.isAbandoned() && v instanceof BubbleTextView) { if ((v instanceof BubbleTextView) && shortcut.isPromise() && !shortcut.hasStatusFlag(ShortcutInfo.FLAG_INSTALL_SESSION_ACTIVE)) { showBrokenAppInstallDialog( shortcut.getRestoredIntent().getComponent().getPackageName(), shortcut.getTargetComponent().getPackageName(), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { startAppShortcutOrInfoActivity(v); Loading Loading
src/com/android/launcher3/AutoInstallsLayout.java +1 −1 Original line number Diff line number Diff line Loading @@ -298,7 +298,7 @@ public class AutoInstallsLayout implements WorkspaceLoader { return -1; } mValues.put(Favorites.RESTORED, 1); mValues.put(Favorites.RESTORED, ShortcutInfo.FLAG_AUTOINTALL_ICON); final Intent intent = new Intent(Intent.ACTION_MAIN, null) .addCategory(Intent.CATEGORY_LAUNCHER) .setComponent(new ComponentName(packageName, className)) Loading
src/com/android/launcher3/BubbleTextView.java +14 −35 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import android.graphics.Canvas; import android.graphics.Region; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.util.SparseArray; import android.util.TypedValue; import android.view.KeyEvent; Loading @@ -50,10 +49,6 @@ public class BubbleTextView extends TextView { private static final int SHADOW_SMALL_COLOUR = 0xCC000000; static final float PADDING_V = 3.0f; private static final String TAG = "BubbleTextView"; private static final boolean DEBUG = false; private HolographicOutlineHelper mOutlineHelper; private Bitmap mPressedBackground; Loading Loading @@ -118,6 +113,11 @@ public class BubbleTextView extends TextView { public void applyFromShortcutInfo(ShortcutInfo info, IconCache iconCache, boolean setDefaultPadding) { applyFromShortcutInfo(info, iconCache, setDefaultPadding, false); } public void applyFromShortcutInfo(ShortcutInfo info, IconCache iconCache, boolean setDefaultPadding, boolean promiseStateChanged) { Bitmap b = info.getIcon(iconCache); LauncherAppState app = LauncherAppState.getInstance(); Loading @@ -135,8 +135,8 @@ public class BubbleTextView extends TextView { setText(info.title); setTag(info); if (info.wasPromise) { applyState(); if (promiseStateChanged || info.isPromise()) { applyState(promiseStateChanged); } } Loading Loading @@ -377,31 +377,13 @@ public class BubbleTextView extends TextView { mLongPressHelper.cancelLongPress(); } public void applyState() { public void applyState(boolean promiseStateChanged) { if (getTag() instanceof ShortcutInfo) { ShortcutInfo info = (ShortcutInfo) getTag(); final int state = info.getState(); final int progressLevel; if (DEBUG) Log.d(TAG, "applying icon state: " + state); switch(state) { case ShortcutInfo.PACKAGE_STATE_DEFAULT: progressLevel = 100; break; case ShortcutInfo.PACKAGE_STATE_INSTALLING: setText(R.string.package_state_installing); progressLevel = info.getProgress(); break; case ShortcutInfo.PACKAGE_STATE_ERROR: case ShortcutInfo.PACKAGE_STATE_UNKNOWN: default: progressLevel = 0; setText(R.string.package_state_unknown); break; } final boolean isPromise = info.isPromise(); final int progressLevel = isPromise ? ((info.hasStatusFlag(ShortcutInfo.FLAG_INSTALL_SESSION_ACTIVE) ? info.getInstallProgress() : 0)) : 100; Drawable[] drawables = getCompoundDrawables(); Drawable top = drawables[1]; Loading @@ -415,12 +397,9 @@ public class BubbleTextView extends TextView { } preloadDrawable.setLevel(progressLevel); if ((state == ShortcutInfo.PACKAGE_STATE_DEFAULT) && info.wasPromise) { // Clear the promise flag as it is no longer different than a normal shortcut, // once the animation has been run. info.wasPromise = !preloadDrawable.maybePerformFinishedAnimation(); if (promiseStateChanged) { preloadDrawable.maybePerformFinishedAnimation(); } } } } Loading
src/com/android/launcher3/IconCache.java +47 −5 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.Log; import com.android.launcher3.compat.LauncherActivityInfoCompat; Loading Loading @@ -254,18 +255,16 @@ public class IconCache { return getIcon(intent, null, user, true); } public Bitmap getIcon(Intent intent, String title, UserHandleCompat user, boolean usePkgIcon) { private Bitmap getIcon(Intent intent, String title, UserHandleCompat user, boolean usePkgIcon) { synchronized (mCache) { LauncherActivityInfoCompat launcherActInfo = mLauncherApps.resolveActivity(intent, user); ComponentName component = intent.getComponent(); // null info means not installed, but if we have a component from the intent then // we should still look in the cache for restored app icons. if (component == null) { return getDefaultIcon(user); } LauncherActivityInfoCompat launcherActInfo = mLauncherApps.resolveActivity(intent, user); CacheEntry entry = cacheLocked(component, launcherActInfo, null, user, usePkgIcon); if (title != null) { entry.title = title; Loading @@ -275,6 +274,32 @@ public class IconCache { } } /** * Fill in "shortcutInfo" with the icon and label for "info." */ public void getTitleAndIcon(ShortcutInfo shortcutInfo, Intent intent, UserHandleCompat user, boolean usePkgIcon) { synchronized (mCache) { ComponentName component = intent.getComponent(); // null info means not installed, but if we have a component from the intent then // we should still look in the cache for restored app icons. if (component == null) { shortcutInfo.setIcon(getDefaultIcon(user)); shortcutInfo.title = ""; shortcutInfo.usingFallbackIcon = true; } else { LauncherActivityInfoCompat launcherActInfo = mLauncherApps.resolveActivity(intent, user); CacheEntry entry = cacheLocked(component, launcherActInfo, null, user, usePkgIcon); shortcutInfo.setIcon(entry.icon); shortcutInfo.title = entry.title; shortcutInfo.usingFallbackIcon = isDefaultIcon(entry.icon, user); } } } public Bitmap getDefaultIcon(UserHandleCompat user) { if (!mDefaultIcons.containsKey(user)) { mDefaultIcons.put(user, makeDefaultIcon(user)); Loading Loading @@ -332,10 +357,11 @@ public class IconCache { if (usePackageIcon) { CacheEntry packageEntry = getEntryForPackage( componentName.getPackageName(), user); if (packageEntry != null && packageEntry.icon != null) { if (packageEntry != null) { if (DEBUG) Log.d(TAG, "using package default icon for " + componentName.toShortString()); entry.icon = packageEntry.icon; entry.title = packageEntry.title; } } if (entry.icon == null) { Loading @@ -349,6 +375,21 @@ public class IconCache { return entry; } /** * Adds a default package entry in the cache. This entry is not persisted and will be removed * when the cache is flushed. */ public void cachePackageInstallInfo(String packageName, UserHandleCompat user, Bitmap icon, CharSequence title) { CacheEntry entry = getEntryForPackage(packageName, user); if (!TextUtils.isEmpty(title)) { entry.title = title; } if (icon != null) { entry.icon = Utilities.createIconBitmap(icon, mContext); } } /** * Gets an entry for the package, which can be used as a fallback entry for various components. */ Loading @@ -358,6 +399,7 @@ public class IconCache { CacheEntry entry = mCache.get(cacheKey); if (entry == null) { entry = new CacheEntry(); entry.title = ""; mCache.put(cacheKey, entry); try { Loading
src/com/android/launcher3/ItemInfo.java +0 −4 Original line number Diff line number Diff line Loading @@ -146,10 +146,6 @@ public class ItemInfo { throw new RuntimeException("Unexpected Intent"); } protected Intent getRestoredIntent() { throw new RuntimeException("Unexpected Intent"); } /** * Write the fields of this item to the DB * Loading
src/com/android/launcher3/Launcher.java +4 −2 Original line number Diff line number Diff line Loading @@ -2600,9 +2600,11 @@ public class Launcher extends Activity } // Check for abandoned promise if (shortcut.isAbandoned() && v instanceof BubbleTextView) { if ((v instanceof BubbleTextView) && shortcut.isPromise() && !shortcut.hasStatusFlag(ShortcutInfo.FLAG_INSTALL_SESSION_ACTIVE)) { showBrokenAppInstallDialog( shortcut.getRestoredIntent().getComponent().getPackageName(), shortcut.getTargetComponent().getPackageName(), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { startAppShortcutOrInfoActivity(v); Loading