From e755d469d40b95e763a9dcb67d0e4f511d1948dd Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Tue, 22 Jul 2014 13:48:29 -0700 Subject: Implementing a package install progress listener for L issue: 15835307 Change-Id: I71aaea087963f2e0e1206447190cbe23c174057d --- src/com/android/launcher3/Workspace.java | 41 +++++++++++++++++++------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'src/com/android/launcher3/Workspace.java') diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 6d9b34e21..7c8708b50 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -67,6 +67,7 @@ import android.widget.TextView; import com.android.launcher3.FolderIcon.FolderRingAnimator; import com.android.launcher3.Launcher.CustomContentCallbacks; import com.android.launcher3.LauncherSettings.Favorites; +import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo; import com.android.launcher3.compat.UserHandleCompat; import java.util.ArrayList; @@ -4864,26 +4865,32 @@ public class Workspace extends SmoothPagedView } } - public void updatePackageState(final String pkgName, final int state) { - mapOverItems(MAP_RECURSE, new ItemOperator() { - @Override - public boolean evaluate(ItemInfo info, View v, View parent) { - if (info instanceof ShortcutInfo - && ((ShortcutInfo) info).isPromiseFor(pkgName) - && v instanceof BubbleTextView) { - ((ShortcutInfo) info).setState(state); - ((BubbleTextView)v).applyState(); + public void updatePackageState(ArrayList installInfos) { + HashSet completedPackages = new HashSet<>(); + + for (final PackageInstallInfo installInfo : installInfos) { + mapOverItems(MAP_RECURSE, new ItemOperator() { + @Override + public boolean evaluate(ItemInfo info, View v, View parent) { + if (info instanceof ShortcutInfo + && ((ShortcutInfo) info).isPromiseFor(installInfo.packageName) + && v instanceof BubbleTextView) { + ((ShortcutInfo) info).setProgress(installInfo.progress); + ((ShortcutInfo) info).setState(installInfo.state); + ((BubbleTextView)v).applyState(); + } + // process all the shortcuts + return false; } - // process all the shortcuts - return false; + }); + + if (installInfo.state == ShortcutInfo.PACKAGE_STATE_DEFAULT) { + completedPackages.add(installInfo.packageName); } - }); + } - if (state == ShortcutInfo.PACKAGE_STATE_DEFAULT) { - // Update any pending widget - HashSet packages = new HashSet(); - packages.add(pkgName); - restorePendingWidgets(packages); + if (!completedPackages.isEmpty()) { + restorePendingWidgets(completedPackages); } } -- cgit v1.2.3