Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b803f7e2 authored by Schneider Victor-tulias's avatar Schneider Victor-tulias
Browse files

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
parent 6a5f431a
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.LauncherActivityInfo;
import android.content.pm.LauncherApps;
import android.os.LocaleList;
import android.os.Process;
import android.os.UserHandle;
import android.util.Log;

@@ -161,7 +162,7 @@ public class AllAppsList {
    /** Updates the given PackageInstallInfo's associated AppInfo's installation info. */
    public List<AppInfo> updatePromiseInstallInfo(PackageInstallInfo installInfo) {
        List<AppInfo> updatedAppInfos = new ArrayList<>();
        UserHandle user = installInfo.user;
        UserHandle user = Process.myUserHandle();
        for (int i = data.size() - 1; i >= 0; i--) {
            final AppInfo appInfo = data.get(i);
            final ComponentName tgtComp = appInfo.getTargetComponent();
@@ -169,6 +170,10 @@ public class AllAppsList {
                    && appInfo.user.equals(user)) {
                if (installInfo.state == PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING
                        || installInfo.state == PackageInstallInfo.STATUS_INSTALLING) {
                    if (appInfo.isAppStartable()
                            && installInfo.state == PackageInstallInfo.STATUS_INSTALLING) {
                        continue;
                    }
                    appInfo.setProgressLevel(installInfo);

                    updatedAppInfos.add(appInfo);
+2 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.launcher3.logging.FileLog;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.pm.PackageInstallInfo;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.shortcuts.ShortcutRequest;
import com.android.launcher3.util.FlagOp;
@@ -246,6 +247,7 @@ public class PackageUpdatedTask extends BaseModelUpdateTask {

                        if (isNewApkAvailable
                                && si.itemType == Favorites.ITEM_TYPE_APPLICATION) {
                            si.setProgressLevel(100, PackageInstallInfo.STATUS_INSTALLED);
                            iconCache.getTitleAndIcon(si, si.usingLowResIcon());
                            infoUpdated = true;
                        }
+1 −2
Original line number Diff line number Diff line
@@ -94,8 +94,6 @@ public class AppInfo extends ItemInfoWithIcon {
        componentName = info.componentName;
        title = Utilities.trim(info.title);
        intent = new Intent(info.intent);
        user = info.user;
        runtimeStatusFlags = info.runtimeStatusFlags;
    }

    @VisibleForTesting
@@ -114,6 +112,7 @@ public class AppInfo extends ItemInfoWithIcon {
            .setComponent(componentName)
            .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        setProgressLevel(installInfo);
        user = installInfo.user;
    }

+4 −2
Original line number Diff line number Diff line
@@ -129,7 +129,9 @@ public abstract class ItemInfoWithIcon extends ItemInfo {
    protected ItemInfoWithIcon(ItemInfoWithIcon info) {
        super(info);
        bitmap = info.bitmap;
        mProgressLevel = info.mProgressLevel;
        runtimeStatusFlags = info.runtimeStatusFlags;
        user = info.user;
    }

    @Override
@@ -195,8 +197,8 @@ public abstract class ItemInfoWithIcon extends ItemInfo {
                    : runtimeStatusFlags & ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
        } else {
            mProgressLevel = status == PackageInstallInfo.STATUS_INSTALLED ? 100 : 0;
            runtimeStatusFlags = runtimeStatusFlags & ~FLAG_INSTALL_SESSION_ACTIVE;
            runtimeStatusFlags = runtimeStatusFlags & ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
            runtimeStatusFlags &= ~FLAG_INSTALL_SESSION_ACTIVE;
            runtimeStatusFlags &= ~FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
        }
    }