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

Commit ef9596d4 authored by Tracy Zhou's avatar Tracy Zhou
Browse files

Only load the first page in grid preview

Bug: 160662425
Test: manual (verified correctness)
Change-Id: I9dc3b7d7b84924ffb588470d4b6b20431a62b6cd
parent b6dc22c3
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -599,7 +599,10 @@ public class LauncherPreviewRenderer extends ContextThemeWrapper
        @Override
        public WorkspaceResult call() {
            List<ShortcutInfo> allShortcuts = new ArrayList<>();
            loadWorkspace(allShortcuts, LauncherSettings.Favorites.PREVIEW_CONTENT_URI);
            loadWorkspace(allShortcuts, LauncherSettings.Favorites.PREVIEW_CONTENT_URI,
                    LauncherSettings.Favorites.SCREEN + " = 0 or "
                            + LauncherSettings.Favorites.CONTAINER + " = "
                            + LauncherSettings.Favorites.CONTAINER_HOTSEAT);
            return new WorkspaceResult(mBgDataModel, null, mWidgetProvidersMap);
        }
    }
+31 −28
Original line number Diff line number Diff line
@@ -127,6 +127,7 @@ public class LoaderTask implements Runnable {

    private boolean mStopped;

    private final Set<PackageUserKey> mPendingPackages = new HashSet<>();
    private boolean mItemsDeleted = false;

    public LoaderTask(LauncherAppState app, AllAppsList bgAllAppsList, BgDataModel dataModel,
@@ -294,16 +295,17 @@ public class LoaderTask implements Runnable {
    }

    private void loadWorkspace(List<ShortcutInfo> allDeepShortcuts) {
        loadWorkspace(allDeepShortcuts, LauncherSettings.Favorites.CONTENT_URI);
        loadWorkspace(allDeepShortcuts, LauncherSettings.Favorites.CONTENT_URI,
                null /* selection */);
    }

    protected void loadWorkspace(List<ShortcutInfo> allDeepShortcuts, Uri contentUri) {
    protected void loadWorkspace(List<ShortcutInfo> allDeepShortcuts, Uri contentUri,
            String selection) {
        final Context context = mApp.getContext();
        final ContentResolver contentResolver = context.getContentResolver();
        final PackageManagerHelper pmHelper = new PackageManagerHelper(context);
        final boolean isSafeMode = pmHelper.isSafeMode();
        final boolean isSdCardReady = Utilities.isBootCompleted();
        final Set<PackageUserKey> pendingPackages = new HashSet<>();

        boolean clearDb = false;
        try {
@@ -332,6 +334,7 @@ public class LoaderTask implements Runnable {

        synchronized (mBgDataModel) {
            mBgDataModel.clear();
            mPendingPackages.clear();

            final HashMap<PackageUserKey, SessionInfo> installingPkgs =
                    mSessionHelper.getActiveSessions();
@@ -342,8 +345,8 @@ public class LoaderTask implements Runnable {

            Map<ShortcutKey, ShortcutInfo> shortcutKeyToPinnedShortcuts = new HashMap<>();
            final LoaderCursor c = new LoaderCursor(
                    contentResolver.query(contentUri, null, null, null, null), contentUri, mApp,
                    mUserManagerState);
                    contentResolver.query(contentUri, null, selection, null, null), contentUri,
                    mApp, mUserManagerState);

            try {
                final int appWidgetIdIndex = c.getColumnIndexOrThrow(
@@ -484,7 +487,7 @@ public class LoaderTask implements Runnable {
                                    // SdCard is not ready yet. Package might get available,
                                    // once it is ready.
                                    Log.d(TAG, "Missing pkg, will check later: " + targetPkg);
                                    pendingPackages.add(new PackageUserKey(targetPkg, c.user));
                                    mPendingPackages.add(new PackageUserKey(targetPkg, c.user));
                                    // Add the icon on the workspace anyway.
                                    allowMissingTarget = true;
                                } else {
@@ -768,20 +771,7 @@ public class LoaderTask implements Runnable {
            }

            // Remove dead items
            if (c.commitDeleted()) {
                // Remove any empty folder
                int[] deletedFolderIds = LauncherSettings.Settings
                        .call(contentResolver,
                                LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS)
                        .getIntArray(LauncherSettings.Settings.EXTRA_VALUE);
                for (int folderId : deletedFolderIds) {
                    mBgDataModel.workspaceItems.remove(mBgDataModel.folders.get(folderId));
                    mBgDataModel.folders.remove(folderId);
                    mBgDataModel.itemsIdMap.remove(folderId);
                }

                mItemsDeleted = true;
            }
            mItemsDeleted = c.commitDeleted();

            // Sort the folder items, update ranks, and make sure all preview items are high res.
            FolderGridOrganizer verifier =
@@ -807,13 +797,6 @@ public class LoaderTask implements Runnable {
            }

            c.commitRestoredItems();
            if (!isSdCardReady && !pendingPackages.isEmpty()) {
                context.registerReceiver(
                        new SdCardAvailableReceiver(mApp, pendingPackages),
                        new IntentFilter(Intent.ACTION_BOOT_COMPLETED),
                        null,
                        MODEL_EXECUTOR.getHandler());
            }
        }
    }

@@ -840,14 +823,34 @@ public class LoaderTask implements Runnable {

    private void sanitizeData() {
        Context context = mApp.getContext();
        ContentResolver contentResolver = context.getContentResolver();
        if (mItemsDeleted) {
            // Remove any empty folder
            int[] deletedFolderIds = LauncherSettings.Settings
                    .call(contentResolver,
                            LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS)
                    .getIntArray(LauncherSettings.Settings.EXTRA_VALUE);
            for (int folderId : deletedFolderIds) {
                mBgDataModel.workspaceItems.remove(mBgDataModel.folders.get(folderId));
                mBgDataModel.folders.remove(folderId);
                mBgDataModel.itemsIdMap.remove(folderId);
            }

            // Remove any ghost widgets
            LauncherSettings.Settings.call(context.getContentResolver(),
            LauncherSettings.Settings.call(contentResolver,
                    LauncherSettings.Settings.METHOD_REMOVE_GHOST_WIDGETS);
        }

        // Update pinned state of model shortcuts
        mBgDataModel.updateShortcutPinnedState(context);

        if (!Utilities.isBootCompleted() && !mPendingPackages.isEmpty()) {
            context.registerReceiver(
                    new SdCardAvailableReceiver(mApp, mPendingPackages),
                    new IntentFilter(Intent.ACTION_BOOT_COMPLETED),
                    null,
                    MODEL_EXECUTOR.getHandler());
        }
    }

    private List<LauncherActivityInfo> loadAllApps() {