Add UI updates for incremental app installs.
1. Changed Preload Icon UI to be grayscale while the app is not startable. 2. Added progress bar for when app is installed but still ownloading. 3. Updated Preload Icon progress and click handling to use new incremental api. Progress bar color updates will follow in a separate CL. Demo: https://drive.google.com/file/d/1H1EvtTorLeJwC1eiq10tm-TT81YZ6osk/view?usp=sharing Fixes: 176901235,176992421,176884453 Test: manual Change-Id: Ie0575dc56c33c5d6ecd6c5cbf00666b96d6dcb16
This commit is contained in:
parent
6a5f431a7b
commit
b803f7e2cb
|
@ -26,6 +26,7 @@ import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.LauncherActivityInfo;
|
import android.content.pm.LauncherActivityInfo;
|
||||||
import android.content.pm.LauncherApps;
|
import android.content.pm.LauncherApps;
|
||||||
import android.os.LocaleList;
|
import android.os.LocaleList;
|
||||||
|
import android.os.Process;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
@ -161,7 +162,7 @@ public class AllAppsList {
|
||||||
/** Updates the given PackageInstallInfo's associated AppInfo's installation info. */
|
/** Updates the given PackageInstallInfo's associated AppInfo's installation info. */
|
||||||
public List<AppInfo> updatePromiseInstallInfo(PackageInstallInfo installInfo) {
|
public List<AppInfo> updatePromiseInstallInfo(PackageInstallInfo installInfo) {
|
||||||
List<AppInfo> updatedAppInfos = new ArrayList<>();
|
List<AppInfo> updatedAppInfos = new ArrayList<>();
|
||||||
UserHandle user = installInfo.user;
|
UserHandle user = Process.myUserHandle();
|
||||||
for (int i = data.size() - 1; i >= 0; i--) {
|
for (int i = data.size() - 1; i >= 0; i--) {
|
||||||
final AppInfo appInfo = data.get(i);
|
final AppInfo appInfo = data.get(i);
|
||||||
final ComponentName tgtComp = appInfo.getTargetComponent();
|
final ComponentName tgtComp = appInfo.getTargetComponent();
|
||||||
|
@ -169,6 +170,10 @@ public class AllAppsList {
|
||||||
&& appInfo.user.equals(user)) {
|
&& appInfo.user.equals(user)) {
|
||||||
if (installInfo.state == PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING
|
if (installInfo.state == PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING
|
||||||
|| installInfo.state == PackageInstallInfo.STATUS_INSTALLING) {
|
|| installInfo.state == PackageInstallInfo.STATUS_INSTALLING) {
|
||||||
|
if (appInfo.isAppStartable()
|
||||||
|
&& installInfo.state == PackageInstallInfo.STATUS_INSTALLING) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
appInfo.setProgressLevel(installInfo);
|
appInfo.setProgressLevel(installInfo);
|
||||||
|
|
||||||
updatedAppInfos.add(appInfo);
|
updatedAppInfos.add(appInfo);
|
||||||
|
|
|
@ -38,6 +38,7 @@ import com.android.launcher3.logging.FileLog;
|
||||||
import com.android.launcher3.model.data.ItemInfo;
|
import com.android.launcher3.model.data.ItemInfo;
|
||||||
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
|
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
|
||||||
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||||
|
import com.android.launcher3.pm.PackageInstallInfo;
|
||||||
import com.android.launcher3.pm.UserCache;
|
import com.android.launcher3.pm.UserCache;
|
||||||
import com.android.launcher3.shortcuts.ShortcutRequest;
|
import com.android.launcher3.shortcuts.ShortcutRequest;
|
||||||
import com.android.launcher3.util.FlagOp;
|
import com.android.launcher3.util.FlagOp;
|
||||||
|
@ -246,6 +247,7 @@ public class PackageUpdatedTask extends BaseModelUpdateTask {
|
||||||
|
|
||||||
if (isNewApkAvailable
|
if (isNewApkAvailable
|
||||||
&& si.itemType == Favorites.ITEM_TYPE_APPLICATION) {
|
&& si.itemType == Favorites.ITEM_TYPE_APPLICATION) {
|
||||||
|
si.setProgressLevel(100, PackageInstallInfo.STATUS_INSTALLED);
|
||||||
iconCache.getTitleAndIcon(si, si.usingLowResIcon());
|
iconCache.getTitleAndIcon(si, si.usingLowResIcon());
|
||||||
infoUpdated = true;
|
infoUpdated = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,8 +94,6 @@ public class AppInfo extends ItemInfoWithIcon {
|
||||||
componentName = info.componentName;
|
componentName = info.componentName;
|
||||||
title = Utilities.trim(info.title);
|
title = Utilities.trim(info.title);
|
||||||
intent = new Intent(info.intent);
|
intent = new Intent(info.intent);
|
||||||
user = info.user;
|
|
||||||
runtimeStatusFlags = info.runtimeStatusFlags;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@ -114,6 +112,7 @@ public class AppInfo extends ItemInfoWithIcon {
|
||||||
.setComponent(componentName)
|
.setComponent(componentName)
|
||||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
||||||
|
setProgressLevel(installInfo);
|
||||||
user = installInfo.user;
|
user = installInfo.user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,9 @@ public abstract class ItemInfoWithIcon extends ItemInfo {
|
||||||
protected ItemInfoWithIcon(ItemInfoWithIcon info) {
|
protected ItemInfoWithIcon(ItemInfoWithIcon info) {
|
||||||
super(info);
|
super(info);
|
||||||
bitmap = info.bitmap;
|
bitmap = info.bitmap;
|
||||||
|
mProgressLevel = info.mProgressLevel;
|
||||||
runtimeStatusFlags = info.runtimeStatusFlags;
|
runtimeStatusFlags = info.runtimeStatusFlags;
|
||||||
|
user = info.user;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -195,8 +197,8 @@ public abstract class ItemInfoWithIcon extends ItemInfo {
|
||||||
: runtimeStatusFlags & ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
|
: runtimeStatusFlags & ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
|
||||||
} else {
|
} else {
|
||||||
mProgressLevel = status == PackageInstallInfo.STATUS_INSTALLED ? 100 : 0;
|
mProgressLevel = status == PackageInstallInfo.STATUS_INSTALLED ? 100 : 0;
|
||||||
runtimeStatusFlags = runtimeStatusFlags & ~FLAG_INSTALL_SESSION_ACTIVE;
|
runtimeStatusFlags &= ~FLAG_INSTALL_SESSION_ACTIVE;
|
||||||
runtimeStatusFlags = runtimeStatusFlags & ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
|
runtimeStatusFlags &= ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue