From a22666f68151269853e7ab6ab696ee6361bac793 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Thu, 18 Sep 2014 13:25:15 -0700 Subject: Updating promise icon's bitmap and label when onBadgingChanged is received Bug: 17583799 Change-Id: I68b4f9d4086c43bd949ad8b46b574ec78edb32db --- .../launcher3/compat/PackageInstallerCompatVL.java | 33 +++++++++++++++++----- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'src/com/android/launcher3/compat') diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java index 2d56adf91..557a9a321 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java @@ -27,6 +27,7 @@ import com.android.launcher3.IconCache; import com.android.launcher3.LauncherAppState; import java.util.ArrayList; +import java.util.HashSet; public class PackageInstallerCompatVL extends PackageInstallerCompat { @@ -34,6 +35,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { private static final boolean DEBUG = false; private final SparseArray mPendingReplays = new SparseArray(); + private final HashSet mPendingBadgeUpdates = new HashSet(); private final PackageInstaller mInstaller; private final IconCache mCache; @@ -133,18 +135,20 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { if (!updates.isEmpty()) { app.setPackageState(updates); } + + if (!mPendingBadgeUpdates.isEmpty()) { + for (String pkg : mPendingBadgeUpdates) { + app.updatePackageBadge(pkg); + } + mPendingBadgeUpdates.clear(); + } } private final SessionCallback mCallback = new SessionCallback() { @Override public void onCreated(int sessionId) { - SessionInfo session = mInstaller.getSessionInfo(sessionId); - if (session != null) { - addSessionInfoToCahce(session, UserHandleCompat.myUserHandle()); - mPendingReplays.put(sessionId, session); - replayUpdates(null); - } + pushSessionBadgeToLauncher(sessionId); } @Override @@ -152,6 +156,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { mPendingReplays.remove(sessionId); SessionInfo session = mInstaller.getSessionInfo(sessionId); if ((session != null) && (session.getAppPackageName() != null)) { + mPendingBadgeUpdates.remove(session.getAppPackageName()); // Replay all updates with a one time update for this installed package. No // need to store this record for future updates, as the app list will get // refreshed on resume. @@ -173,6 +178,20 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { public void onActiveChanged(int sessionId, boolean active) { } @Override - public void onBadgingChanged(int sessionId) { } + public void onBadgingChanged(int sessionId) { + pushSessionBadgeToLauncher(sessionId); + } + + private void pushSessionBadgeToLauncher(int sessionId) { + SessionInfo session = mInstaller.getSessionInfo(sessionId); + if (session != null) { + addSessionInfoToCahce(session, UserHandleCompat.myUserHandle()); + if (session.getAppPackageName() != null) { + mPendingBadgeUpdates.add(session.getAppPackageName()); + } + mPendingReplays.put(sessionId, session); + replayUpdates(null); + } + } }; } -- cgit v1.2.3