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

Commit 2b823f45 authored by Jon Miranda's avatar Jon Miranda
Browse files

Show icon in PendingAppWidgetHostView immediately.

Before this change, PendingAppWidgetHostView would appear 'blank'
until they were loaded -- which could take a while depending on
how many apps the user had, because the all apps icons are loaded
first.

Bug: 36815047
Change-Id: Ia7449cce4341ed9e9384fc8aaadeaae6c33bb262
parent 0811bc50
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3613,6 +3613,9 @@ public class Launcher extends BaseActivity

        LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) view.getTag();
        info.restoreStatus = finalRestoreFlag;
        if (info.restoreStatus == LauncherAppWidgetInfo.RESTORE_COMPLETED) {
            info.pendingItemInfo = null;
        }

        mWorkspace.reinflateWidgetsIfNecessary();
        getModelWriter().updateItemInDatabase(info);
+6 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.ComponentName;
import android.content.Intent;
import android.os.Process;

import com.android.launcher3.model.PackageItemInfo;
import com.android.launcher3.util.ContentWriter;

/**
@@ -95,6 +96,11 @@ public class LauncherAppWidgetInfo extends ItemInfo {
     */
    public Intent bindOptions;

    /**
     * Nonnull for pending widgets. We use this to get the icon and title for the widget.
     */
    public PackageItemInfo pendingItemInfo;

    private boolean mHasNotifiedInitialWidgetSizeChanged;

    public LauncherAppWidgetInfo(int appWidgetId, ComponentName providerName) {
+10 −0
Original line number Diff line number Diff line
@@ -1216,6 +1216,16 @@ public class LauncherModel extends BroadcastReceiver
                                                    .commit();
                                        }
                                    }

                                    if (appWidgetInfo.restoreStatus !=
                                            LauncherAppWidgetInfo.RESTORE_COMPLETED) {
                                        String pkg = appWidgetInfo.providerName.getPackageName();
                                        appWidgetInfo.pendingItemInfo = new PackageItemInfo(pkg);
                                        appWidgetInfo.pendingItemInfo.user = appWidgetInfo.user;
                                        mIconCache.getTitleAndIconForApp(
                                                appWidgetInfo.pendingItemInfo, false);
                                    }

                                    c.checkAndAddItem(appWidgetInfo, sBgDataModel);
                                }
                                break;
+7 −4
Original line number Diff line number Diff line
@@ -80,10 +80,13 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView
        updateAppWidget(null);
        setOnClickListener(mLauncher);

        // Load icon
        PackageItemInfo item = new PackageItemInfo(info.providerName.getPackageName());
        item.user = info.user;
        cache.updateIconInBackground(this, item);
        if (info.pendingItemInfo == null) {
            info.pendingItemInfo = new PackageItemInfo(info.providerName.getPackageName());
            info.pendingItemInfo.user = info.user;
            cache.updateIconInBackground(this, info.pendingItemInfo);
        } else {
            reapplyItemInfo(info.pendingItemInfo);
        }
    }

    @Override